SAP ABAP - 宏

  • 简述

    如果我们想在程序中多次重用同一组语句,则需要将它们包含在宏中。例如,宏对于长时间计算或编写复杂的 WRITE 语句非常有用。我们只能在定义宏的程序中使用宏。宏定义应该在程序中使用宏之前进行。
    宏是基于占位符设计的。占位符的作用类似于 C 语言中的指针。您可以在 DEFINE...END-OF-DEFINITION 语句中定义宏。
    以下是宏定义的基本语法 -
    
    DEFINE <macro_name>. <statements> 
    END-OF-DEFINITION. 
       ...... 
      
       <macro_name> [<param1> <param2>....].
    
    在调用宏之前需要先定义它。<参数1>...。替换宏定义中包含的 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