Code: Alles auswählen.
MOVE-CORRESPONDING itab1 TO itab2
Mich hätte interessiert, wie Du Dir solch Loop vorstellst (um zu verstehen, von welchem gedanklichen Ansatz Du herkommst). Auch wäre interessant, ob Du von einem SAP-System >= 7.40 ausgehst (und daher die dort möglichen Syntaxen nutzen kannst).Das ganze ist natürlich mit einem Loop möglich. Aber gibts da ggf eine schickere Lösung um nicht immer über die Tabelle loopen zu müssen?
Code: Alles auswählen.
LOOP AT tabelle1.
READ TABLE tabelle2 WITH KEY NAME = tabelle1 TRANSPORTING NAMEID.
" Do whatever with tabelle2-NAMEID
ENDLOOP.
Haben Abap 7.5.DeathAndPain hat geschrieben:Mich hätte interessiert, wie Du Dir solch Loop vorstellst (um zu verstehen, von welchem gedanklichen Ansatz Du herkommst). Auch wäre interessant, ob Du von einem SAP-System >= 7.40 ausgehst (und daher die dort möglichen Syntaxen nutzen kannst).Das ganze ist natürlich mit einem Loop möglich. Aber gibts da ggf eine schickere Lösung um nicht immer über die Tabelle loopen zu müssen?
Wenn Du alle Werte in Tabelle 1 durchgehen willst, wirst Du dafür einen LOOP (oder etwas Vergleichbares) brauchen. Für Tabelle 2 hingegen brauchst Du das nicht. Nach alter Syntax (< 7.40) würdest Du da einfach schreiben:
Mit 7.40 geht es kosmetisch noch schöner.Code: Alles auswählen.
LOOP AT tabelle1. READ TABLE tabelle2 WITH KEY NAME = tabelle1 TRANSPORTING NAMEID. " Do whatever with tabelle2-NAMEID ENDLOOP.
Sinnvollerweise sollte (zumindest) tabelle2 vom Typ SORTED TABLE WITH UNIQUE KEY NAME sein, damit der READ TABLE effizient sucht.
Code: Alles auswählen.
loop at Tabelle1 assigning field-symbol(<fs_tab1>).
read table Tabelle2 assigning field-symbol(<fs_tab2>)
with key name = <fs_tab1>-name.
if sy-subrc = 0.
<fs_tab1>-nameid = <fs_tab2>-nameid
endif.
endloop.
Code: Alles auswählen.
loop at tabelle1 assigning field-symbol(<fs_tab1>).
assign tabelle2{ nameid = <fs_tab1>-nameid }-name to field-symbol(<fs_name>).
check sy-subrc = 0.
<fs_tab1>-name = <fs_name>.
endloop.
Code: Alles auswählen.
loop at tabelle1 assigning field-symbol(<fs_tab1>).
try.
<fs_tab1>-name = tabelle2{ nameid = <fs_tab1>-nameid }-name.
catch CX_SY_ITAB_LINE_NOT_FOUND.
endtry.
endloop.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
Basler84