02-13-2012 10:24 AM
Hi All,
I am having 2 custom fields in Order enhancemnet tab. I would like to update them through custom transaction using BAPI "BAPI_ALM_ORDER_MAINTAIN".
I have used the code as mentioned below:
lwa_method-refnumber = '000001'.
lwa_method-method = 'SAVE'.
lwa_method-objectkey = wa_p_detail-aufnr.
APPEND lwa_method TO lit_method.
CLEAR lwa_method.
lwa_header-orderid = wa_p_detail-aufnr.
APPEND lwa_header TO lit_header.
CLEAR lwa_header.
lwa_exten-structure = 'BAPI_TE_AUFK'.
lwa_exten-valuepart1+0(12) = wa_p_detail-aufnr.
lwa_exten-valuepart1+24(8) = qmel-erdat.
lwa_exten-valuepart1+32(6) = qmel-mzeit.
APPEND lwa_exten TO lit_exten.
CLEAR lwa_exten.
CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'
TABLES
it_methods = lit_method
it_header = lit_header
extension_in = lit_exten
return = lit_return.
LOOP AT lit_return INTO lwa_return WHERE type EQ c_e.
MESSAGE lwa_return-message TYPE c_e DISPLAY LIKE c_i.
AT LAST.
ROLLBACK WORK.
ENDAT.
ENDLOOP.
IF sy-subrc NE 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_x.
endif.
But its not updaing any single field in database. Please provide your suggestion.
Thanks,
Jaten Sangal
Edited by: JatenS on Feb 13, 2012 11:38 AM
02-13-2012 10:51 AM
Hi,
Try checking the below example for your requirement.
1: using BAPI 'BAPI_ALM_ORDER_MAINTAIN'
2: append structure in IBAPI_CAUFVD_UPDATE
3: create BADI from 'IBAPI_ALM_ORD_MODIFY'
CI_AUFK has the Zfields, so CAUFV has already had the Zfields.
--------------------------------------------------------------------------------
*---- 1: using BAPI 'BAPI_ALM_ORDER_MAINTAIN'
IW_METHODS-OBJECTTYPE = SPACE.
IW_METHODS-METHOD = 'SAVE'.
IW_METHODS-OBJECTKEY = SPACE.
APPEND IW_METHODS TO IT_METHODS.
CLEAR: IW_METHODS.
IW_METHODS-REFNUMBER = '000001'.
IW_METHODS-OBJECTTYPE = 'HEADER'.
IW_METHODS-METHOD = 'CHANGE'.
IW_METHODS-OBJECTKEY = W_AUFNR.
APPEND IW_METHODS TO IT_METHODS.
IW_EXTENSION_IN-VALUEPART1+0(12) = W_AUFNR.
IW_EXTENSION_IN-VALUEPART1+12(2) = W_ZFIELD. "Zfield
APPEND IW_EXTENSION_IN TO IT_EXTENSION_IN.
CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'
TABLES
IT_METHODS = IT_METHODS
EXTENSION_IN = IT_EXTENSION_IN
RETURN = IT_RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = COS_X.
*----2: append structure in IBAPI_CAUFVD_UPDATE
*---- you need to create an APPEND structure in ALMB_CAUFVD_UP_TAB_INT.
*---- (of course you can create that in SE11)
*---- you need to set flag fields (CHAR1) in APPEND structure
*---- 3: create BADI from 'IBAPI_ALM_ORD_MODIFY'
*---- you need to create BADI from 'IBAPI_ALM_ORD_MODIFY' in SE19
*---- and you need to add some Codes in method of 'MODIFY_INPUT_DATA'
*---- code is below
DATA: LW_HEADER_INT TYPE ALMB_CAUFVD.
DATA: LW_HEADER_INT_UP TYPE IBAPI_CAUFVD_UPDATE.
READ TABLE CT_HEADER_INT INTO LW_HEADER_INT
WITH KEY AUFNR = EXTENSION_IN-VALUEPART1+0(12).
IF SY-SUBRC = 0.
LW_HEADER_INT-ZFIELD = EXTENSION_IN-VALUEPART1+12(2). "set Zfield value
MODIFY CT_HEADER_INT FROM LW_HEADER_INT index SY-TABIX.
ELSE.
LW_HEADER_INT-AUFNR = EXTENSION_IN-VALUEPART1+0(12).
LW_HEADER_INT-ZFIELD = EXTENSION_IN-VALUEPART1+12(2). "set Zfield value
APPEND LW_HEADER_INT TO CT_HEADER_INT.
ENDIF.
READ TABLE CT_HEADER_INT_UP INTO LW_HEADER_INT_UP
WITH KEY AUFNR = EXTENSION_IN-VALUEPART1+0(12).
IF SY-SUBRC = 0.set Zfield value
LW_HEADER_INT_UP-ZFIELD = 'X'. "set Zfield flag
MODIFY CT_HEADER_INT_UP FROM LW_HEADER_INT_UP index SY-TABIX.
ELSE.
LW_HEADER_INT_UP-ZFIELD = 'X'.
APPEND LW_HEADER_INT_UP TO CT_HEADER_INT_UP. "set Zfield flag
ENDIF.
02-13-2012 10:51 AM
Hi,
Try checking the below example for your requirement.
1: using BAPI 'BAPI_ALM_ORDER_MAINTAIN'
2: append structure in IBAPI_CAUFVD_UPDATE
3: create BADI from 'IBAPI_ALM_ORD_MODIFY'
CI_AUFK has the Zfields, so CAUFV has already had the Zfields.
--------------------------------------------------------------------------------
*---- 1: using BAPI 'BAPI_ALM_ORDER_MAINTAIN'
IW_METHODS-OBJECTTYPE = SPACE.
IW_METHODS-METHOD = 'SAVE'.
IW_METHODS-OBJECTKEY = SPACE.
APPEND IW_METHODS TO IT_METHODS.
CLEAR: IW_METHODS.
IW_METHODS-REFNUMBER = '000001'.
IW_METHODS-OBJECTTYPE = 'HEADER'.
IW_METHODS-METHOD = 'CHANGE'.
IW_METHODS-OBJECTKEY = W_AUFNR.
APPEND IW_METHODS TO IT_METHODS.
IW_EXTENSION_IN-VALUEPART1+0(12) = W_AUFNR.
IW_EXTENSION_IN-VALUEPART1+12(2) = W_ZFIELD. "Zfield
APPEND IW_EXTENSION_IN TO IT_EXTENSION_IN.
CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN'
TABLES
IT_METHODS = IT_METHODS
EXTENSION_IN = IT_EXTENSION_IN
RETURN = IT_RETURN.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = COS_X.
*----2: append structure in IBAPI_CAUFVD_UPDATE
*---- you need to create an APPEND structure in ALMB_CAUFVD_UP_TAB_INT.
*---- (of course you can create that in SE11)
*---- you need to set flag fields (CHAR1) in APPEND structure
*---- 3: create BADI from 'IBAPI_ALM_ORD_MODIFY'
*---- you need to create BADI from 'IBAPI_ALM_ORD_MODIFY' in SE19
*---- and you need to add some Codes in method of 'MODIFY_INPUT_DATA'
*---- code is below
DATA: LW_HEADER_INT TYPE ALMB_CAUFVD.
DATA: LW_HEADER_INT_UP TYPE IBAPI_CAUFVD_UPDATE.
READ TABLE CT_HEADER_INT INTO LW_HEADER_INT
WITH KEY AUFNR = EXTENSION_IN-VALUEPART1+0(12).
IF SY-SUBRC = 0.
LW_HEADER_INT-ZFIELD = EXTENSION_IN-VALUEPART1+12(2). "set Zfield value
MODIFY CT_HEADER_INT FROM LW_HEADER_INT index SY-TABIX.
ELSE.
LW_HEADER_INT-AUFNR = EXTENSION_IN-VALUEPART1+0(12).
LW_HEADER_INT-ZFIELD = EXTENSION_IN-VALUEPART1+12(2). "set Zfield value
APPEND LW_HEADER_INT TO CT_HEADER_INT.
ENDIF.
READ TABLE CT_HEADER_INT_UP INTO LW_HEADER_INT_UP
WITH KEY AUFNR = EXTENSION_IN-VALUEPART1+0(12).
IF SY-SUBRC = 0.set Zfield value
LW_HEADER_INT_UP-ZFIELD = 'X'. "set Zfield flag
MODIFY CT_HEADER_INT_UP FROM LW_HEADER_INT_UP index SY-TABIX.
ELSE.
LW_HEADER_INT_UP-ZFIELD = 'X'.
APPEND LW_HEADER_INT_UP TO CT_HEADER_INT_UP. "set Zfield flag
ENDIF.
02-13-2012 11:11 AM
Thanks Harish for your reply..
Could you please let me explain below 2 points:
2: append structure in IBAPI_CAUFVD_UPDATE
3: create BADI from 'IBAPI_ALM_ORD_MODIFY'
I am not able to understand how & what exectly need to do..
Edited by: JatenS on Feb 13, 2012 12:39 PM
02-13-2012 11:46 AM
Point 3: You need to implement this BADI in SE18 as when your BAPI will be called this badi implementation will get triggered and you can move data from your internal table to your respective structures
Point 2: You need to add your custom fields to correspodning structure mentioned above via append.
Nabheet
02-13-2012 11:46 AM
Hi,
1. You need to create an append structure in "IBAPI_CAUFVD_UPDATE" structure with your two ZFIELDS and the type will be "BAPIUPDATE".
2. Now create an implementation for BADI - "IBAPI_ALM_ORD_MODIFY" using SE19 transaction and you need to add the Codes in method of 'MODIFY_INPUT_DATA'.
Sample code is :
DATA: LW_HEADER_INT TYPE ALMB_CAUFVD.
DATA: LW_HEADER_INT_UP TYPE IBAPI_CAUFVD_UPDATE.
READ TABLE CT_HEADER_INT INTO LW_HEADER_INT
WITH KEY AUFNR = EXTENSION_IN-VALUEPART1+0(12).
IF SY-SUBRC = 0.
LW_HEADER_INT-ZFIELD = EXTENSION_IN-VALUEPART1+12(2). "set Zfield value
MODIFY CT_HEADER_INT FROM LW_HEADER_INT index SY-TABIX.
ELSE.
LW_HEADER_INT-AUFNR = EXTENSION_IN-VALUEPART1+0(12).
LW_HEADER_INT-ZFIELD = EXTENSION_IN-VALUEPART1+12(2). "set Zfield value
APPEND LW_HEADER_INT TO CT_HEADER_INT.
ENDIF.
READ TABLE CT_HEADER_INT_UP INTO LW_HEADER_INT_UP
WITH KEY AUFNR = EXTENSION_IN-VALUEPART1+0(12).
IF SY-SUBRC = 0.set Zfield value
LW_HEADER_INT_UP-ZFIELD = 'X'. "set Zfield flag
MODIFY CT_HEADER_INT_UP FROM LW_HEADER_INT_UP index SY-TABIX.
ELSE.
LW_HEADER_INT_UP-ZFIELD = 'X'.
APPEND LW_HEADER_INT_UP TO CT_HEADER_INT_UP. "set Zfield flag
ENDIF.
08-03-2015 10:58 AM
Hi Harish,
Is it mandatory to add the Z-Fields in IBAPI_CAUFVD_UPDATE structure ??
04-26-2016 2:58 AM
Hi Harish
Are you only updating a single order for each BAPI_ALM_ORDER_MAINTAIN call?
CT_HEADER_INT_UP-AUFNR is a single character field so I'm curious how you are updating the table correctly when there are multiple orders involved.
Thanks
Robyn