2017-04-03 4 views
0

J'ai une application SAPUI5 déployée sur mon portail. J'essaie d'obtenir le login de l'utilisateur connecté sur le portail dans mon SAPUI5. Mais quand j'exécute mon application, il n'y a pas de données.Portail SAPUI5 et NW

Bellow est mon code

sap.ui.define([ 
'jquery.sap.global', 
'sap/ui/core/Fragment', 
'sap/ui/core/mvc/Controller', 
'sap/ui/model/Filter', 
'sap/ui/model/json/JSONModel' 
], function(jQuery, Fragment, Controller, Filter, JSONModel) { 
    "use strict"; 

    var CController = Controller.extend("sap.m.ZHRUI001.C", { 
     inputId: '', 
     valueHelpRequest: function(oController) { 
      this.inputId = oController.oSource.sId; 
      var sServiceUrl = "http://<my server host>:<my server port>/sap/bc/ui2/start_up"; 
      var oModel = new sap.ui.model.odata.ODataModel(sServiceUrl, true, "user", "password"); 

      var oJsonModel = new sap.ui.model.json.JSONModel(); 

      oModel.read("/?", null, null, true, function(oData, response) { 
       oJsonModel.setData(oData); 

      }); 
      sap.ui.getCore().setModel(oJsonModel); 


      // Handling of both confirm and cancel; clear the filter 
      var that = this; 
      var handleClose = function(oEvent) { 

       var oSelectedItem = oEvent.getParameter("selectedItem"); 
       if (oSelectedItem) { 
        that.byId(that.inputId).setValue(oSelectedItem.getTitle()); 
       } 
       oEvent.getSource().getBinding("items").filter([]); 
      }; 

      // Create a SelectDialog and display it; bind to the same 
      // model as for the suggested items 
      if (!this._valueHelpSelectDialog) { 
       this._valueHelpSelectDialog = new sap.m.SelectDialog("valueHelpSelectDialog", { 
        title: "{fullName}", 
        items: { 

         template: new sap.m.StandardListItem({ 
          title: "{fullName}", 
          active: true 
         }) 
        }, 
        search: function(oEvent) { 
         var sValue = oEvent.getParameter("value"); 
         var oFilter = new sap.ui.model.Filter(
          "name", 
          sap.ui.model.FilterOperator.Contains, sValue 
         ); 
         oEvent.getSource().getBinding("items").filter([oFilter]); 
        }, 
        confirm: handleClose, 
        cancel: handleClose 
       }); 

       this._valueHelpSelectDialog.setModel(oJsonModel); 

      } else { 
       this._valueHelpSelectDialog.setModel(oJsonModel); 
      } 
      this._valueHelpSelectDialog.open(); 

     } 
    }); 

    return CController; 

}); 
+0

Quelqu'un peut-il m'aider? –

Répondre

1

De ce que je suis en lisant que vous parlez d'un portail SAP, je suppose que vous avez un 7.3+ version.

J'ai trouvé le document SAP que vous avez utilisé pour trouver l'utilisateur, attention car il ne s'agit pas du code d'une application SAPUI5 fonctionnant sur un portail mais d'un système R/3, le point d'extrémité /sap/bc/ui2/start_up n'existe pas sur un portail NetWeaver.

Ce que vous pourriez faire est de développer un service REST simple (en développant une servlet) qui renverra l'utilisateur et tous les détails dont vous avez besoin. Ces détails peuvent être trouvés dans le PortalComponentRequest qui détient un objet IUser, vous pouvez trouver un servlet portail échantillon sur mon Git ici:

https://gitlab.com/Almiriad/sap-portal-samples

Il vous suffit d'envoyer une requête GET à l'URL http [s]: // youserver: votre port/IRJ/servlet/PRT/portal/prtroot/UserServletSample.UserInfoSampleServlet et vous obtiendrez un JSO

{ 
    "user": { 
     "user-name":"<LASTNAME>, <FIRSTNAME>", 
     "user-id":"<USER_ID>", 
     "user-email":"<[email protected]>" 
    } 
} 

J'espère que cela vous aidera.

+0

Hi Almiriad, Dois-je importer ce servelet dans mon portail SAP? –

+0

Bonjour, oui vous pouvez le déployer sur votre portail. Je pense que vous pouvez simplement déployer le fichier EAR qui est le dossier UserServletSample et le servlet devrait être disponible. Soyez prudent car il y a une zone de sécurité "com.almiriad.sap.portal.user.UserInfoSampleServlet" pour laquelle vous devez vous assurer que votre utilisateur a accès (normalement une fois que vous êtes authentifié, il devrait être OK): https://help.sap .com/saphelp_nw75/helpdata/fr/48/50badbb82971b9e10000000a421937/frameset.htm – Almiriad

0

`

var oUserData; 
      var y = "/sap/bc/ui2/start_up"; 
      var xmlHttp = null; 
      xmlHttp = new XMLHttpRequest(); 
      xmlHttp.onreadystatechange = function() { 
      if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { 
        oUserData = JSON.parse(xmlHttp.responseText); 
       } 
      }; 
      xmlHttp.open("GET", y, false); 
      xmlHttp.send(null); 

`

oUserData console

pour obtenir des détails de connexion de cet utilisateur connecté.

+1

Bonjour Sriram, Ai-je besoin de mettre ce code dans mon contrôleur? –

+0

oui mettre ce code dans la fonction onInit dans le contrôleur –

+0

mais comment puis-je faire pour obtenir l'utilisateur fullName? –