委外核销单列表与报表不一致问题用友软件股份有限公司姓名张友梅2010年12月客户问题:某销售订单在委外核销单列表查询出的核销数量与委外订单用料分析表的已核销数量不一致。问题分析以下是模拟重现的客户数据,以便于对问题进行讲解。问题分析该委外订单对应委外核销单列表各材料的核销情况。可以看到两个材料的核销数量分别为10。问题分析该委外订单对应用料分析表的记录报表中显示1006这个存货的核销数量只有9。问题分析为什么会有此现象呢?后台查询一下核销的记录。核销单子表两个存货的记录问题分析查询核销单对应的材料出库单收发记录子表中的记录。发现问题!!核销单中一条材料出库单是另外一张委外订单的,数量为1,刚好是两个表的差额。问题分析通过上述数据分析,问题原因应该是委外核销时选择按“委外供应商”归集,导致该订单的入库单与其他订单的材料出库单核销,而委外订单对应用料分析表只统计所查询订单对应的材料出库单的核销情况,因此出现数量不一致。下面再对委外订单对应用料分析表的取值条件进行跟踪,确认一下。问题分析问题分析相关语句如下:selectOM_MOMain.MOID,OM_MOMaterials.cInvCode,sum(OM_MatSettleVouchs.iMSQuantity)asiMSQuantityfromOM_MatSettleVouchswith(nolock)JoinRdRecordswith(nolock)OnOM_MatSettleVouchs.iRdsID=RdRecords.AutoIDJoinOM_MOMaterialswith(nolock)OnRdRecords.iOMoMID=OM_MOMaterials.MOMaterialsIDJOINOM_MODetailswith(nolock)ONOM_MOMaterials.MoDetailsID=OM_MODetails.MoDetailsIDJOINOM_MOMainwith(nolock)ONOM_MOMain.MOID=OM_MODetails.MOIDLEFTJOINInventoryasInventorywith(nolock)ON(OM_MOMaterials.cInvCode=Inventory.cInvCode)LEFTJOINInventoryaspInvwith(nolock)ONOM_MODetails.cInvCode=pInv.cInvCodeLEFTJOINVendorwith(nolock)ONOM_MOMain.cVenCode=Vendor.cVenCodeWhereOM_MatSettleVouchs.cVouchType=N'11'AND1=1And((OM_MOMain.cCode>=N'0100000025')And(OM_MOMain.cCode<=N'0100000025'))GroupbyOM_MOMain.MOID,OM_MOMaterials.cInvCode只统计所过滤的委婉订单生成的材料出库单的核销情况。与刚才分析的原因一直,问题解决。问题总结通过上述案例,可以总结出一种分析问题的思路:当在遇到客户将列表与报表,或者几个报表之间的数据进行对比的问题时,首先需要确认过滤条件是否一致;其次要确认客户所查询的报表取值的方式,很可能由于报表的取值范围不同,而导致查询结果不一致。这并不是数据有问题,而是统计方式不同而已。