在插入记录之前,如何检查垂直记录是否已存在

2020-09-09 05:27发布

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

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


亲爱的所有人,

我有一个要求,我需要检查ztable中是否存在现有记录。

如果记录已在ztable中退出,则显示类似"具有相同键的记录已退出的消息,否则我应该插入。"

从表it_delete中插入zdelete_log。

以上我在ztable中插入记录所使用的语句:zdelete_log。实际上,我试图从ztable中删除一条记录,该记录的记录已存在于zdelete_log中。因此,我在此插入查询中获取了转储。我可以使用Modify但 我只想在zdelete_log中插入新记录。

请指导我如何检查记录是否已存在于数据库中。 如果垂直记录已经存在,则无需插入。 否则,插入记录。 如何实现此功能。

致谢

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

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


亲爱的所有人,

我有一个要求,我需要检查ztable中是否存在现有记录。

如果记录已在ztable中退出,则显示类似"具有相同键的记录已退出的消息,否则我应该插入。"

从表it_delete中插入zdelete_log。

以上我在ztable中插入记录所使用的语句:zdelete_log。实际上,我试图从ztable中删除一条记录,该记录的记录已存在于zdelete_log中。因此,我在此插入查询中获取了转储。我可以使用Modify但 我只想在zdelete_log中插入新记录。

请指导我如何检查记录是否已存在于数据库中。 如果垂直记录已经存在,则无需插入。 否则,插入记录。 如何实现此功能。

致谢

付费偷看设置
发送
10条回答
ZJXianG
1楼-- · 2020-09-09 05:53

如果您想检查是否存在行,可以阅读现有条目并将其标记为在zdelete_log中删除

选择* FROM zdelete_log
   插入表@DATA(lt_existing_rows)
    对于it_delete中的所有条目
  WHERE键= it_delete键。

 在这里,您可以遍历it_delete并使用key读取lt_existing_rows
 "如果在lt_existing_rows中找到了密钥,则可以更新数据库行以进行删除
 循环至it_delete ASSIGNING FIELD-SYMBOL()。
   读取表lt_existing_rows WITH KEY key =  -KEY
     INTO DATA(ls_existing_row)。
   如果sy-subrc = 0。
      ls_existing_row-delete_me ='X'。
      从ls_existing_row更新zdelete_log。
   万一。
 结局。
 提交工作。

 
黑丝骑士
2楼-- · 2020-09-09 05:55

您好,

如果您使用的是ABAP 7.4或更高版本,请使用以下选择来检查DB中记录的存在。

从zdelete_log 
中将单个@abaptrue
选择为@data(lv_true)
,其中key = it_delete-key。
如果sy-subrc Eq0。
"记录已存在
endif。

谢谢

Muralikrishnan

CPLASF-自律
3楼-- · 2020-09-09 05:55

你好,

总是用

插入所有内容

从表中插入zdelete_log it_delete接受重复的键。

使用ACCEPTING DUPLICAT KEYS ...现在将不再转储,如果已有行,则sy-subrc = 4,sy-dbcnt将保存新插入的行数

最诚挚的问候,
马蒂亚斯(Matthias)

me_for_i
4楼-- · 2020-09-09 06:16

感谢您的宝贵答复。我已使用此方法接受重复的密钥。

从表中插入zdelete_log it_delete接受重复的键。

但是我的记录消失了。我希望每个记录在zdelete_log中是否存在。应该将其记录在我的zdelete_log表中。总体而言,要删除的每个记录都应该记录在zdelete_log中。/p>

致谢

昵称总是被占用
5楼-- · 2020-09-09 05:53

根据您对Matthias的评论...

,但我的记录消失了。我希望每条记录中是否存在或不存在。  zdelete_log。它应该记录在我的zdelete_log表中。总体上,要删除的每个条目都应该记录在zdelete_log中。
 

我要说的第一个问题是zdelete_log表上的主键错误。 即使保存了多个相似的记录,您也需要一个唯一的键。 您是否考虑过在主键上添加时间戳或计数器?

悠然的二货
6楼-- · 2020-09-09 06:09

嗨,只需转到se38 CTRL + F8,然后单击" ABAP新闻"单选按钮并查看所有新功能。

# p#

嗨,马蒂亚斯,

很抱歉打扰您,但是您能告诉我您在viz-上面写的这段代码吗?

 @DATA(lt_existing_rows)

是吗?

我认为这是一种HANA语法,但是由于我还不知道HANA,您能否告诉我与该代码等效的ABAP?

请与我分享您的知识,将不胜感激。

此致

Dip

一周热门 更多>