1.????? 內表的類型及定義:
( 1 ) .ANY TABLE :即任意表類型,此種定義方式只能在傳遞參數的時候定義。
?????
例如:
FORM XXX USING/CHANGING
( 2 ) .ANY TABLE 包括了兩種類型: INDEX TABLE 和 HASHED TABLE 。
?? 《 1 》 .INDEX TABLE :包括了 STANDARD TABLE 和 SORTED TABLE
A.????? STANDARD TABLE :其實就是一個線性表,通過 key 訪問內表是線性查找的,也就是說,隨著表中記錄的增加,對表的操作的時間開銷也相應的增加。
定義方法:
TYPES/DATA
:
B.????? SORTED TABLE: 顧名思義,表中的記錄是按照一定的順序排列的。訪問表的主要方式是表中定義的 key ,如果 key 不唯一,則選擇 index 最小的那個。也可以通過 index 來訪問排序表,如果你想通過 index 插入一條記錄,系統會自動檢查你插入的位置是否正確。所以,如果插入的時間比插入到標準表的時間會長。因此,盡量選擇 key 來對排序表進行操作。
定義方法:
TYPES/DATA
:
《 2 》 .HASHED TABLE :對哈希表只能用你定義的 key 進行操作,而不能使用 index 進行操作。因此,定義哈希表必須定義 unique key 。注意:所有關于使用 index 操作表的語句都不能用于操作哈希表。例如: sort , loop 等。
????????
定義方法:
TYPES/DATA
:
2.????? 內表的操作:
( 1 ) . 創建:
????? A. 定義一個結構,然后 type/like 這個結構
???????? 例如:
TYPES: BEGIN OF
?????????...
?????????
?????????...
???????END OF
DATA
?????????????????WITH NON-UNIQUE DEFAULT KEY
???????????????? INITIAL SIZE
???????????????? WITH HEADER LINE.
????? B. type/like 系統表或者數據庫表或者結構
DATA
???????????????? INITIAL SIZE
???????????????? WITH HEADER LINE.
( 2 ) . 添加數據:
????? A . APPEND :直接向表中添加數據
1.
APPEND [wa TO|INITIAL LINE TO] itab[ASSIGNING
2. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2.
3.
APPEND [wa TO] itab SORTED BY f [ASSIGNING
????? B .向表中插入數據:
1.
INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX
idx] [ASSIGNING
2.
INSERT [wa INTO|INITIAL LINE INTO] TABLE itab
[ASSIGNING
3. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO itab2 [INDEX idx3].
4. INSERT LINES OF itab1 [FROM idx1] [TO idx2] INTO TABLE itab2.
????? C .相同字段求和向表里添加:
Basic form
COLLECT [wa INTO] itab.
Extras:
1.
... ASSIGNING
2.
... REFERENCE INTO dref
3.
... SORTED BY f
( 3 ) . 刪除數據:
1.
DELETE itab.
2.
DELETE TABLE itab WITH TABLE KEY k1 = v1 ... kn = vn.
3.
DELETE TABLE itab [FROM wa].
4.
DELETE itab INDEX idx.
5.
DELETE itab FROM idx1 TO idx2.
6.
DELETE itab WHERE logexp.
7.
DELETE ADJACENT DUPLICATES FROM itab.
( 4 ) . 修改數據:
1.
MODIFY itab [FROM wa] [INDEX idx] [ASSIGNING
2.
MODIFY TABLE itab [FROM wa] [ASSIGNING