‎2008 Jan 19 1:21 PM
Hi All,
How to upload a tab delimited excel sheet to an internal table.
am able to upload the data into the internal table( i have declare this table as text os string type) by using the gui_upload FM .but am uable to split the data and pass into another internal table.
points will be rewarded for helpful anwers
thanks!!
‎2008 Jan 19 1:30 PM
Hi Padmasri,
Hi,
Use the following code......Using function module TEXT_CONVERT_XLS_TO_SAP as shown in code.
codeREPORT zvexceltodbms .
TABLES : zvresult.
TYPE-POOLS: truxs.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: filename TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.
TYPES: BEGIN OF t_datatab,
empid LIKE zvresult-empid,
bitsid LIKE zvresult-bitsid,
name LIKE zvresult-name,
maths LIKE zvresult-maths,
sp LIKE zvresult-sp,
de LIKE zvresult-de,
mgmt LIKE zvresult-mgmt,
total LIKE zvresult-total,
avrg LIKE zvresult-avrg,
END OF t_datatab.
DATA: itab TYPE STANDARD TABLE OF t_datatab WITH HEADER LINE,
seltab TYPE STANDARD TABLE OF t_datatab WITH HEADER LINE.
DATA: it_raw TYPE truxs_t_text_data.
At selection screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = filename.
***********************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.
IF filename IS NOT INITIAL.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw " WORK TABLE
i_filename = filename
TABLES
i_tab_converted_data = itab[] "ACTUAL DATA
EXCEPTIONS
conversion_failed = 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.
ELSE.
MESSAGE s001(zmsgclass).
ENDIF.
***********************************************************************
END-OF-SELECTION.
END-OF-SELECTION.
[/code]
kindly reward, if useful.
cheers.
Hema.
‎2008 Jan 19 1:32 PM
Hi Padmasri,
check this code to upload excel data to internal table itab.
DATA:IT_EXCEL LIKE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002.
PARAMETERS: P_FILE TYPE LOCALFILE OBLIGATORY .
SELECTION-SCREEN END OF BLOCK B1.
**********************AT SELECTION SCREEN EVENTS BEGINS***************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
STATIC = 'X'
CHANGING
FILE_NAME = P_FILE.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1 "From 1st Column
I_BEGIN_ROW = 2 "From 2nd row
I_END_COL = 6 "Till 6th Column
I_END_ROW = 65536 "Till Row
TABLES
INTERN = IT_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
CLEAR IT_EXCEL.
DESCRIBE TABLE IT_EXCEL.
IF SY-TFILL = 0.
MESSAGE I937.
STOP.
ENDIF.
LOOP AT IT_EXCEL.
CASE IT_EXCEL-COL.
WHEN '0001'.
MOVE: IT_EXCEL-VALUE TO RECORD1-MATNR_005.
WHEN '0002'.
MOVE: IT_EXCEL-VALUE TO RECORD1-WERKS_006.
WHEN '0003'.
MOVE: IT_EXCEL-VALUE TO RECORD1-BUDAT_002.
WHEN '0004'.
MOVE: IT_EXCEL-VALUE TO RECORD1-BKTXT_004.
WHEN '0005'.
MOVE: IT_EXCEL-VALUE TO RECORD1-ERFMG_007.
WHEN '0006'.
MOVE: IT_EXCEL-VALUE TO RECORD1-ERFMG_008.
ENDCASE.
AT END OF ROW.
APPEND RECORD1.
CLEAR RECORD1.
ENDAT.
ENDLOOP.
pls reward if found useful.
cheers,
Hema.
‎2008 Jan 19 1:42 PM
Hi Hema,
i have uploaded the data like dis...
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = l_filename
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
tables
data_tab = tb_text
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 ID SY-MSGID TYPE c_s NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
To delete the header data
DELETE tb_text FROM 1 TO 5.
ENDIF.
now the entries in the tb_text as below shown...
1. #010#B#/1/99/4/22####1//99/12/3##2#746###GR##I#442#3#OS0754#/2/00/7/19#16:89
so wat i did is...
LOOP AT tb_text .
SPLIT: tb_text-text AT '#'
INTO wa_ysorgh-mandt
wa_ysorgh-zrelid
wa_ysorgh-zval_frm
but am unable to move the content..plz help me in dis regard
‎2008 Jan 19 1:54 PM
hai padmasri we hav fm to upload data from excel to internal table which must has the structure alsmex_tabline.
and we hav to move data from that int tab to our internal table. try it its easy.
Edited by: sudheer b on Jan 19, 2008 2:57 PM
‎2008 Jan 19 5:51 PM
Hi Padma
W_STRING =' #H#263##030108'.
SPLIT W_STRING AT '#' INTO E_HEAD-FIRST E_HEAD-RTYPE E_HEAD-BUKRS......
or
Loop at itab into wa_itab.
split at 'tab' into f1 f2 f3 f3 ....
append to table you wanted.
endloop.
‎2008 Jan 19 1:35 PM
hai use this code it will help u
DATA: t_excel LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE .
FILL DATA FROM A SPECIFIED FILE TO T_ITAB INTERNAL TABLE
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_flname
i_begin_col = 1
i_begin_row = 2
i_end_col = 6
i_end_row = 9999
TABLES
intern = t_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
LOOP AT t_excel.
IF t_excel-col = 1 .
t_itab1-newko1 = t_excel-value.
ELSEIF t_excel-col = 2 .
t_itab1-newko2 = t_excel-value.
ELSEIF t_excel-col = 3 .
MOVE t_excel-value TO t_itab1-wrbtr.
ELSEIF t_excel-col = 4 .
t_itab1-txt = t_excel-value.
ELSEIF t_excel-col = 5 .
t_itab1-ltxt = t_excel-value.
ELSEIF t_excel-col = 6 .
t_itab1-kostl1 = t_excel-value.
ELSEIF t_excel-col = 7 .
t_itab1-kostl2 = t_excel-value.
ENDIF.
endloop.
Edited by: sudheer b on Jan 19, 2008 2:56 PM