更改文档+工作流程,避免重复发生

2020-09-02 18:20发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好, 场景。 1。 用户...

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

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


你好,

场景。

1。 用户创建客户。

2。 根据更改文档,引发事件CREATED(SWE2-配置的自定义Z *模块检查某些条件并引发事件)。

3。 工作流程开始,遍历所有公司代码,并通过BDC同步调用XD01以在其余公司代码中创建客户。

问题。

每次从工作流程中调用XD01时,也会引发事件CREATED,因此将递归调用工作流程。

我无法区分事件是由用户引发还是由工作流程引发。

到目前为止,我只是检查(Z * FM,在引发CREATED事件之前),如果KNB1中只有1个条目,则仅引发该事件。

我正在寻找一种解决问题的灵巧方法,它是暂时抑制工作流会话中的事件生成,传递一些额外的事件参数或其他方法。

谢谢。

5条回答
Doze时光
2020-09-02 19:19

@ 拉梅兹汗鲁本·罗兰诺(Ruben Rollano)Carcajona

不涉及IDOC。

我已经创建了自定义BOR对象ZZ_KNA1(作为KNA1的子类型)。 标准KNA1对象没有任何事件,因此我添加了它们(事件ZZ_KNA1.created/ZZ_KNA1.changed)并将它们绑定到更改文档(DEBI-客户)-tcode SWEC。

然后在tcode SWE2中,将事件ZZ_KNA1.created绑定到我的工作流,并将自定义Z *功能模块配置为"接收器功能模块"。

通过添加接收器FM,在引发ZZ_KNA1.created事件之前,系统会自动调用Z * FM(此处没有自定义编码,只要创建客户,系统便会调用此FM)。 在此FM中,在引发实际事件之前,我先检查了一些条件(客户组KNA1-KTOKD),然后通过调用SWW_WI_CREATE_VIA_EVENT_IBF引发事件。

以上工作原理,在创建客户之后启动工作流程。

问题在于工作流本身还会创建客户(将他们扩展到其他公司代码),但是会触发ZZ_KNA1.created事件,进而启动工作流。

作为一个例子。

比方说,有3个公司代码1000、1001、1002。

1。 用户在CC 1000中创建客户。

2。 调用Z * FM,调用ZZ_KNA1。引发created事件,调用工作流。

3。 工作流开始将客户复制到CC 1001、1002。

4。 调用Z * FM,调用ZZ_KNA1。CC1001引发了created事件-再次调用了相同的工作流程。

5。 调用Z * FM,调用ZZ_KNA1。CC1002引发了created事件-再次调用了相同的工作流程。

我不希望发生第4步和第5步,或者至少不希望找到一种条件使我能够过滤事件(在Z * FM内部)并且仅对用户生成的事件而不是工作流本身做出反应。

一周热门 更多>