
- SAP ABAP 教程
- SAP ABAP - 首頁
- SAP ABAP - 概述
- SAP ABAP - 環境
- SAP ABAP - 螢幕導航
- SAP ABAP - 基本語法
- SAP ABAP - 資料型別
- SAP ABAP - 變數
- SAP ABAP - 常量和字面量
- SAP ABAP - 運算子
- SAP ABAP - 迴圈控制
- SAP ABAP - 決策
- SAP ABAP - 字串
- SAP ABAP - 日期和時間
- SAP ABAP - 資料格式化
- SAP ABAP - 異常處理
- SAP ABAP - 字典
- SAP ABAP - 域
- SAP ABAP - 資料元素
- SAP ABAP - 表
- SAP ABAP - 結構
- SAP ABAP - 檢視
- SAP ABAP - 搜尋幫助
- SAP ABAP - 鎖物件
- SAP ABAP - 模組化
- SAP ABAP - 子程式
- SAP ABAP - 宏
- SAP ABAP - 函式模組
- SAP ABAP - 包含程式
- SAP ABAP - Open SQL 概述
- SAP ABAP - Native SQL 概述
- SAP ABAP - 內部表
- SAP ABAP - 建立內部表
- ABAP - 填充內部表
- SAP ABAP - 複製內部表
- SAP ABAP - 讀取內部表
- SAP ABAP - 刪除內部表
- SAP ABAP - 面向物件
- SAP ABAP - 物件
- SAP ABAP - 類
- SAP ABAP - 繼承
- SAP ABAP - 多型
- SAP ABAP - 封裝
- SAP ABAP - 介面
- SAP ABAP - 物件事件
- SAP ABAP - 報表程式設計
- SAP ABAP - 對話程式設計
- SAP ABAP - 智慧表單
- SAP ABAP - SAPscript
- SAP ABAP - 客戶出口
- SAP ABAP - 使用者出口
- SAP ABAP - 業務附加功能
- SAP ABAP - Web Dynpro
- SAP ABAP 有用資源
- SAP ABAP - 問答
- SAP ABAP - 快速指南
- SAP ABAP - 有用資源
- SAP ABAP - 討論
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.