SAP ABAP 宏

如果我们想在程序中多次重用同一组语句,我们需要将它们包含在宏(Macros)中。例如,宏可用于长时间计算或编写复杂的写入语句。我们只能在定义宏的程序中使用宏。宏定义应在程序中使用宏之前进行。

宏是基于占位符设计的。占位符的工作方式类似于 C 语言中的指针。您可以使用 DEFINE…END-OF-DEFINITION 语句来定义宏。

以下是宏定义的基本语法:

  1. DEFINE <macro_name>. <statements>
  2. END-OF-DEFINITION.
  3. ......
  4. <macro_name> [<param1> <param2>....].

在调用宏之前,必须先定义宏。<param1>…. 替换宏定义中包含的 ABAP 语句中的占位符 &1

宏定义中占位符的最大数目为 9 个。也就是说,在执行程序时,SAP 系统会使用适当的语句和占位符替换宏 &1&2,….&9 替换为参数 param1param2、,…. 我们可以在另一个宏中调用宏,但不能在同一个宏中调用。


实例

转到事务 SE38。创建一个新的程序 ZMACRO_TEST 以及短文本字段中的描述,以及适当的属性,例如类型和状态,如下图所示:

代码如下:

  1. REPORT ZMACRO_TEST.
  2. DEFINE mac_test.
  3. WRITE: 'This is Macro &1'.
  4. END-OF-DEFINITION.
  5. PARAMETERS: s1 type C as checkbox.
  6. PARAMETERS: s2 type C as checkbox.
  7. PARAMETERS: s3 type C as checkbox default 'X'.
  8. START-OF-SELECTION.
  9. IF s1 = 'X'.
  10. mac_test 1. ENDIF.
  11. IF s2 = 'X'.
  12. mac_test 2.
  13. ENDIF.
  14. IF s3 = 'X'.
  15. mac_test 3.
  16. ENDIF.

我们有 3 个复选框。在执行程序时,让我们选中 S2 复选框。

结果如下:

  1. A Macro Program
  2. This is Macro 2

如果选中所有复选框,结果如下:

  1. A Macro Program
  2. This is Macro 1 This is Macro 2 This is Macro 3