内表
内表是内存中建立的一个临时表,你可以在程序运行时对表中的数据进行,插入,修改,删除等操作,程序跑完了,就会被释放。
内表共有3种类型:
工作区
工作区:内表按照行进行访问,必须使用某个区域(工作区)作为与表格互相传输的接口。
注意:1、从内表中读取数据时,已定址的行内容覆盖工作区的原有内容。
2、数据写入内表时,必须首先在工作区中输入数据,再将工作区数据写入内表。
内表的定义
1、TYPES
TYPES自定义的表类型来定义内表
TYPES <t> TYPE <type> OCCURS <n>
TYPES <T> TYPE TABLE OF <type>
WITH HEADER LINE : 定义了带工作区的内表
实例:
TYPES: BEGIN OF LINE, "定义结构数组类型
ACOL1 TYPE I,
ACOL2 TYPE I,
END OF LINE.
TYPES: ITABT TYPE LINE OCCURS 10. "定义表类型
DATA: ITABX TYPE ITABT WITH HEADER LINE. "定义带工作区的内表,工作区名称与内表名称相同
2、DATA
DATA直接定义内表:
DATA: BEGIN OF <ITAB> OCCURS <n>
……
END OF itab.
实例:
DATA: BEGIN OF ITAB OCCURS 0, "自带工作区的内表,工作区名称与内表名称相同
ACOL1 TYPE I,
ACOL2 TYPE I,
END OF ITAB.
3、参考定义
参照内表或数据库表结构定义内表,内表结构与所参照数据库表完全相同:
DATA <f> LIKE <内表或数据库表> OCCURS n WITH HEADER LINE
使用INCLUDE STRUCTURE包括已存在的结构体的所有字段
实例:
1、 DATA: ITAB LIKE SPFLI OCCURS 0 WITH HEADER LINE.
2、 DATA: BEGIN OF ITAB OCCURS 0. "自带同名工作区, ITAB是定义的内表
INCLUDE STRUCTURE SPFLI. "ZTABLE1是参照的数据库表
DATA: NAME(20) TYPE C,
SEX TYPE C.
DATA: END OF ITAB.