[ABAP] OpenSQL: Datensätze aus einer internen Tabelle zu einer DB-Tabelle hinzufügen

  • COMMIT WORK wird am Programmende automatisch ausgeführt
  • Aktionen können mit ROLLBACK rückgängig gemacht werden

Variante 1 (einzelner Datensatz)

* Datensatz
DATA(lv_struct) = VALUE zxyz( col1 = 'Value1' col1 = 'Value2' ).

INSERT INTO zxyz VALUES @lv_struct.
IF sy-subrc = 0.
  WRITE : / 'Hinzufügen erfolgreich.'.
ELSE.
  WRITE : / 'Datensatz konnte nicht hinzugefügt werden.'.
ENDIF.

Variante 2 (mehrere Datensätze aus einer itab)

* itab mit Datensätzen
DATA(itab) = VALUE zxyz_tab(
                             ( col1 = 'Value1' col1 = 'Value2' )
                             ( col1 = 'Value3' col1 = 'Value4' )
                           ).
* Wenn der Zusatz ACCEPTING DUPLICATE KEYS angegeben ist, werden alle Zeilen eingefügt, für die dies möglich ist.
* Die restlichen Zeilen werden verworfen und sy-subrc wird auf 4 gesetzt.
INSERT zxyz FROM TABLE itab ACCEPTING DUPLICATE KEYS.

IF sy-subrc = 0.
  WRITE : / 'Hinzufügen erfolgreich.'.
ELSE.
  WRITE : / 'Nicht alle Zeilen der Tabelle itab wurden hinzugefügt.'.
ENDIF.

* sy-dbcnt = Anzahl der eingefügten Zeilen
WRITE: / 'Hinzugefügte Datensätze:', sy-dbcnt.