Wenn beides Standardtabellen sind, müsste die zweite Variante theoretisch ein wenig performanter sein. In der ersten Variante muss der ABAP-Interpreter für jede zu löschende Zeile die gesamte Tabelle durchsuchen.
In der zweiten Variante muss itab2 nur einmal durchsucht werden, um die Zeilen zu löschen.
Bei itab2 spielt die Sortierung keine Rolle. Daher ist das Statement "SORT itab2 BY matnr" überflüssig.
Für itab1 würde eine sortierte Tabelle Sinn ergeben:
Code: Alles auswählen.
DATA: itab2 TYPE SORTED TABLE structure_whatever WITH NON-UNIQUE KEY matnr.
Spart zwar keine Performance, aber die Statements "SORT" und "BINARY SEARCH".
Bei itab2 kann man sich jetzt streiten, ob ein ABAP-boolscher Wert besser ist oder eigener Datentyp. Ich bevorzuge bei Feldern, die ein Ja oder Nein enthalten, boolsche Werte:
Code: Alles auswählen.
DATA: itab2 TYPE SORTED TABLE structure_whatever WITH NON-UNIQUE KEY matnr.
LOOP AT itab2 ASSIGNING <fs_itab2>.
READ TABLE itab1 INTO gs_itab1
WITH TABLE KEY matnr = <fs_itab2>-matnr.
IF sy-subrc NE 0.
<fs_itab2>-del = abap_true.
ENDIF.
ENDLOOP.
DELETE itab2 WHERE del = abap_true.