1. 程式人生 > 其它 >ABAP語法基礎篇(1)——資料型別和物件

ABAP語法基礎篇(1)——資料型別和物件

一 、資料型別和物件

在ABAP中可以使用與標準資料宣告相似的語法處理資料型別,而與資料物件無關。在程式中必須宣告要使用的全部資料物件。宣告過程中,必須給資料物件分配屬性,其中最重要的屬性就是資料型別。

1.1 基本資料型別

資料型別 預設大小 有效大小 初始值 說明
C 1 1 - 65535 SPACE 文字、字元(字母數字字元)
D 8 8 '00000000' 日期(格式: YYYYMMDD )
F 8 8 0 浮點數
I 4 4 0 整型(整數)
N 1 1 - 65535 '00...0' 數字文字
P 8 1 - 16 0 壓縮號
T 6 6 '000000' 時間(格式: HHMMSS )
X 1 1 - 65535 X'00' 十六進位制

對算術運算的非整型結果(如分數)進行四捨五入,而不是截斷。型別 P 資料允許在小數點後有數字。
有效大小可以是從 1 到 16位元組的任何值。將兩個十進位制數字壓縮到一個位元組,而最後一個位元組包含一個數字和符號。在小數點後最多允許14個數字。

1.2 系統定義的資料物件

SPACE 空白字串
SY-SUBRC 系統執行傳回值, 0 表示成功
SY-UNAME 使用者
SY-DATUM 系統日期
SY-UZEIT 系統時間
SY-TCODE 當前執行程式的 Transaction code
SY-INDEX 當前 LOOP 迴圈過的次數
SY-TABIX 當前處理的是 Internal Table (內部表) 的第幾行
SY-TMAXL Internal Table (內部表) 的總行數
SY-SROWS 螢幕總行數
SY-SCOLS 螢幕總列數
SY-VLINE 畫豎線
SY-ULINE 畫橫線
SY-PAGNO 當前頁號
SY-LINSZ 當前報表寬度
SY-LINCT 當前報表長度
SY-LISND 列表索引頁
SY-LISTI 上一個列表的索引
SY-LILLI 絕對列表中選定的行號
SY-CUROW 螢幕上的行

1.3 確定資料物件的屬性

如果要查明資料物件的資料型別,或者要在程式的執行期間使用其屬性,可使用 DESCRIBE語句。語法如下:

DESCRIBE FIELD <f> [LENGTH <l>] [TYPE <t> [COMPONENTS <n>]]  
[OUTPUT-LENGTH <o>] [DECIMALS <d>] 
[EDIT MASK <m>].

將由語句的引數指定的資料物件 的屬性寫入引數後的變數。

DESCRIBE FIELDS 語句具有下列引數:

引數 用途
LENGTH 確定欄位長度
TYPE 確定資料型別
OUTPUT-LENGTH 確定輸出長度
DECIMALS 確定小數位
EDIT MASK 確定轉換例程
1.3.1 確定欄位長度

要確定資料物件的長度 ,利用 DESCRIBE FIELD 語句使用 LENGTH 引數,如下所示:

DESCRIBE FIELD <f> LENGTH <l>.

系統讀取欄位 <f> 的長度,並將值寫入欄位 <l>

1.3.2 確定資料型別

要確定欄位的資料型別 , 利用 DESCRIBE FIELD 語句使用 TYPE 引數,如下所示:

DESCRIBE FIELD <f> TYPE <t> [COMPONENTS <n>].

系統讀取欄位 <f> 的資料型別,然後將值寫入欄位 <t>

除返回預定義資料型別 CDFINPTX 外,該語句還返回:

s 對於帶前導符號的兩位元組整型
b 對於無前導符號的一位元組整型
h 對於內表
c 對於元件中沒有巢狀結構的結構
1.3.31 確定輸出長度

要確定欄位的輸出長度 , 利用 DESCRIBE FIELD 語句使用 OUTPUT-LENGTH引數,如下所示:

DESCRIBE FIELD <f> OUTPUT-LENGTH <o>.

系統讀取欄位 <f> 的輸出長度,並將值寫入欄位 <o>

1.3.4 確定小數位

若要確定型別 P 欄位的小數位的個數,利用 DESCRIBE FIELD 語句使用 DECIMALS引數,如下所示:

DESCRIBE FIELD <f> DECIMALS <d>.

系統讀取欄位 <f> 的小數個數,並將值寫入欄位 <d>

1.3.5 確定轉換例程

要確定 ABAP/4 詞典中某欄位的轉換例程是否存在,如果存在,名稱是什 麼, 利用 DESCRIBE FIELD 語句使用 EDIT MASK 引數,如下所示:

DESCRIBE FIELD <f> EDIT MASK <m>.

如果 ABAP/4 詞典中欄位 <f> 的轉換例程存在,則系統將其寫入欄位 <m>,然後將系統欄位 SY-SUBRC 中的返回程式碼設為 0

可以像下面所顯示的那樣,在 WRITE 語句中將欄位 <m> 直接用作格式模板:

WRITE <f> USING EDIT MASK <m>.

如果欄位 <f> 沒有轉換例程,則系統將返回程式碼設為 4

覺得博主的文章對你有幫助的,動動滑鼠一鍵三連,激勵博主寫出更多精彩文章!