ABAP 內表相關

1.基本的創建方式

DATA: BEGIN OF GS_01,
         col1 TYPE i,
         col2 TYPE ZSTU-CLO2,
      END OF GS_01 . "結構體
DATA:GT_01 TYPE STANDARD TABLE OF GS_01. "創建內表

TABLES: MARA . "結構類型
DATA GT_01 LIKE STANDARD TABLE OF MARA . "直接參照數據庫表創建
DATA GS_01 LIKE MARA .
DATA GS_011 LIKE LINE OF GT_01 ."參照表的一行也是一個結構(工作區)

2.用TYPE關鍵字創建 

TABLES: ZGROUP_2. "結構體
TYPES: BEGIN OF TY_01.
           INCLUDE STRUCTURE ZGROUP_2. "include 透明表
TYPES:
       FIELD_COLOR TYPE LVC_T_SCOL,  
       FIELD_MODIFY TYPE LVC_T_STYL,
       END OF TY_01.
DATA GT_GROUP TYPE TABLE OF TY_01.  "參照TY_01 創建內表
DATA GS_GROUP TYPE TY_01.           "工作區

3.內表相關操作(sy-tabix 返回循環內內表當前行)

3.1 向內表中添加數據  (INSERT,APPEND ,COLLECT三張方式)


  INSERT LINE INTO TABLE ITAB . "添加一條
  INSERT itable INDEX num     . "利用索引追加一條數據
  INSERT LINES OF ITAB1 FROM N RO M INTO TABLE ITAB2 . "利用索引追加多條數據
  INSERT LINES OF ITAB1 INTO TABLE ITAB2 . "利用索引追加多條數據
  標準表
    追加到內表最後一行,與APPEND語句有相同的效果
  排序表
    按內表中排好的順序追加數據,若按照關鍵字並非唯一的類型,重複的數據會追加到相同數據的上一行。
  哈希表
    按照關鍵字的哈希索引順序追加數據

 


  APPEND 只能利用索引追加數據
  APPEND LINE TO ITAB . "添加一條
  INSERT LINES OF ITAB1 FROM N RO TO TABLE ITAB2 . "追加多條數據
  INSERT LINES OF ITAB1 TO TABLE ITAB2 . "追加多條數據
  標準表
    追加到內表最後一行
  排序表
    需要按照排好的數據追加數據,否則會dump。
  哈希表
    不能使用APPEND追加數據
3.4 COLLECT 合計內表中的數字類型的字段,出關鍵字以外的其他字段都需要是數字類型(F,I,P),按照關鍵字合計,未定義關鍵字的時候,則會吧所有的插入類型的字段視爲關鍵字

     COLLECT WA INTO ITAB .

 3.2 READ 讀取內表數據 

 
READ TABLE ITAB INTO WA WITH KEY  col1 =  value .

BINARY SEARCH 二分查找,使用前sort

SORT ITAB BY CON1...
READ TABLE 內表 INTO 工作區 WITH KEY  col1 =  value  BINARY SEARCH  .
 

當用到 TRANSPORTING NO FIELDS時只讀取不傳值  
READ TABLE GT_MAIN INTO GS_MAIN INDEX 1 TRANSPORTING NO FIELDS.
 

3.3 modify關鍵字,修改內表數據  

MODIFY TABLE ITAB FROM WA TRANSPORTING FILED1 ..."參照工作區修改一條數據,TRANSPORTING 指定修改字段

MODIFY ITAB FROM WA TRANSPORTING FILED1 ... WHERE COND "參照工作區修改多條數據

 MODIFY UTAB FROM WA INDEX SY-INDEX . " 利用索引修改一條數據

3.4 DELETE 刪除數據

DELETE TABLE ITAB FROM WA ."刪除一條
DELETE TABLE ITAB WITH TABLE KEY K1 = '**' . "利用關鍵字刪除一條
DELETE ITAB WHERE COND . "刪除多條
DELETE ITAB INDEX SY-INDEX.

DELETE ADJACENT DUMPLICATE FROM ITAB COMPARING CON1... " 刪除重複行

4. RANGE表類型 

         是一種特殊的表類型,用於在ABAP中定義RANGE變量,擁有SIGN,OPTION,LOW,HIGH

      RANGE 變量的構成:

               SIGN: I (INCLUSIVE) ,  E(EXCLUSIVE)

               OPTION : EQ ,BT, GE(大於等於),LE(小於等於),GT(大於),LT(小於),NE,CP(包含)

                LOW :FROM 值

                HIGH : TO值

6.at ...endat語法,()

這裏包括: new , first , last , end of . 
使用前提:一般在loop中使用,要提前對內表進行排序sort,排序的主鍵爲統計時用到的節點(比如,按銷售組織統計,節點爲vkorg),Loop不能加where條件,在at 和 endat之間不能再使用loop語法。

AT FIRST
  是內表第一條數據時執行
AT NEW F1
  與上一條有變化時執行
AT END OF F1
  與下一條數據有變化時執行
AT LAST .
  是內表最後一條數據時執行
當進入AT … END AT.中的時候,工作區中的值除了key字段,其他字段會全部變爲默認值,字符型字段值全變爲*,數值全部變爲0,而當跳出AT … END AT.語法塊後,工作區內容恢復原樣:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章