Sap-abap-macros
SAP ABAP-マクロ
プログラムで同じステートメントのセットを複数回再利用したい場合は、それらをマクロに含める必要があります。 たとえば、マクロは、長い計算や複雑なWRITEステートメントの作成に役立ちます。 マクロは、それが定義されているプログラム内でのみ使用できます。 マクロをプログラムで使用する前に、マクロ定義を行う必要があります。
マクロは、プレースホルダーに基づいて設計されています。 プレースホルダーは、C言語のポインターのように機能します。 DEFINE … END-OF-DEFINITIONステートメント内でマクロを定義できます。
以下は、マクロ定義の基本的な構文です-
DEFINE <macro_name>. <statements>
END-OF-DEFINITION.
......
<macro_name> [<param1> <param2>....].
呼び出す前に、最初にマクロを定義する必要があります。 <param1>…。 マクロ定義に含まれるABAPステートメントのプレースホルダー&1 …を置き換えます。
マクロ定義のプレースホルダーの最大数は9です。 つまり、プログラムが実行されると、SAPシステムはマクロを適切なステートメントに置き換え、プレースホルダー&1、&2、…。&9はパラメーターparam1、param2、…. param9に置き換えられます。 別のマクロ内でマクロを呼び出すことはできますが、同じマクロを呼び出すことはできません。
例
トランザクションSE38に進みます。 短いテキストフィールドの説明と、次のスクリーンショットに示すように、タイプやステータスなどの適切な属性とともに、新しいプログラムZMACRO_TESTを作成します-
以下はコードです-
REPORT ZMACRO_TEST.
DEFINE mac_test.
WRITE: 'This is Macro &1'.
END-OF-DEFINITION.
PARAMETERS: s1 type C as checkbox.
PARAMETERS: s2 type C as checkbox.
PARAMETERS: s3 type C as checkbox default 'X'.
START-OF-SELECTION.
IF s1 = 'X'.
mac_test 1. ENDIF.
IF s2 = 'X'.
mac_test 2.
ENDIF.
IF s3 = 'X'.
mac_test 3.
ENDIF.
3つのチェックボックスがあります。 プログラムの実行中に、S2チェックボックスを選択しましょう。
上記のコードは、次の出力を生成します-
A Macro Program
This is Macro 2
すべてのチェックボックスが選択されている場合、コードは次の出力を生成します-
A Macro Program
This is Macro 1 This is Macro 2 This is Macro 3