Ir al contenido

SAP — Set cell

Tipo: sap-set-cell  ·  Paquete: SAP Activities v1.0.5

Escribe un valor en una celda de una tabla de SAP: una cantidad en una posición de pedido, un precio, un indicador. Funciona con los dos tipos de tabla que tiene SAP: las grillas ALV y las tablas clásicas (table control).

Espera a que SAP termine lo que esté procesando, busca la tabla por su selector y escribe value en la celda indicada por row y column:

  • Grilla ALV: la columna se indica por su nombre técnico (por ejemplo MENGE), y la fila desde 0. La grilla debe estar en modo editable.
  • Tabla clásica (table control): la columna se indica por su posición, empezando en 0, y la fila también desde 0. Si pasas un nombre de columna, la actividad falla con un mensaje que lo explica: los nombres solo sirven en una grilla ALV.

Luego espera a que SAP responda y lee la barra de estado: si SAP muestra un error (tipo E) o una cancelación (tipo A), la actividad falla con ese mensaje; cualquier otro mensaje queda registrado en el log.

Si la tabla todavía no está en pantalla, la actividad la espera hasta el plazo configurado (timeout o el elementTimeout del ámbito, 30 segundos por defecto).

ParámetroTipoPor defectoDescripción
selectorselector—La grilla ALV o la tabla clásica. Selector capturado o id de SAP.
rowint—Fila, empezando en 0. En una tabla clásica, fila visible.
columnstring—Nombre técnico de la columna (ALV) o su posición empezando en 0 (tabla clásica), por ejemplo "MENGE" o "2".
valuestring—Valor a escribir.
ParámetroTipoPor defectoDescripción
sessionZoanSapSession—Sesión de SAP. Omítela dentro del body de un SAP — Attach o SAP — Log on.
timeoutnumber—Segundos que se espera a que aparezca la tabla. Manda sobre el elementTimeout del ámbito. Vacío usa el del ámbito (30 por defecto); 0 falla al primer intento. Admite decimales.

Esta actividad no devuelve ningún valor.

MensajeCausa y solución
'…' no es un índice de columna. En un table control clásico la columna es su posición empezando en 0 (0, 1, 2...), no su nombre; los nombres de columna solo funcionan en un ALV.Pasaste un nombre de columna a una tabla clásica. Usa la posición.
No existe la celda [fila,columna].En la tabla clásica no hay celda en esa fila visible y columna. Desplaza la tabla o maximiza la ventana.
Error de SAP GUI al modificar la celdaEn un ALV: la columna no existe, la fila está fuera de rango o la grilla no es editable en esa pantalla.
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.
SAP respondió [E …]: …Tras la acción, SAP mostró un error (E) o una cancelación (A) en la barra de estado. El texto es el de SAP.

Además, los errores comunes a todas las actividades.

En una grilla ALV editable, cambiar la cantidad de la primera fila:

SAP — Set cell selector = "wnd[0]/usr/cntlGRID1/shellcont/shell" row = 0 column = "MENGE" value = "10"

En una tabla clásica, escribir en la tercera columna de la segunda fila:

SAP — Set cell selector = "wnd[0]/usr/tblZPROGTC_ITEMS" row = 1 column = "2" value = "10"