zoukankan      html  css  js  c++  java
  • WDA演练一:用户登陆界面设计(二)

    一,登陆界面设计:

    1.将系统编号灰显,默认初值

    2.密码栏勾选密码显示,这样就不会明文显示在页面上了:

    Init方法中添加默认值代码:

    METHOD wddoinit .
      DATA lo_nd_zhis_user TYPE REF TO if_wd_context_node.
      DATA lo_el_zhis_user TYPE REF TO if_wd_context_element.
      DATA ls_zhis_user TYPE wd_this->element_zhis_user.
      DATA lv_sys TYPE wd_this->element_zhis_user-sys.
      lo_nd_zhis_user = wd_context->get_child_node( name = wd_this->wdctx_zhis_user ).
      lo_el_zhis_user = lo_nd_zhis_user->get_element( ).
    
    *默认登陆系统为当前服务器系统
      IF lo_el_zhis_user IS INITIAL.
        EXIT.
      ENDIF.
      lv_sys = sy-mandt.
      lo_el_zhis_user->set_attribute(
        name =  `SYS`
        value = lv_sys ).
    
    ENDMETHOD.

    二、登陆验证:

    1.新建函数组ZLY_PORTAL

    定义全局结构用来存储用户数据:

    2.新建函数ZLY_SET_LOGON将用户信息存到函数组全局中:

    3.回到WDA里 新建MSG方法,视图中统一显示消息:

    METHOD msg .
    *   get message manager
      DATA lo_api_controller     TYPE REF TO if_wd_controller.
      DATA lo_message_manager    TYPE REF TO if_wd_message_manager.
      DATA message TYPE string.
    
      lo_api_controller ?= wd_this->wd_get_api( ).
    
      lo_message_manager = lo_api_controller->get_message_manager( ).
    
    *   report message
      message = lo_message_manager->report_message(
          message_text              = msg
          message_type              = type ).
    
    ENDMETHOD.

     4.定义登陆按钮事件,并做相关检查:

    METHOD onactionlogon .
      DATA lo_nd_zhis_user TYPE REF TO if_wd_context_node.
      DATA lo_el_zhis_user TYPE REF TO if_wd_context_element.
      DATA ls_zhis_user TYPE wd_this->element_zhis_user.
      DATA:lv_len  TYPE i,
           lv_hash TYPE md5_fields-hash,
           gw_user TYPE zlyuser.
    
    *   navigate from <CONTEXT> to <ZHIS_USER> via lead selection
      lo_nd_zhis_user = wd_context->get_child_node( name = wd_this->wdctx_zhis_user ).
      lo_el_zhis_user = lo_nd_zhis_user->get_element( ).
      IF lo_el_zhis_user IS INITIAL.
        EXIT.
      ENDIF.
      lo_el_zhis_user->get_static_attributes(
        IMPORTING
          static_attributes = ls_zhis_user ).
    
      IF ls_zhis_user-usern IS NOT INITIAL AND ls_zhis_user-pwd IS NOT INITIAL.
        lv_len = strlen( ls_zhis_user-pwd ).
        CALL FUNCTION 'MD5_CALCULATE_HASH_FOR_CHAR'
          EXPORTING
            data           = ls_zhis_user-pwd
            length         = lv_len
            version        = 1
          IMPORTING
            hash           = lv_hash
    *     TABLES
    *       DATA_TAB       =
          EXCEPTIONS
            no_data        = 1
            internal_error = 2
            OTHERS         = 3.
        IF sy-subrc <> 0.
          wd_this->msg( EXPORTING type = 3 msg = 'Fcuntion error!').
        ELSE.
          SELECT SINGLE * INTO gw_user FROM zlyuser WHERE userid = ls_zhis_user-usern AND passwd = lv_hash.
          IF sy-subrc = 0.
            CALL FUNCTION 'ZLY_SET_LOGON'
              EXPORTING
                iw_user = gw_user.
            ls_zhis_user-usern = gw_user-userid.
            ls_zhis_user-persnumber = gw_user-partner.
            ls_zhis_user-augrp = gw_user-user_group.
            lo_el_zhis_user->set_static_attributes(
               static_attributes = ls_zhis_user ).
    
            wd_this->fire_tomain_plg( ).
          ELSE.
            wd_this->msg( EXPORTING type = 3 msg = 'User name OR Password error!').
          ENDIF.
        ENDIF.
      ELSE.
        wd_this->msg( EXPORTING type = 3 msg = 'Please fill user and password!').
      ENDIF.
    
    ENDMETHOD.
  • 相关阅读:
    IO流之File类
    CPU单核多核区别【转载】
    [转载] MySQL的四种事务隔离级别
    事务的四大特性,以及隔离级别
    [转载] spring aop 环绕通知around和其他通知的区别
    [转载] Spring框架——AOP前置、后置、环绕、异常通知
    spring框架 AOP核心详解
    汇编语言--操作数的寻址方式(三)
    汇编语言--CPU资源和存储器(二)
    汇编语言学习--基础知识(一)
  • 原文地址:https://www.cnblogs.com/sapSB/p/11097911.html
Copyright © 2011-2022 走看看