ABAP 三類內表


介紹(一)

ABAP里提供了三種內表,分別是:

1,  STANDARD TABLE       與TYPE TABLE OF 效果一樣,都是標准表

2,  SORTED TABLE 

3, HASHED TABLE

在不同的場合下,READ TABLE查找數據時三種內表會有不同的效率。

 

STANDARD TABLE是標准表,也是最常用的內表,特點如下:

1,  可以不指定KEY,但只能指定 NON-UNIQUE KEY

2,  可以使用INDEX和KEY來查詢

注:NON-UNIQUE KEY代表內表里該字段可以重復,如果是UNIQUE KEY則代表該字段不能重復,不然程序會發生運行時錯誤。

舉例:DATA IT_YM TYPE STANDARD TABLE OF VBAP WITH NON-UNIQUE KEY VBELN.

 

SORTED TABLE是排序表,特點如下:

1,  必須指定KEY(作為排序參考字段),可以指定UNIQUE KEY或者是NON-UNIQUE KEY

2,  可以使用INDEX和KEY來查詢

3,  已經按照KEY排序,不可以再排序

 舉例:DATA IT_YM TYPE SORTED TABLE OF VBAP WITH NON-UNIQUE KEY VBELN.

 

在記錄條數多時,SORTED TABLE查詢效率明顯比STANDARD TABLE高,因為對已經排序的表可以進行二分法查找。

可以對STANDARD TABLE用SORT語句先進行排序,然后再進行BINARY SEARCH(即二分法查找)的查詢,效率接近SORTED TABLE。

但要注意,排序本身也是消耗時間,如果只對STANDARD TABLE進行一次查詢,則沒有必要先排序后進行BINARY SEARCH的查找。

另外在使用BINARY SEARCH時,數據必須完全依照BINARY SEARCH的KEY字段進行排序。

 

HASHED TABLE是哈希表,特點如下:

1,  必須指定KEY,並且是UNIQUE KEY

2, 不可以使用INDEX查詢

3, 查詢時間和記錄數無關

 舉例:DATA IT_YM TYPE HASHED TABLE OF VBAP WITH UNIQUE KEY VBELN.


 

介紹(二)

三種內表

   標准表的每一行對應一個邏輯索引-SY-TABIX,填充內表的時候,可以將數據附加在現有行

之后,也可以插入到指定的位置,程序對內表行的尋址操作可通過關鍵字或索引進行。在對表

進行插入刪除等操作時,各數據行在內存中的位置不變,系統僅重新排列各數據行的索引值。

   排序表也有邏輯索引,不同的是排序表總是按其表關鍵字升序排列后再進行存儲,也就是在

內存中的位置發生改變。

   哈希表沒有索引,只有關鍵字。

行訪問方式

                    標准表                    排序表                 哈希表

索引訪問             允許                       允許                 不允許

關鍵字訪問           允許                       允許                  允許

相同值關鍵字行       可重復                   可重復或不可重復       不可重復 

推薦訪問方式       主要通過索引               主要通過關鍵字        只能通過關鍵字  

 

具體到使用什么類型的內表     

    對於一個小於100行的內表,且很少使用關鍵字操作,則使用標准表沒有效率問題;數據量

比較巨大,切不存在重復行,只需使用關鍵字訪問的內表應定義為哈希表;排序表適用於運行

期內必須以某種排序形式出現的內表。

 


免責聲明!

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



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