调用事务执行顺序的问题。

2020-09-09 10:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好。 我们称vl02n和v...

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

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


大家好。

我们称vl02n和vf01的执行不相等,有些时候vf01没有执行且不发送消息。

我尝试使用10秒,但有限制。

还有其他解决方法吗?

 FORM f_shdb_faturar使用p_delivery。

   DATA:vl_counter TYPE i,

        vl_mensagem TYPE bapiret2-消息。



   清除:gt_bdcdata,

          gt_msg。



 **InícioRonaldo Alves-23.04.2019。

   等待最多10秒。

 **罗纳尔多·阿尔维斯(Fim Ronaldo Alves)-23.04.2019。



   执行f_preenche_bdc使用:

         'X''SAPMV60A''0102',

         '''BDC_CURSOR''KOMFK-VBELN(01)',

         '''BDC_OKCODE''= SICH',

         '''KOMFK-VBELN(01)'p_delivery。



 **InícioRonaldo Alves-23.04.2019。

   如果vl_counter <60。" Espera 60 segundos nomáximo



     清除gt_msg []。

     提交工作并等待。



     使用gt_bdcdata进行交易'VF01'

                             MODE v_mode

                             更新v_s

                             将消息发送到gt_msg。



     使用键msgnr ='311'将表gt_msg读入DATA(el_msg)

                                                  msgstr ='VF'。

     如果sy-subrc = 0。

       vl_counter = 70。

       CONCATENATE TEXT-008'('el_msg-msgv1')'INTO vl_mensagem按空格分隔。

     其他。

       等待最多1秒。

       向vl_counter添加1。

     万一。

   结束。



   如果vl_mensagem是INITIAL。

     vl_mensagem ='错误'。

   万一。

 **罗纳尔多·阿尔维斯(Fim Ronaldo Alves)-2019年4月23日。
3条回答
Bunny_CDM
2020-09-09 10:54

如果有很多请求,则永远不能保证" X秒"等待就足够了,因此以前的"呼叫交易'VL02N'"的更新任务已完成。 在给定的时刻更新任务:仅当更新工作流程免费时,它才会排队并处理。

要么将少量失败的"呼叫交易"存储为会话(BDC_OPEN_GROUP等),然后恢复

或者您可以强制VL02N在本地执行更新任务(更新任务不会完成更新,并且根本不需要WAIT,因为更新 通过以下方式同步完成):

呼叫事务'VL02N'... UPDATE'L'... 

PS:您的提交工作可能完全没用,至少在 据我所知,该循环。

编辑:您应该存储CALL TRANSACTION返回的消息,它们说出交易失败的原因(对于VF01,类似"交付尚未完成")。 如果您确实没有所说的任何消息,请在SAP支持人员处打开故障单。

一周热门 更多>