点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好朋友
我只是想挑战一天,以模仿HANA中的小型登录功能。
我偶然发现了时间限制以及其他问题或错误(从句法上讲,您可以根据需要改进逻辑)
过程" LoginValidate"(在IM_GID nvarchar(6)中,在IM_PASSWD nvarchar(96)中,在EX_StatusIndicator nvarchar(3)中,在Ex_Status nvarchar(216)中) 语言SQLSCRIPT SQL安全调用程序 --DEFAULT SCHEMA <默认模式名称> -读取SQL数据 如 开始 /***************************************** 编写过程逻辑 ******************************************/ 声明LV_UserExistCount字符串; 声明LV_UserExistPass字符串; 声明LV_Attempt Integer; 从" Datasource.MD_USER_DETAIL"中选择DISTINCT(USERID)到LV_UserExistCount,其中USERID =:IM_GID; if(长度(:LV_UserExistCount))= 0 然后 EX_StatusIndicator ='X1'; Ex_Status ='您尚未注册,请先注册'; 其他 if(Length(:LV_UserExistCount))= 1 然后 从" Datasource.MD_USER_DETAIL"中选择DISTINCT(" Password")放入LV_UserExistPass,其中" Password" =:IM_PASSWD; if(长度(:LV_UserExistPass))= 0 然后 EX_StatusIndicator ='X2'; Ex_Status ='您未被授权,密码错误'; 从" Datasource.DailyLoginControl"中选择" NoOfAttempt"进入LV_Attempt; 如果(LV_Attempt为null) LV_Attempt = 0; 万一; 如果(to_Integer(LV_Attempt)> = 3)然后 EX_StatusIndicator ='X3'; Ex_Status ='违反! 您的帐户已被锁定'; 否则(to_Integer(LV_Attempt)<= 3)然后 从" Datasource.DailyLoginControl"中选择" NoOfAttempt"进入LV_Attempt; EX_StatusIndicator ='X4'; Ex_Status ='未授权! 您的帐户输入了错误的密码" + LV_Attempt +"时间"; LV_Attempt = LV_Attempt + 1; 更新" Datasource.DailyLoginControl"设置为" GID" = IM_GID,"状态" ="失败"," LoggedInat" = current_date,NoOfAttempt = LV_Attempt,ResetRequestDate ='00000000',其中" GID" = IM_GID," LoggedInat" = current_date 承诺; 其他 EX_StatusIndicator ='200'; Ex_Status ='授权! 登录成功'; 更新" Datasource.DailyLoginControl"设置为" GID" = IM_GID,"状态" ="成功"," LoggedInat" = current_date,NoOfAttempt = 0,ResetRequestDate =" 00000000",其中" GID" = IM_GID," LoggedInat" = current_date; 承诺; 万一; 万一; 万一; 万一; 结束
错误如下
11:56:23 AM(HDB)位于" src/Procedure/Authorization/LoginValidate.hdbprocedure"(55:1)错误:预编译...失败[8212133]错误:计算依赖项...失败[8212108] 制作失败(5个错误,0个警告):尝试部署1个文件,取消部署0个文件,重新部署0个从属文件错误:制作...失败[8211605]
进一步参考以重新创建场景。
上下文数据源{ 实体" MD_USER_DETAIL" { 键" USERID":字符串(12); }; 实体DailyLoginControl { 键" GID":字符串(12); 状态:字符串(13); LoggedInat:UTCTimestamp; NoOfAttempt:Integer; ResetRequestDate:UTCTimestamp; }; }
让我们解决这个问题,并帮助我们的社区以较小的#Learnings体验。
我还将修复和工作代码的结果发布在同一页面中,并将其添加到GITHUB。
Br,
Asgariel。
不确定这是否是根本原因,但是将密码存储在数据库中肯定是错误的,并且应该编译失败。
另一件事是,对不存在的用户的检查不仅繁琐(长度 计数吗?),但如果没有匹配的用户,也不会达到该计数。 相反,如果找不到值,则select into会引发错误。
据我所知,这是我阅读的一些随机代码,没有规范,测试数据或表定义。
这不是"样本","运动","测验"或您要称呼的任何东西。 只是您的代码不起作用。
显然,寻求帮助是正确的事情,但是如果您尝试将其作为对我与Florian在一起的社区的"学习"来出售,并且感到领先(而且很便宜)。
有了 对此,我肯定会感谢您指出了代码中的两个主要问题,并希望您在以后的实现中一切顺利。
这听起来不像是"挑战",
如果您想为自己的问题提供答案,请提出一个适当的问题,并添加仅摘要的完整错误日志记录。
你好朋友! 我这样做是作为学习。 我要构思并尝试发布!
如果您是HANA的初学者想学习,请使用上面的示例和示例。 这些是我们犯的常见错误! 任何方式! 仍然需要即兴和设计。
这只是为了学习,没有实际必要性或用例。如果确实有用,请点赞。 谢谢。
这只是一个挑战性的问题! 我对提出我不知道的问题或愚蠢的问题并不感到羞愧,不受您的批评威胁。 我希望能够得到推理,支持和思考,而不是您的批评。
感谢您的粗鲁回应! 服务很好的答案! 对此表示敬意! 谢谢,继续努力!!
一周热门 更多>