SAP Programação de relatórios ABAP

⚡ Resumo Inteligente

A programação de relatórios ABAP cria programas executáveis ​​que selecionam, processam e exibem grandes volumes de dados. SAP Esta página explica os elementos adicionais do cabeçalho do relatório, a tela de seleção, a sequência de eventos, os comandos de formatação, as listas interativas e os bancos de dados lógicos.

  • 📊 Objetivo principal: Um programa de relatórios lê dados de várias tabelas, processa-os e os apresenta como uma lista que pode ser formatada, baixada ou enviada por e-mail.
  • 🧾 Tipo de Programa: Cada relatório é um programa executável do tipo 1, vinculado a uma área de aplicação e controlado inteiramente por eventos.
  • 🏁 Adições ao cabeçalho: SEM CABEÇALHO DE PÁGINA PADRÃO, LINE-TAMANHO, LINE-COUNT e MESSAGE-ID pertencem à primeira instrução REPORT.
  • ⌨️ Tela de seleção: PARAMETERS aceita um único valor, e SELECT-OPTIONS aceita um intervalo ou um conjunto de valores.
  • ⏱️ Sequência de eventos: LOAD-OF-PROGRAM, INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION e END-OF-SELECTION são executados em uma ordem fixa.
  • 🖱️ Listas interativas: O comando HIDE armazena os valores dos campos da linha selecionada, e o comando HOTSPOT transforma um campo de lista em um elemento clicável para a lista secundária.
  • 🗄️ Bancos de dados lógicos: Criadas no SE36, elas substituem as instruções SELECT por um evento GET e adicionam verificações de autorização centralizadas.

SAP Programação de relatórios ABAP

O que é programação de relatórios ABAP?

SAPO ABAP suporta dois tipos de programas: programas de relatório e programas de diálogo. Os programas de relatório são usados ​​quando grandes quantidades de dados precisam ser exibidas.

Finalidade/Uso de Programas de Relatórios

  • São utilizadas quando os dados de várias tabelas precisam ser selecionados e processados ​​antes da apresentação.
  • Utilizado quando os relatórios exigem um formato especial.
  • Usado quando o relatório precisa ser baixado do SAP para uma planilha Excel para ser distribuída.
  • Usado quando o relatório precisa ser enviado para uma pessoa específica.

Pontos importantes a serem observados sobre o programa de relatórios

  • Os Programas de Relatório são sempre Programas Executáveis. O tipo de programa é sempre 1.
  • Cada programa de Relatório corresponde a um Tipo de Aplicação específico, ou seja, com Vendas e Distribuição, FI – CO, etc. Também pode ser Aplicação Cruzada, ou seja, tipo '*'.
  • A Programação de Relatórios é uma programação orientada a eventos.
  • A primeira linha de um programa de relatório é sempre Relatório .
  • Para suprimir o título da lista ou o nome do programa, a adição Nenhum título de página padrão é usado.
  • O tamanho da linha para um relatório específico pode ser definido usando a adição tamanho da linha .
  • A contagem de linhas para uma página específica pode ser definida usando a adição contagem de linhas n (n1). N é o número de linhas da página e N1 é o número de linhas reservadas para o rodapé da página.
  • Para exibir qualquer informação ou mensagem de erro, adicionamos uma classe de mensagem ao programa usando a adição: ID da mensagem . As classes de mensagens são mantidas no SE91.

Portanto, um programa de relatório ideal deve começar com:

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

Programa de Relatório vs. Programa de Diálogo

Ambos os tipos de programa são executados no mesmo sistema, porém resolvem problemas opostos. Um programa de relatório lê e exibe dados, enquanto um programa de diálogo permite que o usuário os mantenha por meio de telas.

Critérios Programa de Relatórios Programa de Diálogo
Tipo de programa Tipo 1, executável Tipo M, conjunto de módulos
Iniciado por Nome do programa ou código de transação Apenas um código de transação
Controle de fluxo Eventos como INICIALIZAÇÃO e INÍCIO DA SELEÇÃO Lógica de fluxo de tela com módulos PBO e PAI
Entrada do usuário Uma tela de seleção gerada Telas projetadas na Tela Painter
Uso típico Exibição e download de grandes volumes de dados Criação e alteração de dados empresariais

A tela de seleção é onde um relatório coleta suas informações de entrada, portanto, será descrita a seguir.

Tela de Seleção

A “tela de seleção” é a tela onde se especificam os valores de entrada para os quais o programa deve ser executado.

A tela de seleção normalmente é gerada a partir do

  1. Parâmetros Técnicos
  2. Selecione as opções

Sintaxe

Selection-screen begin of screen <screen #>
selection-screen begin of block <#>  with frame title <text>
.........
.........
selection-screen end of block <#>
selection-screen end of screen <screen #>

Parâmetros Técnicos

Os parâmetros ajudam a fazer a seleção dinâmica. Eles podem acomodar apenas um valor para um ciclo de execução do programa.

Sintaxe

Definindo parâmetros como um tipo de dados

Parameters p_id(30) type c.

Definir parâmetros como um campo de tabela.

Parameter p_id like <table name>-<field name>.

Os parâmetros podem ser caixas de seleção e também botões de opção.

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

Os parâmetros podem ser uma caixa de listagem.

Parameter p_id like <table name>-<field name> as listbox

Selecione as opções

Uma opção de seleção é usada para inserir um intervalo de valores ou um conjunto de valores em um programa

Sintaxe

select-options s_vbeln for vbak-vbeln.

Tela de Seleção

A captura de tela mostra os campos de entrada "baixo" e "alto" que uma opção de seleção gera, juntamente com o botão de seleção múltipla.

Você também pode definir uma opção de seleção como uma variável

select-options s_vbeln for vbak-vbeln no intervals no-extension

Após a coleta dos dados de entrada, o programa reage a uma sequência fixa de eventos.

Eventos em um programa de relatórios ABAP

Os programas de relatórios ABAP são programas orientados a eventos. Os diferentes eventos em um programa de relatório são:

Carregamento do programa

  • Aciona o evento associado em uma sessão interna após carregar um programa do tipo 1, M, F ou S.
  • Também executa o bloco de processamento associado uma vez e apenas uma vez para cada programa e sessão interna.
  • O bloco de processamento LOAD-OF-PROGRAM tem aproximadamente a mesma função para um Programa ABAP do tipo 1, M, F ou S como construtor possui para classes em Objetos ABAP

Inicialização.

  • Este evento é executado antes da exibição da tela de seleção.
  • Inicialização de todos os valores.
  • É possível atribuir valores diferentes dos valores propostos na tela de seleção.
  • Você pode preencher sua tela de seleção com alguns valores em tempo de execução.

Na tela de seleção.

  • O evento é processado quando a tela de seleção for processada (no final do PAI).
  • Validação e verificações dos valores inseridos acontecem aqui

Início da seleção.

  • Aqui o programa começa a selecionar valores das tabelas.

Fim da seleção.

  • Após todos os dados terem sido selecionados, este evento grava os dados na tela.

Eventos interativos

  • Usado para relatórios interativos. É usado para criar uma lista detalhada a partir de uma lista básica.

💡 Dica: Instruções escritas sem nenhuma palavra-chave de evento pertencem ao START-OF-SELECTION por padrão, e é por isso que um relatório ainda é executado mesmo quando o evento está ausente.

Exemplo: Um programa de relatório ABAP simples

O programa abaixo combina as adições, a tela de seleção e os eventos em um único relatório funcional. Ele lê os cabeçalhos dos pedidos de venda da tabela VBAK em busca dos números inseridos na tela de seleção e os grava como uma lista.

REPORT z_sales_order_list NO STANDARD PAGE HEADING
                          LINE-SIZE 80
                          LINE-COUNT 65(3)
                          MESSAGE-ID zsd.

TABLES: vbak.

DATA: lt_vbak TYPE STANDARD TABLE OF vbak,
      ls_vbak TYPE vbak.

* Selection screen
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
PARAMETERS: p_erdat LIKE vbak-erdat.

INITIALIZATION.
  p_erdat = sy-datum.

AT SELECTION-SCREEN.
  IF p_erdat > sy-datum.
    MESSAGE e001(zsd).          " Date must not lie in the future
  ENDIF.

START-OF-SELECTION.
  SELECT * FROM vbak
    INTO TABLE lt_vbak
    WHERE vbeln IN s_vbeln
      AND erdat LE p_erdat.

END-OF-SELECTION.
  LOOP AT lt_vbak INTO ls_vbak.
    WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr.
    HIDE ls_vbak-vbeln.
  ENDLOOP.

Três detalhes merecem destaque. INITIALIZATION preenche o parâmetro de data antes da tela de seleção aparecer. AT SELECTION-SCREEN valida a entrada e gera uma mensagem da classe ZSD. HIDE armazena o número de ordem de cada linha digitada, de modo que um clique duplo pode gerar uma lista secundária a partir dele, o que será abordado na próxima seção.

Formatando o relatório

ABAP permite que os relatórios sejam formatados como o usuário deseja. Por exemplo, “Linhas Alternativas” devem aparecer em cores diferentes e a linha “Totais” deve aparecer em Amarelo.

Sintaxe

Format Color n

Format Color n Intensified On

n pode corresponder a vários números

Observe que também existem outras adições junto com o formato

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

Programação de relatórios interativos

  • Utilizando a Programação Interativa, os usuários podem controlar ativamente a recuperação e a exibição de dados.
  • Utilizado para criar uma lista detalhada a partir de uma lista muito básica.
  • Os dados detalhados são escritos em uma lista secundária.
  • A lista secundária pode se sobrepor completamente à primeira tela ou pode exibi-la em uma nova tela
  • As listas secundárias podem ser interativas.
  • A primeira lista também pode chamar uma transação.
  • Existem diferentes eventos associados à programação interativa.

Alguns comandos usados ​​para programação interativa

hotspot

Se arrastarmos o mouse sobre os dados exibidos no relatório, o cursor mudará para uma mão com o dedo indicador estendido. Um hotspot pode ser alcançado usando a instrução FORMAT.

Syntax:      Format Hotspot On (Off).

Esconder

Este comando ajuda você a armazenar os nomes dos campos com base em qual deles será processado posteriormente para obter uma lista detalhada. É escrito diretamente após a instrução WRITE para um campo. Quando uma linha é selecionada, os valores são preenchidos automaticamente nas variáveis ​​para uso posterior.

Syntax:     Hide <field-name>.

Relatórios que leem muitas tabelas podem substituir suas instruções SELECT por um banco de dados lógico, descrito abaixo.

Bancos de Dados Lógicos

  • Em vez de usar consultas “Select”, você pode usar um banco de dados lógico para recuperar dados de um programa.
  • Bancos de dados lógicos são criados por transação SE36
  • O nome de um banco de dados lógico pode ter até 20 caracteres. Pode começar com um prefixo de namespace.
  • Os dados são selecionados por outro programa e pode-se acessá-los usando GET comando que coloca os dados na área de trabalho .

Vantagens de um banco de dados lógico em relação às consultas Select normais.

  1. Oferece condições de verificação para ver se a entrada está correta, completa e plausível
  2. Ele contém verificações centrais de autorização para acesso ao banco de dados
  3. Aprimoramentos como melhoria no desempenho aplicam-se imediatamente a todos os relatórios que usam banco de dados lógico.

Nota: Devido às complexidades envolvidas, bancos de dados lógicos não são utilizados na maioria dos casos

Perguntas Frequentes

PARAMETERS cria um campo de entrada que armazena um único valor. SELECT-OPTIONS cria uma tabela interna com os campos SIGN, OPTION, LOW e HIGH, permitindo assim a seleção de intervalos, exclusões e múltiplas seleções.

AT LINE-SELECTION reage a um clique duplo ou à tecla F2, e AT USER-COMMAND reage a um código de função do menu. Ambos constroem a lista secundária a partir dos valores armazenados por HIDE.

O menu de lista oferece as opções Listar, Salvar e Arquivo Local para um relatório clássico. Um programa também pode chamar o módulo de função GUI_DOWNLOAD, e uma lista ALV pode ser exportada para uma planilha sem qualquer codificação adicional.

Sim. Os assistentes de IA nas ferramentas de desenvolvimento ABAP geram o cabeçalho do relatório, as opções SELECT e os blocos de eventos a partir de uma descrição simples da lista necessária. O SELECT gerado ainda precisa de uma revisão de desempenho.

As ferramentas de IA resumem uma longa lista, destacam valores discrepantes e respondem a perguntas sobre os dados em linguagem simples. Incorporar essas análises geralmente significa migrar a lista clássica para uma saída baseada em ALV ou Fiori.

Resuma esta postagem com: