定义语法
DEFINE macro.
... &1 ... &9 ...
END-OF-DEFINITION.
调用语法:
macro [p1 p2 ... ].
最多时能有9参数
例子:
DATA: result TYPE i,
n1 TYPE i VALUE 5,
n2 TYPE i VALUE 6.
DEFINE operation.
result = &1 &2 &3. *&1 &2 &3是参数
output &1 &2 &3 result.
END-OF-DEFINITION. * operation是定义的宏的名称
DEFINE output.
write: / 'The result of &1 &2 &3 is', &4.
END-OF-DEFINITION.
operation 4 + 3.
operation 2 ** 7.
operation n2 - n1.
Notes:
1,与子程序不同的是,宏通过&N接收传入参数,不需要定义接收参数的类型及格式。
宏只能被本程序中定义于宏后面的语句所调用,宏一般定义于程序最开始,而子程序则可以放在程序中的任意位置。
2, 以前,若叙述的宏在当前程序中未定义,只会在用TYPE-POOLS语句加载的的Type groups中进行搜索。
但现在会在所有可用的Type groups中搜索。
3,若ABAP编译器在当前程式或可用的Type groups中都未搜到该叙述的宏,那么它会搜索TRMAC表。
TRMAC表中的宏跟Type groups中命名规则不同,therefore nothing should be hidden。