Skip to Content
avatar image
Former Member

DI API con usuarios indirectos

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

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

2 Answers

  • Best Answer
    Oct 06, 2017 at 08:03 AM

    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

    Add comment
    10|10000 characters needed characters exceeded

    • 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

  • Oct 10, 2017 at 08:57 AM

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

    Revisa las condiciones de licenciamiento en la versión 9.2

    Add comment
    10|10000 characters needed characters exceeded