Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SPA PP 重订货点详解-下篇.docx

SPA PP 重订货点详解-下篇.docx

作者头像
SPA_小阿龙
发布于 2021-02-24 08:20:27
发布于 2021-02-24 08:20:27
1.4K0
举报
文章被收录于专栏:SPA顾问之路SPA顾问之路

本文章仅用于SAP软件的应用、学习沟通,文中所示的截图来源于SAP软件,相应著作权归SAP公司所有。

之前的重订货点上篇和下篇已更新V1.1版本:

1.修改错别字;

2.新增发布平台:B站:SAP小阿龙(内含文章及培训视频)

3.新增:SPA顾问之路2群,加VX备注模块+姓名进群交流;

需要的可以收藏以及点击在看,希望大家转载,分享哦。

上图:为18年去大学母校场景,修改历史文章还能回忆过去O(∩_∩)O哈哈~,怀 念上学的时候

上篇文章介绍了手工重订货点,本文接下去所要描述的,就是所谓的自动重订货点法。将会通过一个实际的测试案例,讲述自动重订货点法的运行步骤、原理、运算逻辑以及后台配置。将会介绍自动重订货点的运算公式,并通过该公式推导重订货点的计算方法,看看SAP系统究竟是怎样计算出重订货点的合理值的。

除此之外,在进行自动重订货点计算的同时,SAP系统还在这里面附加了一个额外的功能,即自动安全库存。在前面的中,已经探讨过安全库存的含义及其用途。在一般情况下,一种物料的安全库存值也是由用户手动维护的,但SAP系统提供了自动计算最佳安全库存值的方法,这一方法及其运算公式将在推导重订货点的同时一并讲解。在正式开始的案例测试之前,有以下几点需要特别说明:

1)将要介绍的是自动重订货点以及自动安全库存的应用方法与运算逻辑,包括其公式构成与公式参数。但将不会从纯数学的角度去推导公式的来源与其理论依据。如果需要搞清楚计算公式是怎么来的,还需要查阅相应的学术文献。

2)出于简化测试、突出重点的需要,将采用最基本的趋势模型作为预测模型使用。其中的平滑因子α和趋势因子β都直接取自默认值(0.2和0.1)。

3)将要介绍的功能包括了自动安全库存计算。自动安全库存计算在运行逻辑上等同于传统的安全库存概念,只不过安全库存值由系统自动算出而已。且自动安全库存的计算依据为历史消耗,而非未来需求。

4)从功能上讲,自动重订货点计算与自动安全库存计算可以是两个完全独立的功能。可以选择性地应用其中的任何一个,或者二者都用。但在一般情况下,自动安全库存计算是自动重订货点计算的基础,重订货点是在安全库存的基础上推算出来的。所以将这两个知识点合在一个系列里进行讲解。但事实上,这两者究竟哪个自动、哪个手动,完全可以随意定制。

同样对于自动重订货点,实现的MRP类型也有2个:

1.VM 自动重订货点计划:完全以重订货点生成补货元素

2.V2 外部需求中的自动重订货点:可参考外部需求累计生成补货元素

对于这2种的区参数区别,还是如前篇前讲在于Include ext.reqmts。

但与VB的区别有以下3点:

1)“预测标识符”(Forecastind.)字段:“VM”在这个字段上的值是“+”,即“强制预测”。这说明了凡是分配了MRP类型“VM”的物料,都必须同时激活预测功能。因为预测功能的运行是自动重订货点计算的前提条件,因此不激活预测,重订货点功能就无从谈起了。

2)“安全库存”(Safety stock)字段:这个字段被选中,意味着系统将在运行预测程序的同时,自动为相应的物料计算最佳安全库存值。

3)“重订货点”(Reorder point)字段:这个字段被选中,意味着系统将在运行预测程序的同时,自动为相应的物料计算最佳重订货点。

通过以上参数,大概可分析出3个结论:

1:“自动重订货点”只是“重订货点”的一种罢了。除了重订货点值由系统自动运算得出之外,其他功能特性与手动重订货点法没有任何区别。

2:系统是通过预测(Forecast)功能来计算重订货点的。这就意味着需要为物料维护预测视图、预测公式参数以及足量的历史数据。而基于历史数据推算最佳重订货点与安全库存的方法,注定与基于计划独立需求(PIR)推算未来安全库存的动态安全库存法存在本质不同。

3:标准的自动重订货点法,已经包含了自动安全库存运算功能。但可以在上图界面中自定义是否分别激活这两种自动计算。可以只算重订货点,也可以只算安全库存,可以两者都算,也可以两者都不算。

更改产成品MRP主数据:

1.Mrp Type:VM。再选择这个类型时,必须同时要创建预测视图主数据,否则保存不了。

2.ReorderPoint不需要再手工设定值,而是在后面执行预测后会自动生成。但保存时会有个黄色警告,忽略就OK。

3.自制生产时间:因这物料设定为自制件,故需要填写自制的提前期,如果是外购的,则要填计划交货时间。注:VM类型必须填写这个时间参数,是计算公式的重要参数。

4.SafetyStock:因后台也设定了为自动生成,故也不需要填写。就算手工填写了,也会被自动覆盖掉。若不是自动生成,也可以手工填写。

5.ServiceLevel:。所谓“服务级别”,指的是在多大概率上,希望需求数量可以直接被库存数量满足(而不需要通过生产订单、采购订单等后续方式)。而这里维护的“90%”,就意味着对于测试物料而言,希望在90%的情况下,物料的库存数量大于等于需求数量。而在另外10%的情况出现时,可以接受通过临时组织生产(冒着各种供应链中断风险)的方式来满足供货。在自动安全库存计算功能中,必须为相应的物料维护“服务级别”字段。

预测视图设定以下参数:

1)“预测模型”(Forecastmodel)字段:这个字段决定了相应的物料在运行预测的时候将采用哪一种预测模型。在本测试案例中采用的是基本的趋势模型。

2)“期间标识符”(PeriodIndicator)字段:这个字段描述了在运行预测的时候,历史数据与预测数据将会基于怎样的区间而产生。比如在下图中维护的字段值是“T”,这就意味着系统将以“天”为单位来运行预测程序。所有的历史消耗数据将会基于“天”来读取,而所有的预测数据也将会诸天来生成。本字段在自动安全库存的计算过程中起到了非常关键的作用。

3)“历史期间”(Hist. periods)字段:这个字段描述了系统每次运行预测程序时,将会读取多少个期间(之前已经定义了一天为一个期间)的历史数据。在此维护的值为“10”。

4)“预测期间”(Forecastperiods)字段:这个字段描述了系统每次运行预测程序时,将会产生多少个期间的预测值,同样在此维护“10”。

然后点击“消耗值”(Consumption vals)按钮,为测试物料维护历史消耗数据,如下图所示:

为回顾下重订货点是否会考虑外部需求。对产成品分别创建一个计划独立需求和一个销售订单。RunMrp后,MD04查看,发现并没有补货请求生成。

同时因为还没有执行预测程序,所以重订单货点也还没有计算出来,就也没有重订货点的补货请求。

MM02到预测视图中,执行预测程序:趋势因子如上面所说设定,然后保存。

再去查看MRP视图中,就可见Reorderpoint和Safety Stock被自动计算的值填写。

以及:预测视图中也记录了执行预测程序时的参数。通常记录最后一次的执行数据。

点击“Forecatst values”,进行预测结果界面。就这个结果分析下计算过程。

可以看到,由于采用的预测模型是趋势模型,因此系统自然而然地为计算出了预测模型中的基准值与趋势值。但这并不是所要探讨的重点。在上图中,最为关键的是,系统在预测结果中为显示出了基于历史消耗值与预测模型推算出的安全库存与重订货点。

这就是所谓的安全库存和重订货点的自动计算。每当系统运行物料预测的时候,就会基于最新的计算结果对重订货点与安全库存进行一次更新。因此上图中所展示的计算结果事实上是随着每次预测程序的运行而常换常新的。

首先来看一下上图中的安全库存值“2766”是怎样计算得来的。

在本测试案例中,测试物料的补货提前期为6天;而该测试物料的预测期间标识为“天”(来自于物料预测视图),也就是说,每一天都是该物料的一个预测基准期间。因此,物料的补货提前期(6天)大于物料的预测基准期间(1天)。

在上述判定成立的条件下,安全库存的计算公式为:

公式一:

安全库存= R ×√W × MAD ( 1.6 *2.449*706 = 2766 )

在公式一中,参数“R”用来描述服务级别(Service Level)与预测准确性之间的相互关系。其计算公

式为:

公式二:

R = 服务因子(Service Factor)× σ

在公式二中,σ为常量,等于1.25,而服务因子(Service Factor)则需要根据先前分配给测试物料的“服务级别”(Service Level)经过查表获得。当然,更简便的计算方法便是在Excel中使用函数“NORMSINV”。

比如在本测试案例中,分配给测试物料的“服务级别”为“90%”,通过在Excel中使用函数“NORMSINV”,得知相应的服务因子为1.28,再用1.28乘以1.25(σ),就可以得出相应的“R”值为1.6。

公式一中的第二个参数为√W,其中“W”的计算公式如下:

公式三:

W = 补货提前期÷预测基准期间

因此可以得出在本测试案例中,参数“W”的值等于6,而√W的值就等于2.449。

而公式一当中的最后一个参数就是著名的MAD(平均绝对差异)。这个值代表了预测值与实际值之间的平均差异,描述了预测结果的精确性。在上图中,SAP系统已经自动为计算出了这一次预测的MAD值,它大约为706。

现在导入公式一中的这几个参数,其运算结果就是的安全库存值了。

已经推算了安全库存值的计算。接下来,再来看SAP系统是如何计算重订货点值的。

重订货点的计算以安全库存的计算为基础,其依据为以下公式。

公式四:

重订货点=安全库存+ 平均日需求量 ×补货提前期

在这一公式中,安全库存之前已经探讨过了,在本案例中它的数值是“2766”;系统基于预测程序计算出的预测值与预测整体区间,得出预测周期内的平均日需求量,本案例中它的数值是“1039.3”;而对于补货提前期,在本案例中它的数值是“6”。

将这几个参数一并代入公式四,就可以得出测试物料的最佳重订货点应该为9002。

重新Run Mrp后,MD04查看需求,可见基于安全库存和重订货点数量生成了计划订单。

从表面看上去,由系统自动计算出了一个非常低的安全库存是一件挺好的事情。但由于实际需求的不可测与突发波动性的存在,当系统自动运算出的安全库存极低时,往往会给人一种心里发虚的感觉。因此,企业会宁愿设置一个最低限度的安全库存,使自身保有的安全库存值起码高于这个手工设置的数量,在此基础上再由系统对安全库存进行自动运算。这相当于给安全库存的自动运算结果设置了一个下限。

设定最小安全库存,需在执行预测程序之前。复制产成品物料与3000004.jpgtext-align: center;>

但新增了最小安全库存参数,为方便演示,值比上面自动计算的要大

执行预测程序后,当自动计算的安全库存值小于最小安全库存时,结果就会参考最小安全库存值大小并计算重订货点。

另,关于V2类型参考外部需求,更改参数重新Run Mrp后,可见计划订单增加了50PC。是因为销售订单当作外部需求考虑了但计划独立需求是不被考虑的。

以上,有参考部分网络文献进行测试。不足之处欢迎大家指正。

其中涉及到的预测模型以其它功能,并没有理解透彻。争取深入研究,有新的收获再分享给大家。

本文作者 | 阿龙

联系方式 |微信:long199485

特别敬告|欢迎转载,转载请注明出处并保持原文内容,谢谢!

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SPA顾问之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++学习笔记---------基础知识sizeof用法
返回值的类型是标准库命名为size_t的类型,size_t类型定义在cstddef头文件中,该头文件是C标准库的头文件stddef.h的C++版本。他是一个和 机器相关的unsigned类型,其大22:14:53小足以保证内存中对象的大小。
ccf19881030
2019/04/29
5890
C++ 虚拟继承
1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继 承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如 下: class A class B1:public virtual A; class B2:public virtual A; class D:public B1,public B2; 虚拟继承在一般的应用中很少用到,所以也往
猿人谷
2018/01/17
2.5K0
C++ 虚拟继承
完全合并C++面试题
大家好,又见面了,我是全栈君 C++面试题 1.是不是父母写了virtual 功能,假设子类重写它的功能不virtual ,也使多态性? virtual修饰符隐形遗传。 private 还集成。问权限
全栈程序员站长
2022/07/18
4020
C++类大小和静态成员/方法
类大小计算 空类的大小为1字节 一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的 字节对齐的问题。与C语言一致 没有继承的时候,存在虚函数则需要加上虚指针vptr(+4个字节),如果有多个也只需要加上一个,因为只有一个虚指针。 虚基类指针:如果是虚继承,则子类的大小为:虚基类的大小 + 4个字节(用来存放指向虚基对象的指针)+子类新增成员的大小。 示例 #include <iostream> using namespace std; /** * 8=4(x)
用户2929716
2018/08/23
7990
字节大小
首先看一个例子: 1 #include <iostream> 2 using namespace std; 3 4 class A{}; 5 6 class B 7 { 8 int b; 9 char c; 10 }; 11 12 class C 13 { 14 int c1; 15 static int c2; 16 }; 17 int C::c2 = 1; 18 19 class D:public C,public B{ 20 i
猿人谷
2018/01/17
7670
C++重要知识点小结---2
C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html 1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继承。这种类成为抽象类。 一个抽象类至少具有一个纯虚函数。所谓纯虚函数是指被标明为不具体实现的虚成员函数。 如: virtual void WithDrawal(float amount) = 0; //纯虚函数 在WithDrawal()的声明之后的“=0”表明程序员将不定义该函数。该声明是为派生类而保留的位
猿人谷
2018/01/17
7590
深度解读《深度探索C++对象模型》之C++对象的内存布局
在C语言中,数据和数据的处理操作(函数)是分开声明的,在语言层面并没有支持数据和函数的内在关联性,我们称之为过程式编程范式或者程序性编程范式。C++兼容了C语言,当然也支持这种编程范式。但C++更主要的特点在支持基于对象(object-based, OB)和面向对象(object-oriented, OO),OB和OO的基础是对象封装,所谓封装就是将数据和数据的操作(函数)组织在一起,在语言层面保证了数据的访问和操作的一致性,这样从代码上更能表现出数据和函数的关系。在这里先不讨论在软件工程上这几种编程范式的优劣,我们先来分析对象加上封装后的内存布局,C++相对于C语言是否需要占用更多的内存空间,如果有,那么到底增加了多少内存成本?本文接下来将对各种情形进行分析。
爱分享
2024/04/15
4311
深度解读《深度探索C++对象模型》之C++对象的内存布局
C/C++ sizeof(下)
sizeof作用于基本数据类型,在特定的平台和特定的编译器中,结果是确定的,如果使用sizeof计算构造类型:结构体、联合体和类的大小时,情况稍微复杂一些。
恋喵大鲤鱼
2018/08/03
1K0
【C++ 类和对象 基础篇】—— 抽象思维的巅峰舞者,演绎代码的深邃华尔兹
在 C++ 中,类 是面向对象编程的核心概念之一。它是一种用户定义的数据类型,用于描述一组具有相同特性(属性)和行为(方法)的对象。
换一颗红豆
2024/12/27
8740
【C++ 类和对象 基础篇】—— 抽象思维的巅峰舞者,演绎代码的深邃华尔兹
C++从入门到精通——类对象模型
类对象模型是一种编程概念,用于描述和实现面向对象编程(OOP)中的类和对象。在这个模型中,类定义了对象的结构和行为,包括数据成员(属性)和成员函数(方法)。对象是类的实例,具有类的所有属性和方法。类对象模型支持封装、继承和多态等OOP特性,使得代码更加模块化、可重用和易于维护。通过类对象模型,程序员可以创建复杂的软件系统,提高开发效率和代码质量。
鲜于言悠
2024/04/11
2750
C++从入门到精通——类对象模型
什么?C/C++面试过不了?因为你还没看过这个!
(为了方便记忆可以想成)被 const 修饰(在 const 后面)的值不可改变,如下文使用例子中的 p2、p3。
杨源鑫
2020/06/04
3.8K0
c/c++补完计划(四): 字节对齐和虚继承
前言 猪场最爱考的内容, 亲测. 结构体大小 先来看个基础的: #include <iostream> #pragma pack (8) using namespace std; struct A { char a; int b; double c; }; int main() { // 1: 13 // 2: 14 // 4: 16 // 8: 16 cout << sizeof(A) << endl; } 按理说, ch
sean_yang
2020/07/23
7170
c/c++补完计划(四): 字节对齐和虚继承
c++头脑风暴-多态、虚继承、多重继承内存布局
gdb怎么用这里就不展开了,默认你会使用gdb,使用gdb设置打印格式,然后看对象people的内存布局及大小,如下:
cpp加油站
2021/06/29
7710
sizeof 知多少?
稍熟悉C/C++的朋友,对于sizeof肯定不陌生,通过他我们可以知晓某个类型或者实例的内存大小(以字节计),但是如果深入一下sizeof计算的细节,想来大部分朋友就不会那么熟稔了,不过平心而论,平日的工作中其实也很少需要准确计算类型的内存大小(当然,定性的估算类型内存占用还是需要的),但是了解一下sizeof底层的计算方式并没有什么坏处,甚至于可能对我们的灵魂都有益处(Low-level programming is good for the programmer’s soul),网上关于这个话题的信息其实挺多的,但是大多比较零散,自己尝试写了一篇,算作是一个总结吧~
用户2615200
2018/08/02
5690
sizeof 知多少?
图说C++对象模型:对象内存布局详解
0.前言 文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局、虚表指针、虚基类指针等有深入了解的朋友可以慢慢看。 本文的结论都在VS2013上得到验证。不同的编译器在内存布局的细节上可能
Tencent JCoder
2018/07/02
4.7K0
学习笔记-C/C++-结构体与sizeof,内存对齐的题目怎么做
一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.
陈黎栋
2020/02/18
1K0
C++类大小的计算
可以看到,类实例化的对象的大小为1。这是因为即使类是空白类,编译器也会分配一个字节的空间来占位,用来和真正的空白/空变量区别开来(毕竟实例化其实就是分配一定的内存空间,如果没有分配空间,那么就和没有实例化差不多了)。不过注意的是,如果空白类作为基类被继承了的话,是不会对继承它的类的空间产生影响的,即在继承的一瞬间,基类大小变为0,而继承它的类的大小只与自己的成员变量有关(此处默认为单一继承):
太阳影的社区
2021/10/15
1.2K0
C++ 万字长文第二篇---拿下字节面试
AVL 是严格的平衡树,因此在插入/删除节点时,根据不同的情况,旋转的次数比红黑树多。
syy
2020/08/18
1.4K0
从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
首先重新回顾一下关于类/对象大小的计算原则: 类大小计算遵循结构体对齐原则 第一个数据成员放在offset为0的位置 其它成员对齐至min(sizeof(member),#pragma pack(n
s1mba
2017/12/28
1.1K0
从零开始学C++之虚继承和虚函数对C++对象内存模型造成的影响(类/对象的大小)
C++中类的内存对齐「建议收藏」
1.对于C++中的类的内存占用,存在一个很容易出现错误的点。就是:当一个类中并没有定义任何的成员变量也没有定义虚函数的时候,内存的占用情况,代码如下:
全栈程序员站长
2022/02/08
1.2K0
相关推荐
C++学习笔记---------基础知识sizeof用法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档