问题现象: | 现在一个账套升上级来后,物料需求计划有个问题: 在物料需求计划中,最新的采购计划是2004-7-3,上面打上了"过期"的标志了,因此在采购订单中不能将剩余的没有参照的存货参照出来,在采购订单参照时,显示的是空的记录.我将数据库中的状态由3(过期)改为2(已审核)也不行;我重新进行mrp运算产生新的采购计划后,里面的表体是空的. 备注: 1、由821升上级来时,这个2004年是单独升级的.当时升上级来时,accinformation中的物料需求计划的启用日期是空的. 2、如果哪位老师用这个数据进行升级测验时,要先删去821下的rdrecords的触发器. 请问如何解决?(客户共有14套账,全有这个问题,并且当时全是单独升2004年的.) |
问题原因: | 升级前数据表物料需求计划主表pp_ppcmain上无自增长主键id,升级时按cperiod字段排序,添加标识种子变量id,由于字段cperiod上数据值为字符型,故升级后id大小不能准确对应采购计划的先后。 例如cperiod=‘采购计划101‘和‘采购计划25‘,采购计划101应晚于采购计划25,升级后其id值应较大才对。但按字符型排序则采购计划101<采购计划25,导致其id反而较小。 升级时对状态字段全部置3,然后对最大id记录状态更新为2,由于id错误,故导致最新的采购计划状态为错误的3,而不是审核状态2。 --根据查询语句及视图可知过滤MRP采购计划的判断条件共有4个: --1、fquantity来源:case when isnull(pp_ppcdetails.iselectquota,0)=0 then pp_ppcdetails.fShQTY else pp_ppcquota.fquantity end as fquantity --pp_ppcdetails.iselectquota:是否配额;pp_ppcdetails.fShQTY:核定数量 --物料需求计划配额表.数量 pp_ppcquota.fquantity --物料需求计划配额表.累计订货数量 pp_ppcquota.fpoquantity --判断数量是否大于累计订货数量:isnull(fquantity,0)>isnull(fpoquantity,0) --2、inventory.bInvEntrust:是否受托代销 --3、pp_ppcmain.iState=2:状态,1-未审核;2-审核;3-执行完毕 --4、pp_ppcmain.id=(select max(id) from pp_ppcmain) 现问题主要发生在3、4上,即状态错误、id错误。 |
解决方案: | 由于升级后数据错误导致参照不出应有的MRP采购计划,现手工调整数据,分析过程如下: 1、调整: 由于id为标识种子,递增变量为1,无法直接update该字段。 首先从企业管理器手工去掉pp_ppcmain上字段id的主键标识,设置标识为否; 再在查询分析器中执行下面sql脚本: update pp_ppcmain set id=substring(cperiod,5,len(cperiod)) update pp_ppcdetails set id=substring(cperiod,5,len(cperiod)) update pp_ppcmain set istate=3 update pp_ppcmain set istate=2 where id=(select max(id) from pp_ppcmain) 然后在企业管理器中对数据表pp_ppcmain恢复主键信息,即设置id字段为主键,并设置为标识种子,递增变量为1即可。 2、问题的避免: a.使升级前所有的采购计划执行完毕; b.升级后新增预测单等等,执行新的MRP运算即可。 |
相关补丁: | |
版本: | 8.51A |
模块: | 物料需求 |
产品: | U851A----物料需求计划 |
问题名称: | 821升级851A后物料需求计划数据错误问题 |
最后更新: | 2005-06-28 00:00:00 |