cancel
Showing results for 
Search instead for 
Did you mean: 

Error while using the function module GUI_UPLOAD

Former Member
0 Kudos

Hi,

My requirement is to upload the data from .txt file into internal table.

I have given my code like this

PARAMETERS: p_fname LIKE rlgrap-filename.

data: begin of gt_string occurs 0,

record type char255,

end of gt_string.

AT SELECTION-SCREEN ON VALUE-REQUEST for p_fname.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

  • PROGRAM_NAME = SYST-REPID

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

STATIC = 'X'

  • MASK = ' '

CHANGING

file_name = p_fname

EXCEPTIONS

MASK_TOO_LONG = 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.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = p_fname

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • NO_AUTH_CHECK = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

tables

data_tab = gt_string

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 SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

Here I am getting dump error as 'Type conflict when calling a function module.

The function module interface allows you to specify only fields

of a particular type under "FILENAME". The field "P_FNAME" specified here has a different field type'.

What would be the reason for this error?

Can anyone help me?

Regards,

Hema

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

Hi Hema,

Check out the below code.....

--> in the 'F4_FILENAME' the filename is of type CHAR.

--> in the 'GUI_UPLOAD' it is of type STRING.

So use 2 variables, one of type CHAR n the other of type STRING.

&----


*& Report YRAMTEST1

*&

&----


*&

*&

&----


REPORT YRAMTEST1.

DATA: VAR(128) TYPE C,

VAR1 TYPE STRING.

TYPES: BEGIN OF TYPE_TAB,

D1 TYPE C,

C1 TYPE STRING,

C2 TYPE STRING,

END OF TYPE_TAB.

DATA: IT_TAB TYPE STANDARD TABLE OF TYPE_TAB,

WA_ITAB LIKE LINE OF IT_TAB.

VAR ='C:\Documents and Settings\ramya.shree\Desktop\MATS.TXT'.

PARAMETERS : P_FILE LIKE RLGRAP-FILENAME.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = ' '

IMPORTING

FILE_NAME = VAR.

VAR1 = VAR.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = VAR1

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = IT_TAB

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 SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

this might help u....

Former Member
0 Kudos

Hi,

1.Use F4_FILENAME for search help for the file.

2.In the GUI_UPLOAD , file type as DAT.

Thanks and Regards,

Shiva.

Former Member
0 Kudos

P_FNAME passed to the GUI_UPLOAD FM should be a STRING variable.

So declare P_FNAME as

data: p_fname type string.

For F4 help on P_FNAME call the static method CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

Hope this helps. Rwd points if helpful.

Thanks,

Balaji

Former Member
0 Kudos

Hi,

For F4 on P_FNAME field,I have used 'KD_GET_FILENAME_ON_F4'.

But I am not getting F4 help on this field.What would be the reason?

Regards,

Hema

Former Member
0 Kudos

see this sample program for F4 help

&----


*& Report ZSD_EXCEL_INT_APP

*&

&----


*&

*&

&----


REPORT ZSD_EXCEL_INT_APP.

parameter: file_nm type localfile.

types : begin of it_tab1,

f1(20),

f2(40),

f3(20),

end of it_tab1.

data : it_tab type table of ALSMEX_TABLINE with header line,

file type rlgrap-filename.

data : it_tab2 type it_tab1 occurs 1,

wa_tab2 type it_tab1,

w_message(100) TYPE c.

at selection-screen on value-request for file_nm.

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

  • PROGRAM_NAME = SYST-REPID

  • DYNPRO_NUMBER = SYST-DYNNR

  • FIELD_NAME = ' '

STATIC = 'X'

  • MASK = ' '

CHANGING

file_name = file_nm

EXCEPTIONS

MASK_TOO_LONG = 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.

start-of-selection.

refresh it_tab2[].clear wa_tab2.

file = file_nm.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = file

i_begin_col = '1'

i_begin_row = '1'

i_end_col = '10'

i_end_row = '35'

tables

intern = it_tab

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 it_tab.

case it_tab-col.

when '002'.

wa_tab2-f1 = it_tab-value.

when '004'.

wa_tab2-f2 = it_tab-value.

when '008'.

wa_tab2-f3 = it_tab-value.

endcase.

at end of row.

append wa_tab2 to it_tab2.

clear wa_tab2.

endat.

endloop.

data : p_file TYPE rlgrap-filename value 'TEST3.txt'.

OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

*--- Display error messages if any.

IF sy-subrc NE 0.

MESSAGE e001(zsd_mes).

EXIT.

ELSE.

*---Data is downloaded to the application server file path

LOOP AT it_tab2 INTO wa_tab2.

TRANSFER wa_tab2 TO p_file.

ENDLOOP.

ENDIF.

*--Close the Application server file (Mandatory).

CLOSE DATASET p_file.

loop at it_tab2 into wa_tab2.

write : / wa_tab2-f1,wa_tab2-f2,wa_tab2-f3.

endloop.

Former Member
0 Kudos

I tried the below code. It worked for me.



 PARAMETERS:  P_FILE LIKE RLGRAP-FILENAME
                DEFAULT 'c:\recounts.xls' OBLIGATORY.   " File Name

 AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
 CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
      EXPORTING
*           MASK      = '*.*'
           STATIC    = 'X'
      CHANGING
           FILE_NAME = P_FILE
      EXCEPTIONS
           MASK_TOO_LONG    = 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.

Hope this helps.

Thanks,

Balaji

Former Member
0 Kudos

Hi,

U can do like this

Declare a variable filepath Type String.


DATA: filepath TYPE string.

Then



SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_file TYPE rlgrap-filename.
SELECTION-SCREEN:END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

  CALL FUNCTION 'F4_FILENAME'
* EXPORTING
*   PROGRAM_NAME        = SYST-CPROG
*   DYNPRO_NUMBER       = SYST-DYNNR
*   FIELD_NAME          = ' '
   IMPORTING
     file_name           = p_file
            .

filepath = p_file.

CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename                      = filepath
*   FILETYPE                      = 'ASC'
    has_field_separator           = 'X'

   TABLES
                       data_tab   = i_tab


 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 SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

It will Solve Your Problem

Regards

Sandipan

Former Member
0 Kudos

Hi,

My flat file has four columns.

190 1001 190a 1001

27 1001 27a 1001

28 1001 28a 1001

627 1001 627a 1001

I have declared the internal table like this.

data: begin of gt_string occurs 0,

c1(255) TYPE c,

c2(255) TYPE c,

c3(255) TYPE C,

c4(255) TYPE c,

end of gt_string.

and used it in the FM 'GUI_UPLOAD'.

When I check in debugging mode,i am getting only one column(c1) values in table gt_string.Why am I not getting other columns?

Former Member
0 Kudos

Hi,


data: begin of gt_string occurs 0,
c1(255) TYPE c,
c2(255) TYPE c,
c3(255) TYPE C,
c4(255) TYPE c,
end of gt_string.

DATA: i_tab TYPE STANDARD TABLE OF gt_string,
          wa_tab TYPE gt_string,

in the time of passing to GUI_UPLOAD in Table Parameter pass Internal Table Not GT_STRING


  TABLES
       data_tab   = i_tab

Regards

Sandipan

Edited by: Sandipan Ghosh on Apr 2, 2008 11:46 AM

Former Member
0 Kudos

Hi,

In function GUI_UPLOAD u r giving the file name as p_fname but

the parameter FILENAME is of Type String.

So it is fiving error.

In File Name Pass Your .TXT file name as 'C:\1.TXT'

Regards

Sandipan