‎2007 Dec 20 7:11 AM
Hi Experts,
My requirement is uploading the capital goods into SAP system for this i recorded the required fields by using transaction 'MM01' . In Recording I selected the ITEMS
1)Basic Data1
2)Sales1
3)sales2
4)Sales:general plant data
5)purchasing
6)general plant data/storage
7)ware house management1
8)accounting
after i recorded all the fields given by functional pepople.Recording was successful.Based on recording i generated a program.After that i take all the fields in notepad with same length.The notepad data was correct.What the probelm is after i executed the program session is created.
When i am processing the session first screen comes with out error after the i selected the values means (Basic data all the things ) when i press enter next data will not uploaded,Means the fields WERKS,LGORT VKORG.... these all fields ok code is not working....
Please clarify my doubt with answers... THANKS IN ADVANCE.........
Regards
Srihari.
‎2007 Dec 20 7:15 AM
Hi Srihari,
May be next screen data will not be there in your notepad file. Run your program in debugger mode and check where the data is missing.
Regards,
Mukesh Kumar
‎2007 Dec 20 7:20 AM
hi,
check this code and modify it according to ur requirements.
TYPES DECLARATION *
************************************************************************
TYPES: BEGIN OF ty_material,
mbrsh TYPE mbrsh, " Industry sector
mtart TYPE mtart, " Material Type
werks TYPE werks_d, " Plant
lgort TYPE lgort_d, " Storage Location
maktx TYPE maktx, " Material Description
meins(3) TYPE c, " Base Unit of Measure
bismt TYPE bismt, " Old material number
matkl TYPE matkl, " Material Group
extwg TYPE extwg, " External Material Group
brgew(17) TYPE c, " Gross Weight
gewei(3) TYPE c, " Weight Unit
ntgew(17) TYPE c, " Net Weight
bstme(3) TYPE c, " Purchase Order Unit of Measure
ekgrp TYPE ekgrp, " Purchasing Group
ekwsl TYPE ekwsl, " Purchasing Value Key
insmk TYPE insmk_mat, " Post to Inspection Stock
dismm TYPE dismm, " MRP Type
minbe(17) TYPE c, " Reorder Point
dispo TYPE dispo, " MRP Controller
disls TYPE disls, " Lot size
bstmi(17) TYPE c, " Minimum Lot Size
bstfe(17) TYPE c, " Fixed lot size
bstma(17) TYPE c, " Maximum Lot Size
rgekz TYPE rgekm, " Indicator: Backflush
lgfsb TYPE lgfsb, " storage location for external procurement
plifz(3) TYPE c, " Planned Delivery Time in Days
webaz(3) TYPE c, " Goods Receipt Processing Time in Days
fhori TYPE fhori, " Scheduling Margin Key for Floats
eisbe(17) TYPE c, " Safety Stock
mtvfp TYPE mtvfp, " Checking Group for Availability Check
wzeit(3) TYPE c, " Total replenishment lead time
planv TYPE fh_planv, " Production resource/tool usage
lgpbe TYPE lgpbe, " Storage Bin
raube TYPE raube, " Storage conditions
prctr TYPE prctr, " Profit Center
qmata TYPE qmatauth, " Material Authorization Group for Activities
rbnrm TYPE rbnr, " Catalog Profile
qmpur TYPE qmpur, " QM in Procurement is Active
ssqss TYPE qsspur, " Control Key for Quality Management
qzgtp TYPE qzgtyp, " Certificate Type
art TYPE qpart, " Inspection Type
aktiv TYPE qmataktiv, " Inspection Type-Material Combination is Active
insmk1 TYPE qinsmk, " Post to Inspection Stock
spezueber TYPE qspezueber, " Inspect with Material Specification
ppl TYPE qppl, " Inspection with Task List
app TYPE qapp_d, " Automatic Specification Assignment
mer TYPE qmerk, " Inspect by Characteristics
dyn TYPE qdyn, " Skips Allowed
ave TYPE qauto_ve, " Automatic Usage Decision Planned
qkzverf TYPE qkzverf, " Procedure for Calculating Quality Score
chg TYPE q1welos, " Control of Inspection Lot Creation
bwtty TYPE bwtty_d, " Valuation Category
bklas TYPE bklas, " Valuation Class
vprsv TYPE vprsv, " Price control indicator
verpr(15) TYPE c, " Moving Average Price/Periodic Unit Price
END OF ty_material.
************************************************************************
INTERNAL TABLE DECLARATION *
************************************************************************
DATA: it_material TYPE STANDARD TABLE OF ty_material INITIAL SIZE 0.
DATA: it_bdc LIKE STANDARD TABLE OF bdcdata INITIAL SIZE 0.
************************************************************************
WORK AREA DECLARATION *
************************************************************************
DATA: wa_material TYPE ty_material.
DATA: wa_bdc LIKE bdcdata.
************************************************************************
VARIABLE DECLARATION *
************************************************************************
DATA: p_ffile TYPE string.
************************************************************************
CONSTANTS DECLARATION *
************************************************************************
CONSTANTS: c_asc(10) TYPE c VALUE 'ASC',
c_x TYPE c VALUE 'X',
c_mm01 LIKE tstc-tcode VALUE 'MM01'.
************************************************************************
SELECTION-SCREEN DECLARATION *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_pcfile LIKE rlgrap-filename.
PARAMETERS: p_sesion LIKE apqi-groupid OBLIGATORY DEFAULT 'ZMM01'.
SELECTION-SCREEN END OF BLOCK b1.
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST EVENT *
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pcfile.
Get the file from the presentation server
PERFORM sub_filepath CHANGING p_pcfile.
************************************************************************
START-OF-SELECTION EVENT *
************************************************************************
START-OF-SELECTION.
Upload data from file
PERFORM sub_upload_data.
Open BDC session
PERFORM bdc_open_group.
Update the data in SAP
PERFORM sub_update_data.
Close BDC session
PERFORM bdc_close_group.
&----
*& Form SUB_FILEPATH
&----
text
----
FORM sub_filepath CHANGING l_pcfile.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = l_pcfile.
ENDFORM. " SUB_FILEPATH
&----
*& Form SUB_UPLOAD_DATA
&----
text
----
FORM sub_upload_data .
MOVE p_pcfile TO p_ffile.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_ffile
filetype = c_asc
has_field_separator = c_x
read_by_line = c_x
TABLES
data_tab = it_material
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE i051 WITH p_ffile. "Failed to upload file
LEAVE LIST-PROCESSING.
ELSE.
SORT it_material BY bismt.
DELETE ADJACENT DUPLICATES FROM
it_material COMPARING bismt.
ENDIF.
ENDFORM. " SUB_UPLOAD_DATA
&----
*& Form SUB_UPDATE_DATA
&----
text
----
FORM sub_update_data .
LOOP AT it_material INTO wa_material.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RMMG1-MBRSH'
wa_material-mbrsh.
PERFORM bdc_field USING 'RMMG1-MTART'
wa_material-mtart.
************************SELECTION OF VIEWS ****************************
*****************************FHMI*********************************
IF wa_material-mtart = 'FHMI'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(15)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(04)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(07)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(08)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(09)'
'X'.
**********************MRP4*******************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(10)'
'X'.
***********************************************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(11)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(12)'
'X'.
****************GENERAL PLANT DATA/STORAGE2*************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(13)'
'X'.
**********************************************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(14)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(15)'
'X'.
*********************ACCOUNTING2*************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(16)'
'X'.
***********************COSTING***************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(17)'
'X'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'
'X'.
ELSE.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(14)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(04)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(06)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(07)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(08)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(09)'
'X'.
**********************MRP4******************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(10)'
'X'.
**********************************************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(11)'
'X'.
****************GENERAL PLANT DATA/STORAGE2*************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(12)'
'X'.
*****************QUALITY MANAGEMENT*********************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(13)'
'X'.
********************ACCOUNTING1*************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(14)'
'X'.
********************ACCOUNTING2*************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(15)'
'X'.
*********************COSTING****************************
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(16)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(17)'
'X'.
**********************************************************
ENDIF.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0080'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMMG1-LGORT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'RMMG1-WERKS'
wa_material-werks.
PERFORM bdc_field USING 'RMMG1-LGORT'
wa_material-lgort.
--
IF wa_material-mtart = 'VERP'.
*
PERFORM bdc_field USING 'RMMG1-VKORG'
wa_material-vkorg.
PERFORM bdc_field USING 'RMMG1-VTWEG'
wa_material-vtweg.
ENDIF.
----
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
wa_material-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
wa_material-meins.
PERFORM bdc_field USING 'MARA-MATKL'
wa_material-matkl.
PERFORM bdc_field USING 'MARA-BISMT'
wa_material-bismt.
PERFORM bdc_field USING 'MARA-EXTWG'
wa_material-extwg.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARA-NTGEW'.
PERFORM bdc_field USING 'MARA-BRGEW'
wa_material-brgew.
PERFORM bdc_field USING 'MARA-GEWEI'
wa_material-gewei.
PERFORM bdc_field USING 'MARA-NTGEW'
wa_material-ntgew.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MARA-BSTME'
wa_material-bstme.
PERFORM bdc_field USING 'MARC-EKGRP'
wa_material-ekgrp.
PERFORM bdc_field USING 'MARA-EKWSL'
wa_material-ekwsl.
PERFORM bdc_field USING 'MARC-INSMK'
wa_material-insmk.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4040'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SP12'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MARC-DISGR'
'0000'.
PERFORM bdc_field USING 'MARC-DISMM'
wa_material-dismm.
PERFORM bdc_field USING 'MARC-MINBE'
wa_material-minbe.
PERFORM bdc_field USING 'MARC-DISPO'
wa_material-dispo.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-BSTMA'.
PERFORM bdc_field USING 'MARC-DISLS'
wa_material-disls.
PERFORM bdc_field USING 'MARC-BSTMI'
wa_material-bstmi.
PERFORM bdc_field USING 'MARC-BSTMA'
wa_material-bstma.
PERFORM bdc_field USING 'MARC-BSTFE'
wa_material-bstfe.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MARC-RGEKZ'
wa_material-rgekz.
PERFORM bdc_field USING 'MARC-LGFSB'
wa_material-lgfsb.
PERFORM bdc_field USING 'MARC-PLIFZ'
wa_material-plifz.
PERFORM bdc_field USING 'MARC-WEBAZ'
wa_material-webaz.
PERFORM bdc_field USING 'MARC-FHORI'
wa_material-fhori.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-EISBE'.
PERFORM bdc_field USING 'MARC-EISBE'
wa_material-eisbe.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-WZEIT'.
PERFORM bdc_field USING 'MARC-MTVFP'
wa_material-mtvfp.
PERFORM bdc_field USING 'MARC-WZEIT'
wa_material-wzeit.
**************************MRP4********************************
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
FHMI ********************************
IF wa_material-mtart = 'FHMI'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MFHM-PLANV'
wa_material-planv.
ENDIF.
****************************************************************
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-AUSME'.
IF NOT wa_material-lgort IS INITIAL.
PERFORM bdc_field USING 'MARD-LGPBE'
wa_material-lgpbe.
ENDIF.
PERFORM bdc_field USING 'MARA-RAUBE'
wa_material-raube.
*****************GENERAL PLANT DATA/STORAGE2******************
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MARC-PRCTR'
wa_material-prctr.
****************************************************************
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
IF wa_material-mtart = 'HIBE'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ELSE.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PB01'.
PERFORM bdc_field USING 'MARC-QMATA'
wa_material-qmata.
PERFORM bdc_field USING 'MARA-RBNRM'
wa_material-rbnrm.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-QZGTP'.
PERFORM bdc_field USING 'MARA-QMPUR'
wa_material-qmpur.
PERFORM bdc_field USING 'MARC-SSQSS'
wa_material-ssqss.
PERFORM bdc_field USING 'MARC-QZGTP'
wa_material-qzgtp.
PERFORM bdc_dynpro USING 'SAPLQPLS' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMQAM-ARGUMENT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=NEU'.
PERFORM bdc_dynpro USING 'SAPLQPLS' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'QMICON-PADETAIL(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SELE'.
PERFORM bdc_field USING 'RMQAM-ART(01)'
wa_material-art.
PERFORM bdc_field USING 'RMQAM-AKTIV(01)'
wa_material-aktiv.
PERFORM bdc_dynpro USING 'SAPLQPLS' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMQAM-SPEZUEBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WEIT'.
PERFORM bdc_field USING 'RMQAM-INSMK'
wa_material-insmk1.
PERFORM bdc_field USING 'RMQAM-SPEZUEBER'
wa_material-spezueber.
PERFORM bdc_field USING 'RMQAM-QKZVERF'
wa_material-qkzverf.
PERFORM bdc_field USING 'RMQAM-PPL'
wa_material-ppl.
PERFORM bdc_field USING 'RMQAM-APP'
wa_material-app.
PERFORM bdc_field USING 'RMQAM-DYN'
wa_material-dyn.
PERFORM bdc_field USING 'RMQAM-MER'
wa_material-mer.
PERFORM bdc_field USING 'RMQAM-AVE'
wa_material-ave.
PERFORM bdc_field USING 'RMQAM-CHG'
wa_material-chg.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
ENDIF.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MBEW-BWTTY'
wa_material-bwtty.
PERFORM bdc_field USING 'BDC_CURSOR'
'MBEW-VERPR'.
PERFORM bdc_field USING 'MBEW-BKLAS'
wa_material-bklas.
PERFORM bdc_field USING 'MBEW-VPRSV'
wa_material-vprsv.
PERFORM bdc_field USING 'MBEW-VERPR'
wa_material-verpr.
******************ACCOUNTING2*********************************
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
*******************COSTING1***********************************
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MARC-NCOST'
'X'.
PERFORM bdc_field USING 'MBEW-EKALR'
'X'.
PERFORM bdc_field USING 'MBEW-HKMAT'
'X'.
******************COSTING2************************************
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
Inserting BDC structure data to session
PERFORM bdc_insert.
REFRESH it_bdc.
CLEAR wa_bdc.
CLEAR wa_material.
ENDLOOP.
ENDFORM. " SUB_UPDATE_DATA
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR wa_bdc.
wa_bdc-program = program.
wa_bdc-dynpro = dynpro.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.
ENDFORM. "BDC_DYNPRO
----
Insert field *
----
FORM bdc_field USING fnam fval.
CLEAR wa_bdc.
wa_bdc-fnam = fnam.
wa_bdc-fval = fval.
APPEND wa_bdc TO it_bdc.
ENDFORM. "BDC_FIELD
&----
*& Form bdc_open_group
&----
text
----
FORM bdc_open_group .
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = p_sesion
keep = c_x
user = sy-uname
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
group_is_locked = 4
holddate_invalid = 5
internal_error = 6
queue_error = 7
running = 8
system_lock_error = 9
user_invalid = 10
OTHERS = 11.
IF sy-subrc <> 0.
WRITE: / 'UNABLE TO OPEN SESSION'.
ENDIF.
ENDFORM. " bdc_open_group
&----
*& Form bdc_close_group
&----
text
----
FORM bdc_close_group .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
WRITE: / 'UNABLE TO CLOSE SESSION'.
ENDIF.
ENDFORM. " bdc_close_group
&----
*& Form BDC_INSERT
&----
text
----
FORM bdc_insert .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = c_mm01
TABLES
dynprotab = it_bdc
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7.
IF sy-subrc EQ 0.
WRITE: / 'Session', p_sesion,'Created'.
ENDIF.
ENDFORM. " BDC_INSERT
Reward points if helpful,
Regards,
Sumanjeet.