日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ABAP几种内表的操作

發布時間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ABAP几种内表的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ABAP幾種內表的操作

???這次的程序用到了哈希表,在這里,也順便總結一下ABAP三種內表的特點。

???ABAP中有三類內表,標準表,排序表和哈希表。

三種內表介紹

???標準表的每一行對應一個邏輯索引-SY-TABIX,填充內表的時候,可以將數據附加在現有行之后,也可以插入到指定的位置,程序對內表行的尋址操作可通過關鍵字或索引進行。在對表進行插入刪除等操作時,各數據行在內存中的位置不變,系統僅重新排列各數據行的索引值。

???排序表也有邏輯索引,不同的是排序表總是按其表關鍵字升序排列后再進行存儲,也就是在內存中的位置發生改變。 哈希表沒有索引,只有關鍵字。

行訪問方式

????????????????????標準表????????????????????排序表?????????????????哈希表

索引訪問?????????????允許???????????????????????允許?????????????????不允許

關鍵字訪問???????????允許???????????????????????允許??????????????????允許

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

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

?

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

????對于一個小于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 等。


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


2. 內表的操作:


( 1 ) . 創建:


A. 定義一個結構,然后 type/like 這個結構


例如:


TYPES: BEGIN OF ,
...
igt; ...,?
...
END OF .


DATA TYPE STANDARD TABLE OF?
WITH NON-UNIQUE DEFAULT KEY
INITIAL SIZE?
WITH HEADER LINE.


B. type/like 系統表或者數據庫表或者結構


DATA TYPE STANDARD TABLE OF < 系統表名 >?
INITIAL SIZE?
WITH HEADER LINE.


( 2 ) . 添加數據:


A . APPEND :直接向表中添加數據


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 .向表中插入數據:


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 ) . 刪除數據:


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 |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.

總結

以上是生活随笔為你收集整理的ABAP几种内表的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。