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ámetro | Tipo | Descripción |
|---|---|---|
FILENAMEObligatorio | RLGRAP-FILENAME | Ruta del fichero Excel en el PC. |
I_BEGIN_COLObligatorio | I | Primera columna que se lee (1 = A). |
I_BEGIN_ROWObligatorio | I | Primera fila que se lee. |
I_END_COLObligatorio | I | Última columna. |
I_END_ROWObligatorio | I | Última fila. |
Tables
Tablas internas que se pasan o se devuelven (TABLES).
| Parámetro | Tipo | Descripción |
|---|---|---|
INTERNObligatorio | ALSMEX_TABLINE | Resultado: una línea por celda con ROW, COL y VALUE. |
Excepciones
Errores que devuelve en sy-subrc, en el bloque EXCEPTIONS.
| Excepción | Cuándo se produce |
|---|---|
INCONSISTENT_PARAMETERS | El rango indicado no es válido. |
UPLOAD_OLE | Error al comunicarse con Excel. |
Ejemplo
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
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
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