Loop at itab into wa2.
read table itab into wa3 with key KUNNR = wa2-KUNNR NAME = wa2-NAME.
IF sy-subrc EQ 0.
write:/ 'Doppelter Eintrag' , ' ' , wa2-kunnr.
delete itab with key kunnr = wa2-kunnr
name = wa2-name.
ENDIF.
endloop.
hmmm... Das Coding ist auch nicht so ganz richtig. Ein bisschen logisch u. syntaktisch falsch.
Syntaktisch falsch:
delete itab with key kunnr = wa2-kunnr
name = wa2-name.
Diesen Befehl gibt es nicht.
Den hast du wahrscheinlich gemeint:
DELETE TABLE itab WITH TABLE KEY k1 = v1 ... kn = vn.
Und logisch auch falsch:
Es wird die Tabellenzeile mit den Schlüsselwerten k1 = v1 ....kn = vn gelöscht. Falls es mehrere Tabellenzeilen mit den angegebenen Schlüsselwerten gibt, wird nur die erste Tabellenzeile gelöscht... und außerdem: Bei der Schlüsselangabe muß der Tabellenschlüssel vollständig mit Werten versehen werden.
Hauptproblem: Es werden nicht alle doppelten Einträge gelöscht, nur einer.
Falls der Befehl
DELETE ADJACENT DUPLICATES FROM itab
[COMPARING f1 f2 | COMPARING ALL FIELDS]
nicht benutzt werden kann (wenn z.B. die itab nach den Vergleichsfeldern nicht sortiert werden kann, es werden nämlich nur nachfolgende Dubletten gelöscht) dann würde ich folgendes vorschlagen:
DATA f_tabix TYPE sytabix.
LOOP AT itab INTO itab_wa1.
f_tabix = sy-tabix + 1.
LOOP AT itab INTO itab_wa2 FROM f_tabix
WHERE kunnr = itab_wa1-kunnr
AND name = itap_wa1-name.
WRITE: / 'Doppelter Eintrag:' , itab_wa2-kunnr, itab_wa2-name.
DELETE TABLE itab FROM itab_wa2.
ENDLOOP.
ENDLOOP.
Viel Erfolg u. beste Grüße