当前位置: 首页 > article >正文

如何获取 ABAP 内表中的重复项

要识别 ABAP 内表中的重复项,可以结合使用排序和循环。下面的示例展示了如何查找内部表中的重复条目:

DATA: BEGIN OF itab OCCURS 0,
        field1 TYPE i,
        field2 TYPE c LENGTH 10,
      END OF itab,
      wa LIKE LINE OF itab.

* Add sample data to internal table
itab-field1 = 1. itab-field2 = 'A'. APPEND itab.
itab-field1 = 2. itab-field2 = 'B'. APPEND itab.
itab-field1 = 1. itab-field2 = 'A'. APPEND itab.
itab-field1 = 3. itab-field2 = 'C'. APPEND itab.
itab-field1 = 2. itab-field2 = 'B'. APPEND itab.

* Sort internal table by the fields you want to check duplicates for
SORT itab BY field1 field2.

* Compare current record with

在 ABAP 中,您可以使用简单的逻辑来识别和显示内表中的重复数据。一种常见的方法是使用 SORTDELETE ADJACENT DUPLICATES 来标记或分离重复数据。但是,如果要保留重复数据以作进一步处理或显示,则可以使用另一种使用循环的方法。

下面的示例展示了如何查找和显示内表中的重复数据:

TYPES: BEGIN OF ty_data,
         id   TYPE i,
         name TYPE string,
       END OF ty_data.

DATA: lt_table TYPE TABLE OF ty_data,
      ls_table TYPE ty_data,
      lt_duplicates TYPE TABLE OF ty_data.

" Populate the internal table with test data
APPEND VALUE #( id = 1 name = 'John' ) TO lt_table.
APPEND VALUE #( id = 2 name = 'Jane' ) TO lt_table.
APPEND VALUE #( id = 3 name = 'John' ) TO lt_table.
APPEND VALUE #( id = 4 name = 'Alice' ) TO lt_table.
APPEND VALUE #( id = 5 name = 'Jane' ) TO lt_table.
APPEND VALUE #( id = 6 name = 'John' ) TO lt_table.

" Sort the internal table by name or ID to find duplicates
SORT lt_table BY name.

" Loop through the table to find duplicates
LOOP AT lt_table INTO ls_table.
  AT END OF name.
    IF sy-tabix - sy-tabbix > 1.
      LOOP AT lt_table FROM sy-tabbix TO sy-tabix INTO ls_table.
        APPEND ls_table TO lt_duplicates.
      ENDLOOP.
    ENDIF.
  ENDAT.
ENDLOOP.

" Display the duplicates
LOOP AT lt_duplicates INTO ls_table.
  WRITE: / 'Duplicate:', ls_table-id, ls_table-name.
ENDLOOP.

说明:

  1. 内部表(lt_table): 该表存储数据记录。
  2. 排序: 该表按预计会发现重复记录的列(本例中 name )排序。
  3. 使用 AT END OF 循环:检查一组记录是否具有相同的键(本例中 name)。如果发现某个键有多条记录,这些条目就会被识别为重复。
  4. 重复处理: 如果发现重复记录,则将其收集到 lt_duplicates 表中。
  5. 显示: 然后使用 LOOP 显示重复数据。
    这种方法可确保检测到重复数据,并将其存储在单独的内部表中,以便进一步处理。

http://www.kler.cn/a/450664.html

相关文章:

  • GTID下复制问题和解决
  • vue3标签中的ref属性如何使用$refs获取元素
  • 谷歌浏览器的网络连接问题解决方案
  • Linux网络——网络基础
  • 完整微服务设计 功能实现
  • java如何使用poi-tl在word模板里渲染多张图片
  • springboot容器无法获取@Autowired对象,报null对象空指针问题的解决方式
  • VSCode+WSL作为IDE开发和管理深度学习项目
  • 低代码软件搭建自学第二天——构建拖拽功能
  • SparkSQL与Hive语法差异
  • 畅捷通T+13管理员密码任意重置漏洞
  • 【C++动态规划 前缀和】937. 扣分后的最大得分|2105
  • 5、mysql的读写分离
  • 使用QML实现播放器进度条效果
  • spring mvcservlet跳转页面没有样式效果
  • ubuntu安装nginx
  • leetcode之hot100---24两两交换链表中的节点(C++)
  • Ubuntu离线安装Docker容器
  • vscode添加全局宏定义
  • 青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
  • AI如何进行风险控制:深度解析与实战应用
  • 开源模型应用落地-LlamaIndex学习之旅-Agents-用自然语言构建Agent(一)
  • Linux -- 线程的优点、pthread 线程库
  • 南海区2021年C++甲组真题第3题——Excel地址
  • 【C# 联合halcon实现绘制箭头】
  • 【C语言】`free` 函数详细讲解