ALV Simples – Usando a Técnica “Pura”

21 August, 2009 (02:17) | ALV, Receita ABAP | By: Flávio Furlan

Google GmailWordPressBlogger PostShare

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.

<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;"><strong>Passo 4</strong>: 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":</span>
<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;"><img style="max-width: 800px;" src="http://wp3.abap101.com/wp-content/uploads/2009/08/screen-23.jpg" alt="" /></span>

 

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

<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">Dar um duplo clique no 'PF0100' para criar o GUI STATUS. Definir a descrição para o STATUS GUI como Normal Screen:</span>

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.

<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">Ao final do passo 4, já podemos fazer a primeira ativação do nosso programa para verificar se tudo está correto.</span>

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:

<span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px; white-space: normal;">Agora você pode ativar o seu programa e testar.</span>

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

Leia também

  • No Related Post

Write a comment