SAP Knowledge Wiki
ABAP/LOOP
をテンプレートにして作成
開始行:
[[内部テーブル>ABAP/内部テーブル]]をぐるぐる回す命令。
アドオンで使わないプログラムはないんじゃないか?というく...
----
#contents
----
* 概要 [#h709f720]
LOOP~ENDLOOP形式で記述し、大抵は集計したり分岐してOutput...
** LOOP AT iTAB INTO WorkArea [#d82c89d3]
*** 用法 [#d870e6ce]
一般的にはこちら。
このLOOPで何らかの別iTABを作るならばこちらが相当だが、元...
*** サンプル [#i817cab8]
LOOP AT L_IT_MARC INTO L_WA_MARC.
CORRECT L_WA_MARC TO L_IT_STOCK.
ENDLOOP.
** LOOP AT iTAB Assigning <FieldSymbols> [#obc92f78]
*** 用法 [#d5815b1e]
iTABの内容を更新する場合はこちら。
[[ASSIGN>ABAP/ASSIGN]]の方がパフォーマンスが高いという理...
そのため、更新の意図がないのならば、こちらを使うべきでな...
*** サンプル [#w89d82d3]
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 [#f4f291cc]
*** 用法 [#r5a5b2c0]
特定の条件を満たすレコードでのみLOOPしたい場合に使用する。
例えば、特定の性質を持つ[[得意先マスタ]]が指定された伝票...
この命令を使用した場合の注意点は、[[AT>ABAP/AT]]句が正し...
*** サンプル [#r58cc4fd]
LOOP AT L_IT_KNA1 INTO L_WA_KNA1 WHERE LAND1 = 'JP'.
.....
ENDIF.
** テーブルコントロールのLoop [#f7977c3b]
[[テーブルコントロール>ABAP/テーブルコントロール]]のLOOP...
DATA :
IT_9000 TYPE STANDARD TABLE OF TYPE_SCREEN_9...
[[テーブルコントロール>ABAP/テーブルコントロール]]の受け...
CONTROLS:
TABLECONTROL_9000 TYPE TABLEVIEW USING SCREEN 9000.
[[テーブルコントロール>ABAP/テーブルコントロール]]自体を...
PROCESS BEFORE OUTPUT.
LOOP AT IT_9000 INTO WA_9000 WITH CONTROL TABLECONTROL...
...
ENDLOOP.
[[PBO>ABAP/PBO]]にはこんな感じで書いて、
PROCESS AFTER INPUT.
LOOP AT IT_9000 INTO WA_9000.
CHAIN.
FIELD : WA_9000-SELECTION, "選択行
WA_9000-QTY. "数量
* 何らかの処理
MODULE xxx
ENDCHAIN.
ENDLOOP.
[[PAI>ABAP/PAI]]にはこんな感じで書く。
* その他 [#n70fe8b9]
** Loop中のiTabへの操作 [#r277d28c]
LOOP中の内部テーブル自体に対しての登録や削除について、IND...
変更については実施しても概ね問題ない所見だが、いうまでも...
** Loop中のLoopについて [#f3b83efd]
例えばヘッダデータのLoopの中で明細データをLoopする、基本...
「Loopの中のLoopはわかりづらいからダメだ」という人が偶に...
それは置いといて、確かに書きっぷりによってはわかりづらく...
じゃあどうやって書けばよいかというと、単にLoopの中のLoop...
あと、基本的なことだが、不用意に[[グローバル変数>アドオン...
*** 良い例 [#ga58c474]
FORM 処理A
LOOP AT iTAB_CURRENT_HEADER INTO WA_CURRENT_HEADER.
PERFORM 処理1 USING WA_CURRENT_HEADER
CHANGING WA_NEW_HEADER.
LOOP AT iTAB_CURRENT_ITEM INTO WA_CURRENT_ITEM WHERE...
PERFORM 処理2 USING WA_CURRENT_ITEM
CHANGING iTab_NEW_HEADER.
...
ENDLOOP.
...
ENDLOOP.
ENDFORM.
*** 悪い例 [#eaa351c5]
FORM 処理A
LOOP AT iTAB_CURRENT_HEADER INTO WA_CURRENT_HEADER.
PERFORM 処理1 USING WA_CURRENT_HEADER
CHANGING WA_NEW_HEADER.
PERFORM 処理2 USING WA_CURRENT_HEADER-DOCNO
iTAB_CURRENT_ITEM
CHANGING WA_NEW_ITEM.
ENDFORM.
FORM 処理2
LOOP AT iTAB_CURRENT_ITEM INTO WA_CURRENT_ITEM WHERE...
PERFORM 処理1 USING WA_CURRENT_HEADER
CHANGING iTAB_NEW_ITEM.
...
ENDLOOP.
...
ENDLOOP.
ENDFORM.
~
~
CENTER:【スポンサードリンク】
#htmlinsert(amazon_book_sap_system_implement)
~
~
----
#pcomment(reply)
終了行:
[[内部テーブル>ABAP/内部テーブル]]をぐるぐる回す命令。
アドオンで使わないプログラムはないんじゃないか?というく...
----
#contents
----
* 概要 [#h709f720]
LOOP~ENDLOOP形式で記述し、大抵は集計したり分岐してOutput...
** LOOP AT iTAB INTO WorkArea [#d82c89d3]
*** 用法 [#d870e6ce]
一般的にはこちら。
このLOOPで何らかの別iTABを作るならばこちらが相当だが、元...
*** サンプル [#i817cab8]
LOOP AT L_IT_MARC INTO L_WA_MARC.
CORRECT L_WA_MARC TO L_IT_STOCK.
ENDLOOP.
** LOOP AT iTAB Assigning <FieldSymbols> [#obc92f78]
*** 用法 [#d5815b1e]
iTABの内容を更新する場合はこちら。
[[ASSIGN>ABAP/ASSIGN]]の方がパフォーマンスが高いという理...
そのため、更新の意図がないのならば、こちらを使うべきでな...
*** サンプル [#w89d82d3]
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 [#f4f291cc]
*** 用法 [#r5a5b2c0]
特定の条件を満たすレコードでのみLOOPしたい場合に使用する。
例えば、特定の性質を持つ[[得意先マスタ]]が指定された伝票...
この命令を使用した場合の注意点は、[[AT>ABAP/AT]]句が正し...
*** サンプル [#r58cc4fd]
LOOP AT L_IT_KNA1 INTO L_WA_KNA1 WHERE LAND1 = 'JP'.
.....
ENDIF.
** テーブルコントロールのLoop [#f7977c3b]
[[テーブルコントロール>ABAP/テーブルコントロール]]のLOOP...
DATA :
IT_9000 TYPE STANDARD TABLE OF TYPE_SCREEN_9...
[[テーブルコントロール>ABAP/テーブルコントロール]]の受け...
CONTROLS:
TABLECONTROL_9000 TYPE TABLEVIEW USING SCREEN 9000.
[[テーブルコントロール>ABAP/テーブルコントロール]]自体を...
PROCESS BEFORE OUTPUT.
LOOP AT IT_9000 INTO WA_9000 WITH CONTROL TABLECONTROL...
...
ENDLOOP.
[[PBO>ABAP/PBO]]にはこんな感じで書いて、
PROCESS AFTER INPUT.
LOOP AT IT_9000 INTO WA_9000.
CHAIN.
FIELD : WA_9000-SELECTION, "選択行
WA_9000-QTY. "数量
* 何らかの処理
MODULE xxx
ENDCHAIN.
ENDLOOP.
[[PAI>ABAP/PAI]]にはこんな感じで書く。
* その他 [#n70fe8b9]
** Loop中のiTabへの操作 [#r277d28c]
LOOP中の内部テーブル自体に対しての登録や削除について、IND...
変更については実施しても概ね問題ない所見だが、いうまでも...
** Loop中のLoopについて [#f3b83efd]
例えばヘッダデータのLoopの中で明細データをLoopする、基本...
「Loopの中のLoopはわかりづらいからダメだ」という人が偶に...
それは置いといて、確かに書きっぷりによってはわかりづらく...
じゃあどうやって書けばよいかというと、単にLoopの中のLoop...
あと、基本的なことだが、不用意に[[グローバル変数>アドオン...
*** 良い例 [#ga58c474]
FORM 処理A
LOOP AT iTAB_CURRENT_HEADER INTO WA_CURRENT_HEADER.
PERFORM 処理1 USING WA_CURRENT_HEADER
CHANGING WA_NEW_HEADER.
LOOP AT iTAB_CURRENT_ITEM INTO WA_CURRENT_ITEM WHERE...
PERFORM 処理2 USING WA_CURRENT_ITEM
CHANGING iTab_NEW_HEADER.
...
ENDLOOP.
...
ENDLOOP.
ENDFORM.
*** 悪い例 [#eaa351c5]
FORM 処理A
LOOP AT iTAB_CURRENT_HEADER INTO WA_CURRENT_HEADER.
PERFORM 処理1 USING WA_CURRENT_HEADER
CHANGING WA_NEW_HEADER.
PERFORM 処理2 USING WA_CURRENT_HEADER-DOCNO
iTAB_CURRENT_ITEM
CHANGING WA_NEW_ITEM.
ENDFORM.
FORM 処理2
LOOP AT iTAB_CURRENT_ITEM INTO WA_CURRENT_ITEM WHERE...
PERFORM 処理1 USING WA_CURRENT_HEADER
CHANGING iTAB_NEW_ITEM.
...
ENDLOOP.
...
ENDLOOP.
ENDFORM.
~
~
CENTER:【スポンサードリンク】
#htmlinsert(amazon_book_sap_system_implement)
~
~
----
#pcomment(reply)
ページ名: