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

Create Material master recomandation

joerg_arndt
Participant
0 Likes
445

Hi Friends,

would you recomend migrate material master through LSMW rather then with BAPI_MATERIAL_SAVEDATA.

Thanks in advance.

Rg. Jimbob

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
398

Hi Jimbob,

I would recommend using the BAPI since that is much more likely to be forward-compatible than batch input maps.

Please check this link

BAPI Function Module BAPI_MATERIAL_SAVEDATA

http://blog.esnai.com/arrow/archive/2007/08/30/208744.aspx

LSMW Using BAPI

http://www.saptechnical.com/Tutorials/LSMW/MMBAPI/Page1.htm

Recording

http://www.saptechnical.com/Tutorials/LSMW/MMRecording/Page1.htm

Direct Input Method

http://www.saptechnical.com/Tutorials/LSMW/MMDIM/page1.htm

TABLES: mara,
       marc,
       mbew.

DATA: BEGIN OF return OCCURS 0.
       INCLUDE STRUCTURE bapiret2.
DATA: END OF return.

DATA: BEGIN OF bapimathead.
       INCLUDE STRUCTURE  bapimathead.
DATA: END OF bapimathead.

DATA: BEGIN OF bapi_mara.
       INCLUDE STRUCTURE  bapi_mara.
DATA: END OF bapi_mara.

DATA: BEGIN OF bapi_marax.
       INCLUDE STRUCTURE  bapi_marax.
DATA: END OF bapi_marax.

DATA: BEGIN OF bapi_marc.
       INCLUDE STRUCTURE  bapi_marc.
DATA: END OF bapi_marc.

DATA: BEGIN OF bapi_marcx.
       INCLUDE STRUCTURE  bapi_marcx.
DATA: END OF bapi_marcx.

DATA: BEGIN OF bapi_mard.
       INCLUDE STRUCTURE  bapi_mard.
DATA: END OF bapi_mard.

DATA: BEGIN OF bapi_mardx.
       INCLUDE STRUCTURE  bapi_mardx.
DATA: END OF bapi_mardx.

DATA: BEGIN OF bapi_mbew.
       INCLUDE STRUCTURE  bapi_mbew.
DATA: END OF bapi_mbew.

DATA: BEGIN OF bapi_mbewx.
       INCLUDE STRUCTURE  bapi_mbewx.
DATA: END OF bapi_mbewx.

DATA: BEGIN OF bapi_mvke.
       INCLUDE STRUCTURE  bapi_mvke.
DATA: END OF bapi_mvke.

DATA: BEGIN OF bapi_mvkex.
       INCLUDE STRUCTURE  bapi_mvkex.
DATA: END OF bapi_mvkex.

DATA: BEGIN OF i_tvkwz OCCURS 0,
        werks LIKE tvkwz-werks,
     END OF i_tvkwz.

DATA: BEGIN OF i_mara OCCURS 0,
        matnr LIKE mara-matnr,
     END OF i_mara.

SELECT-OPTIONS: sl_matnr FOR mara-matnr NO INTERVALS.
PARAMETERS: p_werks(4) TYPE c,
           ef_werks(4) TYPE c,
           et_werks(4) TYPE c.

DATA: p_matnr(10) TYPE c,
     c_matnr(18) TYPE c,
     c2_matnr(18) TYPE c,
     mtart_003(18) TYPE c,
     u_mtart_003(18) TYPE c,
     c_matl_group LIKE mara-matkl,
     c_old_mat_no LIKE mara-bismt,
     c_base_uom LIKE mara-meins,
     c_division LIKE mara-spart,
     c_net_weight LIKE mara-ntgew,
     c_unit_of_wt LIKE mara-gewei,
     c_size_dim LIKE mara-groes,
     c_item_cat LIKE mara-mtpos_mara,
     c_pur_valkey LIKE mara-ekwsl,
     w_matnr(18) TYPE c,
     u_matnr(10) TYPE c,
     c_lgort(4) TYPE c,
     u_lgort(4) TYPE c,
     c_prctr(10) TYPE c,
     c_stprs LIKE mbew-stprs,
     c1_stprs LIKE mbew-stprs,
     u_stprs(15) TYPE c,
     c_verpr LIKE mbew-verpr,
     c1_verpr LIKE mbew-verpr,
     u_verpr(15) TYPE c,
     w_bklas(04) TYPE c,
     c_bklas(04) TYPE c,
     c_sobsl(02) TYPE c,
     u_bklas LIKE mbew-bklas,
     c_peinh LIKE mbew-peinh,
     c_ekgrp LIKE marc-ekgrp,
     c_vprsv LIKE mbew-vprsv,
     ck_werks(4) TYPE c,
     wf_werks(4) TYPE c,
     wt_werks(4) TYPE c,
     w_line(70) TYPE c,
     matnr_found_sw(01) TYPE c VALUE u2018Nu2019,
     used_matnr_found_sw(01) TYPE c VALUE u2018Nu2019.

*** End generated data section ***
START-OF-SELECTION.

* Load internal tables from SAP tables
*u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014-*
 AUTHORITY-CHECK OBJECT u2018M_MATE_WRKu2019
         ID u2018WERKSu2019 FIELD ef_werks
         ID u2018ACTVTu2019 FIELD u201801u2032.

 IF sy-subrc 0.            u201DUser is not authorized
   CALL FUNCTION u2018POPUP_TO_DISPLAY_TEXTu2019
        EXPORTING
         titel     = u2018UNABLE TO EXTEND ITEMu2019
         textline1 = u2018You do not have authorization to extend to plantu2019
         textline2 = ef_werks.
   STOP.
 ENDIF.

* Set plant specified range as 4 digits
 IF ef_werks+3(1) = u2018 u2018.
   wf_werks+0(1) = u20180u2032.
   wf_werks+1(3) = ef_werks+0(3).
 ELSE.
   wf_werks = ef_werks.
 ENDIF.

 IF et_werks+3(1) = u2018 u2018.
   wt_werks+0(1) = u20180u2032.
   wt_werks+1(3) = et_werks+0(3).
 ELSE.
   wt_werks = et_werks.
 ENDIF.

 IF wf_werks > wt_werks.
   wt_werks = wf_werks.
 ENDIF.

* load all items to be processed for this run SL_MATNR table
 LOOP AT sl_matnr.
   i_mara-matnr = sl_matnr-low.
   APPEND i_mara.
 ENDLOOP.

 PERFORM fill_plant_tb.
 LOOP AT i_mara.
   p_matnr = i_mara-matnr+8(10).
   matnr_found_sw      = u2018Nu2019.
   used_matnr_found_sw = u2018Nu2019.
   PERFORM check_material_type.
   u_matnr = p_matnr.
   MOVE u20182u2032 TO u_matnr+0(1).
   SORT i_tvkwz.

   IF matnr_found_sw = u2018Yu2019.
     LOOP AT i_tvkwz.

       AUTHORITY-CHECK OBJECT u2018M_MATE_WRKu2019
               ID u2018WERKSu2019 FIELD i_tvkwz-werks
               ID u2018ACTVTu2019 FIELD u201801u2032.

       IF sy-subrc 0.            u201DUser is not authorized
         CALL FUNCTION u2018POPUP_TO_DISPLAY_TEXTu2019
              EXPORTING
               titel     = u2018UNABLE TO EXTEND ITEMu2019
        textline1 = u2018You do not have authorization to extend to plantu2019
               textline2 = i_tvkwz-werks.
         STOP.
       ENDIF.

       IF i_tvkwz-werks+3(1) = u2018 u2018.
         ck_werks+0(1) = u20180u2032.
         ck_werks+1(3) = i_tvkwz-werks+0(3).
       ELSE.
         ck_werks = i_tvkwz-werks.
       ENDIF.

       IF ck_werks >= wf_werks AND
          ck_werks u2018 u2018.
           c_lgort = i_tvkwz-werks.
           u_lgort = i_tvkwz-werks.
           MOVE u20180000005500u2032 TO c_prctr.
         ENDIF.

* Check to make sure material is not already maintain for plant
         MOVE u20181u2032 TO c_matnr+8(1).
         SELECT SINGLE matnr FROM marc INTO w_matnr
           WHERE matnr = c_matnr
             AND werks = i_tvkwz-werks.
         IF sy-subrc 0.
           PERFORM extend_new_matnr.
           SELECT SINGLE matnr FROM marc INTO w_matnr
             WHERE matnr = c_matnr
               AND werks = i_tvkwz-werks.
           IF sy-subrc = 0.
           MOVE u2018                                                    u2019
                                     TO w_line.
             CONCATENATE
             u2019Material #: u2018 p_matnr u2018 was extended to plant: u2018
              i_tvkwz-werks
              INTO w_line.
             WRITE AT / w_line.
           ELSE.
           MOVE u2018                                                    u2019
                                     TO w_line.
             CONCATENATE
             u2019Error Material #: u2018 p_matnr u2018 not extended to plant: u2018
              i_tvkwz-werks
              INTO w_line.
             WRITE AT / w_line.
           ENDIF.
         ELSE.
           MOVE u2018                                                    u2019
             TO w_line.
           CONCATENATE
           u2019Material #: u2018 p_matnr u2018 is already extended to plant: u2018
            i_tvkwz-werks
            INTO w_line.
           WRITE AT / w_line.
         ENDIF.

** Check to make sure material is not already maintain for plant
*          MOVE u20182u2032 TO c_matnr+8(1).
*          SELECT SINGLE matnr FROM marc INTO w_matnr
*            WHERE matnr = c_matnr
*              AND werks = i_tvkwz-werks.
*          IF sy-subrc 0.
*            IF mtart_003 u2018ZCONu2019 AND
*               used_matnr_found_sw = u2018Yu2019.
*              PERFORM extend_used_matnr.
*              SELECT SINGLE matnr FROM marc INTO w_matnr
*                WHERE matnr = c_matnr
*                  AND werks = i_tvkwz-werks.
*              IF sy-subrc = 0.
*            MOVE u2018                                                    u2019
*                                                              TO w_line
         .
*                CONCATENATE
*                u2019Material #: u2018 u_matnr u2018 was extended to plant: u2018
*                 i_tvkwz-werks
*                 INTO w_line.
*                WRITE AT / w_line.
*              ELSE.
*            MOVE u2018                                                    u2019
*                                                              TO w_line
         .
*                CONCATENATE
*                u2019Error Material #: u2018 u_matnr u2018 not extended to plant: u2018
*                 i_tvkwz-werks
*                 INTO w_line.
*                WRITE AT / w_line.
*              ENDIF.
*            ENDIF.
*          ELSE.
*            MOVE u2018                                                    u2019
*              TO w_line.
*            CONCATENATE
*            u2019Material #: u2018 u_matnr u2018 is already extended to plant: u2018
*             i_tvkwz-werks
*             INTO w_line.
*            WRITE AT / w_line.
*          ENDIF.
       ENDIF.

     ENDLOOP.
   ELSEIF  matnr_found_sw = u2018Nu2019.
     CALL FUNCTION u2018POPUP_TO_DISPLAY_TEXTu2019
          EXPORTING
               titel     = u2018UNABLE TO EXTEND ITEMu2019
               textline1 = u2018Item does not exist in SAPu2019
               textline2 = p_matnr.
     STOP.
   ENDIF.
 ENDLOOP.
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  Check_Material_Type
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM check_material_type.

 CLEAR: c_matnr, c_stprs, u_mtart_003.

 CONCATENATE u201800000000u2032 p_matnr INTO c_matnr.
 c2_matnr = c_matnr.
 MOVE u20182u2032 TO c2_matnr+8(1).

* Get used item info (material type, valuation class)
 SELECT SINGLE mtart INTO u_mtart_003 FROM mara WHERE matnr = c2_matnr.
 IF sy-subrc = 0.
   used_matnr_found_sw = u2018Yu2019.
   SELECT SINGLE bklas
      INTO u_bklas FROM mbew
      WHERE matnr = c2_matnr.
 ENDIF.

* Get new item info (material type, valuation class)
 SELECT SINGLE mtart INTO mtart_003 FROM mara WHERE matnr = c_matnr.
 IF sy-subrc = 0.
   matnr_found_sw = u2018Yu2019.
   SELECT SINGLE verpr stprs bklas peinh vprsv
      INTO (c_verpr,c_stprs,c_bklas,c_peinh,c_vprsv) FROM mbew
      WHERE matnr = c_matnr.

   c1_stprs = c_stprs / 5.
   c1_verpr = c_verpr / 5.
   u_stprs = c1_stprs.
   u_verpr = c1_verpr.
* If the item is not found as used then determine valuation class
* otherwise use the one from the database
   IF u_mtart_003 u2018ZCONu2019 AND
      u_mtart_003 u2018HAWAu2019.
     IF mtart_003 = u2018ZCONu2019.
       u_bklas = c_bklas.
     ELSEIF c_bklas = u2018ISHPu2019.
       MOVE u2018ISTUu2019 TO u_bklas.
     ELSE.
       u_bklas = c_bklas.
       MOVE u2018Uu2019 TO u_bklas+3(1).
     ENDIF.
   ENDIF.

   SELECT SINGLE bklas
      FROM t025
      INTO w_bklas
      WHERE bklas = c_bklas.
   IF sy-subrc = 0.
     SELECT SINGLE bklas
        FROM t025
        INTO w_bklas
        WHERE bklas = u_bklas.
     IF sy-subrc 0.
       u_bklas = c_bklas.
     ENDIF.
   ENDIF.

* Get purchasing group (buyer) from any plant other than 5502
   MOVE u20181u2032 TO c_matnr+8(1).
   SELECT SINGLE ekgrp FROM marc INTO c_ekgrp
     WHERE matnr = c_matnr
       AND werks 5502.

* Check to see material is stocked at 5502
   MOVE u20181u2032 TO c_matnr+8(1).
   SELECT SINGLE matnr FROM marc INTO w_matnr
     WHERE matnr = c_matnr
       AND werks = 5502.
   IF sy-subrc = 0.
     MOVE u201840u2032 TO c_sobsl.
   ELSE.
     MOVE u2018 u2018 TO c_sobsl.
   ENDIF.
 ENDIF.

ENDFORM.                    u201D Check_Material_Type

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  fill_plant_tb
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
* Load plant, distribution channel and sales organization table        *
* (tvkwz) into an internal table to be able to use this info for       *
* extending an item to multiple specified plants.                      *
*u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014-*
FORM fill_plant_tb.
 REFRESH i_tvkwz.
 CLEAR i_tvkwz.
 SELECT werks INTO i_tvkwz-werks
    FROM tvkwz
      WHERE vkorg = u20181000u2032
      AND   vtweg = u201800u2032.
   IF i_tvkwz-werks+3(1) = u2018 u2018.
     ck_werks+0(1) = u20180u2032.
     ck_werks+1(3) = i_tvkwz-werks+0(3).
   ELSE.
     ck_werks = i_tvkwz-werks.
   ENDIF.

   IF ck_werks >= wf_werks AND
      ck_werks u20189u2032 AND
     IF i_tvkwz-werks u20185502u2032 AND
       i_tvkwz-werks u20185501u2032.
       APPEND i_tvkwz.
       CLEAR i_tvkwz.
*      ELSEIF i_tvkwz-werks = u2018900u2032 OR
*             i_tvkwz-werks = u2018901u2032 OR
*             i_tvkwz-werks = u2018902u2032.
*        APPEND i_tvkwz.
*        CLEAR i_tvkwz.
     ENDIF.
   ENDIF.

 ENDSELECT.

ENDFORM.                    u201D fill_plant_tb
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  extend_new_matnr
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM extend_new_matnr.

 PERFORM fill_new_matnr_data.

 CALL FUNCTION u2018BAPI_MATERIAL_SAVEDATAu2019
   EXPORTING
     headdata                   = bapimathead
*   CLIENTDATA                 *   CLIENTDATAX                      plantdata                  = bapi_marc
     plantdatax                 = bapi_marcx
*   FORECASTPARAMETERS         *   FORECASTPARAMETERSX        *   PLANNINGDATA               *   PLANNINGDATAX                    storagelocationdata        = bapi_mard
     storagelocationdatax       = bapi_mardx
     valuationdata              = bapi_mbew
     valuationdatax             = bapi_mbewx
*   WAREHOUSENUMBERDATA        *   WAREHOUSENUMBERDATAX             salesdata                  = bapi_mvke
     salesdatax                 = bapi_mvkex
*   STORAGETYPEDATA            *   STORAGETYPEDATAX               IMPORTING
     return                     = return
* TABLES
*   MATERIALDESCRIPTION        *   UNITSOFMEASURE             *   UNITSOFMEASUREX            *   INTERNATIONALARTNOS        *   MATERIALLONGTEXT           *   TAXCLASSIFICATIONS         *   RETURNMESSAGES             *   PRTDATA                    *   PRTDATAX                   *   EXTENSIONIN                *   EXTENSIONINX                           .

* Saves work
 COMMIT WORK AND WAIT.

ENDFORM.                    u201D extend_new_matnr

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  extend_used_matnr
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM extend_used_matnr.

 PERFORM fill_used_matnr_data.

 CALL FUNCTION u2018BAPI_MATERIAL_SAVEDATAu2019
   EXPORTING
     headdata                   = bapimathead
*   CLIENTDATA                 *   CLIENTDATAX                      plantdata                  = bapi_marc
     plantdatax                 = bapi_marcx
*   FORECASTPARAMETERS         *   FORECASTPARAMETERSX        *   PLANNINGDATA               *   PLANNINGDATAX                    storagelocationdata        = bapi_mard
     storagelocationdatax       = bapi_mardx
     valuationdata              = bapi_mbew
     valuationdatax             = bapi_mbewx
*   WAREHOUSENUMBERDATA        *   WAREHOUSENUMBERDATAX             salesdata                  = bapi_mvke
     salesdatax                 = bapi_mvkex
*   STORAGETYPEDATA            *   STORAGETYPEDATAX               IMPORTING
     return                     = return
* TABLES
*   MATERIALDESCRIPTION        *   UNITSOFMEASURE             *   UNITSOFMEASUREX            *   INTERNATIONALARTNOS        *   MATERIALLONGTEXT           *   TAXCLASSIFICATIONS         *   RETURNMESSAGES             *   PRTDATA                    *   PRTDATAX                   *   EXTENSIONIN                *   EXTENSIONINX                           .

* Saves work
 COMMIT WORK AND WAIT.

ENDFORM.                    u201D extend_used_matnr

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  fill_new_matnr_data
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM fill_new_matnr_data.

 CLEAR bapimathead.
 bapimathead-material      = c_matnr.
*   bapimathead-basic_view  = u2018Xu2019.
 bapimathead-sales_view    = u2018Xu2019.
 bapimathead-purchase_view = u2018Xu2019.
 bapimathead-mrp_view      = u2018Xu2019.
 bapimathead-storage_view  = u2018Xu2019.
 bapimathead-account_view  = u2018Xu2019.

 CLEAR bapi_marc.
 bapi_marc-plant       = i_tvkwz-werks.
 bapi_marc-pur_group   = c_ekgrp.
 bapi_marc-mrp_type    = u2018NDu2019.
 bapi_marc-period_ind  = u2018Mu2019.
 bapi_marc-lotsizekey  = u2018EXu2019.
 bapi_marc-proc_type   = u2018Fu2019.
 bapi_marc-spproctype  = c_sobsl.
 bapi_marc-availcheck  = u201802u2032.
 bapi_marc-profit_ctr  = c_prctr.
 bapi_marc-sloc_exprc  = c_lgort.
 IF i_tvkwz-werks = u20188300u2032.
   bapi_marc-mrp_ctrler  = u201813u2032.
   bapi_marc-mrp_group   = u201813u2032.
 ELSEIF i_tvkwz-werks = u20188400u2032.
   bapi_marc-mrp_ctrler  = u201814u2032.
   bapi_marc-mrp_group   = u201814u2032.
 ELSEIF i_tvkwz-werks = u20188500u2032.
   bapi_marc-mrp_ctrler  = u201815u2032.
   bapi_marc-mrp_group   = u201815u2032.
 ELSEIF i_tvkwz-werks = u20188600u2032.
   bapi_marc-mrp_ctrler  = u201816u2032.
   bapi_marc-mrp_group   = u201816u2032.
 ELSE.
   bapi_marc-mrp_ctrler  = u2018001u2032.
   bapi_marc-mrp_group   = u20180001u2032.
 ENDIF.

 CLEAR bapi_marcx.
 bapi_marcx-plant      = i_tvkwz-werks.
 bapi_marcx-pur_group  = u2018Xu2019.
 bapi_marcx-mrp_type   = u2018Xu2019.
 bapi_marcx-period_ind = u2018Xu2019.
 bapi_marcx-lotsizekey = u2018Xu2019.
 bapi_marcx-proc_type  = u2018Xu2019.
 bapi_marcx-availcheck = u2018Xu2019.
 bapi_marcx-profit_ctr = u2018Xu2019.
 bapi_marcx-sloc_exprc = u2018Xu2019.
 bapi_marcx-mrp_ctrler = u2018Xu2019.
 bapi_marcx-mrp_group  = u2018Xu2019.
 bapi_marcx-spproctype = u2018Xu2019.

 CLEAR bapi_mard.
 bapi_mard-plant      = i_tvkwz-werks.
 bapi_mard-stge_loc   = c_lgort.

 CLEAR bapi_mardx.
 bapi_mardx-plant     = i_tvkwz-werks.
 bapi_mardx-stge_loc  = c_lgort.

 CLEAR bapi_mbew.
 bapi_mbew-val_area    = i_tvkwz-werks.
 bapi_mbew-price_ctrl  = c_vprsv.
 bapi_mbew-moving_pr   = c_verpr.
 bapi_mbew-std_price   = c_stprs.
 bapi_mbew-price_unit  = c_peinh.
 bapi_mbew-val_class   = c_bklas.

 CLEAR bapi_mbewx.
 bapi_mbewx-val_area   = i_tvkwz-werks.
 bapi_mbewx-price_ctrl = u2018Xu2019.
 bapi_mbewx-moving_pr  = u2018Xu2019.
 bapi_mbewx-std_price  = u2018Xu2019.
 bapi_mbewx-price_unit = u2018Xu2019.
 bapi_mbewx-val_class  = u2018Xu2019.

 CLEAR bapi_mvke.
 bapi_mvke-sales_org   = u20181000u2032.
 bapi_mvke-distr_chan  = u201800u2032.

 CLEAR bapi_mvkex.
 bapi_mvkex-sales_org   = u20181000u2032.
 bapi_mvkex-distr_chan  = u201800u2032.
 bapi_mvkex-delyg_plnt  = u2018Xu2019.

ENDFORM.                    u201D fill_new_matnr_data

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  fill_used_matnr_data
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM fill_used_matnr_data.

 CLEAR bapimathead.
 bapimathead-material      = c_matnr.
*   bapimathead-basic_view  = u2018Xu2019.
 bapimathead-sales_view    = u2018Xu2019.
 bapimathead-purchase_view = u2018Xu2019.
 bapimathead-mrp_view      = u2018Xu2019.
 bapimathead-storage_view  = u2018Xu2019.
 bapimathead-account_view  = u2018Xu2019.

 CLEAR bapi_marc.
 bapi_marc-plant       = i_tvkwz-werks.
 bapi_marc-pur_group   = c_ekgrp.
 bapi_marc-mrp_type    = u2018NDu2019.
 bapi_marc-period_ind  = u2018Mu2019.
 bapi_marc-lotsizekey  = u2018EXu2019.
 bapi_marc-proc_type   = u2018Fu2019.
 bapi_marc-spproctype  = u2018  u2019.
 bapi_marc-availcheck  = u201802u2032.
 bapi_marc-profit_ctr  = c_prctr.
 bapi_marc-sloc_exprc  = u_lgort.
 IF i_tvkwz-werks = u20188300u2032.
   bapi_marc-mrp_ctrler  = u201813u2032.
   bapi_marc-mrp_group   = u201813u2032.
 ELSEIF i_tvkwz-werks = u20188400u2032.
   bapi_marc-mrp_ctrler  = u201814u2032.
   bapi_marc-mrp_group   = u201814u2032.
 ELSEIF i_tvkwz-werks = u20188500u2032.
   bapi_marc-mrp_ctrler  = u201815u2032.
   bapi_marc-mrp_group   = u201815u2032.
 ELSEIF i_tvkwz-werks = u20188600u2032.
   bapi_marc-mrp_ctrler  = u201816u2032.
   bapi_marc-mrp_group   = u201816u2032.
 ELSE.
   bapi_marc-mrp_ctrler  = u2018001u2032.
   bapi_marc-mrp_group   = u20180001u2032.
 ENDIF.

 CLEAR bapi_marcx.
 bapi_marcx-plant      = i_tvkwz-werks.
 bapi_marcx-pur_group  = u2018Xu2019.
 bapi_marcx-mrp_type   = u2018Xu2019.
 bapi_marcx-period_ind = u2018Xu2019.
 bapi_marcx-lotsizekey = u2018Xu2019.
 bapi_marcx-proc_type  = u2018Xu2019.
 bapi_marcx-availcheck = u2018Xu2019.
 bapi_marcx-profit_ctr = u2018Xu2019.
 bapi_marcx-sloc_exprc = u2018Xu2019.
 bapi_marcx-mrp_ctrler = u2018Xu2019.
 bapi_marcx-mrp_group  = u2018Xu2019.
 bapi_marcx-spproctype = u2018Xu2019.

 CLEAR bapi_mard.
 bapi_mard-plant      = i_tvkwz-werks.
 bapi_mard-stge_loc   = u_lgort.

 CLEAR bapi_mardx.
 bapi_mardx-plant     = i_tvkwz-werks.
 bapi_mardx-stge_loc  = u_lgort.

 CLEAR bapi_mbew.
 bapi_mbew-val_area    = i_tvkwz-werks.
 bapi_mbew-price_ctrl  = c_vprsv.
 bapi_mbew-moving_pr   = c1_verpr.
 bapi_mbew-std_price   = c1_stprs.
 bapi_mbew-price_unit  = c_peinh.
 bapi_mbew-val_class   = u_bklas.

 CLEAR bapi_mbewx.
 bapi_mbewx-val_area   = i_tvkwz-werks.
 bapi_mbewx-price_ctrl = u2018Xu2019.
 bapi_mbewx-moving_pr  = u2018Xu2019.
 bapi_mbewx-std_price  = u2018Xu2019.
 bapi_mbewx-price_unit = u2018Xu2019.
 bapi_mbewx-val_class  = u2018Xu2019.

 CLEAR bapi_mvke.
 bapi_mvke-sales_org   = u20181000u2032.
 bapi_mvke-distr_chan  = u201800u2032.

 CLEAR bapi_mvkex.
 bapi_mvkex-sales_org   = u20181000u2032.
 bapi_mvkex-distr_chan  = u201800u2032.
 bapi_mvkex-delyg_plnt  = u2018Xu2019.

ENDFORM.                    u201D fill_used_data

Best regards,

raam

2 REPLIES 2
Read only

Former Member
0 Likes
399

Hi Jimbob,

I would recommend using the BAPI since that is much more likely to be forward-compatible than batch input maps.

Please check this link

BAPI Function Module BAPI_MATERIAL_SAVEDATA

http://blog.esnai.com/arrow/archive/2007/08/30/208744.aspx

LSMW Using BAPI

http://www.saptechnical.com/Tutorials/LSMW/MMBAPI/Page1.htm

Recording

http://www.saptechnical.com/Tutorials/LSMW/MMRecording/Page1.htm

Direct Input Method

http://www.saptechnical.com/Tutorials/LSMW/MMDIM/page1.htm

TABLES: mara,
       marc,
       mbew.

DATA: BEGIN OF return OCCURS 0.
       INCLUDE STRUCTURE bapiret2.
DATA: END OF return.

DATA: BEGIN OF bapimathead.
       INCLUDE STRUCTURE  bapimathead.
DATA: END OF bapimathead.

DATA: BEGIN OF bapi_mara.
       INCLUDE STRUCTURE  bapi_mara.
DATA: END OF bapi_mara.

DATA: BEGIN OF bapi_marax.
       INCLUDE STRUCTURE  bapi_marax.
DATA: END OF bapi_marax.

DATA: BEGIN OF bapi_marc.
       INCLUDE STRUCTURE  bapi_marc.
DATA: END OF bapi_marc.

DATA: BEGIN OF bapi_marcx.
       INCLUDE STRUCTURE  bapi_marcx.
DATA: END OF bapi_marcx.

DATA: BEGIN OF bapi_mard.
       INCLUDE STRUCTURE  bapi_mard.
DATA: END OF bapi_mard.

DATA: BEGIN OF bapi_mardx.
       INCLUDE STRUCTURE  bapi_mardx.
DATA: END OF bapi_mardx.

DATA: BEGIN OF bapi_mbew.
       INCLUDE STRUCTURE  bapi_mbew.
DATA: END OF bapi_mbew.

DATA: BEGIN OF bapi_mbewx.
       INCLUDE STRUCTURE  bapi_mbewx.
DATA: END OF bapi_mbewx.

DATA: BEGIN OF bapi_mvke.
       INCLUDE STRUCTURE  bapi_mvke.
DATA: END OF bapi_mvke.

DATA: BEGIN OF bapi_mvkex.
       INCLUDE STRUCTURE  bapi_mvkex.
DATA: END OF bapi_mvkex.

DATA: BEGIN OF i_tvkwz OCCURS 0,
        werks LIKE tvkwz-werks,
     END OF i_tvkwz.

DATA: BEGIN OF i_mara OCCURS 0,
        matnr LIKE mara-matnr,
     END OF i_mara.

SELECT-OPTIONS: sl_matnr FOR mara-matnr NO INTERVALS.
PARAMETERS: p_werks(4) TYPE c,
           ef_werks(4) TYPE c,
           et_werks(4) TYPE c.

DATA: p_matnr(10) TYPE c,
     c_matnr(18) TYPE c,
     c2_matnr(18) TYPE c,
     mtart_003(18) TYPE c,
     u_mtart_003(18) TYPE c,
     c_matl_group LIKE mara-matkl,
     c_old_mat_no LIKE mara-bismt,
     c_base_uom LIKE mara-meins,
     c_division LIKE mara-spart,
     c_net_weight LIKE mara-ntgew,
     c_unit_of_wt LIKE mara-gewei,
     c_size_dim LIKE mara-groes,
     c_item_cat LIKE mara-mtpos_mara,
     c_pur_valkey LIKE mara-ekwsl,
     w_matnr(18) TYPE c,
     u_matnr(10) TYPE c,
     c_lgort(4) TYPE c,
     u_lgort(4) TYPE c,
     c_prctr(10) TYPE c,
     c_stprs LIKE mbew-stprs,
     c1_stprs LIKE mbew-stprs,
     u_stprs(15) TYPE c,
     c_verpr LIKE mbew-verpr,
     c1_verpr LIKE mbew-verpr,
     u_verpr(15) TYPE c,
     w_bklas(04) TYPE c,
     c_bklas(04) TYPE c,
     c_sobsl(02) TYPE c,
     u_bklas LIKE mbew-bklas,
     c_peinh LIKE mbew-peinh,
     c_ekgrp LIKE marc-ekgrp,
     c_vprsv LIKE mbew-vprsv,
     ck_werks(4) TYPE c,
     wf_werks(4) TYPE c,
     wt_werks(4) TYPE c,
     w_line(70) TYPE c,
     matnr_found_sw(01) TYPE c VALUE u2018Nu2019,
     used_matnr_found_sw(01) TYPE c VALUE u2018Nu2019.

*** End generated data section ***
START-OF-SELECTION.

* Load internal tables from SAP tables
*u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014-*
 AUTHORITY-CHECK OBJECT u2018M_MATE_WRKu2019
         ID u2018WERKSu2019 FIELD ef_werks
         ID u2018ACTVTu2019 FIELD u201801u2032.

 IF sy-subrc 0.            u201DUser is not authorized
   CALL FUNCTION u2018POPUP_TO_DISPLAY_TEXTu2019
        EXPORTING
         titel     = u2018UNABLE TO EXTEND ITEMu2019
         textline1 = u2018You do not have authorization to extend to plantu2019
         textline2 = ef_werks.
   STOP.
 ENDIF.

* Set plant specified range as 4 digits
 IF ef_werks+3(1) = u2018 u2018.
   wf_werks+0(1) = u20180u2032.
   wf_werks+1(3) = ef_werks+0(3).
 ELSE.
   wf_werks = ef_werks.
 ENDIF.

 IF et_werks+3(1) = u2018 u2018.
   wt_werks+0(1) = u20180u2032.
   wt_werks+1(3) = et_werks+0(3).
 ELSE.
   wt_werks = et_werks.
 ENDIF.

 IF wf_werks > wt_werks.
   wt_werks = wf_werks.
 ENDIF.

* load all items to be processed for this run SL_MATNR table
 LOOP AT sl_matnr.
   i_mara-matnr = sl_matnr-low.
   APPEND i_mara.
 ENDLOOP.

 PERFORM fill_plant_tb.
 LOOP AT i_mara.
   p_matnr = i_mara-matnr+8(10).
   matnr_found_sw      = u2018Nu2019.
   used_matnr_found_sw = u2018Nu2019.
   PERFORM check_material_type.
   u_matnr = p_matnr.
   MOVE u20182u2032 TO u_matnr+0(1).
   SORT i_tvkwz.

   IF matnr_found_sw = u2018Yu2019.
     LOOP AT i_tvkwz.

       AUTHORITY-CHECK OBJECT u2018M_MATE_WRKu2019
               ID u2018WERKSu2019 FIELD i_tvkwz-werks
               ID u2018ACTVTu2019 FIELD u201801u2032.

       IF sy-subrc 0.            u201DUser is not authorized
         CALL FUNCTION u2018POPUP_TO_DISPLAY_TEXTu2019
              EXPORTING
               titel     = u2018UNABLE TO EXTEND ITEMu2019
        textline1 = u2018You do not have authorization to extend to plantu2019
               textline2 = i_tvkwz-werks.
         STOP.
       ENDIF.

       IF i_tvkwz-werks+3(1) = u2018 u2018.
         ck_werks+0(1) = u20180u2032.
         ck_werks+1(3) = i_tvkwz-werks+0(3).
       ELSE.
         ck_werks = i_tvkwz-werks.
       ENDIF.

       IF ck_werks >= wf_werks AND
          ck_werks u2018 u2018.
           c_lgort = i_tvkwz-werks.
           u_lgort = i_tvkwz-werks.
           MOVE u20180000005500u2032 TO c_prctr.
         ENDIF.

* Check to make sure material is not already maintain for plant
         MOVE u20181u2032 TO c_matnr+8(1).
         SELECT SINGLE matnr FROM marc INTO w_matnr
           WHERE matnr = c_matnr
             AND werks = i_tvkwz-werks.
         IF sy-subrc 0.
           PERFORM extend_new_matnr.
           SELECT SINGLE matnr FROM marc INTO w_matnr
             WHERE matnr = c_matnr
               AND werks = i_tvkwz-werks.
           IF sy-subrc = 0.
           MOVE u2018                                                    u2019
                                     TO w_line.
             CONCATENATE
             u2019Material #: u2018 p_matnr u2018 was extended to plant: u2018
              i_tvkwz-werks
              INTO w_line.
             WRITE AT / w_line.
           ELSE.
           MOVE u2018                                                    u2019
                                     TO w_line.
             CONCATENATE
             u2019Error Material #: u2018 p_matnr u2018 not extended to plant: u2018
              i_tvkwz-werks
              INTO w_line.
             WRITE AT / w_line.
           ENDIF.
         ELSE.
           MOVE u2018                                                    u2019
             TO w_line.
           CONCATENATE
           u2019Material #: u2018 p_matnr u2018 is already extended to plant: u2018
            i_tvkwz-werks
            INTO w_line.
           WRITE AT / w_line.
         ENDIF.

** Check to make sure material is not already maintain for plant
*          MOVE u20182u2032 TO c_matnr+8(1).
*          SELECT SINGLE matnr FROM marc INTO w_matnr
*            WHERE matnr = c_matnr
*              AND werks = i_tvkwz-werks.
*          IF sy-subrc 0.
*            IF mtart_003 u2018ZCONu2019 AND
*               used_matnr_found_sw = u2018Yu2019.
*              PERFORM extend_used_matnr.
*              SELECT SINGLE matnr FROM marc INTO w_matnr
*                WHERE matnr = c_matnr
*                  AND werks = i_tvkwz-werks.
*              IF sy-subrc = 0.
*            MOVE u2018                                                    u2019
*                                                              TO w_line
         .
*                CONCATENATE
*                u2019Material #: u2018 u_matnr u2018 was extended to plant: u2018
*                 i_tvkwz-werks
*                 INTO w_line.
*                WRITE AT / w_line.
*              ELSE.
*            MOVE u2018                                                    u2019
*                                                              TO w_line
         .
*                CONCATENATE
*                u2019Error Material #: u2018 u_matnr u2018 not extended to plant: u2018
*                 i_tvkwz-werks
*                 INTO w_line.
*                WRITE AT / w_line.
*              ENDIF.
*            ENDIF.
*          ELSE.
*            MOVE u2018                                                    u2019
*              TO w_line.
*            CONCATENATE
*            u2019Material #: u2018 u_matnr u2018 is already extended to plant: u2018
*             i_tvkwz-werks
*             INTO w_line.
*            WRITE AT / w_line.
*          ENDIF.
       ENDIF.

     ENDLOOP.
   ELSEIF  matnr_found_sw = u2018Nu2019.
     CALL FUNCTION u2018POPUP_TO_DISPLAY_TEXTu2019
          EXPORTING
               titel     = u2018UNABLE TO EXTEND ITEMu2019
               textline1 = u2018Item does not exist in SAPu2019
               textline2 = p_matnr.
     STOP.
   ENDIF.
 ENDLOOP.
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  Check_Material_Type
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM check_material_type.

 CLEAR: c_matnr, c_stprs, u_mtart_003.

 CONCATENATE u201800000000u2032 p_matnr INTO c_matnr.
 c2_matnr = c_matnr.
 MOVE u20182u2032 TO c2_matnr+8(1).

* Get used item info (material type, valuation class)
 SELECT SINGLE mtart INTO u_mtart_003 FROM mara WHERE matnr = c2_matnr.
 IF sy-subrc = 0.
   used_matnr_found_sw = u2018Yu2019.
   SELECT SINGLE bklas
      INTO u_bklas FROM mbew
      WHERE matnr = c2_matnr.
 ENDIF.

* Get new item info (material type, valuation class)
 SELECT SINGLE mtart INTO mtart_003 FROM mara WHERE matnr = c_matnr.
 IF sy-subrc = 0.
   matnr_found_sw = u2018Yu2019.
   SELECT SINGLE verpr stprs bklas peinh vprsv
      INTO (c_verpr,c_stprs,c_bklas,c_peinh,c_vprsv) FROM mbew
      WHERE matnr = c_matnr.

   c1_stprs = c_stprs / 5.
   c1_verpr = c_verpr / 5.
   u_stprs = c1_stprs.
   u_verpr = c1_verpr.
* If the item is not found as used then determine valuation class
* otherwise use the one from the database
   IF u_mtart_003 u2018ZCONu2019 AND
      u_mtart_003 u2018HAWAu2019.
     IF mtart_003 = u2018ZCONu2019.
       u_bklas = c_bklas.
     ELSEIF c_bklas = u2018ISHPu2019.
       MOVE u2018ISTUu2019 TO u_bklas.
     ELSE.
       u_bklas = c_bklas.
       MOVE u2018Uu2019 TO u_bklas+3(1).
     ENDIF.
   ENDIF.

   SELECT SINGLE bklas
      FROM t025
      INTO w_bklas
      WHERE bklas = c_bklas.
   IF sy-subrc = 0.
     SELECT SINGLE bklas
        FROM t025
        INTO w_bklas
        WHERE bklas = u_bklas.
     IF sy-subrc 0.
       u_bklas = c_bklas.
     ENDIF.
   ENDIF.

* Get purchasing group (buyer) from any plant other than 5502
   MOVE u20181u2032 TO c_matnr+8(1).
   SELECT SINGLE ekgrp FROM marc INTO c_ekgrp
     WHERE matnr = c_matnr
       AND werks 5502.

* Check to see material is stocked at 5502
   MOVE u20181u2032 TO c_matnr+8(1).
   SELECT SINGLE matnr FROM marc INTO w_matnr
     WHERE matnr = c_matnr
       AND werks = 5502.
   IF sy-subrc = 0.
     MOVE u201840u2032 TO c_sobsl.
   ELSE.
     MOVE u2018 u2018 TO c_sobsl.
   ENDIF.
 ENDIF.

ENDFORM.                    u201D Check_Material_Type

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  fill_plant_tb
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
* Load plant, distribution channel and sales organization table        *
* (tvkwz) into an internal table to be able to use this info for       *
* extending an item to multiple specified plants.                      *
*u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014-*
FORM fill_plant_tb.
 REFRESH i_tvkwz.
 CLEAR i_tvkwz.
 SELECT werks INTO i_tvkwz-werks
    FROM tvkwz
      WHERE vkorg = u20181000u2032
      AND   vtweg = u201800u2032.
   IF i_tvkwz-werks+3(1) = u2018 u2018.
     ck_werks+0(1) = u20180u2032.
     ck_werks+1(3) = i_tvkwz-werks+0(3).
   ELSE.
     ck_werks = i_tvkwz-werks.
   ENDIF.

   IF ck_werks >= wf_werks AND
      ck_werks u20189u2032 AND
     IF i_tvkwz-werks u20185502u2032 AND
       i_tvkwz-werks u20185501u2032.
       APPEND i_tvkwz.
       CLEAR i_tvkwz.
*      ELSEIF i_tvkwz-werks = u2018900u2032 OR
*             i_tvkwz-werks = u2018901u2032 OR
*             i_tvkwz-werks = u2018902u2032.
*        APPEND i_tvkwz.
*        CLEAR i_tvkwz.
     ENDIF.
   ENDIF.

 ENDSELECT.

ENDFORM.                    u201D fill_plant_tb
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  extend_new_matnr
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM extend_new_matnr.

 PERFORM fill_new_matnr_data.

 CALL FUNCTION u2018BAPI_MATERIAL_SAVEDATAu2019
   EXPORTING
     headdata                   = bapimathead
*   CLIENTDATA                 *   CLIENTDATAX                      plantdata                  = bapi_marc
     plantdatax                 = bapi_marcx
*   FORECASTPARAMETERS         *   FORECASTPARAMETERSX        *   PLANNINGDATA               *   PLANNINGDATAX                    storagelocationdata        = bapi_mard
     storagelocationdatax       = bapi_mardx
     valuationdata              = bapi_mbew
     valuationdatax             = bapi_mbewx
*   WAREHOUSENUMBERDATA        *   WAREHOUSENUMBERDATAX             salesdata                  = bapi_mvke
     salesdatax                 = bapi_mvkex
*   STORAGETYPEDATA            *   STORAGETYPEDATAX               IMPORTING
     return                     = return
* TABLES
*   MATERIALDESCRIPTION        *   UNITSOFMEASURE             *   UNITSOFMEASUREX            *   INTERNATIONALARTNOS        *   MATERIALLONGTEXT           *   TAXCLASSIFICATIONS         *   RETURNMESSAGES             *   PRTDATA                    *   PRTDATAX                   *   EXTENSIONIN                *   EXTENSIONINX                           .

* Saves work
 COMMIT WORK AND WAIT.

ENDFORM.                    u201D extend_new_matnr

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  extend_used_matnr
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM extend_used_matnr.

 PERFORM fill_used_matnr_data.

 CALL FUNCTION u2018BAPI_MATERIAL_SAVEDATAu2019
   EXPORTING
     headdata                   = bapimathead
*   CLIENTDATA                 *   CLIENTDATAX                      plantdata                  = bapi_marc
     plantdatax                 = bapi_marcx
*   FORECASTPARAMETERS         *   FORECASTPARAMETERSX        *   PLANNINGDATA               *   PLANNINGDATAX                    storagelocationdata        = bapi_mard
     storagelocationdatax       = bapi_mardx
     valuationdata              = bapi_mbew
     valuationdatax             = bapi_mbewx
*   WAREHOUSENUMBERDATA        *   WAREHOUSENUMBERDATAX             salesdata                  = bapi_mvke
     salesdatax                 = bapi_mvkex
*   STORAGETYPEDATA            *   STORAGETYPEDATAX               IMPORTING
     return                     = return
* TABLES
*   MATERIALDESCRIPTION        *   UNITSOFMEASURE             *   UNITSOFMEASUREX            *   INTERNATIONALARTNOS        *   MATERIALLONGTEXT           *   TAXCLASSIFICATIONS         *   RETURNMESSAGES             *   PRTDATA                    *   PRTDATAX                   *   EXTENSIONIN                *   EXTENSIONINX                           .

* Saves work
 COMMIT WORK AND WAIT.

ENDFORM.                    u201D extend_used_matnr

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  fill_new_matnr_data
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM fill_new_matnr_data.

 CLEAR bapimathead.
 bapimathead-material      = c_matnr.
*   bapimathead-basic_view  = u2018Xu2019.
 bapimathead-sales_view    = u2018Xu2019.
 bapimathead-purchase_view = u2018Xu2019.
 bapimathead-mrp_view      = u2018Xu2019.
 bapimathead-storage_view  = u2018Xu2019.
 bapimathead-account_view  = u2018Xu2019.

 CLEAR bapi_marc.
 bapi_marc-plant       = i_tvkwz-werks.
 bapi_marc-pur_group   = c_ekgrp.
 bapi_marc-mrp_type    = u2018NDu2019.
 bapi_marc-period_ind  = u2018Mu2019.
 bapi_marc-lotsizekey  = u2018EXu2019.
 bapi_marc-proc_type   = u2018Fu2019.
 bapi_marc-spproctype  = c_sobsl.
 bapi_marc-availcheck  = u201802u2032.
 bapi_marc-profit_ctr  = c_prctr.
 bapi_marc-sloc_exprc  = c_lgort.
 IF i_tvkwz-werks = u20188300u2032.
   bapi_marc-mrp_ctrler  = u201813u2032.
   bapi_marc-mrp_group   = u201813u2032.
 ELSEIF i_tvkwz-werks = u20188400u2032.
   bapi_marc-mrp_ctrler  = u201814u2032.
   bapi_marc-mrp_group   = u201814u2032.
 ELSEIF i_tvkwz-werks = u20188500u2032.
   bapi_marc-mrp_ctrler  = u201815u2032.
   bapi_marc-mrp_group   = u201815u2032.
 ELSEIF i_tvkwz-werks = u20188600u2032.
   bapi_marc-mrp_ctrler  = u201816u2032.
   bapi_marc-mrp_group   = u201816u2032.
 ELSE.
   bapi_marc-mrp_ctrler  = u2018001u2032.
   bapi_marc-mrp_group   = u20180001u2032.
 ENDIF.

 CLEAR bapi_marcx.
 bapi_marcx-plant      = i_tvkwz-werks.
 bapi_marcx-pur_group  = u2018Xu2019.
 bapi_marcx-mrp_type   = u2018Xu2019.
 bapi_marcx-period_ind = u2018Xu2019.
 bapi_marcx-lotsizekey = u2018Xu2019.
 bapi_marcx-proc_type  = u2018Xu2019.
 bapi_marcx-availcheck = u2018Xu2019.
 bapi_marcx-profit_ctr = u2018Xu2019.
 bapi_marcx-sloc_exprc = u2018Xu2019.
 bapi_marcx-mrp_ctrler = u2018Xu2019.
 bapi_marcx-mrp_group  = u2018Xu2019.
 bapi_marcx-spproctype = u2018Xu2019.

 CLEAR bapi_mard.
 bapi_mard-plant      = i_tvkwz-werks.
 bapi_mard-stge_loc   = c_lgort.

 CLEAR bapi_mardx.
 bapi_mardx-plant     = i_tvkwz-werks.
 bapi_mardx-stge_loc  = c_lgort.

 CLEAR bapi_mbew.
 bapi_mbew-val_area    = i_tvkwz-werks.
 bapi_mbew-price_ctrl  = c_vprsv.
 bapi_mbew-moving_pr   = c_verpr.
 bapi_mbew-std_price   = c_stprs.
 bapi_mbew-price_unit  = c_peinh.
 bapi_mbew-val_class   = c_bklas.

 CLEAR bapi_mbewx.
 bapi_mbewx-val_area   = i_tvkwz-werks.
 bapi_mbewx-price_ctrl = u2018Xu2019.
 bapi_mbewx-moving_pr  = u2018Xu2019.
 bapi_mbewx-std_price  = u2018Xu2019.
 bapi_mbewx-price_unit = u2018Xu2019.
 bapi_mbewx-val_class  = u2018Xu2019.

 CLEAR bapi_mvke.
 bapi_mvke-sales_org   = u20181000u2032.
 bapi_mvke-distr_chan  = u201800u2032.

 CLEAR bapi_mvkex.
 bapi_mvkex-sales_org   = u20181000u2032.
 bapi_mvkex-distr_chan  = u201800u2032.
 bapi_mvkex-delyg_plnt  = u2018Xu2019.

ENDFORM.                    u201D fill_new_matnr_data

*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
*&      Form  fill_used_matnr_data
*&u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014u2014*
FORM fill_used_matnr_data.

 CLEAR bapimathead.
 bapimathead-material      = c_matnr.
*   bapimathead-basic_view  = u2018Xu2019.
 bapimathead-sales_view    = u2018Xu2019.
 bapimathead-purchase_view = u2018Xu2019.
 bapimathead-mrp_view      = u2018Xu2019.
 bapimathead-storage_view  = u2018Xu2019.
 bapimathead-account_view  = u2018Xu2019.

 CLEAR bapi_marc.
 bapi_marc-plant       = i_tvkwz-werks.
 bapi_marc-pur_group   = c_ekgrp.
 bapi_marc-mrp_type    = u2018NDu2019.
 bapi_marc-period_ind  = u2018Mu2019.
 bapi_marc-lotsizekey  = u2018EXu2019.
 bapi_marc-proc_type   = u2018Fu2019.
 bapi_marc-spproctype  = u2018  u2019.
 bapi_marc-availcheck  = u201802u2032.
 bapi_marc-profit_ctr  = c_prctr.
 bapi_marc-sloc_exprc  = u_lgort.
 IF i_tvkwz-werks = u20188300u2032.
   bapi_marc-mrp_ctrler  = u201813u2032.
   bapi_marc-mrp_group   = u201813u2032.
 ELSEIF i_tvkwz-werks = u20188400u2032.
   bapi_marc-mrp_ctrler  = u201814u2032.
   bapi_marc-mrp_group   = u201814u2032.
 ELSEIF i_tvkwz-werks = u20188500u2032.
   bapi_marc-mrp_ctrler  = u201815u2032.
   bapi_marc-mrp_group   = u201815u2032.
 ELSEIF i_tvkwz-werks = u20188600u2032.
   bapi_marc-mrp_ctrler  = u201816u2032.
   bapi_marc-mrp_group   = u201816u2032.
 ELSE.
   bapi_marc-mrp_ctrler  = u2018001u2032.
   bapi_marc-mrp_group   = u20180001u2032.
 ENDIF.

 CLEAR bapi_marcx.
 bapi_marcx-plant      = i_tvkwz-werks.
 bapi_marcx-pur_group  = u2018Xu2019.
 bapi_marcx-mrp_type   = u2018Xu2019.
 bapi_marcx-period_ind = u2018Xu2019.
 bapi_marcx-lotsizekey = u2018Xu2019.
 bapi_marcx-proc_type  = u2018Xu2019.
 bapi_marcx-availcheck = u2018Xu2019.
 bapi_marcx-profit_ctr = u2018Xu2019.
 bapi_marcx-sloc_exprc = u2018Xu2019.
 bapi_marcx-mrp_ctrler = u2018Xu2019.
 bapi_marcx-mrp_group  = u2018Xu2019.
 bapi_marcx-spproctype = u2018Xu2019.

 CLEAR bapi_mard.
 bapi_mard-plant      = i_tvkwz-werks.
 bapi_mard-stge_loc   = u_lgort.

 CLEAR bapi_mardx.
 bapi_mardx-plant     = i_tvkwz-werks.
 bapi_mardx-stge_loc  = u_lgort.

 CLEAR bapi_mbew.
 bapi_mbew-val_area    = i_tvkwz-werks.
 bapi_mbew-price_ctrl  = c_vprsv.
 bapi_mbew-moving_pr   = c1_verpr.
 bapi_mbew-std_price   = c1_stprs.
 bapi_mbew-price_unit  = c_peinh.
 bapi_mbew-val_class   = u_bklas.

 CLEAR bapi_mbewx.
 bapi_mbewx-val_area   = i_tvkwz-werks.
 bapi_mbewx-price_ctrl = u2018Xu2019.
 bapi_mbewx-moving_pr  = u2018Xu2019.
 bapi_mbewx-std_price  = u2018Xu2019.
 bapi_mbewx-price_unit = u2018Xu2019.
 bapi_mbewx-val_class  = u2018Xu2019.

 CLEAR bapi_mvke.
 bapi_mvke-sales_org   = u20181000u2032.
 bapi_mvke-distr_chan  = u201800u2032.

 CLEAR bapi_mvkex.
 bapi_mvkex-sales_org   = u20181000u2032.
 bapi_mvkex-distr_chan  = u201800u2032.
 bapi_mvkex-delyg_plnt  = u2018Xu2019.

ENDFORM.                    u201D fill_used_data

Best regards,

raam

Read only

Former Member
0 Likes
398

Hi

u can use standard program RMDATIND in LSMW to upload the material Master data.

regards

raghu