闲人闲谈PS之五十一——项目物料移动中的2个WBS

惯例闲话:2024年在不知不自觉中已经到来,之前闲人也聊起过2023年是忙碌和收获的一年。今年的任务初步排一下,也基本上排到年底去了,又会是忙碌的一年。虽然忙碌,但是今年对于自己而言,有更加重要的事情要去做,闲人和朋友一起合作,计划要做一件有价值的事,给自己这些年从业SAP做一次总结和回顾。虽然前路曲折,但已经迈开第一步,希望能坚持下去。

闲话到此为止,这次借着开发项目库存周转率分析功能,和大家聊聊项目物料移动中,2个WBS所代表的意义。

项目库存

项目库存移动,操作角度,相比通用库存,需要多录入WBS和Q特殊库存标识,这是对项目库存移动较为常见的理解。
在这里插入图片描述
从数据结构的角度来看,则是增加了WBS的维度。这也容易理解,从SAP的项目库存设计来看,也验证了这一观点。可以看到MSRP实时库存表、QBEW项目库存评估表中,特殊库存标识和WBS作为主键。

在这里插入图片描述
在这里插入图片描述

从2张表可以看出,对于项目库存,SAP把物料编码+WBS作为一个独立的对象来管理,库存数量、金额都属性作为重要信息,也是很多项目企业的内部管理报表中需要提取的。这些年的项目实践经验中,很多顾问对这类应用很熟悉,以上,似乎并没什么特别。如果这是最终结论,那么项目库存的故事也差不多到这里可以结束了。

后续的故事来源于一个常见而难以实现的需求——按项目分析库存周转率。业务部门需求如下:物料入库原材料库后,从原材料到线边仓,从线边仓反冲消耗,这2个环节均要分析库存周转率。周转率报表的实现在于2个要点:
1、周转率的分析维度
2、历史期初、期末库存的记录。

在这里插入图片描述

项目库存的复杂度

但是任何对象增加作为一个独立维度,那么复杂度也同时上升一个数量级。对于项目库存的入和出,不同的移动类型产生的,有由于增加了WBS维度,显而易见的变化是,库存条目的数量级将呈现几何级的增加。所以,为何在SAP之前的R3,ECC时代中没有标准的项目库存周转率报表的原因之一。在S4时代,系统性能大幅度上升的时代,我们则可以考虑在系统去实现。不过这不是本文的重点,还是回到我们要说的主题,物料移动的WBS。这是库存周转等相关库存分析的源头。

当增加了WBS维度之后,出入库发生数来源则出现了不同于通用库存之外的情况,典型的415转WBS。

在这里插入图片描述
如上图,通过415Q移动类型,P001-A库存+1个,P001-B库存-1个。此类业务对应项目型企业中常见的物料在不同项目间的借料场景。
其他的如411项目转通用,412通用转项目库存,都会对WBS库存产生波动。这就产生了2个WBS。从MSEG表中可以看到这2个WBS字段存在,这就是我们今天要闲谈的主题,这2个WBS代表的意义。

MSEG-PS_PSP_PNR

在这里插入图片描述
MSEG-MAT_PSPNR

在这里插入图片描述

不同移动类型下WBS赋值特点

我们挑几个比较典型意义的移动类型来看

1、311Q,项目库存在不同库存地点调拨

在这里插入图片描述

在这里插入图片描述
可以看到MSEG-PS_PSP_PNR = MSEG-MAT_PSPNR
这里为了便于说明可能问题实质,业财一体化,把转出作为贷方,转入作为借方,和财务概念统一起来
311Q看不出太多的特殊点,和通用库存移库类似,只是需要指定贷方的WBS。思考一个问题,借方WBS和贷方WBS不一一样,311Q为何不能实现实现一步法既转库又转WBS?

2、415Q,项目库存在不同WBS的调拨,用于项目间的借料
在这里插入图片描述在这里插入图片描述
以上凭证生成后,
1520139423A028库存减少600PC
1520139423A023库存增加600PC
415会产生财务凭证,说明产生了价值的转移

在这里插入图片描述再看财务凭证表BSEG,只有一个字段PROJK是存WBS。这个就很容易理解,借贷方分开不同行,一个字段就可以表示借贷方。

这里也体现出来,SAP的财务和后勤的底层设计思路的区别,BSEG的这种结构来说,更为简洁,但是MSEG同一行既有转出(贷方)和转入(借方)对象信息,这说明后勤底层设计需要考虑到前端操作影响。由于SAP内核是业财集成,业务产生财务,所以财务无需注重底表设计对操作的影响,更为简洁。

在这里插入图片描述
再回顾第一个问题,为何311Q不能实现一步法转WBS+转库。原因就在这个地方,311不产生财务凭证,借贷方WBS不一致会发生价值转移必然会产生财务凭证,两者就冲突了。所以311Q不允许转WBS。

注意下右边有一已分配WBS要素,思考下这个地方是在哪种场景下使用?

3、411Q,项目库存转通用库存,一般用于项目关闭前,清理项目余料,有用余料调拨到通用物资,作为备料使用。

在这里插入图片描述在这里插入图片描述从凭证项上分析,
1)贷方行特殊库存标识=Q,MSEG-PS_PSP_PNR = 空,MSEG-MAT_PSPNR = 1520137171A024
2)借方行特殊库存标识=空,MSEG-PS_PSP_PNR = 1520137171A024,MSEG-MAT_PSPNR = 空
产生财务凭证,财务凭证的借贷方的WBS显示正确。这个地方就很有意思了,如果要计算项目库存周转率,库存WBS如何判断,到底取哪一个?从这个场景上看,我们应该取MSEG-MAT_PSPNR,但是否适用全部移动类型,这里先保留结论。

在这里插入图片描述
实际操作中发现,411Q还支持一步法转物料号+通用。
下列凭证说明了一次操作将项目库存410000000000010572 WBS 1520141750A023转为通用库存402300000000000124。产生财务凭证

在这里插入图片描述
在这里插入图片描述
4、412,通用库存转项目库存,一般用于通用材料给项目备料,提前锁定库存,平衡利库。
412和411Q互为逆向移动类型。
注意前台的显示的差异,右边显示贷方,左边显示借方

在这里插入图片描述从凭证项上分析,
1)贷方行特殊库存标识=空,MSEG-PS_PSP_PNR = 1520142020A020,MSEG-MAT_PSPNR = 空
2)借方行特殊库存标识=Q,MSEG-PS_PSP_PNR = 空,MSEG-MAT_PSPNR = 1520142020A020
产生财务凭证,财务凭证的借贷方的WBS显示正确。
在这里插入图片描述

通过411和412,周转库存WBS如何判断已经有结论,取MSEG-MAT_PSPNR。注意这个结论,这个对报表开发具有重要意义。

5、541Q项目库存标准外协发料。特殊库存外发加工。

541Q移动类型,注意S4版本才能支持,ECC不支持。
在这里插入图片描述从凭证项上分析,
1)贷方行特殊库存标识=Q,MSEG-PS_PSP_PNR = 1520140091A,MSEG-MAT_PSPNR = 1520140091A
2)借方行特殊库存标识=R,MSEG-PS_PSP_PNR = 1520140091A,MSEG-MAT_PSPNR = 1520140091A
不产生财务凭证
R库存,可以在底表MSRD中查询到,前台则需要用事务码MBLB查看
在这里插入图片描述这里更加验证了转出和转入库存WBS字段取MSEG-MAT_PSPNR。

6、221将库存直接消耗到项目上。这里可分为221Q项目库存消耗和221通用库存消耗,分别在检验下。
案例中的Z21是从221复制移动类型,性质相同。

1)221Q

在这里插入图片描述在这里插入图片描述在这里插入图片描述
再从财务凭证看
在这里插入图片描述这里的MSEG-MAT_PSPNR意义和上面意义一样,表示贷方的库存WBS,但是由于是消耗,进入了损益,
MSEG-PS_PSP_PNR则表示了成本对象。这又是一个关键点。我们在结合下一个211消耗通用库存来理解。

2)221将通用材料消耗到项目
凭证行地点,WBS为空
在这里插入图片描述在这里插入图片描述在这里插入图片描述通过221移动类型小结,MSEG-PS_PSP_PNR必须是成本对象,用来承载物料移动产生财务凭证借方数据

总结:
物料凭证MSEG-MAT_PSPNR存贷方WBS、MSEG-PS_PSP_PNR存借方WBS

搞清楚了这个原理,常用的BAPI_GOODSMVT_CREATE的参数赋值就很清晰了
参数
BAPI2017_GM_ITEM_CREATE-WBS_ELEM 对应 MSEG-PS_PSP_PNR
BAPI2017_GM_ITEM_CREATE-VAL_WBS_ELEM 对应 MSEG-MAT_PSPNR
在这里插入图片描述

项目库存周转设计思路

理清楚以上项目库存的移动中WBS赋值特点,那对于按项目统计库存周转就可以使用SAP标准表来取数。
数据表主键设计
按物料、工厂、WBS、库存地点、年度、月份
在这里插入图片描述通过程序抽取物料凭证写入表,完成周转率数据的基表。
贴一段简单代码,从MSEG表中获取数据后,按照以上主键做collect

SELECTMBEW~BWKEY,MARA~MATNR,MARA~MATKL,MARA~ZGGZL,MARA~ZGGMJ,MARA~MEINS,MBEW~VPRSV,MBEW~STPRS,MBEW~VERPR,MBEW~LBKUM"当前库存
FROM MARA
INNER JOIN MBEW ON MBEW~MATNR = MARA~MATNR
INNER JOIN @LT_MATNR AS A1 ON A1~MATNR = MBEW~MATNR
INTO TABLE @DATA(LT_PRICE_MBEW).SORT LT_PRICE_MBEW BY BWKEY MATNR.CLEAR:LS_ZTMM_QBEWH_N,LT_ZTMM_QBEWH_N[].LOOP AT  LT_MSEG INTO LS_MSEG.LV_BUDAT  = LS_MSEG-BUDAT_MKPF.LS_ZTMM_QBEWH_N-MATNR = LS_MSEG-MATNR."物料号LS_ZTMM_QBEWH_N-WERKS = LS_MSEG-WERKS."工厂LS_ZTMM_QBEWH_N-LGORT = LS_MSEG-LGORT."库存地点LS_ZTMM_QBEWH_N-PSPNR = LS_MSEG-MAT_PSPNR."出入WBSLS_ZTMM_QBEWH_N-LFGJA = LS_MSEG-MJAHR."年度LS_ZTMM_QBEWH_N-LFMON = LS_MSEG-BUDAT_MKPF+4(2)."过账月LS_ZTMM_QBEWH_N-MEINS = LS_MSEG-MEINS."单位IF LS_MSEG-SHKZG = 'H'.LS_ZTMM_QBEWH_N-MENGE_H = LS_MSEG-MENGE."货物移动数量,移出ELSEIF  LS_MSEG-SHKZG = 'S'.LS_ZTMM_QBEWH_N-MENGE_S = LS_MSEG-MENGE."货物移动数量,移入ENDIF.COLLECT LS_ZTMM_QBEWH_N INTO LT_ZTMM_QBEWH_N.CLEAR:LS_ZTMM_QBEWH_N.ENDLOOP.

其中一赋值语句 LS_ZTMM_QBEWH_N-PSPNR = LS_MSEG-MAT_PSPNR."出入WBS,就是根据以上结论。否则,各种场景下的逻辑判断,极其影响程序的效率。
本文简单提一下,后续再分享项目库存周转开发过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/596434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue3顶部内容固定定位,下面内容可以向上滚动

功能要求:一个div里有两个模块儿,顶部按钮模块儿和下面的内容区域模块儿,顶部按钮模块儿固定在顶部不随滚动条滚动,下面内容区域可以滚动 如图: 思路是: 1、顶部按钮固定定位,会脱离文档流&…

两阶段提交协议三阶段提交协议

两阶段提交协议 分布式事务是指会涉及到操作多个数据库的事务,在分布式系统中,各个节点之间在物理上相互独立,通过网络进行沟通和协调。 XA 就是 X/Open DTP 定义的交易中间件与数据库之间的接口规范(即接口函数),交易…

sublime text 打开 txt 文档乱码问题

对于 windows 系统使用系统自带的 txt 编辑工具,默认打开和保存文件的文件的格式是 GBK 或者 GB2312,而 sublime 默认仅支持 utf-8,所以当从 windows 系统拷贝文件在 mac 上浏览有时候会出现乱码的问题,这时候就需要安装插件使 su…

python统计分析——直方图(plt.hist)

使用matplotlib.pyplot.hist()函数绘制直方图 from matplotlib.pyplot as pltdata_setnp.array([2,3,3,4,4,4,4,5,5,6]) plt.hist(fish_data) 下面介绍plt.hist()函数中常用的几个重要参数(参数等号后为默认设置): (1&#xff0…

Linux基础——进程初识(二)

1. 对当前目录创建文件的理解 我们知道在创建一个文件时&#xff0c;它会被默认创建到当前目录下&#xff0c;那么它是如何知道当前目录的呢&#xff1f; 对于下面这样一段代码 #include <stdio.h> #include <unistd.h>int main() {fopen("tmp.txt", …

Web 自动化测试过程中会遇到哪些问题?

作者&#xff1a;木可 链接&#xff1a;https://www.zhihu.com/question/636965892/answer/3341410674 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 Web自动化是指使用测试脚本来自动执行网页上的任务。这包括填…

螺丝厂家:家具螺丝的类型和规格

作为家具厂采购经理&#xff0c;您是否经常对如何选择合适的家具螺钉困惑不已&#xff1f;您想了解不同种类和型号家具螺钉特征和适用场景吗&#xff1f;你想找专业指南来帮助你提升产品质量和稳定性吗&#xff1f;假如你有这些困惑&#xff0c;那么就来对地方了&#xff01; 在…

Python遍历读取 A 文件夹中的 A1、A2、A3、A4、A5 中的各子文件夹中的图片,并对每张图片处理后保存到指定路径

目录 一、具体步骤二、文件夹目录结构样例三、代码四、实例遍历处理后结果五、总结 一、具体步骤 首先&#xff0c;指定 A 文件夹的路径和重命名后的文件夹路径。 然后&#xff0c;遍历 A 文件夹中的各子文件夹。 在每个子文件夹中&#xff0c;遍历所有文件。 读取每个文件&am…

使用 Swagger 导入 Postman: 最佳实践与步骤解析

Swagger和 Postman 都是常用的 API 测试工具&#xff0c;都有各自的优势。为了结合两者的优点&#xff0c;我们可以考虑将 Swagger 中的 API 定义导入到 Postman 中去&#xff0c;这样就可以利用 Postman 更强大的测试功能来测试 Swagger 定义的接口。 下面将以 Swagger Petst…

知虾会员**成为知虾会员,尊享专属权益**

在当今繁忙的生活中&#xff0c;线上购物已经成为现代人们的主要消费方式之一。而作为线上购物平台的领军者之一&#xff0c;Shopee为了提供更加个性化和便利的购物体验&#xff0c;推出了知虾会员&#xff08;Shopee会员&#xff09;服务。知虾会员不仅可以享受到一系列会员专…

LeetCoed刷题:21. 合并两个有序链表

题目&#xff1a; 是否独立解出&#xff1a;否 解题时的思路与想法&#xff1a;解题时有几个问题&#xff1a; 1.怎么遍历两个数组&#xff0c;嵌套两个while循环不能实现&#xff08;后面通过看题解知道list1&#xff01;null&&list2&#xff01;null&#xff09; …

修改 docker /dev/shm 的大小

修改 docker /dev/shm 的大小 1&#xff0c;获取完整id&#xff1a; docker inspect 245| grep Id rootlynxi:~# docker inspect 245| grep Id"Id": "245ab167ed9a79873b31b3a38df2053870fe72f267c3c1a660df25c63e37e88b",2&#xff0c;修改 ShmSize&…

函数模板和类模板(初阶)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生&#x1f43b;‍❄个人主页&#x1f389;&#xff1a;GOTXX&#x1f43c;个人WeChat&#xff1a;ILXOXVJE&#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&am…

【springboot配置文件加载源码分析】

在Spring Boot的源码中&#xff0c;配置文件的加载是在应用程序启动的早期阶段进行的。具体来说&#xff0c;配置文件加载的主要步骤发生在SpringApplication类的run()方法中的prepareEnvironment方法中&#xff0c;真正读取我们的配置文件还是PropertySourceLoader。 本篇博客…

哪个牌子最值得购买?好用的洗地机排行榜

随着生活水平的提高&#xff0c;人们对家庭卫生的重视程度也越来越高&#xff0c;家用洗地机成为了现代家庭清洁中不可或缺的一部分。2024年的品牌排行榜也开始逐渐浮出水面&#xff0c;消费者们对于哪个品牌的家用洗地机更值得信赖也开始产生了新的讨论。接下来&#xff0c;让…

跟我用路由器学Linux编程实例四

专栏目录 第一章 简单编程实现花生壳的ddns功能 第二章 让花生壳ddns脚本自动工作 第三章 同时解析多个花生壳域名的脚本 第四章 具有通用性的花生壳ddns脚本 用折腾路由的兴趣&#xff0c;顺便入门shell编程。 第四章 具有通用性的花生壳ddns脚本 文章目录 专栏目录第四章 具…

C语言快速入门——基础知识

C语言基础 C语言基础C程序基本格式基本数据类型原码、反码和补码原码反码补码 整数类型浮点类型字符类型 变量变量的使用无符号数类型转换 运算符基本运算符运算符优先级自增自减运算符位运算符逻辑运算符 流程控制分支语句 - if分支语句 - switch循环语句 - for循环语句 - whi…

Ebean:一款被低估的ORM框架

ORM框架为什么不香&#xff1f; 对ORM框架的偏见 看了一些MyBaties与Hibernate进行对比的文章。可能是因为一些Hibernate历史原因&#xff0c;国内对于Hibernate普遍存在偏见&#xff0c;我摘抄了几点&#xff1a; 1. hibernate是全自动&#xff0c;而mybatis是半自动 hibernat…

如何让软文真正起效?媒介盒子为你解答

在如今这个互联网大环境下&#xff0c;想要写出有价值的软文去“忽悠”用户其实是不简单的&#xff0c;那我们应该怎么做才能让软文真正起效呢&#xff1f;媒介盒子为你解答。 一、软文写作前 1.了解平台特性 每个平台都有自己的定位。有的定位于以分享专业知识为主&#xff…

某和医院招采系统web端数据爬取, 逆向js

目标网址:https://zbcg.sznsyy.cn/homeNotice 测试时间: 2024-01-03 1 老规矩,打开Chrome无痕浏览,打开链接,监测网络,通过刷新以及上下翻页可以猜测出数据的请求是通过接口frontPageAnnouncementList获取的,查看返回可以看出来数据大概率是经过aes加密的,如图: 通过查看该请…