本文概述了金蝶云星空产品成本核算模块中产品盘点异常中断问题。问题由在产品盘点过程中的数据不一致触发,涉及多个数据源如投入产量、期初在产等。解决方案包括后台数据排查,通过临时表记录异常数据,分析数据来源,并排查工单与入库单据不匹配等问题。需技术人员掌握SQL及业务知识排查。
现象描述:
在用户使用金蝶云星空产品成本核算模块的过程中,我们经常会发现一类问题:
在产品盘点异常中断,或者成本计算的过程中出现了如下所示的异常中断:
此错误,由Kingdee.K3.FIN.CB.App.Core.ProductingCountService 类触发;
原因分析:
这个异常的中断,就是在产品盘点发生异常引起的,因为在成本计算的过程中,我们也会自动进行一次在产品盘点,为成本计算数据做数据准备;
针对以上发生的错误,我们提供如下后台数据排查方案:
1、在产品的原理,是汇总如下的数据源:
a) 本期投入:投入产量归集
b) 期初在产:来源于上期结转的期初工单信息
c) 本期调整:期初在产品成本调整
d) 本期完工:生产入库/委外入库等
将以上4种数据源的数据,按照工单的维度信息进行汇总;
理论上,一张工单一行分录,只能对应一行在产品盘点数据信息;
如果数据源,按照指定规则汇总的数据,一张工单一行分录对应了多行在产品盘点数据行的时候,在后续的数据状态更新的过程中,就会发生如上所示的中断信息:
产生以上数据源的具体原因有很多,类似:
1、客户自己二开,将生产入库和生产工单的信息不匹配;
2、产品在某些业务流程上的控制不严谨,导致工单下达时的车间与生产入库时的车间不一致;
3、用户放开了某些处于明显锁定状态的操作,导致生产工单行号与入库单据上记录的工单行号不一致;
4、某些二开来源的工单甚至会发生工单物料和入库物料不一致的问题;
等等,产生问题的原因,视不同的业务场景,可能性有很多;
解决办法:
1、在V7.2版本之后,如果产品出现了这种异常,我们会将后台明细数据记录到临时表,并且将临时表名记录到应用服务器的日志文件(实施人员可以进金蝶云星空的安装目录K3Cloud\WebSite\App_Data\Log查找日志文件),在发生错误时间点的日志文件中会有如下记录:
“当前异常数据保存的临时表为:TMP****************”
记录数据的表,是临时表,通常在后台会保留24小时(24小时之后会被清除临时表服务清理);
这个数据表记录的是明细的数据源,也就是说,实施人员在掌握SQL的情况下,可以将此处的明细数据按照指定的规则汇总,如果出现了一张工单对应2行数据无法合并的情况,就代表这一行工单的数据来源出现了问题,参考如下:
首先按照指定条件查询临时表的数据:
如果出现了异常数据,有如下结果:
这就代表,当前这张工单的这一行数据,出现2种不同的数据来源;
进一步排查,找出当前这多行数据来源:
结果如下:
可以看到,这张工单,有2种数据来源:
基本可以预见:-51是因为生产入库没有投入数量,所以在制是负数;
另外的在制是51,代表本期有下达数量51,但是没有完工,所以在制是51;
并且这行明细,工单编号和行号都是一致的,但是FPROORDERENTRYID(生产工单分录内码)不一致,所以导致了在产品盘点数据分行;
接下来的事情,就是属于需要在业务端去排查,为什么生产入库单和生产工单关联的分录内码不一致的问题;上述我们分析的数据最后沟通,发现是客户自己做了二开,生产入库单的来源并不是单据转换,而是通过第三方接口生成的;需要他们进一步排查已有的二开功能。
备注:在知道明细数据,判定重复数据的时候,有很多种原因,有可能是工单行号的分录不匹配,有可能是成本中心不一致,也有可能是产品内码不一致,还有出现了其他都一致,但是工单内码不一致的(如上述例);需要排查人员自己对业务数据有很好的掌握和判断;
需要排查的字段,可以按照我上述列举的:
FPROORDERNO,FPROORDERSEQ,FCOSTCENTERID,FPRODUCTID,FPROORDERENTRYID
依次为:工单编号,工单行号,成本中心,产品内码,工单分录内码
处理上述问题一般针对实施或者技术人员:如果按照上述处理还不能发现问题,请联系提单研发中心;
推荐阅读