1. 程式人生 > >SAP中的標準表、排序表、雜湊表

SAP中的標準表、排序表、雜湊表

ABAP幾種內表的操作

ABAP中有三類內表,標準表,排序表和雜湊表。

標準表

標準表:關鍵字為STANDARD TABLE, 系統為該表的每一行資料生成一個邏輯索引。 填充標準表時,可以將資料附加在現有行之後,也可以插入到指定的位置,程式對內錶行的定址操作可通過關鍵字或索引進行。在對錶進行插入、刪除等操作時,各資料行在記憶體中的位置不變,系統僅重新排列各資料行的索引值。

排序表

排序表:關鍵字為 SORTED TABLE, 也具有一個邏輯索引,不同之處是排序表總是按其關鍵字升序排序後再進行儲存,其訪問方式與標準表相同。   

雜湊表

雜湊表:關鍵字為 HASHED TABLE, 沒有索引,只能通過關鍵字來訪問。系統用雜湊演算法管理表中的資料,因而其定址一個數據行的時間和表的行數無關。

行訪問方式

                                        標準表                    排序表               雜湊表

索引訪問                           允許                       允許                 不允許

關鍵字訪問                       允許                       允許                  允許

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

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

具體到使用什麼型別的內表    

   
 對於一個小於100行的內表,且很少使用關鍵字操作,則使用標準表沒有效率問題;資料量比較巨大,切不存在重複行,只需使用關鍵字訪問的內表應定義為雜湊表;排序表適用於執行期內必須以某種排序形式出現的內表。

1. 內表的型別及定義:


( 1 ) .ANY TABLE :即任意表型別,此種定義方式只能在傳遞引數的時候定義。


例如: FORM XXX USING/CHANGING TYPE ANY TABLE .


( 2 ) .ANY TABLE 包括了兩種型別: INDEX TABLE 和 HASHED TABLE 。


《 1 》 .INDEX TABLE :包括了 STANDARD TABLE 和 SORTED TABLE


A. STANDARD TABLE :其實就是一個線性表,通過 key 訪問內表是線性查詢的,也就是說,隨著表中記錄的增加,對錶的操作的時間開銷也相應的增加。


定義方法: TYPES/DATA : LIKE/TYPE STANDARD TABLE OF .


B. SORTED TABLE: 顧名思義,表中的記錄是按照一定的順序排列的。訪問表的主要方式是表中定義的 key ,如果 key 不唯一,則選擇 index 最小的那個。也可以通過 index 來訪問排序表,如果你想通過 index 插入一條記錄,系統會自動檢查你插入的位置是否正確。所以,如果插入的時間比插入到標準表的時間會長。因此,儘量選擇 key 來對排序表進行操作。


定義方法: TYPES/DATA : LIKE/TYPE SORTED TABLE OF .


《 2 》 .HASHED TABLE :對雜湊表只能用你定義的 key 進行操作,而不能使用 index 進行操作。因此,定義雜湊表必須定義 unique key 。注意:所有關於使用 index 操作表的語句都不能用於操作雜湊表。例如: sort , loop 等。