本文描述了作者在销售订单上添加大量自定义字段后,通过MRP(物料需求计划)带到计划订单上引发的多个报错问题及其解决方法。主要报错包括MRP需求模型字段映射不全、MRP运算单据上“单选辅助资料列表”字段未维护“辅助资料类型”属性等。解决方法涉及维护字段映射、完善字段属性、清理运算日志冲突及重启IIS服务。作者提供的解决策略旨在帮助读者在遇到类似问题时作为参考。
近期因为客户的要求,我在销售订单上添加了大量自定义字段.通过MRP带到计划订单上,由于添加自定义字段过多,导致最后测试的时,MRP频频报错,巧合之下解决了问题。现在我简单写一下我遇到的报错内容和我的解决办法供大家在遇到类似问题时参考,如有错误、误导及不尽之处,请各位大佬批评指正。
报错一:
source:INSERT /*+append*/ INTO T_MRP_DEMANDDATA(FID,FENTRYID,FMATERIALID,FPARENTFORMID,FPARENTINTERID,FPARENTENTRYID,FPARENTBILLNO,FBASEDEMANDQTY,FDEMANDDATE,FSRCFORMID,FSRCINTERID,FSRCENTRYID,FSRCBILLNO,FPRIORITY,FRELATIONFORMID,FRELATIONINTERID,FRELATIONENTRYID,FRELATIONBILLNO,FDEMANDDAYID,FBASEORDERQTY,FMERGEROWID,FBASEGROSSQTY,FPLANSTARTDATE,FPLANFINISHDATE,FCOMPUTEID,FRESERVETYPE,FBASEEXECQTY,FUNITID,FGROSSQTY,FEXECQTY,FDEMANDQTY,FORDERQTY,FORGID,FDATE,FRELATIONENTRYSEQ,FBASEQTY,FQTY,FROWID,FPARENTROWID,FSRCROWID,FBASEUNITID,FBASEPARENTDEMANDQTY,FDATASOURCE,FKAIXIANG,F_MENJIEGOU,F_YANSE,F_SUOJU,F_MENKUANGLEIXING,F_ZHIZUOYAOQIU,F_SUOJUPINPAI,F_BIMENQI,F_BIMENQIPINPAI,F_BOLILEIXING,F_HEYEPINPAI,F_BOLIKUAN,F_BOLIGAO,F_ZHIZUOGAO,F_ZHIZUOKUAN,F_SHANSHU,F_ZWX_ZONGMIANJI,F_ZWX_DANTANGMIANJI,F_ZWX_LOUCENGHAO,FMENTIGAO,F_ZWX_BAOBIANWEIZHI,F_YUMAI,F_XIAKAUNGLEIXING,F_ZWX_SHANLIAOHOUDU,F_ZWX_KUANGLIAOHOUDU,F_MENGKUANGYANSE,F_ZWX_XINGCAIGUIGE,F_ZWX_LIANGCHAUNGLEIXING,F_ZWX_CHUANGXINGBIAO,F_ZWX_CHAXIAOPINPAI,FXIAKUANGXL,FSHANGKUANGXL,FZUOKUANGXL,FYOUKUANGXL,FZHUFUMENGAO,FLIANGCHUANGBOLIKUAN,FLIANGCHUANGBOLIGAO,FZHUSHANKUAN,FFUSHANKUAN,FGMFUMENHOUBANKUANCX,FGMFUMENQIANBANKUANCX,FGMZHUMENQIANBANKUANCX,FGMZHUMENHOUBANKUANCX,FGMZHUFUMENGAOXL,FGMFUMENQIANBANKUANXL,FGMFUMENHOUBANKUANXL,FGMZHUMENQIANBANKUANXL,FGMZHUMENHOUBANKUANXL,FGMMZHUMENGAIFENGBHUABGAO,FSHANGANZHKONGCNT,FZUOANZHKONGCNT,FYOUANZHKONGCNT,FXIAANZHKONGCNT,FHENGCHENG,FZHONGCHENG,FKAIQISHANBOLIKUAN,FKAIQISHANBOLIGAO,FGUDINGBOLIKUAN,FGUDINGBOLIGAO,FHEYECNT,F_ZWX_JUSHANG,F_ZWX_JUCE,F_ZWX_JUXIA,FMENKAUNGXINGHAO,F_MENSHANYANSE) SELECT FID,FENTRYID,FMATERIALID,FPARENTFORMID,FPARENTINTERID,FPARENTENTRYID,FPARENTBILLNO,FBASEDEMANDQTY,FDEMANDDATE,FSRCFORMID,FSRCINTERID,FSRCENTRYID,FSRCBILLNO,FPRIORITY,FRELATIONFORMID,FRELATIONINTERID,FRELATIONENTRYID,FRELATIONBILLNO,FDEMANDDAYID,FBASEORDERQTY,FMERGEROWID,FBASEGROSSQTY,FPLANSTARTDATE,FPLANFINISHDATE,FCOMPUTEID,FRESERVETYPE,FBASEEXECQTY,FUNITID,FGROSSQTY,FEXECQTY,FDEMANDQTY,FO
解决办法:这个报错的原因是MRP数据模型里的“MRP需求模型字段映射(计划订单)”中,没有把要从MRP运算单据到计划订单的字段做映射造成的。把字段维护进去就可以了,清理运算日志冲突,重启IIS就行了。
报错二:
source:Kingdee.BOS.Core
message:Object reference not set to an instance of an object.
stacktrace: at Kingdee.BOS.Core.DependencyRules.RowModel.DynamicRowModel.GetFieldSimpleValue(String key)
at Kingdee.K3.MFG.PLN.App.MrpModel.Util.MrpDataPolicyUtil.<>c__DisplayClassf.<GetFieldMapHandle>b__a(DynamicObject sourceDataEntity, Dictionary`2 targetDataEntity)
at Kingdee.K3.MFG.PLN.App.MrpModel.Util.MrpDataPolicyUtil.DoFieldMapping(List`1 handles, DynamicObject sourceDataEntity, Dictionary`2 targetDataEntity)
at Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc.CreateNetDemandPolicy.CreateNetDemandData(MrpDemandContext demandContextRow, SUPPLYMANAGEENTRY supplyInfoRow, DynamicObject demandSplitSet, Decimal dBaseDemandQty, Enu_ReleaseType releaseType)
at Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc.CreateNetDemandPolicy.CreateNetDemandData(MrpDemandContext demandContextRow, SUPPLYMANAGEENTRY supplyInfoRow, Decimal dBaseDemandQty, Enu_ReleaseType releaseType)
at Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc.CreateNetDemandPolicy.SplitDemandInfoByDemandSplitSet(MrpDemandContext demandContextRow, SUPPLYMANAGEENTRY supplyInfoRow, Decimal supplyQty, Enu_ReleaseType releaseType)
at Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc.CreateNetDemandPolicy.SplitDemandInfoBySupplyRule(MrpDemandContext demandContextRow, Decimal dShortQty)
at Kingdee.K3.MFG.PLN.App.MrpModel.PolicyImpl.NetCalc.CreateNetDemandPolicy.OnExecuteDataPolicy()
at Kingdee.K3.MFG.PLN.App.MrpModel.AbstractMrpDataPolicy.Execute()
at Kingdee.K3.MFG.PLN.App.MrpModel.LogicUnitImpl.Mrp.NetCalcLogicUnit.DoFirstSingleDataPolicy(MrpDemandDimContext mrpDemandDimContext, Dictionary`2 supplyItems)
at Kingdee.K3.MFG.PLN.App.MrpModel.LogicUnitImpl.Mrp.NetCalcLogicUnit.DoComputeLogicByLLC(Decimal dLevelProgress, AbstractDSQueueBuilder demandQueueBuilder, Int64 i)
at Kingdee.K3.MFG.PLN.App.MrpModel.LogicUnitImpl.Mrp.NetCalcLogicUnit.OnExecuteLogicUnit()
at Kingdee.K
解决办法:这个报错的原因是MRP运算单据上添加了元素类型为“单选辅助资料列表”的字段,但是,没有维护字段的“辅助资料类型”这个属性。打开BOS维护一下字段属性,再次运算日志清除冲突、重启IIS就可以了。
报错三:
出现不可修复的错误,MRP计算操作已终止,可查看MRP日志或系统日志确认原因!错误信息:不可预料的MRP计算错误!source:SELECT DISTINCT '000c29bafdb5a6c711eb66b4a432f827' computeid, CASE '0' WHEN '1' THEN t1.FBASEMUSTQTY ELSE CASE T_MRP_MATERIALDATA1_C.FCsdScrap WHEN '1' THEN t1.FBASENEEDQTY ELSE t1.FBASESTDQTY END END baseorderqty, CASE '0' WHEN '1' THEN t1.FBASEMUSTQTY ELSE CASE T_MRP_MATERIALDATA1_C.FCsdScrap WHEN '1' THEN t1.FBASENEEDQTY ELSE t1.FBASESTDQTY END END basedemandqty, t0.FSUPPLYORGID demandorgid_id, t1.FDEMANDDATE demanddate, 0 demanddayid, 0 extendcontrol, t1.FMATERIALID materialid_id, t0.FBILLNO parentbillno, '' parententryid, t0.FFORMID parentformid_id, t0.FID parentinterid, t1_C.FPRIORITY priority, t0.FBILLNO relationbillno, t1.FENTRYID relationentryid, t0.FFORMID relationformid_id, t0.FID relationinterid, t0_B.FSALEORDERNO srcbillno, t0_B.FSALEORDERENTRYID srcentryid, '' srcformid_id, t0_B.FSALEORDERID srcinterid, CASE '0' WHEN '1' THEN t1.FBASEMUSTQTY ELSE CASE T_MRP_MATERIALDATA1_C.FCsdScrap WHEN '1' THEN t1.FBASENEEDQTY ELSE t1.FBASESTDQTY END END basegrossqty, CASE WHEN (t1_C.FSRCTRANSORGID > 0) THEN t1_C.FSRCTRANSORGID ELSE t1_C.FISSUEORGID END instockorgid_id, t1_C.FISKEYITEM iskeyitem, t1_C.FMTONO mtono, t1_C.FOWNERID ownerid_id, t1_C.FOWNERTYPEID ownertypeid, t1.FDEMANDDATE planfinishdate, t1.FDEMANDDATE planstartdate, t1_C.FPROJECTNO projectno, t1_C.FRESERVETYPE reservetype, t1_C.FREPLACEGROUP replacegroup, t1_C.FCHILDSUPPLYORGID supplyorgid_id, t1.FAUXPROPID auxpropid_id, t1.FBASEDENOMINATOR basedenominator, 0 baseexecqty, t1.FBASENUMERATOR basenumerator, t1.FBOMID bomid_id, 0 execqty, CASE '0' WHEN '1' THEN t1.FMUSTQTY ELSE CASE T_MRP_MATERIALDATA1_C.FCsdScrap WHEN '1' THEN t1.FNEEDQTY ELSE t1.FSTDQTY END END grossqty, t1_C.FLOT_TEXT lot_text, t1_C.FLOT lot_id, CASE '0' WHEN '1' THEN t1.FMUSTQTY ELSE CASE T_MRP_MATERIALDATA1_C.FCsdScrap WHEN '1' THEN t1.FNEEDQTY ELSE t1.FSTDQTY END END orderqty, CASE '0' WHEN '1' THEN t1.FMUSTQTY ELSE CASE T_MRP_MATERIALDATA1_C.FCsdScrap WHEN '1' THEN t
解决办法:这个报错是因为,计划订单上有元素类型为“单选辅助资料列表”的字段,没有维护“辅助资料类型”这个属性,打开BOS、维护属性、清理运算日志冲突、重启IIS就可以了。
以上观点仅为个人见解,有误导或者不尽之处,请大家指正!!
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *