Ansicht
Dokumentation

ABAPINSERT_DBTAB - INSERT DBTAB

ABAPINSERT_DBTAB - INSERT DBTAB

CL_GUI_FRONTEND_SERVICES - Frontend Services   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

INSERT dbtab

Kurzreferenz



INSERT ${ INTO target $[ connection$] VALUES wa $}
     $| ${      target $[ connection$] FROM wa $}
     $| ${      target $[ connection$] FROM TABLE itab $}
     $| ${      target $[ connection$] FROM ( SELECT subquery_clauses $[UNION$|INTERSECT$|EXCEPT ...$] ) $}
       $[MAPPING FROM ENTITY$].

Varianten:

1. INSERT INTO target VALUES wa.

2. INSERT target FROM wa.

3. INSERT target FROM TABLE itab.

4. INSERT target FROM ( SELECT subquery_clauses $[UNION$|INTERSECT$|EXCEPT ...$] ).

5. ... MAPPING FROM ENTITY.

Wirkung

Die -Anweisung INSERT fügt eine oder mehrere Zeilen in die in target angegebene DDIC-Datenbanktabelle oder DDIC-Tabellen-View ein. Die einzufügenden Zeilen werden einem Arbeitsbereich wa, einer internen Tabelle itab oder der Ergebnismenge einer eingebetteten Subquery SELECT subquery_clauses entnommen. Mit dem Zusatz connection kann eine Sekundärverbindung angegeben werden.

Bei der Verwendung von VALUES muss zwischen INSERT und target ein INTO und bei der Verwendung von FROM darf kein INTO angegeben werden.

Systemfelder

Die Anweisung INSERT setzt die Werte der Systemfelder sy-subrc (siehe unten) und sy-dbcnt. sy-dbcnt wird auf die Anzahl der eingefügten Zeilen gesetzt. Wenn dabei ein Überlauf eintritt, weil die Anzahl der Zeilen größer als 2.147.483.647 ist, wird sy-dbcnt auf -1 gesetzt. Wenn beim Einfügen einer LOB-Handle-Struktur mit einer Komponente für Schreibströme sy-subrc 2 ist, wird sy-dbcnt ebenfalls auf den Wert -1 (für undefiniert) gesetzt.

Hinweise

  • Die eingefügten Zeilen werden beim nächsten Datenbank-Commit endgültig in die Datenbanktabelle übernommen. Bis dahin können sie durch einen Datenbank-Rollback wieder entfernt werden. Die aktuelle Isolationsebene legt fest, ob die eingefügten Daten bereits vor oder nur nach dem Datenbank-Commit in anderen Datenbank-LUWs gelesen werden können.
  • Die Anweisung INSERT setzt bis zum nächsten Datenbank-Commit bzw. -Rollback eine Datenbanksperre in Form einer Schreibsperre, wodurch es bei falscher Verwendung zu einem Deadlock kommen kann.
  • Die Anzahl von Zeilen, die innerhalb einer Datenbank-LUW in den Tabellen einer Datenbank eingefügt werden kann ist datenbankspezifisch dadurch beschränkt, dass ein Datenbanksystem nur eine begrenzte Menge von Daten im Rollback-Bereich und von Sperren verwalten kann.
  • Die Anweisung INSERT darf nicht auf die Systemtabelle TRDIR angewendet werden.

Variante 1

INSERT INTO target VALUES wa.


Variante 2

INSERT target FROM wa.


Wirkung

Diese beiden Varianten fügen eine einzelne in einem Arbeitsbereich wa enthaltene Zeile ein. Beide Varianten verhalten sich völlig identisch und unterscheiden sich nur in der Syntax.

Systemfelder

Diese Varianten der Anweisung INSERT setzen den Wert des Systemfelds sy-subrc wie folgt:

sy-subrc Bedeutung
0 Die im Arbeitsbereich in wa angegebene Zeile wurde eingefügt.
2 Bei Angabe einer LOB-Handle-Struktur mit einer Komponente für Schreibströme wurden die nicht-LOB-Handle-Komponenten noch nicht in die Datenbank geschrieben, sondern werden spätestens beim Schließen des Stroms übermittelt. Das Auftreten dieses Zustands hängt vom Datenbanksystem ab. Siehe LOB-Handles.
4 Die im Arbeitsbereich in wa angegebene Zeile wurde nicht eingefügt, da bereits eine Zeile mit dem gleichen Primärschlüssel bzw. einem eindeutigen Sekundärindex in der DDIC-Datenbanktabelle vorhanden ist.

Beispiel

Einfügen zweier einzelner Zeilen in eine DDIC-Datenbanktabelle.

Statt eines expliziten Arbeitsbereichs kann auch ein Hostausdruck mit dem Wertoperator VALUE verwendet werden.

Variante 3

INSERT target FROM TABLE itab.


Wirkung

Diese Variante fügt die in einer internen Tabelle itab enthaltenen Zeilen ein.

Hinweis

Es gibt keine syntaktische Variante mit VALUES für interne Tabellen.

Systemfelder

Diese Variante der Anweisung INSERT kann Ausnahmen auslösen, wenn versucht wird, Zeilen der internen Tabelle einzufügen, für die es in der DDIC-Datenbanktabelle bereits Zeilen mit dem gleichen Schlüssel gibt. Wenn keine Ausnahme auftritt, wir der Wert des Systemfelds sy-subrc wie folgt gesetzt:

sy-subrc Bedeutung
0 Alle Zeilen der internen Tabelle itab wurden eingefügt oder die interne Tabelle ist leer.
4 Der Zusatz ACCEPTING DUPLICATE KEYS ist angegeben und es wurden nicht alle Zeilen der internen Tabelle eingefügt, da bereits eine Zeile mit dem gleichen Primärschlüssel bzw. einem eindeutigen Sekundärindex in der DDIC-Datenbanktabelle vorhanden ist.

Mehr zu Ausnahmen beim Einfügen von Zeilen interner Tabellen findet sich unter TABLE itab.

Beispiel

Einfügen zweier einzelner Zeilen in eine DDIC-Datenbanktabelle.

Statt einer expliziten internen Tabelle kann auch ein Hostausdruck mit dem Wertoperator VALUE verwendet werden.

Variante 4

INSERT target FROM ( SELECT subquery_clauses $[UNION$|INTERSECT$|EXCEPT ...$] ).


Wirkung

Diese Variante fügt die Zeilen der Ergebnismenge einer eingebetteten Subquery SELECT subquery_clauses ein, wobei mehrere Ergebnismengen mit UNION, INTERSECT oder EXCEPT vereinigt werden können.

Systemfelder

Diese Variante der Anweisung INSERT setzt den Wert des Systemfelds sy-subrc wie folgt:

sy-subrc Bedeutung
0 Es wurden alle Zeilen der Ergebnismenge der eingebetteten Subquery eingefügt.
4 Die Ergebnismenge der eingebetteten Subquery ist leer und es wurden keine Zeilen eingefügt.

Hinweise

  • Die Anweisung INSERT mit Subquery kann nicht verwendet werden, wenn für die zu füllende Tabelle die Protokollierung eingeschaltet ist.
  • Wenn beim Einfügen der Ergebnismenge der eingebetteten Subquery eine Zeile nicht eingefügt werden kann, da es bereits eine Zeile mit dem gleichen Primärschlüssel bzw. einem gleichen eindeutigen Sekundärindex gibt, kommt es bei dieser Variante immer zu einer abfangbaren Ausnahme der Klasse CX_SY_OPEN_SQL_DB und das Systemfeld sy-subrc wird nicht gesetzt.

Beispiel

Einfügen aller Zeilen der DDIC-Datenbanktabelle DEMO_JOIN1 in die Tabelle DEMO_JOIN3.

Variante 5

... MAPPING FROM ENTITY.


Wirkung

Mit dem Zusatz MAPPING FROM ENTITY werden mit abgeleiteten BDEF-Typen typisierte Strukturen und interne Tabellen behandelt. Weitere Information ist im Thema ABAP-SQL-Anweisungen mit MAPPING FROM ENTITY enthalten.






ABAP Short Reference   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 15125 Date: 20240426 Time: 201147     sap01-206 ( 181 ms )