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.