SAP NetWeaver AS ABAP Release 750, ©Copyright 2016 SAP AG. All rights reserved.
ABAP - Keyword Documentation → ABAP - Reference → Processing Internal Data → Internal Tables → Processing Statements for Internal Tables → READ TABLE itab →
READ TABLE - result
Syntax
... { INTO wa [transport_options] }
| { ASSIGNING <fs> [CASTING] }
| { REFERENCE INTO dref }
| { TRANSPORTING NO FIELDS }.
Alternatives:
1. ... INTO wa [transport_options]
2. ... ASSIGNING <fs> [CASTING]
3. ... REFERENCE INTO dref
4. ... TRANSPORTING NO FIELDS
Effect
Defines the output behavior of a READ statement for an internal table. There are four alternatives for the output behavior:
Note
Outside of classes, the addition INTO can also be specified together with TRANSPORTING NO FIELDS, but this produces a warning in the syntax check
... INTO wa [transport_options]
Effect
The content of the found row is assigned to the work area wa. The following can be specified for wa:
If no row is found, wa remains unchanged or initial. If a conversion error occurs in the assignment to wa, the associated runtime error occurs directly and the exception cannot be handled using CX_SY_CONVERSION_ERROR.
If the additions transport_options
are used, the work area wa must be compatible with the row type of the internal table.
Note
For READ TABLE, an (external)
obsolete short form exists where INTO wa can be omitted if the internal table has a
header line itab
with the same name. The statement is then implicitly enhanced by the addition of INTO itab. This short form is unrelated to the
obsolete key specification, which also evaluates the header line.
Example
Reads a particular row in the internal table sflight_tab and assigns it to a work area sflight_wa (declared inline). After the reference has been successfully assigned, the content of a component of the row is changed in the internal table.
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid,
p_fldate TYPE sflight-fldate.
DATA sflight_tab TYPE SORTED TABLE OF sflight
WITH UNIQUE KEY carrid connid fldate.
SELECT *
FROM sflight
WHERE carrid = @p_carrid AND
connid = @p_connid
INTO TABLE @sflight_tab.
IF sy-subrc = 0.
READ TABLE sflight_tab
WITH TABLE KEY carrid = p_carrid
connid = p_connid
fldate = p_fldate
INTO DATA(sflight_wa).
IF sy-subrc = 0.
sflight_wa-price = sflight_wa-price * '0.9'.
MODIFY sflight_tab FROM sflight_wa INDEX sy-tabix.
ENDIF.
ENDIF.
... ASSIGNING <fs> [CASTING]
Effect
The found table row is assigned to a field symbol. After the statement READ TABLE, the field symbol points to the table row in the memory. The addition cannot be specified if itab is specified as the return value or result of a functional method, a constructor expression, or a table expression, since this value no longer exists once the statement has been executed.
The following can be specified for <fs>:
If no table row is found, <fs> remains unchanged or initial.
As long as the field symbol points to the row, assignments to the field symbol modify the row in the internal table. The following limitations apply to modifying key fields of the primary and secondary table key:
The administration of unique secondary keys is updated after modifications are made to individual rows using field symbols the next time the internal table is accessed
(delayed update). The administration of non-unique secondary keys is updated after the next explicit use of the secondary key
(lazy update). The check
on the uniqueness of a secondary key does not take place until the time of the update. An internal table
might therefore be in an inconsistent state with respect to the secondary key after individual rows
are modified using field symbols. An exception is not raised until the table is next used. If the next
use is not directly after the modification, the secondary key can be explicitly updated using methods of the CL_ABAP_ITAB_UTILITIES class to handle possible exceptions on the spot.
Notes
Example
Selects a particular row in the internal table sflight_tab and assigns it to a field symbol <sflight> (declared inline). After the reference has been successfully assigned, the content of a component of the row is changed in the internal table. See also the example of the assignment of a table expression to a field symbol.
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid,
p_fldate TYPE sflight-fldate.
DATA sflight_tab TYPE SORTED TABLE OF sflight
WITH UNIQUE KEY carrid connid fldate.
SELECT *
FROM sflight
WHERE carrid = @p_carrid AND
connid = @p_connid
INTO TABLE @sflight_tab.
IF sy-subrc = 0.
READ TABLE sflight_tab
WITH TABLE KEY carrid = p_carrid
connid = p_connid
fldate = p_fldate
ASSIGNING FIELD-SYMBOL(<sflight>).
IF sy-subrc = 0.
<sflight>-price = <sflight>-price * '0.9'.
ENDIF.
ENDIF.
... REFERENCE INTO dref
Effect
A reference to the found table row is made in the data reference variable dref. The addition cannot be specified if itab is specified as the return value or result of a functional method or of a table expression of a constructor expression, since this value no longer exists once the statement has been executed.
The following can be specified for dref:
If no table row is found, dref remains unchanged or initial.
By dereferencing the data reference, the content of the found table row can be evaluated and changed. The same limitations apply to the modification of key fields of the
primary and
secondary table key as for access using field symbols (see ASSIGNING addition).
Notes
Example
Selects a particular row of the internal table sflight_tab and assigns a reference to the found row to the data reference variable sflight_ref (declared inline). After the reference has been successfully assigned, the content of a component of the row is changed in the internal table.
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid,
p_fldate TYPE sflight-fldate.
DATA sflight_tab TYPE SORTED TABLE OF sflight
WITH UNIQUE KEY carrid connid fldate.
SELECT *
FROM sflight
WHERE carrid = @p_carrid AND
connid = @p_connid
INTO TABLE @sflight_tab.
IF sy-subrc = 0.
READ TABLE sflight_tab
WITH TABLE KEY carrid = p_carrid
connid = p_connid
fldate = p_fldate
REFERENCE INTO DATA(sflight_ref).
IF sy-subrc = 0.
sflight_ref->price = sflight_ref->price * '0.9'.
ENDIF.
ENDIF.
... TRANSPORTING NO FIELDS
Effect
If the addition TRANSPORTING NO FIELDS is used, the statement READ TABLE only checks whether the row that is being searched for exists, and fills the system fields sy-subrc and sy-tabix. The system cannot access the content of the found row.
Notes
Example
Checks whether a particular row exists in the internal table sflight_carr and assigns the row number in the primary table index of the found row in sy-tabix to idx.
PARAMETERS p_carrid TYPE scarr-carrid.
DATA: scarr_tab TYPE SORTED TABLE OF scarr
WITH UNIQUE KEY carrid,
idx TYPE i.
SELECT *
FROM scarr
INTO TABLE @scarr_tab.
READ TABLE scarr_tab
WITH TABLE KEY carrid = p_carrid
TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
idx = sy-tabix.
ENDIF.