1.创建内表
可以利用下面两种方法定义内表:
1.参照局部表类型创建内表
2.参照全局数据库表创建内表
1.1参照局部表类型创建内表
TYPES : BEGIN OF ty_test,
no(6) TYPE C,
name(10) TYPE C,
dept(10) TYPE C,
END OF ty_test.
DATA gt_test TYPE STANDARD TABLE OF ty_test WITH HEADER LINE."带表头行
gt_test-no = '0001'.
gt_test-name = 'GML'.
gt_test-dept = 'CST-RDC'.
APPEND gt_test.
LOOP AT gt_test.
WRITE:gt_test-no,gt_test-name,gt_test-dept.
ENDLOOP.
也可以直接定义结构体然后参照此结构体定义内表,此时不能用TYPE语句,需使用LIKE语句。
DATA : BEGIN OF ty_test,
no(6) TYPE C,
name(10) TYPE C,
dept(10) TYPE C,
END OF ty_test.
DATA : gt_test LIKE STANDARD TABLE OF ty_test, "不带表头行
gs_test LIKE ty_test.
gs_test-no = '0001'.
gs_test-name = 'GML'.
gs_test-dept = 'CST-RDC'.
APPEND gs_test TO gt_test.
LOOP AT gt_test INTO gs_test.
WRITE:gs_test-no,gs_test-name,gs_test-dept.
ENDLOOP.
1.2参照全局数据库表创建内表
DATA : gt_scarr TYPE SORTED TABLE OF scarr WITH UNIQUE KEY carrid,
gs_scarr LIKE LINE OF gt_scarr.
SELECT * FROM scarr INTO gt_scarr.
LOOP AT gt_scarr INTO gs_scarr.
WRITE : / gs_scarr-carrid,gs_scarr-carrname.
ENDLOOP.
2.内表与表头
表头也叫工作区,定义内表时追加WITH HEADER LINE语句会自动生成表头。
例如:
DATA itab TYPE type WITH HEADER LINE.
比较内表循环语句中带表头的内表与不带表头的内表的使用方法。使用不带 表头的内表时,需通过工作去(Work area)编辑内表中的数据,而使用带表头的内表时,则可以直接用内表名编辑内表值。
下表整理了带表头与不带表头的内表使用的相关语句:
不带表头时使用的语句 | 带表头时使用的语句 |
---|---|
所有内表(Stardard,Sorted,Hashed Type ) | |
INSERT wa INTO TABLE itab. | INSERT TABLE itab. |
COLLECT wa INTO TABLE itab. | COLLECT itab. |
READ TABLE itab...INTO wa. | READ TABLE itab... |
MODIFY TABLE itab FROM wa. | MODIFY TABLE itab. |
MODIFY itab FROM wa...WHERE ... | MODIFY TABLE itab. |
DELETE TABLE itab FROM wa. | DELETE TABLE itab. |
LOOP AT itab INTO wa. | LOOP AT itab. |
Index表(Stardard,Sorted Type ) | |
APPEND wa TO itab. | APPEND itab. |
INSERT wa INTO itab... | INSERT iatb... |
MODIFY itab FROM wa... | MODIFY itab... |
网友评论