Você está na página 1de 99

p

ABAP
REPORT

ABAP

1.00 - 2

REPORT

Qual a funo do R/3?


oferecer um conjunto integrado compacto, de aplicativos empresariais de grande escala. O conjunto
padro de aplicativos integrados com cada sistema R/3 o seguinte:
PP
MM
SD
FI
CO
AM
PS
WF
IS
HR
PM
QM

(Production Planning - planejamento de produo)


(Materials Management - gerenciamento de materiais)
(Sales and Distribution - vendas e distribuio)
(Financial Accounting - contabilidade financeira)
(Controlling - controladoria)
(Fixed Assets Management - gerenciamento de ativos fixos)
(Project System - sistema de projeto)
(Workflow - fluxo de trabalho)
(Industry Solutions - solues de industria)
(Human Resources - recursos humanos)
(Plant Maintenance - manuteno das instalaes)
(Quality Management - gerenciamento da qualidade)

Estes aplicativos so chamados reas funcionais, reas de aplicativo ou, s vezes, mdulos funcionais
do R/3. Todos estes termos so sinnimos.
Tradicionalmente, as estruturas empresariais desenvolvem um conjunto de aplicativos de
processamento de dados avaliando produtos individuais e comprando esses produtos separadamente de
diversos fabricantes de software. Interfaces entre eles so ento necessrias. Por exemplo, o sistema de
gerenciamento de materiais precisar ser vinculado com as vendas e a distribuio e com os sistemas
financeiros, e o sistema de fluxo de trabalho precisar de uma alimentao a partir do sistema do HR.
Uma quantidade significativa de tempo e dinheiro de IS gasta na implementao e manuteno
dessas interfaces.
O R/3 vem predefinindo com os aplicativos empresariais bsicos necessrios maioria das grandes
corporaes. Esses aplicativos coexistem em um ambiente homogneo. Eles so projetados para
funcionar utilizando desde um nico banco de dados e um conjunto (muito grande) de tabelas. Os
tamanhos de banco de dados de produo atuais variam de 12 gigabytes a aproximadamente 3
terabytes. Cerca de 8.000 tabelas de banco de dados so distribudas com o produto R/3 padro.

ABAP

1.00 - 3

REPORT

Por que voc precisa saber isso?


importante para voc, como um programador de ABAP, saber por que esses aplicativos so
todos escritos inteiramente em ABAP. Esses so os aplicativos que voc deve entender para ser um
bom desenvolvedor de R/3.
Por exemplo, suponha que voc conhece ABAP e tenha recebido a incumbncia de escrever um
relatrio financeiro que resume dbitos e crditos de cada ano fiscal para cada fabricante na empresa.
Talvez voc saiba escrever cdigo em ABAP, mas voc saberia como comear a resolver essa tarefa?
Ou talvez seu trabalho exija um novo desenvolvimento em ABAP/4. Voc incumbido de
projetar um sistema que oferea informaes de estoque para potenciais compradores. Se voc no
conhece os sistemas de vendas e financeiro e de distribuio, voc no saber se est criando algo que
j existe em R/3. Tampouco voc poder saber se h tabelas do R/3 que j contm dados semelhantes
ou idnticos aos tipos de dados que voc quer recuperar. Esses aplicativos so altamente integrados.
Um desenvolvedor que assume a abordagem eu construirei minhas prprias tabelas e manterei minhas
prprias cpias dos dados, pode logo descobrir que seus dados so redundantes e devem ser
rotineiramente sincronizados com o resto do banco de dados. Ele construiu um aplicativo que no tira
proveito da natureza altamente integrada do ambiente R/3.
importante que o ABAP seja desenvolvido com a certeza de que dentro do R/3 no possua
nada que j no atenda as necessidades da rea funcional.

ABAP

1.00 - 4

REPORT

Logon
Atravs do logon o sistema identificar se o usurio esta autorizado a entrar no SAP no client que est
acessando, e atravs do seu UserId que identificado a que mdulos e transaes voc ter acesso.

Client onde se desenvolver a atividade

Barra de Ttulo
Barra de
Ferramentas
Standard

Campo command

Menu do Interface

Barra de ferramentas application

rea Screen

Barra de Status

ABAP

1.00 - 5

REPORT

Cores
Para que voc possa alterar as cores de seu ambiente tornando mais agradvel, utilize o recurso abaixo
demonstrado.

Clique nas
bolinhas
coloridas e
depois em
Options....

ABAP

1.00 - 6

REPORT

cones no SAP
Abaixo alguns exemplos, com descrio, dos cones que voc ter contato no SAP.

ABAP

1.00 - 7

REPORT

Dicionrio
O Dicionrio um utilitrio que define objetos de dados, nele voc pode criar e armazenar objetos
como tabelas, estruturas e visualizaes.
Caminho: Clique no menu a opo Ferramentas > ABAP Workbench > Dicitionary.

DICA: Se voc
digitar SE11 no
campo command a
tela de entrada do
ABAP Dictionary
ir surgir.

ABAP

1.00 - 8

REPORT

Tabelas
Dentro do R/3, uma table uma coleo de linhas onde em cada linha contm campos ou tambm
chamados de colunas. Em uma table so armazenados dados persistentes, se voc colocar dados em
uma table, eles continuaram ai mesmo depois de voc finalizar seu programa e ali ficaro at seu ou
outro programa altera-los ou exclui-los. O nome de uma table nico dentro de todo o sistema.
Utilizaremos a sflight para exemplificar uma table.

ABAP

1.00 - 9

REPORT

Data element
Uma table composta de campos, mas para criar um campo voc precisa de um data element
que contm os rtulos de campo e a documentao online (F1) para o campo. Um data element
pode ser utilizado em mais de um campo e em mais de uma table.
Para que voc veja os data element, clique duas vezes com o mouse sobre o campo Elem.
dados. Utilizaremos o campo Mandt para exemplificar.

ABAP

1.00 - 10

REPORT

Domnios
O domnio contm a caracterstica tcnica de uma campo, como o comprimento do campo e o tipo de
dado. Os domnios tambm so reutilizveis podendo ser usados em mais de um data element.
Para que voc veja os domnio, aproveitaremos o exemplo da pgina anterior, clique duas vezes com
o mouse sobre o campo Nome do domnio. Utilizaremos o campo Mandt para exemplificar.

ABAP

1.00 - 11

REPORT

Structure
Uma structure uma descrio de uma srie de campos agrupados sob um nome em comum. Ela
descreve os nomes de campo, sua sequncia e seus tipos e comprimentos de dados. Assim como a
table, uma structure no ter outra com seu nome e nem com o de uma table.

Uma estrutura pode agrupar dados de vrias tabelas, ela difere de uma tabela transparente pois s
matm os dados em tempo de execuo do programa.

ABAP

1.00 - 12

REPORT

Tabelas Internas
Tabelas internas so utilizadas para armazenar em tempo de execuo os dados necessrios para a
processamento do seu programa. Estes dados podem ser selecionados de diversas tabelas transparentes.
O nmero de linhas de uma tabela no fixo, a medida que a seleo feita voc pode acrescentar os
dados na sua tabela.
O acesso a tabela interna feito linha a linha utilizando uma work area como interface para transferir
dados para ou de uma tabela, esta work area utilizada para armazenar temporariamente uma entrada
da tabela de dados.
Quando lemos uma tabela interna o contedo de endereamento enviado para uma work area. Esta
work area tem a mesma estrutura da sua tabela interna.

ABAP

1.00 - 13

REPORT

Atravs deste conceito temos dois tipos de tabelas internas.


WITH HEADER LINE O sistema automaticamente cria uma work area idntica a linha da sua tabela
interna.
WITHOUT HEADER LINE O sistema no reconhece a work area, que deve ser definida no
programa.

ABAP

1.00 - 14

REPORT

Criar Programas
Caminho:

Clique no menu a opo Ferramentas > ABAP Workbench


Clique no boto Editor ABAP.
Chegando na tela do ABAP/4 Editor, deve-se entrar com o nome do programa que
ser criado.
Clique em criar.

DICA: Se voc
digitar SE38
no campo
command a tela
de entrada do
editor de ABAP
ir surgir.

Obs.: Todo o programa


que for criado deve
comear por Y ou Z

ABAP

1.00 - 15

REPORT

Nesta tela voc ir digitar os dados assinalados e clicar em salvar.


Abrir uma tela menor Modificar entrada catlogo objetos onde voc dever preencher o campo
Classe desevolvim. com a sua classe.

DICA: Se clicar
no boto Texto
fonte o editor de
ABAP ir abrir j
no programa
como
apresentado na
prxima pgina.

Descrio
Simples
Tipo de programa
rea de aplicao do programa

Obs.: Aps clicar em salvar na tela Modificar entrada catlogo objetos uma outra tela surgir
solicitando o nmero da request, caso voc j tenha criado uma request anteriormente, salve o seu
programa nela, caso contrrio crie uma nova.
Imp.: Uma request permite o transporte do seu programa de uma mquina de desenvolvimento para
uma outra de produo fisicamente diferente, pois na mesma mquina os programas so vstos em
todos os clients pois so independentes. Caso no haja necessidade de transporte pode-se criar como
LOCAL OBJECT.

ABAP

1.00 - 16

REPORT

Retorne para a tela inicial e tecle Modificar.


O editor ABAP ser aberto.
A primeira linha indicar o nome do programa e atravs desta linha que o sistema identificar e
executar o programa ou por execuo direta ou por um atalho (Ex.: Uma transao).

ABAP

1.00 - 17

REPORT

Tipos de Editor
Caminho:

No menu clique em Opes


Clique em Modo de edio...
Abrir a tela abaixo para que voc selecione qual editor ir trabalhar.

Caractersticas:
Modo PC com numerao de linhas (PC mode with line numbers)
Proporciona um estilo de processador de texto com comandos de cpia, recortar e colar mas com a
numerao de linhas includas. Este o modo default do SAP.
Modo PC com numerao de linhas (PC mode without line numbers)
Proporciona um estilo de processador de texto com comandos de cpia, recortar e colar.
Modo Comando (Command mode)
Proporciona a mesma funcionalidade associada a verso R/2 do SAP.

ABAP

1.00 - 18

REPORT

Breakpoint

Utilize o breakpoint quando for necessrio analisar o programa linha a linha e verificar o
acontecimento dos erros.
A funo Continue no debugger executa comandos at o prximo ponto de breakpoint.
Pode-se colocar um ponto de breakpoint na posio atual do cursor selecionando a funo Set
Breakpoint ou atravs de duplo clique. Linhas onde um ponto de break point for fixo esto marcadas
com um smbolo de STOP. Exiba tudo sobre os breakpoint atualmente fixados, selecionando Goto
Breakpoint. Pode-se apagar pontos de breakpoint atravs de duplo clique, aps posicionar o cursor em
um deles ou usando o menu de ponto de breakpoint.
Utilize a declarao BREAK-POINT no Editor ABAP.
Posicione o cursor e ento pode escolher Utilities Breakpoint Set.
Fixe pontos de breakpoint dependente em SY-SUBRC <> 0 atravs de Breakpoint Breakpoint at...
Comandos orientados de breakpoint: Voc pode fixar pontos de breakpoint atravs do ABAP para
palavras-chave, eventos e seqncia de dados escolhendo Breakpoint Breakpoint at...

ABAP

1.00 - 19

REPORT

Selecionar Tabelas
Deve-se declarar as tabelas, como demonstrado na linha 3, que sero utilizadas no programa.
Para leitura da base de dados (Tabelas) voc usa o comando select.
O select no performtico sem autorizaes de checks.
Leitura de todos os dados de uma simples entrada.
Leitura de dados especificando colunas.
Na linha 5, voc v que foi utilizado o comando select para recuperar os registros dos bancos de
dados, onde * indica que todos os campos na tabela devem ser recuperados.
Aps a figura abaixo sero apresentadas outras opes de select.

ABAP

1.00 - 20

REPORT

Sint.:
select single * from... ( seleciona um nico registro)
Este comando de select usado para um acesso simples na entrada de dados. Voc tem que
especificar a chave completa da tabela, para obteno de um nico registro, para usar a chave use
dentro do comando a condio where...
Caso voc no tenha especificado a chave completa, uma mensagem de Warning aparecera no
avisos do editor com erro de sintaxe (check sua performance), neste caso trar o primeiro registro
encontrado na tabela.
Para check use a varivel do sistema sy-subrc (retorna 0 se a leitura foi feita com sucesso,
retorna 4 se entrada no existe)
Este comando no tem endselect.
______________________________

select * from...
endselect. (faz um processo de loop sem restries )
Este tipo de comando faz uma leitura sem restries , seria um tipo de leitura seqncia de uma
tabela, esse tipo de processo no performtico
Este comando tem que ser finalizado com endselect.
Para check use a varivel do sistema sy-subrc ( retorna 0 se a leitura foi feita com sucesso,
retorna 4 se entrada no existe)
______________________________

select * from...
where...
endselect. (faz um processo de loop com restries )
Este tipo de comando faz a leitura com restries que esto nas condies do where, segue
tambm um processo de Loop tem uma performance muito maior que o anterior.
Este comando tem que ser finalizado com endselect.
Para check use a varivel do sistema sy-subrc ( retorna 0 se a leitura foi feita com sucesso,
retorna 4 se entrada no existe)
Operadores de comparao para comando where.
eq
ge
le
ne
gt
lt

=
>=
<=
<>
>
<

=>
=<
><

______________________________

ABAP

1.00 - 21

REPORT

select <a1> <a2> ... into (<f1>, <f2>...) from....


where...
endselect. (leitura de colunas simples)
Este comando seleciona somente os campos definidos <a1> <a2>...com a condio
imposta no where.
Na adio do into aps o select voc especifica a sua rea de trabalho no caso <f1>
<f2>... com cada campo preenchido no processo de loop.
Os argumentos <a1> <a2>... tem que conter o mesmo numero de elementos para <f1>
<f2>....
______________________________

select max (distance)


min (distance)
count(*) from <table> into (..., ..., ...)
where...(leitura de colunas agregando funes)
Este comando determina o numero total dos registros de uma tabela, retorna o valor mximo ,o
valor mnimo, a quantidade total, voc pode usar tambm as funes avg (mdia) e sum ( soma)
Todas estas funes s podem ser usadas para campos numricos.
Este comando no tem endselect.
Voc pode tambm a opo adicional distintc, esta funo agrega somente um registro o
primeiro que encontrar, s poder ser usado quando tiver diferentes valores nas colunas.
______________________________

select into corresponding fields of <wa>.(carrega os dados correspondente a


work area definida)
Este comando carrega os dados numa area de trabalho que tem que ser definida, os nomes dos
campos tem que ser iguais para que sejam transportado os dados.
Este comando no recomendado devido a sua baixa performance pois demanda tempo na
comparao dos campos.
Este comando no tem endselect.
______________________________

select into corresponding fields


correspondente a uma tabela interna definida)

of

table

<itab>.(carrega os dados

Este comando carrega os dados numa tabela interna que tem que ser definida, os nomes dos
campos tem que ser iguais para que sejam transportado os dados.
Este comando sobrescreve os registros.
Este comando no recomendado devido a sua baixa performance pois demanda tempo na
comparao dos campos.

ABAP

1.00 - 22

REPORT

Este comando no tem endselect.

______________________________
select into appendig corresponding fields of
dados correspondente a uma tabela interna definida)

table <itab>.(carrega os

Este comando acrescenta os dados numa tabela interna que tem que ser definida, os nomes dos
campos tem que ser iguais para que sejam transportado os dados.
Este comando no sobrescreve os registro e sim acrescenta novos registro
Este comando no tem endselect.
______________________________

select * from <table>


where <table field>
between <field1>
and <field2>. (leitura de dados com limite de extenso)
Este comando tem o mesmo processo de um select s que voc define um processo de range
onde <field1> e <field2> so os limites dos campos <table field>.
Este comando no tem endselect.
______________________________

select * from <table>


where <table field>
like...... (leitura de dados com pesquisa)
Este comando permite que voc faa uma pesquisa de campos definida no LIKE usando
caracteres especiais.
Caracteres especiais (coringas) _, %., voc s pode usar esta procura para campos
caracteres.

Sint.:
...
select * from mara where matnr like %ca.
...
______________________________

select * from <table>


where <table field>
in (...,...) (leitura de dados com lista)
Este comando usado na clausula where para comparao de lista de valores ou valores
nicos, os campos no so um intervalo e sim valores fixos

ABAP

1.00 - 23

REPORT

______________________________

ABAP

1.00 - 24

REPORT

select * from <table>


where <table field>
in <itab> (leitura de dados com operador de uma tabela )
Este comando usado na clausula where para comparao de lista dentro de uma tabela
interna que contenha valores fixos
A tabela interna deve sempre incluir os campos sign, option, low, high.
______________________________

select * from <table>


where <table field>
in <work area> ( leitura de dados com operador de uma work area)
Este comando usado na clausula where para comparao de um nico parmetro dentro de
uma work area. O contedo de um campo definido.
______________________________

select * from ( <table> )


where ( <itab> ) (leitura de dados dinmica)
Este comando permite que voc crie uma tabela interna com dados montados contendo uma
linha com 72 caracteres (seriam dados constantes nessa linha podendo conter parnteses aspas
campos em brancos enfim qualquer tipo de caracter. Ele retorna na condio where os dados
contidos na tabela interna
O nome das tabelas devem estar entre parnteses com branco separando os nomes. Este tipo de
comando no retorna erro de sintaxe.
______________________________

select * from (<table>)


into table <itab>
Este processo e bastante rpido para leitura de dados de tabela interna, s que no sobrescreve
nenhum registro, faz o processo de loop e busca cada registro na tabela interna um a um.
Este comando no tem endselect.
______________________________

select * from (<table>)


appending table <itab>
Este processo e bastante rpido para leitura de dados de tabela interna, s que acrescenta os
registros , faz o processo de loop e busca cada registro na tabela interna um a um.
Este comando no tem endselect.

ABAP

1.00 - 25

REPORT

______________________________
select * from (<table>)
for all entries in <itab>
where...
Este processo seleciona todos os registros para a tabela interna.
Se a tabela interna no contem dados no use a condio where.
Os campos da tabela transparente e da tabela interna tem que ser iguais.
Esta condio for all entries exclui a adio do comando order by....
______________________________

select * from (<table>)


order by <field1> <field2>
primary key (leitura de dados com seleo de ordenao)
Este comando permite que voc selecione os dados na ordem da chave primaria da tabela em
ordem ascendente ou os campos definidos (<field1>, <field2>), tambm em ordem
ascendente
Voc tambm pode acrescentar a ordem ascending ou descending, o default e a ordem
ascendente
Voc pode tambm fazer a ordem de uma tabela interna, neste caso deve conter a lista de
campos <f1>, <f2>....
As entradas da tabela interna tem ser do tipo caracter e no mximo com 72 caracteres.
______________________________

select <a1> <a2> ... into (<f1>, <f2>...)


from.<table>
group by...
Este comando permite um grupo de entrada do contedo de um campo.
Ele determina o mximo e o mnimo <a1> <a2> de um determinado campo.
______________________________

select * from (<table>)


bypassing buffer
Este comando permite acesso por um determinado perodo no usando a area de memria.
Voc tem que ter a certeza da leitura dos dados.
Geralmente esse comando usado para tabelas em tela em tempo de execuo.

ABAP

1.00 - 26

REPORT

DICA: Utilize o boto modelo na execuo do programa para gerar um select demonstrando que no
haver erro na ordem da seleo dos campos chaves.

ABAP

1.00 - 27

REPORT

Get
Se em uma base de dados lgica for necessrio a seleo de campos para uma tabela, voc pode
utilizar a declarao GET para especificar somente os campos necessrios para executar o processo.
Ex.:
report zexemplo.
tables: spfli, sflight, sbook.
get spfli fields carrid connid cityfrom cityto deptime arrtime.
write: spfli-carrid, spfli-connid, spfli-cityfrom, spfli-cityto,
spfli-deptime, spfli-arrtime.
get sflight fields fldate price currency.
write:/10 sflight-fldate, sflight-price, sflight-currency.
get sbook fields bookid customid custtype.
write:/20 sbook-bookid, sbook-customid, sbook-custtype.
No recomendado a utilizao deste comando por comprometer a performance.

ABAP

1.00 - 28

REPORT

Acessando a base de dados

ABAP
Program

ABAP Open SQL

EXEC SQL

IMPORT

...
SAP R/3 System

Utilize a declarao EXEC SQL quando for necessrio uma interveno direta por parte do usurio na
base do banco de dados.
Assim que a declarao EXEC SQL for processada em seu programa ABAP, ela torna o programa
ABAP inoperante at que a declarao ENDEXEC seja processada.
Sint.:
...
exec sql.
<sql statement>
endexec.
...

ABAP

1.00 - 29

REPORT

Exibir Dados write


Quando se faz necessrio a exibio na tela do resultado de um report voc utiliza o comando
write e todo o contedo que estiver aps a instruo at ser finalizado por . gerar um relatrio de
sada. Como no exemplo abaixo, o write ir fornecer uma listagem de dados que foram selecionados
dentro da tabela sflight produzindo um resultado como demonstrado abaixo.
Ex.:
report zexemplo.
tables: sbook.
select * from sbook
where carrid = 'lh'
and connid = '0400'.
write: / sbook-carrid,
10 sbook-connid,
20 sbook-fldate,
35 sbook-bookid,
50 sbook-luggweight,
60 sbook-wunit.
endselect.
if sy-subrc ne 0.
write: / 'no existem entradas para esta seleo.'.
endif.
skip 5.
uline.
skip.

ABAP

1.00 - 30

REPORT

Eventos
selection

inicialization,

start-of-

Um evento como uma sub-rotina em outras linguagens, trata-se de uma seo independente do
cdigo que executa uma tarefa e ento retorna para o ponto de chamada, contudo, ao contrrio das subrotinas, voc no codifica a chamada para um evento, ao contrrio, o sistema aciona o evento para
voc quando uma condio especifica surge. Um evento um tag (contador) que identifica uma seo
de cdigo, que associada com um evento comea com um nome de evento e termina quando o
prximo nome encontrado. Os nomes dos eventos so palavras reservadas, no se podendo criar
novos eventos. Os nomes dos eventos so:

inicialization
Quando voc executa um programa onde um critrio de seleo definido, o sistema normalmente
processa a tela primeiro. Se voc quer que um bloco de comandos seja executado antes da tela de
seleo utilize este comando.

Sint.:
Antes do comando:
report sapmztst.
parameters firstday like sy-datum default sy-datum.
tables spfli.

ABAP

1.00 - 31

REPORT

Aps o comando
report sapmztst.
parameters firstday like sy-datum default sy-datum.
tables spfli.
initialization.
city_fr = 'new york'.
city_to = 'frankfurt'.
carrid-sign
= 'i'.
carrid-option = 'eq'.
carrid-low
= 'aa'.
append carrid.
firstday+6(2) = '01'.

Sint.:
report zexemplo.
tables sbook.
select-options fl_date for sbook-fldate.
initialization.
move: 'I'
to fl_date-sign,
'EQ'
to fl_date-option,
sy-datum to fl_date-low.
append fl_date.
move: 'BT'
to fl_date-option,
'19960101' to fl_date-low,
'19960630' to fl_date-high.
append fl_date.

ABAP

1.00 - 32

REPORT

start-of-selection
Se a primeira instruo executvel em seu programa no for procedida por um nome de evento, o
sistema automaticamente insere start-of-selection antes da primeira linha de cdigo
executvel. Permite o processamento antes da execuo de leitura das tabelas transparentes atravs do
comando sempre acompanhado pelo comando end-of-selection.

ABAP

1.00 - 33

REPORT

Ex.:

Resultado:

ABAP

1.00 - 34

REPORT

Posicionamento de dados no relatrio uline, skip


Especificaes para o comando write.

uline
Escreve um trao no relatrio de sada ou tela de seleo

skip
Gera linhas em branco, para mais de uma linha em branco (Ex.: skip n), tambm podendo deslocarse para outro ponto de sada do relatrio (Ex.: skip n to line n).
Sint.:
...
WRITE: 'Text 1 ......'.
SKIP.
WRITE: 'Text 2 ......'.
...
Resultado:
Text 1 ......
Text 2 ......

/p(l)

/ pula uma linha, p (posio da coluna), l (deslocamento a esquerda).

Sint.:
...
write: /5 (30) field,
...

ABAP

1.00 - 35

REPORT

Comandos de sada do programa


stop
Este comando interrompe o processo de leitura e vai para o final do evento end of selection,
caso no tenha usado o evento ele interrompe o programa, tambm podendo ser utilizado para
interromper a execuo de um loop indo direto para o endloop.

exit
Termina o loop imediatamente aps a sua utilizao, e o processo somente continua no instruo
imediatamente aps o endloop. Normalmente utilizado quando se quer testar condies dentro do
loop.
Ex.:
report exemplo.
tables t100.
data sap_count type i.
select * from t100 where sprsl = sy-langu and
arbgb = 'ds'.
write / t100-text.
if t100-text cs 'sap'.
add 1 to sap_count.
if sap_count = 3.
exit.
endif.
endif.
endselect.

ABAP

1.00 - 36

REPORT

Novas pginas new page


Voc vai utiliz-lo para causar a sada do comando write para gerar uma nova pgina. A paginao do
sistema automtica, especificado no cabealho do relatrio.
Sint.:
...
new-page [no title with-title]
[no heading with-heading]
[line-count o n (m)]
[line-size k]
[print on print off]
...
n, m e k so variveis numricas ou literais.
no title desativa o ttulo padro nas pginas seguintes e with-title ativa.
no heading desativa o ttulo cabealho-padro de coluna nas pginas seguintes e withheading ativa.
line-count configura o nmero de linhas por pgina e o nmero de linhas reservado na
parte inferior de cada pgina para um rodap.
line-size configura o nmero de colunas de sada para as pginas seguintes.
print on faz com que a sada das instrues write sejam enviadas para o spool em vez da
lista, s permitindo a visualizao do relatrio atravs do spool e o print off faz o contrrio.
O comando new-page no aciona o evento end-of-page.
Ele pode ser utilizado em qualquer ponto do programa.

ABAP

1.00 - 37

REPORT

MOVE
Para mover uma valor de um campo para outro, utilize o comando move. Parte do contedo ou todo
ele pode ser movido. Ao invs de move possvel utilizar o operador se atribuio =.
Sint.:
...
data: number type i,
five
type i.
move 5 to five.
move five to number.
...

ABAP

1.00 - 38

REPORT

Do
O comando do correspondente a um mecanismo de loop bsico.
Sint.:
...
do.
write: / 'sy-index - begin:', (3) sy-index.
if sy-index = 10.
exit.
endif.
write: 'end:', (3) sy-index.
enddo.
...

ABAP

1.00 - 39

REPORT

Tabelas de
operacional

gerenciamento

do

sistema

Algumas variveis foram criadas para validar a execuo e entrada de dados no sistema, estas variveis
encontram-se na estrutura SYST.
Ex.:
sy-subrc
sy-datum
sy-uname
sy-langu
...

Valor de retorno de acordo com determinadas instrues ABAP/4


Sistema: Data do dia do logon
Sesso: Usurio SAP no SAP logon
Cdigo de idioma do logon no sistema SAP

ABAP

1.00 - 40

REPORT

Case
O comando case executa uma srie de comparaes onde somente as instrues aps a primeira
correspondncia when sero executadas. Sendo muito semelhante a if/elseif, sendo sua nica
diferena que em cada if/elseif voc pode especificar uma expresso complexa e em case s
pode especificar um nico valor a ser comparado e os valores so sempre comparados quanto a
igualdade. As strings de campo so tratadas como sendo variveis de tipo C
Sint.:
...
data: one
type i value 1,
three type p value 3.
four type p value 4.
do 4 times.
case sy-index.
when one.
write / 'that is'.
when 2.
write
'a'.
when three.
write 'good'.
write 'example'.
when others.
write '!'.
endcase.
enddo.
...

ABAP

1.00 - 41

REPORT

Concatenate
Une duas ou mais linhas ou campos, voc ter de informar onde os dados sero posicionados.
Sint.:
...
data: one(10)
two(3)
three(10)
name(20).
concatenate one
...

value 'John',
value 'F.',
value 'Kennedy',
two three into name separated by space.

Resultado:
John F. Kennedy

ABAP

1.00 - 42

REPORT

Condense
Utilize o comando condense para unir campos havendo a necessidade de desloc-los da posio em
que se encontram.
Ex.:
report zexemplo.
data name(30).
name(10)
= 'Dr.'.
name+10(10) = 'Michael'.
name+20(10) = 'Hofmann'.
condense name.
write name.
Resultado:
Dr. Michael Hofmann

ABAP

1.00 - 43

REPORT

Format color / Write color

Para diferenciar ou destacar uma ou mais linhas voc utiliza os comandos format color e write
color.
Sint.:
...
loop at i_tab.
if v_flag is initial.
format color 2 intensified on.
v_flag = 'X'.
else.
format color 2 intensified off.
clear v_flag.
endif.
write: /001 i_tab-tabname(15),
017 i_tab-fieldname(15),
034 i_tab-rollname(15),
051 i_tab-domname(15),
068 i_tab-datatype,
074 i_tab-leng no-zero,
082 i_tab-decimals no-zero,
090 i_tab-tabclass.
endloop.

ABAP

1.00 - 44

REPORT

...

ABAP

1.00 - 45

REPORT

Smbolos e cones
Voc tem a opo de criar smbolos e cones para os seus programas.
Um symbol uma figura bicolor simples de um smbolo comum como um circulo, quadrado, uma
pasta ou documento ocupando em sua maioria apenas um caracter na lista de sada, tendo alguns
ocupando dois caracteres; j um icon semelhante a um smbolo exceto por ser multicolorido,
chegando a ocupar at mais que dois caracteres.
Sint.:
...
INCLUDE <SYMBOL>.
WRITE: / SYM_RIGHT_HAND AS SYMBOL,
'Tip, Note',
SYM_LEFT_HAND AS SYMBOL.
...
...
INCLUDE <ICON>.
WRITE: / ICON_OKAY AS ICON,
'Text line'.
...

" output as symbol


" output as symbol

"output as icon

ABAP

1.00 - 46

REPORT

Ttulos dos relatrios text elements


Caminho:

Clique no menu a opo Ferramentas > ABAP Workbench


Clique no boto Editor ABAP.
Chegando na tela do ABAP/4 Editor, selecione a opo Text-elements e clique em
criar ou modificar
Voc pode definir os elementos de textos num relatrio.
Voc edita um titulo; define um cabealho; define colunas.
Sint.:
...
write va, text-001.
...
text-001 o elemento de texto que voc trabalhar.

ABAP

1.00 - 47

REPORT

Reservando linhas reserve


Voc, as vezes, pode necessitar escrever de maneira agrupada informaes relacionadas que se
distribuem por vrias linhas, para isso voc pode utilizar o comando reserve, que reservar linhas
em um relatrio para que no haja quebra indevida de informao.
Quando o comando reserve executado, o sistema verifica se h n* linhas disponveis na pgina
atual, se houver menos que n linhas sobrando na pgina atual, uma quebra de pgina ocorrer
acionando o end-of-page (se existir), seguido pelo comando top-of-page (se existir) fazendo a
instruo write comear na parte superior da nova pgina. Se pelo menos n linhas no estiverem
disponveis quando a instruo reserve for executada, o cdigo no far nada.
*

n um literal numrico e varivel.

Sint.:
...
select * from <table>.
reserve 3 lines.
write: / <table-c1>, <table-c2>,
/ <table-c3>, <table-c4>, <table-c5>,
/ <table-c6>.
skip.
endselect.
top-of-page.
write / Relatrio.
uline.
...
<table> uma tabela.
<table-cn> so os campos da tabela.

Resultado:
Relatrio
---------------------------------------------------------------------11111
So Paulo
Rua So Paulo, 9999
011-999-9999
11112
Rio Grande do Sul
Rua Porto Alegre, 9999
041-999-9999

ABAP

1.00 - 48

REPORT

Ex.:

ABAP

1.00 - 49

REPORT

Formato de pginas
Voc pode usar parmetros para controlar o tamanho da pgina do relatrio, para isso voc pode
utilizar os seguintes comandos:

line-size
line-count

Define a largura da pgina


Define o nmero de linhas por pgina.

Sint.:
report zteste line-size 132 line-count 15.
tables...
...

ABAP

1.00 - 50

REPORT

Incluindo dados append


Para adicionar uma nica linha em uma tabela interna, voc pode utilizar o comando append ele
copia uma nica linha de qualquer rea de trabalho e a coloca no corpo ao final da linhas existentes,
podendo ser a linha de cabealho ou qualquer outra string de campo com a mesma estrutura de uma
linha no corpo.
Sint.:
Append wa to it.
wa o nome de uma rea de trabalho
it o nome de tabela interna.

ABAP

1.00 - 51

REPORT

Agrupando dados collect


Armazena os dados somando os campos numricos de uma tabela interna, assegurando que no haver
duplicidade de registros. Quando o collect for executado, o sistema formar uma chave a partir dos
campos de chave padro da rea de trabalho, o sistema pesquisar o corpo da tabela interna quanto
uma linha com uma mesma chave daquela na rea de trabalho.

ABAP

1.00 - 52

REPORT

Classificar os dados sort


Para classificar o contedo de uma tabela interna voc pode utilizar o comando sort, as linhas podem
ser classificadas por uma ou mais colunas em ordem ascendente ou descendente, sendo que a prpria
sequncia de classificao pode ser alterada.
Ex.:
report zexemplo.
data: begin of person occurs 5,
name(10)
type c,
age
type i,
country(3) type c,
end of person.
person-name
= 'Muller'. person-age = 22.
person-country = 'USA'.
append person.
person-name
= 'Moller'. person-age = 25.
person-country = 'FRG'.
append person.
person-name
= 'Mller'. person-age = 22.
person-country = 'USA'.
append person.
person-name
= 'Miller'. person-age = 23.
person-country = 'USA'.
append person.
sort person.
Resultado:
Miller
Moller
Muller
Mller

23
25
22
22

USA
FRG
USA
USA

ABAP

1.00 - 53

REPORT

Ler os dados loop at


Para ler algumas ou todas as linhas de uma tabela interna, voc pode utilizar a instruo loop at, ela
l o contedo da tabela interna, colocando as linhas do contedo, uma por vez, na rea de trabalho. O
loop termina automaticamente quando a ltima linha lida e a instruo aps endloop executada.
Sint.:
...
loop at itab into struc.
write: / struc-name, struc-blnce.
endloop.
...

...
loop at itab into struc where blnce <> 0.
write: struc-name, struc-blnce.
endloop.
...

ABAP

1.00 - 54

REPORT

Controle de quebras
at first, at last
Voc pode utilizar estes comandos para executar um trecho entre a primeira e a ltima passagem do
loop por uma tabela interna.
Obs.: Todos estes comandos devem ser finalizados com endat.
Sist.:
...
loop at itab.
...
at first.
...
endat.
...
at last.
...
endat.
...
endloop.
...

at new, at end of
Utilize estes comandos para detectar uma alterao em uma coluna de uma passagem de loop para a
seguinte.
Obs.: Todos estes comandos devem ser finalizados com endat.
Sist.:
...
sort by c.
loop at itab.
...
at new c.
...
endat.
...
at end of c.
...
endat.
...
endloop.
...

ABAP

1.00 - 55

REPORT

ABAP

1.00 - 56

REPORT

Seleo Simples parameters


Este comando quando executado em um programa gera um campo de entrada de dados numa tela de
seleo antes do programa realmente em si ser executado, esta tela onde voc digitar a informao
que ser a chave para a seleo dos dados do seu programa.
Sint.:
parameters p1 [(1)] [type t] [decimals d]...
p1 o nome do parmetro.
1 a especificao interna de comprimento.
t o tipo de dado
d o nmero de espaos decimais (utilizado apenas como tipo p).
Ex.:
report zexemplo
parameters aircom like spfli-carrid.
Resultado:

ABAP

1.00 - 57

REPORT

Seleo com um intervalo select-option


Semelhante ao comando parameters, o comando select-options cria critrios de seleo para
um campo do banco de dados, a diferena que select-options exibe dois campos para entrada
de dados com um intervalo entre eles, campo to e campo from, podendo ser restringido a um s campo
com no-intervals na sintaxe select-options.
Ex.:
report zexemplo.
tables sbook.
select-options fl_date for sbook-fldate.
initialization.
move: 'I'
to fl_date-sign,
'EQ'
to fl_date-option,
sy-datum to fl_date-low.
append fl_date.
move: 'BT'
to fl_date-option,
'19960101' to fl_date-low,
'19960630' to fl_date-high.
append fl_date.
Resultado:

ABAP

1.00 - 58

REPORT

Seleo Pr-Definida checkbox


Os paramentos podem ser criados como campos de dados que contenham apenas um valor de entrada e
tambm podem ser criados como caixas de seleo. Quando os parameters assumem a forma das
caixas de se1eo, eles so declarados como tipo C e dessa forma armazenam o valor de X quando
verificados e da tecla Espao quando no verificados. Uma boa utilizao do parmetro checkbox
solicitar ao usurio para indicar se ele quer que certos componentes de um relat6rio sejam exibidos.

SeIeo em um grupo radiobutton


Assim como o checkbox, o radiobutton est selecionado ou no, mas somente operam em um ou mais
grupos, sendo que apenas um nico do grupo pode estar selecionado no momento da execuo do
programa.
Sint.:

...
selection-screen begin of block rad_blk with frame title text-OOO.
parameters: rad_exl radiobutton group one,
rad_ex2 radiobutton group one,
rad_exl radiobutton group one,
selection-screen end of block rad-blk.
...

ABAP

1.00 - 59

REPORT

No exemplo abaixo estaremos demonstrando parameters, checkbox e radiobutton.


Ex.:
report zexemplo.
parameters: p1(15) type c,
p2 like p1 obligatory lower case,
p3 like sy-datum default sy-datum,
cb1 as checkbox,
cb2 as checkbox,
rb1 radiobutton group g1 default X,
rb2 radiobutton group g1,
rb3 radiobutton group g1.
write:/ 'You entered:',
/ p1 = , p1,
/ p2 = , p2,
/ p3 = , p3,
/ cb1= , cb1,
/ cb2= , cb2,
/ rb1= , rb1,
/ rb2= , rb2,
/ rbl= , rb3.
Resultado:

ABAP

1.00 - 60

REPORT

Variantes
Quando voc entra com os mesmos dados constantemente voc pode salvar estes dados em uma
variante.
Para que se salve os dados, voc deve estar na tela onde eles sero preenchidos e clique no cone de
salvar, de um nome para sua variante. Preencha a tela como do exemplo abaixo.

ABAP

1.00 - 61

REPORT

Expandir linhas do relatrio at


selection

line-

Um programa de relatrio consiste de uma simples lista de informaes, isto significa que quando o
relatrio executado os dados esto disponibilizados de acordo com o que o lhe foi solicitado. Estes
relatrios podem se tornar extensos, sendo que muitas vezes seu foco distorcido mediante tantas
informaes. Para estas situaes utilizamos o recurso de listas secundrias.
Este tipo de relatrio no pode ser executado em background, a atuao do usurio direta.
Quando houver necessidade de informaes adicionais, o usurio interage durante a execuo.
Relatrios Interativos permitem voce utilizar listas secundrias, outros relatrios e transaes passando
dados entre eles atravs do comando HIDE.

Eventos de controle de um Relatrio Interativo:

At line-selection -

Ocorre aps o usurio clicar duas vezes sobre uma linha do relatrio.

At PF <nn>

Ocorre aps o usurio pressionar uma tecla de funo.

Exemplos: Help - F1 / Cancel - F13 / Exit - F15

At user-command -

Ocorre aps o usurio clicar um boto definido na tela.

ABAP

1.00 - 62

REPORT

Para o cabealho da lista secundria utilize o comando - Top-of-page during line-selection

Abaixo relacionamos algumas variveis do sistema que ajudam nos controles das listas secundrias.

ABAP

1.00 - 63

REPORT

Gui interface / Gui status / Set pf-status / Set


titlebar / At user comaand
gui interface
Esta ferramenta nos permite montar um Menu Painter onde voc define funes como no Windows,
tratada como interface com o usurio.
Title Bar Titulo do Menu Painter
Menu Bar Menu que sera criado
Standard ToolBar Onde voc define cones
Aplication ToolBar Botoes novos.
gui status
a definio do tipo funes de um Menu que sero ativados ou desativados:
Tipos de Status
Screnn
Dialog Box
List
List in Dialog Box
set pf-status
um comando para uso da determinao da GUI para cada lista criada. Voc se refere a um status e
tem que definir o Menu Painter. Para uma lista bsica voc pode escolher o sua GUI com status tipo
LIST
Na realidade um nome com mximo de 8 caracteres, para acionar a sua GUI
set titlebar
Este comando e para determinao do ttulo da sua GUI.
at user-comand
Este comando que vai controlar a ao do usurio aps definida a sua GUI.

ABAP

1.00 - 64

REPORT

As figuras abaixo demonstram como criar funes em uma tela:


Entre na SE38 e informe as tabelas com as quais ir trabalhar, salve e saia.

Entre na opo Menu Painter para habilitar as funes.


Preencha as informaes conforme modelo abaixo.

ABAP

1.00 - 65

REPORT

Siga as recomendaes que esto com * para definir as funes. Observe que existem o PBI (Process
after Input) e o PBO (Process before output).

ABAP

1.00 - 66

REPORT

Siga como abaixo.

Siga as recomendaes que esto com * ou aps .

ABAP

1.00 - 67

REPORT

Siga as recomendaes que esto com * ou aps .

Esta funcionalidade permite que voc crie cones e funes. Ex.: Bot1 e Bot2.

ABAP

1.00 - 68

REPORT

Est opo deve ser utilizada para criar o ttulo.

ABAP

1.00 - 69

REPORT

Listas secundarias com janelas (Comando


Window)
Este comando voc especifica as coordenadas de uma janela. A seqncia inicio da coluna e nmero
da linha., finaliza fim da coluna e fim da linha. Automaticamente crida uma janela, ou voc pode
escolher list in dialog box de uma GUI, onde voc cria titulo, botes dentro desta janela.
Ex.: window starting at c1 l1
ending at c2 l2
Para gerar um ttulo para window use o adio no comando (with frame title...).

ABAP

1.00 - 70

REPORT

Componentes de ligao
Dentro do programa de ABAP voc pode chamar outros programas de report ou transao atravs dos
comandos call e submit.

Chamando outro relatrio submit


Este comando utilizado quando for necessrio dentro de um programa voc chamar e processar outro
programa. Voc pode impor condies para que o submit ocorra, tambm pode declarar o nome do
programa que vai ser executado.

Nome da tabela selecionada ou


campo
eq, ne, cp, np, ge, lt, le, gt
Nome do campo ou constante

Nome do campo ou constante


Tabelas internas declaradas
usando GANGES
Nome da variante selecionada

Tabela interna com strutcure


RSPARAMS

ABAP

1.00 - 71

REPORT

Retorno ao relatrio submit and return


Este comando semelhante ao anterior, sendo sua diferena a opo de retornar ao programa principal
aps ser processado o programa que foi chamado por submit.
Sint.:
...
submit report01
via selection-screen
using selection-set 'variant1'
using selection-sets of program 'report00'
and return.
...

ABAP

1.00 - 72

REPORT

Transferncia de dados export / import


Estes comandos podem ser usados para importar ou exportar dados entre dois programas que fazem
parte de uma seqncia de chamada.
No esquecer que voc tem que ter um submit no programa que vai exportar os dados.
Voc pode utilizar o parmetro id que ajudar a gerenciar a memria evitando que no futuro tenha
problemas com o grande volume de memria ocupada por esta operao.
Sint.:
EXPORT <datacluster> to memory.
IMPORT <datacluster> to memory.
Os parmetros to e from so opcionais.
Ex.:
report exemplo.
tables indx.
data: indxkey like indx-srtfd value 'keyvalue',
f1(4), f2 type p,
begin of itab3 occurs 2,
cont(4),
end of itab3.
indx-aedat = sy-datum.
indx-usera = sy-uname.
* export data.
export f1 f2 itab3 to
database indx(st) id indxkey.

report exemplo.
tables indx.
data: indxkey like indx-srtfd,
f1(4), f2 type p,
begin of tab3 occurs 10,
cont(4),
end of tab3.
indxkey = 'indxkey'.
import f1 f2 tab3 from database indx(st) id indxkey.

ABAP

1.00 - 73

REPORT

Constants
Como o nome j diz uma constante, sendo que quase idntica a uma varivel, exceto quanto ao fato
de que seu valor no poder ser alterado. A instruo constants semelhante instruo data;
entretanto, a adio do comando value necessrio. O comando constants pode ser usado
quando for incluir um literal vrias vezes no mesmo programa definindo um valor igual ao da literal e
utilizar a constante no corpo do programa e quando for necessrio alterar o valor de sua literal basta
apenas alterar o valor de sua constante.
Sint.:
constants co1[(l)] [type t] [decimals d] value 'zaza'.
co1 o nome da constante
(l) a especficao interna de comprimento.
t o tipo de dado.
d o nmero de casas decimais (utilizadas apenas com o tipo p).
'zaza' um literal que fornece o valor da constante.
Ex.:
...
constants char1 value 'x'.
...
constants int
type i value 99.
...
constants: begin of const_rec,
c(2) type i value 'xx',
n(2) type n value '12',
x
type x value 'ff',
i
type i value 99,
p
type p value 99,
f
type f value '9.99e9',
d
type d value '19950101',
t
type t value '235959',
end of const_rec.
...

ABAP

1.00 - 74

REPORT

Types
A instruo types utilizada para definir seus prprios tipos de dados e orientar-se nos tipos j
existentes.
Sint.:
types tp1(c) type t decimals d.
types tp1 like g1.
tp1 o nome do tipo.
g1 o nome de uma varivel previamente definida no programa ou o nome de um campo que
pertence a uma tabela ou estrutura no Data Dictionary.
(d) a especficao interna de comprimento.
t o tipo de dado.
d o nmero de casas decimais ( utilizadas apenas com o tipo p).
Ex.:
report zexemplo.
types wa(2) type c.
data: va1 type wa value 'FOME',
va2 type wa value 'SEDE'.
write va1, va2.
Resultado:
FOME SEDE
Tipos de Types:
Tipo
C
N
D
T
X
I
P
F

Descrio
Texto (Caracter)
Texto Numrico
Data (YYYYMMDD)
Hora (HHMMSS)
Hexadecimal
Whole number (integer)
Packed number
Floating point number

Tamanho
1
1
8
6
1
4
8
8

Valor Inicial
Space
'00...0'
'00000000'
'000000'
X'00'
0
0
'0.0'

ABAP

1.00 - 75

REPORT

Types Estruturados
quando um tipo definido pelo usurio pode ser baseado na definio de uma string de campo,
utilizado para reduzir a redundncia e tornar a manuteno mais fcil.
exemplo:
report zexemplo.
types: begin of address,
street(26),
city(15),
postal_code(9),
end of address.
data: customer_addr type address,
vendor_addr
type address.
customer_addr-street = 'zazzaza'.
write: / customer_addr-street.

ABAP

1.00 - 76

REPORT

Clear
O comando clear configura o valor de uma varivel ou string de campo como zero. Se o dado do
tipo c, o valor , por sua vez, ser configurado como espaos em branco.
Sint.:
clear c1 [with c2 : with 'A': with null]
c1 e c2 so nomes de string de campo ou variveis.
'A' um literal de qualquer comprimento.
Ex.:
...
DATA: TEXT(10)
VALUE 'Hello',
NUMBER TYPE I VALUE 12345,
ROW(10) TYPE N VALUE '1234567890',
BEGIN OF PLAYER,
NAME(10)
VALUE 'John',
TEL(8) TYPE N VALUE '08154711',
MONEY TYPE P VALUE 30000,
END
OF PLAYER.
...
CLEAR: TEXT, NUMBER, PLAYER.
...

ABAP

1.00 - 77

REPORT

Free
Utilize o comando free para excluir todas as linhas de uma tabela interna e liberar a memria
associada. Trabalha da mesma forma que o comando clear.
Sint.:
free itab.
itab uma tabela interna com ou sem uma linha de cabealho.
todas as linhas so excludas e toda a memria utilizada pelo corpo da tabela interna liberada.
a linha de cabealho, se existir, permanecer inalterada.
utilize free quando terminar de utilizar uma itab.
Ex.:
data: begin of itab occurs 3,
t1 like sy-index,
end of itab.
do 3 times.
itab-t1 = sy-index.
append itab.
enddo.
loop at itab.
write itab-t1.
endloop.
free itab.
if itab[] is initial.
write: / 'no existe indicao na itab aps instruo free'.
endif.
Resultado:
1
2
3
no existe indicao na itab aps instruo free

ABAP

1.00 - 78

REPORT

Refresh
Ele exclui todas as linhas de uma tabela interna, mas deixa a memria alocada, voc utiliza quando
quiser preencher a tabela novamente. Se voc necessita utilizar a tabela imediatamente aps limp-la, o
comando refresh mais eficiente do que free j que impede alocaes desnecessrias de
memria.
Sint.:
refresh itab.
itab uma tabela interna com ou sem uma linha de cabealho.
Todas as linhas so excludas. Toda a memria utilizada pelo corpo da tabela interna permanece
alocada.
A linha de cabealho, se existir, permanecer inalterada

Ex.:
data: begin of itab occurs 3,
t1 like sy-index,
end of itab,
v like sy-index.
do 3 times.
v = sy-index.
do 3 times.
itab-t1 = v * sy-index.
append itab.
enddo.
write: / ''.
loop at itab.
write itab-t1.
endloop.
refresh itab.
enddo.
Resultado:
1
2
3

2
4
6

3
6
9

ABAP

1.00 - 79

REPORT

Executando Clculos
compute
Instruo utilizada com mais freqncia para executar clculos.
Sint.:
compute va3 = va1 op va2
va3 a varivel de recebimento do resultado do clculo.
va1 e va2 so os operandos.
op um operador matemtico.
Ex.:
...
va3 = va2 + va3.
va1 = ( va2 + va3 ) * va4
...
Quando for necessrio trabalhar com parnteses utilize um espao, ( , ), antes e depois do valor
dentro do parnteses.

add ou add-corresponding
O comando add utilizado para adicionar um nmero a outro, com add-corresponding as
strings de campo com os dados que tm o mesmo nome podem ser adicionadas juntamente.
Sint.:
...
add va1 to va2.
add-corresponding st1 to st2
...

ABAP

1.00 - 80

REPORT

Assim como demonstrado em add (funo de adicionar) abaixo demonstraremos subtrair, multiplicar
e dividir. As instrues abaixo operam de forma semelhante a add.
subtract ou subtract-corresponding
Sint.
subtract va1 from va2.
subtract-corresponding st1 from st2.

multiply ou multiply-corresponding
Sint.:
multiply va1 by va2.
multiply-corresponding st1 by st2.

divide ou divide-corresponding
Sint.:
divide va1 by va2.
divide-corresponding st1 by st2.

ABAP

1.00 - 81

REPORT

Check
Assume a condio de IF mas com menos complexidade, com a mesma eficincia e tambm podendo
ser codificada dentro de um loop, passa o controle imediatamente instruo de terminao do loop e
desviando das instrues intermedirias. Aceita uma expresso lgica. Se a expresso for verdadeira,
no far nada. Se for falsa, pular para o final do loop.
Sint.:
...
select * from mara where matnr = 1.
check sy-subrc = 0.
...
Ex.:
report zexemplo.
tables: spfli,
sflight.
...
select-options:
sf_price for sflight-price,
sp_carr
for spfli-carrid,
sp_from
for spfli-cityfrom no database selection,
sp_dept
for spfli-deptime.
...
get sflight.
check select-options.
...

ABAP

1.00 - 82

REPORT

Read Table
utilizado para ler e localizar uma nica linha que corresponde aos critrios especficos e a coloca em
uma rea de trabalho. O comando read table s pode ser utilizado para a leitura de tabelas
internas, no funcionando com banco de dados.
Ex.:
report zexemplo.
data: begin of ti occurs 3,
va1(2) type n,
va2
type i,
end of ti,
va3 like ti.
ti-va1 = '5'. ti-va2 = 2. append ti.
ti-va1 = '10'. ti-va2 = 5. append ti.
read table ti index 2.
write: / 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ ti-va1, ti-va2.
Resultado:
sy-subrc =
sy-tabix =
10

0
2
5

ABAP

1.00 - 83

REPORT

Insert
Voc pode utiliz-lo para inserir uma nica linha em uma tabela interna.
Sint.:
...
insert [wa into] itab [index n]
...
wa uma rea de trabalho com a mesma estrutura de uma linha de tabela interna itab.
n uma constante, literal ou varivel numrica.
se wa for especificado, o contedo dela ser inserido em itab. wa dever ter a mesma
estrutura que itab.
se wa no for especificado, o contedo da linha de cabealho ser inserido em itab. Se itab
no tiver uma linha de cabealho, wa dever ser especificado.
se index for especificado, a nova linha ser inserida antes da linha n. A linha n se tornar
ento a linha n + 1.
a instruo insert pode ser utilizada dentro ou fora de loop at itab. Se utilizada fora, a
adio index dever ser especificada. Se utilizada dentro, index ser opcional. Se a adio
no for especficada, a linha atual ser assumida.
exemplo:
data: begin of itab occurs 5,
fa1 like sy-index,
end of itab.
do 5 times.
itab-fa1 = sy-index.
append itab.
enddo.
itab-fa1 = -99.
insert itab index 3.
loop at itab.
write / itab-fa1.
endloop.
loop at itab where fa1 >= 4.
itab-fa1 = -88.
insert itab.
endloop.
skip.
loop at itab.
write / itab-fa1.
endloop.

ABAP

1.00 - 84

REPORT

Resultado:
1
2
993
4
5
1
2
993
884
885

ABAP

1.00 - 85

REPORT

Modify
Serve para modificar o contedo de uma ou mais linhas de uma tabela interna
Sint.:
modify itab [from wa] [index n] [transporting c1 c2 ... [where exp]]
itab o nome de uma tabela interna com ou sem uma linha de cabealho.
wa uma rea de trabalho com a mesma estrutura de uma linha no corpo de itab.
v uma constante, varivel ou literal numrica.
c1 e cp2 so componentes de itab.
el uma expresso lgica envolvendo componentes de itab.
obs.:
se from wa for especificada, a linha ser sobrescrita com o contedo de wa.
se from wa no for especificada, a linha ser sobrescrita com o contedo da linha de cabealho.
se index n for especificada, n identificar o nmero da linha que foi sobrescrita.
modify itab pode ser especificada dentro ou fora de loop at itab. Se especificada fora,
index n dever ser especificado. Quando especificada dentro, index n ser opcional. Se no for
especificada, a linha atual ser modificada.
transporting especifica quais componentes devem ser sobrescritos e o restante permanecer
inalterado. Sem ela, todos eles sero sobrescritos.
usar a condio where depois de transporting far com que os componentes especificados
sejam sobrescritos em todas as linhas que satisfazem a condio where. O lado esquerdo de cada
parte de exp deve especificar um componente de itab. O mesmo componente pode ser
especificado depois de transporting e em exp.
No poder utilizar modify itab com where:
- dentro do loop at itab
- com a adio index

ABAP

1.00 - 86

REPORT

Ex.:
report zexemplo.
data: begin of itab occurs 5,
t1 like sy-index,
t2,
end of itab,
gama(5) value 'plaut'.
do 5 times varying itab-t2 from gama+0 next gama+1.
itab-t1 = sy-index.
append itab.
enddo.
itab-t2 = 'v'.
modify itab index 4.
loop at itab.
write: / itab-t1, itab-t2.
endloop.
loop at itab.
itab-t1 = itab-t1 * 2.
modify itab.
endloop.
skip.
loop at itab.
write: / itab-t1, itab-t2.
endloop.
itab-t2 = 'W'.
modify itab transporting t2 where t1 <> 10.
skip.
loop at itab.
write: / itab-t1, itab-t2.
endloop.
Resultado:
1
2
3
5
5

p
l
a
v
t

2
4
6
10
10

p
l
a
v
t

ABAP

1.00 - 87

REPORT

4
6
10
10

W
W
v
t

ABAP

1.00 - 88

REPORT

Delete
Com o comando delete voc poder excluir uma ou mais linhas de uma tabela interna. Semelhante
as inseres, as excluses dentro do loop at itab no afetaro imediatamente a tabela interna, ao
contrrio, se tornaro efetivas na prxima passagem do loop.
Sint.:
Delete itab [index c]
[from v] [to l]
[where exp]
itab uma tabela interna
c, v e l so constantes, variveis e literais numricos
exp uma expresso lgica envolvendo os componentes de itab.

Occurs
No limita o nmero de linhas que pode ser adicionado tabela interna, teoricamente o nmero de
linhas que pode ser adicionado a uma tabela interna apenas limitado a memria virtual disponvel no
servidor do aplicativo. O sistema utiliza o comando occurs apenas como uma especificao para
determinar quanta memria ser alocada.

ABAP

1.00 - 89

REPORT

With Keys
Se a utilizao da adio for especificada, o sistema localizar uma linha que corresponda com a
expresso key e a colocar na linha de cabealho. Usando a expresso key, voc pode procurar por
uma linha especificando um valor ao invs de ndice.
Ex.:
report zexemplo
data: begin of itab occurs 3,
t1(3) type n,
t2
type i,
t3(3) type c,
t4
type p,
end of itab,
begin of tabi,
t1 like itab-t1,
t2 like itab-t2,
end of tabi,
tabt like itab,
t(8).
itab-t1 = '100'.
itab-t3 = 'pp'.
itab-t2 = itab-t4 = 1.
append itab.
itab-t1 = '200'.
itab-t3 = 'll'.
itab-t2 = itab-t4 = 2.
append itab.
itab-t1 = '300'.
itab-t3 = 'aa'.
itab-t2 = itab-t4 = 3.
append itab.
read table itab with key t1 = '300' t2 = 3.
write: / 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ itab-t1, itab-t2, itab-t3, itab-t4.
t = 't2'.
read table itab into tabt with key (t) = 2.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ itab-t1, itab-t2, itab-t3, itab-t4,
/ tabt-t1, tabt-t2, tabt-t3, tabt-t4.
clear tabi.
tabt-t1 = '100'.
tabt-t3 = 'pp'.

ABAP

1.00 - 90

REPORT

tabt-t2 = tabt-t4 = 1.
read table itab with key = tabt.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ itab-t1, itab-t2, itab-t3, itab-t4.
tabi-t1 = '200'.
tabi-t2 = 2.
read table itab into tabt with key tabi.
write: /,
/ 'sy-subrc =', sy-subrc,
/ 'sy-tabix =', sy-tabix,
/ itab-t1, itab-t2, itab-t3, itab-t4.

Resultado:
sy-subrc =
sy-tabix =
300
sy-subrc =
sy-tabix =
300
200
sy-subrc =
sy-tabix =
100
sy-subrc =
sy-tabix =
100

0
3
3

AA

0
2
3
2

AA
LL

3
2

0
1
1

PP

0
2
1

PP

ABAP

1.00 - 91

REPORT

Form
Define o fim do evento precedente e o comeo de uma sub-rotina. As sub-rotinas no podem ser
excessivas no interior de eventos.
Sint.:
form <sub> tables pa1 pa2...
using pa3 value pa4.
...
endform.
<sub> o nome da sub-rotina.
pa1 e pa2 so parmetros.
Ex.:
TYPES: BEGIN OF FLIGHT_STRUC,
FLCARRID LIKE SFLIGHT-CARRID,
PRICE
LIKE SFLIGHT-FLDATE,
END
OF FLIGHT_STRUC.
DATA: MY_FLIGHT
IBOOK1
IBOOK2
STRUC

TYPE
LIKE
LIKE
LIKE

FLIGHT_STRUC OCCURS 0,
SBOOK
OCCURS 0,
IBOOK1
OCCURS 0,
SBOOK.

PERFORM DISPLAY USING MY_FLIGHT IBOOK1 IBOOK2 STRUC.


FORM DISPLAY USING

P_ITAB
P_BOOK1
P_BOOK2
P_STRU

LIKE
LIKE
LIKE
LIKE

MY_FLIGHT[]
IBOOK1[]
IBOOK2[]
STRUC.

DATA: L_FLIGHT LIKE LINE OF P_ITAB,


L_CARRID LIKE L_FLIGHT-FLCARRID.
...
WRITE: / P_STRU-CARRID, P_STRU-CONNID.
...
LOOP AT P_ITAB INTO L_FLIGHT WHERE FLCARRID = L_CARRID.
...
ENDLOOP.
ENDFORM.

ABAP

1.00 - 92

REPORT

Perform
utilizado para chamar uma sub-rotina, no caso o form.
Ex.:
report zexemplo.
data: number_i type i value 5,
number_p type p value 4,
begin of person,
name(10)
value 'paul',
age type i
value 28,
end
of person,
alpha(10)
value 'abcdefghij'.
field-symbols <pointer>.
assign number_p to <pointer>.
perform change using 1
number_i
number_p
<pointer>
person
alpha+number_i(<pointer>).
*------------------------------------------------------------------*
*
form change
*
*------------------------------------------------------------------*
*
........
*
*------------------------------------------------------------------*
* --> value(par_1)
*
* --> par_number_i
*
* --> par_number_p
*
* --> par_pointer
*
* --> par_person
*
* --> par_part_of_alpha
*
*------------------------------------------------------------------*
form change using value(par_1)
par_number_i
par_number_p
par_pointer
par_person structure person
par_part_of_alpha.
add par_1 to par_number_i.
par_number_p = 0.
par_person-name+4(1) = alpha.
par_person-age = number_p + 25.
add number_i to par_pointer.
par_part_of_alpha = space.
endform.

ABAP

1.00 - 93

REPORT

Include
Um programa include um aplicativo em que o contedo projetado para ser utilizado por outro
programa, podendo estar includo em mais de um programa. Normalmente ele no completo sozinho.
Um programa include deve ser do tipo i. O cdigo do programa include copiado como est e
substitui o comando include no tempo de gerao do programa.
Ex.:
Programa Principal
report zexemplo.
tables: <tab1>, <tab2>.
parameters va_var1 like tab1-camp1.
include: zexemp1,
zexemp2.
top-of-page.
write: / 'Resultado', va_var1.
uline.

Include ZEXEMP1
*** include zexemp1.
select single * from tab1 where camp1 = va_camp1.

Include ZEXEMP2
*** include zexemp2.
select * from tab2 where camp1 = tab1-camp1.
write: / tab2-camp1.
endselect.

ABAP

1.00 - 94

REPORT

Call function
Este comando utilizado para chamar um mdulo de funo. call function um comando
especfico, no necessitando que seja colocado pontos ou vrgulas depois de parmetros ou nomes de
exceo. O nome do mdulo deve ser codificado em letras maisculas, se for codificado em letras
minsculas, a funo no ser localizada e um dump ocorrer.
exemplo:
data begin of bdcdata occurs 100.
include structure bdcdata.
data end of bdcdata.
data begin of itab occurs 10.
include structure bdcmsgcoll.
data end of itab.
data program like sy-repid
bdcdata-program
bdcdata-dynpro
bdcdata-dynbegin
append bdcdata.
clear bdcdata.
bdcdata-fnam
bdcdata-fval
append bdcdata.
...
call transaction

= 'sapms38m'.
= '0100'.
= 'x'.
= 'rs38m-programm'.
= program.
'se38'

using bdcdata mode 'n'


messages into itab.

ABAP

1.00 - 95

REPORT

Top-of-page
Este comando utilizado para criar ttulos personalizados (cabealhos). Se no houver uma tela de
seleo, o primeiro comando write executado acionar o top-of-page, caso o seu programa
possua uma tela de seleo possvel que o top-of-page seja acionado duas vezes, primeiro pelo
comando write executado antes da tela de seleo ser mostrada ou pelo comando write executado
aps a tela de seleo ser mostrada.
Ex.:
report zexemplo no standard page heading.
data: va1(5) value 'gata',
va2(5) value 'carla'.
write: / 'Como vai?'.
top-of-page.
write: / 'Srta.', va2. uline.
Resultado:

ABAP

1.00 - 96

REPORT

End-of-page
Este comando cria rodaps de pgina, os comandos que estiverem aps o end-of-page sero
executados antes da gerao de cada nova pgina. Voc precisa reservar espao na parte inferior da
pgina (line-count) para o end-of-page.
Ex.:
report zexemplo line-count 15(2) no standard page heading.
data: va1(5) value 'gata',
va2(5) value 'Carla'.
do 20 times.
write: / 'como vai', sy-index, 'times'.
enddo.
top-of-page.
write: / 'Srta.', va2.
uline.
end-of-page.
write: / sy-uline,
/ 'Este o rodap com duas linhas reservadas'.
Resultado:

ABAP

1.00 - 97

REPORT

At selection-screen
processado depois da entrada do usurio na tela de seleo ativa, podendo ocorrer aps o usurio
clicar um boto. Alm da verificao de validaes de dados, mensagens de aviso, alterao do status
GUI e at mesmo janelas pop-up podem ser abertas utilizando este evento.
Ex.:
...
select-options name for sy-repid modif id xyz.
...
at selection-screen output.
loop at screen.
check screen-group1 = 'xyz'.
screen-intensified = '1'.
modify screen.
endloop.
....

ABAP

1.00 - 98

REPORT

At user-command
Os botes, assim como muitas outras opes de tela de seleo baseadas em evento, podem ser muito
teis na manuteno da interao com usurio e na validao de entrada do usurio.
data: number1 type i value 20,
number2 type i value 5,
result type i.
start-of-selection.
write: / number1, '?', number2.
at user-command.
case sy-ucomm.
when 'add'.
result = number1 + number2.
when 'subt'.
result = number1 - number2.
when 'mult'.
result = number1 * number2.
when 'divi'.
result = number1 / number2.
when others.
write 'unknown function code'.
exit.
endcase.
write: / 'result:', result.

Resultado:
20

ABAP

1.00 - 99

REPORT

Message
As mensagens so mantidas e armazenadas na tabela T100 e podem ser acessadas a partir do ABAP
Workbenck. Um programador efetivo emite mensagens que so descritivas e ajudam o usurio a
entender a natureza do fluxo do programa.
possvel atribuir a cada instruo de mensagem tipos de mensagem que tm diversos efeitos no
resultado do programa.

Você também pode gostar