SAP B1 – Query que devuelve el usuario conectado | Query return connected user
Hace tiempo, en un proyecto X, construí este query que devuelve el código del usuario conectado SAP B1, incluso si tiene 2 sesiones abiertas con diferente
usuario devuelve el correcto.
Select top 1 UserCode from USR5 where SessionID=@@spid order by Date desc,Time desc
SQL Server maneja una variable única para cada conexión establecida a la base de datos, llamada “spid”, se puede recuperar obteniendo
select @@spid
Esa query devolverá el numero de conexión que asigna sql a la conexión establecida de ese programa, si lo ejecutan en el cliente, les entregará el numero de conexión de ese cliente, que sería diferente al ejecutarlo en el SQL Management Studio que también tiene una conexión asignada.
Luego en la tabla USR5 se guardan las conexiones de los usuarios con su spid, por lo que se debe recuperar la ultima conexión del usuario que coincide con el spid del cliente actual.
Aquií les dejo el ejemplo de 2 clientes con diferente usuario conectado.
Espero le sea de utilidad.
Salduos
En la versión 9.1 han añadido una opción en Gestión-Utilidades denomindada clientes conectados que especifica esa información por ip
Claro que existe pero por ejemplo, si quieres filtrar automáticamente un reporte por el código del usuario conectado para que no tenga que especificar el usuario manualmente, si quieres hacer una búsqueda formateada para traer valores asignados al usuario y otras cosas mas.
La query no apunta a ser un reporte, apunta a traer el dato del usuario conectado para ser usado en algun stored procedure, alguna BF o alguna query.
Como observación, si bien los nuevos clientes que contratan sap B1 se les implementa la version actual (9.1 en este caso), tenemos clientes que aun están en la versión 2007 o en la 8.81, incluso había 1 que aun tenía 2005 hasta hace poco. La cantidad de clientes que disfrutan de las nuevas funcionalidades son los más recientes, no todos estan buscando el upgrade para estar a la vanguardia con las versiones.
Saludos
Hola Felipe, con el pago del mantenimiento, todos los clientes tienen derecho a las actualizaciones de SAP, con ello podrían subir a l 9.1
Por cierto, muy util tu query para asignarlo en un stored
Saludos
Correcto, me refiero a que las actualizaciones no son obligatorias, como en windows por ejemplo.
Saludos
claro, pero dejan de tener soporte, por lo cual es mejor migrar, sirve que tienen las nuevas funcionalidades
Saludos
Saludos Felipe.
He verificado en el SAP 2007 que usamos y no tengo al tabla USR5. Hay alguna otra tabal donde pueda aplicar esa consulta?
En SAP 2007A recuerdo que se usa el
select $[USER]
en una busqueda formateada para obtener el usuario conectado.
Saludos
Muy útil aporte...
Muy buen aporte estimado Felipe, recuerdo que esta es una pregunta eterna, saludos !
Muy Buen Aporte Felipe
Muy útil justamente lo que necesitaba.. gracias por el aporte...
Y si requiero hacerlo desde un rpt desde crystal, es decir necesito que la columna de ganancia aparezca con ***** si el usuario del director no es el que solicita el rpt.
Felipe Loyola tienes algun correo para comunicarme contigo?
Estimado Felipe, perdon que use este bloq con un tema diferente a la consulta que quiero hacer..
El otro dia lei un bloq tuyo sobre uso de licencias indirectas que se puso en SAP BO desde la version 9 para las conecciones via Di API
Resulta que nosotros migramos de version de la 8.8 a la 9.2 y empezamos a tener bloqueos en una aplicacion externa a sap y que se conecta via diapi.
Despues de rompernos la cabeza mi partner de soporte me indico que tuvieron un caso similar con otro cliente y que se resolvio asignando una licencia indirecta a cada usuario que se conecta desde la aplicacion de tercero via DI API. en tu experiencia es correcto esta afirmacion?
Muchas gracias, quedo a la espera de tu respuesta, saludos
Excelente aporte, acabo de usarlo en una de mis Búsquedas Formateadas y funciona 100% en B1 9.2 PL9.
Saludos desde Lima, PERU
César S.