ABAP 基本语法
ABAP 基本语法
ℹ️学习要点
ABAP是一种第四代编程语言,专门为SAP系统设计。了解基本语法是掌握ABAP开发的第一步。
🔤 语句结构
ABAP源程序由注释和ABAP语句组成。ABAP中的每个语句都以关键字开头,以句点(.)结尾,ABAP不区分大小写。
程序开始
程序中的第一个非注释行以单词REPORT开头。报告将始终是创建的任何可执行程序的第一行。
1 | REPORT [Program_Name]. |
示例:
1 | REPORT Z_Test123_01. |
💡语句要点
- ABAP编辑器将所有文本转换为大写,除了由单引号包围的文本字符串
- 与一些较旧的编程语言不同,ABAP不关心语句在一行上开始的位置
- ABAP对语句的布局没有限制,可以在单个行上放置多个语句,或者单个语句可以跨多个行扩展
基本语句示例
1 | REPORT Z_Test123_01. |
🔗 冒号表示法
如果每个语句的开头是相同的,则连续语句可以链接在一起。这时使用冒号(:)运算符和逗号。
常规写法
1 | WRITE 'Hello'. |
冒号表示法
1 | WRITE: 'Hello', |
💥布局灵活性
像任何其他ABAP语句,布局没有关系。以下是同样正确的声明:
1 | WRITE: 'Hello', 'ABAP', 'World'. |
💬 注释
全行注释
通过在行的第一个位置放置星号(*)来指示全行注释。
1 | * This is the comment line |
部分行注释
通过在语句之后输入双引号(")来表示部分行注释。
1 | WRITE 'Hello'. "Here is the partial comment |
⚠️注意事项
注释代码未由ABAP编辑器大写。
🚫 抑制空白
NO-ZERO命令在DATA语句之后。它抑制包含空格的数字字段的所有前导零。
示例代码
1 | REPORT Z_Test123_01. |
输出结果
1 | 50 |
📌对比
没有NO-ZERO命令,输出为:
0000000050📄 空白行
SKIP命令有助于在页面上插入空行。
基本用法
1 | WRITE 'This is the 1st line'. |
输出:
1 | This is the 1st line |
高级用法
1 | SKIP number_of_lines. * 插入多个空白行 |
💡使用场景
SKIP命令还可以将光标定位在页面上所需的行上。通常,在此命令后发出WRITE语句,将输出放在所需的行上。
➖ 插入线
ULINE命令自动在输出插入一条水平线。
示例
1 | WRITE 'This is Underlined'. |
输出:
1 | This is Underlined |
📨 消息系统
MESSAGE命令显示由程序开始处REPORT语句中指定的消息ID定义的消息。消息ID是一个2字符代码,用于定义在使用MESSAGE命令时程序将访问的1000个消息的集合。
消息类型
| 信息 | 类型 | 后果 |
|---|---|---|
| E | Error | 消息出现,应用程序在当前点暂停。如果程序在后台模式下运行,则作业将被取消,并且消息将记录在作业日志中。 |
| W | Warning | 将出现该消息,用户必须按Enter键才能继续应用程序。在后台模式下,消息将记录在作业日志中。 |
| I | Information | 将打开一个弹出窗口,其中包含消息文本,用户必须按Enter键才能继续。在后台模式下,消息将记录在作业日志中。 |
| A | Abend | 此消息类将取消用户当前正在使用的事务。 |
| S | Success | 这会在屏幕底部提供一条信息性消息。显示的信息是正性的,它只是为用户反馈。该消息不以任何方式阻碍程序。 |
| X | Abort | 此消息中止程序并生成ABAP短转储。 |
示例
1 | MESSAGE E011. |
输出:
1 | EAB011 This report does not support sub-number summarization. |
📌消息使用建议
- 错误消息(E):通常用于阻止用户做不应该做的事情
- 警告消息(W):通常用于提醒用户他们的行动的后果
- 信息消息(I):给用户有用的信息
🔄 ABAP基本语句流程图
graph TD
A[程序开始] --> B[REPORT语句]
B --> C{是否有语句?}
C -->|是| D[执行语句]
C -->|否| E[程序结束]
D --> F{是否需要输出?}
F -->|是| G[使用WRITE输出]
F -->|否| C
G --> H{是否需要格式化?}
H -->|是| I[使用SKIP/ULINE格式化]
H -->|否| C
💡 最佳实践
- 代码格式化:使用适当的缩进来提高代码可读性
- 注释规范:关键逻辑处添加注释,说明代码用途
- 消息管理:合理使用不同类型的消息,提供良好的用户体验
- 错误处理:使用E类型消息阻止不合法操作
- 性能考虑:合理使用冒号表示法减少代码冗余