![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Los archivos locales y el upload de datos
ABAP Los archivos locales y el upload de datos
![ABAP Los archivos locales y el upload de datos ABAP Los archivos locales y el upload de datos](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/479.jpg)
1) Tratamiento de Archivos Locales
ABAp nos proporciona métodos útiles para el tratamiento de archivos locales ubicados en nuestra PC mediante el uso de la calse CL_GUI_FRONTEND_SERVICES. Los concepTos clase y métdoos se ven mas adelante, entnedamos por ahora que los métodos se ejecutan como si fueran Funciones.
Para visualizar los métodos disponibles en la clase, editamos un programa ABAP y presionamos el botón MODELO (PATTERN)
luego presionamos el botón Patrón p.objetos ABAP y luego continuamos. En la siguiente pantalla escribimos la clase CL_GUI_FRONTEND_SERVICES y luego presionamos el F4 en Método (method) y veremos la pantalla con todos los me´todos de la clase. Veremos en detalle los siguientes Métodos:
FILE_OPEN_DIALOG: sirve para mostrar la pantalla de navegación que permita al usuario poder seleccionar el archivo del directorio de la 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.
para visualizar el contenido de la clase CL_GUI_FRONTEND_SERVICES es ingresando al CLASS BUILDER que es la transacción SE24.
2) Búsqueda de archivos en la PC.
Método CL_GUI_FRONTEND_SERVICES =>FILE_OPEN_DIALOG :busca archivos locales en el directorio de nuestra PC.
ejemplo:
FORM abrir_ventana_archivos .
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.
ENDFORM. " ABRIR_VENTANA_ARCHIVOS
Parámetros mas importantes del método:
.- WINDOW_TITLE: Asigna título a la ventana de búsqueda
.- DEFAULT_FILENAME: contiene el nombre del archivo que buscamos en nuestra Pc . Sicolocamos el literal *(asteristco) podemos ver todos los archivos que se encuentren en los directorios.
.- FILE_TABLE: contiene la ruta y nombre del archivo seleccionado.
Al igual que las funciones la clase tiene excepciones para contemplar cada uno de los errores posibles que pueden ocurrir al ejecutar el Método mencionado en el ejemplo anterior
NOTA: Es recomendabe 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.
3) Lectura de datos de los archivos locales:
Método: CL_GUI_FRONTEND_SERVICE=>GUI_UPLOAD, nos sirve para leer los datos de los archivos locales en las tablas internas de nuestro programa.
Ejemplo
FORM levantar_archivo_entrada .
DATA: vl_file TYPE string.
IF p_path IS INITIAL.
* El path del archivo se encuentra en blanco
MESSAGE s000(z_prueba) WITH text-003.
ELSE.
vl_file = p_path.
* 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
dp_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.
* Error al levantar el archivo de entrada
MESSAGE e000(z_prueba) WITH text-004.
ENDIF.
IF ti_archivo[] IS INITIAL.
* El archivo de entrada no contiene registros
MESSAGE s000(z_prueba) WITH text-005.
ENDIF.
ENDIF.
ENDFORM. " LEVANTAR_ARCHIVO_ENTRADA
AUDIO:
Los dobles corchetes que se utilizan dentro de la tabla interna que se levanta utilizando el método cl_gui_frontend_services=>gui_upload, es un requisito del método y tiene que ver con que de esa forma estamos indicando el contenido de la tabla interna. No hay otra razon para utilizarlos sino simplemente la de cumplir por un requisito de sintaxis del método.
Los parámetros más importantes del método son:
-. FILENAME: Contiene el directorio y nombre del archivo local con el que estamos trabajando.
- . FILETYPE: Contiene el tipo o extensión del archivo local. Los tipos admitidos son:
o BIN: Archivos binarios.
o ASC: Archivos ASCII
o DAT: para Archivos Excel. Las columnas son separadas por tabs y las líneas son separadas por saltos de línea
o WK1: Archivos Excel y de Lotus
HAS_FIELD_SEPARATOR: indica que el archivo local tiene separadores.
DATA_TAB: eslatabla interna donede almacenaremos los datos del archivo local.
Nota: en algunos programas ABAP, podemos ver las funciones WS_UPLOAD y UPLOAD. No es recomendable su uso ya que se encuentran obsoletas.
 
 
 
Sobre el autor
Publicación académica de Carlos Alberto Carreira, en su ámbito de estudios para la Carrera Consultor ABAP.
Carlos Alberto Carreira
Profesión: Consultor Técnico en Jde W.s. - Argentina - Legajo: KC15G
✒️Autor de: 92 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Inicial
🎓Egresado de los módulos:
Certificación Académica de Carlos Carreira