Skip to Content
Product Information

生产订单(工单)技术完成后,如何防止继续对工单收货

有用户看了 SAP S/4HANA CLOUD 用户年度十八问(2020) | SAP Blogs 之后对如下问题表示关注,想了解一下BADI具体如何使用。本文给出一个样本代码以及注意事项,供用户参考。

1. 生产用户问:生产订单(工单)技术完成后,能否对订单相关的收发货,报工取消等后续操作进行控制?如何控制?

答:在SAP S/4HANA Cloud系统中,不能对生产订单的系统状态进行客制化的配置,因此无法通过标准配置实现对生产订单技术完成后的操作控制。但是,对于收发货的控制,可以通过物资模块的BADI:MMIM_GR4XY_CHECK_DATA进行根据生产订单不同状态下货物移动的控制,从而作为替代方法简介实现。

在内部系统测试后的结果如下。当工单已经技术关闭,如果继续对工单收货则会触发错误提示‘工单已技术关闭’,进而阻止对工单继续收货。

 

找到这个增强点的路径如下图:

 

 

代码样例:

DATA: ls_orderistechnicallycompleted TYPE string.

 

LOOP AT gr4xy_item REFERENCE INTO DATA(im_gr4xy_item).

 

IF im_gr4xy_item->inbounddelivery IS NOT INITIAL.

 

SELECT SINGLE

FROM i_mfgorderwithstatus

FIELDS orderistechnicallycompleted

WHERE ManufacturingOrder = @im_gr4xy_item->inbounddelivery

INTO @ls_orderistechnicallycompleted.

 

IF ls_orderistechnicallycompleted IS NOT INITIAL AND ls_orderistechnicallycompleted = ‘X’.

ls_message-messagetype = ‘E’.

ls_message-messagetext = ‘This order is technically completed’.

APPEND ls_message TO messages.

ENDIF.

ENDIF.

ENDLOOP.

 

非常值得注意的是,BADI 的接口参数中 工单号码对应的字段名称是inbounddelivery,从字段名称上来看容易让人迷惑。

值得一提的是,这个增强点只对‘过账生产订单的收货’ F3110这个应用生效。

 

API和 都‘过账货物移动’ MIGO 应用都无法实现增强控制。

 

 

1 Comment
You must be Logged on to comment or reply to a post.