abap web dynpro - pratica 2
TRANSCRIPT
ABAP Web Dynpro – Prática 2
Navegação entre Views
Neste próximo exemplo, vamos estender a funcionalidade de nosso componente Pesquisa de Vôos, adicionando uma View que irá exibir uma mensagem ao usuário, caso a pesquisa não tenha encontrado nenhum vôo para o filtro selecionado.
Página | 1
ABAP Web Dynpro – Prática 2
Passo 1 – Criando uma nova ViewPara exibir uma mensagem, vamos criar uma nova View, adicionar um elemento TextView e um elemento Button.
Preencha os dados para a nova View.
Adicione os elementos TextView e Button
Página | 2
ABAP Web Dynpro – Prática 2
Passo 2 – Mapeando dados no Context
Criaremos agora os dados que desejamos estar disponíveis em nossa View.
Na aba Context da nova View NO_RESULT, arraste para o Context da View os nós DESTINATION_FROM e DESTINATION_TO do Context do Controller do Componente.
Página | 3
ABAP Web Dynpro – Prática 2
Também criaremos um novo atributo no Context da View NO_RESULT. Este atributo não será poderá ser mapeado, pois tem origem em um View Controller.
Entre com os dados para o atributo.
Página | 4
ABAP Web Dynpro – Prática 2
Utilizaremos o Data Binding para ligar o novo atributo criado ao TextView adicionado em nossa View NO_RESULT.
Selecione o atributo a ser ligado.
Página | 5
ABAP Web Dynpro – Prática 2
Passo 3 – Adicionado os Plugs de navegaçãoSalve a View NO_RESULT e volte para a View MAIN.
Na View MAIN, vá para a aba Outbound Plug e crie um novo Outbound Plug chamado NO_RESULT_FOUND.
Na View NO_RESULT, crie agora um Inbound Plug chamado DISPLAY_NO_RESULT.
Salve a View NO_RESULT.
Passo 4 – Disparando o evento de navegaçãoPara o próximo passo, voltamos a View MAIN. Na aba Actions, vamos modificar a implementação da Action SEARCH.
Página | 6
ABAP Web Dynpro – Prática 2
Posicione o cursor abaixo da chamada ao método da BAPI e clique no botão Code Wizard . Selecione Read Context e selecione o nó FLIGHT_LIST:
Todo o código necessário para ler o nó do Context é automaticamente montado. Note também que alguns pontos são deixados para o desenvolvedor injetar código customizado. Estes pontos são identificados com comentários @TODO.
Página | 7
ABAP Web Dynpro – Prática 2
Após a leitura do nó no Context, executada pela método GET_CHILD_NODE do objeto WD_CONTEXT, é feita uma verificação para apurar se foram encontrados resultados para a pesquisa.
Dentro deste trecho, iremos incluir a chamada ao evento de navegação que ira levar o usuário até a View NO_RESULT. Isto é feito através do Outbound Plug NO_RESULT_FOUND.
Posicione o cursor na linha entre o segundo IF .. IS INITIAL e o ENDIF correspondente e clique no botão Code Wizard novamente. Lembre-se de apagar o código gerado após este IF.
Selecione a opção Start navigation e selecione o Outbound Plug NO_RESULT_FOUND.
Novamente, o código necessário é gerado.
Página | 8
ABAP Web Dynpro – Prática 2
Crie um novo Outbound Plug para voltar a View MAIN.
Salve e vá para a View NO_RESULT. Na aba layout, selecione o botão Nova pesquisa.
Vamos criar uma Action para o evento OnAction deste botão:
Para facilitar, ao criar uma Action, é possível indicar um Outbound Plug a ser disparado no método que irá implementar esta Action. Selecione o Outbound Plug criado.
A Action é criada e o método automaticamente implementado, disparando o evento de navegação.
Página | 9
ABAP Web Dynpro – Prática 2
Ainda na View NO_RESULT, vá para a aba Methods. Note que foi criado um novo método chamado HANDLEDISPLAY_NO_RESULT, o qual foi gerado automaticamente ao criarmos o Inbound Plug DISPLAY_NO_RESULT.
Neste método, podemos montar o texto a ser mostrado no TextView desta View. Inicialmente, devemos recuperar os valores da pesquisa. Isso é feito através dos dados já disponíveis no Context desta View.
Novamente usaremos o Code Wizard para ler os dados do Context. Lembre-se de posicionar o cursor na posição correta no editor.
Página | 10
ABAP Web Dynpro – Prática 2
Agora temos os dados necessários para montar a mensagem.
* Monta a mensagem --------------------------------------------------* DATA: l_msg_text TYPE string. CONCATENATE 'Nenhum vôo encontrado partindo de' ls_destination_from-city 'para' ls_destination_to-city INTO l_msg_text SEPARATED BY space. wd_context->set_attribute( name = 'MSG_TEXT' value = l_msg_text ).
Passo 5 – Incluindo a View na WindowPara que possamos testar nossa aplicação, uma última tarefa é embutir a View NO_RESULT a Window principal de nosso Componente. Vá para a Window e abra o menu de contexto na aba Window. Acione o comando Embed View.
Indique a View a ser adicionada. NO_RESULT.
Salve e ative os objetos.
Página | 11
ABAP Web Dynpro – Prática 2
Após os objetos ativados, podemos testar a Application:
Página | 12