!--a11y-->

内部テーブルをループで処理する場合は、以下のように索引テーブルの索引を指定して読み込むエントリの数を制限することができます。
LOOP AT <itab> <result> [FROM <n1>] [TO
<n2>] <condition>.
<statement block>
ENDLOOP.
ループは、テーブル行のループ処理で説明したように処理されます。処理ブロック内では、システム項目SY-TABIX には現在の行の索引が格納されています。
FROM オプションと TO オプションを使用して、読み込むエントリのうち、最初と最後のエントリの索引 <n1> および <n2> を指定することができます。FROM オプションと TO オプションでは、読み込む行の数が制限されます。条件に WHERE オプションを指定すると、<result> だけが処理されなくなります。ただし、すべてのテーブル行が読み込まれます。パフォーマンスを向上させるために、FROM オプションと TO オプションをできるだけ多く使用してください。状況によっては、CONTINUE 命令または EXIT 命令でループを終了するほうがよいこともあります。

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.
出力は以下のようになります。
21 441
22 484
23 529
24 576
25 625
この例では、ソートテーブル ITAB に 30 行が書き込まれます。このループでは、10 から 25 までの行だけが読み込まれます。さらに、COL2 の内容が 400 より大きくなければならないという条件もあります。