用BAPI複製SAP銷售訂單

最近在研究BAPI
發現有個Function可以達到引用參考的功能
就是

CALL FUNCTION 'BAPI_SALESDOCUMENT_COPY'
  EXPORTING
    salesdocument          = VBELN
    documenttype           = 'ZRX'  "==訂單類型
 IMPORTING
   SALESDOCUMENT_EX       = VBELN_O
 TABLES
   RETURN                 = I_RET.

執行後要馬上執行COMMIT WORK才會生效
否則該訂單會佔用一個號碼但va03會無法顯示該訂單

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
   WAIT          = 'X'
IMPORTING
   RETURN        = I_RET.
     
但仍然有些表頭的部份需要更改=
『比方說有些是預設需要人工輸入的』如該訂單有效截止日
要先用VBAK讀出該舊訂單相關資料後
再用BAPI_SALESORDER_CHANGE寫回去新訂單

比方說該訂單有效日期是預設人工輸入的
 header-updateflag = 'U'.
 HEADER-QT_VALID_T = 'X'.
 header_v-QT_VALID_T = '20100501'.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
  EXPORTING
    SALESDOCUMENT               = VBALN_O
    ORDER_HEADER_IN             = header_v
    ORDER_HEADER_INX            = header
    BEHAVE_WHEN_ERROR           = space
  TABLES
    RETURN                      = I_RET.
 
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
   WAIT          = 'X'
IMPORTING
   RETURN        = I_RET. 
  
該BAPI_SALESORDER_CHANGE能夠更改訂單交易上的任何一個欄位資料
從表頭到項目以及條件價格都可以透過這邊來更改

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ROACH 的頭像
    ROACH

    ROACH部落落

    ROACH 發表在 痞客邦 留言(0) 人氣()