- 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 - 业务附加功能(Business Add-Ins)
- SAP ABAP - Web Dynpro
- SAP ABAP 有用资源
- SAP ABAP - 问答
- SAP ABAP - 快速指南
- SAP ABAP - 有用资源
- SAP ABAP - 讨论
SAP ABAP - 基本语法
语句
ABAP 源程序由注释和 ABAP 语句组成。每个 ABAP 语句都以一个关键字开头,以句点结尾,并且 ABAP **不**区分大小写。
程序中的第一个非注释行以 REPORT 关键字开头。报表始终是创建的任何可执行程序的第一行。该语句后跟之前创建的程序名称。然后,该行以句点结束。
语法如下:
REPORT [Program_Name]. [Statements…].
这允许语句在编辑器中占用任意多行。例如,REPORT 语句可能如下所示:
REPORT Z_Test123_01.
语句由一个命令以及任何变量和选项组成,以句点结束。只要句点出现在语句的末尾,就不会出现问题。正是这个句点标志着语句的结束位置。
让我们编写代码。
在 REPORT 语句下面的行中,只需键入以下语句:WRITE 'ABAP Tutorial'。
REPORT Z_Test123_01. Write 'This is ABAP Tutorial'.
编写语句时需要考虑的四件事:
WRITE 语句将引号中的内容写入输出窗口。
ABAP 编辑器将所有文本转换为大写,但用单引号括起来的文本字符串除外。
与一些较旧的编程语言不同,ABAP 不关心语句在一行中从何处开始。您可以利用这一点并通过使用缩进表示代码块来提高程序的可读性。
ABAP 对语句的布局没有限制。也就是说,可以在一行上放置多个语句,或者一个语句可以跨越多行。
冒号表示法
如果每个语句的开头相同,则可以将连续的语句链接在一起。这可以通过使用冒号 (:) 运算符和逗号来完成,这些运算符用于终止各个语句,就像句点结束普通语句一样。
以下是一个可以节省一些按键操作的程序示例:
WRITE 'Hello'. WRITE 'ABAP'. WRITE 'World'.
使用冒号表示法,可以将其重写为:
WRITE: 'Hello', 'ABAP', 'World'.
与任何其他 ABAP 语句一样,布局无关紧要。这是一个同样正确的语句:
WRITE: 'Hello', 'ABAP', 'World'.
注释
内联注释可以通过以下两种方法之一在程序中的任何位置声明:
整行注释通过在行的第一个位置放置星号 (*) 来指示,在这种情况下,系统认为整行都是注释。注释不需要以句点结尾,因为它们不能跨越多行:
* This is the comment line
部分行注释通过在语句后输入双引号 (") 来指示。双引号后的所有文本都被系统视为注释。您不需要以句点结束部分行注释,因为它们不能跨越多行:
WRITE 'Hello'. "Here is the partial comment
注意:ABAP 编辑器不会将注释代码大写。
抑制空格
NO-ZERO 命令位于 DATA 语句之后。它会抑制包含空格的数字字段的所有前导零。输出通常更容易让人阅读。
示例
REPORT Z_Test123_01. DATA: W_NUR(10) TYPE N. MOVE 50 TO W_NUR. WRITE W_NUR NO-ZERO.
以上代码产生以下输出:
50
注意:如果没有 NO-ZERO 命令,输出为:0000000050
空行
SKIP 命令有助于在页面上插入空行。
示例
MESSAGE 命令如下所示:
WRITE 'This is the 1st line'. SKIP. WRITE 'This is the 2nd line'.
以上 MESSAGE 命令产生以下输出:
This is the 1st line This is the 2nd line
我们可以使用 SKIP 命令插入多行空行。
SKIP number_of_lines.
输出将是空行数定义的若干行空行。SKIP 命令还可以将光标定位在页面上的所需行上。
SKIP TO LINE line_number.
此命令用于动态地向上和向下移动页面上的光标。通常,在此命令之后会出现 WRITE 语句以在该所需行上放置输出。
插入线条
ULINE 命令会在输出中自动插入一条横线。也可以控制线条的位置和长度。语法非常简单:
ULINE.
示例
MESSAGE 命令如下所示:
WRITE 'This is Underlined'. ULINE.
以上代码产生以下输出:
This is Underlined (and a horizontal line below this).
消息
MESSAGE 命令显示由程序开头 REPORT 语句中指定的 message ID 定义的消息。message ID 是一个 2 个字符的代码,用于定义程序在使用 MESSAGE 命令时将访问的 1000 条消息集中哪一组。
消息编号从 000 到 999。每个编号都关联一个最多 80 个字符的消息文本。当调用消息编号时,将显示相应的文本。
以下是可与 MESSAGE 命令一起使用的字符:
消息 | 类型 | 后果 |
---|---|---|
E | 错误 | 消息出现,应用程序在其当前点停止。如果程序在后台模式下运行,则作业将被取消,并且消息将记录在作业日志中。 |
W | 警告 | 消息出现,用户必须按 Enter 键才能使应用程序继续。在后台模式下,消息将记录在作业日志中。 |
I | 信息 | 一个弹出窗口打开,显示消息文本,用户必须按 Enter 键才能继续。在后台模式下,消息将记录在作业日志中。 |
A | 异常结束 | 此消息类取消用户当前正在使用的交易。 |
S | 成功 | 这在屏幕底部提供一条信息消息。显示的信息本质上是积极的,仅用于用户反馈。消息不会以任何方式妨碍程序。 |
X | 中止 | 此消息会中止程序并生成 ABAP 短转储。 |
错误消息通常用于阻止用户执行他们不应该执行的操作。警告消息通常用于提醒用户其操作的后果。信息消息向用户提供有用的信息。
示例
当我们为消息 ID AB 创建消息时,MESSAGE 命令 - MESSAGE E011 会产生以下输出:
EAB011 This report does not support sub-number summarization.