之前我有一篇关于计划需求怎么计算的文章讲到,需求公式就是:结存数量+预计入库量-预计出库量=可用数量,如果可用数量为正数,则需求计划数量等于,如果为负数,则为需求计划数量等于负可用数量的正数。
根据这个逻辑,我们就云上报表就可以构建出这样的报表了,见下图中的计划数量列就是计算结果:
其实真正一个复杂的MRP运算过程是很复杂的,但是它的基础结构就是这么简单,只是在运算的过程中要做各种计划因素考虑。为了让大家理解MRP,快速运用云上报表搭建一个完整的MRP运算报表,我们今天先从基础讲起,然后一步步引导大家往复杂里面去探讨。
首先,我们来看看上面的表结构,包含了哪几个信息?
>物料信息:物料编码、物料名称、规格型号
> 变化的数据:结存数量、预计入库量、预计出库量、可用数量、计划数量
上面的信息中,我们知道要从ERP库中获取物料档案表、现存量表、预计入库汇总表、预计出库汇总表,而可用数量与计划数量是通过公式来实现的。
、物料信息表
下面是UERP中的物料档案构成表,为了让零基础的看得懂,我直接把字段定义为中文了。当然你得学学简单的SQL语法,像下面" SELECT * FROM 表名 "就是一个简单SQL表查询的语法。
select cinvcode as 物料编码, cinvname as 物料名称, cinvstd as 规格型号 from inventory
上面语句复制到下面的报表内容里面,点调试效果就是下表的样子。
、现存量表
这个是U中的现存量表,里面只要一个物料编码段和结存数量就可以。
SELECT cInvCode AS 物料编码, CAST(iQuantity AS decimal(, )) AS 结存数量FROM CurrentStock
、预计入库量
预计入库量包含了很多种数据,我们只拿一个采购入库在途的做示例。下面是通过【采购订单数量-已到货数量-已入库数量】,然后进行汇总得出某个物料所有采购订单在途的总数。
SELECT cinvcode as 物料编码,sum(CAST(isnull(iQuantity,) - isnull(iReceivedQTY,) - isnull(iArrQTY,) AS decimal(, ))) AS 采购在途数量from po_podetails group by cInvCode
、预计出库量
预计出库量跟预计入库的概念一样,也只拿一个生产订单未领量做示例。下面是通过【生产订单应领数量-已领数量】,然后进行汇总得出某个物料所有生产订单未领用的总数。
SELECT InvCode as 物料编码,sum(CAST(isnull(Qty,) - isnull(IssQty,) AS decimal(, ))) AS 生产未领数量from v_mom_moallocate group by InvCode
有了上面这四个来源信息,我们接下来就是要怎么把四种信息集合到一个表里面,下面的语句就是通过表与表关联关系给串起来的。
select cinvcode as 物料编码, cinvname as 物料名称, cinvstd as 规格型号,isnull(现存量表.结存数量,) as 结存数量,isnull(采购在途表.采购在途数量,) as 预计入库量,isnull(生产预约表.生产未领数量,) as 预计出库量,isnull(现存量表.结存数量,) +isnull(采购在途表.采购在途数量,) -isnull(生产预约表.生产未领数量,) as 可用数量, (case when isnull(现存量表.结存数量,) +isnull(采购在途表.采购在途数量,) -isnull(生产预约表.生产未领数量,)> then else - (isnull(现存量表.结存数量,) +isnull(采购在途表.采购在途数量,) -isnull(生产预约表.生产未领数量,)) end) as 计划数量from inventory as 物料表left join (SELECT cinvcode as 物料编码,CAST(iQuantity AS decimal(, )) AS 结存数量 FROM CurrentStock) As 现存量表 on 物料表.cInvCode = 现存量表.物料编码left join (SELECT cinvcode as 物料编码,sum(CAST(isnull(iQuantity,) - isnull(iReceivedQTY,) - isnull(iArrQTY,) AS decimal(, ))) AS 采购在途数量from po_podetails group by cInvCode) as 采购在途表 on 物料表.cInvCode = 采购在途表.物料编码left join (SELECT InvCode as 物料编码,sum(CAST(isnull(Qty,) - isnull(IssQty,) AS decimal(, ))) AS 生产未领数量from v_mom_moallocate group by InvCode) as 生产预约表 on 物料表.cInvCode = 生产预约表.物料编码
把上面这段语句复制到云上报表内容中,就是我们要的结果了。
这就是MRP运算报表的简单实现模式,这个表又可以用作查库存,还可随时掌握物料的动态信息,赶紧跟我行动起来,用云上报表帮助我们实现高效工作。云上报表完全免费,有兴趣学习和使用的关注我,私信留下邮件地址,就可以得到。
关于MRP的深度应用报表,后面还会继续分享,直到教大家做出一个自己用得舒服的管理工具。
【特别提示】:上面用的是用友UV.的ERP做的示例,其他ERP产品只要有了数据字典,一样可以实现同样的效果。ERP原理数据都是一样的,只不过界面与操作不同而已。