GUI_DOWNLOAD
Graba el contenido de una tabla interna en un fichero del PC del usuario.
- Transacción
SE37- Grupo
- Subidas y bajadas de ficheros
- Actualizado
- 21 de octubre de 2026
Para qué sirve
GUI_DOWNLOAD escribe una tabla interna en un fichero del ordenador del usuario que ejecuta SAP GUI. Es la forma clásica de exportar datos de un report a un TXT o un CSV.
Con FILETYPE = 'ASC' graba cada línea de la tabla como una línea de texto; con WRITE_FIELD_SEPARATOR = 'X' separa los campos con tabuladores, lo que Excel abre directamente. Con 'BIN' graba el contenido tal cual, útil para PDF u otros binarios, indicando BIN_FILESIZE.
Igual que GUI_UPLOAD, solo funciona en diálogo con SAP GUI. En un job de fondo hay que escribir en el servidor con OPEN DATASET.
Sustituye a la antigua WS_DOWNLOAD. En código orientado a objetos se usa el método CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD.
Parámetros
Importing
Lo que recibe la función. En CALL FUNCTION se pasan tras EXPORTING.
| Parámetro | Tipo | Descripción |
|---|---|---|
FILENAMEObligatorio | STRING | Ruta completa del fichero que se va a crear en el PC. |
FILETYPE | CHAR10 | 'ASC' para texto (por defecto) o 'BIN' para binario.Por defecto: 'ASC' |
BIN_FILESIZE | I | Tamaño en bytes que se graba con FILETYPE = 'BIN'. |
APPEND | CHAR01 | 'X' para añadir al final de un fichero que ya existe.Por defecto: SPACE |
WRITE_FIELD_SEPARATOR | CHAR01 | 'X' para separar los campos con tabuladores.Por defecto: SPACE |
TRUNC_TRAILING_BLANKS | CHAR01 | 'X' para quitar los espacios finales de los campos de texto.Por defecto: SPACE |
WRITE_LF | CHAR01 | 'X' para escribir un salto de línea al final de cada línea.Por defecto: 'X' |
CONFIRM_OVERWRITE | CHAR01 | 'X' para preguntar al usuario antes de sobrescribir un fichero.Por defecto: SPACE |
DAT_MODE | CHAR01 | 'X' para grabar números y fechas en formato interno.Por defecto: SPACE |
CODEPAGE | ABAP_ENCODING | Página de códigos del fichero, por ejemplo '4110' para UTF-8.Por defecto: SPACE |
WRITE_BOM | ABAP_BOOL | 'X' para escribir la marca BOM al principio de un fichero UTF-8 (Excel la usa para reconocer los acentos).Por defecto: SPACE |
Exporting
Lo que devuelve. En CALL FUNCTION se recogen tras IMPORTING.
| Parámetro | Tipo | Descripción |
|---|---|---|
FILELENGTH | I | Número de bytes grabados. |
Tables
Tablas internas que se pasan o se devuelven (TABLES).
| Parámetro | Tipo | Descripción |
|---|---|---|
DATA_TABObligatorio | Tabla estándar | Tabla interna que se graba. |
FIELDNAMES | Tabla estándar | Nombres de las columnas, que se escriben como primera línea del fichero. |
Excepciones
Errores que devuelve en sy-subrc, en el bloque EXCEPTIONS.
| Excepción | Cuándo se produce |
|---|---|
FILE_WRITE_ERROR | No se puede escribir el fichero: la carpeta no existe o el fichero está abierto. |
NO_BATCH | Se ha llamado desde un job de fondo, donde no hay SAP GUI. |
GUI_REFUSE_FILETRANSFER | SAP GUI no permite la transferencia (configuración de seguridad). |
INVALID_TYPE | FILETYPE tiene un valor no válido. |
NO_AUTHORITY | El usuario no tiene autorización para escribir el fichero. |
FILESIZE_NOT_ALLOWED | BIN_FILESIZE se ha indicado con un tipo de fichero que no es binario. |
ACCESS_DENIED | El sistema operativo deniega el acceso a la carpeta. |
DISK_FULL | No queda espacio en el disco. |
UNKNOWN_ERROR | Error no clasificado. |
Ejemplo
SELECT FROM vbak
FIELDS vbeln, erdat, kunnr, netwr, waerk
WHERE erdat >= '20260101'
INTO TABLE @DATA(lt_pedidos).
" Cabecera con los nombres de las columnas
DATA lt_cabecera TYPE STANDARD TABLE OF string WITH EMPTY KEY.
lt_cabecera = VALUE #( ( `Pedido` ) ( `Fecha` ) ( `Cliente` ) ( `Importe` ) ( `Moneda` ) ).
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'C:\temp\pedidos.txt'
filetype = 'ASC'
write_field_separator = 'X' " tabuladores: Excel lo abre en columnas
codepage = '4110' " UTF-8
write_bom = 'X'
TABLES
data_tab = lt_pedidos
fieldnames = lt_cabecera
EXCEPTIONS
file_write_error = 1
no_batch = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE |No se ha podido grabar el fichero (error { sy-subrc })| TYPE 'E'.
ENDIF.Con la clase CL_GUI_FRONTEND_SERVICES
" Mismo resultado con la clase de servicios del PC
cl_gui_frontend_services=>gui_download(
EXPORTING
filename = 'C:\temp\pedidos.txt'
filetype = 'ASC'
write_field_separator = abap_true
codepage = '4110'
write_bom = abap_true
CHANGING
data_tab = lt_pedidos
EXCEPTIONS
OTHERS = 1 ).
IF sy-subrc <> 0.
MESSAGE 'No se ha podido grabar el fichero' TYPE 'E'.
ENDIF.Errores y excepciones habituales
- NO_BATCH: el programa se ha lanzado en fondo. En un job graba el fichero en el servidor con OPEN DATASET.
- FILE_WRITE_ERROR: la carpeta no existe o el fichero está abierto en Excel. Ciérralo o cambia el nombre.
- Excel muestra caracteres raros: graba en UTF-8 con WRITE_BOM = 'X' para que Excel reconozca los acentos.
- Los importes salen con punto decimal: GUI_DOWNLOAD graba los campos numéricos en formato interno; si necesitas coma decimal, convierte los campos a texto antes de grabar.
Relacionadas
Funciones relacionadas
GUI_UPLOADWS_DOWNLOADGUI_DELETE_FILEWS_FILENAME_GET
Más en Subidas y bajadas de ficheros
WS_UPLOADTABLE_EXPORT_TO_MSACCESSWS_EXCELALSM_EXCEL_TO_INTERNAL_TABLEEPS_DELETE_FILEEPS_GET_DIRECTORY_LISTING
Transacciones y tablas
En abap.es
¿Dudas con esta función?
Pregunta en el foro de abap.es: la comunidad lleva años resolviendo dudas de ABAP en español.
Actualizado: 21 de octubre de 2026