READ TABLE itab
This statement reads a row from the internal table
itab is a
functional operand position.
The row must be specified by naming values for either
table_key for a table key, a free condition
free_key, or an index
index. The latter is possible only for
index tables and when using a
The output response
result determines how and to where the row contents are read.
If the row to be read is not specified uniquely, the first suitable row is read. In the case of index tables, this row has the lowest row number of all suitable rows in the table index used.
If the internal table is specified as the return value or result of a functional method, a constructor expression, or a table expression, the value is only available when the statement is executed. Afterwards, it is no longer possible to access the internal table.
READ TABLE sets the values for the system fields
|0||Row is found.
|4||The row was not found. If the entry was determined using a binary search,
|8||The row was not found. The entry was found using a binary search and the end of the table was reached.
The system fields
sy-tleng are also filled.
- There is no implicit selection of a suitable key or index. The used table key or table index is always specified uniquely. The syntax check issues a warning if there is a suitable secondary table key but this table key is not used. This warning should be removed through using the key. However, in exceptional cases, it can be bypassed using a pragma.
As an alternative to the statement
READ TABLE, table expressions can be used to allow reads to be performed on individual table rows at operand positions.
- Internal tables can also be specified as a data source of a query in ABAP SQL.
If multiple rows of an internal table are to be read, the statement
LOOP generally displays better performance than using the statement
READ TABLEin a loop.
Reads individual table rows from a standard table in a
WHILE loop. The table
rows are read in reverse order with respect to the sorted secondary key
CHECK statement exits the loop if the specified condition is not met. This
construct provides the missing option of performing
LOOPs in reverse order. See also the corresponding
executable example with a
DATA itab TYPE STANDARD TABLE OF i WITH EMPTY KEY WITH NON-UNIQUE SORTED KEY sort_key COMPONENTS table_line. itab = VALUE #( ( 2 ) ( 5 ) ( 1 ) ( 3 ) ( 4 ) ). DATA(output) = ``. DATA(idx) = lines( itab ). WHILE idx > 0. READ TABLE itab INDEX idx USING KEY sort_key ASSIGNING FIELD-SYMBOL(<fs>). idx -= 1. CHECK <fs> > 2. output = output && <fs> && ` `. ENDWHILE. cl_demo_output=>display( output ).
Cause: When reading a table with
READ ... WITH [TABLE] KEY, overlapping or duplicate keys were specified.
Cause: When reading a table of the type
SORTED, the specified key fields have to be an initial part of the table key when
BINARY SEARCHis specified.
Cause: No key specified.
Cause: Invalid key specified when accessing a key table.
Cause: Key specified implicitly (invalid)
Cause: Invalid incompatible work area specified.
Cause: Memory area violated when