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,並在短文字欄位中新增描述,以及適當的屬性,例如型別和狀態,如下面的螢幕截圖所示:

New Program 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 複選框。

Macro Program Checkbox

以上程式碼產生以下輸出:

A Macro Program 
 
This is Macro 2

如果選擇所有複選框,則程式碼會產生以下輸出:

A Macro Program 
 
This is Macro 1 This is Macro 2 This is Macro 3
廣告