SAP ABAP – 操作员
SAP ABAP – 操作员
ABAP 提供了一组丰富的操作符来操作变量。所有 ABAP 运算符都分为四类 –
- 算术运算符
- 比较运算符
- 按位运算符
- 字符串运算符
算术运算符
算术运算符在数学表达式中的使用方式与它们在代数中的使用方式相同。以下列表描述了算术运算符。假设整数变量 A 为 20,变量 B 为 40。
S.No. | 算术运算符和描述 |
---|---|
1 |
&plus (Addition) 在运算符的任一侧添加值。示例:A &plus B 将给出 60。 |
2 |
− (Subtraction) 从左手操作数中减去右手操作数。示例:A – B 将给出 -20。 |
3 |
* (Multiplication) 将运算符两侧的值相乘。示例:A * B 将给出 800。 |
4 |
/ (Division) 将左手操作数除以右手操作数。示例:B / A 将给出 2。 |
5 |
MOD (Modulus) 将左手操作数除以右手操作数并返回余数。示例:B MOD A 将给出 0。 |
例子
REPORT YS_SEP_08. DATA: A TYPE I VALUE 150, B TYPE I VALUE 50, Result TYPE I. Result = A / B. WRITE / Result.
上面的代码产生以下输出 –
3
比较运算符
让我们讨论不同操作数的各种类型的比较运算符。
S.No. | 比较运算符和描述 |
---|---|
1 |
= (equality test). Alternate form is EQ. 检查两个操作数的值是否相等,如果是,则条件为真。示例 (A = B) 不正确。 |
2 |
<> (Inequality test). Alternate form is NE. 检查两个操作数的值是否相等。如果值不相等,则条件变为真。示例 (A <> B) 为真。 |
3 |
> (Greater than test). Alternate form is GT. 检查左操作数的值是否大于右操作数的值。如果是,则条件变为真。示例 (A > B) 不正确。 |
4 |
< (Less than test). Alternate form is LT. 检查左操作数的值是否小于右操作数的值。如果是,则条件变为真。示例 (A < B) 为真。 |
5 |
>= (Greater than or equals) Alternate form is GE. 检查左操作数的值是否大于或等于右操作数的值。如果是,则条件变为真。示例 (A >= B) 不正确。 |
6 |
<= (Less than or equals test). Alternate form is LE. 检查左操作数的值是否小于或等于右操作数的值。如果是,则条件变为真。示例 (A <= B) 为真。 |
7 |
a1 BETWEEN a2 AND a3 (Interval test) 检查 a1 是否位于 a2 和 a3 之间(含)。如果是,则条件变为真。示例 (A BETWEEN B AND C) 为真。 |
8 |
IS INITIAL 如果变量的内容没有改变并且已自动为其分配初始值,则条件变为真。示例 (A IS INITIAL) 不正确 |
9 |
IS NOT INITIAL 如果变量的内容已更改,则条件变为真。示例 (A IS NOT INITIAL) 为真。 |
注意– 如果变量的数据类型或长度不匹配,则执行自动转换。在比较不同数据类型的两个值时,对其中一个或两个值执行自动类型调整。转换类型由数据类型和数据类型的优先顺序决定。
以下是优先顺序 –
-
如果一个字段的类型为 I,则另一个字段将转换为类型 I。
-
如果一个字段的类型为 P,则另一个字段将转换为类型 P。
-
如果一个字段是D类型,则另一个字段被转换为D类型。但C和N类型没有转换,直接比较。T 型的情况类似。
-
如果一个字段的类型为 N 而另一个字段的类型为 C 或 X,则这两个字段都将转换为类型 P。
-
如果一个字段的类型为 C,另一个字段的类型为 X,则将 X 类型转换为类型 C。
示例 1
REPORT YS_SEP_08. DATA: A TYPE I VALUE 115, B TYPE I VALUE 119. IF A LT B. WRITE: / 'A is less than B'. ENDIF
上面的代码产生以下输出 –
A is less than B
示例 2
REPORT YS_SEP_08. DATA: A TYPE I. IF A IS INITIAL. WRITE: / 'A is assigned'. ENDIF.
上面的代码产生以下输出 –
A is assigned.
按位运算符
ABAP 还提供了一系列按位逻辑运算符,可用于构建布尔代数表达式。可以使用括号等将位运算符组合在复杂的表达式中。
S.No. | 按位运算符和描述 |
---|---|
1 |
BIT-NOT 将十六进制数中的所有位翻转为相反值的一元运算符。例如,将此运算符应用于具有位级别值 10101010(例如“AA”)的十六进制数将得到 01010101。 |
2 |
BIT-AND 此二元运算符使用布尔 AND 运算符逐位比较每个字段。 |
3 |
BIT-XOR 使用布尔 XOR(异或)运算符逐位比较每个字段的二元运算符。 |
4 |
BIT-OR 使用布尔 OR 运算符逐位比较每个字段的二元运算符。 |
例如,以下真值表显示了对字段 A 和字段 B 中包含的两个位值应用布尔 AND、OR 或 XOR 运算符时生成的值。
Field A | 场B | 和 | 或者 | 异或 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
字符串运算符
以下是字符串运算符列表 –
S.No. | 字符串运算符和描述 |
---|---|
1 |
CO (Contains Only) 检查 A 是否仅由 B 中的字符组成。 |
2 |
CN (Not Contains ONLY) 检查 A 是否包含不在 B 中的字符。 |
3 |
CA (Contains ANY) 检查 A 是否至少包含 B 的一个字符。 |
4 |
NA (NOT Contains Any) 检查 A 是否不包含 B 的任何字符。 |
5 |
CS (Contains a String) 检查 A 是否包含字符串 B。 |
6 |
NS (NOT Contains a String) 检查 A 是否不包含字符串 B。 |
7 |
CP (Contains a Pattern) 它检查 A 是否包含 B 中的模式。 |
8 |
NP (NOT Contains a Pattern) 它检查 A 是否不包含 B 中的模式。 |
例子
REPORT YS_SEP_08. DATA: P(10) TYPE C VALUE 'APPLE', Q(10) TYPE C VALUE 'CHAIR'. IF P CA Q. WRITE: / 'P contains at least one character of Q'. ENDIF.
上面的代码产生以下输出 –
P contains at least one character of Q.