COMMIT WORK AND&…

本文探讨了 SAP 系统中 COMMIT WORK 和 COMMIT WORK AND WAIT 的区别,详细解释了这两种方式如何影响数据更新的过程。前者采用异步更新机制,而后者则确保同步更新直至数据完全写入数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值