SAP ABAP 內表及其聲明(標准表/排序表/哈希表、內表操作、清空內表)


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM