工序在制状况表统计错误分析cc133engineer2009/12/17问题描述872,生产订单三道工序,第1工序加工100转第1道合格工序100,转第2道委外工序,委外发100,收料合格60个,工序在制状况表加工数量是-60检验数量60。(该委外工序需要质检)报表格式排查首先我们从格式显示角度做下分析,是不是显示格式出错导致?打开单据显示界面,在格式显示页面检查,恢复默认格式确认下。保存后再次打开仍然出错,排除格式原因。跟踪确认之后,格式原因排除后,需要确认下该表的“加工数量”的来源,跟踪确认数据归集过程:SELECTmom_order.MoCodeAS生产订单,mom_orderdetail.SortSeqAS行号,convert(nvarchar(40),casewhencoalesce(mom_remorder.MoDId,0)<>0then'重复计划'whenmom_orderdetail.MoClass=1then'标准'whenmom_orderdetail.MoClass=2then'非标准'else''end)AS订单类型,v_bas_inventory.InvCodeAS物料编码,v_bas_inventory.InvAddCodeAS物料代号,v_bas_inventory.InvNameAS物料名称,v_bas_inventory.ComUnitNameas计量单位,mom_orderdetail.Qtyas生产数量,mom_remorder.DailyQtyas日产量,mom_remorder.OrgDaysas加工天数,coalesce(mom_morder.StartDate,mom_remorder.FUSD)as开工日期,coalesce(mom_morder.DueDate,mom_remorder.LUCD)as完工日期,mom_orderdetail.OrderCodeASOrderCode,mom_orderdetail.OrderSeqASOrderSeq,md.cDepCodeas生产部门,md.cDepNameas部门名称,cm.cCusCodeas客户编码,cm.cCusNameas客户名称,mt.MotypeCodeas订单类别,mt.Descriptionas类别说明,mr.cReasonCodeas原因码,mr.cReasonNameas原因说明,mom_orderdetail.ChangeRateAS换算率,mom_orderdetail.AuxQtyAS辅助数量,mom_remorder.AuxDailyQtyAS辅助日产量,a.cComUnitNameAS辅助单位,convert(nvarchar(40),casemom_orderdetail.Statuswhen3then'审核'when4then'关闭'else''end)AS状态,sfc_moroutingdetail.StartDateAS工序开工日期,sfc_moroutingdetail.DueDateAS工序完工日期,sfc_moroutingdetail.BalMachiningQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS加工数量,sfc_moroutingdetail.BalDeclareQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS检验数量,sfc_moroutingdetail.BalQualifiedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS合格数量,sfc_moroutingdetail.BalRefusedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS拒绝数量,(sfc_moroutingdetail.BalScrapQty/isnull(sfc_moroutingdetail.ChangeRate,1))AS报废数量,sfc_moroutingdetail.QualifiedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS完成数量,sfc_moroutingdetail.RefusedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS累计拒绝数量,sfc_moroutingdetail.ScrapQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS累计报废数量,(mom_orderdetail.Qty-sfc_moroutingdetail.QualifiedQty)/isnull(sfc_moroutingdetail.ChangeRate,1)AS未完成量,intotempdb..TMPUF_34508735_heron86535053_CCPJFROMsfc_morouting分析跟踪记录找到归集的核心语句:isnull(sfc_moroutingdetail.ChangeRate,1)AS加工数量,sfc_moroutingdetail.BalDeclareQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS检验数量,sfc_moroutingdetail.BalQualifiedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS合格数量,sfc_moroutingdetail.BalRefusedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS拒绝数量,(sfc_moroutingdetail.BalScrapQty/isnull(sfc_moroutingdetail.ChangeRate,1))AS报废数量,sfc_moroutingdetail.QualifiedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS完成数量,sfc_moroutingdetail.RefusedQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS累计拒绝数量,sfc_moroutingdetail.ScrapQty/isnull(sfc_moroutingdetail.ChangeRate,1)AS累计报废数量,(mom_orderdetail.Qty-sfc_moroutingdetail.QualifiedQty)/isnull(sfc_moroutingdetail.ChangeRate,1)AS未完成量,以上为报表各数量值的来源,确认加工数量来自于sfc_moroutingdetail里的BalDeclareQty值,找到报表取值根源。调整错误记录根据订单记录查找到该数据表里的信息,进行修改。由于sfc_moroutingdetail与生产订单是根据moid关联,所以需要先确认moid值。selectmoid,*frommom_orderwheremocode=‘0000000032’,得到该订单moid的值为37.该工序的加工数量是100-60=40修正为正确值。updatesfc_moroutingdetailsetBalMachiningQty=40wheremoid=37再次确认结果,正确!!问题总结问题产生原因分析:做完委外发料后系统应该更新sfc_moroutingdetail里BalMachiningQty值,本次的发料没有更新,导致本次错误产生。希望对大家遇到此类问题时能拓展下思路。