
ARCHIVOS LOCALES: DOWNLOAD DE DATOS
GRABACION DE DATOS EN ARCHIVOS LOCALES
Para grabar datos existentes en las tablas internas de nuestros programas a archivos ubicados en la PC, utilizaremos el método CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD.
Ej: El método GUI_UPLOAD
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = 'c: ARCHIVO_SALIDA.TXT'
filetype = 'ASC'
CHANGING
data_tab = ti_archivo[]
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
not_supported_by_gui = 22
error_no_gui = 23
OTHERS = 24.
Analicemos algunos parámetros del método:
- FILENAME: contiene el directorio y nombre del archivo a descargar a la PC.
- FILETYPE: contiene el tipo o extensión del archivo que descargamos a la PC.
Los tipos o extensiones admitidas son:
- BIN: para archivos binarios. Se debe especificar la longitud del archivo en el parámetro BIN_FILESIZE. La tabla interna que se utiliza debe tener un solo campo del tipo X.
- ASC: para archivos ASCII.
- DAT: para archivos Excel. Las columnas son separadas utilizando tabs.
Las líneas son separadas con saltos de línea.
- WK1: para archivos Excel y de Lotus.
- WRITE_FIELD_SEPARATOR: indica si se generará un separador de archivo o no y cual será.
- DATA_TAB: aquí se almacena el contenido del archivo. Esta tabla debe tener la misma estructura del archivo.
En este método también están definidas excepciones con descripciones q contemplan cada uno de los errores q se pueden producir al ejecutar el método.
Luego si ejecutamos el código veremos el mensaje q dice q la transferencia de datos se realizó correctamente y se especifica la cantidad de bytes transferida.
IMPORTANTE: En algunos programas ABAP, podemos ver q se utilizan las funciones DOWNLOAD y WS_DOWNLOAD.
No es recomendable la utilización de estas funciones debido a q actualmente son consideradas objetos obsoletos por SAP.
NOTA: Mediante el botón modelo q esta a la der de la barra de herramienta podemos generar las estructuras de todos los módulos de funciones y métodos perteneciente a clases q deseamos utilizar en nuestros programas.
Si presionamos el botón veremos a continuación una ventana de dialogo dde seleccionamos la opción Patrón para Objetos ABAP, si deseamos generar la estructura de un método de una clase o la opción Call Function si deseamos generar la estructura de un modulo de funciones.
Supongamos q deseamos generar la estructura de unos de los métodos de la clase CL_GUI_FRONTED_SERVICES entonces luego de seleccionar Patrón para Objetos ABAP presionamos el botón continuar, luego manteniendo seleccionada la opción Methodo Call ingresamos en clase interface el nombre de la clase CL_GUI_FRONTED_SERVICE y dentro del campo de entrada del método, presionamos F4 para buscar el método q estamos necesitando, allí por ejemplo podemos seleccionar el método FILE_OPEN_DIALOG y presionar continuar en la ventana de dialogo. Finalmente esto va a provocar q se genere el esqueleto o estructura del método en el código ABAP con el q estamos trabajando.
Vale la pena destacar q para q dichas estructuras o esqueletos de los módulos de funciones o métodos se generen en el código del programa debemos estar modificando el programa.