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