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.
原文地址:https://www.cnblogs.com/sapSB/p/11097911.html