1.概述:內表是程序運行過程中創建的存儲空間,是內存中建立的臨時表,程序結束后,會被釋放。可對內表執行插入、修改和刪除操作。
2.分類:
表名 |
說明 |
效率 |
語法 |
標准表 |
在增加或插入數據行時不對數據行的地址進行重新排序,包含index,可通過index和key查找,只能包含non unique key,key可為 |
效率取決於表的行,隨行數線性增加 |
TYPE TABLE OF、TYPE STANDARD TABLE OF
|
排序表 |
在增加或插入數據行時對數據行的地址進行重新排序,包含index,可通過index和key查找,可包含unique和non unique key,key必需;具有自動排序功能,所以SORT關鍵字對其沒有任何意義,還會導致編譯錯誤 |
效率取決於表的行數,隨行數對數級增長 |
TYPE SORTED TABLE OF |
哈希表 |
只能通過關鍵字訪問,在檢索數據里與數據行數無關,不包含index,只能通過key查找,只能包含unique key,key必需 |
效率與行數無關,數據量大的情況下使用關鍵字查詢時最快的
|
TYPE HASHED TABLE OF
|
示例:
TYPES:BEGIN OF TY_STU,
ID TYPE N,
NAME TYPE STRING,
AGE TYPE I,
END OF TY_STU.
表名 |
示例 |
注意 |
標准表 |
DATA GT_STU1 TYPE STANDARD TABLE OF TY_STU. |
只能使用NON-UNIQUE,可以省略 |
排序表 |
DATA GT_STU2 TYPE SORTED TABLE OF TY_STU WITH UNIQUE KEY ID. |
是否可以存儲重復的,取決於定義時指定的KEY類型是UNIQUE還是NON-UNIQUE |
哈希表 |
DATA GT_STU3 TYPE HASHED TABLE OF TY_STU WITH UNIQUE KEY ID. |
只能使用UNIQUE,不能省略 |
3.內表操作:
操作類型 |
說明 |
語法 |
APPEND |
追加數據(哈希表不支持) |
① LOOP AT ITAB1 APPEND ITAB1 TO ITAB2. ENDLOOP. ②APPEND LINES OF ITAB1 TO ITAB2. |
INSERT |
①標准表:與APPEND效果一樣;排序表:根據關鍵字插入合適位置;哈希表:通過哈希算法根據關鍵字計算出插入的位置。②向UNIQUE的排序表/哈希表插入重復的數據,數據不會插入成功,不拋異常 |
① INSERT WA INTO TABLE ITAB. ② INSERT LINES OF ITAB1 INTO ITAB2. |
DELETE
|
①刪除單行:TABLE KEY(NON-UNIQUE類型的表,當查找多條時,只會刪除第一條)②刪除多行:WHERE③刪除臨近重復行:ADJACENT DUPLICATE |
DELETE ITAB. |
READ |
標准表:順序查找;排序表:二分查找;哈希表:根據哈希算法查找 |
READ TABLE ITAB INTO WA.
|
CHANGE |
|
MODIFY TABLE ITAB FROM WA
|
COLLECT |
內表分類匯總 |
①COOLECT <work area> INTO ITAB. ②COOLECT ITAB. |
MODIFY |
①修改單條記錄:TABLE KEY(NON-UNIQUE類型的表,當查找多條時,只會修改第一條)②修改多條記錄:WHERE |
①根據索引:MODIFY ITAB FROM WA INDEX IDX. ②根據關鍵字段:MODIFY TABLE ITAB FROM WA. |
AT |
內表的第一行觸發 |
AT FIRST. …… ENDAT. |
內表的最后一行觸發 |
AT LAST. …… ENDAT. |
|
按內表列F,列的左邊發生改變時觸發(可用於按年、月、日統計) |
AT NEW F. …… ENDAT. |
|
按內表列F,列的右邊發生改變時觸發 |
AT END OF F. …… ENDAT. |
|
SORT |
排序 |
SORT ITAB. |
DESCRIBE |
獲取內表行數 |
DESCRIBE TABLE ITAB LINES DATA(LV_LINE). |
LINES |
DATA(LV_DATA) = LINES(ITAB). |
4.清空內表
CLEAR ITAB:僅清空HEADER LINE,對內表數據存儲空間不影響
REFRESH ITAB:清空內表數據存儲空間,對HEADER LINE不影響
DREE ITAB:清空內表數據存儲空間,對HEADER LINE不影響