10-09-2014 5:20 PM
Hi everyone,
Can somebody tell me how I can update the gross weight in the standard transaction MM03 in SAP ?
Which BAPI i can use to update the gross weight ?
So i need to update this field
The Gross Weight should have the same value like Net Weight - 2,618.
I use the bapi - BAPI_MATERIAL_SAVEDATA. And in the table - UNITSOFMEASURE i pass the new value in the field GROSS_WT.
So i make this valorization of the bapi UNITSOFMEASURE-GROSS_WT = 2.618 and UNITSOFMEASURE-UNIT_OF_WT = KG.
In the end i valorize UNITSOFMEASUREX-GROSS_WT = 'X' UNITSOFMEASUREX-UNIT_OF_WT = 'X'.
But this valorization only updates this field
So is there in any other solution for this ?
Some other BAPI maybe ?
I checked the other structures and tables in the BAPI - BAPI_MATERIAL_SAVEDATA, but only the table UNITSOFMEASURE has the field Gross weight.
Thanks,
Dime Slavkov
10-09-2014 7:35 PM
Try to fill UNITSOFMEASURE-ALT_UNIT and UNITSOFMEASURE-ALT_UNIT_ISO and the corresponding fields in structure UNITSOFMEASUREX (in this case is not with 'X' but with the same values filled in UNITSOFMEASURE).
Regards,
Felipe
10-09-2014 7:35 PM
Try to fill UNITSOFMEASURE-ALT_UNIT and UNITSOFMEASURE-ALT_UNIT_ISO and the corresponding fields in structure UNITSOFMEASUREX (in this case is not with 'X' but with the same values filled in UNITSOFMEASURE).
Regards,
Felipe
10-10-2014 9:03 AM
Hi Felipe,
Thanks for your answer.
But already pass this values to the tables - UNITSOFMEASURE and UNITSOFMEASUREX
and it is not working the updating of the Gross weight.
10-10-2014 1:51 PM
Hi Dime, I've just found a program that was used by me sometime ago for the material dataload, look at the piece of code, it worked fine in that occasion:
bapi_mara1-base_uom = it_data-meins.
bapi_marax-base_uom = 'X'.
bapi_mara1-unit_of_wt = it_data-gewei.
bapi_marax-unit_of_wt = 'X'.
IF bapi_mara1-unit_of_wt = 'K'.
it_uom-gross_wt = it_data-brgew.
it_uom-alt_unit = 'KG'.
it_uom-alt_unit_iso = 'KG'.
it_uom-unit_of_wt = it_data-gewei.
APPEND it_uom.
it_uomx-gross_wt = 'X'.
it_uomx-alt_unit = 'KG'.
it_uomx-alt_unit_iso = 'KG'.
it_uomx-unit_of_wt = 'X'.
APPEND it_uomx.
ENDIF.
Regards,
Felipe
10-10-2014 3:45 PM
Hi Felipe,
Thanks for your answer but I already found the solution for this problem.
10-10-2014 4:54 PM
Great, so share the solution with the community and close the thread, someone could face the same situation and find the solution here.
Regards,
Felipe
10-13-2014 9:20 AM
Hi Felipe,
This is the code that works :
REFRESH : gt_unitsofmeasure,gt_unitsofmeasurex,gt_materialdescription,gt_returnmessages.
clear gs_headdata.
gs_headdata-material = <gfs_importdata>-matnr.
gs_headdata-ind_sector = gc_m.
gs_headdata-matl_type = gc_hawi.
gs_headdata-basic_view = gc_x.
CLEAR: gs_clientdata. CLEAR: gs_clientdatax.
REPLACE ',' INTO <gfs_importdata>-weight WITH '.'.
gs_clientdata-net_weight = <gfs_importdata>-weight .
gs_clientdata-unit_of_wt = gs_mara_mod-gewei.
gs_clientdata-matl_group = gs_mara_mod-matkl.
gs_clientdata-unit_of_wt = gs_mara_mod-gewei.
gs_clientdata-base_uom = gs_mara_mod-meins.
gs_clientdatax-net_weight = 'X' .
gs_clientdatax-unit_of_wt = 'X' .
gs_clientdatax-matl_group = 'X' .
gs_clientdatax-unit_of_wt = 'X' .
gs_clientdatax-base_uom = 'X' .
IF NOT <gfs_importdata>-umb IS INITIAL.
CLEAR ls_marm.
SELECT SINGLE *
FROM marm
INTO ls_marm
WHERE matnr EQ gv_modello.
* AND meinh EQ <gfs_importdata>-umb.
ELSE.
CLEAR ls_marm.
SELECT SINGLE *
FROM marm
INTO ls_marm
WHERE matnr EQ <gfs_importdata>-matnr.
ENDIF.
IF NOT ls_marm IS INITIAL.
CLEAR gs_unitsofmeasure.
gs_unitsofmeasure-alt_unit = <gfs_importdata>-umb.
gs_unitsofmeasure-alt_unit_iso = <gfs_importdata>-umb.
gs_unitsofmeasure-numerator = ls_marm-umrez.
gs_unitsofmeasure-denominatr = ls_marm-umren.
gs_unitsofmeasure-ean_upc = ls_marm-ean11.
gs_unitsofmeasure-ean_cat = ls_marm-numtp.
gs_unitsofmeasure-length = ls_marm-laeng.
gs_unitsofmeasure-width = ls_marm-breit.
gs_unitsofmeasure-height = ls_marm-hoehe.
gs_unitsofmeasure-unit_dim = ls_marm-meabm.
gs_unitsofmeasure-unit_dim_iso = ls_marm-meabm.
gs_unitsofmeasure-volume = ls_marm-volum.
gs_unitsofmeasure-volumeunit = ls_marm-voleh.
gs_unitsofmeasure-volumeunit_iso = ls_marm-voleh.
REPLACE ',' INTO <gfs_importdata>-weight WITH '.'.
UNASSIGN <gfs_mara>.
READ TABLE gt_mara ASSIGNING <gfs_mara>
WITH KEY matnr = <gfs_importdata>-matnr.
IF sy-subrc IS INITIAL.
IF <gfs_importdata>-weight NE 0.
gs_unitsofmeasure-gross_wt = <gfs_importdata>-weight .
ELSE.
gs_unitsofmeasure-gross_wt = <gfs_mara>-brgew .
ENDIF.
ELSE.
gs_unitsofmeasure-gross_wt = <gfs_importdata>-weight .
ENDIF.
CLEAR gs_unitsofmeasurex.
gs_unitsofmeasurex-alt_unit = <gfs_importdata>-umb.
gs_unitsofmeasurex-alt_unit_iso = <gfs_importdata>-umb.
gs_unitsofmeasurex-numerator = 'X'.
gs_unitsofmeasurex-denominatr = 'X'.
gs_unitsofmeasurex-ean_upc = 'X'.
gs_unitsofmeasurex-ean_cat = 'X'.
gs_unitsofmeasurex-length = 'X'.
gs_unitsofmeasurex-width = 'X'.
gs_unitsofmeasurex-height = 'X'.
gs_unitsofmeasurex-unit_dim = 'X'.
gs_unitsofmeasurex-unit_dim_iso = 'X'.
gs_unitsofmeasurex-volume = 'X'.
gs_unitsofmeasurex-volumeunit = 'X'.
gs_unitsofmeasurex-volumeunit_iso = 'X'.
gs_unitsofmeasurex-gross_wt = 'X'.
gs_unitsofmeasurex-unit_of_wt = 'X'.
gs_unitsofmeasurex-unit_of_wt_iso = 'X'.
gs_unitsofmeasurex-sub_uom = 'X'.
gs_unitsofmeasurex-sub_uom_iso = 'X'.
APPEND gs_unitsofmeasurex TO gt_unitsofmeasurex.
REFRESH lt_makt.
SELECT *
FROM makt
INTO TABLE lt_makt
WHERE matnr EQ gv_modello
AND spras EQ sy-langu.
UNASSIGN <lfs_makt>.
LOOP AT lt_makt ASSIGNING <lfs_makt> .
CLEAR lv_makt.
CLEAR gs_bapi_makt.
gs_bapi_makt-langu = <lfs_makt>-spras.
PERFORM calcola_prim_riga USING <gfs_importdata>-desc lv_makt <lfs_makt> .
<gfs_importdata>-desc = lv_makt.
gs_bapi_makt-matl_desc = <gfs_importdata>-desc.
APPEND gs_bapi_makt TO gt_materialdescription.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = gs_headdata
clientdata = gs_clientdata
clientdatax = gs_clientdatax
TABLES
materialdescription = gt_materialdescription
unitsofmeasure = gt_unitsofmeasure
unitsofmeasurex = gt_unitsofmeasurex
returnmessages = gt_returnmessages.
10-10-2014 8:06 AM
Hi,
I think that to update gross weight is not necessary use BAPI.
You could realized a LSMW on transaction MMZ2 for example.
Best Regards
Ivan