Application Development 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: 

Updating Gross weight(MARA-BRGEW) in the transacation MM03

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

7 REPLIES 7

Former Member
0 Kudos

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

0 Kudos

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.

0 Kudos

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

0 Kudos

Hi Felipe,

Thanks for your answer but I already found the solution for this problem.

0 Kudos

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

0 Kudos

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.

Former Member
0 Kudos

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