Os recursos comuns desejados de qualquer relatório são "alinhamento de coluna", classificação, filtragem, subtotais, totais etc. Para implementá-los do zero, muito esforço de codificação deve ser feito. Para evitar isso, podemos usar um conceito chamado ABAP List Viewer (ALV).
Neste tutorial, você aprenderá:
- Relatório Simples
- Relatório de Bloqueio
- Relatórios Hierárquicos
- Variantes de exibição
Cada um desses relatórios fornece módulos de função que ajudam a produzir a saída desejada sem muito esforço. Vamos examiná-los em detalhes -
Relatório Simples
Módulos de função importantes neste relatório são -
- Reuse_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Reuse_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Este módulo de função é usado para preencher um catálogo de campos que é essencial para exibir os dados em ALV.
Se os dados de saída forem de uma única tabela de dicionário e todas as colunas forem selecionadas, não precisamos criar exclusivamente o catálogo de campos. Basta mencionar o nome da tabela como parâmetro (I_structure_name) no REUSE_ALV_LIST_DISPLAY. Mas em outros casos, precisamos criá-lo.
Nota: Fieldcatalog pode ser preenchido manualmente também preenchendo todos os detalhes necessários na tabela interna.
Os parâmetros importantes são:
1. Exportar:
- I_program_name: id do relatório
- I_internal_tabname: a tabela de saída interna
- I_inclname: inclui ou o nome do relatório onde todos os formulários dinâmicos são tratados.
2. Mudança
- ct_fieldcat: uma tabela interna com o tipo SLIS_T_FIELDCAT_ALV que é declarada no pool de tipos SLIS.
REUSE_ALV_LIST_DISPLAY
Este é o módulo de função que imprime os dados.
Os parâmetros importantes são:
1. Exportar:
- I_callback_program: id do relatório
- I_bypassing_buffer: 'X'
- I_buffer_active: ''
- I_callback_pf_status_set: rotina onde um usuário pode definir seu próprio status de pf ou alterar a funcionalidade do status de pf existente.
- I_callback_user_command: rotina onde os códigos de função são tratados.
- I_structure name: nome da tabela de dicionário
- Is_Layout: estrutura para definir o layout do relatório
- It_fieldcat: tabela interna com a lista de todos os campos e seus atributos que devem ser impressos (esta tabela pode ser preenchida automaticamente pela função)
- It_events: tabela interna com uma lista de todos os eventos possíveis de ALV e seus nomes de formulários correspondentes.
2. Tabelas:
- uma. t_outtab: tabela interna com os dados a serem produzidos
REUSE_ALV_EVENTS_GET:
Retorna a tabela de eventos possíveis para um tipo de lista
1. Importação:
Et_Events: A tabela de eventos é retornada com todos os eventos CALLBACK possíveis para o tipo de lista especificado (coluna 'NOME'). Para que os eventos sejam processados pelo Callback, o campo 'FORM' deve ser preenchido. Se o campo for inicializado, o evento será ignorado. A entrada pode ser lida na tabela de eventos, o campo 'FORM' preenchido e a entrada modificada usando constantes do pool de tipo SLIS.
2. Exportar:
I_list_type: 0 = lista simples REUSE_ALV_LIST_DISPLAY
1 = lista sequencial-hierárquica REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = lista de blocos simples REUSE_ALV_BLOCK_LIST_APPEND
3 = lista de blocos sequencial-hierárquica REUSE_ALV_BLOCK_LIST_APPLAY
REUSE_ALV_GRID_DISPLAY
Uma nova função da versão ABAP4.6, para exibir os resultados em grade ao invés de uma prévia.
Parâmetros: iguais a reuse_alv_list_display
Nota: A grade não pode lidar com grandes volumes. Funções como classificar, rolar para baixo consomem muitos recursos / tempo se o volume de dados a ser exibido for alto. Não há uma definição clara de que se a quantidade de dados for X vá para a lista ou grade, mas o desenvolvedor deve atender a uma chamada com base em sua experiência. Se não tiver certeza, a lista é a melhor opção
REUSE_ALV_COMMENTARY_WRITE
Isso é usado no evento de início da página para imprimir os cabeçalhos e outros comentários para a lista.
Parâmetros Importantes
- It_list_commentary: Tabela interna com cabeçalhos do tipo slis_t_listheader.
Esta tabela interna possui três campos:
- Tipo: 'H' - cabeçalho, 'S' - seleção, 'A' - ação
- Chave: somente quando typ for 'S'.
- Info: o texto a ser impresso
Relatório de Bloqueio
Parece um relatório simples, mas tem os recursos de classificação e filtragem apenas. Esse relatório é usado se você precisar exibir mais de um relatório na saída. Tecnicamente falando, se você tiver várias tabelas internas com dados a serem exibidos como blocos separados, então vamos para o relatório de bloco de ALV.
As funções importantes usadas para criar este relatório são:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
Este módulo de função é usado para definir o status gui padrão etc. Os parâmetros são semelhantes aos usados em reuse_alv_list_display ou reuse_alv_grid_display
REUSE_ALV_BLOCK_LIST_APPEND
Este módulo de função adiciona os dados ao bloco.
Parâmetros importantes
1. Exportar:
- is_layout: configurações de layout para bloco
- it_fieldcat: catálogo de campo
- I_tabname: nome da tabela interna com todos os eventos possíveis
2. Mesas:
- t_outtab: tabela interna com dados de saída.
REUSE_ALV_BLOCK_LIST_DISPLAY
Este módulo de função exibe a lista com dados anexados pela função acima.
Parâmetros: todos os parâmetros são opcionais.
Relatórios Hierárquicos
A exibição hierárquica é usada para exibir dados relacionados. Como pedido de venda e detalhes do item. Aqui, os detalhes do pedido de venda podem ser os dados do cabeçalho, enquanto os itens no pedido de venda podem ser os dados do item.
O módulo de função usado para isso é
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Exportar:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- It_fieldcat
- It_events
- I_tabname_header: Nome da tabela interna no programa que contém os dados de saída do nível hierárquico mais alto.
- I_tabname_item: nome da tabela interna do programa que contém os dados de saída do nível hierárquico mais baixo.
- Is_keyinfo: esta estrutura contém o cabeçalho e os nomes dos campos da tabela de itens que ligam as duas tabelas (chave compartilhada).
Mesas
- t_outtab_header: Tabela de cabeçalho com dados a serem produzidos
- t_outtab_item: nome da tabela interna do programa que contém os dados de saída do nível hierárquico mais baixo.
Todas as definições de tabelas internas, estruturas e constantes são declaradas em um pool de tipos chamado SLIS. Esta tabela interna pode ser preenchida automaticamente usando REUSE_ALV_FIELDCATALOG_MERGE '.
Variantes de exibição
- Variantes de exibição são usadas para definir as propriedades padrão de uma saída ALV, como critérios de classificação, critérios de filtragem, totalização e subtotalização, etc.
- As variantes de exibição podem ser específicas do usuário e padrão (as variantes padrão podem ser usadas por qualquer usuário)
- O tipo de variantes de exibição que podem ser salvas é controlado pelo parâmetro i_save que é passado nos módulos de função reuse_alv_list_display / reuse_alv_grid_display
- Você pode fornecer uma opção na tela de seleção para selecionar a variante de exibição a ser usada
Os módulos de função comuns relacionados à seleção / validação de variantes de exibição são
- Reuse_alv_variant_default_get
- Reuse_alv_variant_f4
- Reuse_alv_variant_existence
Isso é tudo para a programação ABAP-ALV!