关于PO净价字段NET_PRICE有时可输入有时仅显示的系统逻辑浅析

关于PO净价字段NET_PRICE有时可输入有时仅显示的系统逻辑浅析

作者:袁云飞(AlbertYuan)

以下内容均为原创,希望对初学者有一些辅助作用,本人主要从事MM/QM/WM的相关工作,不专业处请多多指点,十足干货,码字不易,且行且珍惜,加入粉丝您将能看到更多相关主题文章,转载请引用出处,感激不尽;

小伙伴们应该都知道,关于PO的定价机制,其实是一个挺大的主题,完全讲解透彻在短时间内是不太容易的事情,所以关于PO的定价机制,我在以后主要通过比较小的一些知识点片段来进行说明,等待时机成熟再总览出一篇概况(在里面假设小伙伴们已经通过知识点的了解,所以不会具体再去说明某个术语或知识点了),这样或许能提纲挈领的去概括出SAP在这块的标准设计思路;

诚然,我们知道,MM的采购定价机制其实来源于SD的销售价格定价机制,不容辩驳,从复杂程度,和变化上SD的定价机制才是首屈一指的,我相信MM的开发团队在很多技术上是做了借鉴(抄袭)的,但个人感觉并没有建立起MM的一套完整运行的体系出来,SD确实是有一套能独立完整运行的体系,从思路设计到技术设计再到应用场景设计;

记得SAP的官方有个说法基本上从侧面上阐述(承认)了某些猜测的观点;那就是SAP自己都说MM的定价机制是经过很多次的修改,结合各方客户的反馈意见最后做成目前的这个样子(卵样)的;所以复杂肯定在于我们无法成体系的去了解他(东一坨,西一坨);

建议小伙伴们在有一定ABAP基础的时候去深度剖析MM的定价机制,或者参考SD的机制去理解,这样可以少走些弯路,因为真的有时候,这块的代码就是这么写的,很难知道其意图的原因;

言归正传,我的废话是有点多,海涵,海涵;我们今天这个主题,主要针对的是手工价格的PO的情况,也就是没有通过信息记录里的价格来确定PO价格的情况;这种情况下,我经常会遇到一些客户的小伙伴们的争论,听到这种争论我也是很无奈,这种争论很有意思,A伙伴会说,手工价格的PO创建后,修改的时候是不能修改净价字段的,因为是仅可现实,只能去条件视图里修改;B伙伴会反驳,不是这样,明明可以修改;

那么问题来了,谁对呢,其实他们都对,或者说他们都错了;SAP在对待手工价格PO的逻辑上,标准代码的设计思路是这样的;

我们知道手工价格PO,标准情况下是使用的PBXX作为总价条件类型;我们在修改这种PO的时候,如果修改的字段触发了重新定价的执行(SAP是有特定几个字段作为触发点的,这个在我后面文章中会详细说明哪些字段会触发重新定价),此时系统会去试图寻找合适的条件记录,当然对于手工价格PO来说,是肯定是找不到PB00的条件记录的;所以系统会转而去寻找一个手工价格“manual price”;什么是手工价格呢,系统认为净价字段的值=PBXX的值,这就是手工价格;如果找到了这个手工价格,此时系统会放开行项目的净价字段,所以你看到的此时净价是可编辑的;如果没有找到,则系统会认为此时存在定价过程(也就是除了PBXX还有其他条件类型参与了定价的执行),此时会按照定价过程计算出净价,并且净价字段被设置为仅可显示;但是,这种过程中,系统往往会将上一次的价格都拷贝过来计算,所以当你修改行项目的数据的时候,会给你一种假象,系统并没有更改价格;
在这里插入图片描述
在这里插入图片描述
另外按照上面的标准逻辑,在特定的情况下,比如修改PO的时候,净价字段的值不等于总价条件的值,这样行项目净价字段处于仅显示状态,而你修改的其实是工厂这个字段,此时触发重新定价后,系统拷贝不了以前的PBXX和条件类型,所以系统会提报消息06 218净价为0的错误,让你在净价字段输入价格,这也佐证了其实PO执行了重新定价而最终没有确定出一个非0的净价;

以上是关于净价字段在手工价格PO里表现的标准SAP代码逻辑,会ABAP的小伙伴可以去看看,是否是这样的;

发布了33 篇原创文章 · 获赞 0 · 访问量 907

猜你喜欢

转载自blog.csdn.net/weixin_44853659/article/details/103952583