Hi Tarak,
I am pasting my code here. Its in OOP,
Please help me
TYPE-POOLS: ztgrp, truxs.
*Variables
DATA: gv_err TYPEc.
*Workarea
DATA: gs_data TYPE ztgrp_sldata.
*Internal tables
DATA: gt_data TYPESTANDARDTABLEOF ztgrp_sldata,
gt_bdcmsg TYPETABLEOF bdcmsgcoll.
*Object
DATA: obj_sl TYPEREFTO zcl_sl.
*Include Selection screen
INCLUDE zselscreen.
*Start-of-Selection
START-OF-SELECTION.
* Initialize the variables, work area and internal tables
CLEAR gv_err.
REFRESH gt_data[].
IF p_app EQ'X'.
* Check the input paramters
PERFORM check_par_app.
CHECK gv_err ISINITIAL.
* Upload the comma separated file from Application server
PERFORM upload_app.
ELSE.
* Check the input paramters
PERFORM check_par_pre.
CHECK gv_err ISINITIAL.
* Upload the comma separated file/Excel file from Presentation server
PERFORM upload_pre.
ENDIF.
*&---------------------------------------------------------------------*
*& Form UPLOAD_APP
*&---------------------------------------------------------------------*
* Upload the comma separated file from Application server
*----------------------------------------------------------------------*
FORM upload_app .
*Read the file from Application Server
PERFORM file_read.
* Check for error
CHECK gv_err ISINITIAL.
IF gt_data ISINITIAL.
MESSAGE i002.
gv_err = 'X'.
EXIT.
ENDIF.
* Create data object
CREATE OBJECT obj_sl.
* Create vendor using BDC and call transaction XK01
PERFORM create_source_list.
* Write log files
CALLMETHOD obj_sl->write_log_files
EXPORTING
i_sfile = p_asfile
i_efile = p_aefile.
* Write screen output
CALLMETHOD obj_sl->write_screen_out.
* Free the object
FREE obj_sl.
ENDFORM. " UPLOAD_APP
*&---------------------------------------------------------------------*
*& Form CREATE_SOURCE_LIST
*&---------------------------------------------------------------------*
* create source list
*----------------------------------------------------------------------*
FORM create_source_list .
*Local data
DATA: lv_fval TYPE bdcdata-fval,
lv_fnam TYPE bdcdata-fnam,
lv_exists TYPEc,
lv_cnt TYPEi,
lv_row(2) TYPEc.
*Refresh the table
REFRESH obj_sl->gt_bdcdata[].
LOOPAT gt_data INTO gs_data.
* Check whether the record is already created?
CLEAR lv_exists.
CALLMETHOD:obj_sl->check_exist
EXPORTING i_data = gs_data
IMPORTING e_exists = lv_exists.
IF lv_exists EQ'X'.
CONTINUE.
ENDIF.
CALLMETHOD: obj_sl->bdc_dynpro
EXPORTING i_program = 'SAPLMEOR'
i_dynpro = '0200'
i_dynbegin = 'X'.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = 'BDC_CURSOR'
i_fval = 'EORD-WERKS',
obj_sl->bdc_data
EXPORTING i_fnam = 'BDC_OKCODE'
i_fval = '/00'.
CLEAR lv_fval.
lv_fval = gs_data-matn.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = 'EORD-MATNR'
i_fval = lv_fval.
CLEAR lv_fval.
lv_fval = gs_data-plnt.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = 'EORD-WERKS'
i_fval = lv_fval.
CALLMETHOD: obj_sl->bdc_dynpro
EXPORTING i_program = 'SAPLMEOR'
i_dynpro = '0205'
i_dynbegin = 'X'.
* Now get the line no where the record needs to be inserted
CLEAR lv_cnt.
CALLMETHOD obj_sl->get_count
EXPORTING
i_data = gs_data
IMPORTING
e_cnt = lv_cnt.
lv_cnt = lv_cnt + 1.
CLEAR lv_fval.
lv_row = lv_cnt.
* if lv_row le 20.
CONCATENATE'EORD-EKORG(' lv_row ')'INTO lv_fval.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = 'BDC_CURSOR'
i_fval = lv_fval,
obj_sl->bdc_data
EXPORTING i_fnam = 'BDC_OKCODE'
i_fval = '=BU'.
CLEAR lv_fval.
lv_fval = gs_data-valf.
CLEAR lv_fnam.
CONCATENATE'EORD-VDATU(' lv_row ')'INTO lv_fnam.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = lv_fnam
i_fval = lv_fval.
CLEAR lv_fval.
lv_fval = gs_data-valt.
CLEAR lv_fnam.
CONCATENATE'EORD-BDATU(' lv_row ')'INTO lv_fnam.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = lv_fnam
i_fval = lv_fval.
CLEAR lv_fval.
lv_fval = gs_data-vend.
CLEAR lv_fnam.
CONCATENATE'EORD-LIFNR(' lv_row ')'INTO lv_fnam.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = lv_fnam
i_fval = lv_fval.
CLEAR lv_fval.
lv_fval = gs_data-porg.
CLEAR lv_fnam.
CONCATENATE'EORD-EKORG(' lv_row ')'INTO lv_fnam.
CALLMETHOD: obj_sl->bdc_data
EXPORTING i_fnam = lv_fnam
i_fval = lv_fval.
* Refresh the error message table
REFRESH gt_bdcmsg[].
* Call transaction ME01
CALLMETHOD obj_sl->create_slist
CHANGING
gt_bdcmsg_e = gt_bdcmsg[].
* Refresh the table
REFRESH obj_sl->gt_bdcdata[].
* Log error and success data
CALLMETHOD obj_sl->insert_final_tabs
EXPORTING
i_data = gs_data
gt_bdcmsg_i = gt_bdcmsg[].
ENDLOOP.
ENDFORM. " CREATE_SOURCE_LIST
*&---------------------------------------------------------------------*
*& Form FILE_READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM file_read .
* Local data dec
CONSTANTS: gc_sep TYPEcVALUE','.
DATA: gv_str(1000) TYPEc.
* Using Open dataset
OPENDATASET p_afile FORINPUTINTEXTMODEENCODINGDEFAULT.
IF sy-subrc NE0.
* Set error flag
gv_err = 'X'.
MESSAGE i000.
EXIT.
ENDIF.
* Read the data into string
DO.
CLEAR gv_str.
READDATASET p_afile INTO gv_str.
IF sy-subrc NE0.
EXIT.
ENDIF.
IF sy-indexEQ1.
* Dont read file header
CONTINUE.
ENDIF.
* Split the read record on ',' and append to internal table
SPLIT gv_str AT gc_sep
INTO gs_data-matn
gs_data-plnt
gs_data-valf
gs_data-valt
gs_data-vend
gs_data-porg.
IF gs_data-matn ISINITIALAND gs_data-plnt ISINITIAL.
CONTINUE.
ENDIF.
APPEND gs_data TO gt_data[].
ENDDO.
* Close file after read
CLOSEDATASET p_afile.
ENDFORM. " FILE_READ
*&---------------------------------------------------------------------*
*& Form UPLOAD_PRE
*&---------------------------------------------------------------------*
* Upload the comma separated file/Excel file from Presentation
* server
*----------------------------------------------------------------------*
FORM upload_pre .
IF p_csv EQ'X'.
CLEAR gv_err.
* Upload csv file
PERFORM upload_csv.
* Check for error
CHECK gv_err ISINITIAL.
* Create data object
CREATE OBJECT obj_sl.
* Create source list using BDC and call transaction ME01
PERFORM create_source_list.
CALLMETHOD obj_sl->write_log_pres
EXPORTING
i_sfile = p_psfile
i_efile = p_pefile
i_type = 'C'.
* Write screen output
CALLMETHOD obj_sl->write_screen_out.
* Free Object
FREE obj_sl.
ELSE.
CLEAR gv_err.
* Upload xls file
PERFORM upload_xls.
* Check for error
CHECK gv_err ISINITIAL.
* Create data object
CREATE OBJECT obj_sl.
* Create source list using BDC and call transaction ME01
PERFORM create_source_list.
callmethod obj_sl->write_log_pres
exporting
i_sfile = p_psfile
i_efile = p_pefile
i_type = 'X'.
* Write screen output
CALLMETHOD obj_sl->write_screen_out.
* Free Object
FREE obj_sl.
ENDIF.
ENDFORM. " UPLOAD_PRE
*&---------------------------------------------------------------------*
*& Form UPLOAD_CSV
*&---------------------------------------------------------------------*
* Upload CSV
*----------------------------------------------------------------------*
FORM upload_csv .
DATA: lv_fname TYPE string,
lt_csv TYPE truxs_t_text_data,
ls_csv(4096) TYPEc.
lv_fname = p_pfile.
CALLFUNCTION'GUI_UPLOAD'
EXPORTING
filename = lv_fname
filetype = 'DAT'
TABLES
data_tab = lt_csv
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 i000 WITH p_pfile.
gv_err = 'X'.
EXIT.
ENDIF.
LOOPAT lt_csv INTO ls_csv.
IF sy-tabix EQ1.
* If Header?
CONTINUE.
ENDIF.
* Split the read record on ',' and append to internal table
SPLIT ls_csv AT','
INTO gs_data-matn
gs_data-plnt
gs_data-valf
gs_data-valt
gs_data-vend
gs_data-porg.
IF gs_data-matn ISINITIALAND gs_data-plnt ISINITIAL.
CONTINUE.
ENDIF.
APPEND gs_data TO gt_data[].
ENDLOOP.
ENDFORM. " UPLOAD_CSV
*&---------------------------------------------------------------------*
*& Form UPLOAD_XLS
*&---------------------------------------------------------------------*
* Upload XLS
*----------------------------------------------------------------------*
FORM upload_xls .
DATA: lt_exl TYPE truxs_t_text_data.
CALLFUNCTION'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = 'X'
i_tab_raw_data = lt_exl
i_filename = p_pfile
TABLES
i_tab_converted_data = gt_data[]
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE i000 WITH p_pfile.
gv_err = 'X'.
EXIT.
ENDIF.
ENDFORM.
Regards
Veda