Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Abap Report
Apostila Abap Report
Apostila Abap Report
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