APICS与AX的Master Planning(一)Phantom bill of Material 虚项

[前言]
做为ERP软件,MPS和MRP应该是最核心的部分,虽然AX的Master Planning这本教程介绍了AX主计划的各式各样的参数,从业务上到底怎么理解那些参数,这些参数应该怎么设置才算正确,一直困扰着我,一直期望能看到一些文章介绍AX的Master Planning应该怎么使用,但是一直没有看到,这些日子在读一些关于APICS的书,本来想一路写那个读书笔记,但是"纸上得来终觉浅,绝知此事需躬行",于是还是结合AX的Master Planning的使用,看看AX与这些经典的MRPII理论是不是契合。开始的时候想等读完所有的书,研究完AX的Master Planning参数后再写,但是感觉有点黑瞎子掰玉米的味道,刚测过就忘记了,于是还是一个个来吧,学一点记一点。由于一方面对APICS的知识体系不熟悉,另一方面对AX的Master Planning也不熟悉,所以写起来难免挂一漏万,希望能抛砖引玉,得到高手指点。
参考书目:
《APICS Dictionary》 第12版
《MRPII Standard System》
《Introduction to Materials Management》
这篇文章先谈一下Phontom BOM,因为最近做的这个项目用到了这个概念,在AX里实现了,但是看APICS的书籍,发现有些概念跟AX里的实现不太一样。于是写这篇文章来记录一下。

先摘录一下APICS Dictionary对虚项的定义(见APICS字典 98页):
Phantom bill of Material:A bill of material coding and structuring technique used primarily for transient (non-stocked) subassemblies.  For the transient item, lead time is set to zero and the order quantity to lot-for-lot.  This permits MRP logic to drive requirements straight through the phantom item to its components, but the MRP system usually retains its ability to net against any occasional inventories of the item.  This technique also facilitates the use of common bills of material for engineering and manufacturing.
从APICS字典的定义可以看出,虚项主要用来处理那些瞬时部件,这些部件一般没有库存,MRP的运行逻辑上将针对这个物料的需求直接分解到它的组件。但是通常情况下MRP系统在做净需求的时候会考虑这个组件的偶尔存在的库存。
在《MRPII Standard System》的第6章中也有对虚项的介绍,第70页。
在这一章里,它特别强调了,虚项应该需要处理偶尔存在的库存的情况,也就是说如果虚项存在库存,那么需要先消耗虚项的库存,消耗完后再把需求展开到虚项的组件,并且举了个例子来说明具有这样功能的好处,大体意思是,某个物料A,由B和C组成,如果有一天,工艺改变了,B需要替换成D,但是必须在B用完后再替代,这个时候可以B设成虚项,然后把D做为B的组件,这样当B用完没有库存以后,按照虚项的逻辑就会把需求直接展开到它的组件D上,从而起到替代物料的作用。它提到不考虑虚项的库存直接把需求展开到虚项的组件的做法是不对的。
其实从上面这两本经典教程看,对虚项的态度是不一样的,APICS字典只是说MRP系统通常在计算净需求的时候通常会考虑虚项的库存,并没有特别强调一定要有这个功能,而MRPII标准系统这本书特别强调,必须考虑虚项的库存,否则就是不正确的。

下面介绍一下AX的实现逻辑:
从上面的描述看,如果某个物料要做Phantom类型的物料,它自己本身必须是BOM,这样才有可能包含组件。我们先创建一个Phantom物料B,物料类型当然必须是BOM,其实某个物料的Phantom属性是在做为其父物料的BOM行时的一个属性,物料本身跟其他物料没什么区别,比如我们创建的B物料在作为父物料A的BOM行是可能是phantom类型的,但是作为其他物料的BOM行的时候可能又不是Phantom,当然这里只讨论有这种可能性,一般的公司,一个物料做为瞬时件一般都是做瞬时件处理的。
这里我一步步在AX怎么实现APICS理论上提到的Phantom物料,我们创建三个物料A,B,C,其中A由1个B组成,B由1个C组成,A和B是BOM类型物料,C是物料类型。当然不用说了,B就是我们要演示的Phantom,B物料本身在属性上跟A是没什么区别的,只是B在作为A物料的物料清单行时是做为Phantom类型的。
物料和物料清单行的创建属于基本操作,我们就不介绍了。只看物料B的一个参数(库存管理->物料->参考->虚拟)

这个参数实际上是个默认值,在把该物料作为其他物料的物料清单行时,如果勾选了这个选项,物料清单行的类型就是虚拟,当然是可以更改为其他行类型的。
这个行类型在A的物料清单行的常规选项卡中可以看到,如下图所示:

这样基础资料就创建好了,为了验证它的逻辑,我们创建一个物料A,数量为100的销售订单,让它产生需求,运行Master Planning,产生的计划订单如下:

显然并没有产生B的计划生产订单而是直接产生了其子物料C的计划采购订单,也就是直接把需求传递到了B的子物料C,这个是符合APICS定义的,那么如果B有库存,情况会是怎么样那?按照APICS字典的定义,应该先使用B的库存,在B的库存不能满足后再展开成对子物料C的需求。
我们通过库存盘点,对B盘盈100个:

然后再运行Master Planning,那么理论行就不应该再产生C的计划采购订单了,因为现有库存量已经能满足需求了。再次运行Master Planning,结果如下:

由此可以看出,它还是产生了C的计划采购订单,所以AX并没有考虑B的现有量,而是直接生成了C的计划采购订单。
所以这样看来AX的虚项的处理跟APICS中的定义还是有所差异的。
不过看怎么用了,这也无伤大雅。

原文地址:https://www.cnblogs.com/Farseer1215/p/1559689.html