06-12-2008 12:03 PM
Dear Guru's,
While doing Material extension through BAPI_MATERIAL_SAVEDATA from source plant to destination plant
I am getting below error.
"Profit center 1000/3330 does not exist "
My problem is The profit center is already maintaned in the system.
How can i resolve this problem.
Please help me.
Thanks in advance.
Prashanth maturu
06-13-2008 6:31 AM
Hi,
If u r sure that the profit center exists in ur system and u got the error, its simple.
Field PRCTR (Profit Center) is of 10 Characters. u r passing only 4 or 5 chars.
So u r getting that error.
Solution is that you have to add leading zeroes to that profit center.
u can use the FM given below to add the leading zeroes.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = ITAB-PRCTR
IMPORTING
OUTPUT = ITAB-PRCTR.
Regards,
Asif Ali Khan
06-12-2008 12:46 PM
hi
u have to use same profit center... which u have used initially at the time of creation .....
so at the time of extension u have use same profit center.
06-12-2008 1:49 PM
hi,
You also need to extend bapi_te_mara and bape_te_marax. Remember that all types in bapi_te_mara must be char types which correspond to the extension of zmm01s0001. The extension of bapi_te_marax must contain the same named fields as the other two extensions, but all must have a type BAPIUPDATE (CHAR 1
thanks
abdul.
06-12-2008 2:52 PM
Dear Abdul,
Thanks for your great co-operation.
The point you have mentioned in the reply..
I have already maintained ..please check my code. to resolve the problem...
REPORT zmmr_material_extension.
TABLES: t001l, "Storage Locations
mara, "General Material Data
makt, "Material Descriptions
mbew, "Material Valuation
marc, "Plant Data for Material
mard, " Storage location
bapiparex, " bapi structure for parameter extension.
bapiparexx, "bapi structure for parameter extension.
bapi_te_mara,
bapi_te_marax,
bapi_te_marc,
bapi_te_marcx,
bapi_te_mard,
bapi_te_mardx.
BAPI_RETURN .
DATA : loop_idx TYPE sy-tabix.
DATA : i_matnr LIKE mara-matnr,
o_matnr LIKE mara-matnr,
w_tragr LIKE mara-tragr,
w_mtvfp LIKE marc-mtvfp,
w_disgr LIKE marc-disgr,
w_ladgr LIKE marc-ladgr.
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_mard1 LIKE bapi_mard, " STORAGE LOCATION
bapi_mardx LIKE bapi_mardx.
BAPIPAREX1 LIKE BAPIPAREX.
BAPIPAREXX LIKE BAPIPAREXX,
BAPI_RETURN LIKE BAPIRET2.
*
DATA: BEGIN OF int_makt OCCURS 100.
INCLUDE STRUCTURE bapi_makt.
DATA: END OF int_makt.
DATA:BEGIN OF it_bapiparex OCCURS 0.
INCLUDE STRUCTURE bapiparex.
DATA:END OF it_bapiparex.
DATA:BEGIN OF it_bapiparexx OCCURS 0.
INCLUDE STRUCTURE bapiparexx.
DATA:END OF it_bapiparexx.
it_bapiparex-structure = 'BAPI_TE_MARA'.
it_bapiparex-valuepart1 = bapi_te_mara. "-MATERIAL.
APPEND it_bapiparex.
it_bapiparexx-structure = 'BAPI_TE_MARAX'.
it_bapiparexx-valuepart1 = bapi_te_marax. " -MATERIAL.
APPEND it_bapiparexx.
it_bapiparex-structure = 'BAPI_TE_MARC'.
it_bapiparex-valuepart1 = bapi_te_marc. "-PLANT.
APPEND it_bapiparex.
*
it_bapiparexx-structure = 'BAPI_TE_MARCX'.
it_bapiparexx-valuepart1 = bapi_te_marcx. "-PLANT.
APPEND it_bapiparexx.
it_bapiparex-structure = 'BAPI_TE_MARD'.
it_bapiparex-valuepart1 = bapi_te_mard. "-PLANT.
*IT_BAPIPAREX-VALUEPART2 = BAPI_TE_MARD. "-STGE_LOC.
APPEND it_bapiparex.
it_bapiparexx-structure = 'BAPI_TE_MARDX'.
it_bapiparexx-valuepart1 = bapi_te_mardx. "-PLANT.
*IT_BAPIPAREX-VALUEPART2 = BAPI_TE_MARD. "-STGE_LOC.
APPEND it_bapiparexx.
DATA : errflag.
DATA : bapi_return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
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
tragr(4), "Transportation group
ekwsl(4), "Purchasing Value Key
marc
ekgrp(3), "Purchasing group
mtvfp(2), "Checking Group for Availability Check
ladgr(4), "Loading group
prctr(10), "Profit Center
webaz LIKE bapi_marc-gr_pr_time, "Goods receipt processing time in days.
perkz(1), "Period indicator
awsls(6), "Variance Key
disgr(4), "MRP Group
dismm(2), "MRP Type
dispo(3), "MRP controller
disls(2), "Lot size (materials planning)
beskz(1), "Procurement Type
dzeit LIKE bapi_marc-inhseprodt, "In-house production time.
plifz LIKE bapi_marc-plnd_delry, "Planned delivery time in days.
makt
spras(2), "Language key
maktx(40), "Material description
***mbew
bklas(4), "Valuation Class.
vprsv(1), "Price control indicator
verpr LIKE bapi_mbew-moving_pr, "Moving Average Price
stprs LIKE bapi_mbew-std_price, "Standard price
peinh LIKE bapi_mbew-price_unit, "Price unit
****mard
lgort(4), "Storage location
END OF int_mat.
DATA : wa_int_mat LIKE 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.
PARAMETERS: f_file LIKE rlgrap-filename
DEFAULT 'C:\Documents and Settings\prashant.maturu\Desktop\ZMATERIAL.XLS' MEMORY ID f_file,
getdata AS CHECKBOX, "Tick to download materials data to local harddisk
upddata AS CHECKBOX. "Tick to update date to Materials Master
IF getdata = 'X'.
PERFORM download_data.
PERFORM material_conversion.
PERFORM download_file.
ENDIF.
IF upddata = 'X'.
PERFORM upload_file.
PERFORM material_conversion.
PERFORM update_mm.
ENDIF.
&----
*& Form DOWNLOAD_DATA
&----
text
----
FORM download_data.
*IF MATLTYPE-LOW NE 'SFGD' OR MATLTYPE-LOW NE 'SPRS'.
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.
IF mara-mtart = 'SFGD' OR mara-mtart = '' OR mara-mtart = 'SPRS'.
CLEAR : mara,int_mat.
CONTINUE.
ENDIF.
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 mard.
SELECT SINGLE * FROM mard WHERE matnr = marc-matnr
AND werks = marc-werks.
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
mara-gewei, "Weight Unit
mara-spart, "Division
mara-tragr, "Trasaction Group
mara-ekwsl, "Purchase Value key
MARA-IPRKZ, "Period indi.for. SLED.
marc-ekgrp, "Purchasing group
marc-mtvfp, "Availability check
marc-ladgr, "Loading grp.
marc-prctr, "Profit Center
marc-webaz, "GR processing time
marc-perkz, "Period Indicator
marc-awsls, "Variance key
marc-disgr, "MRP GROUP
marc-dismm, "MRP TYPE
marc-dispo, "MRP CONTOLLER
marc-disls, "LOT SIZE
marc-beskz, "PROCUREMENT TYPE
marc-dzeit, "IN-HOUSE PRD TIME
marc-plifz, "PLANT DELIVERY TIME
mbew-bklas, "VALUATION CLASS
mbew-vprsv, "Price control indicator
mbew-verpr, "MOVING PRICE
mbew-stprs, "Standard price
mbew-peinh, "Price unit
makt-spras, "Language key
makt-maktx, "Material description
mard-lgort. "Storage location.
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-tragr = mara-tragr. "Trasaction Group
int_mat-ekwsl = mara-ekwsl. "Purchase Value key
INT_MAT-IPRKZ = MARA-IPRKZ. "Period indi.for. SLED.
int_mat-ekgrp = marc-ekgrp. "Purchasing group
int_mat-mtvfp = marc-mtvfp. "Availability check
int_mat-ladgr = marc-ladgr. "Loading grp.
int_mat-prctr = marc-prctr. "Profit Center
int_mat-webaz = marc-webaz. "GR processing time
int_mat-perkz = marc-perkz. "Period Indicator
int_mat-awsls = marc-awsls. "Variance key
int_mat-disgr = marc-disgr. "MRP GROUP
int_mat-dismm = marc-dismm. "MRP TYPE
int_mat-dispo = marc-dispo. "MRP CONTOLLER
int_mat-disls = marc-disls. "LOT SIZE
int_mat-beskz = marc-beskz. "PROCUREMENT TYPE
int_mat-dzeit = marc-dzeit. "IN-HOUSE PRD TIME
int_mat-plifz = marc-plifz. "PLANT DELIVERY TIME
int_mat-bklas = mbew-bklas. "Valution class
int_mat-vprsv = mbew-vprsv. "Price control indicator
int_mat-verpr = mbew-verpr. "Moving price
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-lgort = mard-lgort. " Storage location
APPEND int_mat.
CLEAR int_mat.
ENDSELECT.
*ENDIF.
ENDFORM. "DOWNLOAD_DATA
&----
*& Form DOWNLOAD_FILE
&----
text
----
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
&----
*& Form UPLOAD_FILE
&----
text
----
FORM upload_file.
CALL FUNCTION 'WS_UPLOAD'
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 Upload Successfully from your local harddisk'.
SKIP.
ENDIF.
ENDFORM. "UPLOAD_FILE
&----
*& Form UPDATE_MM
&----
text
----
FORM update_mm.
DATA : salesdata LIKE bapi_mvke,
salesdatax LIKE bapi_mvkex.
*salesdata-SALES_ORG = 'HCCL'.
*salesdata-DISTR_CHAN = '10'.
LOOP AT int_mat.
Header
bapi_head-material = int_mat-matnr.
bapi_head-ind_sector = int_mat-mbrsh.
bapi_head-matl_type = int_mat-mtart.
bapi_head-basic_view = 'X'.
bapi_head-sales_view = 'X'.
bapi_head-purchase_view = 'X'.
bapi_head-mrp_view = 'X'.
bapi_head-storage_view = 'X'.
bapi_head-prt_view = 'X'.
BAPI_HEAD-QUALITY_VIEW = 'X'.
bapi_head-account_view = 'X'.
bapi_head-cost_view = 'X'.
Client Data - Basic
bapi_mara1-matl_group = int_mat-matkl.
bapi_mara1-base_uom = int_mat-meins.
bapi_mara1-unit_of_wt = int_mat-gewei.
bapi_mara1-division = int_mat-spart.
bapi_mara1-trans_grp = int_mat-tragr.
bapi_mara1-pur_valkey = int_mat-ekwsl.
bapi_mara1-item_cat = 'NORM'.
bapi_marax-matl_group = 'X'.
bapi_marax-base_uom = 'X'.
bapi_marax-unit_of_wt = 'X'.
bapi_marax-division = 'X'.
bapi_marax-trans_grp = 'X'.
bapi_marax-pur_valkey = 'X'.
bapi_marax-item_cat = 'X'.
sorage location.
bapi_mard1-plant = int_mat-werks. "
bapi_mard1-stge_loc = int_mat-lgort.
bapi_mardx-plant = int_mat-werks. "
bapi_mardx-stge_loc = int_mat-lgort.
Material Description
REFRESH int_makt.
int_makt-langu = int_mat-spras.
int_makt-matl_desc = int_mat-maktx.
APPEND int_makt.
Plant - Purchasing
bapi_marc1-plant = int_mat-werks. "PLANT-LOW.
bapi_marc1-pur_group = int_mat-ekgrp.
bapi_marc1-availcheck = int_mat-mtvfp.
bapi_marc1-loadinggrp = int_mat-ladgr.
bapi_marc1-profit_ctr = int_mat-prctr. " profit center and plant are same
bapi_marc1-gr_pr_time = int_mat-webaz.
bapi_marc1-period_ind = int_mat-perkz.
bapi_marc1-variance_key = int_mat-awsls.
bapi_marc1-mrp_group = int_mat-disgr.
bapi_marc1-mrp_type = int_mat-dismm.
bapi_marc1-mrp_ctrler = int_mat-dispo.
bapi_marc1-lotsizekey = int_mat-disls.
bapi_marc1-proc_type = int_mat-beskz.
bapi_marc1-inhseprodt = int_mat-dzeit.
bapi_marc1-plnd_delry = int_mat-plifz.
bapi_marcx-plant = int_mat-werks.
bapi_marcx-pur_group = 'X'.
bapi_marcx-availcheck = 'X'.
bapi_marcx-loadinggrp = 'X'.
bapi_marcx-profit_ctr = 'X'.
bapi_marcx-gr_pr_time = 'X'.
bapi_marcx-period_ind = 'X'.
bapi_marcx-variance_key = 'X'.
bapi_marcx-mrp_group = 'X'.
bapi_marcx-mrp_type = 'X'.
bapi_marcx-mrp_ctrler = 'X'.
bapi_marcx-lotsizekey = 'X'.
bapi_marcx-proc_type = 'X'.
bapi_marcx-inhseprodt = 'X'.
bapi_marcx-plnd_delry = 'X'.
Accounting
bapi_mbew1-val_area = int_mat-werks.
bapi_mbew1-val_class = int_mat-bklas.
bapi_mbew1-price_ctrl = int_mat-vprsv.
bapi_mbew1-moving_pr = int_mat-verpr.
bapi_mbew1-std_price = int_mat-stprs.
bapi_mbew1-price_unit = int_mat-peinh.
bapi_mbewx-val_area = int_mat-werks.
bapi_mbewx-val_class = 'X'.
bapi_mbewx-price_ctrl = 'X'.
bapi_mbewx-moving_pr = 'X'.
bapi_mbewx-std_price = 'X'.
bapi_mbewx-price_unit = 'X'.
DATA : no_dequeue LIKE bapie1global_data.
DATA : flag_online LIKE bapie1global_data.
no_dequeue-testrun = 'X'.
flag_online-testrun = 'X'.
no_dequeue-inp_fld_check = 'E'.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
headdata = bapi_head
clientdata = bapi_mara1
clientdatax = bapi_marax
plantdata = bapi_marc1
plantdatax = bapi_marcx
storagelocationdata = bapi_mard1
storagelocationdatax = bapi_mardx
valuationdata = bapi_mbew1
valuationdatax = bapi_mbewx
flag_online = flag_online-testrun
no_dequeue = no_dequeue-testrun
IMPORTING
return = bapi_return
TABLES
materialdescription = int_makt
extensionin = it_bapiparex
extensioninx = it_bapiparexx.
IF BAPI_RETURN-TYPE = 'S' .
*
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
*
IF BAPI_RETURN-TYPE = 'S' .
format color 5.
WRITE:/ 'Success Message ', BAPI_RETURN-NUMBER,
BAPI_RETURN-MESSAGE.
*
ENDIF.
IF BAPI_RETURN-TYPE = 'E'.
WRITE:/ 'Error Message ', BAPI_RETURN-NUMBER,
BAPI_RETURN-MESSAGE.
ENDIF.
CLEAR errflag.
LOOP AT bapi_return.
IF bapi_return-type EQ 'E'.
MESSAGE s000(0) WITH bapi_return-message.
errflag = 'X'.
ELSE.
WRITE:/ GM_RETURN-MESSAGE.
ENDIF.
ENDLOOP.
*BREAK-POINT.
IF errflag IS INITIAL.
COMMIT WORK AND WAIT.
IF sy-subrc NE 0.
MESSAGE s000(0) WITH bapi_return-message 'Error in Commit'.
EXIT.
ELSE.
MESSAGE s000(0) WITH bapi_return-message.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. "UPDATE_MM
&----
*& Form material_conversion
&----
FORM material_conversion .
IF int_mat IS NOT INITIAL.
LOOP AT int_mat.
loop_idx = sy-tabix.
CLEAR i_matnr.
CLEAR o_matnr.
i_matnr = int_mat-matnr.
IF NOT int_mat-tragr IS INITIAL.
CONCATENATE '000' int_mat-tragr INTO w_tragr.
ENDIF.
IF NOT int_mat-mtvfp IS INITIAL.
CONCATENATE '0' int_mat-mtvfp INTO w_mtvfp.
ENDIF.
CONCATENATE '000' int_mat-disgr INTO w_disgr.
IF NOT int_mat-ladgr IS INITIAL.
CONCATENATE '000' int_mat-ladgr INTO w_ladgr.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = i_matnr
IMPORTING
output = o_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
wa_int_mat = int_mat.
wa_int_mat-matnr = o_matnr.
wa_int_mat-tragr = w_tragr.
wa_int_mat-mtvfp = w_mtvfp.
wa_int_mat-disgr = w_disgr.
wa_int_mat-ladgr = w_ladgr.
MODIFY int_mat FROM wa_int_mat.
ENDLOOP.
ENDIF.
ENDFORM. " material_conversion
regards
Prashanth
06-13-2008 6:31 AM
Hi,
If u r sure that the profit center exists in ur system and u got the error, its simple.
Field PRCTR (Profit Center) is of 10 Characters. u r passing only 4 or 5 chars.
So u r getting that error.
Solution is that you have to add leading zeroes to that profit center.
u can use the FM given below to add the leading zeroes.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = ITAB-PRCTR
IMPORTING
OUTPUT = ITAB-PRCTR.
Regards,
Asif Ali Khan
06-18-2008 5:51 AM
Dear Guru,
Thank you...for your kind help. My problem is solved with your suggestion.
Regards,
Prashanth maturu.