
- SAP ABAP 教程
- SAP ABAP - 首頁
- SAP ABAP - 概述
- SAP ABAP - 環境
- SAP ABAP - 螢幕導航
- SAP ABAP - 基本語法
- SAP ABAP - 資料型別
- SAP ABAP - 變數
- SAP ABAP - 常量 & 字面量
- SAP ABAP - 運算子
- SAP ABAP - 迴圈控制
- SAP ABAP - 決策
- SAP ABAP - 字串
- SAP ABAP - 日期 & 時間
- SAP ABAP - 資料格式化
- SAP ABAP - 異常處理
- SAP ABAP - 字典
- SAP ABAP - 資料域
- SAP ABAP - 資料元素
- SAP ABAP - 表
- SAP ABAP - 結構
- SAP ABAP - 檢視
- SAP ABAP - 搜尋幫助
- SAP ABAP - 鎖物件
- SAP ABAP - 模組化
- SAP ABAP - 子程式
- SAP ABAP - 宏
- SAP ABAP - 函式模組
- SAP ABAP - 包含程式
- SAP ABAP - Open SQL 概述
- SAP ABAP - Native SQL 概述
- SAP ABAP - 內部表
- SAP ABAP - 建立內部表
- ABAP - 填充內部表
- SAP ABAP - 複製內部表
- SAP ABAP - 讀取內部表
- SAP ABAP - 刪除內部表
- SAP ABAP - 面向物件
- SAP ABAP - 物件
- SAP ABAP - 類
- SAP ABAP - 繼承
- SAP ABAP - 多型性
- SAP ABAP - 封裝
- SAP ABAP - 介面
- SAP ABAP - 物件事件
- SAP ABAP - 報表程式設計
- SAP ABAP - 對話程式設計
- SAP ABAP - 智慧表單
- SAP ABAP - SAPscript
- SAP ABAP - 使用者出口
- SAP ABAP - 使用者出口
- SAP ABAP - 業務附加介面 (BAdI)
- SAP ABAP - Web Dynpro
- SAP ABAP 有用資源
- SAP ABAP - 問答
- SAP ABAP - 快速指南
- SAP ABAP - 有用資源
- 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
廣告