Skip to Content
0

DI API con usuarios indirectos

Oct 05, 2017 at 03:27 PM

114

avatar image
Former Member

Si alguien paso por lo mismo y nos puede ayudar...

Resulta que nosotros migramos de versión de la 8.8 a la 9.2 y empezamos a tener bloqueos en una aplicación externa a sap y que se conecta via di api.

Despues de rompernos la cabeza mi partner de soporte me indico que tuvieron un caso similar con otro cliente y que se resolvió asignando una licencia indirecta a cada usuario que se conecta desde la aplicación de tercero via DI API.

Es correcto esta afirmación?

Y si fuera correcta el dejar como se hacia en la versión 8.8 que se conecten con un único usuario, debería generar bloqueos? o solo una cola, en la que cada usuario que esta inter actuando desde la app externa se autentifica hace su Transacción y se libera y entra el siguiente usuaro.. etc etc

Muchas gracias, y espero alguna ayuda

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

2 Answers

Best Answer
Johan Hakkesteegt Oct 06, 2017 at 08:03 AM
0

Hola,

(Mis disculpas por usar Google translate.)

Esa afirmación es más o menos correcta. Una sola licencia profesional utilizada para incluir 10 licencias indirectas, pero no sé si eso sigue siendo el caso con la versión 9.2. Cada licencia de usuario normal debe incluir al menos una licencia indirecta, por lo que no debería tener que comprar nuevas licencias indirectas.

Si intenta conectarse varias veces con un solo usuario, no debería crear bloqueos. Sin embargo, a menudo se utiliza una aplicación externa cuando se deben realizar grandes informes o se deben introducir transacciones grandes. Como B1 es básicamente una aplicación de base de datos, esto significa que siempre hay una mayor posibilidad de bloqueos. Usted debe comprobar que la aplicación externa está bien escrita:

  • Intente optimizar cualquier consulta. Éste es generalmente el cullprit con las cerraduras y los "outs del tiempo"
  • Intente evitar el acceso secuencial de la base de datos desde dentro de un bucle. Es mejor obtener todos los datos necesarios de la base de datos en un dataset, luego cortar la conexión, manipular los datos y restablecer la conexión una vez que esté listo para devolver datos a la base de datos. - Busque estos errores de "bloqueo" y "tiempo de espera" y utilice el tratamiento de errores en la aplicación externa para intentar confirmar la transacción después de este tipo de error. Pero por favor builfd en un mecanismo "try x times" para evitar bucles eternos.
  • Hacer otra aplicación de consola con un temporizador para manejar cualquier transacción que realmente no tiene que suceder en el momento en que el usuario está trabajando en la aplicación externa. Cambie la aplicación externa para recopilar los datos necesarios para estas transacciones en una tabla de usuario o en archivos xml.

Saludos,

Johan

Show 5 Share
10 |10000 characters needed characters left characters exceeded
Former Member

Muchas Gracias Johan.

Ayer hice una prueba de usar la aplicación externa en 2 pc diferentes, asignando a cada interacción un usuario diferente. y procedimos a realizar la misma operación a través de esta aplicación externa vía DIAPI. y el resultado fue que se me genero un bloqueo y la base de datos no lo libero, tuve que proceder a matar el proceso vía base de datos. ahora mi pregunta es, a pesar de haber usado 2 usuarios diferentes, porque me genera un bloqueo?

Gracias de nuevo..

1

Hola Mauricio,

Con su prueba ha demostrado que las cerraduras no son causadas por el uso del mismo usuario. Utilizar el mismo usuario para acceder a la base de datos a través de la API DI, no debería causar bloqueos en sí mismo. De hecho, ejecutamos múltiples aplicaciones externas, que utilizan el mismo usuario con la API DI

¿Fue la aplicación externa construida por usted, o fue construida por un tercero? Le recomiendo que eche un vistazo a la aplicación externa, como describí en mi respuesta anterior, o enviar mi respuesta a la tercera parte, y pedirles que eche un vistazo.

Saludos,

Johan

0
Former Member

Johan,

Si la misma transacción vía aplicación de SAP no me da problemas y vía DI API si me da problema, entonces no es la aplicación externa ni los usuarios, porque la aplicación externa lo único que hace es ejecutar la transacción vía DI API.

Creemos que debe ser algún parámetro de la configuración de la DI API.

algún comentario o sugerencia?

0

Hola Mauricio,

La aplicación externa ejecuta el código antes, durante y después de la transacción y, por desgracia, la API DI no es muy eficiente.

Por ejemplo, cuando obtiene un dataset, realiza un bucle a través de las filas y confirma transacciones, es muy posible que mientras obtiene el dataset, la aplicación o la DI API bloquea la misma tabla a la que intenta confirmar una transacción.

Además, con una aplicación externa es probable que realice transacciones mucho más grandes o transacciones mucho más pequeñas consecutivamente que cuando realiza una prueba en el cliente B1.

Saludos,

Johan

P.S. Former Member o DIEGO LOTHER también pueden ofrecer algunos consejos.

0

Hola Mauricio,

Como Johan preguntó, ¿construiste la aplicación externa o un socio?

El primer paso en este caso es comprobar cómo funciona esta aplicación. ¿Cómo está la conexión con la base de datos, está utilizando un usuario diferente cuando instancia objeto de la empresa o siempre utilizar "administrador"? ¿Podría compartir si su conexión con la base de datos?

No estoy seguro del impacto, pero sé que hay diferencias sobre las reglas de licencia de 8.8 y 9.2.

Atte,

Diego Lother

1
Gonzalo Gomez Oct 10, 2017 at 08:57 AM
0

El licenciamiento ha cambiado.... ahora ese acceso indirecto ya no existe ....

Revisa las condiciones de licenciamiento en la versión 9.2

Share
10 |10000 characters needed characters left characters exceeded