Ir al contenido
Programación ABAP

GUI_UPLOAD

Carga un fichero del PC del usuario en una tabla interna.

Transacción
SE37
Grupo
Subidas y bajadas de ficheros
Actualizado
21 de octubre de 2026

Para qué sirve

GUI_UPLOAD lee un fichero del ordenador del usuario (el que ejecuta SAP GUI) y vuelca su contenido en una tabla interna. Es la forma clásica de importar un CSV o un TXT desde un report en diálogo.

Con FILETYPE = 'ASC' lee el fichero como texto, una línea por registro; con 'BIN' lo lee como binario. Si el fichero tiene columnas separadas por tabuladores y HAS_FIELD_SEPARATOR = 'X', reparte cada línea en los campos de la estructura de la tabla.

Solo funciona en diálogo con SAP GUI: en un job de fondo no hay ordenador de usuario y la función devuelve la excepción NO_BATCH. Para ficheros del servidor de aplicación se usa OPEN DATASET.

Sigue siendo válida, pero en código orientado a objetos se usa el método equivalente CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD, que tiene los mismos parámetros.

Parámetros

Importing

Lo que recibe la función. En CALL FUNCTION se pasan tras EXPORTING.

ParámetroTipoDescripción
FILENAMEObligatorioSTRINGRuta completa del fichero en el PC, por ejemplo C:\datos\clientes.csv.
FILETYPECHAR10'ASC' para texto (por defecto) o 'BIN' para binario.Por defecto: 'ASC'
HAS_FIELD_SEPARATORCHAR01'X' si las columnas están separadas por tabuladores y se deben repartir en los campos de la estructura.Por defecto: SPACE
HEADER_LENGTHINúmero de bytes de cabecera que se leen aparte (solo con ficheros binarios).Por defecto: 0
READ_BY_LINECHAR01'X' para que cada línea del fichero sea una línea de la tabla.Por defecto: 'X'
DAT_MODECHAR01'X' para leer números y fechas en formato interno (el del modo DAT antiguo).Por defecto: SPACE
CODEPAGEABAP_ENCODINGPágina de códigos del fichero, por ejemplo '4110' para UTF-8.Por defecto: SPACE
IGNORE_CERRABAP_BOOLIgnora los errores de conversión de caracteres.Por defecto: ABAP_TRUE
REPLACEMENTABAP_REPLCarácter que sustituye a los que no se pueden convertir.Por defecto: '#'

Exporting

Lo que devuelve. En CALL FUNCTION se recogen tras IMPORTING.

ParámetroTipoDescripción
FILELENGTHITamaño del fichero leído, en bytes.
HEADERXSTRINGCabecera leída cuando se indica HEADER_LENGTH.

Tables

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

ParámetroTipoDescripción
DATA_TABObligatorioTabla estándarTabla interna que recibe el contenido del fichero.

Excepciones

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

ExcepciónCuándo se produce
FILE_OPEN_ERRORNo se puede abrir el fichero: la ruta no existe o está en uso.
FILE_READ_ERRORError al leer el fichero.
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 acceder al fichero.
BAD_DATA_FORMATLos datos no encajan con la estructura de la tabla.
ACCESS_DENIEDEl sistema operativo deniega el acceso al fichero.
UNKNOWN_ERRORError no clasificado.

Ejemplo

ABAP
TYPES: BEGIN OF ty_cliente,
         kunnr TYPE kunnr,
         name1 TYPE name1_gp,
         ort01 TYPE ort01_gp,
       END OF ty_cliente.
DATA lt_clientes TYPE STANDARD TABLE OF ty_cliente WITH EMPTY KEY.

PARAMETERS p_fich TYPE string LOWER CASE DEFAULT 'C:\temp\clientes.txt'.

START-OF-SELECTION.
  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      filename            = p_fich
      filetype            = 'ASC'
      has_field_separator = 'X'          " columnas separadas por tabulador
      codepage            = '4110'       " UTF-8
    TABLES
      data_tab            = lt_clientes
    EXCEPTIONS
      file_open_error     = 1
      file_read_error     = 2
      no_batch            = 3
      bad_data_format     = 4
      OTHERS              = 5.
  IF sy-subrc <> 0.
    MESSAGE |No se ha podido leer el fichero (error { sy-subrc })| TYPE 'E'.
  ENDIF.

  cl_demo_output=>display( lt_clientes ).

Con la clase CL_GUI_FRONTEND_SERVICES

Ahora
" Mismo resultado con la clase de servicios del PC (código orientado a objetos)
cl_gui_frontend_services=>gui_upload(
  EXPORTING
    filename            = p_fich
    filetype            = 'ASC'
    has_field_separator = abap_true
    codepage            = '4110'
  CHANGING
    data_tab            = lt_clientes
  EXCEPTIONS
    OTHERS              = 1 ).
IF sy-subrc <> 0.
  MESSAGE 'No se ha podido leer el fichero' TYPE 'E'.
ENDIF.

Errores y excepciones habituales

  • NO_BATCH: el programa se ha lanzado en fondo. GUI_UPLOAD solo funciona en diálogo; en un job lee el fichero del servidor con OPEN DATASET.
  • BAD_DATA_FORMAT: una columna no cabe en su campo (por ejemplo, texto en un campo numérico). Usa una estructura con todos los campos de tipo texto y convierte después.
  • Acentos y eñes mal leídos: el fichero está en UTF-8 y no se ha indicado CODEPAGE = '4110' (o al revés, está en ANSI y se lee como UTF-8).
  • FILE_OPEN_ERROR: ruta mal escrita o fichero abierto en Excel. Cierra el fichero y comprueba la ruta.

Relacionadas

Funciones relacionadas

GUI_DOWNLOADWS_UPLOADALSM_EXCEL_TO_INTERNAL_TABLEF4_DXFILENAME_TOPRECURSION

Más en Subidas y bajadas de ficheros

WS_DOWNLOADTABLE_EXPORT_TO_MSACCESSWS_EXCELGUI_DELETE_FILEEPS_DELETE_FILEEPS_GET_DIRECTORY_LISTING

Transacciones y tablas

SE37CG3ZCG3Y

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