Hub

    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 inferior 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.