JSRUN 用代码说话

运算符

编辑教程

运算符

ABAP提供了一组丰富的运算符来操纵变量。 所有ABAP运算符分为四类 :

算术运算符
比较运算符
按位运算符
字符串运算符

算术运算符

算术运算符在数学表达式中使用的方式与在代数中使用的方式相同。 以下列表描述了算术运算符。 假设整数变量A保持20并且变量B保持40。

算术运算符 描述
+(添加) 在运算符的两侧添加值。 示例:A + B将给出60。
- (减法) 从左边操作数中减去右边操作数。 示例:A - B将给出-20。
*(乘法) 将运算符两侧的值相乘。 示例:A * B将给出800。
/(除法) 用右边操作数除左边操作数。 示例:B / A将给出2。
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

比较运算符

让我们讨论不同操作数的各种类型的比较运算符。

比较运算符 描述
=(相等测试)。 替代形式是EQ。 检查两个操作数的值是否相等,如果是,则条件为真。 示例(A = B)不为真。
<> (不等式检验)。 替代形式是NE。 检查两个操作数的值是否相等。 如果值不相等,则条件为真。 示例(A<> B)为真。
> (大于测试)。 替代形式是GT。 检查左操作数的值是否大于右操作数的值。 如果是,则条件变为true。 示例(A> B)不是真的。
< (小于测试)。 替代形式是LT。 检查左操作数的值是否小于右操作数的值。 如果是,则条件变为true。 示例(A
> =(大于或等于)替代形式为GE。 检查左操作数的值是否大于或等于右操作数的值。 如果是,则条件变为true。 示例(A> = B)不是真的。
< =(小于或等于测试)。 替代形式是LE。 检查左操作数的值是否小于或等于右操作数的值。 如果是,则条件变为true。 示例(A
a1 BETWEEN a2 AND a3(间隔测试) 检查a1是否在a2和a3之间(包括)。 如果是,则条件变为真。 示例(A BETWEEN B和C)为真。
IS INITIAL 如果变量的内容没有改变,并且它已被自动赋予其初始值,则条件为真。 示例(A IS 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还提供了一系列可以用于构建布尔代数表达式的逐位逻辑运算符。 位运算符可以使用括号等组合在复杂表达式中。

按位运算符 说明
BIT-NOT 一元运算符,将十六进制数中的所有位翻转为相反的值。
例如,将此运算符应用于具有位级值10101010(例如“AA")的十六进制数将给出01010101。
BIT-AND 此二进制运算符使用布尔AND运算符逐位比较每个字段。
BIT-XOR 二进制运算符,使用布尔XOR(异或)运算符逐位比较每个字段。
BIT-OR 二进制运算符,使用布尔OR运算符逐位比较每个字段。

例如,以下是真值表,其示出了当对包含在字段A和字段B中的两个比特值应用布尔AND,OR或XOR运算符时生成的值。

字段A 字段B 要么 XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

字符串运算符

以下是字符串运算符的列表

字符串操作符 说明
CO(仅包含) 检查A是否仅由B中的字符组成。
CN(不包含) 检查A是否包含不在B中的字符。
CA(包含任何) 检查A是否至少包含一个字符B.
NA(不含任何) 检查A是否不包含任何字符B.
CS(包含字符串) 检查A是否包含字符串B.
NS(不包含字符串) 检查A是否不包含字符串B.
CP(包含模式) 它检查A是否包含B中的模式。
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.
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟