SAP — Read table
SAP — Read table
Sección titulada «SAP — Read table»Tipo: sap-read-table · Paquete: SAP Activities v1.0.5 · Salida: List<Dictionary<string,object>>
Lee una tabla de SAP y te la entrega como una lista de filas, lista para recorrer con un For Each, filtrar o pasar a otro sistema. Funciona con los dos tipos de tabla que usa SAP: las rejillas ALV y las tablas clásicas de las pantallas antiguas. Y se desplaza sola cuando hace falta, para no quedarse solo con lo que se ve en pantalla.
Cómo funciona
Sección titulada «Cómo funciona»Espera a que SAP termine de procesar, busca el control por su selector (esperando hasta timeout) y lo lee según su tipo:
- ALV (GuiGridView). Toma el total de filas del propio ALV y lee cada celda por fila y columna. Las columnas se identifican por su nombre técnico (por ejemplo
MANDT,MTEXT). Si una fila todavía no está cargada, le pide al ALV que vaya a ella y reintenta; si aun así no puede leer la celda, la deja vacía (null). - Tabla clásica (GuiTableControl). SAP solo tiene en memoria las filas visibles, así que la actividad lee lo que se ve, desplaza la tabla una página y sigue, hasta llegar al final o a
maxRows. Como SAP repinta la pantalla con cada desplazamiento, la actividad vuelve a buscar la tabla antes de leer cada página, así que siempre lee los datos de la página actual. Las columnas se identifican por el nombre del campo de cada celda (ocol0,col1… si no tiene). Se detiene en la primera fila completamente vacía, que SAP pinta como relleno al final de la tabla.
Si el control no es ninguna de las dos (por ejemplo, una lista clásica de reporte), falla y te sugiere SAP — Read classic list o SAP — Export list.
Todos los valores se devuelven como texto, tal como los muestra SAP.
Parámetros requeridos
Sección titulada «Parámetros requeridos»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
selector | selector | — | El ALV o la tabla clásica. Ej: "wnd[0]/usr/cntlGRID1/shellcont/shell" (ALV) o "wnd[0]/usr/tblSAPLXYZTC_ITEMS" (tabla clásica). |
Parámetros opcionales
Sección titulada «Parámetros opcionales»| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
session | ZoanSapSession | — | Sesión de SAP. Omítela dentro del body de un SAP — Attach o SAP — Log on. |
maxRows | int | 1000 | Máximo de filas a leer. Una tabla completa puede tener cientos de miles. |
columns | string | — | Columnas a leer, separadas por comas. Ej: "MANDT,MTEXT". Vacío las lee todas, que es más lento en un ALV ancho. En un ALV son nombres técnicos de campo; en una tabla clásica, el nombre del campo de cada celda. |
timeout | number | — | Segundos que se espera a que aparezca el control. Manda sobre el elementTimeout del ámbito. Vacío usa el del ámbito (30 por defecto); 0 falla al primer intento. Admite decimales. |
Devuelve una List<Dictionary<string,object>>: una lista de filas en el orden de la tabla, y cada fila es un diccionario columna → valor:
[ { "MANDT": "001", "MTEXT": "Mandante de pruebas", "ORT01": "Ciudad Ejemplo" }, { "MANDT": "002", "MTEXT": "Mandante de formación", "ORT01": "Ciudad Ejemplo" }]- Valores: siempre texto, tal como los muestra SAP. En un ALV, una celda que no se pudo leer queda en
null. - Claves en un ALV: sin
columns, todas las columnas en el orden en que se muestran. Concolumns, exactamente las pedidas: primero las que existen, en el orden en que las escribiste, y después las que no existen, con valornull(así una columna mal escrita se nota en vez de desaparecer). - Claves en una tabla clásica: el nombre del campo de cada celda (por ejemplo
RSYST-BNAME), ocol0,col1… si la celda no tiene nombre. Concolumns, solo las celdas cuyo nombre está en la lista; las demás no aparecen. - Casos límite: una tabla vacía devuelve una lista vacía. En una tabla clásica, la lectura se detiene en la primera fila sin ningún valor.
En el log queda el número de filas leídas, nunca su contenido.
Errores comunes
Sección titulada «Errores comunes»| Mensaje | Causa y solución |
|---|---|
El componente es …, no una cuadrícula. Si la pantalla muestra una lista clásica (etiquetas sobre una rejilla de caracteres), usa sap-read-list o expórtala con sap-export-list. | El selector apunta a otro tipo de control. Usa SAP — Read classic list o SAP — Export list, o corrige el selector para que apunte al shell del ALV o al tbl… de la tabla. |
La tabla '…' desapareció al desplazarse a la fila …. | Tras desplazar la tabla clásica, SAP dejó de mostrarla (cambió de pantalla o salió un diálogo). Revisa qué mensaje dejó SAP. |
El componente '…' no existe en la sesión de SAP. Se esperó … s a que apareciera. La pantalla actual es … dynpro … (transacción …). … | El elemento no apareció en el plazo. El mensaje dice en qué pantalla está la sesión: casi siempre es otra distinta de la esperada (un diálogo delante, un paso que no se dio). Si la pantalla tarda, sube timeout. |
Además, los errores comunes a todas las actividades.
Ejemplo
Sección titulada «Ejemplo»SAP Read Table selector = "wnd[0]/usr/cntlGRID1/shellcont/shell" columns = "MANDT,MTEXT" maxRows = 500 → output: filasFor Each items = filas itemVariable = fila └─ activities: Log message = str(fila["MANDT"]) + " — " + str(fila["MTEXT"])Actividades relacionadas
Sección titulada «Actividades relacionadas»- SAP — Read classic list — para listas de reporte, que no son tablas.
- SAP — Export ALV grid — sacar un ALV completo a un archivo.
- SAP — Maximize — ver más filas por pantalla.