ABAPINSERT_ITAB - INSERT ITAB

Vendor Master (General Section)   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.

INSERT itab

Kurzreferenz



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:

  1. 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.

  2. 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.

  3. 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-subrcBedeutung
0Eine oder mehrere Zeilen wurden eingefügt.
4Es 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

CX_SY_ITAB_DUPLICATE_KEY

  • 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 )