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.

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
- Parâmetros Técnicos
- 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.
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.
- Oferece condições de verificação para ver se a entrada está correta, completa e plausível
- Ele contém verificações centrais de autorização para acesso ao banco de dados
- 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
