BADI在更改模式下未触发MDG_BS_MAT_API_ENRICH_BADI

2020-09-28 06:15发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

在创建材料的情况下(对于 WF-BATCH 用户),从方法 SAVE 的类 CL_MDG_BS_MAT_API 中调用此BADI,但在 对于材料变更,我们希望在工厂扩展的材料变更中使用此 MDG_BS_MAT_API_ENRICH_BADI BADI。

请对此问题提出您的建议。

致谢

穆罕默德·萨吉德

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

在创建材料的情况下(对于 WF-BATCH 用户),从方法 SAVE 的类 CL_MDG_BS_MAT_API 中调用此BADI,但在 对于材料变更,我们希望在工厂扩展的材料变更中使用此 MDG_BS_MAT_API_ENRICH_BADI BADI。

请对此问题提出您的建议。

致谢

穆罕默德·萨吉德

付费偷看设置
发送
5条回答
当学会了学习
1楼-- · 2020-09-28 06:36

嗨,应该调用BAdI进行创建和更新。

您可以在类CL_MDG_BS_MAT_API => SAVE中通过断点来调试它,方法是在调用rich_custom_segments时设置断点。

如果这不起作用,则可能是要出票的原因。

关于IngoBruß,

Alawn_Xu
2楼-- · 2020-09-28 06:46

对此

Baoming ROSE
3楼-- · 2020-09-28 06:56

嗨Ingo Bruss,

感谢您的答复,我尝试调试此方法CL_MDG_BS_MAT_API =>调用此方法当我们在创建材料MAT01和WF-BATCH用户的导入参数IV_TEST_MODE = abap_false时激活材料时,这就是BADI的原因 叫

如果iv_test_mode为INITIAL。

尝试。

获取BADI lo_enrich_badi。

致电BADI lo_enrich_badi-> enrich

导入et_message = lt_message

更改cs_data = ls_data。

将lt_message的行追加到et_message。

捕获cx_badi_not_implemented。 "没有BADI实现CATCH cx_root。

ENDTRY。

ENDIF。

但是,如果材料更改为MAT02,则WF-BATCH用户不会调用此方法。 但是对于最终批准用户,当我们激活材料时,此方法参数将填充IV_TEST_MODE = abap_true。

请为这个问题提供帮助。

致谢

Sajid

wang628962
4楼-- · 2020-09-28 06:51

嗨,

我不确定您要实现什么,但是在CREATE或CHANGE中,很简单,只有在激活CR之前才调用badi。 如果我的理解是正确的,则仅在CR最终批准流程完成之前才调用BADi。 如果进行更改,则可能会尝试创建并将其另存为草稿版本。 我建议检查是否通过使用MAT02 CR类型更改了现有资料并保存了BADI,但不提交或完成该过程。 在这种情况下,我猜它应该触发BADI>

我想知道的另一点是,如何以及为什么在用户WF-BATCH上创建断点。 通常,WF-BATCH用户是非对话框用户,这使该用户无权在调试模式下执行。 请就此向您的基础团队咨询

谢谢,帕万(Pavan)

宇峰
5楼-- · 2020-09-28 06:49

嗨,

当用户在最后的批准过程中单击"激活"按钮时,系统将通过在测试模式下创建材料进行检查,即iv_test_mode = abap_true。 如果有任何错误,则用户将在UI中因该错误而停止。 如果一切正常,系统将在iv_test_mode = abap_false中调用save方法进行最终保存。 这是创建,更改或删除材料的正常过程。 如果未在更改材料中调用save方法,则最好举个标签。 还要确保正确提到了BADI的过滤器名称,请在调试模式下进行检查。

致电BADI lo_enrich_badi-> enrich

感谢和问候,

Logan.D

一周热门 更多>