Hello everyone, I want to share with you some information (hopefully useful) about exporting a table to a .csv file in ABAP.

While debugging, I noticed that many people don’t use the standard SAP_CONVERT_TO_CSV_FORMAT Function Module to export tables to a .csv file.

Investigating the reason I saw that in the versions of SAP I use there is a comment according to which the standard FM does not manage the possibility of inserting a header line in the .csv file.

The FM SAP_CONVERT_TO_CSV_FORMAT has, in fact, an input parameter I_LINE_HEADER which, if set, would allow you to insert the header line in the file. However, examining the code I found this comment within the FM SAP_CONVERT_TO_TEX_FORMAT (called within the FM SAP_CONVERT_TO_CSV_FORMAT):

 

To overcome this obstacle, I have written a few lines of code (a draft), which I want to share with you, which allows you to obtain the header line and add it to the .csv file using the table inserted as input in the FM SAP_CONVERT_TO_CSV_FORMAT:

(I specify that this code is a part of a larger code section)

DATA:
  l_help_id        LIKE tline-tdline,
  l_struc_index    LIKE sy-index.

DATA  ls_dfies TYPE dfies.

DATA: itab1 TYPE truxs_t_text_data.

DATA: BEGIN OF ls_name,
        label TYPE string,
      END OF ls_name,
      lt_name LIKE STANDARD TABLE OF ls_name.

DATA: lv_table_name TYPE  ddobjname,
      lv_field_name TYPE  dfies-lfieldname.

DATA: BEGIN OF ls_file,
        lv_header(15000) TYPE c,
      END OF ls_file,
      lt_file LIKE STANDARD TABLE OF ls_file.

FIELD-SYMBOLS: <f_source>.

DATA: lt_table TYPE TABLE OF "table to export",
      ls_table LIKE LINE OF lt_table.

DATA lv_header_line TYPE c.

DATA lv_header(15000) TYPE c.

REFRESH: lt_name[], lt_table[].
CLEAR: l_struc_index, lv_header_line.

lt_table[] = "table to export".

IF lv_header_line EQ 'X'.

  READ TABLE lt_table INTO ls_table INDEX 1.
  DO.
    l_struc_index = l_struc_index + 1.
    UNASSIGN <f_source>.
    ASSIGN COMPONENT l_struc_index OF
             STRUCTURE ls_table TO <f_source>.
    IF sy-subrc <> 0.
      EXIT.
    ELSE.

      ASSIGN COMPONENT l_struc_index OF
               STRUCTURE ls_table TO <f_source>.
      DESCRIBE FIELD <f_source>  HELP-ID l_help_id.
      CONDENSE l_help_id.
      CLEAR: lv_table_name, lv_field_name.
      SPLIT l_help_id AT '-' INTO lv_table_name lv_field_name.

      CALL FUNCTION 'DDIF_FIELDINFO_GET'
        EXPORTING
          tabname    = lv_table_name
          langu      = sy-langu
          lfieldname = lv_field_name
          all_types  = 'X'
        IMPORTING
          dfies_wa   = ls_dfies
        EXCEPTIONS
          not_found  = 1
          OTHERS     = 3.
      CASE sy-subrc.
        WHEN 0.
          CLEAR ls_name.
          IF ls_dfies-fieldtext NE ''.
            ls_name-label = ls_dfies-fieldtext.
          ELSE.
            ls_name-label = ''.
          ENDIF.
          APPEND ls_name TO lt_name.
        WHEN 1.
          RAISE not_found.
        WHEN OTHERS.
          RAISE internal_error.
      ENDCASE.

    ENDIF.

  ENDDO.

  CLEAR ls_name.

  LOOP AT lt_name INTO ls_name.
    IF sy-tabix EQ 1.
      lv_header = ls_name-label.
    ELSE.
      CONCATENATE lv_header ';' ls_name-label INTO lv_header.
    ENDIF.
  ENDLOOP.

  APPEND lv_header TO lt_file.

ENDIF.


 

At this point we can hang the converted file with the FM SAP_CONVERT_TO_CSV_FORMAT to lt_file.

In summary, in this post I wanted to share a code that I wrote to get the header to add to a csv file produced by an FM implemented by SAP (since this function module does not manage this functionality)

I am also writing two links related to posts in which we talk about exporting an internal table to an Excel file:

https://blogs.sap.com/2021/06/09/easy-way-to-download-internal-table-data-to-an-excel-file-in-the-presentation-server/

https://answers.sap.com/questions/4315311/download-internal-table-to-excel-with-header.html

I hope this information will be useful to you.
See you in the next post.

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x