Code: Alles auswählen.
data lt_bla type table of ty_itab.
loop at lt_posid_ne ASSIGNING <z5>.
loop at lt_itab ASSIGNING <z4>.
if <z5>-posid = <z4>-posid.
Write 'X' to <z5>-info1.
APPEND <z5> to lt_bla.
DELETE lt_itab WHERE posid = <z5>-posid.
DELETE lt_posid_ne WHERE posid = <z5>-posid.
CONTINUE.
ELSEIF <z5>-posid <> <z4>-posid.
Write 'X' to <z5>-info4.
APPEND <z5> to lt_bla.
DELETE lt_posid_ne WHERE posid = <z5>-posid.
Continue.
endif.
endloop.
endloop.
append LINES OF lt_bla to lt_erg.
Code: Alles auswählen.
data lt_bla type table of ty_itab.
loop at lt_posid_ne ASSIGNING <z5>.
loop at lt_itab ASSIGNING <z4>.
if sy-subrc eq 0.
if <z5>-posid = <z4>-posid.
Write 'X' to <z5>-info1.
APPEND <z5> to lt_bla.
DELETE lt_itab WHERE posid = <z5>-posid.
DELETE lt_posid_ne WHERE posid = <z5>-posid.
CONTINUE.
ELSEIF <z5>-posid <> <z4>-posid.
Write 'X' to <z5>-info4.
APPEND <z5> to lt_bla.
DELETE lt_posid_ne WHERE posid = <z5>-posid.
Continue.
endif.
endif.
endloop.
endloop.
append LINES OF lt_bla to lt_erg.
Code: Alles auswählen.
loop at lt_posid_ne ASSIGNING <z5>.
loop at lt_itab ASSIGNING <z4>
where posid = <z5>-posid.
* Kennzeichen INFO1 setzen
exit.
endloop.
if sy-subrc <> 0.
* kennzeichen INFO4 setzen.
endif.
endloop.
1. Richtig, habe ich nur mal probehalber geändert.black_adept hat geschrieben:Hallo spookykid,
1.) Das ELSEIF ist doch ein ganz normales ELSE, oder?
2.) Beim oberflächlichen Drüberschauen vermute ich, dass es nicht der 2. sondern der 1. Operand ( <z5> ) ist, welcher nicht zugewiesen ist.
3.) Sobald die Exception/Kurzdump auftritt: Drück auf den Knopf "Debugger" und schau einfach nach, welches der Feldsymbole grade initial ist. Und dann wirst du sehen, dass der letzte DELETE-Befehl auf die äußere Tabelle dir das Assignement des Feldsymbol <z5> initialisiert hat.
Code: Alles auswählen.
loop at lt_erg ASSIGNING <z4>.
loop at lt_bla ASSIGNING <z5>
where posid = <z4>-posid.
EXIT.
ENDLOOP.
IF SY-SUBRC <> 0.
append <z5> to lt_temp.
endif.
endloop.
Code: Alles auswählen.
loop at lt_erg ASSIGNING <z4>.
loop at lt_bla ASSIGNING <z5>
where posid = <z4>-posid.
delete lt_bla where posid = <z4>-posid .
exit.
endloop.
endloop.
Code: Alles auswählen.
loop at lt_erg ASSIGNING <z4>.
loop at lt_bla ASSIGNING <z5>
where posid = <z4>-posid.
delete lt_bla.
endloop.
endloop.
Code: Alles auswählen.
loop at lt_erg ASSIGNING <z4>.
delete lt_bla where posid = <z4>-posid.
endloop.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Spookykid