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

ITAB to textfile

Former Member
0 Likes
1,295

Hi Gurus,

I want to download my internal table to a text file as CSV (Comma Separated Values).

But the FM . GUI_DOWNLOAD downloads the data in Tab separated fields.

so any one please tell me how to download as CSV.

1 ACCEPTED SOLUTION
Read only

venkat_o
Active Contributor
0 Likes
1,222

Use the Function Module SAP_CONVERT_TO_CSV_FORMAT to convert the internal table into Comma seperated format then download this internal table using the Function Module GUI_DOWNLOAD.

REPORT zvenkat_test2.
TYPE-POOLS: truxs.
TYPES:
  BEGIN OF t_line,
    vbeln   LIKE vbap-vbeln,
    posnr   LIKE vbap-posnr,
  END OF t_line.
DATA:w_line TYPE t_line.
DATA:itab   TYPE STANDARD TABLE OF t_line.
DATA:itab1  TYPE truxs_t_text_data.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.
PARAMETERS p_file TYPE localfile DEFAULT 'C:\Test.txt'.
SELECTION-SCREEN END OF BLOCK b1.
*---------------------------------------------------------------------
"At selection-screen on value-request for p_file.
*---------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM f4_help.

START-OF-SELECTION.
  PERFORM get_data.

END-OF-SELECTION.
  PERFORM convert_to_csv.
  PERFORM download_data.

*&---------------------------------------------------------------------*
*&      Form  f4_help
*&---------------------------------------------------------------------*
FORM f4_help .

  DATA:
        l_file_name LIKE  ibipparms-path  .

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = 'P_FILE'
    IMPORTING
      file_name     = l_file_name.

  p_file = l_file_name.

ENDFORM.                                                    " f4_help
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data .
  SELECT
    vbeln
    posnr
    UP TO 10 ROWS
    FROM vbap
    INTO TABLE itab.
ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  convert_to_csv
*&---------------------------------------------------------------------*
FORM convert_to_csv .
  CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
    EXPORTING
      i_field_seperator    = ';'
    TABLES
      i_tab_sap_data       = itab
    CHANGING
      i_tab_converted_data = itab1
    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.
ENDFORM.                    " convert_to_csv
*&---------------------------------------------------------------------*
*&      Form  download_data
*&---------------------------------------------------------------------*
FORM download_data .
  DATA l_filename TYPE  string.
  l_filename = p_file.
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = l_filename
    TABLES
      data_tab = itab1
    EXCEPTIONS
      OTHERS   = 1.
ENDFORM.                    " download_data
I hope that it helps u. Regards, Venkat.O

Hi Gurus,

I want to download my internal table to a text file as CSV (Comma Separated Values).

But the FM . GUI_DOWNLOAD downloads the data in Tab separated fields.

so any one please tell me how to download as CSV.

5 REPLIES 5
Read only

venkat_o
Active Contributor
0 Likes
1,223

Use the Function Module SAP_CONVERT_TO_CSV_FORMAT to convert the internal table into Comma seperated format then download this internal table using the Function Module GUI_DOWNLOAD.

REPORT zvenkat_test2.
TYPE-POOLS: truxs.
TYPES:
  BEGIN OF t_line,
    vbeln   LIKE vbap-vbeln,
    posnr   LIKE vbap-posnr,
  END OF t_line.
DATA:w_line TYPE t_line.
DATA:itab   TYPE STANDARD TABLE OF t_line.
DATA:itab1  TYPE truxs_t_text_data.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text_001.
PARAMETERS p_file TYPE localfile DEFAULT 'C:\Test.txt'.
SELECTION-SCREEN END OF BLOCK b1.
*---------------------------------------------------------------------
"At selection-screen on value-request for p_file.
*---------------------------------------------------------------------
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
  PERFORM f4_help.

START-OF-SELECTION.
  PERFORM get_data.

END-OF-SELECTION.
  PERFORM convert_to_csv.
  PERFORM download_data.

*&---------------------------------------------------------------------*
*&      Form  f4_help
*&---------------------------------------------------------------------*
FORM f4_help .

  DATA:
        l_file_name LIKE  ibipparms-path  .

  CALL FUNCTION 'F4_FILENAME'
    EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    = 'P_FILE'
    IMPORTING
      file_name     = l_file_name.

  p_file = l_file_name.

ENDFORM.                                                    " f4_help
*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
FORM get_data .
  SELECT
    vbeln
    posnr
    UP TO 10 ROWS
    FROM vbap
    INTO TABLE itab.
ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  convert_to_csv
*&---------------------------------------------------------------------*
FORM convert_to_csv .
  CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'
    EXPORTING
      i_field_seperator    = ';'
    TABLES
      i_tab_sap_data       = itab
    CHANGING
      i_tab_converted_data = itab1
    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.
ENDFORM.                    " convert_to_csv
*&---------------------------------------------------------------------*
*&      Form  download_data
*&---------------------------------------------------------------------*
FORM download_data .
  DATA l_filename TYPE  string.
  l_filename = p_file.
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      filename = l_filename
    TABLES
      data_tab = itab1
    EXCEPTIONS
      OTHERS   = 1.
ENDFORM.                    " download_data
I hope that it helps u. Regards, Venkat.O

Read only

Former Member
0 Likes
1,222

Hi venkat,

ThankQ very much,

Now i need the text fields with double quotes

Read only

Former Member
0 Likes
1,222

Hi

TYPE-POOLS: truxs.

TYPES:

BEGIN OF ty_Line,

vbeln LIKE vbap-vbeln,

posnr LIKE vbap-posnr,

END OF ty_Line.

ty_Lines TYPE STANDARD TABLE of ty_Line WITH DEFAULT KEY.

DATA: itab TYPE ty_Lines.

DATA: itab1 TYPE truxs_t_text_data.

SELECT

vbeln

posnr

UP TO 10 ROWS

FROM vbap

INTO TABLE itab.

CALL FUNCTION 'SAP_CONVERT_TO_CSV_FORMAT'

EXPORTING

i_field_seperator = ';'

TABLES

i_tab_sap_data = itab

CHANGING

i_tab_converted_data = itab1

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.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

filename = 'C:\TEMP\test.txt'

TABLES

data_tab = itab1

EXCEPTIONS

OTHERS = 1.

Plz Don't forget to reward points.....

Regards,

Sreenivasa sarma K.

Read only

Former Member
0 Likes
1,222

Kindly reward points if useful and thios close this thread if u feel satisfied

The coding is as follows

* types declaration of ty_tab
TYPES : BEGIN OF ty_tab,
          bukrs TYPE anla-bukrs,
          anln1 TYPE anla-anln1,
          anln2 TYPE anla-anln2,
          anlkl TYPE anla-anlkl,
        END OF ty_tab.
 
* data declaration for ty_tab
DATA : it_tab TYPE TABLE OF ty_tab INITIAL SIZE 0,
       is_tab TYPE ty_tab.
 
* data declaration to upload excel file to internal table
DATA : it_data TYPE TABLE OF alsmex_tabline INITIAL SIZE 0,
       is_data TYPE alsmex_tabline.
 
* selection screen
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS       : p_file TYPE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN : END OF BLOCK b1.
 
* at selection screen on value request
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.
 
* start of selection
START-OF-SELECTION.
 
* sub routine to upload data from excel sheet to internal table
  PERFORM upload_data.
 
*&---------------------------------------------------------------------*
*&      Form  upload_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM upload_data.
  IF NOT p_file IS INITIAL.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
         EXPORTING
              filename                = p_file
              i_begin_col             = 1
              i_begin_row             = 1
              i_end_col               = 256
              i_end_row               = 65536
         TABLES
              intern                  = it_data
         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.
  ENDIF.
 
  IF NOT it_data[] IS INITIAL.
    LOOP AT it_data INTO is_data.
 
      AT NEW row.
        CLEAR : is_tab.
      ENDAT.
 
      IF is_data-col = '001'.
        MOVE is_data-value TO is_tab-bukrs.
      ENDIF.
      IF is_data-col = '002'.
        MOVE is_data-value TO is_tab-anln1.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
             EXPORTING
                  input  = is_tab-anln1
             IMPORTING
                  output = is_tab-anln1.
      ENDIF.
      IF is_data-col = '003'.
        MOVE is_data-value TO is_tab-anln2.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
             EXPORTING
                  input  = is_tab-anln2
             IMPORTING
                  output = is_tab-anln2.
      ENDIF.
      IF is_data-col = '004'.
        MOVE is_data-value TO is_tab-anlkl.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
             EXPORTING
                  input  = is_tab-anlkl
             IMPORTING
                  output = is_tab-anlkl.
      ENDIF.
 
      AT END OF row.
        APPEND is_tab TO it_tab.
      ENDAT.
      CLEAR : is_data.
 
    ENDLOOP.
  ENDIF.
 
ENDFORM.                    " upload_data

Read only

Former Member
0 Likes
1,222

Hi ,

Try this.

The program below demonstrates the above functionality. Here, we are reading data from table EKKO and downloading the data as '|' delimited file.

Editor's note: This tip works on SAP versions 4.6 or higher.

Code

REPORT y_ss_test_ekko .

  • To hold selection data

DATA: i_ekko TYPE STANDARD TABLE OF ekko.

  • To hold converted text data

DATA: i_text(4096) TYPE c OCCURS 0.

  • Selection Screen

PARAMETERS: p_ebeln LIKE ekko-ebeln.

  • Select data into an ITAB based on the selection Criteria

SELECT * FROM ekko

INTO TABLE i_ekko

WHERE ebeln = p_ebeln.

  • Process further only if found some data

IF NOT i_ekko[] IS INITIAL.

  • Convert data in internal table to a delimited text data

CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'

EXPORTING

i_field_seperator = '|'

TABLES

i_tab_sap_data = i_ekko

CHANGING

i_tab_converted_data = i_text

EXCEPTIONS

conversion_failed = 1

OTHERS = 2.

IF sy-subrc <> 0.

WRITE: / 'Program failed to Convert data.'.

ELSE.

  • Download convert data to Presentation Server

CALL FUNCTION 'DOWNLOAD'

TABLES

data_tab = i_text

EXCEPTIONS

OTHERS = 8.

IF sy-subrc <> 0.

WRITE: / 'Program failed to download data.'.

ENDIF.

ENDIF.

ENDIF.

Regards

Sourabh Verma