Recargar fichero de licencias (B1Upf.xml)

Hola

Nos están implantando un SB1 (HANA) y una de las cosas que vamos a necesitar es cierta flotabilidad en las licencias, no queremos perder la funcionalidad nominal y por otro lado no tiene mucho sentido comprar tres licencias para un mismo puesto de trabajo que cubren tres personas que van a turnos de mañana/tarde/noche. La consultora no nos da otra opción que un superusuario acceda a la gestión de licencias, las reasigne y aplique los cambios, lo cual evidentemente funciona.

Investigando un poco he visto que el fichero B1Upf.xml almacena las asignaciones pero si lo modifico los cambios no se ven en SAP, para que eso suceda tengo que reiniciar el servicio sapb1servertools, una vez hecho eso ya en SAP sí se muestran las nuevas asignaciones. Mediante una pequeña app todo eso se hace automático y en pruebas está funcionando pero tengo un par de dudas:

  1. No me hace mucha gracia tener que reiniciar el servicio servertools por completo ya que tampoco tengo claro qué cubre ese servicio, en la versión no-hana he visto que hay un servicio específico de licencias pero en HANA no lo he visto. ¿O quizá no tenga mayor importancia reiniciarlo?

  2. Si hago la asignación desde dentro de SAP solo tengo que pulsar en “actualizar” y las licencias se reasignan en el momento, por tanto me pregunto si hay alguna manera (a través por ejemplo de la REST License API o similar) de decirle a SAP que recargue el fichero B1Upf.xml y que aplique los cambios.

Cualquier ayuda será bien recibida :slight_smile:

Es un placer saber que cada vez somos más en esta comunidad. No olvides pasar por #presentaciones para poder conocerte un poco más.

Aquí algunos comentarios:

1.- Los usuarios no los crees con el nombre del empleado, mas bien nombrarlas por el área de trabajo (Ej. Finanzas, Produccion, Ventas, etc. etc)
2.- Existen la forma que los documentos de marketing estén firmados, ahora si, por el nombre de empleado.
3.- Otra forma en caso de ser necesario es usar un campo de usuario para que cada quien firme sus transaccciones.
4.- MUY IMPORTANTE, no te recomiendo estar reiniciando a cada momento el SERVER TOOLS, muchos otros servicios se cuelgan de él, y el estar reiniciando te puede causar problemas y mas si tienes usuarios conectados.
5.- HANA es un ambiente de trabajo muy delicado.
6.- Otra opción, si lo que quieres es que cada usuario tenga su propia licencia, es evaluar licencias limitadas, dependiendo de la función que vayan a realizar esos usuarios dentro de SAP B1.

Espero poder darte un norte o que alguien más pueda dar mas ideas.

2 Me gusta

Hola Julian

Crear los usuarios por departamento hace que pierdas las trazabilidad de quién hace qué, ya lo valoramos en su momento y quizá tengamos que llegar a ese punto, pero vamos a intentar evitarlo.

Yo tampoco quiero andar reiniciando el Server Tools cada vez que un usuario flotante vaya a iniciar sesión pero es la única manera que he encontrado de momento de “simular” lo que hace SAP cuando lo hacemos a mano. Tengo la opción de generar un script de automatización de modo que la asignación de licencias se haga a través de una sesión abierta de SAP que aplique los cambios del B1Upf, será un poco lío pero así no tendría que reiniciar el servicio.

Lo de comprar licencias para todos no es una opción, el sistema de licenciamiento de SAP es un despropósito para cualquier centro de producción, hasta las aplicaciones más simples llevan sistemas de flotabilidad, no se trata de no comprar, sino de comprar lo que se necesita. Si yo tengo 30 puestos de trabajo que rotan en tres turnos no tiene sentido que la propuesta de SAP es que les compre 30 licencias o que les entregue usuarios genéricos (por cierto, prohibido por ley por temas de RGPD en según qué secciones).

Sobre el REST API, ¿alguien lo ha usado? He visto algunos ejemplos de código pero las explicaciones sobre sus funciones no las localizo, me da la impresión de que ese API solo sirve para consulta, pero igual tiene algo que me pueda servir para aplicar los cambios del B1UPF.

Gracias por tu respuesta!

Por REST API no está el método para cambiar licencias de usuarios
Por DI API si existe un metodo, por lo que puedes crear una aplicacion en .NET que lo haga.

Try
    Dim oCompanyService As SAPbobsCOM.CompanyService
    oCompanyService = oCompany.GetCompanyService

    Dim oUserLicenseParam As SAPbobsCOM.UserLicenseParams

    ' Set parameters
    oUserLicenseParam = oCompanyService.GetDataInterface(SAPbobsCOM.CompanyServiceDataInterfaces.csdiUserLicenseParams)
    oUserLicenseParam.UserName = "manager"
    oUserLicenseParam.LicenseKeyType = SAPbobsCOM.LicenseKeyTypeEnum.lktdIdirect
    oUserLicenseParam.LicenseUpdateType = SAPbobsCOM.LicenseUpdateTypeEnum.ultAssign

    ' Update user's license
    oCompanyService.UpdateUserLicense(oUserLicenseParam)

Catch ex As Exception
    MsgBox(ex.ToString)
End Try

Atte.

1 me gusta

Interesante. He visto ese código en otra web pero no consigo que eso funcione.

Creo un proyecto con .NET 2019, agrego la referencia al COM DI API V10, pero el código no se puede compilar porque SAPbobsCOM no parece ser la versión adecuada.

De hecho la propiedad LicenseKeyTypeEnum tampoco me aparece, ¿es una versión diferente del DI API la que tengo que referenciar?

He probado con los proyectos de ejemplo del SDK y me pasa lo mismo, no puedo ejecutar ni uno, siempre por lo mismo.

Para hacer funcionar los códigos de ejemplo debes reemplazar la DI API y/o UI API por la actual, ya que vienen referenciando una versión antigua de la misma.

Respecto al metodo de actualizar licencias, está en la documentacion SDK

Atte.

He probado con al DI API en todas sus versiones (yo debería usar solo la 10) y ese código no puede funcionar porque hay métodos que no existen en algunos objetos, por ejemplo SAPbobsCOM.LicenseKeyTypeEnum, pero lo voy a tomar como base a ver qué hasta dónde llego. Me falta entender el objeto oCompany que tampoco está definido en es ejemplo y entiendo además que en algún momento tendré que introducir dónde está mi servidor, luego habrá que hacer alguna conexión previa. Quién tuviera tiempo :grin:

Antes de llegar al punto de trabajar la licencia, debes haber instanciado el objeto company y el objeto company service.

Después de todo eso puedes hacer uso del cualquier objeto o servicio de la DI API.

Atte

Más o menos tengo claro el proceso desde el punto de vista de desarrollo pero como nunca me he metido con esta API de SAP (con nada de SAP en general) tengo mucho que leer y poco tiempo para realizar. Mañana le voy a dedicar unas horas a ver qué sale, gracias por tu atención, postearé si finalmente consigo realizarlo :sweat_smile:

Bien, ya consigo añadir una licencia a un usuario pero no veo documentadas un par de cosas:

  1. Cómo añadir una licencia PRO (puedo añadir indirectas y otros tipos, pero no PRO)
  2. Como obtener las licencias que tiene un usuario

¿Alguna idea de cómo obtener ambas cosas?

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.