Sap-abap-macros

提供:Dev Guides
移動先:案内検索

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を作成します-

新しいプログラムZMACRO

以下はコードです-

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