ALV Simples – Usando a Técnica “Pura”

Problema

Implementar um relatório ALV, para mostrar todos os dados e todos os campos da tabela SFLIGHT.

 

Solução

Passo 1: Criar um programa executável, sem TOP include, ZPURE_ALV_SIMPLE.

 

Passo 2: Criar as referências para os objetos do grid.

Passo 3: Criar uma tabela interna sem header line e fazer a seleção de todos os dados da tablea SFLIGHT.

Passo 4: Criar e chamar uma tela onde o ALV será apresentado. Para criar a tela, dar um duplo clique no número da tela, confirmar a criação do objeto e entrar com uma descrição. Importante: a tela precisa ser classificada como "Normal":

 

Nessa nova tela, é necessário criar um componente chamado “Custom Control” , pelo screen painter onde ALV será apresentado, ou seja, o ALV ficará limitado a essa área. Além disso, atentar para o nome desse componente, pois será utilizado nos próximos passos.

Terminado de desenhar onde o ALV será mostrado, é necessário programar o PBO e PAI da screen. Para isso entre na tab Flow Logic, descomente a linha MODULE STATUS_0100, dê um duplo clique na palavra STATUS_0100 e confirme a criação do novo includ. É importante escolher um bom nome para o include, pois todos os MODULES serão escritos nele.

Confirme a inclusão da instrução INCLUDE no programa princial:

No MODULE STATUS_0100, criar o comando SET PF-STATUS ‘PF0100’.

Dar um duplo clique no 'PF0100' para criar o GUI STATUS. Definir a descrição para o STATUS GUI como Normal Screen:

Na criação do Status Gui, definir uma Function Key para o botão BACK:

Também precisamo programas o PAI para o botão BACK. Para isso, descomentar  MODULE USER_COMMAND_0100 no flow logic da screen. Dar um duplo clique nesse comando, confirmar a criação de um novo MODULE no mesmo include criado para o module PBO:

Inserir o seguinte código no MODULE USER_COMMAND_0100.

Ao final do passo 4, já podemos fazer a primeira ativação do nosso programa para verificar se tudo está correto.

Passo 5: Criar os objetos para o ALV:

No PBO, criar a linha MODULE CREATE_ALV e dar um duplo clique para criar o MODULE. Escolher o mesmo include que já estamos usando para colocar os outros modules:

Nesse module, será colocado os comandos para criação dos objetos para o grid:

Agora você pode ativar o seu programa e testar.

Execução e Teste

Para executar e testar o programa, apenas pressione F8 ou :

Discussão

A vantagem de se usar as classes dos Controls diretamente é que é possível total liberdade para contruir o seu programa da forma que você desejar. Certo que você também precisa se preocupar com todos os detalhes das telas, respostas do usuário etc., mas para atender a solicitações complexas dos usuários é sempre uma boa idéia saber “escovar um pouco de bits”.

Control Frameworks

As classes CL_GUI_CUSTOM_CONTAINER e CL_GUI_ALV_GRID fazem parte do Controls Frameworks. Esse framework fornece um conjunto de classes que são utilizados para mostrar dados para o usuário. Temos vários outros Controls, como Tree, HTML, Text Edit etc.

Todos esses controles possuem comportamentos e interações comuns, daí a classe CL_GUI_CUSTOM_CONTAINER. Essa classe fornece a base dos principais recursos para duplo clique, drag-drop etc.

Então temos uma tela e nessa tela definimo o tamanho do nosso grid, usando o screen painter. Nesse espaço será onde o grid será renderizado. Para isso, devemos criar o objeto container e associá-lo a essa área. É esse o papel do parâmetro “container_name”, onde associamos o nome “CONTAINER1”, definido no screen painter.

Após isso, associamos o objeto grid ao container, usando o parâmetro “i_parent” passando a referência do objeto grid. Com isso, temos toda a estrutura montada para o nosso ALV.

Mostrando o ALV

Após toda a estrutura montada, precisamos chamar o método responsável
por apresentar o ALV na tela, SET_TABLE_FOR_FIRST_DISPLAY. É nesse
método que passamos os principais componentes que impactarão a
renderização do grid na tela.

Nesse exemplo muito simples, somente utilizamos o básico, “i_structure_name”, para passar a estrutura do grid e “it_outtab” que contém os dados do grid.

Em exemplos futuros vou mostrar os outros parâmetros e como eles impactam no grid.

Anexos

NUGG_ZPURE_ALV_SIMPLE.nugg

Veja Também

ABAP Control Exemples
ALV at SAP Help
Introdução ao ALV – Série Especial

10 Resultados

  1. Rogerio disse:

    Olá, algumas imagens do post não estão sendo exibidas, acredito que o url da imagem esteja com problemas…

  2. NOOB disse:

    Olá, esta página está com alguns problemas, se puder revisar.

    • Fábio Pagoti disse:

      Olá “NOOB”,

      Desculpe pela falha. Este post é realmente antigo e por isso realmente precisa ser revisado. Enquanto isso não acontece você tem alguma dúvida específica deste tipo de ALV?

      Abraços!

      • NOOB disse:

        Então, estou começando com ABAP (2 meses). Tem muita coisa que ainda não absorvi e ALV é uma delas.

        Estou tentando achar alguns tutos sobre ALV e achei essa série, que é bem interessante, pois abrange várias formas de usá-la.

        Minhas dúvidas maiores agora, são em relação à utlização de ALV com programas Online (que também é um tópico que to bem noob e não encontro muita coisa). Mas vou me virando com o que tenho aqui.

        Obrigado pela atenção em pleno dia 1/Jan.

        Feliz Ano!

        • Fábio Pagoti disse:

          Olá,

          Sugiro por hora procurar por exemplos de uso da classe CL_GUI_ALV_GRID.

          Quando a onlines, procure pelo termo “module pool” pois este é o nome técnico deste tipo de programa.

          Att,

          • Derik Macedo disse:

            Valeu pelas dicas, já estou conseguindo por algumas coisas em prática.

            Me cadastrei no site e agora vou deixar de ser NOOB ;P

          • Fábio Pagoti disse:

            Opa! Perfil com gravatar e tudo! Prazer Derik, seja bem-vindo!

  1. dezembro 7, 2014

    […] a família de classes CL_SALV*, que basicamente encapsula as operações que fizemos no post ALV Simples – Usando a Técnica “Pura”. Podemos dizer que essa família de classes veio para substituir as técnicas baseadas nas Function […]

  2. dezembro 7, 2014

    […] a família de classes CL_SALV*, que basicamente encapsula as operações que fizemos no post ALV Simples – Usando a Técnica “Pura”. Podemos dizer que essa família de classes veio para substituir as técnicas baseadas nas Function […]

  3. dezembro 7, 2014

    […] ALV Simples – Usando a Técnica “Pura” (9) […]