ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Internal Tables → Processing Statements for Internal Tables → APPEND
APPEND - line_spec
Other versions: 7.31 | 7.40 | 7.54
Syntax
... wa
| {INITIAL LINE}
| {LINES OF jtab [FROM idx1] [TO idx2] [USING KEY
keyname]} ...
Alternatives
1. ... wa
2. ... INITIAL LINE
3. ... LINES OF jtab [FROM idx1] [TO idx2] [USING KEY keyname]
Effect
Either a work area wa
, an initial row INITIAL LINE
, or multiple rows of an internal table jtab
can be appended.
Alternative 1
... wa
Effect
A new row is appended to which the content of the work area wa
is assigned. wa
is a
general expression
position. wa
may be incompatible with the row type of the internal table and, if necessary, is converted to the row type in accordance with the
conversion rules. If a conversion error occurs here, the exception cannot be handled using CX_SY_CONVERSION_ERROR and the associated runtime error occurs instead. If an
arithmetic expression is specified for wa
, the row type of the internal table is respected when determining the
calculation type.
Notes
- If a conflict occurs with an existing unique primary table type, this raises a non-handleable exception when appending a single row. In the case of a conflict with a unique secondary table key, a handleable exception of the class CX_SY_ITAB_DUPLICATE_KEY is raised.
-
Specifying a calculation expression for
wa
is usually only a good idea for elementary row types. -
With the exception, an obsolete short form is possible where
wa TO
can be omitted, if the internal table has a header lineitab
with the same name. The statement then uses the header line as the work area implicitly.
Example
Appends square numbers to a sorted table with elementary row type.
DATA: int TYPE i,
itab LIKE SORTED TABLE OF int
WITH UNIQUE KEY table_line.
DO 10 TIMES.
int = sy-index ** 2.
APPEND int TO itab.
ENDDO.
Alternative 2
... INITIAL LINE
Effect
A new row is added in which every component contains the type-dependent initial value.
Example
Attaches an initial row that is also associated with a field symbol using the addition
ASSIGNING
. This means that initial rows can be processed directly.
DATA itab TYPE TABLE OF spfli.
FIELD-SYMBOLS <line> LIKE LINE OF itab.
APPEND INITIAL LINE TO itab ASSIGNING <line>.
<line>-carrid = '...'.
...
Alternative 3
... LINES OF jtab [FROM idx1] [TO idx2] [USING KEY keyname]
Effect
The rows of an internal table jtab
are added as a block. jtab
is a
functional operand position.
The inserted rows are taken sequentially from the table jtab
. The row type
of jtab
can be incompatible with the row type of the internal table itab
and it is converted to the row type of the target table (if necessary), in accordance with the
conversion rules. If a conversion error occurs here, the exception cannot be handled using CX_SY_CONVERSION_ERROR and the associated runtime error occurs instead.
The order in which the rows are taken is the same as for the statement
LOOP
and can also be influenced by specifying a table key
keyname
after USING KEY
. The additions
FROM idx1 and TO idx2
have, in relation to jtab
,
the same syntax and effect as for LOOP
.
If a conflict with existing primary or secondary table keys occurs, this always raises a non-handleable exception when multiple rows are appended.
Note
When a standard table is constructed, the constructor operators
NEW
and
VALUE can also append multiple rows from a table to the target table using LINES OF
.
Example
Appends the rows of an internal table itab2
to the standard table itab1
.
SELECT *
FROM spfli
WHERE carrid = 'LH'
INTO TABLE @DATA(itab1).
SELECT *
FROM spfli
WHERE carrid = 'UA'
INTO TABLE @DATA(itab2).
APPEND LINES OF itab2 TO itab1.