04-29-2009 2:56 PM
Hi, I'm working on a Bapi sales orde change.
I'd like to know how I can manage shipping and billing block through standard bapi ??
04-29-2009 3:00 PM
Hi Cmm,
see the below exapmle to chnage the BIlling and shipping.
BAPI_SALESORDER_CHANGE . "use the function module..
FORM UPDATE_BILLING_DATE.
DATA: BEGIN OF WA_ITAB,
VBELN LIKE VBUP-VBELN,
POSNR LIKE VBUP-POSNR,
EDATU LIKE VBEP-EDATU,
FKDAT LIKE VBKD-FKDAT,
MSG(500) TYPE C,
END OF WA_ITAB.
DATA: BEGIN OF RETURN OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF RETURN.
DATA: WA_RETURN LIKE BAPIRET2.
DATA: ORDER_HEADER_INX LIKE BAPISDH1X.
DATA: SIMULATION LIKE BAPIFLAG-BAPIFLAG.
DATA: BEGIN OF ORDER_ITEM_IN OCCURS 10.
INCLUDE STRUCTURE BAPISDITM.
DATA: END OF ORDER_ITEM_IN.
DATA: BEGIN OF ORDER_ITEM_INX OCCURS 10.
INCLUDE STRUCTURE BAPISDITMX.
DATA: END OF ORDER_ITEM_INX.
CLEAR ORDER_HEADER_INX.
ORDER_HEADER_INX-UPDATEFLAG = 'U'.
IF P_UPDATE IS INITIAL.
SIMULATION = 'X'.
ELSE.
CLEAR SIMULATION.
ENDIF.
SORT ITAB BY VBELN POSNR.
LOOP AT ITAB.
AT NEW VBELN.
REFRESH: ORDER_ITEM_IN, ORDER_ITEM_INX.
ENDAT.
WA_ITAB = ITAB.
ORDER_ITEM_IN-ITM_NUMBER = ITAB-POSNR.
ORDER_ITEM_IN-BILL_DATE = ITAB-EDATU.
APPEND ORDER_ITEM_IN.
ORDER_ITEM_INX-ITM_NUMBER = ITAB-POSNR.
ORDER_ITEM_INX-UPDATEFLAG = 'U'.
ORDER_ITEM_INX-BILL_DATE = 'X'.
APPEND ORDER_ITEM_INX.
AT END OF VBELN.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = ITAB-VBELN
ORDER_HEADER_INX = ORDER_HEADER_INX
SIMULATION = SIMULATION
TABLES
RETURN = RETURN
ORDER_ITEM_IN = ORDER_ITEM_IN
ORDER_ITEM_INX = ORDER_ITEM_INX.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
RETURN = WA_RETURN.
LOOP AT RETURN INTO WA_RETURN.
IF WA_RETURN-TYPE = 'E' OR WA_RETURN-TYPE = 'I' OR
WA_RETURN-TYPE = 'W' OR WA_RETURN-TYPE = 'A'.
CONCATENATE WA_RETURN-TYPE ':' WA_RETURN-MESSAGE
INTO WA_RETURN-MESSAGE.
CONCATENATE WA_ITAB-MSG WA_RETURN-MESSAGE
INTO WA_ITAB-MSG SEPARATED BY '/'.
ENDIF.
ENDLOOP.
IF NOT WA_ITAB-MSG IS INITIAL.
MODIFY ITAB FROM WA_ITAB.
ENDIF.
ENDAT.
ENDLOOP.
ENDFORM.
Regards,
Prabhudas