Diese Anweisung löscht entweder eine oder mehrere Zeilen
itab_line bzw. itab_lines,
die über einen Tabellenschlüssel oder einen Tabellenindex spezifiziert werden können,
oder benachbarte doppelte Zeilen duplicates.
Systemfelder
sy-subrc
Bedeutung
0
Es wurde mindestens eine Zeile gelöscht.
4
Es wurde keine Zeile gelöscht, da beim Löschen über einen Tabellenschlüssel
bzw. bei Angabe eines logischen Ausdrucks keine passende Zeile gefunden wurde, beim Löschen über
einen Tabellenindex der angegebene Index größer als die aktuelle Anzahl von Zeilen war oder keine doppelten benachbarten Zeilen gefunden wurden.
Das Systemfeld sy-tabix wird nicht gesetzt.
Hinweise
Das Löschen von Zeilen interner Tabellen mit DELETE gibt in aller
Regel keinen Speicher der internen Tabelle frei. Um diesen Speicher freizugeben, müssen Anweisungen
wie CLEAR oder FREE verwendet werden.
Eine interne Tabelle, in der alle Zeilen mit DELETE gelöscht wurden ist in der Regel keine initiale interne Tabelle.
Beim Löschen von Zeilen einer internen Tabelle fallen grundsätzlich Kosten für die Aktualisierung aller vorhandenen
Tabellenschlüssel und
Tabellenindizes an. Der
Primärschlüssel und alle eindeutigen
Sekundärschlüssel
werden direkt aktualisiert, während nicht-eindeutige Sekundärschlüssel nur aktualisiert werden, wenn die zu löschende Zeile im bereits aktualisierten Teil eines zugehörigen Index enthalten ist
(lazy update). Insbesondere
muss auch beim Löschen einer Zeile aus einer Standardtabelle, die über einen Sekundärschlüssel gesucht wurde, der
primäre Tabellenindex aktualisiert werden, was in der Regel eine lineare Suche erfordert.
Es findet keine implizite Auswahl eines passenden Schlüssels oder Index statt. Der verwendete
Tabellenschlüssel oder Tabellenindex ist immer eindeutig spezifiziert. Es kommt zu einer Warnung von der Syntaxprüfung, wenn es einen passenden
sekundären Tabellenschlüssel
gibt, dieser aber nicht verwendet wird. Diese Warnung sollte durch Verwendung des Schlüssels behoben werden. Sie kann in Ausnahmefällen aber auch durch ein
Pragma umgangen werden.
Mit einer speziellen Variante DELETE mesh_path können Zeilen des letzten Pfadknotens eines
Mesh-Pfads gelöscht werden.