使用bapi[BAPI_SALESORDER_CHANGE]修改add-on字段

要將增強(qiáng)字段一并append到如下四個(gè)表/結(jié)構(gòu)中:

如果增強(qiáng)字段在銷售訂單抬頭(vbak)上

  • VBAKKOZ
  • VBAKKOZX
  • BAPE_VBAK
  • BAPE_VBAKX

在行項(xiàng)目(vbap)上:

  • VBAPKOZ
  • VBAPKOZX
  • BAPE_VBAP
  • BAPE_VBAPX

在運(yùn)貨計(jì)劃行(VBEP)上:

  • VBEPKOZ
  • BEPKOZX
  • BAPE_VBEP
  • BAPE_VBEPX

11-08今天做了一個(gè)測(cè)試,實(shí)際操作了一下append進(jìn)去ABAP中,然后通過(guò)BAPI去修改字段

TABLE VBAP

vbap append構(gòu)造

STR BVPE_VBAP

BVPE_VBAP append構(gòu)造

STR BVPE_VBAPX

BVPE_VBAPX append構(gòu)造

STR VBAPKOZ

VBAPKOZ append構(gòu)造

STR VBAPKOZX

VBAPKOZX append構(gòu)造

代碼如下

DATA:
  LV_SALESDOCUMENT    TYPE BAPIVBELN-VBELN,
  LW_ORDER_HEADER_IN  TYPE BAPISDH1,
  LW_ORDER_HEADER_INX TYPE BAPISDH1X,
  LIT_ORDER_ITEM_IN   TYPE STANDARD TABLE OF BAPISDITM,
  LW_ORDER_ITEM_IN    TYPE BAPISDITM,
  LIT_ORDER_ITEM_INX  TYPE STANDARD TABLE OF BAPISDITMX,
  LW_ORDER_ITEM_INX   TYPE BAPISDITMX,
  LIT_EXTENSIONIN     TYPE STANDARD TABLE OF BAPIPAREX,
  LW_EXTENSIONIN      TYPE BAPIPAREX,
  LW_BAPE_VBAP        TYPE BAPE_VBAP,                                 "BAPI インタフェース: テーブル VBAP 拡張
  LW_BAPE_VBAPX       TYPE BAPE_VBAPX,                                "BAPI チェックボックス: テーブル VBAP 拡張
  LIT_RETURN          TYPE STANDARD TABLE OF BAPIRET2.

************** SO ORDER*********************
LV_SALESDOCUMENT = LV_VBELN.

************** HEADER  *********************
*LW_ORDER_HEADER_IN-DOC_DATE = '20191106'.

************** HEADERX  ********************
LW_ORDER_HEADER_INX-UPDATEFLAG = 'U'.
*LW_ORDER_HEADER_INX-DOC_DATE = ABAP_TRUE.

************** ITEM_IN *********************
LW_ORDER_ITEM_IN-ITM_NUMBER = LV_POSNR.
LW_ORDER_ITEM_IN-TARGET_QTY = '2'.
LW_ORDER_ITEM_IN-PYMT_METH = '3'.
APPEND LW_ORDER_ITEM_IN TO LIT_ORDER_ITEM_IN.

************** ITEM_INX ********************
LW_ORDER_ITEM_INX-ITM_NUMBER = LV_POSNR.
LW_ORDER_ITEM_INX-UPDATEFLAG = 'U'.
LW_ORDER_ITEM_INX-TARGET_QTY = ABAP_TRUE.
LW_ORDER_ITEM_INX-PYMT_METH = ABAP_TRUE.
APPEND LW_ORDER_ITEM_INX TO LIT_ORDER_ITEM_INX.

LW_BAPE_VBAP-VBELN = LV_VBELN.
LW_BAPE_VBAP-POSNR = LV_POSNR.
LW_BAPE_VBAP-ZNNZZ = '123456'.
LW_BAPE_VBAP-ZNSZZ = 'ZNSZZ'.
LW_BAPE_VBAP-ZORZZ = '001'.

LW_BAPE_VBAPX-VBELN = LV_VBELN.
LW_BAPE_VBAPX-POSNR = LV_POSNR.
LW_BAPE_VBAPX-ZNNZZ = ABAP_TRUE.
LW_BAPE_VBAPX-ZNSZZ = ABAP_TRUE.
LW_BAPE_VBAPX-ZORZZ = ABAP_TRUE.
*LW_BAPE_VBAPX-FSH_SEASON_YEAR = ABAP_TRUE.

CALL METHOD CL_EEWA_CONVERT=>CONVERT_BAPIPAREX_IN
  EXPORTING
    PAR_STRUCTNAME   = 'BAPE_VBAP'
    PAR_DATA         = LW_BAPE_VBAP
  CHANGING
    PAR_BAPIPAREXTAB = LIT_EXTENSIONIN.

CALL METHOD CL_EEWA_CONVERT=>CONVERT_BAPIPAREX_IN
  EXPORTING
    PAR_STRUCTNAME   = 'BAPE_VBAPX'
    PAR_DATA         = LW_BAPE_VBAPX
  CHANGING
    PAR_BAPIPAREXTAB = LIT_EXTENSIONIN.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
  EXPORTING
    SALESDOCUMENT    = LV_SALESDOCUMENT
    ORDER_HEADER_IN  = LW_ORDER_HEADER_IN
    ORDER_HEADER_INX = LW_ORDER_HEADER_INX
  TABLES
    RETURN           = LIT_RETURN
    ORDER_ITEM_IN    = LIT_ORDER_ITEM_IN
    ORDER_ITEM_INX   = LIT_ORDER_ITEM_INX
    EXTENSIONIN      = LIT_EXTENSIONIN.

LOOP AT LIT_RETURN ASSIGNING FIELD-SYMBOL(<LW_RETURN>).


ENDLOOP.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
* IMPORTING
*   RETURN        =
  .

這次還遇到了一個(gè)非常有意思的問(wèn)題。剛開始沒辦法修改成功(return的東message都是成功),最后通過(guò)查找資料發(fā)現(xiàn),構(gòu)造VBAPKOZX的類型必須使用char1去定義,如果和其他一樣用char,長(zhǎng)度1,沒法識(shí)別。
https://answers.sap.com/questions/1691488/bapisalesorderchange-extensionin-not-working.html

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容