SAPABAP-オペレーター

ABAPは、変数を操作するための豊富な演算子セットを提供します。すべてのABAPオペレーターは、4つのカテゴリーに分類されます-

  • 算術演算子
  • 比較演算子
  • ビット演算子
  • 文字列演算子

算術演算子

算術演算子は、代数で使用されるのと同じ方法で数式で使用されます。次のリストは、算術演算子について説明しています。整数変数Aが20を保持し、変数Bが40を保持するとします。

S.No. 算術演算子と説明
1

+ (Addition)

演算子のいずれかの側に値を追加します。例:A + Bは60になります。

2

− (Subtraction)

左側のオペランドから右側のオペランドを減算します。例:A −Bは-20を与えます。

3

* (Multiplication)

演算子のいずれかの側で値を乗算します。例:A * Bは800になります。

4

/ (Division)

左側のオペランドを右側のオペランドで除算します。例:B / Aは2を与えます。

5

MOD (Modulus)

左側のオペランドを右側のオペランドで除算し、余りを返します。例:B MODAは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

比較演算子

さまざまなオペランドのさまざまなタイプの比較演算子について説明しましょう。

S.No. 比較演算子と説明
1

= (equality test). Alternate form is EQ.

2つのオペランドの値が等しいかどうかをチェックし、等しい場合は条件が真になります。例(A = B)は正しくありません。

2

<> (Inequality test). Alternate form is NE.

2つのオペランドの値が等しいかどうかをチェックします。値が等しくない場合、条件は真になります。例(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

変数の内容が変更された場合、条件は真になります。例(A IS NOT INITIAL)は真です。

Note−変数のデータ型または長さが一致しない場合、自動変換が実行されます。異なるデータ型の2つの値を比較しながら、一方または両方の値に対して自動型調整が実行されます。変換タイプは、データタイプとデータタイプの優先順位によって決定されます。

以下は優先順位です-

  • 一方のフィールドがタイプ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は、ブール代数式の作成に使用できる一連のビット単位の論理演算子も提供します。ビット単位の演算子は、括弧などを使用して複雑な式に組み合わせることができます。

S.No. ビットごとの演算子と説明
1

BIT-NOT

16進数のすべてのビットを反対の値に反転する単項演算子。たとえば、この演算子をビットレベル値10101010(たとえば「AA」)の16進数に適用すると、01010101が得られます。

2

BIT-AND

この二項演算子は、ブールAND演算子を使用して各フィールドをビットごとに比較します。

3

BIT-XOR

ブールXOR(排他的論理和)演算子を使用して各フィールドをビットごとに比較する二項演算子。

4

BIT-OR

ブールOR演算子を使用して各フィールドをビットごとに比較する二項演算子。

たとえば、以下は、フィールドAとフィールドBに含まれる2つのビット値に対してブール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

文字列演算子

以下は文字列演算子のリストです-

S.No. 文字列演算子と説明
1

CO (Contains Only)

AがBの文字だけで構成されているかどうかを確認します。

2

CN (Not Contains ONLY)

AにBにない文字が含まれているかどうかを確認します。

3

CA (Contains ANY)

AにBの文字が少なくとも1つ含まれているかどうかを確認します。

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.