Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

UOM conversion using 'BAPI_MATERIAL_SAVEDATA'

Former Member
0 Likes
1,624

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

1 REPLY 1
Read only

Former Member
0 Likes
757

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.