Material Extension is always a requirement in SAP R/3 that take lot of time and effort. There are different way e.g. bapi, lsmw, bdc we can do it. However, LSMW or BDC is a bit tedious job. A better way to address is to use a program with selection screen and using BAPI to do so. This example will give you the selection screen where you can select the Material by Plant, material Type, Material Number and division to extend to new plant.
In my example I am extending all views of the Material from one plant to other plant. One can also use the same code to extend material from one Storage location to another storage location (LGORT).
List of BAPIs required to extend a Material.
a) BAPI_MATERIAL_SAVEDATA - Save / Extends Material Data
b) BAPI_MATERIAL_GETALL - BAPI to read data from existing Material from Plant
c) BAPI_MATINSPCTRL_SAVEREPLICA –
If Quality View is active, use this bapi to copy Inspection data
d) BAPI_TRANSACTION_COMMIT - Commit the Data save using bapi.
Other Function Modules Used
a) MAP2E_QMAT_TO_BAPI1001004_QMAT – Required when Quality View is Active.
b) CONVERSION_EXIT_ALPHA_INPUT
c) WS_DOWNLOAD - Download data from internal table to File
d) WS_UPLOAD - Upload data from file to internal Table
In the sample scenario Profit Center is equal to plant and Valuation Level is Plant.
Step 1. Selection Screen.
TABLES: t001l, "Storage Locations
mara, "General Material Data
makt, "Material Descriptions
mbew, "Material Valuation
marc, "Plant Data for Material
mvke. "Sales Data
DATA: bapi_head LIKE bapimathead,
bapi_makt LIKE bapi_makt, "Material Description
bapi_mara1 LIKE bapi_mara, "Client Data
bapi_marax LIKE bapi_marax,
bapi_marc1 LIKE bapi_marc, "Plant View
bapi_marcx LIKE bapi_marcx,
bapi_mbew1 LIKE bapi_mbew, "Accounting View
bapi_mbewx LIKE bapi_mbewx,
bapi_mvke1 TYPE bapi_mvke,
bapi_mvkex TYPE bapi_mvkex,
bapi_return LIKE bapiret2,
bapi_mard TYPE bapi_mard,
bapi_mardx TYPE bapi_mardx,
bapi_mlan TYPE STANDARD TABLE OF bapi_mlan,
ls_bapi_mlan TYPE bapi_mlan.
DATA: lt_bapi_return TYPE STANDARD TABLE OF bapiret2,
bapi_qmat TYPE STANDARD TABLE OF bapi1001004_qmat,
ls_bapi_qmat TYPE bapi1001004_qmat.
DATA: BEGIN OF bdcdata OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.
DATA: BEGIN OF int_makt OCCURS 100.
INCLUDE STRUCTURE bapi_makt.
DATA: END OF int_makt.
DATA: ls_qmat TYPE qmat,
lt_qmat TYPE STANDARD TABLE OF qmat.
DATA: BEGIN OF int_mat OCCURS 100,
werks(4), "Plant
mtart(4), "Material type
matnr(18), "Material number
matkl(9) , "Material group
mbrsh(1), "Industry sector
meins(3), "Base unit of measure
gewei(3), "Weight Unit
spart(2), "Division
ekgrp(3), "Purchasing group
bwkey(4), "Valuation Area
bwtar(10), "Valuation Type
vprsv(1), "Price control indicator
stprs(12), "Standard price
peinh(3), "Price unit
spras(2), "Language key
maktx(40), "Material description
vkorg(04), "Sales Organisation
vtweg(02), "Distribution Channel
mara(01), "MARA VALUE
mbew(01), "MBEW
makt(01), "MAKT
mvke(01), "SALES
END OF int_mat.
SELECT-OPTIONS:
plant FOR marc-werks OBLIGATORY MEMORY ID plt,
material FOR mara-matnr MEMORY ID mat,
matltype FOR mara-mtart MEMORY ID mty,
division FOR mara-spart MEMORY ID div,
to_sorg FOR mvke-vkorg OBLIGATORY
NO INTERVALS NO-EXTENSION MEMORY ID vko,
“Sales Org/Dist Channel is required for the Sales View.
to_dchnl FOR mvke-vtweg OBLIGATORY
NO INTERVALS NO-EXTENSION MEMORY ID vtw,
to_plant FOR marc-werks OBLIGATORY
NO INTERVALS NO-EXTENSION.
PARAMETERS: f_file LIKE rlgrap-filename
DEFAULT 'C:\DATA\ZMATERIAL.XLS' MEMORY ID f_file,
getdata AS CHECKBOX DEFAULT 'X',
"Tick to download materials data to local harddisk
upddata AS CHECKBOX DEFAULT 'X'.
"Tick to update date to Materials Master
IF getdata = 'X'.
PERFORM download_data.
PERFORM download_file. “This File provides a log for the list of material data extended
ENDIF.
IF upddata = 'X'.
PERFORM upload_file.
PERFORM update_mm.
ENDIF.
2. Download data from existing Plant
FORM download_data.
SELECT * FROM marc WHERE lvorm EQ ' '
AND werks IN plant
AND matnr IN material.
CLEAR mara.
SELECT SINGLE * FROM mara WHERE matnr = marc-matnr.
CHECK matltype.
CHECK division.
CLEAR mbew.
SELECT SINGLE * FROM mbew WHERE matnr = marc-matnr
AND bwkey = marc-werks.
CLEAR makt.
SELECT SINGLE * FROM makt WHERE spras = 'EN'
AND matnr = marc-matnr.
CLEAR mvke.
SELECT SINGLE * FROM mvke WHERE
matnr = marc-matnr.
* vkorg = to_sorg-low AND
* vtweg = to_dchnl-low.
IF sy-subrc = 0. "SELECT SINGLE * FROM mvke
int_mat-mvke = 'X'.
ENDIF. "sy-subrc = 0. "SELECT SINGLE * FROM mvke
WRITE:/ marc-werks, "Plant
mara-mtart, "Material type
mara-matnr, "Material number
mara-matkl, "Material group
mara-mbrsh, "Industry sector
mara-meins, "Base unit of measure
mvke-vkorg, "Sales Organization
mvke-vtweg, "Distribution Channel
mara-gewei, "Weight Unit
mara-spart, "Division
marc-ekgrp, "Purchasing group
mbew-bwkey, "Valuation Area
mbew-bwtar, "Valuation Type
mbew-vprsv, "Price control indicator
mbew-stprs, "Standard price
mbew-peinh, "Price unit
makt-spras, "Language key
makt-maktx. "Material description
int_mat-werks = marc-werks. "Plant
int_mat-mtart = mara-mtart. "Material type
int_mat-matnr = mara-matnr. "Material number
int_mat-matkl = mara-matkl. "Material group
int_mat-mbrsh = mara-mbrsh. "Industry sector
int_mat-meins = mara-meins. "Base unit of measure
int_mat-gewei = mara-gewei. "Weight Unit
int_mat-spart = mara-spart. "Division
int_mat-ekgrp = marc-ekgrp. "Purchasing group
int_mat-bwkey = mbew-bwkey. "Valuation Area
int_mat-bwtar = mbew-bwtar. "Valuation Type
int_mat-vprsv = mbew-vprsv. "Price control indicator
int_mat-stprs = mbew-stprs. "Standard price
int_mat-peinh = mbew-peinh. "Price unit
int_mat-spras = makt-spras. "Language key
int_mat-maktx = makt-maktx. "Material description
int_mat-vkorg = mvke-vkorg. "Sales Organization
int_mat-vtweg = mvke-vtweg. "Distribution Channel
APPEND int_mat.
CLEAR int_mat.
ENDSELECT.
ENDFORM. "DOWNLOAD_DATA
FORM download_file.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
filename = f_file
filetype = 'DAT'
TABLES
data_tab = int_mat
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
IF sy-subrc = 0.
FORMAT COLOR COL_GROUP.
WRITE:/ 'Data Download Successfully to your local harddisk'.
SKIP.
ENDIF.
ENDFORM. "DOWNLOAD_FILE
3. Upload and Extend Material
FORM upload_file.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = f_file
filetype = 'DAT'
* FILETYPE = 'WK1'
TABLES
data_tab = int_mat
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
IF sy-subrc = 0.
FORMAT COLOR COL_GROUP.
WRITE:/ 'Data Upload Successfully from your local harddisk'.
SKIP.
ENDIF.
ENDFORM. "UPLOAD_FILE
*&---------------------------------------------------------------------*
*& Form UPDATE_MM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM update_mm.
DATA:
ls_clientdata TYPE bapi_mara_ga,
ls_plantdata TYPE bapi_marc_ga,
ls_forecastparameters TYPE bapi_mpop_ga,
ls_planningdata TYPE bapi_mpgd_ga,
ls_storagelocationdata TYPE bapi_mard_ga,
ls_valuationdata TYPE bapi_mbew_ga,
ls_warehousenumberdata TYPE bapi_mlgn_ga,
ls_salesdata TYPE bapi_mvke_ga,
ls_storagetypedata TYPE bapi_mlgt_ga,
ls_productionresourcetooldata TYPE bapi_mfhm_ga,
ls_lifovaluationdata TYPE bapi_myms_ga.
DATA:
lt_bapi_makt_ga TYPE STANDARD TABLE OF bapi_makt_ga,
ls_bapi_makt_ga TYPE bapi_makt_ga,
ls_bapi_mlan_ga TYPE bapi_mlan_ga,
lt_bapi_mlan_ga TYPE STANDARD TABLE OF bapi_mlan_ga.
DATA:
lt_job_log TYPE STANDARD TABLE OF bapiret2.
LOOP AT int_mat.
"************************Get All Data of the material*********************************
CALL FUNCTION 'BAPI_MATERIAL_GETALL'
EXPORTING
material = int_mat-matnr "material
* COMPANYCODE =
valuationarea = int_mat-bwkey
valuationtype = int_mat-bwtar
plant = int_mat-werks
* STORAGELOCATION =
salesorganisation = int_mat-vkorg
distributionchannel = int_mat-vtweg
* WAREHOUSENUMBER =
* STORAGETYPE =
* LIFOVALUATIONLEVEL =
* MATERIAL_EVG =
* KZRFB_ALL =
IMPORTING
clientdata = ls_clientdata
plantdata = ls_plantdata
* forecastparameters = ls_forecastparameters
* planningdata = ls_planningdata
storagelocationdata = ls_storagelocationdata
valuationdata = ls_valuationdata
warehousenumberdata = ls_warehousenumberdata
salesdata = ls_salesdata
storagetypedata = ls_storagetypedata
productionresourcetooldata = ls_productionresourcetooldata
lifovaluationdata = ls_lifovaluationdata
TABLES
materialdescription = lt_bapi_makt_ga
* UNITSOFMEASURE =
* INTERNATIONARTICLENUMBERS =
* MATERIALTEXT =
taxclassifications = lt_bapi_mlan_ga
* EXTENSIONOUT =
* RETURN =
.
"************************End Get All Data of Material********************************
* Header
bapi_head-material = ls_clientdata-material.
bapi_head-ind_sector = ls_clientdata-ind_sector.
bapi_head-matl_type = ls_clientdata-matl_type.
* bapi_head-ekwsl = ls_clientdata-ekwsl.
bapi_head-basic_view = 'X'.
bapi_head-purchase_view = 'X'.
bapi_head-account_view = 'X'.
bapi_head-mrp_view = 'X'.
bapi_head-work_sched_view = 'X'.
bapi_head-cost_view = 'X'.
IF int_mat-mvke = 'X'.
bapi_head-sales_view = 'X'.
ENDIF.
bapi_head-storage_view = 'X'.
“For Extending Quality View Data.
SELECT * INTO TABLE lt_qmat
FROM qmat
WHERE matnr = int_mat-matnr AND
werks EQ plant-low.
IF sy-subrc = 0.
bapi_head-inp_fld_check = 'W'.
bapi_head-quality_view = 'X'.
ENDIF.
* Material Description
READ TABLE lt_bapi_makt_ga INTO ls_bapi_makt_ga INDEX 1.
IF sy-subrc = 0.
REFRESH int_makt.
int_makt-langu = ls_bapi_makt_ga-langu.
int_makt-matl_desc = ls_bapi_makt_ga-matl_desc.
APPEND int_makt.
CLEAR ls_bapi_makt_ga.
ENDIF.
* Client Data - Basic
bapi_mara1-pur_valkey = ls_clientdata-pur_valkey.
bapi_mara1-matl_group = ls_clientdata-matl_group.
bapi_mara1-base_uom = ls_clientdata-base_uom.
bapi_mara1-unit_of_wt = ls_clientdata-unit_of_wt.
bapi_mara1-division = ls_clientdata-division.
bapi_mara1-dsn_office = ls_clientdata-dsn_office.
bapi_mara1-mat_grp_sm = ls_clientdata-mat_grp_sm.
bapi_mara1-trans_grp = ls_clientdata-trans_grp.
bapi_mara1-std_descr = ls_clientdata-std_descr.
bapi_marax-std_descr = 'X'.
bapi_marax-pur_valkey = 'X'.
bapi_marax-dsn_office = 'X'.
bapi_marax-mat_grp_sm = 'X'.
bapi_marax-trans_grp = 'X'.
bapi_marax-matl_group = 'X'.
bapi_marax-base_uom = 'X'.
bapi_marax-unit_of_wt = 'X'.
bapi_marax-division = 'X'.
* Plant - Purchasing
bapi_marc1-plant = to_plant-low. "ls_plantdata-plant.
bapi_marc1-pur_group = ls_plantdata-pur_group. "Purch Group
bapi_marc1-availcheck = ls_plantdata-availcheck.
bapi_marc1-loadinggrp = ls_plantdata-loadinggrp.
bapi_marc1-base_qty_plan = ls_plantdata-base_qty_plan. "Base Qty
bapi_marc1-gr_pr_time = ls_plantdata-gr_pr_time. "Purchasing time for GR
bapi_marc1-quotausage = ls_plantdata-quotausage. "Quota Arrangement usage
bapi_marc1-auto_p_ord = ls_plantdata-auto_p_ord. "Auto purch allow
bapi_marc1-mrp_group = ls_plantdata-mrp_group.
bapi_marc1-mrp_type = ls_plantdata-mrp_type.
bapi_marc1-pl_ti_fnce = ls_plantdata-pl_ti_fnce.
bapi_marc1-mrp_ctrler = ls_plantdata-mrp_ctrler.
bapi_marc1-lotsizekey = ls_plantdata-lotsizekey.
bapi_marc1-round_val = ls_plantdata-round_val.
bapi_marc1-proc_type = ls_plantdata-proc_type.
bapi_marc1-spproctype = ls_plantdata-spproctype.
bapi_marc1-batchentry = ls_plantdata-batchentry.
bapi_marc1-iss_st_loc = ls_plantdata-iss_st_loc.
bapi_marc1-backflush = ls_plantdata-backflush.
bapi_marc1-plnd_delry = ls_plantdata-plnd_delry.
bapi_marc1-sm_key = ls_plantdata-sm_key.
bapi_marc1-plan_strgp = ls_plantdata-plan_strgp.
bapi_marc1-prodprof = ls_plantdata-prodprof.
bapi_marc1-consummode = ls_plantdata-consummode.
bapi_marc1-fwd_cons = ls_plantdata-fwd_cons.
bapi_marc1-bwd_cons = ls_plantdata-bwd_cons.
bapi_marc1-variance_key = ls_plantdata-variance_key.
bapi_marc1-profit_ctr = ls_plantdata-profit_ctr.
bapi_marc1-determ_grp = ls_plantdata-determ_grp.
bapi_marc1-ctrl_key = ls_plantdata-ctrl_key.
bapi_marc1-ctrl_code = ls_plantdata-ctrl_code.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = to_plant-low
IMPORTING
output = ls_plantdata-profit_ctr.
bapi_marc1-profit_ctr = ls_plantdata-profit_ctr. "ls_plantdata-plant. "PROFIT_CTR
bapi_marc1-determ_grp = ls_plantdata-determ_grp.
* bapi_marcx-DEL_FLAG = 'X'.
bapi_marcx-plant = to_plant-low. "ls_plantdata-plant.
bapi_marcx-pur_group = 'X'.
bapi_marcx-availcheck = 'X'.
bapi_marcx-loadinggrp = 'X'.
bapi_marcx-base_qty_plan = 'X'.
bapi_marcx-gr_pr_time = 'X'.
bapi_marcx-quotausage = 'X'.
bapi_marcx-auto_p_ord = 'X'.
bapi_marcx-mrp_group = 'X'.
bapi_marcx-mrp_type = 'X'.
bapi_marcx-pl_ti_fnce = 'X'.
bapi_marcx-mrp_ctrler = 'X'.
bapi_marcx-lotsizekey = 'X'.
bapi_marcx-round_val = 'X'.
bapi_marcx-proc_type = 'X'.
bapi_marcx-spproctype = 'X'.
bapi_marcx-batchentry = 'X'.
bapi_marcx-iss_st_loc = 'X'.
bapi_marcx-backflush = 'X'.
bapi_marcx-plnd_delry = 'X'.
bapi_marcx-sm_key = 'X'.
bapi_marcx-plan_strgp = 'X'.
bapi_marcx-prodprof = 'X'.
bapi_marcx-consummode = 'X'.
bapi_marcx-fwd_cons = 'X'.
bapi_marcx-bwd_cons = 'X'.
bapi_marcx-variance_key = 'X'.
bapi_marcx-profit_ctr = 'X'.
bapi_marcx-determ_grp = 'X'.
bapi_marcx-ctrl_key = 'X'.
bapi_marcx-ctrl_code = 'X'.
* Storage Location Data
IF ls_storagelocationdata-stge_loc IS INITIAL.
ls_storagelocationdata-stge_loc = 'FG01'.
ENDIF. "ls_storagelocationdata-stge_loc IS INITIAL.
bapi_mard-plant = to_plant-low.
bapi_mard-stge_loc = ls_storagelocationdata-stge_loc.
bapi_mardx-plant = to_plant-low.
bapi_mardx-stge_loc = ls_storagelocationdata-stge_loc.
* Accounting - VALUATIONDATA
bapi_mbew1-val_area = to_plant-low.
bapi_mbew1-val_type = ls_valuationdata-val_type.
bapi_mbew1-val_class = ls_valuationdata-val_class.
bapi_mbew1-price_ctrl = ls_valuationdata-price_ctrl.
bapi_mbew1-std_price = ls_valuationdata-std_price.
bapi_mbew1-price_unit = ls_valuationdata-price_unit.
bapi_mbew1-qty_struct = ls_valuationdata-qty_struct.
bapi_mbew1-orig_mat = ls_valuationdata-orig_mat.
bapi_mbewx-val_area = to_plant-low. "ls_valuationdata-val_area.
bapi_mbewx-val_type = ls_valuationdata-val_type.
bapi_mbewx-val_class = 'X'.
bapi_mbewx-price_ctrl = 'X'.
bapi_mbewx-std_price = 'X'.
bapi_mbewx-price_unit = 'X'.
bapi_mbewx-qty_struct = 'X'.
bapi_mbewx-orig_mat = 'X'.
* Tax Classification
LOOP AT lt_bapi_mlan_ga INTO ls_bapi_mlan_ga.
ls_bapi_mlan-depcountry = ls_bapi_mlan_ga-depcountry.
ls_bapi_mlan-depcountry_iso = ls_bapi_mlan_ga-depcountry_iso.
CASE sy-tabix.
WHEN 1.
ls_bapi_mlan-tax_type_1 = ls_bapi_mlan_ga-tax_type_1.
ls_bapi_mlan-taxclass_1 = ls_bapi_mlan_ga-taxclass_1.
WHEN 2.
ls_bapi_mlan-tax_type_2 = ls_bapi_mlan_ga-tax_type_1.
ls_bapi_mlan-taxclass_2 = ls_bapi_mlan_ga-taxclass_1.
WHEN 3.
ls_bapi_mlan-tax_type_3 = ls_bapi_mlan_ga-tax_type_1.
ls_bapi_mlan-taxclass_3 = ls_bapi_mlan_ga-taxclass_1.
WHEN 4.
ls_bapi_mlan-tax_type_4 = ls_bapi_mlan_ga-tax_type_1.
ls_bapi_mlan-taxclass_4 = ls_bapi_mlan_ga-taxclass_1.
ENDCASE. "sy-tabix.
ENDLOOP. "AT lt_bapi_mlan_ga INTO ls_bapi_mlan_ga.
CLEAR bapi_mlan.
IF ls_bapi_mlan IS NOT INITIAL.
APPEND ls_bapi_mlan TO bapi_mlan.
ENDIF. "ls_bapi_mlan is not INITIAL.
"SALES DATA
IF int_mat-mvke = 'X'.
bapi_mvke1-sales_org = to_sorg-low. "ls_salesdata-sales_org.
bapi_mvke1-matl_stats = ls_salesdata-matl_stats.
bapi_mvke1-mat_pr_grp = ls_salesdata-mat_pr_grp.
bapi_mvke1-acct_assgt = ls_salesdata-acct_assgt.
bapi_mvke1-distr_chan = to_dchnl-low. "ls_salesdata-distr_chan.
bapi_mvke1-item_cat = ls_salesdata-item_cat.
bapi_mvke1-matl_grp_1 = ls_salesdata-matl_grp_1.
bapi_mvke1-matl_grp_2 = ls_salesdata-matl_grp_2.
bapi_mvke1-matl_grp_3 = ls_salesdata-matl_grp_3.
bapi_mvke1-matl_grp_4 = ls_salesdata-matl_grp_4.
bapi_mvke1-matl_grp_5 = ls_salesdata-matl_grp_5.
bapi_mvke1-sales_unit = ls_salesdata-sales_unit.
bapi_mvke1-acct_assgt = ls_salesdata-acct_assgt.
bapi_mvkex-sales_org = to_sorg-low.
bapi_mvkex-matl_stats = 'X'.
bapi_mvkex-mat_pr_grp = 'X'.
bapi_mvkex-acct_assgt = 'X'.
bapi_mvkex-distr_chan = to_dchnl-low.
bapi_mvkex-item_cat = 'X'.
bapi_mvkex-matl_grp_1 = 'X'.
bapi_mvkex-matl_grp_2 = 'X'.
bapi_mvkex-matl_grp_3 = 'X'.
bapi_mvkex-matl_grp_4 = 'X'.
bapi_mvkex-matl_grp_5 = 'X'.
bapi_mvkex-sales_unit = 'X'.
bapi_mvkex-acct_assgt = 'X'.
ENDIF. " IF int_mat-mvke = 'X'.
* WRITE:/ bapi_head, bapi_marc1-plant, to_plant-low.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = bapi_head
clientdata = bapi_mara1
clientdatax = bapi_marax
plantdata = bapi_marc1
plantdatax = bapi_marcx
* FORECASTPARAMETERS =
* FORECASTPARAMETERSX =
* PLANNINGDATA =
* PLANNINGDATAX =
storagelocationdata = bapi_mard
storagelocationdatax = bapi_mardx
valuationdata = bapi_mbew1
valuationdatax = bapi_mbewx
salesdata = bapi_mvke1
salesdatax = bapi_mvkex
* STORAGETYPEDATA =
* STORAGETYPEDATAX =
IMPORTING
return = bapi_return
TABLES
materialdescription = int_makt
taxclassifications = bapi_mlan
.
WRITE:/ 'BAPI Message ', ls_clientdata-material, bapi_return-message.
APPEND bapi_return TO lt_job_log.
IF bapi_return-type = 'S'. "Material SAve/Extend Success
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
* IMPORTING
* RETURN =
.
IF bapi_head-quality_view = 'X'.
LOOP AT lt_qmat INTO ls_qmat.
CLEAR : ls_bapi_qmat.
CALL FUNCTION 'MAP2E_QMAT_TO_BAPI1001004_QMAT'
EXPORTING
qmat = ls_qmat
CHANGING
bapi1001004_qmat = ls_bapi_qmat.
ls_bapi_qmat-plant = to_plant-low.
APPEND ls_bapi_qmat TO bapi_qmat.
ENDLOOP. "AT lt_qmat INTO ls_qmat.
CALL FUNCTION 'BAPI_MATINSPCTRL_SAVEREPLICA'
TABLES
return = lt_bapi_return
inspectionctrl = bapi_qmat.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
ENDIF. "bapi_head-QUALITY_VIEW = 'X'.
ENDIF. "bapi_return-type = 'S'. "Material SAve/Extend Success
ENDLOOP.
ENDFORM. "UPDATE_MM