Criar uma Loja Virtual Grátis
 Abap Junior



ONLINE
1





Report ALV

Introdução ao ALV – Série Especial

19 August, 2009 (22:53) | ALV, Receita ABAP | By: furlan

No decorrer dos anos a SAP vem evoluindo em vários sentidos. Vem aumentando a sua experiência na área de negócios, application server e também na parte visual.

Nesse sentido, ela evoluiu da tela verde dos terminais mainframe do R/2 para as listas (usando comandos WRITE), passando pelo ALV e agora pelo WebDynpro (WD).

O WebDynpro é a evolução natural para os browsers, levando a camada de apresentação para os browsers, saindo de cena o famoso Sapgui.

No entando, WD ainda tem muito chão para substituir por completo o Sapgui. Ainda há uma infinidade de programas que precisam ser migrados e isso levará muito tempo.

Enquanto isso, os programas baseados em dynpros (telas) tradicionais ainda ocuparão boa parte do seu tempo programando em ABAP. Por isso, apresento uma série de posts sobre ALV e como programar usando essa tecnologia.

ALV significa ABAP List Viewer. Como o próprio nome diz, é um gerado de listas, onde os dados são apresentados na seguinte forma:

Os dados são apresentados de forma tabular, como uma planilha Excel.

O ALV faz parte de um framework da SAP chamado Control Framework. Nele encontramos uma série de elementos visuais que podemos usar em nossos programas. A idéia aqui é ter uma clara separação da parte visual da parte de negócio. Ou seja, o programador precisa se preocupar com as regras de negócio, como seleção de dados, tratamento de dados etc., e o Control Framework é responsável pela apresentação dos dados.

Perceba que nesse ALV acima temos uma série de botões que já vieram pré-definidos. Nesses botões encontramos funções como ordenação, sumarização, busca, exportação etc. Tudo já está pronto, testado e aprovado. É só saber usar.

A mesma coisa para as colunas com os dados. Somente precisamos informar o conteúdo. O ALV faz o resto, como controlar layout, largura de colunas, ordem das colunas etc. É realmente muito interessante, tanto do ponto de vista de programação quanto para o usuário, que recebe um produto final com ótima usabilidade (já que seu funcionamento é muito parecido com o Excel) e muito bonito.

Podemos encontrar vários outros tipos de Controls. Para uma boa lista, você pode acessar vários exemplos da própria SE80 (ABAP Workbench).

Formas de Implementar ALV

O ALV é entregue pela SAP através de uma classe global, chamada CL_GUI_ALV_GRID e basicamente temos 3 formas de se implementar essa classe.

A primeira e mais conhecida é usando a function module REUSE_ALV_LIST_DISPLAY e seus vários outros serviços do package SLIS. A SAP encapsulou a implementação da classe CL_GUI_ALV_GRID nessa FM, tornando o trabalho do programador muito simples.

Atualmente, a SAP entrega uma série de outras classes, que fazem parte do pacote SALV, que fazem um serviço similar ao feito pela FM, mas usando chamadas de métodos.

E por último, vem a forma que eu chamo de “pura”, pois não usamos nenhuma classe ou FM para chamar a classe do ALV, mas sim a chamamos diretamente. A princípio dá mais trabalho, mas isso nos dá total controle sobre a nossa aplicação.

Quando Usar Cada Implementação

Depende. Se for necessário fazer uma aplicação com varios controles na tela, interagindo entre si, com drag-drop, eventos etc., sugiro usar a forma pura.

Agora, se a intenção é apenas um relatório simples a FM e principalmente as classes SALV são as mais aconselhadas, pois você não precisa se preocupar com uma série de coisas que a forma pura precisa fazer.

Próximos Capítulos

Nos próximos posts, vou mostrar várias formas de implementar programas usando ALV. Vou começar pela forma pura, depois passo para o uso das classes SALV e por último exemplos usando as FM REUSE.

Usarei o formato de receita de Receita ABAP, onde mostrarei 3 tipos de problemas, usando as 3 diferentes técnias.

Após essa série de posts, posso afirmar que teremos um conjunto de receitas ABAP, que cubrirão cerca de 70-80% dos problemas de ALV.

Progresso

Você pode seguir o progresso dos posts, acompanhando os links abaixo, onde eu coloquei as técnicas e os três tipos de problemas.




ALV Simples – Usando a Técnica “Pura”

21 August, 2009 (02:17) | ALV, Receita ABAP | By: furlan

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:

DATA: r_container TYPE REF TO cl_gui_custom_container,
r_grid      TYPE REF TO cl_gui_alv_grid.

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

<br />DATA: it_sflight TYPE TABLE OF sflight.<br />SELECT * FROM sflight INTO TABLE it_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”:

<br />CALL SCREEN 0100.<br />

 

 

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

module STATUS_0100 output.<br />SET PF-STATUS 'PF0100'.<br />*  SET TITLEBAR 'xxx'.<br />endmodule.                 " STATUS_0100  OUTPUT

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:

MODULE user_command_0100 INPUT.<br />IF sy-ucomm = 'BACK'.<br />LEAVE TO SCREEN 0.<br />ENDIF.<br />ENDMODULE.                 " USER_COMMAND_0100  INPUT

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:

MODULE create_alv OUTPUT.<br />CREATE OBJECT r_container<br />EXPORTING<br />container_name              = 'CONTAINER1'<br /><br />CREATE OBJECT r_grid<br />EXPORTING<br />i_parent          = r_container<br />ENDMODULE.                 " CREATE_ALV  OUTPUT

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.

 

 

Fonte : https://abap101.com/

 

 

Criar uma Loja online Grátis  -  Criar um Site Grátis Fantástico  -  Criar uma Loja Virtual Grátis  -  Criar um Site Grátis Profissional