数据类型
数据对象的技术特性的定义;
本身不占用内存空间;
可以是系统预定义或者用户自定义;
数据对象
内存变量
指定为某一特定数据类型;
常用的预定义数据类型
文本型© 默认情况下只有1位长度;默认值为空;
日期型(d)
浮点型 (f)
整型(i)
数值(n) 数值所组成的字符串
压缩型§:将两个十进制数字压缩到一个字节;
时间型(t)
总结
1.默认的定义数据类型是CHAR.
2.取值的时候C型默认从左取值,N型从右取,超过定义长度则截断;
3.C类型,可以赋值数值,也可以赋值字符,还可以混合,不过取值时如果椒数值类型靠右取值。
4.日期和时间类型 的变量可进行加减乘除运算。
5.P类型,小数点要使用DECIMAL声音
自定义数据类型
TYPES申明局部数据类型,SE11定义就是全局数据类型.
TYPES是预定义的数据类,不是变量,不能直接赋值。
数据对象
数据对象: 文本,变量,常量
主要指变量
变量在程序运行过程中值会变化
变量
: DATA [] type [value ] [decimal ]
[]表示内容的可选项;
<>表示名称
声明多个变量的时候DATA后面加上冒号,每个声明语句结束 后用逗号隔开。
关键字type和like
变量定义也可以用关键字like.
SYST:系统变量
用法 SY-INDEX:表示当前循环的此数.
常量
(CONSTANTS)
格式 CONSTANTS<常量名>[<长度>] type <数据类型> VALUE <默认值>
常用的系统变量
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:画横线
结构
结检体定义
有结构的变量
程序中用data定义的局部变量
DATA: BEGIN OF
…
…
END OF .
结构体赋值
1.可对结构体直接赋值
2.相同的结构体之间可等号来实现数据复制;
3.相同的结构体之间可以使用MOVE…TO…进行赋值; 有差异的结构体,可以使用MOVE – CORRESSPONDING匹配及赋值相同的字段
4. WRITE STRUCTURE NAME 可输出所有字段;
结构体继承
定义语句:INCLUDE STRCTURE
以下是一个例子:(USERINF就是一个结构)
DATA:BEGIN OF EMPLOYEE,
INCLUDE STRUCTURE USERINF,
DATA:BIRTHDATE TYPE D,
ADD(50) TYPE C,
END OF EMPLOYEE.
数据输出
WRITE
write [/][] [()]资料项
/:换行
POS:屏幕X坐标
(len):显示长度;
生产空白行
SKIP[]
SKIP TO LINE []
以下是例子
REPORT ZJGLTEST2.
INCLUDE <SYMBOL>.
INCLUDE <ICON>.
*----预定义数据类型:变量-------*
DATA LV_C(10) TYPE C VALUE 'Harryjing'.
DATA LV_D TYPE D .
DATA LV_F TYPE F VALUE '5443.7'.
DATA LV_I TYPE I value 123456.
DATA LV_N TYPE N value 123 .
DATA LV_P TYPE P value '123.123' DECIMALS 3.
DATA LV_T TYPE T.
LV_D = SY-DATUM .
LV_D = LV_D + 30.
LV_T = SY-UZEIT.
WRITE: /6'LV_C:',(5)LV_C.
WRITE: /'LV_D:',20 LV_D.
WRITE: /'LV_F:',LV_F.
WRITE: /'LV_I:',LV_I.
WRITE: /'LV_N:',LV_N.
WRITE: /'LV_P:',LV_P.
WRITE: /'LV_T:',LV_T.
WRITE: / SY-ULINE.
*---直定义数据类型---*
*数据元素
TYPES: TY_BU_BNAME(12) TYPE C, "名字
TY_BU_BNAME1 TYPE XUBNAME ," xubname is data elelement
TY_BU_BNAME2 TYPE TY_BU_BNAME.
*结构
TYPES :BEGIN OF TY_USR01,
NAME(10) TYPE C,
AGE TYPE i,
TEL(11) type n,
END OF TY_USR01.
*变量
DATA :LV_BNAME TYPE TY_BU_BNAME ,
LV_BNAME1 TYPE TY_BU_BNAME1 ,
LV_BNAME2 TYPE TY_BU_BNAME2 ,
LV_USR01 TYPE TY_USR01 .
LV_BNAME = '李三'.
LV_BNAME1 = '张四'.
LV_BNAME2 = LV_BNAME.
WRITE:/'TV_BU_BNAME:' ,LV_BNAME.
WRITE:/'TV_BU_BNAME1:' ,LV_BNAME1.
WRITE:/'TV_BU_BNAME2:' ,LV_BNAME2.
WRITE: / SY-ULINE.
LV_USR01-NAME = '张三'.
LV_USR01-AGE = 20 .
LV_USR01-TEL = 123456789.
WRITE:/'TY_USR01-NAME:',lv_USR01-NAME.
WRITE:/'TY_USR01-AGE:',lv_USR01-AGE.
WRITE:/'TY_USR01-TEL:',lv_USR01-TEL.
WRITE: / SY-ULINE.
*结构休变量
DATA :BEGIN OF LS_USR02,
NAME(10) TYPE C,
AGE TYPE i,
TEL(11) type n,
END OF LS_USR02.
LS_USR02 = lv_USR01.
WRITE:/'LS_USR0S-NAME:',LS_USR02-NAME.
WRITE:/'LS_USR02-AGE:',LS_USR02-AGE.
WRITE:/'LS_USR02-TEL:',LS_USR02-TEL.
WRITE: / SY-ULINE.
*结构休继承
DATA : BEGIN OF LS_CUST.
INCLUDE STRUCTURE LS_USR02.
DATA : address(40) type c,
END OF LS_CUST.
MOVE-CORRESPONDING LS_USR02 TO LS_CUST.
LS_CUST-address = '成都人民广场'.
WRITE:/'LS_CUST-NAME:',LS_CUST-NAME.
WRITE:/'LS_CUST-AGE:',LS_CUST-AGE.
WRITE:/'LS_CUST-TEL:',LS_CUST-TEL.
WRITE:/'LS_CUST-address:',LS_CUST-address.
WRITE: / SY-ULINE.
SKIP.
*输出图标和符号*
WRITE:/'Phone Symbol:',sym_phone AS SYMBOL.
WRITE:/'Alarm Icon:', icon_alarm AS icon.
SKIP.
*颜色输出*
DATA col type i VALUE 0.
DO 8 TIMES.
col = sy-index - 1.
FORMAT COLOR = COL.
WRITE : / col COLOR OFF,
'INTENSIFIED ON ' INTENSIFIED ON,
'INTENSIFIED OFF ' INTENSIFIED OFF,
'INVERSE ON ' INVERSE ON.
ENDDO.
总结一: 如果不想别人编辑你的程序,则应该选中这里。
总结二:以下可以实现非关键字的提示;