Introducing ABAP Syntax

Objectives

After completing this lesson, you will be able to:
  • 介绍 ABAP 语法的基础知识
  • 定义数据类型、变量、常量和文字以及链式语句

ABAP 语法的基础

概览

在此模块结束时,初学者将处理 ABAP 语法的基础知识,例如数据类型、变量、常量和文字、链式语句、向源代码添加注释、执行算术计算、使用系统信息、调试程序、使用 ABAP 语言创建 ABAP 列表和处理字符串。

ABAP 语言的基本功能

ABAP 语言由各个句子(语句)组成。需要牢记的 ABAP 语句的重要事项如下:

  • ABAP 代码由单个语句组成
  • 语句中的第一个词称为 ABAP 关键字
  • 每个语句都以句号结束
  • 空格必须分隔两个单词
  • 可以缩进语句,以提高代码的可读性
  • 可能包含附加和操作数(取决于使用的关键字)
  • 可以跨越多行
  • 关键字、附加和操作数可以使用大写或小写
  • ABAP 运行时系统不会区分不同情况。通常使用大写字母和操作数以小写形式编写关键字及其附加内容。

ABAP 中的数据对象

变量、常量和文字

ABAP 知道三种类型的数据对象:变量、常量和文字

ABAP 代码中的数据对象表示程序内存的保留部分。ABAP 知道三种类型的数据对象:变量、常量和文字。

变量
变量是含有可在运行时更改的内容的数据对象。变量由名称标识。该名称还用于在运行时寻址数据对象。ABAP 变量的起始值已明确定义。
常量
常量与变量类似。但是,与变量相反,该值在源代码中硬编码,不得在运行时更改。与变量一样,常量具有可重复使用的名称。
文字

文字的值也在源代码中硬编码。与常量相反,文字没有名称。因此,您无法重复使用文字。仅使用文字指定常量的值和变量的起始值。

始终键入 ABAP 数据对象:每个数据对象都基于确定其可包含的信息的数据类型。ABAP 数据对象的数据类型在整个程序执行过程中保持不变。

变量声明

使用 DATA、TYPE 和 VALUE 关键字(可选)声明变量

ABAP 代码中的变量使用关键字 DATA 声明。

DATA 语句由以下部分组成:

DATA

关键字 DATA 后跟变量的名称。变量名称最大长度为 30 个字符。可以包含字符 A-Z、数字 0 - 9 和下划线字符。名称必须以字母或下划线开头。

类型
变量类型在附加项 TYPE 之后指定。在此示例中,使用内置类型 I(表示整数)和字符串(长度可变的字符串)。
VALUE
附加 VALUE 是可选的,可以使用它来指定变量的起始值。如果缺少 VALUE,则使用取决于变量技术类型的初始值创建变量。

使用数据类型

ABAP 使用 TYPES 关键字或 ABAP 字典支持 13 种内置类型或用户定义的类型

ABAP 提供以下数据类型源:

ABAP 内置(预定义 ABAP 类型)

ABAP 具有一组用于简单数字、字符型和二进制数据对象的预定义数据类型 13。

TYPES 语句

语句 TYPES 允许您定义预定义数据类型,并根据定义的位置在不同位置重复使用这些数据类型。

ABAP 字典
ABAP 字典是 ABAP 资源库的一部分。此外,还管理整个系统中可用的全局数据类型。ABAP 字典类型不仅定义技术属性,还添加语义信息 - 例如标签。ABAP 字典类型在实施用户界面时尤其有用。

ABAP 内置(预定义 ABAP 类型)

内置类型示例

图中列出了一些重要的标准 ABAP 类型(内置数据类型)。ABAP 类型分为完整或不完整的数据类型。完整的数据类型已包含类型特定的固定长度说明。不完整的数据类型具有缺省长度,但允许指定不同的长度。如果是类型 P,还可以指定小数位数。 

完整的 ABAP 类型

TYPE STRING

字符串类型的字段是可变长度的字符型字段。ABAP 运行时系统分配和释放内存以优化字符串变量的管理。您不能直接影响此行为。字符串的最大长度由系统管理员进行的设置控制。但是,在实践中,我们谈论的字符串长度是无限的。

TYPE I

类型为 I 的字段是包含整数的数字字段。系统为此类字段分配 4 个字节(32 位),该字段允许介于 -2^31 和 +2^31 之间的值。

类型 D

类型 D 的字段表示日期。在 ABAP 中,日期的格式始终为 YYYYMMDD(无分隔符)。在用户界面上显示值之前,系统会根据当前区域设置转换此格式。同样,当用户输入日期时,系统会在您开始处理之前将其转换为 ABAP 格式。

类型 T

类型 T 的字段表示时间。在 ABAP 中,其格式为 HHMMSS(24 小时格式无分隔符)。如果当前区域设置使用 12 小时格式,系统将自动转换值。

不完整的 ABAP 类型

类型 C
类型 C 的字段是特定长度的字符型字段。指定长度(以字符为单位);然后,运行时系统会分配双倍字节数来容纳该字段。当固定长度很重要时使用此类型。
类型 N

类型为 N 的字段是特定长度的字符字段,仅包含数字。此字段应包含不希望视为数字的数字序列,并使用数字执行计算 - 例如,可以是员工号或成本中心。

类型 P

类型为 P 的字段(P 代表"压缩数字")是一个字段,其中包含具有指定位数和小数位的数值。此类型用于带小数位的数字或值范围类型 I 不足的数字。

局部类型的使用

使用 TYPES 关键字定义用户定义的类型

示例

Code Snippet
12
TYPES my_type TYPE p LENGTH 3 DECIMALS 2. DATA my_var TYPE my_type.

您可以先使用语句 TYPES 定义类型,而不是直接在 DATA 语句中使用内置类型。 然后可以在 TYPE 附加项之后在 DATA 语句中使用该类型。

全局类型的使用 - ABAP 字典

ABAP 字典中用户定义类型的示例

在 SAP 系统中,有数千个业务实体,例如国家/地区代码、工厂、物料编号、会计年度、成本中心等。使用您刚刚看到的内置 ABAP 类型,可以在每个程序中定义这些实体。但是,这将是劳动密集型和容易出错的。相反,SAP 提供 ABAP 字典、重要数据类型的中央存储以及用于创建数据库表的工具。

在 ABAP 字典中,通过数据元素描述单个业务实体。在示例变量中,变量 airport 是使用数据元素 /DMO/AIRPORT_ID 键入的。

按下 F2 键显示数据类型详细信息时,可以看到,从技术上讲,此类型是长度为 3 的字符。此外,数据元素还提供描述"航班参考场景:机场标识"和长度不同的四个字段标签。

按 F3 键导航到类型定义时,将打开一个新视图,其中包含数据元素的编辑器。

常量和文字

常量声明

可使用 CONSTANTS 关键字定义常量

常量

常量是具有硬编码值的数据对象,在运行时期间不得更改。对常量的任何写入访问都将导致语法错误。

在 ABAP 中,使用关键字 CONSTANTS 声明常量。CONSTANT 语句包含与 DATA 语句相同的部分。唯一的区别在于 VALUE 附加是强制性的。

如果常量的值应为类型特定的初始值,则可以在特殊形式 VALUE IS INITIAL 中使用 VALUE 附加项。对于数字类型,初始值通常为零,字符类型通常为空格。ABAP 中没有空值。

文字声明

ABAP 支持数字、文本和字符串文字

文字

文字是具有硬编码值的匿名数据对象。文字通常用于为常量定义非初始值,并为变量定义非初始起始值。

从技术上讲,可以在代码中的任何位置使用文字。为了支持可读性和可维护性,建议使用常量定义和使用。

ABAP 有三种类型的文字:

  • 数字文字是带或不带符号的整数。数字文字通常具有数据类型 I。如果数据类型 I 的值过大,则使用长度足够且不带小数位的类型 p。
  • 文本文字是一对单引号 (‘) 中的字符类型。
  • 字符串文字的类型为 STRING,并且带有反引号 ( `)。它们应用于为字符串类型的数据对象提供值。

链式语句

链式 TYPES 语句示例

还可以使用 TYPES 语句在 ABAP 代码中定义结构化类型。结构定义以语句 TYPES BEGIN OF <structure type name>.开头,以 TYPES END OF <structure type name>. 在两者之间,命名每个组件并在附加 TYPES 语句中指定其类型。

紧凑形式仅使用关键字 TYPES 一次,后跟冒号 ( :)。BEGIN OF 附加项、END OF 附加项和两者之间的组件定义用逗号分隔。

这称为链式语句。

注意

过去,链语句在 ABAP 中使用了很多。这些天,建议仅组合密切关联的语句。

ABAP 中的注释

使用星号符号的注释示例

注释是添加到程序中以帮助其他人理解代码的解释。注释是编译器或解释器忽略的一个源代码。

在 ABAP 中,有两种不同的方法可以将源代码定义为注释:

  • 第一列中的星号 (*) 将整行标识为注释
  • 双引号 (") 将行的其余部分标识为注释,即右侧的代码