【转载】物料分类账


关于物料分类账,其实有些业内人士已经写的非常好了,大家也可以去搜集一下相关的资料,这一篇是根据我自己在项目中的一些体会和总结写的。

首先我们还是了解一下物料帐分类账的功能,然后呢,我们还是按照问答的方式完成这篇文章。物料分类账的功能概括起来有如下三点:

1. 归集差异

2. 分摊差异

3. 计算实际成本或者叫还原实际成本

4. 多货币、多级评估(有时候也叫平行评估,英文是multiple valuation),严格来讲,这个功能不是物料分类账的,只是要启用物料分类账,才可以使用这个功能,所以也一起列在这里。

第一点和第二点的归集差异和分摊差异都是为第三点服务的,最终目的就是实现物料(产品)级别的实际成本还原,也就是说我们要知道我们每个产品到底是多少成本。有人说,这个很重要吗?我知道自己一共赚了多少不就可以了,干嘛非得知道每个产品的实际成本呢,的确,我们很容易知道一共花了多少成本,也知道一共有多少收入,不过我们并不知道到底哪个产品赚钱,哪个产品亏钱,哪个产品最赚钱,哪个产品最亏钱,这样就不能从产品层面调整经营策略。另外就是我不知道每个产品的成本,我又怎么知道我的定价是不是合适的,以前就出现过卖的越多,亏的越多的案例啊,那就是因为产品的成本都比销售价格高了。为什么这里叫实际成本还原呢,是因为这还是一个事后才能做的事情,按照财务概念来说,是财务月结才能做的事情。那么为什么要等到月底才能知道实际成本呢?这里就存在一个问题,就是我们是无法实现真正的实时的实际成本(注意“实时”这两个字)的。这里面有很多的业务实际和系统逻辑是无法做到的,我们首先说相对容易的原材料吧,原材料主要来源于采购,可能有些还会有返工的产成品拆解出来的,或者回收再加工的。单纯讲采购的话,也存在各种情况,比如不同供应商的,也可能存在供应商免费赠送的。不过既然是采购,就会有采购价格(免费送的采购价格可以认为是零嘛),如果我们用移动平均价是不是就可以准确计算出材料的实际成本呢?只要每次采购收货的时候重新计算移动平均价就可以了呀,这样就可以计算出原材料的实时的实际成本了。不过这里有个前提条件是采购价格要准确无误,而且最终发票开出的价格要和采购价格完全一致,否则在发票入账的时候如果发票价格和采购价格不一致,而且库存又没有了,那么就会出现这块差异实际上应该计入材料成本,却又无法计入材料成本(如果计入材料成本,会出现无数量、有金额的情况,SAP的逻辑是数量如果为零,金额一定为零)的情况。另外就是其他的成本包括人工、折旧、水电费、维修费等,这些成本在月底前是没有实际的数字的(实际上有的时候月底也没有实际数字,比如人工,可能要到下个月15号才会发上个工资,那么这个时候为了满足成本核算的需要,月底就需要预估人工成本),如何在成品制造完成就知道其实际成本,这几乎是不可能的。所以SAP设计了标准成本的概念(其实就是我们国内说的计划成本),就是说一个材料在平时是用标准价进行计价,收发存都用这个标准价,发生的所有差异(包括采购环节、生产环节、修改价格等)都先归集在一个“差异池”中,到月底我再按照一定的逻辑分摊这些差异(基本的规则是谁受益、谁承担,比如这个材料被生产产品消耗了,那么这个差异就计入上层产品的差异,这在SAP中叫多层差异,如果材料被研发领用到了,差异就计入研发费用,如果买来什么都没做,那么差异就计入材料本身,重新计算材料的实际价格,SAP把这个分摊差异或结算出来的实际成本叫PUP(Periodic Unit Price),其实就是月底的移动平均价,如果上层产品又给更上一层产品消耗,那么差异就层层上卷,一直卷到最上层的产品,最上层的产品归集的差异再分配到销售成本或者留在库存商品中)。到这里呢,我们就是说明一件事,实时的实际成本是不可能的,我们只能做到事后(一般是月底)的实际成本还原,SAP物料分类账就是干这个用的。另外物料帐的后台配置并不复杂,主要就是物料帐激活以及哪些移动类型要进行评估,还有就是考虑物料帐的成本组件(包括计划和实际)传输到COPA进行分析。接下来开始问答:

1. 309移动类型(物料转物料)差异能否吸收?

答:据说默认情况下309移动类型转出方物料的差异不能被转入方吸收,不过可以按如下设置,是可以被吸收的。

SM30修改视图V_CKMLMV01,如下图:


2. 物料分类账启用的前提条件有哪些?

答:在如下的条件下启用物料分类账会比较合适,不过并非绝对条件。

1) 采用标准价格对物料进行管理,至少是自制的半成品、产成品采取标准价格对物料进行管理,而且是通过CK11N/CK40N发布标准价格,原材料可以采用移动平均价,不过如果采用移动平均价的话,产生的差异物料分类账不进行分摊。

2) 企业材料采购差异较大,价格不稳定,如果价格很稳定,差异不大,就表示标准价格和实际价格接近,物料帐的意义就不大了。

3) 企业每月的在制品较少,或订单数量较少,这一条只是说订单量越大,执行物料帐结账的速度会慢一些,另外就是SAP早期版本不支持在制品分摊差异,后来较高的版本都支持了,所以这一条可以不算前提条件。

4) 企业物料数量较少,BOM结构较为简单。这个意思也是物料少,BOM层次少,物料帐分摊差异就比较容易,出现问题也容易查找,如果物料很多,BOM层次多,第一是结算速度比较慢,另外就是出现问题查找比较麻烦。


20190103更新

5) 物料帐使用过账中不可以直接使用反向移动类型直接进行物料移动(包括库存转移)操作,反向移动类型只应在冲销时体现,这一点往往容易被忽视而出现问题,因为如果直接使用反向移动类型操作,SAP默认的逻辑是在收货和消耗中均体现为负数,这样可能出现累计库存数量很小,但差异除以累计库存数量乘以消耗值时会方法分摊出去的差异,而消耗的负数系统默认不分摊差异,可能导致大额差异无法被分摊。

3. 物料分类账启用的情况下修改物料标准价格的前提有哪些?

答:一旦启用物料分类帐,SAP对于修改价格要求是很严格的,具体如下:

1) 只能在当前期间修改(即不能修改上个月价格);

2) 该物料无任何物料移动;

3) 该物料无发票校验,即无发票校验修改物料价值;

4) 该物料分类账状态为“Periods opened“或“Price change completed”或“'New objects”,这个状态CKM3可以看到(或者查看表CKMLPP字段Status)

满足以上条件可使用CK11N计算标准成本并使用CK24发布标准成本的方式修改价格,如果同时还满足“该物料不存在将来计划价格和当前计划价格”,可使用MR21修改价格。实际MR21修改价格很有限,只要有了评估计划价格(即执行过CK11N和CK24),是不允许MR21再修改的。

4. 物料分类账启用后如何进行标准成本估算?

答:启用物料分类账ML后,成本估算可采用两种方式:

1) 一种是沿用原来CK11N/CK24/CK40N方式评估,ML只用来计算实际成本和成本差异分摊

2) 另外一种是部分产品(如原材料、贸易商品)采用原方式CK11N/CK24/CK40N评估,自制半成品、产成品使用ML在计算单层差异和多层差异(事务代码CKMLCP)后计算出实际成本,使用实际成本作为下期标准成本标记并发布(事务代码CKMPRPN标记,CKME发布)。这种方式使用不多,主要的原因是物料帐实际结账的时间和标准成本发布的时间要求有冲突(物料帐结账通常是月结的最后一个步骤,此时一般是下月3号到5号左右,实际的物流移动从1号就开始了,标准价格发布又需要无物料移动,因此物料帐结完时通常已经无法发布标准成本了),实际业务难以达到。

5. 修改物料价格出现C+811错误如何处理?

答:这是因为在修改物料价格时,已经发生了物料移动,此时即使冲销了物料移动,SAP默认仍然会出现这个错误,标准逻辑是如果物料主数据价格确定是3(物料帐激活一般会设置为3),标准价格只能在期间状态小于30(表示“数量和值已输入”)时才可以修改(小于30的期间状态包括01“新对象”,10“期间未清”,20“价格更改已完成”),一旦发生物料移动,期间状态就会变成30,就无法更改了。SAP提供了一个程序可以修改期间状态(前提是物料移动已经全部冲销),在物料帐启用的公司,通常是把这个程序拷贝在系统中的。这个程序在note:574930中有提供。

对于C+811错误的详细说明及处理方法,可参考note:1492789。

6. 物料分类账C+048问题如何处理?

答:这个错误消息是指物料的数量、价格、库存价值、价格单位信息在物料主数据(MM层面)和物料明细账层面(ML层面)数据有不一致的地方,可使用CKMC检查不一致的信息,然后可使用CKMREP去修改不一致的数据,CKMREP涉及大的相关的表是CKMLPR(价格单位,计划价格)/CKMLPP(库存数量)/CKMLCR(库存价值,价格)。当然,也可以考虑使用自开发程序或者修改表的方式去修复数据(建议谨慎!)。

7. 物料分类账启用后在上线的月份必须执行物料分类账结账吗?

答:是的,启用物料分类账后,在导入完期初库存数据后,需要对切换的月份执行物料分类账结账(实际上最迟在下月结账前执行即可),因为SAP在执行物料帐结账时,会判断上月是否执行过结账,否则会有报错信息“上个月的物料帐还没结账”。

8. 分割评估和物料分类账可以同时启用吗?

答:可以同时启用。同时启用的情况下,工厂级别只能用V价,评估类型级别就变成最底层,物料分类账差异归集和分摊也根据评估类型的级别进行。

9. 生产系统物料帐正式启用前的操作有哪些?

答:在物料分类账配置完成后,正式启用前,需要进行如下的操作:

1) CKM9检查物料帐的配置;

2) 物料主数据导入后,CKMM批量更改物料价格确定(从2到3,根据物料类型),也可以导入物料主数据时直接导入为3,那就无需更改了;

3) 执行CKMSTART设置评估范围为正式的。

-------------------------------------------------------------------------------------------

20190322更新

对于第9点,物料帐启用和物料主数据导入、期初库存导入、期初物料帐结账的顺序,再次记录一下个人看法:

首先激活物料帐分为后台和前台两步,后台的步骤是OMX1,前台的步骤是CKMSTART,按照SAP note:596558的说明,这两步是需要同时激活的,这两步期间不能发生任何创建物料和物料移动的操作。此note也说创建物料既可以在执行CKMLSTART之前,也可以在执行CKMSTART之后,不过个人认为此note主要针对是已经上线的情况激活物料帐进行的说明,如果新的系统实施,个人认为通常的步骤如下:

1) 传输物料帐配置;

2) CKMSTART设置工厂的物料帐为正式的;

3) 导入物料主数据;

4) 导入物料主数据价格(针对标准价格的物料,MR21或开发程序批量导入)或执行标准成本估算(通常国内项目不进行,因为标准价格和老系统价格往往不一致,产生的尾差不好处理,不过如果不执行标准成本估算,则会产生导入库存没有实际成本组件的问题,如果执行标准成本估算,则系统导入的库存可参考标准成本的组件计算实际成本组件,这个事情没有办法,只能二选一);

5) 导入期初库存(在正式上线月份的上月,比如5月1日上线,则库存导入日期为4月30日);

6) 打开下月物料期间;

7) 执行导入库存月份的物料帐结账;

8) 关闭上月物料期间。

另外,补充CKMSTART程序的用途和作用:

1) 对已有物料创建物料帐的主数据(比如财务视图勾选“ML”)和转换现有库存价格和价值的货币(是物料帐设置的货币,OMX2配置);

2) 转换采购订单历史到第二/第三本位币;

3) 对现有库存创建成本分割数据。

说明:对于新实施的公司来说,不存在上述1)和2)的影响,只有第3)点的影响,这一点已经说明,如果在导入库存的月份不进行标准成本估算,则无成本分割数据,成本组件只体现为一个总值。

-------------------------------------------------------------------------------------------

10. 财务角度来说,物料分类账的日常操作或者说检查有哪些?

答:主要的日常操作如下:

1) 通过差异科目检查是否有异常差异产生(差异科目通常配置为表外科目,以便分摊后可以检查差异科目是否已分配完);

2) CKM3对单个物料进行价格分析。

11. 物流角度来说,物料分类账的日常操作注意事项有哪些?

答:建议操作时注意如下事项,避免差异过大或导致差异无法分摊。

1) 严格按照移动类型规定的业务进行规范操作;比如不要使用反向移动类型进行操作,否则会导致差异分摊混乱和无法分摊的情况,另外,对于特殊库存,都要先转为自有库存再消耗,直接消耗会导致差异无法分摊;

2) 发票入账及时,发票差异不宜过大;

3) 采购价格维护准确;

4) 生产订单及时关闭,采购发票及时入账,否则可能因为价格限制数量的原因导致差异无法完全分摊。

12. 物料帐的月结注意事项有哪些?

答:月结的主要注意事项如下:

1) 执行物料帐月结时,结账月份没有任何物料移动;

2) 在执行完CO月结后,执行物料帐月结;

3) 执行第七步“过账清算”前,通过值流监视器CKMVFM查看差异的分摊情况;如发现差异分摊异常,建议修正后再执行“过账清算”;

4) 对于分摊到库存的差异,系统下月会自动冲回;

5) 结账事物代码:CKMLCP;

6) 所有的过账都在第七步“过账清算”完成;

7) 发货过账(601)移动类型总是会被重估的,即进入销售成本的差异会被分摊到对应的销售成本科目;

8) 发布新的标准成本应在物料帐结账(CKMLCP执行)之前,且下月未发生任何物料移动,系统时间必须在下月,下月物料账期需要打开。

13. 物料分类账结账产生的相关凭证有哪些?

答:相关的会计凭证如下:

1) FI层面差异分摊凭证,ML凭证类型;

2) 消耗重估凭证,ML凭证类型;

3) WIP重估凭证,ML凭证类型;

4) 当月产生ML凭证(三类凭证在一起),下月冲销ML凭证。

14. 物料分类账的常用查询报表有哪些?

答:主要的查询报表如下:

1) S_P99_41000062,查看工厂下物料的实际价格、标准价格、库存价值、库存数量、期间状态;

2) CKMB,查看所有物料分类账凭证;

3) CKMPCD,查看价格修改凭证;

4) COMLWIPDISP,显示在产品的实际成本;

5) CKM3/CKM3N,物料价格分析(含成本组件);

6) CKMVFM,值流监视器,查看差异估计和分摊情况。

15. 配置物料分类账时,配置点“定义材料分类账组的变化类型”中“消耗重估”为灰色,无法选择,如何处理?

答:SFW5激活激活组件EA-FIN,参考note:1657787

16. 出现C+704消息是什么原因?

答:按照SAP note:802632的说明,有两种情况可能导致这个错误消息,其中一个是库存在某个月的数量在ML层面不满足期初库存+当期收货-当期消耗=期末库存的逻辑导致的,这种情况是是逻辑错误,必须要修正错误。第二种情况是有重估金额(由于价格修改)在上个月存在,在结账后物料又在上个月发生了过账。针对第二种情况,SAP给出了note:1120947,根据该note可把消息号修改为警告,不过不建议。

17. 常见的导致差异无法分摊的情况有哪几种?

答:有如下几种情况:

1) 对于供应商寄售库存,如果不转为自有库存就直接通过201K/261K移动类型进行消耗的话,其产生的差异是不会被分摊的,必须通过411K转为自有库存再通过201/261消耗后,才可以正常分摊差异;

2) 对于V价格标识的物料,其产生的差异,物料帐无法进行分摊;

3) 对于特殊库存(项目库存、销售订单库存)的消耗,如果使用直接消耗的移动类型,则其产生的差异无法被分摊,需要先转为自有库存再进行消耗,类似于供应商寄售库存,比如对于Q(项目)库存,如果直接使用416 Q消耗,其差异无法分摊,需要使用411 Q转为自有库存;

4) SAP为了避免出现物料实际价格为负数的情况(如果负数差异大于目前负数金额,可能出现物料成本为负)
,系统中有一个fallback strategy,这个时候会自动把一部分差异留在未分摊差异中。此时未分摊差异会体现在“累计库存”上面的“Not Distributed”对应的行,参考note:908776。这些策略的处理方式包括:一种是是好用当期收货的金额作为累计库存行,对应消息号C+135;第二种是第一种情况下当期没有收货,系统使用期初库存为累计库存行,对应消息号C+138;第三种是前两种都没有值,则使用前一个期间的周期单位价格作为本期的,对应消息号C+136;第四种是前三种都没有,则使用前期的标准价作为本地的周期单位价格,对应消息号C+137。SAP给出差异分摊方式是MR22更改库存价值(当然更优先的方式应该是找出原来过账的凭证进行修正),使不产生负数周期单位价格,然后结账,下月再MR22更改回来。

5) 价格限制数量原因,系统标准逻辑是当价格限制数量(CKMLCP-PBPOPO)大于累计库存数量时,只把累计数量对应比例的差异分摊出去。这个价格限制数量系统逻辑是对于采购的物料,发票校验时会更新,比如5月份收货100,下月又收货100,同时收到发票200,发票差异为10块,那么下月的10块差异就只被被分一半出去,因为200会作为下月的价格限制数量,对于生产的物料,系统以关闭生产订单月份统计的收货数量(收货数量可能在当月也可能下月)合计为价格限制数量,比如4月份生产订单下达1000,收货950,5月份对订单TECO,那么5月份的价格限制数量为950。处理方法:在值流监视器中删除价格限制数量,在单层差异确定时勾选“不经库存覆盖检查”。

说明:删除价格限制数量时不需要选择物料,选择对应的评估类点击删除按钮即可。删除价格限制数量和勾选“不经库存覆盖检查”分别进行即可,不需要同时进行。参考SAP note:2207543。

18. 出现MLCCS099消息如何处理?

答:目前遇到的可能有两种情况,一种是物料凭证冲销时出现MLCCS099 message ' Internal error in FORM/FUNCTION CKMO_UPDATE_ORD_HIST_MLCCS
in position GT_MLCSS_ORD_HIST EMPTY with RC 1 ' with Message no. MLCCS099 ,问题原因:CKMLHD表中价格确定字段为空,建议补上。另外一种情况是CO88时出现,此时可参考note:1521506,相关程序是:MLCCS_KO88_TREATMENT

19. 物料帐上线后月份没有生产只有销售的产品无法进行COPA传输实际成本组件的问题?

答:如果有期初库存的产品,上线后的第一个月没有生产入库,只有销售,那么在月底KE27传输实际成本以及组件到COPA值字段时,SAP不会计算实际成本的组件,因此不会传输实际成本以及组件到COPA,建议通过开发解决,在对应的表中取得物料实际价格。或者可客户说明此事,请客户谅解。

20. 到底哪些移动类型需要设置为重估?

答:关于移动类型的重估,在中国会计准则要求生产成本转平的情况,建议除201外(生产成本中心领用),其他的消耗类移动类型均可以重估(包括261/601),261重估会影响无物料的工单,即差异会重估到无物料工单上,此时需要重新对无物料工单进行结算,把生产订单归集的成本(包括原始投入和分摊的差异)结算到费用或者资产等对象上。

21. 原始CO过账到多个成本对象(比如成本中心作为实际成本对象,内部订单作为统计型成本对象),物料帐重估时无法重估到统计型内部订单,如何处理?

答:SAP标准功能只能重估实际过账的成本对象,对于统计型的无法重估,目前无解。

22. 物料帐下会计凭证过账的具体逻辑和科目配置是什么?

答:主要的OBYC下的配置项如下:

PRV/PRY用于和PRD的差异科目对抵,即差异科目归集的差异通过PRV/PRY(等同于差异转出科目),转出到的科目即COC和LKW。COC即销售成本-差异科目,LKW即库存差异科目。过账到LKW的凭证,下月初会自动冲回,类似于外币评估,作为下月的期初差异值,继续参与后续的分摊。如果LKW不配置,即想评估到原库存科目,可不配置LKW,而是在CKMLCP时执行步骤“过账清算”勾选“重估物料”,则可以对原库存科目进行重估。同理,也可以设置601/602为重估,从而重估原销售成本科目。只要选择“重估物料”,系统就会把实际价格更新到物料主数据周期单位价格,并把价格标识改为V,下月冲回对物料重估的部分,再把价格改为S。PRM建议设置为单独的在制品差异冲销科目,这个科目如果有余额,可反映为未分摊出去的在制品差异。WPM其实既标识在制品产生的科目,也标识在制品冲销使用的在制品科目,系统逻辑是分摊在制品差异时,从差异结转科目导WPM,冲销在制品差异时,从WPM再到PRM,然后从PRM再到其他科目(按照差异的流向和去处)。

23. 期初有库存但未发布标准成本,在上线期初月份物料帐结账后,这些物料不能再发布标准,如何处理?

答:如果某个物料在期初导入时有库存,但是在下月没有成功发布标准成本,那么如果已经对期初上线的月份已执行过物料帐结账(CKMLCP),在上线后的月份将无法发布新的标准成本,因为物料帐结账会对于有库存的物料会改变物料帐状态为30(输入的数量和价格),如果要解决这个问题,就需要冲销期初月份的物料帐结账,然后使用SAP交付的重置物料帐状态程序重置物料帐状态从30到10,因此对于有库存的物料,必须发布标准成本,最为稳妥的做法是物料帐状态下,所有物料都应正确发布标准成本。

24. 物料帐经常出现问题,有没有修正程序可以检查并解决问题呢?

答:SAP还真的交付了一套检查物料帐和修改物料帐数据的程序,这个程序用来检查物料帐各个表之间的数据不一致性,并进行修复,具体可参考note:364368,这个程序需要basis下载并安装,程序名称叫“Material ledger help desk”,这套程序还可以定时更新。

-------------------------------------------------------------------------------------------

20200731更新:

根据note:364368(最新版本)的说法,从S4 101版本开始,可通过事务代码:FCMLHELP执行物料账修正程序。

-------------------------------------------------------------------------------------------

25. 物料帐如何重复执行?

答:如果已经执行完物料帐结账的所有步骤(一般是指执行完过账清算,即倒数第二步),那么如果需要重复执行的话,就需要冲销“过账清算”这一步,然后再从头开始执行结账步骤,如果不冲销“过账清算”,是不能重复执行的, 执行到多级处理确定时就会报错了。

26. 物料帐结账出现KI100的错误如何处理?

答:这种情况是是因为跨公司领料消耗SAP标准逻辑下无法进行重估,即重估只能在一个公司下进行。建议解决方案:对于跨公司领料,单独设置移动类型,该移动类型不参与重估(不过这种设置好像不能解决问题,默认还是重估的)。目前对于结账月份已发生的跨公司领料重估,通过过账清算时不勾选“设置CO科目分配”,仅勾选“重估消耗”的方法解决,这种情况下,SAP还是进行重估,正式CO的成本对象需要默认指定,这时可以指定统一公司下的成本对象(先默认统一的一个,然后根据消耗重估计算的结果在CO内调整)。总的来说,在启用物料帐的情况下,尽量避免直接进行跨公司的物料消耗,即接收方和成本对象和发送方的库存所属为两个公司代码,建议使用301进行移库。

20201022更新:

从实际业务考虑,跨公司领料对于发送方来说,其物料产生的差异应计入成本,所以个人认为比较合理的方案,是针对跨公司领料单独配置移动类型,这些移动类型不进行重估(OMX0),使这些移动类型对应的物料差异计入COC的科目。

27. 301移动类型对物料帐的影响有哪些?

答:测试情况来看,如果物料有差异,且发送方工厂和接收方工厂分属于不同的公司代码,那么301移动类型不能把差异带走(还是因为跨公司的原因),会导致无法分摊的差异。

28. 物料帐在结账时计算的实际成本组件,其逻辑是什么?

答:这个逻辑有点复杂,建议参考note:671767以及这个note里提到的相关note。简单来说,其计算逻辑和标准成本类似,也是层层上卷的概念,所以通过物料帐计算的实际成本组件,我们是可以看到最终产成品的料、工、费各是多少的,如果没有物料帐,而是手工统计或者通过开发实现真正的料、工、费统计(为什么说真正的,因为没有物料分类账,在BOM层次多的情况下,每一层都只能看到这一层所包括的料、工、非,而不能追随到最原始的,比如第BOM分三层,在第一层看时,其包括的料的成本中已经包括了第三层的工和费,而非真正的料的成本,如果要计算真正的料的成本,就需要追溯到第三层,看最终的材料成本是多少,如果是单层BOM,那么不存在这个问题),还是有难度,记得曾经开发过一个实际成本组件的统计报表,前前后后差不多花了一个月吧。

29. 如果COPA激活两种模式(基于成本的和基于科目的),对物料帐的影响有哪些?

答:如果COPA启用了两种分析模式,基于科目和基于成本的话,那么发货过账时,此时销售成本需要设置为成本要素,发货过账时,会产生成本对象为PSG的CO凭证(和正常CO凭证保存在同一个表中,并通过获利段表CE4+经营范围合特征值关联),在Billing时把标准销售成本和收入通过条件类型和值字段的匹配传输到COPA(产生获利分析凭证,保存在表CE1+经营范围的表中),如果配置了评估,那么同时把标准成本组件传输到COPA中。

如果同时启用了物料帐,物料帐重估时把差异过账产生CO凭证和COPA凭证(需要配置传输结构FI),如果重估原销售成本科目(即不进入OBYC-COC科目),那么配置传输结构时建议指定到标准成本值字段,因为需要考虑到销售成本科目手工记账的情况,统一传输到标准成本值字段比较合理,那么这样的话Billing时传输的标准成本值加上物料帐重估时传入的差异值,标准成本值也就是实际成本了(可以通过不同的记录类型区分)。为何物料帐重估的时候需要传输结构,我们理解为正常销售订单通过Billing传输值到CO和COPA,那么差异也需要同时传输到CO和COPA,另外一个逻辑上的理解就是物料帐重估(凭证类型ML)属于FI传输数据到COPA(Billing则属于两种模式同时支持,同时传输数据,即同时产生CO凭证和获利分析凭证),必须分配传输结构(FI),因为启用了两种分析模式,其实也可以这样理解,销售订单因为SAP设计的原因,发货过账是成本不产生COPA凭证的(基于成本的分析),只有在Billing的时候和收入一起产生COPA凭证,实际上,既然启用了COPA的两种分析模式,那么对于以获利段为对象的过账来说,就是传输结构(Billing的传输结构其实就是条件类型和值字段的匹配)必须配置的,因为两种凭证需要同时产生(CO凭证和获利分析凭证)。

COPA的实际成本以及实际成本组件也可以通过KE27(配置评估)传输到相应的值字段。

另外,考虑到免费发货的情况,比如免费样品或者销售费用通过销售订单发货过账,一般设置为不进行Billing,那么会在物料帐重估时传入差异到COPA(也需要分配传输结构),但是标准值未传入COPA,从COPA(基于成本模式)上看就缺少一块值,这块数据可以考虑从基于科目的模式上进行分析。

总之,如果COPA启用两种分析模式,物料帐重估时对于销售订单发货过账的重估则需要创建传输结构(FI),同时产生CO凭证和获利分析凭证,而不管销售订单是不是开票。

30. 下层物料吸收的WIP差异,上层物料工单标记TECO后,其差异没有被吸收到上层,而是留在了WIP差异科目上,是什么原因?

答:发incident给SAP后,SAP的解释是:只有上层物料正常收货后,其下层物料的WIP才会被转移到上层物料作为多层差异体现,当上层物料没有收货而标记TECO或者收货被冲销,也就是上层物料没有正常收货,那么WIP差异不会被转移到。此问题正好是对应的生产订单被TECO而未收货,这种情况下需要手工处理这部分差异。

------------------------------------------------------------------------------------------

20190912更新:

T156Q这个表是存储OMX0的配置的,如果启用了T库存(即销售在途,使用VLPOD相关命令并使用发出商品科目进行销售在途的核算),那么SAP默认情况下,OMX0对T库存是不更新的,是无法配置T库存是否重估的,此时可以参考note:2154402的说明,运行程序:Z_T156Q_MISSING,这个程序是被note:856662提供的。执行程序Z_T156Q_MISSING后,系统会把T156Q中缺失的移动类型项目补齐,OMX0可以进行配置。

------------------------------------------------------------------------------------------

20181019更新:

在S4 1709版本中,发现即使在30状态下,只要把物料移动全部冲销,使用重置状态的程序不能重置状态了,但是可以直接发布新的标准成本,初步判断是SAP的逻辑发生了变化。

顺便提一下,物料帐状态存储表为CKMLCP。

20181211更新:

关于期初上线物料帐的激活时间点考量

目前的做法是后台配置(比如OMX1)传输到生产系统后,CKMSTART就执行前台的物料帐激活,然后导入物料主数据和期初库存(期初库存按照老系统价格导入,S价则MR21手工先维护价格,再导入数量,V价则直接导入数量和金额),如此做法的好处是不需要在期初上线时根据BOM/工艺路线估算标准成本,保证老系统库存价格、数量、金额和SAP期初导入完全一样,不过会产生一个问题,因为期初没有执行标准成本估算,对于期初导入的库存,下月如果没有任何的生产入库,则系统不会计算实际成本构成,导致无法分析销售数据的成本构成(这个问题只能通过报表解决,比如根据标准成本的成本构成比例进行拆分。)

不过,根据note:596558/384145 /639675的说明,SAP推荐的做法是在创建物料以及导入历史采购订单后再激活物料帐(包括后台和前台,因为如果后台激活,前台不激活,则无法创建物料主数据),这样的话,个人认为则需要在创建物料,并搭建BOM/工艺后,对物料进行标准成本估算,然后再按照估算后的成本导入期初库存,此时再激活物料帐,则物料帐则自动初始化期初的实际成本构成,从而保证期初库存也是有实际成本构成的(561移动类型导入的库存此时视为库存的收货)。不过这样带来的问题,就是难免出现SAP中标准成本估算和实际导入老系统库存价格之间的差异,这个差异在国内企业中如果金额较大,则难以解释和处理,所以通常的做法还是期初使用和老系统价格一致的方式导入库存,后续产生的差异则由SAP物料帐处理。

另外,如果先激活物料分类账再导入物料,按照SAP note的说法,则只能通过MM01创建物料(或者MM01的批量处理)。

Notes截图如下:

总结:根据这三个notes:596558/384145 /639675的说法,个人理解下来,导入库存的节点既可以在物料帐激活前,也可以是激活后,但是如果要在期初导入的时候就有实际成本的分割,那么一定是要有标准成本估算的,如果没有,其实就等于没有实际成本的组件,就等同于原材料。逻辑上也讲得通,如果没有标准成本估算,是不可能计算出实际成本分割的。

总的来说,国内企业的上线,建议还是按照现有的做法进行吧,即先激活物料帐,后导入物料,导入库存,期初不执行标准成本估算,下月初再发布新的标准成本,产生的差异由物料帐来处理,唯一的问题就是下月如果没生产,只有销售,系统无法计算出实际成本的构成,分析上存在一定的问题,要么靠报表解决,要么说服客户说这是标准逻辑,没办法解决:)。


20181211第二次更新:

在CKM3中,工单差异如何分配到成本构成中,系统逻辑是根据工单中的目标成本和实际成本的差异进行分配的,即工单中实际成本、目标成本差异所属的成本要素,然后根据OKTZ中成本要素分配的成本组件进行分配的。这个逻辑是合理的,因为工单的差异的总数其实就是目标成本和实际成本的差额。


20181212更新:

今天再研究上层半成品的工单差异分配到成本组件的逻辑,发现并不满足昨天(20181211第二次更新)的逻辑,而是材料成本比工单里的实际/目标成本差异降低了,而工费成本(作业类型相关的成本)则增加了,其实这是个差异上卷的逻辑,从道理上讲是对的,即SAP认为工单差异里也包括了下层的纯材料成本和工费成本,因此从下层半成品投入的物料其对应的实际/目标成本差异应减少,而工费应增加,不过没研究出实际成本/目标成本差异中材料成本差异减少和工费成本增加的具体逻辑。

已发了incident给SAP,看SAP是否能给解释这其中的逻辑吧。

-----------------------------------------------------------------------------------------------

20190103更新:

关于工单差异尤其是上层物料分配到成本组件的逻辑,后来SAP西班牙给打了一个电话,当时正下班,也没太清楚说什么,只听到让我don’t worry, 我就说”you can send a email”,后来想起其实我发incident的时候没有留邮箱,我想,那就这样吧,留点悬念挺好的。


20190214更新:

Troubleshooting Guide Material Ledger

这个链接是关于SAP wiki上关于物料帐各种可能遇到的问题的汇总,推荐收藏。


20190218更新:

今天有用户问到CKM3中特殊库存转移中的差异金额是如何计算的,研究了2个小时摸不着头脑,后来恍然大悟,发现是反算的。

首先对于特殊库存转移(E/Q库存),SAP在CKM3中是同时显示(好像以前不显示,后面做过修正)在“收货”和“消耗”中的,如下图:

而这个差异金额是反算的,计算的时间点为月底物料帐结账时,计算逻辑是(实际成本-标准成本)*库存转移数量,实际成本仍然按照库存累计行的初级评估金额加差异金额除以累计库存数量。

-------------------------------------------------------------------------------------------

20190328更新

上线后,中途启用物料帐,2019年2月份结账后,发现物料帐差异无法分摊,且执行物料帐结账后,CKM3查看物料的期间状态均为灰色(没有一个是绿色),后检查系统,判断如下:

1、从数据检查来看(事物代码:CKM3/CKMH/CKMI/CKMLCP,表:CKMLHD/CKMLPP/MBEWH/MARA),目前发现的未分摊的物料在2019年2月份均未发生任何物料移动(包括价格修改)

2、物料帐正式启用在2018年9月份,发现2月份存在问题的物料在启用物料帐的当月也未发生物料移动,这个时候物料帐期间状态依然保持物料创建的状态01;

3、2019年1月份物料结账后,差异分摊正常,是因为在1月份大部分的物料都发生了物料价值的修改(MR22),系统也认为发生了物料帐过账,因此1月份结账正常;

4、综合1、和2、判断,只要在物料帐启用的月份有库存且没发生物料移动,在后续的某个月份没发生任何物料移动(包括价格修改)就会把状态设置为物料帐启用的初始状态01。

建议先开发一个程序,根据逻辑(某个月底有库存且物料期间状态为01)筛选后修改物料帐状态,然后执行结账,至于如何彻底解决问题,建议发消息给SAP,看是否能够解决物料帐启用初始状态设置的问题。

问题解决:开发了一个程序,用于修改表CKMLPP的物料期间状态为10,然后再执行2月份的物料帐结账,结账后发现3月份的物料状态变为30,暂时没发现其他问题,拟后续每个月首先运行修改物料期间状态的程序,把01状态修改为10状态,然后再执行物料帐结账。

-------------------------------------------------------------------------------------------

20190612更新:

这几天被一个问题连续折磨或者说折腾了三天,也是物料帐结账(CKMLCP)报错(执行到第三步“结算”时),错误消息为:

ML4HRUN 053 周期 5 迭代之后交叉货币利率掉期与总值之间的 1,642.31 的增量

ML4HMASTER 113 首先在级别 1 结算输入物料 1200000190

ML4HRUN 052 因错误而未结算周期 41

系统版本为:S4 HANA 1610 SP0001

马上判断这个问题以前没遇到过,需要给SAP发incident,发了后,SAP给了两个notes:2684698和2571428,说要把这两个notes里面相关的所有notes都打上后,通知SAP,SAP会远程登录执行修正程序,最后重新执行CKMLCP。

第一天根据这两个notes手工下载notes,通过SAPCar和CMD中的命令先把下载文件转成压缩文件,再释放压缩文件,再上载notes的方式,很慢,而且打着打着,发现notes越大越多,最后打了100多个notes(主要原因是系统版本太低),手工修改的步骤也很多(ABAP也不熟悉,全部是自己根据notes的说明搞),一天下来,脑袋也晕了,结果传到Q系统后,问题没解决,反而出现了ABAP Down的错误。

第二天心里想着把第一天的notes全部重置(即撤回),然后再传输到Q系统,还次没有ABAP Down了,还原到了初始的错误。我们最牛的专家顾问来现场支持,发现打notes的方式有点问题,连通SAP的OSS后,可以直接通过SNOTE在线下载和上载notes,效率提高了很多,根据SAP提供的必须的notes又重新打了一边notes,SAP提供的notes列表如下:

2648540 FCMLHELP ML Period Consistency Check - reports 9
2646734 Incomplete compression of table MLDOCCCS_EXTRACT
2599884 Error ML4HRUN-053 during the iteration of a cycle
2625110 Rounding error in cost component split
2691272 - SAP TopNote - actual cost component split 1 and incorrect delta cost component split for price changes with error MLCCS 202
2607681 - SAP TopNote - actual cost component split 2 and error during settlement with periodic unit price fallback

这些notes展开后又打了70-80个notes,中间加上上百步的手工操作步骤,还好,效率提高后,第二天下午打了差不多。

第三天上午继续把未执行的notes执行完,不要图省事,严格按照要求打就行了,联系SAP远程链接进行修正,SAP说这些修正程序需要由他们来执行,(后来看执行的程序,我们也可以去掉测试执行),并告诉了我们执行了如下的修正程序:

FCMLHELP_SPRICE_CCS_INIT

FCMLHELP_VPRICE_CCS_INIT

FCMLHELP_COMP_MLDOC_MLDOCCCS

FCMLHELP_COMP_CCS_CCS_EXTR

修正完成后,SAP通知我们重新执行CKMLCP,问题的确解决了,后来自己又解决了第四步执行“过账关账”的错误,最终物料帐算是执行完了。

文字写出来感觉不到什么,这几天真的是压力巨大。其实人什么时候压力大呢,就是问题超出了自己的解决能力范围,还要努力尝试去解决,当然,解决了,就算是一种收获,算是一种突破吧。太多的事情,经历的当时觉得是惊心动魄、惊涛骇浪,过后转眼一看,转念一想,不过如此而已。对于困难或者压力,并不是没有退缩,没有害怕,而是退缩之后,害怕之后,还能想着如何解决问题,如果面对这个困难和压力,最终克服这个困难和压力,这其实才是正常的反映。

------------------------------------------------------------------------------------ 20191220更新:
再补充一下CKM3中实际成本组件分割计算的逻辑,按照SAP note:671767以及其中提到的notes:639675/429347/611950的说法,note:671767解释了几种可能出现异常值的情况,比如出现负数有副产品的原因和在制品的原因,出现异常值可能因为修改了成本组件结构,价格差异和费率,订单还未结算,保留逻辑(为了保持逻辑相等,比如要保证部分加起来要等于整体的逻辑),note:639675解释了成本组件初始化的,429347描述了成本组件如何上卷的(我表示还没看懂),611950解释了订单结算的成本组件计算逻辑。

有意思的是,SAP在note:671767有一段这样的描述,我的理解是,第一,这个问题的确不止一个客户问起过 ,如果没人问,也就不必要出note解释,第二,这个问题解释起来的确比较费劲,同时逻辑相当复杂,否则SAP家大业大,逻辑又容易解释清楚的话,干嘛因为这点小事还要收费呢,不知道我理解的对不对。

-------------------------------------------------------------------------------------------

20191224更新:

关于物料账激活(包括实际成本计算)的情况下,期初库存导入时候对于实际成本组件计算的问题再做一次说明,目前测试下来,如果要在期初库存计算实际成本组件,过程为先导入物料、BOM、工艺路线、费率、材料价格等信息,计算并发布标准成本,然后导入期初库存,再对导入月份进行物料账,结算,此时系统会计算实际成本组件,这和SAP note说的是一致的。如果不发布标准成本,则无法计算实际成本组件,这也说明实际成本组件是以标准成本组件加上差异进行计算的。这样看来,我们推荐的做法应该是先发布标准成本,然后导入期初库存(如果新老系统价格不一致,则在导入时产生差异,通过物料账结算再吸收差异)。

上图是先发布标准成本,然后导入库存,物料账结账后的实际成本组件截图。

另外,如果在执行CKMSTAR后再开始创建物料以及其他操作,那么CKMSTART的意义就不存在了,因为这个时候系统里没有物料、也不可能有历史采购订单,只是执行一步操作,并没有实际的影响了。我们想想也是如此,物料账激活后,总归要进行正常的业务操作,那么我们就在物料账激活后,把所有的期初切换操作当成正常的业务操作就可以了,何必先要导一部分数据(按照SAP note说法,是先导入物料和采购订单、采购订单历史),再激活物料账呢?

-------------------------------------------------------------------------------------------

20200320更新:

今天有个朋友问我“老张,你知道物料为V价的时候,会不会产生物料凭证,还是说会产生,只是CKMLCP执行实际成本结算的时候系统不包括V价物料产生的差异。”我们通过测试验证一下:

测试场景是物料为V价,采购10个,入库后发掉5个,发票校验时产生了10元的差异,此时因为系统库存不足,其中5元差异进入了差异。我们可以看出,物料分类账凭证是可以产生的,也就是说只要使用了物料分类账,不管是V价还是S价的物料,都会产生物料分类账凭证。

上图是CKM3的截图,可以看出差异也会显示,不过期间状态为“与结算无关”(这表明不会参与CKMLCP结算)。

上图是CKMLCP结算的结果显示,可以看出,并不包括上述V价的物料。

结论:V价的物料会产生物料分类账凭证,会记录差异,不过在CKMLCP结算时不分摊差异。

扩展:如果分摊差异是否逻辑上可行,会有什么问题?

20201020更新:

通过增强,根据不同的移动原因对同一个移动类型、同一个评估类实现不同的科目过账,通过测试,在物料账重估时(前提是OMX0设置相应的移动进行重估),系统会重估到增强变更后的科目(即凭证实际过账的科目),这样的话,在增强时我们就不用担心物料账重估到OBYC配置的科目了(以前印象里是重估到后台配置科目,而非原始凭证里的过账科目)。

说明:目前测试下来是这样,建议还是仔细测试,以测试结果为准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值