Daten als File downloaden

In diesem kleinen Tutorial möchte ich zeigen wie einfach es ist Daten aus einer Web Dynpro/ABAP Applikation als File herunterzuladen.

Meine fiktive Applikation soll einen Download von Fehlermeldungen erlauben. Dabei sollen die Meldungstexte, diese stehen in einer lokalen Tabelle, als MS Excel File heruntergeladen werden können.

Dazu erstelle ich am View eine Methode DOWNLOAD MESSAGES welche nach einem Button Klick aufgerufen wird. Innerhalb dieser Methode werden die Fehlermeldungen in einem Content String zusammen geführt. Am Ende jeder Message wird noch ein Zeilenumbruch eingefügt.
Dieser Content String wird danach in einen XSTRING umgewandelt und zusammen mit einem Filenamen und MIME Type der Methode ATTACH_FILE_TO_RESPONSE der Klasse CL_WD_RUNTIME_SERVICES übergeben.

METHOD download_messages.
  DATA: lv_export_string   TYPE string,
        lv_export_string_x TYPE xstring.

  CONSTANTS: co_xls_mime_type TYPE string VALUE 'application/vnd.ms-excel',
             co_filename      TYPE string VALUE 'messages',
             co_filetype      TYPE string VALUE 'xls'.

* Export messages
  LOOP AT wd_this->a_check_messages ASSIGNING FIELD-SYMBOL(<wa_check_messages>).
    lv_export_string = |{ lv_export_string }{ <wa_check_messages>-err_message }{ cl_abap_char_utilities=>cr_lf }|.
  ENDLOOP.

* Convert string to xstring
  CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
    EXPORTING
      text   = lv_export_string
    IMPORTING
      buffer = lv_export_string_x.

* Build filename
  DATA(lv_filename) = |{ co_filename }.{ co_filetype }|.

* Attach file to http response
  cl_wd_runtime_services=>attach_file_to_response(  i_filename  = lv_filename
                                                    i_content   = lv_export_string_x
                                                    i_mime_type = co_xls_mime_type ).

  CLEAR: lv_export_string, lv_export_string_x, lv_filename.
ENDMETHOD.

Posted on 17. Juni 2015 in Blog, Web Dynpro/ABAP

Back to Top