abap 内表的DELETE , READ, SELETE

一.删除重复行:(要先排序后删除,才可以删除完全)

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.
      CLEARlv_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> 值为空,则 统忽略该关键字段。另外可对关键字段指定偏移量和长度。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值