0
点赞
收藏
分享

微信扫一扫

[转载]COMMIT WORK AND WAIT 是在WAIT什么_SAP刘梦_新浪博客

作者:​​sap侠之大者​​

wait 还是不wait,这是个问题。 这是同步更新还是异步更新的问题;如果是只commit work,是异步更新,触发注册在当前SAP LUW中所有数据更新动作,数据更新动作由SAP的更新工作进程来执行,当前程序不等待更新动作结束,直接向下执行。 commit work and wait 是同步更新,此语句触发注册在当前SAP LUW所有数据更新动作,当前主程序等待SAP更新进程完成数据更新操作,然后向下执行。严格来说,commit work and wait也不是彻底的同步更新,此处等待数据更新操作完成,是指只等V1更新(优先级较高)完成,不等待其他优先级较低的V2更新等。

在调用BAPI更新标准对象时,除少数BAPI在函数内做commit之外,其他均需要调用一下function module完成提交      CALL  FUNCTION  'BAPI_TRANSACTION_COMMIT'

     

EXPORTING

       

WAIT           =  'X' "

*     IMPORTING

*       RETURN        =

              

. 单就更新来说,这个参数  WAIT           =  'X' 和commit work and wait 功能一样的。

可以使用以下模式的代码来看看wait 和不wait的更新效果 DO 2 TIMES.    IF SY - INDEX  =  1 .

    LV_WAIT 

=  'X' .

  

ELSE .

    LV_WAIT 

=  '' .

  

ENDIF .   CALL FUNCTION 'BAPI_PO_CREATE1'     EXPORTING       POHEADER                     = GS_HEAD       POHEADERX                    = GS_HEADX *   POADDRVENDOR                 = *   TESTRUN                      = *   MEMORY_UNCOMPLETE            = *   MEMORY_COMPLETE              = *   POEXPIMPHEADER               = *   POEXPIMPHEADERX              = *   VERSIONS                     = *   NO_MESSAGING                 = *   NO_MESSAGE_REQ               = *   NO_AUTHORITY                 = *   NO_PRICE_FROM_PO             =    IMPORTING      EXPPURCHASEORDER             = LV_PO     TABLES       RETURN                       = GT_RETURN       POITEM                       = GT_ITEMS       POITEMX                      = GT_ITEMX             .   IF LV_PO IS NOT INITIAL .      CALL  FUNCTION  'BAPI_TRANSACTION_COMMIT'

     

EXPORTING

       

WAIT           = LV_WAIT "'X' *     IMPORTING *       RETURN        =               .     SELECT SINGLE * INTO WA         FROM EKKO         WHERE EBELN = LV_PO.     IF SY-SUBRC EQ 0.       WRITE: 'Oh Yes, the PO has been inserted into database now', /.     ELSE.       WRITE: 'Come on, The update process is running still', /.     ENDIF.   ENDIF.   CLEAR WA.   CLEAR LV_PO. ENDDO.

举报

相关推荐

0 条评论