要將增強(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