如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的欄位

i042416發表於2018-10-30

假設我想修改S/4HANA裡Sales Order抬頭的Service Date欄位SERV_DATE:

首先從資料庫表VBKD裡查詢到SERV_DATE修改之前的值為2020年1月1日

如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的欄位

使用如下程式碼,將這個欄位的值改成2020年1月2日。

REPORT zchange_so1.
DATA: lv_num        TYPE bapivbeln-vbeln,
      ls_doc_header TYPE bapisdhd1,
      lt_vbap       TYPE STANDARD  TABLE OF vbap.
lv_num = '0000000268'.
CALL FUNCTION 'SD_VBAP_READ_WITH_VBELN'
  EXPORTING
    i_vbeln          = lv_num
  TABLES
    et_vbap          = lt_vbap
  EXCEPTIONS
    record_not_found = 1
    OTHERS           = 2.
BREAK-POINT.
DATA: i_order_header_in  LIKE bapisdhd1 .
DATA: i_order_header_inx LIKE bapisdhd1x,
      lt_bapiret2        LIKE bapiret2   OCCURS 0 WITH HEADER LINE.
i_order_header_inx-updateflag = 'U'.
i_order_header_in-serv_date = '20200102' .
i_order_header_inx-serv_date = 'X'.
CALL FUNCTION 'SD_SALESDOCUMENT_CHANGE'
  EXPORTING
    salesdocument    = lv_num
    order_header_in  = i_order_header_in
    order_header_inx = i_order_header_inx
  TABLES    return           = lt_bapiret2.
clear: lt_bapiret2.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  IMPORTING
     RETURN = lt_bapiret2.
BREAK-POINT.

執行之後,從輸出引數lt_bapiret2裡檢視到這個Sales Order已經成功被更新了。

如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的欄位

從後臺資料庫表VBKD裡檢視到這個欄位的值也已經成功更新了:

如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的欄位

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的欄位


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2218028/,如需轉載,請註明出處,否則將追究法律責任。

相關文章