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: 

download int table into csv file with each column in separate column in csv

Madhurivs23
Participant
0 Kudos

Hi All,

I want to download the data in internal table to CSV file. but each column in the table should come as separate column in csv format.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

FILENAME = GD_FILE

FILETYPE = 'ASC'

WRITE_FIELD_SEPARATOR = 'X'

tables

DATA_TAB = I_LINES_NEW

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 NE 0.

WRITE: 'Error ', SY-SUBRC, 'returned from GUI_DOWNLOAD SAP OUTBOUND'.

SKIP.

ENDIF.

with the above values passd , I am getting csv file but all the columns in one column separated by some square symbol.

How to separate them into different columns.

Thanks in advance

rgds,

Madhuri

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Below example might help you understand on dowloading CSV file:

TYPE-POOLS: truxs.
DATA: i_t001 TYPE STANDARD TABLE OF t001,
      i_data TYPE truxs_t_text_data.

SELECT * FROM t001 INTO TABLE i_t001 UP TO 20 ROWS.

CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
  EXPORTING
    i_field_seperator          = ','
*   I_LINE_HEADER              =
*   I_FILENAME                 =
*   I_APPL_KEEP                = ' '
  TABLES
    i_tab_sap_data             = i_t001
 CHANGING
   i_tab_converted_data       = i_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.

DATA: file TYPE string VALUE 'C:\testing.csv'.
CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    filename                = file
  CHANGING
    data_tab                = i_data[]
  EXCEPTIONS
    file_write_error        = 1
    no_batch                = 2
    gui_refuse_filetransfer = 3
    invalid_type            = 4
    no_authority            = 5
    unknown_error           = 6
    header_not_allowed      = 7
    separator_not_allowed   = 8
    filesize_not_allowed    = 9
    header_too_long         = 10
    dp_error_create         = 11
    dp_error_send           = 12
    dp_error_write          = 13
    unknown_dp_error        = 14
    access_denied           = 15
    dp_out_of_memory        = 16
    disk_full               = 17
    dp_timeout              = 18
    file_not_found          = 19
    dataprovider_exception  = 20
    control_flush_error     = 21
    not_supported_by_gui    = 22
    error_no_gui            = 23
    OTHERS                  = 24.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Regards

Eswar

8 REPLIES 8

former_member598013
Active Contributor
0 Kudos

HI Madhuri,

Please comment the below line from your statement. This might fixup your problem


FILETYPE = 'ASC'

Thanks,

Chidanand

0 Kudos

No its not working if I comment this one

Former Member
0 Kudos

Below example might help you understand on dowloading CSV file:

TYPE-POOLS: truxs.
DATA: i_t001 TYPE STANDARD TABLE OF t001,
      i_data TYPE truxs_t_text_data.

SELECT * FROM t001 INTO TABLE i_t001 UP TO 20 ROWS.

CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
  EXPORTING
    i_field_seperator          = ','
*   I_LINE_HEADER              =
*   I_FILENAME                 =
*   I_APPL_KEEP                = ' '
  TABLES
    i_tab_sap_data             = i_t001
 CHANGING
   i_tab_converted_data       = i_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.

DATA: file TYPE string VALUE 'C:\testing.csv'.
CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    filename                = file
  CHANGING
    data_tab                = i_data[]
  EXCEPTIONS
    file_write_error        = 1
    no_batch                = 2
    gui_refuse_filetransfer = 3
    invalid_type            = 4
    no_authority            = 5
    unknown_error           = 6
    header_not_allowed      = 7
    separator_not_allowed   = 8
    filesize_not_allowed    = 9
    header_too_long         = 10
    dp_error_create         = 11
    dp_error_send           = 12
    dp_error_write          = 13
    unknown_dp_error        = 14
    access_denied           = 15
    dp_out_of_memory        = 16
    disk_full               = 17
    dp_timeout              = 18
    file_not_found          = 19
    dataprovider_exception  = 20
    control_flush_error     = 21
    not_supported_by_gui    = 22
    error_no_gui            = 23
    OTHERS                  = 24.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

Regards

Eswar

0 Kudos

Hi Eswar,

That will be comma separated I think, I want like, each field in the internal table = each column in CSV file.

0 Kudos

Can you execute the sample code and check the file contents???

~Eswar

0 Kudos

Wowww..

Great..

Thanks Eswar. Thank you very much.Its working as per the requirement..

One more question,

Can I use the same to download the data into csv format in APPLICATION SERVER?

Thanks in advance,

regards,

Madhuri

0 Kudos

For formatting data in internal table as cama separated you can use FM: SAP_CONVERT_TO_TEX_FORMAT and download the data to application server via OPEN, READ & CLOSE DATASET commands.

~Eswar

0 Kudos

Thanks very much Eswar .

rgds,

Madhuri