2017年7月24日 星期一

SAP_ABAP_邊學邊記錄_INTERNAL TABLE(內表)

SAP_ABAP_邊學邊記錄_INTERNAL TABLE(內表)

INTERNAL TABLE(內表)說明

INTERNAL TABLE如另篇文中說明,是存放資料的介質,從DB取出資料之後就是放在INTERNAL TABLE處理之後才顯示在畫面上的。
宣告的方式有三種,另篇的說明是標準的,這邊重新介紹過!

宣告方式_STANDARD

可參照DB或是參照WORK AREA,下述方式即參照了WORK AREA。其STANDARD是可有可無的!
DATA LINE_TABLE TYPE STANDARD TABLE OF LINE.

STANDARD說明

宣告為STANDARD的部份,其資料取出是從第一筆開始按序讀取。(如透過ASP.NET的DATA READER)
取資料的方式一般來說是透過LOOP來依序取得載入。
在寫入資料的時候,可以將資料寫到最後,也可以依指定位址寫入

宣告方式_SORTED

DATA LINE_TABLE TYPE SORTED TABLE OF LINE WITH NON-UNIQUE KEY CELL1 CELL2.

SORTED說明

查詢的時候會依KEY值排序,再透過二分法來做查詢。

宣告方式_HASHED

DATA LINE_TABLE TYPE HASHED TABLE OF LINE WITH UNIQUE KEY CELL.

HASHED說明

透過HASH表來查詢,KEY值必填,只能讀取。
WITH NON-UNIQUE與UNIQUE的說明
此參數決定了具相同關鍵字的數據是否重覆出現!在STANDARD中是不允許UNIQUE的宣告,且不需特別設定WITH NON-UNIQUE,而在HASHED中是不允許設置WITH NON-UNIQUE,且必需設置UNIQUE。
INITIAL SIZES n說明
n可以為0或是任意正整數值,設置與否皆不影響執行,只會影響效率,如n小於需求,則在執行程序的時候會去自行擴增,此時會影響效率,而n設置過大的時候會導致資源浪費。
如n為0或不指定,則預設給予8kb的空間。

其它宣告方式

DATA <INTERNAL TABLE> TYPE <結構類型> WITH [UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE].
DATA <INTERNAL TABLE> LIKE TABLE OF <内表或者透明表> WITH [UNIQUE|NON-UNIQUE] [INITIAL SIZE n] [WITH HEADER LINE]。

其它宣告方式範例

TABLES:SOURCE_TABLE. //來源為透明表的時候必需要先IMPORT進來
TYPES:BEGIN OF INTERNAL_TABLE.
      NAME LIKE SOURCE_TABLE-CELL1.
      TEL LIKE SOURCE_TABLE-CELL2.
      ADD LIKE SOURCE_TABLE-CELL3.      
END OF INTERNAL_TABLE.
//賦值
MOVE 'A' TO INTERNAL_TABLE.NAME.
MOVE 'B' TO INTERNAL_TABLE.TEL.
MOVE 'C' TO INTERNAL_TABLE.ADD.
//顯示
WRITE INTERNAL_TABLE.

透明表說明

所謂的透明表泛指SAP系統中跟資料庫中定義完全相同的表,且任何對透明表的操作都會對資料庫直接的影響。

沒有留言:

張貼留言