APPEND
Short Reference
ABAP Syntax APPEND line_spec TO
itab [SORTED BY comp] [ result ].
ABAP_ADDITION:
... SORTED BY comp
What does it do? This statement appends one or more rows
line_spec to an internal index table
itab . It is appended so that a new last row is created with
regard to the primary table index.
If itab is a standard table ,
SORTED BY can be used to sort the table in a specified way. 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.
For the individual table types, appending is done as follows:
To standard tables, rows are appended directly and without checking
the content of the internal table.
Rows are appended to sorted tables
only if they match the sort order and do not create duplicate entries
(if the primary table key is unique).
No rows can be appended to hashed tables
.
Exceptions are raised in the following cases:
If a row to be appended would produce a duplicate entry in a unique
primary table key, a non-handleable exception is raised.
If a row to be appended would produce a duplicate entry in a unique
secondary table key, a handleable exception of the class
CX_SY_ITAB_DUPLICATE_KEY is raised.
If a block of rows to be appended would produce a duplicate entry in a
unique secondary table key, a non-handleable exception is raised.
If the row being appended would destroy the sort order of sorted
tables, a non-handleable exception is raised (the secondary index of a
sorted secondary key, however, is updated before it is used again).
System Fields
The APPEND statement sets sy-tabix to the row number of
the last appended row in the primary table index.
Latest notes: The administration of a unique secondary table key is
updated immediately; the administration of a non-unique key is not
updated until the secondary table key is next used explicitly (lazy
update ). Runtime costs for creating or updating a non-unique
secondary table key are not incurred therefore until it is used for the
first time.
The value operator
VALUE can also be used
to construct the content of
internal tables.
ABAP_ADDITION ... SORTED BY comp
What does it do? Used correctly, this addition can produce ranking lists
in descending order. This only works if a value greater than 0 is
specified in the declaration of the internal table in the addition
INITIAL SIZE . If the value 0 is specified
for INITIAL SIZE , the statement APPEND has no effect when
used with the addition SORTED BY .
The addition SORTED BY can be used only when a work area wa
is specified and for a standard table. Also, wa must be
compatible with the row type of the table.
The component comp can be specified as shown in the section
Specifying Components , however only a single
component can be addressed using the object component selector, and no
attributes of classes.
As long as the declaration of the internal table for INITIAL SIZE
has a value greater than zero, the statement is executed in two
steps:
Starting from the final row, the table is scanned for a row in which
the value of the component comp is greater than or equal to the
value of the component comp of wa . If such a row exists,
the work area wa is inserted after this row with respect to the
primary index. In no such row is found, the work area wa is
inserted before the first row with respect to the primary index. The row
numbers of all rows after the inserted row are increased by 1 in the
primary table index.
If the number of rows before the statement is executed is greater than
or equal to the number specified in the declaration of the internal
table in the addition INITIAL SIZE , then the new final row is
deleted with respect to the primary table index.
When using only the statement APPEND with addition SORTED
BY to fill an internal table, this rule results in an internal table
that contains no more than the number of rows specified in its de
finition after INITIAL SIZE and that is sorted in descending
order with regard to the primary table index by component comp
(ranking).
ABAP_PGL Create ranking lists with unsorted
filling
Example ABAP Coding Creates a ranking of the three flights of a connection
showing the most free seats.
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid.
DATA: BEGIN OF seats,
fldate TYPE sflight-fldate,
seatsocc TYPE sflight-seatsocc,
seatsmax TYPE sflight-seatsmax,
seatsfree TYPE sflight-seatsocc,
END OF seats.
DATA seats_tab LIKE STANDARD TABLE OF seats
INITIAL SIZE 3.
SELECT fldate seatsocc seatsmax
FROM sflight
INTO seats
WHERE carrid = p_carrid AND
connid = p_connid.
seats-seatsfree = seats-seatsmax - seats-seatsocc.
APPEND seats TO seats_tab SORTED BY seatsfree.
ENDSELECT.
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: Row with identical key inserted (target table defined
using UNIQUE )
Runtime error: ITAB_DUPLICATE_KEY_IDX_OP
Reason for error: Sort order violated after an APPEND on 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
Reason for error: Memory area
violated when TABLES parameter accessed
Runtime error: ITAB_STRUC_ACCESS_VIOLATION
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved