1.創(chuàng)建內(nèi)表
可以利用下面兩種方法定義內(nèi)表:
1.參照局部表類型創(chuàng)建內(nèi)表
2.參照全局?jǐn)?shù)據(jù)庫表創(chuàng)建內(nèi)表
1.1參照局部表類型創(chuàng)建內(nèi)表
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.
也可以直接定義結(jié)構(gòu)體然后參照此結(jié)構(gòu)體定義內(nèi)表休傍,此時(shí)不能用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參照全局?jǐn)?shù)據(jù)庫表創(chuàng)建內(nèi)表
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.內(nèi)表與表頭
表頭也叫工作區(qū)氓涣,定義內(nèi)表時(shí)追加WITH HEADER LINE語句會自動(dòng)生成表頭。
例如:
DATA itab TYPE type WITH HEADER LINE.
比較內(nèi)表循環(huán)語句中帶表頭的內(nèi)表與不帶表頭的內(nèi)表的使用方法达传。使用不帶 表頭的內(nèi)表時(shí)篙耗,需通過工作去(Work area)編輯內(nèi)表中的數(shù)據(jù)迫筑,而使用帶表頭的內(nèi)表時(shí),則可以直接用內(nèi)表名編輯內(nèi)表值宗弯。
下表整理了帶表頭與不帶表頭的內(nèi)表使用的相關(guān)語句:
不帶表頭時(shí)使用的語句 | 帶表頭時(shí)使用的語句 |
---|---|
所有內(nèi)表(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... |