Indexangaben bei Schleifen 

Bei der Anweisung LOOP, die Schleifen über beliebige Tabellen ausführt, können bei Index-Tabellen die zu lesenden Zeilen über Indexangaben eingeschränkt werden:

LOOP AT <itab> <result> [FROM <n 1>] [TO <n 2>] <bedingung>.
  <anweisungsblock>
ENDLOOP.

Die Ausführung der Schleife erfolgt wie beim Tabellenzeilen in Schleifen bearbeiten bei beliebigen internen Tabellen. Innerhalb des Verarbeitungsblocks enthält SY-TABIX den Index der aktuellen Zeile.

Mit den Zusätzen FROM und TO können die Indizes <n 1 > und <n 2 > der ersten bzw. letzten zu lesenden Zeile angegeben werden. Mit FROM und TO wird tatsächlich die Anzahl der Zeilen eingeschränkt, die gelesen werden muß. Der WHERE-Zusatz in der Bedingung verhindert lediglich, daß die Ausgabe <result> bearbeitet wird. Bei WHERE müssen alle Zeilen gelesen werden. Um die Performance zu verbessern, sollten FROM und TO also soweit wie möglich eingesetzt werden. Es kann auch vorteilhaft sein, die Schleife unter bestimmten Bedingungen mit den Anweisungen CONTINUE oder EXIT abzukürzen oder zu beenden.

REPORT demo_int_tables_loop_ind.

DATA: BEGIN OF line,
         col1 TYPE i,
         col2 TYPE i,
      END OF line.

DATA itab LIKE SORTED TABLE OF line WITH UNIQUE KEY table_line.

DO 30 TIMES.
  line-col1 = sy-index.
  line-col2 = sy-index ** 2.
  APPEND line TO itab.
ENDDO.

LOOP AT itab INTO line FROM 10 TO 25 WHERE col2 > 400.
  WRITE: / sy-tabix, line-col2.
ENDLOOP.

Die Listenausgabe ist:

        21       441

        22       484

        23       529

        24       576

        25       625

Es wird eine sortierte Tabelle ITAB mit 30 Zeilen gefüllt. Die LOOP-Schleife liest nur die Zeilen mit Index zwischen 10 und 25. Weiterhin ist der Inhalt von COL2 auf Werte größer als 400 eingeschränkt.