You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将内表重复项的索引存入每行的嵌套内表?

修改ABAP内表重复项索引存储格式为嵌套内表结构

原代码问题

原代码将重复项的索引拼接成单个字符串存入结果表的一行,现在需要调整为每行对应一个嵌套内表,每个索引单独作为嵌套内表的一行。

修改后的完整代码

TYPES: BEGIN OF ty_duplicates,
         id TYPE i,
       END OF ty_duplicates.
TYPES: _duplicates TYPE STANDARD TABLE OF ty_duplicates WITH NON-UNIQUE DEFAULT KEY,
       ty_index_table TYPE STANDARD TABLE OF i WITH DEFAULT KEY,
       ty_nested_indices TYPE STANDARD TABLE OF ty_index_table WITH DEFAULT KEY.

DATA(table_with_duplicates) = VALUE _duplicates( ( id = 1 ) ( id = 2 ) ( id = 1 ) ( id = 3 ) ( id = 3 ) ).

DATA(duplicates) = VALUE ty_nested_indices( 
  FOR GROUPS <group> OF <line> IN table_with_duplicates
  GROUP BY ( id = <line>-id size = GROUP SIZE )
  ( LINES OF COND #( 
      WHEN <group>-size > 1 
      THEN VALUE ty_index_table( FOR <line2> IN GROUP <group> INDEX INTO idx ( idx ) )
    ) 
  )
).

cl_demo_output=>display_data(
  EXPORTING
    value = duplicates
).

关键改动说明

  • 新增嵌套表类型:定义ty_index_table存储单个重复组的所有索引,ty_nested_indices作为最终结果的外层表,每行是一个ty_index_table类型的嵌套内表。
  • 移除字符串拼接逻辑:不再使用concat_lines_of拼接索引,而是直接通过循环分组内的行,为每个重复组生成独立的索引内表。
  • 保留重复组过滤:依然通过GROUP SIZE > 1筛选出存在重复的分组,无重复的项不会被纳入结果。

运行结果

最终duplicates内表结构与预期一致:

  • 第一行嵌套内表包含索引1、3(对应id=1的重复项)
  • 第二行嵌套内表包含索引4、5(对应id=3的重复项)

内容的提问来源于stack exchange,提问作者SBECK1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:34:58