ABAP运算符

来源:互联网 发布:php curl culopt 编辑:程序博客网 时间:2024/05/16 16:10

基本算术运算

运算

用数学表达式的语句

用关键字的语句

加法

<p> = <n> + <m>.

ADD <n> TO <m>.

减法

<p> = <m> - <n>.

SUBTRACT <n> FROM <m>.

乘法

<p> = <m> * <n>.

MULTIPLY <m> BY <n>.

除法

<p> = <m> / <n>.

DIVIDE <m> BY <n>.

整除

<p> = <m> DIV <n>.

---

除法余数

<p> = <m> MOD <n>.

---

求幂

<p> = <m> ** <n>.

---

执行字段串的算术运算

    类似于用 MOVE-CORRESPONDING 语句在字段串之间复制值,可以用以下关键字,执行字段串的算术运算:

    ADD-CORRESPONDING

    SUBTRACT-CORRESPONDING

    MULTIPLY-CORRESPONDING

    DIVIDE-CORRESPONDING

添加字段顺序

    除基本算术运算中所述的基本加法之外,ADD 语句有几个变体,用于添加字段顺序。例如:

语法

ADD <n1> THEN <n2> UNTIL <nz> GIVING <m>.  "添加字段顺序并将结果赋给另一个字段

如果 <n1>、 <n2>、 ... 、 <nz> 是在内存中相同类型和长度的等距字段序列,则进行求和计算并将结果赋给 <m>

语法

ADD <n1> THEN <n2> UNTIL <nz> TO <m>.    "添加字段顺序并将结果添加到另一个字段的内容中

该语句除了将字段总和添加到 <m> 的旧内容中之外,与上面语句的工作方式相同。

所有数值数据类型的函数

以下内部函数使用所有三种数值数据类型(F、I 和 P)作为参数。

函数

结果

ABS

参数的绝对值。

SIGN

参数符号: 1            X > 0

   SIGN( X) =  0      if    X = 0

        -1            X < 0

CEIL

不小于参数的最小整数值。

FLOOR

不大于参数的最大整数值。

TRUNC

参数的整数部分。

FRAC

参数的分数部分。


* / DIV MOD

DATA: pack2 TYPE p DECIMALS 4,
      n TYPE f VALUE '+5.2',
      m TYPE f VALUE '+1.1'.

pack2 = n / m.
WRITE pack2.

pack2 = n DIV m.
WRITE  / pack2.

pack2 = n MOD m.
WRITE / pack2.

ULINE.

* MULTIPLY-CORRESPONDING

DATABEGIN OF rate,
         usa TYPE f VALUE '0.6667',
         frg TYPE f VALUE '1.0',
         aut TYPE f VALUE '7.0',
      END OF rate.

DATABEGIN OF money,
         usa TYPE i VALUE 100,
         frg TYPE i VALUE 200,
         aut TYPE i VALUE 300,
      END OF money.

MULTIPLY-CORRESPONDING money BY rate.

WRITE / money-usa.
WRITE / money-frg.
WRITE / money-aut.

ULINE.

* ADD ...

DATABEGIN OF series,
         n1 TYPE i VALUE 10,
         n2 TYPE i VALUE 20,
         n3 TYPE i VALUE 30,
         n4 TYPE i VALUE 40,
         n5 TYPE i VALUE 50,
         n6 TYPE i VALUE 60,
      END OF series.

DATA sum TYPE i VALUE 100.

ADD series-n1 THEN series-n2 UNTIL series-n5 GIVING sum.
WRITE sum.

ADD series-n2 THEN series-n3 UNTIL series-n6 TO sum.
WRITE / sum.

* numeric datatypes

DATA n2 TYPE p DECIMALS 2.
DATA m2 TYPE p DECIMALS 2 VALUE '-5.55'.

n2 = ABS( m2 ).   WRITE: / 'ABS:  ', n2.
n2 = SIGN( m2 ).  WRITE: / 'SIGN: ', n2.
n2 = CEIL( m2 ).  WRITE: / 'CEIL: ', n2.
n2 = FLOOR( m2 ). WRITE: / 'FLOOR:', n2.
n2 = TRUNC( m2 ). WRITE: / 'TRUNC:', n2.
n2 = FRAC( m2 ).  WRITE: / 'FRAC: ', n2.

ULINE.

* floating points

DATA: result TYPE f,
      pi(10TYPE c VALUE '3.14159265'.

result = COS( pi ).

WRITE result.


输出结果:
          4.7273
          4.0000
          0.8000


        67
       200
     2,100


       150
       350
ABS:               5.55
SIGN:              1.00-
CEIL:              5.00-
FLOOR:             6.00-
TRUNC:             5.00-
FRAC:              0.55-


 -1.0000000000000000E+00