‎2008 Apr 07 12:18 PM
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
‎2008 Apr 07 12:21 PM
‎2008 Apr 07 12:21 PM
‎2008 Apr 07 12:23 PM
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
‎2008 Apr 07 12:23 PM
HI,
Use this bapi for get the material
BAPI_MATERIAL_GET_DETAIL
Regards,
Brown.
‎2008 Apr 07 12:23 PM
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
‎2008 Apr 07 2:07 PM
HI Dear,
What is the structure of table ZMMdata
from where does it get values
regards,
Gaurav
‎2008 Apr 07 12:23 PM
hi jasmine,
plz check this BAPI FM:
BAPI_MATERIAL_GETLIST. Reward if its usefull.
Regards
Durgaprasad.
‎2008 Apr 07 1:20 PM
Hi Experts,
Actually Im working with WebDynpro. So i need BAPI name only. Not the coding part..
Any way thanks for the help.