數據對象:
主要指常量及變量,多指變量。
變量定義包含name, length, type等,語法如下:
DATA <name> [<length>] type <type>[ value <value>] [ decimal <decimals>]
其中: [] 里的內容表示可選項。<>表示名稱
<name>: 變量名稱, 最長30個字符, 不可含有 + . , : ( ) 等字符
<length>長度,要用圓括號括起來 如 LINE(20) TYPE C.
<type>:數據類型
<value>: 初始值
<decimals>: 小數位
TYPES: BEGIN OF TY_DATA, a(10) TYPE C, b(10) TYPE C, c(10) TYPE C, END OF TY_DATA. TYPES: DD(10) TYPE C. DATA: E TYPE DD. DATA:F TYPE TY_DATA. F-A = '111'. F-B = '121'. F-C = '114'. E = '2223'. WRITE:/ F ,E. DATA A1(10) TYPE C VALUE '3'. WRITE A1. DATA: B1(10) TYPE P VALUE '22' DECIMALS 5, C1(10) TYPE I VALUE '45'. WRITE:/ B1,C1.
一般情況下type與like可以互用,區別是type后面可以接數據類型,like不可以,like后面需要接系統變量。
DATA: A11 TYPE AUFK-AUFNR VALUE '233333'. DATA: B11 LIKE AUFK-AUFNR VALUE '333343'. DATA: C11 LIKE I VALUE '3'. "會報錯: 字段 "I" 未知。它既不在其中一個指定表中,也沒有通過 "DATA" WRITE:/ A11,B11.
常量定義使用 CONSTANTS
CONSTANTS<常量名>[<長度> ] TYPE <數據類型> VALUE <默認值>
CONSTANTS A111 TYPE P DECIMALS 3 VALUE '3'. WRITE A111.
以下是常用的系統變量:
SY-SUBRC : 系統執行某指令后,表示執行成功與否的變量,'0' 表示成功
SY-UNAME: 當前使用者登入SAP的USERNAME;
SY-DATUM: 當前系統日期;
SY-UZEIT: 當前系統時間;
SY-TCODE: 當前執行程序的Transaction code
SY-INDEX : 當前LOOP循環過的次數
SY-TABIX: 當前處理的是internal table 的第幾筆
SY-MANDT: CLIENT(客戶端編號) NUMBER
SY-VLINE: 畫豎線
SY-ULINE: 畫橫線
系統變量的定義在結構SYST里
直接定義數據結構。
DATA :BEGIN OF F11, A123(10) TYPE C VALUE '222', A1233(10) TYPE C VALUE '333', A1234(10) TYPE C VALUE '444', END OF F11. WRITE:/ F11-A123,F11-A1233,F11-A1234. WRITE:/ F11.
結構繼承的使用
TYPES: BEGIN OF TY_DATA, a(10) TYPE C, b(10) TYPE C, c(10) TYPE C, END OF TY_DATA. DATA :BEGIN OF F11, A123(10) TYPE C VALUE '222', A1233(10) TYPE C VALUE '333', A1234(10) TYPE C VALUE '444', END OF F11. DATA BEGIN OF F111. INCLUDE TYPE ty_data."將結構類型包括進來,用於TYPES定義的 DATA END OF F111. DATA: BEGIN OF F1111. INCLUDE STRUCTURE F11."將結構對象包括進來,用於data定義的 DATA: END OF F1111. F111-A = '11122'. F1111-A123 = '332'.