1. 程式人生 > 其它 >四、內表及其宣告

四、內表及其宣告

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不影響