Ir al contenido
Programación ABAP

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ámetroTipoDescripción
FILENAMEObligatorioSTRINGRuta completa del fichero que se va a crear en el PC.
FILETYPECHAR10'ASC' para texto (por defecto) o 'BIN' para binario.Por defecto: 'ASC'
BIN_FILESIZEITamaño en bytes que se graba con FILETYPE = 'BIN'.
APPENDCHAR01'X' para añadir al final de un fichero que ya existe.Por defecto: SPACE
WRITE_FIELD_SEPARATORCHAR01'X' para separar los campos con tabuladores.Por defecto: SPACE
TRUNC_TRAILING_BLANKSCHAR01'X' para quitar los espacios finales de los campos de texto.Por defecto: SPACE
WRITE_LFCHAR01'X' para escribir un salto de línea al final de cada línea.Por defecto: 'X'
CONFIRM_OVERWRITECHAR01'X' para preguntar al usuario antes de sobrescribir un fichero.Por defecto: SPACE
DAT_MODECHAR01'X' para grabar números y fechas en formato interno.Por defecto: SPACE
CODEPAGEABAP_ENCODINGPágina de códigos del fichero, por ejemplo '4110' para UTF-8.Por defecto: SPACE
WRITE_BOMABAP_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ámetroTipoDescripción
FILELENGTHINúmero de bytes grabados.

Tables

Tablas internas que se pasan o se devuelven (TABLES).

ParámetroTipoDescripción
DATA_TABObligatorioTabla estándarTabla interna que se graba.
FIELDNAMESTabla estándarNombres de las columnas, que se escriben como primera línea del fichero.

Excepciones

Errores que devuelve en sy-subrc, en el bloque EXCEPTIONS.

ExcepciónCuándo se produce
FILE_WRITE_ERRORNo se puede escribir el fichero: la carpeta no existe o el fichero está abierto.
NO_BATCHSe ha llamado desde un job de fondo, donde no hay SAP GUI.
GUI_REFUSE_FILETRANSFERSAP GUI no permite la transferencia (configuración de seguridad).
INVALID_TYPEFILETYPE tiene un valor no válido.
NO_AUTHORITYEl usuario no tiene autorización para escribir el fichero.
FILESIZE_NOT_ALLOWEDBIN_FILESIZE se ha indicado con un tipo de fichero que no es binario.
ACCESS_DENIEDEl sistema operativo deniega el acceso a la carpeta.
DISK_FULLNo queda espacio en el disco.
UNKNOWN_ERRORError no clasificado.

Ejemplo

ABAP
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

Ahora
" 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

SE37

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.

Preguntar en el foro

Actualizado: 21 de octubre de 2026