サーチ…
備考
内部テーブルをループするとき、することが一般的に好ましいASSIGNフィールドシンボルではなく、ループにINTOワークエリア。フィールドシンボルの割り当ては、各繰り返し中に内部参照テーブルの次の行を参照するように参照を更新しますが、 INTOを使用すると、テーブルの行が作業領域にコピーされます。
内部テーブルループ
LOOP AT itab INTO wa.
ENDLOOP.
FIELD-SYMBOLS <fs> LIKE LINE OF itab.
LOOP AT itab ASSIGNING <fs>.
ENDLOOP.
LOOP AT itab ASSIGNING FIELD-SYMBOL(<fs>).
ENDLOOP.
LOOP AT itab REFERENCE INTO dref.
ENDLOOP.
LOOP AT itab TRANSPORTING NO FIELDS.
ENDLOOP.
条件付きループ
特定の条件に一致する行のみをループに入れる必要がある場合は、 WHEREを追加することができます。
LOOP AT itab INTO wa WHERE f1 = 'Max'.
ENDLOOP.
Whileループ
ABAPはまた、与えられた式が偽と評価されるまで実行される従来のWHILE -Loopを提供します。システムフィールドsy-indexはすべてのループステップで増加します。
WHILE condition.
* do something
ENDWHILE
Do Loop
何も追加せずにDO -Loopは無限に実行されるか、少なくとも明示的に内部から出るまで実行されます。システムフィールドsy-indexはすべてのループステップで増加します。
DO.
* do something... get it?
* call EXIT somewhere
ENDDO.
TIMES追加はコードを繰り返す非常に便利な方法を提供します( amountはタイプi値を表します)。
DO amount TIMES.
* do several times
ENDDO.
一般的なコマンド
ループを解除するには、 EXITコマンドを使用します。
DO.
READ TABLE itab INDEX sy-index INTO DATA(wa).
IF sy-subrc <> 0.
EXIT. "Stop this loop if no element was found
ENDIF.
" some code
ENDDO.
次のループステップにスキップするには、 CONTINUEコマンドを使用します。
DO.
IF sy-index MOD 1 = 0.
CONTINUE. " continue to next even index
ENDIF.
" some code
ENDDO.
CHECKステートメントは、条件付きのCONTINUEです。条件がfalseの場合、 CONTINUEが実行されます。言い換えれば、ループは、条件が真であればステップを実行するだけです 。
このCHECK例...
DO.
" some code
CHECK sy-index < 10.
" some code
ENDDO.
...と同等です...
DO.
" some code
IF sy-index >= 10.
CONTINUE.
ENDIF.
" some code
ENDDO.
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow