Hallo zusammen,
ich befinde mich im Lieferungsumfeld (V2) und möchte eine Nachrichtenkondition als Wiederholungsnachricht nur ausgeben, wenn sich bestimmte Felder in der Lieferung (LIKP) geändert haben.
Die NArt ist im Schema ohne Bedingung vorhanden.
Die NArt hat eine Zugriffsfolge (Konditionszugriff) und das Kz. Mehrfachversendung ist gesetzt. In der von mir erstellten Routine kann ich dann wunderbar die X und Y Strukturen vergleichen und den SY-SUBRC entsprechend setzen. - Das funktioniert wunderbar.
Allerdings wird dies NArt auch gefunden (und zwar über Kond.zugriff), wenn ich etwas an den vorhandenen Liefertexten ändere, obwohl gem. meiner Routine der SY-SUBRC=4 gesetzt wird.
Warum findet (scheinbar) noch der Konditionszugriff statt? Hat jm. eine Idee wie die richtige Einstellung aussehen müsste?
Hallo,
wir machen so etwas ohne Probleme.
Haten aber mal den Fehler, dass wir vor dem Vergleich der X und Y-Tabellen die nicht mehr richtig sortiert waren.
Beispiel:
FORM KOBED_971.
*{ INSERT C01K905020 1
* Einfügung Mai 2017
DATA: lt_vbep TYPE TABLE OF vbep,
lf_subrc TYPE subrc,
ls_vbep TYPE vbep,
lt_xvbep TYPE TABLE OF vbep,
ls_xvbep type vbep,
lt_vbepvb type table of vbapvb,
ls_xvbepvb type vbapvb,
wa like vbapvb,
wx like vbep.
FIELD-SYMBOLS: <ft_xvbep> TYPE any.
FIELD-SYMBOLS: <ft_xvbepvb> TYPE any.
sy-subrc = 4.
ASSIGN ('(SAPMV45A)YVBAP[]') TO <ft_xvbepvb>.
IF <ft_xvbepvb> IS ASSIGNED.
lt_vbepvb[] = <ft_xvbepvb>.
ENDIF.
ASSIGN ('(SAPMV45A)XVBEP[]') TO <ft_xvbep>.
IF <ft_xvbep> IS ASSIGNED.
lt_vbep[] = <ft_xvbep>.
ENDIF.
loop at lt_vbepvb into wa.
if wa-updkz = 'D'.
loop at lt_vbep INTO wx .
if wx-vbeln = wa-vbeln and wx-posnr = wa-posnr.
if sy-subrc = 0.
delete lt_vbep.
endif.
endif.
endloop.
endif.
endloop.
* alten Stand Kundenauftrag lesen
Select * from vbep into ls_vbep
where vbeln = komkbv1-vbeln.
Append ls_vbep to lt_xvbep.
endselect.
* Vergleich alt und neu - nur wenn Änderungen bleibt sy-subrc auf 0
sort: lt_vbep[] lt_xvbep[].
if lt_vbep[] eq lt_xvbep[].
sy-subrc = 4.
endif.
Der Tipp mit der Bedingung ist goldrichtig. Damit funktioniert es.
Das Problem mit der Routine für die Änderungsnachricht und einem Konditionszugriff ist der, dass der Konditionszugriff das Ergebnis der Routine zur Änderungsnachricht übersteuert.
Die Bedingung im N.Schema steuert ob die Nachricht berücksichtigt wird oder nicht.