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

BAPI for material

Former Member
0 Likes
3,832

Hi Experts,

I need BAPI for retrieving Following values based on Material number.

Material type.

Material group.

material number.

Created date.

created person.

Thanks,

<REMOVED BY MODERATOR>

Edited by: Alvaro Tejada Galindo on Apr 7, 2008 3:18 PM

1 ACCEPTED SOLUTION
Read only

RaymondGiuseppi
Active Contributor
0 Likes
2,382

try BAPI_MATERIAL_GET_DETAIL

Regards

7 REPLIES 7
Read only

RaymondGiuseppi
Active Contributor
0 Likes
2,383

try BAPI_MATERIAL_GET_DETAIL

Regards

Read only

0 Likes
2,382

BAPI_STANDARDMATERIAL_CREATE - To create / extend Material

BAPI_MATERIAL_GET_ALL-gets thecomplete details of the material.

BAPI_MATERIAL_SAVEDATA - Create and Change Material

BAPI_MATERIAL_DISPLAY

BAPI_MATERIAL_GET_DETAIL

BAPI_MATERIAL_EXISTENCECHECK

BAPI_MATERIAL_GETBATCHES

BAPI_MATERIAL_GETLIST

U can use Select from mara directly before use MARA


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 & 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 & Costing 1
*                   views.
************************************************************************
* Input  :
*        Select-options  : 1. Material Number
*                          2. Target Plant
*
*        Parameters      : 1. Source Plant
*                          2. Class II Parts
*                          3. Super Bom & 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 & 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.


*&---------------------------------------------------------------------*
*&      Form  VALIDATE_TARGET_PLANTS
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  VALIDATE_MATERIAL_RANGE
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  get_final_target_plants
*&---------------------------------------------------------------------*
*       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

*&---------------------------------------------------------------------*
*&      Form  get_final_materials_plants
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*& Form  BAPI_MATERIAL_GET_ALL
*&---------------------------------------------------------------------*
*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
*&---------------------------------------------------------------------*
*&      Form  BAPI_MATERIAL_SAVEDATA
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  prepare_marhead_data
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*& Form  move_getall_to_savedata
*&---------------------------------------------------------------------*
*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
*&---------------------------------------------------------------------*
*&      Form  prepare_x_structures
*&---------------------------------------------------------------------*
*       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: <fs1> TYPE ANY,
                 <fs2> 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 <> 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 <fs1>.

      IF NOT <fs1> IS INITIAL.
        CONCATENATE l_v_internal_tabnamx '-' l_wa_dfies_tab-fieldname
        INTO
        l_v_tmp_strx.
        ASSIGN (l_v_tmp_strx) TO <fs2>.
        MOVE c_x TO <fs2>.
      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
*&---------------------------------------------------------------------*
*&      Form  prepare_main_structures
*&---------------------------------------------------------------------*
* 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
*&---------------------------------------------------------------------*
*&      Form  refresh_data_variables
*&---------------------------------------------------------------------*
*      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
*&---------------------------------------------------------------------*
*&      Form  POPULATE_SCREENS_SUPER
*&---------------------------------------------------------------------*
*       To Extend Super Bom & 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

*&---------------------------------------------------------------------*
*&      Form  POPULATE_SCREENS_CLASS1
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  POPULATE_SCREENS_CLASS2
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  PAGE_HEADER
*&---------------------------------------------------------------------*
*        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
*&---------------------------------------------------------------------*
*&      Form  disp_mat_already_extended
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  disp_mat_not_fetched
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  disp_mat_fail_ext_plant
*&---------------------------------------------------------------------*
*       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

<REMOVED BY MODERATOR>

Edited by: K.R.Reddy on Apr 7, 2008 1:23 PM

Code Formatted by: Alvaro Tejada Galindo on Apr 7, 2008 3:18 PM

Read only

Former Member
0 Likes
2,382

HI,

Use this bapi for get the material

BAPI_MATERIAL_GET_DETAIL

Regards,

Brown.

Read only

Former Member
0 Likes
2,382

Hi,


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 & 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 & Costing 1
*                   views.
************************************************************************
* Input  :
*        Select-options  : 1. Material Number
*                          2. Target Plant
*
*        Parameters      : 1. Source Plant
*                          2. Class II Parts
*                          3. Super Bom & 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 & 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.


*&---------------------------------------------------------------------*
*&      Form  VALIDATE_TARGET_PLANTS
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  VALIDATE_MATERIAL_RANGE
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  get_final_target_plants
*&---------------------------------------------------------------------*
*       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

*&---------------------------------------------------------------------*
*&      Form  get_final_materials_plants
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*& Form  BAPI_MATERIAL_GET_ALL
*&---------------------------------------------------------------------*
*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
*&---------------------------------------------------------------------*
*&      Form  BAPI_MATERIAL_SAVEDATA
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  prepare_marhead_data
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*& Form  move_getall_to_savedata
*&---------------------------------------------------------------------*
*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
*&---------------------------------------------------------------------*
*&      Form  prepare_x_structures
*&---------------------------------------------------------------------*
*       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: <fs1> TYPE ANY,
                 <fs2> 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 <> 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 <fs1>.

      IF NOT <fs1> IS INITIAL.
        CONCATENATE l_v_internal_tabnamx '-' l_wa_dfies_tab-fieldname
        INTO
        l_v_tmp_strx.
        ASSIGN (l_v_tmp_strx) TO <fs2>.
        MOVE c_x TO <fs2>.
      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
*&---------------------------------------------------------------------*
*&      Form  prepare_main_structures
*&---------------------------------------------------------------------*
* 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
*&---------------------------------------------------------------------*
*&      Form  refresh_data_variables
*&---------------------------------------------------------------------*
*      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
*&---------------------------------------------------------------------*
*&      Form  POPULATE_SCREENS_SUPER
*&---------------------------------------------------------------------*
*       To Extend Super Bom & 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

*&---------------------------------------------------------------------*
*&      Form  POPULATE_SCREENS_CLASS1
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  POPULATE_SCREENS_CLASS2
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  PAGE_HEADER
*&---------------------------------------------------------------------*
*        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
*&---------------------------------------------------------------------*
*&      Form  disp_mat_already_extended
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  disp_mat_not_fetched
*&---------------------------------------------------------------------*
*       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
*&---------------------------------------------------------------------*
*&      Form  disp_mat_fail_ext_plant
*&---------------------------------------------------------------------*
*       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

Regards,

<REMOVED BY MODERATOR>

Edited by: Alvaro Tejada Galindo on Apr 7, 2008 3:20 PM

Read only

0 Likes
2,382

HI Dear,

What is the structure of table ZMMdata

from where does it get values

regards,

Gaurav

Read only

P507709
Participant
0 Likes
2,382

hi jasmine,

plz check this BAPI FM:

BAPI_MATERIAL_GETLIST. Reward if its usefull.

Regards

Durgaprasad.

Read only

Former Member
0 Likes
2,382

Hi Experts,

Actually Im working with WebDynpro. So i need BAPI name only. Not the coding part..

Any way thanks for the help.