download_template

in src/zgoog_i_bqtr_gen_mass_cds_c02.prog.abap [0:0]


  METHOD download_template.
    TYPES: BEGIN OF lty_template,
             tablename   TYPE string,
             cdsviewname TYPE string,
             sqlviewname TYPE string,
           END OF lty_template.

    DATA: lv_file     TYPE string,
          lv_csv_file TYPE rlgrap-filename,
          lv_msg      TYPE string,
          ls_template TYPE lty_template,
          lt_template TYPE STANDARD TABLE OF lty_template.

    ls_template-tablename   = 'Table Name'.
    ls_template-cdsviewname = 'CDS View Name'.
    ls_template-sqlviewname = 'SQL View Name'.

    APPEND ls_template TO lt_template.

    DATA: lt_csv_converted_table TYPE truxs_t_text_data.
    lv_csv_file = p_dpath && '\' && 'cds_gen_template.csv'.

    DATA: lv_csv_line TYPE c LENGTH 4096.

    DO.
      ASSIGN COMPONENT sy-index OF STRUCTURE ls_template TO FIELD-SYMBOL(<lv_field_name>).
      IF sy-subrc IS NOT INITIAL.
        EXIT.
      ENDIF.

      IF lv_csv_line IS INITIAL.
        lv_csv_line = <lv_field_name>.
      ELSE.
        lv_csv_line = lv_csv_line && ',' && <lv_field_name>.
      ENDIF.

    ENDDO.
    APPEND lv_csv_line TO lt_csv_converted_table.

    lv_file = lv_csv_file.

    cl_gui_frontend_services=>gui_download(
      EXPORTING
        filename                = lv_file                     " Name of file
      CHANGING
        data_tab                = lt_csv_converted_table                    " Transfer table
      EXCEPTIONS
        file_write_error        = 1                    " Cannot write to file
        no_batch                = 2                    " Front-End Function Cannot Be Executed in Backgrnd
        gui_refuse_filetransfer = 3                    " Incorrect Front End
        invalid_type            = 4                    " Invalid value for parameter FILETYPE
        no_authority            = 5                    " No Download Authorization
        unknown_error           = 6                    " Unknown error
        header_not_allowed      = 7                    " Invalid header
        separator_not_allowed   = 8                    " Invalid separator
        filesize_not_allowed    = 9                    " Invalid file size
        header_too_long         = 10                   " Header information currently restricted to 1023 bytes
        dp_error_create         = 11                   " Cannot create DataProvider
        dp_error_send           = 12                   " Error Sending Data with DataProvider
        dp_error_write          = 13                   " Error Writing Data with DataProvider
        unknown_dp_error        = 14                   " Error when calling data provider
        access_denied           = 15                   " Access to File Denied
        dp_out_of_memory        = 16                   " Not Enough Memory in DataProvider
        disk_full               = 17                   " Storage Medium full
        dp_timeout              = 18                   " Timeout of DataProvider
        file_not_found          = 19                   " Could not find file
        dataprovider_exception  = 20                   " General Exception Error in DataProvider
        control_flush_error     = 21                   " Error in Control Framework
        not_supported_by_gui    = 22                   " GUI does not support this
        error_no_gui            = 23                   " GUI not available
        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.

    lv_msg = |Template { lv_file } was successfully downloaded!|.
    MESSAGE lv_msg TYPE 'S'.