Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
Qi_Liu
Product and Topic Expert
Product and Topic Expert
有用户看了 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 应用都无法实现增强控制。


 

2022.12.05 ***更新***

CE2208版本更新后,制造模块推出新的功能来完美解决这个问题。

生产流程管理优化(1)如何实现在SAP ERP云中生产订单技术性完成之后无法再进行发料和确认收货 | SAP Blogs

 

 
1 Comment