Ir al contenido
Programación ABAP

ALSM_EXCEL_TO_INTERNAL_TABLE

Lee un rango de celdas de un fichero Excel del PC y lo devuelve celda a celda.

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

Para qué sirve

ALSM_EXCEL_TO_INTERNAL_TABLE abre un fichero Excel del ordenador del usuario y lee el rango de celdas indicado (filas y columnas de inicio y fin). Devuelve una tabla con una línea por celda: fila, columna y valor.

Después hay que recorrer esa tabla para montar las líneas de la estructura que necesites. Funciona con SAP GUI para Windows y Excel instalado, porque usa la integración de escritorio; no sirve en fondo.

Es muy usada para cargas puntuales. Para algo más robusto, guarda el Excel como CSV y léelo con GUI_UPLOAD, o usa la librería abap2xlsx, que lee .xlsx sin necesitar Excel instalado.

Parámetros

Importing

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

ParámetroTipoDescripción
FILENAMEObligatorioRLGRAP-FILENAMERuta del fichero Excel en el PC.
I_BEGIN_COLObligatorioIPrimera columna que se lee (1 = A).
I_BEGIN_ROWObligatorioIPrimera fila que se lee.
I_END_COLObligatorioIÚltima columna.
I_END_ROWObligatorioIÚltima fila.

Tables

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

ParámetroTipoDescripción
INTERNObligatorioALSMEX_TABLINEResultado: una línea por celda con ROW, COL y VALUE.

Excepciones

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

ExcepciónCuándo se produce
INCONSISTENT_PARAMETERSEl rango indicado no es válido.
UPLOAD_OLEError al comunicarse con Excel.

Ejemplo

ABAP
TYPES: BEGIN OF ty_linea,
         material TYPE matnr,
         cantidad TYPE string,
       END OF ty_linea.
DATA: lt_celdas TYPE STANDARD TABLE OF alsmex_tabline,
      lt_datos  TYPE STANDARD TABLE OF ty_linea,
      ls_linea  TYPE ty_linea.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  EXPORTING
    filename                = 'C:\temp\pedidos.xlsx'
    i_begin_col             = 1
    i_begin_row             = 2      " la fila 1 son los títulos
    i_end_col               = 2
    i_end_row               = 1000
  TABLES
    intern                  = lt_celdas
  EXCEPTIONS
    inconsistent_parameters = 1
    upload_ole              = 2
    OTHERS                  = 3.
IF sy-subrc <> 0.
  MESSAGE 'No se ha podido leer el Excel' TYPE 'E'.
ENDIF.

" Una línea por celda: se reagrupan por fila
LOOP AT lt_celdas INTO DATA(ls_celda).
  CASE ls_celda-col.
    WHEN 1. ls_linea-material = ls_celda-value.
    WHEN 2. ls_linea-cantidad = ls_celda-value.
  ENDCASE.
  AT END OF row.
    APPEND ls_linea TO lt_datos.
    CLEAR ls_linea.
  ENDAT.
ENDLOOP.

Errores y excepciones habituales

  • UPLOAD_OLE: Excel no está instalado, está abierto con el mismo fichero o la integración de escritorio está bloqueada.
  • Valores cortados: VALUE tiene longitud limitada (50 caracteres); los textos más largos se recortan.
  • Las celdas vacías no aparecen: solo hay línea para las celdas con contenido; tenlo en cuenta al reagrupar.

Relacionadas

Funciones relacionadas

GUI_UPLOADWS_EXCEL

Más en Subidas y bajadas de ficheros

WS_DOWNLOADWS_UPLOADTABLE_EXPORT_TO_MSACCESSGUI_DOWNLOADGUI_DELETE_FILEEPS_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