ABAPINSERT_ITAB - INSERT ITAB
Vendor Master (General Section) rdisp/max_wprun_time - Maximum work process run timeDiese Dokumentation steht unter dem Copyright der SAP AG.
INSERT itab
Syntax
INSERT line_spec INTO itab_position[result].
Wirkung
Diese Anweisung fügt eine oder mehrere Zeilen line_specan einer Stelle itab_positioneiner internen Tabelle ein. Die Stelle kann über den primären Tabellenschlüsseloder einen Tabellenindex spezifiziert werden. Mit resultkann beim Einfügen einer einzelnen Zeile eine Referenz in Form eines Feldsymbols oder einer Datenreferenz auf die eingefügte Zeile gesetzt werden.
Beim Einfügen einer Zeile werden alle vorhandenen eindeutigen Tabellenschlüssel überprüft. Dies können ein eindeutigerprimärer Tabellenschlüssel und mehrere eindeutigesekundäreTabellenschlüssel sein. Das System behandelt eventuelle Duplikate der verschiedenen Schlüssel nach folgender Hierarchie:
- Wenn beim Versuch eine Einzelzeile über den Primärschlüssel einzufügen,Duplikate betreffs des eindeutigen Primärschlüssels entstehen würden, wird keine Zeile eingefügt und sy-subrc auf den Wert 4 gesetzt.
- Wenn bei einem Versuch eine Einzelzeile über den Schlüssel oder den Index einzufügen,Duplikate betreffs eines eindeutigen Sekundärschlüssels entstehen würden, wird eine behandelbare Ausnahme der Klasse CX_SY_ITAB_DUPLICATE_KEY ausgelöst.
- Wenn beim Versuch mehrere Zeilen als Block einzufügen, Duplikate betreffs eines eindeutigen Primär- oder Sekundärschlüssels entstehen würden, kommt es zu einem Laufzeitfehler.
Systemfelder
| sy-subrc | Bedeutung |
| 0 | Eine oder mehrere Zeilen wurden eingefügt. |
| 4 | Es wurde keine Zeile eingefügt, da entweder beim Einfügen einer einzelnenZeile über den Primärschlüssel schon eine Zeile mit einem gleichen eindeutigenPrimärschlüssel existierte oder beim Einfügen über einen Tabellenindex der angegebene Index größer als die aktuelle Anzahl von Zeilen zuzüglich 1 war. |
Hinweis
Die Verwaltung eines eindeutigen sekundären Tabellenschlüssels wird sofort(directupdate) und eines nicht-eindeutigen sekundären Schlüssels erst bei der nächsten expliziten Verwendung des sekundären Tabellenschlüssels aktualisiert(lazyupdate). Die Laufzeitkosten für die Erzeugung oder Aktualisierung eines nicht eindeutigen sekundären Tabellenschlüssels fallen also erst bei dessen erster Verwendung an (sieheInterne Tabellen, Zeilen über Schlüssel löschen).
Beispiel
Einfügen einzelner Zeilen über den primären Tabellenindex in eineStandardtabelleint_tab und Einfügen von Referenzen auf diese Zeilen über den primären Tabellenschlüssel in eineHash-Tabelleref_tab. Die Ausgaben in den LOOP-Schleifenergeben die Zahlen von 10 bis 1 für int_tab und die Zahlen von 1 bis 10 für ref_tab.
DATA: int TYPE i,
dref TYPE REF TO i.
DATA: int_tab LIKE STANDARD TABLE OF int,
ref_tab LIKE HASHED TABLE OF dref
WITH UNIQUE KEY table_line.
DO 10 TIMES.
INSERT sy-index
INTO int_tab INDEX 1
REFERENCE INTO dref.
INSERT dref
INTO TABLE ref_tab.
ENDDO.
LOOP AT int_tab INTO int.
WRITE / int.
ENDLOOP.
SKIP.
LOOP AT ref_tab INTO dref.
WRITE / dref->*.
ENDLOOP.
Ausnahmen
Behandelbare Ausnahmen
- Ursache: Duplikativer Schüsselwert bei eindeutigem Sekundärschlüssel
Laufzeitfehler: ITAB_DUPLICATE_KEY
Unbehandelbare Ausnahmen
- Ursache: Beim Einfügen einer Zeilenmenge sind Einträge mit identischem Schlüssel aufgetreten (Zieltabelle mit UNIQUE definiert)
Laufzeitfehler: ITAB_DUPLICATE_KEY - Ursache: Verletzung der Sortierreihenfolge infolge eines INSERT mit Index auf eine sortierte Tabelle
Laufzeitfehler: ITAB_ILLEGAL_SORT_ORDER - Ursache: Unzulässiger Indexwert (<= 0) bei einer FROM-, TO- oder INDEX-Angabe
Laufzeitfehler: TABLE_INVALID_INDEX
BAL_S_LOG - Application Log: Log header data Vendor Master (General Section)
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 7540 Date: 20120526 Time: 213329 triton ( 165 ms )






