トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

ABAP/LOOP のバックアップ(No.2)


内部テーブルをぐるぐる回す命令。 アドオンで使わないプログラムはないんじゃないか?というくらいメジャーな命令。

概要

LOOP~ENDLOOP形式で記述し、大抵は集計したり分岐してOutputやその元ネタを作るために利用する。

LOOP AT iTAB INTO WorkArea

用法

一般的にはこちら。 このLOOPで何らかの別iTABを作るならばこちらが相当だが、元ネタの編集・更新ならば下記のAssigning句を使うべき。

サンプル

LOOP AT L_IT_MARC INTO L_WA_MARC.
  CORRECT L_WA_MARC TO L_IT_STOCK.
ENDLOOP.

LOOP AT iTAB Assigning <FieldSymbols>

用法

iTABの内容を更新する場合はこちら。

ASSIGNの方がパフォーマンスが高いという理由でこちらを使う人もいるが、INTO WorkAreaと違い、こちらは命令の仕様でこちらはiTABを更新しうる。 そのため、更新の意図がないのならば、こちらを使うべきでない。

サンプル

LOOP AT L_IT_ALVREPORT ASSIGNING <F_WA_ALVREPORT>.
  IF ( <F_WA_ALVREPORT>-AMOUNT > 100 ).
    <F_WA_ALVREPORT>-DIVISION = 'X'.
  ENDIF.
ENDLOOP.

LOOP AT iTAB WHERE xxx

用法

特定の条件を満たすレコードでのみLOOPしたい場合に使用する。 例えば、特定の性質を持つ得意先マスタが指定された伝票など。

この命令を使用した場合の注意点は、AT句が正しく効かないこと。

サンプル

LOOP AT L_IT_KNA1 INTO L_WA_KNA1 WHERE LAND1 = 'JP'.
  .....
ENDIF.

その他

LOOP中の内部テーブル自体に対しての登録や削除等のデータ操作について、INDEXなどのシステム変数にも影響を及ぼすため、極力行わないのが望ましい。そうしなければならない理由も特にないし。



【スポンサードリンク】
amazon_book_sap_system_implement is not found or not readable.




コメントはありません。 Comments/ABAP/LOOP

お名前: