Você está na página 1de 39

Treinamento ABAP

4-Relatórios Simples
Relatórios simples

 Principais transações utilizadas


 SE38 – Exibir/Editar/Ativar/Executar Programas
 SE80 – Object Navigator
 SE09 – Requests
 STMS – Transporte de Requests
Relatórios simples

 São criados com o tipo de objeto “Report”

 Criados e administrados através da transação SE38

 Mesmo na codificação procedural a seqüência de execução obedece a certos eventos

 Objeto “client-independent”

 Existem diversas outras formas (que inclusive podem ser combinadas) de construção
de relatórios
 Por exemplo: queries, report painter, report writer, etc.
Relatórios simples

 A codificação do Report sempre começa com a palavra


chave REPORT <nome_do_relatório> podendo ser
seguido de diversas opções.

 Exemplos de eventos importantes do REPORT


 start-of-selection
 end-of-selection
 top-of-page
 end-of-page

 Normalmente possui uma ou mais telas de seleção


(palavras chave “select-options” e “parameters”)
Relatórios simples

 Iniciando um relatório simples:

 Através da transação SE38 criar o relatório ZLAB99R01


 Onde 99 deve ser substituído pelo número convencionado em aula.

 Criar tela de seleção através de parâmetro conforme abaixo:


 Parameters: p_codigo type char4.

 Incluir o evento principal para execução do código e fazer com que imprima na tela conforme
abaixo:
 Start-of-selection.
 Write / p_codigo.

 Ativar (tecla de atalho CTRL + F3) o programa e executá-lo (tecla de atalho F8)
Relatórios simples

 Textos de seleção (e traduções)


 Deve-se definir textos para os campos da tela e sempre com
traduções pelo menos em inglês
 Os demais campos de texto utilizados também devem ser
traduzidos
Relatórios simples

 Variáveis

 Definidas através da palavra chave DATA

 Pode ser criada fazendo referência a elementos de dados, campos de tabelas transparentes,
estruturas, etc.

 Constantes

 Definidas através da palavra chave CONSTANTS

 Uso similar ao da variáveis porém seu valor não pode ser alterado em tempo de execução
Relatórios simples

 Comentários

 Com um asterisco (*) na primeira coluna da linha


 Com aspas (") no meio da linha (normalmente após o comando)

 Literais

 literais de texto entre aspas simples (‘ ’).


Relatórios simples

 Evento INITIALIZATION

 É executado antes que a tela de seleção seja exibida ao usuário

 Serve para inicializar variáveis e atribuir outros atributos iniciais


necessários, conforme a lógica do programa.
Relatórios simples

 Continuação do exercício.

 Criar a variável v_data tomando como base o elemento de dados


standard CHAR4.

 Alterar o código do evento start-of-selection para atribuir o valor digitado


na tela à variável v_codigo e imprimí-la na tela.

 Atibuir um valor inicial ao parâmetro de tela p_codigo através da opção


DEFAULT

 Inserir o evento INITIALIZATION e fazer com que limpe o conteúdo da


variável v_codigo.

 Ativar (CTRL + F3) e executar o programa (F8)


Relatórios simples

 Visualizando a lista de elementos do report


Relatórios simples

 Visualizando a lista de elementos do report


 Os elementos podem ser ativiados separadamente, para uma
ativação completa basta ativar através do nome do relatório na
tela abaixo.
Relatórios simples

 Eventos TOP-OF-PAGE e END-OF-PAGE

 Em ABAP, quando ocorre a exibição de dados em uma


lista primeiramente o código do evento TOP-OF-PAGE é
executado, a cada quebra de página, quando é acionado
também o código do evento END-OF-PAGE.

 A quantidade de linhas da listagem é definida no


parâmetro line-count (exemplo: line-count 60.) da
palavra chave REPORT

 Para que o rodapé seja impresso (código do evento


END-OF-PAGE) é necessário definir quantidade de
linhas também em line-count da seguinte forma, por
exemplo para 2 linhas de rodapéÇ
 .... line-count 60(2).
Relatórios simples

 Alguns campos de sistema ABAP muito utilizados em


relatórios (ver estrutura SYST)

 SY-DATUM => data atual


 SY-UZEIT => hora atual
 SY-UNAME => nome do usuário
 SY-PAGNO => número atual da página em listas
 SY-ULINE => linha contínua
Relatórios simples

 Continuação do exercício

 Alterar o relatório ZLAB99R01 para que contenha cabeçalho e


rodapé impressos em cada página

 Colocar no cabeçalho um título para o relatório centralizado,


Data,hora e usuário atual no canto direito.
Relatórios simples

 Tabelas internas

 São tabelas definidas nos programas ABAP e que são utilizados


para receber, em memória, conteúdos provenientes de leituras
como por exemplo leituras em tabelas transparentes.

 São definidas com a mesma palavra chave de variáveis: DATA


só que com as opções relacionadas a tabelas internas.

 Pode-se definir ou não header line para uma tabela interna.


Relatórios simples

 Tabelas internas

 Header line é um conceito muito importante em linguagem


ABAP pois é muito utilizada com as tabelas internas e facilita
bastante a forma de se trabalhar com registros de tabelas assim
que ele vão sendo processados.

 Recomendação: por questões de performance, ao definir


tabelas internas, definir uma categoria de dados primeiro
(palavra TYPES)
Relatórios simples

 Tabelas internas: exemplo

 TYPES: BEGIN OF type_teste,


codigo(4) type c,
descricao(60) type c,
END OF type_cteste.

 DATA: t_teste type table of type_teste with header line.


Relatórios simples

 Tabelas internas: armazenando informações em


memória

 Normalmente são feitas leituras em tabelas transparentes e o


resultado é armazenando em tabelas internas, o retorno da
leitura pode ser uma ou mais linhas ou pode ocorrer que nada
seja retornado, se a tabela transparente estiver vazia, por
exemplo.
Relatórios simples

 Leituras em tabelas transparentes

 São realizadas através da palavra chave SELECT, que aceita


diversas opções.

 O SELECT do ABAP é uma sentença OPEN SQL, o que


significa que estes comandos de leitura, codificados em ABAP,
são posteriormente ¨traduzidos¨ pelo gerenciador de banco de
dados para o comando SELECT real do banco de dados em
questão. Não é necessário passar MANDT na cláusula WHERE

 Obs.: é possível também executar sentenças chamadas de


Native SQL, estas sim devem obedecer à sintaxe estrita do
banco de dados que está sendo utilizado.
Relatórios simples

 Leituras em tabelas transparentes

 Para retornarmos apenas um registro de uma tabela


transparente e armazermos em uma work area, podemos fazer
isso utilizando o comando SELECT e basicamente de duas
formas, com dois tipos de opções:

 SELECT single
 Quando utilizamos SELECT single devemos sempre utilizar a
chave completa na cláusula WHERE

 SELECT ... Up to 1 rows.


 ENDSELECT
 Neste caso também retornamos apenas 1 registro porém podemos
executar ser usar a chave completa.
Relatórios simples

 Leituras em tabelas transparentes

 Exemplo para o exercício:


select single codigo
descricao
observacao
into T_ZLAB99T01
from ZLAB99T01
where codigo = p_codigo.

O código acima retorna um registro e armazena-o na header line


(utilizada aqui como work area) da tabela interna t_zlab99t01.
Obs.: Note que não foi necessário fechar com ENDSELECT no
exemplo por causa da opção single
Relatórios simples

 Continuação do exercício

 Criar rotina de leitura do conteúdo da tabela transparente


ZLAB99T01, utilizada em exercício anterior, e armazenar em
header line de tabela interna que deverá ser definida tendo o
mesmo formato da tabela transparente. Exibir os campos
código, descrição e observação na tela.
Relatórios simples

 Leituras em tabelas transparentes

 Outra forma de selecionar apenas um registro:


select codigo
descricao
observacao
up to 1 rows
into t_zlab99t01
from zlab99t01
where codigo between ‘0001’ and ‘9999’.
endselect.

Obs.: Note que foi necessário fechar com ENDSELECT no


exemplo por causa da opção up to 1 rows
Relatórios simples

 Leituras em tabelas transparentes

 Selecionando múltiplos registros:


select codigo
descricao
observacao
into table t_zlab99t01
from zlab99t01.

Neste caso não é necessário fechar com endselect e todos o


registros da tabela são retornados e armazenados na tabela
interna.

Obs.: Este é apenas um exemplo para o treinamento, não é


recomendado fazer seleções sem a cláusula where.
Relatórios simples

 Leituras em tabelas transparentes

 Logo após o uso do comando select é recomendado sempre


fazer uma verificação no campo de sistema ABAP sy-subrc para
direcionar a lógica seguinte no programa.

 Caso não utilizemos a chave completa da tabela transparent na


seleção, o RDBMS verifica qual é o índice mais adequado para
a seleção que estamos executando por questões de otimização.

 É possível definirmos outros índices (além do da chave primária,


que sempres existe) mesmo para tabelas transparentes
standard mas isto deve ser feito de maneira muito criteriosa pois
apesar de um novo índice otimizar leituras ele também onera
atualizações, inclusive eliminações de registros.
Relatórios simples

 Processamento de tabelas internas

 Ao armazenarmos conteúdos nas tabelas internas,


provenientes de seleções, costuma-se testar o sy-subrc e
em um exemplo bem simples, listar os registros / campos
individuais através do comando loop (que é finalizado com
endloop.

 Exemplo:
select codigo
descricao
observacao
into table t_ zlab99t01
from zlab99t01.
if sy-subrc = 0.
loop at t_ zlab99t01.
write:/5 t_ zlab99t01 -codigo,
15 t_ zlab99t01 -descricao(30),
50 t_ zlab99t01 -observacao(30).
endloop.
endif.
Relatórios simples

 Processamento de tabelas internas

 Podemos fazer a seleção e posterior processamento do


conteúdo da tabela interna também com a ajuda de ¨Select-
options¨ao invés de parâmetros de tela.

 Exemplo:
 Select-options: s_codigo for zlab99t01.

 Obs.: para que o código acima este correto é necessário que a


tabela zlab99t01 esteja definida com o comando TABLES no início
do programa. ( TABLES: zlab99t01. )
Relatórios simples

 Processamento de tabelas internas

 A seleção e consequente processamento da tabela interna,


em nosso exemplo, ficariam assim:

• select codigo
• descricao
• observacao
• into table t_zilab01
• from zilab01
• where codigo in s_codigo.
• if sy-subrc = 0.
• loop at t_zilab01.
• write:/5 t_zilab01-codigo,
• 15 t_zilab01-descricao(30),
• 50 t_zilab01-observacao(30).
• endloop.
• endif.
Relatórios simples

 Outras informações sobre select-options

 São uma forma standard e rápida de entrarmos com


múltiplos valores em telas de seleção, inclusive com critérios
complexos

 Basicamente permite, para um único campo de tela:


 valores individuais
 Intervalos
 Valores individuais que não devem ser selecionados
 Intervalos que não devem ser selecionados

 Quando precisamos entrar com uma lista de valores muito


grande podemos até mesmo fazer importação destes
valores usando um arquivo texto.
Relatórios simples

 Outras informações sobre select-options


 Importação de conteúdo
Relatórios simples

 Outras informações sobre select-options


 Importação de conteúdo
Relatórios simples

 Outras informações sobre select-options


 Importação de conteúdo
Relatórios simples

 Outras informações sobre select-options


 Importação de conteúdo (conteúdo do arquivo ¨codigos.txt¨
utilizado na importação)
Relatórios simples

 Exercício de Fixação

 Criar nova tabela ZLAB99T02 com campos identificador (chave)


(char), nome (char), idade (int), peso(int), altura (int) com visão
de atualização e alimentá-la com vários registros, depois
preparar Report (semelhante ao que foi estudado) ZLAB99R02
para solicitar o código na tela (múltiplos valores e que liste o que
for encontrado (listagem com cabeçalho e rodapé).
Relatórios simples

 Exercício de Fixação para trabalhar novamente o


conceito de SPA/GPA

 Criar dois programas simples, o primeiro, ZLAB99R03 deve


solicitar uma parâmetro da tela e na lógica de processamento
deve fazer o SPA, o segundo programa simples, o ZLAB99R04
deve conter um parâmetro na tela, do mesmo tipo do primeiro
só que recebendo o valor via GPA.
Relatórios simples

 Classes de mensagens

 Mantidas através da transação SE91


Relatórios simples

 Classes de mensagens

 Mantidas através da transação SE91


Relatórios simples

 Classes de mensagens

 São utilizadas no programas através da opção message-id da


palavra chave REPORT

 Exemplo: REPORT ZILAB01R04 message-id zilab.

 As instruções que emitem mensagem definem o tipo da


mensagem (exemplo: i,w,e) o número da mensagem dentro da
classe de mensagem e podem receber complementos de texto
que normalmente são passados usando-se elementos de texto.

 Exemplo: message i000 with text-001.

Você também pode gostar