Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Gui_upload

Former Member
0 Likes
671

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!!

6 REPLIES 6
Read only

Former Member
0 Likes
650

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.

Read only

Former Member
0 Likes
650

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.

Read only

0 Likes
650

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

Read only

0 Likes
650

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

Read only

0 Likes
650

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.

Read only

Former Member
0 Likes
650

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