一、需求:在调用交货单过账BAPI时(BAPI_OUTB_DELIVERY_CONFIRM_DEC),要给物料凭证中增强字段传值。
二、思路:在交货单过账BAPI执行前,把值存到全局变量,也就是内存中MEMORY ID,在增强LE_SHP_GOODSMOVEMENT的方法CHANGE_INPUT_HEADER_AND_ITEMS下面,读取内存中的值,然后修改内表CT_XIMSEG中的参数值。
三、代码片段:
1、交货单过账:
DATA:IT_MSEG TYPE STANDARD TABLE OF MSEG,
WA_MSEG TYPE MSEG.
LOOP AT GT_ALV2 INTO GW_ALV2.
WA_MSEG-VBELN_IM = GW_ALV2-VBELN.
WA_MSEG-VBELP_IM = GW_ALV2-POSNR.
WA_MSEG-ZSCH = GW_ALV2-ZSCH.
WA_MSEG-ZXH = GW_ALV2-ZXH.
APPEND WA_MSEG TO IT_MSEG.
CLEAR WA_MSEG.
ENDLOOP.
EXPORT IT_MSEG TO MEMORY ID 'ZZSD005_IT_MSEG'.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CONFIRM_DEC'
EXPORTING
HEADER_DATA = HEADER_DATA
HEADER_CONTROL = HEADER_CONTROL
DELIVERY = DELIVERY
* TECHN_CONTROL =
* HEADER_DATA_SPL =
* HEADER_CONTROL_SPL =
TABLES
* HEADER_PARTNER =
* HEADER_PARTNER_ADDR =
HEADER_DEADLINES = HEADER_DATE
ITEM_DATA = LT_ITEM_DATA
ITEM_CONTROL = LT_ITEM_CONTROL
* ITEM_CODING_BLOCK =
* ITEM_SERIAL_NO =
* SUPPLIER_CONS_DATA =
* HANDLING_UNIT_HEADER =
* HANDLING_UNIT_ITEM =
* HANDLING_UNIT_HEADER_EPC =
* HANDLING_UNIT_ITEMS_EPC =
* HANDLING_UNIT_SERNO =
* EXTENSION1 =
* EXTENSION2 =
RETURN = LT_RETURN
* TOKENREFERENCE =
* HANDLING_UNIT_HEADER_CROSS =
* ITEM_DATA_SPL =
* HANDLING_UNIT_IDENTIFIERS =
* HANDLING_UNIT_ITEM_SPL =
* ITEM_DATA_DOCU_BATCH =
* NEW_ITEM_DATA =
* NEW_ITEM_DATA_SPL =
* NEW_ITEM_ORG =
* TEXT_HEADER =
* TEXT_LINES =
* NEW_ITEM_DATA_SKU =
.
READ TABLE LT_RETURN INTO LW_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK' .
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
FREE MEMORY ID 'ZZSD005_IT_MSEG'.
ENDIF.
2、交货单过账增强
METHOD IF_EX_LE_SHP_GOODSMOVEMENT~CHANGE_INPUT_HEADER_AND_ITEMS.
DATA:IT_MSEG TYPE STANDARD TABLE OF MSEG,
WA_MSEG TYPE MSEG.
DATA: LS_XIMSEG TYPE IMSEGVB.
IF IS_LIKP-VBTYP NE 'J'.
RETURN.
ENDIF.
IMPORT IT_MSEG TO IT_MSEG FROM MEMORY ID 'ZZSD005_IT_MSEG'.
IF IT_MSEG IS INITIAL.
RETURN.
ENDIF.
LOOP AT CT_XIMSEG INTO LS_XIMSEG.
CLEAR WA_MSEG.
READ TABLE IT_MSEG INTO WA_MSEG WITH KEY VBELN_IM = LS_XIMSEG-VBELN VBELP_IM = LS_XIMSEG-POSNR.
IF SY-SUBRC = 0.
LS_XIMSEG-ZSCH = WA_MSEG-ZSCH.
LS_XIMSEG-ZXH = WA_MSEG-ZXH.
MODIFY CT_XIMSEG FROM LS_XIMSEG.
ENDIF.
ENDLOOP.
ENDMETHOD.