
- 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 變數都具有特定的型別,該型別確定變數記憶體的大小和佈局;可以儲存在該記憶體中的值的範圍;以及可以應用於變數的操作集。
在使用變數之前,必須先宣告它們。變數宣告的基本形式如下:
DATA <f> TYPE <type> VALUE <val>.
這裡 <f> 指定變數的名稱。變數的名稱最多可以包含 30 個字元。<type> 指定變數的型別。任何具有完全指定的技術屬性的資料型別都稱為 <type>。<val> 指定 <f> 變數的初始值。如果您定義了一個基本固定長度變數,則 DATA 語句會自動使用型別特定的初始值填充變數的值。<val> 的其他可能值為字面量、常量或顯式子句,例如 Is INITIAL。
以下是變數宣告的有效示例。
DATA d1(2) TYPE C. DATA d2 LIKE d1. DATA minimum_value TYPE I VALUE 10.
在上面的程式碼片段中,d1 是 C 型別的變數,d2 是 d1 型別的變數,minimum_value 是 ABAP 整數型別 I 的變數。
本章將解釋 ABAP 中可用的各種變數型別。ABAP 中有三種變數:
- 靜態變數
- 引用變數
- 系統變數
靜態變數
靜態變數在子程式、函式模組和靜態方法中宣告。
生命週期與宣告的上下文相關聯。
使用“CLASS-DATA”語句,您可以在類中宣告變數。
“PARAMETERS”語句可用於宣告與選擇螢幕上的輸入欄位關聯的基本資料物件。
您還可以使用“SELECT-OPTIONS”語句宣告與選擇螢幕上的輸入欄位關聯的內部表。
以下是命名變數時使用的約定:
您不能使用諸如“t”和“,”之類的特殊字元來命名變數。
預定義資料物件的名稱不能更改。
變數的名稱不能與任何 ABAP 關鍵字或子句相同。
變數的名稱必須傳達變數的含義,無需進一步註釋。
連字元保留用於表示結構的元件。因此,您應該避免在變數名稱中使用連字元。
下劃線字元可用於分隔複合詞。
此程式演示瞭如何使用 PARAMETERS 語句宣告變數:
REPORT ZTest123_01. PARAMETERS: NAME(10) TYPE C, CLASS TYPE I, SCORE TYPE P DECIMALS 2, CONNECT TYPE MARA-MATNR.
這裡,NAME 表示 10 個字元的引數,CLASS 指定整數型別引數,其預設大小以位元組為單位,SCORE 表示打包型別引數,其值最多包含兩位小數,CONNECT 指的是 ABAP 字典的 MARA-MATNF 型別。
以上程式碼產生以下輸出:

引用變數
宣告引用變數的語法如下:
DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
REF TO 附加宣告一個引用變數 ref。
REF TO 之後的規範指定引用變數的靜態型別。
靜態型別限制了 <ref> 可以引用的物件集。
引用變數的動態型別是它當前引用的資料型別或類。
靜態型別始終比動態型別更通用或相同。
TYPE 附加用於建立繫結引用型別並作為起始值,並且僅可以在 VALUE 附加之後指定 IS INITIAL。
示例
CLASS C1 DEFINITION. PUBLIC SECTION. DATA Bl TYPE I VALUE 1. ENDCLASS. DATA: Oref TYPE REF TO C1 , Dref1 LIKE REF TO Oref, Dref2 TYPE REF TO I . CREATE OBJECT Oref. GET REFERENCE OF Oref INTO Dref1. CREATE DATA Dref2. Dref2→* = Dref1→*→Bl.
在上面的程式碼片段中,聲明瞭一個物件引用 Oref 和兩個資料引用變數 Dref1 和 Dref2。
兩個資料引用變數都完全型別化,並且可以使用解引用運算子 →* 在運算元位置進行解引用。
系統變數
ABAP 系統變數可從所有 ABAP 程式訪問。
這些欄位實際上是由執行時環境填充的。
這些欄位中的值指示系統在任何給定時間點的狀態。
您可以在 SAP 中的 SYST 表中找到系統變數的完整列表。
SYST 結構的各個欄位可以透過使用“SYST-”或“SY-”來訪問。
示例
REPORT Z_Test123_01. WRITE:/'SY-ABCDE', SY-ABCDE, /'SY-DATUM', SY-DATUM, /'SY-DBSYS', SY-DBSYS, /'SY-HOST ', SY-HOST, /'SY-LANGU', SY-LANGU, /'SY-MANDT', SY-MANDT, /'SY-OPSYS', SY-OPSYS, /'SY-SAPRL', SY-SAPRL, /'SY-SYSID', SY-SYSID, /'SY-TCODE', SY-TCODE, /'SY-UNAME', SY-UNAME, /'SY-UZEIT', SY-UZEIT.
以上程式碼產生以下輸出:
SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ SY-DATUM 12.09.2015 SY-DBSYS ORACLE SY-HOST sapserver SY-LANGU EN SY-MANDT 800 SY-OPSYS Windows NT SY-SAPRL 700 SY-SYSID DMO SY-TCODE SE38 SY-UNAME SAPUSER SY-UZEIT 14:25:48