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