‎2007 Jan 24 8:19 PM
Hello all,
I am using BAPI_MATERIAL_SAVEDATA to update the UOM for existing materials. But I am getting Error message. Here is the code, pls tell me what am I missing.
LOOP AT it_datatab INTO wa_datatab.
increment count.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = wa_datatab-matnr
IMPORTING
output = wa_datatab-matnr
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2
.
READ TABLE it_zifs_uom_map INTO wa_zifs_uom_map WITH KEY zifs_uom = wa_datatab-meinh.
IF sy-subrc = 0.
it_headdata-material = wa_datatab-matnr.
it_headdata-basic_view = 'X'.
it_clientdata-base_uom = 'EA'.
it_clientdatax-base_uom = 'X'.
wa_unitsofmeasure-alt_unit = wa_zifs_uom_map-zsap_uom.
wa_unitsofmeasure-denominatr = wa_datatab-umren.
wa_unitsofmeasure-numerator = wa_datatab-umrez.
APPEND wa_unitsofmeasure TO it_unitsofmeasure.
wa_unitsofmeasurex-alt_unit = wa_zifs_uom_map-zsap_uom.
wa_unitsofmeasurex-denominatr = 'X'.
wa_unitsofmeasurex-numerator = 'X'.
APPEND wa_unitsofmeasurex TO it_unitsofmeasurex.
PERFORM update_uom.
ELSE.
APPEND wa_datatab TO it_error.
ENDIF.
ENDLOOP.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = it_headdata
clientdata = it_clientdata
clientdatax = it_clientdatax
PLANTDATA =
PLANTDATAX =
FORECASTPARAMETERS =
FORECASTPARAMETERSX =
PLANNINGDATA =
PLANNINGDATAX =
STORAGELOCATIONDATA =
STORAGELOCATIONDATAX =
VALUATIONDATA =
VALUATIONDATAX =
WAREHOUSENUMBERDATA =
WAREHOUSENUMBERDATAX =
SALESDATA =
SALESDATAX =
STORAGETYPEDATA =
STORAGETYPEDATAX =
FLAG_ONLINE = ' '
FLAG_CAD_CALL = ' '
NO_DEQUEUE = ' '
IMPORTING
return = it_return
TABLES
MATERIALDESCRIPTION =
unitsofmeasure = it_unitsofmeasure
unitsofmeasurex = it_unitsofmeasurex
INTERNATIONALARTNOS =
MATERIALLONGTEXT =
TAXCLASSIFICATIONS =
RETURNMESSAGES =
PRTDATA =
PRTDATAX =
EXTENSIONIN =
EXTENSIONINX =
.
IF it_return-type NE 'E' OR it_return-type NE 'A'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
RETURN =
.
increment v_success.
ENDIF.
ENDFORM. " update_uom
But I am getting Error message MG(142) like 'The value BOX is not allowed for the field MARM-MEINH/BAPI_MARM-ALT_UNIT(_ISO)'
can somebody pls help me
Thanks,
Chandni
‎2007 Jan 24 9:17 PM
Chandni,
A very similar code like yours is working for me,. Please validate if 'BOX' exist in your T006 table (i presume it should exist).
DATA: s_headerdata TYPE bapimathead.
DATA: it_unitsofmeasure TYPE STANDARD TABLE OF bapi_marm.
DATA: it_unitsofmeasurex TYPE STANDARD TABLE OF bapi_marmx.
DATA: wa_unitsofmeasure TYPE bapi_marm.
DATA: wa_unitsofmeasurex TYPE bapi_marmx.
DATA: s_return TYPE bapiret2.
s_headerdata-material = 'ZTEST'.
s_headerdata-basic_view = 'X'.
wa_unitsofmeasure-alt_unit = 'BOX'.
wa_unitsofmeasure-denominatr = '1'.
wa_unitsofmeasure-numerator = '6'.
APPEND wa_unitsofmeasure TO it_unitsofmeasure.
wa_unitsofmeasurex-alt_unit = 'BOX'.
wa_unitsofmeasurex-denominatr = 'X'.
wa_unitsofmeasurex-numerator = 'X'.
APPEND wa_unitsofmeasurex TO it_unitsofmeasurex.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = s_headerdata
IMPORTING
return = s_return
TABLES
unitsofmeasure = it_unitsofmeasure
unitsofmeasurex = it_unitsofmeasurex.
IF sy-subrc = 0.
ENDIF.