数据类型和数据对象
- 数据类型
使用types定义,types定义的类型在程序中用于声明常量或者变量。
types定义的是类型不是变量,所以不能直接赋值。
REPORT zsdl2022.
INCLUDE zsy_xy_tcus. "记录程序运行日志
PARAMETERS input(12) TYPE c DEFAULT 'hello world'.
TYPES: BEGIN OF employee,
code(10) TYPE c,
name(10) TYPE c,
END OF employee.
TYPES:address(50) TYPE c.
*&CALL SCREEN 100.
*&SKIP TO LINE 16.
*&POSITION 40.
DATA:emp TYPE employee.
DATA:myaddress TYPE address.
emp-code = '1001'.
emp-name = '张三'.
myaddress = 'this is a address'.
WRITE / emp.
WRITE / myaddress.
-
数据对象(文本、变量、常量)
主要指变量-
变量定义包含name, length, type等,语法如下:
DATA [] type [ value ] [ decimal ]
其中: [] 里的内容表示可选项。<>表示名称
: 变量名称, 最长30个字符, 不可含有 + . , : ( ) 等字符
长度,要用圆括号括起来 如 LINE(20) TYPE C.
:数据类型
: 初始值
: 小数位
DATA:C1 TYPE C, INT1 TYPE I VALUE 1, TEMP TYPE P DECIMAL 2.
声明多个变量时候DATA后面加上冒号,每个声明语句结束后用逗号隔开。
like关键字:用在已有的数据变量,如系统变量DATA:TRANSCODE LIKE SY-TCODE.
-
常量定义使用constants
CONSTANTS<常量名>[<长度> ] TYPE <数据类型> VALUE <默认值>
常量值一旦被定义,即被长期保存在内存,其值无法改变。CONSTANTS PI TYPE P DECIMALS 5 VALUE '3.14159'.
-
系统定义对象
常用系统变量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: 画横线
-
结构(类似Java实体类)
结构体赋值:•可对结构体直接赋值
•相同结构体之间可以使用等号来实现数据的复制
•WRITE Structure Name可输出所有字段,或使用-输出指定字段
•相同结构体之间使用Move……To……进行赋值;
有差异的结构体,可使用MOVE-CORRESSPONDING匹配及赋值相同的字段DATA:BEGIN OF USERDETAIL, SID(10) TYPE C, NAME(20) TYPE C, BIRDATE TYPE D, ADD(50) TYPE C, END OF USERDETAIL. MOVE-CORRESSPONDING USERINF TO USERDETAIL. USERINF-SID='A00001'. USERINF-NAME='JERY'. USERINF-TEL='010-12345678'. USER2=USERINF. WRITE:USER2, / USERINF-SID.
结构体继承:
•参考已存在的结构体创建一个属性相同的新结构体•可在新结构体中增加字段
•定义语句:INCLUDE STRUCTURE
DATA:BEGIN OF EMPLOYEE, INCLUDE STRUCTURE USERINF, DATA:BIRTHDATE TYPE D, ADD(50) TYPE C, END OF EMPLOYEE. MOVE-CORRESSPONDING USERINF TO USERDETAIL.
-