SAP – Web Dynpro – Validations – Abap

Publicado: 16 de janeiro de 2015 em Abap

Web Dynpro possui algumas funcionalidades que visam facilitar a validação de campos e economizar tempo do desenvolvedor na criação da interface com o usuário. Uma verificação dos campos de entrada requeridos automáticos ainda não estão implementados no Web Dynpro e também não é planejado para o futuro, no entanto existem alguns métodos para executar esta ação. Para validação você pode executar a classe CL_WD_DYNAMIC_TOOL no seu evento ou no evento DoBeforeAction.

Isto significa que a propriedade State com o valor Required no elemento InputField somente exibirá um caractere asterisco na cor vermelha no seu elemento Label Associado, para que ocorra uma validação você precisa escrever códigos que valide o valor do atributo e exiba uma mensagem de acordo com o resultado.

Web Dynpro: Input Fields

Validando Campos Obrigatórios

Neste walkthrough utilizamos um componente e uma aplicação Web Dynpro básica com duas Views. Lembre-se que o Web Dynpro utiliza a arquitetura MVC e você deve criar a rota para suas Views utilizando corretamente os plugs InBound e OutBound na árvore Windows. Caso queira lembrar como configurar uma aplicação básica Web Dynpro clique aqui.

1 – Crie sua View principal (Main) utilizando os componentes básicos como PageHeader, Labels, InputFields, TransparentContainer e Button. Modifique suas propriedades e utilize o layout chamado GridLayout, use a figura abaixo para referencia.

No InputField para o valor cargo, mude sua propriedade state para required:

Web Dynpro - View - Main

Web Dynpro – View – Main

2 – No controlador, crie os atributos para cada campo no contexto:

Web Dynpro - Controlador - Atributos

Web Dynpro – Controlador – Atributos

 

3 – Adicione os atributos no contexto da View principal:

Web Dynpro - View - Contexto

Web Dynpro – View – Contexto

4 – Volte para a View e associe os atributos as campos de entrada:

Web Dynpro - Associar Atributos

Web Dynpro – Associar Atributos

5 – Na segunda View, adicione os atributos para o contexto e arraste para a página os elementos de texto e associe os atributos a seus valores:

Web Dynpro - View- Associar Atributos

Web Dynpro – View- Associar Atributos

6 – Na View Main, na barra de ferramentas escolha Web Dynpro Code Wizard, e na aba atributos escolha o atributo Cargo. Preencha o método WDDOBEFOREACTION para fique igual ao código abaixo:

Web Dynpro - Code Wizard

Web Dynpro – Code Wizard

7 – Ative o componente e teste sua aplicação, entre com o seu usuário e senha e preencha os campos menos o campo com o sinal de asterisco (campo obrigatório):

Web Dynpro - Campo Obrigatório

Web Dynpro – Campo Obrigatório

8 – Assim que você enviar a requisição o campo será validado no evento DoBeforeAction e se o campo tiver com seus valores iniciais, ou seja em branco uma mensagem será exibida e a navegação cancelada:

Web Dynpro - Validação

Web Dynpro – Validação – Mensagem

9 – Quando o campo requerido for satisfeito e a requisição reenviada, o processo será executado com sucesso:

Web Dynpro - Validação - OK

Web Dynpro – Validação – OK

Exemplo:

Neste exemplo utilizamos o evento WDDoBeforeAction para validar o atributo e exibir uma mensagem para que o usuário preencha o campo corretamente:

Abap

method WDDOBEFOREACTION .

   DATA lo_nd_usuario_controler TYPE REF TO if_wd_context_node.

   DATA lo_el_usuario_controler TYPE REF TO if_wd_context_element.
   DATA ls_usuario_controler TYPE wd_this->Element_usuario_controler.
   DATA lv_cargo TYPE wd_this->Element_usuario_controler-cargo.

*  navigate from <CONTEXT> to <USUARIO_CONTROLER> via lead selection
   lo_nd_usuario_controler = wd_context->get_child_node( name = wd_this->wdctx_usuario_controler ).

*  @TODO handle non existant child
*  IF lo_nd_usuario_controler IS INITIAL.
*  ENDIF.

*  get element via lead selection
   lo_el_usuario_controler = lo_nd_usuario_controler->get_element( ).
*  @TODO handle not set lead selection
   IF lo_el_usuario_controler IS INITIAL.
   ENDIF.

*  get single attribute
   lo_el_usuario_controler->get_attribute(
     EXPORTING
       name =  `CARGO`
     IMPORTING
       value = lv_cargo ).

if lv_cargo is initial.

* get message manager
    data lo_api_controller     type ref to if_wd_controller.
    data lo_message_manager    type ref to if_wd_message_manager.

    lo_api_controller ?= wd_This->Wd_Get_Api( ).

    CALL METHOD lo_api_controller->GET_MESSAGE_MANAGER
      RECEIVING
        MESSAGE_MANAGER = lo_message_manager.

* report message
    CALL METHOD lo_message_manager->REPORT_MESSAGE
      EXPORTING
        MESSAGE_TEXT = 'Cargo é um campo obrigatório'
        CANCEL_NAVIGATION = ABAP_TRUE.

ENDIF.

endmethod.
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s