Application Development 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: 

Issue with field separator in GUI_UPLOAD

Former Member
0 Kudos

Hello Gurus

I am facing issue with gui_upload. I have a text file in which the fields are eparated by single Pipe i.e |. Now when I try to read the data from file in internal table even with using field separator it does not insert data in proper fields.

DATA: BEGIN OF IT_TAB OCCURS 0,

OBJECT_ID type string,

VERSION_SERIES_ID TYPE string,

VERSION_NUMBER TYPE string,

REVISION TYPE string,

DOC_NUMBER TYPE string,

DOCTITLE TYPE string,

FILESIZE TYPE string,

MIME_TYPE TYPE string,

PLANTUNIT TYPE string,

END OF IT_TAB.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = w_mpath

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = '|'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • VIRUS_SCAN_PROFILE =

  • NO_AUTH_CHECK = ' '

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

I want the data to get appended in internal table based on | separator.

Please help.

Regards,

Rajesh.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

I believe the field separator parameter will work for Excel files..You have to get the internal table in a string format..and then use split statement..

check this example..

DATA: BEGIN OF it_tab OCCURS 0,
       object_id TYPE string,
       version_series_id TYPE string,
       version_number TYPE string,
       revision TYPE string,
       doc_number TYPE string,
       doctitle TYPE string,
       filesize TYPE string,
       mime_type TYPE string,
       plantunit TYPE string,
     END OF it_tab.

DATA: t_tab   TYPE TABLE OF string,
      v_string TYPE string.

CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename                = 'C:\TEST.TXT'
*    has_field_separator     = '|'          "Actually not required.
  TABLES
    data_tab                = t_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.

ENDIF.

LOOP AT t_tab INTO v_string.
  SPLIT v_string AT ','
        INTO
        it_tab-object_id
        it_tab-version_series_id
        it_tab-version_number
        it_tab-revision
        it_tab-doc_number
        it_tab-doctitle
        it_tab-filesize
        it_tab-mime_type
        it_tab-plantunit.
  APPEND it_tab.
  CLEAR: it_tab.
ENDLOOP.

Thanks

Naren

Edited by: Narendran Muthukumaran on Oct 15, 2008 4:58 PM

5 REPLIES 5

JozsefSzikszai
Active Contributor
0 Kudos

if you check the documentation of the FM, you'll see that HAS_FIELD_SEPARATOR can have two values:

X - this stands if the fields are separated with tabs - and only tabs nothing else

space - no separation

I think you have to upload the values into a temporary internal table (with one field - simply string), LOOP AT the itab and SPLIT line AT '|' INTO the line of the real internal table.

former_member194669
Active Contributor
0 Kudos

Try this way


data : begin of i_text occurs 0,
line(500) type c,
end of i_text.

call function 'gui_upload'
exporting
filename = 'C:	ext.txt'
filetype = 'ASC'
tables
data_tab = i_text.

Loop at i_text.
split i_text-line at '|' into table itab1.
append itab1.
endloop.

or


CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = w_mpath
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'  " Pointing to space (tab)

Former Member
0 Kudos

Hi,

I believe the field separator parameter will work for Excel files..You have to get the internal table in a string format..and then use split statement..

check this example..

DATA: BEGIN OF it_tab OCCURS 0,
       object_id TYPE string,
       version_series_id TYPE string,
       version_number TYPE string,
       revision TYPE string,
       doc_number TYPE string,
       doctitle TYPE string,
       filesize TYPE string,
       mime_type TYPE string,
       plantunit TYPE string,
     END OF it_tab.

DATA: t_tab   TYPE TABLE OF string,
      v_string TYPE string.

CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
    filename                = 'C:\TEST.TXT'
*    has_field_separator     = '|'          "Actually not required.
  TABLES
    data_tab                = t_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.

ENDIF.

LOOP AT t_tab INTO v_string.
  SPLIT v_string AT ','
        INTO
        it_tab-object_id
        it_tab-version_series_id
        it_tab-version_number
        it_tab-revision
        it_tab-doc_number
        it_tab-doctitle
        it_tab-filesize
        it_tab-mime_type
        it_tab-plantunit.
  APPEND it_tab.
  CLEAR: it_tab.
ENDLOOP.

Thanks

Naren

Edited by: Narendran Muthukumaran on Oct 15, 2008 4:58 PM

Former Member
0 Kudos

can you check your internal table fileds and text file fields order is same or not.

ex: internal table

matnr

maktx

price

unit

same way your text file aslo

matnr| maktx| price|unit like...........

Former Member
0 Kudos

try like this

has_field_separator = ' '

Rhea.

Edited by: rhea on Oct 15, 2008 4:57 PM