Sap-abap-operators
SAP ABAP-オペレーター
ABAPは、変数を操作するための豊富な演算子セットを提供します。 すべてのABAP演算子は4つのカテゴリに分類されます-
- 算術演算子
- 比較演算子
- ビット演算子 *文字列演算子
算術演算子
算術演算子は、代数で使用されるのと同じ方法で数式で使用されます。 次のリストでは、算術演算子について説明します。 整数変数Aが20を保持し、変数Bが40を保持すると仮定します。
S.No. | Arithmetic Operator & Description |
---|---|
1 |
演算子の両側に値を追加します。 例:+ Bは60を渡します。 |
2 |
− (Subtraction) 左側のオペランドから右側のオペランドを減算します。 例:A-Bは-20になります。 |
3 |
演算子の両側の値を乗算します。 例: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
比較演算子
さまざまなオペランドのさまざまなタイプの比較演算子について説明します。
S.No. | Comparison Operator & Description |
---|---|
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)は真です。 |
注-変数のデータ型または長さが一致しない場合、自動変換が実行されます。 異なるデータ型の2つの値を比較しながら、一方または両方の値に対して自動型調整が実行されます。 変換タイプは、データタイプとデータタイプの優先順位によって決まります。
以下は優先順位です-
- 1つのフィールドがタイプ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. | Bitwise Operator & Description |
---|---|
1 |
16進数のすべてのビットを反対の値に反転する単項演算子。 たとえば、ビットレベル値10101010を持つ16進数にこの演算子を適用します(例: 'AA')は01010101を返します。 |
2 |
BIT-AND この二項演算子は、ブールAND演算子を使用して各フィールドをビットごとに比較します。 |
3 |
BIT-XOR ブールXOR(排他的OR)演算子を使用して、各フィールドをビットごとに比較するバイナリ演算子。 |
4 |
BIT-OR ブールOR演算子を使用してビットごとに各フィールドを比較する二項演算子。 |
たとえば、フィールドAおよびフィールドBに含まれる2ビット値に対してブールAND、OR、またはXOR演算子を適用したときに生成される値を示す真理値表は次のとおりです。
Field A | Field B | AND | OR | XOR |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
文字列演算子
以下は、文字列演算子のリストです-
S.No. | Character String Operator & Description |
---|---|
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.