DELETE * FROM DBTAB

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

DELETE * FROM DBTAB

Beitrag von Timo7 (ForumUser / 21 / 0 / 0 ) »
Ich bin mir nicht ganz sicher, ob ich grad mächtig auf dem Schlauch stehe...

Ist es in ABAP OpenSQL nicht möglich das folgende SQL-Statement zu forumulieren:

Code: Alles auswählen.

DELETE * FROM DBTAB
Es soll einfach nur der Inhalt einer Tabelle gelöscht werden. Ohne Bedingung!

:?


Beitrag von DeathGuardian (Expert / 759 / 0 / 2 ) »
Der Delete löscht ganze Zeillen, sprich da musst keine Felder selectieren, sprich es steht nix zwischen DELETE und FROM.
Oder einfach mal F1 auf Delete.

Beitrag von Timo7 (ForumUser / 21 / 0 / 0 ) »
DeathGuardian hat geschrieben:Der Delete löscht ganze Zeillen, sprich da musst keine Felder selectieren, sprich es steht nix zwischen DELETE und FROM.
Oder einfach mal F1 auf Delete.
Ja, das ist wohl wahr, aber ich finde auch in der Hilfe kein Mittel ein standardisiertes SQL Statement wie "DELETE * FROM DBTAB" oder "DELETE FROM DBTAB" in SAPs eigene SQL-Welt OpenSQL zu überführen.

Bei "DELETE FROM DBTAB" erwartet der Compiler zumindest noch eine WHERE-Bedingung, die ich aber nicht habe, da ich einfach nur alles löschen will!

Wie gesagt, die Hilfe habe ich schon gelesen und da ich nicht glaube, dass es so ein einfaches SQL-Statement in der ABAP-Welt nicht gibt, muss ich wohl grade auf dem Schlauch stehen?! :?

Beitrag von DeathGuardian (Expert / 759 / 0 / 2 ) »
Timo7 hat geschrieben:Wie gesagt, die Hilfe habe ich schon gelesen und da ich nicht glaube, dass es so ein einfaches SQL-Statement in der ABAP-Welt nicht gibt, muss ich wohl grade auf dem Schlauch stehen?! :?
Du stehst aber auf einem gewaltigen Schlauch!

Auszug aus der SAP HIlfe:
DELETE FROM dbtab.

Zusätze:
1. ... WHERE condition
2. ... CLIENT SPECIFIED
3. ... CONNECTION con

Wirkung
Löschen von Zeilen einer Datenbanktabelle. Ist keine WHERE-Klausel angegeben, so werden alle Zeilen (im aktuellen Mandanten) gelöscht. Bei Angabe einer WHERE-Klausel werden alle Zeilen gelöscht, die der WHERE-Bedingung condition genügen.

Das Systemfeld SY-DBCNT enthält nach Ausführung der Anweisung die Anzahl gelöschter Zeilen.

Der Rückgabewert wird folgendermaßen gesetzt:

SY-SUBRC = 0:
Es wurde mindestens eine Zeile gelöscht.
SY-SUBRC = 4:
Es wurde keine Zeile gelöscht, da keine Zeile selektiert wurde.


Beispiel
Löschen aller Flugbuchungen (im aktuellen Mandanten):

DELETE FROM SBOOK.

Beitrag von Timo7 (ForumUser / 21 / 0 / 0 ) »
DeathGuardian hat geschrieben:Du stehst aber auf einem gewaltigen Schlauch!
Hmm, anscheinend nicht wirklich - aus meiner SAP Hilfe:
Variante 1

DELETE FROM dbtab WHERE condition.
DELETE FROM (dbtabname) WHERE condition.


Zusatz:
... CLIENT SPECIFIED

Wirkung
Löschen der Menge von Zeilen einer Datenbanktabelle, dieder WHERE-Klausel conditiongenügen. Die Angabe einer WHERE-Bedingung ist bei dieserVariante obligatorisch.

Das Systemfeld SY-DBCNT enthält nach Ausführung der Anweisungdie Anzahl gelöschter Zeilen.

Der Rückgabewert wird folgendermaßen gesetzt:



SY-SUBRC = 0:
Es wurde mindestens eine Zeile gelöscht.
SY-SUBRC = 4:
Es wurde keine Zeile gelöscht, da keine Zeileselektiert wurde.
Und die Variante 1 ist die einzige mit einem "FROM" und ohne eine iTab in der Syntax.

Zudem die Aussage meines Compilers:
Nach "DELETE FROM dbtab" muß "WHERE" folgen.
Also hat man bei SAP anscheinend erst spät dazu gelernt :( - Releaseproblem!?!

Beitrag von DeathGuardian (Expert / 759 / 0 / 2 ) »
OK,
hab grad mal in ein anderes System (4.6C) nachgeschaut.
Meine Hilfe ist aus einem 4.7 System.
Und ich denke mal deine ist aus einem 4.6C oder noch älteren System.

OK,
da hat SAP mal wieder etwas spät erst eingebaut. :roll:
In deinem Fall musst halt ein wenig tricksen.
Am besten du gibst eine Where-bedinung an, welche auch alles löscht,
z.B. "DELETE FROM dbtab WHERE erstes_key_feld <> SPACE."
und sollte da dann noch was stehen machst halt den Delete noch mit "= space". :wink:

Beitrag von Timo7 (ForumUser / 21 / 0 / 0 ) »
Ganz genau - 4.6C ist unser Stand!
DeathGuardian hat geschrieben:In deinem Fall musst halt ein wenig tricksen.
Auch wenn ich das eigentlich vermeiden wollte, geht wohl kein Weg dran vorbei! Naja, wenigstens bleibt die Gewissheit nicht auf dem Schlauch gestanden zu haben! :wink:

Danke für deine Mühe!!

Seite 1 von 1

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und besseren Inhalt:

Vergleichbare Themen

DELETE dbtab funktioniert nicht
von KleinerEisbaer » 03.08.2008 13:31
*dbtab als Workarea
von Robertli » 12.07.2005 09:45
Änderungen in ALV-Grid in dbtab schreiben
von Chilledkroete » 04.07.2013 11:54
Insert löscht bestehende Zeile aus dbtab
von Notion » 03.04.2021 11:56
DELETE FROM ... NOT IN...
von ChristianHo » 09.02.2016 10:00