<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: BAPI for material in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707723#M892723</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
REPORT  ZUMM0040 NO STANDARD PAGE HEADING LINE-SIZE 255
LINE-COUNT 50(4) MESSAGE-ID zaccess.
************************************************************************
* Program              : ZUMM0040
* Title                : Extend Material Master from a source plant to
*                        Target plants using BAPI
************************************************************************
* Description    :  Extend Material Master from a source plant to all
*                   Target plants specified for all the materials
*                   specified on selection screen.
*                   This program is specific to Access Technologies and
*                   will have to be modified suitably for use in other
*                   areas.
*                   Information specific to the Access Plants is
*                   maintained in a custom table and only those plants
*                   maintained in this table can be specified as target
*                   plants.
*                   User can check for Super Bom &amp;amp; GC Part Materials
*                   to extend from source plant to target plants and
*                   separate rules are set up for plant 6140 and
*                   Plants other than 6010 in MRP2, MRP3 &amp;amp; Costing 1
*                   views.
************************************************************************
* Input  :
*        Select-options  : 1. Material Number
*                          2. Target Plant
*
*        Parameters      : 1. Source Plant
*                          2. Class II Parts
*                          3. Super Bom &amp;amp; GC Material
*                          4. Mode for call transaction
*
*        Others (Specify):
* Output :
*        Report  : Display Error records and Success records
*
*        Others (Specify): None.
************************************************************************
* Heat  Ticket #   : USD9197
* Created by       : ARUNDHATHI GANGIPALLY
* Created on       : 29/11/2007
* Version          : 1
* Request          :
* Transaction code :
************************************************************************
* Change History                                                       *
* Date         Programmer  Search String   Description                 *
************************************************************************

*----------------------------------------------------------------------*
* TYPES DECLARATION                                                    *
*----------------------------------------------------------------------*

TYPES: BEGIN OF t_marc,
        werks TYPE werks_d, " Plant
        matnr TYPE matnr,   " Material Number
        beskz TYPE beskz,   " Procurement Type
        sobsl TYPE sobsl,   " Special procurement type
        fhori TYPE fhori,   " Scheduling Margin Key for Floats
       END OF t_marc.

TYPES: BEGIN OF t_target_plants,
        werks        TYPE werks_d, " Plant
        pur_group    TYPE ekgrp,   " Purchasing Group
        prod_time    TYPE dzeit,   " In-house production time
        deliv_time   TYPE plifz,   " Planned delivery time in days
        gr_proc_time TYPE webaz,
        " Goods receipt processing time in days
        sched_margin TYPE fhori,   " Scheduling Margin Key for Floats
        repln_time   TYPE wzeit,   " Total replenishment lead time
       END OF t_target_plants.

TYPES: BEGIN OF t_result,
        material(18),               " Material Number
        plant(4),                   " Plant
        flag(7),                    " Success/Failure flag
        errormessage TYPE bapi_msg, " Message in bapireturn
       END OF t_result.

TYPES: BEGIN OF t_mbew,
        matnr TYPE matnr,   " Material Number
        bwkey TYPE bwkey,   " Valuation area
        bwtar TYPE bwtar_d, " Valuation Type
       END OF t_mbew.

TYPES: BEGIN OF t_mlgn,
        matnr TYPE matnr,  " Material Number
        lgnum TYPE lgnum,  " Warehouse Number / Warehouse Complex
       END OF t_mlgn.

TYPES: BEGIN OF t_myms,
        mykey TYPE mykey,  " LIFO valuation level
        matnr TYPE matnr,  " Material Number
       END OF t_myms.

TYPES: BEGIN OF t_mlgt,
        matnr TYPE matnr, " Material Number
        lgnum TYPE lgnum, " Warehouse Number / Warehouse Complex
        lgtyp TYPE lgtyp, " Storage Type
       END OF t_mlgt.

* To hold list of materials that need to be extended (Super Bom &amp;amp; GC)
TYPES: BEGIN OF t_superbom,
        matnr TYPE matnr,       " Material Number
        kzkfg TYPE kzkfg,       " Configurable
       END OF t_superbom.


*----------------------------------------------------------------------*
* INTERNAL TABLES DECLARATION                                          *
*----------------------------------------------------------------------*

DATA: g_it_marc           TYPE TABLE OF t_marc,
      g_it_marc1          TYPE TABLE OF t_marc,
      g_it_source_mat     TYPE TABLE OF t_marc,
      g_it_plants         TYPE TABLE OF t_target_plants,
      g_it_target_plants  TYPE TABLE OF t_target_plants,
      g_it_bapi_makt_ga   TYPE TABLE OF bapi_makt_ga,
      g_it_bapi_marm_ga   TYPE TABLE OF bapi_marm_ga,
      g_it_bapi_mean_ga   TYPE TABLE OF bapi_mean_ga,
      g_it_bapi_mltx_ga   TYPE TABLE OF bapi_mltx_ga,
      g_it_bapi_mlan_ga   TYPE TABLE OF bapi_mlan_ga,
      g_it_bapireturn     TYPE TABLE OF bapireturn,
      g_it_bapi_makt      TYPE TABLE OF bapi_makt,
      g_it_bapi_marm      TYPE TABLE OF bapi_marm,
      g_it_bapi_mean      TYPE TABLE OF bapi_mean,
      g_it_bapi_mltx      TYPE TABLE OF bapi_mltx,
      g_it_bapi_mlan      TYPE TABLE OF bapi_mlan,
      g_it_return         TYPE bapirettab,
      g_it_matextended    TYPE TABLE OF t_result,
      g_it_matresult      TYPE TABLE OF t_result,
      g_it_plantresult    TYPE TABLE OF t_result,
      g_it_mbew           TYPE TABLE OF t_mbew,
      g_it_mlgn           TYPE TABLE OF t_mlgn,
      g_it_myms           TYPE TABLE OF t_myms,
      g_it_mlgt           TYPE TABLE OF t_mlgt,
      g_it_superbom       TYPE TABLE OF t_superbom.

*----------------------------------------------------------------------*
*      WORK AREAS DECLARATION                                          *
*----------------------------------------------------------------------*

DATA: g_wa_marc           TYPE t_marc,
      g_wa_marc1          TYPE t_marc,
      g_wa_source_mat     TYPE t_marc,
      g_wa_plants         TYPE t_target_plants,
      g_wa_comp_code      TYPE t001k-bukrs,
      g_wa_salesorg       TYPE t001w-vkorg,
      g_wa_distr_chan     TYPE t001w-vtweg,
      g_wa_mbew           TYPE t_mbew,
      g_wa_mlgn           TYPE t_mlgn,
      g_wa_myms           TYPE t_myms,
      g_wa_mlgt           TYPE t_mlgt,
      g_wa_bapi_mara_ga   TYPE bapi_mara_ga,
      g_wa_bapi_marc_ga   TYPE bapi_marc_ga,
      g_wa_bapi_mpop_ga   TYPE bapi_mpop_ga,
      g_wa_bapi_mpgd_ga   TYPE bapi_mpgd_ga,
      g_wa_bapi_mbew_ga   TYPE bapi_mbew_ga,
      g_wa_bapi_mlgn_ga   TYPE bapi_mlgn_ga,
      g_wa_bapi_mvke_ga   TYPE bapi_mvke_ga,
      g_wa_bapi_mlgt_ga   TYPE bapi_mlgt_ga,
      g_wa_bapi_mfhm_ga   TYPE bapi_mfhm_ga,
      g_wa_bapi_myms_ga   TYPE bapi_myms_ga,
      g_wa_bapi_makt_ga   TYPE bapi_makt_ga,
      g_wa_bapi_marm_ga   TYPE bapi_marm_ga,
      g_wa_bapi_mean_ga   TYPE bapi_mean_ga,
      g_wa_bapi_mltx_ga   TYPE bapi_mltx_ga,
      g_wa_bapi_mlan_ga   TYPE bapi_mlan_ga,
      g_wa_bapireturn     TYPE bapireturn,
      g_wa_bapimathead    TYPE bapimathead,
      g_wa_bapi_mara      TYPE bapi_mara,
      g_wa_bapi_marc      TYPE bapi_marc,
      g_wa_bapi_mpop      TYPE bapi_mpop,
      g_wa_bapi_mpgd      TYPE bapi_mpgd,
      g_wa_bapi_mbew      TYPE bapi_mbew,
      g_wa_bapi_mlgn      TYPE bapi_mlgn,
      g_wa_bapi_mvke      TYPE bapi_mvke,
      g_wa_bapi_mlgt      TYPE bapi_mlgt,
      g_wa_bapi_marax     TYPE bapi_marax,
      g_wa_bapi_marcx     TYPE bapi_marcx,
      g_wa_bapi_mpopx     TYPE bapi_mpopx,
      g_wa_bapi_mpgdx     TYPE bapi_mpgdx,
      g_wa_bapi_mbewx     TYPE bapi_mbewx,
      g_wa_bapi_mlgnx     TYPE bapi_mlgnx,
      g_wa_bapi_mvkex     TYPE bapi_mvkex,
      g_wa_bapi_mlgtx     TYPE bapi_mlgtx,
      g_wa_bapi_makt      TYPE bapi_makt,
      g_wa_bapi_marm      TYPE bapi_marm,
      g_wa_bapi_mean      TYPE bapi_mean,
      g_wa_bapi_mltx      TYPE bapi_mltx,
      g_wa_bapi_mlan      TYPE bapi_mlan,
      g_wa_bapireturn1    TYPE bapiret2,
      g_wa_return         TYPE bapiret2,
      g_wa_matextended    TYPE t_result,
      g_wa_matresult      TYPE t_result,
      g_wa_plantresult    TYPE t_result,
      g_wa_superbom       TYPE t_superbom.

*----------------------------------------------------------------------*
*      VARIABLES DECLARATION                                           *
*----------------------------------------------------------------------*

DATA: g_v_proc_type       TYPE beskz, " Procurement Type
      g_v_spl_proc_code   TYPE sobsl, " Special Procurement Code
      g_v_prod_time(3)    TYPE c,     " In-house Prod Time
      g_v_deliv_time(3)   TYPE c,     " Planned Delivery Time
      g_v_repln_time(3)   TYPE c,     " Total replenishment lead time
      g_v_gr_proc_time(3) TYPE c.     " GR Processing Time

*----------------------------------------------------------------------*
*      CONSTANTS                                                       *
*----------------------------------------------------------------------*
CONSTANTS: c_x       VALUE 'X',
           c_k       VALUE 'K',
           c_v       VALUE 'V',
           c_e       VALUE 'E',
           c_d       VALUE 'D',
           c_p       VALUE 'P',
           c_a       VALUE 'A',
           c_f       VALUE 'F',
           c_l       VALUE 'L',
           c_s       VALUE 'S',
           c_q       VALUE 'Q',
           c_b       VALUE 'B',
           c_g       VALUE 'G',
           c_gc(2)   VALUE 'GC',
           c_roh(3)  VALUE 'ROH',
           c_dien(4) VALUE 'DIEN',
           c_fert(4) VALUE 'FERT',
           c_halb(4) VALUE 'HALB',
           c_verp(4) VALUE 'VERP',
           c_nlag(4) VALUE 'NLAG',
           c_unbw(4) VALUE 'UNBW',
           c_6090(4) VALUE '6090',
           c_6140(4) VALUE '6140',
           c_6010(4) VALUE '6010',
           c_40(2)   VALUE  40,
           c_50(2)   VALUE  50,
           c_80(2)   VALUE  80,
           c_25(2)   VALUE  25,
           c_y5(2)   VALUE  'Y5',
           c_fm(7)   VALUE 'FAILURE'.

*----------------------------------------------------------------------*
* SELECTION-SCREEN DEFINITION                                          *
*----------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

* Range of materials to be extended
SELECT-OPTIONS: s_matnr FOR g_wa_marc-matnr OBLIGATORY,

* Range of Target plants to which the material should be extended.
                s_target FOR g_wa_marc-werks OBLIGATORY.

* Source plant form which material details are extracted
PARAMETERS: p_source TYPE werks_d OBLIGATORY,

* Check box to extend Class II materials
            p_class2 AS CHECKBOX,

* Check box to extend Super Bom and GC Parts
            p_super AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK b1.

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN                                                  *
*----------------------------------------------------------------------*

AT SELECTION-SCREEN.


* Validate the Target Plant Range entered.
  PERFORM validate_target_plants.

* Validate the source plant and material range.
  PERFORM validate_material_range.

*----------------------------------------------------------------------*
* START-OF-SELECTION                                                   *
*----------------------------------------------------------------------*

START-OF-SELECTION.

*Refresh corresponding variables
  PERFORM refresh_data_variables.

*Get final target plants.
  PERFORM get_final_target_plants.

*Get materials and the corresponding plants to which it has to be
*extended
  PERFORM get_final_materials_plants.

* Get all the data for the import parameters of bapi_material_get_all.
  PERFORM get_data.

  IF NOT g_it_marc[] IS INITIAL.
    LOOP AT g_it_marc INTO g_wa_marc.
* Get all the data for the materials given in the selection screen.
      PERFORM bapi_material_get_all.

      IF g_wa_matresult-flag = c_fm.
        CONTINUE.
      ELSE.
* Extended the data to the plants given in the selection screen.
        PERFORM bapi_material_savedata.
      ENDIF.
    ENDLOOP.
  ELSE.
    MESSAGE e000 WITH 'MATERIALS ALREADY EXTENDED TO TARGET PLANT'.
  ENDIF.

*----------------------------------------------------------------------*
* END-OF-SELECTION                                                   *
*----------------------------------------------------------------------*

END-OF-SELECTION.

* Display materials already extended.
  PERFORM disp_mat_already_extended.

*Display materials for which the data could not be fetched.
  PERFORM disp_mat_not_fetched.

*Display materials failed to extend to plant.
  PERFORM disp_mat_fail_ext_plant.

*----------------------------------------------------------------------*
* TOP-OF-PAGE                                                          *
*----------------------------------------------------------------------*
TOP-OF-PAGE.
* To display page header
  PERFORM page_header.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VALIDATE_TARGET_PLANTS
*&amp;amp;---------------------------------------------------------------------*
*       Form to validate the target plants specified in the range on
*       the selection screen and get all the accessible plants.
*       If none of the plants specified is an Access plant, an error
*       message is displayed.
*----------------------------------------------------------------------*
FORM validate_target_plants .
*   Check if each of the plants is an Access plant.
  SELECT werks
         pur_group
         prod_time
         deliv_time
         gr_proc_time
         sched_margin
         repln_time
    FROM zmmdata
    INTO TABLE g_it_plants
   WHERE werks IN s_target
      OR werks EQ p_source.

  IF sy-subrc EQ 0.
    SORT g_it_plants BY werks.
    CLEAR g_wa_plants.
    READ TABLE g_it_plants INTO g_wa_plants
                       WITH KEY werks = p_source.
    IF sy-subrc = 0.
      DELETE g_it_plants INDEX sy-tabix.
    ELSE.
      MESSAGE e001.
    ENDIF.
  ELSE.
    MESSAGE e005.
  ENDIF.


ENDFORM.                    " validate_target_plants
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VALIDATE_MATERIAL_RANGE
*&amp;amp;---------------------------------------------------------------------*
*       Form to validate source plant and the material rage given in the
*       selection screen and get all the materials of the source plant
*       and the target plants.
*       If there are no materials of the source plant to be extended an
*       error message is displayed.
*----------------------------------------------------------------------*
FORM validate_material_range .

  DATA: BEGIN OF l_r_plants OCCURS 0,
          sign(1),
          option(2),
          low TYPE werks_d,
          high TYPE werks_d,
        END OF l_r_plants.

  CLEAR: g_wa_plants.

*Creating rage of plants to get the material validity

  LOOP AT g_it_plants INTO g_wa_plants.
    AT NEW werks.
      l_r_plants-sign = 'I'.
      l_r_plants-option = 'EQ'.
      l_r_plants-low = g_wa_plants-werks.
      APPEND l_r_plants.
      CLEAR l_r_plants.
    ENDAT.
  ENDLOOP.

*Include source plant also
  l_r_plants-sign = 'I'.
  l_r_plants-option = 'EQ'.
  l_r_plants-low = p_source.
  APPEND l_r_plants.

  SELECT werks
         matnr
         beskz
         sobsl
         fhori
    FROM marc
    INTO TABLE g_it_marc1
   WHERE matnr IN s_matnr
     AND werks IN l_r_plants.
* If the output table is initial an error message is displayed
  IF sy-subrc NE 0.
    MESSAGE e002.
  ELSE.
    SORT g_it_marc1 BY werks matnr.
    CLEAR g_wa_marc1.
    READ TABLE g_it_marc1 INTO g_wa_marc1 WITH KEY werks = p_source.
* If the output table doesn't contain materials of source plant an
* error message is displayed.
    IF sy-subrc NE 0.
      MESSAGE e002.
    ENDIF.
  ENDIF.

ENDFORM.                    " validate_material_range
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_final_target_plants
*&amp;amp;---------------------------------------------------------------------*
*       To get final target plants
*----------------------------------------------------------------------*
FORM get_final_target_plants .

  DATA: l_wa_plants TYPE t_target_plants.

  LOOP AT g_it_plants INTO l_wa_plants.
    AT NEW werks.
      READ TABLE g_it_plants INTO g_wa_plants
                         WITH KEY werks =  l_wa_plants-werks.
      APPEND g_wa_plants TO g_it_target_plants.
      CLEAR l_wa_plants.
    ENDAT.
  ENDLOOP.

  SORT g_it_target_plants BY werks.

ENDFORM.                    " get_final_target_plants

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_final_materials_plants
*&amp;amp;---------------------------------------------------------------------*
*       Form to get the materials and the corresponding plants to which
*       it has to be extended.
*----------------------------------------------------------------------*
FORM get_final_materials_plants.

  CLEAR: g_wa_marc1,
         g_wa_plants.

*Validating plants against source plants

*Loop at all the materials with source plant and append to
*another table
  LOOP AT g_it_marc1 INTO g_wa_marc1 WHERE werks = p_source.
    MOVE g_wa_marc1 TO g_wa_source_mat.
    APPEND g_wa_source_mat TO g_it_source_mat.
    CLEAR g_wa_source_mat.
  ENDLOOP.

*Loop through all target plants
  LOOP AT g_it_target_plants INTO g_wa_plants.

*Loop at all the materials with source plant
    LOOP AT g_it_marc1 INTO g_wa_marc1 WHERE werks = p_source.

*Check whether material exist for the target plant or not
      READ TABLE g_it_marc1
            INTO g_wa_marc1
        WITH KEY matnr = g_wa_marc1-matnr
                 werks = g_wa_plants-werks.

      IF sy-subrc = 0.
*If yes then move that material to another table.
        MOVE g_wa_marc1-matnr   TO g_wa_matextended-material.
        MOVE g_wa_plants-werks  TO g_wa_matextended-plant.
        MOVE c_fm               TO g_wa_matextended-flag.
        MOVE 'MATERIALS ALREADY EXTENDED'(002) TO
             g_wa_matextended-errormessage.
        APPEND g_wa_matextended TO g_it_matextended.
        CLEAR g_wa_matextended.
      ELSE.
*If no then append that material to extention list
        MOVE g_wa_marc1-matnr  TO g_wa_marc-matnr.
        MOVE g_wa_plants-werks TO g_wa_marc-werks.
        MOVE g_wa_marc1-beskz  TO g_wa_marc-beskz.
        MOVE g_wa_marc1-sobsl  TO g_wa_marc-sobsl.
        APPEND g_wa_marc TO g_it_marc.
        CLEAR g_wa_marc.
      ENDIF.
    ENDLOOP.

  ENDLOOP.

ENDFORM.                    " get_final_materials_plants
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_data
*&amp;amp;---------------------------------------------------------------------*
*       Form to get the data for the import parameters of
*       bapi_material_get_all.
*----------------------------------------------------------------------*
FORM get_data .

* Super bom is checked
  IF p_super = 'X'.
* To get Material data from Material master and check whether
* Material is configurable.
    SELECT matnr   "Material
           kzkfg   "Configurable
           FROM mara
       INTO TABLE g_it_superbom
       FOR ALL ENTRIES IN g_it_source_mat
       WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
      SORT g_it_superbom.
    ENDIF.
  ENDIF.

* To fetch the Company Code based on Source Plant.
  SELECT SINGLE bukrs
    FROM t001k
    INTO g_wa_comp_code
   WHERE bwkey = p_source.

  IF sy-subrc = 0.
  ENDIF.

*To fetch the Valuation Area and Valuation Type based on Material
*Number.
  SELECT matnr
         bwkey
         bwtar
    FROM mbew
    INTO TABLE g_it_mbew
     FOR ALL ENTRIES IN g_it_source_mat
   WHERE matnr = g_it_source_mat-matnr
     AND bwkey = p_source.

  IF sy-subrc = 0.
  ENDIF.

*To fetch the Sales Organization and Distribution Channel based on
*Source Plant.
  SELECT SINGLE
         vkorg
         vtweg
    FROM t001w
    INTO (g_wa_salesorg,
          g_wa_distr_chan)
    WHERE werks = p_source.

  IF sy-subrc = 0.
  ENDIF.

  IF g_it_mbew IS NOT INITIAL.

*To fetch the Wearhouse Numbers for all the material in the table
*G_it_mbew.
    SELECT matnr
           lgnum
      FROM mlgn
      INTO TABLE g_it_mlgn
       FOR ALL ENTRIES IN g_it_source_mat
     WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
    ENDIF.

*To fetch the LIFO valuation level for all the material in the table
*G_it_mbew.
    SELECT mykey
           matnr
      FROM myms
      INTO TABLE g_it_myms
       FOR ALL ENTRIES IN g_it_source_mat
     WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
    ENDIF.

  ENDIF.

  IF g_it_mlgn IS NOT INITIAL.
*To fetch the Storage Type for all the material in the table G_it_mlgn.
    SELECT matnr
           lgnum
           lgtyp
      FROM mlgt
      INTO TABLE g_it_mlgt
       FOR ALL ENTRIES IN g_it_mlgn
     WHERE matnr = g_it_mlgn-matnr
       AND lgnum = g_it_mlgn-lgnum.

    IF sy-subrc = 0.
    ENDIF.

  ENDIF.

ENDFORM.                    " get_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form  BAPI_MATERIAL_GET_ALL
*&amp;amp;---------------------------------------------------------------------*
*Form to get the data from database tables MARA, MARC, MPOP, MPGD,MBEW,
*  MLGN, MVKE, MLGT for the material and the source plant.
*----------------------------------------------------------------------*
FORM bapi_material_get_all.

  DATA:
   l_v_material        TYPE bapi_mara_ga-material,
   l_v_comp_code       TYPE bapi0002_1-comp_code,
   l_v_val_area        TYPE bapi_mbew_ga-val_area,
   l_v_val_type        TYPE bapi_mbew_ga-val_type,
   l_v_plant           TYPE bapi_marc_ga-plant,
   l_v_salesorg        TYPE bapi_mvke_ga-sales_org,
   l_v_distr_chan      TYPE bapi_mvke_ga-distr_chan,
   l_v_whsenumber      TYPE bapi_mlgn_ga-whse_no,
   l_v_stge_type       TYPE bapi_mlgt_ga-stge_type,
   l_v_lifo_valu_level TYPE bapi_myms_ga-lifo_valuation_level.

  CLEAR : g_wa_mbew,
          g_wa_mlgn,
          g_wa_mlgt,
          g_wa_myms,
          l_v_val_area,
          l_v_val_type,
          l_v_whsenumber,
          l_v_stge_type,
          l_v_lifo_valu_level.

  MOVE g_wa_marc-matnr       TO l_v_material.
  MOVE p_source              TO l_v_plant.
  MOVE g_wa_comp_code        TO l_v_comp_code.
  MOVE g_wa_salesorg         TO l_v_salesorg.
  MOVE g_wa_distr_chan       TO l_v_distr_chan.

  READ TABLE g_it_mbew INTO g_wa_mbew WITH KEY matnr = g_wa_marc-matnr.

  IF sy-subrc = 0.
    MOVE g_wa_mbew-bwkey TO l_v_val_area.
    MOVE g_wa_mbew-bwtar TO l_v_val_type.
  ENDIF.

  READ TABLE g_it_mlgn INTO g_wa_mlgn WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
    MOVE g_wa_mlgn-lgnum TO l_v_whsenumber.
  ENDIF.

  READ TABLE g_it_mlgt INTO g_wa_mlgt
                   WITH KEY matnr = g_wa_marc-matnr
                            lgnum = l_v_whsenumber.
  IF sy-subrc = 0.
    MOVE g_wa_mlgt-lgtyp TO l_v_stge_type.
  ENDIF.

  READ TABLE g_it_myms INTO g_wa_myms WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
    MOVE g_wa_myms-mykey TO l_v_lifo_valu_level.
  ENDIF.

  CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
    EXPORTING
      material             = l_v_material
      comp_code            = l_v_comp_code
      val_area             = l_v_val_area
      val_type             = l_v_val_type
      plant                = l_v_plant
      salesorg             = l_v_salesorg
      distr_chan           = l_v_distr_chan
      whsenumber           = l_v_whsenumber
      stge_type            = l_v_stge_type
      lifo_valuation_level = l_v_lifo_valu_level
    IMPORTING
      clientdata           = g_wa_bapi_mara_ga
      plantdata            = g_wa_bapi_marc_ga
      forecastparameters   = g_wa_bapi_mpop_ga
      planningdata         = g_wa_bapi_mpgd_ga
      valuationdata        = g_wa_bapi_mbew_ga
      warehousenumberdata  = g_wa_bapi_mlgn_ga
      salesdata            = g_wa_bapi_mvke_ga
      storagetypedata      = g_wa_bapi_mlgt_ga
      prtdata              = g_wa_bapi_mfhm_ga
      lifovaluationdata    = g_wa_bapi_myms_ga
    TABLES
      materialdescription  = g_it_bapi_makt_ga
      unitsofmeasure       = g_it_bapi_marm_ga
      internationalartnos  = g_it_bapi_mean_ga
      materiallongtext     = g_it_bapi_mltx_ga
      taxclassifications   = g_it_bapi_mlan_ga
      return               = g_it_bapireturn.

  LOOP AT g_it_bapireturn INTO g_wa_bapireturn.
    IF g_wa_bapireturn-type = 'A' OR g_wa_bapireturn-type = 'E'.
      MOVE g_wa_marc-matnr         TO g_wa_matresult-material.
      MOVE g_wa_bapireturn-message TO g_wa_matresult-errormessage.
      MOVE c_fm                    TO g_wa_matresult-flag.
      APPEND g_wa_matresult TO g_it_matresult.
      CLEAR g_wa_matresult.
    ENDIF.
  ENDLOOP.

ENDFORM.                    " BAPI_MATERIAL_GET_ALL
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BAPI_MATERIAL_SAVEDATA
*&amp;amp;---------------------------------------------------------------------*
*       Form to extend the material data from the souce plant to target
*       plant
*----------------------------------------------------------------------*
FORM bapi_material_savedata .

* To prepare the exporting parameter G_wa_bapimathead
  PERFORM prepare_marhead_data.

* To move data from importing parameters to exporitng parameters
  PERFORM move_getall_to_savedata.

* To prepare the X-structures
  PERFORM prepare_x_structures.

*To prepare main structures i.e to change the data according to the the
*target plant
  PERFORM prepare_main_structures.

  CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
      headdata              = g_wa_bapimathead
      clientdata            = g_wa_bapi_mara
      clientdatax           = g_wa_bapi_marax
      plantdata             = g_wa_bapi_marc
      plantdatax            = g_wa_bapi_marcx
      forecastparameters    = g_wa_bapi_mpop
      forecastparametersx   = g_wa_bapi_mpopx
      planningdata          = g_wa_bapi_mpgd
      planningdatax         = g_wa_bapi_mpgdx
      valuationdata         = g_wa_bapi_mbew
      valuationdatax        = g_wa_bapi_mbewx
      warehousenumberdata   = g_wa_bapi_mlgn
      warehousenumberdatax  = g_wa_bapi_mlgnx
      salesdata             = g_wa_bapi_mvke
      salesdatax            = g_wa_bapi_mvkex
      storagetypedata       = g_wa_bapi_mlgt
      storagetypedatax      = g_wa_bapi_mlgtx
   IMPORTING
      return                = g_wa_bapireturn1
   TABLES
      materialdescription   = g_it_bapi_makt
      unitsofmeasure        = g_it_bapi_marm
      internationalartnos   = g_it_bapi_mean
      materiallongtext      = g_it_bapi_mltx
      taxclassifications    = g_it_bapi_mlan
      returnmessages        = g_it_return.

  LOOP AT  g_it_return INTO g_wa_return WHERE ( type CA 'AEX' ).
    " abort, error, dump
    EXIT.
  ENDLOOP.

  IF  sy-subrc = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.  " synchronous
  ENDIF.

  IF g_wa_bapireturn1-type = 'A' OR g_wa_bapireturn1-type = 'E'.
    MOVE g_wa_marc-matnr          TO g_wa_plantresult-material.
    MOVE g_wa_plants-werks        TO g_wa_plantresult-plant.
    MOVE g_wa_bapireturn1-message TO g_wa_plantresult-errormessage.
    MOVE 'FAILURE'(004)           TO g_wa_plantresult-flag.
    APPEND g_wa_plantresult       TO g_it_plantresult.
  ELSE.
    MOVE g_wa_marc-matnr    TO g_wa_plantresult-material.
    MOVE g_wa_plants-werks  TO g_wa_plantresult-plant.
    MOVE 'SUCCESS'(003)     TO g_wa_plantresult-flag.
    APPEND g_wa_plantresult TO g_it_plantresult.
  ENDIF.


ENDFORM.                    " BAPI_MATERIAL_SAVEDATA
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_marhead_data
*&amp;amp;---------------------------------------------------------------------*
*       Form to prepare the exporting parameter G_wa_bapimathead
*----------------------------------------------------------------------*
FORM prepare_marhead_data .

  g_wa_bapimathead-material   = g_wa_bapi_mara_ga-material.
  g_wa_bapimathead-ind_sector = g_wa_bapi_mara_ga-ind_sector.
  g_wa_bapimathead-matl_type  = g_wa_bapi_mara_ga-matl_type.

  IF g_wa_bapi_marc_ga-maint_stat CA c_k.
    g_wa_bapimathead-basic_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_v.
    g_wa_bapimathead-sales_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_e.
    g_wa_bapimathead-purchase_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_d.
    g_wa_bapimathead-mrp_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_p.
    g_wa_bapimathead-forecast_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_a.
    g_wa_bapimathead-work_sched_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_f.
    g_wa_bapimathead-prt_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_l.
    g_wa_bapimathead-storage_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_s.
    g_wa_bapimathead-warehouse_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_q.
    g_wa_bapimathead-quality_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_b.
    g_wa_bapimathead-account_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_g.
    g_wa_bapimathead-cost_view = c_x.
  ENDIF.

ENDFORM.                    " prepare_marhead_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form  move_getall_to_savedata
*&amp;amp;---------------------------------------------------------------------*
*Form to move data from the importing parameter of BAPI_MATERIAL_GET_ALL
* to exporting parameters of BAPI_MATERIAL_SAVEDATA
*----------------------------------------------------------------------*
FORM move_getall_to_savedata .

  MOVE-CORRESPONDING: g_wa_bapi_mara_ga TO g_wa_bapi_mara,
                      g_wa_bapi_marc_ga TO g_wa_bapi_marc,
                      g_wa_bapi_mpop_ga TO g_wa_bapi_mpop.
  MOVE                g_wa_bapi_mpgd_ga TO g_wa_bapi_mpgd.
  MOVE-CORRESPONDING  g_wa_bapi_mbew_ga TO g_wa_bapi_mbew.
  MOVE:               g_wa_bapi_mlgn_ga TO g_wa_bapi_mlgn,
                      g_wa_bapi_mvke_ga TO g_wa_bapi_mvke,
                      g_wa_bapi_mlgt_ga TO g_wa_bapi_mlgt.

  LOOP AT g_it_bapi_makt_ga INTO g_wa_bapi_makt_ga.
    MOVE-CORRESPONDING g_wa_bapi_makt_ga TO g_wa_bapi_makt.
    APPEND g_wa_bapi_makt TO g_it_bapi_makt.
    CLEAR g_wa_bapi_makt.
  ENDLOOP.

  LOOP AT g_it_bapi_marm_ga INTO g_wa_bapi_marm_ga.
    MOVE-CORRESPONDING g_wa_bapi_marm_ga TO g_wa_bapi_marm.
    APPEND g_wa_bapi_marm TO g_it_bapi_marm.
    CLEAR g_wa_bapi_marm.
  ENDLOOP.

  LOOP AT g_it_bapi_mean_ga INTO g_wa_bapi_mean_ga.
    MOVE-CORRESPONDING g_wa_bapi_mean_ga TO g_wa_bapi_mean.
    APPEND g_wa_bapi_mean TO g_it_bapi_mean.
    CLEAR g_wa_bapi_mean.
  ENDLOOP.

  LOOP AT g_it_bapi_mltx_ga INTO g_wa_bapi_mltx_ga.
    MOVE-CORRESPONDING g_wa_bapi_mltx_ga TO g_wa_bapi_mltx.
    APPEND g_wa_bapi_mltx TO g_it_bapi_mltx.
    CLEAR g_wa_bapi_mltx.
  ENDLOOP.

  LOOP AT g_it_bapi_mlan_ga INTO g_wa_bapi_mlan_ga.
    MOVE-CORRESPONDING g_wa_bapi_mlan_ga TO g_wa_bapi_mlan.
    APPEND g_wa_bapi_mlan TO g_it_bapi_mlan.
    CLEAR g_wa_bapi_mlan.
  ENDLOOP.

ENDFORM.                    " move_getall_to_savedata
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_x_structures
*&amp;amp;---------------------------------------------------------------------*
*       Form to prepare the X-sctrucures based on the content of their
*       corresponding strucures.
*----------------------------------------------------------------------*

FORM prepare_x_structures .

  DATA: l_it_dfies_tab TYPE TABLE OF dfies,
        l_wa_dfies_tab TYPE dfies.
  DATA: l_v_cntr TYPE i,
        l_v_tabname TYPE ddobjname,
        l_v_internal_tabnam(30),
        l_v_internal_tabnamx(30),
        l_v_tmp_str(50),
        l_v_tmp_strx(50).

  FIELD-SYMBOLS: &amp;lt;fs1&amp;gt; TYPE ANY,
                 &amp;lt;fs2&amp;gt; TYPE ANY.
  l_v_cntr = 0.

  DO 9 TIMES.

    l_v_cntr = l_v_cntr + 1.

    CASE l_v_cntr.
      WHEN 1.
        l_v_tabname          = 'BAPI_MARA'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARA'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARAX'.
      WHEN 2.
        l_v_tabname          = 'BAPI_MARC'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARC'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARCX'.
      WHEN 3.
        l_v_tabname          = 'BAPI_MPOP'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MPOP'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MPOPX'.
      WHEN 4.
        l_v_tabname          = 'BAPI_MPGD'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MPGD'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MPGDX'.
      WHEN 5.
        l_v_tabname          = 'BAPI_MARD'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARD'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARDX'.
      WHEN 6.
        l_v_tabname          = 'BAPI_MBEW'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MBEW'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MBEWX'.
      WHEN 7.
        l_v_tabname          = 'BAPI_MLGN'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MLGN'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MLGNX'.
      WHEN 8.
        l_v_tabname          = 'BAPI_MVKE'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MVKE'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MVKEX'.
      WHEN 9.
        l_v_tabname          = 'BAPI_MLGT'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MLGT'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MLGTX'.
    ENDCASE.

    CALL FUNCTION 'DDIF_FIELDINFO_GET'
     EXPORTING
       tabname              = l_v_tabname
       langu                = sy-langu
     TABLES
       dfies_tab            = l_it_dfies_tab
     EXCEPTIONS
       not_found            = 1
       internal_error       = 2
       OTHERS               = 3.

    IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    LOOP AT l_it_dfies_tab INTO l_wa_dfies_tab.
      CONCATENATE l_v_internal_tabnam '-' l_wa_dfies_tab-fieldname INTO
      l_v_tmp_str.
      ASSIGN (l_v_tmp_str) TO &amp;lt;fs1&amp;gt;.

      IF NOT &amp;lt;fs1&amp;gt; IS INITIAL.
        CONCATENATE l_v_internal_tabnamx '-' l_wa_dfies_tab-fieldname
        INTO
        l_v_tmp_strx.
        ASSIGN (l_v_tmp_strx) TO &amp;lt;fs2&amp;gt;.
        MOVE c_x TO &amp;lt;fs2&amp;gt;.
      ENDIF.
    ENDLOOP.

  ENDDO.
  g_wa_bapi_marcx-replentime  = c_x.
  g_wa_bapi_mbewx-plndprdate1 = c_x.
  g_wa_bapi_marcx-mrp_ctrler  = c_x.
  g_wa_bapi_marcx-pur_group   = c_x.
  g_wa_bapi_marcx-proc_type   = c_x.
  g_wa_bapi_marcx-spproctype  = c_x.
  g_wa_bapi_marcx-sm_key      = c_x.
  g_wa_bapi_marcx-inhseprodt  = c_x.
  g_wa_bapi_marcx-plnd_delry  = c_x.
  g_wa_bapi_marcx-gr_pr_time  = c_x.
  g_wa_bapi_marcx-plan_strgp  = c_x.
  g_wa_bapi_marcx-specprocty  = c_x.

ENDFORM.                    " prepare_x_structures
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_main_structures
*&amp;amp;---------------------------------------------------------------------*
* To prepare the main structure i.e. to change the data from source
* plant to target plant and based on the check box populate table with
* data for Super bom and GC Part, Class 1 Materials,Class 2 Materials.
*----------------------------------------------------------------------*
FORM
prepare_main_structures .

  DATA: l_v_profit_ctr(10).

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = g_wa_marc-werks
    IMPORTING
      output = l_v_profit_ctr.


  MOVE g_wa_marc-werks           TO g_wa_bapi_marc-plant.
  MOVE l_v_profit_ctr            TO g_wa_bapi_marc-profit_ctr.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpop-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpgd-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mbew-val_area.
  MOVE g_wa_marc-werks           TO g_wa_bapi_marcx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpopx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpgdx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mbewx-val_area.
  MOVE g_wa_bapi_mbew-val_type   TO g_wa_bapi_mbewx-val_type.
  MOVE g_wa_bapi_mlgn-whse_no    TO g_wa_bapi_mlgnx-whse_no.
  MOVE g_wa_bapi_mvke-sales_org  TO g_wa_bapi_mvkex-sales_org.
  MOVE g_wa_bapi_mvke-distr_chan TO g_wa_bapi_mvkex-distr_chan.
  MOVE g_wa_bapi_mlgt-whse_no    TO g_wa_bapi_mlgtx-whse_no.
  MOVE g_wa_bapi_mlgt-stge_type  TO g_wa_bapi_mlgtx-stge_type.

* For Plant 6090, the 'CC Phy Inv Indicator' should be set to blank
  IF g_wa_marc-werks EQ c_6090.
    g_wa_bapi_marc-cc_ph_inv = space.
  ENDIF.
  g_wa_bapi_marc-production_scheduler = space.

  IF p_class2 NE 'X'.
    IF ( g_wa_marc-beskz EQ 'E' AND g_wa_marc-sobsl EQ space ) OR
       ( g_wa_marc-beskz EQ 'X' AND g_wa_marc-sobsl EQ space ) OR
       ( g_wa_marc-beskz EQ 'F' AND g_wa_marc-sobsl EQ '30'  ) OR
       ( g_wa_marc-beskz EQ 'F' AND g_wa_marc-sobsl EQ space ).
      g_v_proc_type     = 'F'.
      g_v_spl_proc_code = c_40.
    ELSEIF g_wa_marc-beskz EQ 'X' AND g_wa_marc-sobsl EQ c_50.
      g_v_proc_type     = 'X'.
      g_v_spl_proc_code = c_50.
    ELSE.
      g_v_proc_type     = g_wa_marc-beskz.
      g_v_spl_proc_code = g_wa_marc-sobsl.
    ENDIF.
  ENDIF.

  IF p_class2 NE 'X'.
    IF p_super = 'X'.
* Populate table with data for Super bom and GC Part.
      PERFORM populate_screens_super.
    ELSE.
* Populate table with data for Class 1 Materials
      PERFORM populate_screens_class1.
    ENDIF.
  ELSE.
* Populate table with data for Class 2 Materials
    PERFORM populate_screens_class2.
  ENDIF.                           " F_CLASS2 ne 'X'

ENDFORM.                    " prepare_main_structures
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  refresh_data_variables
*&amp;amp;---------------------------------------------------------------------*
*      Refresh data variables
*----------------------------------------------------------------------*
FORM refresh_data_variables .

*All relevant internal tables
  REFRESH: g_it_bapi_makt_ga,
           g_it_bapi_marm_ga,
           g_it_bapi_mean_ga,
           g_it_bapi_mltx_ga,
           g_it_bapi_mlan_ga,
           g_it_bapireturn,
           g_it_return,
           g_it_bapi_makt,
           g_it_bapi_marm,
           g_it_bapi_mean,
           g_it_bapi_mltx,
           g_it_bapi_mlan.

*All relevant work areas
  CLEAR:   g_wa_bapi_mara_ga,
           g_wa_bapi_marc_ga,
           g_wa_bapi_mpop_ga,
           g_wa_bapi_mpgd_ga,
           g_wa_bapi_mbew_ga,
           g_wa_bapi_mlgn_ga,
           g_wa_bapi_mvke_ga,
           g_wa_bapi_mlgt_ga,
           g_wa_bapi_mfhm_ga,
           g_wa_bapi_myms_ga,
           g_wa_bapi_makt_ga,
           g_wa_bapi_marm_ga,
           g_wa_bapi_mean_ga,
           g_wa_bapi_mltx_ga,
           g_wa_bapi_mlan_ga,
           g_wa_bapireturn,
           g_wa_bapimathead,
           g_wa_bapi_mara,
           g_wa_bapi_marc,
           g_wa_bapi_mpop,
           g_wa_bapi_mpgd,
           g_wa_bapi_mbew,
           g_wa_bapi_mlgn,
           g_wa_bapi_mvke,
           g_wa_bapi_mlgt,
           g_wa_bapi_marax,
           g_wa_bapi_marcx,
           g_wa_bapi_mpopx,
           g_wa_bapi_mpgdx,
           g_wa_bapi_mbewx,
           g_wa_bapi_mlgnx,
           g_wa_bapi_mvkex,
           g_wa_bapi_mlgtx,
           g_wa_bapi_makt,
           g_wa_bapi_marm,
           g_wa_bapi_mean,
           g_wa_bapi_mltx,
           g_wa_bapi_mlan,
           g_wa_bapireturn1,
           g_wa_return.

ENDFORM.                    " refresh_data_variables
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_SUPER
*&amp;amp;---------------------------------------------------------------------*
*       To Extend Super Bom &amp;amp; GC parts from source plant to target
*       Plants.
*----------------------------------------------------------------------*
FORM populate_screens_super .

  DATA: l_v_superbom(1),   " Flag to indicate a Super Bom part
        l_v_gcpart(1).     " Flag to indicate a Gc part

  CLEAR g_wa_superbom.

  g_wa_bapi_marc-replentime  = g_v_repln_time.
  g_wa_bapi_mbew-plndprdate1 =  sy-datum.

* Check for super bom and GC material.
  READ TABLE g_it_superbom INTO g_wa_superbom
                       WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
* Set flag if material is GC Material
    IF g_wa_superbom-matnr+0(2) = c_gc.
      l_v_gcpart = 'X'.
    ENDIF.
* Set flag if Material is Super BOM (Configurable)
    IF g_wa_superbom-kzkfg = 'X'.
      l_v_superbom = 'X'.
    ENDIF.
  ENDIF.

* Determine the plant specific field values
  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.

* If Material is Super Bom OR GC part
    IF l_v_superbom = 'X' OR l_v_gcpart = 'X'.
      g_wa_bapi_marc-pur_group = g_wa_plants-pur_group.
    ENDIF.
  ENDIF.

  IF g_wa_marc-werks  EQ c_6140.
* For Plant 6140, it should always be 'F' and ' ' .
    g_wa_bapi_marc-proc_type  = 'F'.
    g_wa_bapi_marc-spproctype =  space.

* Populate the Sched Margin Key since it's not copied from ref plant
* Select Sched Margin key from database for 6010 and copy to 6140
    READ TABLE g_it_source_mat INTO g_wa_source_mat
                           WITH KEY matnr = g_wa_marc-matnr.
    IF sy-subrc = 0.
      g_wa_bapi_marc-sm_key = g_wa_source_mat-fhori.
    ENDIF.
  ELSE.
    IF  g_wa_bapi_mara-sh_mat_typ NE c_roh
    AND g_wa_bapi_mara-sh_mat_typ NE c_dien.
* Key rules for branches other than 6010 and 6140.
      IF  g_wa_marc-werks NE c_6010
      AND g_wa_marc-werks NE c_6140.
        g_wa_bapi_marc-proc_type = 'F'.
      ELSE.
        g_wa_bapi_marc-proc_type = g_v_proc_type.
      ENDIF.
    ENDIF.
    IF g_wa_bapi_mara-sh_mat_typ NE c_dien.
* Key rules for branches other than 6010 and 6140.
      IF  g_wa_marc-werks NE c_6010
      AND g_wa_marc-werks NE c_6140.
        g_wa_bapi_marc-spproctype  =  c_40.
      ELSE.
        g_wa_bapi_marc-spproctype  = g_v_spl_proc_code.
      ENDIF.
    ENDIF.

    IF g_wa_bapi_mara-sh_mat_typ = c_fert
    OR g_wa_bapi_mara-sh_mat_typ = c_halb
    OR g_wa_bapi_mara-sh_mat_typ = c_verp
    OR g_wa_bapi_mara-sh_mat_typ = c_nlag
    OR g_wa_bapi_mara-sh_mat_typ = c_unbw.
      g_wa_bapi_marc-inhseprodt = g_v_prod_time.
    ENDIF.
    g_wa_bapi_marc-plnd_delry = g_v_deliv_time.
    g_wa_bapi_marc-gr_pr_time = g_v_gr_proc_time.
    g_wa_bapi_marc-sm_key     = g_wa_plants-sched_margin.
  ENDIF.

  IF p_source = c_6010.
    g_wa_bapi_marc-sloc_exprc =  ' '.
  ENDIF.

* Target plant is 6140.
  IF g_wa_plants-werks  EQ c_6140.
    g_wa_bapi_marc-plan_strgp = c_y5.
  ENDIF.

* Key rules for branches other than 6010 and 6140.
  IF g_wa_plants-werks NE c_6010 AND
     g_wa_plants-werks NE c_6140.
    g_wa_bapi_marc-plan_strgp = c_25.
  ENDIF.


* Key rule for branch other than 6010.
  IF g_wa_plants-werks NE c_6010.
    g_wa_bapi_marc-specprocty = c_80.
  ENDIF.


ENDFORM.                    " populate_screens_super

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_CLASS1
*&amp;amp;---------------------------------------------------------------------*
*       Populate the BDC table with values for all the remaining
*       screens of MM01. Some of the screens require a different
*       set of values for Plant 6140, the Canadian plant
*----------------------------------------------------------------------*
FORM populate_screens_class1.

  g_wa_bapi_marc-replentime     = g_v_repln_time.
  g_wa_bapi_mbew-plndprdate1    =  sy-datum.

  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-pur_group  = g_wa_plants-pur_group.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.
  ENDIF.

  IF g_wa_marc-werks  EQ '6140'.
* For Plant 6140, it should always be 'F' and ' ' except when it is a
* phantom. For phantoms, it should be 'X' and '50'.
    IF g_v_proc_type  EQ 'X' AND g_v_spl_proc_code EQ '50'.
      g_wa_bapi_marc-proc_type  = 'X'.
      g_wa_bapi_marc-spproctype = '50'.
    ELSE.
      g_wa_bapi_marc-proc_type = 'F'.
      g_wa_bapi_marc-spproctype = space.
    ENDIF.

*   Populate the Sched Margin Key since it's not copied from ref plant
*   Select Sched Margin key from database for 6010 and copy to 6140
    READ TABLE g_it_source_mat INTO g_wa_source_mat
                           WITH KEY matnr = g_wa_marc-matnr.
    IF sy-subrc = 0.
      g_wa_bapi_marc-sm_key = g_wa_source_mat-fhori.
    ENDIF.
  ELSE.
    IF g_wa_bapi_mara-sh_mat_typ NE 'ROH' AND g_wa_bapi_mara-sh_mat_typ
    NE 'DIEN'.
      g_wa_bapi_marc-proc_type = g_v_proc_type.
    ENDIF.
    IF g_wa_bapi_mara-sh_mat_typ NE 'DIEN' AND p_class2 EQ space.
      g_wa_bapi_marc-spproctype  = g_v_spl_proc_code.
    ENDIF.
   IF g_wa_bapi_mara-sh_mat_typ = 'FERT' OR g_wa_bapi_mara-sh_mat_typ =
   'HALB'
   OR g_wa_bapi_mara-sh_mat_typ = 'VERP' OR g_wa_bapi_mara-sh_mat_typ =
   'NLAG'
   OR g_wa_bapi_mara-sh_mat_typ = 'UNBW'.
      g_wa_bapi_marc-inhseprodt = g_v_prod_time.
    ENDIF.
    g_wa_bapi_marc-plnd_delry = g_v_deliv_time.
    g_wa_bapi_marc-gr_pr_time = g_v_gr_proc_time.
    g_wa_bapi_marc-sm_key     = g_wa_plants-sched_margin.
  ENDIF.

  IF g_wa_marc-werks EQ '6140'.
    IF g_v_proc_type     EQ 'X' AND g_v_spl_proc_code EQ '50'.
      g_wa_bapi_marc-specprocty = space.
    ELSE.
      g_wa_bapi_marc-specprocty = '40'.
    ENDIF.
  ELSEIF p_class2 EQ 'X'.
    g_wa_bapi_marc-specprocty   = '40'.
  ENDIF.

ENDFORM.                               " POPULATE_SCREENS_CLASS1
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_CLASS2
*&amp;amp;---------------------------------------------------------------------*
*       This form populates the various screens required for MM01 for
*       class 2 materials. It is very similar to the Form POPULATE_
*       SCREENS_CLASS1.
*----------------------------------------------------------------------*
FORM populate_screens_class2.

* Determine the purchasing group for the plant
  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-pur_group  = g_wa_plants-pur_group.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.
  ENDIF.

  g_wa_bapi_marc-specprocty = '40'.

ENDFORM.                               " POPULATE_SCREENS_CLASS2
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  PAGE_HEADER
*&amp;amp;---------------------------------------------------------------------*
*        To Print page header and other details
*----------------------------------------------------------------------*
FORM page_header .

*--Page Header
  FORMAT COLOR 1.
  WRITE:/1 'Run Date:'(015), sy-datum,
        65 'Stanley Works'(016),
       130 'Page No:'(017), sy-pagno LEFT-JUSTIFIED, 255 ''.

  WRITE:/1 'Run Time:'(018), sy-uzeit,
        40 sy-title,
       130 sy-uname, 255 ''.
  WRITE:/1 'Source  :'(019), sy-sysid,
       130 sy-cprog, 255 ''.
  FORMAT COLOR OFF.
  ULINE AT /1(142).

ENDFORM.                    " PAGE_HEADER
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_already_extended
*&amp;amp;---------------------------------------------------------------------*
*       Display materials already extended.
*----------------------------------------------------------------------*
FORM disp_mat_already_extended .

  IF NOT g_it_matextended[] IS INITIAL.
    FORMAT COLOR 1 INTENSIFIED OFF.
    WRITE:/40 'LIST OF MATERIALS WHICH ARE ALREADY EXTENDED'(005),
                142 ''.
    FORMAT COLOR OFF.
    SKIP.

    ULINE AT /1(142).
    WRITE:/1 sy-vline,
          2 'MATERIAL'(006),
         21 sy-vline,
         22 'PLANT'(007),
         27 sy-vline,
         28 'FAILURE FLAG'(008),
         40 sy-vline,
         51 'ERROR MESSAGE'(009),
        142 sy-vline.
    ULINE AT /1(142).

    LOOP AT g_it_matextended INTO g_wa_matextended.
      WRITE:/1 sy-vline,
             2 g_wa_matextended-material,
            21 sy-vline,
            22 g_wa_matextended-plant,
            27 sy-vline,
            28 g_wa_matextended-flag,
            40 sy-vline,
            41 g_wa_matextended-errormessage,
           142 sy-vline.
    ENDLOOP.
    ULINE AT /1(142).

    NEW-PAGE.
  ENDIF.
ENDFORM.                    " disp_mat_already_extended
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_not_fetched
*&amp;amp;---------------------------------------------------------------------*
*       Display materials for which the data could not be fetched.
*----------------------------------------------------------------------*
FORM disp_mat_not_fetched .

  IF NOT g_it_matresult[] IS INITIAL.
    FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE:/40 'LIST OF MATERIALS FOR WHICH IT COUNLD NOT FETCH DATA'(012),
 142 ''.
    FORMAT COLOR OFF.
    SKIP.
    ULINE AT /1(142).
    FORMAT COLOR 4 INTENSIFIED OFF.
    WRITE:/1 sy-vline,
           2 'MATERIAL'(006),
          21 sy-vline,
          22 'FAILURE FLAG'(008),
          30 sy-vline,
          51 'ERROR MESSAGE'(009),
         142 sy-vline.
    FORMAT COLOR OFF.
    ULINE AT /1(142).

    LOOP AT g_it_matresult INTO g_wa_matresult.
      WRITE:/1 sy-vline,
             2 g_wa_matresult-material,
            21 sy-vline,
            22 g_wa_matresult-flag,
            30 sy-vline,
            31 g_wa_matresult-errormessage,
          142 sy-vline.
    ENDLOOP.
    ULINE AT /1(142).
    NEW-PAGE.
  ENDIF.

ENDFORM.                    " disp_mat_not_fetched
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_fail_ext_plant
*&amp;amp;---------------------------------------------------------------------*
*       Display materials failed to extend to plant.
*----------------------------------------------------------------------*
FORM disp_mat_fail_ext_plant .

  FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE:/40 'LIST OF FAILURE / SUCESS MATERIALS TRYED TO EXTENDED'(011),
                                                              142 ''.
  FORMAT COLOR OFF.
  SKIP.
  ULINE AT 1(142).

  FORMAT COLOR 4 INTENSIFIED OFF.
  WRITE:/1 sy-vline,
         2 'MATERIAL'(006),
        21 sy-vline,
        22 'PLANT'(007),
        27 sy-vline,
        28 'FAILURE / SUCESS'(010),
        40 sy-vline,
        51 'ERROR MESSAGE'(009),
       142 sy-vline.
  FORMAT COLOR OFF.
  ULINE AT /1(142).

  LOOP AT g_it_plantresult INTO g_wa_plantresult.
    WRITE:/1 sy-vline,
           2 g_wa_plantresult-material,
          21 sy-vline,
          22 g_wa_plantresult-plant,
          27 sy-vline,
          28 g_wa_plantresult-flag,
          40 sy-vline,
          41 g_wa_plantresult-errormessage,
         142 sy-vline.
  ENDLOOP.
  ULINE AT /1(142).
ENDFORM.                    " disp_mat_fail_ext_plant
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;lt;REMOVED BY MODERATOR&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Alvaro Tejada Galindo on Apr 7, 2008 3:20 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 07 Apr 2008 11:23:29 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-04-07T11:23:29Z</dc:date>
    <item>
      <title>BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707719#M892719</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Experts,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I need BAPI for retrieving Following values based on Material number.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Material type.&lt;/P&gt;&lt;P&gt;Material group.&lt;/P&gt;&lt;P&gt;material number.&lt;/P&gt;&lt;P&gt;Created date.&lt;/P&gt;&lt;P&gt;created person.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;lt;REMOVED BY MODERATOR&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Alvaro Tejada Galindo on Apr 7, 2008 3:18 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 11:18:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707719#M892719</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-07T11:18:53Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707720#M892720</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;try BAPI_MATERIAL_GET_DETAIL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 11:21:10 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707720#M892720</guid>
      <dc:creator>RaymondGiuseppi</dc:creator>
      <dc:date>2008-04-07T11:21:10Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707721#M892721</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;BAPI_STANDARDMATERIAL_CREATE - To create / extend Material&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_GET_ALL-gets thecomplete details of the material.&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_SAVEDATA - Create and Change Material &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_DISPLAY&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_GET_DETAIL&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_EXISTENCECHECK&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_GETBATCHES &lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_GETLIST&lt;/P&gt;&lt;P&gt;U can use Select from mara directly before use MARA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
REPORT  ZUMM0040 NO STANDARD PAGE HEADING LINE-SIZE 255
LINE-COUNT 50(4) MESSAGE-ID zaccess.
************************************************************************
* Program              : ZUMM0040
* Title                : Extend Material Master from a source plant to
*                        Target plants using BAPI
************************************************************************
* Description    :  Extend Material Master from a source plant to all
*                   Target plants specified for all the materials
*                   specified on selection screen.
*                   This program is specific to Access Technologies and
*                   will have to be modified suitably for use in other
*                   areas.
*                   Information specific to the Access Plants is
*                   maintained in a custom table and only those plants
*                   maintained in this table can be specified as target
*                   plants.
*                   User can check for Super Bom &amp;amp; GC Part Materials
*                   to extend from source plant to target plants and
*                   separate rules are set up for plant 6140 and
*                   Plants other than 6010 in MRP2, MRP3 &amp;amp; Costing 1
*                   views.
************************************************************************
* Input  :
*        Select-options  : 1. Material Number
*                          2. Target Plant
*
*        Parameters      : 1. Source Plant
*                          2. Class II Parts
*                          3. Super Bom &amp;amp; GC Material
*                          4. Mode for call transaction
*
*        Others (Specify):
* Output :
*        Report  : Display Error records and Success records
*
*        Others (Specify): None.

*----------------------------------------------------------------------*
* TYPES DECLARATION                                                    *
*----------------------------------------------------------------------*

TYPES: BEGIN OF t_marc,
        werks TYPE werks_d, " Plant
        matnr TYPE matnr,   " Material Number
        beskz TYPE beskz,   " Procurement Type
        sobsl TYPE sobsl,   " Special procurement type
        fhori TYPE fhori,   " Scheduling Margin Key for Floats
       END OF t_marc.

TYPES: BEGIN OF t_target_plants,
        werks        TYPE werks_d, " Plant
        pur_group    TYPE ekgrp,   " Purchasing Group
        prod_time    TYPE dzeit,   " In-house production time
        deliv_time   TYPE plifz,   " Planned delivery time in days
        gr_proc_time TYPE webaz,
        " Goods receipt processing time in days
        sched_margin TYPE fhori,   " Scheduling Margin Key for Floats
        repln_time   TYPE wzeit,   " Total replenishment lead time
       END OF t_target_plants.

TYPES: BEGIN OF t_result,
        material(18),               " Material Number
        plant(4),                   " Plant
        flag(7),                    " Success/Failure flag
        errormessage TYPE bapi_msg, " Message in bapireturn
       END OF t_result.

TYPES: BEGIN OF t_mbew,
        matnr TYPE matnr,   " Material Number
        bwkey TYPE bwkey,   " Valuation area
        bwtar TYPE bwtar_d, " Valuation Type
       END OF t_mbew.

TYPES: BEGIN OF t_mlgn,
        matnr TYPE matnr,  " Material Number
        lgnum TYPE lgnum,  " Warehouse Number / Warehouse Complex
       END OF t_mlgn.

TYPES: BEGIN OF t_myms,
        mykey TYPE mykey,  " LIFO valuation level
        matnr TYPE matnr,  " Material Number
       END OF t_myms.

TYPES: BEGIN OF t_mlgt,
        matnr TYPE matnr, " Material Number
        lgnum TYPE lgnum, " Warehouse Number / Warehouse Complex
        lgtyp TYPE lgtyp, " Storage Type
       END OF t_mlgt.

* To hold list of materials that need to be extended (Super Bom &amp;amp; GC)
TYPES: BEGIN OF t_superbom,
        matnr TYPE matnr,       " Material Number
        kzkfg TYPE kzkfg,       " Configurable
       END OF t_superbom.


*----------------------------------------------------------------------*
* INTERNAL TABLES DECLARATION                                          *
*----------------------------------------------------------------------*

DATA: g_it_marc           TYPE TABLE OF t_marc,
      g_it_marc1          TYPE TABLE OF t_marc,
      g_it_source_mat     TYPE TABLE OF t_marc,
      g_it_plants         TYPE TABLE OF t_target_plants,
      g_it_target_plants  TYPE TABLE OF t_target_plants,
      g_it_bapi_makt_ga   TYPE TABLE OF bapi_makt_ga,
      g_it_bapi_marm_ga   TYPE TABLE OF bapi_marm_ga,
      g_it_bapi_mean_ga   TYPE TABLE OF bapi_mean_ga,
      g_it_bapi_mltx_ga   TYPE TABLE OF bapi_mltx_ga,
      g_it_bapi_mlan_ga   TYPE TABLE OF bapi_mlan_ga,
      g_it_bapireturn     TYPE TABLE OF bapireturn,
      g_it_bapi_makt      TYPE TABLE OF bapi_makt,
      g_it_bapi_marm      TYPE TABLE OF bapi_marm,
      g_it_bapi_mean      TYPE TABLE OF bapi_mean,
      g_it_bapi_mltx      TYPE TABLE OF bapi_mltx,
      g_it_bapi_mlan      TYPE TABLE OF bapi_mlan,
      g_it_return         TYPE bapirettab,
      g_it_matextended    TYPE TABLE OF t_result,
      g_it_matresult      TYPE TABLE OF t_result,
      g_it_plantresult    TYPE TABLE OF t_result,
      g_it_mbew           TYPE TABLE OF t_mbew,
      g_it_mlgn           TYPE TABLE OF t_mlgn,
      g_it_myms           TYPE TABLE OF t_myms,
      g_it_mlgt           TYPE TABLE OF t_mlgt,
      g_it_superbom       TYPE TABLE OF t_superbom.

*----------------------------------------------------------------------*
*      WORK AREAS DECLARATION                                          *
*----------------------------------------------------------------------*

DATA: g_wa_marc           TYPE t_marc,
      g_wa_marc1          TYPE t_marc,
      g_wa_source_mat     TYPE t_marc,
      g_wa_plants         TYPE t_target_plants,
      g_wa_comp_code      TYPE t001k-bukrs,
      g_wa_salesorg       TYPE t001w-vkorg,
      g_wa_distr_chan     TYPE t001w-vtweg,
      g_wa_mbew           TYPE t_mbew,
      g_wa_mlgn           TYPE t_mlgn,
      g_wa_myms           TYPE t_myms,
      g_wa_mlgt           TYPE t_mlgt,
      g_wa_bapi_mara_ga   TYPE bapi_mara_ga,
      g_wa_bapi_marc_ga   TYPE bapi_marc_ga,
      g_wa_bapi_mpop_ga   TYPE bapi_mpop_ga,
      g_wa_bapi_mpgd_ga   TYPE bapi_mpgd_ga,
      g_wa_bapi_mbew_ga   TYPE bapi_mbew_ga,
      g_wa_bapi_mlgn_ga   TYPE bapi_mlgn_ga,
      g_wa_bapi_mvke_ga   TYPE bapi_mvke_ga,
      g_wa_bapi_mlgt_ga   TYPE bapi_mlgt_ga,
      g_wa_bapi_mfhm_ga   TYPE bapi_mfhm_ga,
      g_wa_bapi_myms_ga   TYPE bapi_myms_ga,
      g_wa_bapi_makt_ga   TYPE bapi_makt_ga,
      g_wa_bapi_marm_ga   TYPE bapi_marm_ga,
      g_wa_bapi_mean_ga   TYPE bapi_mean_ga,
      g_wa_bapi_mltx_ga   TYPE bapi_mltx_ga,
      g_wa_bapi_mlan_ga   TYPE bapi_mlan_ga,
      g_wa_bapireturn     TYPE bapireturn,
      g_wa_bapimathead    TYPE bapimathead,
      g_wa_bapi_mara      TYPE bapi_mara,
      g_wa_bapi_marc      TYPE bapi_marc,
      g_wa_bapi_mpop      TYPE bapi_mpop,
      g_wa_bapi_mpgd      TYPE bapi_mpgd,
      g_wa_bapi_mbew      TYPE bapi_mbew,
      g_wa_bapi_mlgn      TYPE bapi_mlgn,
      g_wa_bapi_mvke      TYPE bapi_mvke,
      g_wa_bapi_mlgt      TYPE bapi_mlgt,
      g_wa_bapi_marax     TYPE bapi_marax,
      g_wa_bapi_marcx     TYPE bapi_marcx,
      g_wa_bapi_mpopx     TYPE bapi_mpopx,
      g_wa_bapi_mpgdx     TYPE bapi_mpgdx,
      g_wa_bapi_mbewx     TYPE bapi_mbewx,
      g_wa_bapi_mlgnx     TYPE bapi_mlgnx,
      g_wa_bapi_mvkex     TYPE bapi_mvkex,
      g_wa_bapi_mlgtx     TYPE bapi_mlgtx,
      g_wa_bapi_makt      TYPE bapi_makt,
      g_wa_bapi_marm      TYPE bapi_marm,
      g_wa_bapi_mean      TYPE bapi_mean,
      g_wa_bapi_mltx      TYPE bapi_mltx,
      g_wa_bapi_mlan      TYPE bapi_mlan,
      g_wa_bapireturn1    TYPE bapiret2,
      g_wa_return         TYPE bapiret2,
      g_wa_matextended    TYPE t_result,
      g_wa_matresult      TYPE t_result,
      g_wa_plantresult    TYPE t_result,
      g_wa_superbom       TYPE t_superbom.

*----------------------------------------------------------------------*
*      VARIABLES DECLARATION                                           *
*----------------------------------------------------------------------*

DATA: g_v_proc_type       TYPE beskz, " Procurement Type
      g_v_spl_proc_code   TYPE sobsl, " Special Procurement Code
      g_v_prod_time(3)    TYPE c,     " In-house Prod Time
      g_v_deliv_time(3)   TYPE c,     " Planned Delivery Time
      g_v_repln_time(3)   TYPE c,     " Total replenishment lead time
      g_v_gr_proc_time(3) TYPE c.     " GR Processing Time

*----------------------------------------------------------------------*
*      CONSTANTS                                                       *
*----------------------------------------------------------------------*
CONSTANTS: c_x       VALUE 'X',
           c_k       VALUE 'K',
           c_v       VALUE 'V',
           c_e       VALUE 'E',
           c_d       VALUE 'D',
           c_p       VALUE 'P',
           c_a       VALUE 'A',
           c_f       VALUE 'F',
           c_l       VALUE 'L',
           c_s       VALUE 'S',
           c_q       VALUE 'Q',
           c_b       VALUE 'B',
           c_g       VALUE 'G',
           c_gc(2)   VALUE 'GC',
           c_roh(3)  VALUE 'ROH',
           c_dien(4) VALUE 'DIEN',
           c_fert(4) VALUE 'FERT',
           c_halb(4) VALUE 'HALB',
           c_verp(4) VALUE 'VERP',
           c_nlag(4) VALUE 'NLAG',
           c_unbw(4) VALUE 'UNBW',
           c_6090(4) VALUE '6090',
           c_6140(4) VALUE '6140',
           c_6010(4) VALUE '6010',
           c_40(2)   VALUE  40,
           c_50(2)   VALUE  50,
           c_80(2)   VALUE  80,
           c_25(2)   VALUE  25,
           c_y5(2)   VALUE  'Y5',
           c_fm(7)   VALUE 'FAILURE'.

*----------------------------------------------------------------------*
* SELECTION-SCREEN DEFINITION                                          *
*----------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

* Range of materials to be extended
SELECT-OPTIONS: s_matnr FOR g_wa_marc-matnr OBLIGATORY,

* Range of Target plants to which the material should be extended.
                s_target FOR g_wa_marc-werks OBLIGATORY.

* Source plant form which material details are extracted
PARAMETERS: p_source TYPE werks_d OBLIGATORY,

* Check box to extend Class II materials
            p_class2 AS CHECKBOX,

* Check box to extend Super Bom and GC Parts
            p_super AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK b1.

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN                                                  *
*----------------------------------------------------------------------*

AT SELECTION-SCREEN.


* Validate the Target Plant Range entered.
  PERFORM validate_target_plants.

* Validate the source plant and material range.
  PERFORM validate_material_range.

*----------------------------------------------------------------------*
* START-OF-SELECTION                                                   *
*----------------------------------------------------------------------*

START-OF-SELECTION.

*Refresh corresponding variables
  PERFORM refresh_data_variables.

*Get final target plants.
  PERFORM get_final_target_plants.

*Get materials and the corresponding plants to which it has to be
*extended
  PERFORM get_final_materials_plants.

* Get all the data for the import parameters of bapi_material_get_all.
  PERFORM get_data.

  IF NOT g_it_marc[] IS INITIAL.
    LOOP AT g_it_marc INTO g_wa_marc.
* Get all the data for the materials given in the selection screen.
      PERFORM bapi_material_get_all.

      IF g_wa_matresult-flag = c_fm.
        CONTINUE.
      ELSE.
* Extended the data to the plants given in the selection screen.
        PERFORM bapi_material_savedata.
      ENDIF.
    ENDLOOP.
  ELSE.
    MESSAGE e000 WITH 'MATERIALS ALREADY EXTENDED TO TARGET PLANT'.
  ENDIF.

*----------------------------------------------------------------------*
* END-OF-SELECTION                                                   *
*----------------------------------------------------------------------*

END-OF-SELECTION.

* Display materials already extended.
  PERFORM disp_mat_already_extended.

*Display materials for which the data could not be fetched.
  PERFORM disp_mat_not_fetched.

*Display materials failed to extend to plant.
  PERFORM disp_mat_fail_ext_plant.

*----------------------------------------------------------------------*
* TOP-OF-PAGE                                                          *
*----------------------------------------------------------------------*
TOP-OF-PAGE.
* To display page header
  PERFORM page_header.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VALIDATE_TARGET_PLANTS
*&amp;amp;---------------------------------------------------------------------*
*       Form to validate the target plants specified in the range on
*       the selection screen and get all the accessible plants.
*       If none of the plants specified is an Access plant, an error
*       message is displayed.
*----------------------------------------------------------------------*
FORM validate_target_plants .
*   Check if each of the plants is an Access plant.
  SELECT werks
         pur_group
         prod_time
         deliv_time
         gr_proc_time
         sched_margin
         repln_time
    FROM zmmdata
    INTO TABLE g_it_plants
   WHERE werks IN s_target
      OR werks EQ p_source.

  IF sy-subrc EQ 0.
    SORT g_it_plants BY werks.
    CLEAR g_wa_plants.
    READ TABLE g_it_plants INTO g_wa_plants
                       WITH KEY werks = p_source.
    IF sy-subrc = 0.
      DELETE g_it_plants INDEX sy-tabix.
    ELSE.
      MESSAGE e001.
    ENDIF.
  ELSE.
    MESSAGE e005.
  ENDIF.


ENDFORM.                    " validate_target_plants
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VALIDATE_MATERIAL_RANGE
*&amp;amp;---------------------------------------------------------------------*
*       Form to validate source plant and the material rage given in the
*       selection screen and get all the materials of the source plant
*       and the target plants.
*       If there are no materials of the source plant to be extended an
*       error message is displayed.
*----------------------------------------------------------------------*
FORM validate_material_range .

  DATA: BEGIN OF l_r_plants OCCURS 0,
          sign(1),
          option(2),
          low TYPE werks_d,
          high TYPE werks_d,
        END OF l_r_plants.

  CLEAR: g_wa_plants.

*Creating rage of plants to get the material validity

  LOOP AT g_it_plants INTO g_wa_plants.
    AT NEW werks.
      l_r_plants-sign = 'I'.
      l_r_plants-option = 'EQ'.
      l_r_plants-low = g_wa_plants-werks.
      APPEND l_r_plants.
      CLEAR l_r_plants.
    ENDAT.
  ENDLOOP.

*Include source plant also
  l_r_plants-sign = 'I'.
  l_r_plants-option = 'EQ'.
  l_r_plants-low = p_source.
  APPEND l_r_plants.

  SELECT werks
         matnr
         beskz
         sobsl
         fhori
    FROM marc
    INTO TABLE g_it_marc1
   WHERE matnr IN s_matnr
     AND werks IN l_r_plants.
* If the output table is initial an error message is displayed
  IF sy-subrc NE 0.
    MESSAGE e002.
  ELSE.
    SORT g_it_marc1 BY werks matnr.
    CLEAR g_wa_marc1.
    READ TABLE g_it_marc1 INTO g_wa_marc1 WITH KEY werks = p_source.
* If the output table doesn't contain materials of source plant an
* error message is displayed.
    IF sy-subrc NE 0.
      MESSAGE e002.
    ENDIF.
  ENDIF.

ENDFORM.                    " validate_material_range
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_final_target_plants
*&amp;amp;---------------------------------------------------------------------*
*       To get final target plants
*----------------------------------------------------------------------*
FORM get_final_target_plants .

  DATA: l_wa_plants TYPE t_target_plants.

  LOOP AT g_it_plants INTO l_wa_plants.
    AT NEW werks.
      READ TABLE g_it_plants INTO g_wa_plants
                         WITH KEY werks =  l_wa_plants-werks.
      APPEND g_wa_plants TO g_it_target_plants.
      CLEAR l_wa_plants.
    ENDAT.
  ENDLOOP.

  SORT g_it_target_plants BY werks.

ENDFORM.                    " get_final_target_plants

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_final_materials_plants
*&amp;amp;---------------------------------------------------------------------*
*       Form to get the materials and the corresponding plants to which
*       it has to be extended.
*----------------------------------------------------------------------*
FORM get_final_materials_plants.

  CLEAR: g_wa_marc1,
         g_wa_plants.

*Validating plants against source plants

*Loop at all the materials with source plant and append to
*another table
  LOOP AT g_it_marc1 INTO g_wa_marc1 WHERE werks = p_source.
    MOVE g_wa_marc1 TO g_wa_source_mat.
    APPEND g_wa_source_mat TO g_it_source_mat.
    CLEAR g_wa_source_mat.
  ENDLOOP.

*Loop through all target plants
  LOOP AT g_it_target_plants INTO g_wa_plants.

*Loop at all the materials with source plant
    LOOP AT g_it_marc1 INTO g_wa_marc1 WHERE werks = p_source.

*Check whether material exist for the target plant or not
      READ TABLE g_it_marc1
            INTO g_wa_marc1
        WITH KEY matnr = g_wa_marc1-matnr
                 werks = g_wa_plants-werks.

      IF sy-subrc = 0.
*If yes then move that material to another table.
        MOVE g_wa_marc1-matnr   TO g_wa_matextended-material.
        MOVE g_wa_plants-werks  TO g_wa_matextended-plant.
        MOVE c_fm               TO g_wa_matextended-flag.
        MOVE 'MATERIALS ALREADY EXTENDED'(002) TO
             g_wa_matextended-errormessage.
        APPEND g_wa_matextended TO g_it_matextended.
        CLEAR g_wa_matextended.
      ELSE.
*If no then append that material to extention list
        MOVE g_wa_marc1-matnr  TO g_wa_marc-matnr.
        MOVE g_wa_plants-werks TO g_wa_marc-werks.
        MOVE g_wa_marc1-beskz  TO g_wa_marc-beskz.
        MOVE g_wa_marc1-sobsl  TO g_wa_marc-sobsl.
        APPEND g_wa_marc TO g_it_marc.
        CLEAR g_wa_marc.
      ENDIF.
    ENDLOOP.

  ENDLOOP.

ENDFORM.                    " get_final_materials_plants
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_data
*&amp;amp;---------------------------------------------------------------------*
*       Form to get the data for the import parameters of
*       bapi_material_get_all.
*----------------------------------------------------------------------*
FORM get_data .

* Super bom is checked
  IF p_super = 'X'.
* To get Material data from Material master and check whether
* Material is configurable.
    SELECT matnr   "Material
           kzkfg   "Configurable
           FROM mara
       INTO TABLE g_it_superbom
       FOR ALL ENTRIES IN g_it_source_mat
       WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
      SORT g_it_superbom.
    ENDIF.
  ENDIF.

* To fetch the Company Code based on Source Plant.
  SELECT SINGLE bukrs
    FROM t001k
    INTO g_wa_comp_code
   WHERE bwkey = p_source.

  IF sy-subrc = 0.
  ENDIF.

*To fetch the Valuation Area and Valuation Type based on Material
*Number.
  SELECT matnr
         bwkey
         bwtar
    FROM mbew
    INTO TABLE g_it_mbew
     FOR ALL ENTRIES IN g_it_source_mat
   WHERE matnr = g_it_source_mat-matnr
     AND bwkey = p_source.

  IF sy-subrc = 0.
  ENDIF.

*To fetch the Sales Organization and Distribution Channel based on
*Source Plant.
  SELECT SINGLE
         vkorg
         vtweg
    FROM t001w
    INTO (g_wa_salesorg,
          g_wa_distr_chan)
    WHERE werks = p_source.

  IF sy-subrc = 0.
  ENDIF.

  IF g_it_mbew IS NOT INITIAL.

*To fetch the Wearhouse Numbers for all the material in the table
*G_it_mbew.
    SELECT matnr
           lgnum
      FROM mlgn
      INTO TABLE g_it_mlgn
       FOR ALL ENTRIES IN g_it_source_mat
     WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
    ENDIF.

*To fetch the LIFO valuation level for all the material in the table
*G_it_mbew.
    SELECT mykey
           matnr
      FROM myms
      INTO TABLE g_it_myms
       FOR ALL ENTRIES IN g_it_source_mat
     WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
    ENDIF.

  ENDIF.

  IF g_it_mlgn IS NOT INITIAL.
*To fetch the Storage Type for all the material in the table G_it_mlgn.
    SELECT matnr
           lgnum
           lgtyp
      FROM mlgt
      INTO TABLE g_it_mlgt
       FOR ALL ENTRIES IN g_it_mlgn
     WHERE matnr = g_it_mlgn-matnr
       AND lgnum = g_it_mlgn-lgnum.

    IF sy-subrc = 0.
    ENDIF.

  ENDIF.

ENDFORM.                    " get_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form  BAPI_MATERIAL_GET_ALL
*&amp;amp;---------------------------------------------------------------------*
*Form to get the data from database tables MARA, MARC, MPOP, MPGD,MBEW,
*  MLGN, MVKE, MLGT for the material and the source plant.
*----------------------------------------------------------------------*
FORM bapi_material_get_all.

  DATA:
   l_v_material        TYPE bapi_mara_ga-material,
   l_v_comp_code       TYPE bapi0002_1-comp_code,
   l_v_val_area        TYPE bapi_mbew_ga-val_area,
   l_v_val_type        TYPE bapi_mbew_ga-val_type,
   l_v_plant           TYPE bapi_marc_ga-plant,
   l_v_salesorg        TYPE bapi_mvke_ga-sales_org,
   l_v_distr_chan      TYPE bapi_mvke_ga-distr_chan,
   l_v_whsenumber      TYPE bapi_mlgn_ga-whse_no,
   l_v_stge_type       TYPE bapi_mlgt_ga-stge_type,
   l_v_lifo_valu_level TYPE bapi_myms_ga-lifo_valuation_level.

  CLEAR : g_wa_mbew,
          g_wa_mlgn,
          g_wa_mlgt,
          g_wa_myms,
          l_v_val_area,
          l_v_val_type,
          l_v_whsenumber,
          l_v_stge_type,
          l_v_lifo_valu_level.

  MOVE g_wa_marc-matnr       TO l_v_material.
  MOVE p_source              TO l_v_plant.
  MOVE g_wa_comp_code        TO l_v_comp_code.
  MOVE g_wa_salesorg         TO l_v_salesorg.
  MOVE g_wa_distr_chan       TO l_v_distr_chan.

  READ TABLE g_it_mbew INTO g_wa_mbew WITH KEY matnr = g_wa_marc-matnr.

  IF sy-subrc = 0.
    MOVE g_wa_mbew-bwkey TO l_v_val_area.
    MOVE g_wa_mbew-bwtar TO l_v_val_type.
  ENDIF.

  READ TABLE g_it_mlgn INTO g_wa_mlgn WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
    MOVE g_wa_mlgn-lgnum TO l_v_whsenumber.
  ENDIF.

  READ TABLE g_it_mlgt INTO g_wa_mlgt
                   WITH KEY matnr = g_wa_marc-matnr
                            lgnum = l_v_whsenumber.
  IF sy-subrc = 0.
    MOVE g_wa_mlgt-lgtyp TO l_v_stge_type.
  ENDIF.

  READ TABLE g_it_myms INTO g_wa_myms WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
    MOVE g_wa_myms-mykey TO l_v_lifo_valu_level.
  ENDIF.

  CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
    EXPORTING
      material             = l_v_material
      comp_code            = l_v_comp_code
      val_area             = l_v_val_area
      val_type             = l_v_val_type
      plant                = l_v_plant
      salesorg             = l_v_salesorg
      distr_chan           = l_v_distr_chan
      whsenumber           = l_v_whsenumber
      stge_type            = l_v_stge_type
      lifo_valuation_level = l_v_lifo_valu_level
    IMPORTING
      clientdata           = g_wa_bapi_mara_ga
      plantdata            = g_wa_bapi_marc_ga
      forecastparameters   = g_wa_bapi_mpop_ga
      planningdata         = g_wa_bapi_mpgd_ga
      valuationdata        = g_wa_bapi_mbew_ga
      warehousenumberdata  = g_wa_bapi_mlgn_ga
      salesdata            = g_wa_bapi_mvke_ga
      storagetypedata      = g_wa_bapi_mlgt_ga
      prtdata              = g_wa_bapi_mfhm_ga
      lifovaluationdata    = g_wa_bapi_myms_ga
    TABLES
      materialdescription  = g_it_bapi_makt_ga
      unitsofmeasure       = g_it_bapi_marm_ga
      internationalartnos  = g_it_bapi_mean_ga
      materiallongtext     = g_it_bapi_mltx_ga
      taxclassifications   = g_it_bapi_mlan_ga
      return               = g_it_bapireturn.

  LOOP AT g_it_bapireturn INTO g_wa_bapireturn.
    IF g_wa_bapireturn-type = 'A' OR g_wa_bapireturn-type = 'E'.
      MOVE g_wa_marc-matnr         TO g_wa_matresult-material.
      MOVE g_wa_bapireturn-message TO g_wa_matresult-errormessage.
      MOVE c_fm                    TO g_wa_matresult-flag.
      APPEND g_wa_matresult TO g_it_matresult.
      CLEAR g_wa_matresult.
    ENDIF.
  ENDLOOP.

ENDFORM.                    " BAPI_MATERIAL_GET_ALL
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BAPI_MATERIAL_SAVEDATA
*&amp;amp;---------------------------------------------------------------------*
*       Form to extend the material data from the souce plant to target
*       plant
*----------------------------------------------------------------------*
FORM bapi_material_savedata .

* To prepare the exporting parameter G_wa_bapimathead
  PERFORM prepare_marhead_data.

* To move data from importing parameters to exporitng parameters
  PERFORM move_getall_to_savedata.

* To prepare the X-structures
  PERFORM prepare_x_structures.

*To prepare main structures i.e to change the data according to the the
*target plant
  PERFORM prepare_main_structures.

  CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
      headdata              = g_wa_bapimathead
      clientdata            = g_wa_bapi_mara
      clientdatax           = g_wa_bapi_marax
      plantdata             = g_wa_bapi_marc
      plantdatax            = g_wa_bapi_marcx
      forecastparameters    = g_wa_bapi_mpop
      forecastparametersx   = g_wa_bapi_mpopx
      planningdata          = g_wa_bapi_mpgd
      planningdatax         = g_wa_bapi_mpgdx
      valuationdata         = g_wa_bapi_mbew
      valuationdatax        = g_wa_bapi_mbewx
      warehousenumberdata   = g_wa_bapi_mlgn
      warehousenumberdatax  = g_wa_bapi_mlgnx
      salesdata             = g_wa_bapi_mvke
      salesdatax            = g_wa_bapi_mvkex
      storagetypedata       = g_wa_bapi_mlgt
      storagetypedatax      = g_wa_bapi_mlgtx
   IMPORTING
      return                = g_wa_bapireturn1
   TABLES
      materialdescription   = g_it_bapi_makt
      unitsofmeasure        = g_it_bapi_marm
      internationalartnos   = g_it_bapi_mean
      materiallongtext      = g_it_bapi_mltx
      taxclassifications    = g_it_bapi_mlan
      returnmessages        = g_it_return.

  LOOP AT  g_it_return INTO g_wa_return WHERE ( type CA 'AEX' ).
    " abort, error, dump
    EXIT.
  ENDLOOP.

  IF  sy-subrc = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.  " synchronous
  ENDIF.

  IF g_wa_bapireturn1-type = 'A' OR g_wa_bapireturn1-type = 'E'.
    MOVE g_wa_marc-matnr          TO g_wa_plantresult-material.
    MOVE g_wa_plants-werks        TO g_wa_plantresult-plant.
    MOVE g_wa_bapireturn1-message TO g_wa_plantresult-errormessage.
    MOVE 'FAILURE'(004)           TO g_wa_plantresult-flag.
    APPEND g_wa_plantresult       TO g_it_plantresult.
  ELSE.
    MOVE g_wa_marc-matnr    TO g_wa_plantresult-material.
    MOVE g_wa_plants-werks  TO g_wa_plantresult-plant.
    MOVE 'SUCCESS'(003)     TO g_wa_plantresult-flag.
    APPEND g_wa_plantresult TO g_it_plantresult.
  ENDIF.


ENDFORM.                    " BAPI_MATERIAL_SAVEDATA
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_marhead_data
*&amp;amp;---------------------------------------------------------------------*
*       Form to prepare the exporting parameter G_wa_bapimathead
*----------------------------------------------------------------------*
FORM prepare_marhead_data .

  g_wa_bapimathead-material   = g_wa_bapi_mara_ga-material.
  g_wa_bapimathead-ind_sector = g_wa_bapi_mara_ga-ind_sector.
  g_wa_bapimathead-matl_type  = g_wa_bapi_mara_ga-matl_type.

  IF g_wa_bapi_marc_ga-maint_stat CA c_k.
    g_wa_bapimathead-basic_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_v.
    g_wa_bapimathead-sales_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_e.
    g_wa_bapimathead-purchase_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_d.
    g_wa_bapimathead-mrp_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_p.
    g_wa_bapimathead-forecast_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_a.
    g_wa_bapimathead-work_sched_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_f.
    g_wa_bapimathead-prt_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_l.
    g_wa_bapimathead-storage_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_s.
    g_wa_bapimathead-warehouse_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_q.
    g_wa_bapimathead-quality_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_b.
    g_wa_bapimathead-account_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_g.
    g_wa_bapimathead-cost_view = c_x.
  ENDIF.

ENDFORM.                    " prepare_marhead_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form  move_getall_to_savedata
*&amp;amp;---------------------------------------------------------------------*
*Form to move data from the importing parameter of BAPI_MATERIAL_GET_ALL
* to exporting parameters of BAPI_MATERIAL_SAVEDATA
*----------------------------------------------------------------------*
FORM move_getall_to_savedata .

  MOVE-CORRESPONDING: g_wa_bapi_mara_ga TO g_wa_bapi_mara,
                      g_wa_bapi_marc_ga TO g_wa_bapi_marc,
                      g_wa_bapi_mpop_ga TO g_wa_bapi_mpop.
  MOVE                g_wa_bapi_mpgd_ga TO g_wa_bapi_mpgd.
  MOVE-CORRESPONDING  g_wa_bapi_mbew_ga TO g_wa_bapi_mbew.
  MOVE:               g_wa_bapi_mlgn_ga TO g_wa_bapi_mlgn,
                      g_wa_bapi_mvke_ga TO g_wa_bapi_mvke,
                      g_wa_bapi_mlgt_ga TO g_wa_bapi_mlgt.

  LOOP AT g_it_bapi_makt_ga INTO g_wa_bapi_makt_ga.
    MOVE-CORRESPONDING g_wa_bapi_makt_ga TO g_wa_bapi_makt.
    APPEND g_wa_bapi_makt TO g_it_bapi_makt.
    CLEAR g_wa_bapi_makt.
  ENDLOOP.

  LOOP AT g_it_bapi_marm_ga INTO g_wa_bapi_marm_ga.
    MOVE-CORRESPONDING g_wa_bapi_marm_ga TO g_wa_bapi_marm.
    APPEND g_wa_bapi_marm TO g_it_bapi_marm.
    CLEAR g_wa_bapi_marm.
  ENDLOOP.

  LOOP AT g_it_bapi_mean_ga INTO g_wa_bapi_mean_ga.
    MOVE-CORRESPONDING g_wa_bapi_mean_ga TO g_wa_bapi_mean.
    APPEND g_wa_bapi_mean TO g_it_bapi_mean.
    CLEAR g_wa_bapi_mean.
  ENDLOOP.

  LOOP AT g_it_bapi_mltx_ga INTO g_wa_bapi_mltx_ga.
    MOVE-CORRESPONDING g_wa_bapi_mltx_ga TO g_wa_bapi_mltx.
    APPEND g_wa_bapi_mltx TO g_it_bapi_mltx.
    CLEAR g_wa_bapi_mltx.
  ENDLOOP.

  LOOP AT g_it_bapi_mlan_ga INTO g_wa_bapi_mlan_ga.
    MOVE-CORRESPONDING g_wa_bapi_mlan_ga TO g_wa_bapi_mlan.
    APPEND g_wa_bapi_mlan TO g_it_bapi_mlan.
    CLEAR g_wa_bapi_mlan.
  ENDLOOP.

ENDFORM.                    " move_getall_to_savedata
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_x_structures
*&amp;amp;---------------------------------------------------------------------*
*       Form to prepare the X-sctrucures based on the content of their
*       corresponding strucures.
*----------------------------------------------------------------------*

FORM prepare_x_structures .

  DATA: l_it_dfies_tab TYPE TABLE OF dfies,
        l_wa_dfies_tab TYPE dfies.
  DATA: l_v_cntr TYPE i,
        l_v_tabname TYPE ddobjname,
        l_v_internal_tabnam(30),
        l_v_internal_tabnamx(30),
        l_v_tmp_str(50),
        l_v_tmp_strx(50).

  FIELD-SYMBOLS: &amp;lt;fs1&amp;gt; TYPE ANY,
                 &amp;lt;fs2&amp;gt; TYPE ANY.
  l_v_cntr = 0.

  DO 9 TIMES.

    l_v_cntr = l_v_cntr + 1.

    CASE l_v_cntr.
      WHEN 1.
        l_v_tabname          = 'BAPI_MARA'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARA'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARAX'.
      WHEN 2.
        l_v_tabname          = 'BAPI_MARC'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARC'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARCX'.
      WHEN 3.
        l_v_tabname          = 'BAPI_MPOP'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MPOP'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MPOPX'.
      WHEN 4.
        l_v_tabname          = 'BAPI_MPGD'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MPGD'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MPGDX'.
      WHEN 5.
        l_v_tabname          = 'BAPI_MARD'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARD'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARDX'.
      WHEN 6.
        l_v_tabname          = 'BAPI_MBEW'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MBEW'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MBEWX'.
      WHEN 7.
        l_v_tabname          = 'BAPI_MLGN'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MLGN'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MLGNX'.
      WHEN 8.
        l_v_tabname          = 'BAPI_MVKE'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MVKE'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MVKEX'.
      WHEN 9.
        l_v_tabname          = 'BAPI_MLGT'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MLGT'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MLGTX'.
    ENDCASE.

    CALL FUNCTION 'DDIF_FIELDINFO_GET'
     EXPORTING
       tabname              = l_v_tabname
       langu                = sy-langu
     TABLES
       dfies_tab            = l_it_dfies_tab
     EXCEPTIONS
       not_found            = 1
       internal_error       = 2
       OTHERS               = 3.

    IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    LOOP AT l_it_dfies_tab INTO l_wa_dfies_tab.
      CONCATENATE l_v_internal_tabnam '-' l_wa_dfies_tab-fieldname INTO
      l_v_tmp_str.
      ASSIGN (l_v_tmp_str) TO &amp;lt;fs1&amp;gt;.

      IF NOT &amp;lt;fs1&amp;gt; IS INITIAL.
        CONCATENATE l_v_internal_tabnamx '-' l_wa_dfies_tab-fieldname
        INTO
        l_v_tmp_strx.
        ASSIGN (l_v_tmp_strx) TO &amp;lt;fs2&amp;gt;.
        MOVE c_x TO &amp;lt;fs2&amp;gt;.
      ENDIF.
    ENDLOOP.

  ENDDO.
  g_wa_bapi_marcx-replentime  = c_x.
  g_wa_bapi_mbewx-plndprdate1 = c_x.
  g_wa_bapi_marcx-mrp_ctrler  = c_x.
  g_wa_bapi_marcx-pur_group   = c_x.
  g_wa_bapi_marcx-proc_type   = c_x.
  g_wa_bapi_marcx-spproctype  = c_x.
  g_wa_bapi_marcx-sm_key      = c_x.
  g_wa_bapi_marcx-inhseprodt  = c_x.
  g_wa_bapi_marcx-plnd_delry  = c_x.
  g_wa_bapi_marcx-gr_pr_time  = c_x.
  g_wa_bapi_marcx-plan_strgp  = c_x.
  g_wa_bapi_marcx-specprocty  = c_x.

ENDFORM.                    " prepare_x_structures
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_main_structures
*&amp;amp;---------------------------------------------------------------------*
* To prepare the main structure i.e. to change the data from source
* plant to target plant and based on the check box populate table with
* data for Super bom and GC Part, Class 1 Materials,Class 2 Materials.
*----------------------------------------------------------------------*
FORM
prepare_main_structures .

  DATA: l_v_profit_ctr(10).

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = g_wa_marc-werks
    IMPORTING
      output = l_v_profit_ctr.


  MOVE g_wa_marc-werks           TO g_wa_bapi_marc-plant.
  MOVE l_v_profit_ctr            TO g_wa_bapi_marc-profit_ctr.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpop-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpgd-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mbew-val_area.
  MOVE g_wa_marc-werks           TO g_wa_bapi_marcx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpopx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpgdx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mbewx-val_area.
  MOVE g_wa_bapi_mbew-val_type   TO g_wa_bapi_mbewx-val_type.
  MOVE g_wa_bapi_mlgn-whse_no    TO g_wa_bapi_mlgnx-whse_no.
  MOVE g_wa_bapi_mvke-sales_org  TO g_wa_bapi_mvkex-sales_org.
  MOVE g_wa_bapi_mvke-distr_chan TO g_wa_bapi_mvkex-distr_chan.
  MOVE g_wa_bapi_mlgt-whse_no    TO g_wa_bapi_mlgtx-whse_no.
  MOVE g_wa_bapi_mlgt-stge_type  TO g_wa_bapi_mlgtx-stge_type.

* For Plant 6090, the 'CC Phy Inv Indicator' should be set to blank
  IF g_wa_marc-werks EQ c_6090.
    g_wa_bapi_marc-cc_ph_inv = space.
  ENDIF.
  g_wa_bapi_marc-production_scheduler = space.

  IF p_class2 NE 'X'.
    IF ( g_wa_marc-beskz EQ 'E' AND g_wa_marc-sobsl EQ space ) OR
       ( g_wa_marc-beskz EQ 'X' AND g_wa_marc-sobsl EQ space ) OR
       ( g_wa_marc-beskz EQ 'F' AND g_wa_marc-sobsl EQ '30'  ) OR
       ( g_wa_marc-beskz EQ 'F' AND g_wa_marc-sobsl EQ space ).
      g_v_proc_type     = 'F'.
      g_v_spl_proc_code = c_40.
    ELSEIF g_wa_marc-beskz EQ 'X' AND g_wa_marc-sobsl EQ c_50.
      g_v_proc_type     = 'X'.
      g_v_spl_proc_code = c_50.
    ELSE.
      g_v_proc_type     = g_wa_marc-beskz.
      g_v_spl_proc_code = g_wa_marc-sobsl.
    ENDIF.
  ENDIF.

  IF p_class2 NE 'X'.
    IF p_super = 'X'.
* Populate table with data for Super bom and GC Part.
      PERFORM populate_screens_super.
    ELSE.
* Populate table with data for Class 1 Materials
      PERFORM populate_screens_class1.
    ENDIF.
  ELSE.
* Populate table with data for Class 2 Materials
    PERFORM populate_screens_class2.
  ENDIF.                           " F_CLASS2 ne 'X'

ENDFORM.                    " prepare_main_structures
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  refresh_data_variables
*&amp;amp;---------------------------------------------------------------------*
*      Refresh data variables
*----------------------------------------------------------------------*
FORM refresh_data_variables .

*All relevant internal tables
  REFRESH: g_it_bapi_makt_ga,
           g_it_bapi_marm_ga,
           g_it_bapi_mean_ga,
           g_it_bapi_mltx_ga,
           g_it_bapi_mlan_ga,
           g_it_bapireturn,
           g_it_return,
           g_it_bapi_makt,
           g_it_bapi_marm,
           g_it_bapi_mean,
           g_it_bapi_mltx,
           g_it_bapi_mlan.

*All relevant work areas
  CLEAR:   g_wa_bapi_mara_ga,
           g_wa_bapi_marc_ga,
           g_wa_bapi_mpop_ga,
           g_wa_bapi_mpgd_ga,
           g_wa_bapi_mbew_ga,
           g_wa_bapi_mlgn_ga,
           g_wa_bapi_mvke_ga,
           g_wa_bapi_mlgt_ga,
           g_wa_bapi_mfhm_ga,
           g_wa_bapi_myms_ga,
           g_wa_bapi_makt_ga,
           g_wa_bapi_marm_ga,
           g_wa_bapi_mean_ga,
           g_wa_bapi_mltx_ga,
           g_wa_bapi_mlan_ga,
           g_wa_bapireturn,
           g_wa_bapimathead,
           g_wa_bapi_mara,
           g_wa_bapi_marc,
           g_wa_bapi_mpop,
           g_wa_bapi_mpgd,
           g_wa_bapi_mbew,
           g_wa_bapi_mlgn,
           g_wa_bapi_mvke,
           g_wa_bapi_mlgt,
           g_wa_bapi_marax,
           g_wa_bapi_marcx,
           g_wa_bapi_mpopx,
           g_wa_bapi_mpgdx,
           g_wa_bapi_mbewx,
           g_wa_bapi_mlgnx,
           g_wa_bapi_mvkex,
           g_wa_bapi_mlgtx,
           g_wa_bapi_makt,
           g_wa_bapi_marm,
           g_wa_bapi_mean,
           g_wa_bapi_mltx,
           g_wa_bapi_mlan,
           g_wa_bapireturn1,
           g_wa_return.

ENDFORM.                    " refresh_data_variables
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_SUPER
*&amp;amp;---------------------------------------------------------------------*
*       To Extend Super Bom &amp;amp; GC parts from source plant to target
*       Plants.
*----------------------------------------------------------------------*
FORM populate_screens_super .

  DATA: l_v_superbom(1),   " Flag to indicate a Super Bom part
        l_v_gcpart(1).     " Flag to indicate a Gc part

  CLEAR g_wa_superbom.

  g_wa_bapi_marc-replentime  = g_v_repln_time.
  g_wa_bapi_mbew-plndprdate1 =  sy-datum.

* Check for super bom and GC material.
  READ TABLE g_it_superbom INTO g_wa_superbom
                       WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
* Set flag if material is GC Material
    IF g_wa_superbom-matnr+0(2) = c_gc.
      l_v_gcpart = 'X'.
    ENDIF.
* Set flag if Material is Super BOM (Configurable)
    IF g_wa_superbom-kzkfg = 'X'.
      l_v_superbom = 'X'.
    ENDIF.
  ENDIF.

* Determine the plant specific field values
  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.

* If Material is Super Bom OR GC part
    IF l_v_superbom = 'X' OR l_v_gcpart = 'X'.
      g_wa_bapi_marc-pur_group = g_wa_plants-pur_group.
    ENDIF.
  ENDIF.

  IF g_wa_marc-werks  EQ c_6140.
* For Plant 6140, it should always be 'F' and ' ' .
    g_wa_bapi_marc-proc_type  = 'F'.
    g_wa_bapi_marc-spproctype =  space.

* Populate the Sched Margin Key since it's not copied from ref plant
* Select Sched Margin key from database for 6010 and copy to 6140
    READ TABLE g_it_source_mat INTO g_wa_source_mat
                           WITH KEY matnr = g_wa_marc-matnr.
    IF sy-subrc = 0.
      g_wa_bapi_marc-sm_key = g_wa_source_mat-fhori.
    ENDIF.
  ELSE.
    IF  g_wa_bapi_mara-sh_mat_typ NE c_roh
    AND g_wa_bapi_mara-sh_mat_typ NE c_dien.
* Key rules for branches other than 6010 and 6140.
      IF  g_wa_marc-werks NE c_6010
      AND g_wa_marc-werks NE c_6140.
        g_wa_bapi_marc-proc_type = 'F'.
      ELSE.
        g_wa_bapi_marc-proc_type = g_v_proc_type.
      ENDIF.
    ENDIF.
    IF g_wa_bapi_mara-sh_mat_typ NE c_dien.
* Key rules for branches other than 6010 and 6140.
      IF  g_wa_marc-werks NE c_6010
      AND g_wa_marc-werks NE c_6140.
        g_wa_bapi_marc-spproctype  =  c_40.
      ELSE.
        g_wa_bapi_marc-spproctype  = g_v_spl_proc_code.
      ENDIF.
    ENDIF.

    IF g_wa_bapi_mara-sh_mat_typ = c_fert
    OR g_wa_bapi_mara-sh_mat_typ = c_halb
    OR g_wa_bapi_mara-sh_mat_typ = c_verp
    OR g_wa_bapi_mara-sh_mat_typ = c_nlag
    OR g_wa_bapi_mara-sh_mat_typ = c_unbw.
      g_wa_bapi_marc-inhseprodt = g_v_prod_time.
    ENDIF.
    g_wa_bapi_marc-plnd_delry = g_v_deliv_time.
    g_wa_bapi_marc-gr_pr_time = g_v_gr_proc_time.
    g_wa_bapi_marc-sm_key     = g_wa_plants-sched_margin.
  ENDIF.

  IF p_source = c_6010.
    g_wa_bapi_marc-sloc_exprc =  ' '.
  ENDIF.

* Target plant is 6140.
  IF g_wa_plants-werks  EQ c_6140.
    g_wa_bapi_marc-plan_strgp = c_y5.
  ENDIF.

* Key rules for branches other than 6010 and 6140.
  IF g_wa_plants-werks NE c_6010 AND
     g_wa_plants-werks NE c_6140.
    g_wa_bapi_marc-plan_strgp = c_25.
  ENDIF.


* Key rule for branch other than 6010.
  IF g_wa_plants-werks NE c_6010.
    g_wa_bapi_marc-specprocty = c_80.
  ENDIF.


ENDFORM.                    " populate_screens_super

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_CLASS1
*&amp;amp;---------------------------------------------------------------------*
*       Populate the BDC table with values for all the remaining
*       screens of MM01. Some of the screens require a different
*       set of values for Plant 6140, the Canadian plant
*----------------------------------------------------------------------*
FORM populate_screens_class1.

  g_wa_bapi_marc-replentime     = g_v_repln_time.
  g_wa_bapi_mbew-plndprdate1    =  sy-datum.

  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-pur_group  = g_wa_plants-pur_group.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.
  ENDIF.

  IF g_wa_marc-werks  EQ '6140'.
* For Plant 6140, it should always be 'F' and ' ' except when it is a
* phantom. For phantoms, it should be 'X' and '50'.
    IF g_v_proc_type  EQ 'X' AND g_v_spl_proc_code EQ '50'.
      g_wa_bapi_marc-proc_type  = 'X'.
      g_wa_bapi_marc-spproctype = '50'.
    ELSE.
      g_wa_bapi_marc-proc_type = 'F'.
      g_wa_bapi_marc-spproctype = space.
    ENDIF.

*   Populate the Sched Margin Key since it's not copied from ref plant
*   Select Sched Margin key from database for 6010 and copy to 6140
    READ TABLE g_it_source_mat INTO g_wa_source_mat
                           WITH KEY matnr = g_wa_marc-matnr.
    IF sy-subrc = 0.
      g_wa_bapi_marc-sm_key = g_wa_source_mat-fhori.
    ENDIF.
  ELSE.
    IF g_wa_bapi_mara-sh_mat_typ NE 'ROH' AND g_wa_bapi_mara-sh_mat_typ
    NE 'DIEN'.
      g_wa_bapi_marc-proc_type = g_v_proc_type.
    ENDIF.
    IF g_wa_bapi_mara-sh_mat_typ NE 'DIEN' AND p_class2 EQ space.
      g_wa_bapi_marc-spproctype  = g_v_spl_proc_code.
    ENDIF.
   IF g_wa_bapi_mara-sh_mat_typ = 'FERT' OR g_wa_bapi_mara-sh_mat_typ =
   'HALB'
   OR g_wa_bapi_mara-sh_mat_typ = 'VERP' OR g_wa_bapi_mara-sh_mat_typ =
   'NLAG'
   OR g_wa_bapi_mara-sh_mat_typ = 'UNBW'.
      g_wa_bapi_marc-inhseprodt = g_v_prod_time.
    ENDIF.
    g_wa_bapi_marc-plnd_delry = g_v_deliv_time.
    g_wa_bapi_marc-gr_pr_time = g_v_gr_proc_time.
    g_wa_bapi_marc-sm_key     = g_wa_plants-sched_margin.
  ENDIF.

  IF g_wa_marc-werks EQ '6140'.
    IF g_v_proc_type     EQ 'X' AND g_v_spl_proc_code EQ '50'.
      g_wa_bapi_marc-specprocty = space.
    ELSE.
      g_wa_bapi_marc-specprocty = '40'.
    ENDIF.
  ELSEIF p_class2 EQ 'X'.
    g_wa_bapi_marc-specprocty   = '40'.
  ENDIF.

ENDFORM.                               " POPULATE_SCREENS_CLASS1
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_CLASS2
*&amp;amp;---------------------------------------------------------------------*
*       This form populates the various screens required for MM01 for
*       class 2 materials. It is very similar to the Form POPULATE_
*       SCREENS_CLASS1.
*----------------------------------------------------------------------*
FORM populate_screens_class2.

* Determine the purchasing group for the plant
  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-pur_group  = g_wa_plants-pur_group.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.
  ENDIF.

  g_wa_bapi_marc-specprocty = '40'.

ENDFORM.                               " POPULATE_SCREENS_CLASS2
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  PAGE_HEADER
*&amp;amp;---------------------------------------------------------------------*
*        To Print page header and other details
*----------------------------------------------------------------------*
FORM page_header .

*--Page Header
  FORMAT COLOR 1.
  WRITE:/1 'Run Date:'(015), sy-datum,
        65 'Stanley Works'(016),
       130 'Page No:'(017), sy-pagno LEFT-JUSTIFIED, 255 ''.

  WRITE:/1 'Run Time:'(018), sy-uzeit,
        40 sy-title,
       130 sy-uname, 255 ''.
  WRITE:/1 'Source  :'(019), sy-sysid,
       130 sy-cprog, 255 ''.
  FORMAT COLOR OFF.
  ULINE AT /1(142).

ENDFORM.                    " PAGE_HEADER
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_already_extended
*&amp;amp;---------------------------------------------------------------------*
*       Display materials already extended.
*----------------------------------------------------------------------*
FORM disp_mat_already_extended .

  IF NOT g_it_matextended[] IS INITIAL.
    FORMAT COLOR 1 INTENSIFIED OFF.
    WRITE:/40 'LIST OF MATERIALS WHICH ARE ALREADY EXTENDED'(005),
                142 ''.
    FORMAT COLOR OFF.
    SKIP.

    ULINE AT /1(142).
    WRITE:/1 sy-vline,
          2 'MATERIAL'(006),
         21 sy-vline,
         22 'PLANT'(007),
         27 sy-vline,
         28 'FAILURE FLAG'(008),
         40 sy-vline,
         51 'ERROR MESSAGE'(009),
        142 sy-vline.
    ULINE AT /1(142).

    LOOP AT g_it_matextended INTO g_wa_matextended.
      WRITE:/1 sy-vline,
             2 g_wa_matextended-material,
            21 sy-vline,
            22 g_wa_matextended-plant,
            27 sy-vline,
            28 g_wa_matextended-flag,
            40 sy-vline,
            41 g_wa_matextended-errormessage,
           142 sy-vline.
    ENDLOOP.
    ULINE AT /1(142).

    NEW-PAGE.
  ENDIF.
ENDFORM.                    " disp_mat_already_extended
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_not_fetched
*&amp;amp;---------------------------------------------------------------------*
*       Display materials for which the data could not be fetched.
*----------------------------------------------------------------------*
FORM disp_mat_not_fetched .

  IF NOT g_it_matresult[] IS INITIAL.
    FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE:/40 'LIST OF MATERIALS FOR WHICH IT COUNLD NOT FETCH DATA'(012),
 142 ''.
    FORMAT COLOR OFF.
    SKIP.
    ULINE AT /1(142).
    FORMAT COLOR 4 INTENSIFIED OFF.
    WRITE:/1 sy-vline,
           2 'MATERIAL'(006),
          21 sy-vline,
          22 'FAILURE FLAG'(008),
          30 sy-vline,
          51 'ERROR MESSAGE'(009),
         142 sy-vline.
    FORMAT COLOR OFF.
    ULINE AT /1(142).

    LOOP AT g_it_matresult INTO g_wa_matresult.
      WRITE:/1 sy-vline,
             2 g_wa_matresult-material,
            21 sy-vline,
            22 g_wa_matresult-flag,
            30 sy-vline,
            31 g_wa_matresult-errormessage,
          142 sy-vline.
    ENDLOOP.
    ULINE AT /1(142).
    NEW-PAGE.
  ENDIF.

ENDFORM.                    " disp_mat_not_fetched
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_fail_ext_plant
*&amp;amp;---------------------------------------------------------------------*
*       Display materials failed to extend to plant.
*----------------------------------------------------------------------*
FORM disp_mat_fail_ext_plant .

  FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE:/40 'LIST OF FAILURE / SUCESS MATERIALS TRYED TO EXTENDED'(011),
                                                              142 ''.
  FORMAT COLOR OFF.
  SKIP.
  ULINE AT 1(142).

  FORMAT COLOR 4 INTENSIFIED OFF.
  WRITE:/1 sy-vline,
         2 'MATERIAL'(006),
        21 sy-vline,
        22 'PLANT'(007),
        27 sy-vline,
        28 'FAILURE / SUCESS'(010),
        40 sy-vline,
        51 'ERROR MESSAGE'(009),
       142 sy-vline.
  FORMAT COLOR OFF.
  ULINE AT /1(142).

  LOOP AT g_it_plantresult INTO g_wa_plantresult.
    WRITE:/1 sy-vline,
           2 g_wa_plantresult-material,
          21 sy-vline,
          22 g_wa_plantresult-plant,
          27 sy-vline,
          28 g_wa_plantresult-flag,
          40 sy-vline,
          41 g_wa_plantresult-errormessage,
         142 sy-vline.
  ENDLOOP.
  ULINE AT /1(142).
ENDFORM.                    " disp_mat_fail_ext_plant
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;lt;REMOVED BY MODERATOR&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: K.R.Reddy on Apr 7, 2008 1:23 PM&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Code Formatted by: Alvaro Tejada Galindo on Apr 7, 2008 3:18 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 11:23:12 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707721#M892721</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-07T11:23:12Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707722#M892722</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Use this bapi for get the material&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_GET_DETAIL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Brown.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 11:23:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707722#M892722</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-07T11:23:17Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707723#M892723</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
REPORT  ZUMM0040 NO STANDARD PAGE HEADING LINE-SIZE 255
LINE-COUNT 50(4) MESSAGE-ID zaccess.
************************************************************************
* Program              : ZUMM0040
* Title                : Extend Material Master from a source plant to
*                        Target plants using BAPI
************************************************************************
* Description    :  Extend Material Master from a source plant to all
*                   Target plants specified for all the materials
*                   specified on selection screen.
*                   This program is specific to Access Technologies and
*                   will have to be modified suitably for use in other
*                   areas.
*                   Information specific to the Access Plants is
*                   maintained in a custom table and only those plants
*                   maintained in this table can be specified as target
*                   plants.
*                   User can check for Super Bom &amp;amp; GC Part Materials
*                   to extend from source plant to target plants and
*                   separate rules are set up for plant 6140 and
*                   Plants other than 6010 in MRP2, MRP3 &amp;amp; Costing 1
*                   views.
************************************************************************
* Input  :
*        Select-options  : 1. Material Number
*                          2. Target Plant
*
*        Parameters      : 1. Source Plant
*                          2. Class II Parts
*                          3. Super Bom &amp;amp; GC Material
*                          4. Mode for call transaction
*
*        Others (Specify):
* Output :
*        Report  : Display Error records and Success records
*
*        Others (Specify): None.
************************************************************************
* Heat  Ticket #   : USD9197
* Created by       : ARUNDHATHI GANGIPALLY
* Created on       : 29/11/2007
* Version          : 1
* Request          :
* Transaction code :
************************************************************************
* Change History                                                       *
* Date         Programmer  Search String   Description                 *
************************************************************************

*----------------------------------------------------------------------*
* TYPES DECLARATION                                                    *
*----------------------------------------------------------------------*

TYPES: BEGIN OF t_marc,
        werks TYPE werks_d, " Plant
        matnr TYPE matnr,   " Material Number
        beskz TYPE beskz,   " Procurement Type
        sobsl TYPE sobsl,   " Special procurement type
        fhori TYPE fhori,   " Scheduling Margin Key for Floats
       END OF t_marc.

TYPES: BEGIN OF t_target_plants,
        werks        TYPE werks_d, " Plant
        pur_group    TYPE ekgrp,   " Purchasing Group
        prod_time    TYPE dzeit,   " In-house production time
        deliv_time   TYPE plifz,   " Planned delivery time in days
        gr_proc_time TYPE webaz,
        " Goods receipt processing time in days
        sched_margin TYPE fhori,   " Scheduling Margin Key for Floats
        repln_time   TYPE wzeit,   " Total replenishment lead time
       END OF t_target_plants.

TYPES: BEGIN OF t_result,
        material(18),               " Material Number
        plant(4),                   " Plant
        flag(7),                    " Success/Failure flag
        errormessage TYPE bapi_msg, " Message in bapireturn
       END OF t_result.

TYPES: BEGIN OF t_mbew,
        matnr TYPE matnr,   " Material Number
        bwkey TYPE bwkey,   " Valuation area
        bwtar TYPE bwtar_d, " Valuation Type
       END OF t_mbew.

TYPES: BEGIN OF t_mlgn,
        matnr TYPE matnr,  " Material Number
        lgnum TYPE lgnum,  " Warehouse Number / Warehouse Complex
       END OF t_mlgn.

TYPES: BEGIN OF t_myms,
        mykey TYPE mykey,  " LIFO valuation level
        matnr TYPE matnr,  " Material Number
       END OF t_myms.

TYPES: BEGIN OF t_mlgt,
        matnr TYPE matnr, " Material Number
        lgnum TYPE lgnum, " Warehouse Number / Warehouse Complex
        lgtyp TYPE lgtyp, " Storage Type
       END OF t_mlgt.

* To hold list of materials that need to be extended (Super Bom &amp;amp; GC)
TYPES: BEGIN OF t_superbom,
        matnr TYPE matnr,       " Material Number
        kzkfg TYPE kzkfg,       " Configurable
       END OF t_superbom.


*----------------------------------------------------------------------*
* INTERNAL TABLES DECLARATION                                          *
*----------------------------------------------------------------------*

DATA: g_it_marc           TYPE TABLE OF t_marc,
      g_it_marc1          TYPE TABLE OF t_marc,
      g_it_source_mat     TYPE TABLE OF t_marc,
      g_it_plants         TYPE TABLE OF t_target_plants,
      g_it_target_plants  TYPE TABLE OF t_target_plants,
      g_it_bapi_makt_ga   TYPE TABLE OF bapi_makt_ga,
      g_it_bapi_marm_ga   TYPE TABLE OF bapi_marm_ga,
      g_it_bapi_mean_ga   TYPE TABLE OF bapi_mean_ga,
      g_it_bapi_mltx_ga   TYPE TABLE OF bapi_mltx_ga,
      g_it_bapi_mlan_ga   TYPE TABLE OF bapi_mlan_ga,
      g_it_bapireturn     TYPE TABLE OF bapireturn,
      g_it_bapi_makt      TYPE TABLE OF bapi_makt,
      g_it_bapi_marm      TYPE TABLE OF bapi_marm,
      g_it_bapi_mean      TYPE TABLE OF bapi_mean,
      g_it_bapi_mltx      TYPE TABLE OF bapi_mltx,
      g_it_bapi_mlan      TYPE TABLE OF bapi_mlan,
      g_it_return         TYPE bapirettab,
      g_it_matextended    TYPE TABLE OF t_result,
      g_it_matresult      TYPE TABLE OF t_result,
      g_it_plantresult    TYPE TABLE OF t_result,
      g_it_mbew           TYPE TABLE OF t_mbew,
      g_it_mlgn           TYPE TABLE OF t_mlgn,
      g_it_myms           TYPE TABLE OF t_myms,
      g_it_mlgt           TYPE TABLE OF t_mlgt,
      g_it_superbom       TYPE TABLE OF t_superbom.

*----------------------------------------------------------------------*
*      WORK AREAS DECLARATION                                          *
*----------------------------------------------------------------------*

DATA: g_wa_marc           TYPE t_marc,
      g_wa_marc1          TYPE t_marc,
      g_wa_source_mat     TYPE t_marc,
      g_wa_plants         TYPE t_target_plants,
      g_wa_comp_code      TYPE t001k-bukrs,
      g_wa_salesorg       TYPE t001w-vkorg,
      g_wa_distr_chan     TYPE t001w-vtweg,
      g_wa_mbew           TYPE t_mbew,
      g_wa_mlgn           TYPE t_mlgn,
      g_wa_myms           TYPE t_myms,
      g_wa_mlgt           TYPE t_mlgt,
      g_wa_bapi_mara_ga   TYPE bapi_mara_ga,
      g_wa_bapi_marc_ga   TYPE bapi_marc_ga,
      g_wa_bapi_mpop_ga   TYPE bapi_mpop_ga,
      g_wa_bapi_mpgd_ga   TYPE bapi_mpgd_ga,
      g_wa_bapi_mbew_ga   TYPE bapi_mbew_ga,
      g_wa_bapi_mlgn_ga   TYPE bapi_mlgn_ga,
      g_wa_bapi_mvke_ga   TYPE bapi_mvke_ga,
      g_wa_bapi_mlgt_ga   TYPE bapi_mlgt_ga,
      g_wa_bapi_mfhm_ga   TYPE bapi_mfhm_ga,
      g_wa_bapi_myms_ga   TYPE bapi_myms_ga,
      g_wa_bapi_makt_ga   TYPE bapi_makt_ga,
      g_wa_bapi_marm_ga   TYPE bapi_marm_ga,
      g_wa_bapi_mean_ga   TYPE bapi_mean_ga,
      g_wa_bapi_mltx_ga   TYPE bapi_mltx_ga,
      g_wa_bapi_mlan_ga   TYPE bapi_mlan_ga,
      g_wa_bapireturn     TYPE bapireturn,
      g_wa_bapimathead    TYPE bapimathead,
      g_wa_bapi_mara      TYPE bapi_mara,
      g_wa_bapi_marc      TYPE bapi_marc,
      g_wa_bapi_mpop      TYPE bapi_mpop,
      g_wa_bapi_mpgd      TYPE bapi_mpgd,
      g_wa_bapi_mbew      TYPE bapi_mbew,
      g_wa_bapi_mlgn      TYPE bapi_mlgn,
      g_wa_bapi_mvke      TYPE bapi_mvke,
      g_wa_bapi_mlgt      TYPE bapi_mlgt,
      g_wa_bapi_marax     TYPE bapi_marax,
      g_wa_bapi_marcx     TYPE bapi_marcx,
      g_wa_bapi_mpopx     TYPE bapi_mpopx,
      g_wa_bapi_mpgdx     TYPE bapi_mpgdx,
      g_wa_bapi_mbewx     TYPE bapi_mbewx,
      g_wa_bapi_mlgnx     TYPE bapi_mlgnx,
      g_wa_bapi_mvkex     TYPE bapi_mvkex,
      g_wa_bapi_mlgtx     TYPE bapi_mlgtx,
      g_wa_bapi_makt      TYPE bapi_makt,
      g_wa_bapi_marm      TYPE bapi_marm,
      g_wa_bapi_mean      TYPE bapi_mean,
      g_wa_bapi_mltx      TYPE bapi_mltx,
      g_wa_bapi_mlan      TYPE bapi_mlan,
      g_wa_bapireturn1    TYPE bapiret2,
      g_wa_return         TYPE bapiret2,
      g_wa_matextended    TYPE t_result,
      g_wa_matresult      TYPE t_result,
      g_wa_plantresult    TYPE t_result,
      g_wa_superbom       TYPE t_superbom.

*----------------------------------------------------------------------*
*      VARIABLES DECLARATION                                           *
*----------------------------------------------------------------------*

DATA: g_v_proc_type       TYPE beskz, " Procurement Type
      g_v_spl_proc_code   TYPE sobsl, " Special Procurement Code
      g_v_prod_time(3)    TYPE c,     " In-house Prod Time
      g_v_deliv_time(3)   TYPE c,     " Planned Delivery Time
      g_v_repln_time(3)   TYPE c,     " Total replenishment lead time
      g_v_gr_proc_time(3) TYPE c.     " GR Processing Time

*----------------------------------------------------------------------*
*      CONSTANTS                                                       *
*----------------------------------------------------------------------*
CONSTANTS: c_x       VALUE 'X',
           c_k       VALUE 'K',
           c_v       VALUE 'V',
           c_e       VALUE 'E',
           c_d       VALUE 'D',
           c_p       VALUE 'P',
           c_a       VALUE 'A',
           c_f       VALUE 'F',
           c_l       VALUE 'L',
           c_s       VALUE 'S',
           c_q       VALUE 'Q',
           c_b       VALUE 'B',
           c_g       VALUE 'G',
           c_gc(2)   VALUE 'GC',
           c_roh(3)  VALUE 'ROH',
           c_dien(4) VALUE 'DIEN',
           c_fert(4) VALUE 'FERT',
           c_halb(4) VALUE 'HALB',
           c_verp(4) VALUE 'VERP',
           c_nlag(4) VALUE 'NLAG',
           c_unbw(4) VALUE 'UNBW',
           c_6090(4) VALUE '6090',
           c_6140(4) VALUE '6140',
           c_6010(4) VALUE '6010',
           c_40(2)   VALUE  40,
           c_50(2)   VALUE  50,
           c_80(2)   VALUE  80,
           c_25(2)   VALUE  25,
           c_y5(2)   VALUE  'Y5',
           c_fm(7)   VALUE 'FAILURE'.

*----------------------------------------------------------------------*
* SELECTION-SCREEN DEFINITION                                          *
*----------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

* Range of materials to be extended
SELECT-OPTIONS: s_matnr FOR g_wa_marc-matnr OBLIGATORY,

* Range of Target plants to which the material should be extended.
                s_target FOR g_wa_marc-werks OBLIGATORY.

* Source plant form which material details are extracted
PARAMETERS: p_source TYPE werks_d OBLIGATORY,

* Check box to extend Class II materials
            p_class2 AS CHECKBOX,

* Check box to extend Super Bom and GC Parts
            p_super AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK b1.

*----------------------------------------------------------------------*
* AT SELECTION-SCREEN                                                  *
*----------------------------------------------------------------------*

AT SELECTION-SCREEN.


* Validate the Target Plant Range entered.
  PERFORM validate_target_plants.

* Validate the source plant and material range.
  PERFORM validate_material_range.

*----------------------------------------------------------------------*
* START-OF-SELECTION                                                   *
*----------------------------------------------------------------------*

START-OF-SELECTION.

*Refresh corresponding variables
  PERFORM refresh_data_variables.

*Get final target plants.
  PERFORM get_final_target_plants.

*Get materials and the corresponding plants to which it has to be
*extended
  PERFORM get_final_materials_plants.

* Get all the data for the import parameters of bapi_material_get_all.
  PERFORM get_data.

  IF NOT g_it_marc[] IS INITIAL.
    LOOP AT g_it_marc INTO g_wa_marc.
* Get all the data for the materials given in the selection screen.
      PERFORM bapi_material_get_all.

      IF g_wa_matresult-flag = c_fm.
        CONTINUE.
      ELSE.
* Extended the data to the plants given in the selection screen.
        PERFORM bapi_material_savedata.
      ENDIF.
    ENDLOOP.
  ELSE.
    MESSAGE e000 WITH 'MATERIALS ALREADY EXTENDED TO TARGET PLANT'.
  ENDIF.

*----------------------------------------------------------------------*
* END-OF-SELECTION                                                   *
*----------------------------------------------------------------------*

END-OF-SELECTION.

* Display materials already extended.
  PERFORM disp_mat_already_extended.

*Display materials for which the data could not be fetched.
  PERFORM disp_mat_not_fetched.

*Display materials failed to extend to plant.
  PERFORM disp_mat_fail_ext_plant.

*----------------------------------------------------------------------*
* TOP-OF-PAGE                                                          *
*----------------------------------------------------------------------*
TOP-OF-PAGE.
* To display page header
  PERFORM page_header.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VALIDATE_TARGET_PLANTS
*&amp;amp;---------------------------------------------------------------------*
*       Form to validate the target plants specified in the range on
*       the selection screen and get all the accessible plants.
*       If none of the plants specified is an Access plant, an error
*       message is displayed.
*----------------------------------------------------------------------*
FORM validate_target_plants .
*   Check if each of the plants is an Access plant.
  SELECT werks
         pur_group
         prod_time
         deliv_time
         gr_proc_time
         sched_margin
         repln_time
    FROM zmmdata
    INTO TABLE g_it_plants
   WHERE werks IN s_target
      OR werks EQ p_source.

  IF sy-subrc EQ 0.
    SORT g_it_plants BY werks.
    CLEAR g_wa_plants.
    READ TABLE g_it_plants INTO g_wa_plants
                       WITH KEY werks = p_source.
    IF sy-subrc = 0.
      DELETE g_it_plants INDEX sy-tabix.
    ELSE.
      MESSAGE e001.
    ENDIF.
  ELSE.
    MESSAGE e005.
  ENDIF.


ENDFORM.                    " validate_target_plants
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VALIDATE_MATERIAL_RANGE
*&amp;amp;---------------------------------------------------------------------*
*       Form to validate source plant and the material rage given in the
*       selection screen and get all the materials of the source plant
*       and the target plants.
*       If there are no materials of the source plant to be extended an
*       error message is displayed.
*----------------------------------------------------------------------*
FORM validate_material_range .

  DATA: BEGIN OF l_r_plants OCCURS 0,
          sign(1),
          option(2),
          low TYPE werks_d,
          high TYPE werks_d,
        END OF l_r_plants.

  CLEAR: g_wa_plants.

*Creating rage of plants to get the material validity

  LOOP AT g_it_plants INTO g_wa_plants.
    AT NEW werks.
      l_r_plants-sign = 'I'.
      l_r_plants-option = 'EQ'.
      l_r_plants-low = g_wa_plants-werks.
      APPEND l_r_plants.
      CLEAR l_r_plants.
    ENDAT.
  ENDLOOP.

*Include source plant also
  l_r_plants-sign = 'I'.
  l_r_plants-option = 'EQ'.
  l_r_plants-low = p_source.
  APPEND l_r_plants.

  SELECT werks
         matnr
         beskz
         sobsl
         fhori
    FROM marc
    INTO TABLE g_it_marc1
   WHERE matnr IN s_matnr
     AND werks IN l_r_plants.
* If the output table is initial an error message is displayed
  IF sy-subrc NE 0.
    MESSAGE e002.
  ELSE.
    SORT g_it_marc1 BY werks matnr.
    CLEAR g_wa_marc1.
    READ TABLE g_it_marc1 INTO g_wa_marc1 WITH KEY werks = p_source.
* If the output table doesn't contain materials of source plant an
* error message is displayed.
    IF sy-subrc NE 0.
      MESSAGE e002.
    ENDIF.
  ENDIF.

ENDFORM.                    " validate_material_range
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_final_target_plants
*&amp;amp;---------------------------------------------------------------------*
*       To get final target plants
*----------------------------------------------------------------------*
FORM get_final_target_plants .

  DATA: l_wa_plants TYPE t_target_plants.

  LOOP AT g_it_plants INTO l_wa_plants.
    AT NEW werks.
      READ TABLE g_it_plants INTO g_wa_plants
                         WITH KEY werks =  l_wa_plants-werks.
      APPEND g_wa_plants TO g_it_target_plants.
      CLEAR l_wa_plants.
    ENDAT.
  ENDLOOP.

  SORT g_it_target_plants BY werks.

ENDFORM.                    " get_final_target_plants

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_final_materials_plants
*&amp;amp;---------------------------------------------------------------------*
*       Form to get the materials and the corresponding plants to which
*       it has to be extended.
*----------------------------------------------------------------------*
FORM get_final_materials_plants.

  CLEAR: g_wa_marc1,
         g_wa_plants.

*Validating plants against source plants

*Loop at all the materials with source plant and append to
*another table
  LOOP AT g_it_marc1 INTO g_wa_marc1 WHERE werks = p_source.
    MOVE g_wa_marc1 TO g_wa_source_mat.
    APPEND g_wa_source_mat TO g_it_source_mat.
    CLEAR g_wa_source_mat.
  ENDLOOP.

*Loop through all target plants
  LOOP AT g_it_target_plants INTO g_wa_plants.

*Loop at all the materials with source plant
    LOOP AT g_it_marc1 INTO g_wa_marc1 WHERE werks = p_source.

*Check whether material exist for the target plant or not
      READ TABLE g_it_marc1
            INTO g_wa_marc1
        WITH KEY matnr = g_wa_marc1-matnr
                 werks = g_wa_plants-werks.

      IF sy-subrc = 0.
*If yes then move that material to another table.
        MOVE g_wa_marc1-matnr   TO g_wa_matextended-material.
        MOVE g_wa_plants-werks  TO g_wa_matextended-plant.
        MOVE c_fm               TO g_wa_matextended-flag.
        MOVE 'MATERIALS ALREADY EXTENDED'(002) TO
             g_wa_matextended-errormessage.
        APPEND g_wa_matextended TO g_it_matextended.
        CLEAR g_wa_matextended.
      ELSE.
*If no then append that material to extention list
        MOVE g_wa_marc1-matnr  TO g_wa_marc-matnr.
        MOVE g_wa_plants-werks TO g_wa_marc-werks.
        MOVE g_wa_marc1-beskz  TO g_wa_marc-beskz.
        MOVE g_wa_marc1-sobsl  TO g_wa_marc-sobsl.
        APPEND g_wa_marc TO g_it_marc.
        CLEAR g_wa_marc.
      ENDIF.
    ENDLOOP.

  ENDLOOP.

ENDFORM.                    " get_final_materials_plants
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  get_data
*&amp;amp;---------------------------------------------------------------------*
*       Form to get the data for the import parameters of
*       bapi_material_get_all.
*----------------------------------------------------------------------*
FORM get_data .

* Super bom is checked
  IF p_super = 'X'.
* To get Material data from Material master and check whether
* Material is configurable.
    SELECT matnr   "Material
           kzkfg   "Configurable
           FROM mara
       INTO TABLE g_it_superbom
       FOR ALL ENTRIES IN g_it_source_mat
       WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
      SORT g_it_superbom.
    ENDIF.
  ENDIF.

* To fetch the Company Code based on Source Plant.
  SELECT SINGLE bukrs
    FROM t001k
    INTO g_wa_comp_code
   WHERE bwkey = p_source.

  IF sy-subrc = 0.
  ENDIF.

*To fetch the Valuation Area and Valuation Type based on Material
*Number.
  SELECT matnr
         bwkey
         bwtar
    FROM mbew
    INTO TABLE g_it_mbew
     FOR ALL ENTRIES IN g_it_source_mat
   WHERE matnr = g_it_source_mat-matnr
     AND bwkey = p_source.

  IF sy-subrc = 0.
  ENDIF.

*To fetch the Sales Organization and Distribution Channel based on
*Source Plant.
  SELECT SINGLE
         vkorg
         vtweg
    FROM t001w
    INTO (g_wa_salesorg,
          g_wa_distr_chan)
    WHERE werks = p_source.

  IF sy-subrc = 0.
  ENDIF.

  IF g_it_mbew IS NOT INITIAL.

*To fetch the Wearhouse Numbers for all the material in the table
*G_it_mbew.
    SELECT matnr
           lgnum
      FROM mlgn
      INTO TABLE g_it_mlgn
       FOR ALL ENTRIES IN g_it_source_mat
     WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
    ENDIF.

*To fetch the LIFO valuation level for all the material in the table
*G_it_mbew.
    SELECT mykey
           matnr
      FROM myms
      INTO TABLE g_it_myms
       FOR ALL ENTRIES IN g_it_source_mat
     WHERE matnr = g_it_source_mat-matnr.

    IF sy-subrc = 0.
    ENDIF.

  ENDIF.

  IF g_it_mlgn IS NOT INITIAL.
*To fetch the Storage Type for all the material in the table G_it_mlgn.
    SELECT matnr
           lgnum
           lgtyp
      FROM mlgt
      INTO TABLE g_it_mlgt
       FOR ALL ENTRIES IN g_it_mlgn
     WHERE matnr = g_it_mlgn-matnr
       AND lgnum = g_it_mlgn-lgnum.

    IF sy-subrc = 0.
    ENDIF.

  ENDIF.

ENDFORM.                    " get_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form  BAPI_MATERIAL_GET_ALL
*&amp;amp;---------------------------------------------------------------------*
*Form to get the data from database tables MARA, MARC, MPOP, MPGD,MBEW,
*  MLGN, MVKE, MLGT for the material and the source plant.
*----------------------------------------------------------------------*
FORM bapi_material_get_all.

  DATA:
   l_v_material        TYPE bapi_mara_ga-material,
   l_v_comp_code       TYPE bapi0002_1-comp_code,
   l_v_val_area        TYPE bapi_mbew_ga-val_area,
   l_v_val_type        TYPE bapi_mbew_ga-val_type,
   l_v_plant           TYPE bapi_marc_ga-plant,
   l_v_salesorg        TYPE bapi_mvke_ga-sales_org,
   l_v_distr_chan      TYPE bapi_mvke_ga-distr_chan,
   l_v_whsenumber      TYPE bapi_mlgn_ga-whse_no,
   l_v_stge_type       TYPE bapi_mlgt_ga-stge_type,
   l_v_lifo_valu_level TYPE bapi_myms_ga-lifo_valuation_level.

  CLEAR : g_wa_mbew,
          g_wa_mlgn,
          g_wa_mlgt,
          g_wa_myms,
          l_v_val_area,
          l_v_val_type,
          l_v_whsenumber,
          l_v_stge_type,
          l_v_lifo_valu_level.

  MOVE g_wa_marc-matnr       TO l_v_material.
  MOVE p_source              TO l_v_plant.
  MOVE g_wa_comp_code        TO l_v_comp_code.
  MOVE g_wa_salesorg         TO l_v_salesorg.
  MOVE g_wa_distr_chan       TO l_v_distr_chan.

  READ TABLE g_it_mbew INTO g_wa_mbew WITH KEY matnr = g_wa_marc-matnr.

  IF sy-subrc = 0.
    MOVE g_wa_mbew-bwkey TO l_v_val_area.
    MOVE g_wa_mbew-bwtar TO l_v_val_type.
  ENDIF.

  READ TABLE g_it_mlgn INTO g_wa_mlgn WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
    MOVE g_wa_mlgn-lgnum TO l_v_whsenumber.
  ENDIF.

  READ TABLE g_it_mlgt INTO g_wa_mlgt
                   WITH KEY matnr = g_wa_marc-matnr
                            lgnum = l_v_whsenumber.
  IF sy-subrc = 0.
    MOVE g_wa_mlgt-lgtyp TO l_v_stge_type.
  ENDIF.

  READ TABLE g_it_myms INTO g_wa_myms WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
    MOVE g_wa_myms-mykey TO l_v_lifo_valu_level.
  ENDIF.

  CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
    EXPORTING
      material             = l_v_material
      comp_code            = l_v_comp_code
      val_area             = l_v_val_area
      val_type             = l_v_val_type
      plant                = l_v_plant
      salesorg             = l_v_salesorg
      distr_chan           = l_v_distr_chan
      whsenumber           = l_v_whsenumber
      stge_type            = l_v_stge_type
      lifo_valuation_level = l_v_lifo_valu_level
    IMPORTING
      clientdata           = g_wa_bapi_mara_ga
      plantdata            = g_wa_bapi_marc_ga
      forecastparameters   = g_wa_bapi_mpop_ga
      planningdata         = g_wa_bapi_mpgd_ga
      valuationdata        = g_wa_bapi_mbew_ga
      warehousenumberdata  = g_wa_bapi_mlgn_ga
      salesdata            = g_wa_bapi_mvke_ga
      storagetypedata      = g_wa_bapi_mlgt_ga
      prtdata              = g_wa_bapi_mfhm_ga
      lifovaluationdata    = g_wa_bapi_myms_ga
    TABLES
      materialdescription  = g_it_bapi_makt_ga
      unitsofmeasure       = g_it_bapi_marm_ga
      internationalartnos  = g_it_bapi_mean_ga
      materiallongtext     = g_it_bapi_mltx_ga
      taxclassifications   = g_it_bapi_mlan_ga
      return               = g_it_bapireturn.

  LOOP AT g_it_bapireturn INTO g_wa_bapireturn.
    IF g_wa_bapireturn-type = 'A' OR g_wa_bapireturn-type = 'E'.
      MOVE g_wa_marc-matnr         TO g_wa_matresult-material.
      MOVE g_wa_bapireturn-message TO g_wa_matresult-errormessage.
      MOVE c_fm                    TO g_wa_matresult-flag.
      APPEND g_wa_matresult TO g_it_matresult.
      CLEAR g_wa_matresult.
    ENDIF.
  ENDLOOP.

ENDFORM.                    " BAPI_MATERIAL_GET_ALL
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BAPI_MATERIAL_SAVEDATA
*&amp;amp;---------------------------------------------------------------------*
*       Form to extend the material data from the souce plant to target
*       plant
*----------------------------------------------------------------------*
FORM bapi_material_savedata .

* To prepare the exporting parameter G_wa_bapimathead
  PERFORM prepare_marhead_data.

* To move data from importing parameters to exporitng parameters
  PERFORM move_getall_to_savedata.

* To prepare the X-structures
  PERFORM prepare_x_structures.

*To prepare main structures i.e to change the data according to the the
*target plant
  PERFORM prepare_main_structures.

  CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
    EXPORTING
      headdata              = g_wa_bapimathead
      clientdata            = g_wa_bapi_mara
      clientdatax           = g_wa_bapi_marax
      plantdata             = g_wa_bapi_marc
      plantdatax            = g_wa_bapi_marcx
      forecastparameters    = g_wa_bapi_mpop
      forecastparametersx   = g_wa_bapi_mpopx
      planningdata          = g_wa_bapi_mpgd
      planningdatax         = g_wa_bapi_mpgdx
      valuationdata         = g_wa_bapi_mbew
      valuationdatax        = g_wa_bapi_mbewx
      warehousenumberdata   = g_wa_bapi_mlgn
      warehousenumberdatax  = g_wa_bapi_mlgnx
      salesdata             = g_wa_bapi_mvke
      salesdatax            = g_wa_bapi_mvkex
      storagetypedata       = g_wa_bapi_mlgt
      storagetypedatax      = g_wa_bapi_mlgtx
   IMPORTING
      return                = g_wa_bapireturn1
   TABLES
      materialdescription   = g_it_bapi_makt
      unitsofmeasure        = g_it_bapi_marm
      internationalartnos   = g_it_bapi_mean
      materiallongtext      = g_it_bapi_mltx
      taxclassifications    = g_it_bapi_mlan
      returnmessages        = g_it_return.

  LOOP AT  g_it_return INTO g_wa_return WHERE ( type CA 'AEX' ).
    " abort, error, dump
    EXIT.
  ENDLOOP.

  IF  sy-subrc = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.  " synchronous
  ENDIF.

  IF g_wa_bapireturn1-type = 'A' OR g_wa_bapireturn1-type = 'E'.
    MOVE g_wa_marc-matnr          TO g_wa_plantresult-material.
    MOVE g_wa_plants-werks        TO g_wa_plantresult-plant.
    MOVE g_wa_bapireturn1-message TO g_wa_plantresult-errormessage.
    MOVE 'FAILURE'(004)           TO g_wa_plantresult-flag.
    APPEND g_wa_plantresult       TO g_it_plantresult.
  ELSE.
    MOVE g_wa_marc-matnr    TO g_wa_plantresult-material.
    MOVE g_wa_plants-werks  TO g_wa_plantresult-plant.
    MOVE 'SUCCESS'(003)     TO g_wa_plantresult-flag.
    APPEND g_wa_plantresult TO g_it_plantresult.
  ENDIF.


ENDFORM.                    " BAPI_MATERIAL_SAVEDATA
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_marhead_data
*&amp;amp;---------------------------------------------------------------------*
*       Form to prepare the exporting parameter G_wa_bapimathead
*----------------------------------------------------------------------*
FORM prepare_marhead_data .

  g_wa_bapimathead-material   = g_wa_bapi_mara_ga-material.
  g_wa_bapimathead-ind_sector = g_wa_bapi_mara_ga-ind_sector.
  g_wa_bapimathead-matl_type  = g_wa_bapi_mara_ga-matl_type.

  IF g_wa_bapi_marc_ga-maint_stat CA c_k.
    g_wa_bapimathead-basic_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_v.
    g_wa_bapimathead-sales_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_e.
    g_wa_bapimathead-purchase_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_d.
    g_wa_bapimathead-mrp_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_p.
    g_wa_bapimathead-forecast_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_a.
    g_wa_bapimathead-work_sched_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_f.
    g_wa_bapimathead-prt_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_l.
    g_wa_bapimathead-storage_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_s.
    g_wa_bapimathead-warehouse_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_q.
    g_wa_bapimathead-quality_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_b.
    g_wa_bapimathead-account_view = c_x.
  ENDIF.

  IF g_wa_bapi_marc_ga-maint_stat CA c_g.
    g_wa_bapimathead-cost_view = c_x.
  ENDIF.

ENDFORM.                    " prepare_marhead_data
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form  move_getall_to_savedata
*&amp;amp;---------------------------------------------------------------------*
*Form to move data from the importing parameter of BAPI_MATERIAL_GET_ALL
* to exporting parameters of BAPI_MATERIAL_SAVEDATA
*----------------------------------------------------------------------*
FORM move_getall_to_savedata .

  MOVE-CORRESPONDING: g_wa_bapi_mara_ga TO g_wa_bapi_mara,
                      g_wa_bapi_marc_ga TO g_wa_bapi_marc,
                      g_wa_bapi_mpop_ga TO g_wa_bapi_mpop.
  MOVE                g_wa_bapi_mpgd_ga TO g_wa_bapi_mpgd.
  MOVE-CORRESPONDING  g_wa_bapi_mbew_ga TO g_wa_bapi_mbew.
  MOVE:               g_wa_bapi_mlgn_ga TO g_wa_bapi_mlgn,
                      g_wa_bapi_mvke_ga TO g_wa_bapi_mvke,
                      g_wa_bapi_mlgt_ga TO g_wa_bapi_mlgt.

  LOOP AT g_it_bapi_makt_ga INTO g_wa_bapi_makt_ga.
    MOVE-CORRESPONDING g_wa_bapi_makt_ga TO g_wa_bapi_makt.
    APPEND g_wa_bapi_makt TO g_it_bapi_makt.
    CLEAR g_wa_bapi_makt.
  ENDLOOP.

  LOOP AT g_it_bapi_marm_ga INTO g_wa_bapi_marm_ga.
    MOVE-CORRESPONDING g_wa_bapi_marm_ga TO g_wa_bapi_marm.
    APPEND g_wa_bapi_marm TO g_it_bapi_marm.
    CLEAR g_wa_bapi_marm.
  ENDLOOP.

  LOOP AT g_it_bapi_mean_ga INTO g_wa_bapi_mean_ga.
    MOVE-CORRESPONDING g_wa_bapi_mean_ga TO g_wa_bapi_mean.
    APPEND g_wa_bapi_mean TO g_it_bapi_mean.
    CLEAR g_wa_bapi_mean.
  ENDLOOP.

  LOOP AT g_it_bapi_mltx_ga INTO g_wa_bapi_mltx_ga.
    MOVE-CORRESPONDING g_wa_bapi_mltx_ga TO g_wa_bapi_mltx.
    APPEND g_wa_bapi_mltx TO g_it_bapi_mltx.
    CLEAR g_wa_bapi_mltx.
  ENDLOOP.

  LOOP AT g_it_bapi_mlan_ga INTO g_wa_bapi_mlan_ga.
    MOVE-CORRESPONDING g_wa_bapi_mlan_ga TO g_wa_bapi_mlan.
    APPEND g_wa_bapi_mlan TO g_it_bapi_mlan.
    CLEAR g_wa_bapi_mlan.
  ENDLOOP.

ENDFORM.                    " move_getall_to_savedata
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_x_structures
*&amp;amp;---------------------------------------------------------------------*
*       Form to prepare the X-sctrucures based on the content of their
*       corresponding strucures.
*----------------------------------------------------------------------*

FORM prepare_x_structures .

  DATA: l_it_dfies_tab TYPE TABLE OF dfies,
        l_wa_dfies_tab TYPE dfies.
  DATA: l_v_cntr TYPE i,
        l_v_tabname TYPE ddobjname,
        l_v_internal_tabnam(30),
        l_v_internal_tabnamx(30),
        l_v_tmp_str(50),
        l_v_tmp_strx(50).

  FIELD-SYMBOLS: &amp;lt;fs1&amp;gt; TYPE ANY,
                 &amp;lt;fs2&amp;gt; TYPE ANY.
  l_v_cntr = 0.

  DO 9 TIMES.

    l_v_cntr = l_v_cntr + 1.

    CASE l_v_cntr.
      WHEN 1.
        l_v_tabname          = 'BAPI_MARA'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARA'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARAX'.
      WHEN 2.
        l_v_tabname          = 'BAPI_MARC'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARC'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARCX'.
      WHEN 3.
        l_v_tabname          = 'BAPI_MPOP'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MPOP'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MPOPX'.
      WHEN 4.
        l_v_tabname          = 'BAPI_MPGD'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MPGD'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MPGDX'.
      WHEN 5.
        l_v_tabname          = 'BAPI_MARD'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MARD'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MARDX'.
      WHEN 6.
        l_v_tabname          = 'BAPI_MBEW'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MBEW'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MBEWX'.
      WHEN 7.
        l_v_tabname          = 'BAPI_MLGN'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MLGN'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MLGNX'.
      WHEN 8.
        l_v_tabname          = 'BAPI_MVKE'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MVKE'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MVKEX'.
      WHEN 9.
        l_v_tabname          = 'BAPI_MLGT'.
        l_v_internal_tabnam  = 'G_wa_BAPI_MLGT'.
        l_v_internal_tabnamx = 'G_wa_BAPI_MLGTX'.
    ENDCASE.

    CALL FUNCTION 'DDIF_FIELDINFO_GET'
     EXPORTING
       tabname              = l_v_tabname
       langu                = sy-langu
     TABLES
       dfies_tab            = l_it_dfies_tab
     EXCEPTIONS
       not_found            = 1
       internal_error       = 2
       OTHERS               = 3.

    IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

    LOOP AT l_it_dfies_tab INTO l_wa_dfies_tab.
      CONCATENATE l_v_internal_tabnam '-' l_wa_dfies_tab-fieldname INTO
      l_v_tmp_str.
      ASSIGN (l_v_tmp_str) TO &amp;lt;fs1&amp;gt;.

      IF NOT &amp;lt;fs1&amp;gt; IS INITIAL.
        CONCATENATE l_v_internal_tabnamx '-' l_wa_dfies_tab-fieldname
        INTO
        l_v_tmp_strx.
        ASSIGN (l_v_tmp_strx) TO &amp;lt;fs2&amp;gt;.
        MOVE c_x TO &amp;lt;fs2&amp;gt;.
      ENDIF.
    ENDLOOP.

  ENDDO.
  g_wa_bapi_marcx-replentime  = c_x.
  g_wa_bapi_mbewx-plndprdate1 = c_x.
  g_wa_bapi_marcx-mrp_ctrler  = c_x.
  g_wa_bapi_marcx-pur_group   = c_x.
  g_wa_bapi_marcx-proc_type   = c_x.
  g_wa_bapi_marcx-spproctype  = c_x.
  g_wa_bapi_marcx-sm_key      = c_x.
  g_wa_bapi_marcx-inhseprodt  = c_x.
  g_wa_bapi_marcx-plnd_delry  = c_x.
  g_wa_bapi_marcx-gr_pr_time  = c_x.
  g_wa_bapi_marcx-plan_strgp  = c_x.
  g_wa_bapi_marcx-specprocty  = c_x.

ENDFORM.                    " prepare_x_structures
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  prepare_main_structures
*&amp;amp;---------------------------------------------------------------------*
* To prepare the main structure i.e. to change the data from source
* plant to target plant and based on the check box populate table with
* data for Super bom and GC Part, Class 1 Materials,Class 2 Materials.
*----------------------------------------------------------------------*
FORM
prepare_main_structures .

  DATA: l_v_profit_ctr(10).

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      input  = g_wa_marc-werks
    IMPORTING
      output = l_v_profit_ctr.


  MOVE g_wa_marc-werks           TO g_wa_bapi_marc-plant.
  MOVE l_v_profit_ctr            TO g_wa_bapi_marc-profit_ctr.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpop-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpgd-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mbew-val_area.
  MOVE g_wa_marc-werks           TO g_wa_bapi_marcx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpopx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mpgdx-plant.
  MOVE g_wa_marc-werks           TO g_wa_bapi_mbewx-val_area.
  MOVE g_wa_bapi_mbew-val_type   TO g_wa_bapi_mbewx-val_type.
  MOVE g_wa_bapi_mlgn-whse_no    TO g_wa_bapi_mlgnx-whse_no.
  MOVE g_wa_bapi_mvke-sales_org  TO g_wa_bapi_mvkex-sales_org.
  MOVE g_wa_bapi_mvke-distr_chan TO g_wa_bapi_mvkex-distr_chan.
  MOVE g_wa_bapi_mlgt-whse_no    TO g_wa_bapi_mlgtx-whse_no.
  MOVE g_wa_bapi_mlgt-stge_type  TO g_wa_bapi_mlgtx-stge_type.

* For Plant 6090, the 'CC Phy Inv Indicator' should be set to blank
  IF g_wa_marc-werks EQ c_6090.
    g_wa_bapi_marc-cc_ph_inv = space.
  ENDIF.
  g_wa_bapi_marc-production_scheduler = space.

  IF p_class2 NE 'X'.
    IF ( g_wa_marc-beskz EQ 'E' AND g_wa_marc-sobsl EQ space ) OR
       ( g_wa_marc-beskz EQ 'X' AND g_wa_marc-sobsl EQ space ) OR
       ( g_wa_marc-beskz EQ 'F' AND g_wa_marc-sobsl EQ '30'  ) OR
       ( g_wa_marc-beskz EQ 'F' AND g_wa_marc-sobsl EQ space ).
      g_v_proc_type     = 'F'.
      g_v_spl_proc_code = c_40.
    ELSEIF g_wa_marc-beskz EQ 'X' AND g_wa_marc-sobsl EQ c_50.
      g_v_proc_type     = 'X'.
      g_v_spl_proc_code = c_50.
    ELSE.
      g_v_proc_type     = g_wa_marc-beskz.
      g_v_spl_proc_code = g_wa_marc-sobsl.
    ENDIF.
  ENDIF.

  IF p_class2 NE 'X'.
    IF p_super = 'X'.
* Populate table with data for Super bom and GC Part.
      PERFORM populate_screens_super.
    ELSE.
* Populate table with data for Class 1 Materials
      PERFORM populate_screens_class1.
    ENDIF.
  ELSE.
* Populate table with data for Class 2 Materials
    PERFORM populate_screens_class2.
  ENDIF.                           " F_CLASS2 ne 'X'

ENDFORM.                    " prepare_main_structures
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  refresh_data_variables
*&amp;amp;---------------------------------------------------------------------*
*      Refresh data variables
*----------------------------------------------------------------------*
FORM refresh_data_variables .

*All relevant internal tables
  REFRESH: g_it_bapi_makt_ga,
           g_it_bapi_marm_ga,
           g_it_bapi_mean_ga,
           g_it_bapi_mltx_ga,
           g_it_bapi_mlan_ga,
           g_it_bapireturn,
           g_it_return,
           g_it_bapi_makt,
           g_it_bapi_marm,
           g_it_bapi_mean,
           g_it_bapi_mltx,
           g_it_bapi_mlan.

*All relevant work areas
  CLEAR:   g_wa_bapi_mara_ga,
           g_wa_bapi_marc_ga,
           g_wa_bapi_mpop_ga,
           g_wa_bapi_mpgd_ga,
           g_wa_bapi_mbew_ga,
           g_wa_bapi_mlgn_ga,
           g_wa_bapi_mvke_ga,
           g_wa_bapi_mlgt_ga,
           g_wa_bapi_mfhm_ga,
           g_wa_bapi_myms_ga,
           g_wa_bapi_makt_ga,
           g_wa_bapi_marm_ga,
           g_wa_bapi_mean_ga,
           g_wa_bapi_mltx_ga,
           g_wa_bapi_mlan_ga,
           g_wa_bapireturn,
           g_wa_bapimathead,
           g_wa_bapi_mara,
           g_wa_bapi_marc,
           g_wa_bapi_mpop,
           g_wa_bapi_mpgd,
           g_wa_bapi_mbew,
           g_wa_bapi_mlgn,
           g_wa_bapi_mvke,
           g_wa_bapi_mlgt,
           g_wa_bapi_marax,
           g_wa_bapi_marcx,
           g_wa_bapi_mpopx,
           g_wa_bapi_mpgdx,
           g_wa_bapi_mbewx,
           g_wa_bapi_mlgnx,
           g_wa_bapi_mvkex,
           g_wa_bapi_mlgtx,
           g_wa_bapi_makt,
           g_wa_bapi_marm,
           g_wa_bapi_mean,
           g_wa_bapi_mltx,
           g_wa_bapi_mlan,
           g_wa_bapireturn1,
           g_wa_return.

ENDFORM.                    " refresh_data_variables
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_SUPER
*&amp;amp;---------------------------------------------------------------------*
*       To Extend Super Bom &amp;amp; GC parts from source plant to target
*       Plants.
*----------------------------------------------------------------------*
FORM populate_screens_super .

  DATA: l_v_superbom(1),   " Flag to indicate a Super Bom part
        l_v_gcpart(1).     " Flag to indicate a Gc part

  CLEAR g_wa_superbom.

  g_wa_bapi_marc-replentime  = g_v_repln_time.
  g_wa_bapi_mbew-plndprdate1 =  sy-datum.

* Check for super bom and GC material.
  READ TABLE g_it_superbom INTO g_wa_superbom
                       WITH KEY matnr = g_wa_marc-matnr.
  IF sy-subrc = 0.
* Set flag if material is GC Material
    IF g_wa_superbom-matnr+0(2) = c_gc.
      l_v_gcpart = 'X'.
    ENDIF.
* Set flag if Material is Super BOM (Configurable)
    IF g_wa_superbom-kzkfg = 'X'.
      l_v_superbom = 'X'.
    ENDIF.
  ENDIF.

* Determine the plant specific field values
  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.

* If Material is Super Bom OR GC part
    IF l_v_superbom = 'X' OR l_v_gcpart = 'X'.
      g_wa_bapi_marc-pur_group = g_wa_plants-pur_group.
    ENDIF.
  ENDIF.

  IF g_wa_marc-werks  EQ c_6140.
* For Plant 6140, it should always be 'F' and ' ' .
    g_wa_bapi_marc-proc_type  = 'F'.
    g_wa_bapi_marc-spproctype =  space.

* Populate the Sched Margin Key since it's not copied from ref plant
* Select Sched Margin key from database for 6010 and copy to 6140
    READ TABLE g_it_source_mat INTO g_wa_source_mat
                           WITH KEY matnr = g_wa_marc-matnr.
    IF sy-subrc = 0.
      g_wa_bapi_marc-sm_key = g_wa_source_mat-fhori.
    ENDIF.
  ELSE.
    IF  g_wa_bapi_mara-sh_mat_typ NE c_roh
    AND g_wa_bapi_mara-sh_mat_typ NE c_dien.
* Key rules for branches other than 6010 and 6140.
      IF  g_wa_marc-werks NE c_6010
      AND g_wa_marc-werks NE c_6140.
        g_wa_bapi_marc-proc_type = 'F'.
      ELSE.
        g_wa_bapi_marc-proc_type = g_v_proc_type.
      ENDIF.
    ENDIF.
    IF g_wa_bapi_mara-sh_mat_typ NE c_dien.
* Key rules for branches other than 6010 and 6140.
      IF  g_wa_marc-werks NE c_6010
      AND g_wa_marc-werks NE c_6140.
        g_wa_bapi_marc-spproctype  =  c_40.
      ELSE.
        g_wa_bapi_marc-spproctype  = g_v_spl_proc_code.
      ENDIF.
    ENDIF.

    IF g_wa_bapi_mara-sh_mat_typ = c_fert
    OR g_wa_bapi_mara-sh_mat_typ = c_halb
    OR g_wa_bapi_mara-sh_mat_typ = c_verp
    OR g_wa_bapi_mara-sh_mat_typ = c_nlag
    OR g_wa_bapi_mara-sh_mat_typ = c_unbw.
      g_wa_bapi_marc-inhseprodt = g_v_prod_time.
    ENDIF.
    g_wa_bapi_marc-plnd_delry = g_v_deliv_time.
    g_wa_bapi_marc-gr_pr_time = g_v_gr_proc_time.
    g_wa_bapi_marc-sm_key     = g_wa_plants-sched_margin.
  ENDIF.

  IF p_source = c_6010.
    g_wa_bapi_marc-sloc_exprc =  ' '.
  ENDIF.

* Target plant is 6140.
  IF g_wa_plants-werks  EQ c_6140.
    g_wa_bapi_marc-plan_strgp = c_y5.
  ENDIF.

* Key rules for branches other than 6010 and 6140.
  IF g_wa_plants-werks NE c_6010 AND
     g_wa_plants-werks NE c_6140.
    g_wa_bapi_marc-plan_strgp = c_25.
  ENDIF.


* Key rule for branch other than 6010.
  IF g_wa_plants-werks NE c_6010.
    g_wa_bapi_marc-specprocty = c_80.
  ENDIF.


ENDFORM.                    " populate_screens_super

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_CLASS1
*&amp;amp;---------------------------------------------------------------------*
*       Populate the BDC table with values for all the remaining
*       screens of MM01. Some of the screens require a different
*       set of values for Plant 6140, the Canadian plant
*----------------------------------------------------------------------*
FORM populate_screens_class1.

  g_wa_bapi_marc-replentime     = g_v_repln_time.
  g_wa_bapi_mbew-plndprdate1    =  sy-datum.

  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-pur_group  = g_wa_plants-pur_group.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.
  ENDIF.

  IF g_wa_marc-werks  EQ '6140'.
* For Plant 6140, it should always be 'F' and ' ' except when it is a
* phantom. For phantoms, it should be 'X' and '50'.
    IF g_v_proc_type  EQ 'X' AND g_v_spl_proc_code EQ '50'.
      g_wa_bapi_marc-proc_type  = 'X'.
      g_wa_bapi_marc-spproctype = '50'.
    ELSE.
      g_wa_bapi_marc-proc_type = 'F'.
      g_wa_bapi_marc-spproctype = space.
    ENDIF.

*   Populate the Sched Margin Key since it's not copied from ref plant
*   Select Sched Margin key from database for 6010 and copy to 6140
    READ TABLE g_it_source_mat INTO g_wa_source_mat
                           WITH KEY matnr = g_wa_marc-matnr.
    IF sy-subrc = 0.
      g_wa_bapi_marc-sm_key = g_wa_source_mat-fhori.
    ENDIF.
  ELSE.
    IF g_wa_bapi_mara-sh_mat_typ NE 'ROH' AND g_wa_bapi_mara-sh_mat_typ
    NE 'DIEN'.
      g_wa_bapi_marc-proc_type = g_v_proc_type.
    ENDIF.
    IF g_wa_bapi_mara-sh_mat_typ NE 'DIEN' AND p_class2 EQ space.
      g_wa_bapi_marc-spproctype  = g_v_spl_proc_code.
    ENDIF.
   IF g_wa_bapi_mara-sh_mat_typ = 'FERT' OR g_wa_bapi_mara-sh_mat_typ =
   'HALB'
   OR g_wa_bapi_mara-sh_mat_typ = 'VERP' OR g_wa_bapi_mara-sh_mat_typ =
   'NLAG'
   OR g_wa_bapi_mara-sh_mat_typ = 'UNBW'.
      g_wa_bapi_marc-inhseprodt = g_v_prod_time.
    ENDIF.
    g_wa_bapi_marc-plnd_delry = g_v_deliv_time.
    g_wa_bapi_marc-gr_pr_time = g_v_gr_proc_time.
    g_wa_bapi_marc-sm_key     = g_wa_plants-sched_margin.
  ENDIF.

  IF g_wa_marc-werks EQ '6140'.
    IF g_v_proc_type     EQ 'X' AND g_v_spl_proc_code EQ '50'.
      g_wa_bapi_marc-specprocty = space.
    ELSE.
      g_wa_bapi_marc-specprocty = '40'.
    ENDIF.
  ELSEIF p_class2 EQ 'X'.
    g_wa_bapi_marc-specprocty   = '40'.
  ENDIF.

ENDFORM.                               " POPULATE_SCREENS_CLASS1
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  POPULATE_SCREENS_CLASS2
*&amp;amp;---------------------------------------------------------------------*
*       This form populates the various screens required for MM01 for
*       class 2 materials. It is very similar to the Form POPULATE_
*       SCREENS_CLASS1.
*----------------------------------------------------------------------*
FORM populate_screens_class2.

* Determine the purchasing group for the plant
  READ TABLE g_it_target_plants INTO g_wa_plants
                            WITH KEY werks = g_wa_marc-werks.
  IF sy-subrc = 0.
    g_wa_bapi_marc-pur_group  = g_wa_plants-pur_group.
    g_wa_bapi_marc-mrp_ctrler = g_wa_plants-pur_group.
  ENDIF.

  g_wa_bapi_marc-specprocty = '40'.

ENDFORM.                               " POPULATE_SCREENS_CLASS2
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  PAGE_HEADER
*&amp;amp;---------------------------------------------------------------------*
*        To Print page header and other details
*----------------------------------------------------------------------*
FORM page_header .

*--Page Header
  FORMAT COLOR 1.
  WRITE:/1 'Run Date:'(015), sy-datum,
        65 'Stanley Works'(016),
       130 'Page No:'(017), sy-pagno LEFT-JUSTIFIED, 255 ''.

  WRITE:/1 'Run Time:'(018), sy-uzeit,
        40 sy-title,
       130 sy-uname, 255 ''.
  WRITE:/1 'Source  :'(019), sy-sysid,
       130 sy-cprog, 255 ''.
  FORMAT COLOR OFF.
  ULINE AT /1(142).

ENDFORM.                    " PAGE_HEADER
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_already_extended
*&amp;amp;---------------------------------------------------------------------*
*       Display materials already extended.
*----------------------------------------------------------------------*
FORM disp_mat_already_extended .

  IF NOT g_it_matextended[] IS INITIAL.
    FORMAT COLOR 1 INTENSIFIED OFF.
    WRITE:/40 'LIST OF MATERIALS WHICH ARE ALREADY EXTENDED'(005),
                142 ''.
    FORMAT COLOR OFF.
    SKIP.

    ULINE AT /1(142).
    WRITE:/1 sy-vline,
          2 'MATERIAL'(006),
         21 sy-vline,
         22 'PLANT'(007),
         27 sy-vline,
         28 'FAILURE FLAG'(008),
         40 sy-vline,
         51 'ERROR MESSAGE'(009),
        142 sy-vline.
    ULINE AT /1(142).

    LOOP AT g_it_matextended INTO g_wa_matextended.
      WRITE:/1 sy-vline,
             2 g_wa_matextended-material,
            21 sy-vline,
            22 g_wa_matextended-plant,
            27 sy-vline,
            28 g_wa_matextended-flag,
            40 sy-vline,
            41 g_wa_matextended-errormessage,
           142 sy-vline.
    ENDLOOP.
    ULINE AT /1(142).

    NEW-PAGE.
  ENDIF.
ENDFORM.                    " disp_mat_already_extended
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_not_fetched
*&amp;amp;---------------------------------------------------------------------*
*       Display materials for which the data could not be fetched.
*----------------------------------------------------------------------*
FORM disp_mat_not_fetched .

  IF NOT g_it_matresult[] IS INITIAL.
    FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE:/40 'LIST OF MATERIALS FOR WHICH IT COUNLD NOT FETCH DATA'(012),
 142 ''.
    FORMAT COLOR OFF.
    SKIP.
    ULINE AT /1(142).
    FORMAT COLOR 4 INTENSIFIED OFF.
    WRITE:/1 sy-vline,
           2 'MATERIAL'(006),
          21 sy-vline,
          22 'FAILURE FLAG'(008),
          30 sy-vline,
          51 'ERROR MESSAGE'(009),
         142 sy-vline.
    FORMAT COLOR OFF.
    ULINE AT /1(142).

    LOOP AT g_it_matresult INTO g_wa_matresult.
      WRITE:/1 sy-vline,
             2 g_wa_matresult-material,
            21 sy-vline,
            22 g_wa_matresult-flag,
            30 sy-vline,
            31 g_wa_matresult-errormessage,
          142 sy-vline.
    ENDLOOP.
    ULINE AT /1(142).
    NEW-PAGE.
  ENDIF.

ENDFORM.                    " disp_mat_not_fetched
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  disp_mat_fail_ext_plant
*&amp;amp;---------------------------------------------------------------------*
*       Display materials failed to extend to plant.
*----------------------------------------------------------------------*
FORM disp_mat_fail_ext_plant .

  FORMAT COLOR 1 INTENSIFIED OFF.
  WRITE:/40 'LIST OF FAILURE / SUCESS MATERIALS TRYED TO EXTENDED'(011),
                                                              142 ''.
  FORMAT COLOR OFF.
  SKIP.
  ULINE AT 1(142).

  FORMAT COLOR 4 INTENSIFIED OFF.
  WRITE:/1 sy-vline,
         2 'MATERIAL'(006),
        21 sy-vline,
        22 'PLANT'(007),
        27 sy-vline,
        28 'FAILURE / SUCESS'(010),
        40 sy-vline,
        51 'ERROR MESSAGE'(009),
       142 sy-vline.
  FORMAT COLOR OFF.
  ULINE AT /1(142).

  LOOP AT g_it_plantresult INTO g_wa_plantresult.
    WRITE:/1 sy-vline,
           2 g_wa_plantresult-material,
          21 sy-vline,
          22 g_wa_plantresult-plant,
          27 sy-vline,
          28 g_wa_plantresult-flag,
          40 sy-vline,
          41 g_wa_plantresult-errormessage,
         142 sy-vline.
  ENDLOOP.
  ULINE AT /1(142).
ENDFORM.                    " disp_mat_fail_ext_plant
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;lt;REMOVED BY MODERATOR&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Alvaro Tejada Galindo on Apr 7, 2008 3:20 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 11:23:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707723#M892723</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-07T11:23:29Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707724#M892724</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi jasmine,&lt;/P&gt;&lt;P&gt;                 plz check this BAPI FM: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BAPI_MATERIAL_GETLIST. Reward if its usefull.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Durgaprasad.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 11:23:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707724#M892724</guid>
      <dc:creator>P507709</dc:creator>
      <dc:date>2008-04-07T11:23:38Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707725#M892725</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Experts,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Actually Im working with WebDynpro. So i need BAPI name only. Not  the coding part..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any way thanks for the help.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 12:20:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707725#M892725</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-07T12:20:29Z</dc:date>
    </item>
    <item>
      <title>Re: BAPI for material</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707726#M892726</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;HI Dear,&lt;/P&gt;&lt;P&gt;What is the structure of table ZMMdata&lt;/P&gt;&lt;P&gt;from where does it get values&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Gaurav&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Apr 2008 13:07:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bapi-for-material/m-p/3707726#M892726</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-04-07T13:07:26Z</dc:date>
    </item>
  </channel>
</rss>

