
Tratamiento de archivos locales
Abap nos propociona una serie de métodos muy útiles para el tratamiento de archivos locales ubicados en nuestra PC mediante la clase CL_GUI_FRONTEND_SERVICES. (Los metodos se ejecutan como si fueran funciones)
Podemos ver todos los metodos disponibles en la clase de la siguiente forma:
MODELO --> Patrón p. objetos ABAP --> en Clase/Interface ponemos el nombre de la clase --> y en Metodo presionamos F4.
Veremos en detalle los siguientes métodos:
FILE_OPEN_DIALOG: Para mostrar la pantalla de navegación que permita al usuario poder seleccionar el archivo del directorio de su PC.
GUI_DOWNLOAD: Para descargar los programas a archivos de PC. (DE PROGRAMA A PC)
GUI_UPLOAD: para bajar datos de los archivos de la pc a nuestros programas. (de PC a PROGRAMA)
*Otra forma de visualizar el contenido de la clase es por la transacción SE24 llamada Class Builder.
Búsqueda de archivos en la PC:
Para buscar archivos en nuestra PC, utilizaremos el método CL_GUI_FRONTEND_SERVICES=>FILE_:OPEN_DIALOG.
EJEMPLO:
DATA: tl_filetable TYPE filetable,
stl_file_table TYPE file_table,
vl_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
default_filename = '*'. " Contiene el nombre del archivo que buscaremos en la PC. si colocamos * veremos todos los archivos
CHANGING
rc = vl_rc
file_table = tl_filetable. " Contiene la ruta y el nombre del archivo seleccionado
READ TABLE tl_filetable INDEX 1 INTO stl_file_table.
IF sy-subrc EQ 0.
MOVE stl_file_table TO p_path
ENDIF.
Lectura de datos de los archivos locales:
Para leer datos de los archivos locales(de nustra pc) en nuestras tablas internas de nuestros programas, utilizaremos el método CL_FUI_FRONTEND_SERVICES=>GUI_UPLOAD.
Ejemplo:
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = vl_file " Contiene el directorio y nombre del archivo local con
el que estamos trabajando
filetype = 'ASC' " Contiene el tipo o extensión del archivo local
has_field_separator = '' " Indica que el archivo local tiene separadores
CHANGING
data_tab = ti_archivo[] " IT donde almacenaremos los datos del archivo local
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.