1、问题背景
用户在维护了副产品定额成本维护后,成本计算提示副产品无定额成本。针对此类问题,汇总遇过的原因及解决方案。
2、案例分析
案例一:
T_CB_PROORDERTYPE表生产类型的工单有车间无成本中心导致匹配不到,成本中心为0的原因可能有二:
一是生产订单先下达了,后面建立的成本中心;二是历史补丁问题,成本中心反审核导致type表的成本中心被清空。
解决方案:此两类原因最新补丁都已有优化,异常数据通过以下脚本批量修复即可
merge into T_cb_proordertype TT using(
select a.fentryid,b.fcostcenterid from T_cb_proordertype a
inner join t_Cb_Costcenter b on a.fworkshopid=b.frelation and frelationtype='BD_Department'
where a.fproordertype='PO' and a.fworkshopid<>0 and a.fcostcenterid=0) t on (TT.fentryid=t.fentryid)
when matched then update set TT.fcostcenterid=t.fcostcenterid;
案例二:
副产品维护了定额成本,T_CB_PROORDERTYPE表数据正常,主产品有期初余额但本期没有领料。
解决方案:
由于主产品的期初在产品金额无法触发副产品定额成本的核算,导致在一次性投料,副产品跨期入库的场景下,副产品入库成本为零。此情形应维护副产品投料单处理。
参考帖子:https://vip.kingdee.com/article/102721820188360704?productLineId=1
案例三:
副产品维护了定额成本,T_CB_PROORDERTYPE表数据正常,主产品本期没有领料。但是有维护副产品投料单。
解决方案:
首先检查副产品投料单的关键字段数据是否正常:
FACCTGDIMEENTRYID,FDIMEENTRYID,FPRODUCTDIMEID,对应核算维度、库存维度、成本计算维度,其中成本计算维度是主产品的维度。
匹配关联的语句如下:
SELECT ROW_NUMBER() over(partition by PDIME.FCOSTCENTERID order by PDIME.FCOSTCENTERID)+141760
,141744,1,'2022-02-01 00:00:00',PDIME.FPRODUCTDIMEID,PDIME.FCOSTCENTERID,PDIME.FPRODUCTID,'生产订单','PRD_MO',PDIME.FPRODUCTNO,PDIME.FBILLID,PDIME.FBILLENTRYID,PDIME.FBILLSEQ,PDIME.FPROORDERTYPE
,pt.FENTRYID,PDIME.FBILLSEQ,PDIME.FBILLENTRYID,PDIME.FPRODUCTNO,pt.FBOMID,pt.FLOT,pt.FAUXPROPID,pt.FUNITID,0,cc.FRELATION,moe.FROWID,moe.FPARENTROWID,'0',pt.FMTONO,0,0,N' '
--PDIME.FPRODUCTNO,PDIME.FBILLSEQ,PDIME.FPRODUCTID,mat.FNUMBER,matl.FNAME,cc.FNUMBER
FROM T_CB_BYPRODUCTFEED T0
INNER JOIN T_CB_BYPRODUCTFEEDENTRY T1 ON T1.FID=T0.FID
INNER JOIN T_CB_PROORDERDIME PDIME ON PDIME.FPRODUCTDIMEID=T1.FPRODUCTDIMEID AND PDIME.FPRODUCTTYPE='1'
left join T_CB_INPUTQTYENTRY pe on pe.FPRODUCTDIMEID=T1.FPRODUCTDIMEID
inner join T_BD_MATERIAL mat on mat.FMATERIALID=PDIME.FPRODUCTID
left join T_BD_MATERIAL_L matl on matl.FMATERIALID=mat.FMATERIALID and matl.FLOCALEID=2052
inner join T_CB_COSTCENTER cc on cc.FCOSTCENTERID=PDIME.FCOSTCENTERID
inner join T_CB_PROORDERTYPE pt on pt.FPROORDERENTRYID=PDIME.FBILLENTRYID and pt.FPROORDERTYPE=PDIME.FPROORDERTYPE
inner join T_PRD_MOENTRY moe on moe.FENTRYID=PDIME.FBILLENTRYID
WHERE T0.FPRDORGID IN(1)
AND T0.FDATE>='2022-02-01 00:00:00' AND T0.FDATE<'2022-03-01 00:00:00'
and pe.FPRODUCTDIMEID is null;
其次检查投产表T_CB_INPUTQYTENTRY表数据是否正常,是否有投产数据。若工单是期初生产订单,也应有投产数据;若启用了车间成本,需有车间投产数据。
推荐阅读