- 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 - 开放 SQL 概述
- SAP ABAP - 本机 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 - SAP 脚本
- SAP ABAP - 客户退出
- SAP ABAP - 用户退出
- SAP ABAP - 业务插件
- SAP ABAP - Web Dynpro
- SAP ABAP 有用资源
- SAP ABAP - 问题解答
- SAP ABAP - 快速指南
- SAP ABAP - 有用的资源
- SAP ABAP - 讨论
SAP ABAP - 操作员
ABAP 提供了一组丰富的运算符来操作变量。所有 ABAP 运算符分为四类 -
- 算术运算符
- 比较运算符
- 按位运算符
- 字符串运算符
算术运算符
算术运算符在数学表达式中的使用方式与在代数中的使用方式相同。以下列表描述了算术运算符。假设整数变量 A 为 20,变量 B 为 40。
编号 | 算术运算符及说明 |
---|---|
1 | +(加法) 在运算符两侧添加值。示例:A + B 将得到 60。 |
2 | −(减法) 从左手操作数中减去右手操作数。示例:A − B 将给出 -20。 |
3 | *(乘法) 将运算符两侧的值相乘。示例:A * B 将得到 800。 |
4 | / (分配) 将左手操作数除以右手操作数。示例:B / A 将给出 2。 |
5 | MOD(模数) 将左手操作数除以右手操作数并返回余数。示例: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 | =(平等检验)。另一种形式是 EQ。 检查两个操作数的值是否相等,如果相等则条件为真。示例 (A = B) 不正确。 |
2 | <>(不等式检验)。另一种形式是 NE。 检查两个操作数的值是否相等。如果值不相等,则条件成立。示例 (A <> B) 为真。 |
3 | >(大于测试)。另一种形式是 GT。 检查左操作数的值是否大于右操作数的值。如果是,则条件成立。示例 (A > B) 不正确。 |
4 | <(小于测试)。另一种形式是 LT。 检查左操作数的值是否小于右操作数的值。如果是,则条件成立。示例 (A < B) 为真。 |
5 | >=(大于或等于)替代形式是 GE。 检查左操作数的值是否大于或等于右操作数的值。如果是,则条件成立。示例 (A >= B) 不正确。 |
6 | <=(小于或等于测试)。另一种形式是 LE。 检查左操作数的值是否小于或等于右操作数的值。如果是,则条件成立。示例 (A <= B) 为真。 |
7 | a1 a2 和 a3 之间(区间测试) 检查 a1 是否位于 a2 和 a3 之间(含)。如果是,则条件成立。示例(A BETWEEN B AND C)正确。 |
8 | 是初始的 如果变量的内容未更改并且已自动为其分配初始值,则条件为真。示例 (A IS INITIAL) 不正确 |
9 | 不是初始的 如果变量的内容已更改,则条件变为 true。示例(A 不是首字母)正确。 |
注意- 如果变量的数据类型或长度不匹配,则执行自动转换。在比较不同数据类型的两个值时,对其中一个或两个值执行自动类型调整。转换类型由数据类型和数据类型的优先顺序决定。
以下是优先顺序 -
如果一个字段是类型 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 | 位不 将十六进制数中的所有位翻转为相反值的一元运算符。例如,将此运算符应用于具有位级别值 10101010(例如“AA”)的十六进制数将得到 01010101。 |
2 | 位与 该二元运算符使用布尔 AND 运算符逐位比较每个字段。 |
3 | 位异或 使用布尔 XOR(异或)运算符逐位比较每个字段的二元运算符。 |
4 | 位或 使用布尔 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(仅含有) 检查 A 是否仅由 B 中的字符组成。 |
2 | CN(仅不包含) 检查 A 中是否包含 B 中不存在的字符。 |
3 | CA(包含任何) 检查 A 是否至少包含 B 的一个字符。 |
4 | 不适用(不包含任何) 检查A是否不包含B的任何字符。 |
5 | CS(包含字符串) 检查A中是否包含字符串B。 |
6 | NS(不包含字符串) 检查A中是否不包含字符串B。 |
7 | CP(包含模式) 它检查 A 是否包含 B 中的模式。 |
8 | NP(不包含模式) 它检查 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.