惯例闲话:CSDN上写文章已有3年了,平时工作中可支配自由时间也不算充裕,盘点以往的文章,发现也陆陆续续的写了将近50篇了。回想3年前,当时正好是下项目的空档,当时也是因为一个项目上一直没有很好解决Q库存的公司交易问题,如同鱼刺梗在喉咙,于是网络上四处寻找官方和民间的高手文章,虽然最后没有比较可靠的线索,但是通过寻找的过程发现,PS这个模块已经有不少高人在分享自己的项目心得,像团子、钢柱、Zhan等已经是当时比较有名的PS知识分享达人,CSDN、微信公众号上有相当的高质量的文章。不过相比其他模块,PS的这个圈子还是相对封闭,知识圈还不大,与之相对的,从各大微信群的零散提问,有着大量渴望PS知识普及的群体。闲人的做事风格,属于偏执型,认定的事情,不会在意世人的看法,按照自己的意志做下去。在这些年的经历中,看过太多的烂尾或空壳PS实施,包括早年间,自己做过的失败项目。刚开始写文章,想法很简单,就是提醒自己,别再重复踩以前的雷,如果帮助别人避雷,也算是积功德了。随着从业位置转换,带来更多的思考,以前的PS做了什么、现在能做什么,为什么要做、将来能做什么…当和企业运营结合起来,才发现这里面的内容远远超乎自己的想象,闲人至今还记得早些年和甲方老板对话是否上PS的,老板的一句话让闲人惊醒——我们选择SAP,选择PS模块,选择XX顾问,是要他们的组合价值。我知道SAP很强大,但是它用到我公司还能否强大,对此我认为还看不到确定答案!从那个时候起,闲人认定一个方向,用自己的文字保持对人、对知识的敬畏之心。一直以来坚守,在PS这个小圈子里,收获了很多,但同样随着知识的半径扩大,未知也越来越大——为何要对知识保持敬畏之心!
闲话到此为止,今天和大家回顾一下3年前第一篇Q库存的公司交易问题以及遗留的尾巴。
闲人的开篇——项目库存跨公司业务STO解决方案,官方标准解决方案。这个方案对于多数集团型项目管理具有重要意义,可以使用一个WBS,管理库存在不同公司代码之间的流动,同时保持账务的一致性。方案的详细流程和配置请参见闲人的第一篇《闲人闲谈PS之一项目库存跨公司业务STO解决方案》
但是这个方案有一个缺陷,最后一步做VF01公司开票时,系统不支持WBS公司代码和开票公司代码不一致,只能用手动F-02方式来做总账凭证,
SAP官方在2021年6月4日给出的notes3060523中有这么一段解决方案——更换WBS
很显然这个解决方案是解决不了关键的应用场景需求——一个WBS穿透不同公司代码。
在官方没有给出补丁之前,我们可以通过debug的方式,找到抛消息的代码段,然后向前追溯。通过debug,找到消息的三个触发点
1、VF01
VF01保存的增强点:include程序 LV60AA95。964行代码处增加一个判断,当交货类型为NCCR时,将校验WBS公司代码逻辑跳过。
这个的判断条件需要注意:
1)开票凭证行的WBS不为空
2)根据开票凭证行获取交货单行项目类型,这里是NCCR
2、VF02生成开票凭证
VF02生成开票凭证:包含程序 LKAIPF1G。247行代码处增加一个判断,当凭证和WBS相关时,即OCC_OBJ-SCOPE = ‘PR’,将错误消息跳过。
3、VF02过账生成财务凭证
过账时再次校验,也需要干预强制校验
VF02调用财务凭证接口:类CL_FINS_ACDOC_CO_UTIL=========CM006的方法中, MAP_COMMON_ATTRIBUTES (CL_FINS_ACDOC_CO_UTIL)。这里笔者给出的判断条件是,WBS和采购订单不为空同是满足和2个条件,跳过这个消息。做此类增强的原则,一定要将条件约束做到精准,这样最大限度不影响已有的功能。
跳转校验后,系统成功过账生成财务凭证,可以在交货单界面看到凭证流
以上是使用隐式增强方式对Q库存公司间交易最后一步报错的强制干预,实现业务操作闭环。本质上,这是一种暴力改代码,对于过账的结果闲人是不担心的,主要能改代码,理论上都可以过去,但是对系统造成的影响,花费了较长时间去验证,目前来从财务账上看没有看出明显异常,但是后续和是否有其他问题,还需要经过财务月结全过程,来检验。