通过SAP_WAPI_ADM_WORKFLOW_CANCEL取消工作流导致隐式提交工作

2020-08-22 04:17发布

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

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


你好

我正在使用功能模块SAP_WAPI_ADM_WORKFLOW_CANCEL取消工作流程。

一切正常,除了隐式提交工作。 它发生在里面:

CL_SWF_RUN_WIM_STATE-> DYN_CANCEL_CHILD_ITEMS

....
调用方法lh_wfm-> cancel()。

....

其中lh_wfm是CL_SWF_RUN_WFM类的实例

然后调用CL_SWF_RUN_WFM->清理方法和CL_SWF_RUN_WFM->保存方法

CL_SWF_RUN_WFM-> save方法在内部进行

调用方法lh_transaction_manager->提交。

commit方法执行COMMIT CONNECTION(我-> m_database_connection)。

在我的情况下,它是DEFAULT连接,即使不需要,也会导致隐式提交事务中的所有数据。

我想避免这种行为。

除了在工作流中的事件和特定处理之外,我还能在WF之外使用什么以一致和事务的方式取消它?

我的交易提交后,我需要立即取消工作流程。

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

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


你好

我正在使用功能模块SAP_WAPI_ADM_WORKFLOW_CANCEL取消工作流程。

一切正常,除了隐式提交工作。 它发生在里面:

CL_SWF_RUN_WIM_STATE-> DYN_CANCEL_CHILD_ITEMS

....
调用方法lh_wfm-> cancel()。

....

其中lh_wfm是CL_SWF_RUN_WFM类的实例

然后调用CL_SWF_RUN_WFM->清理方法和CL_SWF_RUN_WFM->保存方法

CL_SWF_RUN_WFM-> save方法在内部进行

调用方法lh_transaction_manager->提交。

commit方法执行COMMIT CONNECTION(我-> m_database_connection)。

在我的情况下,它是DEFAULT连接,即使不需要,也会导致隐式提交事务中的所有数据。

我想避免这种行为。

除了在工作流中的事件和特定处理之外,我还能在WF之外使用什么以一致和事务的方式取消它?

我的交易提交后,我需要立即取消工作流程。

付费偷看设置
发送
5条回答
haha101010
1楼-- · 2020-08-22 04:49

嗨,Sergei,

SAP_WAPI_ADM_WORKFLOW_CANCEL具有DO_COMMIT输入参数。 您是否尝试将其设置为ABAP_FALSE?

我现在无法检查,但从其名称​​看来,它应该提供了所需的行为

三十六小时_GS
2楼-- · 2020-08-22 04:34

Sergei,

我在7.00系统中重现了该问题。

这对我来说也是一个问题,因为我正计划进行类似的开发。 而且它似乎没有SAP注释可以解决此问题,至少到目前为止我还没有找到它。

微wx笑
3楼-- · 2020-08-22 04:38

我当然尝试过,do_commit没有传递给 我提到的代码。

风早神人
4楼-- · 2020-08-22 04:47

嗨,

我通常使用事件来控制工作流程的取消。 我的大部分工作流程都是从1:2分叉开始的。 一方面,是整个业务流程,另一方面是带有所有等待事件步骤的子流,这使得该流程无效(删除,更改等)。

请问,罗伯·迪勒曼斯

野沐沐
5楼-- · 2020-08-22 04:39

嗨,Rob,
我们知道这一点,我们希望避免这种情况。 因为这种方法给我们的工作流程带来了不必要的例行程序和复杂性。
从某种意义上说,每个WF都有一些棘手的要求,即无法(由用户)取消它。 每个WF根据自己的逻辑发出有关该情况的信号。 因此,这不是一个简单的全局1:2分支。
我们还具有复杂的请求处理框架,每个请求都紧密链接到自己的工作流(例如在Process和Forms中),在某些情况下,我们还具有父子请求关系 需要立即取消所有操作而没有任何延迟和不希望的后果(如果在不同的WP中通过tRFC下的不同LUW取消操作)
对于我们来说,最好的情况是在一个事务中取消所有操作,并在失败时进行回滚

一周热门 更多>