INSERT itab
Short Reference
ABAP Syntax INSERT line_spec
INTO itab_position [
result ].
What does it do? 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:
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.
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.
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
0One or more rows were inserted.
4No 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.
Latest notes: The administration of an unique secondary table key is
updated immediately ( direct update
) and the administration of a non-unique secondary table key is
updated at the next explicit use of the secondary table key (
lazy update ). The runtime costs
for the creation or updating of a non-unique secondary table key are
therefore first incurred when it is first used. (See
Internal Tables, Deleting Rows
Using Keys ).
The value operator
VALUE can also be used
to construct the content of
internal tables.
Example ABAP Coding 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( ).
Runtime Exceptions Catchable Exceptions
CX_SY_ITAB_DUPLICATE_KEY
Reason for error: Duplicate key values in unique secondary key
Runtime error: ITAB_DUPLICATE_KEY
Non-catchable Exceptions
Reason for error: When inserting a set of rows, entries with an identical
key were produced (the target table is defined by UNIQUE ).
Runtime error: ITAB_DUPLICATE_KEY
Reason for error: Sort order violated when using an INSERT with
index in a sorted table.
Runtime error: ITAB_ILLEGAL_SORT_ORDER
Reason for error: Invalid index value ( = 0) when FROM ,
TO , or INDEX specified
Runtime error: TABLE_INVALID_INDEX
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved