SAP ABAP - 運算子



ABAP 提供了一套豐富的運算子來操作變數。所有 ABAP 運算子分為四類:

  • 算術運算子
  • 比較運算子
  • 位運算子
  • 字元字串運算子

算術運算子

算術運算子在數學表示式中的使用方式與代數中的使用方式相同。以下列表描述了算術運算子。假設整數變數 A 為 20,變數 B 為 40。

序號 算術運算子及描述
1

+ (加法)

將運算子兩側的值相加。例如:A + B 將得到 60。

2

− (減法)

從左運算元中減去右運算元。例如:A − B 將得到 -20。

3

* (乘法)

將運算子兩側的值相乘。例如:A * B 將得到 800。

4

/ (除法)

將左運算元除以右運算元。例如:B / A 將得到 2。

5

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

比較運算子

讓我們討論不同運算元的各種型別的比較運算子。

序號 比較運算子及描述
1

= (相等性測試)。替代形式為 EQ。

檢查兩個運算元的值是否相等,如果相等則條件為真。例如 (A = B) 不為真。

2

<> (不等性測試)。替代形式為 NE。

檢查兩個運算元的值是否相等。如果值不相等,則條件為真。例如 (A <> B) 為真。

3

> (大於測試)。替代形式為 GT。

檢查左運算元的值是否大於右運算元的值。如果是,則條件為真。例如 (A > B) 不為真。

4

< (小於測試)。替代形式為 LT。

檢查左運算元的值是否小於右運算元的值。如果是,則條件為真。例如 (A < B) 為真。

5

>= (大於或等於)。替代形式為 GE。

檢查左運算元的值是否大於或等於右運算元的值。如果是,則條件為真。例如 (A >= B) 不為真。

6

<= (小於或等於測試)。替代形式為 LE。

檢查左運算元的值是否小於或等於右運算元的值。如果是,則條件為真。例如 (A <= B) 為真。

7

a1 BETWEEN a2 AND a3 (區間測試)

檢查 a1 是否位於 a2 和 a3 之間(包含)。如果是,則條件為真。例如 (A BETWEEN B AND C) 為真。

8

IS INITIAL

如果變數的內容未更改且已自動分配其初始值,則條件為真。例如 (A IS INITIAL) 不為真。

9

IS NOT 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 還提供了一系列位邏輯運算子,可用於構建布林代數表示式。位運算子可以使用括號等組合成複雜的表示式。

序號 位運算子及描述
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 AND OR XOR
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

字元字串運算子

以下列出了字元字串運算子:

序號 字元字串運算子及描述
1

CO (僅包含)

檢查 A 是否僅由 B 中的字元組成。

2

CN (不包含僅)

檢查 A 是否包含不在 B 中的字元。

3

CA (包含任何)

檢查 A 是否至少包含 B 的一個字元。

4

NA (不包含任何)

檢查 A 是否不包含 B 的任何字元。

5

CS (包含字串)

檢查 A 是否包含字元字串 B。

6

NS (不包含字串)

檢查 A 是否不包含字元字串 B。

7

CP (包含模式)

它檢查 A 是否包含 B 中的模式。

8

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.
廣告