一.删除重复行:(要先排序后删除,才可以删除完全)
SORT itabBY field1 field2.默认是升序,降序-DESCENDING.
DELETE ADJACENT DUPLICATES FROM xxx COMPARING ALL FIELDS.
DELETE IT_Z_ACCT WHERE Z_DESC_CHN = '固定资产净值:' OR Z_DESC_CHN =
'固定资产净额:' OR Z_DESC_CHN = '应交税费'.
SORT IT_Z_ACCT BY Z_X_FROM Z_X_TO Z_DESC_CHN DESCENDING.
DELETE ADJACENT DUPLICATES FROM IT_Z_ACCT COMPARING Z_X_FROM Z_X_TO .
二.选择 selete
SELECT field1 foeld2 field3 INTO CORRESPONDING FIELDS OF TABLE itab FROM setleaf WHERE 条件1 and 条件2 and 条件4.
SELECT field1 foeld2 field3INTOCORRESPONDING FIELDS OF TABLE itab FROM setleaf FOR ALL ENTRIES IN it_gr_info WHERE 条件1 and 条件2 and 条件4.
三.read table 需要注意的
1. 如果使用READ TABLE语句来读取内部表数据,而不是简单看返回值判断是否存在,那么在使用READ TABLE语句之前,一定要记得使用CLEAR语句清空内部表的工作区。
例子:
a. "Get begining balance.
CLEAR: lv_gl_s,lv_gl_h.
READ TABLE it_gl_result INTO lv_gl_s WITH KEY racct = <fs_gl>-racct drcrk = 'S' BINARY SEARCH.
READ TABLE it_gl_result INTO lv_gl_h WITH KEY racct = <fs_gl>-racct drcrk = 'H' BINARY SEARCH.
b. READ TABLE lt_asset_info INTO ls_asset_info index lv_last_line.
2. READ TABLE itab WITH KEY /index 字段= lv BINARY SEARCH.
使用READ TABLE语句的二分法搜索以 代替标准顺 序搜索时, 必须首先按关键字中指定的次序对内表进行排序。如果系统找到匹配指定关键字的多行,则读取索引最低的行。二分法搜索 比线性搜索要快。因此,应尽可能将内表排序并且使用二分法搜索。如果找到有匹配关键字的条目,则将系统字段 SY-SUBRC 设置为0并且 SY-TABIX 包含该行的索引。否则,将 SY-SUBRC 设置为非零。
3. WITH KEY 中的检索条件比较符不能使用‘<>’(不等于)。
如果只想取得内部表中不等于某条件的一条记录,那么请使用下面变通方法。
LOOP AT itab WHERE KEY <> ‘XX’.
此处取得第一条记录。
EXIT.
ENDLOOP.
如果在运行时 <KEY> 值为空,则 统忽略该关键字段。另外可对关键字段指定偏移量和长度。