数据对象:
主要指常量及变量,多指变量。
变量定义包含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'.