在使用新的ABAP代码附加到ITAB中时,如何跳过重复而不进行排序?

2020-08-23 08:10发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

我想将一个表中的条目追加到结构相同的另一张表中,但是append应该跳过重复的条目。 如何使用新的ABAP编码实现它?

示例代码:Image1

预期结果:图片2

此致

Abhishek

image1.jpg (102.6 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

我想将一个表中的条目追加到结构相同的另一张表中,但是append应该跳过重复的条目。 如何使用新的ABAP编码实现它?

示例代码:Image1

预期结果:图片2

此致

Abhishek

image1.jpg (102.6 kB)
付费偷看设置
发送
7条回答
蓋茨
1楼 · 2020-08-23 08:41.采纳回答

这可以使用COLLECT非常简单地完成,但是当您想使用"新"构造函数表达式进行操作时……

您需要混合使用非排序列表和排序列表, 因此,我们来看一个具有标准主键和唯一(在此为哈希)辅助键的表,以及使用对应的重复副本的hack:

 TYPES:BEGIN OF ty_header,
          vbeln TYPE vbeln_va,
        ty_header的结尾。

 带有默认键的ty_header的类型gtt_header类型标准表
         使用唯一的哈希键by_dummy COMPONENTS vbeln。

 DATA(gt_vbeln)= VALUE gtt_header(
                     (vbeln ='4500000029')
                     (vbeln ='4500000028')
                     (vbeln ='4500000027')。

 DATA(gt_vbeln1)= VALUE gtt_header(
                     (vbeln ='4500000026')
                     (vbeln ='4500000030')
                     (vbeln ='4500000029'))。

 gt_vbeln =对应的#(BASE(gt_vbeln)gt_vbeln1 DISCARDING DUPLICATES)。

 声明gt_vbeln = VALUE gtt_header(
                     (vbeln ='4500000029')
                     (vbeln ='4500000028')
                     (vbeln ='4500000027')
                     (vbeln ='4500000026')
                     (vbeln ='4500000030')。)
奄奄一息的小鱼
2楼-- · 2020-08-23 08:43

提及"不进行排序"会忽略这个问题,代码如何在不影响性能的情况下有效地找到重复项?

追夢秋陽
3楼-- · 2020-08-23 08:33

你好,你去

类型:ty_vbeln的开头,
           vbeln TYPE vbeln,
         ty_vbeln的结尾,
        ty_t_vbeln带有唯一键vbeln的ty_vbeln类型排序表。


  DATA(gt_vbeln)=值ty_t_vbeln((vbeln ='10')(vbeln ='11')(vbeln ='12')))。
  DATA(gt_vbeln1)=值ty_t_vbeln((vbeln ='14')(vbeln ='11')(vbeln ='12')))。
  插入过滤线#(gt_vbeln1除外,在gt_vbeln中,vbeln = vbeln)插入表gt_vbeln。
代楠1984
4楼-- · 2020-08-23 08:51

为帮助您,帮助其他人,感谢您佩兰南姆·奇纳塔比姆

类型:ty_header开头,
          vbeln TYPE vbeln_va,
        ty_header的结尾。

 类型带有缺省密钥的ty_header的类型标准表。

 DATA(gt_vbeln)= VALUE gtt_header(
                     (vbeln ='4500000029')
                     (vbeln ='4500000028')
                     (vbeln ='4500000027')。

 DATA(gt_vbeln1)= VALUE gtt_header(
                     (vbeln ='4500000026')
                     (vbeln ='4500000030')
                     (vbeln ='4500000029'))。
槿木_熙
5楼-- · 2020-08-23 08:50

您可以将内部表的内容复制到另一个临时内部表中。 进行排序,检查条目并将其添加到最终表中。

Violet凡
6楼-- · 2020-08-23 08:53

你好桑德拉

这就是我所期望的。 非常感谢。 在我的主要逻辑中,它就像一种魅力。

致谢

Abhishek

小c菟菟
7楼-- · 2020-08-23 08:57

你好 Peranandam Chinnathambi

非常感谢您的答复,但我不想打扰表lt_header的顺序。 如您在Image2中看到的,我想要确切的输出。 仅需要将Lt_header1中的唯一项添加到lt_header1中,并且lt_header不能排序。

致谢

Abhishek

一周热门 更多>