造成DUMP SAPSQL_ARRAY_INSERT_DUPREC的两个原因

观察:

用户BATCH01每天都爆出30多个dump SAPSQL_ARRAY_INSERT_DUPREC

先来看一下ST22的错误分析

关键字:  

"SAPSQL_ARRAY_INSERT_DUPREC"

"CX_SY_OPEN_SQL_DB" "SAPLV05I" or "LV05IU15" 

"SD_PARTNER_UPDATE"

 

代码出错位置(注意其中的VBPA,后面要用到):

 

可能原因一:

SD Number Range爆掉了..用SNRO检查Object RV_BELEG

然后分别检查表VBUP VBUK LIPS LIKP VBAP是否已经用完分配的number range

如果是这个原因的话,解决方法:

1. Archiving of the old deliveries

2. Assignment of an unused number range to the corresponding delivery type (e.g. transaction 0VLK).

 

可能原因二(较常出现):

先来看一下SM13的update error,发现与ST22的dumps完全匹配. 该用户在使用VA02时,无法将某些表内容更新进去.


点击随便一个update error

进入FM RV_SALES_DOCUMENT_UPDATE,记得前面说的表VBPA吗,就是在这里出的错,所以我们要点击table FXVBPA 

注意比较最后一行70,它有2行PA值都为"PY",而其他项目则是PA=BP, PA=PY  [PA即Partner Function]

再来看看table VBPA, 70行已经有一个RG了(就是PY),无法再插入同一个PY,所以更新失败了!!!

回到table FXVBPA,找字段UPDKZ, 发现其他行都为空,只有70行是"I",说明这里更新失败

("I": The entry should be included again in the database.

 " ":  The entry should not be changed in the database.)

MAN VBELN      POSNR   PA   KUNNR UPDKZ

500 2717          000050    BP    174

500 2717          000050    PY    174

500 2717          000060    BP    174

500 2717          000060    PY    174

500 2717          000070    PY    174

5002717          000070    PY    174            I               <--- root cause here

 

原因找到了..接下来说说如何继续排查到底是如何导致有2个相同的parter function

1.先来验证是否是user exits有问题

可以在program MV45AFZZ, MV45AFZA, MV45AFZB中的FORM最上面插入如下代码:

CHECK SY-UNAME <> 'SAPWALLD'. (或任何你可以使用的用户名).

如此一来,该用户跳过写在这些程序中的user exits,然后检查是否该用户在使用VA02时有同样的dump

 

如果果然是user exits出了问题,则需要检查写在program MV45AFZZ, MV45AFZA, MV45AFZB中的user exits

特别是"USEREXIT_SAVE_DOCUMENT"和"USEREXIT_SAVE_DOCUMENT_PREPARE"

 

SAP Note:

178328  Problems due to incorrect user exits in SD

207934  Update termination in RV_SALES_DOCUMENT_ADD/RV_SALES_DOCUMEN

转载于:https://www.cnblogs.com/lazymango/archive/2010/11/11/1874449.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值