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

 

 

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ABAP中,内的增删改查操作可以通过以下几种方式实现: 1. 删除内数据:可以使用DELETE语句来删除内中的数据。DELETE语句可以根据索引或条件来删除内的行。例如,可以使用DELETE TABLE itab FROM wa来删除内itab中的行wa。还可以使用DELETE TABLE itab FROM wa INDEX idx来根据索引idx删除内itab中的行。此外,还可以使用DELETE ADJACENT DUPLICATES FROM itab COMPARING field1 field2来删除内itab中的相邻重复行。 2. 聚集附加:使用COLLECT语句可以将工作区的关键字段值与内中的字段值进行比较。如果相同,则不在内中追加新行,而是将工作区的数值字段值与内中相关行的字段值累加,并将工作区的数值更新到内中的相关行。如果比较后找不到相关行,则将工作区的内容添加到内中。例如,可以使用COLLECT line INTO itab来将工作区line的内容添加到内itab中。 3. 修改内数据:可以通过直接对内的字段进行赋值来修改内中的数据。例如,可以使用itab-field = value来修改内itab中的字段值。 4. 查询内数据:可以使用LOOP语句来遍历内并读取内中的数据。例如,可以使用LOOP AT itab INTO wa来遍历内itab,并将每一行的数据赋值给工作区wa进行处理。 综上所述,通过DELETE语句可以删除内数据,使用COLLECT语句可以聚集附加数据,直接对内字段进行赋值可以修改内数据,而使用LOOP语句可以查询内数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SAP abap分类与增删改查操作](https://blog.csdn.net/weixin_49198221/article/details/125150445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值