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
Veja Também
ABAP Control Exemples
ALV at SAP Help
Introdução ao ALV – Série Especial
Olá, algumas imagens do post não estão sendo exibidas, acredito que o url da imagem esteja com problemas…
Olá, esta página está com alguns problemas, se puder revisar.
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!
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!
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,
Valeu pelas dicas, já estou conseguindo por algumas coisas em prática.
Me cadastrei no site e agora vou deixar de ser NOOB ;P
Opa! Perfil com gravatar e tudo! Prazer Derik, seja bem-vindo!