ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Interne Daten verarbeiten →  Interne Tabellen →  Verarbeitungsanweisungen für interne Tabellen → 

READ TABLE itab

Kurzreferenz

Syntax

READ TABLE itab { table_key
                | free_key
                | index } result.


Wirkung

Diese Anweisung liest eine Zeile aus der internen Tabelle itab. Bei itab handelt es sich um eine funktionale Operandenposition.

Die Zeile muss entweder über die Angabe von Werten table_key für einen Tabellenschlüssel, über eine freie Bedingung free_key oder über eine Indexangabe index spezifiziert werden. Letzteres ist nur für Indextabellen sowie bei Verwendung eines sortierten Sekundärschlüssels möglich. Das Ausgabeverhalten result bestimmt, wie und wohin der Zeileninhalt gelesen wird.

Bei nicht eindeutiger Spezifikation der zu lesenden Zeile wird die erste passende Zeile gelesen. Bei Indextabellen hat diese Zeile die niedrigste Zeilennummer aller passenden Zeilen bezüglich des verwendeten Tabellenindex.

Wenn die interne Tabelle als Rückgabewert bzw. Resultat einer funktionalen Methode, eines Konstruktorausdrucks oder eines Tabellenausdrucks angegeben ist, ist dieser Wert nur während der Ausführung der Anweisung vorhanden. Danach kann nicht mehr auf die interne Tabelle zugegriffen werden.

Systemfelder

Die Anweisung READ TABLE setzt die Werte der Systemfelder sy-subrc und sy-tabix.

sy-subrc Bedeutung
0 Zeile wurde gefunden. sy-tabix wird auf die Zeilennummer des Eintrags im verwendeten primären oder sekundären Tabellenindex gesetzt, bei Verwendung eines Hash-Schlüssels auf den Wert 0.
2 Wie sy-subrc gleich 0. Unterscheidet Fälle beim Zusatz COMPARING in result.
4 Zeile wurde nicht gefunden. Falls der Eintrag per Binärsuche ermittelt wurde, wird sy-tabix auf die Zeilennummer des Eintrags im primären oder sekundären Tabellenindex gesetzt vor dem sie mit INSERT ... INDEX ... einzufügen wäre, um die Sortierordnung zu erhalten. Dies ist der Fall wenn bei sortierten Schlüsseln der Zusatz table_key oder free_key unter Angabe des kompletten Tabellenschlüssels angegeben wurde oder wenn explizit der Zusatz BINARY SEARCH angegeben wurde. Ansonsten ist sy-tabix undefiniert (-1).
8 Zeile wurde nicht gefunden. Der Eintrag wurde per Binärsuche ermittelt und dabei das Tabellenende erreicht. sy-tabix wird auf die Anzahl der Zeilen + 1 gesetzt.

Zusätzlich werden die Systemfelder sy-tfill und sy-tleng versorgt.

Hinweise

Beispiel

Auslesen von einzelnen Tabellenzeilen einer Standardtabelle in einer WHILE-Schleife. Die Tabellenzeilen werden in umgekehrter Reihenfolge bezüglich des sortierten Sekundärschlüssels sort_key gelesen. Eine CHECK-Anweisung verlässt die Schleife wenn die angegebene Bedingung nicht erfüllt ist. Dieses Konstrukt ersetzt die fehlende Möglichkeit, LOOP-Schleifen in umgekehrter Reihenfolge auszuführen. Siehe auch das entsprechende ausführbare Beispiel mit einem FOR-Ausdruck.

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 = idx  - 1.
  CHECK <fs> > 2.
  output = output && <fs> && ` `.
ENDWHILE.

cl_demo_output=>display( output ).

Ausnahmen

Unbehandelbare Ausnahmen



Weiterlesen
READ TABLE - table_key
READ TABLE - free_key
READ TABLE - index
READ TABLE - result
Example Interne Tabellen, Schlüsselzugriffe