通过alv网格插入ztable之前,请检查是否存在重复(主键)。

2020-09-14 04:17发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个Ztable,其中有14...

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

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


我有一个Ztable,其中有14个字段,其中前5个是关键字段。

我也有一个显示alv Grid的z程序。 我们可以通过工具栏上的(+)按钮,通过此Z程序在ztable中添加条目。

因此,当我通过网格输入一堆值(复制粘贴)时,我会通过内部表获得所有值。 预计该itab已经有1万行数据,加上我们通过alv网格添加的数据。

我有itab X,它有1000行,通过ALV GRID,我要插入20行。 因此,它没有1020行。 在提交即插入ztable之前,我应该检查重复项。 z表具有前6个字段作为主键。

键1、2和3是公司代码,销售组织以及通过选择屏幕显示的另一个值,这些值将通过验证得到保护。

我的代码是这样的,但是它允许重复。我想拥有最好的方法。

这是因为我已经按erdat进行了排序,但仍然允许重复。 任何想法都会大有帮助。

 DESCRIBE TABLE datatab_y LINES lv_y。(已经存在,加上新的)
   描述表datatab_x行lv_x。  (已存在于网格中)

 *插入的总行数
 *以为我可以做多次检查

   cnt = lv_y-lv_x。

   由erdat DESCENDING排序SORT datatab_y。

 循环到datatab_y。
 如果datatab_y-key3不是INITIAL。
    在新键上3。
     new_row = sy-tabix。
   Endat。
   在key3的末尾。
     检查sy-tabix> new_row。
     lv_dupflg = datatab_y-key3。
     使用lv_dupflg执行send_dupkey_msg。
   Endat。
 ELSEIF datatab_y-key4不是INITIAL。
    在新钥匙上4。
     new_row = sy-tabix。
   Endat。
   在key4的末尾。
     检查sy-tabix> new_row。
     lv_dupflg = datatab_y-key4。
     使用lv_dupflg执行send_dupkey_msg。
   Endat。
 ENDIF。

4条回答
落灬小鱼
2020-09-14 05:19

如果您希望没有重复项的新数据,则可以执行以下步骤。

数据:lt_list。

数据:lt_list_final。

类似于lt_list_final行的字段符号

浏览lt_list。

读取表lt_list,最后为分配键值= lt_list条目。

如果sy-subrc = 0。

"根据需要在中更改值。因为条目已经存在

其他。

"创建一个新结构并追加到lt_list_final。因为该条目不存在

endif。

endloop。

一周热门 更多>