SAP NetWeaver AS ABAP Release 752, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation → ABAP - Referenz → Interne Daten verarbeiten → Interne Tabellen → Ausdrücke und Funktionen für interne Tabellen → FOR - Tabelleniterationen →FOR ... IN itab
Syntax
... FOR wa|<fs> IN itab [INDEX INTO idx] [
cond] [let_exp] ...
Zusatz:
Wirkung
Diese Variante eines Iterationsausdrucks für Tabelleniterationen mit FOR wertet eine interne Tabelle itab wie die Zeilenvariante einer LOOP-Schleife sequenziell aus. Bei itab handelt es sich um eine funktionale Operandenposition. Die Reihenfolge der ausgelesenen Zeilen hängt wie bei LOOP von der Tabellenart bzw. einem in cond angegebenen Schlüssel ab.
Mit cond können Bedingungen für das Auslesen gesetzt werden. Für jede gelesene Zeile wird das Ergebnis entweder einem lokalen Arbeitsbereich wa1 oder einem Feldsymbol <fs> zugewiesen. Der Arbeitsbereich bzw. das Feldsymbol wird implizit mit dem Zeilentyp der internen Tabelle deklariert und lokal an den FOR-Ausdruck als Teilausdruck des gesamten Konstruktorausdrucks gebunden. Bezüglich Namensraum und Sichtbarkeit gilt das Gleiche wie für die Hilfsfelder, die in LET-Ausdrücken deklariert werden. Der Arbeitsbereich bzw. das Feldsymbol können hinter dem FOR-Ausdruck entweder in weiteren Teilausdrücken oder zur Konstruktion des Resultats einer Tabellen-Comprehension bzw. Tabellenreduzierung verwendet werden.
Hinweise
Beispiel
Konstruktion einer internen Tabelle flights in einer Tabelleniteration mit FOR mit dem Wertoperator VALUE (Tabellen-Comprehension). Die Zeilen der internen Tabelle werden aus den Inhalten zweier vorhandener interner Tabellen scarr_tab und spfli_tab zusammengeführt.
SELECT carrid, carrname
FROM scarr
INTO TABLE @DATA(scarr_tab).
SELECT carrid, connid, cityfrom, cityto
FROM spfli
ORDER BY carrid, connid, cityfrom, cityto
INTO TABLE @DATA(spfli_tab).
TYPES:
BEGIN OF flight,
carrier TYPE scarr-carrname,
number TYPE spfli-connid,
departure TYPE spfli-cityfrom,
destination TYPE spfli-cityto,
END OF flight,
flights TYPE TABLE OF flight WITH EMPTY KEY.
DATA(flights) =
VALUE flights( FOR <fs> IN spfli_tab
( carrier = VALUE #( scarr_tab[ carrid = <fs>-carrid ]
DEFAULT '???' )
number = <fs>-connid
departure = <fs>-cityfrom
destination = <fs>-cityto ) ).
cl_demo_output=>display( flights ).
Ausführbare Beispiele
... INDEX INTO idx
Wirkung
Dieser Zusatz setzt für jede gelesene Zeile des zugehörigen FOR-Ausdrucks die Hilfsvariable idx auf den Wert, auf den das Systemfeld sy-tabix in einer entsprechenden LOOP-Schleife gesetzt würde. Die Hilfsvariable idx wird implizit mit dem Typ i deklariert und lokal an den FOR-Ausdruck als Teilausdruck des gesamten Konstruktorausdrucks gebunden. Bezüglich Namensraum und Sichtbarkeit gilt das Gleiche wie für Hilfsfelder, die in LET-Ausdrücken deklariert werden.
Beispiel
Konstruktion einer internen Tabelle carriers aus einer vorhandenen internen Tabelle scarr_tab, wobei die erste Spalte mit dem Zeilenindex der vorhandenen Tabelle versorgt wird.
SELECT carrid, carrname
FROM scarr
INTO TABLE @DATA(scarr_tab).
TYPES:
columns LIKE LINE OF scarr_tab,
BEGIN OF carrier,
no TYPE i.
INCLUDE TYPE columns.
TYPES:
END OF carrier,
carriers TYPE TABLE OF carrier WITH EMPTY KEY.
DATA(carriers) =
VALUE carriers( FOR wa IN scarr_tab INDEX INTO i
( no = i carrid = wa-carrid carrname = wa-carrname ) ).
cl_demo_output=>display( carriers ).