Botões de ação

Antes de colocarmos a mão no código ABAP, precisamos entender o seguinte conceito:

Cada ação na plataforma é um ponto de contato entre a aplicação SAPUI5 e o SAP. Este ponto de contato se dá por meio de Includes ou Funções ABAP.

Com esse ponto devidamente configurado, a plataforma enviará todos os dados de todos os campos da tela organizados segundo a hierarquia de montagem da tela.

Neste cenário, como temos apenas uma tela de listagem com uma tela de detalhes simples, os dados chegarão no ABAP estruturados da seguinte forma:

  • COD_LOJA
  • NOME
  • MAIN_FORM
    • COD_LOJA
    • NOME
    • ENDERECO

Configuração no Builder

Agora vamos aos passos necessários para esta implementação:

  • Na subseção Ações, clique no ícone Configurações localizado na linha referente à ação Incluir;
  • Localize a seção Propriedades SAP na popup de configuração da ação;
  • Preencha a configuração Include com o nome do include que criaremos. Neste exemplo, utilizaremos o nome ZLOJA_INCLUIR;
  • Confirme sua configuração acionando o botão OK;
  • Conclua acionando o botão Construir.

Acessando o ABAP

Agora que a aplicação foi recompilada, abra o SAP GUI para a criação do nosso include.

Note que a aplicação criou uma classe responsável por chamar o include, fornecendo um código de exemplo comentado acima da chamada do include.

Importante:

O código deste método não deve ser modificado, pois ele é reescrito automaticamente quando a aplicação é recompilada pelo Builder.

Devemos ter cuidado ao reutilizar os includes em aplicações diferentes, pois a estrutura de dados das aplicações deve ser idêntica. Caso contrário, podem ocorrer erros de referência.

Agora sim, codificando:

  • Abra a aplicação no Builder;
  • Clique no ícone Informações Técnicas Informações Técnicas localizado no canto inferiro esquerdo;
  • Selecione a aba Ações;
  • Copie o nome da classe que chamará seu include clicando no ícone Copiar ;
  • Abra a transação SE24 no seu SAP Gui e cole o nome da classe;
  • Abra o método ZINF_TACH_PROCESS_ACTION_BTN~PROCESS_ACTION_BUTTON;
  • Copie o código de exemplo do comentário;
  • Crie o include dando um clique duplo sobre o nome do include, neste exemplo ZLOJA_INCLUIR;
  • Cole o código copiado;
  • Descomente o código e ative o include como objeto local;
  • Adicione um ponto de parada externo na linha 08. Lembre-se de que deve ser um ponto de parada externo para que a requisição da aplicação seja capturada, uma vez que uma aplicação SAP UI5 sempre acessa o sistema de modo externo ao SAP GUI.

Testando seu código

Após a configuração no Builder e a implementação do código ABAP, retorne ao Application no navegador. Pressione Ctrl + F5 para recarregar a aplicação e, após isso, vamos aos testes:

  • Abra a aplicação;
  • Na lista principal, acione o botão Incluir;
  • Preencha o código da loja. Neste caso, 123;
  • Preencha o nome. Neste exemplo, Loja de teste;
  • Preencha o endereço. Neste caso, Minha Rua;
  • Acione o botão Salvar;
  • Note que a aplicação parece congelada. Neste caso, seu SAP GUI deve abrir e parar exatamente na linha marcada para o ponto de parada externo.

Neste momento, você deve se deparar com uma tela semelhante a esta:

A partir deste ponto, você deve implementar todas as regras que desejar, bem como chamar funções standard ou funções customizadas para a gravação dos dados na inclusão.

Note que os dados não foram salvos, justamente porque abrimos a customização e não implementamos este processo de salvar.

Para concluir nosso exemplo: Apague todo código do include a partir da linha 08.

Copie o código de exemplo abaixo:

DATA ls_dados_loja TYPE zmanloja. MOVE-CORRESPONDING ls_action_data-main_form TO ls_dados_loja. MODIFY zmanloja FROM ls_dados_loja. IF sy-subrc IS NOT INITIAL. APPEND INITIAL LINE TO message_table ASSIGNING FIELD-SYMBOL(<fs_mensagem>). <fs_mensagem>-type = 'E'. "Erro <fs_mensagem>-message = 'Houve um erro ao tentar inserir os dados desta loja'. ELSE. APPEND INITIAL LINE TO message_table ASSIGNING <fs_mensagem>. <fs_mensagem>-type = 'S'. "Erro <fs_mensagem>-message = 'Loja adicionada com sucesso'. ENDIF.

Cole-o no seu Include ABAP e ative-o logo em seguida.

Agora os dados serão salvos novamente.