
1. Grabación 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 GUI_DOWNLOAD de la clase CL_GUI_FRONTEND_SERVICES. Ejemplo
DATA: vl_file TYPE string.
IF p_path IS INITIAL.
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.
MESSAGE e000(z_prueba) WITH text-004.
ENDIF.
IF ti_archivo[] IS INITIAL.
MESSAGE s000(z_prueba) WITH text-005.
ENDIF.
ENDIF.
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
- 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 generara un separator de archivo o no y cuál será.
- DATA_TAB: es la tabla interna donde almacenaremos los datos del archivo local. Esta debe tener la misma estructura del archivo.