✒️ABAP Los archivos locales y el upload de datos
ABAP Los archivos locales y el upload de datos
Tratamiento de archivos locales
ABAP ofrece una serie de métodos para el tratamiento de archivos locales mediante la clase CL_GUI_FRONTEND_SERVICES.
Para visualizar todos los métodos disponibles en la clase, de debe editar un programa ABAP y presionar el botón Modelo (Pattern). Allí se marca la opción Patrón p. objetos ABAP (ABAP Object Patterns) y se presiona continuar. En la siguiente pantalla se debe escribir el nombre de la clase para el manejo de archivos locales CL_GUI_FRONTEND_SERVICES en el campo Clase/Interface. Y luego presionar F4 en Método (Method), donde se desplegaran todos los métodos de la clase.
Algunos de los métodos más importantes son:
- 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 datos de los programas a archivos en la PC.
- GUI_UPLOAD: para bajar datos de los archivos de la PC a nuestros programas.
Nota: Otra forma de visualizar el contenido de la clase CL_GUI_FRONTEND_SERVICES es ingresando al Class Builder que es la transacción SE24.
Búsqueda de archivos en la PC
Para buscar archivos locales en el directorio de nuestra PC, se utiliza el método CL_GUI_FRONTEND_SERVICES => FILE_OPEN_DIALOG.
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 = '*'
CHANGING
rc = vl_rc
file_table = tl_filetable.
READ TABLE tl_filetable INDEX 1 INTO stl_file_table.
IF sy-subrc EQ 0.
MOVE stl_file_table TO p_path.
ENDIF.
Se analizan los parámetros más importantes del método:
- WINDOW_TITLE: asigna un título a la vetana de búsqueda.
- DEFAULT_FILENAME: contiene el nombre del archivo que buscamos en nuestra PC. Si se coloca el literal asterísco podremos ver todos los archivos que se encuentren en los directorios.
- FILE_TABLE: contiene la ruta y nombre del archivo seleccionado.
El método CL_GUI_FRONTEND_SERVICES => FILE_OPEN_DIALOG tiene definidas excepciones que tiene asociada una descripción que contempla cada uno de los errores posibles que pueden ocurrir al ejecutar dicho método.
Nota: Se recomienda la utilización del método FILE_OPEN_DIALOG, en los programas ABAP que trabajan con archivos locales, ya que facilita ampliamente la interacción entre el usuario y el programa y evita errores de tipeo de datos.
Lectura de datos de archivos locales
Para leer datos de los archivos locales en las tablas internas de los programas, se utiliza el método CL_GUI_FRONTEND_SERVICES => GUI_UPLOAD.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = vl_file
filetype = 'ASC'
has_field_separator = ' '
CHANGING
data_tab = ti_archivo[ ]
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.
READ TABLE tl_filetable INDEX 1 INTO stl_file_table.
IF sy-subrc NE 0.
MESSAGE e000(z_prueba) WITH text-004.
ENDIF.
Los parámetros más importantes del método son:
- FILENAME: Contiene el directorio y nombre del archivo local con el que se está trabajando.
- FILETYPE: contiene el tipo o extensión del archivo local. Los tipos admitidos son: BIN (archivos binarios), ASC (archivos ASCII), DAT (archivos excel con columnas separadas por tabs y líneas separadas por saltos de línea) y WK1 (archivos excel y lotus). Si se quiere subir un archivo excel, este no debe tener la extensión .xsl, se debe modificar por la extensión .csb.
- HAS_FIELD_SEPARATOR: indica que el archivo local tiene separadores.
- DATA_TAB: es la tabla interna donde se almacenarán los datos del archivo local.
En este método están definidas excepciones con descripciones que contemplan cada uno de los errores que se pueden producir al ejecutar el método.
Nota: En algunos programos ABAP, podemos ver que se utilizan las funciones WS_UPLOAD y UPLOAD.
No es recomendable la utilización de estas funciones debido a que actualmente son considerados objetos obsoletos por SAP.
 
 
 
Sobre el autor
Publicación académica de Miguel Mauricio Sierra Cardona, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Mauricio Sierra Cardona
Profesión: Ingeniero de Desarrollo E Innovación - Colombia - Legajo: GN43E
✒️Autor de: 61 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Miguel Sierra