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.