在SAP ABAP中抑制经典报表和ALV报表中的重复条目
要删除内部表中相邻的重复条目,可以使用以下命令:
DELETE ADJACENT DUPLICATE ENTRIES FROM <itab> [COMPARING <f1> <f 2> ... |ALL FIELDS].
此外,请考虑以下几点:
- 系统将删除内部表<itab>中所有相邻的重复条目。如果条目满足以下比较条件之一,则它们是重复的。
- 如果没有COMPARING附加条件,则表主键字段的内容在两行中必须相同。
- 如果使用附加条件COMPARING <f1> <f 2> ...,则指定字段<f 1 > <f 2 > ...的内容在两行中必须相同。您也可以动态地将字段<f i >指定为字段<n i >的内容,格式为(<n i >)。如果语句执行时<n i >为空,则忽略它。您可以通过指定偏移量和长度来限制对部分字段的搜索。
- 如果使用附加条件COMPARING ALL FIELDS,则两行的所有字段的内容必须相同。
- 如果表已按指定的比较条件排序,则可以使用此语句删除内部表中的所有重复条目。
- 如果至少删除了一行,系统会将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.
输出
输出结果为:
2 4 4 16
程序使用平方数列表填充哈希表。DELETE语句删除表中键字段COL1内容为1或3的行。
示例
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. DELETE ITAB WHERE ( COL2 > 1 ) AND ( COL1 < 4 ). LOOP AT ITAB INTO LINE. WRITE: / LINE-COL1, LINE-COL2. ENDLOOP.
输出
输出结果为:
1 1 4 16
程序使用平方数列表填充哈希表。DELETE语句删除表中字段COL2的内容大于1且字段COL1的内容小于4的行。
广告
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP