ABAP delete duplicate的用法指南
来源:互联网 发布:协作办公平台 知乎 编辑:程序博客网 时间:2024/06/10 21:05
DELETE TABLE <itab> FROM <wa>.
or
DELETE TABLE <itab> WITH TABLE KEY <k1> = <f 1> ... <k n> = <f n>.
根据条件删除内表中的一行数据
DELETE <itab> WHERE <cond>.
根据条件删除内表中的多行数据
DELETE ADJACENT DUPLICATE ENTRIES FROM <itab>
[COMPARING <f1> <f 2> ...
|ALL FIELDS].
删除相邻行的重复项,保留第一条记录
1、如果没有定义non-nuique键,并且在删除的时候没有指定条件,则将比较所有的字段;等同于比较
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING ALL FIELDS
定义non-unique字段方式如下:
DATA ITAB LIKE STANDARD TABLE OF LINE
WITH NON-UNIQUE KEY COL2.
2、如果有non-unique键,则在没有删除的比较条件时比较该key,删除相邻的重复项。
3、可以使用指定条件进行比较处理 COMPARING <f1> <f 2> ... ,此时,需要所有指定字段在相邻处相同,否则不会删除。
当然在此也可以使用动态的方式指定比较的内容,下面的例子二我做了一个简单的测试,仅供参考。
其他补充说明:
如果对比较的字段进行了事先的排序,则可以将所有该字段重复的行全部删除。
如果至少删除成功一条,则sy-subrc返回0,否则返回4.
下面将是两个例子:
例子一:
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA ITAB LIKE HASHED TABLE OF LINE WITH UNIQUE KEY COL1.
DO 4 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
INSERT LINE INTO TABLE ITAB.
ENDDO.
LINE-COL1 = 1.
DELETE TABLE ITAB: FROM LINE,
WITH TABLE KEY COL1 = 3.
LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2.
ENDLOOP.
例子二:
DATA OFF TYPE I.
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE C,
col3 type c,
END OF LINE.
DATA ITAB LIKE STANDARD TABLE OF LINE
WITH NON-UNIQUE KEY COL2.
LINE-COL1 = 1. LINE-COL2 = 'A'. line-col3 = '9'. APPEND LINE TO ITAB.
LINE-COL1 = 1. LINE-COL2 = 'A'. line-col3 = '9'. APPEND LINE TO ITAB.
LINE-COL1 = 1. LINE-COL2 = 'B'. line-col3 = '9'. APPEND LINE TO ITAB.
LINE-COL1 = 2. LINE-COL2 = 'B'. line-col3 = '9'. APPEND LINE TO ITAB.
LINE-COL1 = 3. LINE-COL2 = 'B'. line-col3 = '8'. APPEND LINE TO ITAB.
LINE-COL1 = 4. LINE-COL2 = 'B'. line-col3 = '9'. APPEND LINE TO ITAB.
LINE-COL1 = 5. LINE-COL2 = 'A'. line-col3 = '9'. APPEND LINE TO ITAB.
OFF = 0.
PERFORM LIST.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING ALL FIELDS.
OFF = 30.
PERFORM LIST.
DELETE ADJACENT DUPLICATES FROM ITAB COMPARING col1 col3.
OFF = 60.
PERFORM LIST.
DELETE ADJACENT DUPLICATES FROM ITAB.
*data:col(4) type c.
*FIELD-SYMBOLS: <fs-lydn> type ANY.
*col = 'col1'.
*ASSIGN col to <fs-lydn>.
*DELETE ADJACENT DUPLICATES FROM ITAB COMPARING (<fs-lydn>) col3.
*OFF = 60.
*PERFORM LIST.
*DELETE ADJACENT DUPLICATES FROM ITAB.
OFF = 90.
PERFORM LIST.
FORM LIST.
SKIP TO LINE 3.
LOOP AT ITAB INTO LINE.
WRITE: AT /OFF LINE-COL1, LINE-COL2,line-col3.
ENDLOOP.
ENDFORM.
- ABAP delete duplicate的用法指南
- ABAP delete duplicate的用法指南
- ABAP delete的用法
- ABAP delete的用法
- [abap] 'REUSE_ALV_GRID_DISPLAY_LVC' 的用法
- [abap] 'REUSE_ALV_GRID_DISPLAY_LVC' 的用法
- ABAP Modify 的用法
- abap 内表的DELETE , READ, SELETE
- abap 内表的DELETE , READ, SELETE
- new/delete 的用法
- JavaScript 的 delete 用法
- JavaScript 的 delete 用法
- delete this的用法
- delete this的用法
- new, delete 的用法
- JavaScript:delete的用法
- 【JavaScript】delete的用法
- ABAP中COLLECT的用法
- 动态创建Menu 菜单
- ACM 进阶之路
- 计算机程序员的表白(转)
- Virtual(虚拟)
- synchronized关键字用法简述
- ABAP delete duplicate的用法指南
- PHP招聘:如何面试应届生求职者
- Sealed(密封)
- 《新京报》版面推荐《正在爆发的互联网革命》一书
- 怎样使用Eclipse来开发Android源码
- Abstract(抽象)
- 在ORACLE和sql server中简单备份table的方法
- 风声再起,Cell10周年超值优惠
- C#类的修饰符