Hola, Estamos trabajando con una robotización en SAP
El problema que tenemos es que al generar un reporte, éste tarda algo de tiempo en generarse esto es variable, puede tardar de 10 seg a 20 min.
tengo un do while esperando a que aparezca en componente con el reporte generado
mientras ese componente no aparece SAP está procesando el reporte, sin embargo después de que han pasado 8-10 min tengo el siguiente error
este error provoca que el robot deje de funcionar y por ende toda la robotización, lo que me llama la atención es que no entra en el try catch que he puesto, es como si se forzará el cierre de la aplicación
Me paso en una oportunidad, pregunta primero con el lenguaje de programación c# o java si el reporte esta en la ruta en el momento que consiga el archivo en la ruta pregunta por el componente con cartes de esa forma no saldrá el error.
Hola @juan.avila, creo que ese error se genera dentro de Cartes. Por eso no lo puedes atrapar. Sospecho de un excesivo consumo de recursos por parte de SAP. Es decir, que mientras SAP genera el informe no hace nada más, y no libera los recursos, podría ser la memoria: Cada vez que Cartes pregunta a SAP si el informe está listo, los recursos no se liberan y se acumulan. ¿Puedes mostrarnos el código donde te da el error? Tal vez se arregle retardando la consulta de Cartes a SAP a cada 30 segundos.
Este es el código que estamos usando
SAPrzejecutar.click(); //Se ejecuta el reporte
robot.reset(sapBtnTransaction.api());
//Esperar que el reporte este listo para descarga
//hasta que la pantalla del reporte aparezca
System.Threading.Thread.Sleep(espera); //Espera de 30 seg
bool reporteListo = false;
DateTime timeoutReporte = DateTime.Now.AddMinutes(5);
do
{
robot.reset(SAPrznotificacion.api());
robot.reset(WinSapDatosVentana.api());
if (timeoutReporte < DateTime.Now)
throw new Exception(“Se hagoto el timepo de al generar reporte ZQM37”);
else if (SAPrznotificacion.componentexist(1) == 1)
{
//Hay un aviso de SAP se tiene que dar clic en Finalizar, pero el reporte sigue sin estar listo
if (robot.Execute(“return $SAPrznotificacion.value;”).StartsWith(“No tiene autorización”))
{
SAPrzfinalizar.click();
robot.forensic("generar reporte ZQM37: " + robot.Execute(“return $SAPrznotificacion.value;”));
}
}
else if (WinSapDatosVentana.componentexist(1) == 1)
{
//En este if el reporte está listo para exportarlo
reporteListo = true;
exit = true;
}
else
System.Threading.Thread.Sleep(3000);
} while (!reporteListo);
Hola @juan.avila:
No nos dices en qué línea te da el error, supongo que será en componentexist. Te sugiero que esos componentexist(1) los cambies por componentexist(0). No veo el sentido a que te quedes esperando un segundo dentro del robot. Si el problema estalla dentro de Cartes, mejor que estés fuera. Déjalo en componentexist(0).
También veo unos robot.execute que no me gustan nada porque son muy raros. No es natural que lo uses pudiendo hacer $SAPrznotificacion.value. ¿Será que te está devolviendo null por cadena vacía y la estás liando por no tener en cuenta el null? Tienes el método ToString de MyObject para evitar eso.
También me he fijado que no estás usando la librería de Github para C#, RPABaseAPI, o si la usas debe ser una versión muy antigua. Actualiza si puedes.
¿Qué versión de RPA Suite estás usando con el proceso?
Aún no he podido resolver este issue,
leyendo algo más en la documentación, me encontré con esto:
no sé si con el navegador pueda mostrar el mismo error pero me suena a que si
hay alguna alternativa u opción para solucionar esto con SAP
Quedo atento a su respuesta
Saludos
Hola, ese error es por intentar preguntar por un componente que no esta disponible en pantalla (visible = 0 || exist en false). Por lo general yo utilizo el estatus bar del SAP que se encuentra en la parte inferior derecha del aplicativo. Que versión estas usando de SAP?
Este error en el log les podría ayudar a saber que podría ser
TEnumeradorExterno.localizarControl -> deadlock(3).
Enumerador : SAP
P.I.D. : 12428
Current Thread : 188
Iteración : 3
------------- 2022/10/31 17:45:29.329 / Current Thread 188
Main Thread : Espero FRCThIteration
------------- 2022/10/31 17:45:29.329 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 1
------------- 2022/10/31 17:45:29.329 / Current Thread 188
Critical Region is Free
------------- 2022/10/31 17:45:29.329 / Current Thread 188
Main Thread : Espero FRCProceso
------------- 2022/10/31 17:45:29.329 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 2
------------- 2022/10/31 17:45:29.329 / Current Thread 188
Critical Region is Free
------------- 2022/10/31 17:45:29.329 / Current Thread 188
Final - nivel 2
------------- 2022/10/31 17:45:29.329 / Current Thread 188
Current Thread Id 188
Main Thread : Suspendido
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 2
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Current Thread Id 13124
Serilize("", “reset”, Síncrono)
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : Espero hilo principal
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : Espero FRCDatos
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 3
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : Espero FRCSync
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 4
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : Reanudo hilo principal
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : El hilo principal no despierta
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
Main Thread : Espero FRCDatos
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Critical Region was acquired previously by thread 13124
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Final - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 20 : Espero FRCThIteration
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Final - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 20 : Espero FRCProceso
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region was acquired previously by thread 188
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Final - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Main Thread : ("", “reset”)
Main Thread Id: 188
Espero FRCSync(OwnerThreadId:0)
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Main Thread : Ejecuto("", “reset”)
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 6
------------- 2022/10/31 17:45:30.333 / Current Thread 188
TCartesRunTimeProjectThread.vaciarCache(SAP)
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Entro
------------- 2022/10/31 17:45:30.333 / Current Thread 188
TEnumeradorExterno.vaciarCache
Por liberar cache
------------- 2022/10/31 17:45:30.333 / Current Thread 188
TEnumeradorExterno.vaciarCache
Externo…
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Salgo
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Final - nivel 6
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Main Thread : Ejecutado("", “reset”)
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Final - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Final - nivel 4
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Main Thread : Espero FRCThIteration
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 4
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Final - nivel 4
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Final - nivel 3
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 40 : Terminado
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Final - nivel 2
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 2
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Current Thread Id 13124
Serilize("$SAPrznotificacion", “ComponentExist”, Síncrono)
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 40 : Espero hilo principal
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Main Thread : Espero FRCProceso
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 3
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Final - nivel 3
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
Main Thread : Suspendido
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : Espero FRCDatos
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 3
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : Espero FRCSync
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 4
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : Reanudo hilo principal
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 10 : El hilo principal no despierta
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
Main Thread : Espero FRCDatos
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Critical Region was acquired previously by thread 13124
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Final - nivel 5
*
…
2428
Current Thread : 13124
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Final - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Serilize 20 : Espero FRCProceso
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
P.I.D. = 12428
Current Thread : 13124
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 13124
Critical Region was acquired previously by thread 188
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Final - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Main Thread : ("$SAPrznotificacion", “ComponentExist”)
Main Thread Id: 188
Espero FRCSync(OwnerThreadId:0)
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 5
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Critical Region is Free
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Main Thread : Ejecuto("$SAPrznotificacion", “ComponentExist”)
------------- 2022/10/31 17:45:30.333 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 6
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
doMethod($SAPrznotificacion, ComponentExist)
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
Obtengo : $SAPrznotificacion
------------- 2022/10/31 17:45:30.333 / Current Thread 188
WaitForComponent($SAPrznotificacion, 0) - Entro
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
Entro -> TGestorEncaminadoresExternosThread.localizarControl
Enumerador : SAP
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
Entro -> TGestorEncaminadoresExternosThread.localizarControl
Tengo enumerador
------------- 2022/10/31 17:45:30.333 / Current Thread 188
Current Thread Id 188
CE_SAP.CartesEnumeratorSAP32
TEnumeradorExterno.localizarControl -> Entro
------------- 2022/10/31 17:45:30.333 / Current Thread 188
CE_SAP.CartesEnumeratorSAP32
TEnumeradorExterno.localizarControl -> go(0)…
------------- 2022/10/31 17:45:30.333 / Current Thread 10612
TThreadLocalizarControl.procesar -> Externo.locateControl(0)
begin : 2022/10/31 17:45:30.333
------------- 2022/10/31 17:46:24.797 / Current Thread 188
Current Thread Id 188
CE_SAP.CartesEnumeratorSAP32
TEnumeradorExterno.localizarControl -> Bloqueo en localizar.
Iteración : 0
------------- 2022/10/31 17:46:24.797 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 7
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TCartesRunTimeProjectThread.vaciarCache(SAP)
------------- 2022/10/31 17:46:24.797 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Entro
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TEnumeradorExterno.vaciarCache
Por reset - destrucción
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TEnumeradorExterno.reset - Entro
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TEnumeradorExterno.reset - Salgo
------------- 2022/10/31 17:46:24.797 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Salgo
------------- 2022/10/31 17:46:24.797 / Current Thread 188
Final - nivel 7
------------- 2022/10/31 17:46:24.797 / Current Thread 188
Current Thread Id 188
CE_SAP.CartesEnumeratorSAP32
Iteración : 0
VaciarCache - ok
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TEnumeradorExterno.reset - Entro
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TEnumeradorExterno.reset - Salgo
------------- 2022/10/31 17:46:24.797 / Current Thread 188
Current Thread Id 188
Iteración : 0
reset - ok
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TEnumeradorExterno.getExterno - Entro
------------- 2022/10/31 17:46:24.797 / Current Thread 188
TEnumeradorExterno.getExterno - Salgo
------------- 2022/10/31 17:46:24.797 / Current Thread 188
CE_SAP.CartesEnumeratorSAP32
TEnumeradorExterno.localizarControl -> go(1)…
------------- 2022/10/31 17:46:24.797 / Current Thread 8400
TThreadLocalizarControl.procesar -> Externo.locateControl(0)
begin : 2022/10/31 17:46:24.797
------------- 2022/10/31 17:47:19.279 / Current Thread 188
Current Thread Id 188
CE_SAP.CartesEnumeratorSAP32
TEnumeradorExterno.localizarControl -> Bloqueo en localizar.
Iteración : 1
------------- 2022/10/31 17:47:19.279 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 7
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TCartesRunTimeProjectThread.vaciarCache(SAP)
------------- 2022/10/31 17:47:19.279 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Entro
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TEnumeradorExterno.vaciarCache
Por reset - destrucción
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TEnumeradorExterno.reset - Entro
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TEnumeradorExterno.reset - Salgo
------------- 2022/10/31 17:47:19.279 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Salgo
------------- 2022/10/31 17:47:19.279 / Current Thread 188
Final - nivel 7
------------- 2022/10/31 17:47:19.279 / Current Thread 188
Current Thread Id 188
CE_SAP.CartesEnumeratorSAP32
Iteración : 1
VaciarCache - ok
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TEnumeradorExterno.reset - Entro
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TEnumeradorExterno.reset - Salgo
------------- 2022/10/31 17:47:19.279 / Current Thread 188
Current Thread Id 188
Iteración : 1
reset - ok
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TEnumeradorExterno.getExterno - Entro
------------- 2022/10/31 17:47:19.279 / Current Thread 188
TEnumeradorExterno.getExterno - Salgo
------------- 2022/10/31 17:47:19.279 / Current Thread 188
CE_SAP.CartesEnumeratorSAP32
TEnumeradorExterno.localizarControl -> go(2)…
------------- 2022/10/31 17:47:19.279 / Current Thread 5944
TThreadLocalizarControl.procesar -> Externo.locateControl(0)
begin : 2022/10/31 17:47:19.279
------------- 2022/10/31 17:48:13.755 / Current Thread 188
Current Thread Id 188
CE_SAP.CartesEnumeratorSAP32
TEnumeradorExterno.localizarControl -> Bloqueo en localizar.
Iteración : 2
------------- 2022/10/31 17:48:13.755 / Current Thread 188
P.I.D. = 12428
Current Thread : 188
Inicio - nivel 7
------------- 2022/10/31 17:48:13.755 / Current Thread 188
TCartesRunTimeProjectThread.vaciarCache(SAP)
------------- 2022/10/31 17:48:13.755 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Entro
------------- 2022/10/31 17:48:13.755 / Current Thread 188
TEnumeradorExterno.vaciarCache
Por reset - destrucción
------------- 2022/10/31 17:48:13.755 / Current Thread 188
TEnumeradorExterno.reset - Entro
------------- 2022/10/31 17:48:13.755 / Current Thread 188
TEnumeradorExterno.reset - Salgo
------------- 2022/10/31 17:48:13.755 / Current Thread 188
Current Thread Id 188
TEnumeradorExterno.vaciarCache -> Salgo
------------- 2022/10/31 17:48:13.755 / Current Thread 188
Final - nivel 7
------------- 2022/10/31 17:48:13.755 / Current Thread 188
Current Thread Id 188
CE_SAP.CartesEnumeratorSAP32
Iteración : 2
VaciarCache - ok
------------- 2022/10/31 17:48:13.755 / Current Thread 188
TEnumeradorExterno.reset - Entro
------------- 2022/10/31 17:48:13.755 / Current Thread 188
TEnumeradorExterno.reset - Salgo
------------- 2022/10/31 17:48:13.755 / Current Thread 188
Current Thread Id 188
Iteración : 2
reset - ok
the message resource is present but the message is not found in the string/message table