业务背景:
有一些物料,我们对它收货入库,或在库位中移动时,希望把ERP系统自动它的子物料也一并处理。
比如发动机主体:我们对“发动机主体”收货时,希望也能把“发动机进气管”、“发动机固定螺栓”等子物料一并处理。
如果库管员把“发动机主体”10个收入仓库,我们希望系统自动把“发动机进气管”、“发动机固定螺栓”等子物料10套一并收入仓库。
首先我们准备了一二级物料表,来表示这类物料的父子关系。
然后我们在库管员用MIGO做父物料收货或MB11物料移动时,启用了一个系统的增强“ZMB_DOCUMENT_BADI”,
在这个增强中加入了程序代码,去实现对子物料的同步操作。
症状:
2014-11-11 开始,库管员反映正常的收货,有时系统会没有成功,即使出现了物料凭证,但最终没有完成。
危害:
通常情况下,库管员的物料操作,在看到系统出现凭证后,会手工记录该凭证号,认为操作完成。
但上述错误发生时,因为系统在后台回滚了操作,库管员记录的凭证号其实已经无效,结果应该做的事情没有做。
如果上述错误长期持续,库管员也会对ERP系统也不放心。
错误原因:
按剑钊的意见,问题很可能出在增强程序上。
王顾问的意见:
原因:
我和唐浩花了大量的时间,对顾问的增强程序进行了比较彻底的解剖。最终发现问题出现在顾问对该增强理解不够。
该增强是嵌入标准程序中,只能做一次数据库的更新操作,而顾问的代码对多条数据逐次提交,有几条数据,就要更新几次。
所以当用户一次操作2条以上父物料数据,触发该增强时,必然有2次以上的子物料数据库更新。
这时整个标准程序就会出现错误,导致系统把用户的父物料操作回滚,并出现错误DUMP。
解决方案:
我认为可以这样解耦原设计,分2步来完成:
1. 父物料收货后,系统自动触发增强,增强中只需把父物料收货信息写入一张原始数据表,结束。
2. 写一段代码,系统定时调用,根据原始数据表(父物料)和一二级物料表去处理子物料。
1861

被折叠的 条评论
为什么被折叠?



