
UNIDAD 6 TRATAMIENTO DE ARCHIVOS Y FIELD SYMBOLS
LECCION 1: ARCHIVOS LOCALES: UPLOAD DE DATOS
TRATAMIENTO DE ARCHIVOS LOCALES
ABAP nos proporciona 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 métodos se ejecutan como si fueran funciones.
Para visualizar todos los métodos disponibles en la clase, editamos un programa ABAP y presionamos el botón Modelo (Pattern)
Aquí marcamos la opción Patrón p.objetos ABAP (ABAP Object Patterns) y presionamos continuar.
En la pantalla siguiente, Estr.sentencia, en el Método Call en Clase/Interface, escribimos la clase CL_GUI_FRONTEND_SERVICES y luego presionamos F4 en Método (Method) y veremos la siguiente pantalla con todos los métodos de la clase.
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 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 q es la transacción SE24.
2. BUSQUEDA DE ARCHIVOS EN LA PC
Para buscar archivos locales en el directorio de nuestra PC, utilizaremos el método:
CL_GUI_FRONTEND_SERVICES --> FILE_OPEN_DIALOG.
Ej: El método 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.
Parámetros más importantes del método:
- WINDOW_TITLE: asigna un título a la ventana de búsqueda.
- DEFAULT_FILENAME: contiene el nombre del archivo q buscamos en nuestra PC. Si colocamos el literal asterisco podremos ver todos los archivos q se encuentren en los directorios.
- FILE_TABLE: contiene la ruta y nombre del archivo seleccionado.
El método FILE_OPEN_DIALOG tiene definidas excepciones. Cada excepción tiene asociada una descripción q contempla cada uno de los errores posibles q pueden ocurrir al ejecutar dicho método.
Nota: Es recomendable la utilización del método FILE_OPEN_DIALOG, en los programas ABAP q trabajan con archivos locales, ya que facilita ampliamente la interacción entre el usuario y el programa y evita errores de tipeo de datos.
3. LECTURA DE DATOS DE LOS ARCHIVOS LOCALES
Para leer datos de los archivos locales en las tablas internas de nuestros programas, utilizaremos el método:
CL_GUI_FRONTEND_SERVICES => GUI_UPLOAD
Ej: el método GUI_UPLOAD
* Se abre el archivo de entrada para lectura
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
dip_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19.
IF sy-subrc NE 0.
MESSAGE e000(z_prueba) WITH text-004.
ENDIF.
ti_archivo[ ] : significa el contenido de la tabla interna. es un requisito de sintaxis del método.
Parámetros más importantes del método:
- FILENAME: contiene el directorio y nombre del archivo local con el q estamos trabajando.
- FILETYPE: contiene el tipo o extensión del archivo local.
Los tipos admitidos son:
- BIN: para archivos binarios.
- 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 Lotus.
Debemos tener en cuenta q si deseamos levantar un archivo Excel ubicado en nuestra PC, el archivo no debe tener la extensión .XLS sino tenemos q modificar su extensión a .csb para q pueda ser leído por la función de UPLOAD correctamente.
- HAS_FIELD_SEPARATOR: indica q el archivo local tiene separadores.
- DATA_TAB: es la tabla interna dde almacenaremos los datos del archivo local.
En este método están definidas excepciones con descripciones q contemplan cada uno de los errores q se pueden producir al ejecutar el método.
IMPORTANTE: En algunos programas ABAP, podemos ver que se utilizan las funciones WS_UPLOAD y UPLOAD.
No es recomendable la utilización de estas funciones debido a q actualmente son considerados objetos obsoletos por SAP.