Para los abapers es común que nos pidan hacer programas para descargar información que generalmente se procesa y analiza luego en Excel, dicho archivo debe guardarse en algún lugar de la computadora de la persona que desea descargar el archivo. En estos casos debemos mostrar el cuadro de dialogo “Guardar Como …” para que la persona pueda seleccionar la carpeta y el nombre del archivo que desea utilizar.Para hacer esto podemos hacer uso de las funciones file_save_dialog y GUI_DOWNLOAD, como se muestra a continuación:
DATA: ld_filename TYPE string, ld_path TYPE string, ld_fullpath TYPE string, ld_result TYPE i, file TYPE string. "Tabla interna con los datos que deseamos grabar en archivo de texto DATA: it_xml LIKE STANDARD TABLE OF line WITH HEADER LINE. "Función para mostrar ventana para seleccionar archivo CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING window_title = 'Guardar archivo' "Titulo del dialogo default_extension = 'TXT' "Extension predeterminada default_file_name = 'File' "Nombre predeterminado del archivo initial_directory = 'C:\' "Directorio inicial CHANGING filename = ld_filename path = ld_path fullpath = ld_fullpath user_action = ld_result. file = ld_fullpath. "Función para descargar archivos CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = file "Nombre del archivo filetype = 'ASC' "Tipo de archivo (texto) TABLES data_tab = it_xml "Tabla interna con los datos EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 no_authority = 5 unknown_error = 6 header_not_allowed = 7 separator_not_allowed = 8 filesize_not_allowed = 9 header_too_long = 10 dp_error_create = 11 dp_error_send = 12 dp_error_write = 13 unknown_dp_error = 14 access_denied = 15 dp_out_of_memory = 16 disk_full = 17 dp_timeout = 18 file_not_found = 19 dataprovider_exception = 20 control_flush_error = 21 OTHERS = 22. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE 'I' NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
Mostrar dialogo (ventana) para guardar archivo en ABAP.