SAP Knowledge Wiki
ABAP/AT
の編集
Top
/
ABAP
/
AT
-- 雛形とするページ --
(no template pages)
[[LOOP>ABAP/LOOP]]命令の中で使用する、キーブレイク時に動作させる命令。 使いどころを押さえれば便利な命令だが、思わぬ動作をすることもあるビギナーは要注意の命令。 * 概要 [#c4b0c5f6] ** 用法 [#f3178f66] [[LOOP AT>ABAP/LOOP]]の最初に一回だけ実行したい、あるいは最後に一回だけ実行したい、あるいはキーがブレイクした場合にのみ実行したいというシーンで利用する。 使いこなすことができればコーディングの幅が広がることは間違いないのだが、いくつかのお作法があり、これを破ると「コンパイルは通るのに、意図した動作にならない」「仕様変更時に思わぬデグレが起きる」といったことを招きやすいのも事実で、さらにAT~ENDATの間では値がアスタリスクになるという現象も起きるので注意。 以下、お作法および制約というか仕様。 -[[LOOP AT>ABAP/LOOP]]の中で[[内部テーブル>ABAP/内部テーブル]]を[[MODIFY>ABAP/MODIFY]]しない -[[LOOP AT>ABAP/LOOP]]の中で[[内部テーブル>ABAP/内部テーブル]]を[[DELETE>ABAP/DELETE]]しない -WHERE句つきの[[LOOP AT>ABAP/LOOP]]の中では使わない -LOOPでINTOした作業領域(構造)の値を変更しない -AT~ENDATの間で、値がアスタリスクに化ける(AT~ENDATを抜ければ元通りになる) ** サンプル [#p2cdac94] *** AT FIRST [#oc6b1b8a] AT FIRST. CLEAR : xxx. ENDAT. [[LOOP AT>ABAP/LOOP]]の一発目だけ実行したいときに。 これだけなら、[[システム変数>ABAP/システム変数]](SY-LOOPCだっけ?)の判定でよい気がする。 *** AT NEW [#s8a4dbe6] AT NEW WERKS. WRITE : WA_MARC-MATNR, WA_MARC-WERKS. ENDAT. キーブレイクしたときに何かしたい場合。 例えば、キーブレイクしたときにだけコードやテキストを書き出す等。 最も利用価値がありながら、油断すると意図しない動きになるので注意すべき命令。 なお、AT NEWを使う際は、指定した項目とそこから左側の項目が判定されるため事前に[[SORT>ABAP/SORT]]する等のケアを忘れずに。 *** END OF xxx [#m5c2ee3d] AT END OF CHARG. WRITE : 'Total', L_AMOUNT. ENDAT. 連続したキーの終わりにだけ何かしたい場合に使用し、AT NEWと同じくらい利用価値が高い。 メリットや注意点はAT NEWと同じだが、最後に処理するだけあって画面や[[テーブル>SAPのオブジェクト/テーブル]]なんかに結果を書き出すことが多いため、意図しない結果になっていても気づきやすいことが多い。とはいえ、注意。 *** AT LAST [#uee45ab7] AT LAST. ULINE. ENDAT. [[LOOP AT>ABAP/LOOP]]の最後の処理だったら[[LOOP AT>ABAP/LOOP]]を抜けた直後でもよい気がするが、仕変を入れる際に「ロジックの追加はココより上に入れるんやで」と明示できたりするのがメリットだろうか?あるいは[[SUM>ABAP/SUM]]する? * その他 [#odda6ec0] 同じATでも、[[AT LINE-SELECTION>ABAP/AT LINE-SELECTION]]、[[AT SELECTION-SCREEN>ABAP/AT SELECTION-SCREEN]]、[[AT USER-COMMAND>ABAP/AT USER-COMMAND]]、[[LOOP AT>ABAP/LOOP]]などについては各ページを参照のこと。 関連する命令には、[[LOOP>ABAP/LOOP]]や[[SUM>ABAP/SUM]]がある。 ~ ~ CENTER:【スポンサードリンク】 #htmlinsert(amazon_book_sap_system_implement) ~ ~ ---- #pcomment(reply)
タイムスタンプを変更しない
[[LOOP>ABAP/LOOP]]命令の中で使用する、キーブレイク時に動作させる命令。 使いどころを押さえれば便利な命令だが、思わぬ動作をすることもあるビギナーは要注意の命令。 * 概要 [#c4b0c5f6] ** 用法 [#f3178f66] [[LOOP AT>ABAP/LOOP]]の最初に一回だけ実行したい、あるいは最後に一回だけ実行したい、あるいはキーがブレイクした場合にのみ実行したいというシーンで利用する。 使いこなすことができればコーディングの幅が広がることは間違いないのだが、いくつかのお作法があり、これを破ると「コンパイルは通るのに、意図した動作にならない」「仕様変更時に思わぬデグレが起きる」といったことを招きやすいのも事実で、さらにAT~ENDATの間では値がアスタリスクになるという現象も起きるので注意。 以下、お作法および制約というか仕様。 -[[LOOP AT>ABAP/LOOP]]の中で[[内部テーブル>ABAP/内部テーブル]]を[[MODIFY>ABAP/MODIFY]]しない -[[LOOP AT>ABAP/LOOP]]の中で[[内部テーブル>ABAP/内部テーブル]]を[[DELETE>ABAP/DELETE]]しない -WHERE句つきの[[LOOP AT>ABAP/LOOP]]の中では使わない -LOOPでINTOした作業領域(構造)の値を変更しない -AT~ENDATの間で、値がアスタリスクに化ける(AT~ENDATを抜ければ元通りになる) ** サンプル [#p2cdac94] *** AT FIRST [#oc6b1b8a] AT FIRST. CLEAR : xxx. ENDAT. [[LOOP AT>ABAP/LOOP]]の一発目だけ実行したいときに。 これだけなら、[[システム変数>ABAP/システム変数]](SY-LOOPCだっけ?)の判定でよい気がする。 *** AT NEW [#s8a4dbe6] AT NEW WERKS. WRITE : WA_MARC-MATNR, WA_MARC-WERKS. ENDAT. キーブレイクしたときに何かしたい場合。 例えば、キーブレイクしたときにだけコードやテキストを書き出す等。 最も利用価値がありながら、油断すると意図しない動きになるので注意すべき命令。 なお、AT NEWを使う際は、指定した項目とそこから左側の項目が判定されるため事前に[[SORT>ABAP/SORT]]する等のケアを忘れずに。 *** END OF xxx [#m5c2ee3d] AT END OF CHARG. WRITE : 'Total', L_AMOUNT. ENDAT. 連続したキーの終わりにだけ何かしたい場合に使用し、AT NEWと同じくらい利用価値が高い。 メリットや注意点はAT NEWと同じだが、最後に処理するだけあって画面や[[テーブル>SAPのオブジェクト/テーブル]]なんかに結果を書き出すことが多いため、意図しない結果になっていても気づきやすいことが多い。とはいえ、注意。 *** AT LAST [#uee45ab7] AT LAST. ULINE. ENDAT. [[LOOP AT>ABAP/LOOP]]の最後の処理だったら[[LOOP AT>ABAP/LOOP]]を抜けた直後でもよい気がするが、仕変を入れる際に「ロジックの追加はココより上に入れるんやで」と明示できたりするのがメリットだろうか?あるいは[[SUM>ABAP/SUM]]する? * その他 [#odda6ec0] 同じATでも、[[AT LINE-SELECTION>ABAP/AT LINE-SELECTION]]、[[AT SELECTION-SCREEN>ABAP/AT SELECTION-SCREEN]]、[[AT USER-COMMAND>ABAP/AT USER-COMMAND]]、[[LOOP AT>ABAP/LOOP]]などについては各ページを参照のこと。 関連する命令には、[[LOOP>ABAP/LOOP]]や[[SUM>ABAP/SUM]]がある。 ~ ~ CENTER:【スポンサードリンク】 #htmlinsert(amazon_book_sap_system_implement) ~ ~ ---- #pcomment(reply)
テキスト整形のルールを表示する