En ocasiones necesitamos obtener los datos del usuario que está usando nuestra app en SAPui5 para algún fin: crear un log de modificaciones con el nombre del usuario, mandarle un correo a su mail,… lo que se nos ocurra.
Lo primero que debemos tener en cuenta es que los datos que obtenemos del usuario dependen del portal en el que estamos corriendo la app. Si intentamos obtener los datos del usuario ejecutando la app desde el SAPWebIDE (o el IDE que usemos) no obtendremos nada: en ese entorno no hay usuario.
Mediante la siguiente llamada obtendremos el servicio de UserInfo sap.ushell.Container.getService(«UserInfo») desde donde podemos obtener el ID usando el método getId() como bien se indica en la documentación. Pero si usamos la consola debugando podremos ver que hay más métodos que no aparecen allí:
Uno especialmente interesante es getUser(), que nos da acceso a un amplio listado de métodos desde los que obtener más información del usuario:
Para finalizar os dejo una función muy sencilla que suelo utilizar para obtener el ID de usuario (el DEFAULT_USER lo uso para hacer las pruebas usando el SAPWebIDE):
getLogonUser: function () { var userID = "DEFAULT_USER", userInfo; if (sap.ushell){ userInfo = sap.ushell.Container.getService("UserInfo"); if (userInfo) { userID = userInfo.getId(); } } return userID; }
Eso es todo, espero que os haya sido útil, pero no me seáis trolls y uséis los setters del getUser para cambiarle la imagen al pobre usuario que le puede dar algo.
4 comentarios
Andres Bolaños · 14 mayo, 2020 a las 18:52
Hola
estuve probando con tu función pero no logro traer el userid, en mi caso deberia de retornar un usuario s
Jorge Motos · 10 junio, 2020 a las 20:56
Hola Andres, si estás haciendo la prueba en una app que no esté desplegada en ningún entorno real, no te devolverá el usuario. No se si es tu caso.
Con más información igual te puedo ayudar.
Adrian Di Ruggiero · 13 julio, 2020 a las 22:10
Hola! Probé lo que explicás acá, y funciona perfectamente, siempre que el IDP sea el Default.
Si elijo autenticar el usuario por medio de un IDP externo, recupero el ID (según lo que informa el IDP), pero solo getFullName() devuelve algo (el mismo valor que el ID), mientras que los otros métodos quedan en blanco. ¿Alguna idea? Gracias!
Josep Martin(SAPAS) · 21 abril, 2022 a las 23:55
Hola Jorge, no se si te acuerdas de mi, soy Josep Martín y nos conocimos en SAPAS, cuando estuviste trabajando con Pedro Redondo. Abusando de la confianza, quisiera saber si en algún momento, podemos hablar un rato para que me aclares unos conceptos sobre este mundo tan complejo de SAP-UI5, ODATA, FIORI, etc…. El problema es que yo vengo del mundo R/3 e incluso he hecho SAP ss4 For HANNA, un poquito, pero del Cloud, UI5, etc…ni idea, y me atrae mucho este mundo, pero primero quisiera tener ideas claras. Si no te sabe mal, nos hablamos por el correo que te he dejado y te enviaré mi tlf. para poder comunicarnos mejor, por Whats o mediante una videocall. Lo dicho, muchas gracias por todo, y tu blog, me parece genial.