sapui5sap-enterprise-portal

SAPUI5 and NW Portal


I have an SAPUI5 application deployed on my portal. I am trying get the user login logged on portal in my SAPUI5.

But when I run my application it is not get any data.

Bellow is my 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;

});

Solution

  • From what I'm reading you are speaking of a SAP Portal, I expect you have a 7.3+ version.

    I have found the SAP doc you used to find the user, be careful because this is not the code for a SAPUI5 application running on a portal but for one running on a R/3 system, the endpoint /sap/bc/ui2/start_up doesn't exist on a NetWeaver portal.

    What you could do is develop a simple REST service (by developping a Servlet) that will send back the user and all the details that you need. These details can be found in the PortalComponentRequest which holds a IUser object, you can find a sample portal servlet on my Git here :

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

    You simply have to send a GET request to the url http[s]://youserver:your port/irj/servlet/prt/portal/prtroot/UserServletSample.UserInfoSampleServlet and you'll get a JSo

    {
        "user": {
            "user-name":"<LASTNAME>, <FIRSTNAME>",
            "user-id":"<USER_ID>",
            "user-email":"<USER@EMAIL.COM>"
        }
    }
    

    I hope this will help you.