- 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
广告