Ir al contenido

SAP — Attach

Tipo: sap-attach  ·  Paquete: SAP Activities v1.0.5  ·  Salida: ZoanSapSession

Se conecta a una sesión de SAP que ya está abierta para que el bot trabaje en ella. No inicia sesión ni toca contraseñas: la sesión la abrió una persona, el SSO de la empresa o un SAP — Log on anterior. Es la forma más sencilla de empezar, y es lo que genera el botón Grabar del Designer cuando grabas en SAP GUI.

Busca entre las conexiones y sesiones abiertas en SAP GUI la primera que coincida con el sistema (system) y el mandante (client) indicados; si no indicas ninguno, toma la primera sesión abierta. La comparación no distingue mayúsculas de minúsculas.

Si no la encuentra, el error explica el motivo concreto:

  • SAP GUI no está en ejecución.
  • SAP GUI está abierto pero el scripting está deshabilitado (ver Requisitos).
  • SAP GUI está abierto pero no hay ninguna sesión iniciada.
  • Ninguna sesión coincide con el filtro; en ese caso el mensaje lista las sesiones abiertas (como sistema/mandante) para que veas cuál pedir.

Por defecto hace un solo intento. Con timeout, reintenta cada medio segundo hasta ese plazo: útil cuando el robot arranca a la vez que el equipo y SAP todavía se está cargando. Si se agota, el error es el último motivo real (de la lista anterior) seguido de cuánto se esperó.

El elementTimeout que fijes aquí viaja con la sesión: es lo que esperan a su elemento todas las actividades que la usan. Si lo dejas vacío, vale el tiempo de espera de la configuración del proyecto y, si tampoco está definido, 30 segundos.

Con body, las actividades de dentro heredan la sesión. Al terminar —bien o con error— la actividad se desengancha sin cerrar nada: SAP queda abierto tal como estaba. Sin body, devuelve la sesión en la salida para pasarla en el parámetro session de otras actividades.

Ninguno.

ParámetroTipoPor defectoDescripción
systemstring—ID del sistema (DEV, PRD…). Si lo omites, toma la primera sesión abierta.
clientstring—Mandante, con sus ceros a la izquierda. Ej: "001". Si lo omites, cualquiera.
timeoutnumber0Segundos a esperar a que aparezca la sesión. Con 0 (o vacío) hace un solo intento y falla de inmediato. Admite decimales.
elementTimeoutnumber30Segundos que cada actividad espera a que aparezca su elemento. Vacío usa el de la configuración del proyecto o, si no hay, 30. Con 0 fallan al primer intento, útil mientras depuras un selector. Un valor negativo o que no es un número se ignora.

Actividades que se ejecutan con esta sesión. Heredan la sesión sin configurar session. Al salir del body, la actividad se desengancha y restaura la sesión del ámbito que hubiera antes (por ejemplo, la de un SAP — Attach exterior).

Devuelve la sesión (ZoanSapSession) cuando no usas body (o el body está vacío). Con body, la sesión se usa dentro y la actividad no devuelve ningún valor.

MensajeCausa y solución
No se encontró el objeto SAPGUI en la Running Object Table. SAP GUI for Windows debe estar abierto y con sesión iniciada en el sistema.SAP Logon no está en ejecución en la sesión de Windows del robot. Ábrelo y que alguien (o el SSO) inicie sesión, o usa SAP — Log on.
SAP GUI responde pero no entrega el motor de scripting. Casi siempre es que está desactivado: …El scripting está deshabilitado en el servidor (sapgui/user_scripting) o en el cliente. Ver Requisitos.
SAP GUI está abierto pero no hay ninguna sesión iniciada. Inicia sesión en el sistema primero.SAP Logon está abierto pero sin sesión. Usa SAP — Log on, o sube timeout si alguien está iniciando sesión en ese momento.
Ninguna sesión coincide con system='…' client='…'. Abiertas: A4H/001 | PRD/100.El filtro no casa con ninguna sesión. Revisa system y client contra la lista del mensaje.
… Se esperó … s.Sufijo que se agrega a cualquiera de los anteriores cuando usaste timeout y el plazo se agotó.

Con body (la forma habitual):

SAP Attach system = "DEV" client = "001" timeout = 60
└─ body:
SAP Run Transaction code = "SE16"
SAP Set Text selector = "wnd[0]/usr/ctxtDATABROWSE-TABLENAME" value = "T000"
SAP Send Key key = Enter

Sin body, guardando la sesión en una variable para pasarla a otras actividades:

SAP Attach system = "DEV" client = "001" → output: sap
SAP Run Transaction session = sap code = "SE16"
SAP Get Text session = sap selector = "wnd[0]/titl" → output: titulo