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.
Comments are closed.