インフリー技術情報発信ブログ

ERP(SAP)導入コンサルティング、ABAP開発、ホームページ制作、WEBシステム構築などを手掛ける、株式会社インフリーです。

マクロ

今回は、マクロについてです。

マクロは実際のアドオン開発では、ほとんど使用しません。
また、使用しないことをお勧めします。

では、なぜ今回取り上げるかというと、恐らくABAP開発に携わっている方は、
標準プログラムをデバッグで追う」 という作業をしたことがあるはずです。
標準プログラムでは、たまに使われている技術であるため、取り上げることにしました。

 

マクロは、以下のように定義します。
○マクロ定義 
DEFINE append_table.
    &2-a = &3.
    &2-b = &4.
    append &2 to &1.
END-OF-DEFINETION. 

上のソースコードは、
1行目    マクロ「append_table」の定義開始
2行目    作業領域「&2」の項目Aに値「&3」を設定
3行目    作業領域「&2」の項目Aに値「&4」を設定
4行目    内部テーブル「&1」に 作業領域「&2」を追加
5行目    マクロ定義終了

となります。

このマクロを呼びだすためには、以下のように記述します。



TYPES: BEGIN OF typ,
                a TYPE c, 
                b TYPE c,
            END OF typ. 
DATA: itab TYPE STANDARD TABLE OF typ,    "内部テーブル
           ha   TYPE typ.                                      "作業領域
DATA: w_1 TYPE c.

    w_1  =  "A".

*   マクロ呼び出し
    APPEND_TABLE itab ha "B" w_1.

一番最後の行がマクロを呼び出している命令になります。
このとき、マクロ「append_table」の後ろに続いている
「itab」「ha」「"B"」「w_1」がそれぞれ「&1」「&2」「&3」「&4」と順に
置換され、実行されます。
この「&1」「&2」はプレースホルダと呼ばれ、「&1」~「&9」まで使用可能です。

このように、パッと見た感じでは、サブルーチンのように使えそうと思われる方もいると思いますが、
マクロには、以下の重大な欠点があります。
 
マクロ内部処理をデバッグできません」 

つまり、マクロ内部でコーディングミスがあっても、デバッグで確認できず、
原因の特定が難しくなります。
このため、「マクロ内処理は数行程度に とどめて、頻繁に使用しないでください」と
ABAP_HELPに書かれているほどなのです。

今回のマクロについては、以上です。 

インフリー技術情報発信ブログ © 2013 Frontier Theme