SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配

最近遇到个奇葩生产机问题,业务那边三大模块SD、MM、EWM的顾问都调查过了,依然无果。万般无奈之下,甩锅给开发,于是众望所归身负重任的我上线了(此处应有掌声)。

首先介绍下业务背景:

公司间关联交易通过STO生成外向交货单(Tcode:VL10D),并且配置了抬头输出类型SPED(Tcode:V/34),当外向交货单过账完成则会自动生成内向交货单。

因为启用了EWM系统,所以细分到仓储位置的交货单新建完成之后便传输到EWM系统,由EWM负责拣配包装过账,并同步至ERP系统,不过可以忽略这复杂流程,因为没有EWM系统直接在ERP系统里过账交货单也会出现同样问题。

然后问题来了:

当外向交货单过账完成,生成内向交货单时候报错了,如下图所示:

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配_第1张图片

业务顾问那边给出的描述是外向交货单过账完成物料从发货工厂发出,收货工厂还未收货,但HU的库存已经到了收货工厂(Tcode:HUMO)。

怎么调查的呢?客官莫急,且让我先嘚瑟一会,哈哈哈哈哈哈哈哈哈哈

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配_第2张图片

经过我耐心细致的Debug,终于窥见一丝端倪,原来是交货单行项目里字段POSTING_CHANGE为空导致的,而正常能够执行下去的交货单该字段值为E。

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配_第3张图片

Debug源码图片

 

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配_第4张图片

交货单行项目数据对比图

所以现在可以确定创建交货单时已经出现问题了,那就继续Debug生成外向交货单的标准程序,其实VL10D底层是调用的函数SHP_VL10_DELIVERY_CREATE。一遍遍跟踪变量XLIPS[],最终发现是移动类型的类别导致的POSTING_CHANGE赋值不一。

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配_第5张图片

出错交货单的移动类型

 

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配_第6张图片

正常交货单的移动类型

到此,原因大白于天下,怎么解决的呢?接下来就到了我与业务顾问周旋的时刻了。

我:你们是不都应该用643这移动类型?

业务顾问:嗯,我在看是不是移动类型配错了。

————————————————   半小时之后   ———————————————————

业务顾问:643不允许用项目库存,我看看能不能用别的移动类型。

我:你们可以拷贝出来一个移动类型改下吗?

业务顾问:我再试试。

( 这边解释一下,交货单做了增强,如果有项目库存则将WBS元素写入交货单行项目,所以移动类型只能使用带项目的。)

————————————————   两小时之后   ———————————————————

业务顾问:找不到合适的移动类型,拷贝出来也不让修改类别,那字段是灰色的不可修改。可不可以通过增强实现?

我:......(思考良久)你们想怎么改?

业务顾问:(喜极而泣的表情)试试在写入WBS元素那边修改 LIPS-GMCONTROL = 'B' 和LIPS-POSTING_CHANGE = 'E'。

于是码农我又开始搬砖了,VL10D再次Debug在交货单增强处修改了值,业务顾问拿着新生成的亮闪闪的交货单继续跑业务流程,完美生成内向交货单并过账,检查库存也无误。

PS:交货单使用BADI增强 LE_SHP_DELIVERY_PROC,修改方法IF_EX_LE_SHP_DELIVERY_PROC~CHANGE_DELIVERY_ITEM,如下图所示:

SAP 公司间关联交易 外向交货单自动生成内向交货单报错:处理的单位XXXXXXX已经入库.无法进行分配_第7张图片

经此一役,再次巩固了我在业务顾问心目中完美无缺的ABAP大神形象,哈哈哈哈哈哈哈哈哈哈

收工~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

 

 

你可能感兴趣的:(ABAP,采购模块,sap)