‎2014 Jun 26 7:59 AM
Dear all,
I created bapi for uploading material master using bapi_material save data.
And i have uploaded data successfully for the first time.
Now i try to upload another excel file, it shows error like
field p002 transferred inconsistently or it is blank. (p002 is plant name)
if i uploaded with the old data , it is working fine. (plant value is p001)
but stuck with new data showing above error.
Waiting for the reply,
Dhivya N.
‎2014 Jun 26 9:48 AM
‎2014 Jun 26 11:41 AM
‎2014 Jun 26 11:51 AM
I have re run it more times.
I clear buffer also. but there is no solution.
‎2014 Jun 26 11:55 AM
‎2014 Jun 26 11:59 AM
not extension. creating new material for plant p002.
i already created material for plant p001.
‎2014 Jun 26 12:15 PM
‎2014 Jun 26 12:23 PM
initially, i did not use commit work or bapi transaction commit.
now , i have changed the program. for your reference i attach my program.
REPORT ZR_MM01_UPLOAD.
**********************************************************************
***data declarations***
**********************************************************************
***table declaration***
tables: mara,
marc,
mbew,
mlgn,
mvke,
makt,
mlgt,
mpop.
***declaration of bapi structure***
data: bapi_head like bapimathead, "input parameters
bapi_mara like bapi_mara, "client data
bapi_marax like bapi_marax,
bapi_marc like bapi_marc, "plant data
bapi_marcx like bapi_marcx,
bapi_mpop like bapi_mpop, "forecast view
bapi_mpopx like bapi_mpopx,
bapi_mpgd like bapi_mpgd, "planning view
bapi_mpgdx like bapi_mpgdx,
bapi_mard like bapi_mard, "storage location
bapi_mardx like bapi_mardx,
bapi_mbew like bapi_mbew, "valuation data
bapi_mbewx like bapi_mbewx,
bapi_mlgn like bapi_mlgn, "warehouse data
bapi_mlgnx like bapi_mlgnx,
bapi_mvke like bapi_mvke, "sales data
bapi_mvkex like bapi_mvkex,
bapi_mlgt like bapi_mlgt, "storage data
bapi_mlgtx like bapi_mlgtx.
data: bapireturn like bapiret2. "export parameters
data: ta_bapimakt like bapi_makt OCCURS 0 WITH HEADER LINE, "tables
ta_bapimarm like bapi_marm OCCURS 0 WITH HEADER LINE,
ta_bapimarmx like bapi_marmx OCCURS 0 WITH HEADER LINE,
ta_bapimfhm like bapi_mfhm OCCURS 0 WITH HEADER LINE,
ta_bapimfhmx LIKE bapi_mfhmx OCCURS 0 WITH HEADER LINE.
***declaration of flatfile***
data: BEGIN OF ta_flatfile OCCURS 0 ,
"organizational data
matnr type rmmg1-matnr, "material number
werks type marc-werks, "plant
lgort type RMMG1-lgort, "storage location
mbrsh type mara-mbrsh, " 'industry sector
mtart type mara-mtart, "material type
"basic data1
maktx type makt-maktx, "material description
meins type mara-meins, "base unit of measure
matkl type mara-matkl, "material group
bismt type mara-bismt, "old material number
spart type mara-spart, "division
mstae type mara-mstae, "x plant material status
mtpos_mara type MARA-MTPOS_MARA, "general item category group
brgew type mara-brgew, "gross weight
gewei type mara-gewei, "weight unit
ntgew type mara-ntgew, "net weight
volum type mara-volum, "volume
voleh type mara-voleh, "volume unit
groes type mara-groes, "size and dimension
"basic data2
dzeinr type mara-zeinr, "document number
DZEIVR type mara-zeivr, "document version
AESZN type MARA-AESZN, "document change number
"purchasing data
ekgrp type marc-ekgrp, "purchasing group
bstme type mara-bstme, "alternative base unit of measure
webaz type marc-webaz, "gr processing time
"MRP1
dismm type marc-dismm, "mrp type
minbe type marc-minbe, "recorder point
disls type marc-disls, " lot size
mabst type marc-mabst, "maximum stock level (only for lot size HB)
dispo type marc-dispo, "mrp controller
"MRP 2
beskz type marc-beskz, "procurement type
lgpro type marc-lgpro, "production storage location
* rgekz type marc-rgekz, "back flush
lgfsb type marc-lgfsb, "storage location for EP
plifz type marc-plifz, "planned delivery
fhori type marc-fhori, "scheduling margin key
"MRP3
mtvfp type marc-mtvfp, "availability check
"MRP4
SBDKZ TYPE MARC-SBDKZ, "INDIVIDUAL/COLL
bklas type mbew-bklas, "valuation class
VERPR_BAPI type mbew-verpr, "moving price
* stprs type mbew-stprs, "standard price
* peinh type mbew-peinh, "price unit
* VPRSV TYPE MBEW-VPRSV, "PRICE CONTROL
"costing
prctR(10) type c, "profit centre
bwkey type mbew-bwkey, "valuation area
spras type makt-spras, " Language key
vkorg(4) type c, "sales org
vtweg(2) type c, "distribution channel
ktgrm(2) type c, "acc assignment group
stgma(1) type c, "material stat grp
ekalr(1) type c, "quantity structure
hkmat(1) type c, "material origin
* bwtar(10) type c, "valuation type
END OF ta_flatfile.
***declaration of other parameters***
data: p_brow type i VALUE 2,
p_bcol type i value 1,
p_erow type i value 65536,
p_ecol type i value 256.
data: V_tabix type sy-tabix, "current line.
v_lines type i, "total number of records
v_index type i, "hold column in excel conversion
v_flag ,
sear type string.
FIELD-SYMBOLS: <fs> type any. "field symbol for alsm_excel
DATA: TA_EXCEL TYPE TABLE OF ALSMEX_TABLINE, "table to contain excel sheet values
WA_EXCEL TYPE ALSMEX_TABLINE.
**********************************************************************
***design of selection screen***
**********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 3.
PARAMETERS: p_file type IBIPPARMS-PATH . "input file
SELECTION-SCREEN SKIP 3.
SELECTION-SCREEN END OF BLOCK b1.
**********************************************************************
***SELECTION SCREEN VALUE REQUEST***
**********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME' "f4 help for file name
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'P_FILE'
IMPORTING
FILE_NAME = P_FILE.
**********************************************************************
***SELECTION SCREEN EVENT***
**********************************************************************
AT SELECTION-SCREEN. "validation
if p_file <> ''.
sear = p_file.
SEARCH sear for '.xls'.
if sy-subrc <> 0.
message 'please provide excel file. it is not valid' type 'E'.
ENDIF.
ENDIF.
***initialisation***
clear :bapi_head ,
bapi_mara ,
bapi_marax ,
bapi_marc , "plant data
bapi_marcx,
bapi_mpop , "forecast view
bapi_mpopx ,
bapi_mpgd , "planning view
bapi_mpgdx ,
bapi_mard , "storage location
bapi_mardx ,
bapi_mbew , "valuation data
bapi_mbewx ,
bapi_mlgn, "warehouse data
bapi_mlgnx ,
bapi_mvke , "sales data
bapi_mvkex ,
bapi_mlgt , "storage data
bapi_mlgtx ,
bapireturn. "export parameters
refresh: ta_bapimakt , "tables
ta_bapimarm ,
ta_bapimarmx,
ta_bapimfhm ,
ta_bapimfhmx .
CALL FUNCTION 'BUFFER_REFRESH_ALL'
.
**********************************************************************
***START OF SELECTION***
**********************************************************************
START-OF-SELECTION.
PERFORM EXCEL_UPLOAD.
PERFORM EXCEL_CONVERSION.
PERFORM NO_RECORDS.
**********************************************************************
***END OF SELECTION***
END-OF-SELECTION.
PERFORM UPLOAD_MATERIAL.
*&---------------------------------------------------------------------*
*& Form EXCEL_UPLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXCEL_UPLOAD .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = P_BCOL
I_BEGIN_ROW = P_BROW
I_END_COL = P_ECOL
I_END_ROW = P_EROW
TABLES
INTERN = TA_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
* IF SY-SUBRC <> 0.
*
* ENDIF.
ENDFORM. " EXCEL_UPLOAD
*&---------------------------------------------------------------------*
*& Form EXCEL_CONVERSION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXCEL_CONVERSION .
if ta_excel is NOT INITIAL.
sort ta_excel by row col.
clear wa_excel.
clear ta_flatfile.
LOOP AT ta_excel INTO wa_excel.
move wa_excel-col to v_index.
ASSIGN COMPONENT v_index OF STRUCTURE ta_flatfile to <fs>.
if sy-subrc = 0.
move wa_excel-value to <fs>.
ENDIF.
at END OF row.
append ta_flatfile.
clear ta_flatfile.
ENDAT.
ENDLOOP.
else.
MESSAGE 'no data for conversion' type 'I'.
ENDIF.
ENDFORM. " EXCEL_CONVERSION
*&---------------------------------------------------------------------*
*& Form NO_RECORDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM NO_RECORDS .
DESCRIBE TABLE ta_flatfile LINES v_lines.
if v_lines = 0.
MESSAGE 'NO RECORDS TO UPLOAD' TYPE 'E'.
V_FLAG = 'X'.
ENDIF.
ENDFORM. " NO_RECORDS
*&---------------------------------------------------------------------*
*& Form UPLOAD_MATERIAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UPLOAD_MATERIAL .
LOOP AT TA_FLATFILE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = ta_flatfile-matnr
IMPORTING
OUTPUT = ta_flatfile-matnr
.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = ta_flatfile-prctr
IMPORTING
OUTPUT = ta_flatfile-prctr
.
"***HEADER
CLEAR bapi_head.
bapi_head-material = TA_FLATFILE-matnr.
bapi_head-IND_SECTOR = ta_flatfile-mbrsh.
bapi_head-MATL_TYPE = ta_flatfile-mtart.
bapi_head-BASIC_VIEW = 'X'.
bapi_head-SALES_VIEW = 'X'.
bapi_head-MRP_VIEW = 'X'.
bapi_head-PURCHASE_VIEW = 'X'.
* bapi_head-FORECAST_VIEW = 'X'.
bapi_head-WORK_SCHED_VIEW = 'X'.
* bapi_head-PRT_VIEW = 'X'.
bapi_head-STORAGE_VIEW = 'X'.
bapi_head-WAREHOUSE_VIEW = 'X'.
bapi_head-QUALITY_VIEW = 'X'.
bapi_head-ACCOUNT_VIEW = 'X'.
bapi_head-COST_VIEW = 'X'.
"***client specific material data
clear bapi_mara.
bapi_mara-matl_group = ta_flatfile-matkl.
bapi_mara-OLD_MAT_NO = ta_flatfile-bismt.
bapi_mara-BASE_UOM = ta_flatfile-meins.
bapi_mara-DOCUMENT = ta_flatfile-dzeinr.
bapi_mara-DOC_VERS = ta_flatfile-DZEIVR.
bapi_mara-SIZE_DIM = ta_flatfile-groes.
bapi_mara-NET_WEIGHt = ta_flatfile-ntgew .
bapi_mara-UNIT_OF_WT = ta_flatfile-gewei .
bapi_mara-DIVISION = ta_flatfile-spart .
bapi_mara-PUR_STATUS = ta_flatfile-mstae.
bapi_mara-ITEM_CAT = ta_flatfile-mtpos_mara.
bapi_mara-ITEM_CAT = ta_flatfile-mtpos_mara.
bapi_mara-ALLWD_VOL = ta_flatfile-volum.
bapi_mara-PACK_VO_UN = ta_flatfile-voleh.
bapi_mara-DOC_CHG_NO = ta_flatfile-aeszn.
bapi_mara-PO_UNIT = ta_flatfile-bstme.
"Information on update for CLIENTDATA
clear bapi_marax.
bapi_marax-matl_group ='X'.
bapi_marax-OLD_MAT_NO = 'X'.
bapi_marax-BASE_UOM = 'X'.
bapi_marax-DOCUMENT = 'X'.
bapi_marax-DOC_VERS = 'X'.
bapi_marax-SIZE_DIM = 'X'.
bapi_marax-NET_WEIGHt = 'X'.
bapi_marax-UNIT_OF_WT = 'X'.
bapi_marax-DIVISION = 'X'.
bapi_mara-PUR_STATUS = 'X'.
bapi_marax-ITEM_CAT = 'X'.
bapi_marax-ITEM_CAT = 'X'.
bapi_marax-ALLWD_VOL = 'X'.
bapi_marax-PACK_VO_UN = 'X'.
bapi_marax-DOC_CHG_NO = 'X'.
bapi_marax-PO_UNIT = 'X'.
"Plant-specific material data
clear bapi_marc.
bapi_marc-PLANT = ta_flatfile-werks.
bapi_marc-PUR_GROUP = ta_flatfile-ekgrp.
bapi_marc-MRP_TYPE = ta_flatfile-dismm.
bapi_marc-MRP_CTRLER = ta_flatfile-dispo.
bapi_marc-PLND_DELRY = ta_flatfile-plifz.
bapi_marc-GR_PR_TIME = ta_flatfile-webaz.
bapi_marc-LOTSIZEKEY = ta_flatfile-disls.
bapi_marc-SM_KEY = ta_flatfile-fhori.
bapi_marc-AVAILCHECK = ta_flatfile-mtvfp.
bapi_marc-PROFIT_CTR = ta_flatfile-prctr.
bapi_marc-REORDER_PT = ta_flatfile-minbe.
bapi_marc-MAX_STOCK = ta_flatfile-mabst.
bapi_marc-PROC_TYPE = ta_flatfile-beskz.
bapi_marc-ISS_ST_LOC = ta_flatfile-lgpro.
bapi_marc-SLOC_EXPRC = ta_flatfile-lgfsb.
bapi_marc-DEP_REQ_ID = ta_flatfile-sbdkz.
"Information on update for PLANTDATA
clear bapi_marcx.
bapi_marcx-PLANT = ta_flatfile-werks.
bapi_marcx-PUR_GROUP = 'X'.
bapi_marcx-MRP_TYPE = 'X'.
bapi_marcx-MRP_CTRLER = 'X'.
bapi_marcx-PLND_DELRY = 'X'.
bapi_marcx-GR_PR_TIME = 'X'.
bapi_marcx-LOTSIZEKEY = 'X'.
bapi_marcx-SM_KEY = 'X'.
bapi_marcX-AVAILCHECK = 'X'.
bapi_marcX-PROFIT_CTR = 'X'.
bapi_marcx-REORDER_PT = 'X'.
bapi_marcx-MAX_STOCK = 'X'.
bapi_marcx-PROC_TYPE = 'X'.
bapi_marcx-ISS_ST_LOC = 'X'.
bapi_marcx-SLOC_EXPRC = 'X'.
bapi_marcx-DEP_REQ_ID = 'X'.
"STORAGE LOCATION DATA
clear bapi_mard .
bapi_mard-PLANT = ta_flatfile-werks.
bapi_mard-stge_loc = ta_flatfile-lgort.
clear bapi_mardx.
bapi_mardx-PLANT = ta_flatfile-werks.
bapi_mardx-stge_loc = ta_flatfile-lgort.
* bapi_mpop-plant = ta_flatfile-werks.
* bapi_mpopx-plant = ta_flatfile-werks.
*
* bapi_mpgd-plant = ta_flatfile-werks.
* bapi_mpgdx-plant = ta_flatfile-werks.
"Valuation Data
clear bapi_mbew.
bapi_mbew-VAL_CLASS = ta_flatfile-bKLAS.
bapi_mbew-VAL_AREA = ta_flatfile-bwkey.
* bapi_mbew-VAL_TYPE = ta_flatfile-bwtar.
bapi_mbew-MOVING_PR = ta_flatfile-VERPR_BAPI.
bapi_mbew-qty_struct = ta_flatfile-ekalr.
bapi_mbew-orig_mat = ta_flatfile-hkmat.
* bapi_mbew-STD_PRICE = ta_flatfile-stprs.
* bapi_mbew-PRICE_UNIT = ta_flatfile-peinh.
* BAPI_MBEW-PRICE_CTRL = TA_FLATFILE-VPRSV.
"""Checkbox Structure for BAPI_MBEW
clear bapi_mbewx.
bapi_mbewx-VAL_CLASS = 'X'.
bapi_mbewx-VAL_AREA = ta_flatfile-WERKS.
* bapi_mbewx-VAL_TYPE = ta_flatfile-bwtar.
bapi_mbewx-MOVING_PR = 'X'.
bapi_mbewx-qty_struct = 'X'.
bapi_mbewx-orig_mat = 'X'.
* bapi_mbewx-STD_PRICE = 'X'.
* bapi_mbewx-PRICE_UNIT = 'X'.
* BAPI_MBEWX-PRICE_cTRL = 'X'.
""""sales data***
clear bapi_mvke.
bapi_mvke-sales_org = ta_flatfile-vkorg.
bapi_mvke-distr_chan = ta_flatfile-vtweg.
bapi_mvke-acct_assgt = ta_flatfile-ktgrm.
bapi_mvke-matl_stats = ta_flatfile-stgma.
clear bapi_mvkex.
bapi_mvkex-sales_org = ta_flatfile-vkorg.
bapi_mvkex-distr_chan = ta_flatfile-vtweg.
bapi_mvkex-acct_assgt = 'X'.
bapi_mvkex-matl_stats = 'X'.
"material description.
clear ta_bapimakt.
ta_bapimakt-langu = ta_flatfile-spras.
ta_bapimakt-MATL_DESC = ta_flatfile-maktx.
append ta_bapimakt.
*
clear ta_bapimarm.
TA_BAPIMARM-ALT_UNIT = TA_FLATFILE-MEINS.
ta_bapimarm-GROSS_WT = ta_flatfile-brgew.
ta_bapimarm-volume = ta_flatfile-volum.
ta_bapimarm-VOLUMEUNIT = ta_flatfile-voleh.
ta_bapimarm-UNIT_OF_WT = ta_flatfile-GEWEI.
append ta_bapimarm.
*
clear ta_bapimarmx.
TA_BAPIMARMX-ALT_UNIT = TA_FLATFILE-MEINS.
ta_bapimarmx-GROSS_WT = 'X'.
TA_BAPIMARMX-UNIT_OF_WT = 'X'.
ta_bapimarmx-volume = 'X'.
TA_BAPIMARMX-VOLUMEUNIT = 'X'.
append ta_bapimarmx.
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = bapi_head
CLIENTDATA = bapi_mara
CLIENTDATAX = bapi_marax
PLANTDATA = bapi_marc
PLANTDATAX = bapi_marcx
FORECASTPARAMETERS = bapi_mpop
FORECASTPARAMETERSX = bapi_mpopx
PLANNINGDATA = bapi_mpgd
PLANNINGDATAX = bapi_mpgdx
STORAGELOCATIONDATA = bapi_mard
STORAGELOCATIONDATAX = bapi_mardx
VALUATIONDATA = bapi_mbew
VALUATIONDATAX = BAPI_MBEWX
WAREHOUSENUMBERDATA = bapi_mlgn
WAREHOUSENUMBERDATAX = bapi_mlgnx
SALESDATA = bapi_mvke
SALESDATAX = bapi_mvkex
STORAGETYPEDATA = bapi_mlgt
STORAGETYPEDATAX = bapi_mlgtx
IMPORTING
RETURN = bapireturn
TABLES
MATERIALDESCRIPTION = ta_bapimakt
UNITSOFMEASURE = ta_bapimarm
UNITSOFMEASUREX = ta_bapimarmx.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
* WAIT = 'X'
** IMPORTING
** RETURN =
.
if bapireturn-type = 'E'.
write:/ 'error:', bapireturn-message , 'for material: ' , ta_flatfile-matnr.
ELSEIF bapireturn-type = 'S'.
write:/ 'success:', bapireturn-message , 'for material: ' , ta_flatfile-matnr.
ENDIF.
clear bapireturn.
ENDLOOP.