Skip to Content
Author's profile photo Felipe Loyola

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.

Captura de pantalla de 2015-07-09 13-24-15.png

Espero le sea de utilidad.

Salduos

Assigned Tags

      15 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Gonzalo Gomez
      Gonzalo Gomez

      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

      Captura.PNG

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      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

      Author's profile photo Former Member
      Former Member

      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

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      Correcto, me refiero a que las actualizaciones no son obligatorias, como en windows por ejemplo.

      Saludos

      Author's profile photo Former Member
      Former Member

      claro, pero dejan de tener soporte, por lo cual es mejor migrar, sirve que tienen las nuevas funcionalidades

      Saludos

      Author's profile photo Former Member
      Former Member

      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?

      Author's profile photo Felipe Loyola
      Felipe Loyola
      Blog Post Author

      En SAP 2007A recuerdo que se usa el

      select $[USER]

      en una busqueda formateada para obtener el usuario conectado.

      Saludos

      Author's profile photo Former Member
      Former Member

      Muy útil aporte...

      Author's profile photo Former Member
      Former Member

      Muy buen aporte estimado Felipe, recuerdo que esta es una pregunta eterna, saludos !

      Author's profile photo Former Member
      Former Member

      Muy Buen Aporte Felipe

      Author's profile photo Former Member
      Former Member

      Muy útil justamente lo que necesitaba.. gracias por el aporte...

      Author's profile photo Former Member
      Former Member

      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.

      Author's profile photo JESUS CORTEZ
      JESUS CORTEZ

      Felipe Loyola tienes algun correo para comunicarme contigo?

      Author's profile photo Former Member
      Former Member

      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

       

      Author's profile photo Cesar Sanchez
      Cesar Sanchez

      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.