ABAP几种内表的操作
ABAP幾種內(nèi)表的操作
???這次的程序用到了哈希表,在這里,也順便總結(jié)一下ABAP三種內(nèi)表的特點(diǎn)。
???ABAP中有三類內(nèi)表,標(biāo)準(zhǔn)表,排序表和哈希表。
三種內(nèi)表介紹
???標(biāo)準(zhǔn)表的每一行對(duì)應(yīng)一個(gè)邏輯索引-SY-TABIX,填充內(nèi)表的時(shí)候,可以將數(shù)據(jù)附加在現(xiàn)有行之后,也可以插入到指定的位置,程序?qū)?nèi)表行的尋址操作可通過(guò)關(guān)鍵字或索引進(jìn)行。在對(duì)表進(jìn)行插入刪除等操作時(shí),各數(shù)據(jù)行在內(nèi)存中的位置不變,系統(tǒng)僅重新排列各數(shù)據(jù)行的索引值。
???排序表也有邏輯索引,不同的是排序表總是按其表關(guān)鍵字升序排列后再進(jìn)行存儲(chǔ),也就是在內(nèi)存中的位置發(fā)生改變。 哈希表沒(méi)有索引,只有關(guān)鍵字。
行訪問(wèn)方式
????????????????????標(biāo)準(zhǔn)表????????????????????排序表?????????????????哈希表
索引訪問(wèn)?????????????允許???????????????????????允許?????????????????不允許
關(guān)鍵字訪問(wèn)???????????允許???????????????????????允許??????????????????允許
相同值關(guān)鍵字行???????可重復(fù)???????????????????可重復(fù)或不可重復(fù)???????不可重復(fù)
推薦訪問(wèn)方式???????主要通過(guò)索引???????????????主要通過(guò)關(guān)鍵字????????只能通過(guò)關(guān)鍵字?
?
具體到使用什么類型的內(nèi)表????
????對(duì)于一個(gè)小于100行的內(nèi)表,且很少使用關(guān)鍵字操作,則使用標(biāo)準(zhǔn)表沒(méi)有效率問(wèn)題;數(shù)據(jù)量比較巨大,切不存在重復(fù)行,只需使用關(guān)鍵字訪問(wèn)的內(nèi)表應(yīng)定義為哈希表;排序表適用于運(yùn)行期內(nèi)必須以某種排序形式出現(xiàn)的內(nèi)表。
×××××××××××××××××××××××××××××××××××××××××××××××××
?
1. 內(nèi)表的類型及定義:
( 1 ) .ANY TABLE :即任意表類型,此種定義方式只能在傳遞參數(shù)的時(shí)候定義。
例如: FORM XXX USING/CHANGING TYPE ANY TABLE .
( 2 ) .ANY TABLE 包括了兩種類型: INDEX TABLE 和 HASHED TABLE 。
《 1 》 .INDEX TABLE :包括了 STANDARD TABLE 和 SORTED TABLE
A. STANDARD TABLE :其實(shí)就是一個(gè)線性表,通過(guò) key 訪問(wèn)內(nèi)表是線性查找的,也就是說(shuō),隨著表中記錄的增加,對(duì)表的操作的時(shí)間開(kāi)銷也相應(yīng)的增加。
定義方法: TYPES/DATA : LIKE/TYPE STANDARD TABLE OF .
B. SORTED TABLE: 顧名思義,表中的記錄是按照一定的順序排列的。訪問(wèn)表的主要方式是表中定義的 key ,如果 key 不唯一,則選擇 index 最小的那個(gè)。也可以通過(guò) index 來(lái)訪問(wèn)排序表,如果你想通過(guò) index 插入一條記錄,系統(tǒng)會(huì)自動(dòng)檢查你插入的位置是否正確。所以,如果插入的時(shí)間比插入到標(biāo)準(zhǔn)表的時(shí)間會(huì)長(zhǎng)。因此,盡量選擇 key 來(lái)對(duì)排序表進(jìn)行操作。
定義方法: TYPES/DATA : LIKE/TYPE SORTED TABLE OF .
《 2 》 .HASHED TABLE :對(duì)哈希表只能用你定義的 key 進(jìn)行操作,而不能使用 index 進(jìn)行操作。因此,定義哈希表必須定義 unique key 。注意:所有關(guān)于使用 index 操作表的語(yǔ)句都不能用于操作哈希表。例如: sort , loop 等。
定義方法: TYPES/DATA : LIKE/TYPE HASHED TABLE OF .
2. 內(nèi)表的操作:
( 1 ) . 創(chuàng)建:
A. 定義一個(gè)結(jié)構(gòu),然后 type/like 這個(gè)結(jié)構(gòu)
例如:
TYPES: BEGIN OF ,
...
igt; ...,?
...
END OF .
DATA TYPE STANDARD TABLE OF?
WITH NON-UNIQUE DEFAULT KEY
INITIAL SIZE?
WITH HEADER LINE.
B. type/like 系統(tǒng)表或者數(shù)據(jù)庫(kù)表或者結(jié)構(gòu)
DATA TYPE STANDARD TABLE OF < 系統(tǒng)表名 >?
INITIAL SIZE?
WITH HEADER LINE.
( 2 ) . 添加數(shù)據(jù):
A . APPEND :直接向表中添加數(shù)據(jù)
1. APPEND [wa TO|INITIAL LINE TO] itab[ASSIGNING |REFERENCE INTO dref].
2. APPEND LINES OF itab1 [FROM idx1] [TO idx2] TO itab2.
3. APPEND [wa TO] itab SORTED BY f [ASSIGNING
B .向表中插入數(shù)據(jù):
1. INSERT [wa INTO|INITIAL LINE INTO] itab [INDEX idx] [ASSIGNING |REFERENCE INTO dref].
2. INSERT [wa INTO|INITIAL LINE INTO] TABLE itab [ASSIGNING |REFERENCE INTO dref].
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 ) . 刪除數(shù)據(jù):
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 ) . 修改數(shù)據(jù):
1. MODIFY itab [FROM wa] [INDEX idx] [ASSIGNING |REFERENCE INTO dref] [TRANSPORTING f1 ... fn].
2. MODIFY TABLE itab [FROM wa] [ASSIGNING |REFERENCE INTO dref] [TRANSPORTING f1 ... fn].
3. MODIFY itab [FROM wa] TRANSPORTING f1 ... fn WHERE cond.
總結(jié)
以上是生活随笔為你收集整理的ABAP几种内表的操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 动态隐藏ALV的行和列
- 下一篇: IDOC、ALE、EDI三者之间的区别与