SAP ABAP - 操作符
-
简述
ABAP 提供了一组丰富的运算符来操作变量。所有 ABAP 运算符分为四类 -- 算术运算符
- 比较运算符
- 按位运算符
- 字符串运算符
-
算术运算符
算术运算符在数学表达式中的使用方式与在代数中的使用方式相同。以下列表描述了算术运算符。假设整数变量 A 为 20,变量 B 为 40。序号 算术运算符及说明 1 + (Addition)在运算符两侧添加值。示例:A + 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
-
比较运算符
让我们讨论不同操作数的各种类型的比较运算符。序号 比较运算符和描述 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如果变量的内容已更改,则条件变为 true。示例(A 不是首字母)正确。Note− 如果变量的数据类型或长度不匹配,则执行自动转换。在比较不同数据类型的两个值时,对其中一个或两个值执行自动类型调整。转换类型由数据类型和数据类型的优先顺序决定。以下是优先顺序 --
如果一个字段是类型 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还提供了一系列可用于构建布尔代数表达式的按位逻辑运算符。位运算符可以使用括号等组合在复杂的表达式中。序号 位运算符及说明 1 BIT-NOT将十六进制数中的所有位翻转为相反值的一元运算符。例如,将此运算符应用于具有位级别值 10101010(例如“AA”)的十六进制数将得到 01010101。2 BIT-AND该二元运算符使用布尔 AND 运算符逐位比较每个字段。3 BIT-XOR使用布尔 XOR(异或)运算符逐位比较每个字段的二元运算符。4 BIT-OR使用布尔 OR 运算符逐位比较每个字段的二元运算符。例如,下面的真值表显示了对字段 A 和字段 B 中包含的两位值应用布尔 AND、OR 或 XOR 运算符时生成的值。场A B区 和 或者 自由的 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 -
字符串运算符
以下是字符串运算符的列表 -序号 字符串运算符及说明 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.