SAP ABAP – 宏
SAP ABAP – 宏
如果我们想在一个程序中多次重用同一组语句,我们需要将它们包含在一个宏中。例如,宏可用于长计算或编写复杂的 WRITE 语句。我们只能在定义它的程序中使用宏。宏定义应在程序中使用宏之前进行。
宏是基于占位符设计的。占位符的作用类似于 C 语言中的指针。您可以在 DEFINE…END-OF-DEFINITION 语句中定义宏。
以下是宏定义的基本语法 –
DEFINE <macro_name>. <statements> END-OF-DEFINITION. ...... <macro_name> [<param1> <param2>....].
需要先定义一个宏,然后再调用它。<param1>…. 替换宏定义中包含的 ABAP 语句中的占位符 &1…。
宏定义中占位符的最大数量为九个。也就是说,当程序执行时,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