Zum Hauptinhalt springen

ABAP: Tabellenzeile(n) löschen

Anbei das Coding um Zeilen aus einer Datenbank-Tabelle bzw. aus einer internen Tabelle zu löschen.

Zeile(n) löschen (DB Tabelle)

Anhand WHERE-Bedingung

Alle Zeilen löschen, die den WHERE-Bedingungen entsprechen

DELETE FROM <dbtab> WHERE <cond>.

Anhand Struktur

Es werden alle Zeilen (meist nur eine) gelöscht, die dem Primärschlüssel der Struktur ls_tab entsprechen

DELETE <dbtab> FROM <ls_tab>.

Anhand Tabelle

Erweiterung zum ls_tab. Hier können eine Vielzahl an Zeilen gelöscht werden

DELETE <dbtab> FROM TABLE <lt_itab>.

Zeile(n) löschen (interne Tabelle)

Anhand WHERE-Bedingung

Alle Zeilen löschen, die den WHERE-Bedingungen entsprechen

DELETE <itab> WHERE <cond>.

Anhand Struktur

Es werden alle Zeilen (meist nur eine) gelöscht, die dem Primärschlüssel der Struktur ls_tab entsprechen

DELETE TABLE <itab> FROM <ls_tab>.

Anhand Index

Einträge können auch Anhand der Index-Nummer gelöscht werden.

LOOP AT gt_result INTO DATA(gs_search).
DATA(lv_tabix) = sy-tabix.
IF gs_search-sysid NE p_sapsys.
DELETE gt_result INDEX lv_tabix.
ENDIF.
ENDLOOP.

Doppelte Einträge

Doppelte Einträge löschen. Tabelle muss vorher sortiert worden sein, da nur nachfolgende Einträge geprüft werden.

DELETE ADJACENT DUPLICATE ENTRIES FROM <itab> [ COMPARING… ].