让物料处理更简单
全国咨询热线:

SAP那些事-实战篇-13-深挖物料分类账

发布时间:2022-04-10 07:19:30 人气: 来源:未知

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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。

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

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

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

  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,因此对于有库存的物料,必须发布标准成本,最为稳妥的做法是物料帐状态下,所有物料都应正确发布标准成本。

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

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

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

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

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

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

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

  答:如果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凭证和获利分析凭证)。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  最近同事在月结支持时(ECC版本),执行CKMLCP遇到了一个CKMLWIP 052的错误“物料的在产品数量不一致”,他自己反馈10月份obyc-prv这个配置没配,然后11月份(结10月份的账)结算物料账的时候,提示有一批料10月份没有结算,解决这个问题使用了CKMHELP改了物料状态70。结果这个月又出现了这个错误。

  查询SAP note都是说需要SAP来登录系统修改这个错误,因为时间紧,又查了一些其他民间大神的做法,发现通过改表(CKMLMV004WIP)也可以解决,具体方法为:

  关于CKM3中我们可以看到不同的移动类型产生的物料价值、差异是归于不同的类别的,有的属于收货、有的属于消耗,系统默认对不同的移动类型归到了相应的类别中,如果某些特定的移动类型,我们希望更改其所属的类别,SAP提供给了一个办法。

在线客服
联系方式

热线电话

13588888888

上班时间

周一到周五

公司电话

二维码
线