ABAP转储分析

2020-08-14 10:29发布

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

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


专家们,

我们在生产中遇到了转储,其中insert语句无法更新自定义数据库表。包含更新数据库表的条目的内部表是IT_LABELS。 如下面的屏幕截图所示,IT_LABELS包含两个条目:

向下滚动*

我的问题是,这两个条目是表IT_LABELS的内容吗?

如果是这样,因为两个条目相同,这是导致转储的原因。 我已经在数据库表中检查了该条目,但是它仍然不存在。 当内部表源包含相同的条目(相同的主键)时,即使该条目在数据库中尚不存在,insert语句也会失败吗?

(56.0 kB)

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

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


专家们,

我们在生产中遇到了转储,其中insert语句无法更新自定义数据库表。包含更新数据库表的条目的内部表是IT_LABELS。 如下面的屏幕截图所示,IT_LABELS包含两个条目:

向下滚动*

我的问题是,这两个条目是表IT_LABELS的内容吗?

如果是这样,因为两个条目相同,这是导致转储的原因。 我已经在数据库表中检查了该条目,但是它仍然不存在。 当内部表源包含相同的条目(相同的主键)时,即使该条目在数据库中尚不存在,insert语句也会失败吗?

(56.0 kB)
付费偷看设置
发送
4条回答
吹牛啤
1楼 · 2020-08-14 11:13.采纳回答

您好 Katherine Darunday

是的,这些是IT_LABELS表中的条目。

是的,如果违反了主键或唯一索引,则INSERT将失败。

如果您尝试同时插入两个条目,则无论具有相同键的第一条记录是否已在数据库表中,INSERT语句都会失败。 因为对于INSERT,当尝试插入第二条记录时,第一条记录已经在表中。

该语句失败时,不会提交任何数据库更改,因此您无法在DB表中看到任何记录 。

亲切的问候,
Mateusz
SAP小菜
2楼-- · 2020-08-14 11:00

感谢您的澄清,Mateusz!

此致

Kath

CPLASF-自律
3楼-- · 2020-08-14 11:21

当您从未检查的区域(文件,人等)插入数据时,可以将参数ACCEPTING DUPLICATES添加到INSERT语句中

https://help.sap.com/doc/abapdocu_751_index_htm/7.51/zh-cn/ abapinsert_source.htm

大简至美
4楼-- · 2020-08-14 10:57

Katherine Darunday ,带有"接受重复键",在 如果重复项仅在您的内部表中,则只插入第一个唯一记录,所有重复项将被丢弃。 如果数据库和内部表中已经存在重复项,则内部表中的所有重复项将被丢弃。

如果您不使用" ACCEPTING DUPLICATE KEYS",则可以使用CX_SY_OPEN_SQL_DB捕获错误,并且 一旦遇到重复的密钥,插入操作将停止,并且只有第一个唯一记录将在数据库中。

如果您既不使用" ACCEPTING DUPLICATE KEYS",也不捕获错误CX_SY_OPEN_SQL_DB,您将最终获得 您遇到的转储,根本不会插入任何记录。

一周热门 更多>