Académique Documents
Professionnel Documents
Culture Documents
ABAP
REPORT
ABAP
REPORT
1.00 - 2
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.
ABAP
REPORT
1.00 - 3
ABAP
REPORT
1.00 - 4
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.
$enu do )nterface
Krea %creen
Earra de %tatus
ABAP
REPORT
1.00 - 5
"ores
Para 5ue voc> possa alterar as cores de seu am'iente tornando mais agrad7vel, utili8e o recurso a'ai,o demonstrado.
ABAP
REPORT
1.00 - 6
#cones no $AP
*'ai,o alguns e,emplos, com descri"o, dos Dcones 5ue voc> ter7 contato no %*P.
ABAP
REPORT
1.00 - 7
%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.
DICA: %e voc> digitar ISE11J no campo command a tela de entrada do *E*P &ictionarir7 surgir.
ABAP
REPORT
1.00 - 8
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.
ABAP
REPORT
1.00 - 9
%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 I Elem. dadosJ. <tili8aremos o campo Mandt para e,emplificar.
ABAP
REPORT
1.00 - 10
%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.
ABAP
REPORT
1.00 - 11
$'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.
ABAP
REPORT
1.00 - 12
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.
ABAP
REPORT
1.00 - 13
*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.
ABAP
REPORT
1.00 - 14
"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.
DICA: %e voc> digitar ISE38J no campo command a tela de entrada do editor de *E*P ir7 surgir.
ABAP
REPORT
1.00 - 15
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.
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.
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+:.
ABAP
REPORT
1.00 - 16
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#.
ABAP
REPORT
1.00 - 17
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.
ABAP
REPORT
1.00 - 18
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...
ABAP
REPORT
1.00 - 19
$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.
ABAP
REPORT
1.00 - 20
/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 ge le ne gt lt V LV SV SL L S VL VS LS
______________________________
ABAP
REPORT
1.00 - 21
<f2>...! from....
select <a1> <a2> ... into (<f1> 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 correspondente a uma ta'ela interna definida# of table <itab> . carrega os dados
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. 6ste comando no tem endselect.
ABAP
REPORT
1.00 - 22
______________________________ select into a$$endig corres$onding fields of 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 ______________________________
ABAP
REPORT
1.00 - 23
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. ______________________________
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.
ABAP
REPORT
1.00 - 24
______________________________ 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. ______________________________
<f2>...!
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.
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.
ABAP
REPORT
1.00 - 25
ABAP
REPORT
1.00 - 26
,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.
ABAP
REPORT
1.00 - 27
7879 156
:M042;
<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. ...
ABAP
REPORT
1.00 - 28
ABAP
REPORT
1.00 - 29
Even'os . selection
iniciali*ation/
start-of-
<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.
ABAP
REPORT
1.00 - 30
*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&0 0 ' to fl*date-low, ' 55&0&"0' to fl*date-hi%h. append fl*date.
ABAP
REPORT
1.00 - 31
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.
ABAP
REPORT
1.00 - 32
E).:
0es1ltado:
ABAP
REPORT
1.00 - 33
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 ...... / pula uma lin1a, $ posi"o da coluna#, l deslocamento a es5uerda#.
,$(l!
ABAP
REPORT
1.00 - 34
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.
ABAP
REPORT
1.00 - 35
ABAP
REPORT
1.00 - 36
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. ...
ABAP
REPORT
1.00 - 37
%o
O comando do correspondente a um mecanismo de loop '7sico. /int.: ... do. write+ , ?sy-inde" - begin+? if sy-inde" > 1-. e"it. endif. write+ ?end+? (3! sy-inde". enddo. ...
(3! sy-inde".
ABAP
REPORT
1.00 - 38
Tabelas de operacional
E).: sy-subrc sy-datum sy-uname sy-langu ...
!erencia(en'o
do
sis'e(a
*lgumas vari7veis foram criadas para validar a e,ecu"o e entrada de dados no sistema, estas vari7veis encontram!se na estrutura %R%:. Halor de retorno de acordo com determinadas instru"2es *E*P/G %istema: &ata do dia do logon %esso: <su7rio %*P no %*P logon +9digo de idioma do logon no sistema %*P
ABAP
REPORT
1.00 - 39
"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. ...
ABAP
REPORT
1.00 - 40
"onca'ena'e
<ne duas ou mais lin1as ou campos, voc> ter7 de informar onde os dados sero posicionados. /int.: ... data+ one(1-! two(3! three(1-! name(2-!. concatenate one ... 0es1ltado: Cohn D. Eennedy
#alue ?Cohn? #alue ?D.? #alue ?Eennedy? two three into name se$arated by s$ace.
ABAP
REPORT
1.00 - 41
"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
ABAP
REPORT
1.00 - 42
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.
ABAP
REPORT
1.00 - 43
...
ABAP
REPORT
1.00 - 44
$)(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 ?;i$ Hote? 1JM=67D;=G.HF .1 1JM/46. ... ... :H96IF7 <:94H>. K2:;7+ , :94H=4E.J .1 :94H ?;e"t line?. ...
Mout$ut as icon
ABAP
REPORT
1.00 - 45
te"t---1.
ABAP
REPORT
1.00 - 46
/int.: ... select * from <table>. reser#e 3 lines. write+ , <table-c1> <table-c2> , <table-c3> <table-cN> , <table-cO>. s%i$. endselect. to$-of-$age. write , '2elatPrio). uline. ... <table> uma ta'ela. <table-cn> so os campos da ta'ela.
<table-c<>
0es1ltado: Relat9rio !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@@@@ %o Paulo Rua %o Paulo, ____ C@@!___!____ @@@@A Rio [rande do %ul Rua Porto *legre, ____ CG@!___!____
ABAP
REPORT
1.00 - 47
E).:
ABAP
REPORT
1.00 - 48
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 line-count &efine a largura da p7gina &efine o n?mero de lin1as por p7gina.
ABAP
REPORT
1.00 - 49
ABAP
REPORT
1.00 - 50
ABAP
REPORT
1.00 - 51
ABAP
REPORT
1.00 - 52
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$. ...
ABAP
REPORT
1.00 - 53
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$. ...
ABAP
REPORT
1.00 - 54
ABAP
REPORT
1.00 - 55
ABAP
REPORT
1.00 - 56
ABAP
REPORT
1.00 - 57
... 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%. ...
ABAP
REPORT
1.00 - 58
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:
ABAP
REPORT
1.00 - 59
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.
ABAP
REPORT
1.00 - 60
line-
<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 ! *t P( SnnL ! Ocorre ap9s o usu7rio clicar duas ve8es so're uma lin1a do relat9rio. 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.
ABAP
REPORT
1.00 - 61
*'ai,o relacionamos algumas vari7veis do sistema 5ue ajudam nos controles das listas secund7rias.
ABAP
REPORT
1.00 - 62
,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:.
ABAP
REPORT
1.00 - 63
*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.
ABAP
REPORT
1.00 - 64
%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#.
ABAP
REPORT
1.00 - 65
ABAP
REPORT
1.00 - 66
6sta funcionalidade permite 5ue voc> crie Dcones e fun"2es. 6,.: Eot@ e EotA.
ABAP
REPORT
1.00 - 67
ABAP
REPORT
1.00 - 68
ABAP
REPORT
1.00 - 69
"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.
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
ABAP
REPORT
1.00 - 70
ABAP
REPORT
1.00 - 71
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'.
ABAP
REPORT
1.00 - 72
"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?. 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#0 0 ', t t'pe t /al$e '!"#5#5', end of const*rec. ... 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.
ABAP
REPORT
1.00 - 73
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@. 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: 5i o 9 H F ; 8 : 0 D D$s"!i*+o :e,to +aracter# :e,to Numrico &ata RRRR$$&&# 3ora 33$$%%# 3e,adecimal .1ole num'er integer# Pac/ed num'er (loating point num'er 5amanho @ @ B ` @ G B B 9a,o! Ini"ia, 1$ace ?--...-? ?--------? ?------? 8?--? ?-.-? 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#.
ABAP
REPORT
1.00 - 74
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.
ABAP
REPORT
1.00 - 75
"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. ...
ABAP
REPORT
1.00 - 76
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. 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 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.
ABAP
REPORT
1.00 - 77
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
ABAP
REPORT
1.00 - 78
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 ...
ABAP
REPORT
1.00 - 79
*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.
di#ide ou di#ide-corres$onding /int.2 divide va@ '- vaA. divide!corresponding st@ '- stA.
ABAP
REPORT
1.00 - 80
"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. ...
ABAP
REPORT
1.00 - 81
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" > 12 <
ABAP
REPORT
1.00 - 82
*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.
ABAP
REPORT
1.00 - 83
ABAP
REPORT
1.00 - 84
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 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. 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'.
No poder7 utili8ar modify itab com where: ! dentro do loo$ at itab ! com a adi"o inde"
ABAP
REPORT
1.00 - 85
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 3 < < 2 N O 112 $ l a # t $ l a # t K
ABAP
REPORT
1.00 - 86
N O 11-
K K # t
ABAP
REPORT
1.00 - 87
%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.
ABAP
REPORT
1.00 - 88
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'.
ABAP
REPORT
1.00 - 89
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-sy-subrc > sy-tabi" > 3-2-sy-subrc > sy-tabi" > 1-sy-subrc > sy-tabi" > 1-3 3 2 3 2 1 1 2 1 00 1 00 1 .. 66 3 2 .. 3
ABAP
REPORT
1.00 - 90
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 03KK9 03KK9! 847BP 4I:1 M091 M091 M091 DM0E>4*847BP KPPB78 0, 83KK9 KPPB78 0, 03KK9 KPPB78 0, 83KK9. 03KK9! 847BP. =I*DM0E>4QR 03KK9 QR 03KK9!QR 847BP.
:17DK7= <08:MCI B80NE =I*DM0E>4 03KK9 DK7= <08:MCI B80NE :*04C3 :*3KK9 :*3KK9! :*847B M091 M091 M091 M091
<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=.
ABAP
REPORT
1.00 - 91
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.
ABAP
REPORT
1.00 - 92
*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"i a, report zexemplo. tables: Utab T, Utab!T. parameters /a*/ar like tab -camp . incl$de: zexemp , zexemp!. top-of-pa%e. write: / '7es$ltado', /a*/ar . $line.
where camp
= /a*camp .
In",)'$ ZE3E&(2 *** incl$de zexemp!. select * from tab! where camp write: / tab!-camp . endselect.
= tab -camp .
ABAP
REPORT
1.00 - 93
"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 bdcdata-d'npro bdcdata-d'nbe%in append bdcdata. clear bdcdata. bdcdata-fnam bdcdata-f/al append bdcdata. ... call transaction = 'sapms"Am'. = '0 00'. = 'x'. = 'rs"Am-pro%ramm'. = pro%ram. 'se"A' $sin% bdcdata mode 'n' messa%es into itab.
ABAP
REPORT
1.00 - 94
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:
ABAP
REPORT
1.00 - 95
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:
ABAP
REPORT
1.00 - 96
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. ....
ABAP
REPORT
1.00 - 97
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: 2U <
ABAP
REPORT
1.00 - 98
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.