发票-运行时错误:DBSQL_DUPLICATE_KEY_ERROR

2020-09-22 18:41发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我真的希望有人能帮助...

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

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


专家们,

我真的希望有人能帮助我。

我的IDES SAP有问题。 当我通过TA VF01创建发票时,SAP会创建发票编号,但是当我尝试打开此发票时,SAP表示此文档不存在,并且我在ST22中有转储。 见下文:

短文本

打开SQL数组插入会在数据库中产生重复的记录。

发生了什么事?

ABAP应用程序错误

当前的ABAP程序" SAPSIPM01"必须终止,因为它已经

遇到不幸的是无法执行的语句。

你能做什么?

记下导致错误的操作和输入。

要进一步处理该问题,请与您的SAP系统联系

管理员。

使用事务ST22进行ABAP转储分析,您可以查看

在并管理终止消息,您也可以

保持很长一段时间。

--------------------------------------

错误分析

发生异常,下面将对其进行详细说明。

异常已分配给类'CX_SY_OPEN_SQL_DB'并且未被捕获

程序

" FLAG_THESE_ITEMS_AS_MARKED""(FORM)",也没有被RAISING传播

子句。

由于程序的调用者无法预料到这一点

例外,当前程序已终止。

发生异常的原因是:

当执行Open SQL数组插入时,尝试插入记录

进入数据库表" IPM_TRANSFER_STA"会导致该函数在以下情况终止

具有相同键的记录已经存在。

(执行Open SQL个人记录插入时,这种情况

不会导致函数终止。 SY-SUBRC改为设置为4。)

如何更正错误

必须防止异常,将其捕获在过程中

" FLAG_THESE_ITEMS_AS_MARKED""(表格)",或

它发生的可能性必须在RAISING子句中声明

在该过程中。

为防止异常,请注意以下几点:

仅在确定没有一个情况下才应使用Open SQL数组插入

指定的记录已存在于数据库中。 如果不能这样

确保,应该拦截异常CX_SY_OPEN_SQL_DB,并且

错误必须得到解决。

Line SourceCde

164

165 ENDIF。

166

167 ENDFORM。 " CALL_RIGHTS_ATTR_MAPPER_BADI

168

169"有一个单独的数据库表,用于保持映射状态

170"此表是IPM_TRANSFER_STA。

171"标记计费项目时,必须修改此表。

172"标记开票项目对应于在此表中插入条目。

173 FORM flag_these_items_as_marked使用iv_billing_doc_no TYPE VBELN_VF

174 it_billing_items类型TABLE_OF_BILLING_ITEMS。

175

176 IPM_TRANSFER_STA的数据lt_transfer_status类型标准表。

177 DATA ls_transfer_status类型IPM_TRANSFER_STA。

178个字段符号:类似于IT_BILLING_ITEMS的行。

179

180"浏览输入项并创建要插入数据库中的条目。

181循环至it_billing_items分配

182

183清除ls_transfer_status。

184

185 ls_transfer_status-vbeln = iv_billing_doc_no。

186 ls_transfer_status-posnr = -posnr。

187 ls_transfer_status-marked ='X'。

188

189 APPEND ls_transfer_status至lt_transfer_status。

190

191结局。

192

193"一次插入所有条目。

>>>>> 从表lt_transfer_status中插入ipm_transfer_sta。

195

196 ENDFORM。 " FLAG_THESE_ITEMS_AS_MARKED

197

我检查了表VBRK,2017年没有创建发票!

请参阅附件:表VBRK和表IPM_TRANSFER_STA

非常感谢您的帮助!

(45.9 kB)