Skip to Content

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

15 Comments
You must be Logged on to comment or reply to a post.
    • 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

  • 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.

  • 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