SAP ABAP开发过程中如何高效率从内表中获取不重复记录?

在SAP ERP系统开发过程中,经常会遇到需要将大量数据从数据库表中提取,储存在内表中,供进一步处理之用。而在这个内表中,有时候存在大量重复的记录,若要从中得到唯一记录,有以下三种方法:

方法一: 内部表循环赋值,使用COLLECT语句追加记录

方法二: 内部表循环赋值,使用AT NEW和APPEND语句追加记录

方法三: 整个内部表赋值,使用DELETE ADJACENT DUPLICATES语句删除重复记录

      以上三种方法,在内表记录数不多的情况下,对系统运行影响不大,但若遇到内表记录数众多,则不同方法对系统运行性能将产生一定影响,以下是一个测试程序,测试结果,方法三是系统运行效率最高的。

REPORT y_test_temp1 .

DATA: t1 TYPE i,
      t2 TYPE i,
      times TYPE i.
TABLES: marc.

DATA: BEGIN OF it_marc OCCURS 0,
        matnr LIKE marc-matnr,
        werks LIKE marc-werks,
      END OF it_marc.

DATA: BEGIN OF it_mara OCCURS 0,
        matnr LIKE mara-matnr,
      END OF it_mara.

SELECT matnr werks
        INTO TABLE it_marc
             FROM marc
               WHERE werks = '1005'.

DO 10 TIMES. "运行10次看平均结果
  REFRESH it_mara.
* 方法一
  GET RUN TIME FIELD t1.
  LOOP AT it_marc.“在内表中循环通过collect语句得到不重复记录
    CLEAR it_mara.
    it_mara-matnr = it_marc-matnr.
    COLLECT it_mara.
  ENDLOOP.

  GET RUN TIME FIELD t2.
  times = t2 - t1.
  WRITE: AT /1 times.

* 方法二
  SORT it_marc BY matnr."按物料排序
  GET RUN TIME FIELD t1.
  LOOP AT it_marc.
    AT NEW matnr. ”当新的物料出现时得到此记录
      CLEAR it_mara.
      it_mara-matnr = it_marc-matnr.
      APPEND it_mara.
    ENDAT.
  ENDLOOP.

  GET RUN TIME FIELD t2.
  times = t2 - t1.
  WRITE: times.

* 方法三:
  it_mara[] = it_marc[].
  GET RUN TIME FIELD t1.

  DELETE ADJACENT DUPLICATES 
        FROM it_mara     COMPARING matnr.“在内表中删除重复记录
  GET RUN TIME FIELD t2.
  times = t2 - t1.
  WRITE: times.
  NEW-LINE.
ENDDO.

相关推荐

  1. 存储过程获取数据库名称

    2024-06-13 14:52:01       32 阅读
  2. 如何记录游戏开发过程的日志

    2024-06-13 14:52:01       36 阅读
  3. Python重要阶函数

    2024-06-13 14:52:01       22 阅读
  4. 记录些实际应用开发过程的prompt

    2024-06-13 14:52:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 14:52:01       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 14:52:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 14:52:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 14:52:01       18 阅读

热门阅读

  1. 正则表达式30分钟入门教程

    2024-06-13 14:52:01       9 阅读
  2. MySQL数据类型

    2024-06-13 14:52:01       7 阅读
  3. C语言题目:排序问题2

    2024-06-13 14:52:01       3 阅读
  4. pytest中token的一种处理方法

    2024-06-13 14:52:01       7 阅读
  5. 算法设计与分析复习(第7章 贪心法)

    2024-06-13 14:52:01       6 阅读