SAP BAPI_PR_CHANGE 修改 EBAN-EBAKZ 结算 和 EBAN-BLCKD 冻结

本文介绍了一个具体的 SAP BAPI 调用流程,包括获取采购请求详情和修改采购请求价格等操作。展示了如何使用 ABAP 语言进行 BAPI 的调用,并对数据结构进行了详细说明。

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

  FIELD-SYMBOLS<FS_PR>   TYPE BAPIMEREQITEM.
      DATAI_RETURN          TYPE TABLE OF BAPIRET2,
            K_PRITEMX         LIKE BAPIMEREQITEM,
            I_PRITEM_GET      TYPE TABLE OF BAPIMEREQITEM,
            I_PRITEM_GET_LINE LIKE LINE OF I_PRITEM_GET,
            I_PRITEMX         TYPE BAPIMEREQITEMX  OCCURS 0,
            IS_PRITEMX        TYPE BAPIMEREQITEMX,
            I_PRITEM          TYPE TABLE OF BAPIMEREQITEMIMP,
            I_PRITEM_LINE     LIKE LINE OF I_PRITEM,
            I_SERVICES        TYPE TABLE OF BAPI_SRV_SERVICE_LINE,
            I_SERVICES_LINE   LIKE LINE OF I_SERVICES,
            I_SERVICESX       TYPE TABLE OF BAPI_SRV_SERVICE_LINEX,
            I_SERVICESX_LINE  LIKE LINE OF I_SERVICESX,
            K_RETURN          LIKE LINE OF I_RETURN,
            LV_TABIX          LIKE SY-TABIX.                "D10K969053
*   Get pr details
      CALL FUNCTION 'BAPI_PR_GETDETAIL'
        EXPORTING
          NUMBER       '0020000512'
          SERVICES     'X'
        TABLES
          RETURN       I_RETURN
          PRITEM       I_PRITEM_GET
          SERVICELINES I_SERVICES.
      IF SY-SUBRC 0.
        LOOP AT I_PRITEM_GET INTO I_PRITEM_GET_LINE.
          I_PRITEM_GET_LINE-CLOSED 'X'.
          I_PRITEM_GET_LINE-REQ_BLOCKED '1'.
          I_PRITEM_GET_LINE-REASON_BLOCKING '尾量不需执行'.
*       If pr is locked clear deletion indicator to unlock it.
          MOVE-CORRESPONDING I_PRITEM_GET_LINE TO I_PRITEM_LINE.
          IF I_PRITEM_LINE-DELETE_IND 'L'.
            CLEAR  I_PRITEM_LINE-DELETE_IND.
          ENDIF.
          IS_PRITEMX-PREQ_ITEM I_PRITEM_LINE-PREQ_ITEM.
*        k_pritemx-delete_ind = 'X'.
          IS_PRITEMX-PREQ_ITEMX 'X'.
          IS_PRITEMX-CLOSED 'X'.
          IS_PRITEMX-REQ_BLOCKED 'X'.
          IS_PRITEMX-REASON_BLOCKING =  'X'.
          APPEND IS_PRITEMX TO I_PRITEMX.
          CLEAR  K_PRITEMX.
          APPEND I_PRITEM_LINE TO I_PRITEM.
          CLEAR  I_PRITEM_LINE.
        ENDLOOP.
        CLEAR I_RETURN.
*     Unlock pr
        LOOP AT I_SERVICES INTO I_SERVICES_LINE WHERE DEL_IND <> 'X'.
          LV_TABIX SY-TABIX.
*            i_services_line-GROSS_PRICE = '100'.
          I_SERVICES_LINE-QUANTITY '10'.
          I_SERVICESX_LINE-DOC_ITEM I_SERVICES_LINE-DOC_ITEM.
          I_SERVICESX_LINE-OUTLINE I_SERVICES_LINE-OUTLINE.
          I_SERVICESX_LINE-GROSS_PRICE 'X'.
          I_SERVICESX_LINE-QUANTITY 'X'.
          APPEND I_SERVICESX_LINE TO I_SERVICESX.
*            modify i_servicesx from i_servicesx_line index sy-tabix.
*          In ORDER to set the price the deletion indicator must be cleared.
          MODIFY I_SERVICES FROM I_SERVICES_LINE INDEX LV_TABIX.
          CLEAR I_SERVICES_LINE-DEL_IND.
        ENDLOOP.
        CLEAR I_RETURN.
*       Call bapi to change the gross price.
        CALL FUNCTION 'BAPI_PR_CHANGE'
          EXPORTING
            NUMBER        '0020000512'
*           PRHEADER      =
*           PRHEADERX     =
*           TESTRUN       =
*         IMPORTING
*           PRHEADEREXP   =
          TABLES
            RETURN        I_RETURN
            PRITEM        I_PRITEM
            PRITEMX       I_PRITEMX
            SERVICELINES  I_SERVICES
            SERVICELINESX I_SERVICESX.
        IF SY-SUBRC 0.
*         Commit changes to the DB.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              WAIT 'X'.
        ENDIF.
      ENDIF.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值