Apostila Abap Report

Você também pode gostar

Você está na página 1de 99

p

ABAP
REPORT
1.00 - 2
ABAP
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 Production Planning ! planejamento de produ"o#
$$ $aterials $anagement ! gerenciamento de materiais#
%& %ales and &istri'ution ! vendas e distri'ui"o#
() (inancial *ccounting ! conta'ilidade financeira#
+O +ontrolling ! controladoria#
*$ (i,ed *ssets $anagement ! gerenciamento de ativos fi,os#
P% Project %-stem ! sistema de projeto#
.( .or/flo0 ! flu,o de tra'al1o#
)% )ndustr- %olutions ! solu"2es de industria#
3R 3uman Resources ! recursos 1umanos#
P$ Plant $aintenance ! manuten"o das instala"2es#
4$ 4ualit- $anagement ! gerenciamento da 5ualidade#
6stes aplicativos so c1amados 7reas funcionais, 7reas de aplicativo ou, 7s ve8es, m9dulos funcionais
do R/3. :odos estes termos so sin;nimos.
:radicionalmente, as estruturas empresariais desenvolvem um conjunto de aplicativos de
processamento de dados avaliando produtos individuais e comprando esses produtos separadamente de
diversos fa'ricantes de soft0are. )nterfaces entre eles so ento necess7rias. Por e,emplo, o sistema de
gerenciamento de materiais precisar7 ser vinculado com as vendas e a distri'ui"o e com os sistemas
financeiros, e o sistema de flu,o de tra'al1o precisar7 de uma alimenta"o a partir do sistema do 3R.
<ma 5uantidade significativa de tempo e din1eiro de )% gasta na implementa"o e manuten"o
dessas interfaces.
O R/3 vem predefinindo com os aplicativos empresariais '7sicos necess7rios = maioria das grandes
corpora"2es. 6sses aplicativos coe,istem em um am'iente 1omog>neo. 6les so projetados para
funcionar utili8ando desde um ?nico 'anco de dados e um conjunto muito grande# de ta'elas. Os
taman1os de 'anco de dados de produ"o atuais variam de @A giga'-tes a apro,imadamente 3
tera'-tes. +erca de B.CCC ta'elas de 'anco de dados so distri'uDdas com o produto R/3 padro.
p
1.00 - 3
ABAP
REPORT
Por que voc precisa saber isso?
importante para voc>, como um programador de *E*P, sa'er por 5ue esses aplicativos so
todos escritos inteiramente em *E*P. 6sses so os aplicativos 5ue voc> deve entender para ser um
'om desenvolvedor de R/3.
Por e,emplo, supon1a 5ue voc> con1ece *E*P e ten1a rece'ido a incum'>ncia de escrever um
relat9rio financeiro 5ue resume d'itos e crditos de cada ano fiscal para cada fa'ricante na empresa.
:alve8 voc> sai'a escrever c9digo em *E*P, mas voc> sa'eria como come"ar a resolver essa tarefaF
Ou talve8 seu tra'al1o e,ija um novo desenvolvimento em *E*P/G. Hoc> incum'ido de
projetar um sistema 5ue ofere"a informa"2es de esto5ue para potenciais compradores. %e voc> no
con1ece os sistemas de vendas e financeiro e de distri'ui"o, voc> no sa'er7 se est7 criando algo 5ue
j7 e,iste em R/3. :ampouco voc> poder7 sa'er se 17 ta'elas do R/3 5ue j7 cont>m dados semel1antes
ou id>nticos aos tipos de dados 5ue voc> 5uer recuperar. 6sses aplicativos so altamente integrados.
<m desenvolvedor 5ue assume a a'ordagem Ieu construirei min1as pr9prias ta'elas e manterei min1as
pr9prias c9pias dos dadosJ, pode logo desco'rir 5ue seus dados so redundantes e devem ser
rotineiramente sincroni8ados com o resto do 'anco de dados. 6le construiu um aplicativo 5ue no tira
proveito da nature8a altamente integrada do am'iente R/3.
importante 5ue o *E*P seja desenvolvido com a certe8a de 5ue dentro do R/3 no possua
nada 5ue j7 no atenda as necessidades da 7rea funcional.
p
1.00 - 4
ABAP
REPORT
o!on
*travs do logon o sistema identificar7 se o usu7rio esta autori8ado a entrar no %*P no client 5ue est7
acessando, e atravs do seu <ser)d 5ue identificado a 5ue m9dulos e transa"2es voc> ter7 acesso.
p
+lient onde se desenvolver7 a atividade
+ampo command
$enu do )nterface
Earra de ferramentas application
Earra de %tatus
Earra de
(erramentas
%tandard
Earra de :Dtulo
Krea %creen
1.00 - 5
ABAP
REPORT
"ores
Para 5ue voc> possa alterar as cores de seu am'iente tornando mais agrad7vel, utili8e o recurso a'ai,o
demonstrado.
p
+li5ue nas
'olin1as
coloridas e
depois em
IOptions...J.
1.00 - 6
ABAP
REPORT
#cones no $AP
*'ai,o alguns e,emplos, com descri"o, dos Dcones 5ue voc> ter7 contato no %*P.
p
1.00 - 7
ABAP
REPORT
%icion&rio
O &icion7rio um utilit7rio 5ue define o'jetos de dados, nele voc> pode criar e arma8enar o'jetos
como ta'elas, estruturas e visuali8a"2es.
+amin1o: +li5ue no menu a op"o IFerramentasJ L IABAP WorkbenchJ L IDicitionaryJ.
p
DICA: %e voc>
digitar ISE11J no
campo command a
tela de entrada do
*E*P &ictionar-
ir7 surgir.
1.00 - 8
ABAP
REPORT
Tabelas
&entro do R/3, uma table uma cole"o de lin1as onde em cada lin1a contm campos ou tam'm
c1amados de colunas. 6m uma table so arma8enados dados persistentes, se voc> colocar dados em
uma table, eles continuaram ai mesmo depois de voc> finali8ar seu programa e ali ficaro at seu ou
outro programa altera!los ou e,clui!los. O nome de uma table ?nico dentro de todo o sistema.
<tili8aremos a sflight para e,emplificar uma table.
p
1.00 - 9
ABAP
REPORT
%a'a ele(en'
<ma table composta de campos, mas para criar um campo voc> precisa de um data element
5ue contm os r9tulos de campo e a documenta"o online F1# para o campo. <m data element
pode ser utili8ado em mais de um campo e em mais de uma table.
Para 5ue voc> veja os data element, cli5ue duas ve8es com o mouse so're o campo IElem.
dadosJ. <tili8aremos o campo Mandt para e,emplificar.
p
1.00 - 10
ABAP
REPORT
%o()nios
O domDnio contm a caracterDstica tcnica de uma campo, como o comprimento do campo e o tipo de
dado. Os domDnios tam'm so reutili87veis podendo ser usados em mais de um data element.
Para 5ue voc> veja os domnio, aproveitaremos o e,emplo da p7gina anterior, cli5ue duas ve8es com
o mouse so're o campo INome do domnioJ. <tili8aremos o campo Mandt para e,emplificar.
p
1.00 - 11
ABAP
REPORT
$'ruc'ure
<ma structure uma descri"o de uma srie de campos agrupados so' um nome em comum. 6la
descreve os nomes de campo, sua se5u>ncia e seus tipos e comprimentos de dados. *ssim como a
table, uma structure no ter7 outra com seu nome e nem com o de uma table.
<ma estrutura pode agrupar dados de v7rias ta'elas, ela difere de uma ta'ela transparente pois s9
matm os dados em tempo de e,ecu"o do programa.
p
1.00 - 12
ABAP
REPORT
Tabelas *n'ernas
:a'elas internas so utili8adas para arma8enar em tempo de e,ecu"o os dados necess7rios para a
processamento do seu programa. 6stes dados podem ser selecionados de diversas ta'elas transparentes.
O n?mero de lin1as de uma ta'ela no fi,o, a medida 5ue a sele"o feita voc> pode acrescentar os
dados na sua ta'ela.
O acesso a ta'ela interna feito lin1a a lin1a utili8ando uma 0or/ area como interface para transferir
dados para ou de uma ta'ela, esta 0or/ area utili8ada para arma8enar temporariamente uma entrada
da ta'ela de dados.
4uando lemos uma ta'ela interna o conte?do de endere"amento enviado para uma 0or/ area. 6sta
0or/ area tem a mesma estrutura da sua ta'ela interna.
p
1.00 - 13
ABAP
REPORT
*travs deste conceito temos dois tipos de ta'elas internas.
.):3 36*&6R M)N6 O O sistema automaticamente cria uma 0or/ area id>ntica a lin1a da sua ta'ela
interna.
.):3O<: 36*&6R M)N6 O O sistema no recon1ece a 0or/ area, 5ue deve ser definida no
programa.

p
1.00 - 14
ABAP
REPORT
"riar Pro!ra(as
Caminho: +li5ue no menu a op"o IFerramentasJ L IABAP WorkbenchJ
+li5ue no 'oto IEditor ABAPJ.
+1egando na tela do IABAP/4 EditorJ, deve!se entrar com o nome do programa 5ue
ser7 criado.
+li5ue em criar.
p
DICA: %e voc>
digitar ISE38J
no campo
command a tela
de entrada do
editor de *E*P
ir7 surgir.
Obs.: Todo o programa
que for criado deve
comear por Y ou Z
1.00 - 15
ABAP
REPORT
Nesta tela voc> ir7 digitar os dados assinalados e clicar em salvar.
*'rir7 uma tela menor I!odi"icar entrada cat#lo$o ob%etosJ onde voc> dever7 preenc1er o campo
I&lasse dese'ol'im.J com a sua classe.
Obs.: *p9s clicar em salvar na tela I!odi"icar entrada cat#lo$o ob%etosJ uma outra tela surgir7
solicitando o n?mero da re5uest, caso voc> j7 ten1a criado uma re5uest anteriormente, salve o seu
programa nela, caso contr7rio crie uma nova.
Im.: <ma re5uest permite o transporte do seu programa de uma m75uina de desenvolvimento para
uma outra de produ"o fisicamente diferente, pois na mesma m75uina os programas so vDstos em
todos os clients pois so independentes. +aso no 1aja necessidade de transporte pode!se criar como
MO+*M OEP6+:.
p
&escri"o
%imples
:ipo de programa
Krea de aplica"o do programa
DICA: %e clicar
no 'oto I(e)to
"onteJ o editor de
*E*P ir7 a'rir j7
no programa
como
apresentado na
pr9,ima p7gina.
1.00 - 16
ABAP
REPORT
Retorne para a tela inicial e tecle I!odi"icarJ.
O editor *E*P ser7 a'erto.
* primeira lin1a indicar7 o nome do programa e atravs desta lin1a 5ue o sistema identificar7 e
e,ecutar7 o programa ou por e,ecu"o direta ou por um atal1o E).: <ma transa"o#.
p
1.00 - 17
ABAP
REPORT
Tipos de Edi'or
Caminho: No menu cli5ue em I*+,-esJ
+li5ue em I!odo de edi,.o...J
*'rir7 a tela a'ai,o para 5ue voc> selecione 5ual editor ir7 tra'al1ar.
Ca!a"#$!%s#i"as:
&o'o (C "om n)m$!a*+o '$ ,inhas -(C mo'$ .i#h ,in$ n)mb$!s/
Proporciona um estilo de Iprocessador de te,toJ com comandos de c9pia, recortar e colar mas com a
numera"o de lin1as incluDdas. 6ste o modo default do %*P.
&o'o (C "om n)m$!a*+o '$ ,inhas -(C mo'$ .i#ho)# ,in$ n)mb$!s/
Proporciona um estilo de Iprocessador de te,toJ com comandos de c9pia, recortar e colar.
&o'o Coman'o -Comman' mo'$/
Proporciona a mesma funcionalidade associada a verso R/A do %*P.
p
1.00 - 18
ABAP
REPORT
Brea+poin'
<tili8e o 'rea/point 5uando for necess7rio analisar o programa lin1a a lin1a e verificar o
acontecimento dos erros.
* fun"o Continue no de'ugger e,ecuta comandos at o pr9,imo ponto de 'rea/point.
Pode!se colocar um ponto de 'rea/point na posi"o atual do cursor selecionando a fun"o Set
Breakpoint ou atravs de duplo cli5ue. Min1as onde um ponto de 'rea/ point for fi,o esto marcadas
com um sDm'olo de %:OP. 6,i'a tudo so're os 'rea/point atualmente fi,ados, selecionando Goto
Breakpoint. Pode!se apagar pontos de 'rea/point atravs de duplo cli5ue, ap9s posicionar o cursor em
um deles ou usando o menu de ponto de 'rea/point.
<tili8e a declara"o ER6*Q!PO)N: no 6ditor *E*P.
Posicione o cursor e ento pode escol1er Utilities Breakpoint Set.
(i,e pontos de 'rea/point dependente em %R!%<ER+ SL C atravs de Erea/point Erea/point at...
+omandos orientados de 'rea/point: Hoc> pode fi,ar pontos de 'rea/point atravs do *E*P para
palavras!c1ave, eventos e se5T>ncia de dados escol1endo Erea/point Erea/point at...
p
1.00 - 19
ABAP
REPORT
$elecionar Tabelas
&eve!se declarar as ta'elas, como demonstrado na lin1a 3, 5ue sero utili8adas no programa.
Para leitura da 'ase de dados :a'elas# voc> usa o comando select.
O select no perform7tico sem autori8a"2es de c1ec/s.
Meitura de todos os dados de uma simples entrada.
Meitura de dados especificando colunas.
Na lin1a U, voc> v> 5ue foi utili8ado o comando select para recuperar os registros dos 'ancos de
dados, onde * indica 5ue todos os campos na ta'ela devem ser recuperados.
*p9s a figura a'ai,o sero apresentadas outras op"2es de select.
p
1.00 - 20
ABAP
REPORT
/int.:
select single * from... - s$,$"iona )m 0ni"o !$1is#!o/
6ste comando de select usado para um acesso simples na entrada de dados. Hoc> tem 5ue
especificar a c1ave completa da ta'ela, para o'ten"o de um ?nico registro, para usar a c1ave use
dentro do comando a condi"o where...
+aso voc> no ten1a especificado a c1ave completa, uma mensagem de .arning aparecera no
avisos do editor com erro de sinta,e c1ec/ sua performance#, neste caso trar7 o primeiro registro
encontrado na ta'ela.
Para c1ec/ use a vari7vel do sistema sy-subrc retorna C se a leitura foi feita com sucesso,
retorna G se entrada no e,iste#
6ste comando no tem endselect.
______________________________ ______________________________
select * from...
endselect. fa8 um processo de loop sem restri"2es #
6ste tipo de comando fa8 uma leitura sem restri"2es , seria um tipo de leitura se5T>ncia de uma
ta'ela, esse tipo de processo no perform7tico
6ste comando tem 5ue ser finali8ado com endselect.
Para c1ec/ use a vari7vel do sistema sy-subrc retorna C se a leitura foi feita com sucesso,
retorna G se entrada no e,iste#
______________________________ ______________________________
select * from...
where...
endselect. fa8 um processo de loop com restri"2es #
6ste tipo de comando fa8 a leitura com restri"2es 5ue esto nas condi"2es do where, segue
tam'm um processo de Moop tem uma performance muito maior 5ue o anterior.
6ste comando tem 5ue ser finali8ado com endselect.
Para c1ec/ use a vari7vel do sistema sy-subrc retorna C se a leitura foi feita com sucesso,
retorna G se entrada no e,iste#
Operadores de compara"o para comando where.
eq
V
ge
LV VL
le
SV VS
ne
SL LS
gt
L
lt
S
______________________________ ______________________________
p
1.00 - 21
ABAP
REPORT
select <a1> <a2> ... into (<f1> <f2>...! from....
where...
endselect. leitura de colunas simples#
6ste comando seleciona somente os campos definidos <a1> <a2>...com a condi"o
imposta no where.
Na adi"o do into ap9s o select voc> especifica a sua 7rea de tra'al1o no caso <f1>
<f2>... com cada campo preenc1ido no processo de loop.
Os argumentos <a1> <a2>... tem 5ue conter o mesmo numero de elementos para <f1>
<f2>....
______________________________ ______________________________
select ma" (distance!
min (distance!
count(*! from <table> into (... ... ...!
where...leitura de colunas agregando fun"2es#
6ste comando determina o numero total dos registros de uma ta'ela, retorna o valor m7,imo ,o
valor mDnimo, a 5uantidade total, voc> pode usar tam'm as fun"2es a#g mdia# e sum soma#
:odas estas fun"2es s9 podem ser usadas para campos numricos.
6ste comando no tem endselect.
Hoc> pode tam'm a op"o adicional distintc, esta fun"o agrega somente um registro o
primeiro 5ue encontrar, s9 poder7 ser usado 5uando tiver diferentes valores nas colunas.
______________________________ ______________________________
select into corres$onding fields of <wa>.carrega os dados correspondente a
0or/ area definida#
6ste comando carrega os dados numa area de tra'al1o 5ue tem 5ue ser definida, os nomes dos
campos tem 5ue ser iguais para 5ue sejam transportado os dados.
6ste comando no recomendado devido a sua 'ai,a performance pois demanda tempo na
compara"o dos campos.
6ste comando no tem endselect.
______________________________ ______________________________
select into corres$onding fields of table <itab>.carrega os dados
correspondente a uma ta'ela interna definida#
6ste comando carrega os dados numa ta'ela interna 5ue tem 5ue ser definida, os nomes dos
campos tem 5ue ser iguais para 5ue sejam transportado os dados.
6ste comando so'rescreve os registros.
6ste comando no recomendado devido a sua 'ai,a performance pois demanda tempo na
compara"o dos campos.
p
1.00 - 22
ABAP
REPORT
6ste comando no tem endselect.
______________________________ ______________________________
select into a$$endig corres$onding fields of table <itab>.carrega os
dados correspondente a uma ta'ela interna definida#
6ste comando acrescenta os dados numa ta'ela interna 5ue tem 5ue ser definida, os nomes dos
campos tem 5ue ser iguais para 5ue sejam transportado os dados.
6ste comando no so'rescreve os registro e sim acrescenta novos registro
6ste comando no tem endselect.
______________________________ ______________________________
select * from <table>
where <table field>
between <field1>
and <field2>. leitura de dados com limite de e,tenso#
6ste comando tem o mesmo processo de um select s9 5ue voc> define um processo de range
onde <field1> e <field2> so os limites dos campos <table field>.
6ste comando no tem endselect.
______________________________ ______________________________
select * from <table>
where <table field>
li%e...&...& leitura de dados com pes5uisa#
6ste comando permite 5ue voc> fa"a uma pes5uisa de campos definida no M)Q6 usando
caracteres especiais.
+aracteres especiais coringas# IWJ, IXJ., voc> s9 pode usar esta procura para campos
caracteres.
/int.:
...
select * from mara where matnr li%e '(ca).
...
______________________________ ______________________________
select * from <table>
where <table field>
in (......! leitura de dados com lista#
6ste comando usado na clausula where para compara"o de lista de valores ou valores
?nicos, os campos no so um intervalo e sim valores fi,os
p
1.00 - 23
ABAP
REPORT
______________________________ ______________________________
p
1.00 - 24
ABAP
REPORT
select * from <table>
where <table field>
in <itab> leitura de dados com operador de uma ta'ela #
6ste comando usado na clausula where para compara"o de lista dentro de uma ta'ela
interna 5ue conten1a valores fi,os
* ta'ela interna deve sempre incluir os campos sign, o$tion, low, high.
______________________________ ______________________________
select * from <table>
where <table field>
in <wor% area> leitura de dados com operador de uma 0or/ area#
6ste comando usado na clausula where para compara"o de um ?nico parYmetro dentro de
uma 0or/ area. O conte?do de um campo definido.
______________________________ ______________________________
select * from ( <table> !
where ( <itab> ! leitura de dados dinYmica#
6ste comando permite 5ue voc> crie uma ta'ela interna com dados montados contendo uma
lin1a com ZA caracteres seriam dados constantes nessa lin1a podendo conter par>nteses aspas
campos em 'rancos enfim 5ual5uer tipo de caracter. 6le retorna na condi"o where os dados
contidos na ta'ela interna
O nome das ta'elas devem estar entre par>nteses com 'ranco separando os nomes. 6ste tipo de
comando no retorna erro de sinta,e.
______________________________ ______________________________
select * from (<table>!
into table <itab>
6ste processo e 'astante r7pido para leitura de dados de ta'ela interna, s9 5ue no so'rescreve
nen1um registro, fa8 o processo de loop e 'usca cada registro na ta'ela interna um a um.
6ste comando no tem endselect.
______________________________ ______________________________
select * from (<table>!
a$$ending table <itab>
6ste processo e 'astante r7pido para leitura de dados de ta'ela interna, s9 5ue acrescenta os
registros , fa8 o processo de loop e 'usca cada registro na ta'ela interna um a um.
6ste comando no tem endselect.
p
1.00 - 25
ABAP
REPORT
______________________________ ______________________________
select * from (<table>!
for all entries in <itab>
where...
6ste processo seleciona todos os registros para a ta'ela interna.
%e a ta'ela interna no contem dados no use a condi"o where.
Os campos da ta'ela transparente e da ta'ela interna tem 5ue ser iguais.
6sta condi"o for all entries e,clui a adi"o do comando order by....
______________________________ ______________________________
select * from (<table>!
order by <field1> <field2>
$rimary %ey leitura de dados com sele"o de ordena"o#
6ste comando permite 5ue voc> selecione os dados na ordem da c1ave primaria da ta'ela em
ordem ascendente ou os campos definidos <field1>, <field2>#, tam'm em ordem
ascendente
Hoc> tam'm pode acrescentar a ordem ascending ou descending, o default e a ordem
ascendente
Hoc> pode tam'm fa8er a ordem de uma ta'ela interna, neste caso deve conter a lista de
campos <f1>, <f2>....
*s entradas da ta'ela interna tem ser do tipo caracter e no m7,imo com ZA caracteres.
______________________________ ______________________________
select <a1> <a2> ... into (<f1> <f2>...!
from.<table>
grou$ by...
6ste comando permite um grupo de entrada do conte?do de um campo.
6le determina o m7,imo e o mDnimo <a1> <a2> de um determinado campo.
______________________________ ______________________________
select * from (<table>!
by$assing buffer
6ste comando permite acesso por um determinado perDodo no usando a area de mem9ria.
Hoc> tem 5ue ter a certe8a da leitura dos dados.
[eralmente esse comando usado para ta'elas em tela em tempo de e,ecu"o.
p
1.00 - 26
ABAP
REPORT
DICA: <tili8e o 'oto modelo na e,ecu"o do programa para gerar um select demonstrando 5ue no
1aver7 erro na ordem da sele"o dos campos c1aves.
p
1.00 - 27
ABAP
REPORT
,e'
%e em uma 'ase de dados l9gica for necess7rio a sele"o de campos para uma ta'ela, voc> pode
utili8ar a declara"o [6: para especificar somente os campos necess7rios para e,ecutar o processo.
E).:
re$ort *e"em$lo.
tables+ s$fli sflight sboo%.
get s$fli fields carrid connid cityfrom cityto de$time arrtime.
write+ s$fli-carrid s$fli-connid s$fli-cityfrom s$fli-cityto
s$fli-de$time s$fli-arrtime.
get sflight fields fldate $rice currency.
write+,1- sflight-fldate sflight-$rice sflight-currency.
get sboo% fields boo%id customid custty$e.
write+,2- sboo%-boo%id sboo%-customid sboo%-custty$e.
No recomendado a utili8a"o deste comando por comprometer a performance.
p
1.00 - 28
ABAP
REPORT
Acessando a base de dados
<tili8e a declara"o 6\6+ %4M 5uando for necess7rio uma interven"o direta por parte do usu7rio na
'ase do 'anco de dados.
*ssim 5ue a declara"o 6\6+ %4M for processada em seu programa *E*P, ela torna o programa
*E*P inoperante at 5ue a declara"o 6N&6\6+ seja processada.
/int.:
...
e"ec sql.
<sql statement>
ende"ec.
...
p
./.0
0rogram
...
1.0 2,3 1ystem
./.0 4$en 156 7879 156 :M042;
1.00 - 29
ABAP
REPORT
E-ibir %ados . write
4uando se fa8 necess7rio a e,i'i"o na tela do resultado de um re$ort voc> utili8a o comando
write e todo o conte?do 5ue estiver ap9s a instru"o at ser finali8ado por I.J gerar7 um relat9rio de
saDda. +omo no e,emplo a'ai,o, o write ir7 fornecer uma listagem de dados 5ue foram selecionados
dentro da ta'ela sflight produ8indo um resultado como demonstrado a'ai,o.
E).:
report zexemplo.
tables: sbook.
select * from sbook
where carrid = 'lh'
and connid = '0400'.
write: / sbook-carrid,
0 sbook-connid,
!0 sbook-fldate,
"# sbook-bookid,
#0 sbook-l$%%wei%ht,
&0 sbook-w$nit.
endselect.
if s'-s$brc ne 0.
write: / 'n(o existem entradas para esta sele)(o.'.
endif.
skip #.
$line.
skip.
p
1.00 - 30
ABAP
REPORT
Even'os . iniciali*ation/ start-of-
selection
<m evento como uma su'!rotina em outras linguagens, trata!se de uma se"o independente do
c9digo 5ue e,ecuta uma tarefa e ento retorna para o ponto de c1amada, contudo, ao contr7rio das su'!
rotinas, voc> no codifica a c1amada para um evento, ao contr7rio, o sistema aciona o evento para
voc> 5uando uma condi"o especifica surge. <m evento um tag contador# 5ue identifica uma se"o
de c9digo, 5ue associada com um evento come"a com um nome de evento e termina 5uando o
pr9,imo nome encontrado. Os nomes dos eventos so palavras reservadas, no se podendo criar
novos eventos. Os nomes dos eventos so:
iniciali*ation
4uando voc> e,ecuta um programa onde um critrio de sele"o definido, o sistema normalmente
processa a tela primeiro. %e voc> 5uer 5ue um 'loco de comandos seja e,ecutado antes da tela de
sele"o utili8e este comando.
/int.:
*ntes do comando:
report sapmztst.
parameters firstda' like s'-dat$m defa$lt s'-dat$m.
tables spfli.
p
1.00 - 31
ABAP
REPORT
*p9s o comando
report sapmztst.
parameters firstda' like s'-dat$m defa$lt s'-dat$m.
tables spfli.
initialization.
cit'*fr = 'new 'ork'.
cit'*to = 'frankf$rt'.
carrid-si%n = 'i'.
carrid-option = 'e+'.
carrid-low = 'aa'.
append carrid.
firstda',&-!. = '0'.
/int.:
report zexemplo.
tables sbook.
select-options fl*date for sbook-fldate.
initialization.
mo/e: '0' to fl*date-si%n,
'12' to fl*date-option,
s'-dat$m to fl*date-low.
append fl*date.
mo/e: '34' to fl*date-option,
'55&00' to fl*date-low,
'55&0&"0' to fl*date-hi%h.
append fl*date.
p
1.00 - 32
ABAP
REPORT
start-of-selection
%e a primeira instru"o e,ecut7vel em seu programa no for procedida por um nome de evento, o
sistema automaticamente insere start-of-selection antes da primeira lin1a de c9digo
e,ecut7vel. Permite o processamento antes da e,ecu"o de leitura das ta'elas transparentes atravs do
comando sempre acompan1ado pelo comando end-of-selection.
p
1.00 - 33
ABAP
REPORT
E).:
0es1ltado:
p
1.00 - 34
ABAP
REPORT
Posiciona(en'o de dados no rela'0rio . u-
line/ s%i$
6specifica"2es para o comando write.
uline
6screve um tra"o no relat9rio de saDda ou tela de sele"o
s%i$
[era lin1as em 'ranco, para mais de uma lin1a em 'ranco E).2 s%i$ n#, tam'm podendo deslocar!
se para outro ponto de saDda do relat9rio E).2 s%i$ n to line n#.
/int.:
...
67041: '4ext ......'.
890:.
67041: '4ext ! ......'.
...
0es1ltado:
;e"t 1 ......
;e"t 2 ......
,$(l! / pula uma lin1a, $ posi"o da coluna#, l deslocamento a es5uerda#.
/int.:
...
write+ ,< (3-! field
...
p
1.00 - 35
ABAP
REPORT
"o(andos de sa)da do pro!ra(a
sto$
6ste comando interrompe o processo de leitura e vai para o final do evento end of selection,
caso no ten1a usado o evento ele interrompe o programa, tam'm podendo ser utili8ado para
interromper a e,ecu"o de um loo$ indo direto para o endloo$.
e"it
:ermina o loo$ imediatamente ap9s a sua utili8a"o, e o processo somente continua no instru"o
imediatamente ap9s o endloo$. Normalmente utili8ado 5uando se 5uer testar condi"2es dentro do
loop.
E).:
re$ort e"em$lo.
tables t1--.
data sa$=count ty$e i.
select * from t1-- where s$rsl > sy-langu and
arbgb > ?ds?.
write , t1---te"t.
if t1---te"t cs ?sa$?.
add 1 to sa$=count.
if sa$=count > 3.
e"it.
endif.
endif.
endselect.
p
1.00 - 36
ABAP
REPORT
1ovas p&!inas . new $age
Hoc> vai utili87!lo para causar a saDda do comando 0rite para gerar uma nova p7gina. * pagina"o do
sistema autom7tica, especificado no ca'e"al1o do relat9rio.
/int.:
...
new-$age @no title A with-titleB
@no heading A with-headingB
@line-count o n (m!B
@line-si*e kB
@$rint on A $rint offB
...
n, m e k so vari7veis numricas ou literais.
no title desativa o tDtulo padro nas p7ginas seguintes e with-title ativa.
no heading desativa o tDtulo ca'e"al1o!padro de coluna nas p7ginas seguintes e with-
heading ativa.
line-count configura o n?mero de lin1as por p7gina e o n?mero de lin1as reservado na
parte inferior de cada p7gina para um rodap.
line-si*e configura o n?mero de colunas de saDda para as p7ginas seguintes.
$rint on fa8 com 5ue a saDda das instru"2es write sejam enviadas para o spool em ve8 da
lista, s9 permitindo a visuali8a"o do relat9rio atravs do spool e o $rint off fa8 o contr7rio.
O comando new-$age no aciona o evento end-of-$age.
6le pode ser utili8ado em 5ual5uer ponto do programa.
p
1.00 - 37
ABAP
REPORT
2O3E
Para mover uma valor de um campo para outro, utili8e o comando move. Parte do conte?do ou todo
ele pode ser movido. *o invs de move possDvel utili8ar o operador se atri'ui"o V.
/int.:
...
data+ number ty$e i
fi#e ty$e i.
mo#e < to fi#e.
mo#e fi#e to number.
...
p
1.00 - 38
ABAP
REPORT
%o
O comando do correspondente a um mecanismo de loop '7sico.
/int.:
...
do.
write+ , ?sy-inde" - begin+? (3! sy-inde".
if sy-inde" > 1-.
e"it.
endif.
write+ ?end+? (3! sy-inde".
enddo.
...
p
1.00 - 39
ABAP
REPORT
Tabelas de !erencia(en'o do sis'e(a
operacional
*lgumas vari7veis foram criadas para validar a e,ecu"o e entrada de dados no sistema, estas vari7veis
encontram!se na estrutura %R%:.
E).:
sy-subrc Halor de retorno de acordo com determinadas instru"2es *E*P/G
sy-datum %istema: &ata do dia do logon
sy-uname %esso: <su7rio %*P no %*P logon
sy-langu +9digo de idioma do logon no sistema %*P
...
p
1.00 - 40
ABAP
REPORT
"ase
O comando case e,ecuta uma srie de compara"2es onde somente as instru"2es ap9s a primeira
correspond>ncia when sero e,ecutadas. %endo muito semel1ante a if/elseif, sendo sua ?nica
diferen"a 5ue em cada if/elseif voc> pode especificar uma e,presso comple,a e em case s9
pode especificar um ?nico valor a ser comparado e os valores so sempre comparados 5uanto a
igualdade. *s strings de campo so tratadas como sendo vari7veis de tipo +
/int.:
...
data: one t'pe i /al$e ,
three t'pe p /al$e ".
fo$r t'pe p /al$e 4.
do 4 times.
case s'-index.
when one.
write / 'that is'.
when !.
write 'a'.
when three.
write '%ood'.
write 'example'.
when others.
write ';'.
endcase.
enddo.
...
p
1.00 - 41
ABAP
REPORT
"onca'ena'e
<ne duas ou mais lin1as ou campos, voc> ter7 de informar onde os dados sero posicionados.
/int.:
...
data+ one(1-! #alue ?Cohn?
two(3! #alue ?D.?
three(1-! #alue ?Eennedy?
name(2-!.
concatenate one two three into name se$arated by s$ace.
...
0es1ltado:
Cohn D. Eennedy
p
1.00 - 42
ABAP
REPORT
"ondense
<tili8e o comando condense para unir campos 1avendo a necessidade de desloc7!los da posi"o em
5ue se encontram.
E).:
report zexemplo.
data name-"0..
name-0. = '<r.'.
name,0-0. = '=ichael'.
name,!0-0. = '>ofmann'.
condense name.
write name.
0es1ltado:
Fr. Michael Gofmann
p
1.00 - 43
ABAP
REPORT
4or(a' color / 5ri'e color
Para diferenciar ou destacar uma ou mais lin1as voc> utili8a os comandos format color e write
color.
/int.:
...
loop at i*tab.
if /*fla% is initial.
format color ! intensified on.
/*fla% = '?'.
else.
format color ! intensified off.
clear /*fla%.
endif.
write: /00 i*tab-tabname-#.,
0@ i*tab-fieldname-#.,
0"4 i*tab-rollname-#.,
0# i*tab-domname-#.,
0&A i*tab-datat'pe,
0@4 i*tab-len% no-zero,
0A! i*tab-decimals no-zero,
050 i*tab-tabclass.
endloop.
p
1.00 - 44
ABAP
REPORT
...
p
1.00 - 45
ABAP
REPORT
$)(bolos e )cones
Hoc> tem a op"o de criar sDm'olos e Dcones para os seus programas.
<m s'mbol uma figura 'icolor simples de um sDm'olo comum como um circulo, 5uadrado, uma
pasta ou documento ocupando em sua maioria apenas um caracter na lista de saDda, tendo alguns
ocupando dois caracteres] j7 um icon semel1ante a um sDm'olo e,ceto por ser multicolorido,
c1egando a ocupar at mais 5ue dois caracteres.
/int.:
...
:H96IF7 <1JM/46>.
K2:;7+ , 1JM=2:LG;=G.HF .1 1JM/46 M out$ut as symbol
?;i$ Hote?
1JM=67D;=G.HF .1 1JM/46. M out$ut as symbol
...
...
:H96IF7 <:94H>.
K2:;7+ , :94H=4E.J .1 :94H Mout$ut as icon
?;e"t line?.
...
p
1.00 - 46
ABAP
REPORT
T)'ulos dos rela'0rios . te"t elements
Caminho: +li5ue no menu a op"o IFerramentasJ L IABAP WorkbenchJ
+li5ue no 'oto IEditor ABAPJ.
+1egando na tela do IABAP/4 EditorJ, selecione a op"o I(e)t3elementsJ e cli5ue em
criar ou modificar
Hoc> pode definir os elementos de te,tos num relat9rio.
Hoc> edita um titulo] define um ca'e"al1o] define colunas.
%int.:
...
write #a te"t---1.
...
te"t---1 o elemento de te,to 5ue voc> tra'al1ar7.
p
1.00 - 47
ABAP
REPORT
Reservando lin6as . reser#e
Hoc>, as ve8es, pode necessitar escrever de maneira agrupada informa"2es relacionadas 5ue se
distri'uem por v7rias lin1as, para isso voc> pode utili8ar o comando reser#e, 5ue reservar7 lin1as
em um relat9rio para 5ue no 1aja 5ue'ra indevida de informa"o.
4uando o comando reser#e e,ecutado, o sistema verifica se 17 n

lin1as disponDveis na p7gina


atual, se 1ouver menos 5ue n lin1as so'rando na p7gina atual, uma 5ue'ra de p7gina ocorrer7
acionando o end-of-$age se e,istir#, seguido pelo comando to$-of-$age se e,istir# fa8endo a
instru"o 0rite come"ar na parte superior da nova p7gina. %e pelo menos n lin1as no estiverem
disponDveis 5uando a instru"o reser#e for e,ecutada, o c9digo no far7 nada.
^
n um literal numrico e vari7vel.
/int.:
...
select * from <table>.
reser#e 3 lines.
write+ , <table-c1> <table-c2>
, <table-c3> <table-cN> <table-c<>
, <table-cO>.
s%i$.
endselect.
to$-of-$age.
write , '2elatPrio).
uline.
...
<table> uma ta'ela.
<table-cn> so os campos da ta'ela.
0es1ltado:
Relat9rio
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@@@@@ %o Paulo
Rua %o Paulo, ____
C@@!___!____
@@@@A Rio [rande do %ul
Rua Porto *legre, ____
CG@!___!____
p
1.00 - 48
ABAP
REPORT
E).:
p
1.00 - 49
ABAP
REPORT
4or(a'o de p&!inas
Hoc> pode usar parYmetros para controlar o taman1o da p7gina do relat9rio, para isso voc> pode
utili8ar os seguintes comandos:
line-si*e &efine a largura da p7gina
line-count &efine o n?mero de lin1as por p7gina.
/int.:
re$ort *teste line-si*e 132 line-count 1<.
tables...
...
p
1.00 - 50
ABAP
REPORT
*ncluindo dados . a$$end
Para adicionar uma ?nica lin1a em uma ta'ela interna, voc> pode utili8ar o comando a$$end ele
copia uma ?nica lin1a de 5ual5uer 7rea de tra'al1o e a coloca no corpo ao final da lin1as e,istentes,
podendo ser a lin1a de ca'e"al1o ou 5ual5uer outra string de campo com a mesma estrutura de uma
lin1a no corpo.
/int.:
.$$end wa to it.
wa o nome de uma 7rea de tra'al1o
it o nome de ta'ela interna.
p
1.00 - 51
ABAP
REPORT
A!rupando dados . collect
*rma8ena os dados somando os campos numricos de uma ta'ela interna, assegurando 5ue no 1aver7
duplicidade de registros. 4uando o collect for e,ecutado, o sistema formar7 uma c1ave a partir dos
campos de c1ave padro da 7rea de tra'al1o, o sistema pes5uisar7 o corpo da ta'ela interna 5uanto
uma lin1a com uma mesma c1ave da5uela na 7rea de tra'al1o.
p
1.00 - 52
ABAP
REPORT
"lassificar os dados . sort
Para classificar o conte?do de uma ta'ela interna voc> pode utili8ar o comando sort, as lin1as podem
ser classificadas por uma ou mais colunas em ordem ascendente ou descendente, sendo 5ue a pr9pria
se5u>ncia de classifica"o pode ser alterada.
E).:
report zexemplo.
data: be%in of person occ$rs #,
name-0. t'pe c,
a%e t'pe i,
co$ntr'-". t'pe c,
end of person.
person-name = '=$ller'. person-a%e = !!.
person-co$ntr' = 'B8C'. append person.
person-name = '=oller'. person-a%e = !#.
person-co$ntr' = 'D7E'. append person.
person-name = '=Fller'. person-a%e = !!.
person-co$ntr' = 'B8C'. append person.
person-name = '=iller'. person-a%e = !".
person-co$ntr' = 'B8C'. append person.
sort person.
0es1ltado:
=iller !" B8C
=oller !# D7E
=$ller !! B8C
=Fller !! B8C
p
1.00 - 53
ABAP
REPORT
er os dados . loo$ at
Para ler algumas ou todas as lin1as de uma ta'ela interna, voc> pode utili8ar a instru"o loo$ at, ela
l> o conte?do da ta'ela interna, colocando as lin1as do conte?do, uma por ve8, na 7rea de tra'al1o. O
loop termina automaticamente 5uando a ?ltima lin1a lida e a instru"o ap9s endloo$ e,ecutada.
/int.:
...
loo$ at itab into struc.
write+ , struc-name struc-blnce.
endloo$.
...
...
loo$ at itab into struc where blnce <> -.
write+ struc-name struc-blnce.
endloo$.
...
p
1.00 - 54
ABAP
REPORT
"on'role de quebras
at first at last
Hoc> pode utili8ar estes comandos para e,ecutar um trec1o entre a primeira e a ?ltima passagem do
loop por uma ta'ela interna.
O's.: :odos estes comandos devem ser finali8ados com endat.
/ist.:
...
loo$ at itab.
...
at first.
...
endat.
...
at last.
...
endat.
...
endloo$.
...
at new at end of
<tili8e estes comandos para detectar uma altera"o em uma coluna de uma passagem de loop para a
seguinte.
O's.: :odos estes comandos devem ser finali8ados com endat.
/ist.:
...
sort by c.
loo$ at itab.
...
at new c.
...
endat.
...
at end of c.
...
endat.
...
endloo$.
...
p
1.00 - 55
ABAP
REPORT
p
1.00 - 56
ABAP
REPORT
$eleo $i(ples . $arameters
6ste comando 5uando e,ecutado em um programa gera um campo de entrada de dados numa tela de
sele"o antes do programa realmente em si ser e,ecutado, esta tela onde voc> digitar7 a informa"o
5ue ser7 a c1ave para a sele"o dos dados do seu programa.
/int.:
$arameters $1 @(1!B @ty$e tB @decimals dB...
$1 o nome do parYmetro.
1 a especifica"o interna de comprimento.
t o tipo de dado
d o n?mero de espa"os decimais utili8ado apenas como tipo p#.
E).:
report 8e,emplo
parameters aircom li/e spfli!carrid.
0es1ltado:
p
1.00 - 57
ABAP
REPORT
$eleo co( u( in'ervalo . select-o$tion
%emel1ante ao comando $arameters, o comando select-o$tions cria critrios de sele"o para
um campo do 'anco de dados, a diferen"a 5ue select-o$tions e,i'e dois campos para entrada
de dados com um intervalo entre eles, campo to e campo from, podendo ser restringido a um s9 campo
com no-inter#als na sinta,e select-o$tions.
E).2
report zexemplo.
tables sbook.
select-options fl*date for sbook-fldate.
initialization.
mo/e: '0' to fl*date-si%n,
'12' to fl*date-option,
s'-dat$m to fl*date-low.
append fl*date.
mo/e: '34' to fl*date-option
,
'55&00' to fl*date-low,
'55&0&"0' to fl*date-hi%h.
append fl*date.
0es1ltado:
p
1.00 - 58
ABAP
REPORT
$eleo Pr78%efinida . chec%bo"
Os paramentos podem ser criados como campos de dados 5ue conten1am apenas um valor de entrada e
tam'm podem ser criados como cai,as de sele"o. 4uando os $arameters assumem a forma das
cai,as de se@e"o, eles so declarados como tipo + e dessa forma arma8enam o valor de 4 5uando
verificados e da tecla 6spa"o 5uando no verificados. <ma 'oa utili8a"o do parYmetro chec%bo"
solicitar ao usu7rio para indicar se ele 5uer 5ue certos componentes de um relat`rio sejam e,i'idos.
$e*eo e( u( !rupo . radiobutton
*ssim como o c1ec/'o,, o radio'utton est7 selecionado ou no, mas somente operam em um ou mais
grupos, sendo 5ue apenas um ?nico do grupo pode estar selecionado no momento da e,ecu"o do
programa.
/int.2
...
selection-screen begin of bloc% rad=bl% with frame title te"t-444.
$arameters+ rad=e"l radiobutton grou$ one
rad=e"2 radiobutton grou$ one
rad=e"l radiobutton grou$ one
selection-screen end of bloc% rad-bl%.
...
p
1.00 - 59
ABAP
REPORT
No e,emplo a'ai,o estaremos demonstrando $arameters, chec%bo" e radiobutton.
E).:
report zexemplo.
parameters: p-#. t'pe c,
p! like p obli%ator' lower case,
p" like s'-dat$m defa$lt s'-dat$m,
cb as checkbox,
cb! as checkbox,
rb radiob$tton %ro$p % defa$lt G?H,
rb! radiob$tton %ro$p %,
rb" radiob$tton %ro$p %.
write:/ 'Io$ entered:',
/ G p = G, p,
/ G p! = G, p!,
/ G p" = G, p",
/ G cb= G, cb,
/ G cb!= G, cb!,
/ G rb= G, rb,
/ G rb!= G, rb!,
/ G rbl= G, rb".
0es1ltado:
p
1.00 - 60
ABAP
REPORT
3arian'es
4uando voc> entra com os mesmos dados constantemente voc> pode salvar estes dados em uma
variante.
Para 5ue se salve os dados, voc> deve estar na tela onde eles sero preenc1idos e cli5ue no Dcone de
salvar, de um nome para sua variante. Preenc1a a tela como do e,emplo a'ai,o.
p
1.00 - 61
ABAP
REPORT
E-pandir lin6as do rela'0rio . at line-
selection
<m programa de relat9rio consiste de uma simples lista de informa"2es, isto significa 5ue 5uando o
relat9rio e,ecutado os dados esto disponi'ili8ados de acordo com o 5ue o l1e foi solicitado. 6stes
relat9rios podem se tornar e,tensos, sendo 5ue muitas ve8es seu foco distorcido mediante tantas
informa"2es. Para estas situa"2es utili8amos o recurso de listas secund7rias.
6ste tipo de relat9rio no pode ser e,ecutado em 'ac/ground, a atua"o do usu7rio direta.
4uando 1ouver necessidade de informa"2es adicionais, o usu7rio interage durante a e,ecu"o.
Relat9rios )nterativos permitem voce utili8ar listas secund7rias, outros relat9rios e transa"2es passando
dados entre eles atravs do comando 3)&6.
6ventos de controle de um Relat9rio )nterativo:
*t line!selection ! Ocorre ap9s o usu7rio clicar duas ve8es so're uma lin1a do relat9rio.
*t P( SnnL ! Ocorre ap9s o usu7rio pressionar uma tecla de fun"o.
6,emplos: 3elp ! (@ / +ancel ! (@3 / 6,it ! (@U
*t user!command ! Ocorre ap9s o usu7rio clicar um 'oto definido na tela.
p
1.00 - 62
ABAP
REPORT
Para o ca'e"al1o da lista secund7ria utili8e o comando ! :op!of!page during line!selection
*'ai,o relacionamos algumas vari7veis do sistema 5ue ajudam nos controles das listas secund7rias.
p
1.00 - 63
ABAP
REPORT
,ui in'erface / ,ui s'a'us / $e' pf8s'a'us / $e'
'i'lebar / A' user co(aand
gui interface
6sta ferramenta nos permite montar um I!en1 Painter2 onde voc> define fun"2es como no .indo0s,
tratada como interface com o usu7rio.
:itle Ear :itulo do $enu Painter
$enu Ear $enu 5ue sera criado
%tandard :oolEar Onde voc> define Dcones
*plication :oolEar Eotoes novos.
gui status
a defini"o do tipo fun"2es de um $enu 5ue sero ativados ou desativados:
:ipos de %tatus
%crenn
&ialog Eo,
Mist
Mist in &ialog Eo,
set $f-status
um comando para uso da determina"o da LI: para cada lista criada. Hoc> se refere a um status e
tem 5ue definir o I!en1 PainterJ. Para uma lista '7sica voc> pode escol1er o sua LI: com status tipo
IM)%:J
Na realidade um nome com m7,imo de B caracteres, para acionar a sua LI:
set titlebar
6ste comando e para determina"o do tDtulo da sua LI:.
at user-comand
6ste comando 5ue vai controlar a a"o do usu7rio ap9s definida a sua LI:.
p
1.00 - 64
ABAP
REPORT
*s figuras a'ai,o demonstram como criar fun"2es em uma tela:
6ntre na %63B e informe as ta'elas com as 5uais ir7 tra'al1ar, salve e saia.
6ntre na op"o !en1 Painter para 1a'ilitar as fun"2es.
Preenc1a as informa"2es conforme modelo a'ai,o.
p
1.00 - 65
ABAP
REPORT
%iga as recomenda"2es 5ue esto com a^b para definir as fun"2es. O'serve 5ue e,istem o PE) Process
after )nput# e o PEO Process 'efore output#.
p
1.00 - 66
ABAP
REPORT
%iga como a'ai,o.
%iga as recomenda"2es 5ue esto com a^b ou ap9s aJb.
p
1.00 - 67
ABAP
REPORT
%iga as recomenda"2es 5ue esto com a^b ou ap9s aJb.
6sta funcionalidade permite 5ue voc> crie Dcones e fun"2es. 6,.: Eot@ e EotA.
p
1.00 - 68
ABAP
REPORT
6st7 op"o deve ser utili8ada para criar o tDtulo.
p
1.00 - 69
ABAP
REPORT
is'as secundarias co( 9anelas :"o(ando
5indo;<
6ste comando voc> especifica as coordenadas de uma janela. * se5T>ncia inicio da coluna e n?mero
da lin1a., finali8a fim da coluna e fim da lin1a. *utomaticamente crida uma janela, ou voc> pode
escol1er list in dialog bo" de uma LI:, onde voc> cria titulo, 'ot2es dentro desta janela.
6,.: window starting at c1 l1
ending at c2 l2
Para gerar um tDtulo para 0indo0 use o adi"o no comando with frame title...#.
p
1.00 - 70
ABAP
REPORT
"o(ponen'es de li!ao
&entro do programa de *E*P voc> pode c1amar outros programas de report ou transa"o atravs dos
comandos call e submit.
"6a(ando ou'ro rela'0rio . submit
6ste comando utili8ado 5uando for necess7rio dentro de um programa voc> c1amar e processar outro
programa. Hoc> pode impor condi"2es para 5ue o submit ocorra, tam'm pode declarar o nome do
programa 5ue vai ser e,ecutado.
p
Nome da ta'ela selecionada ou
campo
e5, ne, cp, np, ge, lt, le, gt
Nome do campo ou constante
:a'ela interna com strutcure
R%P*R*$%
Nome do campo ou constante
:a'elas internas declaradas
usando [*N[6%
Nome da variante selecionada
1.00 - 71
ABAP
REPORT
Re'orno ao rela'0rio . submit and return
6ste comando semel1ante ao anterior, sendo sua diferen"a a op"o de retornar ao programa principal
ap9s ser processado o programa 5ue foi c1amado por s)bmi#.
/int.:
...
submit re$ort-1
#ia selection-screen
using selection-set ?#ariant1?
using selection-sets of $rogram ?re$ort--?
and return.
...
p
1.00 - 72
ABAP
REPORT
Transferncia de dados . e"$ort / im$ort
6stes comandos podem ser usados para importar ou e,portar dados entre dois programas 5ue fa8em
parte de uma se5T>ncia de c1amada.
No es5uecer 5ue voc> tem 5ue ter um submit no programa 5ue vai e,portar os dados.
Hoc> pode utili8ar o parYmetro id 5ue ajudar7 a gerenciar a mem9ria evitando 5ue no futuro ten1a
pro'lemas com o grande volume de mem9ria ocupada por esta opera"o.
/int.:
E3(O45 6'a#a",)s#$!7 #o m$mo!8.
I&(O45 6'a#a",)s#$!7 #o m$mo!8.
Os parYmetros to e from so opcionais.
E).:
report exemplo.
tables indx.
data: indxke' like indx-srtfd /al$e 'ke'/al$e',
f-4., f! t'pe p,
be%in of itab" occ$rs !,
cont-4.,
end of itab".
indx-aedat = s'-dat$m.
indx-$sera = s'-$name.
* export data.
export f f! itab" to
database indx-st. id indxke'.
report exemplo.
tables indx.
data: indxke' like indx-srtfd,
f-4., f! t'pe p,
be%in of tab" occ$rs 0,
cont-4.,
end of tab".
indxke' = 'indxke''.
import f f! tab" from database indx-st. id indxke'.
p
1.00 - 73
ABAP
REPORT
"ons'an's
+omo o nome j7 di8 uma constante, sendo 5ue 5uase id>ntica a uma vari7vel, e,ceto 5uanto ao fato
de 5ue seu valor no poder7 ser alterado. * instru"o constants semel1ante = instru"o data]
entretanto, a adi"o do comando #alue necess7rio. O comando constants pode ser usado
5uando for incluir um literal v7rias ve8es no mesmo programa definindo um valor igual ao da literal e
utili8ar a constante no corpo do programa e 5uando for necess7rio alterar o valor de sua literal 'asta
apenas alterar o valor de sua constante.
/int.:
constants co1@(l!B @ty$e tB @decimals dB #alue ?*a*a?.
co1 o nome da constante
(l! a especDfica"o interna de comprimento.
t o tipo de dado.
d o n?mero de casas decimais utili8adas apenas com o tipo $#.
'zaza' um literal 5ue fornece o valor da constante.
E).:
...
constants char /al$e 'x'.
...
constants int t'pe i /al$e 55.
...
constants: be%in of const*rec,
c-!. t'pe i /al$e 'xx',
n-!. t'pe n /al$e '!',
x t'pe x /al$e 'ff',
i t'pe i /al$e 55,
p t'pe p /al$e 55,
f t'pe f /al$e '5.55e5',
d t'pe d /al$e '55#00',
t t'pe t /al$e '!"#5#5',
end of const*rec.
...
p
1.00 - 74
ABAP
REPORT
T=pes
* instru"o ty$es utili8ada para definir seus pr9prios tipos de dados e orientar!se nos tipos j7
e,istentes.
/int.:
t-pes tp@c# t-pe t decimals d.
t-pes tp@ li/e g@.
t$1 o nome do tipo.
g1 o nome de uma vari7vel previamente definida no programa ou o nome de um campo 5ue
pertence a uma ta'ela ou estrutura no &ata &ictionar-.
d# a especDfica"o interna de comprimento.
t o tipo de dado.
d o n?mero de casas decimais utili8adas apenas com o tipo p#.
E).:
report zexemplo.
t'pes wa-!. t'pe c.
data: /a t'pe wa /al$e 'DK=1',
/a! t'pe wa /al$e '81<1'.
write /a, /a!.
0es1ltado:
D4M7 17F7
:ipos de ;y$es:
5io D$s"!i*+o 5amanho 9a,o! Ini"ia,
9
:e,to +aracter# @
1$ace
H
:e,to Numrico @
?--...-?
F
&ata RRRR$$&&# B
?--------?
;
3ora 33$$%%# `
?------?
8
3e,adecimal @
8?--?
:
.1ole num'er integer# G
-
0
Pac/ed num'er B
-
D
(loating point num'er B
?-.-?
p
1.00 - 75
ABAP
REPORT
T=pes Es'ru'urados
5uando um tipo definido pelo usu7rio pode ser 'aseado na defini"o de uma string de campo,
utili8ado para redu8ir a redundYncia e tornar a manuten"o mais f7cil.
e,emplo:
report zexemplo.
t'pes: be%in of address,
street-!&.,
cit'-#.,
postal*code-5.,
end of address.
data: c$stomer*addr t'pe address,
/endor*addr t'pe address.
c$stomer*addr-street = 'zazzaza'.
write: / c$stomer*addr-street.
p
1.00 - 76
ABAP
REPORT
"lear
O comando clear configura o valor de uma vari7vel ou string de campo como 8ero. %e o dado do
tipo c, o valor , por sua ve8, ser7 configurado como espa"os em 'ranco.
/int.:
clear c1 @with c2 + with ?.?+ with nullB
c1 e cA so nomes de string de campo ou vari7veis.
?.? um literal de 5ual5uer comprimento.
E).:
...
<C4C: 41?4-0. LCMB1 '>ello',
NB=317 4I:1 0 LCMB1 !"4#,
7K6-0. 4I:1 N LCMB1 '!"4#&@A50',
31E0N KD :MCI17,
NC=1-0. LCMB1 'Oohn',
41M-A. 4I:1 N LCMB1 '0A#4@',
=KN1I 4I:1 : LCMB1 "0000,
1N< KD :MCI17.
...
PM1C7: 41?4, NB=317, :MCI17.
...
p
1.00 - 77
ABAP
REPORT
4ree
<tili8e o comando free para e,cluir todas as lin1as de uma ta'ela interna e li'erar a mem9ria
associada. :ra'al1a da mesma forma 5ue o comando clear.
/int.:
free itab.
itab uma ta'ela interna com ou sem uma lin1a de ca'e"al1o.
todas as lin1as so e,cluDdas e toda a mem9ria utili8ada pelo corpo da ta'ela interna li'erada.
a lin1a de ca'e"al1o, se e,istir, permanecer7 inalterada.
utili8e free 5uando terminar de utili8ar uma itab.
E).:
data: be%in of itab occ$rs ",
t like s'-index,
end of itab.
do " times.
itab-t = s'-index.
append itab.
enddo.
loop at itab.
write itab-t.
endloop.
free itab.
if itabQR is initial.
write: / 'n(o existe indica)(o na itab apSs instr$)(o free'.
endif.
0es1ltado:
1 2 3
nQo e"iste indicaRQo na itab a$Ps instruRQo free
p
1.00 - 78
ABAP
REPORT
Refres6
6le e,clui todas as lin1as de uma ta'ela interna, mas dei,a a mem9ria alocada, voc> utili8a 5uando
5uiser preenc1er a ta'ela novamente. %e voc> necessita utili8ar a ta'ela imediatamente ap9s limp7!la, o
comando refresh mais eficiente do 5ue free j7 5ue impede aloca"2es desnecess7rias de
mem9ria.
/int.:
refresh itab.
itab uma ta'ela interna com ou sem uma lin1a de ca'e"al1o.
:odas as lin1as so e,cluDdas. :oda a mem9ria utili8ada pelo corpo da ta'ela interna permanece
alocada.
* lin1a de ca'e"al1o, se e,istir, permanecer7 inalterada
E).:
data: be%in of itab occ$rs ",
t like s'-index,
end of itab,
/ like s'-index.
do " times.
/ = s'-index.
do " times.
itab-t = / * s'-index.
append itab.
enddo.
write: / ''.
loop at itab.
write itab-t.
endloop.
refresh itab.
enddo.
0es1ltado:
1 2 3
2 N O
3 O S
p
1.00 - 79
ABAP
REPORT
E-ecu'ando "&lculos
com$ute
)nstru"o utili8ada com mais fre5T>ncia para e,ecutar c7lculos.
/int.:
com$ute #a3 > #a1 o$ #a2
#a3 a vari7vel de rece'imento do resultado do c7lculo.
#a1 e #a2 so os operandos.
o$ um operador matem7tico.
E).:
...
/a" = /a! , /a".
/a = - /a! , /a" . * /a4
...
4uando for necess7rio tra'al1ar com par>nteses utili8e um espa"o, I I , I #J, antes e depois do valor
dentro do par>nteses.
add ou add-corres$onding
O comando add utili8ado para adicionar um n?mero a outro, com add-corres$onding as
strings de campo com os dados 5ue t>m o mesmo nome podem ser adicionadas juntamente.
/int.:
...
add #a1 to #a2.
add-corres$onding st1 to st2
...
p
1.00 - 80
ABAP
REPORT
*ssim como demonstrado em add fun"o de adicionar# a'ai,o demonstraremos su'trair, multiplicar
e dividir. *s instru"2es a'ai,o operam de forma semel1ante a add.
subtract ou subtract-corres$onding
/int.
subtract #a1 from #a2.
subtract-corres$onding st1 from st2.
multi$ly ou multi$ly-corres$onding
/int.2
multi$ly #a1 by #a2.
multi$ly-corres$onding st1 by st2.
di#ide ou di#ide-corres$onding
/int.2
divide va@ '- vaA.
divide!corresponding st@ '- stA.
p
1.00 - 81
ABAP
REPORT
"6ec+
*ssume a condi"o de )( mas com menos comple,idade, com a mesma efici>ncia e tam'm podendo
ser codificada dentro de um loop, passa o controle imediatamente = instru"o de termina"o do loop e
desviando das instru"2es intermedi7rias. *ceita uma e,presso l9gica. %e a e,presso for verdadeira,
no far7 nada. %e for falsa, pular7 para o final do loop.
/int.:
...
select ^ from mara 01ere matnr V @.
c1ec/ s-!su'rc V C.
...
E).:
report zexemplo.
tables: spfli,
sfli%ht.
...
select-options:
sf*price for sfli%ht-price,
sp*carr for spfli-carrid,
sp*from for spfli-cit'from no database selection,
sp*dept for spfli-deptime.
...
%et sfli%ht.
check select-options.
...
p
1.00 - 82
ABAP
REPORT
Read Table
utili8ado para ler e locali8ar uma ?nica lin1a 5ue corresponde aos critrios especDficos e a coloca em
uma 7rea de tra'al1o. O comando read table s9 pode ser utili8ado para a leitura de ta'elas
internas, no funcionando com 'anco de dados.
E).:
report zexemplo.
data: be%in of ti occ$rs ",
/a-!. t'pe n,
/a! t'pe i,
end of ti,
/a" like ti.
ti-/a = '#'. ti-/a! = !. append ti.
ti-/a = '0'. ti-/a! = #. append ti.
read table ti index !.
write: / 's'-s$brc =', s'-s$brc,
/ 's'-tabix =', s'-tabix,
/ ti-/a, ti-/a!.
0es1ltado:
sy-subrc > -
sy-tabi" > 2
1- <
p
1.00 - 83
ABAP
REPORT
*nser'
Hoc> pode utili87!lo para inserir uma ?nica lin1a em uma ta'ela interna.
%int.:
...
insert @wa intoB itab @inde" nB
...
wa uma 7rea de tra'al1o com a mesma estrutura de uma lin1a de ta'ela interna itab.
n uma constante, literal ou vari7vel numrica.
se wa for especificado, o conte?do dela ser7 inserido em itab. wa dever7 ter a mesma
estrutura 5ue itab.
se wa no for especificado, o conte?do da lin1a de ca'e"al1o ser7 inserido em ita'. %e itab
no tiver uma lin1a de ca'e"al1o, wa dever7 ser especificado.
se inde" for especificado, a nova lin1a ser7 inserida antes da lin1a n. * lin1a n se tornar7
ento a lin1a n c @.
a instru"o insert pode ser utili8ada dentro ou fora de loo$ at itab. %e utili8ada fora, a
adi"o inde" dever7 ser especificada. %e utili8ada dentro, inde" ser7 opcional. %e a adi"o
no for especDficada, a lin1a atual ser7 assumida.
e,emplo:
data: be%in of itab occ$rs #,
fa like s'-index,
end of itab.
do # times.
itab-fa = s'-index.
append itab.
enddo.
itab-fa = -55.
insert itab index ".
loop at itab.
write / itab-fa.
endloop.
loop at itab where fa T= 4.
itab-fa = -AA.
insert itab.
endloop.
skip.
loop at itab.
write / itab-fa.
endloop.
p
1.00 - 84
ABAP
REPORT
0es1ltado:
1
2
SS-
3
N
<

1
2
SS-
3
TT-
N
TT-
<
p
1.00 - 85
ABAP
REPORT
2odif=
%erve para modificar o conte?do de uma ou mais lin1as de uma ta'ela interna
/int.:
modify itab @from waB @inde" nB @trans$orting c1 c2 ... @where expBB
itab o nome de uma ta'ela interna com ou sem uma lin1a de ca'e"al1o.
wa uma 7rea de tra'al1o com a mesma estrutura de uma lin1a no corpo de ita'.
v uma constante, vari7vel ou literal numrica.
c1 e cp2 so componentes de itab.
el uma e,presso l9gica envolvendo componentes de ita'.
obs.:
se from wa for especificada, a lin1a ser7 so'rescrita com o conte?do de wa.
se from wa no for especificada, a lin1a ser7 so'rescrita com o conte?do da lin1a de ca'e"al1o.
se inde" n for especificada, n identificar7 o n?mero da lin1a 5ue foi so'rescrita.
modify itab pode ser especificada dentro ou fora de loo$ at itab. %e especificada fora,
inde" n dever7 ser especificado. 4uando especificada dentro, inde" n ser7 opcional. %e no for
especificada, a lin1a atual ser7 modificada.
trans$orting especifica 5uais componentes devem ser so'rescritos e o restante permanecer7
inalterado. %em ela, todos eles sero so'rescritos.
usar a condi"o where depois de trans$orting far7 com 5ue os componentes especificados
sejam so'rescritos em todas as lin1as 5ue satisfa8em a condi"o where. O lado es5uerdo de cada
parte de exp deve especificar um componente de itab. O mesmo componente pode ser
especificado depois de transporting e em exp.
No poder7 utili8ar modify itab com where:
! dentro do loo$ at itab
! com a adi"o inde"
p
1.00 - 86
ABAP
REPORT
E).:
report zexemplo.
data: be%in of itab occ$rs #,
t like s'-index,
t!,
end of itab,
%ama-#. /al$e 'pla$t'.
do # times /ar'in% itab-t! from %ama,0 next %ama,.
itab-t = s'-index.
append itab.
enddo.
itab-t! = '/'.
modif' itab index 4.
loop at itab.
write: / itab-t, itab-t!.
endloop.
loop at itab.
itab-t = itab-t * !.
modif' itab.
endloop.
skip.
loop at itab.
write: / itab-t, itab-t!.
endloop.
itab-t! = '6'.
modif' itab transportin% t! where t UT 0.
skip.
loop at itab.
write: / itab-t, itab-t!.
endloop.
0es1ltado:
1 $
2 l
3 a
< #
< t

2 $
N l
O a
1- #
1- t

2 K
p
1.00 - 87
ABAP
REPORT
N K
O K
1- #
1- t
p
1.00 - 88
ABAP
REPORT
%ele'e
+om o comando delete voc> poder7 e,cluir uma ou mais lin1as de uma ta'ela interna. %emel1ante
as inser"2es, as e,clus2es dentro do loo$ at itab no afetaro imediatamente a ta'ela interna, ao
contr7rio, se tornaro efetivas na pr9,ima passagem do loo$.
/int.:
Felete itab @inde" cB
@from vB @to lB
@where expB
itab uma ta'ela interna
c, v e l so constantes, vari7veis e literais numricos
exp uma e,presso l9gica envolvendo os componentes de itab.
Occurs
No limita o n?mero de lin1as 5ue pode ser adicionado = ta'ela interna, teoricamente o n?mero de
lin1as 5ue pode ser adicionado a uma ta'ela interna apenas limitado a mem9ria virtual disponDvel no
servidor do aplicativo. O sistema utili8a o comando occurs apenas como uma especifica"o para
determinar 5uanta mem9ria ser7 alocada.
p
1.00 - 89
ABAP
REPORT
5i'6 >e=s
%e a utili8a"o da adi"o for especificada, o sistema locali8ar7 uma lin1a 5ue corresponda com a
e,presso /e- e a colocar7 na lin1a de ca'e"al1o. <sando a e,presso /e-, voc> pode procurar por
uma lin1a especificando um valor ao invs de Dndice.
E).:
report zexemplo
data: be%in of itab occ$rs ",
t-". t'pe n,
t! t'pe i,
t"-". t'pe c,
t4 t'pe p,
end of itab,
be%in of tabi,
t like itab-t,
t! like itab-t!,
end of tabi,
tabt like itab,
t-A..
itab-t = '00'.
itab-t" = 'pp'.
itab-t! = itab-t4 = .
append itab.
itab-t = '!00'.
itab-t" = 'll'.
itab-t! = itab-t4 = !.
append itab.
itab-t = '"00'.
itab-t" = 'aa'.
itab-t! = itab-t4 = ".
append itab.
read table itab with ke' t = '"00' t! = ".
write: / 's'-s$brc =', s'-s$brc,
/ 's'-tabix =', s'-tabix,
/ itab-t, itab-t!, itab-t", itab-t4.
t = 't!'.
read table itab into tabt with ke' -t. = !.
write: /,
/ 's'-s$brc =', s'-s$brc,
/ 's'-tabix =', s'-tabix,
/ itab-t, itab-t!, itab-t", itab-t4,
/ tabt-t, tabt-t!, tabt-t", tabt-t4.
clear tabi.
tabt-t = '00'.
tabt-t" = 'pp'.
p
1.00 - 90
ABAP
REPORT
tabt-t! = tabt-t4 = .
read table itab with ke' = tabt.
write: /,
/ 's'-s$brc =', s'-s$brc,
/ 's'-tabix =', s'-tabix,
/ itab-t, itab-t!, itab-t", itab-t4.
tabi-t = '!00'.
tabi-t! = !.
read table itab into tabt with ke' tabi.
write: /,
/ 's'-s$brc =', s'-s$brc,
/ 's'-tabix =', s'-tabix,
/ itab-t, itab-t!, itab-t", itab-t4.
0es1ltado:
sy-subrc > -
sy-tabi" > 3
3-- 3 .. 3

sy-subrc > -
sy-tabi" > 2
3-- 3 .. 3
2-- 2 66 2

sy-subrc > -
sy-tabi" > 1
1-- 1 00 1

sy-subrc > -
sy-tabi" > 2
1-- 1 00 1
p
1.00 - 91
ABAP
REPORT
4or(
&efine o fim do evento precedente e o come"o de uma su'!rotina. *s su'!rotinas no podem ser
e,cessivas no interior de eventos.
/int.:
form <sub> tables pa1 pa2...
using pa3 #alue pa4.
...
endform.
SsubL o nome da su'!rotina.
pa1 e pa2 so parYmetros.
E).:
4I:18: 31E0N KD DM0E>4*847BP,
DMPC770< M091 8DM0E>4-PC770<,
:70P1 M091 8DM0E>4-DM<C41,
1N< KD DM0E>4*847BP.

<C4C: =I*DM0E>4 4I:1 DM0E>4*847BP KPPB78 0,
03KK9 M091 83KK9 KPPB78 0,
03KK9! M091 03KK9 KPPB78 0,
847BP M091 83KK9.

:17DK7= <08:MCI B80NE =I*DM0E>4 03KK9 03KK9! 847BP.

DK7= <08:MCI B80NE :*04C3 M091 =I*DM0E>4QR
:*3KK9 M091 03KK9QR
:*3KK9! M091 03KK9!QR
:*847B M091 847BP.

<C4C: M*DM0E>4 M091 M0N1 KD :*04C3,
M*PC770< M091 M*DM0E>4-DMPC770<.
...
67041: / :*847B-PC770<, :*847B-PKNN0<.
...
MKK: C4 :*04C3 0N4K M*DM0E>4 6>171 DMPC770< = M*PC770<.
...
1N<MKK:.
1N<DK7=.
p
1.00 - 92
ABAP
REPORT
Perfor(
utili8ado para c1amar uma su'!rotina, no caso o form.
E).:
report zexemplo.
data: n$mber*i t'pe i /al$e #,
n$mber*p t'pe p /al$e 4,
be%in of person,
name-0. /al$e 'pa$l',
a%e t'pe i /al$e !A,
end of person,
alpha-0. /al$e 'abcdef%hiV'.
field-s'mbols UpointerT.
assi%n n$mber*p to UpointerT.
perform chan%e $sin%
n$mber*i
n$mber*p
UpointerT
person
alpha,n$mber*i-UpointerT..
*------------------------------------------------------------------*
* form chan%e *
*------------------------------------------------------------------*
* ........ *
*------------------------------------------------------------------*
* --T /al$e-par*. *
* --T par*n$mber*i *
* --T par*n$mber*p *
* --T par*pointer *
* --T par*person *
* --T par*part*of*alpha *
*------------------------------------------------------------------*
form chan%e $sin% /al$e-par*.
par*n$mber*i
par*n$mber*p
par*pointer
par*person str$ct$re person
par*part*of*alpha.
add par* to par*n$mber*i.
par*n$mber*p = 0.
par*person-name,4-. = alpha.
par*person-a%e = n$mber*p , !#.
add n$mber*i to par*pointer.
par*part*of*alpha = space.
endform.
p
1.00 - 93
ABAP
REPORT
*nclude
<m programa include um aplicativo em 5ue o conte?do projetado para ser utili8ado por outro
programa, podendo estar incluDdo em mais de um programa. Normalmente ele no completo so8in1o.
<m programa include deve ser do tipo i. O c9digo do programa include copiado como est7 e
su'stitui o comando include no tempo de gera"o do programa.
E).:
(!o1!ama (!in"ia,
report zexemplo.
tables: UtabT, Utab!T.
parameters /a*/ar like tab-camp.
incl$de: zexemp,
zexemp!.
top-of-pa%e.
write: / '7es$ltado', /a*/ar.
$line.
In",)'$ ZE3E&(1
*** incl$de zexemp.
select sin%le * from tab where camp = /a*camp.
In",)'$ ZE3E&(2
*** incl$de zexemp!.
select * from tab! where camp = tab-camp.
write: / tab!-camp.
endselect.
p
1.00 - 94
ABAP
REPORT
"all func'ion
6ste comando utili8ado para c1amar um m9dulo de fun"o. call function um comando
especDfico, no necessitando 5ue seja colocado pontos ou vDrgulas depois de parYmetros ou nomes de
e,ce"o. O nome do m9dulo deve ser codificado em letras mai?sculas, se for codificado em letras
min?sculas, a fun"o no ser7 locali8ada e um dump ocorrer7.
e,emplo:
data be%in of bdcdata occ$rs 00.
incl$de str$ct$re bdcdata.
data end of bdcdata.

data be%in of itab occ$rs 0.
incl$de str$ct$re bdcms%coll.
data end of itab.

data pro%ram like s'-repid

bdcdata-pro%ram = 'sapms"Am'.
bdcdata-d'npro = '000'.
bdcdata-d'nbe%in = 'x'.
append bdcdata.
clear bdcdata.
bdcdata-fnam = 'rs"Am-pro%ramm'.
bdcdata-f/al = pro%ram.
append bdcdata.
...
call transaction 'se"A' $sin% bdcdata mode 'n'
messa%es into itab.
p
1.00 - 95
ABAP
REPORT
Top8of8pa!e
6ste comando utili8ado para criar tDtulos personali8ados ca'e"al1os#. %e no 1ouver uma tela de
sele"o, o primeiro comando write e,ecutado acionar7 o to$-of-$age, caso o seu programa
possua uma tela de sele"o possDvel 5ue o to$-of-$age seja acionado duas ve8es, primeiro pelo
comando write e,ecutado antes da tela de sele"o ser mostrada ou pelo comando write e,ecutado
ap9s a tela de sele"o ser mostrada.
E).:
report zexemplo no standard pa%e headin%.
data: /a-#. /al$e '%ata',
/a!-#. /al$e 'carla'.
write: / 'Pomo /aiW'.
top-of-pa%e.
write: / '8rta.', /a!. $line.
0es1ltado:
p
1.00 - 96
ABAP
REPORT
End8of8pa!e
6ste comando cria rodaps de p7gina, os comandos 5ue estiverem ap9s o end-of-$age sero
e,ecutados antes da gera"o de cada nova p7gina. Hoc> precisa reservar espa"o na parte inferior da
p7gina line-count# para o end-of-$age.
E).:
report zexemplo line-co$nt #-!. no standard pa%e headin%.
data: /a-#. /al$e '%ata',
/a!-#. /al$e 'Parla'.
do !0 times.
write: / 'como /ai', s'-index, 'times'.
enddo.

top-of-pa%e.
write: / '8rta.', /a!.
$line.

end-of-pa%e.
write: / s'-$line,
/ '1ste X o rodapX com d$as linhas reser/adas'.
0es1ltado:
p
1.00 - 97
ABAP
REPORT
A' selec'ion8screen
processado depois da entrada do usu7rio na tela de sele"o ativa, podendo ocorrer ap9s o usu7rio
clicar um 'oto. *lm da verifica"o de valida"2es de dados, mensagens de aviso, altera"o do status
[<) e at mesmo janelas pop!up podem ser a'ertas utili8ando este evento.
E).:
...
select-options name for s'-repid modif id x'z.
...
at selection-screen o$tp$t.
loop at screen.
check screen-%ro$p = 'x'z'.
screen-intensified = ''.
modif' screen.
endloop.
....
p
1.00 - 98
ABAP
REPORT
A' user8co((and
Os 'ot2es, assim como muitas outras op"2es de tela de sele"o 'aseadas em evento, podem ser muito
?teis na manuten"o da intera"o com usu7rio e na valida"o de entrada do usu7rio.
data: n$mber t'pe i /al$e !0,
n$mber! t'pe i /al$e #,
res$lt t'pe i.

start-of-selection.
write: / n$mber, 'W', n$mber!.

at $ser-command.
case s'-$comm.
when 'add'.
res$lt = n$mber , n$mber!.
when 's$bt'.
res$lt = n$mber - n$mber!.
when 'm$lt'.
res$lt = n$mber * n$mber!.
when 'di/i'.
res$lt = n$mber / n$mber!.
when others.
write '$nknown f$nction code'.
exit.
endcase.
write: / 'res$lt:', res$lt.
0es1ltado:
2- U <
p
1.00 - 99
ABAP
REPORT
2essa!e
*s mensagens so mantidas e arma8enadas na ta'ela :@CC e podem ser acessadas a partir do *E*P
.or/'enc/. <m programador efetivo emite mensagens 5ue so descritivas e ajudam o usu7rio a
entender a nature8a do flu,o do programa.
possDvel atri'uir a cada instru"o de mensagem tipos de mensagem 5ue t>m diversos efeitos no
resultado do programa.
p

Você também pode gostar