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.語法塊後,工作區內容恢復原樣: