1.定义一个结构体
DATA: BEGIN OF LS_MASTNR,
MATNR TYPE MATNR,
MAKTX TYPE MAKTX,
END OF LS_MATNR.
2.定义一个包含表头的内表
DATA: BEGIN OF LS_MAT OCCURS 0,
MATNR TYPE MATNR,
MAKTX TYPE MAKTX,
END OF LS_MAT.
3.参考数据结构来定义内表1
DATA: LT_MAT LIKE TABLE OF LS_MATNR WITH HEADER LINE.
4.参考数据结构来定义内表2
DATA:BEGIN OF LT_MATNR OCCURS 0.
INCLUDE STRUCTURE LS_MATNR.
DATA:END OF LT_MATNR.
5.常量定义
CONSTANTS:L_STR(10) TYPE C VALUE 'HELLO WORLD'.
6.RANGES 建立选择型内表
RANGES: R_MAT FOR MARA-MATNR.
DATA: BEGIN OF R_MAT OCCURS 0,
SIGN TYPE C LENGTH 1,
OPTION TYPE C LENGTH 1,
LOW TYPE MARA-MATNR,
HIGH TYPE MARA-MATNR,
END OF R_MAT.
7.LIKE、LIKE LINE OF、LIKE TABLE OF、TYPE、TYPE STANDARD TABLE OF之间的区别
LIKE后接DATA类型的变量,可以是自定义变量,也可以是系统变量
LIKE LINE OF 后接内表,表示定义一个工作区。A LIKE LINE OF B,B是内表,A是工作区
LIKE TABLE OF 后接工作区,表示定义一个内表,SUCH AS:
DATA: BEGIN OF WA_ITAB,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MARA-MAKTX,
END OF WA_ITAB."不加OCCURS 0表示定义的工作区,加上表示定义的内表,此处是工作区
DATA:IT_TAB LIKE TABLE OF WA_ITAB."定义一个内表
TYPE 后接自定义数据类型,可以是基本数据类型C、I、N,也可以是自定义数据类型,SUCH AS:
TYPES:BENGIN OF TY_ITAB,
MATNR TYPE MARA-MATNR,
MAKTX TYPE MARA-MAKTX,
END OF TY_ITAB.
DATA: IT_TAB TYPES STANDARD TABLE TY_ITAB,"定义一个内表
WA_TAB TYPES TY_ITAB."定义一个工作区
8.内表基本操作语法(增删改查)
不带表头的内表:
APPEND <WA> TO <ITAB>.
INSERT <WA> INTO <ITAB> INDEX X.
INSERT <WA> INTO TABLE <ITAB>.
MODIFY <ITAB> INDEX X FROM <WA>.
DELETE <ITAB> INDEX IDX.
DELETE TABLE <ITAB> FROM <WA>.
READ TABLE <ITAB> INDEX X INTO <WA>.
LOOP AT <ITAB> INTO <WA>.
带表头的内表:
APPEND <ITAB>.
INSERT <ITAB> INDEX X.
MODIFY <ITAB> INDEX X.
DELETE TABLE <ITAB>.
READ TABLE <ITAB> INDEX X.
LOOP AT <ITAB>.
9.内表数据插入(比循环插入法速度快20倍)
INSERT LINES OF <ITAB1> [FROM N1 ] [TO N2] INTO [TABLE] <ITAB2> INDEX X.
不指定N1和N2时,ITAB1可以是任意类型的表,ITAB2必须是索引表(标准表和排序表都是索引表,哈希表是非索引表);J如果添加TABLE关键字,ITAB2可以是任意类型的表
10.内表读取小技巧
如果内表行数巨大,将内表定义成为哈希表,并且使用关键字进行读取可以提升效率
8449



被折叠的 条评论
为什么被折叠?



