4.2 SE38数据对象
数据对象是内存变量,被指定为某一特定的数据类型。数据对象可以是文本,变量或常量,主要指变量,变量在程序运行过程中值会发生变化。
4.2.1 用TYPE定义变量
变量定义包含: 名称,长度,类型,赋值,小数位
语法结构: DATA<名称> [LENGTH<长度>] TYPE<类型> [VALUE<赋值>] [DECIMAL<小数位>]
如果声明单个数据对象,DATA后面不需要添加冒号
如果声明多个数据对象,DATA后面需要添加冒号
备注:绿色必填 黄色可选
DATA+TYPE语法结构如下:
DATA: | name(10) | TYPE c, | “学生姓名 |
age(2) | TYPE i VALUE 1, | “学生年龄 | |
score(3) | TYPE p DECIMAL 2. | “学生分数 |
4.2.2 用LIKE定义变量
TYPE和LIKE的区别:
LIKE用在已有值的数据类型,如系统变量,而TYPE则用在自定义数据类型上。
变量定义包含: 名称,长度,对象,赋值,小数位
语法结构: DATA<名称> [LENGTH<长度>] LIKE<对象> [VALUE<赋值>] [DECIMAL<小数位>]
如果声明单个数据对象,DATA后面不需要添加冒号
如果声明多个数据对象,DATA后面需要添加冒号
备注:绿色必填 黄色可选
DATA+LIKE语法结构如下:
DATA: | tcode | LIKE sy-tcode, | “系统变量-事务码 |
date | LIKE sy-datum, | “系统变量-日期 | |
time | LIKE sy-uzeit. | “系统变量-时间 |
4.2.3 用CONSTANTS定义常量
常量值一旦被定义,将会长期保存在内存中,其值无法改变
变量定义包含: 名称,长度,数据类型,赋值
语法结构: CONSTANTS<名称> [LENGTH<长度>] TYPE<数据类型> [VALUE<赋值>]
备注:绿色必填 黄色可选
CONSTANTS语法结构如下:
CONSTANTS | pai | TYPE p | DECIMALS 7 | VALUE ‘3.1415926’. | “π常量值 |
4.2.4 常用的系统变量
系统变量定义在结构SYST里,可以直接使用。
常见的系统变量如下:
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: 画横线
4.2.5 定义结构体
结构体是指有结构的变量,程序中用DATA定义局部变量。
DATA: | BEGIN OF studentinfo1, | “学生信息1-开始 | |
id(10) | TYPE c, | “学生编号1 | |
name(10) | TYPE c, | “学生姓名1 | |
gender(2) | TYPE c, | “学生性别1 | |
age(2) | TYPE c, | “学生年龄1 | |
class(10) | TYPE c, | “学生班级1 | |
telephone(11) | TYPE c, | “学生电话1 | |
END OF studentinfo1. | “学生信息1-结束 |
DATA: | student_class1 | LIKE student info. | “LIKE??? |
4.2.6 结构体赋值
可以直接给结构体进行赋值,可以通过如下途径进行赋值:
方法1:相同的结构体之间可以使用等号(=)来实现数据的赋值。
方法2:相同的结构体之间可以使用MOVE …TO…来实现数据的赋值。
方法3:相同的或不相同的结构体之间都可以使用MOVE-CORRESPONDING来实现数据的赋值。
4.2.7 结构体继承
结构体继承是参考已存在的结构体创建一个属性相同的新结构体,可在新结构体中增加字段。
语句:INCLUDE STRUCTURE
2021年9月8日 写于芜湖