Quantcast
Channel: SCN : Discussion List - SAP HANA Developer Center
Viewing all articles
Browse latest Browse all 6412

Return Messages to SAP UI5 using XSODATA Services

$
0
0

Hi Experts,

We have created a user registration screen and are using ODATA services to post the entry in HANA. In case, the email entered by user already exists in the database we would like to send back a message to UI stating "Email Already Exists". While debugging the message is available in browser console but we are not to able to capture it from ERROR CALL BACK Function.

 

SERVICES:


service {

 

    "ABC_PE.TABLES::DM_CUSTOMER_REG" as "REGN"  

  

//    key generate local "ID"

    create using "ABC_PE.Procedure_Demo2::User_Regn"

    update forbidden

    delete forbidden;

}

 

PROCEDURE:


CREATE PROCEDURE "ABC"."ABC_PE.Procedure_Demo2::User_Regn" (IN ip "ABC"."ABC_PE.TABLES::DM_CUSTOMER_REG",

                                                         OUT op "ABC"."ABC_PE.STRUCTURE::error" )

    LANGUAGE SQLSCRIPT

    SQL SECURITY INVOKER AS

--    DEFAULT SCHEMA "IEVCS"

--    READS SQL DATA AS

      

    ls_UserName             VARCHAR(60);

    ls_Email             VARCHAR(60);

    ls_Password             VARCHAR(60);

    ls_SecurityQuestion  VARCHAR(100);

    ls_Answer             VARCHAR(100);

    ls_Regn_Date         DATE;

    ls_ConfirmEmail         VARCHAR(60);  

    ls_ConfirmPassword     VARCHAR(60);

    ls_FirstName         VARCHAR(60);

    ls_LastName             VARCHAR(60);

    ls_AddressLine1         VARCHAR(60);

    ls_AddressLine2         VARCHAR(60);  

    ls_City                 VARCHAR(60);

    ls_Province             VARCHAR(60);

    ls_PostalCode         VARCHAR(60);

    ls_MobilePhone         VARCHAR(60);

    ls_WorkPhone         VARCHAR(60);

    ls_VIN                 VARCHAR(20);

    ls_DRParticipant     VARCHAR(10);

    ls_CarModel             VARCHAR(15);

    chk_email             VARCHAR(60);

    COUNTER                 VARCHAR(2);

      

BEGIN

/*****************************

    Write your procedure logic

*****************************/

chk_email := 123;

SELECT "UserName",

        "Email",

        "Password",

        "SecurityQuestion",

        "Answer",

        "Regn_Date",

        "ConfirmEmail",

        "ConfirmPassword",

        "FirstName",

        "LastName",

        "AddressLine1",

        "AddressLine2",

        "City",

        "Province",

        "PostalCode",

        "MobilePhone",

        "WorkPhone",

        "VIN",

        "DRParticipant",

        "CarModel"

INTO      ls_UserName,

        ls_Email,

        ls_Password,

        ls_SecurityQuestion,

        ls_Answer,

        ls_Regn_Date,

        ls_ConfirmEmail,  

        ls_ConfirmPassword,

        ls_FirstName,

        ls_LastName,

        ls_AddressLine1,

        ls_AddressLine2,  

        ls_City,

        ls_Province,

        ls_PostalCode,

        ls_MobilePhone,

        ls_WorkPhone,

        ls_VIN,

        ls_DRParticipant,

        ls_CarModel

FROM    :ip    ;

 

SELECT COUNT("Email")

INTO    COUNTER

FROM   "ABC"."ABC_PE.TABLES::DM_CUSTOMER_REG"

WHERE  "Email" = :ls_email;

 

 

IF COUNTER <> 0 THEN                   

        SELECT "Email"

        INTO    chk_email

        FROM   "ABC"."ABC_PE.TABLES::DM_CUSTOMER_REG"

        WHERE  "Email" = :ls_email;

 

END IF;

 

 

 

 

 

        IF :ls_email = :chk_email  THEN

            op    = select  401                                  as http_status_code,

                           'email already in use'                 as error_message,      // This message is seen in browser console

                            ''           as detail

                     from dummy;       

          

      

        ELSE

 

             INSERT INTO "ABC"."ABC_PE.TABLES::DM_CUSTOMER_REG"

             VALUES                                           ("IEVCS"."CUSTOMERID".nextval,ls_UserName,ls_Email,ls_Password,ls_SecurityQuestion,ls_Answer,current_date,ls_ConfirmEmail,  

                    ls_ConfirmPassword, ls_FirstName, ls_LastName, ls_AddressLine1, ls_AddressLine2, ls_City, ls_Province, ls_PostalCode,

                    ls_MobilePhone, ls_WorkPhone,ls_VIN,

                    ls_DRParticipant,

                    ls_CarModel);

                                  

        END IF;      

      

END;

 

SAPUI5 ERROR CALL BACK AND SUCCESS CALL BACK


Function a (oEntry){

 

odataModel.create("/REGN", oEntry, null, that.successMsg, that.errorMsg);

 

},

   successMsg: function(evt) {

sap.ui.commons.MessageBox.alert("Resigtration successful");

var router = sap.ui.core.UIComponent.getRouterFor(this);

router.navTo("Login",null,false);

    },

    errorMsg: function(evt) {

var c = evt.responce.statusCode;

var d  = evt.responce.statusText;

 

        sap.ui.commons.MessageBox.alert("Resigtration failed");

    },


For Console Error Please find the attached screen shot.

How to capture the error message "email already exists" from errorMsg call back function ?


Thanks

Madhusudan


Viewing all articles
Browse latest Browse all 6412

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>