本文描述了在更新库存时遇到的唯一索引冲突问题,原因包括库存单位与物料单位不一致、并发冲突等。解决方案包括检查和修改历史库存单据、库存余额表、即时库存表的单位设置,并处理映射错误。通过数据库查询和更新即时库存表中的库存辅单位,确保与物料单位一致,从而解决库存更新失败的问题。
一、错误现象
更新库存失败,即时库存表唯一索引冲突,可能原因:
1、存在历史库存单据的基本单位或库存辅单位与物料的基本单位或辅助单位不一致,建议修复方式:
(1)更改历史库存单据的基本单位或库存辅单位等于物料的基本单位或辅助单位;
(2)更改库存余额表的基本单位或库存辅单位等于物料的基本单位或辅助单位;
(3)更改即时库存表的基本单位或库存辅单位或库存单位等于物料的基本单位或辅助单位或库存单位;
(4)检查单据转换路线是否存在映射错误,建议配置为物料.基本单位->基本单位,物料.辅助单位->库存辅单位。
2、存在并发冲突,请稍后重试;
3、其他原因,请提数据处理提单进行分析。
二、原因查找
1、查找单据上的物料,打开即时库存明细表(需要在【过滤】-【显示隐藏列】中,勾选显示基本单位、库存辅单位),然后核对即时库存明细表中物料数据的基本单位和辅助单位是否和物料上的基本单位和辅助单位一致。
即时库存明细表数据:
物料数据上单位:
由于物料上的辅助单位信息和即时库存明细表中的库存辅单位信息不一致,所以导致出库单据保存提交审核的时候报出以上错误。
三、解决办法
打开数据库,修改即时库存表中的库存辅单位和物料上的单位信息一致。
1、根据物料编码查询物料内码(FMATERIALID)、物料基本单位内码(FBASEUNITID)、物料库存单位内码(FSTOREUNITID)、物料辅助单位内码(FAUXUNITID)
代码:select t0.FMATERIALID,t1.FBASEUNITID,t2.FSTOREUNITID,t2.FAUXUNITID from T_BD_MATERIAL t0
inner join T_BD_MATERIALBASE t1 on t0.FMATERIALID=t1.FMATERIALID
inner join T_BD_MATERIALSTOCK t2 on t0.FMATERIALID=t2.FMATERIALID
where t0.FNUMBER='所查物料的物料编码'
表:物料表T_BD_MATERIAL,物料基本信息页签表T_BD_MATERIALBASE,物料库存信息页签表T_BD_MATERIALSTOCK
2、更新即时库存表上的库存辅单位和物料上的辅助单位相一致。(本例中查询到物料内码为100030,物料上辅助单位内码为0)
先查询即时库存表上该物料的数据,代码:select * from T_STK_INVENTORY where FMATERIALID=100030
更新即时库存表上库存辅单位的信息,代码:update T_STK_INVENTORY set FSECUNITID=0 where FMATERIALID=100030
即时库存表:T_STK_INVENTORY,即时库存表上库存辅单位字段:FSECUNITID,如果是实际问题中可根据查询到的信息修改FSECUNITID=0为FSECUNITID=查询到的辅助单位内码即可。
执行成功后,单据可正常保存提交审核。
推荐阅读