ABAP 基本语法

ABAP 基本语法

ℹ️学习要点
ABAP是一种第四代编程语言,专门为SAP系统设计。了解基本语法是掌握ABAP开发的第一步。

🔤 语句结构

ABAP源程序由注释和ABAP语句组成。ABAP中的每个语句都以关键字开头,以句点(.)结尾,ABAP不区分大小写。

程序开始

程序中的第一个非注释行以单词REPORT开头。报告将始终是创建的任何可执行程序的第一行。

1
2
REPORT [Program_Name].
[Statements…].

示例:

1
REPORT Z_Test123_01.
💡语句要点
  • ABAP编辑器将所有文本转换为大写,除了由单引号包围的文本字符串
  • 与一些较旧的编程语言不同,ABAP不关心语句在一行上开始的位置
  • ABAP对语句的布局没有限制,可以在单个行上放置多个语句,或者单个语句可以跨多个行扩展

基本语句示例

1
2
REPORT Z_Test123_01.
WRITE 'This is ABAP Tutorial'.

🔗 冒号表示法

如果每个语句的开头是相同的,则连续语句可以链接在一起。这时使用冒号(:)运算符和逗号。

常规写法

1
2
3
WRITE 'Hello'.
WRITE 'ABAP'.
WRITE 'World'.

冒号表示法

1
2
3
WRITE:  'Hello',
'ABAP',
'World'.
💥布局灵活性
像任何其他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
2
3
4
REPORT Z_Test123_01.
DATA: W_NUR(10) TYPE N.
MOVE 50 TO W_NUR.
WRITE W_NUR NO-ZERO.

输出结果

1
50
📌对比
没有NO-ZERO命令,输出为:0000000050

📄 空白行

SKIP命令有助于在页面上插入空行。

基本用法

1
2
3
WRITE 'This is the 1st line'.
SKIP.
WRITE 'This is the 2nd line'.

输出:

1
2
3
This is the 1st line

This is the 2nd line

高级用法

1
2
SKIP number_of_lines.  * 插入多个空白行
SKIP TO LINE line_number. * 定位到指定行
💡使用场景
SKIP命令还可以将光标定位在页面上所需的行上。通常,在此命令后发出WRITE语句,将输出放在所需的行上。

➖ 插入线

ULINE命令自动在输出插入一条水平线。

示例

1
2
WRITE 'This is Underlined'.
ULINE.

输出:

1
2
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

💡 最佳实践

  1. 代码格式化:使用适当的缩进来提高代码可读性
  2. 注释规范:关键逻辑处添加注释,说明代码用途
  3. 消息管理:合理使用不同类型的消息,提供良好的用户体验
  4. 错误处理:使用E类型消息阻止不合法操作
  5. 性能考虑:合理使用冒号表示法减少代码冗余