ABAP之內表定義、insert、read、update、delete


一、內表定義.  

  1.1參照表類型創建內表——先定義類型,參照類型定義內表.

   TYPES:BEGIN OF s_type,
     no(6) TYPE c,
     name(10) TYPE c,
     part(16) TYPE c,
   END OF s_type.
   DATA:gt_itab TYPE STANDARD TABLE OF s_type with NON-UNIQUE  KEY no WITH HEADER LINE.

參照結構體創建內表

DATA:BEGIN OF s_type,
     no(6) TYPE c,
     name(10) TYPE c,
     part(16) TYPE c,
     END OF s_type.
DATA:gt_itab LIKE STANDARD TABLE OF s_type with NON-UNIQUE  KEY no WITH HEADER LINE.

1.2 參照表定義內表

   語法: DATA:itab TYPE <t_itab> WITH {UNIQUE|NON-UNIQUE} KEY <keys> [INITIAL SIZE <n>][WITH HEADER LINE].

DATA gt_itab TYPE SORTED TABLE OF scarr WITH UNIQUE KEY carrid.
DATA gs_str LIKE LINE OF  gt_itab. 

二、內表操作

2.1.內表賦值.

    "內表帶表頭的話,下面語句只賦值表頭。

  MOVE itab1 TO itab2."同於 itab2 = itab1.

    "賦值表體數據

 MOVE itab1[] TO itab2[].  "同於 itab2[] = itab1[].

    "表類型不同時或者字段順序不同時。

MOVE-CORRESPONDING itab1 TO itab2.

2.2.內表初始化

    CLEAR、REFRESH、FREE.
1).CLEAR .

 CLEAR itab.

  --返回內存空間.

  --itab如果帶表頭,只清楚表頭,如果不帶表頭,清除表體數據。

 CLEAR itab[]."清除帶表頭內表的表體數據。

2)REFRESH.

  REFRESH itab.

  --刪除表內數據,不刪除內存空間,釋放須執行free.

3).FREE.

  FREE itab.

2.3.內表排序

  1.SORT.

SORT ITAB [ASCENDING|DESCENDING].

  2.指定排序字段.

 SORT ITAB  [ASCENDING|DESCENDING]
      BY f1 [ASCENDING|DESCENDING]
      ...
         fn [ASCENDING|DESCENDING].

2.4 內表屬性.

DESCRIBE TABLE itab [LINES gv_line][OCCURS gv_init][KIND gv_kind].

      LINES:     返回內表包含的數據數.

      OCCURS:返回內表的初始大小.
      KIND :      內表類型,T代表標准表,S代表排序表,H代表哈希表.

三、追加內表

   INSERT、APPEND、COLLECT三種方式實現內表追加數據。

  3.1.INSERT.

 1)插入一條數據.

 INSERT line INTO TABLE itab.

 成功:sy-subrc返回0;已存在返回4,不發生dump error。

 2)多條數據.

INSERT LINES OF itab1 [FROM n1][TO n2] INTO TABLE itab2."itab1  itab2表結構相同.

 3)利用索引追加

 INSERT line INTO TABLE itab [INDEX idx].
 INSERT LINES OF itab1 INTO itab2 [INDEX idx].

3.2.APPEND

     只支持按照索引進行追加.
1.追加一條數據.

 APPEND  line TO itab.

2.追加多條數據.

  APPEND  LINES OF itab1 TO itab2.
  APPEND  LINES OF itab1 [FROM n1][TO n2] TO itab2.

3.3.COLLECT

當存在相同關鍵字時,合計數字類型的字段,不存在相同關鍵字,則追加數據.

COLLECT wa INTO itab.

四、修改內表數據

1.利用關鍵字修改一條數據.

MODIFY TABLE itab FROM wa [TRANSPORTING f1 f2..].

--如果關鍵字重復時,只會修改第一條數據. TRANSPORTING 修改指定關鍵字的值.

2.修改多條數據.

MODIFY TABLE itab FROM wa [TRANSPORTING f1 f2..]WHERE cond."限制檢索條件.

3.利用索引修改一條數據.

MODIFY itab FROM wa [INDEX idx][TRANSPORTING f1 f2..].

  --只適合於標准表和排序表.

五、刪除內表數據.

1.關鍵字刪除一條數據.

  DELETE TABLE itab [FROM wa].
  DELETE TABLE itab WITH TABLE KEY k1=f1 ...kn=fn.

2.WHERE條件刪除.

DELETE itab WHERE cond.
DELETE gt_itab WHERE carrid = 'AA'.

3.利用索引刪除.

DELETE itab [INDEX idx].
DELETE itab FROM n1 TO n2. "刪除索引號n1~n2間的數據.
DELETE itab FROM n1.           "刪除n1以后的數據.
DELETE itab TO n2.               "刪除n2之前的數據

4.刪除重復行.

DELETE ADJACENT DUPLICATES ENTRIES FROM itab [COMPARING f1 f2...| ALL FIELDS].

  --執行前,先sort排序

六、讀取內表數據

  當存在表頭時,對應數據保存至表頭,否則保存到工作區。
1.關鍵字讀取數據.

READ TABLE itab FROM wa INTO result.
READ TABLE itab WITH TABLE KEY k1 = f1 kn = fn INTO result.
      
gs_line_carrid = 'AA'.
READ TABLE gt_itab FROM gs_line INTO gs_line.
      
READ TABLE gt_itab WITH TABLE KEY carrid = 'AB' INTO gs_line.    

2.利用索引讀取數據.

READ TABLE itab INDEX idx INTO result.
READ TABLE gt_itab INTO gs_line INDEX 1.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM