ABAP Keyword Documentation →  ABAP − Reference →  Processing Internal Data →  Internal Tables →  Processing Statements for Internal Tables → 

INSERT itab  Syntax Diagram

Short Reference

Syntax

INSERT line_spec INTO itab_position [result].

Effect

This statement adds one or more rows line_spec to a position itab_position in an internal table. The position can be specified using the primary table key or a table index. Use result when appending a single row to set a reference to the appended row in the form of a field symbol or a data reference.

When the row is in inserted, all existing unique table keys are checked. These can be a primary table key and multiple unique secondary table keys. The system handles any duplicates of the various key according to the following hierarchy:

  1. If attempting to insert a single row using a primary key would result in duplicates with respect to the unique primary key, no row is inserted and sy-subrc is set to 4.

  2. If attempting to insert a single row using the key or the index would result in duplicates with respect to a unique secondary key, a handleable exception of the class CX_SY_ITAB_DUPLICATE_KEY is raised.

  3. If the attempt to insert a single row (using an index) or multiple rows (as a block) would result in duplicates (in terms of a unique primary or secondary key), a runtime error occurs.


System Fields

sy-subrc Meaning
0 One or more rows were inserted.
4 No row was inserted because either a row of the same unique key already existed when inserting single rows using the primary key or the specified index was greater than the current number of rows plus one when inserting the rows using the table index.

The system field sy-tabix is not set.

Notes

Example

Inserts single rows in a standard table int_tab using the table index and inserts references to these rows in a hashed table ref_tab using the table key. The output in the LOOP loops produces the numbers 10 to 1 for int_tab and the numbers 1 to 10 for ref_tab.

TYPES intref type REF TO i.

DATA: int_tab TYPE STANDARD TABLE OF i,
      ref_tab TYPE HASHED TABLE OF intref
              WITH UNIQUE KEY table_line.

DO 10 TIMES.
  INSERT sy-index
         INTO int_tab INDEX 1
         REFERENCE INTO DATA(dref).
  INSERT dref
         INTO TABLE ref_tab.
ENDDO.

cl_demo_output=>begin_section( `Integer Table` ).
LOOP AT int_tab INTO DATA(int).
  cl_demo_output=>write( |{ int }| ).
ENDLOOP.
cl_demo_output=>next_section( `Reference Table` ).
LOOP AT ref_tab INTO dref.
  cl_demo_output=>write( |{ dref->* }| ).
ENDLOOP.
cl_demo_output=>display( ).

Exceptions

Catchable Exceptions

CX_SY_ITAB_DUPLICATE_KEY

Non-Catchable Exceptions




Continue
INSERT - line_spec
INSERT - itab_position
INSERT - result
Internal Tables, Insert Rows