Domine a construção ALV e de um show de relatórios aos seus clientes

É comum quando trabalhamos com desenvolvimento ABAP diariamente nos depararmos com clientes e usuários mais exigentes, e nem sempre conseguimos atender as suas expectativas.

Usuários mais ligados a gestão das áreas costumam solicitar diversos modelos diferenciados de relatórios, e é comum utilizarmos o recurso de ALV, que estão no centro do desenvolvimento ABAP. Na verdade, 70% das demandas utilizam essa técnica para apresentar os resultados de consultas do banco de dados.

O maior problema começa quando precisamos efetuar algum tipo de visualização diferenciada, ou adicionar uma ação fora do padrão na tela. Dependendo do tipo de ALV utilizado, esse desenvolvimento se torna inviável ou extremamente complexo.

Nesse momento percebemos que o tempo de desenvolvimento aumenta e a qualidade do relatório pode ser prejudicada. Isto reforça o quanto a escolha do ALV correto é fundamental para que se possa ter mais produtividade e facilidade no momento do desenvolvimento.

Ainda parece confuso? Vamos ver a seguir o que é um ALV e quais os seus principais tipos disponíveis.

O que é um ALV

O ALV é o acrônimo de ABAP List Viewer. Ele é uma ferramenta genérica para a construção de listas apresentadas em linhas e colunas, semelhante as tabelas do Excel. O ALV é um recurso fundamental para quem trabalham com desenvolvimento ABAP e entrega uma série de funcionalidades Standard de manipulação da saída, como ordenação, totalizadores, filtros e exportação de dados em arquivos para Excel, CSV, cristal reports e outros.

Um ALV possui três formas diferentes de visualização, ela pode ser uma lista simples, uma lista sequencial hierarquizada ou então uma arvore. Vejamos a seguir mais detalhes de cada uma dessas estruturas.

ALV de lista simples

Este ALV tem sua estrutura dividida em duas dimensões simples. Temos uma estrutura de título e outra de dados, de forma direta. Para utilizar esse tipo de ALV é preciso atender a premissa de os dados terem a mesma estrutura e listarem os registros um abaixo do outro.

rep1

Esse é o principal tipo de ALV, 90% dos relatórios utilizam essa forma de apresentação. Essa estrutura é formada por colunas, e todas as suas colunas possuem propriedades que são transferidas automaticamente para os valores das próprias colunas.

ALV Tree structure

Este tipo de ALV tem esse nome por apresentar sua estrutura em formato de árvore, mostrando os tipos de dados em níveis de hierarquia. As linhas da estrutura da arvore são chamadas de nodes. Cada node, não importando qual o seu nível na hierarquia possui a mesma estrutura de dados. Contudo, os nodes são relacionados entre si hierarquicamente, de forma superordinado ou subordinado (Uma relação pai e filho) ou uma relação de mesmo nível (relação de irmãos).

rep2

ALV Hierarquical-sequencial list

Este ALV é apresentado com uma lista sequencial hierarquizada, que consiste em um número de linhas divididas exatamente em dois níveis de hierarquia. Isso diferencia o cabeçalho da posição das linhas: A posição das linhas é subordinada ao seu cabeçalho. Para cada cabeçalho, pode existir um conjunto de linhas subordinadas, dessa forma, segue-se o modelo pai e filho.

rep3

Alguns exemplos práticos

Vejamos na imagem abaixo um dos principais tipos de ALV que podem ser criados para auxiliar na decisão sobre qual é a melhor situação e quais as funções ou classes que podem ser utilizadas.

ALV de lista simples

Para iniciar, vamos avaliar um ALV de lista simples. A principal função para criar esse tipo de ALV é REUSE_ALV_LIST_DISPLAY. Sua saída será da seguinte forma:

rep4

Esse tipo de ALV gera uma lista semelhante ao que pode ser criada com o comando Write, porém, utilizando esta função é possível informar os detalhes que se espera ver na saída, e dessa forma o ALV montará a tela de forma automática, agilizando o processo de construção da visualização.

Veja outras funções que podem ser utilizadas na criação de um ALV simples como esse:

  • Reuse_alv_fieldcatalog_merge (Função para montar o Field Catalog essencial para configurar os dados da saída);
  • Reuse_alv_list_display (Função de apresentação dos dados);
  • Reuse_alv_events_get (Função para criar eventos na lista de saída);
  • Reuse_alv_grid_display (Apresenta o resultado num grid full screen);
  • Reuse_alv_commentary_write (Criar um cabeçalho com informações desejadas);

 

ALV Sequencial hierarquizada

Para a utilização de um ALV sequencial hierarquizado, pode-se utilizar a principal função que gera esse tipo de saída, REUSE_ALV_HIERSEQ_LIST_DISPLAY. Sua saída será da seguinte forma:

rep5

Outra função muito utilizada para definir estrutura e declarações de estilos é a REUSE_ALV_FIELDCATALOG_MERGE.

ALV Tree

Para que se tenha um ALV Tree, a principal função que gera esse tipo de saída é RS_TREE_LIST_DISPLAY. Sua saída será da seguinte forma:

rep6

Para facilitar o entendimento sobre a criação deste tipo de ALV, que é um pouco diferente do comum, a SAP destinou um programa de demonstração que lhe auxiliará a entender a estrutura necessária para fazer o seu ALV Tree. Consulte o programa SAPMSABAPDEMOS ou então entre nesse link http://tinyurl.com/h5bpcrm para conhecer os detalhes.

ALV Grid Control

Outra forma de apresentação de um ALV é o grid control. Esse tipo de ALV exige a criação de uma tela no report ou module-pool, e posteriormente a definição de uma área de container para apresentação do resultado. Esse container tem a função de definir o espaço de tela em que ele será apresentado. Para que seja mostrado na tela são utilizadas duas classes principais CL_GUI_ALV_GRID ou CL_SALV_TABLE. A saída terá a seguinte forma:

rep7

Para auxiliá-lo na construção do seu ALV Grid Control ou simplesmente seu ALV OO, você pode acessar o link http://tinyurl.com/jgroxje, consultando todas as informações e documentação disponíveis.

Um ponto importante desse tipo de ALV é que ele oferece uma dinâmica mais fácil para o desenvolvimento de determinados eventos ou edição dos valores listados no ALV.

ALV Hierarchical sequential control

Outra forma de apresentar um ALV é o Hierarchical sequential control. Esse tipo de ALV exige a criação de uma tela no report, e posteriormente a utilização da classe CL_SALV_HIERSEQ_TABLE ou então a função REUSE_ALV_HIERSEQ_LIST_DISPLAY. As formas de apresentação são as seguintes:

rep8

rep9

Para auxiliá-lo na construção do seu ALV hierarquizado você pode utilizar o link http://tinyurl.com/zu97qq3, nele você encontrará um direcionamento sobre o que é necessário para montar a sua tela.

ALV Grid Full Screen

Mais uma forma de apresentar um ALV é o Grid Full Screen. Esse tipo de ALV exige a execução da função REUSE_ALV_GRID_DISPLAY e posteriormente ela montará uma tela completa. As formas de apresentação são as seguintes:

rep10

Esse é um ALV de fácil utilização e semelhante a uma lista simples. A diferença entre as opções é que nesse caso a tela montada com a lista de valores possui funcionalidades diferentes, além de possuir um layout mais moderno que uma lista simples.

Para auxiliar você na criação desse ALV você pode acessar o programa BCALV_TEST_FULLSCREEN que a SAP disponibilizou como exemplo para ajudar desenvolvedores ABAP. Além desse programa temos outros que poderão auxiliar em outras situações

  • BCALV_TEST_FULLSCREEN
  • BCALV_TEST_FULLSCREEN_EDIT
  • BCALV_TEST_FULLSCREEN_EVENTS
  • BCALV_TEST_FULLSCREEN_FILTER
  • BCALV_TEST_FULLSCREEN_FQUAN
  • BCALV_TEST_FULLSCREEN_HTML
  • BCALV_TEST_FULLSCREEN_PRINT
  • BCALV_TEST_FULLSCREEN_STATUS

 

ALV Tree Controle

Outra forma de apresentar um ALV é o Tree Control. Esse tipo de ALV é orientado a objeto, sua apresentação e lógica é semelhante ao ALV Tree apresentado anteriormente, que gera uma tela com uma lista hierarquizada. Nesse caso, você terá uma tela mais moderna e com uma série de funcionalidades adicionais para controlar as ações.

Para criar esse tipo de AVL você pode utilizar as seguintes classes CL_GUI_ALV_TREE e CL_SALV_TREE.  As formas de apresentação são as seguintes:

report11

Esse tipo de ALV tem algumas peculiaridades quando comparado com as listas. Isso se dá principalmente pela indicação de nodes pai e filhos, pois essa relação precisa ser bem definida para que o ALV funcione de forma eficiente e correta.

Para ajudá-lo na criação do seu primeiro ALV, sugerimos a utilização desse link como consulta http://tinyurl.com/znodjsq.

 

ALV WebDynpro

Podemos criar um ALV para visualização Web utilizando WebDynpro SAP. Ele pode ser utilizado tanto no ABAP quanto em Java. Seu funcionamento possui a mesma lógica que os ALVs criados puramente no ECC.

rep12

Como referência de documentação para criação do seu ALV WebDynpro, sugerimos o link http://tinyurl.com/jxd8wc3 que lhe ajudará nessa empreitada.

Considerações finais

Podemos perceber que existem muitas formas de criação de relatórios para apresentação de informações aos usuários. O ponto fundamental que precisamos tomar cuidado antes de iniciar o desenvolvimento é compreender quais são os dados que devem ser apresentados na saída.

Esta análise exige respostas para perguntas como: esses dados são padronizados? Existe uma mesma estrutura para todas as linhas? Os registros são independentes ou precisam ser categorizados? Essas respostas ajudam a direcionar a escolha do melhor tipo de ALV a ser utilizado, se será uma lista simples, uma arvore ou apenas uma hierarquia.

Outro fator importante a ser considerado é quanto aos tipos de ações necessárias na tela, e para isso, precisamos de respostas para as seguintes perguntas: será necessário editar registros? Será necessário incluir ou excluir dados do ALV? Precisa de duplo clique e navegação para outras telas? Será feito uso de comandos search help para células? Da mesma forma, essas respostas serão fundamentais na escolha do tipo de ALV, se será utilizado uma lista simples ou um ALV control orientado a objeto.

Caso seja necessário a utilização de ações diferentes do padrão (ordenar, exportar arquivos, somar e etc.) a melhor opção é a utilização do ALV OO Control.

Uma última pergunta a ser respondida é se a visualização desse ALV pode ser somente no servidor ECC ou se precisa ser visível de forma WEB. Dessa forma, será possível compreender se poderá criar um ALV com as tecnologias e ferramentas no ECC ou então optar por um modelo WebDynpro.

Ao fazer a escolha correta do ALV para seus relatórios, você estará pronto para apresentar os melhores resultados, economizando esforço e tempo de desenvolvimento.

chamada_post


Voltar