在 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 的行。

更新于: 2020-03-12

1K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.