READ - obsolete_key

Syntax

READ TABLE itab { { }
                 | { WITH KEY dobj }
                | { WITH KEY = dobj [BINARY SEARCH] } } result.

Alternatives:

1. ... { }

2. ... WITH KEY dobj

3. ... WITH KEY = dobj [BINARY SEARCH]

Effect:

This statement has the same function as the general READ statement. As well as the additions listed here for specifying the individual rows to be read, outside of classes, the search key can also be specified in three obsolete forms.

Alternative 1

... { }

Effect:

If the search kep is not specified explicitly, the internal table itab must be a standard table with a header line. The first found line in the internal table is read for which the values in the columns of the standard key match the values in the corresponding components of the header line. Key fields in the header line that only contain blank characters are handled as if they match all values. If all the key fields in the header line only contain blank characters, the first entry in the table is read.

Notes:

Example:

In the following READ statement (in contrast to the example for READ TABLE - table_key) in general no entry is found, as the whole standard key is compared. In particular, the components deptime and arrtime that belong to the standard key of the internal table are of type t and contain the value "000000" instead of blank characters as an initial value in the header line. Only table entries that contain exactly these values are read.

DATA: spfli_tab TYPE STANDARD TABLE OF spfli
                WITH NON-UNIQUE KEY carrid connid
                WITH HEADER LINE.

FIELD-SYMBOLS <spfli> TYPE spfli.

SELECT *
       FROM spfli
       INTO TABLE spfli_tab
       WHERE carrid = 'LH'.

spfli_tab-carrid = 'LH'.
spfli_tab-connid = '0400'.
READ TABLE spfli_tab ASSIGNING <spfli>.

Alternative 2

... WITH KEY dobj

Effect:

If a single data object is specified directly after the addition WITH KEY, the internal table itab must be a standard table. The first line found in the internal table is read, whose left-aligned content matches the content of the data object dobj. For the data object dobj, only flat data types are allowed. In the search, the start of table rows that are longer than the data object dobj are handled as if they have the same data type dobj (casting).

Example:

To use the addition WITH KEY dobj for evaluating specific key fields, a structure must be created that corresponds to the relevant starting part of the line type. In contrast to the example for zu READ TABLE - table_key, in the following program section, the client column mandt of the table spfli_tab must be taken into account in the search key.

DATA: spfli_tab TYPE STANDARD TABLE OF spfli
                WITH NON-UNIQUE KEY carrid connid.

DATA: BEGIN OF key_struc,
        mandt  TYPE spfli-mandt  VALUE '000',
        carrid TYPE spfli-carrid VALUE 'LH',
        connid TYPE spfli-connid VALUE '0400',
      END OF key_struc.

FIELD-SYMBOLS <spfli> TYPE spfli.

SELECT *
       FROM spfli
       INTO TABLE spfli_tab
       WHERE carrid = 'LH'.
READ TABLE spfli_tab WITH KEY key_struc ASSIGNING <spfli>.

Alternative 3

... WITH KEY = dobj [BINARY SEARCH]

Effect:,If the addition WITH KEY is followed by a single data object after an "equals" sign, the first line found in the internal table itab is read, whose whole content corresponds to the content of the data object dobj. It must be possible to convert the data object dobj to the line type of the internal table. If the data type of dobj does not correspond to the line type of the internal table, a conversion is performed for the comparison according to the conversion rules.

Note:

This statement has the same function as specifying the pseudo component table_line as a free key, and is replaced by this.

READ TABLE itab WITH KEY table_line = dobj
                [BINARY SEARCH] ...

Example:

Obsolete determination of whether a line in an internal table exists with an elementary line type. The comment lines show the generally valid syntax with the pseudo-component table_line.

DATA itab TYPE TABLE OF i.

DO 10 TIMES.
  APPEND sy-index TO itab.
ENDDO.

READ TABLE itab WITH KEY = 4
           TRANSPORTING NO FIELDS.
* READ TABLE itab WITH KEY table_line = 4
*                 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.
  ...
ENDIF.

Exceptions

Catchable Exceptions