Code: Alles auswählen.
TYPES: BEGIN OF ty_data,
werks TYPE werks_d,
kunnr TYPE kunnr,
END OF ty_data.
DATA: gs_data TYPE ty_data,
gt_data TYPE STANDARD TABLE OF ty_data,
gt_data2 TYPE STANDARD TABLE OF ty_data,
gv_tabix TYPE i.
FIELD-SYMBOLS <data> TYPE ty_data.
INITIALIZATION.
gs_data-werks = '0001'. gs_data-kunnr = '0000000815'.
APPEND gs_data TO gt_data.
gs_data-kunnr = '0000004711'.
APPEND gs_data TO gt_data.
APPEND gs_data TO gt_data. "Wir brauchen ja auch einen doppelten Eintrag!!
* so sieht sie nu aus:
*0001 0000000815
*0001 0000004711
*0001 0000004711 <0=== Der muss weg und erkannt werden, weil doppelt!!
START-OF-SELECTION.
*Hier isser:
gt_data2 = gt_data.
DELETE ADJACENT DUPLICATES FROM gt_data. "comparing werks kunnr
* nun ist gt_data bereinigt; keine doppelten Einträge mehr
* bereinigte Tabelle: jeden Eintrag prüfen...
LOOP AT gt_data ASSIGNING <data>.
*... ob er in der anderen Tabelle vorhanden ist.
READ TABLE gt_data2 TRANSPORTING NO FIELDS
WITH KEY werks = <data>-werks kunnr = <data>-kunnr.
IF sy-subrc = 0.
* Eintrag MUSS da sein: Löschen
DELETE gt_data2 INDEX sy-tabix.
ENDIF.
ENDLOOP.
* nun stehen in gt_data2 nur noch die übrig gebliebenen - also doppelten - Einträge.
*gt_data:
*0001 0000000815
*0001 0000004711
*
*gt_data2:
*0001 0000004711