内表是内存中建立的一个临时表,它同样是程序运行中被临时创建的一个存储空间,内表是一个变量,都具有插入,修改,删除等操作,程序跑完了,就会被释放。
内表实际上分为一般内表(standard table),排序表(sorted table),哈希表(Hashed table)。
标准表:在增加或插入数据行时并不对数据行的地址进行重新排序存储。
排序表:在增加和插入数据行时要对数据存储的地址进行重新排列。
哈希表:只能通过关键字进行访问,在检索数据里与数据行数无关.
with [ unique | non-unique] key comp1…compN " 排序表可以使用
with [unique | non-unique] key table_line
with header line:定义了带工作区的内表。
工作区:内表按照行进行访问,必须使用某个区域作为与表格互相传输的接口。
在内表中读取数据时,已定址的行内容覆盖工作区的内容。讲数据写入内表时,必须首先在工作区中输入数据。
types: begin of
…
end of
data type table of
types:
data type
types:
data type
data直接定义内表
DATA: BEGIN OF OCCURS
…
END OF ITAB.
参考定义
data type table of
使用include structure来继承
DATA:BEGIN OF OCCURS 0
INCLUDE STRUCTURE .
DATA: TYPE .
…
DATA:END OF .
通过DESCRIBE获得内表的行
DESCRIBE TABLE LINES N
以下分别是标准表,排序表,哈希表的例子。
DATA ITAB7 TYPE STANDARD TABLE OF zschange.
DATA ITAB8 TYPE SORTED TABLE OF ZLLD WITH UNIQUE KEY WERKS.
DATA ITAB9 TYPE HASHED TABLE OF ZLLD WITH UNIQUE KEY WERKS.
DATA语句用于声明一个内部表。 程序必须告知表的开始和结束位置。 所以使用BEGIN OF语句,然后声明表名。 之后,使用OCCURS添加,后跟一个数字,这里为0. OCCURS告诉SAP正在创建一个内部表,0表示它最初不包含任何记录。 它将随着它填充数据而扩展(0表示0行)。
直接定义(以下的内表是有表头的)
REPORT Z_HELLOWOLD.
DATA: BEGIN OF itab05 Occurs 0,
field1 type char10,
field2 type int2,
END OF itab05.
您还可以使用TYPES语句创建内部表作为本地数据类型(仅在当前程序的上下文中使用的数据类型)。
结构定义
TYPES:BEGIN OF TY_itab1, " 结构类型
field1 type char10,
field2 type int2,
END OF ty_itab1.
TYPES: t_itab1 type TY_itab1 OCCURS 0. "表类型
TYPES: t_itab2 type TABLE OF TY_itab1. "表类型
DATA: itab1 type TABLE OF TY_itab1, " 三种内表,
itab2 TYPE t_itab1,
itab3 type t_itab2.
DATA itab4 like itab1.
DATA ITAB6 TYPE TABLE OF ZLLD. “ZLLD是数据库表
DATA ITAB7 TYPE STANDARD TABLE OF zschange. " zschange是结构.
以下是本包含一个表的定义
DATA: BEGIN OF lt_rkwa OCCURS 1.
INCLUDE STRUCTURE RKWA.
DATA: MAKTX LIKE MAKT-MAKTX,
LFA1 LIKE LFA1-NAME1,
END OF LT_RKWA.
TYPES: BEGIN OF ty_item,
matnr LIKE marc-matnr,
maktx LIKE makt-maktx,
werks LIKE marc-werks,
lifnr LIKE eina-lifnr,
name1 LIKE lfa1-name1,
major LIKE ztesoppap-major,
esostu LIKE ztesoppap-esostu,
esono LIKE ztesoppap-esono,
esodate LIKE ztesoppap-esodate,
ppapstu LIKE ztesoppap-ppapstu,
ppapno LIKE ztesoppap-ppapno,
ppapdate LIKE ztesoppap-ppapdate,
dled LIKE ztesoppap-dled,
END OF ty_item.
DATA: item TYPE STANDARD TABLE OF ty_item ,
wa_item type ty_item .
在实际应用中,我们更喜欢使用第二种。一般不使用带表头的内表。