2016 Sep 14 9:50 AM
Dear All,
I am beginner of the ABAP. Hence, I created the BAPI for "Tax code update" in material master as SALES: Sale org View 1.
Hence, It's giving the error as "Key fields for use data PLANTDATA and checkbox structure PLANTDATAX are different".
Please see piece of my code as passing the value from internal table to BAPI.
FORM BAPI.
DATA : WA_HEADDATA TYPE BAPIMATHEAD,
WA_PLANTDATA TYPE BAPI_MARC,
WA_PLANTDATAX TYPE BAPI_MPGDX,
WA_SALESDATA TYPE BAPI_MVKE ,
i_taxclass TYPE TABLE OF BAPI_MLAN WITH HEADER LINE.
DATA : IT_RETURN TYPE TABLE OF BAPIRET2,
WA_RETURN TYPE BAPIRET2.
LOOP AT IT_TAB INTO WA_TAB.
WA_HEADDATA-MATERIAL = wa_tab-matnr.
WA_HEADDATA-SALES_VIEW = 'X'.
WA_PLANTDATA-PLANT = wa_tab-werks.
WA_PLANTDATAX-PLANT = wa_tab-werks.
WA_SALESDATA-SALES_ORG = wa_tab-vkorg.
WA_SALESDATA-DISTR_CHAN = wa_tab-vtweg.
SELECT SINGLE TAXM1 INTO TAXCODE FROM MLAN
WHERE MATNR = WA_TAB-MATNR.
CHECK TAXCODE IS NOT INITIAL.
WA_TAB-TAXM1 = TAXCODE.
i_taxclass-DEPCOUNTRY = 'IN'.
i_taxclass-tax_type_1 = 'JIN6'.
i_taxclass-taxclass_1 = WA_TAB-TAXM1.
APPEND i_taxclass.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = WA_HEADDATA
* CLIENTDATA =
* CLIENTDATAX =
PLANTDATA = WA_PLANTDATA
* PLANTDATAX = WA_PLANTDATAX
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
* STORAGELOCATIONDATA =
* STORAGELOCATIONDATAX =
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
SALESDATA = WA_SALESDATA
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ' '
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ' '
* NO_ROLLBACK_WORK = ' '
IMPORTING
RETURN = WA_RETURN
TABLES
* MATERIALDESCRIPTION =
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
TAXCLASSIFICATIONS = i_taxclass
RETURNMESSAGES = IT_RETURN
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
.
IF WA_RETURN-TYPE = 'E'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WRITE:/ WA_HEADDATA-MATERIAL, 'is not created' COLOR 3.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
IF SY-SUBRC EQ 0.
WRITE:/ WA_HEADDATA-MATERIAL, 'is created' COLOR 5.
ENDIF.
ENDIF.
ENDLOOP.
Kindly suggest.
Regards,
Ganapathi Raman P
2016 Sep 14 10:25 AM
Before going to the issue please verify the type of WA_PLANTDATAX , it is BAPI_MARCX .
WA_PLANTDATA-PLANT = wa_tab-werks.
WA_PLANTDATAX-PLANT = wa_tab-werks.
In WA_PLANTDATA-PLANT , provide the plant and and in WA_PLANTDATAX-PLANT the same plant for which you are extending the view and mark as 'X''.
Here is the sample code .
* plantdata details
LW_PLANTDATA-PLANT = P_LW_MARC_RES1-WERKS.
LW_PLANTDATA-PUR_GROUP = P_LW_MARC_RES1-EKGRP.
LW_PLANTDATA-AVAILCHECK = LW_YPLNTDEF-MTVFP.
* it_plantdata-MRP_TYPE = lw_yplntdef-dismm .
MOVE LW_YPLNTDEF-DISMM TO LW_PLANTDATA-MRP_TYPE.
LW_PLANTDATA-MRP_CTRLER = LW_YPLNTDEF-DISPO .
LW_PLANTDATA-SM_KEY = LW_YPLNTDEF-FHORI.
LW_PLANTDATA-LOTSIZEKEY = LW_YPLNTDEF-DISLS .
LW_PLANTDATA-CTRL_KEY = LW_YPLNTDEF-SSQSS .
* plantdatax details
LW_PLANTDATAX-PLANT = P_LW_MARC_RES1-WERKS.
LW_PLANTDATAX-PUR_GROUP = 'X'.
LW_PLANTDATAX-AVAILCHECK = 'X'.
LW_PLANTDATAX-MRP_TYPE = 'X'.
LW_PLANTDATAX-MRP_CTRLER = 'X'.
LW_PLANTDATAX-SM_KEY = 'X'.
LW_PLANTDATAX-LOTSIZEKEY = 'X'.
LW_PLANTDATAX-CTRL_KEY = 'X'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = LW_HEADDATA
* CLIENTDATA =
* CLIENTDATAX =
PLANTDATA = LW_PLANTDATA
PLANTDATAX = LW_PLANTDATAX
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
STORAGELOCATIONDATA = LW_STORAGELOCATIONDATA
STORAGELOCATIONDATAX = LW_STORAGELOCATIONDATAX
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
* SALESDATA =
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ' '
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ' '
* NO_ROLLBACK_WORK = ' '
IMPORTING
RETURN = LW_RETURN
TABLES
* MATERIALDESCRIPTION =
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
RETURNMESSAGES = LT_RETURNMESSAGE
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
.
2016 Sep 14 10:25 AM
Before going to the issue please verify the type of WA_PLANTDATAX , it is BAPI_MARCX .
WA_PLANTDATA-PLANT = wa_tab-werks.
WA_PLANTDATAX-PLANT = wa_tab-werks.
In WA_PLANTDATA-PLANT , provide the plant and and in WA_PLANTDATAX-PLANT the same plant for which you are extending the view and mark as 'X''.
Here is the sample code .
* plantdata details
LW_PLANTDATA-PLANT = P_LW_MARC_RES1-WERKS.
LW_PLANTDATA-PUR_GROUP = P_LW_MARC_RES1-EKGRP.
LW_PLANTDATA-AVAILCHECK = LW_YPLNTDEF-MTVFP.
* it_plantdata-MRP_TYPE = lw_yplntdef-dismm .
MOVE LW_YPLNTDEF-DISMM TO LW_PLANTDATA-MRP_TYPE.
LW_PLANTDATA-MRP_CTRLER = LW_YPLNTDEF-DISPO .
LW_PLANTDATA-SM_KEY = LW_YPLNTDEF-FHORI.
LW_PLANTDATA-LOTSIZEKEY = LW_YPLNTDEF-DISLS .
LW_PLANTDATA-CTRL_KEY = LW_YPLNTDEF-SSQSS .
* plantdatax details
LW_PLANTDATAX-PLANT = P_LW_MARC_RES1-WERKS.
LW_PLANTDATAX-PUR_GROUP = 'X'.
LW_PLANTDATAX-AVAILCHECK = 'X'.
LW_PLANTDATAX-MRP_TYPE = 'X'.
LW_PLANTDATAX-MRP_CTRLER = 'X'.
LW_PLANTDATAX-SM_KEY = 'X'.
LW_PLANTDATAX-LOTSIZEKEY = 'X'.
LW_PLANTDATAX-CTRL_KEY = 'X'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = LW_HEADDATA
* CLIENTDATA =
* CLIENTDATAX =
PLANTDATA = LW_PLANTDATA
PLANTDATAX = LW_PLANTDATAX
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
STORAGELOCATIONDATA = LW_STORAGELOCATIONDATA
STORAGELOCATIONDATAX = LW_STORAGELOCATIONDATAX
* VALUATIONDATA =
* VALUATIONDATAX =
* WAREHOUSENUMBERDATA =
* WAREHOUSENUMBERDATAX =
* SALESDATA =
* SALESDATAX =
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
* FLAG_ONLINE = ' '
* FLAG_CAD_CALL = ' '
* NO_DEQUEUE = ' '
* NO_ROLLBACK_WORK = ' '
IMPORTING
RETURN = LW_RETURN
TABLES
* MATERIALDESCRIPTION =
* UNITSOFMEASURE =
* UNITSOFMEASUREX =
* INTERNATIONALARTNOS =
* MATERIALLONGTEXT =
* TAXCLASSIFICATIONS =
RETURNMESSAGES = LT_RETURNMESSAGE
* PRTDATA =
* PRTDATAX =
* EXTENSIONIN =
* EXTENSIONINX =
.
2016 Sep 14 10:31 AM
Hi Amareh,
Thanks for the reply,
Actual requirement is , update the tax code in sales org view 1,
Hence , the input file contains,
material-code plant sales org dischnel.
Can you please help, how to achieve
Regards,
ganapathi
2016 Sep 14 11:23 AM
What is the problem you are getting now ? before going to write the code check this BAPI in SE37 for the mandatory inputs , I will suggest to execute the BAPI successfully in se37 , followed by BAPI_TRANSACTION-COMMIT , then move to the code .
Check what is the error is coming in BAPI return .
Regards,
Amaresh
2016 Sep 14 11:36 AM