Vous êtes sur la page 1sur 386

KEN GRtENWPOD e o'president" da ernpresa de .

\
co nsulto riaern ,SAP Novt.l::; ty1o~us ~ Inc, sediada em \
Ontario, .~~nada. Ele tam~e~'e instrutor de ' . . .... I
Certificacao em SAP da America's ABAP/4 Academy: . ': -
Boston; no Lambton Collegeem Ontario ~ e . ....
.recenternente lecionou curso~ <!eABf\P/4naSAP .
Americaem Foster City.· -
j -'7

.~ :erie tabelas transparentes u~an~o' ~iemerilos~>


. ,: dados e dorntn ios . . t...... ". ..' . '. :" ?~; ~
!il,
~ . . .,~.. ; .~. . ., - : :: ' ~~~
. , .~, UtilJ7e.o Data Di~ioriary p-;;';a-exibir tabelas, .~' . 6/'
chaves estrangeir~:e'indiCes secundarios . .';',i . ~ .
," , ~:.~

_~" . De~e!J'vol~ e. uti U~~~fetjvap:!·~ote··rel.atqrio~ 'J

, .. . iru:luiiidG a sua fo'rlnata<;ao"com 'sfmbolos . ~ ...."


:." ' . . , '
"....;' ~......
,; .,
~,
·.grMicos e .fc_oneS':~ .:
..
".-:'.'"

• Crie telas de selecao bern-projetadas e eflclente-

contem: ' . .. ,

'}a Mais de '50' st;~eric~s "erh 'Y1~~S' tbj~ sess6~:¥i-e- . .


trelnamento Individuals a que "QCe~pode assiWf e
re\::isar a qualquer rnornento, ilus.t;and9:passq a passo
as p rQcedim,,~ntos cont idos no liv re .' •. .. . l
:: ~. ~ ~~( ." . . . \. ' _. I,

i! C6digo·fonteli>m ABAP/4 testado para os prog~as de

exemplo, e~:~.t~ibS e solucoes lnciuldos ~o Iiv o. I


• Utillta rfos originai s,
'-

\IV\IV\N. ..
....cC
. ' . .... . -'-~__1__:;_--'

.
c .ampu,<;.car.-: ' " "' -'--k"",
:
..J
)
)
)
·1,,;~}·;i:.;D ·~~~ :>,;;·l~l·:{~ ·.',.,~.\t\'i;:1 · "'_~ ~ ~i~r~).f ,~ it.':~W ·';i ;~~ .:~.~.{.~~1:; ;i;f.{~:: :,:~,., "; "".;'ill )
::, \1:.'~;,, ·.f/. . ,13 2 ; .'I,,! I·~n " .it-."\ ;o;.;~, pla .3:q:,:~r' ~ ~ ,JI,~~,~:, Dia 4:\:!11_" ~'1~' . ,.;);".;,Dla 6.
•. -, "" 1\"0 , ;- .:·,'. . .I< L ~'. ·.. . ... ··III!,I'. ~ ", ' ..,-' ,·'.-,. ,-,' 1" , .1 .<..iM·.-: ....';'. ,,,,,.... "' .(, ~".
Enlellda a que' um Cliee modillque programas Descreva asdlIerent;aS Crle cha'o'lls ntemas;erie B Coo e utilI Indices Apllqul 0 ulW1aria de banco Enlendaos eLemenlOi de
slslema de RI'J. sua ASAPI. sinples;exibaI.WI18 8l'ltrt labelas transparentes, u~!Ilelabelasdtt laxlo; seQ.Jrxlar!os ee dados para newtar I $lntaxe do ABAPI":
"
aparllnda e lunciollamenlo tabela e !lC1J CMlelldo labolat de poole de du slp. r, deSCf&va a djrerll~a entre apropriedamenle;configure vorUlcllt;ao decoerl!nd:l; cescreva0 conce~o de
para0 U5udrio; apreAda ulilizando 0 Dala Dictionary; erie domlnlos. elementos de uma esm nsa I UITl/Illl.bela; osalriltJlos16cnlcos para atesteInlorma¢es de obielosde lidos . sua
sobfe larqu~e lurl do adldone comenl4rio1e dadose \abelas ctIeestruluras no Data labolas Iransparenles: banco dedades espadlicas visibilidade; ulihe Il!lBis e
slslema emque programas documen t~o. eeus transparentesno Data Diclbnaryde FV3. configure 0 usadebuller de labela; Insira a recra entendacomo codi~ce r
A8AP/41unclonam, progllmas. O!cllonary. para tabelas, labelas nobanco dedados. cada lipo; delifUI e utilize ')
constantes,
')

I'
"

':'·i D!~.;~ ,~ ;:',~~~i:,,:i:I,~E~,': ':_-~'?Rf~ ',~,~~,fi~,:·~}:~ J'j ; .Pt ".;·!" :~}.1 '·,,'; , ;') ~ :':;':'~'-:~, :
l1:t~~~:" ~.'~~~ 9, ~ >"' !~ ; ~ ,J.l'!i..,:i.:P(~ 1~.:~\\;t:, .', !0:tt~·" ~,i~\2.(: ~ ~ ;~ ~( v,
Dla13 Dla14
UIiIlzoa nstM;Aotab 1e s Ulillze VlIIilI.velsde sistema Cod~e ISlnSIru¢es Defina umalabE IaIntema • Reconh~ 0 opefalb de Pre&flCha umalabela Enlerda0 ele~o do! \IpOs
para dellnlf strings de comuns8 se]o CIlPaz de comunsdlt conlrole i f. com ousom umallnhade corpo delabltla It umze-e Jnlama apar1ir deuma de dados nasalda: utlllza
campo; ontenda a InstnJ;fto exibir oukx:aIiZOf qualquer case. do ewhtl e: cabSl;alho;preencl\a essa para tester a oxlstllnclade labela debanco dedado. as oP95es de)Ofma la~o
types eutilize-ap8fa vari<lvel de lllslem.; pl'eveja cootrol& I seqiillnclado labelautilzaooo append dados emuma labela u~lizando aseSlruturas da ~o i,fr 1te; )
delinlr seIlSPJ6prios tipes e exeaJle convolS6es de progrlmau!iIIzando ehaves uma irmade Inlemae compauuo (consll1lcl ~ matserlcienles; utilze seeasdecoovorstio
dedados. oaocs utilizenda InSllUl(6es ex i t , conti nuee cab~lt1o Otl um e dreade . conteudo deduas labelas relllillt processamento de e deiecteSOlI preseo",
deatribulrrllo; codillque chec k: codi£que Ifabalho explidla; . Intemas quanta! Iguaklade. ln lll"u~1o decontmleem dentrodedomlnios.
ellpl'ossOes malematk:as, especficllt;ees simples dlt c:lasslnque labeln! kltltmas ' labelas Inlernes utI~zando
at e cn c hange of.
pos~o 0 decomprmento
nl InstrOlfAo wri te o
autilize a ad~!o as
text.
,
!
, D"la..' 15. If,'1.''.," '. '::':'!Dla. 1 ~/·:!;',;·I:: j~;:;~. ol;{1E\ "
• ••\.'1; :l . ~ • ,{, ,~ :
': .~ ".; . :. '":' , -,':\-\,"ii; .1 ; ..
I: !;;: ' Cia18:~ :'{:'~:~:
',\ ':'
,Dla 19 .f·
,:. "
Dla 20
:t"
Dia21
U~Vze as ~¢es do UtilizeasInslru¢es Ulllize asavenlos Passe paffimetros dlgiledo! Entonda e utilizea Instr~o Entenda 05componenles I Codlfiquelela. dnselel;lo
Iormata9io grallca da comuns delormala¢o init 1a1 1zat i on , II nAo lIigilados para in c 1ude; crIo grupes de a eslrulull de urn grupo de que interagem com 0
lnstrur;io wr i t e (as ne w- l 1ne, s t ar t - o f - sub-rolinas; passa funyao e I'llOOJos de tunr;l o;definadados osuarb; utilize elementos
sy mbo l , a s icon, ne w-page, ski p, se lec ti o n, parilmetros 116lr ~S fun ~D; dannapa!llmellos glDbals 0 sUb-rotinas denlro de !orma!a~o para crlar
as 11 ne): lmprma back. pas i t 1o n e end-of -se 1ecti on; Il'lllIleltas: pol' re'orAnda, deimponaljio, eXpDrla¢o de umgrupo de Iunc?o. lelas deseleiO!o bem
salde de Isla a manlpure I set b lan k lines; donn.$Ub-fo1lnas eklemas parvalore porvaklrIt e alle ~o . pl'ojeladas eellcienles:
, aidanospool. envle salda pala0 spool e Inlerna$; conflguro rosullado; pas~6 slrlngs de utilize lelesde snl~o para
IIlil/zando ne w-page variaveis locals, global! e campo e labelas tnlemas manter aintagrk1ade dos
print. eslali:as,alllm deareas de para umasuIHotlnl. d_.
lraba tlode labela.

~--- ~_-... ...... ,,~ " .''''Ko>i>i -.-<;1: rI:!'~~""",.~",,",""-:;" '''~';' _ _ 'n'_.,.... ~·.- .,.. .• .••••. h
~ '· ·

lido
\ I I ~c
r--: h
~ CJ
-n ..
f~j ~' !<o
~. " ~
P" ~ §<
fT1
;U

·;lfl l; •it·hr -
I
Jl Z
J>
CJ

i ~
~~
o J>
<1l ()
I J>
;U

"Ho ~
OJ
J>
CJ
J>
:s

I I I I
I I , \S

- " • • : . . . - - -. ._ .1'. v_ ,....... ~ _ _ -:....---.1-.........:.... :-;...............-::.:.. ~: .. J.. "-- . .. ,,;. A_ : 4I'4a. ~ ...... ~. ...:·· ..- -_ •. - - -- ._-----~ -_ ..,- - - -- - .--/
~~ -
... r
~Y
,
Ken Greenwood
Consultor Editorial
Ferna ndo Barcellos Ximenes
KPMG Pea t Morw;c;k

Tradu'iao
Edson Furma nkiewicz
"Docware Trodu~6es recnrcos

'lle"o Site et"


o
;:;-~
ACELERE
~
:s,f; SEU CONHECIMENTO '"tfl
C
Aprenda
o
~<".

N OVIDAOE S. CAOA ST IIIO ,

i!b
I.A Nlf'AM ENTOS .
C.OMI"ItAS

Comp leto e
,<>"
ef!'
¢
~
---=
e.. =.m
.: . .: . 21 dias.

SAMS

(2
C'AM'PUS
;
00"""'
sams "Tead'I Yourwlt ABA P/4 k'l 21 Days
Tradul<Jo .lIlofIz8da do idioma ilglts da edIlWAO publlca da ~ s.ns Dedicatoria
CopyrightCo' 1999 by Sarns

C 1999 , EdilQIlI Camp llS uea.


lodes os dlrello, reseIVedos e protegid05 pilla Lei 5.988 de 14/12/73, Este liuro ededicado a meus pais.
NlInhuma parte dUI II IJVro, Sllfll 8utoriz ao;Jo pn~via por 8 $eritD da e dlto ra, pod e ra Marian e Vern Greenw ood
SIr reproduzidaou transmitida sejamquals rOtem os meles emprllgado5:
. eilltr6nicos. meclrleos, lotogri llcos, grava9!o au quaisque r Quiros.
Tode 0 esfon;a filllelte para romecer . ma is compl ela I al1equlIGa irllom'I.a,.ao.
Obrigado por tudo.
COnk/do. l(!Ito,... o{.} aul or{lIs) nAo U$Uffi8m responsabilldade
pelos resultados . US(! da. Inronna~ Iomecida. Reeomendamo. aos
~Ionts Inlar. 'I11ormat;:4o antn de sua "d".
UIiIIZa<,;:iO.

"""
Paoo Vrtmlel10
ee.-_
MatiziII
E_ df, AnO'adl
_ Flores

Rio TBXtQ
Reyjsa o G~b
Adriana Kramer
Deborah AOdIger
Pro/elaGraffeo
Edito ra Camp us uce.
A Qualid.dll da Inlormat;llo.
Rua Sell d. Slllembra. 111 - 16' andar
~AlodIlJ_iro RJ Bl1Isil
Tel_lone: (021) 509-5340 FAA{0211507·t99,
E-maU: ....'o .~oom.br
1S8N 85-352-0396-8
(Edil<io orignt ISBN 0-&2-312 17-4).

CIP-Bra$LC.~.forIte.
SlndicaIO N~ ees &litore. de Uvros. RJ

G831 &

Gre_ood, Ken
Aprellda em 21 dias ASAP' .. I Ken Greenwood; tra~lo
Ed, Of1 Futmankiewicz..- RID de Jenllro : Cempus, 1999.
•" (Apr&nda)

Tradul<'ade: Sam's teach )'DUFSell A6AP/41o21 deys


ISBN a5-3S2..Q3;6.6

1. ABA P/4 (Ur.llu~lIfTl d. provamr.,iQ de c:omputador).


2. SAP PJ'J.3. Sislem. clentlllllswttdof.l TftUo. II S~ne.

98-1991 COO-COS.l
COU - SOO.92(ABAPr4)

99 00 01 02 5 4 3 2 o

;IBLIOTECAS OA PUCMINAS
~ELO HORIZONTE ,
r
f GlSTRO 22~.f2-~ Q'
IATA:2 / . / ?'L ,£3.....;
ICERVO;Z3 0 2 9 /
• 'p , l .. .. __
I
Dia 20 M odu larizacao: m 6dulos de fun,ao, P arte 2 619
D ia 21 T elas de selecao 653
Sumario geral
SEMA NA 3 Revisao Introducao . ....... 1
. 68 7
Convencoes utilizadas neste livro 2
Apen dice A Convencoes de atribuicao de nome . 689
Apen dice B Re sposta s as per guntas dos testes e exercfcios 697 SEMANA 1 Visao geral. . . . . . . . 5
i
Ind ice . . . . . .. . . . . .. . . .• . . . . . . l Dia 1 0 ambiente de desenvolvimento 7
719
Objetivos do capitulo . 7
o e
que R!3 ? . 7
Qual ea fun<;ao do R!3? . 8
Por que voce precis a saber isso? 9
Descobrindo 0 R/ 3 . 10
Utilizando as areas conceituais do sistema R13 10
Descobrindo a interface com 0 usuario do RJ3 15
Enrendendo 0 Basis . 20
Entendendo 0 clienre/servidor . 22
Arquitetura do sistema RJ3 . . . 24
o serv idor de apresentacao . 24
o servidor de aplicativo . . . 24
Descobrindo 0 servidor de banco de dad os 25
Configurando os servid ores . 25
Definindo urn sistema R/3 . 26
Definindo uma instdncia R/3 . 26
Arquiterura do servidor de aplicativo . 27
Enrendendo urn contexto do usuario 27
Enre ndendo uma area de rolagem .. 28
Entendendo os passos de dialogo .. 28
Entendendo 0 processarnento roll in/roll ou t . 30
Descobrindo como os dados sao enviados ao servidor de
apresentacao . . . . . . . . . . . . . . . . . . . . . . . 31
Entendendo as cornponentes de urn pro cesso de tra balho 31
Enrendendo os tipos de processo de trabalho . . . . . . . 32
Entendendo 0 cliente de logon . . . . . . . . . . . . . . . 32
Entendendo tabelas dependentes e independent es de cliente 32
U cilizando 0 Open SQL da SAP . . . . . . . . . . . . . . 36
Pcnabilidade . . . . . . . . . . . . . . . . . . . . . . . 36
Ucilizando buffer de dados no servidor de aplicativc . 36
Tratamento automdtico de cliente 37
Resurno . . 37
P&R . . . 38
Workshop 38
Teste . 39
Exercfcio 1 39
.. , ..
XII "RENDA EM 21 DI AS ABAp/'
SU"'''DGERAl XIII
Dia2 Seu primeiro programa em ABAP/4 . . . . . . . 43 . Explorando componentes de tabela . · 102
Antes de prosseguir . 43 Mantendo as caractertsticas tecnicas de s campos . · 104
Explorando 0 ambienee de desenvolvimento 44 Determinando quando crier ou reu rilizar dominie s e elementos
Descobrindo tipos de prog rama . 45 de dados _. . . 104
Definindo relatorios . 45 C onvencoes de atribuicac de nome para tab elas e seus componentes · 105
Definindo programas de dialogo . . 46 C rian do uma rabela transparence e seus componentes · 105
Descobrindo componen res de rela ta rio . 46 Abordagens para criar tabelas . · 106
D escobrindo a ob jeco de tempo de execucac de prograrna . 47 A tiva<;ao de objetos DDIC . . 107
Inrroduzindc as conven co es de atribui'):ao de nome de programa 47 Desccbrindo dominies . .107
Criando seu primeiro programa . . . 48 Descob rind c elemento s de clade s · 112
Exp lorando 0 editor de codigo-fome . 50 Descobrindc tabelas transparentes . .116
Utilizando a Editor: Initial Screen . 51 M odificand o tabelas . . . . 124
Explora ndo a funcionalidade do editor de codigo-fo nr e 51 C opiando uma tabela . 124
Obten do ajuda . . . . . . . . . . . . . . . . . . . . . . . . . 64 Excluindo uma tabela · 125
Obtendo a ajuda F1 . 64 Adicionando campos · 126
O bt endc a ajuda R/3 Libr ary . 65 Excluindo campos . . · 127
Localizando seus ob jeto s de desenvolvimento . 66 Aleerando 0 ripe de dado ou comprimento de urn campo · 127
Introduzindo 0 R/3 Data Dictionary . 67 Trabalhando com dados . · 128
Explo rando as tabelas e as esrrururas . 68 Acessando a funcionalidade do navegador de dados de dentro
Exibind o uma ta bela ou definicao de estrutura 70 doODle . · 128
Exibindo 05 dados na tabela . . . 70 Utilinrios gerais de navegador de dados . . 131
De termin andc campos exibidos . 71 Exibindo os dados utilizandc seu proprio programa de ABAP/4 . 135
Entendendo a sintaxe do ABAP/4 . . 72 Utilizando a ajuda Fl . 135
Introduzindo a instruci c se 1ect . . . . . 72 Resume .. . 139
Entende ndo as areas de t rabalhos de tabela 76 P&R . . 139
"In trc duzindo a clausul a where . 78 W orkshop . . 140
Trabalhando com variaveis de sistema . 79 Quescionario . . 140
Utilizando 0 ope rado r de encadeamenro . 82 Exercfcio 1 . . · 141
Utilizando a instrucio se l ect singl e . . . 83 Exerdcio 2 . . · 141
Comentando 0 c6digo e a documen tacao formal 85
Resumo . 85
Dia4 a Data Dictionary, Parte 2 . . . . . . . . . . . 143
P&R . Objetivos do capitulo . . . . . . . . .143
86
Workshop .. . D escobrindo as chaves estrangeiras . . 143
87
Teste . . . 87 Acionando a verifica<;ao de chave estran geira . 144
Exercfcios do edito r . . 88 Requisites tecnicos para cria r uma chave estran geira .145
Exercfcios de prcgramacac 93 Criando uma chave est rangeira . . 146
Des cobrindo a coluna CheckTable . .149
Dia3 o Data Dictionary, Parte 1 .. . •• . • • .• • 95 Dererminacio automdtica de campos de chave esr rangeira . . 149
O bjetivos do capitulo . 95 Relacionando as chaves esrrangeiras com a seta
Descobrindo nfveis de versac do R/3 . 95 parabaixo e a ajuda F4 . .150
Aprofundando-se no R/3 D ata Dictionary 96 Chaves estrangeiras e programas em lore · 151
Explorando os tipo s de tabelas em R/3 . . 97 Chaves esrrangeiras cornpostas . .. . 152
Tabelas transparen tes . . . . . . . . . . . 97 Entenda a cardinal;dade . . . . . . . · 154
Pools de eabela e tabelas de pool . 98 Tipo de campo de chave estrangeira . 156
Clusters de tabela e rabelas de cluster . 99 Chaves esrrange iras constantes e genericas · 161
Restri<;6es nas tabelas de pool e de cluster. . 101 Chaves estrangeiras adaptadas . . . . . . . . 163
XIV I APRENDA EM 21 DIAS ABAP" SUMARIO GERAl XV

Definindo uma tabela de valor · 164 U cilizando 0 utilicirio de banco de dad os .. 225
Campos especiais de T abela . . · 168 Verificacoes de coerencia . .226
Os campos monetarios . · 168 Exibindo 0 log de ativacao . .230
as campos de qua nridade . . 170 Exibindo e mcdificando parametres de armazenamento . 231
As esrruturas no D ata Di ctionary · 171 Excluindo e recriando as tabelas no ban co de dados .232
Enrendendo Includes . . . . . .1 72 Resumo . , .233
Incluindo a mesma estrutura diversas vezes · 174 P&R . . . .233
Resumo . . . 175 Workshop .234
P&R . . . . 176 Te ste . . 234
Workshop . 177 Exercfcios 1 .\ . .234
Teste . . 177 235
Exercfcio 1 Dia 7 Definindo dados no ABAP/ 4, Parte 1 . . . . .
.177
Exerclcio 2 Objetivos do capitulo . . 235
· 178
Exercfcio 3 . 178 o buffer de programa e a area de rolage m . 236
Exercfcio 4 Elementos de sintaxe do ABAP /4 . 236
· 178
Exercicio 5 Definindo ob jeto s de dados . . 237
· 179
Exercicio 6 .180 Definindo literais . .238
Exercicic 7 . .180 Definindo variaveis . 241
Resumo .. .254
Dia5 o Data Dictionary, Parte 3 . • • ..• • •... 183 P&R . . . . 255
O bjetivcs do capftulc . . 183 Workshop .255
Entendendo as Indices de tabela . . 183 Teste . .256
Exibindo indices . · 186 Exerctcio 1 . 256
Consider acbes ao cria r urn Iodice · 187
Criando urn Indi ce secundario . . · 189 SEMANA 1 Revisao . 2 57
Excluin do urn Indice secun dsrio . .190
D etermin ando qu al Indice esu sendo uti lizado · 191 SEMANA 2 Visao geral • ... ..•.. .. • .259
'Exibindo configuracoes tecnicas · 193
Dia 8 Definindo dados no ABAP/4, Parte 2 . .• 261
Classe de dados '. . ': . 193
Ca tegoria de taman hc . · 195 Objetivcs do capitulo . . 261
Exib indo 0 nu mero de extens6es alocadas para uma tabela . . 195 Definindo constantes . . 261
Utilizacic de buffer em um a tabe1a . 196 Sintaxe da instrucao CONSTANTS .262
Res umo . . .213 Definindo strings de campo . . . . , .263
P&R . . . . 214 Urilizando a instrucao DATA para definir uma string de camp o . .263
Workshop .214 Utilizando uma string de campo como uma varidvel do tipo char . .267
Teste . .215 Utilizando a instrucao TABLES para definir uma st ring de camp o .268
. Exerd cio 1 .2 15 String de campo defi nida u tilizando TABLES in teragindo com
SELECT . . 269
Dia 6 o Data Dictionary, Parte 4.. . . 217 Visibil idade de uma string de camp o definida uril izand o TABLES .270
Objetivos do capi tulo . . 217 Definindo ripos . .270
H ist6r ico auto mati co de tabela e documentos alterados .217 Sintaxe para a inserucao TYPES .270
D ocumen tos alterados . . 218 Tipos estruturados . .272
Sabendo quand o ut ilizar hist 6rico automdtico de tabela .221 Grupos de ripe . . 273
Resumindo as configuracoes tecnicas . 221 Criando urn grope de ripe .274
versees ativas e revisadas . .222 Resume. .275
Vers6es adicion ais . .223 P&R . .276
D escartando uma verssc revisada .223
XVI I 'PIE NO' EM2101'S "'PI' SUMARID GERAl I XV"

Workshop . . r . 277 Especificacoes simples de comprimento e posici c cia instrucdo wri te . 341
Teste . . . . 277 Sintaxe para especificacoes simples de co rnprimemo e posica c
Exercfcic 1 . 277 na instrucfo wri te . . 341
Exercfcic 2 . 277 Resumo . . . 344
P&R .. . . 345
Dia 9 At ribuicg es, conversoes e calculos . 279 Workshop . 346
Objetivcs do capitulo . .279 Teste . . 347
Antes de prosseguir . . 279 Exercfcio 1 . 347
T rabalhando com variaveis de sistema .280
Localizando varidveis de sis tema .283 Dia 11 Tabelas in ternas . . . . . .. . . 349
Instru coes de atrib uicio . . . . . .286 Obierivos do capitulo . .349
U tilizando a insrrucao cl ear .286 Princfpios da tabela interna . .349
Utilizando a instrucao move . 291 Definicao de urna tabela interna .350
Utilizando a instrucdc move -correspondi ng . 303 Adicionando dad os em uma rabela interns util izando a instrucac
Executando cilculos . . 304 append . .353
Atribuis;ao dinamica .309 Lendo 'dados a partir de uma tabela interna . . 359
Resumo . . . 310 C lassificandc 0 ccnteodo de uma tabela intem a . 376
P&R .. . . 311 Resumo . . . 382
Workshop . 312 P&R .. . . 383
Teste . .312 Workshop .385
Exercfcio 1 . 312 Teste . . 385
Exercfcic 1 .385
Dia 10 Ins trucoes de controle comuns .. 31 5
Objetivos do capitulo .. . .315 Dia 12 Tabe1as internas avancadas, Parte 1 . 387
Utilizando a instrucao if . . 315 Objetivos de capitulo . . 387
Sintaxecia instrucao if .316 Testando e modificando 0 conreudo da tabela inrerna . 388
Conversao de dados de literais durante comparacdes . .317 Obtendo informacoes sobre uma tabela interna .. .. .388
Exibindo convers6es . .319 Determinando se uma tabela interna esta vazia .. .389
Utilizando el se t f . . 320 Deterrninando 0 numero de linhas ern uma tabela interne . 389
Utilizandc operadores de string de caractere .32 1 Prograrna de exemplo que obtem as informacoes so bre uma
Utilizando a instrucao cas e . .326 tabela intema . .390
Sineaxe cia instrucao cas e .326 Copiando clades de uma tabela inrem a par.1 um a a utra . . _ . -: . . 391
Utilizando a instrucao exi t . . 327 Copiando uma parte de uma tabela int ema . .392
Sintaxe cia instructo exi t .327 P rograma de exemplo que copia os dado s ~n tr e as tabelas internas .393
Utilizando a instrucio do . . . 328 Cornparando 0 conreudo de duas tahelas internas . 395
Sintaxe cia instrucdo do . . 328 U tilizando a instrucl c edi tor-ca11 .. .395
Terminando urn loop sem fim .330 Sintaxe da instru~i o edi tor-ca 11 . ; 395
Utilizando a adic;ao varying . .332 Inserindo linhas em uma tabela interna . 397
Madificando valores dentro de do ... varyi ng/enddo . 334 Sintaxe da instruc;ao insert ... . .398
Urilizando a instruc;2.o whi 1e . . . 336 Modificando as linha s em uma tabela intema . 400
Sintaxe da inspucac whil e . . . 336 Sintaxe da instru ci o modify . . 400
Utilizando a instruc;ao cont i nue . .337 Excluindo 0 conteudo da tabela interna . . 403
Sineaxe da instrucac conti nue .338 Utilizando free para excluir 0 conreudo da tabela interna . . 403
Utilizando a insrrucdc check . .339 Utilizando r ef r esh-para excluir conteudo da tabela interna .
0 . 405
Sintaxe da insrru cdc check . .340 Uriliaando c1 ear corn uma tabela interna . . 406
Camparando as instrucoes exit , continue e check .341 Utiliaando a instruljao de1ete para excluir as linhas de uma
tabela interna , . . 408
{VIII , APREHD A EM 21 DIAS ABAP / ~
SUMARlOGERAl t k.IX
C riando Iist as dos 10 melho res uti lizando append so rt ed by . . . 412 Esp ecificando decimals e arr edondamento . 482
Sintaxe da instrucio append sorted by . . . . . . . 413 Mudando 0 alinhame nto . " 490
Preenchend o um a tabe la intema utilizandc co11ect . 417 Resu mo . . .491
Sintaxe da ins tru cjio co 11 ect . . 417 P&R .".. . 493
Resume . . . 422 Workshop . 493
P&R . . 423 Teste . .493
Workshop . . . 424 E xer clcio 1 .494
Teste . . . . . 424
Exercic io 1 . .424 SEMANA 2 Revisao ". . 4 95
Dia 13 Tabelas internas avancadas, Parte 2 . . . . . 425
SEMANA 3 Visao geral .497
Objetivc s do capitulo . . 425
Preen ch end o uma tabe1a in terna a partir de uma tabela de banco D ia 15 T ecnicas de Iormaracao, Parte 1 499
de dados . . 425 Objetivos do capitulo . . 499
Selecionando rmiltiplas linhas diretam ente para uma tabela intern a . 426 Fo rmatacic grafica com a inscructo write .
.434 .499
Adicionando Iinhas, uma por uma , utilizando se1ect Sint axe paraas adiljoes graficas para a inscrucao write .500
Resumindo se 1ect, tabelas in temas e eficiencia .. . .437 Utilizando a adic;ao as symbol . . .500
U rilizandc as tabelas de exemplo 1fal , 1fbi , 1f el e 1fe3 . 438 Utilizando a adic;ao as i con . . 501
Process amento de interrupcao de con trole . . . . .439 Utilizando a adifjao as 1; ne .
". 440 . 503
Utilizando as in struc oes at fi r st eat l ast . Exibindo os sfmbclos, leones e caracreres 1i ne-drawdisp onjveis . . 506
Utilizando as instru co es at new e at end of . . 444 Formatando e imprimindo relatorios . . 507
Ut ilizando a instrucdc sum . .449 Contro lando 0 tamanho de pfgina . . 508
Llrilizand o a ins trucio on change of .451 Criando cabecalhos e rodap es de p agina . .513
Resumo . .45 8 Res umo . .
. 459 . 525
P&R . P&R . . .
. 460 .525
Workshop . Workshop . 526
Teste . . . 460 Teste . .526
Exercfcio 1 .460 Exe rdcio 1 . . .526
Exercfcio 2 .460
D ia 16 Tecnicas de formatacao, Parte 2 . 527
Dia 14 A instrucao write . . . . . . . . . . . . . . . . . . 461
O bje tivos do capitulo . .527
Objetivos do capitulo . .461 Ins rrucoes de fcrmaracio de lista .. .527
Porrnatacao e comprimentos padra o . 461 U tilizando a instrucao new-l ·; ne . . . . 528
Co mprim enros padrao . 461 Utilizando a instrufjao new·page . . 529
Campos compactados . . 462 Utilizan do new-page pr i nt . 530
Eormatacao padrao . .463 U tilizando a inserucic s ki p .. . . 534
P ro grama de exemplo dem on st rand o a formatacao padrdo . .465 Utilizando a instrucao back .536
Adiljoes para a instrucao writ e . .467 Utilizando a ins rruefo posi t; on . . 538
Ccmpreendendo a especificacdo de posicao . . 468 Utilizando a insrrucio se t blank 1i nes .540
Compreendendo a especificacao de comprimento . 470 Resu mo . . . 541
Trabalhanclo com subcampos . . .471 P&R . .. .542
Ucilizando a adifjao under . . .472 Workshop . 542
Utilizando a adi~ao 'noMgap . . . . 473 Teste . .542
Utilizando mascara s de edicac . . 474 Exercfcic 1 . . . . 542
Utiliza..ndo as safdas de conv ersao . 476
Trabalhand o com a formatacf c de data . 479
Utiliza..ndo as adifjoes no-zero e no-sign . 481
9
.622
... .623
.. 559 ng ng .
. . . 561 Definindo as sub-retinas em U1U gropo de
Deixando uma sub-retina .
.563 Liberando um modulo de . . . . . . .628
Dermmdo variaveis
.568 Testando um modulo de . .629
Resumo .. .568
P&R . . . Localizando modules de funcao existentes 1
.570 Explorandoos cornponentes do seu grupe de Iuncao . .638
Workshop .570 Localizando e corrigindo erros em modules de fun~ao .640
Teste . .570
Exercicio 1 . Configurando 0 valor de sy-subrc no retorno . .641
571 Utilizando a instrucao rai se . .641
18 Mc)duLlaI'lzalGajO: nassanuo oal~anletroS para Utilizando a instrucao message. '0 rai si ng .644
.571
Passando parametros . . . . . . , . . . . Definindo excecoes na interface . . . . , .. .648
.573
Criando parametros digitados . . . . Inserindo automaticamente a instrucao ca 11 funct ion ,649
.576
Controlando como os pararnetros sao passados .. Resumo . .650
.578
U tilizando as metodos de passagem de parametros P&R . .650
.583 Workshop .
Passando tabelas intern as como parametros . .651
.592
Definindo e chamando sub-retinas externas · Teste .. ,651
.595
. Resumo . . · . Exercicio 1 .651
.595
P&R . . . . .
.596 Dia 21
Workshop .596
Teste .
Objetivos do capitulo . . . ' . . . .653
Exerclcio 1 Programacao baseada em evento .653
597 U tilizando 0 evento i ni t i ali zat ion . .654
Utilizando 0 evento at sel ect i on-screen .. .655
.597
U tilizando a instrucao include . . . · Utilizando 0 evento at user-command ... . 6~5
.598
Sintaxe para a instru<sao include Validacao de dados utilizando chaves estrangeiras ,657
.600
Introduzindo modules de Iuncao . Validacao de dados utilizando matchcodes .659
.601
Entendende gropos de fun~ao . Sintaxe para utilizar um matchcode . .666
.602
Acessando a biblioteca de fun~ao Formatando telas de selecao . .666
.604
Ativando urn modulo de fun<sao . . · · . . · · . U tilizando se1ect i on-screen .. .667
.605 Sintaxe para sel ecti on-screen block com frame.
Definindo dados dentro de urn .667
.605 Parametres de tela de selecao . . . . . . . . . . ... . . . ,668
Definindo a interface de modulo de
.607 A tela de selecao checkbox . . . . . . . . . . . .670
Passando parametres ., ·
.608
U tilizando parametros dizi tacos e nao dizitaacs Sintaxe para se1ecti on-screen checkbox .671
.. 609 A tela de selecao select -opt ion s .
Chamando modules de fun<$ao . . · . . · . .
610
para a instro~ao ca11 functi on . · · · A sintaxe para se1set-opt i ens . ,672
.611 Botoes de tela de sele~io . .672
Executando um modulo de fun<sao de exemplo eo' • 0 •

.613 A sintaxe para urn radi obutton group .673


Criando urn m6dulo de
Resumo. .. · . . . Exernplo de programa de tela de .673
-.,.,
,~t..

IXXII ~A P R E N D A EM 21 DIAS ABA P/ ~


;il~\ '------ - - -----'-- - -- - -- - -- - - - - -- - -- - - -- - - ----1
v
Utilizando a insrrucac message . . . . . .681
Sinraxe para a inst ruci o message-i d
Resumo ' .'
.682
.684
Introdu~ao
P&R ... . 685 Tendo ministrado 0 curso de certif icacao em ABAP/4 para centenas de
Workshop . 685 novatos e desenvolvedores experientes, tanto na SAP como em outras insritui-
Teste . . 685
Exercfcio 1 <;oes, conbecc a ripe de prob lemas e perguntas que voce ted. quando aprender
.686
essa linguagem poderosa. Incorporando neste livre todas as m elh ores tecnicas
SEMANA 3 Revisao que enconrrei, espero compartilhar essa mesma expe rien cia de aprendizagem
687
com voce tambem. Para esse [im, este Iivro e repleto de diagramas detalhados,
Apendi ce A Convencoes de atribu i<;iio de nome .. 689 imagens de tela in reira, programas func ionais de exemplo, ap resentacoes (sere-
Convencoes de arribuicao de D.ome de programas . . 689 encams) narradas em ingles e procedimenros passo a passo . Toclos os prcgra-
Co nvencoes para arribuic do de nomes a relat6rios . . 690 mas de exemplc tambem sao forne cidos no CD-ROM de modo que voce possa
Convencoes para atribuicao de nomes a p rogramas de dialogo .691 earregar e executa-los em seu pr6prio sistema. Alem disso, as utilirarios que
Inrervalos de nomes de dientes : . . . 691 Iorn eco para todas as minhas classes eseao incluidos no CD -RO M, mais alguns
Apend ice B Resp ostas as perguntas dos teste s e exer cfcios 697 novos que desenvolvi especificamente para as leitores deste livro.
o ABAP/4. apesar de toda sua simpiicidade na supe rflcie, euma comple- .
Indice . 719 xa lingua gem. Par causa disso, 0 iniciante frequenremente fica desnorteado
com seu comportamento. Entendendo 0 [un cionamen to subliminarmente,
voce sed. capaz de dominar essa linguagem. Entendend o a como e 0 porque,
voce ira adquirir urn conhecimento que poucos tern nesse empolgante campo .
Este livre 0 guiara ao longo das ccmplexidades da linguagem e do
ambiente do ABA P/ 4 urn passo de cada vez. Depois de comp letar cadacapitulo ;
voce praticara atraves de exercrcios para reforcar seu aprendizado. As so lucoes
funcionais sao ofereeida s para todos os exercfcics no C D -ROM.
Como programador es experientes sabem, e as iniciantes logo saberao,
criar programas ABA P/4 freqUentemente significa de senvolver mais que ape-
nas urn programa. Esse trabalho frequentemen te envolve a criacao de ob jeros
de desenvolvime nto para supo na- lo. Os procedimentos para criar esses objetos
sao todos explicados em detalhes ut ilizando uma Iista de passos numerados.
Cada passo contem a titulo das telas que voce encontra e as respostas esperadas
para cada coma ndo. Todos os procedimentos sao acompanhados po r uma
screencam que mostra exatamente como eles sao feito s. Agora. voce nao 56
pode aprender observando-me, como tambem pede adiantar e retroceder.
o enorme volume de informacces necessario para dominar 0 ABAP e
uma tare'[a desanimadora para a maioria das pessoa s, mas selecionei as infor-
maco es mais vitais de que voce precisa e as dividi em 21 part es gerenciaveis.
Com 0 conhecimento que voce adquire utilizando este livre, voce sera capaz
" de ramificar as tarefas complexas do ABAP/4 tendo urn entendimento solido
por base.
Se tiver problemas ou perguntas ao esrudar a assume, visite a site da
Internet http ://www.abap4.net. N esse site. po starei respostas a perguntas
[requentes (FAQ s) e pro blemas com que voce pode se deparar que nao foram
abordados aqui.
IIIll<OOU(AC 3

Espero que voce ache 0 esrud o deste livre tao agrsdfvel quanto achei
escreve-Io. Boa sorte! Eis 0 seu A BA P/4 em 21 dias!
-Z
UI 0 leon e Sintaxe alerta para a usa adequado da sintaxe de urn codigo.

k oove n<;6 e s ut ilizadas oeste lJeiVu[-"o'- _ ~m


o texro que voce digita e a texto qu e voce ve na tela aparecem em fon te
monoespacada V
o kane Entrada destoco 0 c6digo a ser digifod o .
parect da com est a
ENlllOI~
para sirnular a forma que 0 texto assume na sua tela.
a leone Soido destoco a SOldo produzido pe lo execucoo do ccdiqo.
Variaveis e placeholders (palavras que espelham 0 que voc e realmente Iliol ~
digitara ) aparecem em fonre monoespacoda e em ttouco.
Cada capit ulo econcluldo com perguntas relativas ao assunto do dia, co m o leone Analise de signo 0 an alise do oute r, linha por linho.
respostas do autor. A maioria do s capftulos tambem inclui u ma se~ao de INAtIIE~
exerc fcios e urn quesrionaric pr ojetados para refo rcar as conceit os do dia. (A s
respo stas aparecem no Apsndice B.)

Umo nota op resentc tnformccoe s i~teressontes relacion odos com 0


disccssco.

Uma dico cfere ce ccnselh cs ou mostro umo moneira mois f6cilde fozer
olgumo coisa .

~o
Um oviso de cvldodc clertc poro urn possfvel problema e oferece
conselbos sobre como evlto-lo.
"-- - - - - - -- - - -- ------'
I Fa~a
Esses quodros-de FO/iolN eo fOlio
oferecem dices perc a que fozer e 0 que
nco fozer com 0 ASAP/ 4.

scmNUMlIltr...
Muitos dos proced imentos neste Ilvro sao demonstrodo s vtilizondo screencoms .
,.. As screencoms s60 como filrn es; mostrom umo sene de telcs, induindo pres- .,
sionomentos de teclo e movimentos de mouse, com umo ncrrocdo "descrifivo em ingles.

NOYO ... Termos novas s60 introduzidos utilizcndo a kane Novo Terma .
milo ,.
'.

Sumcirio
Inrroducao .. . . . . . . . . 1

SEMANA 1 Visco geral . . . . . . .. 5


Dia 1 0 ambiente de desenvolvimento .. . 7
D ia2 Seu primeiro programa em ABAP/4 43
Dia 3 o Data Dictionary, Parte 1 . 95
Dia4 o Data Dictionary, Parte 2 . 143
Dia5 o Data Dictionary, Parte 3 . 183
Dia 6 o Data Dictionary, Parte 4 . 217
Dia 7 Definindo dados no ABAP/4, Parte 1 . 235

SEMANA 1 Reviseo .257

SEMANA 2 Visco geral .259


Dia 8 Definindo dados no ABAP/4, Parte 2 . 261
Dia 9 Atribuicoes, conversoes e cilculos 279
Dia 10 Instrucoes de controle comuns 315
Dia 11 Tabelas internas . 349
Dia 12 Tabelas internas avancadas, Parte 1 387
Dia 13 Tabelas internas avancadas , Parte 2 425
Dia 14 A instrucao write . .. . 461

SEMANA 2 Reviseo . 495

SEMANA 3 Visco geral . .499


Di a 15 Tecnicas de formatacao, Parte 1 499
D ia 16 Tecnicas de Iormatacao, Parte 2 527
D ia 17 Modularizacao: everitos e sub-rotinas . 545
Di a 18 Modularizacao: passando pariimetros para sub-rotinas 571
Dia 19 Modularizacao: modules de fun,ao, Parte 1 . . . . . . 597
SEMANA 1

Visao geral
Voce comeca a Semana 1 aprendendo sabre 0 ambiente do R/3,
incluindo 0 Basis, clienees de logon, 0 ABA P/4 Development Work-
bench e 0 Data Dictionary. Dentro do dicionario, voce cria tabelas
transparentes utilizando elementos de dados e dominios, adiciona chaves
extemas para validar entrada e prepara indice s secunddrios ou usa de
buffer para acelerar a acesso aos dad os. Voce tamb em aprende a criar
ajuda Fl e F4 para 0 usuario, corne ca a escr ever programas ABAP/4
simples e familiariza-se com 0 editor do ABAP/4 .
• 0 Dia 1, "0 amb ience de desenvolvimenro", explica 0 que e urn
sistema R/3 e sua interface com 0 usuario. Voce aprende sabre
a arqu irerura do sistema em que fun cio nam prograrnas no
ABAP/4.
• . 0 Dia 2, "Seu primeiro programa ABAP/4", ensina a criar e
modificar programas ABAP/4 simples. Voce tambem exibe uma
tabela e seu conreudo utilizando 0 D ata Di cti onary, assim como
adiciona com entarios e documentacao aos seus programas.
• 0 Dia 3, ...0 Data Dictionary, Parte 1", descreve as diferencas
entre tab elas de poo l, tabela s tran sparentes e de cluster. Voce
tambem aprende a criar dominies, elem entos de dados e tabelas
transparentes no Data Dictionary.
• No Dia 4, " 0 Data D icti onary, Parte 2", voce cria 'chaves
externas, cria e uriliza tabelas de text c , des creve a diferenca entre
uma estrutura e uma tabela e erie estrur uras no R/3 Data
Dictionary.
• Durante 0 Dia 5, "0 Data Dictionary, Parte J", voce cria e
utiliza indic es secundarios apropriadamente, configura os
arributcs tecnico s para tabel as tran sparen tes e ajusra 0 uso de
buffer para tabelas,
6 I APRENDA EM 21 DIAS AiAP,.

• No Di a 6. "0 Data Dic tionary, Parte 4". voce rrabalha com 0 utilitario
~e banco _de dados para execurar verifica~ao de coe renc ia, acess o de
mform a!Soes de tabelas especfficas de banco de dad . . d
. d b as, m serm 0 e
recnan 0 ta elas no banco de dados.
• Depoi s do Dia 7, "De finindo dados no ABAP/ 4 Part I" ,
ente d I d . , e , VOce
n e as e ementos a smtaxe do ABAP/ 4 d .
bi d d • escreve 0 concerto de
o ~~;~s e dad~s e SU~ : isibilidade, utiliza Iiterais e entende como
co 1 lear ca a np o, definin do e utilizando constantes.

o ambiente de desenvolvimento
Qbjetjvos do capitul....
o'-- _
D epois de conduir este capitulo, voce devers ser capaz de responder as
seguintes perguntas:

II
8 0 que e u rn sistema R/3?
• 0 que e uma inst dncia R/3?
• 0 que e 0 Basis?
• Que plataformas 0 R/3 suporra?
• Q uais sao as possfveis configuracces do sist ema R/3?
• 0 que e a arq uitetura de servidor do R/3 ?
• 0 que e clienre d,elogon ?
o que e R/3?
o e
R/3 urn conjunto inregrado de aplicativos projetado para tratar 0 proces-
samento de dado s em grandes corporacoes. Ele foi desenvolvido na Alemanha
pela empres a denominada SAP {uma sigla de Systems Applications and Pro-
duc ts for data processing - aplicativos e produrcs de sistemas para proces-
•1
samento de dados). .
'" lA, .NT. .Dl VOl EN'
8 APRENDA EM21 DIAl ABAP/4

• WF r:w orkflow - [luxe de trabalho)


Quando voce ve a pclovro SAP por si mesma, ela e pronunciodo • IS (Industry Solutions - solucoes de industria)
"es -ei-pl". Quando e combinodo com Dutro pclovro, e pronunciodo
sop, como em "teclo sap" . Voce nunce deve dizer "sop" quando se • HR (Human Resources - recursos humanos) .
referlr o empreso SAP. Sempre 0 pronuncie como "es-el-pl". Dlzer "sop" • PM (Plant Maintenance - rnanutencao das insta~a~6es).
eo mesmo que dizer lieu n60 sei node sabre SAP".
• QM (Quality Management - gereneiamento da qualidade)
Demro do R/3 , hi urn ambience de tempo de execucao e urn conjunto Estes aplicativos sao chamados areas [uncionais, areas de aplicativo ou, as
integrado de programas aplicativos escritos em 4GLdo SAP -ABAP/4. Esses vezes, modulesfuncionais do R/3. Todos Esses termos sao sinonimos .
programas aplicarivos foram projetados para atender ao processamento de Tradicionalmente , as estruturas empresariais desenvolvern urn conjunro
clades necessaries para negocios muito grandes. R/3 e seu predecessor Rf2 sao de apjicativos de processamentc de dado s avaliendo produ tos individuais e .
particularmente populares no setor industrial. cornprando Essesprodutos separadamente de diversos fabri cantes de software.
o RJ3 e 0 sist ema em que seus programas ABAP/4 serao executados. A Interfaces entre eles sao entsc necessarias . Por exemplo, 0 sistema de geren -
Figura 1.1 oferece uma representacfo 16gica disso. ciamemo de materiais precisara ser vinculado com as vendas e a dist ribuicao e
com as sistemas financeiros, e 0 sistema de £luxo de trabalho precisari de uma
Fig ur a 1 1 alimentacao a partir do sistema de HR. Uma quantidade.significativa de tempo
Todos os m6dulos de pp e dinheiro de IS e gasta na implementacao e manutencao dessas interfaces.
oplicotivo s60 escritos a BJ3 vern predefinido com os aplicativos empresariais basicos ne -
em ABNJ/4, que e
inlerpretodo por cessarios a maioria des grandes corporacoes, Esses aplicativo s coexistern em
executovets Basis, que urn ambiente homcgeneo. Eles sao projetados para funcionar uti lizando desde
por suo vez, s60 urn unico banco de dados e urn conjunto (muito grande) de tabelas. Os
execurcccs no sistema
tamanhos de banco de dados de producao atuais variam de 12 gigabytes a
operocionol.
aproximadamente 3 terabytes. Cerca de 8.000 tabelas de banco de dados SaO
BAS IS distribuidas com 0 produto R/3 pad rdo.

por que voce, preCIse


. b
S al.l:He '
~rU:IS 2
:ilS'-lO= _
SISTEMA OPERACIONAl
E importante para VOCe, como urn programador de ABAP / 4, saber p.or que
esses aplicativos sao todos escritos inteiramente em ABAP/ 4. Esses saO os
aplicativos que voce deve entender para ser urn born deserivolvedor de R/3.
QU ai e a fLJo \;oO do R/3? Por exemplo, suponha que voce conhece ABAP/4 e tenha recebido a
A unica utilidade de urn sistema RJ3 e of~recer urn conjunto im egrado com- incumbencia de escrever urn relat6rio financeiro que resum e debitos e crediccs
pacto, de aplicativc s empresariais de grande escala. Alguns desses podem ser de cada ano fisc·al para cada fabricante na empresa. Talvez voce saiba escrever
vistas na parte superior da Figura 1.1. a conjuntc padrao de aplicativos c6digo em ABAP. mas voce saberia como comecar a resolver essa tarefa?
integrados com ceda sistema R;3 e 0 seguinte: au talvez seu trabalho exija urn novo desenvolvimemo em ABAP/4.
Voce e incumbido de projetar urn sistema que ofereca inf ormacoes de estoque
• PP (Production Plan ning - planejamento da producao)
II para potenciais compradores. Se voce njio conhece os sist emas de vendas e
• MM (Materia ls Management - gerenciamentc de materiais) financeiro e de disrribuicao, voce nac sabere se esta criando algo que ja. existe
• SD (Sales and Distribution - vendas e disrr ibuicao) em Rl3. Tampouco voce pode saber se ha tabelas do R/3 que ja contem dados
sernelhantes ou identicos aos ripos de dados que voce que r recuperar. Esses
• FI (Financial Accounting - comabilidade financeira)
aplicativos sao altamente integrados. Urn desenvolvedor que assume a aborda-
• CO (Controlling - controladoria) gem "eu construirei minhas pr6prias tabelas e manterei minh as pr6prias capias
• AM (Fixed Assets Management - gerenciamento de ativos fixos) dos dados", pode logo descobrir que seus dados sao redu ndant es e devem ser
rotineiramente sincronizados com 0 resto do banco de dados. Ele construiu
• PS (Projec t System - sistema de projetc)
fjguro 1 2
urn aplicativo que nao tira proveito da natureza altam ente inte grad a do ambi- o kane do R/3 no
= ~ M. . 6reo de trcbcfbc-
M encionei isso apenas porque muitos d esenv olvedores qu e des ejam
tomar-se consultores independent es pensam que aprender ABAP/4 erud o de
que eles precisam para se aperfeicoar no sisterna-RJ3. Ecertamente urn grande
infcio, mas e apenas 0 come co. A impcrrancia de treinarnento em uma are a
funcicnal pede ser supervisionada ou desc onhecida par esses interessadcs em
se tomar consultores p rofi cientes d e ABAP/ 4. Obviamente, muito de sse
ap rendizado pede e sera Ieiro na p ratica do rrabalho, En tretanto, espero ilustrar
o fate de que aprendera Iinguagem ABAP/4 esomente 0 comecc de uma longa
viagem dentro do SAP . Se deseja sec bern-sucedido co m o urn cons ul tor
independente, voce acabara precisand o adquirir urn con hecim en to funciona l
da "area. lce ne
do R/3

Voce pode cprender sa bre as 6reos funcio nois lende 0 referencia o nline
do R/3 (cominho de menu do R/3 Help-> R/3 libra ry). Ela cc ntem
tutoriois e Inicrmccoes de todo s os areas funclc ncls . 5e voce ti ve r EJgurp 1 3
ocesso 0 um sistema com dodos do IDES (Internat io na l Demo and A lela de logon do
Education Sysfem), voce tcrnbem pcderc troba lhor co m as exerdcios R/3 solicifa 0 voce
do R/3 library. Perc lnformocces sebre-e dispcn'btlidcde de cu rsos de urnc senho.
trelncm entc, co ntofe a SAP (ht tp ://www . s ap. com) o u la mbto n Col-
lege (http: / /www .1ambton.on .ca ).

Descobrind"'o!..Co"'-'R>L/.3..'-- _
Em urn amb ient e do Windows, voce eferua logon no R/3 escolhendo urn
caminho a partir do men u Iniciar, ou dando urn clique duple ern urn Icone R/3,
como 0 mosr rado a segu ir na Figura 1.2.
o sistema R/3 solic itara a voc e urn ID de usuario e senha. A tela de logon
apa rece na Figura 1.3. Voce pr eench era esses dois campos eentao pre ssionaci
\
i
Enter. I
o sistema R/3 entao exibire uma tela de direitos autorais e, quando voce I!
pressionar Enter, exibira 0 men u principal do R/3 como mos trado na F igura 1.4.
I
j
lltiliza ndo as areas conceitlJa is do sistema R/3 J
A partir do menu principal, vo ce pode ir para tres areas conceituais no sistema -j
RJ3: I
• a area Applications
! .~.
,
• a area Basis
• 0 Development Workbench

._ - -'--
,.. r
~1 .lit ,EI ESE LV ITC
12 APIENDA EM21 DIAS ASAP,.

Fig ura J 4 1~ R' 9 It 1,1,,1 -'e'.. .1


. . . .lcVo'c< - - - ., _ - . , _ _ 1_ ~·tIolJ · :..,., .i ~ ').; ;: _. -~r_ ....•. '. " '. ........- ~ Figura] 5
o menu princi pal :" 1 ~.::r~-:+- ~ ~ iHl;ri n ~ ~i~ :: ";::-.'_~ ;. ~ ·t -'•• .,;.; .'- ; " ' ". a cominho de menu
do R/3. otuolizo urn
registro-mestre do
fobriconte (porte i ).

o Development Workbench e utilizadc para criar e testar progremas


ABAP/4. Como urn programador em ABAP / 4, voce gastara a maior parte do
Figur a] A...--
seu tempo dentro do Workbench. Para acessar 0 Development Wo rkbench,
escolha 0 caminho de menu Tcols-c-Developrnent Workbench. Entretanto,
o cominho de me:nlJ
otuolizoo
seu c6dig o devers ler ou atua lizar as clados de aplicativo e, portant o, sera registro-mestre de um
des tinado a to mar-se parte cia area de aplicativos. Com isso em mente, vamos fobriconle (p orte 2).
olhar cleona de uma area Applications prim eiro.
Para n osso exemp lo, imagine que voce' e urn atendente que trabalha em
urn departamento de ccntas a pOl gar. Urn fabricanre Iiga para dizer que 0
endereco dele mudou. Voce coloca urn marcador no artigo de revista que estav a
lendo (Visao criminologista dos problemas relacionados com a contabilidade
criatiua} e precede a atualizacao de endereco no sistema R/3. Primei ro, voce
alcanca 0 men u Accou nt s Payable escolhendo 0 caminho de menu Ac count-
ing->Financial Accounring- S-Acccunts Payable [veja a Figura 1.5).
Voce entao cria a rransacic de manutencao de registro-mest re de urn
fabricante escolhendo 0 caminho de menu Master Records->Change (veja a
Fi gura 1.6). Voce vera a tela Change Vendor: Initial.
Na tela Init ial mostrada na Fi gura 1.7, digite 0 rrdmero do fabricante, fafSa
. uma marca de selecao na caixa de selecao Address e pressione a tecla Enter.
Voce entao veri a tela Address (veja a Figura 1.8).
Vo ce altera seu endereco e pressiona 0 botao Save {veja a Fi gura 1.9).
Ao salvar, 0 sistema retorna a voce Change Vendo r: Initial Screen. Ele
tambem exibe um a mensagem de exito dentro da barra de status posicionada
na part e inferior da t ela (veja a Figura 1.1 0).
14 APREHDA EM21 DIAS ABAPI4

F igura 1 7 Fig ura 1 9


@'.: sr
;_ [Ill
f! -'
G.- ' _- ~ .s,.o..: llifIl · : .· , · -, :' .• -" . -.- -' ~' -' ... - .,::,. _.',.
.1.".. ,1
.. ' .. "
A lela Vendor Mosler Solvondo oltero~6e s I
II" __._ d o:" . D, x -~ M : i:l ~ o ~ ,:rq . . '. , '.-~','~ - .~ ':-'-
Update Trcnsocti on: no eneJerer;o do ~~·;i.;i;;'I~I~"ld·l lio~;t ,_'\1 ~" " ;~.;-' f':'~'~/~" ... " .> _. ",: .-.~ ~i.--<'•• ; :. " l"'::-
Initial. fobriconte.

[~;?:;;r~;t~:, '~ . ~I; ~'~~:: .:


.-c{t,~&t~~jTft ~.ft t. i ~·I~li~~;,d;_:: :j~ '5116' , -.·f·.': ,.-
.

~¥f;~61t;~%~;E~~::!:~;;;'~; ~' ' I . . .


;~~Z~{~~,i~~:$:~J ,. ~ -. :. "1 :, ~ :.'
TI1"h.... I"] ~, ..ht.. Io/fIlI·';1 .- .-,' ~.

·tf~~~~~}~~~~~~f~;·;{t:~}tii~~
.1<,, ' >< '
E..i..Q..ura 1 8 figur " 1 10 , ," ~£': ' ~ ,.,.. ...

A tela Vendor Moster A Initiol Screen


Update Tronsodion;' con ~rmo q ue 0
Address . o/leroljoo de e ndere'i0
fei feito.

Essa t ran sacao e urn exernplo de muitas das rransacoes no sistema Rl3.
A maioria das rransacoes de dados-mes tres tern aparencia e significado seme-
lhan res.

Desco b rio do a interlace com Q usu6rio do R/3


A Figura 1.11 mostra 0 men u principal novamente com as areas importantes
de tela iden tificadas.
16 APRENDA EM 21 DIAS ABAPi4

Cada t ela do R/3 contem estes elementos : Quando voce ccloco a pante iro do mouse sab re quoiquer batao par
alguns segundos , 0 R/3 exlbe ume dice de ferromenta descrevendo
• A barra de titulo: contern 0 titulo cia tela atua]. suo fun<;ao. No R/ 3 , isso se chama info rma<;ao rcptdo (quick info). Elo
• A barr~ de menu: a conteudo ciabarra de menu altera-se com cada tela. contern uma breve descricoc do batao e a teclo de f un<;aootribuldo a

P esquisando as menus dentro dele, vo ce pode descobrir todas ' as ele.


fun~6es qu e sao p ossfveis na tela atua]. Os menus System e Help estao
presentes em cada tela e as itens de menu que eles contem nunca se • Menu de interface: permite que voce pers onalize as caracterfsticas da
alte ram. . interface com 0 usudrio, acesse a area de rrans fer encia do Windows e
• 0 campo Command: aqui voce digita comandos a serem executados. gere imagens. A seC;ao a seguir abordara mais profundamente os
Por ex~mplo, voce po de efetuar 0 logoff digitando { nex nesse campo recursos do menu de in terface.
e pressionando a teela Enter. A se<,;ao "Utilizando 0 campo Com- • Area Screen: esta e a area grande no mei o da t ela que exibe os dados de
mand" descreve esse campo em mais detalhe. relat6rio ou a tela de urn programa de dialogo .
• A, ~arra de ferramentas Standard: contem a campo Command e uma • A barra de status: exibe mensagens, 0 ID de sistema, 0 numero de
sen e_de ~ot6e~, Eles nunca se alterariio na aparencia, posicao 0'; sessj.o, 0 numero de cliente, 0 indicador do modo inserirl sob rescrever
fun<,;ao, e estarao presentes em cada tela . Algumas podem estar acin- e a hora! data atua].
zen radas por fora se sua funcionalidade estiver atualmente indis - Voce pode ativar e desativer a maioria dos elemento s da tela. Se sua tela
p onfvel.. nao se parecer au se comportar como descrito neste capit u lo, siga as instrucoes
• A b~rra de ferramentas Application: altera -se com cada tela. Ex ibe as na proxima sec;ao para corrigi-la.
botoes que dec a voce acesso rap ido a irens de me nu des sa tela . .
Traba lhando com 0 menu de interface
Figura "] 1 1 Barra de titulo Compo Command o leone corn tres cfrculos coloridos no canto superi or direit o da janela do R/3
Elementos imporfon tes e chamado menu de interface. Com ele, voce pode pe rsonalizar a interface com
de emu tela do R/3.
o usudrio configurando cores de tela, tamanhos de Fonte e a co mportarnento
do cursor. Para realizar isso, de urn clique no le on e no canto superior direito
da janela do R/3 (veja a Figura 1.12) . Urn menu aparec era; de urn clique no
item de menu Options.

Figura 1 12
o menu de interface
com 0 item de menu
Options destocado.

Barra de status
01. JA Jll :Dr VD' IEN- .J ~ ..-
18 AI/EHDA EM 21 DIAl ABAP/.

De urn cliqu e na guia Ge neral e altere suas configuracoes para coinc idir Figura 1 14
.

~!i~i~J,
corn . as mcstradas na Figura 1.13. Pazendo isso, voce assegura que a sua Calocondo marcas de
selelOoo no caixa de
interfa ce com 0 usuririo ficard par ecida e se comportara como descrito ne ste selelOoa Co lors In
livre. Lists.
A tive todas as barras de [erramentas (fa~a um a mar ca de selecso em codas
elas) e configure Quick Info como Quick. Fac;a um a marea de selecao na .~"",~ ~~ •..• ,,, . ~?,
p rimeira e na ultima das caixas de selecao de mensagem como mosrr ado. De
urn clique em Apply.

Voce deve dar urn clique no batao Apply ou OK ant es de escother ovtrc
g uio. Se voce nc o fizer issc, sues clterc coes noo tenSa efe ito.

tt.'tk~...:;:f;;(e~J",? J '"-,,,- ..
. De urn clique na guia Col ors In Lists e fac;a uma marea de selecao na caixa
de selecac Lines In Lists como m ostrado na Fi gura 1.14. De urn clique em OK
para reto rna r.
Exiba tod es as con figurac;6e s de tecto de func;ao (ou teclo ~ do ndo um
F ig u ra 1 13
°
cliq ue com botc o dtreito do mouse em quolque r lugor do 6rea de
tela. lsso fundona e m todcs as telas. As tedos de func;ao 1 a 12 estoo
As op¢es de Gen eral
no linho supe rior dos tedos em seu tecla do. As teclcs de fum;ao 13 0
Inte rfa ce .
2 4 sa o essos mesmos tedos com a tedo Shiftpressionoda . Por exemp lo,
f13 e Shift+ F1. Pora as teclcs f de 25 a 36 , utilize Or! em vez de Shift.
Para 3 7 a 48 , utilize Alt. Pa ro a s teclos f maiores que 48, mo ntenha
pressionoda Or! e digite 0 nc mero do teclo no teclado nume rlco. Po r
exemplc , po ra F50 , monle nho pressio na do Ctrl e digile 50 no tedodo
num erico.

Utiliza ndo 0 Comma nd Field


N a barra de [erramentas Standard est auma ar ea de entrada chamada Com mand
Field. Aqui voce pede inserir comandos de sistema. Para uma lists do s coman-
dos que voce pede inserir aqui, coloqu e seu cursor no camp o de comand o e
pr essione a tecl a FI.
Este ca~po e mars frequentemente utili~do para uuciar uma nova
rran sacao.
A opcac Lines In List s ativa ou desativa a exibicao de linh as verticals e
horizontais em seu relarorio de saida. Essa opr;ao deve estar selecionada para
Por enqucnto, pense em um progromo como ume trcnsc ce o. O s do is
que voce veja 0 efeito das insrrucoes graficas de linha que voce codificard mais
sa o grosseiromente eq uivole ntes. Quando voce inicic umo trc nsocc o,
tarde neste livre .
voce est6 inician do urn progr oma .

NOYO .... Em vez de escolher urn co minho _de menu pora inicior uma tronsac;o~, voce
milo" pe de inserir 0 c6d iga de tronsa c;oo no eampo de eam a ndo. Um c6d!go de
trc nsocoo e um c6digo de 3 ou 4 cc rocteres associodo o ume nc nsocc c - voce pad e
utiliz6. 1o para lnlcic r 0 tronsccoc sem unlucr um ca minho de men u. Ca do trc nsc coo te m
um c6 digo de tronsOf; do (tam bem den orninodo tcode).
20 AP' ENDA EM 21 DIAS ABAPI4
- - --~-

Para localizar 0 c6digo pa ra qualqu er transacac , voce invoca a tr ansacl o o e


Basis «para prograrnas ABAP/4, enquanto a Windows para programas
e enrao escolhe 0 caminh o de menu Sysrem- c-Status. A tela System:_Status Windows. a Basis oferece 0 ambiente de tempo de execucao para programas
sera exibida. a codigo de transacao aparecera no campo Transaction. ABAP /4 . Sem de, programas ABAP/4 nao pod em ser executados. Quando 0
Por exemplo, a partir do menu principal R/ 3, escolha 0 caminho de menu operador inicia 0 R/3, voce pode cons iderar que ele est a iniciando 0 Basis. Ele e
A ccounting-c- Financial Accounting->Accoun ts Payab le. Vo ce vera a tela uma colecsc de programas de sistema R/3 que apresen ta uma interlace a voce.
Accounts Payable. A partir daqui, escolha 0 caminho de menu Ma ste r Utilizando essa interface a usuario pode iniciar programas ABAP /4.
Records- >Display. Voce vera a tela Syste m:_Status . Escolha 0 caminho de Para instalar 0 Basis, urn instalador exe cut a 0 pro grama r3 in st no nfvel
menu Systern -c-Srarus . Aparecerf a tela System: _Status. N o campo T ransac- do pr ompt de comando do sistem a operaeional. C om o na maio ria das in stala-
tion esti 0 codigo de transacio para essa tela: FK 03. . ~6es, essa operacio erie uma esrrurura de diret6rios e copia urn conjumo de
Agora que voce tern 0 c6digo de transaca o, pede iniciar essa transacao de executaveis para ela. Esses executaveis torn ado s juntos com o uma unidade
qualquer tela digitando 0 camp o de com ando I n seguido pelo codigo de fo rm am 0 Basis.
transacao. Para inieiar 0 sistema R/3, 0 oper ador digita 0 comando starts ap. Os
Por exem plo, re tome ao men u principal (de urn clique no bo ta o Cancel executaveis d o Basis iniciam e permanecern sendo executado s, aceit ando soli-
duas vezes e emac de u rn clique no bono Back). No campo de cornando digite citacoes do usuario para execur ar p rogramas ABAP/4.
/ nfk 03, enrac de urn clique na tecla Enter. Voce imediatamenre vera a Display Programas ABAP/ 4 sao executados dentro do ambienc e protetcr do
Vendor: Ini tial Screen. Basis; eles nao sao executaveis que fun ciona m no sistema operacional. Em ve z
disso, 0 Basis Ie 0 c6digo do ABAP/ 4 e os inte rp re ta com o instrucoes do
sistem a operacional.
Em qua lquer tela, voce pode encontrar 0 c6diga de trcnsocco do as programas ABAP/4 nfo acessam fun~6e s de sistema operacional
troosccec etuel. Pera fozer isso, escolho 0 cominho de menu
System- >Stotus. diretamente. Eles u tiiizam fuDc;oes do Basis para execu rar E/S de arquivo e
exibem dados em janelas . Esse nfvel de iscla m entc do sistema operacional
permite que p rogramas AB AP/4 sejam adaptado s sem modificarao de qualquer
Enten d en d o 0 Basis sistem a que suporte R;3 . Esse us o de buffer e. construldo diretamente na
pr6pria linguagem de ABAP/4 e etotalrnente transpar ente para 0 programador.
NOVO ~ Basis e como um sistemo operocional para R/3. Ele fico entre 0 c6digoABAP/4 o Basis torna os programas ABAP/4 portateis. As plataformas em que
lUMO " eo sistema cperoooncl da computodcr. ASAPgosta de chcmc-lo middlewore o R;3 po d e ser executado sao mostradas na Tabela 1.1.
porque ele fico no mete, entre 0 ABAP/4 e 0 sistema operacionel.
Ta b el a 1.1 Plotoformas e bancos de dodos suporto dos pa r R/3

o antecessor do R/3 e RI2 . 0 R/2 e baseodo em mainframe e 0 SAP Sistema Hardwa re Fro ntaEnd s Ban cos d e dados
cdcptou-o para 0 ombientecliente/servidor_Para fczerisso, 0 SAP criou operational suportado suportados suportados
o Basis. Suo criol;oo permitiu que 0 c6digo em ABAP/4 existente DB2 for AIX
AIX SINIX IBMSNISUN W;n 3.1 /95 / NT
funcionosse em outros plctoformos.
SOLARIS HP·UX Di gital HP OSF/ Mol;f Inform lx-Online
D ;g~ol .UN IX Bull OS/ 2 O rccle 7.1
Se voltar para a Fi gura 1.1, voce podera ver 0 Basis co locado entre 0 ADABAS D
Macintosh
ABAP/4 e 0 sist ema operacional. 0 ABAP/ 4 DaO pode funcionar diretamenre
Windows NT AT&TCompoq W;n 3. 1/ 95/NT Orode 7.1
em urn sistema operacional. Ele exige urn conjunto de programa s (coleti-
BulllZen;lh OSF/ Mot;f SQl Server 6.0
vam ente .chamad e Basis) pa ra carre gar, inrerprecar e usar buffer em sua entrada
e safda . HP (Inlel) SNI OS/2 ADABAS D
o Basis, sob certo aspecto, e como 0 ambience Windows. En quanro 0 IBM(Intel) Macintosh
Windows estive r sendo executado , ele ofereee urn amb ience em que os pro- Diqltcl (Intel)
gram as Windows po dem fu ncionar. Sem 0 Windows, 0 programa escrito para Dcto-Geoerc l
o amb iente Windows nao pede ser executado. OS/400 AS/400 W;n95 OS/2 DB2/4 00

a
...• <
22 "R END A EM 2\ DIA l ABIP/4 DlH.O....BIEHlE DEDESENVDLVIMENTD 23

Por exemplo , se voce escrevesse urn programs ABAP/ 4 n o Digital UNIX chama uma sub -retina transfere 0 controle para a sub-r otina e nao pode ser
com urn banco de dados Info rmix e uma interface OSF/Motif, esse mesmo executado em qualquer processamento at e a sub-retina retoma r 0 controle.
programa deveria sec executado sem modificartio em uma mdquina Windows Os programas cliente e servidor sao processos independen tes. Se 0 cliente
NT com urn banc o de dados Oracle e uma inte rface Windows 95. Ou, ele pode envia uma soliciracao ao servidor, ele eSta livre para executar outre trabaiho
sec executado em urn AS/400 com urn banco de dados DB2 utilizandc OS /2 enquanto espera a respcsta.
com o front -end . A Figura 1.16 mostra as rres configuracoes cliente/servidor padrao . 0
A SAP tambem oferece urn co njun to de [erramentas para adm inistrar 0 R/ 3 pod e ser modelado para trabalhar em qualqu er uma dessas configuracoes.
sistema do Basis. Essas ferramentas executam tarefas como monitoracao do Quando 0 programa cliente e 0 servid or sao execu tados no rnesmo
desempenho do sistema, alem d a con figuracso e manutencio de sistema. Para cornpu tador, a cccfiguracao e referida como cliente/servido r em urna camada.
acessar as [erramentas de administracf c do Basis a part ir do menu principal, [Uma camada (tier) e 0 limite entre dois computadores.] Quando des sao
escolha 0 caminho To ols-> Adm inistration. execurados em cornputadores diferentes, a configuracao e referida como eli-
Eis alguns exemplos de [erramentas de adminis n-aci o do Basis: ente/ servidor em duas camadas .
Urn programa pode func ionar como urn cliente e como urn servidor, se
• Para ver urn a lista dos servidores atualme nt e sendo executados em seu ele tanto solicita informacoes como responde as solicitac oes. Quando voce tern
sistema R/ 3, escolha 0 caminh o de menu Tools->Administration, treS programas em comunicaclo, como e mo strado na Figu ra 1.16. a configu-
Monito ring-> Syst em Moniroring-> Servers . raliaO e chamada client e/ servidor em tres cam adas.
• Para visualizar 0 log de sistema atual, escolha Tools-> Administration. A configuracao cliente/ servidor permite que 0 sistema R/3 divida sua
Monitoring->System Log. c.arga com mul tiple s computadores. 1 550 oferece ao cliente a capacidade de
• Para ver a esratisti ca de desempenho de sist ema, execu te a transacao ajustar a escala ao poder de processamento do sist ema para cima ou para baixo
,,03 (digite 105103 em Co mmand Field), escolha This Application simplesmente adicionando Dutro computador a u ma configuracio existence ,
em vez de substiruir urn {mica computador que executa todo 0 processamento,
Server, Last Minute Load e analise os ultimos 15 minutes. Pressione
o boeao Dialog na par te inferior da tela e voce vera 0 tempo medic de como ocorre no mundo des mainframe s.
resposta de usuario para os ultim os 15 minutes (veja em A v , Response
F igmn 1 16
Time). ConfjgLlro~6es dienle/servidor em Limo. dLios e Ires comodos.
o Basis foi p rcj etado para ser executadc em uma configuracac clien- ~ ... _e-acIo s..:.dot ... d.... CI>IftC>do>
DDis , ompvIOllo,u
te/servido r.

Entenderidc.c.cliente/serxidcr _
NOVO ....
llRIIOr
C1iente/servidor soo dai s progremo s que conversam um com
Figure 1.15).
0 outre [ve]o 0

_
....... .....
flgu rg 1 1 5
AeSSEmOo do sistema
c1iente/servidor.
Progromo 1
Solicitocc c de
inform oc;60

Progro mo 2
._.
"""-
......-
..f=f-l-I-- -} •- ,
Resposto

Progrom o Progromo
die nte servidor

Aqui vemos 0 Programa 1 solicitando algumas informacoes ao Programa


2. 0 Pro grama 1 e 0 ciiente e 0 Programa 2 e 0 seruidor. 0 Programa 2 oferece
ao Programa 1 as inf ormacoes que ele solicitou. I sso e diferen re de urn
pre grarna prin cipal que chama uma sub -retina e retorna. Urn pr ograma que
24 APlEHOA EM 21 DiAl ABA'" D1A1:0 AMBI'tHTE lit DEStft10lVI/IIl::NTL 1..

Arqu itetura dQ sistema R/3 • 0 mimero de process os e seus tipos


A SAP baseou a arquitetura do R/ 3 em urn modele de cliente/servidor em tres • A quanridade de memoria que cada processo pe de utilizar
camadas. A'arquiterura de sistema R/3 aparece na Figura 1.17. • 0 perfodo de tempo em qu e urn usuario pode ficar inativo antes de
ser automaticamente desconectado
~rvidor de opresentoc;60 oservidor de aplicarivo existe para interpretar programas ABAP/4, e eles
somente 5[0 executados nesse servidor - os programas nao fun cionam no
NOVO ... o servidor de opresento~ oo e reo lmente um progroma identificodo como servidor de apresentacso. Urn programa ABAP/4 pede iniciar urn executive!
TEmO " sapgui . exe. Normolmente, elee insto lodoem umoestccsc de trobolhode uscorio.
no servidor de apresentacao, mas urn prograrna AB AP/4 nao p ode ser execu-
Para inicc-lo, a usu6rio d6 urn d ique duple em urnleone no area de trobalho ou escolhe um
caminho de menu. Quando lnkio do, a servidor de opresenfoc;cio exibe a s me nus do R/3 rado nele.
dentro de ume janela. Esso jonelo e comumente coohecidc como SAPGUI, ou como interface Se seu prograrna ABAP/4 solicirar inf ormacce s do banco de dados, °
com a usu6rio (au simplesmenfe, interface). A interfoce oceifo entrada do usvoric no forma servidor de aplicarivo forma tara a solicitacsc e a enviard ~o servidor de banco
de pressionomentos de tecla, cliques de mouse e teclos de func;oo e envlo esscs sclicltccoes
de dados.
00 servidor de aplicotivopare serem processados. 0 servidorde oplicotivo envio as resultados
de volta 0 SAPGUI que entoc fonnata a soido a fim de exibi-Ia para 0 usu6rio.
Descobrindo 0 servido r d e ponco de dodos
F i g u ra] 17
A orquiteturo do' KOVO.... 0 servidor de banco de dodos e um con junto de execvtovels que oceitc
sistema R/3. Serwdor de
mwo ,. solicltocoes de banco de dodos do servldor de op licotivo. Essos scllcttccces soo
gptl!5 entg¢O passodos pora 0 RDBMS (Relation Database Management System). 0 RDBMS envlc os
dodos de volta 00 servidor de banco de do dos , que ente o posse as iniormccces
nova mente 00 servidor de c pllcotivc. 0 servidor de c piiccttvo pa r suo vez transfere essos
inform e~ 6e s pore se u progromo ABAP/4.

Hoinormalmente urn computador especjfico dedicadc a abri gar 0 servidor


de banco de dados; e 0 RDBMS pode ser executado nesse computador tam bem,
ServiOor de beeee de dodc» ou pode ser instalado em seu proprio computador.

Configu rand o os servj do re s


Durante a instalacao, os servido res podem ser configurados de qu atro maneiras
(veja a Figura 1.18) .
DB
Figura] ] 8
Passlve;s
o servidor de oplicotjvo configurot;6es do
sistema R/3.

NOYO '" e
Urn servidor de aplicativo urn conjunto de executoveis que interpreta ccleti-
milD r vomente os progrom os ABM/4 e gerendo a entrada e 0 sc fdo para eles.
Qua ndo urn servidor de cplicctivc e inicioda, todos esses execvtovels inicicrn 00 mesrno
tempo. Quando um servidor de cplicctivo e interrompido, tadas eles porarn juntos. 0
ncrnerc de precesses que sao inidodos quando voce exlbe 0 servidor de ap licotivo e
definido em urn vnico orquivo de confjg urc~ao chomodo perfil do servidor de ap!icofivo.

Cada servidor de aplicativo tern urn perfil que especifica suas caractertsti-
cas quando ele inicia e enquantc esta sendo executado. Por exernplc, urn perfil
de aplicativo servidor especifica:
- - -- -- - -
DIAL 0 AMBIENTt DEDESEHVOlVIMENTO I 27
26 I "RENDA EM 21 nus ABAP/4

I
Em uma configuracao clienre/servidor em tres cam adas, todos a s servi- Em te rm os mais gerai s, uma instdncia eurn seruidor. UIDa in stan cia eurn
dores de apresenracio, de aplicativos e de banc o de clados sao executados em con junto de process os do R/3 que oferecem servic e s ao sist ema R/3.
mdqu inas separadas. Essa e a configuracao mais comum para sistemas grand es
e e comum na ar ea de pro ducao. Arquitetura do servidor de.npllcntiza.; _
Na dist ribuicao cia configu raclo de apresentacao, 0 aplicativo e a s servi - a s componentes de urn serv idor de aplicativo saO mostrados na Fi gura 1.19.
dores de banco de clados sao combinadas em urn co mp utado r e os servidores Ela con sisce em urn dispatcher e multiples p roc essos de trab alho.
de apresenracao sao executados separadam ente. 1550 e utilizado para sistema s T odas as solicitacoes provenientes de servidores de apresen taci o sao
men ores e {requentemente e visro em urn sistem a de desenvolvimento. dir igidas prim eiro eo di spatcher. 0 dispatc her grava-as prim eiro na camada do
Na configuracac cliente/servidor em duas camadas, as servidores de disp atc her. 0 dispatcher extrai as soliciracces cia camadautilizando 0 algoritmo
apresentacao e de aplicativo sao com binada s e 0 servido r de banco de dados e primeiro a entrar, primeiro a sair . Cada solicicacao e entao alocada para 0
separado. Essa configuracac e uti lizad a em conjuncao com outros servidores primeiro pr oces so de trabalho disponivel. Urn proc esso de trabalho trata uma
de aplicativo. Ela eaplicada para urn servidor em lote quando este esta separado solicitacao por vez.
dos servidores online. Uma SAPGUI e instalada nele para oferecer controle
local. Figura 1 19
Do servidor de cplicotivo
~e~d~ ~e ~l!::a~vo_ _ _ _
Quando todo s as servidores sao combinadas em uma unica maquina, A ofquiteturo do
voce tern um a configuracao central. Isso raramente evisto porque des creve urn servidorde opJicotivo. I

sistema R/3 independent e com apenas urn unicc usuario .


1
I
I

Definindo um sistema R/3 I
I
A definicjo mais simples de urn sistema R/3 e <Cum banco de dedos", Em urn I
sistem a R/ 3, ha somente urn banco de dados. Para expandir a definicao, 0 R/3 I
e considerado como sen do to dos as cornponentes anexados a esse primeiro I

banco de dedos. Urn sistema RJ3 e compos to de urn banco de dados servidor I
I
qu e acessa urn unico banco de dados, urn au mais serv idores de aplicativo e urn I
ou rnais servidores de apresentacao. P or definicao, urn sistema R/3 consiste em I Area de rolagem
tcdos os com ponentes ane xados a urn banco de dados . T en do urn banco de I Mem6rio estel'1dido
1 _
clados , voce tern urn sist ema. Se tern urn sistema, voce tern urn banco de dados. -- ---- - -- - - -
Durante uma imp lementacao, ha normalm ente urn sistema (ou urn ban co de
Perc a servldor de banco de dodos
dados) atr ibufdo para 0 desenvolvimento, urn ou mais sistemas designados para
t estes e urn at ribuido para a producao.
P ara executar qualquer processamento para uma solicitacio do usuario,
NOVO.... 0 fermo poisogem do sistema R/3 signific o uma descrtcec do ncme rc de
urn processo de trabalho precise enderecar duas areas espe ciais da memoria: 0
URMO r sistemas dentro de umo Instclccoo de SAPe a forma como eles s60 designados, con texte do usuario e a area de rolagem do pro grama . 0 contexte do usuario
euma area da memoria que contem as inforrnaco es sobre 0 usue rio, e a area de
tois como desenvclvirnentc, teste ou prodocec.
ro lagem e uma area de memoria que conc ern as infor rnacoes sobre a execucjo
Definlndc uma instfmcia R/3 des program as. .

NOYO ~ Quendo voce ovvir o!guem utlllzcr 0 po lovro insfdncia , no maio rio de vexes Entendendo um contexto do \lSl!orio
TtRMO ~ essa pessoo estero se referinda 0 um servldor de ap Jicotivo. 0 le rma instdnci o
e sin6nima de servidor de apficatiYo . NOYO r... e
Um contexto do usu6rio memo ria alo ca do que co ntem as corcctertstlccs de
URMO ~ urn usucrtc que estc con ecto do 00 sistema R/3. Ele ormozeno as lnformccoes
o termo instdnciacentral refere-se ao servidor de banco de dados. Se urn necessa ries para 0 R/3 sobre a usu6rio, co mo :
servidor de aplicarivo e servidor de banco de dado~ residem na mesma maquina,
o termo instdncia central refere-se ao computado r em que os dois residem.
~r
,.., r-=--~~~~~------- --~~
- - --- __
- --- ~~ ~~ ... ~-- ~~~

I,
, DIA I: 0AMBIflffi. DE OEStNVOlYIMENTO 29
28 I APIEHDA EM 21 DIAS ABAP/4 J------.-:-----~==:::=.-
Fjgurg 1 20 Um posse de di61ogo
• As configuracoes atuais do usudrio I
Pcsscr do Initiol I FK02 Address Screen
• As autorizacces do usu aric Screen parc 0 Address
lnif.o IScree n
Screen pode ser .
• 0 no me dos programas que 0 usuario esti atualmente utilizando con siderodo um posso Enderecc

=
Foboccnte 0 ADO

=
de die/ogo.
Quando urn usuario eferu a lo go n, u rn contexte do usuario ealocado para
esse logon. Q uando esse u suario efet ua a logoff, 0 contexte e liberaclo. Ele e
uti lizado durante 0 processamento de urn programa e sua importancia edescrita
c1 Endereco • = ==
c:::l
em mais detalhes nas secoes a seguir.
\ lnklo do
Entendendo uma area de rolagem -, po sso de
, di6lo go
~yo .... Urno orec de rolcgem e 0 mem6rio que e c locodo po r um pro cesso de trobolho ,
ftRl!O ~ pora umc instc ncio de um progromo. Elo ormozeno informoc;6es necessc rics
pare 0 R/3 sabre 0 execvcco do prog romo , como; Dispatcher

• O s valor es das varieveis


Processo de Iroholho -+--+~ I
• As alocacoes de m emoria dina-mica I
• 0 pon teiro d o programa arual \..
\ '
T o da vez que urn usuari o inicia urn programa, urna area de ro lagem e '1..0»5 I
criada para essa instancia do p rograma . Se doi s usuaries utilizarem 0 mesmc
programa simultaneamente, existirao duas areas de rolagem - uma para cada
usuario . A area de rolagem e lib erada quando 0 programa e encerrado. Urn passo de didlcgo e 0 proces sarnento nec essario para sair de uma ~e.la
, pan a proxima. Ele inclui rode 0 processamento que ocorre de: d.equ e 0 us~a.no
faz uma soliciracao ate . e incluindo, 0 processarnento n.ecessano para exibir a
05 consultores de Basis costuma m vscr 0 termc 6reo de rolcq em .p r6xima tela. Por exemplo, quando 0 usuario dol. urn ch~ue DOl tecla Enter n o
referindo -se a todcs a s 6rea s de rologem pa ra um usu6rio ou oinda Change Vendor: I nitial Scre en, ele in icia urn passe de dialogo e a amp~lheta
todos os 6reas de rologem em um servidcr de cpllcof ivc. Normalm ente, \ apa rece , impedindo out ra entrada . 0 p rograrna sapmf02k recupera as infer-
voce pode de duzir 0 significad o prete ndido a po rtirdo cont exte em qu e i
tel utlllzodo.
! macoes do fabricante e as exib e na t ela C hange Vendor: Addr.ess, e.a ~mpulheta
desaparece . 1 550 marca 0 fim do passe de dialogo e agora 0 usuano e capaz de
faz.er o utra solicitacao .
Tanto a area de ro lage m como 0 contexte do usuario representam urn Ha quatro maneiras de 0 usuario poder iniciar urn passo de d ialcgo. A
papel importance no processamento de passos de urn dialogo.
partir do SAPGUI:
Entendendo os passos de dialogo • Pressionar Enter.
• Pressionar uma te cla de funr;ao .
NOVO .. Um posso de die /ogo e quolque r clterocc o de tela [vejc 0 Figura 1.20) .
• Dar urn clique em urn bono na te la.
lEma r
• Escolher urn item de m enu.
e
Um posse de di610ga utilizodc pelcs ccnsultores de Basis como umo
Eim port ante para 0 prog ramador de ABAP/4 conhecer sa bre pass os de
vnidode de medida pa ra 0 tempo de respcstc do sistema. dialcgo porque eles formam uma un idade discrera de processamento para um
programa ABAP/4. .
f
II
'-T'..{ ' . .r: --- - - OIA 1: 0AMBIEHTE DE DESENVOLVIMENTO 31
I 30 I 'PREND' EM 21 DIAS 'UPI'

I
Entendendo 0 processamento roll in/roll out Os progro ma s ABM'/ 4 noo tern a copoddode de intercept or mu itos
eventcs com uns no Windows . Os eventos que gerom rnuitos me nsagens
co mo pressiono mento de urno teclc , chero cees de Ieee e movime ntos
NOYO Ilrrr.. Urn programa ABAP/4 ocupo openos urn process o de trobolho pora urn passo
lERMO r de di6!ogo. No ccmeco do posso, a 6rea de rologem e 0 contexte do usu6rio de mo use, noo sao pc ssodcs para prog romos AW/4. Com o um
resultodo, n60 no como executo rolguma s func;6es que sao encontro da s
safrern roll in pora 0 processo de trobolho. No lim do posse de di6logo, eles sofrem roll
, out. Isso e i1ustrado no Figura 1.2 1. em o utros prog romos Windows. Pe r exernplo, no ABM/4 , voce n60
pode volidor a ccnteudo de urn co mpo quan do 0 usu6rio pressiono a
tedo Tab . Em vez disso, voce de ve espe ror 0 usu6 rio lnicicr outre posso
1 Fi g u r a 1 21
o processo menlo roll d o di6logo.
in/roll out.

Descobrindo co mo os do do s sco enviados


ao servidor de aprese nto ~o o
As mensagens trocadas entre 0 servidor de apr esentacjio e 0 servid~r de
aplicativo estao em urn [ormato SAP proprietdrio. 0 SAPGUI acena ~s
informacoes de tela enviadas do servidor de aplicativo e [ormatadas a~ropn­
.,.
~~
-
adamente para a plataforma em que esta send o executado. Isso permlte ~ue
diferenees plataformas de hardware do usu ario final conectem~se a urn unic o
Durante 0 roll in, as ponteiros para a area de rolagem e 0 contexte do servidor de aplicativo. Par exemplo, urn PC OS/2 e urn PC Wmdows p odem
usuario sao ocupados no processo de trabalho. 1550 permite ao processo de cc nectar-se ao m esm o servidor de aplicarivo ao mesmo tempo.
trabalho acessar os dados nessas areas e entao executar processamento para esse
usuario e tal programa. 0 processamento continua ate 0 programa enviar uma Entendendo os com po ne ntes de urn processo
tela ao usuario. Nesse memento, as duas areas sofrem roll out. 0 roll out de trqbolho
invalida as pocteircs e desassocia essas areas do processo de trabalho. Esse
Cada processo de trabalho tern quatro componen tes (veja a Figura 1.22).
p rocesso de trabalbo agora esta livre para execurar processamento para ourra
solicitacio. 0 programa esta no memento apenas ocupando memoria e nac
FigurA 1 22
consome nada da C PU. 0 usudrio ve a tela que foi enviada e logo enviara ourra Interprefodor do ABAP/4
Os componentes de
solicieacsc. um proceno de Handler
Quando a proxima soliciracjo e enviada do usuario para con tinuar 0 trabo/ho. de to refo Interpretodor de telo
processamento, 0 dispatc her aloca essa solicitacao para 0 primeiro processo de
trabalho disponivel. Este pode ser 0 mesmo ou urn processo de trabalho Interface de bonco de dodos
diferente. 0 contexte do ususrio e a area de rolagem para esse programa
novamente sofrem roll in para 0 pro cesso de trabalho e 0 processamento
reassume do ponto em que foi deixado. 0 processamento continua at~ a Cada processo de trabalho e composto do seguinte:
proxima tela ser moserada, ou ate 0 programa term iner. Se outra tela for enviada, • Um handler de tarefa
as areas novamente sofrem roll out. Quando 0 programa termina, a area de
• U rn interpretado r de ABAP/4
rolagem e liberada. 0 contexte do usudrio permanece alocad o ate 0 usuari o
efetuar logoff. • Urn interpretador de tela
Num sistema com muitos usudrios utilizando mu ito s prcgramas, apenas • U rna interface de banco de dado s
alguns desses programas estarao ativos nos pro cessos de trabalho de cada vez , Todas as soliciracces passam pelc handler de tarefa , que entao afunila a
Quando eles nso estiverem ocupando urn processo de tra balh o, des sofrem solicieacio para a parte apropriada do proce sso de tr abalho.
roll OUt para a mem6ria estendida e apenas ocupam a RAM. Isso poupa a CPU as interpretadores interprerarn 0 codig o do ABAP / 4. Note que hi dois
e permite ao sistema R/3 alcancar urn alto throughput de transacio. interpretadores: 0 inrerpretador do ABAP/4 e 0 int erpr etador de tela'. Hi
r------------~-- __.. . .__.. ._.. -__.. ._........_. .-. _. _.. ._.... _ 'W .....-- ~ ~ ~.., _
....- -_ ......_-.~--~------- -- ....1
I.
32 APRENDA EM 71 DIAS ABAP/4

g-"
D~ h 0U BiEIffi DEDESENVDl~M£", O 33
l
realmente d uas varialjoes de ABAP/4. Urna e a linguage m de p rocessamento Fjgura 1 23 b"!P
l' -' ~ _ ,", - . ~ ,: ~. ~ _~ , .... _
de dados do ABAP/4 completamente desenvolvida e a out ra e u ma lingu agem a usu6ria digifo a
d iente de logon no
muito especializada de processamemo de tela. Cada uma delas e processada tela de logon no
pelo seu pro prio interpretador. compo Client.
A inter face de banco de clades trata 0 trabalha de comunicacdo com 0
banco de dado s.

Entendendo os tipos de processo de trabalbo


Hoi sere tipos de processo de trabalbo. Cada urn deles trata urn tipo de
solic iracao especlfica. aripe de processo de trabalho e 0 5 tip os de soliciracso
que ele trar a sao mostrados na Tabela 1.2.

Tabela 1.2 Tlpos de processos de trobolho e as tipos de schcnccees que eles


trotom

Tipo de processo Tipo de solicito§oo de trabalho


o IDio log) Scllcltccoes de di6!ogo
V (Update) Sclicltccoes para ctuclucr dados no ban co de dodos
B (Background) Trobolho s de segundo plano
Fjg ura 1 2 4
S (Spool) Imprime so licitac;ees de spool
Esto lobelo ~
E (Enqueue) Solicitoc;5es de bloqueio 16gico depen dente de
M (Message) Roteio as men sagens entre os servidores de op licotivo den tro di ente porque 0
de urn sistema R/3 primejro ccmpc ~
do tipo COO.
G (Ga teway) Afunila a s me nsagens dentro e fora do sistema R/3

Entendendo 0 c1iente de logon


o termo cliente de logon DaO tern nada a ver com Cliente/Servidor - e
com plet amente diferente. 0 clients delogon se refere ao mimerc que 0 usuario
digita no camp o C lient na tela de logon (veja a Figura 1.23).
o mimero digitado aqui pelo usuario corresponde a urn conjunto de
linhas dentro de cada tabela dep endente de clienre dentro do banco de dados .

Entendendo tobelos dependentes e independentes


de diente
H i da is tipos de tabelas em urn banco de dados do R/3: dependentet de cliente
e independentes de cliente. Um a rabeh e dependente se 0 primeiro campo fo r
do tip o Cl NT. 0 comp rimen tc sempre sera 3 e por convencao, esse cam po
sempre e identi ficadc como ma ndt . Se 0 primeiro campo nao for do tipo ClNT,
a ta bela eindependen te de cliente. Urn exemplo de uma tabela dependente de
cliente e. mos trada na Figura 1.24. A Figura 1.25 e urn exemplo de uma tabela
independente de clien te.
/ - ·"'-'~'-r --·-·-" .-r- _.."..... ":"\ r> -r> r~·-;-,-...,.---~~- --- _ -- ;W _ -w .,.... __ ..

34 APRENOA EM 21 DIAl ABAP" OIA1:0 AMBJENTE DEDESENVOlVIMHHO 35


£laura 1 25
Esto tobe/o e
a mecan ismo de clience de logon divide as linh as dentro de uma tabe1a
independ ente de de dep endenc ia de clien te em grupos distintos. Pa ra acessar urn conjunto
elien/e, porque 0 diferenre de da do s, 0 usuerio efet ua lo gon e especifica urn nume ro diferente de'
prime iro compo n60
cliente.
e do tipo CLNT.

Os registros-mestres de usu6rio (co ntendo IDs de usu6rio do R/3) sao


de pendentes de cliente. Portonto , pa ra go nhor oce sso a um c1iente, 0
ad minisirodo r de seg uron<;o deve crie r um novo ID de vsvcrio para
voce de ntro desse cllente .

Os de senvolvedores e a s testers u tiliz am 0 mec anismo de cliente de logon


para criar e acessa r multiples conjunros in dependentes de dados dentro de uma
unica tabela .
Por exempl o, suponh a que da is tfp icos programadores anti-sociais estao
trabalhan do em urn aprimorament o do sistema de cob ranca. Romeu esta
modificando a rransacao de atualizacao e J ul ieta est a criando urn novo re latorio
para acompanhar as mcdificacoes de Romeu .
A Figura 1.26 mostra como este camp o afeta 0 usuario. Jul ieta co nfigu ra a s clados para seu tes te, executa 0 re latorio e obtem uma
Na Figura 1.26, 0 usuari o efetua lo gon para 0 cliente 800 e executa 0 sarde. Romeu trabalh a na sala ao lade, mas deviclo a suas tendencias anti-sociais
programa mostrado. Este programa seleciona linha s de tabela Hal e emite esti feliz ignorando que sua tr ansac ao utiliza as mesmas tabe las que 0 relat6rio
1fal -l; f nr. Quando esse programa e executado, so men te dua s linhas sao de Jul ieta. El e execut a sua tra nsa cac e atuaiiza os dados . Romeu obteve 0 que
selecionadas: apenas nos casas onde mandt e igual a 800. 1550 acontece auto- ele que ria, ma s Julieta entao modifica seu c6digo e executa seu programa
m aticam ente porqu e 0 primeiro campo na tabela ede tipo CLNT. Hoi cinco linhas novam en te. Sua safda difere da ultima e m uitas diferencas nao resultam de suas
na tabela, mas 0 programa apenas emi te essas linhas onde mandt e igual a 800. alteracoes, ma s das aheracoes de Romeu. 0 que tem os aqui e uma falha de
Se 0 usuario est iver para efetuar logon para 0 cliente 700 e executar 0 mesmo comunicac t o .
programs, tr es linhas de dados seriam localizadas e seriam emitidas. Se 0 usuario Se as tabelas u tilizadas p or Rom eu e os programas de Julieta fossem
estiver para efet uar logon para 0 eIiente 900, apena s uma linh a de dado s seria depend ent es de cliente , eles poderiam con ecrer-se a clientes separados, con-
localizada.
figurar conj untos independentes de dado s e testar seus programas sem jamais
conv ersare m urn com 0 outro. Eles p oderi am execut ar to do seu "teste no
Figura 1 26 l ela Rl3 log on o ulv6rio
o efeito do elelllO logon e conforto de sua sala e isolado s de seu companheiro de tr abalho.
dependencio de Clienle []QQ] f---...,.-~ ~ e;:~:e Par a torn ar suas rabelas dependences de clien te, eles apenas precis am ter
cliente. Jcbe lc lFAt ma ndt co m o 0 primeir o cam po e 0 sist em a R/3 cuid ara do restc. Quando
MANDT lIFNR registros sao adi cionado s a tabela, 0 siste ma automaticamente move 0 cliente
I
700 11 de logo n at ual no campo ma ndt quand o 0 re gisrro for enviado ao banco de dados .
700 12 Suas instrucoes se l ect em Open SQL somente retornarao as Iinhas em que 0
80 100
800 1 1 numerc de clience na tabela for igual ao seu num ero do client e de logon atual.
o As ins trucoes i nse rt, update, modi fy e del et e de ban co de clados Open SQL
tambem ofere cern tratamentc automatico de clienre .
Se todas as tabelas envolvidas forem dep endentes de cliente, poderd haver

'
@]
:
:
Sardo

100 :
101 :
mais de urn grupo de restad ores trabalhando ao mesmo t empo ern urn sistema
de teste, D ua s equipes de resr ador es poderao obrer resulta dos de funcionali-
, , dade divergences com 0 m esm o con jun to de programas simultaneam ente se
r -r- r r --- -,.-.;- r . t">: ~"

36 I 'PRE"" EM 2\ DI'S 'BAP/~ DIA 1:0AMB\Uffi DE DESEHVOlVIMENTO 37

efetuarem logon 'com diferentes clientes de logon. As atualizacoes feitas pa r de buffer reduz a carga no servidor de banco de dados e no vfnculo de rede
uma equipe nao alterarac as dados que pertencem aoutra equipe. entr e 0 banco de dados e os servidores de aplicativo e pede acelerar 0 acesso
Tambem poderia existir no sistem a de teste urn treinamento de cliente. ao banco de dados de 10 a 100 vezes mais.
Os alunos poderiarn conectar-se a urn cliente e as tesradore "s poderiam conec-
tar-se a outre. Os dois teriam executad o 0 mesmo conjunto de programas, mas F; gllrg 1 27 Servidor de ccltccnvo
a s programas acessariam conjuntos de dados independentes. o ccmponenle de Processo de frobolho
interfac e d e bonco de ..2
dodos do processo de
trobe/he"
••
E
-0

( Nota
A instcloccc mais com um do R/3 tem tres sistema s: deseovolvimento,
teste e producoo . Pa r podroo , cod a sistem a vern co m tres clientes
instolodos: ODD, 001 e 066" Eco mum ter de tres 0 se is c1ient es nos

'U
c
Ope n SQl
IIF
sistemas de desenvolvlmento e de teste, ma s roromente voce vera mois 1=\ ~D B
de um cliente no producdo.
1
SQL native
Uti Iizoad 0 0 Open SQuL....,d...,o.........S""A:\LP _
o c6digo do ABAP/4 po de ser portado de urn banco de dados para outro. Para
acessar 0 banco de dados ern urn program a ABAP/4 voce codificara a Open Buffer de dodos
SQL da SAP. 0 Open SQ L e um subconjunt o e uma variaclo do ANSI SQL.
o interpretador do ABAP/4 passa tod as as instrucoes ern Open SQL para parte
da interface de banco de dados do processo de trabalho (veja a Figura 1.27).
Ai" e1as sao convertidas em SQL que e nativo para 0 RDMS inscalado. Por
exemplo, sevoce esriver execurando urn banco de dados Oracle, seu Open SQ L
ABAP/4 seria convertido pela interfac e de banco de dados em instrucoes de
I Servrdor de
bcncc de
dcdo5
Oracle SQL.
Se voce utiliza Open SQL, suas instrucces de SQL serao passadas para a
interface de banco de dados. Utilizar Open SQL tern tres vantagens principais.
Todas elas sao implementadas por rneio da interface de banco de dados .

f-OJiahilidad=-----
e
8
- -- - - - - - -- - Troto me nto o!ltom6tico de c1i ente
A primeira vantagem e 0 face de que suas insrrucces de SQL serao portaveis
entre bancos de dados. Por exemplo, se por alguma razao sua empresa quisesse A terceira vantagem de utilizar Open SQL eo"tratan:zento automdtico de cliente.
alternar de urn banco de dados Oracle para urn Informix, 0 banco de dados Com Open SQL, 0 campo de cliente automaticamente e ocupado pela interface
poderia ser alrerado e seu c6digo ABAP/4 cont inuaria a ser executado sem de banco de dados. Isso ofereee as suas equipes de desenvolvimento e de teste
nenhuma alteracao. muitas vantagens, como a capacidade de executar multiples testes e treinamencos
simultsn eos em urn unico banco de dados sem incerferencia de urn em outro.
Util izo ndo buffe r de dadQS.JJ o servidor de aplicatjvo
A segunda vantagem e que a interface de banco de dados usa buffer nas Resu m o
informacoes do banco de dados no servidor de aplicativo. Quando as dados • 0 R/3 sup~rtamultiplas platafo rmas de hardware, sistema operac ional
sao lidos do banco de dados, eles podem ser armazenados em buffers no e bancos de dados .
servidor de aplicativo. Se entao for feita um a solicitacao para acessar os mesm os • Alem de permitir SQL native, 0 ABAP/4 oferece Open SQL. Utilizar
registros, estes ja estarao no servidor de aplicativo e a solicitacao sen satisfeita O pen SQL torna seu codigo por tavel, mais rapido e oferece tratamento
a part ir do buffer sem necessidade de ir ao banco de dados. Essa tecnica de use autom":itico de cliente.
--- - _ W' 'W" _

- .w

38 APIl:ENDA fM 21 ens ABA P/4


DIA 1, DAMBIEHTIDE DEIENYDlYIMENTD 39

• 0 cliente de logon perm ite que mulriplos grupo s de dados inde- Teste
pendentes sejam armazenados ria rnesma tabela. Os dados que voce 1. Eseolha 0 caminho d e menu T ool s-> Ad ministr ation, Monitor-
acessa dependem do numero de c1ientes que voce digitou quando ing ->System monircring-> User overview. Qual eo c6digo de tr an-
efetuou lo gon.
sa!S3.o para essa transacio?
2. Qual e 0 codigo de transacio par a 0 menu principal R/3 ? (0 menu
P&R principal e 0 primeiro menu exibido ape s 0 logon.)
3. Qual e 0 codigo de transacjlo par a 0 caminho de menu To ols-o-De-
o Po sse copiar urn clienr e existente para um novo cliente?
velopment Workbench?
4. Se hi treS sistemas R/3 na sua paisagem de siste ma atua], quantos
o o consulto r do Basis pode fazer isso pa ra v oce utilizando urn
utilit ario de c6p ia de clien te. Cada sistema de desenvclvimento
bancos de dados existem ?
normalmente tern p elo menos urn clienre de refer en cia e urn 5. Se urn sistema R!3 tern dais servidores de aplicativo, quan tas inst an-
clience de trabalho. Seus clados "validos" sao man tides no eli- cias ele tern?
en te de refe rencia. Eles sao copiados para eriar 0 cliente de 6. 0 que e Open SQU
trabalho. Se voce COHamper 0 clien te de trabal ho, 0 consultor 7. Quais as van tagens que 0 Open SQL of erece sob re 0 SQ L native ?
do Basis pode restaurar seu estado original copiando 0 cliente 8. Qual e a parte do processo de t rabalho ut ilizada para implementar
de referencia novam en re. OpenSQU
9. Quando um a area de rolagern e alocada, quando edesaloc ada e 0 que
o Po sso escrever urn p rograrna que Ie dados de u rn outro cliente
que nolo 0 clien t e a que estou atualmente conectado?
ela contem?
10. Quando urn contexte do usuario e alocado, quando e desalocad o e 0

o Sim . Voce pede adicionar as palavras-chave clientspecified em


qualquer inst ruc ao de Open SQL. Por exemplo, pa ra ler os dados
que ele contem?
11. Quando ocorre roll out e por que isso oeorre?
no cliente 900, voce escreverie 0 seguinte codigc:
sele ct * from tb l cl ient specified whe re mandt = '900' . Exerd cio 1
As tabelas na figuras de 1.28 a 1.31 sao depe ndentes OU indepe nden tes de
Entretanro, voce deve saber que voce apenas faria isso se estivesse
clienre?
escrevendo urn p rograma de sistema. Isso nunca e feito em urn
programa aplicativo; eles sempre devem ser independentes de
client e. Se voce precisa rransmitir clados entre dois cliente s de
producao, deve imp lernen rar a tran sferencia de dados via ALE .

Workshop
o Wo rkshop oferece duas mane iras de voce verificar 0 que aprendeu neste
capjrulo. A Se!1aO T este oferece perguntas para ajudar a solidificar seu ente n di-
mente do cont eudo aborclado e a selSao Exercfcio permi re que voce pratique 0
que aprendeu. Vo ce pe de encon trar as respostas as perguntas do teste"e dos
'exerc fcios no Ape ndice B, "Resposras as perg untas e aos exercfcios".
"""""-~----
- ... ~

0\,1. 1: 0 AMBI£NTE DE DE5£HVOLVIMENTO 41


40 'PREHD' E." DiAl AB "/4
': , . l , • t Sf P J,ftj fIf
Figura 1 30 :l""".[ill-1i"' -~ '~'tro ...... ~M " ' , ;; -
Estc lobe/a e ~"., 1. g, ,:.i;"'4o .Ii x"'-Q Mn"c -0 "0 e li ":~. < •
dependente o u
independente de
d iente?

Figura 1 31
Fig ura 1 29
, Estctobe/o e
Esto lobe/a e
dependente ou
dependentt! au
independente de
independente de
clienle?
cliente?

I
I
~ -- - -.- _ .. . -._. - -_ .
~~~-----------

Seu primeiro programa


emABAP/4
Depois de completar este capitulo, voce deverd ser capaz de:
e Crier e modificar programas ABAP/4 simples.
• Utilizar funlioes padcio n o edito r ABAP/4.
• Utilizar fun,6es de ajuda FI e R/3 Library.
• Encontrar seus programas utilizando 0 Object Browser eo editor.
• Exibir uma tabela e seus conreados utili zando 0 Data Dictionary.
• Utilizar as instrucoes t ables e select.
• Encadear instrucoes urilizando 0 opera dor de encadeamento.
• Adic ionar com entarios e documentacdo a seus programas.

Antes de-Prosseg"uLli.Lr _
Antes de prosseguir, voce dev e:
• Senti r-se a vontade com uma linguagem de programacao como C,
COBOL ou Visual Basic. Para aproveitar ao maximo este e rodos as
capitulos seguinr es, voce deve tambem ret dais anos au mais de
experiencia em desenvo lvimenro.

hllp:/Iwww.comput.eom. bt

·· .... ~· s_~
_. ~-
- ~ - _ .......... W 'W _ .....--....,.. -....- ............. ""W" -~~' --.r -- -- - - - - - -

44 ! APRENDA EM 2.1 DIAS AB APH DIA 2: Sl:U PRUWROPROGWlAEM ABAP/4 I 45


• Configurar sua interface como recomendado no Dia I, na Se~ao "0 • uma [erramenta de teste auxiliada por comp utador para regressgo de
Inte rface Menu", se voce nao river feit o isso ate agora. teste
• Execurar 0 p roced imen ro de instalacao para as ScreenCams no • uma ferramenta de pesquisa de repositorio p ara encontrar objeros de
CD-ROM. Esse procedimento esta descrito no arquivo rea dme . txt desenvolvimento
localizado no diret6 rio raiz do CD-ROM. • 0 Workbench Organi zer para registrar alteracoes em obj ecc s e pro-
move -las na produclo
HOVO ... Muitos dos procedimentos neste [ivrcs60 demonstrodos vtilecndc ScreenComs .
ltiMO r" ScreenComs s60 como filmes; elos mostram vmo sene de telcs . ind uinclo Todos os objeros de desenvolvimemo sao portateis, 0 que signifiea que
pressionomentos de tedo e movimenios de mouse, com umo norro~60 des critivo. Elos voce pod e copia -los de urn sistema do R/3 para outro. Is50 norrna lmenre efeico
pcdem ser enccntrcdcs no CD·ROM que vern com este llvro . Vejo 0 orquivo readme. txt p ;;fa mover seus objeros do sistema de desenvolvimento para 0 sistema de
loca lizodo no diret6rio rulz do CO-ROM para mois Infcrrn ocoes. producio. Se os sistemas de origem e de des tino es-se em sistemas operacionais

I
diferentes ou utilizam sistemas de ban co de dados diferentes, seus objetos de
fxplora ndo 0 ombiente de desenvolvimento desenvolvimemo executarao na Integra e sem qualqu er modificacao. Isso e
verdadeiro para todas as plataformas suportadas pelo R/3. (p ara uma Iista de
MOYO lit.. Um ob jeto de desenvofvimento e qualquer cclsc criodc por urn desenvclvedor.
,/ H~O r Exem plos de objetos de dese nvo!vimento s50 programos, telcs, tcbelos, visuo-
hardware e sist emas operacionais suportados, veja a Tabela 1.1.)
1i ZQ ~6eS, estrvlvrcs, modelos de dod os, mensoge ns e includes .
Desco b rindo tipos de progJ:QLLmI..lJ.l
O _
NOYO.... 0 sistema do R/3 ccntem ferromentos para crier e testar objetos dedesenvcl- Hi. dais tipos de programas ABAP/4 principais:
TIR.\IO ~ .vimento. Essos ferromentos estoo locolizodos no R/3 Development Workbench.
Perc ccesscr quolqu er ferromento de deseovclvlmentc , voce ir6 para workbench. • relat6rios
• programas de dialogo
oworkbench contem as seguintes ferramentas para ajuda -lo a criar
objetcs de desenvolvimemo:
Definind o relat6rios
• 0 editor de programa ABAP/4 code voce pode criar e modiflcar
o prop6sito de urn relat6rio eler dados a partir do ban co de dados e escreve -los.
I ce digo -fonre do ABAP/ 4 e outros componenres de prcgrama
Ele consisre apenas em duas telas {veja a Figura 2.1) .

I • 0 D ata D ict ionary onde voc e pede criar tabelas, est ruturas e visuali-
za~6 e s NOVO lrl.r..
TE~O "
echomo da tela de se/e~60 (seledion screen). Ela con tem campos
A prime ira tela
de entrada que permitem 00 usu6rio inserir critertcs para 0 relot6rio. Po r
• 0 mod elador D ata on de voce pode documentar os relacionamentos exemplo, 0 relctoric pede pradu zir ume listo de vendee para urn dodo interva lo de dotes,
entre tabelas entec as compos de entrada de intervale de dote opareceri om no tela de sele~oo do
• A biblioteca Function onde voce pode criar m6dulos de fun~ao globais relot6 rio.
doABAP/4
NOVO h.. A segundo tela e a tela de soldo. Elo co nte m a listo. A Hstc e a scldo do relctcrro
• A tela e menu pintores onde voce pode criar uma interface com 0 TER»O" e no rmal menfe nee tern nenhum campo de entra da. Em nosso exemplc, elo
usus ric para seus programas cc ntenc urne listo des vendee que occrrercm de ntro do intervalo de doto especficodo.
As seguin res [erramentas de test e e pesquisa tambem eseac disponfveis: A tela de selecsc e opcional. Nem todos as relat 6r ios tern uma. Entre-
• 0 ABAP/4 Debugger tanto. todos os relat6rios geram uma Iista.
• a [erramenra de rastreio de SQL utilizada par a refina r instru~6es de Neste livro, voce aprende ra a criar programas de relat orio.
SQL
• 0 analisado r de tempo de execu~ao para otimiza~ao de desempenho
do seu programa
• uma ferramenta circunstancial para analise de impacto
.... - r-

DlA 2,SEUPRIMEIRO PROGRAMA EM AMP/. 47


46 AP"NDA EM21 DIAl ABAP/4

liste
EW=>..-2L..Ll_ _ Tela de selecee
[soldo do re lot6 rio)
Descobrindo 0 obj eto de tem po de execucoo
(pcnimetros de e ntra da )
A tela de setecoc e a
lela de soldo .
de-programo
Soles Per Period ' ·
251 .25"Edna Everedge .. MOVO.... Os progromos ABAP/4 s60 interpretodos : eles noDsao compilodo s. A primeiro
131 .50 Wendy Rose.: .. . ' TIRMO~ vez que voce execute um progroma , a siste ma outomotica mente gera um objero
de tempo de execococ. 0 objeto de tempo de execvccc e um formu\6rio pre-processodo
do c6digo-fo nte . Entretonlo, ele noo e um execotovel q ue voce pode utilize r no nlvel do
e J,d.ui"
I1efin.inrlu..p.rrnlim.l.\aJ-'sLd...... q '-'lo~gl"oL-_-------­ sistema operacionol. Em vez disso, ele pede para 0 sistema do R/3 lnterpreto-]c . 0 objeto
de tempo de execuccc tcrnbem e ccnhe ctdo co mo formu/6rio gerodo do programo.
Os programas de dialo go sao mais flexlveis do que os relat6rios e, portanro,
sao rnais complexes no nfvel de programa. Eles podem conter qual quer numero Se voce alterar 0 codigo-Ionre, 0 objero de tempo de execucao sera
de telas e a sequencia de telas pede ser alterad a dinamicamente em tempo de autom aticamente gerado novamente, na pr6xima vez que voce executar 0
execucio. Em cada tela, voce pode ter campo s de entrada, campos de saida, programa .
boroes (pushbutton) e mais de u ma area rolavel.
Introduzindo as convencoes de orrlbulcco
D~-SCQbrim:lQ~ornpon.entes de relat6rio de Dome de programa
Os relat6rios do ABAP/4 con sisrem em cinco componentes (mostrados na
A ernpresa em que voce trobo lha e cliente do SAP . Portonto, os progromo s que
Figura 2.2) ; NOYOl.. voce crtc em :iUO ernprc50 s50 chomodo s progromos-dienfe .
• 0 codlgc-Ionee nmO,.
• Os atributo s NOVO lrrrrr... O s objetos de desenvolvirnento de di ente de ve rn segujr as cc nve nca es de
n~o ~ at ri bui ~oo de nome que sao predefinidns pelo SAP, Esses convencees SOO
• as elementos de texto chomod a s intervalo de nome de elienfe. Pa ro os proqrc rnos. 0 Intervolo de nome de diente
• A documentacao °
tem de dots a oilo corccteres de co mprime nto e nome do prog rarna de ve lnlcicr com
a letro y ou z. A SAPreserve a s letros de a a x para sevs pr6prios progra mas.
• As variantes

Fi gu r a 2 2
Os componentesde
urnprogromo ,4BI>Pj4. Atributos
-
Um progromo ABAPj4 consiste em NOVO....
URMO'-
Dedique urn memento para esco lher urn identificador de tres co roderes es-
pecffico pa ro seus progromos. Deotro deste livre, farei refere ncio 0 esse
iden tificodor como sev handle . Ele deve comeccr com urn y ou z. Por exemplo, voce pode
uftliaor 0 letro z seguido por sues duos iniciois. A notc ccc •• • indicor6 o nd e voce deve
utilizer seu hand le. Por exemplo, se voce escolhev zkg e viu 0 direr:;oo HDigite 0 nome de
progrom o ••• abc" voce digitar io zkgabc . Recomendo que, a medida que ovcnccr oeste
I

livre, voce utilize seu hand le como os primeiros tres corode res de todos objetos de
desenvo lvimento que voce criar . Se voce fleer isso, eles sereo f6ceis de reca nhecer ma is
ta rde e mois f6ceis de lc coluor.

As convencces de atribuicao de nome de programa adctadas para este


livre sao as seguintes:
• Programas de exemplo do texto de capirulos seguem a convencao
ztxccnn , onde cc e 0 mimero de capfrulo e nn eurn numero sequencia]
de 01 a 99.
Somenre 0 c6digo-fonte e os componentes de atributo de programa sao • Nomes de p rograma ut ilizados em exercfcios seguem a convencao
exigidos. Os demais componentes sao opciona is. zt ycc nn,on de cc e0 mim ero de capftulo e nn eurn numero sequencial.
Todos os objetos de desenvolviment o e seus componentes sao armaze -
nados no banco de dado s do R/3 . Por exemplo, 0 codigo-fonte para urn
o nom e de programa para a solu;ao sera. zt zccnn.

reldtorio e armazenado na tabela dd010s do banco de dados.


'** -
,
,c-
48 APiEN DA EM 21 Dl AS ABAP/ . 01" 2: SEUPRlMEIRO PROGRAMA EMABAPj4 49

• Programas utilirarios oferecidos no C D -ROM seguem a convencao 7. Di gire urn asterisco (*) no campo Application. 0 valor no campo
de atribuicgo de nome y -xxxxxx, onde xn:xxx e 0 nome do utilitario. Ap plication indic a a area do aplicarivo a que esse programs penence.
a programa de in stalacao que cria objetos d e desenvolv imento e os A lista compleca de valores pod e ser obtida posicionando 0 cursor
carregacom dad os pa ra a s exercfcios echamado y-s etup. Se necessaria, ele pode ness e campo e en tao danclo u rn clique na seta para baixo adireita dele.
sec executado de n ovo a qualqu er mem ento para rest aurar a cond icao orizinal Po r exempl o, se esse pr ogram a perr encesse ao gerenciamento Inven-
dos dados do exercfcio. Para remover [OdDS as objeros de desenvolvimenro e tory, voce colocaria urn L no campo App lication . C omo e urn pro -
dadcs criados pelo program a de inst alacj o do siste ma, execute y- uninst. Veja grama simples de test e, uti lizei urn asteri sco para indi car que d e nao
o arquivo readme. txt no CD·ROM para mais informacoes. pertence a qualquer area especlfica do aplicativo.
8. Faca uma marca de selecf o na caixa de selecfc Editor Lock. Ativendo
Cria ndo seu primeiro pro-Q.LCra.........mJ.JO
........ ----'- _ o Editor Lock, voce evitara alteracoes no programa per qualquer ou tra
a e
que vern abaix c urria descricao d o processo que voce seguirf p ara criar urn pessoa alem do criador . Para seus exercfcios, fa<,ia uma marca de
programa. selecac nessa caixa para proteger seus programas de modificacsc
. Quando voce efetua logo n no R/ 3 para criar seu primeiro pr ograma em acidemal por ou tros. Enrretan to, voce ndo deve uti lizar isso para
ABAP /4, a primeira tela que voce ve e 0 menu p rincipal da SAP. A partir dar, blo quear programas de desenvolvim en to reais. Esse recurso impedira
voce i.r.i para a Development Workbench e depois para a editor. Voce ira digitar que outros p rogramad ores facam a manu rencao depois .
urn nome de programa e cria-lo. A prim eira tela que voce vera sera a tela 9. Para salvar os atr ibutos de programa, pr essione 0 bo tac Save na barn
Program Attributes. Af voce deve inser ir os arributos de pro grama e salvd-los. de ferrame ntas Standard. A tela Create Object Catal og Entry e
Voce enuc teci permissdo para pros seguir para 0 editor de codi go-fcnte . N o exibida.
editor de codigo -fonte, voce ici inserir o codigo-fonte, salvs-lo e entdo execurar 10. Pressione 0 borao Local Obj ect. A tela de atributos do programa e
o programa. reexib ida. Na barra de status na parte inferior da tela, a mensag em
"Attribut es for pr ogram saved" aparece. (Nota: a mensagem que voce
SCRHNW ~ lnicie a ScreenCom " Hew To Crea te Your First Proqrc m" ag ora. ve con tern 0 nom e do programa tamb ern, mas como esse nome varia
para cada usuari o, ele foi deixado fora do texro deste livre. Essa
Siga este procedimento para criar seu prim eiro programa. A ajuda para con v en<.iac de deixar 0 nom e de obieto de desenvolviment o for a cia
problemas comuns e oferecida no D iagn6 stico e Solu~ao de Problem as que se mensagem sera mantida ao longo de todo esre livrc.)
segue a ele. Se voce tiver problemas com qualquer urn dos passos , njio es que ~a 11. Pressione 0 batao Source Ccdena barra de [erramentas do aplicarivo.
de consultar esse procedim en to. A tel. ABAP/4 Editor : Edit Program e exibida.
12. Escolha 0 caminho de menu Serrings- > Editor Mode . A tela Edito r:
I. Do menu principal do R/3, sele cione cami nho de m en u
Settin gs e exibida.
0
Tools->ABAP/4 Workb ench. Urn. tel. com 0 titulo ABAP/4 De -
velopment Workbench eexibida. 13, Escolha 0 borao de 0P<,i3.0 PC Mode With Line Numbering.
2. Press ione botao do ABAP/4 Editor na barr a de ferrame ntas do
0
14. Escolha 0 bota o de 0P<,iaOLower Case .
aplicativo. 0 ABAP/4 Edi tor: Initial Screen e exibido. 15. P ressioo e 0 bot ao C opy (a marca de selecso verde). Voce agora salvou
3. No campo Program, digite 0 nome do pro grarna •• · 0201. suas configuracoes de edit or. (As configuracoes do edit or precisam
'ser configu raclas apenas uma vez.)
4. Pressione 0 boreo Create. A tela ABAP/4: Program Attributes e
16, O llie na linha 1. Se ela nac contiver a mstru<,iao report •• · 0201. ,
exibida. a s campos que contem pontes de inre rrog acio sao exigidos .
digite -a agora, com o mostrado na Listagem 2,1.
S. Digite My First ABAP/4 Progr am no camp o Tide. Po r padrao. 0
conr eudo desse campo apareceni no topo da lista, 17.Nalinha2,digitewrite ' Hello SAP worl d '. Utilize aspas simples e
coloque urn po nto no final da lin ha,
6. Digite 1 no campo Type, a mimer o 1 in dica que 0 programa eurn
I 18. Pressione 0 botao Save na barra da ferram entas Stand ard.
relat 6rio .

j
I
I
--r"- --~~_;. .
- ---

50 APREND' EM21 DIAl AS AP" DIA 2:SEU PRIMHROPROGRAlIA EM ARAP/~ 51

19. Para exe cu ta r seu programa, escolha 0 caminho de menu Utiliza ndo a Editor' Initial Scree n
Program- c-Execure. Urna tela com 0 titulo My First ABAP/4 Pro -
A ABAF/4 Editor. InitialScreen emostrada na F igura 2.3. A partir dar,voce pode
gram e exibida e as palavras Hello SAP world serao escritas embaixo
exibir au alterar todos os componentes de programa. Par exemplo , para alterar 0
dela. Essa e a safda do relatorio, tambem conhecida como lista.
componente de ccdigo-font e, escolha a ba tao de op~ao Source Code e entac
pressione 0 bene Change. Ou, para exibir 0 componente de atributos, escolha 0
miAOA ~ Lislagem 2.1 Seu primeire pregrome em ABAP/4
batao de op~ao Attributes e entao pr essione 0 batao Display.
1 report z h 020l.
2 write ' Hell o SAP World' . NOVO ... Pressicncr 0 botao Change exlbe 0 componente se lecionado no modo de
olterc/iao, que cerm tte que voce c ltere 0 componente.
TflMO"
a c6digo na List agem 2.1 p roduz esta safda: Imprimir lPrinl) locolizor (find)
Canceler (ConO!Q locoFizor 0 pr6lcimo(find Null
SIIDI ~ Hello SAP World
Scir (Exit) Prtmelrc p6gino (fin.1 Page)
Parabens, voce acaba de escrever seu primeiro programa em ABAP/4! Vollar (Bode) P6gino onte rior (Previous Pagel
Para retomar 41.0 editor, pressione 0 batao de seta verde na bar ra de [erramentas Salvor (Sevel PrOximo p6gino (Next Pagel
Stan dard [ou a tecl a F3 ) . Compo de comclF'ldo Ultimo p6gino (lost Pose)
(Commond field)
lnserir (Enter)
Fjgu r a 2 3
0 Esses se c os prob lemas co mu ns e ncontrados no cricccc de urn
S A partir do N3AP/4
Cl prog ra ma e sue s respe ctivcs sc lucoes Editor: Initial Saeen
, z
o· Problema voce pode exibirau
I Sol u!;oo olterer os
I ~
n camponenles de
AD pressionor a batao Create, Voce digilou a nome e-rode de progromo . Seus progromo.
I 0
'"
voce cbtem umo coixo de di610ga
duende De Not Oecte Objects
names de progroma devem inicicr com y ou z.
Pressione 0 bcteo Ccncel {a X e m vermelbol para
i 0... SAP Nom e Ronge. retomc r e digitor um novo nome de progruma .
C

j .n
0
l>'
Quonda voce pressiono 0 botcc
C reol e, voce cbtem umo caixa de
Voce digitou a nome de progromo errcdc. Seus
names de progromo devem inicior com y au z.

1 .'"
0
'"
di610ga com urn ca mpo de
enfrada que pede uma teclo.
Presslcne c boteo Cancel (0 X em verrnelhc] para
retomor e digitar um novo nome de progromo.
1
I ....
0 Voce esto c btendo vmc tela
Change Request Query pedinda
No Tela Create Object Catalog Entry, noo digite
um vola r no compo de clcsse. Em vez dtsso ,
press ione 0 botoo local Object.
'" um Request Number.
~ No Figura 2.3, note que a ccbc de grupo Object Components envolve
'" °
"
bot6es de cpce c, a batao Display e botcc Change. Quando voce vir
umo coixo de grupo envolvendo bot6es de op;oo e bctces (pushbutto n),
os botoes de OPl;aO determincm a componenfe que ag iu sa bre os botces
e
. (pushbutton) erwolvldcs. 0 efeilo des bctces de op<;oo llmitodc pelc cc ixo
Explo ra odo 0 editor d.l:Lc.6dig,..
o-fonte... _ de grupe; eles 060 tem efeito em botces (pushbutto n) foro do ccbo.

Nesta se~ao, voce apre nders como subordinar 0 poder do edito r do ABAP/4
e aprendeni a ut ilizar duas telas nesra secao. Ex plora ndo a fllncionalidod e do ed itor de c6digo.fonte
• A ABAP/4 Ed itor: Initial Screen A partir da ABAP/4 Editor: Initial Screen, escolha 0 batao de opcao Source
Cede e pressione 0 botao C han ge. A tela ABAP/4 Editor: Edit Program e
• A tela ABA P/4 Editor: Edit Program
mosrrada, como na Figura 2.4.
52 APRE NOA EM 21 OIAS AS APj .
CIA 2,SEU PRIMEIRO PROGRAIM EMABAPj. 53 1,
' J
, '-
r,_l tit 'I h II !.. ~
Exibi, < -> Alterer (Display <. > C Figura 2 5 l olI r.oo ·_ ....
. --'~""- ,

Verificer (Check)
Llstc circunstonciol (Where-used lisI)
Estes s60 os conlrole s
no barre de
... --. .: _...
ferromentcs Standard
Pilhe (Stock)
dentro do editor do
Linhe de insen;oo (Insert line)
NW/4_
Cortor (CUi)

~'- porc o "~' " ' , " ,


Imerir do buffer pnsen From bvf{e ~
Os ccotrcles
do barre de
Selecioncr (Select) ferrcmentos
I Desfozer(Undo) Standard

EJgllra 2 4
Utilize a tela
ABAP/4 Editor:
Edit Progrom
.
'!.4.
.. - - , - Ajudo do ABAP/4 (ABAP/4 help)

- -: ..
'-_~r.llfJlx Q,1,a!:.
• "- ..---- . ......
....,.
'C C £l C
~
~ . ...

~
-- -- ,
it]:f" ." ;'" .....-::-:'~-:
-
""'
.'
..:: .~,'
.
"
· 1
• ••• • • • 0

para olterar
Ivncionolidade
de componenle. • Enter: Pression ar 0 bon o Enter tern 0 mesmo efeito que pre ssionar a
t ecla Enter. E tambem a funS-ao de divisao de lin ha. P ara dividir uma
linha de c6digo, posicione a cursor no ponto on devoce quer dividir a
- linha e pre ssione Enter.
• C om man d Fi eld: Esse campo aceita codigos de tr ansaci o e vari es
outros comandos .
~~. , .,~~',~~,.~:r"iJ~.'1., " ""-,-;c.,~l-y. • Back e Exit: Os dois levam 0 usuario de volta aABAP / 4 Editor: Initial
"!~-...
W~;;:;, . ~1~·-1;(~·· ~4i-" "."'~""~
......a:-.l"i) .- w.~~> ,i~~""". -·,-t";-"'-iff.£<'5,Y' Screen . Se-nao river salvo as alteracoe s, vo ce ser a solicitado a salvd-las.
~. -;;-.~;_::' '' :: ., ": .;;,< ,....~..:...::-:5.- , :.:;:'!-.- :i~~
• C anc el: Leva a usudrio de volta aABAP/4 Editor: Ini tial Screen' sem
salvar suas alteracoes. Se voce nao river salvo as alteracc es, voce sera
Mu ito s desenvclvedo res ochom a interface com 0 usu6 rio do R/3 solicitado a fazer isso.
cc mple xc e porton to dlfkl l de oprender. Sugiro que vo ce cdote uma • Print: Esse coman do imp rimirf a c6di go-fon te de seu programa. Quando
a
obordagem met6dica que Ihe permito fleer vontode com cede novo
voce 0 pressi ona, a tela Print P arameters eexibida. Para recebe r sua saida,
tela. Sempre que voce se deparar com uma novo te la. examine
minuciosomente os itens de men u e bot ees. Comece no estremidcde
cenifique-se de que a caixa de seles-ao Print Immed. esta ativada.
superior esquerda da te lo e sigo para ba ixo e perc a direita . Mantenho • Find: Proporciona pesquisa e subsrieui a funci ooalidade. Quando voce
o cursor sobre cod a ite m par tempo suficien te para ler a di ce de telo o pression a, a tela de Search/Replac e emo strada. Uma explicacio mais
que a oco mp onha . Gos tor olguns minutes em codo novo telo 0 ojudar6
a se fa milia rizar com as fun c;6e s dtspcofvets.
detalhada segu e abaixo.
• Find.Next: Esse eum atalhc amao pa ra localizar a proxima ocorrenci a
de uma string.
Explorondo a borra de ferro mentas Stand ard
• Firs t Page , Previous Page, N ext P age e Last P age: Esses comandos
smEHCAM ~ lrncie 0 ScreenCam · Exploring the Standard Tcolbor" ag ora .
permitem que voce role para cima e para baixo p elo c6digo-fome.
• H elp : Exibe uma caixa de diilogo a partir da qual voce pode obter ajuda
as co m ro les de barra de ferramentas Standard sao most rados na sabre 0 ed itor e a sintax e do ABAP/4, ent re outras ccis as. Posicion e
Figura 2.5. o cu rsor em uma palavra-chave do ABAP/ 4 ou em uma linha em
Os _cont roles de barre de ferrarnentas Standard (veja a Figura 2.3), na branco an tes de pressionar 0 botao H elp. Para mais informacoe s, veja
ordem, sao : a seS-ao intirulada "Obtendo ajuda" ma is adianre oeste capitulo.
54 "RENDA EM21 DI AS "API' OlA 2, 5EU PRIMEIROPROGRAMA EMABAP/4 55

IFa~a • Para executar uma pesquisa co m curingas, utilize os caracre res + e " ,
o sin al + corr esponderf com qualquer caractere unico e 0 sinal '"
Solve seu progro mo ante s de digitor urn Nee feche a ic nelo de edito r presslcnc odc corresponde d . com qualque r st rin g de caracteres. Ent retan to, '" so -
cc mc ndo /n no cam po de cc rncnd o. a bctcc X no extremidode superior direlto mente pode ser ut iliz adc como um curinga no comeco a u no fina l de
Coso cootrone , voce perc/ere sue s do jonelo. Voce perder6 as clte rccoes n60 uma string; dent ro do corpo d e uma string ele na c age como urn
clte rcco es. salvos.
curinga. Por exem plo, a string de pesquisa wo+d loc alizard word ou wood;
a st rin g j ++n corresp on dera co m joh n ou joan , mas njio jan. E van
localizara ia n, joan ou ate an. Uma ve z que " inc or porad c dentro de
Utilizando os recursos de locc lizc cco e substitu icdo uma str ing na o age como urn curinga, para localizar a string select '"
from, digire simplesmente sel ect'" f rom. Nore que uma string que
S(mNOM ~ Inicie a ScreenCom "Using Find a nd Replace.. . ogoro. tern * no corneco a u final produz as mesmos resul tad os que a mesma
String sem 0 *; 0 curinga '" portanto nae e particularmente {nil.

Pression e 0 botac F in d na barra de [erramenras Standard e 0 sistema • _. • : : sao caracteres esp eciais. Se sua string inicia corn quaisquer desses
exibira a tela Search/Replace (veja a Figura 2.6). Insira a string que voce quer carac teres, voce deve envc lve-los dentro de delimitadore s. Voce pode
lc caliza r no campo Fi nd. esc olher qual que r urn desses mesmos caracteres para urn delimirador
con tanto que ele nao apare~a dentro de sua strin g de pesquisa. Por
F igu ra 2 6 exemplo, : hh com eca com urn caractere espe cial. P ara localizar essa
Etta e a tela suing,di gite -:hh-ou .:hh. ou , : hh ou ; :hh; .
Seon:~/Reploce. Bo
permite que voc! • 0 caractere # tambem e especial. Para localizar uma strin g que contem
localize e altere slrings # em qual qu er lugar dentro dele . voce deve subs tituir II par cada urn
de coroctere em sec # que ocoere na string. Por exemplo , para localizar a string alb, utilize
progromo.
a string-de pesqui sa all b .

IIrrrrrr.. lnide 0 ScreenC om "Setting the Scope of a Search or Replace Functio n" ogora .
S(lEENWl JI""
Para configurar 0 esco po pa ra um a £Unc;ao de pesquis a ou substituicao,
siga est es passo s:
1. Na tela Sear ch/Replace, digite a string qu e voce qu er localizar no
Hi vfria s op cses n est a tela pa ra contr clar 0 processo de localizacjo: campo Find.
• A s a String fad. com que sua string seja localizada em qualquer lu gar 2. Escolha 0 botio de opc;ao In C urrent Source Code.
no program a. 3 . E scolha a bono de op~ao Fro Cursor para comecar a pesquisa na
• A s a Word [ocalizara ape nas casas em qu e espaccs em bran co ou posicic arual de cu rso r. Altemativam ente, voce pode escolher 0 botao
p onruacao envo lvem a pa lavra dentro do codigo-fonte . de opcao Fro m Line e digitar 05 ruim ero s de linha de infcio e de fim
• U pp er/Lower C ase fara a pesquisa dif erenciar letras mai usculas de pa ra a p esqm sa.
min usculas. 4. P ressione 0 bon o C o ntinu e. 0 cursor e co locado a esq ue rda da
primeira st ring de coincidencia.
o campo Find tern algu mas qualidades incomuns:
5. Pressione 0 pr6xim o botao Fi nd pa ra localizar a p roxim a string de
I • Para pes quisar uma strin g que con tern espacos em br anco inco rpora-
coincidencia.
! dos, sim plesmente digite a string junto co m as espacos em branco no
cam po Find. N ao cc loqu e a String entre aspas. Se fizer isso, as aspas
! serao con sideradas parte cia string de pesquisa. \CREENCAMJI""
IIrrrrrr.. Inide a Scree nCom "How to Find NI Occurrences of 0 String" ogora.

I
,I
i .
- 'W' _
- . -- .. • -
DIA 2:SEU PRIMEIROPROGRAMA EMABAP/~ I 57
56 APRENDA EM 21 DIAl ABAP/4

Para localizar todas as ocorrencias de uma string: 3. Escolha 0 boeao de opcao In Program.
1. Na tela Search/Replace, digite a string que voce quer localizar no 4. Pressione 0 botao Continue. A tela Global Replace In Program s e
campo Find. exibida com a cursor posicionado na primeira str ing coincidente.
T odas as linhas que contem strings coincidente s sao exibidas e as
2. Escolha 0 botao de opcao In Program.
strings coincidences sao destacadas.
3. Press ione a batao Continue. Urn resumo das ocorrencias localizadas
5. Para substituir a string na posicao de cursor, pressic ne 0 botao
eexibido na tela Global Search In Programs. Replace. A string na posicao de cursor e substituida e 0 cursor e
4. De urn clique duplo em uma linha para ve-la no contexte do codigo- posicionadc na proxima string coincidente.
fonte .
6. Para ir para a proxima posicao sem substituir, pres sione 0 batao Next
5. Pressione 0 bot ao Back para retornar a tela Global Search In Pro- Hit. 0 cursor eposic ionado na pr oxima string coin ciden te.
grams.
7. Para substircir codas as coincidencias restantes da posicao atual de cursor
6. P ression e 0 botao Back mais uma vez para retornar ao editor de para 0 fim do codigo-fonte, pressione a bono N o Confirmation.
codigo -fonte.
Se substituir quaisquer strings, voce devers salvar suas alter acoes antes
de retornar ac editor de codigo-fonre. Para [azer isso, pressione 0 botao Save
S(mHCAM~ lnkle a SereenCom "How to Search and Replace in the Source Code" ogara.
na barra de ferramentas Standard e entao pressione 0 bo-ac Back. Sevoce quiser
cancelar suas alreracees, pressione 0 bo-ac Cancel em vez do borso Save.
Para localiz ar e substituir no codigo-fonte.
1. Na tela Search/Replace, digite a string que voce quer localizar no Explorando a bo rra de fer romentas Application
campo F ind.
SCRHHCAM..... lnicie a ScreenCom "Exploring the Application Too lbor of the ABAP/4 Editor"
2. Paca uma marca de seleliao ern Replace By e digire uma string de ,.. oqoro. .
substituicao no campo Replace by.
3. Pressione 0 bouo Continue. A tela ABAP / 4 Editor: Edit Program e Antes de prosseguir, maximize sua janela (se ela ja nao esciver maximi-
exibida com 0 cursor pcsicionado a esquerda da proxima string zada). Voce nao .pode ver os botoes na extremidade direita da barra de
ferramentas Application se sua janela for menor que 0 tamanh o maximo.
coincidente.
Os con troles de berra de ferramentas Application sao m ostrados na
4. Para subsr itu i-la, pre ssione 0 botso Replace. A string n a posicao de
Figura 2.7.
curso r e subs titufda e 0 cursor e posicionado na p roxima string
coincidente. Figura 2 7
5. Para ir para a proxim a posicio sem substituir, pressiona 0 bone Next Os conlroles de
H it. 0 cursor e p osieionado na pr6xima string coincidente. bono de ferromenloS
At:Jplir::otion.
6. Para substituir todas as coincidencias restantes da posicao do cursor
atua] para 0 fim do cod igo-fonte, pressione 0 borso de No Confir-
mation.

S(mNCAM~ lnicie a ScreenCom "How to Seor ch and Replace Via a Summary Screen" agora .

Para pesq uisar e substituir via uma tela de resume:


1. Na tela Search/Replace. digite a string que voce quer localizar no
campo F ind.
2. Faca ~~a marca de selecsc em Replace By e digite uma string de
substituicac no campo Replace by.
~ ~ ---~www_ •••• _. • ........ ....- _ W ................. .... ....- ... ....,.---.-.- - - --- - - - - - - -

58 ! APRE NDA EM 21 DIA S AB AP/4 DIA 2:StuPRIMfiROPROGRAMA EM ABAP/4 I 59

as controles de barra de ferramentas Application. na ordem em que eles urna linha com a linha seguinte. Para dividir uma [inha, posicione 0
aparecem n a barra de ferrame ntas, sao as seguinres: cursor onde voce quer que a divisao ocorra e pressione a tecla Enter.

• D isplay < -> C han ge: Altera a tela de modo de exibicao para mudar • Duplicate Line: D uplic a uma unica linha au urn bloco in teiro de c6digo

I
o mo do . Pressio n e-a novamente para altera -la de volta ao modo de se urn est iver seleciona do {veja 0 botao Select, acima}.
exibicao. • Move Line: Move linhas a esquerda e a direi ra. P ara mover uma Iinha,
• Check: Verifiea a sintaxe do pr ograma atual. coloque a cursor na posicao de destine e pr essione 0 bcrao Move Line.
Para mover urn bloco inteiro de cc digc, marque 0 bloco e cola que 0
• Where-Used List : Q uando voce pressiona esse botao enq uamo 0
cursor na primeira Iinha do bloco na posicxo para a qual de deve ser
cursor esta em qualquer nome de varifvel, ele exibird rodas as linhas
mo vidc e entao pressione 0 botao Move Line. Para move-lo para a
de c6digo que a utilizam.
esquerda, coloque 0 curs or aesquerda no comecc cialinha e pressione
• Stack: Exibe 0 conteudo cia pilha de navegacao atual. a borao Move Line.
• Cut: Exclui a linha que contem 0 cursor e a coloca no buffer. • Mark Line: Co loque urn bookmark em uma Iinha . Voce po de exibir
• Co py To Buffer: Copia 0 conteudo cia linha que concern 0 cursor para todas as linh as marcadas com 0 cami nho de menu Goto -> Markers.
, o buffer.
;I
I
, I
• Ins er t From Buffer: Ins ere 0 conteudo do buffer ern uma nova linha
Para trozer uma linha para a tope do [onelu do ed itor,de urn clique duple
acima cia p osi<;ao de cu rsor atua]. entre as polcvrcs ov no final do linha . Mas n60 de um clique duplo em
I, • Insert Line: In sere uma linh a em branco acima da posi csc atual do umo polovrc, isso n60 funcio nor6. Um metcdo alternative e colocor c
curs or. cursor no fina l de umo linho e pressionor a teclo F2.

• Select: Selecion a um a unica linha ou urn bloco de Iinhas para mover,


conn e colar. Coloque a cursor na primeira linha do bloeo e pressione Utilizan do Cut e Pa ste
Select. C ola que 0 cursor na ultima linha do bloeo e pressione Select N~ mai oria dos aplicativos Windows, ha u ma area de transferencia para ope-
n ovamente. A s linh as contidas no bloeo se romarao ver m elhas. Voce racoes de cortar e colar . No RJ3 , h.1 cinco areas de t ransfere ncias. ATabela 2.1
po de agora cortar, co piar ou duplicar 0 bloco de codigo da mesma descreve codas elas.
maneira que voce fez para uma unic a linha. Para tirar a selecao das
Iinh as selecionadas, escolha 0 caminho de menu Edit- c-Deselect . Tabela 2.1 Buffers de Cut e Poste
• U n do: In verte sua ultima variavel. Somenre urn nfvel de desfazer este Utili:r:ado Como Copia r Como Colar
Chamado
disponfvel. pa ra pa ra ele a partir dele
Pressicne 0 batao Insert
• ABAP /4 He lp: Oferece ajuda sabre 0 editor e sobre 0 ABAP/4 em o Buffer Carta e colo Pressione as botc es
From Buffer
geral. de ntro de um Cut ou Co py no editor
progra mo
• P att ern : Pe rmire que voce digire uma instrucao ABAP/4 gerada Ccmi nho d e menu : Caminho de menu:
as Buffers X,Y,Z Corte e co la
automa ricam ente. P or exem plc, para inserir uma instrucfo write e ntre da is Block/Buffer- > Copy Block/Buffer-> Insert X
qu e escr eve do coneeu do de uma variavel identificada vt, pressione progromos to X Buffer Buffer
o bo tao P attern, escolha a botao de opcac W rite, pressione a batao Area de Carta e colo Cominh o de menu:
Continue, dig ite 0 nome de va riavel no campo Fld e enn c pressione trcnslerenoc en tre: Block/Buffer-> Copy
o batao Copy. Uma inst ru cao write sera inserida na posicao de - duos sess6e s to Clipboard
cursor atua l. R/3
• Concatenate: Une duas linhas . Para utilizd-lo, coloque 0 cursor no
final de uma linha e pressione 0 batao Concatenate para concatenar
-: _
- - '!=' - '!'!'
--
60 , AP RENDA EM 21 ClASAB AP/ 4 DIA2:SEU PRIMEIROPROGRAMA EM ABAi'/4 1 61

Tabela 2 .1 Confinuoc;60 ou para a esqu erda (voce apenas pede destacar uma linha par vel. utilizan do
esse metodo). Para dest acar mul tiplas linhas, de urn clique rnais um a vez na tela
Chama d o Como Copia r Como Colo r f
• com 0 mouse e entao pressio ne C trl + Y. 0 ponteiro mud ara para a forma de
para e re a partir de le
uma cruz . Arraste a cru z para desracar a secac que voce quer copier. Pre ssione
- R/3 e outro Ceminho de menu : Crrl + C para copiar 0 texto dest acado para a area de transferencia ou pressione
e
opllc oftvos Block/Buffer- > Insert
• Ctrl + X para cortaro Cole da area de rrans ferenc ia utilizando Cr rl + V.
Windows (p. ex., from Clipboard para 1-
Bloco de Notes) inserir as ccnteedcs do ,
area de trcnsjerenclc Utilizondo outros funco es co nvenientes do edito r
como linhos novas no A Tabela 2.2 contem urn resume das fun~6es do editor cornumente utilizadas. I
progromo no pos iCioO T odas as fun~6es sao acessadas a partir cia tela ABAP/4 Editor: Edit Program d
do cursor. Ou Orl+V a mencs qu e observado de outro mo do. I
perc color no topo dos
linhos exlstentes. Com I·
Tab el a 2.2 O utros prog romos convenienfes e fun~oes do ed itor
Ctrl+V, as dodos seroo
truncodos se tod os eles
Para•.. F o~a ..• I!
- coplc e c6d igo 1- De um clique
noo se o justc rem no tela
ofvcl. Obter cjodo no ed it,or
Obter ciu do de qualquer
Escolha a caminho de me nu Help- >Exte nde d He lp.
Coloqoe 0 cursor em umc pc lovro-chcve dentro da
I
do c jv dc F1
pora 0 ed itor
- copia mcls de
umo linho do
2 - Ctrl+Y
3- Arroste e
pclo vrc-chcve do AW/4
Salvor seu programo
Executor seu programa
c6digo e pressione Fl .
Presslone F11.
Presstone Fa.
I
I
s. De urn cliq ue com 0 bcfeo d jrelto do mou se em
Exibiras teclo s de fun ~oo

I
c6digo marque
quolquer lugor no 6reo de tela de urno [cnelo.
4- Ctrl+C
Mover a cu rsor perc" 0 Pressione Ctrl + Tab.
co mpo de comondo I

. N a primeira linha da T abela 2.2 esta 0 buffer especffico do programa, Troaer quolquer linha pore De um clique duplo nos espccc s em bronco (no om do
simplesmenre chamado buffer. Ele permite que voc e copie demro de urn a porte superior do tela linho) ou ccloque 0 cursor nos espcccs em bronco e
pressione F2.
pro gra~a. Para ut iliza-lo, coloqu e 0 cursor em um a linha au marq ue urn bloco
lnserir umo Hnhc Pressione a tec lo Enter com 0 cursor no cc mecc ou no
e preSSlOne as bot oes C ut, Copy ou Insert Fr om Buffer . 0 conteddc do buffer
fina l de umo linho .
e perdido quando voce deixa a editor. Ccloqve 0 cursor no linha e presslooe 0 bata o Cut.
Excluir umo linho
as bu ffe:~ X, Y e Z sao utilizados para copia r c6digo de urn pro grama
Marco r um blocc de c6digo Coloqu e 0 cursor no prime ira linho do bloco e pressione
pa ra DUtro . U tilize a menu Block/Buffer para acessa-lo s. Embora eles tenham
F9 (seleciona) . Entoo coloque -o na ultimo hnhc do
tres buffers separad os, tc dos eles sao utilizados da mesma mane ira. Seus bloco e pressione F9 no vornente.
cont ea dos sao retidos dep cis qu e voce deixa 0 editor, mas d es sao pe rdidos Seledone 0 bloco e press ione 0 bctc o Cut.
Excluir urn bloea de tlnhcs
quando voce efeeua 0 logoff .
Repetir umo ltnho c u blccc Pressicn e 0 botoo Duplicate line .
A area de tran sferen cia ea m esma que a area de transferenci a do Windows.
Dividir umn linha Posicione 0 cc rsc rno ponto de divisoo e presstcne a
Utilize-a para cort ar e colar em outros aplicarivos do Win dows como 0
tedo Ente r.
MSWord au 0 Bloco de Notas. Ela tamb em e utilizada para eop iar texto de Posicicne 0 cursor no tim do linho e presslone 0 botoc
Unir duas linha s
telas de ajuda Pt [veja a seguime sefSao int irulada "Obtendo ajuda") . Concat enate.
Alem dos bo tc es na barra de ferramentas Ap plication e as menus, voce Morque urn bloco . Pressicne 0 bctcc Copy To Buffer.
Cop ior os linha s de ntro do
pode urilizar func oes Windows padrac para execurar opera!;oes de cortar e
colar. Para destacar uma palavra ou linha, arcaste a cursor atraves dela ou
(,- programe otuol Entoa posicione 0 cursor no ponto o nde 0 c6d igo
devere se r inserido e p ressio ne 0 botoo Insert From
mamenha pressionada a tec1a Shift e pressione as tec1as de seta pa ra a direita r Buffer.

1
I:
i
I,
.' 7Z ··
:IrrrrrrY ••• t: _1' ww w w w.v • .. - -
62 "RENO' EM 21 OIAS ABAPH 011. 2:SEll PRJMElRO1'10GR.UlA. EM ABAPJ4 63

Tabela 2 .2 Ccnnnoccec Tabela 2.2 Continuo<;oo

Para... FOlj o ••• Para... FOlja...

Copter as Iinhas perc Marque um bloco . Escolha a cominha de menu Exduir urn progroma Do ABN'/4 Editor: lnifiol Screen , escclhc 0 cominho de
o utro programo BlockiBuffer->Copy to buffer X. Abro urn novo menu Prcqrcm-o-Delete.
progroma e escolhc 0 eom inho de me nu Salvor sues olteroc;6es com Enquonto ed itor urn programc, escolho a cominho de
Block/Buffer-> Insert Xbuffer. (Voce tcmbem pode um novo nom e de progro ma menu Proqrcrn-c-SoveAs.
utilizer os buffers Y e Z do mesma ma ne iro.) Iniciondo em quo lque r tela, cbro umo novo [cnelc que
Exibir dais progromas ao
C opier pora au do 6reo Marque urn blocc. Esco!ho a eom inho de menu mesmo te mpo utilizQ 0 com inho de men u Systern-c-Creote ne w session.
de trcnsferendo do Windows Block/Buffer- >Copy to the clipboard. Entao escolho 0 No novo jcnelc , ...6 para ABM/4 Ed itor: Initia l Screen,
cominho de men u Block/Buffer-> Insert clipboard. insirc 0 no me do segund o progromo e pressicne a
Feser um comentc rio Marque um bloco e escol ho 0 comi nho de menu bc tco Display or Chonge.
sabre um blccc de linhos BlocklBuffer->lnsert com me nt. Compara r dois progromos Do ABAP/4 Editor: lnitlol Scree n, escolhc 0 cc mlnho de
Remover 0 coment6rio Ma rque um bloc o e escolho 0 caminho de menu diferentes menu Utilities->Splitscreen ed itor. lnsiro dais names de
de um blccc de linhcs Block/Buffer->Delete comment. crcqrcrnc e pressione 0 bata o Display. Para exlblr a
primeirc dderencc , pressione a ba tao Next Diffe re nce .
Imprimir seu progromo Pressione 0 botco Print.
Para cltnhcr as dais prog ram as nc prOxima linho
Imprimir sua scldc do Enquonto visvcliac 0 soido , escol ha 0 cominho de me nu ldermcc, press ione 0 botcc Alig n.
progromo Systern-> Llst->Print.
Compa re r dais pro gro mos Da ABAP/4 Editor: Initial Scree n, escclh o 0 comj~ho de
lccchrcr e repetir a Presslcne as bo f6es Find e Find Next. em sistemas dderentes menu Utilities->Splits:::reen ed itor . Presslooe 0 botao
loeo lizo¢o Compore Dift Systems. Insira dois nomes de prog ro ma
Mudor 0 c6digo poro a Co loque 0 cursor no linho a ser rncvidc, no coluna que e urn id de sistema e presslone 0 bctoc Display.
esquerde e perc a direita voce quer mcve-lo. Entao press ione 0 bcteo Move line Salvor umo versec de urn De dentro do editor, escolha a caminho de menu
(F6). Para mover um blccc, pcsicicne 0 cursor no programa Progrom-> Generote ve rsion. 0 prog roma otuol e sclvc '
primeira linho e entcc presslcne 0 bo tec Move line. no ba nco de dodos do ve rseo .
Desfazer a ultimo vcricvel Pressione 0 bctcc Undo . He apenas um nlvel de Undo. Recupero r uma versoc Da tela Editor Initial, escolho 0 cami nho Utilities
Formotor automotieamente Escolha 0 caminho de me nu Progrom->Pre!ty Printer. do progromo ->Version management . A te la Versions Of Object Of
o c6d igo -fonte Type REPS ~ exlbldc . Tire 0 sele ce c do verseo ctivc e
Fazer download de um Escolha 0 co minho de men u Utilities->Download . Ieee umo marco de setecec no verseo 0 resta urar.
progromo poro urn arquivo Pressione 0 bctec Retrieve e e ntco pressicne 0 botoo
Bock. Clique em Yes e a versec atual tomo-se a
em seu PC
geroc;eo -1 e uma c6pia do ve rsec se lecionodo tomo-se
Fazer upload de urn Escolhc 0 eaminho de men u Utilities-> Upload . .
a versec at ual.
progromo de urn arquivo
em seu PC Comparar versoes do A partir do tela Initial Editor, escclh c 0 cominho de
progromo men u Utilities - c-Ve rslon monagement. A tela Versions
Solver umo e6pia ternpcrcric Escolho 0 co minho de menu Program->Sove Temp . A Of Object Of Type REPS e exibido. fo cc uma marco de
de seu programo c6pio te mpo r6ria e exd uido q uando voc e sa lvo a se'ecec nos vers6 es que voce q uer cc mpc rc r e
prog romo . pressione 0 batao Compare . A tela Com pe re Programs:
Recuperor 0 c6p ia Escolha 0 caminho de menu Prog rom->Get Temp . All e exlbidc . Role para ba ixo para visualizer as
tempor6rio de seu progroma Version. Voce pede recuperor a c6p io sclvc de quolquer diferenccs.
nume rc de vezes cte qu: voce solve 0 progromo. Escolho o cominho de menu Prog rom- > Print. No
lmprimir seu progroma
Puler diretomente paro 0 De qualquer tela , digite / nse38 no compo de eomando pr6ximo tela , especifique umo impressora e foc;o uma
editor e pressione Enter. marco de se le1;ao no coixo de se lec;ao Print lmmed.
Copiar um progroma Do ABAP/4 Editor: Initiol Screen, esc o lha 0 cominho de
menu Progrom->Copy.
Renomeor um programo Do ABAP/4 Editor: Initia l Scree n, esc olho 0 caminho de
men u Prog rom->Renome.
64 APIl:EHOA EM 21 OIAS ABAP/~
orA2:sru PRIMEIRO PROGRAMA EMABAf'/4 65

Qbie.ndo~--"
a4-'iu",-,d.....a",-- _ Dentro da ajuda ha frequentemen re exemplos de co digo. Para cortar e
cola-lo s em seu programs, pressione Cu-l + Y e entac marque urn bloco de
SmEHUJI ~ lnicie 0 ScreenCom "Obtendo ojudo" ogara. ccdigo, arrastando 0 cu rsor arraves dele a part ir da extrernidade superior
esqu erda para a ext remidade inferio r direita. Deixe 0 mouse e pressione Ctrl
Pa ra urn tu torial complete no editor:
+ C . Pressione 0 bo tao Back par a reromar ate1aABAP/4 Editor : Ed itPrograrn
e cole em seu programa utilizando Block/Buffer-> Insert Clipboard. au voce
I. v« para a tela ABAP/4 Editor: Edit Program . pode colar na parte superiorde seu c6digo utilizan do Crrl + V. (Ctrl + V nao
2. Escolha 0 caminho de menu Help-s-Extended Help. A tela SAP RJ3 cola na origem) mas na tela , encso isso nao colard na part e inferior da pdgina
Help e exibida. vislvel.}
3. D e urn clique no tex ro ABAP!4 Editor. A tela BC ABAP/4 D eve-
lopmentWo rkbench To ols e exibida. O btendo a o juda &/ 3 Library
4. De urn clique em qualquer rexto sublinhado para ob eer ajuda sobre A ajuda R/3 Library esu arrnazenada nos arquivos de ajud a do Windows. Para
esse t6p ico. visualiza-los:

NOYO ... He dots tipos b6sicos de c judo no editor, 0 oiudo Fl eo oiudo R/3 Ubrory. A 1. De qualquer tela, escolha 0 carninho de menu He lp- > R/3 Library. A
TERMO " civdo Fl tc mbem e conhecido como documenlo.:;60 de pelovros-chove do . tela R!3 System Online Help e exibida.
ABAP/4. 2. Para ajuda em ABAP/4, de urn cliqu e no rextc Basis Components. A
tela Basis e exibida.
. 'A a;.u.da F1 desc reve a sintaxe de palavras-chave do ABAP/4 e da exemplos
de sua utilizacao. Ela e baseada em texto e reside em tabelas dentro d o banco 3. De urn clique no texto ABA P/4 Development Wo rkb ench . A tela
de dados do R!3. ABAP/4 Development Workbench e exibida.
A ajuda R/3 Library e muito mais exrensa e contem visoes gerais e 4. Daqui voce pode ob eer ajuda detalhada em qua se qualquer aspecto de
procedim entos para criar objet os de desenvolvimento. Ela euma ajuda baseada programacic em ABAP/4. De urn clique no tema sobre 0 qual voce
no Windows e reside fora do banco de clados do R/3. normalmente em um qu er ajuda. .
CD-ROM.
Adicionalmente, a ajuda pode ser obtida do A BAP/ 4 Editor: Initial
Screen. Para visualiza-la:
Obtendo a a il/do El
A ajuda F I e u tiJ pa ra pes quisa r sintaxe e frequentern enre co ntem exemplos 1. va para a ABAP/4 Editor: Initial Screen.
uteis de c6digo. 2. Escolha 0 caminho de menu Utilities - >ABAP/ 4 key word doc. A
Para ob rer ajuda F I: tela Display Structure: ABAP/4_SAP's 4GL Pro gram Language e
exibida.
I. Va para a tela ABAP/4 Editor: Edit Program.
3. Pressione 0 batao Find na barre de ferramen tas Application. A tela .
2. Coloque 0 cursor na palavra-chave ABAP/4 que voce quer ajuda. Search Chapter Titles e exibida.
3. Pressione Fl. A tela Di splay Hypertext eexibida. 4. Digire 0 texto que voce quer localizar n o campo Find.
Den no .da ajuda FI, as palavras destacadas sao vfnculos de hipertexro. 5. P ressione 0 bouo Continue. A primeira linha que contem esse texto
Dando urn clique n elas, voce ob tem mais informacoes. e destacada.
6. De urn clique duplo na linha destacada para exibir mais informacoes
ou pressione 0 botao Continue Search na bar ra de [erramentas Stand-
Voce pede utilizer 0 utilit6rio Findlt no CD· RO M pore localizer ma is ard para localizar a proxima ocorrencia.
exemplos de c6d igo.
A ajuda tamb em pode ser obtida de denrro do editor enq uanto voce esta
editando 0 codigo-fonte. Escolha 0 caminho de menu U tilities->Help on.
Aqui, voce pode obter os seguintes tipos de ajuda:
66 APReHDA EM21 DIAS AS APH OIAtlEU P'I»EI' OP'OGRA.. EM ABAPi< 67

• Aj uda do editor Se voce estiver procurando urn programa e souber os primeiros caracreres de
• Visso geral do ABAP/4 seunome, poderalocalizs-lo a partirdeABAP/4 Editor. Initial Screen. Parafazer isso:

• Pa!avra-chave do ABAP/4 1. Va para a AJ3AP/4 Editor: Initial Screen.


• Novas recu rsos da linguagem ABAP/4 2. N o campo Program, digite os primeiros caracreres de seu nome de
• Exibir modules de funlSao pr ograma seguidos par urn asterisco. Por exemplo, para exibir eodos
os programas que comecam com z tx , digire ztx *.
• Exibir estruturas de rabela
3. De urn clique na seta para baixo a direita do campo Pr ogram. A tela
• Exibir bancos de clados logicos Programs e exlbida. Urna Iista de nom es de programas coinciden tes
• Exibir objetos de autorizacio aparece nesta tela:A direita de cada no me de programa esn a descricso
Shan dos atributos de programs.
• Exibir infotipos
4. D e urn clique du plo n o nome do prog rama que voce quer editar. A
ABAP/4 Editor: Initial Screen e exibida e 0 no me do programa em
Local iza ndo seus ob jeto s de desenvolvjmento que voce deu um clique duplo apar ece no campo P rogram.
S(RHN(AM~ Inide a ScreenCam "l ocalizondo seus c bjetc s de desenvclvimento" ogora.
Introduzind o 0 R/3 Data Dictiona ry
Para exibir todos as objero s de desenvolvimento que voce criou no NOYO"""" a RJ3 Doto Dictionary lou ODIC pera obrevcf eum utilitOrio para definirobjetos
sis tema RJ3 : mllo r .de dodos. Pore utilizer 0 ODIC, voce ped e crier e annozenor cb jetcs como tcbelcs .
estruturos e visuolizo<;6es. Pore chomor a Oato Dictionary, execute estes posses:
i, DOl tela ABAP/4 Development Workbench, pressione 0 bono Ob-
ject Browser. A Object Browser: Ini tial Screen e exibida. 1. Va para a tela do ABAP/4 Development Wo rkben ch.
2. Escolha 0 botao de op <;ao Local Priv. Objects. 2. Pressione 0 botao ABAP/ 4 Dicti onary na barra de [err am en ta s Stand-
3. Pressione 0 bon o Display. A tela Object Browser: Development ard . A Dictionary: InitialScreen eexibida, como mo strad o na Figura2.8.
Class $TMP e exibida. Aq~i voce veri uma lista de categorias de
HOYO lll... 0 ODIC estc dentro d o sistema Rl3 . Voce pe de pensa r nele como estondo
objero de desenvolvimento. A esquerda de cada categoria hi urn sinal
de adi!fao.
fiRMO r ocima de urn banco de dodos como Orocle ou lnformix e ogindo como um
co ntrcle remote, qu e gero e envin jnstrucces de SO Lpa ra ele. Por exernolc , voce pode
4. De urn clique em urn sinal de adi!fao para expandir 0 n6 . crier umo de fini¢o de fobelo no ODIC. Qua ndo voce ativa a definit;oo de to belc , as
instrut;6e s de SQl soc gerado s e enviodas pa ra 0 ROBMS, fozendo co m que ele erie 0
5. De urn clique duple em Urn nome de objeto para exibi-lo . Se o objero tobelo ree l no ba nco de dodos. Quondo quiser mcdficc r 0 ta bela, voce deve mcdificcr
em que voce deu urn clique duple era urn programa, uma visualizacao a defini<;6 0 de tobelo no ODIC. O ucndo ctivor a tobelo novcmente, mois SOL e gerodo,
em arvore do p rograma e de seus componentes e exibida. fozendo coni que 0 ROBMS modifique a tcbelc.
6. Para exibir 0 c6d ige-fonte de programa, de urn clique duple no nome
do prog rams na parte superior da more. A tela ABAP/4 Editor:
Display Program e exibida. Fa~a

Voce esta agora no modo de exibicio no obje to selecionado. Voce pede Utilize a ODIC para crier e modifkcr Noo rncdifiqve urno tcbelc ou quo lquer
press ionar 0 bone Displ ay < -> Change para alrernar no modo de edi~ao. todos os objete s de bonco de dodos. co iso no nlvel de ROBMS. A definit;oo Dote
Dicncnc ry nco pede atua lizor a si pr6prio e
elc este ro fo ra de sincronio com 0 banco
Esse metodc somente funciona com cb jetos que forom selves como de dodos. lssc pede cou sar erros de
cbjetos lcc cis. Eles seroc exlbidcs cq ul somente se voce tiver pres- c plkctivc e ate lever 0 urno perdo de
sionodo 0 bctoo locol Ob ject no telc Creote Object Cotolog Entry integrida de do s do dos.
quondo voce crlcu 0 c bjeto.
:w:o ... , . _
~~...~. ~ .~:...:.:.:.< ,~ .. ..;,.,.. ;,c'.·"-c·=_;;:;-""":---::::--:":---
....... "..- .,,,- "'- ... ~_..__.._ ..._ ...._ ...._ ..._ .......P'"..._ ...-~-----------------------------~-

68 APRE NDA EM 21 DIAS ABAPH DIA 2: SEUPRIMEIROPROGRAMA EM ABAPt. 69

fig ur e 2 8 I~ "· .':' 4' -rarn F i g ur a 2 9


~_1 .. · .i. l/lIIioo ~ · """" iflIl> ·-. _ ~ . ~'" • .• ..-'. ,,,.I'-· ·· ·r-."· .""
A Dictionary:Initiol i,.o -I . .::J '~ ¢.: A )( :. ~ 10U ~ 0 . .c,,,, : :<· : ~~;:d. " ":':;,. .' .> }. A defjnis:oo de ODIC
Screen. pore tabe/o Zfal .

Estritam en te falando, uma estrurura e algo que 56 existe dentro do R/3


Exp lorondo as tabelas e as estrutllros Data Dictionary. Se visse a palavra estrutura , voce imediatamenre pensaria na
"est ru rura de DDIC", Entretanro, a docum entacio da SAP ut iliza tambem a
No RJ3 umo tahe la e urno colecc c de ltnhos. Coda ltnho cc ntern compos ,
NOVO- lilt..
palavra estrutura"para referir-s e a u rn grup o de varidveis dentro de urn pro-
TiRMO,. tcmbem chama dos de co/unos. Ncrmclmente, dentro de umo tcbelc, coda linho
tem c mesmo numerc de colones, como as outros hnhos do tc belc. grama. A estrutura ema re emostrada na Figu ra 2.10 como urn exemplo de como
uma estrutura ap arece n o DDIC.
Uma tabela armazena dad os persist entes. Ern outras palavras, se voce
coloca dados em uma tabela, e1es permanecem ai depois que seu programa Fi g ur a 2 10
finalizar. Eles permanece rao ate serem ahera dos a u exclufdcs par seu pro grama A defjnit;dode ODIC
a u curro. 0 n ome de um a tabela eunico dentro do sistema R/3 inteiro. para 00 eslrvturo
emora.
Quando voce olha u ma tabe1a no DD IC , esta visualizando a descricto de
uma tabela no banco de dad os subja cen te. Voce nao esta olhando diretament e
a pr6p ria tabela de banco de dados. A Figura 2.9 mostra como u ma definicao
de tab ela aparece no R/3 DDIC.

NOYO .... No R/3 vmc estrutvro e urno descrit;60 de urn g ropo de compos. Elc descreve
lIiMO" os nomes de compo, suo seq uencia e sees tipos e comprimentos de dodos.
Ce do esmnurc fern urn nome q ue e c nicc dentro do sistema inteiro do R/3. Umo estrufuro
nCio pede ter 0 mesmo nome que umo tc belo.

Urn nom e de estrutu ra pede ser utilizado de du as maneiras:


• Em urn prog rams, urn n ome de estrutura pede ser utilizado par a alocar
mem oria pa.ra urn grop e de campos.
• Em uma tabela, urn nom e de estrurura pode ser utilizado p ara descre-
v et urn conjunto de campos.
4az::;: cc;:_~ _
."' -

70 APRENOA EM 21 DiAl ABAPH D1AU W PRIMEIRDPROGRAM> EM ABAPi< 71

No R/3, tabelas e estruturassao definidas no DDIC. Voce no tara entre- Nco deixe em bronco 0 cc rnpc Maximum No. Of Hitspara exibir todos
tanto, quando as visualiza, ha uma diferenca muito peguena entre elas. Isso e a s registros, 0 menos que voce reolmente pretendo procurar no listo
porgue, no RJ3, uma tabela esomente uma descripio de uma tabela real de banco Inteirc. Para tobelos grondes, isso pode conwrnir muito CPU nos dois
de dados. E a estruturada tabelano banco de dados. Entao, tanto tabelas como boncos de dodos e servidores de op licativo, clem de tombem ovme ntc r
significativamente 0 tr6fego no rede, fer nando ossim a sistema le oto.
estruturas dentro do DDIC defin em urn layout - uma serie de campos. A
Se um relotcrlo multo grande fo r necessaria, em gem ! ele deve se r
diferenca principal entre as duas eque uma tabela tern uma outra subjacente de executodo em lote. A obo rdoge m preferida e estreitc r suo pesq uisa ,
banco de dados associada a ela. VIDa estrutura rdo tern, digita ndo volores nos cam pos Doto Browser; Table: Selection Screen.
Algumas pessoas, as vezes, acham a documenrac ao do R/ 3 confuse, uma Isso sera a bordado em deto lhe em capitulos posteriores.
vez que a SAP ocasionalrnente utiliza esses dais termos int ercambiavelrnent e.

Exib inQQ umo to bela ou defin il¥i:io de estruturo


E.ig ll r g 2 1 1 r-ra II-!
1_ _
!
[ olt
§f tj it!'''PTJ£ 'tTm'' ''
1iolo . 5ol1jroo "lJ"Iiot £""' _ ~ .$""'" 1IftI· " , - .- <. -: :,;, .. . . .._I<!Oj"l"
'

A tela Data Browser:


Table Select Entries.
Para exibir uma tabela au definicao de estrutura n~ DnIC:

1. Va para a Dictionary: Initial Screen.


2. Insira a tabela ou nome de estrutura no campo Object N ame.
3. De urn clique em Tables ou no bono de opcao Structures. '.
,
4. De urn clique no botao Display. A tela Dictionary: Table/Structure:
.,l~
"
Display Fields e. exibida, como mostrado nas Figuras 2.9 e 2.10.
1~
o que voce ve na Figura 2.9 e a estrutura de tabela Hal no R/3 Data
Dictionary, nao a tabela real de banco de dados. No R/3 , apenas a estrutura da
tabela pode ser definid a, jun to com alguns atributos com o os campos de chave
primaria.

Exibindo o s dodos no tabel o


oR/3 tambern oferece urn utilitario para permitir que voce exiba os clados que
existem dentro de uma tabela . Para utiliza-lo:

1. Va para a tela Dictionary: Table/Structure: Display Fields. Determ in a n d o compos exibidos


2. Escolha a caminho de menu Utilitie s-s-Table contents . A Da ta Voce pode con trolar quais campos serao exibidos na D ata Browser: Tab le:
Browser: Table : Selection Screen eexibida. Selection Screen. Para fazer isso:
3. Para exibir todas as linhas na tabela, pressione 0 botao Execute sem 1. Va para Data Browser: Tabl e: Selection Screen.
inserir qualquer crirerio de pesquisa. A tela Da ta Browser : Tab le 2. Es colh a 0 caminho de menu Sertings-> Fields for selection. A tela
Select Entries e exibida (vejn a Figura 2.11). Choose Fields For Selection e. exibida.
o numerc de registros 'exibido eIirnitado peIo valor no campo Maximum 3. Faca uma marca de selecao nos campo s que voce quer incluidos na
No. Of H its na Data Browser: Tab le: Selection Screen. Data Browser: Table: Selection Screen. Desanve qualque r urn que
voce nac quer que aparelia.
4. Pr ession e 0 bo- ac Execute. A Data Brow ser: Tab le: Selection Screen
e exibida e con tem os campos que voce selecionou.
72 APR ~NOA ~M
I 21 DIAS ABAP/~
DIA7: seuPRIMflROPROGRAMA ~M ABAP/4 , 73

Enten dendo a sintaxe do ABAP/4 1060


1070
Ante~ ~e contin.uar, voce agora deve executar 0 utilitdrio de configuracao de 1080
exerctcm fornecido no CD-ROM. Ele criers as tabelas e os dedos necessaries 1090
para. as exercf~ios neste livro . Para instrucoes, veja 0 arqu ivo readme. txt 2000
V1
localizado DO diretcrio raiz de CD -ROM.
Vl0
Vll
lntrcduzindo a instru~ao s el e;_,cJt~ ---,---, _ V12
V2
A instrucao sel ect recupera registros do banco de dados. VJ
V4
Sintaxe para a instru,fio sel ect VI

-
tn
Z
a seguinre c6d igo mostra a sintaxe simplificada para a insrru cdo se l ect:
select .. from tl (i nt o 11'0] (where f l op vI and/or 12 op v2 .. .J [order by f l] .
YO
V7
va

~
(other abap/4 s t at ement s) V9
endselect.

m onde:
Lf a1 e 0 to belc-mestre do fa brico nte no R/3. Zt xl f al foi criodo pelc

" * indica que todo s os campos na rabela devem ser recuperados.


tl ~ 0 nome deuma tab ela previarnenre definida em uma instrucio tabl es.
wo e 0 nom e da area de trabalh o que coincide com a estrutura da tabela
11 e a nome de urn campo na rabela t l , .
rotina de configuro~60 de CD-ROM e e se me lha nte a 1fa l, mas e
utilizado poro as exercicios neste livre.
n c rnerc de fobriconte .
a e
com po 1i fnr 0 ccm po de

~p eurn dos seguin tes operadores logicos: = <> > >= < <=.
ANAlIS~ ~ Esse progr~mo Iefodos as reg isiros detobelo zt xl fa l e escreve a contecdc do
v1 e urn literal ou um a variavel.
and/or e uma palavra and a u uma palavra or.
r compo 1 i fnr (0 ncme ro do fob riconte ) em o rdem crescente.

• Na Iinha 1, a instrucao report esolicitada como a primeira linha de urn


relar6rio.
, ,
• N a linha 2, a instrucao tables faz a~ duas coisas. Primeiro, ela aIoca ;!
Crie urn novo p rograma e atribua a nome « • ·0202. Digite 0 c6diga como uma area de mem6ria (chamada area de t ra balho) ide nt ificada ztx l f al. ,,
mostrado na Listagem 2.2.

ENTRAOA~ Lista ge m 2. 2 Seu segundo prog roma

1- report ztx0202.
A area de trabalho tern a mesmo layout qu e a definicao de DDIC de
rabela ztxlfa l. Segundo, ela da acesso ao p rograms para a tabela de
banco de dados ztxlfal.
i!
I
I
• Na linha 3, a insrrucao sel ect comeca urn loop . A endsel ect na linha
2 tables ztxlfal.
5 marca 0 fim do loop. As linhas de c6digo entre se 1ect e endse1ect

I
3 set ect .. f rom ztxl fill into ztxl fal order by 1ifnr .
sao executadas uma vez para cada linha retornada do banco de dad os.
4 write / ztxlfal -lifnr .
5 endselect. • Na linha 4, a instrucfo write e executada uma vez para cada linh a que
elida da tabe la.A / (barra) depois de wri te corn e~a uma nova linha.

a codigo na Lisragem 2.2 deve produzir esta safda: N ote que em seu programa, voce tern duas co isas identificadas como E
ztx lfal: uma area de trabalbo e uma tabela. A du as te rri 0 mesmo nome - "
SAioA~
1000
1010 zt xl fa I. A pcsicao do name ztxl fal denrro de uma inst rucdo de termina aqual
1020 voce se refere. Na lin ha 3, a primeira ocorrencia de zt xlfal se refere a rabe1a
de banco de clados. A segunda ocorrencia refere-se a area de trabalho.
1030
1040
1050

,I
I
_ .J.;,
DlH lEU PRIMEIBDPBOGRAMA EM ASAP/' 75
74 APRENDA EM 21 DIAl ABAP/4

1. Pressionar Page Down [az com que uma soliciracfo seja enviada do
lVI ~ lnlcie a NAYI Select Statement Processing'" ogora .
SAPGUI para 0 dispatcher DO servidor de aplicacivo para obter a
proxima pdgina de saida a partir de ztx0202.
Prossiga os processamen tos como a seguir (veja a Figura 2.12) : 2. A soliciracac e despachada para 0 primeiro processo de trab alb o

1. P ressione F 8 para executar 0 programa que causa uma solicitacao a disponivel.


set enviada do SAPGUI para 0 dispatcher no servidor de aplicativo 3. 0 contexte de usuario e a area de rolagem para ztx0202 sao deslocados
para executar 0 programa ztx0202. para 0 processo de trabalho.
2. A solicicacao e despachada para 0 primeiro processo de trabalho 4. 0 processo de trabalho envia a pr6xima pagina para 0 servidor de

disponfvel. apresentacao.
3. a contexte de usuaric edeslocado no processo de trabalha. 5. A area de rolagem t: 0 contexte de usuario sao deslcca dc s para fora
do processo de trabalho .
4. 0 prog rama e recuperado do banco de clados.
5. 0 processo de trabalho aloca uma area de rolagem para armazenar as Figura 2 12
variaveis do program a, 0 ponteiro atua l de programa e as alocacoes SAPGUI (Servidor de cpresel1tol;oo)
Esto e 0 moneiro
privadas de mem oria. como a ins/rus:oo Mem6riaestendldo
se lect fundono.
6. 0 programa e int erpretadc pelc processo de trabalho no servidor de
aplicativo e corn elia execu tan do na linha 3. (As linhas 1 e 2 sao
declaracoes, Da O c6digo executavel .)
7. A linha 3 faz com que uma linha seja lida da tabela de banco de dados
zt xl fa l e colocada na area de trabalho identificada ztxl fa I.
8. A prim eira linh a de tempo 4 e executada, uma pagina vir tual ealocada
DBS
para a Iista. ~'4~~~.~{t~¥;:.;,~ , 17 _, .~ """ , . B
9. A Iinha 4 causa 0 campo 1; fnr a ser escrito da area de trabalho ztx l fal ':~~i ; . .. L ~ ' ~i.:~:';"~~ 7 ' .... ' r:ita~Ji'!'.
};
para a pegina virtual.
10. Alinha 5 faz urn loop novamente na linha 3.
11. A pr6xima linha e lida da tabela ztxl fal e e colocada na area de
trabalho zt xl te t, so brescrevendo a linha anterior..
12.0 campo 1; fnr e escrito na proxima linha da pagina virtual.
13. Os passos 9 a 11 sao rep etidcs para todas as linhas J?a tabela ztxlfal.
14.0 loop termina aut omaticamenre quando a ultima linha elida de Se 0 usuario entao pressionar Back, 0 processamento continua assim:
ztxl fa l.
1. 'P ression ar Back faz com que uma sclicitacao seja enviada do SAPGUI
15. 0 programa termina, mas a area de rolagem (contendo a pagina para 0 dispatcher no servidor de aplicativo para terminar 0 programa
virtual) perman ece alocada .
ztx0202.
16. 0 processo de traba lbo determina 0 numero de linhas que a tela do 2. A soliciracao e despachada para 0 primeiro processo de trabalho
usudrio ecapaz de exibi- e errvia essas muitas linhas cia pagina virtual
disponfvel.
como a pr imei ra pagina da lista para 0 servidor de apresentacao.
3. 0 contexte de usuario e a area de rolagem para ztx 0202sao deslocados
17.0 ccnrexro de usudrio e a area de rolagem sao deslocados para fora no processo de trabalho.
do processo de rrabalh o.
4. 0 sistema libera a area de rolagem para 0 programa.
Se 0 usuerio en rac pressionar Page Down, 0 processamento prossegue 5. 0 contexte de usuario edeslocado para fora da tela.
como a segu ir (veja a Figura 2.13):
-.;
-"".~--=-----=--=-=-,,,""""""'------------~---~~--~-------------~

76 APR EN OA EM 21 OIAS AB.lP/4


DIA 2, l EU P'W.EliU P' 06RAJI,A EM ABAP/~ 77
F jgura 2 13
Co mp arada a Listagem 2.2, apenas a linha 3 mu dou. Esse programa
Esso e 0 seqiiencia de
eveorcs ocionoda funci ona exatamente da mesma maneira e produz a mes ma saida que a anterior.
quando 0 usu6rio C omo a clausula i nt o nao foi especificada na instrucao se 1ect, 0 sistema utiliza
pressiona Poge Down. a drea de trabalho cia tabela padrsc ztxlfal.

Para cop iar urn p ragrama , esc o lhc 0 cominh o d e men u Pro-
qrcm -o-C cpy do telo iniciol do ed ito r. Alternotivo mente, enqoontc editc
um progroma , voce pede escolher c com inho de menu Proqrcm -c-Sove
As.

Uti lizando uma area de traba lho explfcita


A instrucao t abl es sempre cria uma area de trabalho da tabel a pa drao , entac
voce normalrnente nao tern de defin ir sua propria. Enrreeanto, em alguns casas
voce pode querer definiruma area de trabalho de tabela adicional. P Ol' exemplo,
se quiser manter a verssc original de uma linha e tern uma versao modificada
tambern, voce precisaria de duas areas de trabalho.
L- - - - - - - - ---I- - HI va
V9 -
.1..0 Voce pede definir areas de trabalh o da tabela adicional utilizando a
. _ de
:oglhO :"'irtUQl:.~._ . rologem in struc;ao data .

Sintaxe simplifica da para a instrucco data


~ Abaixo eSta a sintaxe simplificada para a insrrucio data .
Pare abrir umo novo ione lo do R/3 (cho modo sessec), de quo lque rt e la
escclho 0 com inho de menu Svstem-c-Cr ecte New Session. Voce pede
Z data ItO like tl.
c brir urn maximo de seis sessces. Se voce qctser chrlr mois de sels,
simples ment e efetue 0 logon umo segundo vez.
~ onde:
m • Ita e a n ome de um a area de trabalho de tabela qu e voce quer definir
Entendend o os areas d e tro bo lhos da tabela
'f • tl e a no m e de uma ta bela qu e voc e quer para padrjio em sua area de
trabalho de poi s .

NOVO il... No linho 3 do listog e m 2.2, as polovros ; nto zt xl f al sse opcion ois. Se voc e
TfRMO~ debe-los de foro, 0 crec de trobolho co m 0 mesmo nome do tcbelo e uftlizode. A Listagern 2.4 mostra como utilizar a in srrucao dat a para criar um a nova
Em outros polovros, 0 linho otuol outomo ticomenfe entre no crec de trobolho ztxl fal.
Per esse rcreo , ela e canhecido como 6reo de trobolho do tobe lo podrt50. Nesse coso , a area de trabalho.
c reo de trebo lho zt xl f al e 0 area padrOo pore a tobelc ztxlfal. Por isso, 0 c6d igo no
listogern 2.2 pode ser sirnplificodo como mostredo no listcgem 2.3. EKTWlA~ List a g em 2.4 Utilizando sua pr6pria a rea de trobolho de to bela

[NTiAOA~ Listagem 2.3 Seu segundo prog romo simplificodo 1 re port zb:0204 .
2 tables ztxlfal.
1 report ztx0203. 3 data Wi li ke ztxlfal.
2 t abl es ztx lfa l. 4 select" tree ztxlfal into wa order by l t fnt-,
3 sel ect > f rom zblfal order by ll fnr . 5 wr ite / ee - j tfnr,
4 write / ztxlfal- lifnr. 6 endsetect .
5 endset ect ,
--- -
78 APREN" EM 21 DIAS ABAP/4 DlA 2:SEU PRIMEIRO PROGRAMA EM ABAPf4 79

a
c6digo na Lisragern 2.4 deve produzir a me sma saida que as duas ANALISE.... Este programa Ie todcs as reqlstro s de tobelc ztxlfal onde 0 nc rnero do
listagens anteriores (veja a saida cia Listagem 2.3). Observe que nesse exemplo ,. fahrican te e menar que 2000 e escreve 0 contecdo do compo 1i f nr (a ncmerc
njio e necessaria defini r uma n ova area de trabalha - uma e utilizada apenas de fabriconte). No banco de dodos, 1; fn r e urn compo de ccroctere cc nte ndo vclcres
1 ;
; ..
nurr-ericos que estcc exa tcmente [ustificcdos e p reenchtdcs 6 esquerdo co m ze ros.
para ilusrrar 0 conceito .
Portanto, 0 vola r a ser comparedo com 1; f nr deve fer 0 mesmo formata e tipo de dodos

ANlus[ ~
pore evitor o converscc de dodos e osseguror que os resultados desejodos se jam obtido s.
• A 1inha 3 define uma nova area de trabalha chamada ~a como a
estrutura zt xl fal de DDIC. Note que codificar urn caractere literal em ABAP/4 (como '0000002000 I
~ A linha-lle uma linha de uma vez cia tabela ztxl fal na area de trabalho na linha 3), deve envolver a string de caractere dentro de aspas simples.
wa em vea cia area de trabalho cia tabela padrao.
• A linha 5 emi te a linha para wa em vel. de ztxl fal.
Ira bo Ib °ad Q co rn veri uxeis,-,d..,e"--,,s,;isut"'eJjrnLLO"'- _
o
NOVO....
rrRMO"
Quando voc e explicitcmente atribui names a umo 6rea de trobclho
se 1ect {como; nto wa no ltnhc 5j, esse crec de trobolho
no instru<;6a
e chomodo area de
HDVO ...
HRMO'-
sistema R/3 tome as vcriovels de sistema disponiveis dentro de sev pro groma .
Voce n60 tern de defioir quolquer coiso para ccessc-lcs, elas estcc s.::mpre I
disponive is e automaticomente sec ctucluodcs pe lo sistema como cltero coes sue s no
frobo/he explfdfo . ombiente do progroma. Todos os vcrioveis de sistema comeccrn co m 0 prefixo 5Y - . Par
exemplo, a dote otuol de sistema esto dlsponrvel no ccmpo de sistema sy - datum e a ho ra
latro d uzia do a c1ausulo where otuol em sy-uzeit. Em gerel, eles soo chomados obrevtcdcmente de com pos sy
[prc rw oclo -se "'sci'").
Para resrringir 0 n umero de linhas retornadas do banco de dados, uma clausula
where po de ser adicionada a insrrucao select. Par exemplo, para recuperar Todas as var iaveis de sistema sao definidas na estrutura sys t de DDIC.

I'
fabricantes que tern numeros de fabricante menores que 2000, utilize 0 c6digo . Mas nao def ina syst em seu programa; seus campos estao dispo niveis auto-
na Listagem 2.5. maticamente dentro de cada programa.

ENTRADA~ Lista gem 2.5 Restringindo os fabricantes selecionad05

I
as names de vcrtcveis de sistema podem ser codificodcs utilizando 0
1 report ztx0205. prefixo sy- ou syst -. Por exemplc, sy-datum tornbem pod e ser
2 tables ztx.lfa1. codiftcodo co mo sy st-datum; eles s60 funciono lmenle equlvclentes .
3 select * from ztxlfa1 where lifnr < ' 0000002000' order by lifnr. Sy- e 0 formvlcrtc preferido, embora voce occsionalmente veto sy st-
4 write / zt xlfal · l ifnr . em progremos mais a ntigo s. Syst eo unico estrutura que tem umo
5 endsetect . duolidade de prefixes . Para todos as outros, voce de ve utilizor 0 nome
complete de estruturo como 0 preflxo.
i
SAiDA ~
o
1000
1010
c6digo na Listagem 2.5 deve produzir esta saida:
Duas verieveis de sistema sao muito tite is para saber qu and o co dificar a
inscrucao se 1ect :
I
1020
1030
1040
1050

II
sy-subt-c
sy -dbcnt
![
of
1060 or
Deseobrindo sy-subre
1070
1080
d
1090 NOVO .... \ Pcro d~:e rmincr s.e a instru<;oo s e lect retor~ou qU~is~uer linhos: teste 0 volar
HRMO" do vcridve ] de slstemc sy-subrc fprcnunclo-se sol-sub-cre-st"] depois do :f
instru<;oo endsel ect. Se as ltnhos foram loeo lizodos, a vclor de sy -s ubr c se ra O. Se d
nenhuma linho [o! lccclizcdc, a valor sera 4. (Veic a listagem 2.6.)
.f
---~~~~~~~~~~~~~~----------'--~---------------~
DIA 2:StU PRIMEIROPROGAAMA EM ABAP/4 81
80 APRENDA EM 21 DlAS ABAP/4

Depois de endselect. elo reter6 seu volar e entcc ccnterc 0 ruimerc de linhos se-
ENTRADA'" lista gem ~ .6 Utilizando sy-subrc para determinar se quoisquer llnhos lecionodos. Por exemplo, pora irnprimir rujmercs seqcenclots 00 lado de coda fobriconte
,.. fora m selecionodos e imprimir um tolo l do nomero de llnhos selecionodos no po rle inferior do relot6rio, utilize
o c6d igo no listogem 2.7.
1report ztx0206.
2tables ztxlfal .
ENTRADAlItr.. Listagem 2.7 Utilizando 0 sy-dbcnt para co ntor lmhc s retomados do
3se lect .. from ztx'l f al where l f fnr > 'Z '.
4 write / ztx lfet-ltrnr ,
" instrucoo select
5 endselect.
1 re port ztx0207 .
6H sy-subrc < > O.
2 tables ztxlfaL
7 write / 'No records found' .
3 se lect 10" from ztxlfa1 order by lifnr.
B endif.
4 wri t e / sy- dbcnt ,
5 wr ite ztx lfa1-1ifnr.
a codigo na Listagern 2.6 produz esta safda: 6 endse tect .
7 write / sy-dbcnt .
SAiDA ~ No records found

ANALISE..... A instru<;oo se lecionodo no linha 3 estc restringido par umo cl6usu la where.
r
~epois do
Nesse coso, nenhumo linho coincide com a criteria no d6usulo where , entoo
endselect, 0 valor de sy -subrc e configurodo como 4.
B wri te ' r ecor ds fou nd'.

o codigo na Listagem 2.7 produz esta saida:


II
~
1 1000
SAiDA 2
3
1010
1020
I
Muitos pclovrcs-chove otribuem vclores a sy -subrc . Algumas po- 4 1030 I
lovrcs-chove slmplesmente nco 0 configurorn. Se urne pe lovra-chave 5 1040
configura sy -subre, as volores oossrvels 500 documentodos no ojuda 6 1050
7 1060
Fl para esse pclcvrc -chcve.
8 1070
9 1080
10 1090.
Se voce codificou u m a set ect e quiser testar 0 valor de sy-subr-c, seu teste 11 2000
deve vir depois de en dse 1ect. Por que? A resposta reside no fato de que 0 codigo 12 VI
entre select e end select e executado uma vez para cada linha retornada do 13 VlO
14 VlI
banco de dados .
15 VI2
Se nenhuma linha (zero) eretornada do banco de dados, 0 codigc entre 16 V2
select e endselect nunea e executado. Pcrtanto, voce deve codificar 0 teste 17 V3
para sy-subrc depois de endsel ect. 18 V4
19 V5
20 V6
21 V7
Sy-subt-c noo e outomot icomente inicializodo como zero quando seu 22 VB
progromo lntctc. Entretcntc, isso nunco deve ser umo preo cupoceo, 23 V9
porque voce nee deve venficc-lo ate q ue umo instruceo que oconfiguro 1-3 registros encontrados
tenhc exeeutado.

• A linha 4 escreve 0 valor de sy-docn t para ca d a linha que e retomada


ANAliSE~
Des cobrindo sy-dbc nt
pela sel ect . A barra (/) comeca em uma nova Iin h a, eneao cada
NOVO ~ Poro determinor a nume rc de Jinhos retornodo por umo instru<;60 sel ect, teste sy-dbcnt comeca em uma nova linha.
HRMO" a valor de sy-dbcnt decors de endsel ect . Voce tombern pode utilizo-lo como • A linha 5 escreve 0 valor de ztxlfal- l ifnr na mesma linha que
urn contodorde 100Pi entre sel ect e endsel ect , elcccntem uma soma do itera'ioo otuol.
sy-dbcnt.
Pore a prirneiro linho, sy -db cnt se ra 1, durante a segu ndo sera 2 e ossim por dionle .
-,;.;.:,

82 APRENDA EM 21 DIA l ABAP/' DIA 2:SEU PRIMEJRO PROGRAM.&. EM ABAP{4 83

Exi bindo 0 es trutura sys t Por exemplo, para definir duas tabelas, voce poderia codificar isro:
Hoi duas rnane iras de exibir os cornponentes de estrurura syst: tables ztxlfal.
• Da tela ABAP/4 Editor: Edit Program, de urn clique duplo no nome tables ztxlfbl.
de qualquer campo sy dentro de seu codigo au, voce poderia utilizar 0 operador de encadeament o, com o esse:
• Va para Data D ictionary , insira syst, se1ecione a bctao de 0pljao
0 tables: ztxlfal. ztxlfbl.
Structure e pressione a batao Display
Funcionalmente, os dais segmentos precedentes de c6digo sao identicos
Para localizar C'flmpos dentro cia estrutura, pressione a batao Find na e ern tempo de execucio nao hi nenhuma diferenca em desempenho. Durante
barra de ferramentas Standard e digire 0 nome do campo que voce quer a gerecac de c6digo, 0 segundo segmento de c6digo e expandido em duas
local izar. instrucces. Entao, de um ponto de vista funcional os dois prograrnas sao
Se voce nao sabe 0 nome do campo que quer localizar, mas antes deseja identicos.
localizar urn par descncao, voce tambem pode pesquisar as descricoes. as operadores de encadeamento devem ser ut ilizados p ara m elh orar a
legibilidade de seu programa. A utilizacao do operador de encad eamenro e
S(RHN(AM~ lnicie a Screeotlcm "How to Seorch Through Field Descriptions" ogora. ilustrada na Listagem 2.8.

Para pesquisar par descricoes de campo, utilize este procedimento: ENTRADA.... Listagem 2.8 Utilizondo a operador de encadeo mento pa ra reduzir a
r redundcnclc no instru<;:oo write
1. Comece na tela de campos Dictionary: Table/Structure: Display.
1 report ztx0208.
2. Escolha 0 caminho de menu Table->Print.. Uma caixa de dialogo
2 tables ztxlfal.
aparece ra perguntando quais compon-entes voce deseja imprimir. 3 select * from ztxlfal order bylifnr .
. 3. Faca uma marca em todas as caixas de selecao e pressione
0 batao 4 write: / sy-cbcnt , ztxlfal-lifnr.
Continue. Uma caixa de didlogo aparecera pergunrandc a voce as 5 endselect. .
6 write: / sy-dbcnt, 'records found'.
parametres de impressao.
4. P ressione 0 borao Print Preview. A caixa de dialogo se fechara e uma
lista contendo uma pequena fonte aparecerd. a c6digo na Lisragem 2.8 produz a mesma saida que 0 pro gram a anterior
5. Escolha 0 caminho de menu Goto-> List Display. A Iista mudara para (veja a saida da Listagem 2.7).
uma fonte maier de especc fixo.
ANAliSE ~
• A linha 4 combina as linhas 4 e 5 da Listagem 2.7 em uma unica linha
6. No campo de comando, digite %sc ~ pressione a tec1a Enter. A caixa
utilizando 0 op erador de encadeamento.
de dialogo Find aparecera.
• A linha 6 combina as linhas 7 e 8 da Listagem 2.7 em uma u nica linha
7. Digite 0 texto que voce quer localizar e pressione a tecla Enter. Uma
utilizando o· operador de encadeamento.
lista de coincidencias aparecera e cada ccincidencia sera desracada.
8. De urn clique em uma pa lavra desraceda para pular imediatamenre ate Utilizondo a jnst[lJ~ao sel eet si agl e
essa linha na lista. Se voce deseja localizar cutra ocorrencia do texto,
A instrucao select single recupera urn registro do banco de dadc s. Se voce
va para 0 passo 6 desse procedimenro.
conhece a cbave primaria inteira do registro que deseja recuperar, se 1ect s i ngl e

Utilizondo 0 ope rodor de encodeomento emuito rnais rapida e mais eficiente que select/endselect.

Nova... a e
sinal de dois-pontcs (: l chamado operodor de encodeomento. Uttllze-c
Sintaxe para a lnstrucco select single
HRMO"" para combiner linhas de c6digo que cornecom com e mesmo polcvro ou A seguir esta a sintaxe simplificada para a insrrucao se 1ect si ogl e.
seqvencio de polovrcs. Coloque a parte comum no comeco do i n stru ~a a seguida par
dois -ponios. Enta o, coloque as partes fmcls das instru<;6es depots dele, coda uma
seporoda par uma virgule.
.-';,.~ "",- ""~ :~--",
- - - ._- - - - - • - - - - - - -
;';;;:"'::-="",=:"'"":=:-=~~_""'!!!""'!!I"'"_""",,",,,
."""".
_ _......._ ...,....,..._ ........_ ....... _
........_ 'W
_...._
- - - - - - - - - - - - ..,
_........_ _..... .....r-"_ _.... ...._ _ .

DIA2: SEU PRIMEIROPROGRAMA EM A8AP/~ 85


84 APREH D" EM 21 DIAS AB AP/4

III s el ect * from tl [into wa] [where fl op vI and/or f2 op v2 . •. ]. Co me nta nd o 0 c6 d igo e a d ocumenta~ao fo rm al
Z onde: Ha duas maneiras de colocar comentarios em seu c6dig o:

~m
* indica que tcdos a s camp os na tabela devem ser recuperados . • Urn * (asterisco ) na primeira coluna indica que a linh a inteira e urn
tl eo nom e de um a tabela previamente definida em uma instrucao ta bl es . comentdrio. Ela ficare em vermelho dentro do edit or para indicar que
wa e0 no me: cia area de trabalha que coincide com a estrutura da tabela. eurn comentario de linha inteira.
T 11 e0 nome de urn campo n a tabela tl.
op e urn dos seguintes ope radores logicos: '" <> > > = -c <=,
• II . (aspas duplas) em qualquer luga r em uma linha indicam que a

res tante da linha e urn com entario. 0 com en rario nao ficar a em
e
vl um literal ou uma variavel.
vermelho como para urn comen tario de linha in teira.
and/or e uma palavra and ou uma palavra or .
P a r exemplo:
* Isto e um ccnentartc
as seguinte s pontos aplicam: ta b' es ztxlfal. " Isto t ambem e vm cement ar t 0

• select si ngle nao corn elia urn loop porque ela apenas retoma uma Nao ha caractere end- comnent (fim de co mentario). Em outras palavras,
linha. Po rtanto, nao co difique uma instrucio endsel ect , Se fiaer i550. quando voce comeca urn comentario, 0 res tante da linha sera apenas urn
voce obtera urn erro de sintaxe. comen tdric. Nenhum c6d igo adicional pode entrar nessa linha. 0 comentario
• Certifique -s e de que uma linha un ica foi retomada, voce deve espe- termina no final cialinha atual.
cificar todos os camp o s de chave prim aria na cldusula whe re. Se voce Independenremente dos comentarics, voce pode formalmente registra r
nao fize r isso, seu p ro grama ex ecu tara, mas obt era urn aviso. (Para seu c6d igo no componente de document aci o do progra ma. Para fazer isso, va
ex ibir os avis os , es c ol h a 0 caminho de menu Programa Pro- para a tela Editor I nitial, de urn clique no batao de opca o D ocumentation e
gram-c-Check -> Display Warnings.) pre ssione Change. Digite sua documentacio e pr essione Save.
A Listagem 2.9 ilustra a instrucao select s t ngl e. Para praticar, erie urn
novo program a e digite 0 c6 digo como mostrado na Listagem 2.9. Resum o
• O s programas do ABAP/4 sao compostos de compone ntes . Os corn-
fHTRADA~ Lisfa g em 2 .9 A instru;ao sel ect si ngle ponentes sao atriburos, codigo-fonte, vari ante s, elementos de tex to e
documenracao. No minimo, urn programa deve ter atributos e codi go-
I repor t zt x0209.
2 tables zt xl fa l .
fonte.
3 sel ect sing le * from ztxlfal where lifnr" 'VI ' . • Os rela t6rios do ABAP/ 4 devem comecar corn a instrucao re port.
4 if sy-subrc z o.
5 write : / ztxlfaI · l i fnr , zt xlfal - namel.
• A insrrucao tables aloca uma area de trabalho da tab ela p adrao e
6 el se . tambern da acesso ao programa para a tabela de banco de clade s do
7 wri t e 'record not found" . mesmo nome.
8 endif.
• A instrucao se 1ect recupera as linhas de uma tabe la de banco de dad os.
Utilize select si ngl e par a recuperar uma Iinha. Utilize select/e nd-
o c6d igo na Listagem 2.9 produz esta saida: se 1ect para recuperar multiplas linhas.

SAiD! ~ VI Quantity first Ltd . • select/endselect forma urn loop. 0 codigo no loop e execu tado uma
vez para cada linha de tabela que sati sfaz a clausul a where. 0 loop

!NjllSE~
A linho 31ocolizo 0 fobrkonte VI no to be lo zt xl fal. Como apenos umo linha rermina automaticamente quando todas as linh as forem processadas.
foi retornodo, order by noo e necessaria e nem e endsel ect . Se voce DaO esp ecificar uma clausula ; nto, cada [inha sera colocada na
area de trabalho da tabela padrao e sobrescreverd a linha anterior.
e
sy-subr-c configurado como 0 se quaisquer Jinhas fo rem selecion adas,
e con figura do como 4 se nen huma linha for selecionada. sy-d bcnt e
.,.. - ..... 'W' W W • _ -w

86 "RENDA EM 1\ DIAl ABAP/4 DIA 2: SEU PRIMEIRDPROGRAMA EMASAP!. 87

aumentado sempre uma vez p elo loop e dep ois do endsel ect ele edito r teria acabado. Hoi agora duas vers6es do seu pr ograma no
con tem 0 mimero de linh as recuperadas. banco de dados: a versao alterada (a que voce acabou de executar)
• 0 operador de encadeamento e dois-ponccs (:) . :E urilizado para e a original. (A versso alrerada e armazenada com urn nome
reduzir a redunddncia on de dua s ou mais insrrucoes comecam com a temporario que consisre em ! e os ultimos sere caracteres de seu
mesma pala vra ou sequencia de palavras. nome de programa.) Sevoc e agora retornar ao edicor e tent ar editar
seu programa no vamente, 0 sist ema detectara 3 presence de duas
vers6es no banco de dad os e exibira um a caixa de dialc go que
P&R solicita 3 voce qual versao voce qu er ed itar, a primeira (salva) ou 3
temporaria. Para exibir a copia rempor aria (3 prirneira que voce
o Se eu estiver edltando um programa, 0 que acontece com mi-
nhas alteracces se estiver desconectado do R/3 j por exemplo, se
executou) simple smen te pressio ne 0 bo-ac Continue.
meu PC trava e tenho de rei niciaIizar? Perderei m inhas al-
tera<;6es? o Quando copio urn programa in teiro, a inst ru cao report ain da
contem 0 nome antigo do relat6ri o. Mas se eu a executa, ele
roda sem erro . Ele nao dev eri a me dar u rn erro?
o Se voce efecuar logon novamente den tro de 5 ou 10 m in utes,
pod era recone ctar-se a sua sessao. Q uando voce efetuar logo n
novamente, digite seu ID de usuario e senha mas nsopressione
a tecla En ter na tela de logon; em vez disso, escolha 0 caminh o de
o o nome de p r ogram a n a instrucj.o r eport e~brigat~ri o, mas nao
tern de corresponder com 0 nome real do pro grama. E apenas para
documentaclo.
menu User-> Copy Session. Voce sera reconectado a sua sessdo
anterior e tude sera restaurado da maneira que estava quando voce
perdeu sua con exao. o Toda vez que efetuo 0 logoff do R/3 ob tenho uma caixa de
mensagern que diz "Unsaved data will b e lo st" - mesm o depois
que salv ei tude. POl' que~
H oi u rn r ecurso de AutoSave no editor como no MSWord?
0-
e Nso. Mas quando voc e quiser salvar basta pressionar a tecla El I. o Apesar de sua s p alavras , essa m en sagem njio signifies que ha
dados njio salvos qu e serao perdidos. Ela sign ifies "Se voce nao
salv ou seus dados, eles serdo p erdi dos" . A melhor coisa a fazer
o As vezes, quando edito urn p rograma, obtenho u rna caixa de
dial ogo com a me n sagem "Program was temporarily buffered
e ap ena s ignora-la. Todo mundo faz issc .

(pos sibly due to a system error/failure) Choose one of the


foll owing op tions" - 0 prograrna ternporariamente teve uso o Possa aninhar as in struco es sel ect dentr o de autra?
de bu ffer (possivelmente devido a urn erro/falha de sistema)
Escolh a u m a da s seguintes opcoes . Por que a vejo e 0 que devc
fazer ?
o Sim, pede, mas n a m aicria das vezes voce nao deve, p orque ela
po d e ser extremamen te ineficiente. Uma altern ativ e melhor e
u rilizar um a visualizapi o do banco de clade s.

o Isso signifies qu e ha duas copias de seu programa no sistema:


uma "rea l" e ou tra temp crdria. A remp oraria e criada quan do Wo rksho p
voce executa seu programa sem pri mei r o salvd-Io. N ormal- Os exercrcios a seguir oferecem uma prarica para utilizar 0 editor e escrever
mente e excluida qu ando voce ret crna ao editor e salva suas progra mas simples que utiliz am as instrucoes t abl es, sel ect e wr it e. As
alteracbes, mas se voce an ormalmen te sai do editor, ela p er- respostas estao n o Apendic e B, "Re spos ras as pergumas e aos exercfcios" .
manecera. Por exemplo, voce poderia modi ficar seu program a
e entdo executa-lo imedi atamente sem salva-Io. Se sen pr o-
grama produ zisse urn du mp p equ en o, v oce en tao precisaria
pressionar 0 botao Ex it e voltaria ao Wor kbench . Su a sessr c n o
..,
"::'!!!'-------------~--
",.

88 APREHDA EM 21 DIAS AWl' D1A 2,SEU PRIMEIRO PRDGRAMA EM AMP/4 89 L


Teste 5. Retorne da ajuda novamente para seu programa. (Pres sion e 0 bo rao
1. Quais as duas coisas que a instrucao tabl es faz? Back na barre de ferram entas Application.)
2. A que 0 termc area de trabalho da tabela padrao se refere? 6. Exiba as arribuicoes de tecla de funcio. (De urn clique com 0 bono .,
dire ito do mouse em qualquer lugar na area de tela da janela.)
3. Se a inscru cao sel ect esta faltando em urna clausula ; nto, onde
entrarao as linhas? 7. Traga a linha 3 para 0 tOPO da tela . (De urn clique duplo no espaco
em branco na linha 3, mas nao em uma palavra .)
4. Se uma inst rucao write nao contem uma barra, a safda e escrita na
mesm a linha que a saida para a instrucfo write an terior ou e escri ta 8. Exclua a Iinha 6. (Cologue 0 cursorna linha 6 e pres sione 0 batao Cut
em uma nova linha? na berra de ferramentas Application.)
5. Qual e 0 nome da varidvel de sistema que ind ica se quaisquer linhas 9. Abra uma nova sessao e exiba a programa zty0200b. (Escolha 0
for am localizadas pela instrucao select? caminho de menu Syst em-> Create session. Uma nova janela de SAP
R!3 e exibida. Escolha 0 caminho de menu Tools- >ABAP/4 Work-
6. Qual e0 nome da variavel de sistema que indica quantas linhas foram
bench. A telaABAP/4 Development Workbench eexibida. Pressione
localizadas pela insrrucao select?
o botac ABAP/4 Editor na barre de [erramentas Application. No
7. .Veja a Listag em 2.6. Se h a 30 linhas na rabe la ztxl fal, quanras vezes campo Program Name, digite zty0200b. Pressione a bocao Display.)
a linha 4 foi executada?
10. Marque as linhas 2 a 4 utilizando 0 botac Select. (Coloque 0 cursor
8. Veja a Listag em 2.6. Se a tabela ztxlfal esdver vazia (se contem 0 na linha 2. Pressione a borao Select na barra de ferramentas Applica-
linhas), guantas vez es.a linha 4 foi executada? tion . A linha 2 tom a-se azu l. Coloque 0 cursor na linh a 4. Pressione
o botao Select novamente. As linhas 2 a 4 sao rnarcadas em azul.)
Exe rcfcio s do ed itor 11. Copie 0 bloco marcado para 0 buffer X. (Escolha a caminho de menu
No exercfcio a seguir, voce copiara urn programa, corrigira erros no codigo, Block/Buffer-> Copy to X Buffer.)
mesclara novo c6d igo nele, executara, imprimira, carregara, criara uma versao
12. Alterne de volta para a jane la em que programs • • - 0200a e exibido.
e comparara versoes . Veja a Tab ela 2.3 quando necessaria.
13. Cole as linhas do buffer X depois da Iinha 5. (Cologue 0 cursor na
1. Copie a program a zty0200a para 0 programa ••• 0200a. Para executar linha 6. Escolha 0 caminho de menu Block/Buffer-> In sert X Buffer.)
a c6p ia, utilize 0 botao Copy localizado na barra de [erramentas 14. Marque 0 bloco de linhas 6 a g. (Coloque 0 curs or na linha 6.
Application do ABA P/4 Ed itor: Initial Screen. Pressione 0 botao Select na barra de [erramentas Applicati on . Colo-
report zty0200a. que 0 cursor na linha 8. Pressione 0 botac Select novamente .)
sel ect v from ztx lfal. IS. Mova 0 bloco quarro espacos para a esquerda, alinhe a inst rucao ; f
write / ztxl fe l-Hfnr .
endsel ect • com a inscrucao select. (Coloque 0 cursor na linha 6 na coluna 1.
endsel ect . ~ linha duplicada intencionalmente Pressione 0 batao Move Line na barra de ferramentas Application.)
r eport zty0200b. 16. Escolha 0 caminho de menu Program->Save As e salve seu programa
if sy-su brc <> o. modificado como > • - 0200b.
write : / ' no records fo und' .
endif. 17. Exiba 0 programa _ . -0200b utilizandc 0 caminho de menu Pro-
gram-> Other Program.
2 . Edite 0 programa • - • 0200a. Corrija 0 nome de relat6rio na insrrucao
18. Corrija 0 nome de programa na instruqao repo rt. (Altere _•• 0200a
report.
para·· ·0200b na linha 1.)
3. Insi ra uma nova linh a depois da linha 1. Digite a instrucao tables
19. Selecione as linhas 3 a 5. (Cologue 0 cursor na linha 3. Pression e 0
apropriada nessa linha.
batao Select na barra de [erramentas Application. Coloque a cursor
4. Obtenha ajuda para a instrucfo tables. (Coloque a cursor na ins- na linha 5. Pressione 0 batao Select novamente.)
tru~ ao tabl es e press ion e F1.)
20. Ccpie 0 bloeo selecionado para a buffer interne do pr ograma. (Pres-
sione 0 batao Copy To Buffer na barra de ferram entas Application.)
....~""r-"--....e-"="....,=-....",......,.....
i ,i'"
};."':£ ;-
-!'"""I-_......._.. . . .- . . ...--_.. . . . _.. . . . . . . . .
-~~~~---~ w . w ~ ~ _r -.
w .-...........-
w _ ..........
._ .. w ••• w •• _ _ . w_
_ ....,.......,..-.............---.,......,.......,......,.......,......,.................._ ........

, 90
or'
~- I APRENDA EM 21 OJAS ABAP/~ DIA UEUPRiMEIRDPRDGRAlIA EM ABAP/4 J 91
I
21. Cole 0 bloco que voce acabou de copiar no final do seu prcgrama. 34. Substitua todas as ocorrencias cia s tring zt xlfal nas linhas 10 e 11
(Coloque 0 cursor na Iinha 9 e pressione 0 borao Insert From Buffer com a string ztxlfbl utili zan do a fun~ao Search/ Replace. (Culo que
na barra de ferramentas App licarion.) o cursor na linha 10. Press ione 0 borso Select. C oloque 0 cursor na linha
22. Cole 0 mesma bloco novamenre no final de seu programa. (Ccloque 11. Press ioneo botao Select. As linha s IDe 11 agoraesno marca d as como
o cursor na linha 12 e pressione 0 borde Insert From Buffer na barra urn bloco em verrnelho. Pressione 0 botao Find.. A tela Search/Replace
de [erramentas Application.) eexibida. Digite ztxl fal no campo Find. Paca um a marca de selecao na
23. Des faca a ultima colagem. (Pressi one 0 bordo Undo na barra de caixa de selecao Replace By. Digire ztxl fbl no campo Rep lace By.
[erramentas Applicarion.) Pressione 0 botao Continue. A tela ABAP/ 4 Editor: Edit Program e
exibida . Pressione 0 botec No Confirmation . Tod as as ocorrencias
24. Digite 0 seguinte c6digo nas Iinhas 12 a 14. Comece cada Iinha na
cia string dentro do bloco marcado sao substitufdas.)
coluna 1.
35. Utilize urna teela de funcac para salvar seu p rograma e outra tecla de
if sy-dbcnt > O.
write : I sy-obcnt , ' records found' , funlJao para execun-la. (Pressione F I t. Pre ssion e F 8.)
endif. 36. Salve a saida de lista para urn arqu ivo em seu disco rigido esco lhendo
25. Automaricamente fixe a endentacao, escolhendo 0 caminho de menu o carninho de menu List - c-Save- > Fi le. Utilize formate nao conver-
P rogram- > Pretty Printer. tido.
26. Salve seu p rograma. (Pressione 0 botso Save.) 37. Exiba sua saida descarregada ut ilizando 0 Bloeo de N ota s.
27 . Retcme para 0 ABAP/4 Editor: Initial -Screen e documente seu 38. Retorne para editar seu codigo. (Pressione 0 b otao Back.)
programa. (P ressione 0 batao Back na barra de ferramentas Standard. 39. Faca download de seu prograrna para 0 arquivo c: \ temp\ · •• 0200b. tx t.
Escolh a 0 bo tao de opcao Documentation. Pressione 0 bouo (Escolha 0 caminho de menu Utilities- c-Download. A tela Transfer
Change.) to a Local File e exibida. Digite c: \ t emp\ •• · 0200b. tx t n o campo File
28. Salve sua documen tacao e retom e para editar 0 codigo-fonte. (Pres- Name. Pressione 0 botao OK. A mensagem "277 bytes tr ansferred"
sione 0 botao Save. Pressione 0 botao Back. Escolha 0 botao de op~ao aparece na barra de status na parte inferior da jane1a.)
Source Code. D igite • • • 0200b no campo P rogram. Pressione 0 40. Ed ite seu programa depois de fazer download ut ilizando 0 Bloco de
bo tao - p ushbutton - Change.) Notas. Adic ione urn comentario de linha inteira dep ois da in stru cao
29 . Exi ba as componentes cia estrutura SYST clando urn clique dup lo em de relat6rio com seu no me nele . (Insira uma n ova Iinha .depois cia
urn campo sy. (De urn clique duplo na palavra sy-subrc na linh a 6. A insrructo report: *Created by Seu nome.)
estrutu ra SYST e exibida .) 41. Digite 0 segu inte comentario no final da primeira ins truc io sel ect: II

30. Rerorne para .edirar seu programa. (Pressione 0 botac Back.) read all records from table ztxl fal.
31. Localize a primeira ocorrencia da string ztx lfal em seu programa. 42 . No Bloco de Netas, salve seu program a modificado em disco.
(Pressione 0 bon o Find. A tela Search/Replace e exibida . Dig ire 43. Carregue-o, substituindo 0 programa •• ·02QOb. (Alterne para sua
ztxlfal no camp o F ind . Pressione 0 bo tao de op~ao From Line. tela ABAP/4 Editor: Edit Program· •• 0200b. Escolha 0 caminh o de
Pressione 0 botao Continue.) menu Utilities-> Upload. A tela Import Local Fil e e exibida. No
32 . Repita a pesquisa, localizando cada ocorrencia sucessiva ate que voce campo File N ame, digite c: \ t emp\ · ·· 0200b. txt . Pressione 0 botao
encontre to das elas. (Pressione 0 batao Find Next repetidamente ate OK.)
a mensagem "Strin g wri te not found" aparecer na barra de status na 44 . Salve 0 programa carregado. (P ression e 0 batao Save.)
parte inferior da janela.) 45. Imprima seu programa. (Pressione 0 botao Print na barra de ferra-
33. Adicione a nome de tabela zt x'lfal a instrucfo tabl es. (Alterando a mentas Standard. A tela Print Paramet ers e exibida. Ce rt ifique-se de
instrucao de tabe las, de modo que e1a exiba tables: ztx'l tef , que a caixa de sel e~ao Print Immed. est a at ivada. Pressione 0 botao
zl xlfbJ.) , Print . Sua saida e enviada para a imp ressora e voc e e ret omado para a
tela ABAP/4 Edi tor: Edit Program.)
- - --
D1A 7:SEU PRIMEIRO PROGRAMA EM AIIAP/4 93
92 APRENOA EM21 DIAS ABA P/4

55. Remova os com entarios utilizando 0 caminh o de menu Block!


46. Execute seu programa e imprima a safda. (E scolha 0 caminho de menu
Buffer-c-Delete Comment ::-.
Program-> Execute. A safda de lista eexibida. Pressione 0 botjio Print
na barra de ferramentas Standard. A tela Print Screen e exibida.
Ce rt ifique -se de que a caixa de selecao Print Immed. esta ativada.
fxerdcios de pro-9
,j.rua.umLJ.lla.l.l~
...
6.l.1o",- _
Pressione 0 bene P rin t. Voce acaba voltando para a safda de Iista.) 1. Escreva urn programa que recupere todas as linhas da tabela ztxlfb i
47. Retome para editar programa •• ·0200b e salve uma versao dele no onde 0 codigo de empresa e igual ou maier que 300 0. Em cada linha
da safda deve aparecer 0 codigo de uma ernpresa e 0 numero de urn
banco de dados Ve rsions. (Pressione 0 botao Back para retornar para
Iabricante, com 0 primeiro c6digo de empresa. A safda deve ser
a tela ABAP/4 Editor: Edit Program. Escolha 0 cam in ho de menu
classificada primeiro pelo c6digo de empresa em ordem ascendente,
Program->Generate Version .)
depois pe lo mimero de fsbricante em ordem desce nden te. (Utilize a
48. Substirua todas as ocorrenc ias de ztxlfbl com ztxlfc3. (Pressione 0
ajuda Fl para localizar a sintaxe correta.) Atribua nome a seu pro-
boeo Find. A tela Search/Replace e exibida. Digire ztxl fbI no campo
grama •• ·e0201. Urn exemplo de como sua saida deve aparecer e
Find. Faca uma marca de selecao na caixa de selecso Replace By. Digite
mostrado a seguir.
ztx l fc3 no campo Replace By. Pressione a batao de opcao In Program.
SAioA~
Press ione 0 bon o Continue. A tela Global Replace In Programs e 1000 Y9
1000 YB
exibida. P ressione 0 botao No Confirmation . Todas as ocorrencias da 1000 Y6
string sao substituidas. Pressione 0 batao Save. Pressione a batao Back. 2000 V9
Voce e retornado para a tela ABA P/4 Editor: Edit Program.)
2. Copie 0 progl'ama zty0202 para·· ·e02D2 (a listagem aparece a
49 . Salve suas alreracoes. (Pressione 0 botao Save.) seguir). Ele nac produz qualquer saida. Localize 0 bu g n ele e corrija-o.
50 . Retorne ao edito r tela inicial e compare as duas vers6es. (Pressione 0 Depois de voce [azer isso, a safda correta deve ser no re cor ds found.
bo tao Back. A ABAP/ 4 Editor: Initial Screen e exibida. Escolha 0
1 report zty020Z.
cam inho de me nu U rilities -c-Version management. A te la Vers ions 2. tables 'ztx1fal.
Of O bject • • • 0200b Of Type REPS e exibida. Eaca uma marca de 3 select * from ztxlfal where lifnr l ik e 'W%'.
4 if sy -subrc <> O.
selecao na caixa de selecao Version 00001. Pressione 0 bor ao Com-
5 write / ' no records found '.
pa re na barra de ferramentas Application. A tela Compare Programs: 6 endt f.
All e exibid a. Role para baixo para visualizar as diferencas .) 7 write / ztxlfal-1ifnr.
5 1. Recu pere a vers ac original. (Pressione 0 botao Back. A tela Versions B endsel ect ,
Of O bject ' • · 0200b Of Type REPS i exibida. Remova a marca de 3. Copie 0 programa zty0203 para ••• e02Q3 (a listagem aparece a
selecso da caixa de selecao Act. Pressione 0 bono Re trieve na barra seguir) . E le contem urn erro de sintaxe e urn bug. C o rrija 0 erro de
de [err ame ntas Application (0 sistema nao oferece uma resposta). sintaxe e 0 bug. Quando corrigido, eIe deve exibir numeros de
Pressione 0 bon o Back. A tela Res tore Version e exibida . Pressione fabricante maiores que 1050 da tabela ztxlfal.
o botao Yes. A tela Versions Of Object e • • 0200b O f Type REPS i 1 report zt y0203.
exibida. Pressione 0 bo eso Back. A ABAP/4 Editor: Initial Screen e 2 tables ztxlfa1
exibida.) 3 setect > from ztxlfal where 11fnr > ' 1050' .
4 write / ztxlfa1~ 1i fnr .
52. Edite seu p rograma e m arque as ulrimas tres Iinhas como urn bloco. 5 endse1ect .
(Pressione 0 bono C hange. A tela ABAP/4 Editor: Edit Pro gram i
exibida . Colcque 0 cu rsor na linha 13. Pressione 0 botao Select. A 4. Copie 0 programa zty0204 para ••• e0204 (a listage m aparece a
lin ha 13 torna-se vermelha. Coloque 0 cursor na linha 15. Pressione seguir) . A safdaestd incorreta. Olhe a saida, descubra 0 que ha de
o botao Select. 0 bloco e marcado em vermelho.) errado e corrija 0 programa.

53. Comente 0 bloco utilizando 0 caminho de menu Block/Buffer-> In - 1 report zty020 4.


2 tables ztxlfal.
sert Comment ". 3 select'" from ztxlfal where 1ifnr > ' 0000001050'.
5 4. Marque as ultimas tres linhas como urn bloco (veja 0 passo 51) . 4 write I ztxlfal-1ifnr.
94 m END> EN 21 DIAS Am"

5 ends! 1ect •
6 if sy-dbcnt <:> O.
7 write I 'no reco rds f ound ' .
8 endH .

5. Copie 0 program a zt y020S para ••• e02 DS (a listagem apare ce a


seguir}. A safda esta incorreta. Examine a safda, desc ubra 0 que ha de
errado e co rrija 0 p rograma.
1 report zt y020S.
2 tab les zt xl fal .
3 setect ... from ztxlfal wh ere lHnr :> ' 0000001050' .
4 endselec t.
5 write / ztx lfal-l ifnr.
6 i f sy - subrc <> O.
7 writ e I ' no records found ' .
B endi f.

6. Copie a programa zty0206 para · · - e0206 (a listagem aparec! a


segu ir). Simpl ifiqu e 0 programs removendo 0 codigc desnecessario
e palavras inuteis.
1 report 2t y0206 .
2 tables : ztx 'lf al , ztx l f bl . ztxlfc3 .
3 data we l i ke zt xl f bl.
4 setect > f rom ztxlfal into ztx lfa1.
5 write I ztxlfal- lifnr .
oData Didionary, Parte 1
6 wri t e ztxlfal -namel.
7 enese1ect .
Objetivos do capitulo
8 if sy- subrc <> 0 or sy-dbcnt .. O. Depois de coinpletar esse capitulo. voc e devers set: capaz de:
9 write / ' no records f ound i n ztxl fa l" ,
10 endif . • D efin ir as diferencas ent re tabelas transparente, de pool e de cluster
11 ul t ne. • Criar dominies, elementos de dados e tabelas tra n sparen te s no Data
12 set ect ... f rom ztxl fbl int o ea .
13 write / ee- Itfnr- . D ictionary
14 write wa-bukr s .
• Crier aju da Fl para os campos de uma tabe la e criar vinculos de
15 encsete ct ,
16 if sy-subrc <> O. hipertexto dentr o ciaajuda F l
17 write I 'no record s found'.
• U tilizar os qua tro navegadores de clades fo rn eeidos pela SAP para
18 endi f .
visu alizar e m odificar dado s de ntro de tabelas
7. C opie 0 prog rama zty0207 para· · · e0207 (a Iisragem aparece a
seguir). Ele contem tanto urn erro de sintaxe como urn erro de Oe.scobriodo oiveis de versoo do R/3
prog ramacao. D esc ubra 0 que hi de errado e corrija 0 pro grama . A
safda deve exibir urn un ico registro (fabricance 1000) utili zan do a NOVO.... H6 muitas versees - tombern chemodas niveis de versec - do sistema R!3
est ru rura (co ns tru ct) de programacfo mais eficiente. TEUD '" em utiliza~6a nos die s de ho]e. A verscc 3.0 foi a primeira, mas desde suo
1 re port zty0207. introdu i)c o, a SAP tcmbem lc ncou as versoes 3 .0 a 3.Of, 3.1 g, 3.1 h e 4.00 0 4 .0c . Voce
2 ta bl es zt xlfal. pode de terminer a nlvel de versec de se v sistema utilizanda a caminha de menu
3 sele ct s ingle '" from ztxlfa l whe re lifnr > ' 0000001000 ' . System- > Status.
4 write I ztxlfal -l1fn r.
5 endsetect • Este livre foi tes tado em urn sistema 3.of. Seu siste ma pe de ser em Outre
6 if sv- suer c <> O. nivel de versao. Embora a maicria das difer encss deva ser menor com referencia
7 writ e I ' no records f ound' .
8 endi f.
I aos temas abord ad os aqui, algum as pod em causar confu seo au most rar infer-

L hllpJlwww.ccmpl1$.com.br
----~~--~ - - - ----------- -- - - - - - - - - ~
96 APRE MDA EM 21 DIAl ABAP/~
DlA3:0DATA DlaJONARY,PARTEI 97

macoes neste livre como incorretas. P or exemplo, caminhos de me nu po dem


ser alterados ent re os nfveis de versao. Sempre que possfvel, as di ferencas que Explorando os tipos de tabelas em R/3
pod em causar confusao foram observadas neste texto. Entretant o, se a fun cio- No R/3 ha tres tipos de tab ela: tab elas t ransparent es, de p ool e tabelas de
nalid ad e em seu sistema parec e diferir da descrit a aqui, voc e pode cons ultar as cluster, Elas sao mos t radas na Figura 3,1.
no tas de versao do R/3 , disponfveis online, para det erminar se a diferenca po de
ser atribulda ao nivel de versa-a. Para acessar as notas devcrsao, u tilize 0 segu inte Fig urQ 3 1

proc edimen to: as fr€!s tipos de tobelo


no Data Dictionary do
R/3. Tob./o ~'p<l,.ft"
S(RHH(AM ~ lnicie a ScreenCom "How to Display R/3 Release Notes" ogara .

P ara exibir as notas de versao do R/3:

1. Va pa ra 0 m enu p r i nci p al e es co l ha 0 ca m inho d e menu


T ools->Find->Search Interface. A tela Search Interface: Request
",b.le>T9 ",b."'T9
aparece.
2. Escolha
3. Pressione
0 borao de opca o RELN.
0 botao Choose na bar ra de ferramemas A pplic atio n. A tela A ", bolo <lcbonco d. dodo, ,.",.
ITlJ """"-A
Moo"", ..bel", "'belode bo",,"----
ITT] .o.q....... "'llelcl.> ""
''''' '''''''''''''''0 de c<l/'I'P<>1 "" R/3, m<>' "p'"'''' do dod<l. t,,,,' R/3. """.0 Iab.le> ""
Find Release Notes eexibida. • ",.""0 _
.o<""""",ltmo,"...".o ~o<nl!
u"'" '" be'a "" DOIC.
At. Ichb. "" IVJpode m
• """' . d;IG<. nl.
• nii me... d. C<lmp<>< d,I,,.,,,..
booc:"d. dod... .
At. ",bel", I'", pole>
~, 0 "' belc> DOICIVJ "" hila I., ",,"'pc" d. • a' <''''PG .lim .,.,.,.•• d,I.,•• ,.. """"" ..."'" e"""
4. Pressione 0 botso Complete List. A tela D isplay St ruc tu re: Complete e..... . p<imO';" <!G IO bela ODIC do IVJ ",;",oM ,m """''''''
" ' "'V"c1. <6<> .......
List of Release NOtes eexibida. .", 0GnI"",
..""' hon..........I.

5. D e urn clique em qualq uer + (sinal de adicec) pa ra expandir


0 no .
Modifications To ABAP aparecera sob 0 no de Basis, debaixo do Tobe los transporentes
subn6 ABAP/4 Development Workbench.
NOVO ~ Umo tobeio transporente no dlclcncrlo fern relocionomento um-poro-um com
Apro£undando-se no R/3 Data Dictionary TERMO '" umo tcbelc no ba nco de dod os. Sua estruturo no Dcto Dictionary do R/3
cor respond e a uma unicc fabelo de ba nco de dodos. Para coda defjnii;ao de tcbelo
Como uma revisao , por favor espere alguns minu tos e releia a sec;ao no Dia 2 fronspa rente no dlcloncrlo, he umo tobela ossociodo no banco de dodos. A tcbelc de
intirulada "Introduzindo o R/3 D ata Di ctionary" nesse mement o. ban co de dodos tem a mesmo nome, a mesmo num erc de co mpos e as compo s tern a s
Os objetcs Data Dictionary sao utili zados na mai or ia do s programas rnesmos na mes q ue a deflnlccc de fobe la do R/ 3. Quando examiner 0 de finiC;a o de umo
tobelo tronsporente d o R/3, voce po de oche r q ue estc olhando par a a proprio fabela de
ABAP/4. A natureza do entrosam entc dos pro gram as em A BA P/4 e objeto s
banco de dodo s.
DDIC tornam 0 conhecimento profu n da do D ata Di ctionary do R/3 uma
ha bilidade essencial de programacao. Portemo, comecand o co m esce capitulo, NOVO... As tab ela s trcn sporentes sec multo mois comuns do que as tobelos de pool cu
voce aprendera a criar objeros DDI C co mo tab elas, elem entos d e daclcs e Tn.MO ~ de duster. Elcs sao utilizad os pa ra a rmazenor dodos de oplicotivo. Os dodos
domfnios. de cplicctivc sao os dc dos-mestres o u c s dodos de frc nsc coo ufilizodos po rum cpllcotlvo.
Um exemplo de dod os-mestres e a tobelo de fobrico nfes (chomoda da dos-mestres de
fa briconfes) ou a tobe lo de clientes (cham oda dados-mestres de di entes). Um exemplo
de dodos de trcoscceo sec a s pedidos feito s pelcs cllentes ou as ped idos envia do s para
Muites cble tcs de dese nvclvlmento ufilizodos com o exemples 0 0 le ngo
as Icbricont es.
de fodo esfe livre (como tobelos, dominios e e lementos de dodos ) sao
bosec dos em oo jetcs reo's de desen volvlmen to no sfstemc R/3. O s
As tabe1as rran sparent es sao provavelmente 0 unico tip o de tabela que
objetos de exernplo te reo a mesmo nome que a s o bletos do R/3 reots,
voce criara.. As tabelas de pool e de cluster nao sao normalmente utilizadas para
mas eles serco prefixodos com ztx. Par exemplc, 1f al e umo tabe lo
real em R/3 e a fobela de exemplo neste livre e zt xlfal. armazenar dados de aplicativo mas, em vez dis SOl armazenam dado s de sistema,
como as informac oes de configu racao de sistema ou dado s esratlsticos e
historiccs . .
98 "RE NDA EM 21 DIAl ABAP/4 DIU DDATA DICTIDNARY, PAR" 1 99

Tanto as tabelas de pool como as de clus te r tern relacionamentos rnuieos- Alguns exemplos de dados contidos nas tabelas de pers onalizacao sao
para-urn com tabelas de banco de dad os . As duas podem aparecer como m uitas ccdigos de parses, c6d igos de regiao {esrado au provincia), numeros de conta
tabelas em R/3, m as elas sao arm azenadas como urna iinica tabela no banco de de reconciliacao, taxas de cambio, meeodcs de depreciacfo e condicces de
dados. A rabela de banco de dadc s tern urn nome diferente, numero de campos pre c;o. Cada fluxo de tela, validacao de campo e atributos individu ais de campo
diferente e nomes de campo diferentes dos cia tabela do R/3. A diferenca entre sao as vezes ~orientados por tabela via configuracces nas tab elas de personali-
as dais ti pos permaneee na carac terf srica dos dados que des armazenam e sersc zac;ao.
expli cadas nas se~6es a seguir.
Fig ur a 3 2
As lobe/os de pool
Poo ls de to bela e labelaLd",e,-,p""o",-o
",-,-
' _ femum
re/ocionome"to
lOYD Il.. Umo tobe/o de pool no R/3 tem um relociono mento muitos- poro- um com umo mvitos-poro-um com
illitO " tc belo no banco de dodos [vejo as Figuros 3.1 e 3.2). Pore ume tcbelc no pools d" tcbelo. .
bonco de dodos, ha muitos tabelos no Dota Oid ionory do R/3 . A tobelo no bonco de

-:
dodos tern um no me diferen te do dos tcbelcs no ODIC, tem um ncrnerc de campos .,
diferente e os compos tornb em tem nomes dlferentes. As tobelos de pool sao umo estruturo ri
(construct) pro priet6rio do SAP. I'

NOYO Il.. Quondo exomino umo tcbelc de poo l no R/3, voce ve umo descdccc de umo
TfUO" fobelo. Entretonto, no banco de dodos, elc e onnozenodo junto com o utros
tcbelcs de pool em umo cntcc tobelo chomodo pool de tobelos. Urn pool de tobe los e
umo tobelc de banco de dodos com umo estruturo especicl que perm ite qu e 05 dodos
de muitos tobelos do R/3 sejom ormozenod os dentro dele. Ele pode openos ormo zenor
tcbelcs de pool.

o R/3 utiliza poo ls de tabela paraarmazenar um grande numero (dez enas


a milhares} de tab elas muit o pequenas (ap roximadamenre de 10 a 100 linhas Durante a implemenracic inicial do sistema os dad os nas tabelas de
cada um a}. Os poo ls de tab ela reduzem a quantidade de recurs os de banco de personalizacao sao configurados par urn analista fun cional . Es se pro fissio nal
dados ne cessarie s quando mui ras tabelas pequenas tern de ser abertas ao mesmo nonnalmente tera experiencia relacionada co m a area de ne g6cio sendo imple-
tempo. A SAP as uriliza pa ra dados de sist ema. Voce pode criar urn p ool de rnentado e recebera treinarnen to ex tenso na configuracso de urn siste m a R/3.
tab elas se precisar criar cen renas de pe quenas tabelas que armaze na m , cad a uma,
apenas algum as linh as de dados. Para impl ernentar essas pequenas tabelas como Cluste rs de to bel a e tobe los de cluster
tabelas de pool, voce prim eiro cria a defini~o de urn pool de tabelas no R/3 para
arm azenar to das elas. Quando ativada, uma unica tabe1a associada (0 pool de HOYO .... Umo tobe /o de cluster e seme lhante a umo tcbelc de pool. Elo te m um
tabelas) sera criada n o banco de dados. Voce entdo pode definir as tabelas de pool mM.O " relocionomento muitos-porn-um com umo tc belc no banco de dodos. Muifos
tobelos de cluster 560 o rmozenodos em umc unico tobelo no ba nco de dodos chomodo
dent ro do R/3 e at ribuir t odas etas ac seu pool de tab elas (veja a Figura 3.2).
d uster de tobe /os.
As tab elas de po ol sao prin cipalmenre utilizadas pelo SAP para armazenar
dad os person alizados. Um cluster de tobe/os e semelhonte 0 um poo l de tcbelos. Ele ormozena muitos
tobelos den tro dele. Tcdos cs tobe los que ele o rmozeno 560 tobelos de cluster.
NOYD .... Quando umo empresa lnstclc quo lquer sistema grande, ele normo lmente e
JrutO ~ perso nolizodo de o lgumo moneirn perc encontror 05 necess idades c niccs do Como as tabelas de p ool , as de cluster sao out ra estrutura (co nstru ct)
empreso . No R/3, esso perscncluccec e feila via tobelos de personolizo¢o. As tcbelos proprietaria ciaSAP. Elas sao utilizadas para armazenar clados de algumas (aproxi-
de person olizoc;oo co ntem co digo$, volidoc;oes de compo, intervolos d e numero e madamente de 2 a 10) tabelas muito grandes. As tabelas de cluster s.eriamutilizadas
parametros que olterom a mon eiro como os op!icotivos do. R/3 se comportom.
quando essas tabelas tivessem uma parte de suas chaves prim arias em comum e se
as dados nessas tabelas fossem to dos acessados simultaneamente. as dados sao
; arm azenados logicamente como rnostrado na Figura 3.3.
I
I

j
I
100 APREIiDA EM 21 OIAS ABAP/4.
OIA 3:0DATA DlGlONARV, PARTE 1 101
Os clusters de tabela contem menos tabelas que as pools de tabela e, Fi g u r a 3 4
dif erenre dos pools de tabela, a chav e p rimaria de cada tabela dentra do cluster As fob e/os cdhdr e
I CDHDR Cluster !able I COpa s Cluster table

de tabelas ccrneca com a mesmo campo ou campos. As linhas das tabelas de cdpos fern os I Change document header I Change document Items
cluster sao combinadas em uma (mica linha no cluster de tabelas. As linhas sao primeiros quatro Field nama Field name Key Typa l engtll
campos de creve
combinadas com base na parte cia chav e primaria que elas tern em co mum. I 171 CLNT 13
As sim , quando uma linha elida de qualquer uma das t abelas no cluster, codas
primaria em comum
e sempre sao I
MANDANT

OBJECTCLAS [7 1 CHAR r-w-


as linhas relacionadas em todas as t abelas de clus ter t am bem sao recuperadas, ccesscoos iuntos e I OBJECTID 171 CHAR r--.w
mas apenas uma {mica E/S e necessaria .
enlao s60
I CHANGENR 171 CHAR r-w-
Urn cluster e vantajoso no caso em que as clados sao acessados a partir
ormozenodos no
cdcls de duslerde I TABNAME 171 CHAR r-w-
de multiples tabelas simultaneamente e essas tabelas tern pelo menos urn de lobe/os .
ITA'KEY 171 CHAR 170
seus campos de chave primaria em co mum . As t abelas de cluster reduzem 0 IFNAME 171 CHAR 110
numero de leituras do banco de dad os e assim melhoram 0 de sempenho. I CHNGIND 171 CHAR J1
IT EXT_CASE 171 CHAR 11"
Figurg 3 3
Os clusters de lobe/a
Detolhe do pedldo
do tobelc IUNIT.OLO 17 fUNiTrs
~:~;~~: ~ I~:~ R
Ccbeco lhc do pedido PK
orm ozenom dodos de ~
vc rtes lobe/os do tobelo 1000 01 ITEMl DATA
PK 1000 02 ITEM2DATA
bcseocos nos compos
de chove prim6rio que 1000 Header Data 2000 01 ITEM 1DATA ICUKY_NEW [71 CUKY 15
e/os fern em comum. 2000
3000
Hec er Data
Header Dolo
2
2000 03
ITEM20ATA
ITEM30ATA I VALUE..NEW 171 CHAR J2i4
0. c/adm0P'l"'''''''
no R{.!"""", so 3000
, 01 ITEM 1DATA I [II J2i4

.:
VALUE_OLD CHAR
,",I~ .... . ", .".. '- J
IObolo, .. ~,.do,.
j
I I

~~~,. - - --- - --~ - - - -- - - - -- ---- -- -- -~--- --_ . _----- - -- Tabla Cluster CDClS
O, do<Io> ..,.I o Change document header
I ~ -'- ~
0"""'.""'" o Variable lenght row....... r .... Fieldname.

:-:::~~ --~~ I
M"
1000 Order Heoder Dote 0 1 ITEM 1DATA 02 ITEM20ATA
2000 Order Heeeer Dote 0 1 ITEM10ATA 02 fTEM20ATA MANDANT
clII1lor: ~ 03
3000 Order Header Data 0 1 ITEM10ATA IOBJECTCLAS

IOBJECTlO

Per exemplo, como mostrado na Figura 3.4, os quatro primeiros campos ICHANGENR

de chave primaria em cdhdr e cdpos sao identicos. Eles rornam-se a chave IPAGENO
primaria para 9 cluster de tabelas com a adiliaOde urn cam po pad rao de sistema ITI MESTMP
pageno para assegurar que cada linha e(mica. IPAGElG
Como outro exemp lo, suponha qu e os dados de cabecalho d o pedido e IVARDATA
as tabelas de itens do pedido sejam sempre nece ssaries ao mesmo tempo e
ambos tenham uma chave primdria que cornelia com 0 mimerc do pedido.
Tanto 0 cabecalho como os itens poderiam ser armazenados em uma (mica
Restric;6e s no s tob.elo.s...de..p.ool e de cluste r
tabela de clus ter porque 0 primeiro campo de su as chaves prim arias e a m esm o.
Quando implementado como urn cluster, se uma linha de cabecalho for lid a, As tabelas de pool e de cluster sao n orm alm ente u tilizadas somente pela SAP
todas as linhas de item para de tambem serao lidas p orgue rodas elas sao e njio utilizadas p or clien tes, pr ovav elrnente p a r caus a do format o proprietario
armazenadas em uma unica linha no clust er de tabe1as. Se urn uni cc item for dessas tabe las den rro do banco de dado s e p or causa das resrricoes tecni cas
lido, a cabecalho e rodos os irens tam bern serac lid os, porque eles sao ar- colocadas scbre su a utilizacao dentro de progra mas ABAP/4. Em um a tabe la
mazenados em uma (mica Iinha. de pool au de clus-ter:

,i
I
~~J
••• -.v v •• v.v • w ••• w. w
-- w.tW. w:ww _ _ • _ 'W ' & _
-~- -
DlA 3:0 OATA OIITIONARY, PARTE1 103
102 " m DA EM 21 DlAS AWl'

F igura 3 5 HI
0"
• Os indic es secundarios Da D podem ser criad os.
As lobe /os 560
• Voce: DaD pede utilizar as estrururas (constructs) do ABA P/4 sel ect co mposlos de
dt sti net ou grou p by.
com pos, que 560
compostos de I Compo
I" Eo cc mcostc de um
• V oce DaD pede ut ilizar SQ L nativo. elementos de dodos,
que pa r suo vaz 560 " co ntem r6tulos de com po
• Voce nac pode especifi car no mes de campo depois cia cldus ula or der compostos de Elemento de dod os
e docum entocc o o nline {ejude Fl)
by. A unica variacao permitida e orde r by pr i mary key. dom inios. ,
-, preci ~e de urn
, des creve ccrcct ertsuccs
a usa de tobelcs de poo l e de cluster pode impedir que suo empreso tecnkc s. (p. ex.,

(Cuicfudo utilize plenomente a s fe rromentos de relat6 rios indep end entes se eic s
Do mlnio lipo e com primen!o
dos do dos)

'~
leem tabelas diretom ent e do bonco de dodo s, porque a s ta belos de
poo l e de closter-tern urn fo rmato prop riet6 rio do SAP. Se suo emp reso
q uer utilizer ferrome ntos indepe nde ntes desse ttpo, voce pe de querer F jgurg 3 6
buseor olternotlvos an les de crier tobelas de po ol au de du ster. Compos de Cu stom e r Tobie Ele me nto s d e do dos Domfn io :
Um exemplo de
praiela utilizondo
tobelos, ele mentos
~
Par causa dessas restricoes nas tabel as de pool e de cluster e par causa de de dodos e dom lnios. Zphonew
sua utilidade limitada, este livre concen tra-se na criacao e u tilizacao de tabel as
ROtu\o: numern comerci ol
transparentes. A criacao de tabelas de pool e de cluster na o e abordada .
phonew Zpho nel Zphon.
loxlipo: cnor
Explorando co mponentes de tabeloL- _ phonef
phoneh R6tulo: lo~ comp.: 12
I'
Voce ja sabe a que as tabe las transparentes sao e as dif erencas entre tabel as
Zphoneh
transparentes, tabe las de pool e de cluster. Agora, voc e apr enderd as co mpo -
nentes que sao necessaries para criar tab elas. RO fulo: telelone r••idenciol

NOVO.... Umo tobelo e compostc de campos . Para crier um compo voce precise de um
ifRMO" e leme nto de dodos . 0 eleme nta de dodos conte m os rctvlcs de ccmpo e a Par a crier urn campo, voce normalmente inicia criando urn dom inic para
docwnentccoc online [tcmbern chcmcdc ojuda FJ) para a ca mpo. Ele e purome nte ele. N este caso, voce pode criar urn dominic generico de numero de telefone, I
descritivo; co ntem as ccrccterlst'ccs sem enticcs para 0 compo , tcm bem co nhecidas como chamado zphone e dar a ele urn tipo de dado de CHAR e urn comprimento de 12. !
"co ntexte do neg6do"' . Os rotulos que voce oferece dent ro de um ele mento de dod os
Isso seria u rn dominic generic o de numero de relefone : a maioria de s ripos de
seroo exlbidos no tela 00 lodo de um compo de entrada . 0 ele mento de dodos tcmbern
contem docomentccec que e exlbidc quando a vsuc ric pede c judc nesse compo
mime ros de t elefone poderia ser armazenada ut ilizando-se esse dominie.
pressionand o a tedo Fl . Como esse, ele pede ser ut ilizado para definir tipos especrficos de num eros de
telefone, co mo fax ou nu meros de tel efone residencial.
NOYO ~ Umo defini'ioo do eleme nte de dodos eXi ~ e um dom;nio (veia a Figura 3.5). 0 Dep ois de criar 0 do mfnio pa ra armazenar a descricao puramen te tecnica
HRMO" dam inio co ntem a coraderfstico tecnco de um ca mpo, como 0 co mprimenta de urn cam po, voce entac cria urn elemento de dados para armazenar a s
do compo e 0 tipo de dado. atr ibutos descritivos do campo . N o elem en to de clades, voce deve digitar 0
O s domtnios e as elemen tos de da do s sao reutiliz ave is . U rn domfnio no me de u rn domini c par a dar-Ihe a caracterfst ica tecnica . Entao, voce insere
po de s er utilizado em mais de urn elemento de dados , e u rn elemento de os r6tulos e a documentacto (ajuda F1 ) para d escr ever as dado s que voce
armazenara. N esse exemp lo, voce provavelm en ce criaria nes elem en tos de
dado s pode ser utilizado em mais de urn campo e em mais de uma tabela.
Par exemplo, imagine que voce ' precise pr ojetar um a tab ela de infor- dudes, urn pa ra cada numero de telef one resid encial, comercial e fax. Em cada
elemento de dad os, voce di gitaria ro rulos de campo descrevendo 0 tipo de
macoes de cliente chamada zcust que deve canter os nti meros de te lefo ne
numero de te lefone que voce arma zen ara co m ele e a ajuda Fl pa ra a usuario
ccmerc ial, fax e residencial (veja a Figura 3.6) .
final.

t
----• • w_ -• ----- • w _
- -~ ----- - -- --- - ..., ~

104 APiENOA EM 21 OIAI ABAP" OIuoomOlmOHARY,PARTE l 105

Te ndo criado a s elem entos de dados, voce agora p ode criar a tabela, Voc e Po r exemplo, im agine que voce deseja cria r uma nova tabe la que co nrem
p od eria criar treS camp os de ndmero de telefone na tab ela {residencial, comer- informaco es adicion ais de fabri cante. Quando voce p rojeta a tabela, voce deve
cial e fax) e arribuir 0 elemento de dados corresp ond ence a cada campo. U rn associar as fab rican te s em sua tabel a com esses na tab eia de SAP .
eleme nto de dados eat ribufd o a cada campo. 1 550 oferece informacoe s descri- Em sua tab ela, erie um a chave primdria con tendo 0 mimero de fab ricante.
tivas do campo do elemento de da dos e informacoes te cnicas do do minic a que Utilize 0 elemen to de dad os exist ente para cria r seu campo. As dua s rabe las
e1e faz referencia. Quando 0 campo e utilizado em uma tela, ele obtem urn estjo agora ch aveadas no campo de numerc de fabricante de SAP urilizandc
rotulo e a documentacao de ajuda Fl do elemen to de dad os e seu com primento os mesmos elem entos de dados e do mlnios. Se a SAP alterar 0 tipo de dad o ou
e ripo de dado formam 0 domini c deruro do elemeneo de dadcs . o comprim en to do seu camp ?, 0 seu mudara au to rnaticamente.
Em outre exemplo, voce pode pre cisar armazenar urn no m e da pes soa em
tres tab elas diferentes: tab elas de clientes, [abricantes e empregados. Na tabela Convencoes d e ctribuicco d e nome para tabe las
de clientes, voce q uer arm azenar urn nome de cliente: na tabe1a de fabricante e seus compon entes
urn nome de fabrican te e na tabela de empregado urn nome de empregado. Par
As tabelas, elementos de dados e dominies cria dos no site de cliente devem
isso, e uma boa ideia dar 0 mes mo rip e de dado e comprimento para todos as
campos de nome de pessoa: voce pod e criar urn unico domlnio generico de seguir convenc oes de atribuicjo de nome da SAP para objetos de cliente. E stes
nome d e p essoa , par exemplo zper sname. En rao voce pode criar urn eleme nto estao delineado s na T abela 3.1.
de dados para carla urilizacfo de neg6ci o de urn nom e da pessoa: p ara 0 n om e
Tabela 3.1 Convencoes de otribu i~50 de nome para tobe los, compos, ele me ntos
de clienr e, 0 nome de fabricanre e 0 nom e de emprega do . D entro de cada
de dod os e do minios criodo s pelo cli ente
elemento de dados voce referencia seu dominic zpersname pa ra da r a todos eles
a m esma caracterf srica. Voce en tao pode urilizar esses eleme ntos de dad os para Tipo de objeto Comprimento Prlmeiro eereete re
criar camp os denero de cada tab ela. max. d e nome permitido
Tobelo 10 s, z
Ma nte n d o as caracterfsticas tecnicos d os ca m pos clemente de dodos 10 v, z
Se voce precisa alterar 0 comprimen to do camp o depois qu e crio u uma tabela, Domlnio 10 r, z
voce apenas precisa altera-lo no dominio. Se 0 dominic e utilizado em mais de Compo 10 Quolquer ccrcctere
urna rabela, a alteracao eautom aticam ente propagada para todos os campos que
utilizam esse dominio. " T odos os nomes tern urn m aximo de 10 caracte res de comp rimenro.
P a r exem plo, se os an alist as de neg6cio solicicassem que voce aumentasse Os nomes de todas as tabelas, dominios e elem ent os de dados que voce
a comprimento de seu camp o de nome de pessoa de 12 para 15 caracreres, voce cria devem iniciar com 0 caractere y ou z, Voce nao p od e utiliz ar qualquer outro
alteraria 0 comprimento no dominic zpersname. Quando vo-ce ativar sua al- caractere no comeco; todos as outros sao reservado s peia SAP . 0 sistema RJ3
reracio, a s cornp rimentos de rodc s as campos de nom e 'baseados nesse imp oe essa convencio: voce obterd uma mensagem de errc se tentar criar u rn
do min ic (nas tabelas de clienre, de fabricanre e de empregado) tambem c bjeto que tern urn nome qu e na c se adapte a essas convencoes.
mudarao. Os n om es de campo podem comecar co m qual quer caractere. Entretanto,
cert as palavras sao reservad as e njio podem ser u tilizadas com o names de
Determ ina ndo quando criar ou reul ilizar domini os campo. A tabela de DDIC t rese cc ntem a lis ra completa das palavras re s er~
e elementos de dodos vadas. 0 conteudo de t re se pode ser exib ido utilizando 0 procedim en ro do
Cada sistema R/3 vern co m mais de 13.000 dom inios preexist entes criados pe1a Dia 2 na seiSao intitul ada "Exib indo os clados na tabela" .
SAP. Q uand o voce cria urn novO camp o, voce deve de cidir se cria urn no vo
domini o o u reutiliza urn existente. Para tomar essa clecisao, detennine se a tipo Criando uma tabela transparente e seus
au co mprimem o de dados de seu campo deve ser dependeme de urn campo .c.omp.onlJ;;elLnutJ;;:
e.:.s _
existente da SAP . Se seu camp o precisa ser in depen dent e, erie urn novo
Nas sec;6es a seguir, voce cria ra dominio s, elemen tos de dado s e, por fim, sua
dominio. Se seu camp o cleve ser depend ente, reuti lize urn domin io de SAP
existente. De forma similar, voc e deve reutilizar elem entos de dados se seus primeira tabela transpa ren te - ela sera um a versao escalada para baixo da
rotulos de campo e docu m en ta~a o alt erarem quando a SAP alterar os de1a. tabela-mestre de fabricante fornecida pela SAP iden tificada Hal.

-_.
e¥¥.w w __ ._~_~_

-- ...
01' " ODATA DICTIONARY,PART£1 107
106 ",," OA EM 21 OIAS ABAp/'

Na abo rdagem bottom-up, voce primeiro cria as domini os, dep ois os
Para as prcpcsitos deste livre, porto do pressupostc qu e a siste ma R/3
elemento s de dados e per fim a tabela.
j6 noo armoze na quoisq uer Informocoes-mestres do fob riconte . Ima g-
N a abo rdagem top-down, voce cria primeiro a tabela e depois cria os
ine que a tobe lo Hal noo existe, nem sevs elementos de dodos, nem
seus dominios. Portonto, nestes exerdcios nos as crlcremos. eleme nto s de dados e os dominies a medida qu e vo ce avanca.
A abordagem bottom-up emais intuitiva para 0 alun o iniciante, mas rapida-
mente to rna-se incomoda. A abordagem top-down e muito mais facil de utilizar
Para armazenar informacoes-mesrres do fabricante voce criara a tabela
depois de voce se familiarizar urn pouco com a pr ocesso de cria~ao de tabela. P a r
•• -1fal. Ela contera campos para urn mimero de fabricante, urn nome, urn
essas razoes, demonstrarei as duas tecnicas, iniciando co m bo ttom-up.
c6digo de regiso e urn ccdigc de pais. Os nomes de campo e as caracterfsricas
Q uando ler as secoes a seguir , voc e primeiro ap rendera sob re urn objeto
tecnicas que voce utilizara sao mostrados na Tabela 3.2. Urn x na coluna de PK _ como um do min ic - e encao criara urn. Os ob jetos qu e voce cria ra sao
indica campos que formam a chave primaria . (0 procedimento de instalacao
descriros na Tabe1a 3.2.
criou uma tabela identificada zt xlfal em seu sistema R/3. Ele e muito seme-
lhante a tabela - - -Lfal . Utilize-a como uma referencia enquanto Ie esse

~o
capftulo.) Lernbre-se, quand o crier qua lque r dos objetos neste livro, utilize seu
hand le (•• -j como os primeiros tres cc rocteres do nome de c bjeto.
Tabela 3.2 Os compos e suos coroeteristicos para a tabela - - -Ha l [Os corocte res ••• represe ntam seu hand le. 0 handle foi desc rlto no
Ca pitulo 2, no secco intituloda "Introdu zindo convencces de otrtbuke c
Nome PK Nome Nome Tipo de nome de progroma".)
de ca mpo de DE de OM de dado Comprimen10 Nee utilizeat x como os primeiros tres ccrc cteres. Se voce utilizer ztx,
mandt sera muito difidl dete rminar quais 5 6 0 as se us cbjetcs.
mandt
1ifnr x • • - 1 i fnr " · lifnr CHAR 10
namel -- - namel • - -name CHAR 35 Atjyo<;oo de objetos ODIC
regio • •• regi 0 • • - reg i 0 CHAR 3
1andl • ··landl • ·-land! CHAR 3 Antes de oprender sabre objetos ODIC profunda me nte, voce deve sober sobre
MOVO ...
T,ijlO ,. otlvoceo de cbjetc. A otivccco cplico-se a todos a s cbjetos de dicion6 rio.

Esses names de campo e suas carac terlsticas tecnicas sao beseadcs em Depois de criar urn objero Data Dictionary, vo ce 0 ativara. Ativar urn
campos reais da tabela Hal. o bjeto e simples _ voce simp lesmente deve pres sio nar 0 botao Active. 1550
alrera 0 statu s do obj eto para ativo .
Urn objeto deve est ar ativo antes de pcder ser ud lizado. Por exernpl o, se
N60 altere as na mes mostrodos oclmo. Os exerclclcs mois adian te tent ar utilizar urn e1emento de dados inativo 01.0 criar urn campo, voc e obtera
neste livre contcrn com esses names de compo como mostrodo. Se uma mensagem dizendo qu e 0 elemento de dados na o exisce nem esra ativo.
voce n60 utiliza esses names exctcs, as exerclclos sobseoueroe s nco Sua respos ta seria ativar 0 elemento de dados.
podem funcionar. Se voc e altera urn o bjeto, deve ariva-lo n ovamente para as alreracoes
to rnare m -se efetivas. Se voce salvar as alteracoes mas n jio ativar 0 objero, os
Como essa tabela contem cladas de aplicativo, ela dev e ser dependenc e do o bjeros que se re ferem a ele nao "saberao" da altera~ao.
cliente. Portanto, 0 primeiro campo deve ser mandt. (C a nsult e 0 Capitulo 1 se
voce precisar revisar as tabelas dependentes de cliente.) De sco brind o dominios
Ant es de realrnente criar urn domlnio, descreverei a tela que voce ut iliz ara para
Ab..~pa ra cria r tobelas cris-lo .
Hi duas abordagens que voce pode utilizar quan do criar tabelas: Na Fi gura 3.7 esta a tela que voce utilizara para eriar urn dominio - a
tela Dict io nary: Maintain Domain. Nessa tela, voce especifica 0 texto curtO, 0
• bottom-up
tipo de dado, urn comprimento de camp o e opcionalmente urn comprimento
• top-down de saida. Estes iteus sao explicados naS se~6es segu intes.
~- TT w Wo w
o_ W • W Yo W Woo W w. W W WWW.WWWi
---
~ ~ ~ --- -
--
- --- - -
--------- - _ --..- -- --- -=- ""="'" ~,

108 ' ' ' EN D' EM 21 DIAl ,SAP/. DIU D"T' DiCTlONARY, PARm 109

f.i.g..u.r.a 3 7 Tabela 3.3 Tipos de dados comumente uflllzodos


A tela DidionOlY:
Maintain Doma in e Tipo Descr isa o
uti/Jzoda pora error
um domfnic. CHAR Strings de cc roctere (maximo de 255 ccroctere s]
DEC Vclores decimais (cornprtmento maximo de 31)
OATS Compo Dote
TIMS Compo Time
INTI, INT1 , INT4 Volores inteiros
NUMC Compo de coroctere que pa de canter epenes nurnencos

Voce cleve sempre pressionor a tecla Ente r depo is de preencher a


compo tipo de dodos. Pressionor Enter ceuso a cltercc oo do tela
bcsecdc no tipo de dodo que voce especificou. Se 0 tipo de dodo e
urn tipo numertco com sinal, uma coixo de seleceo Sign opcrecero.
Para compos que permilem decimais , urn campo Decimal Places
oporecerc . Pere campos de coroctere, uma ccixo de selece o Lowercase
Letters c pcrecero .

o campo Sho rt Text Os campos O utput Le ngth, Decimal Places e Lowercase


o campo Shor t Text contera uma descrlcac do dominic. 0 us uario final nunea
a ve j ela e exibida apenas par a os desenvo lvedores . Voce a vera quando abrir Letters
uma lista de do minies , com o em uma pesquisa. o campo Output Len gth indica 0 ntimero de bytes necessa rie s para dar saida
N esse campo , voce des crevera as tipcs de dados que voce quer que 0 ao campo para uma Iista ou para u ma tela, incluindo virgulas , p on to decimal,
dominic cont enha. Por exempl o, a descr icao de u rn domin ic de numero de sinal e quaisquer outros caracteres de for matacao. Por exemplo, na saida, os
telefone reutilizavel pode ler "Nemero de telefone generico" ou "Ncrnero de campos de data e de hora sao automaticamenre formatados com separadores.
telefo ne geral". Internamente, uma data earmazenada como oiro caracteres (sem pre YYYYMMDD),
mas a comprim ento de saida no dominic deve ser especificado como 10 para
permitir que dais separadorcs sejam ins eridos. Se 0 campo Output Length
Adicionor a pclc vrc "dcrnlnic" no finol do descrtce c de texto curto e estiver em branco, seu valor automaticamente sera calculado pelo sistema
red undonte e deve ser evltc do. Por exemplo, 0 texto curto "Ncmero de quando voce pressionar Enter.
telefone de dominic qenericc" devero ser evttodc. Em vet dtssc, digite Para campos decimais, voce pode especificar 0 nume ro de decimais
"Ncme rc de telefon e gene rico". cclocado no campo D ecimal Places.
Os campos de caractere sao normalmente convertidos em letras maius-
o campo Da ta Type culas antes de serem armazenado s no banco de dados. Voce pode desativar essa
o campo D ata Typ e especifica a repres entacao utilizada internamenre pelo conversao desmarcando a caixa de selecao Lowercase Letter s.
banco de clados par a arma zenar 0 valor desse campo. Para alguns ripos de dados, A maioria dos desenvo lvedores nao tern problemas em entender a repre-
e1e tambem dete rmin aa validacfc de formato de entrada e formate de saida do sentacio interna de caract ere ou campos im eiros. En tretanto, a pos icjic do
camp o. Po r exemplo, campos do tipo de dado OATS (data) e TlMS (hora) sao ponto decimal nos campos decim ais efrequentemente urn campo de confus6es,
automaticamente fo rmatados com separadores em uma de saida de lista ou por isso descrevemos esse assumo aqui.
quando sao exibidos na tela. Na entrada, e1 es rambern devem estar no formato Para campos de tipo DEC, 0 ponto decimal nao earmaze n ado no banco de
de data ou he ra ou um a mensagem de erro e emitida para 0 usu ario. dados. Sornente a parte numerica e armazenada; nao 0 decimal. Na saida, a
Os tipos de dados mais comumente utilizados sao iistados na Tabela 3.3. posicao do decimal edeterminada pelo valor que voce colocano camp o Decimal
Places do dominic.
·_,~~t2}~' 01.&. 3: 0 DATA OlalONARY, PARTE 1 111
~.~ll<~ O . APREND A E"~lf;:~:B~:~4 0 campo seja adequadamente exibido, voce deve especificar Problema Possivei s sint omas SolUliCO
urn comprimento de saida que in c1ua urn byte para 0 ponto decimal e outro Nee posso criar Qu and o voce pressiona 0 botco Olhe no barro de status no porte
para cada separador de milhar que pos sa ser exibido. Entretanto, 0 sistema o dominio Creole, nodo ocontece . inferior do janelo e pressione 0
calcu lara 0 comp rim ento de saida se voce simplesmente deixar em branco 0 balao novomente. Epr cvc vel
campo O utput Length e pressionar En ter. . que voce vera umo mensogem
cl. I,
Q uand o pressiana a ba tao Altere a name de dominio :~
Cria ndo um do minio
Creole, voce ve a me nsagem pa ra y au z.
Nesta seciio, voce aprendera a abo rdag em bottom-up para criar urn dominic .
"Syste m change o ption
do e s not allow cha nge s to SAP
S(mNCAM~ Inid e a ScreenCom "How to Crea te 0 Domain" ogoro . o bjects".
Q ua ndo pressiono 0 batao Altere 0 name de domrnlo
Execute esse pr ocedimento duas vezes para erial' os dominies •• '1; fnr Cre ate , voce ve a me nsa ge m pora inicior co m y a u z.
" Enter occess key".
e • • • namel. A ajuda com problemas comuns e dada no diagn6stico e solucao
Q uan do presslonc a bctoc Soltcito outcrizoccc de
de problemas que se segue. Se voce river problemas ern alguns des passos, nao
Create, voc~ ve a mensoge m de senvolvimento do sev
se esquec;a de consulter 0 . diagn6stico e solucac de problemas. " You are not authorized to moke odm inistrodor de seguron<;a
cha nges".
1. Comece na tela D ictionary : Initial Screen . (P ara chegar la a partir d o
menu principal SAP, escolha 0 caminho de menu Tools->ABAP/4
Q uonda pressiono a botcc o nome que voce digitou j6
Creole, vo ce ve a mens agem existe no Data Did iona ry.
Workbench, Development-> ABAP/4 Dictionary.) "a lrea dy exists". Escalho urn nome de domfnio
2. Digire 0 nome de domin io no campo O bject N ame. diferente.
·3. Escolha 0 batao de 0PliaODomains. O btendo "W: {calculate d output length is Deixe em bronco a ca mpo
mensa gem sma ller tha n specified)." Output Length e pressio ne
4. Pression e 0 batao Create. Voc e entac ve a tela Dictionary: Maintain Enter e depois Activate,
Domain. as campos contendo pontos de in terrogacao sao campos
"E: Value table doe s not exist." Delxe em bronco a ca mpo
obrigatorios. Vclve Table, presslone Ente r e
5. Digite uma descric ao do dominio no campo Short Tex t. depois Activate.
6, Preencha no campo Data T yp e. Voce p ode colocar 0 cursor nesse
campo e pressionar a seta para baixo a fim de exibir uma lists de tipos .Obtendo dccumentocco de SAP nos dom inios
de dados permitidos . Selecione urn ripe cialista ou digire urn. H i muitos lugares para obter documentacao de SAP sobre as recursos de s
7. Digi te urn comprimento de campo. domfnios.
Se voce deseja ver a do cumentacao que descreve todos os ripo s de dados
8. Pressione 0 botco Active na barra de [erramenras Application par a co
e suas u tilizacces, coloque a cursor no campo Data T yp e e pressione Fl . Voce
mesmo tempo salver e ativar 0 domfn io. A tela Create Object Catalog
vera uma caixa de dialogo cam en do campos destacados. De urn clique nesses
Entry e exibida .
camp os destacados para mais detalhes.
9. Pressione 0 botao Local O bject. Vo ce e levado de volt a a tela D ic- Vo ce pode tambem consultar a ajuda da biblioteca do R/3 para encon rrar
tionary: Maintain D omain , docu me nt acao adicional sobre tipos de dados e outras proprie dades do
10. Pressione 0 botao Back na barra de ferramen ras Stan dard. 1550 0 leva dom fnio, Para visualizar essa documenracao, a partir de qualquer tel a escolha
de volta para onde voce comecou nes se procedi mento, a tela o caminho de menu Help->R/3 Library. Voce vera o menu principal da
Dictionary: Initial. biblio reca do R/3 , A partir daf de urn clique nas seguintes guias: Basis Com-
ponen ts- > ABAP/ 4 De velopment Workbench- > ABAP/4 Di ctiona ry- > New
D evelopments In The ABAP/ 4 Dic tionary In Release 3.0.
Para ainda m ais documentacdo sabre tip os de dcdos no dominic, de
dent ro do do minic escolha 0 caminho de me n u Help-> Extended help . Entao
112 t...==:...:::..:::...:.:.::.:..::.:::.:.:..:...
APREHDA EM 71 OIAS AB AP/4 j- ~==~~'_'_
0143:0 DATA DIOlONAR'f, PARTE 1 113

de urn clique em C reat ing D omains e depois de urn clique em External Data Os ca mpos Field Label e Header
Type. A parte inferior da tela rnostrada na F igura 3.8 conrem quatTO campos de texto.
Para obeer doc urne ntacao que descreve 0 mapeamento de tipos de dados as prime iros eres sao rctulos de campo. Quando qualquer camp o aparece em
de d ominic par a cipos de dad os do AB AP/4. exiba a ajuda Fl para a palavra- uma te la (como u rn campo de entrada em uma tela de entrada), urn dos campos
chave "tables" . (Par a fazer isso, dent ro do editor de ABA P/4, colo qu e 0 cursor cur tos, medias a u longos ap arece rao aesquerda del e como urn rotulo de campo.
napalavra t abl es epressioneFl.) o programador escol he urn des ses r6tul os de campo quando ele cria uma tela.
o conreudo do cam po H eader aparecera como urn cabecalho de coluna no
Descchrindc elementos de dodos tapa das listas,
Antes de realmente criar urn elernento de dados , descreverei a tela que voce Se os campos que voce cria com esse elernentc de dado s nao aparecerem
utiliza ra para crif-lo. em quaisquer telas , desative a caixa de selecso Ma int ain Field Labels e pressione
A Figura 3.8 mos tra a tela utilizada para criar um elem ento de dad os. Aqui a teela Enter. Voce nao veri mais os campos Fie ld Lab el e Header. Voce tera
voce esp ecifica 0 texto curto, no me de dominic, r6tulos e urn cabecalho, que de pre ssionar Enter duas vezes para [aze r a s campos desaparecerem se esses
sao explicad os nas selioes seguintes. A documentacfc tambem pode ser criada camp os contiverem valores.
depois que 0 elemento de dad os foi salvo.
A documentccdo de elementa de dodos
F i g ur a 3 8 Depois que voc e salve 0 eleme nto de dados, urn bouo Docum entatio n aparece
A lela Dictionary: na barra de ferramentas Application, de modo que voce possa armaze n ar te xto
Chonge Dolo na forma livre. 0 usu drio ve esse texto quando solicita ajud a Flo E m outras
Element,
palavras , quando urn campo de tabela que utiliza ess e elemen tc de dados e
exibidc em uma tela) 0 usuario pode colocar 0 cursor ness e campo e pressionar
FI para exibir a documentacao que voce digi tou aqui .
Quando voce ve a tela Documentation, a primeira linh a con ted as
caracteres &DEFINITION&. Isso e urn titulo; nao alte re essa liaha. Digite sua I
I
documentacio comecando na linha da is.

A docornen tcceo de elemento de dodos e frequ entemente muilo util


para 0progro mad or. l endo esse elu de Fl , 0 progro mod o r pode •
determiner 0 utilizo<;oo de neg6cio dos dodos, Pcrtc ntc, voce sem pre
deve crior o juda Fl para 0 usu6 rio otraves do batao Docume ntatio n.
l
t
/
Crianda um elemento de dodos
N esta seCjao, voce aprendera a abordagem bottom-up para criar urn elemento
de dados.
o cam po Shari Text
o campo Short Text descreve urn co ntexte de neg6cio para urn dominic. Po r
exemplo, urn "n ume rc de tel efon e de cliente" e urn contexte de neg6cio
S(RHNCAM~ Inicie a Screen Co m "How to Creote a Data Element" ogo ra .
I
especifico para urn dominic "n um ero de te lefone gener ico" , en rjio ele seria uma
descric ao apropriada para urn elemenro de clades. 0 usuario fin al vera essa
descrica c se solicitar ajuda Fl para urn campo que foi criado ur ilizan do esse
elemento de dados .
"
Exec~t e esse prc cedi mento du as vezes para criar os elementos de dados
. , i fn r e " ' namel. A ajuda corn proble mas comuns edada no diagnosrico
e solucjo de problemas qu e se segue. Se voce tiver problemas com qualquer u rn
dos passes, nao se esqueca de consultar a Sclucac de pr oble mas.
I
I
;
114 AP ' EN DA EM " DiAl " ,P/4 DlA3, ODATAOlCTIOHARY,PARTE 1 I 115

1. Comece na Di ctionary: Initial Screen. (Para chegar ai a partir do menu 14. Pressione 0 botao Back. Voce e levado de volta aDictionary : Initial
principal SAP, siga 0 caminho de menu Tools->ABAP/4 Work- Screen.
bench, Developmen t-> ABAP/ 4 Dictionary.)
2. Digite 0 nome de elernentc de dados no campo Object Name.
Problema Possive is SoluCjoo
3. Escolha 0 borso de op~ao Data Elements. stntem es
4. Pressione 0 bo-se Create. A tela Dictionary: Change Data Element Nsc posso Q uando voce pressiono a botcc 0 1he no borra de stotus no
aparece. crier elementos Crecte, nade acontece. parte inferior do jonelo e
5. Digite rexto curto para 0 elemento de dados. de dodos ~ressi on e 0 botco nova mente.
E prov cvel que voce vejc umo
6. Digire urn nome de dominic e pressione a tecla Enter. Se 0 dominic mensag em.
existe e ests ativo, seu tipo de dado e comprimento aparecerao. Se
Quando pressiono 0 botoo Altere 0 nome do elemento de
voce nao vir urn tipo de dados e comprimento depois de pressionar Create, voce ve 0 mensagem dod os pa ra inicior com y ou z.
Enter, verifique 0 nome de Data Element. Se a nome estiver correto, "System change option does
verifique se esta ativo abrindo urna nova sessao (utilize 0 caminho de not a llow changes to SAPobjects".
menu System- >C reate Session) e exibindo-o no Data D ictionary. Quando presslono 0 botcc Altere 0 nome do elemento de
7. Insi ra rotu los de campo nos campos Field Label Shorr , Medium, Long Create, voce ve a me nsoge m da dos per c inicior com y ou z .
e Header. a valor no campo Short deve ter no maximo 10 caracreres, "Enter access key".
o Medium deve ter no maximo 15 e Long deve t er no maximo 20. 0 Quando pressiona 0 botoo Soliclte a autori zOl:;oo de
Create, voce ve a mensa gem desenvolvtmento do seu
valor no campo H eader deve ter 0 mesmo comprimento ou ser menor
"You o re not authorized to make od minislrodor de sequronco.
que a comp rimento de saida no dominic . changes" .
8. Pressione a bono Save na barra de [erramentas Standard. A tela Quando pressio no 0 batao o no me q ue voce inseriu i6
C reate Object Catalog Ent ry e exibida. Cre ate, voce ve a mensogem existe no Dota Dictiona ry.
9. Pressione 0 botao Local O bject. Voce e levado de volta a tela Dic- "'olreodyexists". Escotho um nome de dominio
difere nte.
tio nary: Change Data Element . as campos Status con tern os valores
Nne posso Aporece a mensog em "No act ive V6 a te la Dictionary: Change
New e Saved e a mensagem "Saved without check" aparece na parte
otivcr elementos domoin exists with nome". Dolo Eleme nt e de um clique
inferior de janela na barra de status. a bccso Documentation (entre de dados duplo no nome de domlnio.
outros) aparece na barra de ferramentas App lication.
o nome de dominio que voce Voce enteo vera uma coixo de
10. Pressione 0 borso Documentation. A tela Change Data Element: d igitou no lela an terior n60 exlste di610go o u a tela Dictionary:
Language E e exibida. Aqui voce pede digitar a documentacio de ou ':l0oestc ctlvo. Display Domain.
usuario final. Essa documentaci o e exibida quando 0 usuario solicita Se voce vir a ccixc de di610go
ajuda F1 para os campos criados utilizando esse elemento de dados. com 0 iftulo Create Domain, 0
A primeira linha contem os caracreres &DEFI NITION&. Isso eurn titulo; dom inic nee existe. Verlfique 0

I
no me cuidadosamente. Voce
nao altere essa linha. D igire sua documentacao comecando na Iinha
inseriu 0 nome e rrado ? Pode
dois. Pressione a tecla Enter para comecar cada novo paragrafo . ser uma boa ldelc obrir uma
11. Pr essione 0 borao Save Active na barra de [erramentas Application novo sesscc e exibir as objetos I
\
para salvar seu texto. A mensagem «Document was saved in active que voce criou usando Object
Browser. (No Die 2, vejc 0
status" aparece na barra de status .
se~o o "Locolizondo sevs
12. Pressio ne 0 botso Back na barra de ferramentas Standard. Voce e
levado de volta atela Dictionary: Cha nge Data Element.
13. Pressione 0 bordo Active na barra de ferramentas Application. a
valor no campo Status altera-se para Act . e a mensagem "was
o bjetcs de desenvolvimento".)

I
I

activated" aparece na barra de status.


I
~,J
!£! &
- - -
116 APRE NDA EM 21 DIAS ABAP /4
DlA 3:0DATA ormoNARY, PARTE 1 ) 117

Fig u r a 3 9
Problema Possiveis Soluljao
A tela Dictiona ry:
sintomas Toble/ Structure: .~ : iFol. :,,1 ~"' nild. 'f\;i.': ;j".·~:~,~. ·. ;/,->:;,···~:'·;>c .,.: .; ;.;>.,;
Se, de pais de da r urn clique Chonge Fie lds cnvc
";;.~~ ~}';' ~~f~ TYIn1 ~':'':T;ln~p;;;:~~i:'' t~81~''' ~. ''''''}'''::':''~;:' ''''; :-~<~~''::'';{~.:c' ./_
duplo , voce vir a tela fexto curta, otribu los

"I~~~~~1t;~'jf·
e nam es de compo 0
Dicti on ary: Display Domain,
serem inse ridos.
clh e no ca mpo Status nesso
tela. New e urn status? Se for,
a dominic precise ser ativodo.
Pressione 0 batao Activate e Fwi'n~ j(.~ UtI .1.~. ·TYi'f l.ng~h cb.~kI~bl. -Sh or t. ~.~.~~ _, .• ,<, :: ~~:, .. . " ' ."':"- ;t. , ~ , .
entoo pressione 0 botoo Bock .. s:::'.'
para retarnor 0 0 eleme nto de
dodos e tente ctlvo-lo
novomente.

Obtendo "Mainta in field lobel." Insiro a s rctclos de campo


mensa ge ns sho rt, me d ium , lon g e depois
olive.
IIW: Length was inc rea sed to th e o texto de cc becolhc que
adual text lenqth." voce digitou era mais long o
que a comprime nto do compo .
e
Esse n60 urn"erro serlo. Para
contcmd-lc, simplesme nte
pressione Enter e de pais al ive. Par a uma listc co mplete de vclores v61idos e seus significa do s, cclcque
o cursor no ca mpo Delive ry Closs e cresslcne Fl .
Ne e posse Compos de entrodo estoo Alive a co ixe de seleceo
digifor r6fulos perdidos no tela . Mainta in Field Labels e
de compo . pression e Enter. Ocampo Tab.Maint.Allowed
Marcar a caixa de selecso Tab.Maim.Allowed faz com que 0 caminho de menu
U tilities-> C reate Entries seja ativado. Depois de arivar a tabela e esco lher esse
Descobrindo tob e los transparentes caminho de menu, a tela Table Insert e exibida, permitindo que vo ce digite
A Figura 3.9 mostra a tela utili zada para criar uma tabela transparente. Aqui dado s em sua tabela. Eutil para tes te e en trada manual de quantidades pe quenas
voce especifica a texto curto, a classe de remessa, os nomes de campo, urn nome de dados. Se a caixa de s ele~ao T ab.Maine.Allowed estiver em br anco, 0
de elemento de clados para cada campo e seleciona as campos de chave primaria. caminho de menu U tilitie s- >Create Entries esta ra acinzentado.
As secoes a seguir explicam esses itens em mais detalhe.
A coluna Field Name
o ca mpo Short Text N a metade inferior da tela voce pode inserir nomes de camp o na colun a Field
o campo Short Text e utilizado para os mesmos pro p6sitos que os campo s Name. Os camp os de chave pr im aria devem aparecer primeiro nesra lista e
Short Text de dominic. 0 usuari o final mo vera essa descricao em qualquer devem ser in dicados por um a marc a de verificaclo na coluna Key. Urn nome
lugar, mas 0 desenvolvedor veri quando trazer a to na um a lista de tabelas . de elemento de dad o'S d eve ser ins erido adireita de cada nome de campo. Depo is
de preencher no s nom es de campo, pression e 0 botao Next page na bar ra de
o campo Delivery Class ferramentas Standard se voce quiser inserir campos adicionais.
o valor no campo Delivery Class identifi es 0 "proprietario" dos dados nesta
tabela. 0 proprietario e responsavel pela manutencao do con teudo cia tabela. Cria ndo umc tabela transparente usa ndo dom inios
Nas tabelas de cliente, voce deve sempre inserir urn A aqui , que indica que a preexistentes e elementos de dados
tabela cont em dados de aplicativo po ssuldo s apenas pelo cliente . Ou tro s Nes ta s e ~ao, voce aprendera a abordagem bottom-up para erial' uma tabela
valores inseridos no campo sao cre is somente para a SAP e ind icam que ele transparente.
possui os dados ou a SAP e 0 clienre em con jun to pos su em os dados.
=== • • • • • • • • • • • ==.--=====-- -- "
DIA 3: 0 DATADICTIONARY, PARTE1 119
118 I APRE!fDA EM 21 DIAS ABAP /~

.... Inide a Screent.crn "Hew to Create a Tra nspa re nt Table Using Preexisting Se voce agora estiver olhando 0 elem en to de dados, observe 0 valor
SCREENCAM,. Domains and DOlO Eleme nts" a gora. no cam po Status. a campo Status deve co nter Act . para indicae que
est a ativo . Se na o esti ver, pr essione 0 bo tao Active e verifiqu e se 0
Execute esse procedimento pa ra criar a tabela " 'Hal. N esse procedi- status esca agora Act . (Se e1e nao fun cionar, arive 0 Diagno stico e
mento, criaremos a tabele, mas apenas incluirem os os primeiros tres campos solccao de problemas associado com 0 proc edim ento para criar ele-
(menot, " '1 i fnr e ," name l ) nele. Mais tarde, adicio narem os os camp os m en to s de dados.) U ma vez que 0 elemento de dados for ativado,
restantes u tilizandc a abordagem to p-down.
A ' ajuda com problemas comuns e dada no Diagno sti co e solccso de
°
press io ne bor do Back para retomar a tela D ictionary : Table/ St ruc-
tu re : Change Fi elds.
pr obl emas que se segue a esse procedimento. Se voce tiver p roblem as com
13. Repita os passo s 8 a 12 para cada urn dos campos restantes na tabela
quaisquer urn dos passos, nao se esqueca de consulta-l o.
,(' - -1; fnr e _ • • neme f) ,
1. Comece na Dictionary: Ini tial Screen (para cheg ar af a par ti r do menu 14. Pressione 0 bono Save na barra de fer ra men tas Standard. Vo ce entao
principal SAP, utilize 0 caminho de men u T ools-> ABAP/4 Wo rk- vera a tela C reate Object C atalo g Ent ry .
bench, D evelopment- > ABAP/ 4 Dictionary). 15. Pressione 0 b atao Local O b ject. Voce entao e ret ornado a tela !iI,
2. Digice 0 nome de tabela • • 'Hal no camp o O b ject Name. D ictionary : Table/S truc ture: Change F ields . 'I
"
3. Escolha 0 batao de 0Pl1ao Table s. 16. Pressione 0 bot ao T echni cal Settings na barra de [erramenras Appli- Il
I;
4. Press ione 0 bots o Create (pushbutton) . V oce vera atela Dictionary: cation. A tela ABAP/4 D icti onary: Maintain Technical Sett in gs e
Table/Structure: Change F ields. exibida. Ii
5. Digite 0 texto curto para descrever a tab ela. 17. No camp o Data C lass) digite APPl O (APPlO com urn zero, nao com a I,
6. Digite urn An o campo Delivery C lass. letra 0 ). I
7~ Faca uma marca de verificacao na caixa de selecao T ab .M aint.Al - 18. Digite 0 (z ero) no campo Size C at ego ry. L
lowed. 1'9. P res sione 0 bono Save. i!
i
8. Na coluna Field Name, di gite 0 no me do primeiro campo cia tabela. 20. Pressione 0 botao Back. Voce e levado de volta a tela Dic tio nary :
9. Falia uma marca de ver ificacao na coluna Key se ela faz parte da chave Ta ble/ Stru ctu re: Change Fields.
primaria. 2 1. Pressione 0 botao Active na barra de ferrame n tas Applicatio n. Se a
10. D igite a nome de urn elem ento de dados na coluna Data Elem . ativ aliao for bem-sucedida, a mensagem "was acti vated" apare cer a na
11. Pression e a tecla En ter. barra de Statu s e 0 campo Status tera 0 valor Act .
12. Olhe na berra de Status. Se voce vir a mensagem "Data element is not 22. Pr ession e 0 bo tao Back para re tornar a D icti on ary: Initial Scree n .
active", 0 elemento de dados nao existe ou foi ativado. Estas sao as
pos sfveis raz6es por que voce pode ver essa mensagem:
Pro ble ma Possivei s Sol ufjao
• Ele nao foi criado. sintomas
• Urn erro de ortografia ocorreu quando voce criou 0 elemento de Nco posse Qu a ndo voce presslonc 0 batao O lhe no barra de status no
dados. crier a tobela Create, nada oco ntece. pa rte inferior do [c nelo e
pressione a botoc novomente.
• 0 nome de elementc de dados esti erra do na tela atual. Eprcvovel que voce veja uma
• a elemento de dados exist e e 0 nome esra escrieo corretamente, mensagem.
mas nao esta ativ o. Q ua ndo voce pressiono 0 batao Altere a n~me do tobelo poro
Create, voce ve a mensagem que passe a lnlclcr com y au z.
Verifique 0 nome cuidadosamente. Se a ortografia esciver correta, de urn
"Enter access key".
clique duplo sabre a nome. Se urn elemento de dados desse nom e nao
existir, voce vera uma caixa de dialogo intitulada Create Data Element.
Se a elemento de dados existir, 0 proprio elemento de dados sera exibido .
• • w.w • • --~~---~-~~~-~-~~---

120 "RENDA EM 21 DIAS ABAP/4


DIA 3,0DATA DICTION" Y, PARTEl 121

Solu~60 Problema Posslveis SoluCjoo


Problema Possiveis
sintomas sintomas

Quando presslo no 0 bata o Altere a nome do to bela par a Mensoge ns "E- Field (Data eleme nt or domai n Ve ja a linha "Nco poss e otivo r
Create, voce ve a me nsagem qu e posse a Inlci c r com y ou z. exibidos em is not act ive or does nat exist} ." a tobelc", cnterlcrrnente .
"Syste m change option does verme lho
not allow changes to SAP o bjects". "E- Entry in ta ble TAO RA missing. " Procure mais e mboixo umo
Quanda press iona a batao Solicite a outcrlzocec de men sagem (em vermelho)
Create, voce ve c me nsoge m de senvolvimentc de se u scbre 0 Data Closs au a
"You are not au thorized to ma ke administrador de seq uronco. categorio Size.
changes". "E· Error in co de ge neratio n for Proc ure odio nte umo
Quando pressio na a ba tao o nome que voce digito u ia creating ta ble in the DB" mensogem (em vermelhoJ
exlste no Da ta Dictionary . "E- Ta ble (Sta teme nts coul d not sa bre Data C loss ou cotegorio
Create, voce ve a mensag e m
Escolho um no me de dominic be ge ne rated)." Size.
"already exists".
diferente. Procure adiante uma
Volte pa ra a tela do tobela me nsogem (em ve rmelho)
Nco posso Aporece a me nso gem "E-Held
Dictionary: Ta ble/ Structure sobre Da ta Closs a u categor ia
c tlvor a tobelo (Data element or domai n is not
active or does not exist)". C han ge Fields . De um clique Size.
d uplo no no me do elementc "E- Field Size cat egory (Va lue Voce dig itou um va lor invalido
de dodos. Voce vera uma no t permitted)." no co mpo Size Category des
cclx o de di6logo ou a proprio confiqurocoes tecoicos .
ele mento de dodo s. Pres sione Back seguido de
Se voce vir uma co ixo de Technica l Settings e mude c
d i61ogo com 0 titulo Creote Size Category para 0 (zero).
Data Element, a elernento de "E- Field Data clcss (Volue not Voce digitou urn valor inv6!ido
dodos noo exlste. Verifique 0 perm itted}." no compo Size Category des
no me coidcdoscmente . Voce configurac;6es tecnlcos.
digito u 0 nome errado? Pode Presslone Back seg uido de
ser um o boa ideio abrir umo Technica l Settings e mude 0
nova sesseo e exibir os obietos Da ta C loss pora APPLD (use
qu e voce criou usando 0 um zero no fina l de APPL}.
Ob ject Browser . (No Dia 2, "E- Key is a lready de fined ; field Oe campos de chove prim6 rio
velo 0 seccc "locchzondc seus ca nnot be in the key." es e sao cdiccentes para co da
o bjete s de desenvolvimento".) um. Pressione Bock e
Se voce puder exibir a cerf ff ique-se que seus ca mpos
elem e nta de dodo s, examine a de cbove prim6ria esteo todos
co mpo Stat us. New e um corneccndc a parti r do tobe la
stat us? Se nco, 0 elemento de com nenhurnc tntervenc ec
do do s precise ser cttvcdo. nem compos choves. [Tados as
Presslone 0 botdo Activote e marcos de verificao;oo no
e nloe presslo ne a ba tao Back colune Keydevem este r juntos
para retornor a tabela . no comeco de to belo .)
Venda 0 tela O s ctrtbvtos tec nfco s fora m au
ABAP/4 nao lnseridos a u selves. Insira
Dictionary : entoc as otnbutcs tecnlcos,
Ma intai n pressionando a bctcc Save e
Technlccl par ftrn pressione Back.
Settings
DIA 3, 0OATAOICTIOHARY, PARTE1 J 123
122 " mOA EM21 DIA S A'AP/4

SCREEMC,I.M'" Inid e ? ScreenCom "Hew t~ Create a Transparent TobIe Without Preexisling


Possiveis Solu~ao ,. Dornotns and Data Elements ogoro .
Problema
sintomas
Voce mud au a tobelc e cqoro
1. Comece na D ictionary: Initial Screen (para chegar at a partir do menu
Vendo a cclxc A tobelc preciso ser convertido.
umo eonverseo de tobel o deve principal SAP, utilize 0 caminho de menu Tools->ABAP/ 4 Work-
de di6loga
ser feita para completer a bench, Development->ABAP/4 D ictionary ).
Adjust Table
ctlvccoc. Escolho um flpc de 2. Digite 0 nome de tabela •• - H al no campo Object Na me,
cam a texto
processa me nto Online e
Table must 3. Escolha a botao de op~ao Tab les.
pressione 0 botoc Adjust..
be adjusted
in the 4. Pressione 0 botao Change. Is50 0 leva a tela D ictionary: T able/ Stru c-
datab as e. ture: Change Fields.
Voce tentou remover um 5. Pr essione 0 botao New Fields. Linhas ern branco-aparecem na parte
Aa oparecer a
compo delxcndo-c em bronco.
mensogem no inferior ciatela e as campos existentes de tabela sao rolados para cima.
Nco se pa de fozer lsso: voce
porte inferior
do tela "Initial
deve excluir os cam pos usonda 6. Na coluna Fiel d Name, digire 0 nome do camp o que voce deseja
o bctcc Cut no borro de adicionar.
va lue not
ferromentos. Pressiooe Cut ate
permitted as
voce ver a mensogem
7. FalSa u ma marca de verificacao na coluna Key se ela e parte de chave
the field nome" primaria. (Os campos -- - regia e - - e Land l nao sao, mas esse pro-
"Selected entries were copied
ou: e impassivel
to the clipboard" no parte cedimentc e escrito gener icamente para que seja utilizado em si-
desloccr-se
interior do [cnelo no borro de tua'i0 es gerais.)
para cimo au
nco e pas sive! status.
8. Digite 0 nome dos elem entos de dados associa do s na coluna Data I'
ver os com pos
d igitodos
Elem. I,
Nee consiqo Uma mensog em ca mec;ando com Pressrooe a teda Enter para 9. Pressione a recla Enter. I

lr para outro
mensa ge m
os corccteres "W:" oporece no
borro de status e voce n60
responder a me nsogem. 10. O lhe na barra de status. Voce deve ver a mensagem "D ata element is
not active», porque 0 elemento de dados nac exist e. i
pode prosseg uir.
11. De urn clique duplo n o no me do elemento de dados . A caixa de f
dialo go C reate D ata Elem ent sed, exibida. No camp o Data Element I
Criendo urno tobelo transparente sem do minios estar a a nome do elem ent o de dados a ser criado. Este naturalmente
sera 0 eiem enro de dados que voce deseja criar , entao a menos que
I
preexistentes e e lementos de dodos
Nes ta se'iao voc e aprendera a adicion ar campos a um a tabela utilizando a esteja incorr eto, nao 0 altere aqui .
aborda gem top -down . Voc e adicionara os dois campos restantes (. - - reg; 0 e 12. Pressione 0 batao Continue . A tela Dictionary: C hange Data Ele-
•• • landl ) asua tabela -·-Hal. ment aparece .
U tilizand o a abordagem top -down, voce pode edicionar campos a uma 13. Digite 0 te xro curro para 0 elemento de dado s.
tab ela antes de criar os elem ent os de dad os e do min ies. Voce po de simples- 14. Digice urn nome de dominic .
men te criar elementos de dados e dominies a medida que avancar . 15. De urn clique duplo no nome de dominic para cria-lo. A caixa de
Para fazer isso, voce ira inserir urn elemen to de dados ou nome de dialcgo Create D omain sera,exibi da. No campo D omain N ame estara
dom fnio e entac dar urn cliqu e duplo nele. Voce sed. levado a tela Creation. A a nome do dominic a ser criado. Este naruralment e sera 0 domfnio
part ir dai, vo ce cria 0 domtnio ou 0 elemento de dados, ativa-o e entac pressiona
que voce deseja criar, entao a menos que esteja incorreto, nao 0 altere
o batao Back para retornar aonde voce estava.
aqul .
o que se segue e 0 procedimento para adicionar campos a uma tabela
16. Pressione 0 botao Continue. A tela Dictiona ry: Maintain Domain e
transparente sem primeir o criar os dominies e os elementos de clados.
exibida.
17. Preencha os campos Short Text, Data Typ e e Eield Length.

• --t..
<.:...:~..
;xxn I!. !:J I I ~. _'I .• . .. . . . . I ••• * w •••• • 'W • • • y y • •
w w w w w . it . :5-;;

DIU aDATA DICTIONARY, PART< 1 125


124 APH NDA EM 21 01,1..5 ARA PI4

nalidade de dicionario qu e ePOllCO con hecida para voce , sem querer modificar
18. P ression e 0 bo rao Active na barr a de ferramentas Application.
uma tabela exisrente.
19. P ressione 0 botsc Local Object. Voce e levado de volta a tela Dic- Para cop iar uma tabela, siga est e procedimento:
tionary: Maint ain D omain. 0 valor no campo Status se alter-a para
Act. e a mens agem "was activated" aparece na barra de sta tus . 1. Va para a Dictionary: In itia l Screen . (Pa ra chegar ai a partir do menu
20. Pression e 0 batao Back na barra de [erramentas Standard para retor- pri ncipal SAP, utilize 0 caminho de menu Tools- >ABAP / 4 Work-
nar a tela Di ctionary : C hange Data Element. bench, Development->ABAP/4 D icticnary.)
21. Digire os campos r estant es no elemen to de dado s (v eja 0 passo 2. Esc olha 0 botao de 0Pliao T ables.
mimero 7 do Procedi me nt o de Criacao de Elemento de Da dos na 3. Pressione 0 borao Copy na barra de [erramentas Application.
se~ao "Criando urn elem ento de dados" ). 4. Digite 0 nome das tabe las F rom e To.
22 . Pressione 0 bot ao Active n a barre de [erramentas Application . Voce 5. Pressione 0 be-eo Continue. Voce elevado de volta para a Dictionary:
entao vera a tela Create O bject Catalog Entry. Initial Screen e a mensagem + + aparece na bar ra de Status na parte
23. P ressione 0 bo tao Local Object. Voce e levado de volta a tela Di c- inferior da janela.
tionary : C hange Data Elem ent . 0 valor no campo Status se altera para 6. Pressione 0 botao Active na barra de ferr amentas Application para
Act . e a men sagem "was activated" aparece na barra de status. ativar a nova tabela.
24 . P ressione 0 bo tac Back na barra de ferr amentas Standard. Voce e
levado de volta a tela Dictionary: Table/ Str ucture: Change Fields .
Nao havera nenhuma m ensagem na barra de Status , As tabelas noD padem ser renomeadas . Pa ra cltercr a nome de umo
delcs, 'lace deve co plo-lc para umo tabe la diferente com 0 nome
25. Repita os passos 5 a 23 para cada novo elemento de dados que voce desejodo e entcc exclulra tab ela original. Se 'lace preclscr fozer isso,
quiser crier. certlftque-se de copiar tonto a estruturo como os dodos do tooele.
26. Depois que voce criou to dos os dominios e elemento s de dad os,
pressione 0 botac Active na bar ra de [erramentas App lication. Se a
Esse procedimento copia apenas a estrutura de tabel a, nao 05 dados. Para
ativacao for bem-s ucedida , a mensagem "was activate d" apar ecera ria
copiar os dados de tabela, escreva urn programa pequeno de ABAP/4 de sua
barra de status e 0 campo Status ira ca nte r 0 valor Act .
propriedade.
27. Pressione a botao Back para retomar a. D ictionary: Initial Screen.
Excl uindo u ma tobela
Modificondo tabelos Voce pode excluir ta belas existentes de DDIC . Voc e pod e querer fazer isso
D ep ois que voce criou uma tab ela, voce pede: quando uma tabela existen te nao for mais necess aria ou se voce tiver criado
um a tabela para os propds itos de experimentar funci onali dad e de dicion aric
• copia-la
que epo ucc ..c onheci da para voce.
• exclu i-la Para excluir uma tabela, siga este pr ocedimento: I
• adicion ar mais camp os nela ~
1. Va par a Dictionary: Initial Screen. (Para chega r af a partir do menu i'
• excluir os campos dela principal de SAP, utilize 0 caminho de menu Tools- > ABAP/4 Work- .j!
• alterar os campos dent ro dela bench, D eve!opment-> ABAP/4 Dictionary.)
Essa secao descreve como executar est as fcncoe s. 2. Digice 0 nome de tabe la no campo Object N am e.
3. Escolha 0 botac de op ~ao T ables.
Copiondo umo tobelo 4. Pressicne 0 bono De lete na ban-a de [erra men tas App lication. U rn
Se uma tabela estiver ativa no DD IC, voce pode copia-la. Voce pode querer pop-up pedira a voce a confirmacao do pedido de exclusao .
fazer isso se a tabela que voce quer criar for muitc semelhan te a uma que ja 5. Verifi que 0 nome da tabela que voce digitou e pression eYes se desejar
existe no banco de dados. Ou, voc e pode querer experimentar alguma funcio- continuar.
-~~~~"""'~'m"'"~·"""
"·.~-"",-
;;:..~::_=_-=-:,,,......,...-....,. . ...W-.~W.---~_.
...~.....,............r-...........,....,r....r-.r-...........,.....r W._ ••••• WW •••• W•• 9&* _
..r-...........,....,r...r-..r ..........,r.,r...r ...I""".....,r..,!!"'""'!!r "'!!!!""""'!!!!....I!!!'~~""l;!i!

126 ,P REN" EM 21 DI,S 'BAP /4 DIA3,DDATADICT1DN' RY,P, RTE I 127

Adicionando camp~Ol:>S _
Excluindo campos
H a duas maneiras de adicionar campos para uma tabela existente: Voce pode excluir campos existentes de uma tabela. Voce pode desejar fazer
• inserir isso se 0 campo nac for mais necessario na tabela au se voce tiver criado urn
• acrescentar campo para os propcsitos de experimenrar funcionalidad e de dicionario que e
pouco conhecida para voce.
Inserir urn campo permire que voce posicione urn campo antes de outre Para excluir um campo de uma tabela, compl ete os seguintes passos:
existente .
Acrescentar urn campo permite que voce adicione novos campos no fim 1. Va para Dictionary: Initi al Screen. (Para chegar af a partir do menu
da tabela, depois de todos as campos existentes. principal de SAP, utilize 0 caminho de men u Tools- > ABAP/4 Wo rk -
bench, Development-> ABAP/4 Dicricnary.)
Inserindo um campo 2. Digi te 0 nome de tabe1a.
Para inserir urn novo campo acima de urn campo existente, execute esse 3. Escolha 0 borao de opc;ao Tables.
proce dimento:
4. . Pressione 0 botao Change.
1. Co mece na Dictionary: Initial Screen. (Para chegar afa parti r do menu 5. Coloque 0 cursor no campo a ser exclufdo.
principal de SAP, utilize 0 caminho de menu Tools -> ABAP/ 4Work- 6. Pressione 0 bcrac Cut na barra de ferramentas Application ou escolha
bench, D evelopment - > ABAP/ 4 D ictionary.) o caminho de menu Edit-s-Delete Field.
2. D igite 0 nome de tabela no campo Object Name . 7. Ativ ea tabela. A tela Adjust Table eexibida. Pressione 0 botao A djusr
3. Escolha 0 bata o de opc;ao Tabl es. para converter a tabela no banco de dados.
4. Pressione 0 botsc Change. Isso 0 leva para a tela Dictionary: Ta-
ble/St ructure: Change Fields.
5. Posicione 0 cursor em urn campo.
6. Pressione 0 ba tao Insert Field na berra de ferramentas App lication. :
~o Para excluir um compo de umo tabela , nco de ixe em bronco a nome
de compo. Em vel disso, coloque 0 cursor sa bre 0 nome e pressione
o botdo Cut. Se voce simplesmente de ixar em bronco 0 nome, 0
U ma nova linha aparecera acima da posicao do cursor. mensagem " Initial value not permitted as field na me" cp crecer o no
porte inferlcrde suo tela no barro de'status e voce nco poderc continuor
7. erie seu novo campo na linha que voce acabou de digitar. ate que exdua 0 linho que voce deixou em bronco.

Ac rescenfando um campo
Para acrescentar urn campo no fim de uma rabela, execute este procedi - Alterando 0 tipo de dado ou comprimento
menta: de urn campo
1. Comece na Dictionary: Initial Screen. (Para chegar aia partir do menu Voce pode alterar 0 tipo de dado e/ou comp rimento de campos existentes em
principal de SAP, utilize 0 caminho de menuTools->ABAP/4 Wo rk- uma tabela. Voce pode querer fazer isso se 0 comprimento de campo pr ecisar
bench, D evelopment- > ABAP/4 Dictionary.) ser aumentado para armazenar valores mais longos ou se as regras de validacao
de campo mudarem e 0 tipc de dado nao for mais adequado para os novos que
2. Digite 0 nome de tabela no campo Object Name.
devem ser inseridos no campo.
3. Escolha 0 botao de op~ao Ta bles. Complete os seguintes passos para alterar 0 ripe de dado ou compri men to
4. Pr essione 0 bono Ch ange. Is50 leva voce para a tela D ictionary: de urn campo:
Table/Structure: Change Fields.
5. Pressione 0 boec New Fields na barra de ferramentas Application . 1. Va para Dictionary: Init ial Screen. (Para chegar ai a partir do men u
principal de SAP, utilize 0 caminho de menu T ools- > ABAP/ 4Work-
N a metade inferior da tela, os campos existentes rolam para permitir
bench, Developme nt->ABAP/4 Dictionary. )
que voce digite campos adicionais no fim.
2. Digite 0 nome de tabela.
6. Crie seus novos campos nas linhas que voce acaba de digitar.
-
128 "RENDA EM,l DIAS ABA'" Din 0 DATA DICTIONARY, PARTEI 129

3. Escolha 0 bocao de opclo Tables. fun cionalidade e a partir da tela Dictionary: Table/ Structu re (no modo de
4. Pressione 0 ba tao Display . exibicjn ou alteracac), esco lha 0 caminho de me nu U tilities- > Create Entries.
Escolher esse caminho de menu e urn atalho - ele cha mara urn navegador de
5. De urn clique duplo no elememo de dados correspondente ao campo
dados, mas pulara a tela inici al e 0 levard dire tamente a tela que permitira que
que voce quer aItera r. 0 elemenro de dados sera exibido.
voce insira novas linhas em uma tabela.
6. De urn clique duple n o nome de dominic no elemenro de dados . a Se esse caminho de menu est iver desativado, faca u ma marca de verifi-
dominic sera exibido. ca ~a o no camp o Ta b.Maint.AlIowed e reative sua tabel a. Consulte a secso
7. Pressione 0 batao D isplay < -> Chan ge na barra de [erramentas anterior neste capitulo intitulada "Campo Tab.Mai nt. Allow ed." para uma
Application. Voce agora sera capaz de alterar os atributos do dominic. explicacao desse campo.
8. Deixe em branco 0 campo Output Leng th. Esco lher esse cam inho de menu automaticame nte executa estas tarefas
9. Altere 0 tipo de dado e/on compriment o. em ordem:
10. Pr essione 0 batao Ac tive. A tela Please note! e exibida para mostrar • Gera urn programa espe clfico atualizad o de A BAP/4 para sua tabela
uma lista de todas as tabelas e estrururas que utilizam esse dominic . que urn navegador de dados pede chamar. (Ess e pr ograma de ABAP/ 4
Elas scrao todas afetadas . Para continual', pressicne 0 batao Co n- so m ente egerado a primeira vez que vo ce acessa esse carninho de menu
nnue. para uma tahela dad a e toda vez qu e voce 0 acessa depois que uma
alteracao foi feiea na tabela.)
• Chama 0 navegador de dados que. por sua vez, chama 0 programa de
Fozer clterocoes em urn do minio ofeto todos os ca mpos que 0 utlllzcm. ABAP /4 recentemente gerado.
• Mostra urna tela que permire que vo ce erie linhas na tabela.

Tro bo lho ndp com dodos S(mH(AM~ Inicie a ScreerrCorn "Ho w to Add Doto to 0 Table" agora .
Se voce ja nao fez isso, erie sua tabela agora e ative-a antes de prosseguir.
Execute esse procedimento para adic ionar clados asua tabela. A ajuda com
NOVO... Dentro do R/3 estec 05 ufilit6rios fornecidos pe lo SAP chomodos nov.I?90dores problemas comuns e dada no D iagnostico e solocso de probl em as que se segue.
TERMO ~ de dodos que permitem que voce monipule os dodos dentro dos tcbelos: Embora Se voce tiver problemas com quaisquer urn do s pas sos, nac se esque<;.a de
a pclcvrc novegodor implique que voce openos ler6 os dodos, os novegadores de dodos
podem ser utilizodos tonto para ler como pa ra ct collzcr.
con sultar 0 Diagnostico e solu<;ao de problemas.

Voc e pode ut ilizar os utilitarios de navegador de dados para exibir ou 1. Va para Dictionary: Initial Screen.
modificar dados den tro de tabelas das seguintes maneiras: 2. Digite 0 nome de sua tebele no cam po O bject Name.
• proeu rando e exibindo as Iinhas que en contram criteria especificadc 3. Pressione 0 botao Display. A tela Di ctionary: T able/ Stru cture: Dis-
play Fields e exibida.
• adicionando novas linhas
4. Escolha 0 caminho de menu Utilities- c-Create Entries. Observe a
• . modificando linhas existentes
barra de status na parte inferior de sua tela quando voce escolhe 0
• excluindo linhas caminho de menu; vo ce pode ser capaz de ver a m ensagem "Compi-
Esta se<;ao descreve como u tilizar os navegadores de clados pa ra executar ling. .". Essa mensagem indica que 0 sist ema esta gerando a
essas fun~5es. atualizacao de programa. A tela Table Insert e exibida. Nessa tela, ha
urn campo de entrada para cada campo em sua rebels . A esquerda de
Acessando a funciona lida de do navegador de dados de cads campo de entrada, aparece 0 no me de campo . Os campos de
chave primaria apare cem primeiro, seguidos po ruma linha em branco,
denim do ODIC depois seguem as campos restantes da tabela. Para ver 0 programa
Como obs ervado antes, urna das fun<;6es de urn nav egador de dados e ins erir que foi gerado, escolha Utilities->Creat e Ent ries e depois escolha a
novas linhas em uma ta bela. Uma mane ira Hcil e rapida de acessar essa

._., ~
~ 'J:fr '. oil "~::-....""-""-:,,,,"""'''''""""'!!,,..-"'''!!r:-''!!!!~'!!!!!''''''!!'"""''!!!!''""""''!!''''-'''II!!r'!!!!''''''!!!!''''''
IIII'" ,...-,r'''ll!!''''''''''''''''''''''''P-..r-'''''' r ,....,..... r- ,.. ..., r-..,..... _

130 APRENDA EM 21 DIAS ABA P" DlA3: 0 DATADICTIONARY, PARTE I '131

caminho de menu System -c-Status. 0 nome de programa aparece no Problema Possiveis SoluljOO
sintom as
campo Program (Screen).
Quando presslcno 0 botoc A tob elc ;0 cc ntem um reqlstro
Save , voce ve 0 mensagem co m 0 mesmo chove prima rio
Se voce coloco 0 cursor em qualquer campo e presslcno a tecla Fl '~ II A data record with the specified que a primeiro que voce
telo Help - Ta ble Insert e exlbido. Nessa tela, voce vera a documen- key a lready exists" na porte inferior estcvc tentondo salvor. O s
tac;co que voce digitou no elemento de dodos. Para reto ma r tela a do [onelc. compos de chove prirnorlo sec
Table Insert, pressione botcc Continue ou Concel. os prlrneircs grupos de
ca mpo s que oporecem no tela.
Hd urn espoco em bronco no
5. Preencha os campos com as dados que voce quer digirar em sua tabela. telo sobre 0 ultimo camp o no
6. Pressione 0 botso Save na barra de ferramentas Standard. Voce vera chove primcric . Altere 0 va lor
no primeiro des compos ocimo
a mensagem "Da tabase record successfully created" na barra de
do espoco e tente solver seu
status. registro novomente .
7. Repita os passos 5 e 6 para cada linha que voce quer inserir.
8. Pressiorie 0 botao Back para retornar a tela Dictionary: Table/Struc-
ture: Dis play Fields. Utilit6rjos gerais de novegodor de dodos
9. Escolha 0 caminho de menu Utilities->Table Contents para exibir as A funcionalidade que voce acessou na se~ao prec edente esom ente uma fun~ao
linhas que voce acabou de criar. A tela DOl ta Browser: Table: Selection de urn unico navegador de dado s. No
sistema R/3, hi quatro utilitarios gerais
e exibida. de navegador de dados: SE16, SE17, SM30 e SM31. Eles sao similares sob alguns
10. Para exibir todas as linhas na rabela pressione 0 botao Execu te sem aspectos e ainda oferecem varie s tipos de funcionaliclade.
inserir qualquer criteri o de pesquisa. A tela Data Browser: Table
Select Entries e exibida e as novas linhas que voce inseriu serao Utiliza nda 0 SE16
mostradas em uma lista. o SE16 e 0 mais utilizado programa de utilitaric de navegador de clados com
prop6sito geral. Com de, voce Rode pesquisar tab elas para linhas especfficas e
exibi-las, arualiza-las, exclui-las, copia-las, adicionar novas linh as e fazer outras
Problema Po ssive is tarefas. Ele pode ser acessado de qualquer uma destas duas maneiras:
sintomas
• D a tela Di ctionary: Table/Structure: C hang e Fields, escolha 0 ca-
Nso posso o item de menu Create Entries A ca ixa de seleceo minho de menu U tilitie s-c-Table Contents.
adicianar dodos est6 ocinzentado e noda cccntece Tob.Moint.Allowed nee estc
quando voce da um clique nele. otivada. Va para a tela
Dtctlcncry: Table/Structure:
Change Fields (para chegar
• Digire /nse16 no campo Command.

S(mHCAM~ lnlcte a ScreenCam "How to Display Tc ble Da ta Using the Doto Browser" agora.
iI
ate 16 exiba a tobelo e clique
no bcteo Display -c-c- Chonge
no borro de ferromentos 1. Digi re / nse16 no campo Command.
Application ate que os compos 2. Pres sione a tecla Enter. A Data Brow ser: Initial Screen aparece.
seja m modificcdos) . Adicione
umo marco de verlficcccc em 3. Digire seu nome de tabela no campo Table Name.
Ta b.Moint.Allowed. Pressione 4. Pressione 0 batao Table Contents na barr a de [erram entas App lica-
o batao Activate. tio n. Se a tabe1a contiver mais de 40 campo s, voce vera a tela Ch oose
Fields For Selection. Se voce a vir, coloque um a marca de verificacao
ao lado dos campos pelos quais voce quer ins erir a s crireri os de
pesquisa e pressione 0 batao Execute. O s campos que voce ativou

-~- :
-':--'-~.""~"O"'''''''''''"--;;'=~~~-'!!!"""",!,!!,"",'''''''''''''''''''''''''''''''''''''''''''''''-''''''-''''''''''--~,,,,!,,----------------------------~~~======~

132 'P RE Ho , EM 2J DiAl ' ' ' PI'


DIU 0OAT' olmoNARY,P' RTE I 133

serao mostrados na pr oxima tela - a tela Data Browse r: T able: • Ro le para cim a e par a baixo.
Selection. Essa tela ena maioria das vezes simplesment e chamada tela • Role a esquerda e a direita.
de selerao. A qui voc e po de inserir os criterios de pesquisa para locali -
• De urn clique dup lo em um a linha para ver mais campos de uma vez .
z ar as linhas espedficas na tabela. P ara exibir todas as Iinhss, D aD digite
qualqu er crirerio de pesquisa. Se hellyer m ais de 500 Iinhas que • Cri e uma n o va linha es colhe ndc 0 caminh o de me nu Tabl e
coincida m com seu criteria e voce quiser exibir codas elas, deixe em Enrry-> Create.
branc o 0 valor no cam po M aximum No. Of H its. • Altere uma linha existe n te ativando-a e entao escolhendo 0 caminho
5. Pre ssione 0 bo tao Execu te na barra de [erramentas Application. Voce de menu Table Entry -c-Change.
eneac vera a tela Da ta Browser: Table Select Entries. T odas as linhas • Altere as mulriplas linhas ma rcando-as, escolhendo 0 caminho de
que coincidem com seu criteria serao exibidas ate 0 numero maximo menu Table Ent ry- > Chang e e entao pressione os bot6es Next Entry
de linhas espec ificadas no campo Maximum No . of H its. e Previous Entry na barra de fer ram entas Application.
• Copie uma linha existe nte m arcando -a e entjio escolhendo 0 caminho
Problema Solusao de menu Table Entry-> C reate w/reference.

Node c contece quan do • Voce intenciona lmente au acid entalmente deve • Copie as mulciplas linhas marcando-as, escolhendo 0 caminho de
voce pressiono 0 botdo Exec ute. ter digitado a lga em um campo no tela de menu T able Entry->Change e cntsc pressionando os bo roes Next
seleccc e nenhumo linha coincidiu co m esse Entry e Pr eviou s Entry na barra de ferramentas Application.
criteria de pesquisu. Deixe e m bronco todos as
compos no tela de selecc o e presstcn e Execute • Exclua uma linha ou mais marcan do-as, escolhendo 0 caminho de
novorn ente. menu T able Ent ry- c-C reare w/ refer en ce e coeac pr essiona nd o 0 boteo
• Nc o h6 dodos no tooele. Delete Ent ry na barra de fer ramentas Application para cada linha que
• Vocl! pressionou Save depois de coda registro ? voce quer excluir.
• Voel! inseriu dodos no tabela? • Selecione todas as linhas e tire a selecso de rodas as linhas pressionando
He menos registros no lista de • Voce pressionou Save depois de coda regi stro ~ os bot6es correspondentes na ba rra de ferramentas Ap plication .
scldo do que voce inseriu no tobela • Voce iosenu vclcres de compos de chove • Im prima a lista pressionando 0 botso Print na barra de ferramentas
primc rio para code registro? ."; '
Standard.
• Voce intencionol ou oclde ntclme nte digitou
olga em um campo no tela de sele<;60e nem • C lassifique a lista colocando 0 cursor em uma coluna para classificar
tcdos os registros eoincidem co m esse c-iteric e entao pressiona ndo os bo t6es Sort Ascending ou Sort Descendin g
de pesquisa. Retorne para 0 tela de setecec , na barra de fer ramentas App lication.
delxe em bronco fodo s os campos e pressic ne
o bat ao Execute nova mente. • Localize um a st ring pression ando 0 ba tao Find n a barra de [erramen-
tas Standard. D igite a st ring, pressione Find e entao de urn clique em
uma area dest acada para visu alizar essa linha.
• Palja download cia lista para urn arqu ivo em seu disc o rigid o es colhendo
Do mesrnc forma qu e a caminho de menu Utilities->Create Entries, o caminho de menu Edit-> D own load. Voce: pede esco lh er ASCII,
Utilities->Table Contents tombern gero um prog romo, e le e ge ra do
form ato de plan ilha ou Rich Te xt F orm at.
novamente se voce cltercr 0 estruturc de tab elo. Poro exibir 0 progromo
q ue ele gem , c pa rtir do fela de sele<;60 escolha a cominho de menu • Selecione os campos que vo ce quer vel' na lista esco lhen do 0 caminho
System- > Status. de menu Setrings-> List fo rm at-> C hoose fields.
• Varies outrOS parametres de Iista m ilium 0 caminho de menu Set-
S(RHNCAM ~ Inicie 0 Screen Cam "Dote Browser Functionolitl ogara. tings-> U ser parameters. Aqui voc e pode configurar a largura de safda,
o mimero maxim o de linhas que pode ser exibido, ativar saidas de
Na tela de naveg ador de dad os voce pede fazer 0 seguinte:
,1
DtAJ: oDATA DlOiONARY, PARTE 1 135
t
l

conversjo ou exibir 0 nu mero real de linhas que coincide com 0 criterio nolo sera capaz de utili zar 5£16 se a tabela river urn malogo de manuten~ao
de selecsc. Voce tambem pede alterar os tftulos de coluna para utiliz ar padra o. Ness e case, use 0 SM3l.
os r6t ulos de elementos de dados em vez dos nomes de campo das A maneira mais simples de dizer se voce deve utilizar S£ 16 ou SM31 e
tabelas. aimplesmenre experiments-los. Se urn deles nao funcionar, enrsc 0 OUtrO
pr ovavelmente resolved. Se nenhum funcionar, recorra ao SM30.
Utilizanda 5M3l e SM30
5M3 1 e SM30 tamb em p od em ser utilizados para exibir e at ualizar dados de Exibi ndo os dodos utilizando seu pr6prio prog ro mo
tabela . SM31 euma versao mais anriga de SM30 que tern menos func ionalidade.
de ABAP/4
a campo de entrada ria primeira tela de SM30 e. suficien temen te longo para
acomo dar qualquer nome de tabeIa; no SM31 ele tern apenas cinco caracteres Em vez de utilizar urn navegador de dados, e mais facil escr ever urn programa
de comprimemo. An tes qu e voce possa utilizar qualquer urn, urn programa pequeno de ABAP/4 para exibir os dadcs em sua tabela. Teate criar urn agora.
espe cial chamado dialogc de manu tencac padrac deve ser gerado para a tabela Projere seu programa para escrever uma men sagem aprop riada se nenhuma
que voc e quer exibir. Iinha existir na tabela.
U rna solu ~ao de exemp lo e mos trada na Lista gem 3.1. Experim enre criar
NOVO lrl...Um di6/ogo de monuten¢o podroo e um progromo ABAP/4 qu e voce gero . uma por conta pr6pria antes de olhar na solucs o.
niMO r Qu a ndo voce choma 5M31 a u SM30, 0 novegodor de dodos c uto rncficcme nte
lccchzc e corrego esse pragroma gerodo. He oferece umc interface mois campfe xc e ENTRAOA~ Lista ge m 3.1 Programo simples para exibir os dodos no ta belo ztxlfal
mois funciono lidode do que 0 5E 16. Poro mois informa lioes sobre di61ogos de
monutencec e procedimento po ro eric-los, consulte a e lude R/3 Library. 1 report ztx0301.
2 tables ztxlfaL
3 se je ct > from ztxlfal.
04 wr H e : I ztxlfal-11fnr,
Para localizor as informo<;6es em di6!ogos de mcnuten ceo no R/3
library, escolh a 0 com inho de menu Svstern-> R/3library Help. A partir 5 zt xlfal-namel ,
da l, de um clique nos seguintes guias: Basis Components·>ABAP/4 6 ztx lfal-regi o,
Deve lopment wcrkbench-> Extended App lica tions Funct ion U· 7 ztxlhl-landl.
brary->E xle nded Table Maintenance. 8 endsete ct •
9 if sy-subrc <> O.
10 write 'Table is empty.' .
Comparanda 0 SEl 7 cam a5El 6 11 end1f.
a 5E17 emuito semelh ante ao 5E 16 no sent ido de qu e pode ser u tilizado para
pesquisar linhas especjficas dentro de uma tabela. Enrretanro, 0 SE17 nao pode
ser utilizado para atualizacoes. U tilizando 0 5E16, voce pede especificar
Utiliza ndo 0 qjuda El
criterio de pesquisa complexo para urn maximo de 40 campos p or vez; com A ajuda Fl e a documenracjo vista pelo usuario para urn' campo. Para obra-la,
SE17, voce . pode especificar criterios de pesqui sa simples pa ra qualquer o ususrio coloca 0 curso r no campo e press iona Flo A do cumentacao e exibida
numero de campos de urna vex. 5£16 somente at iva a safda a ser classificada em uma caixa de dialogo. Voce utilizara 0 seguinr e proc edime n to para modi-
par um a un ica coluna de um a vez; 0 SE17 permite que voc e especifique ficar a ajuda F I que voce cri ou ant::riormente para 0 campo 1i fnr.
a
qualquer sequencia de tipc ao longo de varias colunas. 5E16 nao func iona ra
para uma tabe1a que tern urn dialcgc de manutencio padrao, mas a SE17 SmtHCAM~ lnicle a 5creenCom "How to Crea te or Mod ify Fl Help" oga ra .
fun cionarg.

Somando as navegadores de dodos Adicion anda a juda Fl para urn cam pa


Para adicionar ajuda Fl para urn campo:
Em casos especiais, para exibir dados som ente onde voce precisa especificar
multiples criterios de classificacsc, utilize SE17. En treranro, para a maioria das 1. Comece na tel a D iction ary: Tabl e/S tructure (no modo de altera~ao
arividades rotineiras de exibiljao/atualiza~ao de dado s, utilize 0 5E16 . Mas voce ou exibicao).
"'l!'"
~'~i ~£:C
",!!!!"--'!!!9 ~- .~ -es- -.~ -~ ~ ~""'="'" ~ ~--~~ ~-~------
- "'
OIA3,0 DATA DICTIONARY,PARTE 1 137

2. Localize 0 campo para 0 qual voce quer edicionar ajuda e de urn clique 1. Comece no menu principal do R/ 3 e escolha 0 caminh~ de menu
duplo no nome do elemento de dado s correspondence a esse campo. Too ls->ABAP/4 Development Workbench. A tela ABAP/4 Deve-
A tela D ictionary: Disp lay Data Element sera exibida. lopment Wo rkbench e exibida.
3. Pressione 0 botao Display < -> Change na barra de ferramentas 2. Escolha 0 caminho de menu Utilities- >Docu mentation. A Docu-
App lication. A tela muda para 0 modo de alreracao. ment Maintenance: Initial Screen e exibida.
4. Pressione 0 borao D o cumen tation na barra de ferramentas Applica- 3. De urn clique na seta para baixo do campo Document Cla ss. U ma
tion. A tela Change Da ta Element: Language E e exibida. lisra de classes de docurnento e exibida.
5. Digite 0 texro que 0 usu erio deve ver quando ele solicitar ajuda para 4. De urn clique duple em General Text . a campo D ocu ment C lass
esse campo. A primeira linha contern os caracteres &D EFINITION &. Isso agora contem 0 valor Genera 1 text e u rn campo identificado Gen eral
e urn titulo; nao altere essa linha. Digite sua documenracao co- Text e exibido na parte superior cia tela Document Maintena nce. (0
mecando na linha da is. Press ione a tecla Enter para comecar cada campo Documentation Type ja deve conter 0 valor Orig; nal us ervSe
novo pardgrafo. ele nao contiver, de urn clique na seta para baixo no fim do campo e
6. Press ione 0 botao Save Activ e na barra de ferram entas Appl ication o ahere. )
para salvar suas alreracoes . A mensagem "Document was saved in S. No campo General Text, digite 0 nome de urn documento que vo ce
active status" aparece na barra de status . quer criar. 0 nome deve iniciar com y ou z. LEMBRE-SE DESSE
7. Pr essione 0 batao Back na barra de ferramentas Standard. VocS e N OME.
levado de volta a tela Dictionary: Change Data Element. 6. Pressione 0 ba tao Create. A tela Change General Text: Language E
8. Pressio ne 0 botao Back mais uma vez para retomar a tela Dictionary: e exibida.
Tab le/Structure. 7. Digite seu doc umentc aqui. Pressio ne a tech Enter no final de cada
paragrafo.
Testo rido a ajuda Fl 8. Pressione-o botec Save Active . A tela C reate Object Catalog Entry e
Para testar sua ajud a F l : exibida.
1. Come ce na tela Dictionary: Table/Structure (no modo de alteracao ' 9. Pressione 0 bo-se Local Object. Voc e elevado de volta a tela Change
au exibicao). General Text e a mensagem "Document was saved in active st atus"
aparece na barra de Status.
2. Escolha 0 caminho de menu Urilities-> Create ent ries.
'10. Pressione 0 batao Back para retornar a tela D ocument Maint enance:
3. Coloque 0 cursor no campo com 0 texto de ajuda modificado.
Initial.
4. Pressione Fl. 0 sistema exibird sua documentacao modificada.
11. Pressione 0 batao Back novamente para ret omar a tela de ABAP/4
Development Workbench.
Ad icio na ndo vinculos d e hiperte xto pa ra aju da Fl
12. Entre no Data Dictionary e exiba seu elemenro de-dado.
NOVO ~ Vrnculos de hiperlexto perm item que voce cliq ue em urnu pclcvro destocodo au 13. Pressione a batao D isplay < -> Change na barra de {erramentas
HRMO "" [rose no elud e Fl e exibo ojudo edicione J pore esso pclov ro ou [rose. Pora Application. Sua tela altema-se para alrerar 0 modo.
adicionar vlnculos de hipertexto, voce primeiro eric um doc ument o 00 qual voce quer
criar um vinculo e ento c deve inserir umo referencio a esse documento no texta do cjudo. 14. Pressione 0 bono Documentation na barra de feITa~emas App lica-
Os names de dccumentos devem inicior com y au z. Voce pade indui r hiperlinks e m seu tion. A tela Change Data Elem en t: Langua ge E e exibida.
novo documento tcmbem e vincu!er 0 portir dol pore outro dccumentc, ad infinitum. 15. Coloque 0 cursor na posicao ern que voce quer inserir urn hiperlink.
16. Escolha 0 caminho de menu Inc1ude->Reference. A tela Insert Link
S(RHN(AM~ Inicie ScreenCom "How to Create Hypertext link in F1 Help" ogora.
0 0
eexibida.
17. De urn clique na seta para baixo no fim do campo Selected Reference.
A tela Title e exibida: note que ela conte m uma lista de classes de
do cumentc.
DIA3: 0 DATADIGlONARV, PARTE 1 139
138 APmDA EM 71 DlAS ABAP/4

18. De urn clique duple em General text. 0 campo Selected Reference Resumo
agora contem 0 valor General text e urn campo rotulado General
• a Data Djctio~ary e uma ferramenta utilizada por program as em
Text e exibido no topO cia tela. ABAP/4 para cnar e man ter tabelas . Hi tres ripos de tabelas: transpa-
19. No campo Gene ral Te xt, digite 0 nome do documentoque voce crio u rente, de pool e de cluster. As tabelas transparentes sao as mais comuns
no passo 6,· e sao utilizadas para armazenar dados de aplicarivo. As rabelas de pool
20. N o campo Name In D ocumen t, digite 0 texto de hipe rlink. Esse e 0 e de cluster sao principalmenre utilizadas pela SAP para armazenar
tex to que sera. dest acado e no qual 0 usuario sera capaz de dar urn dados de sistema.
clique par a reeeber ma is ajuda. • Para criar uma tabela, voce pr imeiro p reeisa de dominies e de elemen-
21 . Pressione 0 batao Continue . Vocee levado de volta para a tela Change tOSde dados . a s domfnios ofere cern as caracteristicas recnicas de urn
Data Element: Language E e urn link aparece na posiceo do cursor , campo; os .elementos de dad os ofere cern os r6tulos de campo e a ajuda
22 . P ression e 0 botao Save Ac tive na barra de fer ramentas Application. FI. as dois sao reutilizaveis.
23. Voce pode experimentar seu novo hiperlink imediatamenre escc- • o~ .objetos de .dieiomirio devem estar ativos antes de poderem ser
lhendo 0 caminho de menu Document-c-Sc reen Output. A tela utilizados. Se fizer uma alteracao para urn objeto de dicionario, voce
Display D ocument ation e exib ida, seu texto de ajuda aparece e seu deve reativar 0 objero para que as alteraqoes tome m-se efetivas .
hi perlink devera ser desta cado. • a s n avegadores de dados permitem que vo ce exiba e modifique os
24. De urn clique no h ipe rlink. A tela Display Hypertext: e exibida e seu dados dentro de tabelas. a SE16 e 0 navegador mais geral de dados.
doc umento prov avelmente aparecera. o SEll, 0 SM30 e 0 SM31 sao os out ro s navegador es que oferecem
25. P ressione Back tre.s vezes para retomar para a.tela Dictionary: Ta- capacidades variadas.
ble/St ructure. • ~oce po de erial' ajuda Fl dentro de u rn elemento de dados pres-
. 26. Para testar seu hiperlink, exiba sua t abela e escolhao caminho de menu sl~nando 0 bordo Documentation. Dentro dess a ajuda Ft, voce pode
Uriliries- c-Create Entr ies. A te la T able Insert e mos tr ada . cnar vfnculcs de hipertexto para outros docum entos de aju da FI.
27. P osicione 0 cursor no campo n o qual voce criou a ajuda Flo
28 . Pressione Flo Seu textc de ajuda com 0 hiperlink devers ser exibido. P&R
29. D e urn clique no hiperlink. Seu novo documento deve ra ser exibido.

.. o Se deixo 0 comprirn ento de urn campo menor alt era n do 0


do mfnio e, se esse campo e ut ilizado em uma tab ela que ja
o Problema Sol u ~ ao con rem dados pree n ch en do 0 comprimento in tei ro do campo,
E Nee posse loca lizer Gener al Text • Role pore cirnc. o qu e acon t ece?
'j;l,
o no llsto de classes de docvmento.
c
'"
-e
Aparece a mensagem
"Chonqe relevant to trcnslotlo nt"
• Presslone 0 botoc Save Active no bo rra de
ferromentas Application , noo 0 bctco Save no
borra de ferromentos Standard.
o Q uando voce ativa a domfnio, 0 sist ema ten rar a ativar as tabelas
qu: sao dep~ndentes desse domfnio. A ariva cao das tabelas que
~
III ~ Altere a closse de docu mento po ra General
teriam perdido dados falharia e um a lis ta d essas rabelas seria
~ Aparece 0 mensogem "Dote m os rrada para voce. Se voce en tao p rosseguir e ativar essas
'" element is not used in on ABAP/4 Text.
tabelas, 0 sistema au tomaticam en te converte d. os dad os nelas e
~ Dictionory structure.
H
os dados na coluna referenciada pelo domla io serao rruncados .
.... Estou pressionando 0 botco
Documentation no tela de elemente
• 0 titu lo do tela e Didionary: Display Doto
Element? Se for, voce est6 no modo de
Como voce sabe qu ais tabelas serac af~tadas an tes de alterar urn
de dodes, mas nado cccntece. exibi~oo. Voce precise ester no modo de
clterccoo. Pressione 0 batao Display <->
o dominic?
Change e entec tente novome nte.
- - - - __ v
w-- . . . . = _ .
140 I APRENDA EM 21 DIAl ABAP/4 DIA 3, ODATADJCTlONARY, PARTE 1 ! 141

o Paca uma list a W here-use d no domlnio. Para f~ zer i.sso, exiba


a dom inio, pressio ne 0 ba tao Where- Used ~lSt na barr~ de
5. 0 qu e sao os c6digos de transacao d os quatro navegadores de clados?
Qual e 0 mais comumente utilizado e qua l nao pode ser uti iiz ado para
ferramentas Application, selecione Other Objects ~ pressione atualizar dados?
Continue. Uma lists de drvore sera exibida. De urn clique duple 6. Q ual ea diferenca entre uma tabela tra nsparenre e um a tabela de pool
~
na linha em que esta escrito Table. A lista de.nomes de ta~e~a e I, ou uma tabela de cluster ?
exibida. De um clique duple em qualquer linha para exiblr a
rabela. I
~
Exerd cio J
Adicione os campos mo strados na Ta bela 3.4 em S1..1<'I tabela · ··1 f al . Nenhum
o E possive1 er iar um cam po de tabe1a sem utilizar urn eleme~to
de dad os au domin ic? Isso parece muito trabalhoso pa ra crrar
para eada cam po. I! desses camp os ted. urn X na coluna Key porqu e eles nao faze m pa rte da chave
pri maria. 0 propdsito desses campos e co nter urn segundo nome para 0
fabr ican te, a data e a hora qu e a linha foi criada e 0 ID de usuario do usudrio
que criou a regi stro. Crie urn n ovo elemen to de dadcs p ara todo s os campos.
o Sim, e possivel criar urn campo de tabela sem u tilizar urn
elemento de dad os au domtnio. Exiba a tabela no modo de
! Reutilize 0 dominic do campo namel para a camp o name2. Para 0 resto dos

alteracio e en tao escolha 0 caminho de me~u Edit-c-Direct


Type Entry. Voce entac pode inserir 0 compnmento de campo
! camp os, utilize os nomes de dominies existences do R/3 mostr ado abaixo.
Do cum ente esses campos utilizando 0 botao Docum ent ation no elemen to de
dad os. Depois que voce ativou suas alceracoe s, utiliz e urn navegad or de dados
e ripe de dado diretamente. Esse metoda ndo erecomendado para
para atualiza r as linhas existences em sua tabela e col oque os dados nos novos
campos que aparecerao na tela; ele e apropriado soment~ para
campos que nunca secio vistas sob~e a tela e nao terao qU;;l.ls~uer
relacionamenros de chave est ran geira com outras tabelas (veja a
seguinte capit ulo para uma explicacao de cheves estrangeiras}. A
II campos. Enquanto voce esta arualizando as Iinhas, te ste sua ajuda F lo

Ta b e la 3 .4 Novas compos e suas cc rccterlsticos pa ra a tab ela ztx lfa l


Nome do campo
SAP uciliza esse me todo de criar tab elas para tabelas que ar- Nome de DE Nomede DM
mazenam as in formacoes de sistema como ID s de cursor de banco , name2 • " • name2 •• · name
. de dados . Voce po de udliza-lo na visualizacio (staging) de. tab ela erdat ." -e rdat datum
,que arm azena dados brutos em transite den rro ou fora do s;:}e,ma ert i m · · ·ertim time
R!3. H a duas desvantagen s principais nesse metoda. Pr1IT~el~O~ ername • • • ernam usnam
nenhum eleme nto de dad o e utilizado e, ponamo. nao exrsnra
nenhum rotulo de campo ou ajuda FI. Segundo, nenhum dominic
e utiliza do e entao as chaves estrangeiras nao podem ser criadas.
Exerd cio 2
Works hop C rie uma tabela transparenre • • • knal para conter dad os-mestr es de clienres,
Os segu intes exerclcios proporcionarao. a voce pratica para c~iar objetcs no co mo mo strado na Tabela 3.5. Utilize urn na vegador de dados para adicionar
dicionaric de dados e urilizar esses objetos em prcgramas SImples com as da do s at abela. eri eurn novo programa ••• e0302 que Ie os dados dessa tabela
e os escr eve ern uma Iista.
insrrucoes tabl es, sel ect e write. As respo stas estao no apendice.

Q l Je stjo no ri o
1. Qual e 0 prop6siro do dominic ?
2 . 0 que 0 elemento de dados contern ?
3. A quese refere 0 termo dados de aplicativo?
4. Para campos do tipo DEC, 0 ponte decima l earmazenado com ovalor
do campo?

' -,,'
~ ,-
142 I ' PPEN D' EM21 01'S 'B'P/4

Ta bela 3 .5 Os compos e sues caracfe rlsticas para tabelo ••• knal

D e sc ri ~a o

N ome PK No me Nome Tipo Len


de ca mp o de DE de OM

Chente
mafldt mandt
Numero de c1iente
kunnr • •• kunnr
Nome de clente
name~ • •• knamel
Ctdode
cityc • •• ci tyc
Regioo
regio • • "r egi o
Pels
• • • , and l
1andl
oData Dictionary, Parte 2
Objetjyos do capitulo
Depois de completar est e capitulo, voce sera cap az de:
e Criar chaves estrangeiras.
• U tilizar 0 campo Value Table no do minic.
• Criar e utilizar tabelas de texto.
• Descrever a diferenqa ent re uma estrutura e uma tabela e criar estru-
tu ras no Data Dictionary do Ri3.
• Criar tabelas e estruturas con tendo campos monetdrios e de quanti-
dade.
• Aninhar est ru tu ras dentro de ourras estrutur as ou t ab elas.

De sco b rind o as chayes e strang"'eCLiruaoLs" - _


NOVO -.... Umo chove estrongeiro e um compo em umo tobelo que estc coneetodo a outra
HiMO r a
tcbelo via um rela ciono mento de chcve estrang eiro. prop6sito do relociono-
mento de chc ve estrongei ra e vchdc r as dodos sendo inseridas em uma tabelo de
verificccc c co ntra um conjunto vdlido de vclores em outre tobelo. A tcbelo que contem
a chove estrongeira e chcmado tobelo de chove estrongeiro. A tobela que contern a
cc ojvnto vclido de vclcres e chemo do tobete de verifico<;6c [ve]oa Figura 4.1) . 0 compo
que e va lida do e em que a relodonamento de chove estrangeiro e criodo e chomodo
chove estrangeiro.

nl1p:l/www.compU$.ccrn.br
-------------~~~~~~w~~~- .. -.... YWWYW W .

144 APREH DA EK 21 DIAl AB AP/ ' DlA 4: QOATA OIcnONARY. PARTE 7 145

Figura 4 1 Tabelode move Tobelo


estronge.ro de yermco<;Oo ta~6es de inr egri dade sio mantidas no banco de dados. Portanto, urn programa
A tcbetc de chcve
estrongeiro e 0 tobelo
em ABA P/4 incorretamente escrito pode violar a inregridade referen cial; ele
de verificor;60. nome do tob ela
pode inserir valores invalidos nas ta belas de banco de dados . P or ess a razao,
rth lfo1 l MOOS pr ogram as em ABAP/4 qu e precisam atu alizar 0 banco de dados com dado s
cbc ve ~ lan d l land l nome do compo
estrongeiro ~ proven ientes d e uma out ra fon te qu e nao a in t erface com 0 usuari o n orm al-
reloctonc mentc
Ii de chove eslrongeiro mente passaro esses dad os p or u ma interf ace com 0 usuario a fim de
US cA Esto to belc contem umo valids-los.
CA ~ lisle de c6digos
US IT de pcis v61ido$.
US US Para mo is lnfcrmccces sabre utilizoliCio do interfa ce com 0 usvcnc pora
DE JP
-'-
vcltdcr dodos, consulte os programas de ajude do R/3 library para
DE BOC (Botch Data Communication). Para visuolizor esso documentcceo,
o partir de qvclqc er tela escolbc 0 co minho de menu Help->RJ3
"-
Q uando voce odic:iono dodos a esto
tcbelc, umc verificot;60 , feito para
library. Voce vern 0 me nu principal do blbltctecc do R/3 . A partir del,
de um clique nos seg uintes guias: Basis Components->ABAP/ 4 Devel-
'o'er se a c6 digo do pa is que voce estc o pment Workbe nch-> Basis Programming lnterfcces->Tronsferring
lentando inserirexiste no tcbelo de verifico<;60 (ztxO05). Data With Botch Input.

P or exempl o, sua tabela·· - 1f al contem c6d igos de pafses em urn campo


Raquisi tos tecnicos para criar uma ch ave estrongeiro
chamado landl . Voce pede cri ar um a segunda tabela, por exemplo ••• t OOS, e
preenche -la com uma lista de codigos de parses validos . Encao, se vo ce cria um a Para criar um a cbave esrrangeire:
chave estran geira como a mostra da na Figura 4.1, uma verificacf o automati- • A verificacao deve ocorrer em relaljao a urn campo dentro da chave
cam en te sen. feiea contra a tab ela de verificacao para urn valor valido. C om essa prim dria da tabela de verificacao.
chave esrrang eira no lugar, 0 usudrio nac po de in serir codigcs de parses • Os no mes de dominios do campo de ehave estrangeira e 0 campo de
invalidos na tabela - - "l f al , rabela d e verificacao devem seros mesmos.
U rna chave esrrangeira ob tem seu nome do fat o de que ela semp re deve
verificar urn campo na chave primaria de outra tab ela. .• o segundo requi sit o existe p ara garantir qu e os campos que ests c sendo
comparados sejam compativeis quanto co tip o e comp rimen ro de dad o (veja a
Figura 4.2) .
Acionando a verifi ca ~ao de chave estrongeii-a
A verificacjo de chave esrrangeira ~ executa da pelo usua rio cia in te rface do R/3 .
Quand o voce digita urn valor em u rn campo e p ressiona a t ecla En ter, nos No Figura 4.2, os dais compos utilizom 0 mesmo e lement o de dodos .
bastidores a interface com 0 usuario formula uma instrucao sel ect para validar ossim como 0 mes mo domlnio.lembre-se de q ue noo e tmpre scindlvel
o camp o de chave estrangeira e envia-la ao banco de dad os. Se uma linha qu e as dois utlllzem 0 mesmo elementc de dodos - somente as
coincidence njio foi la calizad a na tabela de verificac ao, 0 u suario ve uma dornlnlcs de vem ser os mesmos.
me nsage m padrso indicando que 0 valor que ele digitou einvalido . Se u ma linha
coinci dence existe na tabela de verjfica~ao, os valores inseridos na tela tern Como esses campos compartilharn urn dominic em com um, aintegridade
permissao para passar para 0 programa em "ABA P/ 4 subj acen t e. Ass im, as da comparacao entre os dcis campos e garan tida, porque seus tipos e compri-
chaves estrangeiras jii sao verificadas ant es de 0 pr ogram a receber os valores . mente s ~e dados sempre coincidirao.
Alem da tecla Enter, as chaves estra ng eiras tambern sao verificadas quan do um a
teela de fun~5.oJ urn bota o (pu shb utton) ou urn ite m de men u eselec ionad o.
As chaves estrangeiras sao verificadas apenas pda int erface com 0 usuario.
Elas nao existem no banco de dados e DaOsap verificadas se vo ce sim ples mente
em it ir uma instru~ao updat e de banco de clados. ~en huma refer encia a limi-
...... - ... - •• --- - ... .... .. -- -- .. - = -
146 I APRENDA EM 21 VIAS AB AP/4 CIAt 0 DATADlmONARI, PARTE 2 147

Fig ur a 4 2 Tobela de
verifico<;oo
Procedime nto de criccco de ta be lo de verificccuo
Este e urn diogromo
do compo de chc ve
A seguir apresen tamos 0 procedimento de criacao para a tabela de verificacao
mlto 1 ,",,005 tcbelcs
estrangeiro, do compo - • - tOOS. Se voce tive r problemas, cons ulte a se<;ao de diagn6sti co e solucao de
landl land1 com pos
de tobelo de problemas relative ao p rocedi men to de criacio de tabelas rransparentes para
do
verificoc;lio e dominies preexistentes e elementos de dados no Di a 3.

~
dominiccomum que
eles comportilhom. "
S(mNu.M~ lnicle a ScreenC a m "How to Create Check Ta ble ' . ·tOOS" agora.

Para criar sua tabela de verificacao :

1. . Comece n a D ictionary: Initial Screen.


Estes carocteristicos
type: chc r 2. Digice nome de tabela no campo O bje ct N ame .
"
I, pe:
n: 3chcr "" / len : 3
sao herdodo s
do dominic
3. Escolha
0

0 bo tao de opcao T able.


I ztxlcnd l elerne nto de dodos
4. Pressione 0 bocao Create. A tela Di ction ary: Table/Structure:
ztxlondl Change F ields e exibida.
TYPE : CHAR _ dominic
5. D igite urn textc cu rto, escolha a classe de entrega A e colo que uma
LEN,3 marca de verificacao em Tab. Maint. Allow ed.
6. Di gite os n om es de campo e de e1emento de dados na parte inferior
de te la.
Criando u mo ,h o ye est ra O.Q"e"i"r a"--- _ 7. Coloque uma mar ca de verificacao nos dois campos para indicar que
eles formam a chave primaria.
Agora estd na hora de voce criar um a chave esrrangei r a simples. Este exemplc
p ermi tird que voce se familia rize com as telas envolvidas no processo; todos os . 8. Pressione 0 b c tao Save na barra de [errament as Standard. A tela
cam po s nessas relas serfo explicados em deralhes mais adian te neste capitulo. " Create Obj ect Ca talog Entry aparece.
Os pro cedimenrcs a seguir demons tram como criar a tab ela de verifieafac 9. Pressione 0 botao Local O bject. Vo ce e levado de volta a tela Dic-
zt xt 005 e dep ois uma chave estrangeira em zt xlfal - l andl ut ilizan do ztxt 005 tion ary: Tab le/ St ruc ture: Change Fields.
como a tabe la de verificaclo. D epois de visualizar esse procedimento, vo ce sera 10. Pressione 0 botao T echnical Settin gs na barra de ferr amentas Appli-
solicitado a erial' sua pr6pria tabela - - -tO OS e entao criar urn relacion am ento catio n . A tela ABA P/4 Dictionary: Ma intain T echnical Settings e
de chave esrran geira de - - - lfal -l and 1 para tabela de verificacao - - - t OOS. exibida.
Antes de erial' uma chave est ran geira, voce deve prim eiro te r um a tabe1a 11. No campo Data Class, digite APPLO (APPLO com urn zero, na o
de verificacao. Emb ora ja haja uma tabela de c6digo de pafses n o R/3, para APPLO com a letra 0).
pra ricar voce criara e ut ilizara a sua propria tab ela. A tabe la d e verificacao se
12. D igite a (zero) no campo Size Category.
cha mar a - - - tOOS e ira conter os campos e utilizar os elem entos de dad os
13. Pressione 0 batao Save.
mostrados na Tabela 4.1. (Urn x na coluna PK indica campos qu e fo rmam a
chave primaria. ) 14. Pressione 0 batao Back. Voce e.levado de volt a pa ra atela Dictionary:
Table/St ructure: C han ge Fi elds.
Tabela 4. 1 as campos e sues ca racterfsticas para a tabelo - --TOOS 15 . Pressione 0 botao Activate n a barra de [erram en tas Application. A
mensagem "was activated" apa rec e na berra de sta tus e 0 campo Status
Nome d e cam po PK No me de DE
contem 0 valor Act. .
mandt x mand t
l andl • - -1 andl Escolha 0 caminho de menu Utilities- c-Create Entries para inserir c s
dados em sua tabela de verificacao recentemen te criada. Insira seis linh as com
valores 1andl de us, CA, DE, rr, J P e AU. I,
I
~..--.d
w ... • ........... ••••••• w • wv • • •• • •• V . W ! ' ' I..;

148 APRENDA EM 21 DIAl ABAP/4 DJA4: 0 DATADlcnmURY, PARTE2 149

Proced imento de criocc o de chave estrangeira Fi g u ra 4 3


A tela Create Foreign
Keyeobe compos de
S(RHNCAM~ Inicie 0 ScreenCom "How to C reate a For eign Key" ag ora.
tobela de verificaqdo e
seus compos de chove
esfrangeiro ossociodos.
Para criar uma chave estrangeira:

1." Comece na Dictionary: In itial Screen .


2. No campo Object N ame, digire 0 n om e da tab ela que e para conter
a chave esrrange ira ( - - -1fal). .
3. Escol ha 0 boeso de op~ao Table.
4. Pressione 0 botao Change. A tela Dictionary: Table/ St ru cture: Chan -
ge Fields e exibida.
5. . Posicione 0 cursor no campo que esci para torn ar- se a chave es-
trangeira (l and2).
6. Pressione 0 botao Foreign Keys na b erra de fer ra m entas App licati on.
A tela Create F oreign Key sera exib ida (veja a Figura 4.3).
7. Digite urna descricao da chave estrangeira no camp o Sho rt T ext , por Testa ndo 0 relacionamenta de chave estrangeira
exemplo, Country Code val idat i on. Se vo ce encontra problema s, 0 seguinte procedimento e descrito em mars
detal hes n a pr6xima seC;ao. P ara test ar sua ch ave esrrangeira:
8. Digite a nome da tabela de verificacto ( - - - t0 05) no campo Check
Table ou de urn cliqu e na seta para baixo e escolha cia Iista. 1. Inicie na · tela Dicti ona ry: Table/S tru cture (qualquer alreracdo ou
9. 0 pop -up Change Foreign Key aparece. Ele declara Check ta ble name modo de exibicso) .
was created or changed. Generate a proposal for fi e 1d ass i sn- , 2. Escolha 0 caminho de menu Utilities-> Crea te entries.
ment? Pressione 0 borso Yes.
3. D igire um valor no campo de chave estr angeira (c6digo de pais). ,
10 . Voce elevado de volta atela Create Foreign Key. Os names de ca·~~o
. 4. Pressione a te cla Enter. Se a valo r nac for localizado na tabela de
de tab ela de veri ficacao e os nom es de campo de chave estrangeira sao
verificacao, a mensagem "Entry do es not exist (please check your
exibidos. (Os names de campo de tabela de verificacao sao - - • t005-
en t ry) " e exibida.
mandte - - - t005 - l and!. O s nomes de camp o d e chave est ran geira sao
.- - l fe l -mand t e· - -lfal-landl. )
Desco brio do a coluoa CbeckTable
11 . Pressione 0 botac Copy. Voce e levado de vo lta a tela Dictionary:
Table/Structure: Change Field s e a mens agem "Fo reign key was Dep ois de criar um a chave est ran geira, a nom e da tabela de veri ficacao aparece
transferred" aparece na barra de Status . O s campos Status contem os na coluna C hec kTable na tela Di cti onary: T able/ Stru ct ure. Se urn campo for '
uma chave estrangeira, a co luna Ch eckTable co nrera 0 nome da tabela de
valores Rev; sed e Not save d.
verificacac desse campo.
12. Pressione 0 batao Activate na barra de fer ramentas Application . A
O lhe em sua tabela agora. Vo ce deve ver 0 nome de sua tabela de
mensagem "was activated" aparece na barra de status. as valores nos
verificacao na colona C heckT able.
campos Status sao agora Act . e Saved.

V oce acaba de criar urn relacionamen tc de chave estrangeira entre as D ete[rn i o a ~60 autorn6tico de.compos de chave estraogeira
tab elas · · - H al e ·· - tOOS. ---Hal-landl e o campo de chave estrangeira e Quando cri ou a chave est rang eira, voc e nfio teve de especificar os campos que
- - - tO05 e a tabela de verificacao. A interface com a usu ario validara a valor devem pa rricipar no relacionamen ro de chave estran geira - 0 sistema as
dentro do campo _. -Hal-landl con tra os valor es na colun a - - - t 005-landl. deterrn in ou au romaticamente. Esta se~ao explica como 0 sist ema determine
esses n a mes de campo .
. ..'-.

150 ,PRENDA EM 21 DIAS "'P/4


DIA4;OOATADlaJONARY, PARTE 2 151

Durante a cria~ao de uma chave estrangeira, voce colocou 0 cursor no


campo de chave estrangeira e pressionou 0 botao de chave estrange ira e 0 a titulo de co luna e a lorguro nos listos de entrodas pcssfvefs vern do
campo Header no elemento de dodos para 0 ca mpo de tobelo de
sistema gero u uma p roposta de chave escrangeira consistindo em pares de verlftcccoo exibido.
campos. Em cada par, urn campo se o rigina da tabela de verificacao e 0 outro
da tabela de chave estrangeira. 0 num ero de pares eigual ao numero de campos
de chave primaria da tabela de verificacao. Todos os campos de chave prirnaria Acompanhe 0 procedimento a seguir para testar 0 relacio namento de
da tabela de verificacio devem ser incluidos no relacionamento de chave chave estrangeira que voce criou em - - -1 fal- 1andl . Se sua chave estrangeira
cstrangeira nao funcionar, tente esse procedimenro urilizando ztxlfal, entao compare
o sistema pesquisa nesses campos de chave primaria 0 primeiro que tern ztxl fal com sua tabela para dete rminar 0 problema.
o mesmo dominio que 0 campo de chave estrangeira e 0 emparelha COm sell
1. Comece em qualquer tela.
campo de chave estrangei ra.
2. No campo Command, digire /nse16.
Se houver diversos campos na chave primaria cia tabela de verificacao, 0
sistema tentara localizar uma coincidencia de cada urn dos campos resrantes. 3. Pressione a tecla Enter. A Data Browser: Initial Scree n e exibida.
Urn a urn, 0 sist ema tentani localizar urn campo na rabela de chave estrangeira 4. Digite - - - 1fal no campo Table Name.
que tern 0 mesmo do minic que a campo de tabela de verificacao. Se isso nso 5. Pressione 0 botao Create Entries na barra de ferramen tas Applica-
funcionar, ele tentard localiz ar urn campo que tenha 0 mesmo tipo e compri- tion. A tela Table Insert e exibida.
menta de dados. Se ele encon trar ma is de uma coincidencia, selecionara urn e
i
advertira vo ce de que a atrib uicac e ambigua. 0 processo e repetido ate que
todos os campos de chave prim aria da tabe1a de verificacao sejam emparelhados
6. Digire qualquer valor no campo de numero de fabricante, por exem-
plo, MY-V!.
7. Posicione 0cursor no campo Country Code (landl)..Em bo ra uma
I
a urn campo da tabela de chave estrangeira.

Rel aci o'na nd o as chaves estran geiras com a seta


seta para baixo apare~a no fim dele, nao a pressione ainda.
8. Digite 0 valor xx no campo Country Code.
9. Pressione 0 borso Save na barra de [erramentas Standard. A men-
I
pa ra baixo e a ajlJdo F4
sagem "Entry XX does not exist (please check your ent ry)" aparece .
NOVO...

I
Alem do ojudo Fl. voce tcmbem pode oferecer alga chomodo oiudo F4.pora Seu cursor esta posicionado no comeco do campo que contem 0 valor
lERMO r a vsucrlc. A ojude F4 e ume listo de vclores volidcs que 0 usvcric pe de digitor incorreto. Urna seta para baixo aparece no fim do campo.
em um compo. A flm de obter ojudo F4, a usuoria posiciono 0 cursor em urn ccmpo e
10. De urn cliq ue na seta para baixo ou pressione a tecla F4. Urn pop-up
presslon c Q teclc F4. A elu de F4 tc mbe m e conhecidc como possfveis entrodos de oiudo,
porque consisfe em umo listc de entrodos permltidos no compo. Os dais termos s60 contendo as colunas de chave primdria de tabela de verificacac
vtiluodos intercambiovelmente pelo SAP. - - -tOos aparece.
11. De urn clique duplo em us. 0 pop-up desaparece e 0 valor n o campo
Quando voce cria uma chave estrangeira, a ajuda F4
ofe rec ida para esse campo.

lnlcie a scree nco m "Using Q


e automaticamenre

Foreign Key to Provide F4 Help" agora.


c6digo de pais muda para US.
12. Pressione 0 botjc Save na barra de [erramentas Standard. A men-
sagem "Database record successfully created" apar ece na barra de
II
$CRHHCAM status.
Em uma tela, se voc e coloca 0 cursor dentro de urn campo de chave
o relacionamento de chave estrangeira oferece urn mecanisme para I
I
estran geira , um a seta par a baix o aparecera no fim do campo de entrada. Essa e
validar os dados inseridos pelo usuario na tela . Se 0 campo fo r urn campo de
a ajud a F4 . Se voce der urn clique na seta pa ra baixo ou pressionar a teela F4, .
chave estrangeira, 0 valor ecomparado contra a tabela de verificacao. Se 0 valor
uma Iista de p ossiveis en tradas vdlidas eexibida. Essa lista e0 conteudo da tabel a
nao existe na tabela de verificacao, e exibida uma mensagem de err o padrao.
de ve rificacao. N essa lista, as colunas de chave primaria da tabela de verifica~ao
sao exibidas, excluin do mandt. !
f
~~j
152 AP RENDA EM 21 DIAl ASAP" DlA 4: 0 DATA DICTIONARY, PARTE 2 153

figmg 4 4 Iobelo de chcve Tobela d e


C h aves e strangeiras e p rogTIlLLm UUOL:lsc..!eOW
mLllo
Wt!e« - _ Uma chove estrongeiro v e rifi ca ~60

Os programas em late que leem arquivos sequenciais au outras origen~ de estrangeira compo sto ztxllal ztxt005
volidondo a .
dados que nao a tela e atualizam 0 banco de dados diretamente devem validar
os dados. U rn programa desse ripo deve ser codificado de uma destas rres
combino; oo de regioo
e de poisem relo<;Cio
6 lobelo de verificor;Cio.
LOOrr LOrEr o relacionamento
de chove estrongeira
manerras :
• 0 programa deve passer as dodos per uma interfac~ c~m ~ usuario us FL CA ON
CA ON CA NS
chamando uma rra nsacao qu e contem as telas. 1550 efeitc mterramente US AK
US A
em segundo plano. Os clados sao automaticamente "chaveados" par a US GA US Fl
os campos de tela a fim de fazer com que a verificacao de chave DE 02 US GA
estrangeira seja executada. Essa tecnica e chamada EDe (Batch Da ta
Communications) e foi mencionada anterio rmenre na se~ao "Descc-
brinclo as chaves est rangeiras". BDC e a tecnica padrao utilizada para
-DE 01

chcve estrongel r a "


composto
DE
DE
01
02

cc mcc de verflcocco. Umvalor nesse


impo rta r dados no sistema Rj3 . compo a d ona a verthcocec

• Ele pode canter in srru coes se lect que executam a verificacao de chave
Voce cria urna chave est rangeira composta quase exatamente da mesma
estrangeira. Essa tecnica e menos confidvel, porque os programas
maneira como voce cria uma chave estrangeira cont endo urn un ico campo. Voce
devem ser atualizados se novas chaves estrangeiras forem adicionadas
comeca posicionando 0 cursor em urn campo , nesse caso zt xl f al- r eg; 0 e
au se existirem alteracoes.
depoi s press ionando 0 botao Foreign Keys. C om o 0 cursor esta em reg; 0, e1e
• Ele pe de passar os dados para m6dulos de funljao especiais que se torn a 0 campo de verificafiio da chave estrangeira composta. Embora a chave
executam as duas verificaco es de chave estrangeira e atualizacoes de

I,
estrangeira seja composta de divers os campos, apenas urn desses campos
banco de dados. A SAP cria esses modules de funljao (chamado BAPIs acionard uma verificacao contra 0 banco de dados . Como re g; 0 e 0 campo de
ou Business APIs) e os forne ce com 0 sistema R/3 . verificacao, urn valor inserido nele na tela aciona urna verificacao. Se 0 campo

Chaves es t ro ng e iro s compostas _


de verificacao nao est iver branco quando a usuario pressionar a tecla Enter.
uma verificacf o sed executada contra a tabe1ade verificacso comparando todos
os campos cia chave estrangeira. Se 0 campo de lverificar;ao estiver em branco,
,
f

i
Umo chove estronge jro comp osta e umo cbcve estrongei ro composto d~':dois
NOVO 'rr.... ,,t
nenhuma verificacfo e feita mesmo se as outros campos contiuerem oaiores.
mAIo ~ ou mcis cam pos. Em o utros polovrcs, umo verificcccc e feito para comporar os
dols compos no tcbelo de cbove estrangeiro com as dois compos no tobelo de verificoccc. ;
A ccmblnocdo de vclcres deve existir no tobelo de verlflcccoo antes de eles poderem ser
inseridos no tobelc de chove esfrcnqeiro . Entretcnto , somen te urn compo no tela ocionor6
Como com a chove estrangeira simples, os names de dorofnlo do
campo de verificac;ao e seu compo ossoclc dc no tcbelc de vertficocco
II
a verlflcococ de chove estrongeira composto. devem cai ncidir. Entretcntc, quando a chcve estrongeiro e criado, as
demais names de domin ios no chc ve estra ngeira composto nco tem
MOVO ~ Quando voce eric umo chove estrongeiro composto, 0 compo em que voce de coincidirj a chove estrongeiro pode ser crlcdc se 00 menos seus
URMO ~ rea lmente define a chove estro ngeiro echcmodo compo de verifica<;ao. Some nte tipos de dados e comprimentos coincldirem. Mois tarde, se 0 tipo de
um volor nco nulc no compo de verificc cc o adona a veriflcccec em relccec 0 tobela de dodos au comprimento em um desses domlnlos for alterodo, os campos
verificac;ao. Um valor em quolquer dos outros compos de ntro do chove estronge iro ndo mois coincldiruo e os resultados da verificococ de chove es-
composto noo ocionar6 a volidoc;oo. trongeiro serao imprevisiveis. Por essa roz60 , emboro 0 R/3 nao
imponho q ue todos os names de dominio de umo chove estrangeira
Por exemplo. 0 campo reg; a em zt xl fa l deve conter apenas 0 estado valida compo sto coincidom, isso e basto nte desej6veL
ou os c6digos de provincia. A cornbinaljao de regi a e 1andl juntos deve ser valida. Em geral. quando a lterar 0 tipo ou a compnmento dos dodos de um
Portanto. urna tabela de verificar;ao (ztxto05s) comendo cornbinaljoes vili das de campo em umo outro chave estrange ira composto que nao 0 compo de
regia e l andl e necessaria. Depois de eriar essa tabe1a de verificar;ao. uma chave verifico~oo, voce deve confenr se a chove estrongeira e os campos de
tobelc de verifica~oo estoo vfilizondo 0 mesmo dominic. Se naoestiverem,
estrangeira composta e necessaria em ztxl fal para validar a combinaljao de regia
voce deve otuoliz6·los para ter 0 mesmo tipo e comprimento de dodo.
e 1andl em re1ar;ao a tabela de verificar;ao. Comumente, ztxt005s- 1andl tambem Umo falho nissoresuhor6 no operoc;co imprevislveldo chove estrongeiro.
deve servalidado contra ztxtOOS - l andl (veja a Figura 4.4).
154 " RE NDA EM 21 DIAl ABAP /~ DIU 0 DATA DICTIONARY, PARTE 2 1:>5

F igu ra 4 ....A....--
Se voce criar urn relacionamentc de chave estrangeira para u ma tabela de
A defini¢o do cho ve
verificacao con tendo mais de urn campo na cbave primaria, todos os campos estrongeirc mostrodo
de chave primaria da tabela de verificacio deverao ser inc luldos na chave no Figure4.5.
estrangeira. Nero todos precisam ser verificados [veja a se~ao "Chaves es-
trangeiras genericas" a seguir) , m as todos devem ser incluidos.
Como a maioria das tabelas de verificacao conrem 0 campo mandt, esse
campo e parte da maioria das chaves estrangeiras (veja as Figuras 4.5 e 4.6).
In c1uindo ma ndt na tabela d e verificacao, conjuntos de valo res validos e
independentes po dem ser d efini dos para cada cliente de logon e eles podem
d iferir entre clientes. Essa capacidade ebastante desejsvel para sepa rar as dados
entre clientes e assegu rar que eles sejam completamente independen tes urn do
o utre .
A ajuda F4 escd apen as disponfvel no campo de verificacsc de uma chave
est rangei ra comp osta. Quando chamar a ajuda F 4, eodo s os campos de ch ave
p rimaria da tabela de verificacsc serao exibidos . A coluna contendo 0 campo
d e verificacso sera destacada na list a. As larguras e tftulos de co luna vern do
campo Header nos elem entos de dados . as valores de X significam:

Tobelo de chove Tobelo de • 1: Se 0 prograrna aplicativo exclui uma linha da tab eia de verificacao,
F igura 4 5
estrongeiro verifico~oo tambem excluini as Iinhas correspondenre s da tabela de chave es-
Umo cho ve
~strongeirc composto ztxIfa1 ",,1(105 rrangeira. Por exemplo, se 0 programa de aplic acao remover 0 valor us
envofvendo 0 compo MANDT LANDl REGIO tv\ANDT lANDl R.EGIO da tabela de verificacao, ele excluira todas as linhas da tabela de chave
mandt . estrangeira .o nd e 1andl '" US. Em outras p alav ras , se houver urn valor
na tabe la de chave estrangeira, havera sempre uma e apenas uma linha
I tendo esse valor na tab ela de verificacao.
700 I I US Fl 700 CA ON Volores v6lido$ no clteete 7~
800 I I US GA 700 US Fl I~ • C: E possfvel excluir da tabela de verificacao sem exc1uir as linhas
CA NS

~
800 I I US GA 800 correspondenres na tabela de chave esrran geira. Em out ras palavras,
800 I I CA NS 800 CA ON Volores v6lidos no cliente 800
800 r I CA ON 800 US GA po de haver valores na tabela de chave estrangeira sem valo res cor-
900 r I DE 01 900 DE 01 } Volores vclldos no cllente 900 respondent es na rabela de verificacao,
900 I I DE 01
I I as valores de Y sign ificam :
t
cutros
• 1: Hi sempre uma e, somente uma, linhana tabela de chave estrangeira
compos para cada linha na tabela de verifica cao.
• C: Ha, no maximo, uma linha na tab ela de chave estrangeira para cada
Iinha na tabela de verificacao.
Entenda a cardinalida de
• N: H a sempre pelo menos uma linha na tabela de chave estrangeira para
NOVD .... A cordino/idode do relccloncmentc de cbove estrongeiro descreve , para coda cada linb a na tabela de verificacao ,
TEilID r valor no tcbelo de verifico~60, quonfos linbcs de dodos soa perm itidos no tabela
• CN: Pede au nao haver Iinhas na tabela de chave esrrangeira para cada
de chcve estrongeiro. Ela e Inserldo no tela Create Foreign Key {veja 0 Figura 4.3}. A
ca rdinolidode e descrita como X: Y, onde Xse refere a fcbela de verifico ~oo e Yse refere linha na tabela de verificacio.
a tobelc de chcve estrongeira. X pode cpe ncs ter as vclores 1 ou C e Y pede ser 1, C, N e
A cardinalidade ndo imposta pelo sistema R/3 . Especificar a cardinali-
au eN. dade e opcional e a siste ma nao verificara a cardinalidad e pa ra determiner se
44 . .... _

156 APREH DA EM 21 DIASABAP/4 OIH OO'T'OICTIONARY, PARTE ' I 157

essa atualizacao tern permissao para acontecer quan do urn prograrna em chave estrangeira, a ripe correto de chave estrangeira sen do tipo campos/can -
ABAP/4 atu aliza uma tab ela. A (mica vez que a cardinalidade e utilizada e didatos -chave.
quando voce cria urn objeto agregado n o DDIC. A o criar uma chave esrrangeira, voce deve escc lher carnpcs/candidatos-
chave se 0 campo de chave est rangeira for urn dos campos de chave primaria
NOVOlio.. Urn o bjeto ogregado e um cbjetc ODIC co mposfo de mois de ume fabe la. Um da tabela au fo r urn candidato-chave. Caso contrario, escc lb a campos/candi-
lElI',O " exemplo de urn ob jeto egr egedo e umo visua Hzot;oo. dat os nao chave.
Quando voc e cria uma chave estrangeira vo ce deve especificar a cardina li-
dade . Se nao espe cifica-la, voce sera incapaz de incluir a tahela em urn ohje to Campas-chave de uma ta bela de lexla
agregado. o sistema R13 suporta diversos idio m as e, ponanto, permice que os usuarios
se conectem utilizando 0 idioma de sua preferencia. Por causa disso, ...s
Iipo de campo de chove estrangeira descricoes rio R/3 sao armazenadas em rabelas especi ais dependenres do idioma
chamadas tabelas de texto .
o ripe de campo de chave estr angeira tambem deve ser especificado na mesma
tela que a cardinalidad e quando voc e cria a chave estrangeira (veja a Figura 4.3) .
Ele pode ser urn dos segui ntes valor es: as usu6rios podem configurar se u pr6prio idioma de logon pcdrec.
• Campos/candidaros-chave Isso e feito no perfil de usu6rio escolhendo a cominho de me nu
System-> User profile- > User defaults. A c ftercce o do seu pe rfil de
• Campos/candidates nac chave usua rio s6 se tom o efetivo no seu pr6ximo logon.
• Campos-ch ave de um a tabela de texto
NOYO ..... Umo tobelc de fexto e urna tcbelc que contern descnce es 'n c lingua fa lodo' de
Campas-chave rmlo " vclo res em umo tobe lo de veohcccec. Essos descricees 56 0 ormoze nad os em
Escolha Key Fields/ C and idate s seo campo de chave est ran geira fo r urn dos v6rios ldlomcs. A chove prlrncric do tobelo de texto e c mesmo que 0 chove primcrlc do
campos de chave primar ia da tabela de ch ave estrangeira. Escolh a Non-Key " tobe lo de verlftcocec , com a edie;oo de umo colune spras (idiomo).
F ields / C andidates se nao fo r. Por exemplo, suponha que a tabela tl seja Por exemplo, a tabela ztxtOOS po ssui c6digo s de patses nela. Os nomes
co m posta de campos fl a fl Oe qu e seus camp os de chave primaria sejam fl,; f2
dos palses sao armazenados em uma tabela separada chamad a ztxtOOSt
e f3. Se voce fosse definir um a chave estrangeira no campo f3, Key F ields/C an-
(m ost rada na Figura 4.7). po rque voce realmente precisa de muitos nomes para
didates seria 0 tipo correro, porque f3 e pane da chave primaria. Se v6ci fosse
urn c6digo de pars . Como ela armazena descricoes espe cfficas do idioma de urn
definir u ma chave estrang eira rio campo f S, Non-key F ields/Can didates seria
c6d igo generico, ztx t 005t e chamada de tab ela de texro .
correto, po rque f S nao eurn dos cam pos de chave primdria. A chave primaria de ztx t00 5t co ntem os mesmos camp os que a chave
primaria de ztxtOO S, com a adi ~ao de urna coluna spras (idio m a}. 0 cam po
Candidalos-chave spr-as contem 0 c6digo de idioma e ativa essa tabela para conter uma descricao
de divers os id iomas de logo n.
NO
VO'" Urn condidcto-dtove e urn co mpo em urno tobelo que , por si mesmo ou em
TERMO "" con junt;oo com outro compo que n60 foz porte do cho ve prim6rio, pede ser A chave primaria de qualquer tabela de text o e compost a dos campos
utilizodo poro identificor de mon eiro unico urno linho no tobe lo. Em o uiros polovros, se mandt e spras, seguidos pelo campo de validac;ao (ou campos); Urn QU mais
houver umo mo neira de selecion or umc linhode"umo tobelo sem utilizer compos de chove campos de descri~ao seguem essa chave primaria.
prim6rio, existem condidotos-chove nesso tebela. as candidatos-chove s60 os compos Urn relacionamento de chave estrangeira e definido em ztxt OOSt- l andl
que noo se encont rom dent ro do chove prim6rio que podem ser otilizod os unicomente
para a tabela de verifica c;ao ztxtOOS. 0 tipo de campo de chave estrangeira deve
pore identjficor umo linho de mo neiro unicoi bosicc me nte e les podem se rvir como umo
chove prim6 rio alterna tive . ser campos -chave de urna tabela de texto.

Por exemplo. ztx 1fa 1 tern urn unico campo de chave primaria qu e contem
urn identifi cador unico para cada linh •. Se voce pressup6e que a combinal$ao
de erdat e ert i rn (data e ho ra de cria~ao) etambem (mica para cada linha, esses
camp os de data e hora sao candidatos-chave. Se qualquer urn aparecer em uma
DlA ~: 0OATA DICTIONARY, PARTE 2

158 , AP REHOA EM 21 elAS AB.l.P/~


Tabela 4.2 Co nteud o do tabelo ztxOO5
F ig u r a 4 7
A tcbelo de fexto
landl
pore ztxt005 eo us
ztxt005t. flo eo
comp osto de compos CA
mandt, spros, DE
landl, landx e
IT
natio.
JP
AQ
CC

Ta bel a 4.3 Conte udo do tobela ztxt OOSt


s pras l andl lan dx

E CA Canad a
D CA Kanada
E DE Germany
Relocionando as tabe las de te xto com a ajuda F4 D DE Deutsch' and
E US United States
HOVO D US USA
TIiMO ...
" sistema R/3 que a fobe lo de chove esfrongeira e umo fobe lo de felda. Quando
Ita ly
voce escoihe esse tlpo, a primeiro descrtcco que segue a chcve primorio e exibida no E IT
ajuda F4, no idiama de logon do csuoric. Pcrtcnto, esse tipo de chcve tem duos D IT Italien
propriedades esped ais: E JP Japan
• Quando as linhas cia ta bela de verif icalSao sao exibidas em respcsta a D JP Japan
uma solicitalSao de ajuda F4. 0 primeiro campo de clescrilSao da tabela E AQ Ant arcti ca
de textc apar ecera na mesma lista, como se fosse uma parte da tabela D AQ Antarcti ca
E CC Coconut Islands
de verificacao.
D CC Kobinseln
• Somenre as lin has da rabe la de t exto tendo 0 mesmo c6digo de idioma
que a idioma de lo gon atu al do usua rio aparecem na lista de ajuda F4.
Por exemplo , a tab ela de texto ztxt005t contem urn relacionamento de
chave estrangeira de ztx t 005t- l andl para a tabela de verificacao ztxt005 e a tipo $Cl£ENC,Ul,.... lnlcle ~ ScreenCom "Text Ta ble Demonstratio n: The Effect of the Logon Lon-
,. guage ogara.
e"key fields of a t ext table". Quando voce chama a ajuda F4 em ztxt005 -l andl,
o us ua rio ve as colun as de chave primaria da tabela de verificacao ztxt005, mais
o conteudo da primeira colu na que segue a chave primaria de ztxtOOSt. Scmence 1. Inicie a rransacao 5E16 (digite /nse16 no campo C ommand e pres-
e a
as linhas onde spras igual ac idioms de logon atual sao exibidas. resultado sione a tecla Enter).
e que 0 usuaric ve as descricoes em seu idioma de logon para os codigos em 2. Digite 0 nome de tabela ztxlfal no campo Table Name.

ztxl f al. 3. Pressione 0 bcrao Create En tries na berr a de ferram en tas Applica-
a conreudo das tabelas ztxt005 e zt xt 005t emostrado nas Tabelas 4.2 tion. '
e 4.3. 4. Posicione a cursor no campo Country Code {l andl }. _,I

_______J
160 APREWO A fill 21 OIAS ABAP I ~ DIA 4:0DATA DICTIOHARY, PARTE 2 161

I
.,~'

5. Pressione a te cla F4 a u de u rn clique na seta para ba ixo no fim do Chave s estIlmgeiros canstantes e genericas
~amp o. Urn pop-up aparece exib indo colunas das duas tabelas ztxt 005
e ztxt005t . Observe qu e a col una 1andl da tabela ztxt005 e exibida e
, Lembre-se ~e q~e, quand o voce cria u rna chave estran geira, todos os cam p os
de chave prim aria de tabela de ve rificaca o d evem ser in c1uidos no rela cio n a-
as descricoes de lingua in glesa da tabela ztx tOOSt sao exibidas. mente de chav e estra nge ira . Entretanto , as v eze s, voce po de nao que rer exe cu-
6. A gora efe tue logon novarnen te (voce nac precisa efetuar 0 logoff tar uma verificac jo em rela<;ao a to dos esses camp os . Em ourras situacoes, voce
primeiro ). Dessa vez , digite 0 par a Deutsch e (alemao) ern Language po de desejar verific ar em rela cio a u rn valo r constan te. Em qualquer urn d esses
Field de tela de lo gon do R!3, casos, voc e pode defin ir uma chave estran geira gen erica ou consrante.
7. Repita as passos 1 a 5 em sua nova se<;ao de logon.
8. Note que dessa vel. as descricoes da tabela zt xtOOSt sao exibidas em Chaves estrangeiras genericas
alemao.
NOVO llr.. Uma chove estrongeiro generi co e umo chove estrongeira no qual um dos
ltRMO" compos de cbove prim6rio de s ca mpos de tobelo de verificccoo e morcodo
como generice . Qu ando urn cam po de chc ve prim6rio e morcodo como generico, ele
Criando uma tabe la de texto e uma cha ve estrangeira para e la nco tern urn corresponde nte no tobe lo de chove estrongeira e nco porticipono venficcceo.
Agora' e uma boa hera para tenter criar sua propria t abela de texro. U tilize
ztxt005t como urn modelo. Sua t abela de tex to sera ch ama da - - - t 005t e P or exemplo, dentro do ap licarivo M at erial s Management, a tabela mara
conterd os campos que utilizam os elemento s de dad os e do mini o s mostrad os e a tabela Material Ma st er. Ela com em a lista-mestr e de ma teriais utilizad os
na Tabela 4.4. Voce rambem ted de criar a elernento d e dados - - -1 andx. Utilize par a fabricacao e os atri buros de cada ma te rial.
o dominio SAP existence textl5 p ara seu novo elemenro de dados. U rn x na o programa de configuracfo p ara este livro crio u u ma tabela ztx ma ra
coluna PK indica os campos que formam a chave prirnaria. sem elhante a mara. Os campos de zt xmar a sao mos tr ad os na Figura 4.8.

F igur g 4 8
A tobeloztxmaro e
Nome d e campo PK N ome de DE Nome de DM semelhonte alobe/a
mara de the R/3
mandt x mandt MaterialMosler.
spras x spras
1andl x - - -1andl
1 andx - - -1andx t ext1 5
;,
, , '
""
Depois de ativar - - -t005t , digite os dados n ela utili zando 5E1 6. Utilize
o s dados de exemplo mostrados na Tabela 4.3.
Agora erie uma chave estrangeira em _. - t005t -1 andl. Siga 0 procedi-
mento de cria<;ao de chave estrangei ra forn ecido an t eriormen te. Utili ze
- •• t005 como a tabela de verificacao. Na t ela Create Foreign Key, especitique
urn tipo de campo de chave estrangeira n os campo s Key de uma ta bela de rext o .
Voce pode querer revisar a scr een cam "H ow to Creat e a Foreign Key " ant es
de comecar. 1.-"

Depois de criar su a chav e est rangeira, siga 0 prc cedimen t o p ara t est ar 0
relacionarnento de chave estrangeira em •• - 1f al - 1andl. No pa sso 11, note que
...t,, Ocampo ztxmara- s t of f con t em 0 numero de urn material de risco . Se 0
;,J,.
a descricao de ztxt005t tambem e exibida. Agora, efetue logon novamenr e,
d essa vez esp ecificando urn idi oms de logon 0 (alem ao) e repita 0 teste. D essa
vez, voce devers ver as descricoes alem as no passo 11.
.'
, campo nao est ive r em branco, 0 mat erial exige tratamento especi al; 0 nu me ro
d e stoff indica 0 tip o de tratamento exigido. O s n um eros de rraramento sao
definidos na tabela ztx mgef, qu e est ailus trada n a Fi gu ra 4.9. No nosso exemplo,
sup on ha que zt xmg ef con ten ha uma linh a com st off igual a 1. Essa lin h a indica
.. . /
'W'W'W''W''W ......... ...
~ . ...

162 ,pm" EM " DIA S AB AP/ ' DIA ~ : 0 DATA DICTIONARY, PARTE 2 163

Figura 4 10
urn procedimento de tr atamento que exige luvas. Atualizar urn material e
Umo ma rco de
colocar 0 mimero 1 no campo ztxmara-stoff para 0 . mate rial ind ica que 0 verificor;oo no coixo
material exige tratamento esp ecial com luvas. de selet;60 Generic
indicaque um compo
_1;,1",1 deve ser ignorodo

~z~ii;~:;;:mara !;tilj:~l:1l~:~~.F~~'E:'.~E~5j~~: ;~;;,:'0 '~~?·~ durante 0 verificor;oo


de chc ve eslrongeiro .

-.," - , . ' r.,~eO""'.IirJnf.:,~unt"1.. ~. d~ ~::;:[


I
':M"; t. ~~~ , ' ~ •
. . ~" ,.. ~l',,~ ; $t.• j" '~' ~U5S · ~ ·,.-t ,,;; r,;.~: ~-··_ : - ~

'f';:',;~;;'':::;:::~;;~B~~~~~;'~~ .
., Quando essa chave estrangeira e verificada, somente a combinaci o d e
i mandt e s toff deve existir na tabela de verificacao. 0 r eg; a e os cam pos 1and l
sao ignorados.

Chaves estrangeiras co nstontes

HOVO.... Chaves es/-rcngeiras canstonfes sao chcves estrang eiros compostos em que um
A tabe la de verificacao pa raz txmara-s toff eztxmgef. A definicsc de chave TERMO ~ des names de compo de tobelc de verthcocoo e substilufdo par um voter
ccnstcnte. Essevolar constcnte e inserida no lela Creole Foreign Key (~ej a a Figura 4.11).
est rangeira e mos trada n a Fi gura 4.10.
Essa chave esrrangeira valida as valores inseridos em ztxmara- ~t~off e Por exemplo, imagine que voce p recise criaruma nova t ab ela de fabricante
assegu ra que apenas num eros de tratamento validcs existem na tabela at xme re. ztx lfalus como ztxHal contendo ap en as os fabri cante s dos EUA, mas, par
I nfeliz mente, regu lamentos d e rratam en t o podem variar de aco rdo com as razoes de compat ibi lidade, voce quer que des tenharn exa tamen te a mesma
regioes geogrd ficas. Por tan to , a chave primariade : t xmg e: compo_sta de sto,f:, e estrutura que ztxl fal. 0 c6digo de p ars nessa rabela semp re se ra.us. Vo ce po de
r eg; a e 1andl .Entretanto, ztxmare n ac ccntem qUalsquer informacces geografi- criar uma chave estrangeira constante para restringir os valores na tabela
cas - essas informacoes en contram -se nas ta belas da fabrica. ztx lfalus. Urn exemplo da definicao e mostrado na Fi gura 4.11.
Lernbre-se , uma ch ave estrangeira deve incluir todos os campos de chave
primaria da tabela de verificacao. Portanto, regia e 1andl de ztxmgef ap arecem Chaves estrangeiras odopto dos
na definicac de chave est rangeira . E ntretanto, para os proposiros de zt xmar a,
vali da r zt xma r a-s t aff contra zt xnlg ef - st aff e suficiente, as inforrnacoes de NOVO.... Nem lodos as compos de choveestrangeirode uma chcve estrongeiro composta
posicao n ao exis t em em ztxmara e nao imporram para essa validacao . Basta saber TtRMO~ precisomresidirno mesmatabela . Se eles nee residirem, ISSO econhecido coma
que 0 mimero de t ratamen t o espe cial especificado existe. uma chave estrongeiro adaptodo. Par exemplo, assumo que a c6digo de pols para a
Nesse relacionamento de chave estrangeira, os campos reg ia e lan dl na fobricante n60 este]c no finol dos centes ormozenoclo em ztxlfal, mas em vez disso em
ztx1falcc. Quando voce fosse crier a chove estrangeiro no compo de regioo, voce
chave primdria de zt xmqef estao sendo ign orad os. Para garantir que esses
clteroric 0 compo de tobelc de verificalioo de 1andl para zt xl f al cc-l andl [ve]c a Figura
campos serao ignorados durante a validacao, d es sao definidos no re laciona- 4.12 }. A vohdcceo no compo reg i a verlflcor io se a ccmbincceo de mandt e re g; 0 existia
mento de chave esrrangeira como genericos. A rnarca de verificacao na caixa de em zt xt 005s e se 1and1 existia em quolquer Hnha de ztxt 005cc.
selecao Generic n a tela Create Foreign Key faz isso.
~ '!' '!' '!' 11 !!f 'I' .. 'I' ... .. .. .. ... ... ... • ... ... ... ... "II!" •
-- --- -
w w _ 'W
- -- -- - - - - - - -
DIH 0DATA DICTIONARY, PARTE 2 '165
164 APR!NDA! M21 OIlS A BA P / ~

Fi gu r a 4 11
Sempre que voce cria urn relacionament o de chave esrrangeira, 0 sistema
o compo pots como
olha no campo de rabela de valor. Se houver u rn nom e de tabela af, ele propoe
umo chove estrongeiro esse nome como a tabela de verificacao.
ccostonte. Alguns Ieirores terao difieuldade com esse conc eiro, entac YOU explica -lo
co m det alhes na se~ao a seguir.

Entendendo 0 campo Value Table


A fim de entender 0 prop6sito do campo Value Table, voce deve estar familiari-
zado com 0 "q uadro geral'' do projeto e des envolvirneneo do banco de clades .
Com ecarei descrevendo esse qu adrc geral .
Antes de erial' qualquer tabe la no DDIC, vocenormalmente fara algum
projer o de banco de dados . Ess e projeto descreve as tabelas que serao criadas,
seus relacionamentos e os tipos de dados que cad a um a contera. Ele normal-
m ent e designarf certas tabel as para serem tabelas de verificacgo a fim de validar
os dados dentro de outras ta belas. POl' exemplo, um a tabela de verificacao de
c6dig o de pals pode ser necessaria para validar c6digo s de pafses para todas as
tabelas onde os codigcs de pajses serao armazenados. Quando voce cria urn
conjun to de tabelas dentro do R/3, voce normalmenre criara as tabelas de
Fjg ura 4 12
verificacao primeiro.
Exemplo de umo
chove eslrongeirc A principal fina lidade de voce erial' uma tabela de verificacao e validar
odoptodo . dad os. Voce pode erial' diverscs relacionamencos de chave estrangeira vincu-
lando muitas outras tabelas com uma unica tabela de verificacao. 0 campo
Value Table no dominio existe para simplificar a taref a de erial' esses relaciona-
mentos.
Antes de continual', suponha que 0 campo Value Ta ble dentr o do dominic
tenha umnome completamente diferente . Limpe 0 termo "V alue Table" de sua
mente e im agine que esse campo e chamado "Default C hec k T able".
Para simplificar 0 exemplo, nossa tabela de verificacao tera urn umco
campo de chave primaria, ilustrado na Figura 4.13. Para ilustrar esse conceito,
descreverei 0 processo que voce iria erial' para essa tabela de verificacao e utilizar
em urn relacionamento de chave estrangeira.

Fi g u r a 4 13 ztxtOOS
a compo Value Tobie tcbelc de verifico~oo
dentrodo dominio
contern 0 nome de
Defini nd o um a tabel a de valor limo tabelo de
verincolioo.
Dentro d o domlnio esta 0 cc mpc lobe/a de volor. A tobelo ldentificodo den tro
11010 ll. desse compo oferece a s segu intes fun<;6es para 0 do minic :
URIIO" Elemento de dodos

• Ela e automaticamente proposta como a tabela de verificacfo quando


cria uma chave est rangeira
• Ela oferece uma lista de valores para a ajuda F 4 (posslveis entradas), Domlnio
mas nac oferece validacao
0111 t 0 DIITA DICTIONARV,PARTE 2 167
166 'mHO' EM 21 OIAS "AP"
1. Comece na Dictionary: Initial Screen.
Quando voce cria uma tabela de verificacio, voce deve primeirc criar um
2. No campo Object Name, digite 0 nome da tabela ( * * *Hal ).
dominic. Voce sempre criaria urn novo dominic especificamente para uma
tabela de verificacao . Voce entac criaria 0 elemenro de dados e depois a propria 3. Escolha 0 batao de opc;ao Table.
tabela. Dar, ativaria a tabela. Entao, voltaria ao dominic, no campo de chave 4. Pressione 0 boco Change. A tela Dictionary: Table/S t ructu re:
primaria, e colocaria 0 nome da tabela de verifica~io que voce acabou de eriar Change Fields e exibida.
no campo Value Table-mas lernbre-se de que 0 chamamos de campo Default 5. Posicione 0 cursor no campo de ch ave estrangeira (' andl }.
Check Table. 6. Pressione 0 botao Foreign Keys ria barra de {erramentas Application.
Agora, voce criaria Dutra tabela, no nosso exemplc e ztxl fal. Voce criaria A tela Change Foreign Key e exibida.
ocampo 1andl e utilizaria o elemento de clades ztxl andl e entdo as dais campos
7. Pressione 0 batao Delete (a lixeira) na parte infe rio r da janela .
utilizariam 0 mesmo dominic. 8. Voce e levado de volta a tela Dictionary: Table/Stru cture: Change
Agora voce criaria a chave estrangeira para validar 1andl. Voce colocaria
Fields. A mensagem Foreign key was deleted apar ece ri a barra de
o cursor no campo ztx l f al- , andl e pressionaria a batao Foreign Keys, Quando
voce fizer isso, 0 sistema olhara no dominic no campo Value Table (lembre-se status.
de que a chamamos de campo Default Check Table) . Se houver urn nome de 9. Com 0 cursor ainda posicionado no campo de chave estrangeira
tabela af, 0 sistema automaticamente ira propor esse nome como 0 nome da (1 andl), pressione a batao Foreign Keys novamente. A tela Create
tabela de verificacao . No nosso ceso, 0 sistema localizaria ztxt005. Portanto, 0 Foreign Key e exibida. Ela Ie Foreign key does not exist. Generate
sistema iria propor ztxt005 como a tabela de verificacfo - exatamente 0 que proposal with value table as check table? Voce ve essa caixa de men -
quererlamos . A pro posta de chave estrangeira seria mosrrada, e entao po- sagem porque 0 sistema olhou no dominic e localizou urn nome no
campo Value Table. Ele responde exibindo essa caixa de mensagem.
deriamos salva-la.
Nesse exemplo, 0 sistema automaticamente criou a chave estrangeira para 10. Pressione 0 batao Yes. A tela Create Foreign Key eexibi da e 0 campo
nos, porgue colocamos 0 nome da tabela de verificacfio no campo Value Table. Check Table contem a tabela de valor do domlnio. O s campos Check
Dando tres cliques de mouse, criamos uma chave estrangeira! 1sso, em essancia, Table e-as campos Foreign Key sao pre enchidos.
ea principal razjio para 0 campo Value Table. Ele existe para fazer a criacao de 11. Pressione 0 borao Copy. Voce e levado de volta a tela D ictio nary :
chaves estrangeiras mais Iacil. Table/Structure: Change Fields. A mensagem Foreign key was trans -
Para resum ir, 0 campo Value Table e utilizado de duas maneiras pelo ferred aparece na barra de status. as campos Status exibem 0 texto
sistema: .' '" Rev; sed e Not saved .
• A tabela de valor {lembre-se de imaginar a Default Check Table) 12. Pressione 0 botao Activate. A mensagem "was saved apare ce na barra
automaticamente e proposta como a tabela de verificacao quando se de status. as campos Status Ieem Act. e Saved.
cria uma chave estrangeira.
Com urn nome de tabela no campo Value Table no do min ic voce po de
• A tabela de valo r ofe rece uma lista de valores para a ajuda F4, mas
rapidamente e com confianca erial' chaves estrangeiras.
nenhuma validacao e feita nesta lista.
Redescabrindo a cal una de CheckTable
o campo Value Ta ble como proposta de Check Table A coluna CheckTable na tela Dictionary: Table/Structure executa duas
Nessa se~ao,.voce adicionara uma tabela de valor para urn dominio e observarf
func;6es:
seu efeito na cria~ao de uma chave estrengeira.
-E dite urn domlnio _. -Landl agora e digire ** *tOOS no campo Value • Se urn campo for urna chave estrangeira, a coluna CheckTa ble con tera
o nome da tabela de verificacao para esse campo.
Table, ativando depois 0 dominio.
Agora voce excluira a chave estrangeira no campo - * *Hal-landl e entao • Urn asterisco (*) nesra coluna significa que uma rab ela de verificaqao
a criara novamente de modo que voce posse vel' 0 efeito do campo Value Table nao foi definida para 0 campo, mas uma tabela de valo r exisre no
no processo de criacao de chave estrangeira. Para fazer isso, siga 0 procedi- domfnio.
mento abaixo.
"': I. It t.1Jt:I,X::X:XI" I . II w • w w w ..

DlA~ : 0DATADICTIONARY, PARTE 2 169


168 APRENDA EM21 DIAl AB AP,.

Hoi uma excecao para 0 segundo ponto acima. Se voce atualmente est iver O s campos m onetarios tern esses requisit e s:
exibindo um a tabela de valor, 0 asterisco DaD aparecera no campo cujo dominic • 0 ripe de dado no domlnio deve ser CURRo
se refere a tabe la de valor qu e vo ce esta visualizando. • Ele deve es tar vinc ulado com urn campo do ti po CUKY contendo a chave
moneraria, como USD (d6lares norte-am ericanos), CAD (dolares
Ulilizando a labela de valor como uma lisla de possive is canaden ses}, ITL (lira italian a) e assim par diant e.
va la re s
Se urn campo con tiver uma tabela de valor mas DaD for uma chave estrangeira, NOVO ~ A chove mone t6rio e con hecido como comp o de refe r@:ncio Trata se de outro
quando esse campo aparecer em uma tela nenhuma valid ?t;;ao sera [eira no n~\O r ccmpo no mes rno tobelo au em outro tabela. Esse co mpo d'eve ter-a fipo CUKY
campo. A tabela de valor nao executa a validacao. Som enre uma chave es- (chove mon et6rio) no do mfnlo. Ele indica a chove monet6rio pa ra a campo monet6 rio
relere nctcdc.
trangeira valida as valor es.
Com apenas uma ta bela de valor, urn seta para baixo nao apa recera no fim Por exemplo, imagi ne que voce criou uma t abela contendo uma [ista de
do campo como acontece para urn campo de chave est rangeira. Entretanto, se pagamentos feitos aos fabricantes. Voce precisaria de um campo de quantidade
voce colocar 0 cursor no campo e pr essionar F4, a tecla F4 ainda exibira uma de p agamento (nome de campo wrbtr) e urn cam po- ch ave monetaria (normal-
lista de valores da tab ela de valo r. N ee hi nenhuma indicacao na tela de que a mente waer s) para indicar completarnente a qu an ridade e a chave m onetaria
funcional idade F4 esta dispo n fvel t: nenhuma verificacao efeita se urn valor for utiliz~das nesse pagamento. Para vincular as do is campos entre si, voce dari a
inserido no campo . urn clique duplo no nome d e campo monetario na tabe la e entao inseriria a tabela
Essa fu ncion alidade pode ser uti! quando voce qui ser oferecer ao usua rio de chave m one raria e a nome de campo no s campos Refe rence T able e
uma lists de valores sugeridos, mas quer permitir que OUtrOS valores sejam Reference Field (ve]a a Figura 4.14) .
digitados no campo tambem.
Elg ll r a 4 14
~!! i~ ; !t! ~~;.. ?~t'.'im1(= _JLt-¥;'\"t~'.! N~j~ ~· -=-2~, ,, ;.- ·;,)5 !i' -!~!:J
Campos especiais de Tabela
Dois ti pos de campos de tabe la precisam de tratamento especial :
• os campos m on ect rios
l Os compos de
referen cio no lela
Display Field.
. , :1 8;' ~ ,~ - -.~ H' ~ {) ~ -~ ~ '-·:i~l.:H>·~~~'-i~~\(~2~·, C

• as campos de qu antidade •...;'"

O s campos mooet6rios
NOVO ~ Imagine que voce qu eira ir 00 ba nco e pedir 1.000. 0 coixa provave lmenle
TtRMO "'- perguntoria NMil a que? " Voce pode responder NMil delo res". Ou voce pode
ser ate mois especffico e pedi r "'1.000 dolores norie-omericnnos". Quontios monet6rias
no R/3 sao ormozenad as em dots campos: um armozena a quentia nurnerico real (l.DOO)
e outro ormczena a moneloria {USDJ. 0 compo nomerlco de quentio e chcmodo compo
monercn c e a outre compo e cha mado compo-cbcve monetOrio .

o que e
muitos pessoo s se referem como monet6rio realmente urn
c6dig a mon et6rio (USD para a d6lor a merica no, CAD para 0 do lor
cc node nse e ossim par diontel. A SAP utilize a pclovro "chove" como
urn sin6nimo para "c6digo N, entoo ela chama a co mpo que conte rn a
c6diga mon et6rio "chcve manet6rio", isso se cpltcc 6 rnoloric dos
compos de c6digo no R/3; 0 c6digo de pais e chamodo chave de pa is,
a c6digo de regia o e a chove de regioo e ass im por dionte.

l
.,

I.J ~~~~~~---------------lHf! OIH 0DAnOICT10NARY, PARTE 2 I 17
.os ca mp os de qu-oanoIlti.od.o
.ou;dlfeL..- _ P Figura 4 16

NOYO.... e urn compo qu e contem umo medido n.umerico. Por


li Esses soo os o/ributas
de compo poro 0

milo r
Urn compo de quantidode
exemplo, esse compo pede conter uma medid~ de peso, co~pnmento,. tem- rl compo ntgel'f. Note
que cs dois compos
pe ratura ou eletricidode. Pa ra se r significativo, umc unrdade de rnedidc co mo librcs,
polega dos, grous Fahrenhe it a u q ullovolts devem ocomponh? -]o. Os compos de quan- ~I Reference Tobie e
Reference Field
tidod e tern estes req uisites : ofere~m 0 vInculo
perc 0 compo UNIT.


0 tipo de dado no do min ic dev e ser QUAN.
Ele deve estar vinculado a urn campo do tip o UNIT. t
~
o campo UNIT «0 campo de referencia para 0 campo QUAN. 0 camp~ UNIT
pode estar na mesma tabela ou em outra tabel~. 0 cam po UNIT co ntern a unidade ~ .>
de medida para a medida no campo de quantldad,e. , .
Por exernp lo, na ta bela ztxmara, 0 campo ntgew cont.em 0 p eso ~qUldo de
urn material e 0 campo g~wei contem as unidades, como libras au qUllo~ramas As estruturas no Data Dictionary
(veja a Figura 4.15) . 0 camp o ntgew te ,:, urn t ipo de dado d e QU~N e 0 tlpO de
dado de gewei e UNIT. Se voce der urn clique duple em nt~ e~, ver~ que a tabela NDVD .... Alem dos tobelcs, as esfruturos tcmbem podem serdefinidos no Data Dictionary.
de refe rencia e ztxmara e a campo de referencia e gewei (veja a Fi gura 4.16). TWO '" Como voce poderia espera r, umo estrutura co rrespo nde 0 umc serie de campos
ogrupodos sob um nome comurn . Emuito semerhonte a urno tc belc. C o mo urno tobelo,
era po de se r vtillzcdc dentro de urn progr a ma no instru; oo tab l es para definir urnc 6reo
de trabolho.

As diferencas entr e urna estru tura e uma tabela sao como segue:
• Uma estrutura nao tern uma tabe1a de banco de dados associada.
• Uma estrutura nao tern uma chave prima-ria.
• Uma estrutura nao tern atributos tecnicos.
As estruturas seguem as mesrnas convenc;6es de atribuicao de nome que
as tabelas transparentes e voce nao pode ter um a tabela e uma estru tu ra com 0
mesmo nome .
Voce criaria uma estru tura no DDIC se quisesse definir a mesma area de
trabalho em diversos programas. Por exemplo, se voce quiser escrever regist ros
para urn arquivo sequenti al utilizando pro grama em ABAP/4 e depois Ie-los
para utilizer outre, os dois programas precisam conhecer a layout desses
registros. Voce criaria uma estru tura no D DIC que define 0 layout do registro
e entdo atribuiria na mes a essa estrutura na instrucao t abl es nos dois pro -
gramas. Isso criaria uma area de trabalho identica para os dois prograrnas.
o proc ediment o para criar uma estrurura ~ quase a mesmo para criar uma
tabela tr ansparenre. [Co nsulre as pro cedimentos para criar uma tabela trans -
parenre.) As unicas diferens:as sao as seguintes:
• Em vez do borfo de op~ao Table, escolha 0 botao de 0plSao Structures.
• Os campos D elivery C lass e Tab.Maint.Allowed nao aparecem.
• As estruturas nao tern uma chave p rimaria.
APRENDA EM 21 DIAS ABAPI4
11-----~~~ DIA 4: 0 DATAOlCTIOHARY, PAm2 17:
• Nenhum atributo tecnico pode ser especificado, como classe de dados, a i ncl udes expandida dentro cia definiicao
JhPara visualizar cia propna
. . ta beIa,
caregoria de tamanho a u usa de buffer. I . ~
esco a 0 caminho de menu Extras-> Substructures- > Expand All Substr.
Todos as nomes de campo de uma est rutu ra inc1uida aparecerao embaixo de
Entendendo Includes • INCLU DE, como mostrado na Figura 4.19.
UIDa estrutura pode canter outra estrut ura, Em outras palavras, voce pod e
aninhar estruturas uma dentro da outra. Isso pode ser urilizado p ara reduzir a NOVO ... A codeic de estrvturos cricdo incluindo umo estrvturo dentro de outro ' h d
manutencao agrupand o campos juntos em uma estrut u ra e enrac inclu indo essa TEi.UO r b 1codeio
od
de indudesoA profundidode maximo de oninhomento • no e c ome ,0
. • e ve e sc me nte
estrutura dentro de outra estrutura ou mesmo dentro de uma tabela. umc t~ e ~ p e se r mclu:do em umo codetc de includes. Em outros pclcvros, voce nc o
po de :ndu:r vmo tc belo de ntro de outro.
Por exemplc, urn endereco de uma pessoa e composto de urn conjunto
de campos como rua, cidade, regiao, pais e ccdigc postal. Voce pede precisar .E.ig.1l..l:.a..-': 1a
.'.,,><1
mante r esse endereco em diversas tabelas. Dentro da tabela do fabricante voce A estrufuro z t xaddr
contem as compos
pode querer manter 0 endereco do fabricant e, na mestr e de cliente a endereco
°
do cliente, e na tabela de empregado ender ecc do empregado. Se voce criar
de enderel;o que sea
induidos no tobefo
uma estrutura para agrupar os campos que juntos formam 0 en dereco, voce ztxemp l.
pode entao incluir essa estrutura nas definicoes da tabela. Quando a tabela e
ativada, as campos da estrutura sao adicionados e existem na tabela de banco
de dades como se fossem definidos dentrc dela. Eles terao o mesmo no me que
a nome na estrutu ra. Para incluir uma estrutu ra dentro de uma tab ela, (a u I
dentrc de outra estrutura), digite . INCLUDE na coluna de nome de campo e insira .
a nome da estrurura na coluna de elemento de dados.
Na Figura 4.17, a tabela zt xempl (tabele de empregado) inclu i a estrutura
ztxa ddr (veja ;1 Figura 4.18), que consisee em campos de endereco stras (rna),
artDl (cidade); reg; 0 e l andl . A tabela ztxempl .portantc, contem estes campos:
j
zt xemp l -stra's; zt xempl - ortOl. ztxempl reqt 0 e zt xemp1-1andl. e I
.~ :j,' ,
Eigur g 4 17 !~ " 1 It · 'd 1: diE· it ' .,,,,,., j
1... 'r. ~:bo. j/Moo ' ~ ~ ..... ~ ; ::" :' ''';~~;'''' '_,; ; __<.1 -'".:t~. _.,: . ;, -(.~~.,. ... ?"-:: "
A tcbelo de
z t xemp l ccntem 'iI' j
~
::::::J ~t.ti : ~- · x· ~ a ~1i.0 0 "" -:'0 ·;,·:t;·g~:t>-:::.~.$; :=;"_:jj ;-;~
,;;p- :-0- :~: ;:£1 ~ ;..l' :"; io t ;'-d-'Si",:UCiQ,iil;': t:'riCiliiic .licllll ril' :"lrille.<e.:; ~~~+t=;,;r":i;'~,",1~#~ ( ·~.i_.
i Flgut a 4 19
um • I NCLUDEpora
I o formulcirio

~~~~i~=~~i~II
fazer com que os
. [ NeW-XXX do
campos de
tabela z t xemp l
ztxaddr seiom
inclui 0 in strv~6 o de
odicionodo s a ela.
. ...:u.~ du~"f~~~"PU~l tn1lt.(~.";~.tr~u~tb" ~ ~?>-<~':.J,

II
Nhl .' "!io''; .• " ", _. ; :--
modo que ztxoddr

~~!~:~~i1~;~~1t:flwt~~~~~tie;f2.t~~~~~::
posso ser incluido
duos vezes sem
il.... ; n .-.: ~~' : UU >,d'.".' .1n~ l-~,t~ · ~~u"rnl l " '~"l;:.t ... t~ -'-',* \ :"': : _~ -O. , ".:..k'\""'::'o'"'::r.:-!i£,.:.,,: ~ ,t o;, dup/ic:or os names
de compo.
174 APRENDA EM 21 DIAS ABA P/4

FigurQ 4 21 '''I 51 if &hi ei"lt4E "1, 1,,1


Indui nd o a mesmo estru tu ro d jyersos yezes ;.1... l llt.li'" EJIo. ·LlI'io' £~ ~ c- --; "· I-~,.~~';' >;.', · ."\-":'t::"''''''-=.>l./:- -:>t:~,'';r:-...l''_ ''
Ilolo 7 ~-:,:;r
Escolhe r 0 if ·L._. . _'3 ; ~ ¢o 4: 'Xn M'rt . t~l ~ E'-- -~ -{ {.;~<~~~•._;--;;:~~: ,::.: ~
Vo ce pede incluir a mesm a estrutura diversas vezes dentro d e urna tabela se, caminhode menu
Ex/ro->
em vez de . INCLUDE, voce utilizar .1NCLU- XXX. 0 xxx representa sua escolha de
Substructures- >
quaisquer [reS caracreres . Esses treS caracte res serao acr escen cados em cada Expond AllSubs!f.
nome de campo que e inclufdo para roma-lo unico. fez os compos des
Por exemplo, imagine qu e voce precise armazenar dois enderecos em estrutvros oporecerem
no lisle.
ztxempl : urn endereqo de casa e uma lisra de end ereco. C omo mosrrado na
Figura 4.20, ztxe mp12 inclui a estrutura zt xaddr duas vez es. A primeira inclui ,
. INClU-Ol , [az com que U01 " seja acrescen tadc a cada urn dos n a m es de campo
cia estrutura. A segunda, . I NCLU -0 2, acr escenta "02" a ca da u rn. 0 resulrado,
mostrado na Figura 4.21, pode ser visto escolhendo 0 caminho de me nu
Extras- c-Substructures-> Expand All Subsrr.
rsra
F i g u ra 4 2 0 , .,.. .-.'4- .. .... ;-- ......,, - . -.•• •;': : - -.-., .

Alobelo z tx empl2
uti/izo 0 mrmu/6rio
.INCLU· XXX do
instru~O o incl ude
de modo q ue
ztxoddr po sso ser Resumo
inc/uldo duos vezes
sem dup/icor 05
• A s chaves est rang eiras asseguram a integridade de dados execurando
nomes de. compo . validacoes n a tela e oferecem ajuda F 4 para 0 usu i rio co rn Iisea de
valores pe rmissfv eis.
• A tabela de valor oferece u.ma proposta para a tabe la de ve rificac go e
oferece ajud a H .
e As tabelas de text o ofer~cem suporte de diverscs idiomas p ara des-
,i
cricoes no R/3 e especialment e p ara ajuda F4.
'!
• Dentro de uma tabela, cada camp o mon eta rio deve ser vinculado com
urn campo-chave monetario e cada campo de qu an ridade deve ser

Ii yinculado com urn camp o que ccntem as unidades de medida.


• As tabelas e as estrutura s sao muito semelhanres. A diferenca p rincip al
e que uma tabela tern um a tabela su bjacente de banc o de dado s e uma
esrrutura na o .
As estrvtvrcs e tc belcs no R/3 50 0 too semeihc ntes que, q ua ndo voce
olha a definic;oo de coda Doto Dictionary, e dlfkll diferenci6·las. Pora • Voce p ede utili zer est ru tu ras para de finir areas de trab alho ide nricas
determine r quo l v oce estc olho ndo, olhe 0 direito do compo de nome . em divers os programas. Voce p ode incluir uma est rurura dentro de
N voce v ere ume tobelc Transporent ou Structure. -outras est ru turas e tabelas.

i
I
I
1
-y r... _ !
176 " " ' D' EM ' 1 DIA l " ""

P&R o Nao. Apenas Key Fields Of A Tex t Table empr ega fu ncio-
nalidade de sistema. a s outros nao [azem nada acontecer - eles
servem prin cipalm enr e para documentacao.
o Urn programa em ABAP/4 ped e ignorar relacionamcntos de
chave estrangeira e inserir Iinhas que violarn a integridade
referendal? o As estruturas podem ter definicces de chave estrangeira?

o Sim. Entretanto, na maiaria das vezes, as dados vern pa ra seu


p r ogram a vi a um a in terface com 0 us udrio . A in te rface com 0
o Sim . Isso normalrnen te e feito porque uma tabela que inclui
uma estrutu ra pode herdar defini co es de chav e est rangeira deb.
u suario valida as infcrmacoes antes de voce inseri-Ias no banco Se quiser, voce pode desativar essa heranca ao incluir a estru-
de da dos, po rtanto as chaves estran geiras ja foram verificad as. tu r a.
Mesmo quand o impor tar dados de sistemas ex ternos, voce deve,
u tilizer BDC para arualizar as tabelas. Isso tam bern impoe Workshop
inte gridad e re feren cial sim ulan do sessoes de u su drio e passando as seguintes exercicios darso a voce pratic a na cri acao de chaves estrangeiras,
as dados ao programa via in ter face. Entr etanto , se vo ce atualiza campos esp eciais e estr uturas.
o banco de dados sem passar as dad os pela interface com 0
usufrio, seu p rogram a ern ABAP/ 4 deve ser escrit o cui - Teste
dad osam ence de mo do que ele Dao tr ansgri da a integridade
referen cial. 1. P ara urn a chave estrangeira ser criada, 0 ·que 0 campo de chave
estrangeira e a campo de tabela de verificacic devem ter ern eornum?
2. Qu al e a sintaxe para inclusao cia estrutura zs l dent ro cia tabela ztl?
o Se quero garantir a integridade referendal de meu banco de
dados, posso ir para 0 nivel de DBMS e criar Iimitacoes de 3. Q ual e a prap6sito de urna tabela de texto ?
integridade? Como isso afetaria 0 Rt3? 4. Assuma que a tabela de verificacsc ze exisre e tern uma chave primaria
consistindo em mandt , fl e f2 . Quais devern ser os campos de chave
o Nao, nunea atua lize as definicoe s de RDBM S dir etamente. Voce
s6 deve utilizer 0 DDIC do R/3 para alter ar as defini coe s dentro
primaria de uma tabela de rexro para zc?
5. Se voce cria urn campo mcnetario, que tipo de campo ele deve
do banco de dados. Se voce atu alizar 0 banco de dad os rtia~ua1­ referenciar?
mente, as defini coes de banc o de dados e as definicoes de DDIC
do R/3 serso inconsistences e os resultados serao imprevisfveis. Exercfcio 1
e rie uma tabela de veri fica~ ao de co digc de pals charnade ••• toOS. Ela sera
o Se exc1uo uma linha de uma tabela de verificacao, possa fazer
com que as linhas que tern 0 mesmo valor sejam automati-
. utilizada para validar todcs os codi gcs de pajses inse ridos em suas tabelas. As
especificacoes aparecem na Tabe1a 4.5.
camente excluid as da tabela de chave estrangeira tambern?
Tabela 4 .5 as ca mpos e sues corocterfsticas pera a tobela •• -tOOS
o Nso. Esse recurso e normalrnen te definido
clusao" e D aO esta disp onfvel no RJ3 .
"cascara em ex-
Descri~ao

Nome de campo PK Nome de D E


o o ti po de ch ave estrangeira Key Fields Of A Text Ta ble faz com
que 0 sistema se com porte diferentemente. Os outros tipos de Cliente
campo de chave estrangeira tern qualquer funcionalidade par mandt x mandt
tras deles? Chove do pafs
1andl x •• -1 andl
178 "RENDA EM!1 DIAl ABAPI4 DIU 0 DATA rncnoNARI. PARTE! 179

Depois que voce ativou essa tabela, va ao domfni c •• - 1andl e digite Ta bela 4. 1 O s ca mpos e sues corocter fsticos para 0 tobelo •• 0t 0059
• • - tOOs no campo Value T able, entao ative-o. Utilize SE16 para adicionar
Descri ~ a o
c6digos de parses asua tabela.
N om e PK Nome Nome Tipo Len Tabela de
Exerdcio 2 de camp o de DE d e OM verificD ljOO
e rie uma tabela de verificacao de c6digo de pais:chamada • • • t 005s. Ela sera Cliente
utilizada para validar todos as c6digos de parses ins eridos em sua s tabel as. As mandt x mandt
especificacoes aparecem na T abela 4.6. Chove de-pels
landl x ··· l andl - - -tOOS
Tabela 4 .6 Os campos e'sues ca raderistices pare a tabela • • · tOOSs C6dig o de reg ioo
rect o x • ··regi o •• 0 t OOSs
Descriscio
C6digo de cidod e
Nome de compo PK Nome de DE Ta bela de v e r ifi ca ~a o
citye x • •• ct t yc •• - ci tyc CHAR 4

C liente
Nao se esqueca de criar os relacion ament c s de chave estrangeira nos
mandt , mandt campos land1 e regie.
Cbcve de pais
, andl x . 0 -Jendl ••• t005 Exercfci o 5
C6di go de regioo
Depois que voce ativou a tabela, va ate 0 dominio ••• ci tyc e coloque • • ·t005g
regio x _. -regi o
no camp o Value Table, errdo ative . Utilize 5E1 6 para adicionar c6digos de
cidade para a tab ela • • • tOOSg e teste as chaves esrrangeiras tenrandc inserir
Depo is que voce ativou essa tabela, va no dominic - - - regi 0 e digite c6digos de pais e de regiao invalidos. Entao erie a ehave estr angeira dentro da
• - - t 005s no campo Value T able, entao ative-o. U tilize 5£16 para adicionar . tabela • - - knal no campo ct t yc e utilize 5E16 a fim de adieionar clientes para
c6digos de regijo para sua rab ela. Teste sua chave esrrangeira em 1and! rentando - - - knal. Teste 0 relacionamento de ehave esrrangeira rentando inserir c6digos
inserir urn codigc de pars invalido. ,.' de cidade invalidos . erie um a tabela de text o para - • - tOOSg e arribua a ela 0
nome - - • tOOShj as espe cificacoes sao mostradas na T abela 4.8.
Exerdcio 3
Ta b e la 4 .8 05 compos e suos caracterfsticas pa ra ta be lo 0 •• tDOSh
Ad icione relacionamentos de chave esrrangeira aprop riados para 1andl e para
campos regie em sua tabela - - -lfal. Util ize 5E16 para atualizar as linhas Descri~ cio
exist ences dentro de - - - 1fa 1 e insira ccdigcs de paises vslidos de regiso.
N ome PK Nom e N om e Tlpo Len Ta bela de
d e campo de DE d e OM verifl co~ac
Exerdcio 4
C1iente
erie uma tahela de verificacic para 0 campo ci ty c na tabela-me srre de cliente
• _. knal que voce criou na D ia 3. Nom eie essa tabelacomo ••• tOO 59.Ela deve
man dt , mandt
Chcve de idiomo
canter uma lista de c6digos validos de cidade. As especificacces para ela
aparecem na Tabela 4.7. spras spras tOO2
Chcve de pols
l andl x • • • , andl •• otOOS
C6digo de regioo
re qt o x .0.reg1 0 .00t005s
180 I APRE NDA EM21 DIAS ABA P/4 DlA ~ : O DA.TA Dl mONA RY, PARTE 2 I 181

Tabela 4.8 Connnuocdo Exerdcio 7


Descrit;ao Adicione mais dois campos para a tabela ••• knal. As especificacoes sao
m c st radas na Tabela 4.10.
Nome PK Nome Nome Tipo Len Tabela de
de D E de DM ve r i f i ca~a o
de campo Tabela 4 .10 Compos odiciono is e sues coroderistic as para ta bela ••• knal
C6digo de cidode Descrisao
cf tyc x ···cityc • • -t005g
Descrtcco Nome .Nome Nom e Tipo Len Decimal Tahela de
·· ·bezei 20 text20 CHAR 20 de cempo de DE de DiY". verifi(a~ao
bezei
li mite de Credttc
o relacionamento de chave estrangeira no campo ci tyc deve ter 0 Foreign cr editl • ·· cred it • • · creditl CURR 12 2
Key Field Type "Key Fields Of A Text Table". Utilize SE16 para criar C hcve monet6rio
descricoes para cada codigo de cidade. erie essas descricoes em dais idiomas: waers waers tcurc
E (ingles) e D (alemao). T est e sua tabela de texto criando uma nova entrada
ern • • • knal e pr essio nando F 4 no campo ci t yc. As descricoes de cada c6digo Ocampo eredi t 1 cont era 0 limite de credit c do cliente. 0 campo waers
de cidade devem aparece r na lista, mas some.nte em seu idio ma at ual de logon. contera a chave m onetdria pelo qual 0 limite de crediro ser valido. Nao esque~a
F aca 0 logon em elemao e teste novamenre para ver as descricoes em alemao. de adicionar 0 relacionamento de chave estrangeira atab ela de verificacio tcure .
e rie ajuda F I para 0 campo ereditl pre ssionand o 0 botao de documentacao
Exercfcio 6 no e1emento de dados.
erie uma est ru tura chamad a - - - t el . As especificacoes apare cem na Tabela 4.9. , Depois de adicionar esses dais campos, de urn clique duplo em credit',
no campo Reference Tab le digite _•• knal e, no campo Reference Field, digite
Ta b e la 4 .9 Os campos e sues caraderisticas para estruturo - - -tel cred i t1. Entao ative sua tabela. Utilize 5E16 para atua lizar registros de cliente
e adicione urn limite de credito para cada urn . Visualize a ajuda Fl que voce
Descr isao
cnou.
Nome de campo N ome de DE

Primeiro nemerc de telelone


tel ft te1fl
Segundo nemero de telefone
telf2 telf2
Numero de fox
telfx telfx
Ncmero de telex
te 1 xl telxl

~I
:J
Inclua essa estrutura no final de SUilS tabelas - - - knal e - - -1 fal. Utilize
SE16 para atualizar alguns de seus registros existentes e adicion e mimeros de
telefone a des .
~ --- -- ----- - -- - -
• • • • www • • • w---~~~--

oData Dictionary, Parte 3


Qbjetivos do capitulo
Depois de completar este capitulo. voce devers ser capaz de:
• Criar e utilizar indices secundarios apropriadament e
• Configurar os atributos tecnicos para as tabelas transparentes
• Configurar a utilizacio de buffer para as tabelas

Entendendo os indices de tabela


Urn indice e urn mecanismo de eficiencia para localizar rapidamente .linhas
dentro de uma tabela. Ele e necessaria porque os dados sao armazenados em
lima tabela na ordem em que foram adicionados (a ordem de chegada ).
Imagine voce rasgando tod as as paginas deste livre e enrao jogando-as
para cima e misturando rude. Voce cneso as junta em uma pilha sem considerar
qualquer ripe de ordem. Se voce fosse pr ocur ar urn uma pagina especffica
dentro dessa pilha, como faria?
Algumas pessoas poderiam apenas procurar aleato riament e na pilha es-
perando ter a sorte de encontra-la logo no comeco. Estou convencido de que
a maioria logo desistiria e entao iria folhear as paginas um a a uma. Obviamente,
esse trabalho seria mais facil se as paginas esrivessem rodas na ordem. Com as
paginas em ordem, voce poderia iniciar a buses em algum lugar no meio e
sabendo como virar as pdginas, rapidamente pcderia alcancar a desejada.

hltpjlwww .ca mpu ~. cam . br


'I""'!!''!!'''!!f'W • • • _ .. ~_

184 I APUNDA EM 21 DUS ABAPI4 0" s,oDATA OICTIOHARY,PARTE 3 I 185

Imagine que voce agora co loco u as pdginas de volta na ordem. Procurando examinar minuciosamente a tabela do inicio ao fim procur and o todas as linhas
aleatoriarnente no livro recentemenre ordenado, talvez vo ce co mece a procurar onde 1and1 ;: ' US' . A tabela na Figura 5.1 e muito pequena, mas esse e urn
a psgina que desc reve 0 SE16. Po r cnde voce cornelia a procurer? Voce nao sabe processo que consumiria mu ito tempo em uma tab ela maior.
a numero de pagina, entac olha 0 tndice remissivo. Este contern as palavras
Figura 5 1
m ais importantes classificadas em ordem alfabetica. Voce rapidamenre encon- IndIce primoria Icbe'e mile I
Urn indice de lobe/a Ii pe rc m Ho 1
tra SE16 no Indice e cbtem urn mimero de pagina. Lltilizando isso, voce
umo c6pio de umo au nOdo
pesquisa 0 livro para localizar essa pagina. mcis ca /unos ,
I"/nr linho
Para criar um Iodice, 0 editor duplica informacoes importanres e entao ormozenodos em
ordem clossifjcoda
.1 , 1 .3
as classifies, colocando-as no fim do livro, separado do corpo. Quando voce .2 3 2 .6
com pan/eiros para as
olba essas informaco es, esn olhando nas informacoes originais ? Nao, e claro .
Voce esta olhando em uma c6pia das informacces originais; elas foram dupli-
linhos originals.
.,.3 1
7 , .,
3 .2

cadas. a livro ocupa urn pouco mais de espacc em sua estante por causa do .5 6 5 .7
Iodi ce, de aumenta urn pouco 0 prelfo do livro por causa do tempo e esforc c .6 2 6 .s
exigido para crid-lo, mas nioguern se queixa disso, porque economiza muitas .7 S 7 .,
horas quando voce quer localiaar alga.
Uma tabela no ban co de dados emuito parecida com esse livre. Para cada Ag ora, pense novamente no exemplo de livre . As vezes, urn livro tern
linha e dado urn nurnero sequencial quando uma linha e adicionada a uma m ais de urn Indice . P or exempl o, urn livre sobre ut ilizacces med icinais de ervas
rabela, de manei ra mui to parecida com urn numero de pdgina. As colunas p od e ter 0 Indice normal, alem de urn Indice somente pa ra nom es comuns de
importantes sao copiad as em urn Ind ice e c1assificadas de maneira seme - planta, o urro apenas para nomes de boesnica e urn terceiro apenas para efeitos
Ihante a urn Indice remissivo. Para localizar qualquer parte dos dados, a medicinais , Para crier esses indices, as informacoes pr ecisam ser c1assificadas e
sistema pesquisa primeiro 0 Indice para encontrar 0 mimero de linha e enesc duplicadas em mais tres lugares no final do livre. En eso, ha quatco maneiras de
rapidamente localiza a linha. localizar urn numero de pagina rapidamente: por meio do Iodice comurnente
Cada tab ela do R/3 tern urn Indice primdrio construfdo na chave primaria utilizado ou por -qualquer dos tres indices adici onais . .
da tabela. Esse Iodice e necessaria porque os dados na tabela sao arm azenados
na ordem que [cram adicionados a tabela. Quando uma linha e adicionada,' as MOYO ~ 0 fndice comumente utllizcdc e on61090 0 0 Indlce prim6rio de umo tobelo. Os
informacoes-chave sao classificadas e copiadas no Iodice, junto co m urn pon· rIt~O r indices cd icloncis s60 cnclcqos 0 indices secund6rios. Para suporter uma
tei ro na linha o riginal, A Figura 5.1 mostra urn exemplo utilizando a tabela clc vsvlc where em um campo de chove n60 prlmc ric, pode-se definir urn lndice
ztxlfal. Os dados do campo 1Hnr em ztxlfa1 sao capiados no indice, classi- secund6rio. Umo tobe la pede fer multiplos ind ices se cund6rios.
ficados alfabeticameme e arrnazenados junto com 0 numero da linba original. A Figura 5.2 ilustra urn indice secundario em ztxl fal-l and!.
(0 campo mandt foi deixado de fora para simplificar 0 exemplo.) Urn indice aumenta 0 desempenho tremendamente. Em uma tabela
comendo urn milhao de linhas, urn select em uma coluna comendo valores
o e
numero de linho infernomenle otribuido pelo bonco de dodos ; unicos que nao sao suportados por urn indice leria, em m edia, 500.000 registros
voce nunce 0 ve no ODIC. Ele e utilizodo pe lo indice porc opon tor de para localizar a primeira correspondencia, com uma visao pessimista de urn
volta para a linno original, do qual as dodos vierom. rnilhao de compara~6es.
Se voce adiciona u rn indice, 0 sistema pode utilizar urn algoritffio billario
Quando a inStru)ao select * from ztxlfal where 1Hnr :. '0000001050'
eexecutada, 0 sistema reconhece que ha uma 1i fnr ja classificada em urn indice
,I de pesquisa para localizar 0 registro, depois co mparan do uma medi a de apenas
10 registros J com urn cen:irio de piar CasO de 20 registros! 1sso e 50.000 vezes
I' mais rapido. Por essa razao, deve assegurar que oscampos em urnacUusula where
., a
e assim a ut iliza automaticamente. sistema encontra 1050 no indice e obtem
o numero de linha 2. 0 siStema entao procura na tabela 0 numero de linha 2. sempre serao suportados po r urn fndice . Isso pode ser feito exibindo indices
existentes, e entao organizando sua logica para utilizar esses campos ou criando
Agora, suponha que a instru)ao select * from zt xlfal where landl ;:
,
"

'I urn indi ce secundario. .


I US I foi executada. 0 .in dice e c1assificado por 1i fnr, nao por 1andl . A coluna

.,I landl nao esta em qualquer ordem especffica na tabela. 0 sistema tera de
J
II
)
LI
. .,5 , ..'" .ne (,F " If '

E1.gurQ 5 2 Tobelom lfo1 indice secvr.dcirio Fig mQ 5 3 1=." Wi ,l , ay A H . t"j xl


Indice prim6rio . ..... (. ' .... 1MOO S_ · IWIl ·.,... ·~ · ..-., ""," ~ ' ~':_'~'-""" " '''',~_':'!'''' ' ~ ~ ' '''' ~._ ,. ' "':' l"'I,
Urn IndiceseclJnd6rio em lond l o in<!ice Z "1._ . 3.~ C.AIX : ~ H U · n .oC", :_:~-"~'~"":"
permite que voce
,
n.O do n." do n." do secundorio no lobe/a .~ t-I '8t :".._ -,,·~ ,~; :_'. ~:::.;.;.: -: . ~.,.. : <.
ztxlfal e
:10:>-..:" _'1.:""-.f'"7"" ~~ ' ",:.T. -, ,~- .~.
pesquise ropidomente nnr
., , linho
,
linna limr lond1 lendl linho

~~~i~;~~§j;~~;~~0r:;:·; :.~ ~~./~5 '.


em outros co/uno!> .3 US CA 2 co mpos la petos
o/@m dessos no chove campos mandt e
prim6rio.
.2
,
3 2 .6 CA CA
,
6
londl .
.3
., , .,.2
3 US DE

.5
7
6 5 .7
DE
DE
DE
US ,
5

.6 2 6 .5 CA US 3
.7 5 7 ., US US 7

Exibin d o ind ice s


Cada Indice em R13 tern urn unico para tres idenrificadores de caractere, ou id.
a Iodice primfrio sempre tern urn id de 0 (zero) . Urn id de Indice secundario
pode ser qualquer Dutro n umero ou urn caractere alfabetico .
_.__ "" ........_...... ...~ ---:..;. ~ ...,.. ~ .. ~ ~ "'. -·=.;;-_ ~ . . _l _

SnE EN(ij ~ Inicie a ScreenCam "How to Display Se-condaryIndexes" agora.


a
procedimentc precedence somente mc strara indices secundsrios . 0
Indice na chave p rimfria (Indic e 0) DaO aparece nessa Iista .
Para exibir os ind ices secun derios existentes em uma tabela de banco de

I dados, siga este pro cedimen ro: smENW~ Inicie a ScreenCam "How fa Display All Indexes" a gora .

l
1. Exiba a tabela.
2. Pressione 0 borao Inde xes. " na barra de [erramentas Application. Para exibir todos as indices, incluinde 0 primario, siga estes passes:
Se voce nso vir esse batao , sua janela pede estar mui to estreita.

I
1. Exiba a tabela.
. Alargue-a a u escolha 0 caminh o de menu Goro-> Indexes. ~.~..
2. Escolha 0 caminho de menu Utilities->Database Utility. A tela
3. Se existirem indices secundarios, sera exibida uma Iista dele;-em uma
ABA P/4 Dictionary: Utiliry for Database Tables e exibida.
caixa de dialogo. Se D a O existi r nenhum, sed'exibida uma mensagem.
3. Escolha 0 caminho de menu Extras-c-Databa se Object- s-D isp lay.
4. Para exibir urn deles, de urn clique duplo nele . 0 Jndice e exibido na
U rna lisca de todos os campos na tabela e exibida e embaixo deja esd.
tela ABAP/ 4 D iction ary: Ta ble: Display I ndex, como mosrrado na
uma Iista de eodos os indices com seus camp os, incluindc 0 Indice O.
Figura 5.3.

o status do Indice eexibido no campo Status. A existencia do Indice no Considero<;6es 00 crier lim Ind ice
banco de dados e ind icada po r uma mensagem que aparece embaixo do campo
Status. No campo DB Ind ex Name esd. 0 nome do Indice como e conhecido NOYO ..... Urn Indice pede co nsisfirern mois de um campo. Pa r exemplc, construindo urn
no banco de dad os. 0 nome de indice no banco de dados efo rmado peIo nome TtU.O " lndice secund6rio em landl e re gi e ofivc select * f r om ztxlfal where
landl = 'US' and reg ie = ' HA l o loccllzcr ropidarnente linhas cc rrespcndentes.
cia tabela, seguido po r su blinhados e depois pelo id do Indice. Na pane inferior Quando existem multiplos indices (urn prim6 rio e urn ou mais indice:; secund6rios), 0
I" cia janela, esrdo os campos que abrangem 0 Indice . A ordem de ripe do Indice
I' RDBMS ufilizo urn otimizador para selecionar a melhor. Para escolher urn Indice, 0
i ~ a mesma que a ordem d e campo. ofimlzc dc r examine as names de campo na cl6usulo where e entcc procure urn indice
que contenha as mesmos ~ames de cam po no ordem especlbcodo no d6usulo where.
Partonta, ce rfifiq ue-se de que 0 sistema escolho 0 fndice que voce pretende, espedfique
os campos no cl6usufa where no mesmo oroem que eles oporecem no fndice.
188 APR ENDAEM 21 DIAS ABA PH
D~ s.o DATA DlenOHARY, PARTE 3 J 189

indice s e MANDT Ao criar ou modificar Indi ces, rente nao utilizar urn camp o que ji esn em
Se urna rab ela comeca com 0 campo mandt, seu s indices tambem devem com ecar urn deles. Ha uma chance, quando urn programa pree xist ente for execurado,
com esse campo. Se um a tab ela comelja com mandt e urn Indice nao, 0 ot imi- de que 0 otimizador va escolh er 0 novo Iodic e e urn programa preexisrente
aado r pode nao ut ilizar 0 Ind ice. po de tornar-se mais lent o.
Lernbre -se, se voce pre cisar, do recu rso de tr atamento automdrico de
clien re do Open SQ L. Q uando select *" from ztxlfal where landl ;: ' US' e Diret rizes para crior urn Indice
executada, 0 SQL real enviado ao ban co de dad os e select *" fro :n ztxlfa l Via de regra, siga estas diretrizes quan do voce criar urn Jndice:
where 0 mandt = sy-mandt e 1andl ;: 'USI • Sy-mandt contern 0 cliente atual de
• Nao ren te adicion ar indices desnecessarios. Per gunte-se como voce
lo gon . Q uando voce seleciona Iinhas de uma tabela utilizando Open SQL, 0
pode esc rever a ccdigc para utilizar urn Iodice existen te.
siste ma au to maricame nte adiciona sy-mandt aclausula where, que faz com que
apenas as linhas que pert enc em ao cliente atual de logon sejam localizadas. • Tente evitar indic es que se sobrepoem; em outras palavras, evite in cluir
Quando voce cria urn indice em uma tabela con tendo mandt, tambem deve o mesmo campo em multiples in dic es.
incluir ma ndt no Indice. El e deve vir primei ro no Iodice, p orque sempre apare- • T en ce fazer indices mu iro seletivos, mas nao inclua camp os que au -
cera p rimei ro no SQ L gerado. mente m a seletividade em apenas poucos nfveis.
No resta nre dessa discussao, par ta do pressuposto que mandt esra inc1uido
em todos os indices.
H6 um maximo de 15 indices secundc rtos pe r tcbelc permltrdcs pelo
Codifique um Sel ect para utilizer urn dado indic e R/3.

NOVO .... Sevocecodilicc sel ect *" from ztx lfal where regia" ' MA ' , precisa haver
Tn.ll.O ~ urn indice iniciondeemmandt e regi 0 para cssegurarque 0 otimizodoroutilize. Cri o ndo urn Iodice secun da rio
Se voce ccditicc sel ect *" from zt xl fa l where lan dl ;: IUS' and regia " ' MA',
deve haver umIndice que conternmandt, 1and! e regia. 0 Indice ideal tcmbernas terio S(REEHCAM~ Inicie a ScreenCam "How to Create a Secondary lodex" agora.
nesso mesmo ordem. Se ndc houver um Indice nessa ordem, mas hoover outro
ccmecondc com mandt e 1andl, a otimizodor a utilizar6 para cc rrespcnder os primeircs
doiscamposdo c16usulo where e entco execvtor umvorreduro de intervo/o de fndice pdro Para criar u rn Indice secundario:
localizer uma ccrrespondendo em regio. Uma vorreduro de intervolo de indicej ! umo
busco seqcencol por uma porte de um fndlce. 1. Exiba a tabela.. Voce deve comecar na tela Di ction ary: Table/ St ru c-
ture: Di splay Fields.
ind ices se letivos e a efic6c ia do fndice 2. P ressione a batao Indexes. . . na barra de ferram entas Application
Se a clf us ula where cont iver mais campos que 0 Indic e, 0 sistema utilizara 0
(ou escolha 0 caminho de menu Gorc-e-Indexes. . .)
Indi ce para esrreitar a pesquisa. 0 sistema entao leri os registros da rabela e os
3. Se os indices secundsrios ja exisr irem, uma lisra deles sera exibida em
varrera p ara localizar corr esp ondencias. Par exemplo, se urn Iodi ce for com-
uma caixa de dif logo identificada como Indexes for Table xxxxx. Para
p osto pelos campos Fl e F2e voc e codi fies wher e Fl = 1 and F2 '" 2 and F3 '" 3,
o sistem a somente p oderf utilizar 0 Indice para local izar regisrr o s em que Fl=l criar urn Indice, pr essione 0 ba tao Create. A caixa de dialogo Create
e F2==2. Ele lera esses regisrros da tabela para saber quais tern F3=3. Portanto, 0 Index se ra exlbida.
Indice sera apenas parciahn en te eficaz. Ele teria mais eficacia se contivess e 4. Se nenhurn Indice secundaric exisrir, voce nao veri uma Iista de
todos os campos: Fl, F2 e n . indices. Em vez disso, vera a caixa de diaIogo Create Index ime-
diatamente.
NOVO.... Qual 0 grau de efic6cia do fndice com F3? Depende do moneirocomoos dodos 5. Insira u rn id de fndice no cam po Index rD. Os indices de cliente
TWlO ~ 500 distribufdos no fabelo. Se a combina<;ao de F1 e F2 for muifo especifico (ou dev em comelja! com You Z, embora 0 sistema nao imponha isso.
se/etiva) e resultar em apenos a lgumas linhos correspondentes, a inclice i6 sere muifo
eficcz. Adicionor F3 00 indice nesse coso pode 1"100 ser vontajoso pe r causa do overhead 6. Pressione 0 botao Continue. A tela ABAP/ 4 Dictionary: Ta ble:
do fndice durante as atua l izo~6 e s de tabela. Se a combina ~oo de Fl e F2 resultar no Maintain In dex e exibida .
sele<;oo de um grande nvmero de linhas da tobelo, a Indice 1"160 estoro muito seletivo e 7. No campo Short T ext, digite uma descri~ao do fndice.
adicionar F3 provovelmente oumentora 0 desempenho e reduzir6 a consumo de recurso.
I AP RENO A EM 21 eus ABAP/4 D1AS, OOATA DlCTJONARY. P" IT3 I 191

8. Na coluna Fl d Name, digite os campos que 0 Indi ce deve abranger na a eabela, entao vo ce nao pcders excluir n enhu m. Se cs indices
ordem em qu e eles deve m ser classificados. secondaries ja existire m, uma lista deles sera exibida em uma caixa de
9. Se os valores nesses cam p os, quando reun idos , devern ser sempre diilogo chamada Indexe s for Table xxxxx.
un icos, facsa uma marca de verificacao na caixa de seleclo Unique 3. De urn clique dupl o no indice que vo ce quer excluir. A tela ABAP/4
Index. Dictionary: Table: Display Index e mostrada.
10. P ressione 0 botao Save na barra de [erramentas Application . as 4. Pressione 0 batao Display < - > Change na barra de [erramentas
valores nos campos Status sao ago ra Newe Saved e di retamente aba.ixo App lication . A tela alterna pa ra mod o de alteracao e 0 titulo da tela e
deles c mensagem Does not exi s t in t he database aparece. Tarnbern ABAP/4 Dictionary: Table: Maintain Index .
aparece a mensagem Index xxx to table xxxxx was sa ved na p arte 5. Esco lha 0 caminho de menu Ind ex- > Delete. A caixa de dialc gc
in ferior da janela na barra de sta tu s. D elete Index D efinicion aparece p edin do para coofinn ar a solicitacao
11. Pression e 0 batao A ctivate na barra de ferramentas Application. 0 de exclusao.
sistema gera a SQ L e envia pa ra 0 RD BMS, criando 0 Iodice no banco 6. Pressio n e 0 batao Yes para excluir 0 in dice. Voce e Ievado de volta a
de dados . Se bem-sucedido, os eampos Status exib em Ac t 1ve e Saved tela Dict ionary: T able/Structure: D isplay Fiel ds . A mensagern Index
. e, ebaixo dos campos de status , aparece a mens agem Exists in t he xxxxx deleted aparec e na barra de status.
database. a campo DB Index Name conrerf 0 nome do Iodice no
banco de dados. Alem disso, e exib ida a mensagem Index xxxxx was No pass o seis, pres sionar 0 botao Yes faz com que 0 Indice seja excluido
success fu l ly activated. na barra destatus. do banco de dad os. Ao rer ornar a tela Dictionary: Table/ Structure: Display
12. Pressione Back. A t ela Indexes for Tabl e xxxxx e exibida. Field s, voce nao precisa salvar a tabela. Note tam bem que voce DaO pode
desfazer a exclusso pre ssionando a batao Cancel na te la de exibicac de tabela.
13. Pres sione Cancel para retorn ar a tela Dictionary: Table/S tructure:
Display Fields.
Deterrni no n do qual ind ice est6 sendo utilizodo
Voce aprendeu a criar urn indice secundario. O s indices melhoram a Quando uma instrucao sel ect eexecutada, a oti mizad or tenta escolher 0 indice
eficiencia da insrrucao sel ect. mais apr opriado para acelerar a recuperaclo de da dos. Se voce river varies
indices em uma tabel a, como voce pode dizer qual Indice est a realmen te sendc
utilizado ou me smo se urn deles esta sendo utili zado?
Se voce fizer umo morco de verificoC;ao no coixo de seleccc Unique
Index, c ccmblnoccc de compos no indice eseguromente fundomen tal;
e
isso imposto pe lo RDBMS, Umc instrvC;a o de inse rC;ao o u modificoc;oo
folhora se 0 cc mblnc cc c de vclc res nos compos de Indice jo estiver
presente no tabe lo.
~o Somente uma pessoo pode execut or um rostrea mento de SQl de cede
vea, lembre-se 'de deso tivor 0 rastreomento quando terminor. 0
rastreome nto de SQl 1omo lentc 0 sistemo.

Excluindo urn Ind ice secund6rio Para fazer isso, voc e pode utilizar a ferramenta de rasrreamento de SQL.

S(mNUM~ Inide a ScreenCam "How to Delete 0 Secondory Index" ogoro . S(RHNUM~ lnlce 0 ScreenCom "How to Use SQl Troce to Determine the IndexUsed" ogora .

Para excluir urn Indice secundario: Para dererminar qual Iodice esta sen do utili zado por uma instrucio
se lect:
1. Exiba a rabela. Voce deve comecar na tela Dictionary: Table/Struc-
tu re: Display Fields 1. erie urn pequeno programa em ABI\.P/ 4 que contenha apenas a
2. P ressione 0 borso I nd exes. .. na barra de [erramentas Application ins trucao select. Antes de prosseguir, tesre-o pa ra certificar-se de
(au escolha 0 caminho de menu Go to->Inclexes . . .) . Se voce vir a que funciona.
.caixa de dialogo Create Index, ne nhum Indi ce secundario existira para
192 I APREHDA EM 21 DIAS AW l' DIAs,oDATADlcnDHARY,PARTE ' I 193

2. Abra esse programa no modo de edicsc pan. que ele esreja promo e 15. D igite %s c no camp o Co mm and e pressione a tecla Ent er. A caixa de
espe rando para ser execu tad o. dialcgc Find e exibida..
3. Abra uma nov a scssa o utilizando 0 caminho de me nu Syst em- > C re- 16. Di gite 0 no me da tabela que voce esta rasrreando no campo Search
ate sessron. For. (Essa e a tabela identificada na instrucao sel ect em seu programa
4. Execut e a tra nsacio STOS (digit e I n stCS - zero-cinco, e ndo O -cinco em ABAJ.'/ 4.) ,
- no campo C o m m and o u esco lha 0 ca m inho de m en u Sys- 17. Pr essione 0 bono Find. V ma lista de resultados de pesqui sa devers
tem -> Urilities->SQL Tra ce) . A tela T race SQ L D atabase Requests ser exibida com seu nom e de tabela dest acado.
e exibida. 18. D e urn clique no primeiro nome destacado da tabela. Voce e levad o
5. Se a caixa T race SQL Starus Information exibe Tr ace SQl is switched de volta a tela T ra ce SQ L: List Database Requ ests. Seu cursor e
off, va para 0 passo 7. posieionado na primeira linha qu e co ntern seu nome de tabela. A
6. Nesse p ontO, a caixa Tra ce SQL Status Information con tem Trace direi ra dele, na coluna O peration, deve estar a palavra PRE PARE , OP EN
SQ l switc hed on by, seguido pelc id de usua ric qu e ativou 0 ras- ou REOP EN.
rreamento e a data e a ho ra que fo iiniciado. Voce deve altern a-lc antes 19. P re ssione 0 bcrac Explain SQ L na barra de ferr amen tas Application.
de poder prosseguir. Se 0 rastreamento foi iniciado dent ro da ultima A tela Show Exec ution Plan for SQL Statement e exibi da.
hera, e pcssrvel que ainda este]a sendo utili zado . Ent re em con tat o 20. Role para baixo ate 0 plan o de execucao. 0 Indice utilizado sera
com 0 usufrio indicado ou rente novam ente mais tarde. Se 0 ras- exibi do em azul.
tre amentc foi inicia do hi hora s ou dias, 0 usuario pr ovavelm ente 0
deixou ativo por erro e ele, com s eguran~a, pede ser desativado. Para Voce aprendeu a executar urn rastr eamen to de SQL Isso ajudad. voce a
desligar 0 rastreamento, pressione 0 bono Trace Off. A mensa gem determinar qual Indice esd. sendo urilizado.
na caixa Trace SQL Statu s In fo rmation agora dev e ser Trace SQL is
switc hed off. Exibiodo coofig uro(;oe S fecoicas
7. P ressio ne 0 botao Trace On. A caixa de didlogo Trace SQLDatabase P ara exibir as configuracoes tecnicas de uma tabela, exiba a tabela e pr essio ne
Requests eexib ida. 0 campo DB -Trace for User deve center seu ID o botac Technical Settings na berra de ferrame n tas Application . (Se 0 bo tac
de usua rio. Se seu ID de usuario nao estive r nesse camp o, insi ra-o na o estiv er af, sua janela pode estar muito estreita. T en te alargar sua janela ou
agora . ~_::.' utilize 0 cam inho de m enu G orc-e-Technical Settings.) Para modificar essas
8. Pressione 0 botao OK. Vo ce e levado de volta a tela Trace SQ L co nfiguracoes, pression e 0 bor ac D isplay <-> C hange na barra de [erramentas
Database Requ est s e as informacoes de sta tus exibem Trace SQL Application. A tela ABAP/4 Dictiona ry : Ma in tain Te chnical Settings eexibida,
'switc hed on by. indicando qu e voce ligou 0 rasrream ento. como mostrado na Figura 5.4.
9. Aherne de volta para a janela que contern sua sessso de editor (aqu ela
com seu programa esp eran do para ser executado) .
Closse de dodos
10. Press ione F 8 para executar seu programa. (Apenas pressione F 8, nao NOVO'" A cosse de dodos determino a tablespoce 0 que 0 fobelo e ctribuldo. (0 termo
fa~a mais nad a, nem mesmo p ressione 0 bo tio Back.) Tft»O ~ "tcbt espoce" se cplico 0 bancos de dodo s Oracle. Pora lnformix, substituo pelo
11. Quando seu programa t iver side execut ado e a ampulheta nao estiver termo "'DBS spa ce"'.) Um tabJespoce e um orquivo fisico no disco que e uttlucdc para
mais sendo exibida, alt em e de volta ajan ela de rastr eam en to. crmczencr tcbelcs . Coda tc belc eotribuida a um toblespoce. As tabela s com corocteristi-
cos seme lho ntes nc rrnc lmente sao agrupoda s em urn tab lespace, ossim toblespcces sa o
12. Pressi one 0 botao T race Off. As inf ormacce s de status leem Trace as unidad es a dministrotivos utilizada s pelo DBA pa ra gerencior 0 ban co de dodos. Pa r
SQL is switched off. exernplo, a s tobelas que cresce m rcp idomente esto roo ogrupodas em urn toblespoce em
13. Pression e 0 ba tao List Tra ce. A caixa de diilogo T race SQL Database urn disco com muilo espo<;olivre.
Requests e exibida. Os campos nessa tela jacon terao os valore s. Ca da classe de dados tern urn tablespaee associado. Quando voce ativa
14. Pres sione 0 botao OK. Vo ce pode precisar espe rar urn pou eo, no uma tabela. ela e criada no tablespac e associado a essa c1asse de dados. Se voce
maximo doi s minutos. A tela Trace SQ L: List D atabase Requ ests e alte ra a elasse de dados quando a tabela est a ativa, oada aco m ece; ela nao se
exibida. move para outro tab lespace .
.w.. w.w.w • • • • • ---~------

D1A5: 0 OATADIITIONARY,PARTE 3 ,. 195


194 I APRENDA . M21 DlAS AD AP/'

E.i.o.u-t:a-5 4 ·'!'i ii @ Hg ! • § ffl ft' 9\ [ ,


.:>.!L.-__ ~ : t.-- JIloiloo '.~ '''II<\; ' ._. ~' . , ~~,.;._~f"~" \;. :,';·...r··_;"~:: ·.'-c-:. .••:.•, ,',-•.,> _ , -~. ;:' ,. ',
_1" 1>:1
"" .' '''
Alem de ssas categories, p ode haver classes de dados USER tambem. Estas
No telo A.B.AP/4 sao criadas par seu DBA, que 0 dirigira na esc olha delas nas hora s apropriadas.

Catego ria de tamanbo


o camp o Size Category permite que vo ce esp ecifique 0 mimero maximo de
regist ros que espera que essa tabela arm azene. Vo ce ira con figurar 0 tamanhc
da exten sao ini cial e das pr 6ximas, assim como 0 nu m ero maximo de extens6es
permitidas por essa tabela. VIDa eaensso e a quantidade de especc alocado para
uma tab ela. A extens fio inicial ea quantidade de espa<;o alocado pa ra um a tabela
quando e criada. Se uma tabela consome esse espa<;o, out ra exte ns ao sera
alocada, fazendo com que 0 espa!jo de tab ela seja est endido .
As cacegorias de tam anh o sao sempre de 0 a 4, mas a namero de re gist ros
.- ~-~.~~;~ .~.,~~.: .".<:~) ,~~~%~.~\,~,~,
i_~ 'i~i'f.;"'!$C~~?" ?*;~~~n'::.l espera dos em carla categoria de tamanlro mudare de acor do com cede tabela
:I~W-ID'; ~:;- l:, :)'~ :;" '; .:1:.-t(,9,~~§·f~:;;:'
baseada n o co mprim ento de uma linha. Esco lha uma categoria apr o pr iada
*~""-'~~~::j;.~;r~.~ ' "·~··"~~~i{~l:ll~ baseada no numero m aximo de registros qu e voc e espera que a tab ela arm azen e.
.....,. ~--"':.;.,.:..~~~

~o
Q uando escolher umc ca teg orio de tomonho, se jc ge neroso . No R!3
As classes de dados imporrantes sao: e muito melhor supe restimar, que subest imor esse pcrernetrc . Se a
cotegorio de tomonho e muito peq ueno e a tooele cresc e mois que a
• APPLO au dados-mestres . Escolhendo APPLO (dados-m est res) , signifies clccccec inicicl, 0 RDBMS oloco outra extenseo. Extens6es seccn dcrlc s
que a tab ela nao e atualizada com freqeencia e cresce lentamente. Ela redvaem 0 dese mpen ho e exigem uma reorqc nlzocec do lable spoce
sera colocada em urn tablespace com tab elas semelhanres. 0 mestre para sere m remcvidos. As reorgcnizocoes podem se r muito diflceis de
do fabricante e as tabelas-mes tres do cliente sao bans exem plo s de , executo r e murn banco de do dos g rond e, especiolmente e m urn que ·
exijo a lto disponibilidode. t muito mois focll reduzir uma ca tegorio de
dados -mestres. tom onho excessivome nte qeneroso do que ournentor umo subesti-
• APPLl ou dados de transaoio , Escolher APP LI (dados de traqsj.<;ao), modo .
significa que a tabela se destina a ser atualizada com frequencia e
crescer rapidamente. Pedidos feitos a fabricantes e pedidos recebidos
de clientes sao bons exemplos de dados de transacoes. As eabelas que Exibindo 0 numero de extensoes alocadas para
contem essas ordens terao uma classe de dados de APPLl. umo tabela
• APPL2 OU dodos de personalizacso. Escolher APPL2 (clados de perso- Voce po de exibir a ndmero de extens6es aIoca das para uma tabel a ut ilizando
nalizacao), significa que 05 conteudos cia tabela sao determinados a seguinte proce dim ento.
am es da implementacio e njio alteram com frequencia depcis disso .
As tabelas de verificacao e suas tabe1as de texto associadas, como smENCAM.... lnicie a Scree rrCom "How to Display the N umbe r of Extents Used by a Icble"
ztxt005 e ztxt OOSt , sao bons exemplos de tabelas que devem ter uma " a gora.
classede dados de APPL2. Para exibi r a mimero de extens6es para uma tabela:

1. Ex ecute tr ansaclo DB02. (Digire / n d b02 no campo C ommand e


Outros classes de dodos podem se r exlbtdos pressfcncn do-se 0 seta pressione a tecla En ter.) A te la Database Performance: T ables and
perc ba ixo no fim do compo Doto Closs e ernoc press ionondo-se a
Indexes e exibi da.
bctcc System Data Types. Esse s classes s6 devem ser vtllizodos pe lo
SAP; elcs serve m pa ra as tcbelcs de sistema do R!3 que c rmoze norn, 2. Pres sione 0 bctao D etailed ana lysis. Uma caixa de dialogo Memory
par exemplo, as roforrrocees de Doto Didi on o"ry e a c6 digo·fonte do Ma nagem ent: T ables and Indexes e exibida.
progromo.
.*•. wwww •• ww • • • _ • • ~-- - ~ ~

DIA 5:DDATADICTIONARY, PARTE3 197


APRENDA EM 21 DIAS ABAP/4

Colocando os dados no buffer, voce aum enta 0 desempen ho de duas


3. Digite 0 nome cia tabela no campo Tables e pressione 0 batao OK.
maneiras significativas:
VIDa tela M emory Management: Tables and Ind exes e exibida. 0
nome de tabela apa rece ria lista. • Os programas que udlizam os dados no buffer sao execut ado s mais
rapido porque eles nao precisam esperar as informacoes chegarem do
4. De urn clique duplo no nom e de tabela. Uma caixa de dialogo Memory
banco de dados . Isso reduz os arrasos d e espera pelo ban co de dados
Management: T ables and Indexes eexibida.
e a rede que as conecta.
5. Selecione 0 ba tao de opcao Extents.
• Os outros programas que preeisam acessar a banco de dados sao
6. Pressione 0botao OK. Uma tela Memory Management: Tables and
executados mais rapido porque hoi men os carga no ba nco de dados e
Indexes e exibida, contendo a Iisca de exrensoes, seus nomes de
menos trafegc na rede.
tablespace, n umeros de extensao, mimero frsico de arquivc, tamanho
de bloco, tamanho de extensao e mimero de blocos na extensao. Ha Colocar uma tabel a no buffer pode fazer com que uma sel ect execut e 10
um a linha nessa lis ta para cada extens ao. a 1OOvezes mais rapido ou mais . A princfpio, pode pareceruma boa id eia u tilizar
buffer em cada tabela no sistema. Entretanto, as buffers sao armazenados
Voce aprendeu a exam inar 0 numero de extensoes alocadas em uma inteiramente na RAM, assim 0 especc e limitado pela qu antidade de RAM
tabela. I sso informara se a t abela p rec isara ser reorganizada au nao. disponfvel. De faro, a quantidade de dados e dio superior a de RA M que as
tabelas devem ser co locadas no buffer prudentemenre para evitar overruns . Se
lliiJi za ~ii Q de buffer em um a tg be lo acc nt ece urn overrun em urn buffer, ele pode fazer troca (swap) para 0 disco,
Como mencionadono Dia 1, as dados podem ser colocados no buffer na RAM que pode apagar qualquer desempenho ganho pela utilizacao de buffer.
no servidor de aplicat ivo. Isso e contro lado individualmenre e especificado nas As tabelas contendo tipos de dados numericos ria ehave primaria nao
configuracoes tecnicas para cada tabe la {veja a Figura 504). podem estar no buffer. Os tipos de dedos numericcs -de DDIC sao CURR, DEC,
Sempre que uma instrucao Open SQ L e utilizada para ler urn regis tro, 0 FLTP, INTI, INT2, INT4, PREC e QUAN.
buffer de dados e verificado p rimeiro para ver se os dados estao ai. Se nao
est iverem, as dad os sao lidos do banco de dados. Se as atriburos cia t abela
indicarem que os dad os devem ser cclocados no buffer, 0 regis tro e salvo n~ :
A trcnsoceo 5T02 exibe buffers e estctleflcc de usc. No tela Tune
Summary, os buffers de dodos sao chcmodcs Generic Key e Single
RAM no servido r de aplicativo em buffers de dados. Mais tarde, se esse registro Record. Urn clique duplo em coda umc desscs liohas exibir6 umo
for lid o novam ente, ele sera lid o atraves do buffer, em vez do banco de dados. analise detclhcdo. A partir del, os cbietos no buffer podem ester
Urn diagrams desse processo e mostra do na Figura 5.5. exibidcs pressloncndo -se 0 botoc Buffered Objects no borro de ferro-
mentes Application.
Elg ll r g 5 5 CD 0 prccessc de trobolho
Os dodos podem ser
colocodos no buHer
verik o 0 buffer perc ver
se es dodos eslo o ui. Se
o e
consultor de Basis 0 responsavel par monitorar a s buff ers e evitar
no
Progromo em
WI. do servidor ABAf'l4 nco esuverem. que a falta de buffer tome lema 0 sistema. Antes de utilizar bu ff er em u ma
sendo
do oplicotivo. exeectcdc em (2) ele obtl!lm 05 dodos do banco cabela, e uma boa ideia conversar com seu consultor de Basis.
um procl!SSO de dodos e
de trcbclbc

o® preenche 0 buffer. Sincronizac;cio do b uffer


Acesscs subseqiienles leem os
dodos do buffer. NOVO ~ Se voce fiver dais servidores de cplicctivo, 0 mesmo reqistro pode ser cclccod c
TtR1!O ~ no bufferem code servidor. lsso n60 serlo um problema para ele, noo fosse 0
foto de que os dodos podem ser otuolizados. Se um registro colocodo no buffer for
otuolizodo, as clterccoes devem ser comunicodas 00 outro servldor de cpllcctlvc. Isso e
feito em um processo conhecido como sincron;zo~oo de buffer, que ocorre em intervo los
de 1 a 4 minutes, dependendo do configuro~60 do seu sistema.
_:w: __ __
~ . Y W W W W W W W W W . W W W . W . W •• •• • -- ~ ~

-- 1
198 mEHO' EM 21 DIAS·"AP"

Por exemplo, como mo strado na Figu ra 5.6, supo nha que 0 usud rio 1
Dl's,o DATADICllDN'RY, PARm

Na Figu ra 5.9,0 usuario 21e 0 registro 1. A versjio auriga do registro 1 e


I 199
I
!
esteja conectado ao servidor de aplicat ivo 1 e 0 usuaric 2 esteja conectado ao encontrada n o buffer, enrso 0 usuario 2 ve os dados ant igos. 0 usuario 2 nao
ve a nova versao do registro 1 ate qu e uma sinc ronizacao de buffer ocorr a.
11
servidor de aplicarivo 2. 0 usuario lIe 0 registro 1. 0 registro 1 e colocado no
. N a Fi~ra 5.10, a processo de sincronizacao de buffer detecta que 0 j
buffer do servidor de aplicativo 1.
N a Figura 5.7, 0 ususrio 2 Ie 0 registro 1. 0 mesmo registro esta agora l~terval? de_ smcroni~a(jao expirou e com elSa a sinc ron izacao. Ele Ie 0 log de
n os buffers dos dois servidores de aplicativo. . smcromzacao no servidor de banco de dados e determine que 0 regist ro 1 esta
Na Figu ra 5.8,0 usudrio 1 atualiza 0 regiscro 1. A atu aliza cao e refletida fora de sincr onizacao. Ele entao marca esse regist ro como invalido no buffer.
n o banco de clades e no s buffers do servidor 1, mas 0 regist ro an tigo aind a esd Ele ainda ndo atua liza 0 registrc n o buffer do banco de dados.
no serv ido r 2. Uma entrada e feita no log de siruronizaoio n o servid or do banco
fig u r g 5 8
de dados indicando que 0 registro 1 foi atualizado.
Posso C: 0 usucria J
oluolizo 0 regislro de
"F i g u r a 5 6 l egendo: J, fozendo com que
AS: Servidcrde oplicotivo
Posso A 0 usu6rio ele seio otuolizodo no
DB5 : 5ervidorde banco.de dodos
J Ie 0 registro J, SP: Processo de sincronimco c
banco de dodos e no
fozendo com que ele buffer do seNidor do
seio colocodo no oplicotivo 1.
buHer no seNldor de
oplicolivo J"

II
SYNC lOG
I REC 1 I
Fi g u r a 5 9
. ..
-'
Possa D: 0 usuorio2
SYNC lOG Ie 0 registro I e obtem
L!o====...J I I os dodos possodos.

.E.igw:.a,,--,5o..L7~_

Posso B: 0 usuorio 2
lombem /e 0 registro
J, fozendo com que
e/e seio co/acado no
buHer no servidorde
oplicotivo 2.
SYNC lOG
l..£==LJ I REC 1 I

I
200 ! HREND" EM71 DIAS ABAP/4 DIA 5: 0 DATAD10IONARY, PARTE 3 ! 201
,f
Na Figura 5.11, 0 usuario 2 Ie 0 registrc 1 novamente. Dessa vez, 0 ! Para checar, uti lize a transaclo RZ10 como a segu ir:
regis tro 1 foi marcado como invalido no buffer, entao ele e buscado do banco I
de dad os, atuali zando assim 0 buffer no servidor de aplicativo 2. I • Inicie a transacao RZ10 (digite /nrzlO no campo Command e pres-
I sione a recla Enter). A tela Edit Profiles e exib ida.
Como most rado nas Figuras 5.6 a 5.11, sincronizacao de buffer utilize
urn processo de sincroni zacao em cada servidor de aplicarivo e urn log de
sincron izacao no servidor de banco de dadcs. Em urn intervale predefinido,
i • Escolha 0 caminho de menu Gcto-> Profile Values-> O f a Server. A
tela Active Application Servers e exibida.
cada processo de sincronizacao ver ifies 0 log para ver se quaisquer clados que • De urn clique duplo em urn servidor de aplicativo. Voce vera urna Iista
esrejam colocados no buffer fo ram modificados. as dedos modificados sao de todos os valores de paramerro de perfil par a esse servidor.
marcados como invalidos no buffer. Da pr6xima vez que as dados forem lidos , • Digite %sc no campo Command e p ressione a tecla Enter. A caixa de
eles serao atualizados a partir do banco de dados . dialogo Find e exibida.
o consultor de Basis configura a medida do intervale de sincronizacao
de buffer utilizando 0 pa rametro rdi sp/bufreft i me. • D igite rdisp/buf no campo Search For e pressione a tecla Enter. as
parametres de buffer sao exibidos e destacados.
Ei g ma 5 10 • De urn clique na pa lavra destacada rdi sp/buf r-e f t fme .
Passa E: 0 processo
de sincronizo~do do • 0 tempo de atualizacao (em segundos) e exibid o no lado direito da
buHer involido 0 lista,
registro J no buHer
do servidor de
oplicoijvo2.
Atuolizondo as tobelos colocodos no buffer
Se voc e codificar um a transacao que atualiza uma tabela colocada no buffer,
voce devers estar sempre segura de ir ao banco de dados e obt er as inform acoes
mais arualizadas, antes de permitir que u m usuar io as altere. 0 seguinte
exemp lo ilus tra esse ponto. 0 bloqueio de registro e mencionado no paragrafo
seguinte para completar 0 assunto. .
Suponha que a registro 1 contenha campos Fl e F2. D essa vez, 0 usuario
20 Ieprimeiro, faz.endo com que ele seja colccadc no buffer no servidor 2 (veja
a Figura 5.12).

Eig,jra 5 12
Fig mQ 5 11
Posso A a usu6rio
2 Ie 0 regislro 1,
Posso F: 0 usv6rio 2
fozend o com q ue eJe
tenlo reler 0 regi slro J
sejo colaco do no
rue s tile esrc morcodo
buHer no seNidor cia
como inv6Jido no
oplicofivo 2.
buHer. 0 registro
entoo e atuolizodo do
banco de dodos.

DBS
Fl F2
[ATI]
_. -
O~ 5.00ATAOlcnONARY. PAR1E ' 203
202 APm" EM 21 01 AS ABAP I'
MOYO..... Utilize bypassing buffer no insfru~oo se lect quando voce prectsor de
a usuario 1, agora querendo atualizar 0 registro 1, bloqueia-o e 0 le (veja UiMO" informccees mais atua lizodos, par exem plo, select * fram zt xt lfa l by-
pass; ng buffer. Fozendo isso, voce consegue que 0 buffer seic ignora do e 05 dodos
a Figura 5.13). . sejcrn lidos diretomente do banco de dodos. Voce deve utilizer issc se mpre que estlver
a
usudrio 1 altera Fl, escreve -o ao banco de dados (veja a Figura 5.14) e
Jendo para aNalizar, lsto e, lendo urn registro que ser6 otuchr odo e gravo do de volta no
destrava-o. bc nco de dados.
Nesse ponto. 0 buffer no servidor de aplicativc 2 ainda tern a copia original
do regisrro 1 com 0 conteudc original de Fl. Se 0 usuario 2 bloqueia 0 registro 1 Figura 5 15
eo le (do buffer), altera F2 (veja a Figura 5.15) e entao salva-o no banco de dados, Posse D: a usuario 2
as alreracoes feitas pelo usuario 1 serao perclidas [veja a Figura 5.16). Ie 0 registroantigo I e
o bloqueio.

E.ig..urq 5 13
Usu6rio 2
Posse B: 0 usu6rio
1 bloqueio e Ie 0
registro urn, fozendo
com que ele sejc
co/ocodo no buffer
no servidordo .
op!icolivo J. AS2
Fl F2 DBS
I A I B F1 F2
w::u
F igura 5 16
Posso E: a usu6rio 2
DBS salvo 0 registro J no
Fl F2 banco de dodos,
grovondo par cimo do
IA IB o ltero~aa do us u6rio.

F igu ra 5 14
Posse C 0 usu6rio 1
otuorizo 0registro de
J, fozendo com que
ele seio oluolizodono
banco de dodos e no
br.Jffer do servidordo
oplicotivo J. 0
bloqueio e removido.
Por exemplo, no passo D, se 0 usuario 2 utili zou bypass tnq buffer para
ler 0 registro, a versso mais atualizada do regist ro te ria sido Iida e as alteracoes
do usuario 1 nao teriam sido perdidas.
204 m EN DA EM 71 DIAS AWl' DIA H DATA DlmDN,"Y, PARTE 3 205

o bypa ss do buffe r para otualjzo~6es oferece melhor equilibria entre Esses rres bcroes de opc;:ao ativarn e desativam a utilizacao de buffer:
seguron<;o e velccldcde. Entrelonlo, se voce puder fer certezo de que • Buffering Not Allowed
todes as atuolizo <;6es seroc [eitcs em urn cnlcc servidor de oplicctivc,
nCio prectscrc codihccr pore fczer bypass do buffer. Seu byposs toma • Buffering Allowed But Switched Off
lentc a proc esso de otuolizm;ao urn pouee, porque um ccessc de bonco
• Buffering Switched On
de dodos e exigido . Se voce preciscr de quontidocle m6ximo de
velocidade pa ra otocllzocoes e puder fer certezc de que openos um Escolha Buffering Not Allowed se nao se puder usar buffer na rab ela, 0
servidor de oplicotivo ser6 utilizodo, esso cltemctlvc pede funcionor que ocorre no seguintes casos:
po ra voce. Converse co m seu consultor de Bosis perc sober se issc
pade ser providenciodo . • Os usuaries devem sempre ter informacoes 100% exatas e 0 ma is
atualizadas pcsstvel para conseguir Ier e gravar . Esse pode ser 0 caso
para consultas muitc sensfveis como cotecoes de bois a de valores o u
Resumindo as abor dagen s de utllizccco de buffer sistem as de controle de te mpo real como movirnentos de mer cad ori a
com atualiza ~6 es em armazens .
Hs eres abordagen s de urilizacso de buffer para tabelas que podem ser atuali -
• Os registros da tabela sao atualizados com a mesma frequencia com
zadas. N a ord em do m elhor p ara 0 pior desempenho, elas sao as segu in tes :
que sao lidos. fazendo com que a urilizacjo de buffer seja inad equada
• U tilize buffe r na tab ela, DaO use bypass 1ng buffer e assegure -se de qu e (veja a seguir).
to das as atu alizacoe s foram [eitas a partir de urn unico servidor de
. aplicarivo. Escolha Buffering Allowed But Turned Off ou Buffering Turned On se
os usuaries desses dados puderem tolerar uma latencia de buffer de 1 a 4
• U tilize buffer na tabela e use bypassing buffer. minutes. Njo se esquelj:l1 que esse larencia nao existira quando atualizar dados
• Nac utili ze buffer na tabela. porque voce codificara bypassing buffer para cbter as ul~imas informa coes.
Se uma tab ela sera atu alizada com freqaancia, nao utilize a abcrdagem
Tipos de utiliza~iio de buffer
bypas si ng buffer. C arla atualizac;ao fad. com que os buffers em todos os outros
Como mostrado na tela Technical Settings na Figura 5.4. rres ripos de utilizaci o
servidores de aplicativo sejam recarregados na proxima sincronizacio. Nesse
de buffer sao possiveis:
caso, a utilizalSaOde bu ffer realmente pe de aumentar 0 trffego total de rede e~
vez de diminuf-lo. ~ • Comp leta
." ",/
• Generics
Buffering Not Allowed em umo tobelo SAPslqniflcc que voce nee deve • De regis tro unico
onvcr 0 cclcccccc desso tc belo no buffer. Se fleer isso, voce pode Embora voce utilize uma caixa de selecao para indicar 0 tipo de utiliza~ao
cou sa r umo operc ce c fcltvel dos oplicofivos do R/3 e tolvez perdo ou de buffer) somente urn tipo pode ser selecio nado por vez. Se voce escolher m ais
corrvp¢ o de dodos.
de urn, uma mensagem de erro sera exibida.
Ha dois buffers de dados em cada servidor de aplicativc e a ripe de
Tecn icos de uti liza~ii o de buffer utiliza~3o de buffer escolbido det ermine qual buffer sera utilizado. Em urn
A met ade inferio r da tela Techni~a1Se ttin gs {mosrrada anreriormente na Fig ura servidcr de aplicarivc hi:
5.4) conrem as controles para configuracoes de buffer. Ao criar urna tabela, • 0 buffer de registro generico
voce tern controle complet e sabre essas configuracoes. Para alterar essas
• 0 buffer de regisrro Unico
configuracoes em urna tab ela de SAP. voce precisa obrer urna reels de modifi-
cac;io da SAP . o buffer de registrc generico echamado TABL (abrevia~ao para "tabela") .
Voce pode configu rar a utilizalj:io de buffer para uma tabela quando voce o buffer de registro enicc eTABl P ("pn significa "parcial-).
a eria, au voce pode mo difid-Ia mais tarde. Alterar as configura!joes de buffer
nas ta belas de SAP exige uma tec1a de modificac;ao, que voce pode obter da
SAP.
-=------- :1
206 lPHNOl EM 21 OIl S ABAPI4 DIAS, DDATA DICTIONARY, PARm 207 ,..1
Ut il iza~ao de buffer completa Se umo instrul700 seledonada e executod o, ma s mcitc s vezes nee
.,i:
Para ativar 0 tipo de utilizaci o de buffer completa, fac;a uma marca de verifi- enconfro dodos no tcbelc, a utiJizol700 complete de buffer aindo pade :I·" '
cac;oio na caixa de se1e~ao Full. Quando ~ feita uma tentativa de ler os dad os de toma r 0 ocess o a tobelcs mots eliciente . Como 0 tobelo lntelrc estc no
uma tabela com utilizacio completa de buffer, 0 sistema exam ina 0 buffer TABL buffer, 0 sistema pede de terminor se os registros exlstem a ntes de ir 00 !
1
para ela. Se ele nao for encontrado af, todasaslinhas serao carregadas do banco banco de dod os, a ssim ele evitc urn ocessc de ba nco de dod os porn
e ncontra r as dodos .
de dad os em TABL [veja a. Figura 5.17). Isso acontece sempre que uma inserucao
se lect e executada, independentemente de quanto s re gist rcs correspondam a
cldusula wh ere. Mesma se nenhum regi str o co rresponder, todo s sao carr egados Utiliza~ao ge nerica de buffer
no buffer se a tabela Olinda DaD estiver al ou se ela estiver invalidada devido a C om a utilizacao generi ca, urn grupo de regisrros e carregado em TABL em vez
sincronizacao de'buffer. cia tabela int eira . Para at ivar esse tipo de utili zacao de buff er, falia uma marca
TABL TABLP de verificacio na caixa de selec;ao Generic e colo qu e urn numero n no s No. of
E gura 5 17
Key Fie lds de m odo que os n campos a esquerda da chave prirnaria agruparac
Todescs linhes de
ume lobelo com
TBI regist ros . Qu ando urn registro e lido e n e 1, todos os registros con tendo 0
REel
ulilizor;60 comp le/o de mesmo valo r no primeiro campo de chave primaria sao carr egados no buffer.
REC2
buffer s60 corregod as Quando urn registro e lido e n e 2, t odos os registrcs contendo 0 mesm o valo r
em TABl REC3
nos primeiros dois campos cia chave primaria sao carregad os no buff er. Isso e
REC4
I~ ilusrrado na Figura 5.18.

Figura 5 18 TABl TABlP


Select ' from I'D1 where...
Ufilizo¢ o generiea de
buHer. n deve ser
TB I C I 1 rec4
menor que D num ero
Technical Setting5:
.-
o Full Buffering
/'
-, "./
de campos no chove
prim6ria.
C
C
2
3
..05
re , 6

TB I
RECl
REC2 Select' fromtb1 where f1 = 'C
REC3
REOI ~

f'--- /
TB 1 Technica l
SeMing5:
o carregamenro de TABL nao ocorre com as instru coes sel ect s tn ql e: TBI F1 F2 12] Generic Buffering

\
1 reel
somente sel ectJendse 1ect faz isso. Se a tabe la estiver com utilizacao completa 2 ree2 Number of Field5:m
A
de buffer e um a instrucao sel ect single for execurada, n enhum registro sera B I re,3

~i
carr egado ern TABL. Enrretanto, se a tabela ji estiver carregada em TABL, select C 1 ree4
5 i ng1e [er fi os regis tros de la. C 2 fecS
C 3 rece
Durante a sincronizacio de buffer, a tabela inteira einvalidada se qualquer 1 ree7
D
registro dentro dela se aiterar. D a pr6xima vez que dado s fo rem lidos, ;I. tabela D 2 recS
inteira sed. recarregada.
A utili zacao de buffer completa e apropriada para pequenas tabe las que
raramente se alteram. As tabelas de verificacao e suas tabelas de texto, como
---
Em outre exemplo, suponha que voce escolha a utilizacao generics para
ztxtOOS, ztxtOOSt, ztxt005s e ztxt005u. devem t er u tiliza~ao co mpleta de a tabeIaztxl fal e configure N o. of Key Fields com o 1. Como o primeiro campo
buffer. Elas sao configuradas com urn conjunto inicial de valores validos e e mandt. todos os regi str os para urn cliente sao carregados no buffer de uma
d escrj~6es, e raramente sao mo dificadas dep ois . vez.
__ ... ' W ' ~ _ ~ __

208 "RENDA 1M 21 DIAS ABAp/' ous.o DATA maiDNAR!, PAm 3 209

FI g u r a 5 19 TABL TABLP
Se voce especthccr vtilizOliOO complete perc ume fobelo dependente Com c ulilizo¢ o de
do cbente {tendo rna ndt no primeiro coluna}, 0 sistem a autome ti-
ccrnente a utilize gen ericomente com n igua l 0 1. Isto e, quando um
buffer de regislro
unicooti'lodo,
,
I I1I ",3 I
registro elida, cpenos as registros que tern 0 mesmo neme rc de diente selec.ione regish'os de ~
sec ca rrega da s no buffer. Voce noo pod e ver issc refletido nos corregomenlounico
configurolioes tecnlcos: elos cc ntinuom a indice r utilizaliQO complete. de ume vez porc 0
lsse simplesmenle ocontece "nos bosndcres" . bufferTABLP.

Select single <from tb1


where rJ = 'B'e f2.., '1'
A utilizacj o generic a de buffe r eadequada para tab elas em qu e os regisrros
sao nor malmente acessados em conj untos ou grupos. Ela eadequada se, quando
urn regisrr o do grup o e acessado, grande parte des acessos normalmente seja r-; ~
par a registros do mesmo grupo. Po r exernplo, se urn usuario efetua logon em TBl F1 F2 TS1 Technicol
ingles, e muito prova,:el que sornente descricoes em ingles sejam lidas por esse A 1 reel Settings:
usudrio e par outros usuaries no mesmo serv idor de aplicativo. As tabelas de
tex to, 'c nde as descricoes sao arm azenadas, sempre te rn mand t e spr as (0 c6digo
,
A 2
1
ree2
,«3
./ 0 Single record
Buffering
C I reca
do idioma) como os primeiros dois campos . Portanto, a uriliza cdo generics de
buffer com n iguaI a 2 eapropriada.
Par exem plo, se a tabela zt xl f al tiver urn tipo de utiliza qao de buffer de
registros anicos, selec t s ingle * from ztxl f al where l ifnr '" 'VI ' faz com
Coda grvpo de reg istro no buffer exiqe-overh eod od mlnlstrcuvc . Tente
fer um nvm erc reletivamente grande de registras por grv po . Co m a que 0 bu ffe r TABLP seja p esquisado pelo registro VI. Se ele e encontrado ai, essa
utilizOliQO gen erico, se voce ccobc corregondo 0 moioric dos hnhcs de c6pia e utilizada. Caso comrfrio, e carregada em TABLP a partir do ban co de
ume tcbelc e e los sao co rrego da s em muitos grupos pequeno s, urno dados. . '
tcbelo colocodo completa me nte no buffer ser6 mais efkie nte. Mesmo se urn regiscro 1740 for loca lizado, ainda assim urna ent rada efeita
no buffer de regisrro unico. A entrada indica que 0 registro ndo exisce no banco
D urante a sincronizagdo de bu ffer) se um a tabela' for colocada no buffer de dados . D a pr6xima vez que esse regist ro for solicitado, a bu ffer p ode sec
genericamente e urn registro estiver invalidado no buffer, todos os registr os utiliza do p ara resolv er a solicitacao e urn acesso a banco de dados nao sera
no grop o tambe m serjio invalid ados. A pr6xima leitura de qualquer registro necessa rio .
n esse grupo fara com que 0 grupe inreirc seja recarregado. Por exemp lo, suponha que 0 fabrican te Xl nac exista no banco de dados.
Execut ar sel ect s i ngl e * from ztxl fal where lifnr : : ' Xl' facia com uma
entrada fosse criada no buffer de registro unico para indicar que 0 registro Xl
Utilizac;ao de buffer de regi stro unlco nao existe no banc o de dad os. Da pr6xima vez que 0 fabr icance Xl for solicitado,
Co locando uma marc a de verificacao na caixa de selecsc Single Records, vccs o sistema exam ina 0 buffer.e desccb re que nao exisre e nao pr ecisa ir ao banco
ativa a ut ilizacao de buffe r de regist ro dni cc. Co m esse ripe de utilizact o de de dados.
buffer, se l ect s1ngle seleciona urn registro no buffer de registro Unico TABlP, A u~iliza~ao de buffer de registrc unico e apropriada par a tabelas muito
como mostr ado na Figura 5.19. Com esse tipo de utiliza~ao de buffer, os grand es em qu e uma por cent agem pequena dos registros e lida com freqiiencia.
regist ros sao apenas colocad os no buffer quando a instru ~ao select s i ngle e Para a utiliza~ao de bu ffer de registro unico funcionar, os registros devem ser
execuuda. Sel ect/ends el ect nao carrega nern Ie TABlP. lidos utilizando .a instru~ao sel ect s i ngl e.

Resumo dos t ipos de utilizac;ao de buffer


Em resumo, h;i dois buffers: TABL (0 buffer generico de regist ro) e TABLP (0
buffer de registro unico) . H i tambem cluas variedades da instru~ao select:
select e select sing le. A ins tru~ao sel ect carrega TABL e a ins tru~ao select
single carrega TA8LP•

.
• • • • • • • • • • w __ .. __

210 , .lPRl:ND.l EM 21 DIAS ABAPj4

Durante a leirura, se lect somente Ie TABl ; ela ignora TABlP. A inst ruci o
DIAl, DlllTADlmDNARY,PARlIJ 211 I',
select s ingle Ie os doi s buffers. Es se comporramento e resumido na Figur a Ta be las de utilizac;ao de buffer que ndc sec otualizad a s !
I
5.20. Lembre-se de que urn regist ro somen te pode estar em urn buffer de um a Se uma tabela e aces sada co m frequencia mas rae atualizada co rn frequencia,
vez po eque um a tab ela ape nas pede t ee urn tipo de urilizac ao de buffer. ela deve ser colo cada no buffer. Voc e p recisara consulter seu administrad o r de
Basis p ara saber se ha espa~o sufic iente no buffer para adiciona r su a tab ela. Se
FlgurQ 5 2 0 Bufferde Buffer de nao houver e sua tabela for acesseda com frequencia, e po ssivel aumentar a
Como 05 instroC;6es reg istro: registro quantidade de RAM alocada para os buffers. Altemativamen te, o urra t abela
seledonodos generico unico
acessada com menos frequencia que a Sua pode ser alterada, de m odo que nao
interogem com as
buHers. CARREGA seja mais colocada n o buffe r.
Select Single SOMENTE lE E LE

Select CARREGA NAO lENEM Ulilizo~ii o de buffer e indices


E lE CARREGA Os regis tros em urn bu ffe r te rn seu proprio Indice primario criado na RAM .
Quando os registros sao necessaries , 0 Iodice eut ilizado para posiciona-lcs no
buffer da m esma maneira que 0 Indice primario no banco de dados e utilizado
Perc limper 0 conteudc de TABl e TABlP, digite I Sta b no ca mpo para posicionar regisrros em uma rabela. Entrerant o, in dices secunddrios ndo
Com mand e pressione c teclo Enter. Voce ped e cttlbor esse metcdc sao criados no buffer, tampoucc indices secundarios de ban co de dados sao
depois que desativa r 0 utilizo~cio de buffer pora limpor os buffers cotes utilizados para acesso a dados colocados no buffer. Portanto, quando codificar
de testor a d iferenc;o de desemp enho de um prog rama. Note que issc uma instrucao s el ect. . . where em uma tabela colocada no buffe r, utilize
pode dlmlnuir 0 desempe nho do sistema, em gerol olll d uos ho ros, ate
campos de ch ave pri mari a na cldusula where comecandc com 0 primeiro campo
que as buffers sejam novo mente preenchldcs.
de chave primaria e utilizando 0 maximo de seqnsacias de chave primaria que
voce puder. Se 0 pr imei ro campo da chave primaria eseiver ausente na clausula
Subsfituicco do buffer where (nao ccntando mandt), uma varre dura complete da tabela no buffer sera
Se lASlP esdver compleca e urn novo regisrro precisar sec car re gada, os antigos execu tada . P o r "exemplo, se a rabe la zt xlfal foi colocada completam en te no
serao jogados fora para dar eepacc aos novos. Os mais antigos sao aqu eles que buffer, sel ect * from ztxlfal onde lifnr = ' Vl ' sera supo rt ada pelo Indice
ha mais t empo estao esperado se r acessado s. pr imdrio do buffer. Select * from ztxlfal where la ndl '" ' CA' causara uma
Em l ABl, os registros antigos nao sao desc art adcs qu ando os nffVos sao varredura complera da tabela no buffer.
carregado s. Em vez disso, tabel as in teiras sao periodic amente descarregadas do Ser in cap az de utilizar in dices se cundarios resulta em um a p ecul iar si-
bu ffe r. 0 com primen to de te mpo ent re descarreg ar e quais tab elas 'sao descar- tua~ao sem safda, se voce utilizar buffer de modo complete em tabelas grandes
re gadas e det erminado par urn algori t mo de cache den tr c d o R/3. Esse algo- que tem indices secundarios. C olo car um a tabela no buffer dessa maneira fad
ritmo com plexo e baseado na quantid ade de espas:o utilizado por uma tabela com que selects no Indice primario acelere, mas possivelrnen re tcrnara se-
no buffer versus 0 numero de acessos de leirora oele no pedodo anterior e lects leDta em in dices secu nda rios . U rna instru~ao selec t em uma tab ela
t ambem Daquantidade de espa~o livr e disponlvel no buffer e na qualidade atu al grande (categoria de tamanho 1 ou maior) que e completamente sup ort ada por
de aces so do buffer. urn indice secundario no ban co de dados pode ser execu tada mais lent arnent e
COntra 0 buffer po'rque urn ind ice secundario nao esta disponivel at. 0 quanto
Dec idindo se e ne cessa rio utilizo r 0 buffer mais lento (se for mais len to) dependera da quantidade de dados na tab ela. Para
o obje tivo da utiliza~ao d o bu ffer ere duzir 0 numero de leituras de banc o de compensar es'se problema, evite 0 buffer e utilize os indices secundarios,
dados e a qu antidade de td .fego de rede do banco de dados para os servidores adicionando bypassing buffer para a instrU~ao select onde urn indice
de aplicativo. As ses:6es a segu ir listarao cenarios com tabelas de utilizas:ao de secu ndario deve ser utilizad o.
buffer que DaO sao atualiza das, junto com utiliza~ao de buffer e inclexa~ao. Por exemplo. a tabela TSTC contem mais de 12.000 linhas, e da categoria
de tamanho 1, e completame nte colo cada no buffer e t ern urn fndic e sec undirio
em seu campo pgmna. As medidas mostram que se1ect * from tstc bypass i ng
buffer where pgmna = I ZTXTEST I executou 18 vezes mais rapido em media que
se1ect * f rom tstc where pgmn a " •ZTXTESl I • mesmo sea tabe/a. fOT comple-
... ~~ -~ ~- --

I'
212 I AP REN DA EM 21 DIAS ABA PI4
OlAs,oOITADlcrJOHARY, PARTE 3 I 213

• Se possfvel, utilize os campos do Indi ce prim erio em urna chusul a


i
tamente colocada no buffer. A primeira sel ect foi resolvida n o banco de dados
utilizando urn indice secundario no campo pgmnaj a segu nda executou uma where nas tabe las colocadas no buffer. Se isso nao for possfvel e a tabela
varredura complera de tabela no buffer. for grande (caregoria de tamanho 0), adicione bypas sing buff e r e
utilize os campos suportados por urn Indice secundario no banco de
clados.

~o
Sejo muito cuidodoso quondo utilizor bypass de buffer em tc belcs
colcccdos no buffer que tcmbem 500 otcolucdcs. Se voce utilizo em Resu m o
ume instru~o o sel ect, deve utiliz6·lo em todes cs instrv~6es select
peru esse !obela e todes as tobelos relocicncdos dentrode uma vnlco • Urn Indice euma c6pia de colunas especfficas de um a tabela cIassificada
trcnsccoo. Coso ccn trcdc, voce de feto estero misturondo dodos em ordem crescente.
cclccodos no buffer e fore dele. Isso pode cousar lncoere ncics dos
dodos em sev progromo e possivelmente no banco de dedas, se seu • as in dices aceleram as insrru coes select. Urn a instrucao sel ect
programo tombem firer o tu el i zo ~oes . sempre deve ser suportada po r urn Indice.
• Vo ce pode criar in dices secu ndarios em uma tabela. C rie urn quando
voce nao puder utilizar as campos de urn Indice exisren te em sua
Resu mo do utili za ~fio de buffe r
clausula where.
o seguinte pontos devem ser lembrados em relacao a tabelas colocadas no
buffer e indic es: • Os campos em uma ch usula wh ere devem se r lisradc s em seu programa
• As tabelas colocadas no buffer podem fazer seus programas serem na mesma ordem que apa recem no Indice.
executadcs mu ito mais rapido. Entretanto, se urilizadas de forma • A transacao 5T05 pode ser u tilizad a para m ost rar qual Indice, se algum,
negligeme, a colocacio no bu ffer pode rer 0 efeit o opos to. foi utilizado por uma dada insrrucio sel ect.
• Os buffers esperam na RAM do servidor de aplicativ o, ponanto 0 • Configuracoes tecnicas da tabela po dem ser uti lizadas par a ccntrolar
espaljo no buffer e lim itado. Urna tabela que nao e acessada com a classe 9.~ dados, categoria de tamanho, tipo de urili zacio de buffer e
freque ncia nao deve ser cclocada no buffer para conservar especc de se a coaexao esta ativada.
bu ffer e evit ar estouro. • A classe de dados determine em qual tablespace a tabela sera. criada .
• A s tabelas que sao pequ enas (categoria de tamanho 0), acessadas com As classes mais importances de dados sao APPLO (dados mestres) e
fr equen cia e raramente atualizadas devem ser completamenre'colo- APPLl (d ado s de transacao}.
cadas no buffer. • A catego ria de tam anho determina 0 tamanh o das extensoes inicial e
• A s tabelas que sao gran des (cate gor ia de ta manho 0) e acessadas com pr6ximas da tabela e 0 n dmero maxim o de extensces permitido. Isso
freq uencia ut ilizam sel ect sing le devem ser colocadas no buffer no deve ser escolhido de m od o que a exren sac inicial seja suficientem enre
m od o de registro unico. grande para arm azenar a tabela in teira. Extensoes secundirias deixa m
• U rna tab ela onde os regist ros de urn grupo sao acessados juntos devem o desempe nho de siste ma lento e tornam a reorganizacjo necessaria.
utilizar buffer de m aneira gene rica. Urna chave primaria parcial deve • A utiliza~ao de buffer acelera a acesso de dados par fazer cache dos
id entificar 0 grupo. clados m ais freqUentem ente utiliz ados na RAM no servid or de aplica-
• As tabelas que saOatualizadas com frequencia nao devem se r colocadas tivo . 0 espaljo de buffer e limitado, entaO as tabelas devem ser
no buffer se sua confi guraljao tiver multiplos servidores de aplicativo. colocadas no buffer prudentemente.
Fazer isso aum enta 0 trifego de rede porque os dados devem ser
recarregados nos buffers nos ou tros servidores de aplicativo toda vez
que eles se alte rarern .
• Se a tabela foi co locada no buffer, utilize bypass ; ng buffer para obter
os dados m ais re centes antes de perrnitir que sejam atualizados.
K_I ... I'" .. I ..... ...-...:-.I_..._...... ~ -y ~
,
214 APR!"A EM21 DIA, 'ABAP/.

~
IFa~a
Coloque as compos no c16usula where
----J_
no mesmo ord em em que eles aporecem
Nao codifiqce umo 5e' ect que nao sejc
suportada per um fndice.
Teste
DIH DDATArncrIDl<ARY, PARTE 3

1. Po sso especificar em algum lugar 0 Indice exaro se quera utilizar uma


instrucao select?
215

no fndice. 2. Posso criar indices secundarics em tabelas de SAP au ccloc a-Ios no


Seja generoso quando escolher umo Nao escolho umc categ o rio de tomonho buffer ?
categoric de tomonho. que focc umo tabe la exigir umo extenseo
3. Posse diz er que meu programa e executado mais rapido com tabelas
secund6rio.
colocadas no buffer do que fora dele?
Utili ze bypcss de buff er quando ler um
registro para ctucluc r de ume tabe lo
cclocodc no buffer. Exe rd cio 1
Q ual e a classe de dados para as tabelas MARA, LFAI e KNA I? Qual ea
categoria de tamanho para MARA , LFA I e KNA1?

P&R

o N so posso exibir algumas telas mencionadas neste livro . Ob-


tenho a m ensagem de erro You" are not authorized to use
t ra nsacti on XXXX. C omo posso vcr essas telas?

o Peca aurorizacao a seu administrador de segurania.

o Quando cxiba os buffers de dados utilizando ST02. vejo muitos


outros buffers ai, ta mbem. Para que servem rodos eIes?

o 05 bu ffers de dados sao apenas dois dos mu itos buffers manti-


dos no servidor de aplicativo. Os narnetabs (objet os de tempo
de execu ctc de ta bela) sao todos colocados no buffer, assim
como tod os as pro gra m as, men us e (tam bern conhecido como
status e UA au Gill), barras d e ferramentas, relas e calen dsrios.
Todos esses buffers sao re lacionados aqui. .

Wo rksh op
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A seljao Teste oferece perguntas para ajudar a solidificar seu entendi-
mento do conrecdo ebordedo e a seljao Exerdcio permite que voce pratique a
que aprende u. Voce pode encontrar as respostas as perguctas do quesriomrio
e aos exercfcios no Apen dice B, "Respos tas as perguntas e aos exercfcios".
6
o Data Didionary, Parte 4
Objetivos do-capitulo
Depois de completer este capitulo, voce devers ser capaz de:
• Exibir e comparar versees revisadas e ativas de objetos DDIC
• Usar 0 utilitdrio de banco de dados para executar verificacoes de
coerencia, exibir informacoes de tabela especlficas de banco de dados
e eriar e reeriar tabelas no banco de c1ados

Hist6rico auto m6tico de tabela e documentos


alterados

iD"
M
OIH. As cherccees de dodos dentro de umo tobelo poclem ser outomoticamente
registrodos. Esse re gistro (log) outom6tico de o ltera~6es e chomodo hist6rico
Qutom6tico de fobela. Pore otivar 0 Jog, marq ue a ccixe de sele¢o log Dota Changes
no tela Technical Settings (veia a Figure 5.4) . Se clnd c n60 fiver feito issa, 0 consultor de
Basis tombem deve especfflccr o (s) numera ls) do di ente pelo qua l 0 log e ossumido no
por6metro de perfil de sistema rec/ eli ent .

Perc exibir 0 co nfiguroQio rec/cl t ent em seu slstemc, si90 0 prccedi-


mento utilizodo pora exlblr rdi sp/bufreftime no se~co lntitulcdo
"Slncronuc ccc de buffer- no Dio S.

'nttp;II_.compVJ.CQm.br
-114.............- .- .. I ...... I I ...... .. ]I • • • • • • • • _~

218 AP RENDA EM 21 DIAS ABAP I' D~""DATlDlrnoNARY, PAR1H I 219

Docu mentos olterados uma seljao Notes e depois a analise . Para cada tabe la, os campos dela
sao exibidos prim eiro (veja a Figura 6.2) e os documen tcs alterados
OYO til...
M Pore coda jnse~o o, otua l izo~o o ou exd usOo de umo tcbelc ctivcdc pora 0 para ela se seguem (veja a Fi gura 6.3).
TUllO'" hist6rico outom 6tico de tobelc, um registro e criodo no tobe la dbt abprt. Coda • P ara exibir um a comagem do mi mero de documentos alterados que
reg istro e chomodo documenfo a /terado. Codo documento oltercdc ccnte m a da ta e a
he re do a lterCl;a o, a userid do usucrio que fez a clterccco, 0 c6digo do transac;oo e 0
exine para urn dad o int ervale de da ta ou intervale de tabela , pression e
nome do progroma utilizodo poro fazer a oltero¢o, e 0 tipo de c lterecoc executodo. 0 cs bo no No.of Docs. (Select) .
tipo de olte rm;60 sera I NS se 0 registro foi inserido, UPD se 0 reg istro foi ctcclhcdc ou • Para exibira lists de tabelas pela qual 0 hist6rico autom dricc emantido,
DELse a registro foi exclufdo .
escolha 0 batao de op~o Tables With H istory Mana gement e pres-
U tilizand o 0 c6digo de tran sacao SCU3 ou OY1S (veja a Figura 6.1), voce sione 0 bono List . Essa lista most ra todas as tabel as que tSm uma
pode exibir as documen tos alrerados e cornpara-los com as valo res atu ais na marca de seleljao na caixa de selecao Log Data Changes.
rabela. Nso hi nenhuma difere n~a ent re esses dais codigos de transa?o; ambos • Para exibir 0 mime ro total de documentcs alte rados na tabela
execu tam 0 mesmo program a. dbtebpr-t, pressione a bo n o Total N o. D ocu ments na barn de ferra -
mentas Application.
F igu ra 6 1 .!!ix!
..........,.. ,"
A tronSCI~60 Tehle • P ara campa rar valc res de campo em documentos alteradcs com valo- I:
History eJCibe res atuais de campo em uma tab ela, escolha 0 batao de 0pljio History !,
documentos <-> Curre nt e pressione 0 bo uo Compare. A tela Table H istory e
eltercdos de Iobelas
com hist6rico
exibida. Insira. 0 criteria de pesquisa para. os documentos alterados e
elJ1omatico de tohelo pressione 0 bone Compare. A tela Table History - Comparison
otivodo. Wi th Current State eexibida. A chave primdria de cada registro apar ece
a esqu er~ e as diferec cas aparece m adir eita (veja a Figura 6.4).
;. Fi g u r a 6 2
!
Os compos do iI
Iobe/o HPRJ OO7
opo recem antesdos
documentos
Ii
o/terodos.
mostrondo os names I
ae compo, 0 I
ind'rcodor de chove
prim6rio, 0 tipo de
dodo, a
A partir da tela Ta ble H istory - C hoose Function, voc e p e de execurar comprimento, 0
nome de coluno e 0
as seguin tes funljoes: des cri~60.
• P ara exibir os documentos altera dos de dia atual , escolha 0 bo n o de
op~ao Change Docs: Daily Analysis e press icne 0 batao List. Uma
Iista e exibida contendo todas as alteracoes do dia atu al.
• Para pesquisar docum entc s alterados po r intervale de dat a eu no me
de tabela, escolha C han ge D ocs: ba tao de apljao Selective e pr ession e
o borao List . A tela An alysis of Table Log Database e exibida. Digire
seu criterio de pes quisa e pressione 0 batao Execute. Uma lisea de
docum ent os alrerados para 0 criteric especificado e exibida. Na parte
sup erio r da lista esta urn resume das informacoes sabre a list a, depois
• • • ww.ww.w • .• ~~ _

220 , AP REM DAEM21 D'AS AUPI4 DU DDATADICTlOIWY. PArTH 221

F igura 63 Sa bendo quando utilizar bist6rico autom6tico de tabel a


Os documenfos
ollerodes do 1o~lo o histcricc automatico de tabe la deve ser ut ilizado em tabelas qu e con tern
HPR100loporecem informacoes imponantfssimas e quando ada altera~o deve ser mcnitorada
depors do listo de sem [alha, independentemente da arualizacfo do p rograma utilizado. Infe-
compos. A chcve
prim6rio de coda lizmente, arualizacoes para tabela sao lentas, porque urn registro e escri to pa ra
registro oporece dbtabprt para cada registro alte rado. N a rnaioria dos casas, quando 0 hist6rico
pri me;ro(em da tabela e necessario, Change D ocum ent Objects oferece uma alternativa
hJrqueso) seguido
pe/osdodos (em
eficienre e mais rapida e portanto seria utilizado no lugar. Para mais infor -
bronco), m' c;6es sobre Change Document Objects, veja a R/3 Library (caminho de
men u Help->Rl3 Library, Basis Components, ABAP/4 D evelopment Work-
bench, Extended Applicatipns Function Library, Change D ocum en ts.}

~o
Se c chave prim6ria de sua ta bela for maior que 86 bytes au se 0
restante da Iinha for meier que 500 bytes, voce n6c pede utilizar
htstoricc cutcmotlcc de tobelc . Voce receber6 um erro quan do tenter
ctlvcr a tobe lo e cherccces n60 senSo registrodos. A rozeo dessa s
restrir;5es est6 no tabelo dbtabprt . 0 compo vkey ccotem a teclc do
registro que foi olterodo e tem 86 bytes de comprimento. 0 campo
F igura 6 4 vdata contem 0 reslonte do reg istro e tem 500 bytes de com primento .
)qui. cs dodos em
dbt abpr t sOo
comporodos cos
conteudos otuois de
Resu mi nd o as configurac;6es tecnicas
coda reg isll'o. o que se segue res ume as ccafiguracoes tecnicas para a bufferiza~oJ exeeesoes
de tabela e 0 log automatico de informacoes arualizadas:
• A dasse de dados determine 0 tab lespace em que uma tabel a 6 criada.
o administrador de banco de clados utiliza tablespaces para organizar
e manter 0 banco de dado s. Escolher 0 tablespace adequado torna a
administrac ao de banco de dados mais facil, aumenta 0 desempenho
de sistema e ate, em certa medida, aumenta a disponibilidade do
sistema, perque 0 banco de clados ~ n ormalment e colocado em estad o
offlin e para reorganizacoes.
• A cat egoria de tam anho determina 0 tamanho da extensao inicial e
exte nsoes proxim as, assim como 0 numero de poss iveis ext ens6es
proximas. Escolher urn numero muito baixo fara urna ou mai s exten-
s5es adic ionais .s erem alocadas. VID a eabela que envolve varias
A chave primdria aparece ern rurquesa c a metade esquerda cia tela. A exteosoes diminui 0 desempen h o do siste ma, aumenr a a
metade direita esta dividida em valores aruais e valores de hist6rico. As linhas manutencfo do banco de dadcs e reduz a disponi bilidade de sistema,
acinzentadas indicam que exist e um a diferenca. Para exibir 0 significado dos novamente porque 0 banco de dados normalrnente 6 colocado em
ccdigcs na coluna mais a esquerda, cclcque 0 cursor aI e pressione FI. Esse estado offline para reorg anizace es.
relarorio mostra que quatro registros existe m na tab ela EKPA mas 'nenhum • A bu fferizacao aumenta 0 desempeahc do sistema [azendo 0 cache de
hiscorico de regist ros existe para des. dados Iocalment e no servidor de aplicativo. Quando feito adequada-

'.
~ w w • • • W' ww w • w ••• w W W T'Ir T T W' W' "1J

222 , AfUNDA EM 21 DIAS ABAP/4 01' 6, 0D'T' DICTI~ARY, PAR1H I 223

mente, menos acessosde banco de dados sao exigidos,porque as dados 3. Para ver urn resume das alceracoes, pressione a ba tao D elta display
mais frequentemente lidos sao armazenados na RAM DO servidor de na barra de ferramentas Application. A lista e atualizada para conter
aplicativo. Bons candidates para bufferizacao sao tabelas que rara- apenas as diferencas entre as duas vers6es.
mente sao atualizadas e frequentemente lidas.
Figurg 6 5
• Ativar 0 log automatico do recurso em uma tab ela fara. com que urn
Qu end o Limo tooele
documento alterado seja criado coda vez que tabela e aleerada. Esse
eve /em Lime versec
recurso diminui as arualizacoesde tabela e portanto eutilizado apenas revisodo e exibido.
para tabelasque content dados vitais.Nas tabelas nao vitais, devem ser voc~ ~ 0 versec
utilizados objetos de docurnento alterado. . revisodo por podr6o .

Yers6es ativas e revjsadas


NOVO... Podem existirduos versoes de uma tabela (au qua lquer objeto OD!C): a verscc
YERMO" revisoda e 0 versec alivo. Se voce altere umo tcbelc e pressiona a bctec Save
sem pressloncrAcfivcte, criou uma verseo revisodo dotobelo que ccntem suas clterocces.
e
A versdc otlvc ainda existe; a ultima verseo que foi ativada. Progromas em ABAP/4
utllfzc m openos versees otivas. A presence de vers6es revisodos nee as ofeto.

A versao revisada existe para permitir que voce prepare urna alteracao
antes de e1a ser necessaria e eneac a ativa quando for necessaria. Tambem
permite que voce altere muitos objetos e enesc as ativa todos simultaneamente.
Quando voce os ativa, as vers6es atualmente ativas sao descartadas e suas
versees revisadas toma-se ativas e as substituem.
A versao revisada e exibida, se e1a existir, quando voce exibe uma tabela
Vers6es adicionais
(0 campo Status conterf Rev;sed). A barra de ferram entas Application tera urn
botao Active Version (veja a Figura 6.5) . Se voce 0 pressiona, a versao ativa Independenternente das vers6es revisadas e ativas, voce tamb em pode criar
sera exibida e a botao na barra de ferramentas mudara para a versio revisada, versoes temporaries de uma tabela. Para fazer isso, escolha 0 caminho de menu
permitindo que voce pressione 0 botao novamente e retome para a exibicso Table->Generate version. A mensagem Temporary verst on of act ; ve object
anterior. stored. aparece na. parte inferior da janela, Essa versso temporiria e mantida
ate que a tabela seja transportada para a prcducao. Para visualizar a nova versao,
SmEHtlM~ lnicie a ScreenCam "How to Compare Revisedand Active Versions" agora. escclha 0 caminho de menu Ueilities->Version Management . A versac com 0
na m ero mais alto e a primeira que voce criou.

Pa~a comparar as vers6es ativas e revisada.s:


Descartando umg versOo revisada
1. De tela Dictionary: Table/Structure: Display Fields, escolha 0 Para descartar uma versao revisada sem ativa-la, voce deve primeiro gerar um a
caminho de menu Utilieies->V ersion management. A tela Versions versac tempordria da versao ativa e entio restaura-Ia, como mostrado no
of Object e exibida. A primeira linha contem a palavra mod .. Esse e a seguinte procedimento.
versac revisada. A proxima linha contem act . . Essa e a versao ativa.
2. Para comparar as duas versoes, falia uma marca de selecac nas duas e SCifENOM~ lnicie a ScreenCam "How to Discord a Revised Version" a gora.
pressione 0 bono Compare. A tela Version Comparison for Tables
eexibida. As liohas alteradas sao indicadas na margem direita. <- only Para descartar uma versao revisada e restaurar a versao ativa:
ecttv significa que a linh a somente existe na. versao ativa. <- only
modi f significa que a linha apenas existe na versac revisada.
~I • • • •• WWWWWW_ -- -
224 ' PREND' EM21 01" ,", PI' OIA 6:0DATA D1mOMARY,PAiTE" 225

1. Da te", Dictionary: Table/Structure: Change Fields, escolha 0 caminho


de menu Tebl e- c-Generaee Version. Uma caixa de dia.logo aparece
Usond o 0 utjlitCirio de banco de d o d os
contendo a men sagem Version of » act ive « object stored.
IOU . Dentro do ODIC extste umo ferromento de utilit6rio de bc ncc de dodos .
2. Pressione 0 botao Continue. Voce elevado de volta it. tela Di ctionary: lERMO ,. Utilizondo-o, voce ped e exa minor e modifieor tobelas no nivel de ba nco de
Table/Structure: Change Fields e a mensagem Temporary versi on of dodos.
activat e object stored e exibida na parte inferior cia janela.
3. Escolha 0 caminho de menu Utilities- > Version management. A tela S(mNW ~ lnlcle a ScreenCom "How to Access the Dctcbcse Utility- agora.
V ersions Of O bject e exibida. H aven uma marca de sele ~io ao lado
da palavra act . . Para acessar 0 utilitaric de banco de dados:
4. Remova ~ marca de se1e~o do lado cia palavra act ..
1. Comece na D ictionary: Initial Screen.
5. Coloqu e uma marca de sele~ao embaix o de Version (s) In The Version
Database: line beside the highest version number.
2. Digice urn nome de tabela no campo Object Name.
6. P ression e 0 batao Retrieve na barra de ferramentas Application. VIDa 3. Pression e 0 bctao Display.
caixa de dialogo aparece coneendo a mensagem vers i on nnnnn is now 4. Selecione 0 caminho de menu U tili ties- c-D atabase Utility. A tela
new revi sed (non·active) version . Proceed? ABAP/ 4 D ictionary: U tiliry for D ataba se Tables ~ exibida, como
7. Pressione a ba tao Yes. Voce ~ levadc de volta a tela Version s O f
mcstrado na Figura 6.6.
Object e a mensagem Restored ver sion must be acti vatedl aparece
Figura 6 6
na pane inferior de janela. H averf uma marca de selecac 010 lade cia
Utilizondo 0 tela
palavra act .. A ver sao revisada ~ agora a mesma que a do botao Active. A8AP/4 Dictionary:
8. Para verificar se a versao revisada coincide com a versac ariva, coloque Utility for Database
Tobles,
uma marca de selelji o ao lado d.a palavra mod .. As duas linhas act . e voce pOOe se
mod . agora esta.rio com uma marca de sele~ao. , comun;cor
9. Pressione a ba tao Comp are na barn de ferramentas Application . A diretomerrtecom
o banco de cJodos
tela C omparison For Tables e exibida. pe ra exihir au alteror
10. Pressione 0 batao D elta D isplay na barn de ferramentas Application. umolobe/a.
A Iista deve ce nter uma linha que exibe 0 text o Genera1 attri butes :
Unchang ed e ourra Iinha que exibe 0 textc Fi el ds : Uncha nged. Voce
agora confirmou que as vers6es revisada e ativa coincidem.
11. Pressione 0 borac Back n.a barra de ferramentas Standard. Voce e
levado de volta a. tela Versions of Object:
12. Pressione 0 batao Back na barn de [erramentas Stand ard. Voce e
levado de volta atela Dictionary: Table/ Structu re: Change Fields.
13. Pressione 0 bou o Activate na barn de ferramentas Application. 0
campo Status con tem Act. e a mensagemxxxxx wa s acti vat ed aparece D aqui voce pode:
I
na parte inferior da janela.
I • Verificar a coerencia das definicoes de DDIC de R/ 3 em rela~o ao
Todos'os objetos·DD IC, como domini os e elemencos de dados, possuem banco de dad os.
versoes revisadas e ativas. Todas elas podem ser exibidas e comp aradas da • Visualizar 0 log de ativa<;ao para ver as instru~6es de SQL reais

I
I
mesma maneira. Os objetcs podem ucilizar versoes apenas ativas. Por exemplo,
se voce modifies urn domini o e cria uma versso revisada, elementos de dados
que a utilizarn continuam a utilizar a versao ativaate que voce ative 0 dominio.
enviadas ac banco de dados:
• Exibir e modificar a s parimetros de armazenamento do banco de
dados .

I
i
.. --
DIA6:0DATADICTlONARY,PARTE 4 I 227
226 I 'PREHD' EM 21 DIAS "'Pi<

• Excluir urna tabela excIuindo-a temporariamente no banco de dados,


NOYO.... Umo tabela de R/3 e, sob certcs aspectos, como um progra mo trodidonol. Elo
iEUlO" exlste em dois fcrrnulerics : na "fonfe" que vocA pode exibir e mcdificcr e no
ou esvazia-la excluindo-a e recriando-a no banco de dados. formul6rio campi/odo que e utilizodo em tempo de execucec , cho modo obieto de tempo
de execur;60 . 0 cbietc de tempo de execUl;60 e criado qua ndo voce ct ivc a tobelc e
Ve ri fi co (;6e s de coerencio tombem e conhecido como nornetob.
A definicao de uma tabela trans parente existe em dois lugares: no diciomrio Quando urna verifica(f3.o de coerencia e executada, 0 nametab e com -
de dados de R/3 e no banco de dados. Para verificar a coerencia entre os dcis , parade com 0 banco de dados .
a partir de dent ro do utilitario de banco de dados escolha 0 caminho de menu Voce pode exibir 0 nametab do utilitario de baccc de dados escolhendc
Extras-> Da tabase Object->Check. A versac ativa da tabela ecomparada com o caminho de menu Extras-> Runtime object-> Displa y. A tela O bject xxxxx:
a tabela de banco de dados. A tela Table xxxxx: Check Database Object ,era Display Active Runtime Object eexibida (veja a Figura 6.8) . Na parte superior
exibida, e uma mensagem na parte superior da lista indicant se 0 objero de banco esta 0 selo de tempo do camerab seguido pelas informacoes de cabecalho. Ele
de dados e coerente (veja a Figura 6.7) . con tem 0 tipo de tabela (T para transparence], a forma da tabda no banco de
dados [n ovam en te, T para rransparente), 0 ndmero de campos na tabela, 0
Figura 6 7
comprimento em bytes do regisrro, 0 namero de campos chave, 0 compri-
Umo veriDco¢ode
coer!ncio com 0 menta dos campos chave em bytes , as informacoes de bufferizaclc etc. (Para
banco de dodos informacoes detalhadas sabre os campos de cabecalho e seus valores, exiha a
confirmo que 0 estrutura X030L.) Embaixo do cabecalbc esd. uma lista dos campos, sua posilj3.o
denni¢o DOIC R/3
do tobelo ztxl f al
na tabela, 0 tipo de dado , 0 comprimento, a namerc de casas decimais, 0
e 0 definit;60 do deslocamento desde 0 infcio do registro, 0 comprimento exeem c cia tabela de
bancode dodos s60 refereacia, a tabela de verificaljao etc. Os atributos recnicos cia rabela sao
identicos.
completamente descritos pelo nametab.

FlliJurQ 6 8
O nometob ~ 0
objeto de tempo de
e:cecu¢o pora umo
lobe/a. E/e cantem
todasos
caroderisticos
hkn icos do tobelo
comonamesde
compo. Hpos de
dodose
As incoerencias podem surgir se: compri~ntos.

• A defini(faoda tabela foi alteradano nfvel de banco de dados. Isso pode


acontece r se alguem manualmente alterar a definicao de banco de
dados ou se um programa em ABAP/4 alrerd-la utilizando ccdigc SQL
native .
• a banco de dado, for danificado.
Voce pede fazer urna verificacao de coerencia se, quando testar urn
programs, obdver urn erro de SQL incomum ou obtiver resultados incorretcs
de urn c6digo que deveria func ionar bern mas, inexplicavelmente, nao funciona.
o popel do nametab nos programas em ABAP/4
Como aprendeu no Dia 2, quando voce cria urn programa em ABAP/4 que
Encontrar urna incoerencia indica que a origem do problema pode estar fora seleciona dados de uma tabela, voce deve codificar uma instI1Jljao tables. A
de seu programa. insrrucao tables torna a estrutura da tabela conhec ida para 0 programa.
-~ •••• w••••••• • • w._--- -
228 I APIENDA EM 21 DIU ABAPI4 DIHOIlAU DIGIOORY,PARTH ! 229

Entretanto, quando voce,gera 0 obieto de temp o de execucjo para 0 programa, Extras- >Runtime O bject->Check. 0 objeto de tempo de execucgo e cam-
a defini~o da tabela nao esti incorporada a ele. Em vez disso, quando 0 objetc parado aos objetcs [onte de DDIC. A tela Object xxxxx: Check Active .
de tempo de execucic do p rograma e executado, ele faz uma ch ama da para a Runtime Obje ct sera exibidaeuma mensagem na parte superior da Iisraindicard
narnetab a fim de determinar a estrurura em tempo de execucio da tabela. Isso se 0 objeto de banco de dados e co erenre. A s Figuras 6.9 e 6.10 mostram urn
permi te que voce altere uma tabela (ou estrut ura) sem ter de gerar novam ent e exemplo de uma incoe rencia no narnetab para a tabela zt xl fal.
todos as progranw: em AIJAP / 4 que a utilizam. Eles detenninam dinamicamente Se urn dominic for alcerado e a reativacf o cia tah ela falhar, uma incoerencia
as caracterfsticas da tabela em tempo de execuc j o chamando a nametah. pode exisrir entre 0 nametab e 0 dominic. .
Embers voce DaO tenha de gerar novamente to dos as program as sempre No caso cia Figura 6.10, a verificacac descobriu que 0 tipo de dado de
que um a altera~ao far feita ern uma tabel a, certas alteracoes (como renomear campo 1i fn r echar 10 no nametab e i nt 4 no domfuio.
ou excluir urn campo) exigirjo qu e voce fa~a altera~6es no c6d.igo do ABAP / 4. Os programasem ABAP/ 4 utilizam apenas 0 aametab. Portanto, des cae
N esses casas, voce pre cisarf ene ontrar to dos as programas que a utili zam. saberac sobre as incoerencias e assim njio sio afetad cs por elas no sistema
Develo pment. T ran sportar as oh jetos de DDIC antes de corrigir as incceren-
S(REOlCAM~ inicie a ScreenCam "How to Perform ~ Where-Used List on a Toble" cqcro. cias p ode cau sar probl emas durante a imporraci o para Q/ A ou para a producac
ou mesmo fazer com que pr ogr amas em AJiAP/ 4 nesses ambientes produzam
Para localizar todos a s progr arnas que utiliz arn uma da da ta bela: resul tados incorretos. A raz ao disso reside no fato de que as alteracoes nao
afetaram os pro gram as em ABAP/ 4 e, portan to, ainda nao for am testadas .
1. Comece na Dictionary : Initial Screen.
2. Di gite a no me da tabel a no camp o Object Name. Fig u r a 6 9
Nestatela, umo
3. Pressione 0 bctac Where-Used List na barn de ferramen tas Appli- de
lIerifiCIJlj6 0
cation. Uma caixa de dialogo Wh ere-Used List apar eee. '. coe~ncio
indica
. 4. Escolha a botao de opere Programs . umomensogem de
~rro ~m que 0

5. Pressioneo botao' Continue. A tela Table xxxxx in P rogra ms ~ compritrn!!nto d~


exibida. Uma lists de todos a s programas que utilizam a tabel a r~gjstro, a
comprim~nto do
apareee. <hove. 0
6. D e urn clique duplo em urn nome de program s para exih ir todas as olinhomenlo do
tobelo s6 0
linhas de c6di go em qu e a tab ela e utilizada .
inroerentes.
7. De.um clique duple em uma linha p ara exibir a c6d.igo que inicia dessa
linh..
Verifica ndo a coerenci o do nametab
o nam et ab obrem suas caract erfsticas dos elemen tos de dados e dominios que
compoem a tabela. :E po ssrvel que a defini~o do n ametab esteja fora de
sincronizacio com os elementos de dados e dominios. Por exemplo, quand o
voce ariva uma altera~ao em urn dominic, as rabelas que 0 contem tambem
devem ser reativadas para receber essas altera~oe s . Embora isso acont eca
autom aricamente,'em certas situa~6es uma reativa~ao pe de falh ar po r causa de
urna restri~ao do banco de dados au porque a tab ela conrem dados e deve ser
cc nverti da. Essa situa!jao p ede ser detectada executando uma verificat;ao de
co erencia no ob jeto de tempo de execucgo.
Para veriflcar coerencia en tre a narnetab e as objetos D ata Dictionary, a
partir de dentro do utilitario de banco de dados escolha 0 caminho de menu
"""1"0-
230 APR EN DA EM 21 DIAS ABAPI' DIU DDATAD1cnDlIARY, PAJ<l" 231
Figura 6 1 0 FiGura 6 12
Rolor porabaixo no Este li 0 restonte do
llsto mostraos log de affva~60
campos do nomelob mostrodo na
eo raz60 do Figufa 6.1J.
ineoerendo .

II
I
!

Para exibir asinformacoes em detalhe que descrevem qualquer mensagem


Exibindo 0 log de otiva!foo no log, posicione 0 cursor na mensagem e pre ssione a reels F I.
A partir do utilieario de banco de dados, voce pode exibir 0 log de ativa/iao
pressionando 0 boeio Object Log na barrade ferramentas Application. Esse Exibindo e modificando pa ram etros de o rmazen a me nto
lo g som ente e gerado se a ativa~ao fizer 0 c6digo SQL ser gerado. (Em alguns Pressiona r 0 boteo Storage Parameters de dentro do ueilitario de ban co de
casas, uma a lteracao de tabela pode ser ativada sem afetar 0 banco de dados, dados (veja a Figura 6.1) exibe a tela DB Utility: Transparent Tables -
por exemplo, uma alteracac para. 0 texto curto.) 0 log contem a sequencia de D atabase Parameters. A Figura 6.13 mostra como essa tela se,parece quando
passos realizada e todas as instrucoes de SQL enviadas ao banco de dados urn banco de dados Oracle e inscalado. Essa tela se presta princip almente it
durant e a ultima ativa/iao (veja as Figuras 6.11 e 6.12). utilizacio pelo DBA para alterar os parametres de armazenamentc de dentro
F ig ura 6 11
de R/3 depois que uma tabela foi ativada. Ela e apresenta da aqui para tornar a
o Jog de oHvo¢o discussao complete.
exibe 0 seq ~n cio Informacoes especfficas de banco de dados sobre os parametres de
de possos reolizodos . armazenamento da tabela sao exibidas aqui. A coluna Src indica a fonte dos
durante 0 otivo ~ao e
valores. DBS significa que esses sao os valores reais no banco de dados. eMP
o e6digo SQL que
foj gerado. Esse log significa que esses valores sao compurado s a partir da caregoria de tamanho e
mostro que durante a partir das classe de dados. A linha USR permite que voce defina os valores de
o olivo¢o, 0 tohe/o Next E, MaxE, Pf e Pu e os aplique imediatamente pr essionando a bono Apply
fai exc:lufdo
temporariomente no Parameters Next E, MaxE, Pf e Pu Inmedt atel y. Na maioria das vezes, as linhas
bonco de dodos e DBS e eMP serge as mesmas, a menos que os parametres de armazenamento para
reer/odo . a tabela de banco de dadcs forem alterados manualmente depois que, a tabela
tiver sido ativada.
.............. -w w'W ........... _
TII ......-.-~ ~ ---.-..

232 ,p",o, EM21 OI'S Ai'P /4 OlA 6; 0 DATA DlcnotWY,PAm" 233

F jgura 6 '3 caixa de di:ilogo sen exibida para confi rmar sua solieita~o. A nbela e seu
Pcrdm~tros coneeodo serac excluidos do banco de dadcs. Paracrid-lo novamente, pressione
espedhco s de banco o borac Create D at abase T able. A tabela sera recriada para util izar sua versa c
de dodos sOO
mostrodos no tela
ativa. Vo ce pede utilizar 0 utilitdrio de banco de dados para fazer isso em vez
DB Utility: de escrever urn programa em ABAP/4 para excluir todas as linhas.
Transparent Tobles
- Database
Porameters. Essa
Excluirtempororiomente umo tcbelofez com que todos as dodos dentro
h!1c mostrc que cs
poro metros de de la sejcm permonen temente perd idos. E umo boo ideio fcaer umo
orm ozenomenlo c6 pia de bock.up do tobelo a ntes de exd uf-Io. Se voce copier 0 tcbelc
pore 0 tobe/o monua lmente, le mbre -se de copier to nto 0 definil;oo do tobelo co mo
. ztx lfal {oram a s dodos.
oherodos depois do
OM¢o, porq ue as
/inhos OBS e eM?
nee coincidem.
Se 0 ta belo fiver mais de umo extensoo, exd uir temporariomente e
reeder umo tobe lo e a moneira mois rcprdce f6cil de reorganiz6-lo.
Voc~ precisorO sa lvor a s dodos em outro tabela tempor oriamente antes
de exdui-Io e depo is co pi6-lo de volta.

As colunas InitExt e NextExt con rem os tamanhos (em blocos) das Resum o
exeecsees inicial e p ro xima. A s co lunas HinE e Max Econtem 0 nd m ero minima
• As alteracoes para dados crfticos podem ser aut cmaticamente regis-
e maximo dasext ensoes permiridas. 0 nome de reblespacevern depois, seguido tradas em do cumencos alteradcs. Para dad os nao vitais, obje ros de
pew cc lunas FGe i r, que ccntem 0 ndmero de gropes de list a livre e 0 mimero
documentc alreradc devem ser urilizados no Iugar.
de listalivre em urn grup o. (Essas duas colunas sao apenas utili zadas se 0 Oracle
estiver sen dc utiliza do no modo de pr ocessamento paralelc.) As co lunas Pf e • Uma versso revisada de uma tabela e criada quand o voce a modifica
Pu contem a po rcentagem de espa~o livre e a porcentagem de especc utilizado sem ativa-la. Somence a versac ativa de urn cbietc pede ser utilizada.
nos blocos dedados.Para maisinformacoes sabre qualqueruma dessas colunas, • Usando 0 urilitaric de banco de dados , voc~ pod e examina r a name tab
pos icione 0 cursor nela e pre ssione Fl. e comparar sua coerencia com 6 D ata Dictionary e com 0 banco de
Em b ora os unicos p ardme tr os que podem ser alterados sej am NextExt, dados.
Hax E, Pf e Pu, voce deve preencher completamente a linha antes de pres sionar • 0 u tili tario de banco de clados tambem permire que voce visualize 0
o botao Apply. Por exemplo, para alrerar 0 tamanho cia proxima extensdo para
log de ativa~ao para uma rabela, os pardmetros de armazenamento e
64 e configurar 0 numeromaxim o de ext ensoes como 4, priin eiro selecione 0
drope e recrie uma tabela no banco de dados.
bo tao de op~o USR. D epois di gite 64 na co luna NextExt, digit e 4 na coluna
"axE, copie 0 restc dos valores da linha OBS e enrac pressione 0 batao Apply.
Suas alteracoes sao imediatamente aplicadas ao banco de dados quando P&R
voce pressiona 0 borso Apply. Par a visualizar as resultados, pre ssion e 0 batao
Back a fim de retomar atela ABAP/4 D ictionary : U tility for Database T ables
e entao pression e 0 botao Sto rage Parameters na barra de ferram.ent<lS Appli-
o Onde urn DBA in a alterar 0 pacam etro de armazen am en to de
u ma tabela ativada de den tro do sistema de SAP R/3?
cation. A linha que t~m DBS na coJuna Sr c conted. as valores atu aliu dos.

Excluindo e recriando as tabelas nO bo nco de dodos o V a para 0 utilitirio de banco de dados e p ressione
Storage Pa rameters.
0 bo tao

A maneira mais nipida de excluir os dados de uma labe la eexclui-Ia temporaria- •


mente (drop ) e entao reeria-Ia. Para fazer !sso com urna tab ela, a partir do
utilid.rio de ban co de dados pression e 0 batao De lete Database Table. Urna
234 APRENDA EM21 DIAl ABAP/'

Workshop
o Workshop ofer ece dua s maneiras de voce verificar 0 que aprendeu neste
capfrulo . A se~o T este oferece perguntas para ajudar a solidificar seu entendi-
menta do conte udo abordado e a se~ao Exercfcio permite que voce pratique 0
que aprendeu. Voce pode encontrar as respostas as perguntas do teste e ao
exercfcios no Apsndice B, "Respostas as perguntas e aos exercfcios" .

Teste
1. E possfvelque a defini<;ao cia tabela e do s elemento s de dadcs e
domfnios passaro estar fora de sincronizacac ?

Exerdcios 1
1. Qual e a maneira mais rapida de excluir as dado s de uma tabel a?
1.1a 7
Definindo dados no ABAP/ 4,
Parte 1
Q bjetjvos docapftulo
Depois de completer este capitulo, voce devers sec capaz de
• Explic ar a area de rolagem do programa e seu conteudo.
• Entender as elementos de sintaxe do ABAP/ 4.
• Descrever 0 conceito de ob jeeos de dedos e sua visibilidade .
• U tilizar os literais e entender como codificar cada tipo .
• D efinir e utilizar as constantes.
• Utilizar a insrrucfo data para definir varidveis e strings de campo .
• Encender tipo s de dados do ABAP/ 4 e ser capaz de iden tificar 0
caractere e os tipo s de dados numericos.
• Entender a definicac do ABAP/4 de ripos de dados comuns de D DIC .
Antes de prosseguir, volte 010 Dia 2 e dedique alguns minutes para reler
a analise da sec;ao "En tendendc a sintaxe de codigo" agora.

http://www.ccrrpus.com.br
r I I I I I I I -IT I T I I I I I I I III • I • I .- I ........ ..- • • • • w w w W - - - - - - - -
~I

236 I APR ENO" . 21 OIAS ABAPI4 D~]'oEFIHIHDOOAOOSHOABAP I4,PAR1I1 I 237 I


o buffer de programa e a area de ro lagem
Uma instrucao pode comecar em qualquer coluna e pode girar qualquer
mimero de linhas. Para continuar uma instrucao em outre linha, quebre a
O s programas sao colocados no buffer no servidor de aplicativo em urn buffer instrucio entre quaisquer duas palavras. U rn caract ere de continuacac nao e
de programa. Quando urn usuari o faz uma solicitacl o para executar urn pro- necessario. P or exemplo, 0 c6dig o na Listagern 7.1 pede ser refo rmatado como
gram a, um a pesquisa efeita no buffer de pr ograma para ele. Se ele fo r localizado moseredo na Listagem 7.2.
e se tiver sido modificado no banc o de dados, a c6pia colocada no buffer sera
utiliz ada. Caso contrario, a u se a cop ia no banco de da dos for rnais nova, 0 ENTRADA.... Listagem 7.2 Este c6d igo e 0 mesmo do Ustogern 7.1, ele apenos foi
programa e recarregado . ,. forrnatodo de maneiro diferente
U rna c6pia separada d o programa DaO efeit a na mem6ria pa ra cada usua rio
que a execut a. Em vez disso, to dos as usuaries execut arn a mesma c6pia do 1 sef ect " from zt xl fa l
2 where 1i f nr > I OO~OOO IO SO'
pro grama. 0 fator de diferenciacso e uma alocacf o de memoria separada
3 order by lifnr.
chamada area de rolagem. Uma area de ro lagem e alocada po r execucac de 4 wri t e : \ ztxlfal-l 1fnr,
usuario p orprograrna. 0 sist em a utilizaa areade rol agem para armazenar to das 5 ztx lfal-namel,
as informacoes sobre a execucao atu al do p rogram a e todas as alocacoes de 6 ztxlfal -1andl. endsel ect.
memoria. Todas as informacoes , como as variaveis e seus valo res, 0 po nteiro
at ual do programa e a safda de Iista, sao manti das na area de ro lagem. P or
o c6digo do ABA P/4 nao faz disdncso ent re maiusculas e minusculas.
exemplo, suponha que urn usudrio executa urn pr ograma e uma area de rol agem
ealocada. Se, sem esperar ele term inar, 0 usuario mu da para ou tra sessao e inicia
o m esmc programa novamente, ou t ra area de rolagem ealocada pa ra a segunda Definindo objetos de dodos
execucao desse programs. 0 usuario tern d uas areas de rolagen s, uma para cada
execucao do programa. Se 0 usuario em vez disso tivesse executado urn KOYO..... Os ob;etos de dodos sao posit;oes de mem6ria que voce utilizopa ra ormozenor
TERMO" dad os enquo nto 0 programo est6 sendo exec~tado. H6 dais t~pos de .~biet~s
programa diferente, ele aind a teria duas areas de rolageos, um a para cada de dodos : mcdlfkoveis e noo-mo dific6veis. 0 tipos de cbje tos de dodos neo-mcdfflccvets
programa. sao literais e constontes. Os ob jetcs de dodos modific6veis s50 a s vcrievels, strings de
compo e tobelos internos. Uma string de campo IS 0 equivo lente do ABAP/4 de umo
estruturo. Umo tob elo Interne e 0 equivalente do ABAP/4 de um a rroyo
Elementos de sintaxe do ABAP/4
Quand o 0 p rograma e iniciado, a aloca<;ao de mem6ria para cada objeto
NOYO.... Coda programa do ABAP/4 e compa sta de uma ou mois instrut;oes. Coda de dad os ocorre na area de rolagem do programa. Enquanto 0 pr ogram a esta
YERMO" instru¢o contem uma vcri edcde de polavras seporodos por pelo menas um sendo execut ado, voce pede ler 0 conteu dc de urn ob jet o de dados nao-modi-
esp cc c . A primeira pclovro de uma lnstruccc IS a pclovrc-chcve. Umo instrut;oo pode
indui r uma a u mais odit;oes e se mpre termina ca m urn ponte. ficevel ou colocar os dados em urn o bjeto de clados modif idvel e emso
recupera-lo. Q uando 0 programa termina, 0 sistem.a libera a mem6ria para
N a Listagem 7.1, as p alavras-chave sao select, wr i te e endse lect. D ua s todos os objetos de dadc s e seus conteudos sao perdidos.
adic;5es aparecem na instruclo select : where e order by. Tudo 0 que norm al-
m ente e chamado de cltiusula em outras lingu agens e chama do de adifao no NOVO.... Os cbjetos de dados t~m ires nlveis de visibjJidode : local, global e extem~. A
ABAP/4: ou seja, e qualquer palavra ou grope de pa lavra.s depois de palavra- YERMO"- vlsibllidode de um cb jeto de dados indica em qua l loco I do progromo c objetc
chave que modificam 0 comp ort ame nto da insrrucao. de dodos IS ccess'vel.

Obietcs de dados localmente visfveis sao acessfveis apenas a partir de


EKTRADA~ Lislogem 7.1 1I", lro, 50 do sinlox. be,i co do ABAP/4 dent ro da sub -rotina em que d es sao definidos. Objetos globalmen te visiveis
1 sel ect · from zt xlfal where l1fn r > ' 0000001050' order by l ifnr . podem ser acessados de qual quer Iu gar dentro do progra ma . O bjetos ext~rna­
2 write : \ ztxlfal- lifnr, ztxlfal - namel, ztx lfal-landl. m ente visiveis sao acessiveis de fora do pr ograma por outro prograrna. A FIgura
3 endse1eet. 7.1 exibe esses treS nfveis de visibilidade pict ori camen te.
Na F igura 7.1, os objetos de dados locais na sub-ro tin a lA estao visiveis
somente de den tro dessa sub -rotina. Qualquer ins truc;ao fora deja nao pode
238 AP RENOA EM21 OIAS ABA PI4 O~ HEIlNINOO OAOOSNO ABAP/l.PARTE I 239

acessa-los. De forma semelhsnte , as objeros de dados locais nas sub-retinas lB Literais de string de caractere
e 2A DaD estaoacesstveisem qualquer lugar, somente dentro dessassub-re tinas. as litcais de string de caraetere sao strings que diferenciam letras maifisculas e
Qualquer instru~ao no p rograma 1, indiferente do local onde a .instru~ao minuscules de qualqu er comp rimen tc inclufdas entre aspas simp les. Pa r exem-
aparece, p od e acessar as obje tos de dados globais no programa 1. De form a plo, I JACKI e urn literal de string de carac tere que contem som ente caracteres
similar, qualquer instru liao n o programa 2 pe de acessar as objetos de dados em letras maiusculas. 'Eaesar the cat I e urn literal de string de caractere que
globais no progruna 2. contem uma mistura de caracteres em letras mindsculas e maiasculas. Seu
primeiro programa utilizou a literal de Strin g de caractere I Hel l o SAP worl d I •
Ar eo de mem6ria extem o
Como urn literal de string de caracte re e inclufdo entr e aspas. voce nio
f lou r a 7 1
A visibi/idodede um
~: Dodos extemas pode utilizar aspas simples pa r si mesmo no valor do literal. Para representar
ob;eto de dodos
indi ca SIlO ~",,:"i¥@ . Obietos uma aspa simples. voce deve utilizar duas aspas simp les ccnsecutivas. Por
ocessibilidode. ~ exemplo, a insrrucio wri te I Caesar I IS ta t l ' . escreveri cees er- ' 5 tai 1. mas a
lor loco/mente instrucao wr; t e ' Caesar 5 t eil ' causarau m erro de sin taxe por'que elaconcern
I
vislve!, ele e Progroma 1 Progromo 2
ocessivel openos de uma aspa simpl es den tro da pr6pria string . A instrucao wr ; te I I I I • fara com
dentroumo ~J::i!i'.ts.1-"f:i!. Dedos globois r~ ; Dodos global que um a aspa simples seja escrita na pagina de safda, po rque as duas aspas
svb-retina. Se for 'consecutivas dentrc das aspas sao tr aduz.idas como uma aspa simples . Por fim ,
globalmen~ wsNd. ~~ Obiete! ~:M' . O bjelos
ele e oceu fvel de write : • I I I . 'Hello Caesar '• "". escrevers 'Hello Caesar I •
quo/quer fugor Eis alguns exemplos de literals de string de caractere icvdidos e a maneira
dentro de um Sub-retina lA Sub-retina 2A correta de codified-los . "Samant ha" esta in correto; ela deve estar inclufda entre
progromo. Se for
aspas simp les. cia aspas duplas e. po rtanro, devem ser codificadas I Samantha I .
emmomltnte vislve/, m~ Dodos laea is ~. Dodos locois
e ocesslvel de foto Em I Never end; ng, a aspa da direita esta faltando e assim deve ser codificado
~iMl'~_, Ob jetos !#ci#~ Ob ietos
do progrcmo. par" I Never end; ng' . I Don I t b1 t e I deve canter duas aspas simples con secutivas; ela
DUtro progromo.
deve ser codificada I Don' 't bi t e ' .
Sub-reline 1B

~. Dodos lcccrs
~o
Q ua ndo um litem] esfiver en va lvido em uma ccmpcrccoc, de modo
$~~ O bjetos gerel voce sempre d~e utilizor lefrcs mclvscutcs entre ospas. As
ccmpc rccces com litereis de string de ccrcctere sempre diferenciom
letrcs rncicscvlcs e minuscules, enta~ e necess6rio certlficcr-se de
utillacrc cckc correto para obter 0 resultcdc dese jado. Se 0 coixa noD
cc incidir, no rmolme nfe 0 progromo oinde sera executodo, mas 'lac!
Os obje ros de dados ext emos pod em ser acessados de qualquer instru~o
obtera umo soldo incorrefo au nenhuma seido no final dos contos. Em
no pro grama 1 ou 2. Na realidade. se eles podem ou nao ser acessados dependeri 99,99% das vezes, os valores de seu life ral de string de ccredere serOo
do tip o de area externa de me m6ria util izado e do relacionarne nto ent re os dois comporodos e esteroo em lefras maiuscules. Portanto, sempre digite °
programas . O s deulhes disso sao descr itos nas se~6es sob re a rnem6ria . . a lor pare um literal de string de coredere em letros maiuscules, a
SPNGPA e a mem6ria doABAP/4 . menos q ue saibe que ele de'le aparecer de meneira confr6ne . Por
exemplo,select s ingl e· from ztxlfal wh ere lifnr c I v i l noo
loca lizorO um registro. mas select s ingle · f ran ztxlfal where
Definindo lite rais 1ifnr • ' Vl ' loceliza r6 urn registro , Voce notou as letrasmjnuscu las ~
U rn literal e urn objcto de dados nao modificavel. O s literais podem aparecer
em qualquer lugar em urn p ro grama e eles sao definidos m eramente sendo
Lite rais numericos
digit ados ood e necessa ria . H a quatro ripos: String de ca.ractere. numerico. de
Litu ais numericas sao valores numericos codificados manualmente com urn
ponto flu ruan te e h exadecimal.
sinal a esquerda opcional. Eles no nnalmente nio sao inc1ufdos entre. ~pas.
Entretanto se urn literalnum erico contiver urn decimal, ele cleve ser codiflcado
como urna' st rin g de caractere induida entre asp as simples. Caso contMO,

..•. ,
240 APUlDA EM21 DlAS AlAP/. D1AloDEllNINDOlWlOSNOABAl'/VAlTE 1 241

ocorrera 0 erro de sintaxe Stateme nt x is not def ined. Please check your Tabela 7.1 Mc neiras erradcs e certos de codificcr [itercis
spell i ng.. A Tabela 7.1 mostra as maneiras erradas e certas de codificar literals.
Certa Erra da Explica sa o
Por exemplo , 256 ~ urn literal numerico, assim como 0 e-99, '10 .5' eurn
literal numericc que contem urn ponto decimal; portanto, ele e incluido entre -99 99- o sinal a dire ita ndc permitido em um nume ricc a
me nos que este]c dentro de as pos.
aspas simp les. Urn literal pe de ser utilizado como 0 valor padrao para uma
, ~ 12 ' Nurnenccs entre ospos podem ter sinal c
variwel ou pede ser utilizado para fornecer urn valor em uma instru~ao .
esquerda a u a dtrelto ('12 _ '].
Exemplos de literaisinvalidos sao: 99- (sinal de subt raci c adireita), "Confi rm·
' 12. 3' lZ.3 Numericos con tendo um ponto decimal devem se r
(incluido entre aspas duplas} e 2.2 (contem urn decimal mas nao esta incluldo lncluldcs entre os pos simples.
entre aspas).
' Hi I ·HP Aspos du pla s na o sdc perm itidos.
' Can' It' ' Can' t l Para representor umo as pa simples, utilize duos
literais de ponto f1 utuan te ospo s simples consecctbcs.
Literais de ponte f/utuante sao especificados denero de aspas simples como
' Hi' 'Hi A ospo a d ireito est6 fcltcndo.
' cmant i ssa> E<expoente>'. A mantissa pede ser especificada com urn sinal a
17E1 ' 7£1 Valores de ponto flutuonte devem ser ind uid os
esquerda e com au sem espaccs decimais e 0 expoent e pade estar com sinal ou
entre a spas .
sem sina l, com ou sem zero s a esquerda. Par exempla, '9.99E9 1 , ' -10E-32 I e
'] e1' letras mlncsculcs se c perrnitidos para lltercis de
1+l E09 ' sao literai s de ponto flu tua nte validos.
ponto flutuonte.
' OAOO' ' OaOO' Letros minusculos e m litera is hexcdeclmcls doo
Literais hexadecimais resultodos tnccrretcs.
Urn literalhexadecimal e especificado dentro de aspas simples como se fossem Um numere lmpor de drgitos hexadecimois d6
' OAOO' 'AOO'
um a string de caractere. Os valores permitidos sio 0-9 e A-F. Dev e haver urn resulta dos lncorretcs . .
mesmo mimero de caracteres na String e todos as caracreres decem estar em X'OAOO' Um ccroctere, sejo coloca do antes ou depois, ndo
' OAOO'
letras maiNsculas. e perm itido porn lite rois hexodecimcis.

Definindo yoricyeis
~o
Se v od! espedfi cor um literal hexadec ima l utilizando ccrccteres em
letros mincscvlos, v eel! n60 reeeber6 qualquer a v lee ou men sagem de Duas instrucoes sao comumente utilizadas pa ra definir variiveis em urn pro-
errc . Entretant o, quando seu progromo for executodo , a volar do literal . grama do ABAP/4 :
estar6 e rrado.
• data

Exemplos de Iiterais hexadecimais validos sao ' 00 ' , 'A2ES' e 'FlFOFF'. Os • parameters
exemplos de literais hexadecimais invilidos sao' aleS ' [contem caracteres em
letras mimisculas}, ' 0 ' (coutem urn numero de caract eres Impar}, - FP (io-
Utilizando a instru~a o data pa ra definir vari6veis
U tilizando inStrUliio data, varidveis podem se r declaradas par a 0 programa.
c1uido entre aspas duplas ) e x' OO' (nio deve ter um x no infcio).
Variiveis definidas na instru~ao de clado s sao atribuidas a urn tipo de dado e
tambe m podem ter padrces .
vc lc res hexcde cimc ts soo roromente utilizodos noA BAP/ 4, porque eles
soo normolmente depende nte de moquinc . 0 usa de urn valor hexo-
decimal que eria dependenclo de mcq vinc de ve ser e....ita do. Sintaxe para a instruCjoo data
til A seguinte e a -sintaxe para definir um a variavel que utiliza a ins tru~ao

A Tab ela 7.1 desc reve maneiras erradas e cert as de codificar de literais Z data:
hexadecimais e numericos. ~ d.ta , 1[{l )] [type tJ [dec' ...." d) [,,1 ve ·x,,·].

...
m au
242 Hmo . EM 21 OI.S ABA P/! DIA 7,DEFININDO DAOOS NO ABAP/t PARTE 1 I 243

data vl like tl2 [val ue 'xxx ' ] . • 0 val or inicial padrjo e 0. excero pa ra tipo de dado c. que esu em
onde : branco.

• e0 nome da verievel.
If 1
• A adi!;3.o val ue somente aceita urn literal au ccnstante (veja ahaixo):
voce nio pode uti lizar uma variavel para [ornecer um valor padrjio .
• v2 e0 nome de uma variavel previamente definida no programa ou e0
nome de urn campo que perte'oce a uma tabela ou estrurura no Da ta • Quando utilizar a adi~ao 1i ke, a varia-vel que for definida obtem seu
Diction ary. . eornprimento e ripe de dado da variavel referenciada. Voce nao pede
"especificf-los na mesma ins tru c;ao com 1ike .
• (l ) ea especificacso int erna do com primento.
• Quando u"tilizar a adiCjao 1; ke, a valor nso e obtido da variavel refe-
• It! 0 tipo de d~do. renciada, Voce pede espe cificar a adic;io value para dar a variavel urn
• de 0 numerc de espacos de decimals (utilizado apenas com 0 ripe p). valor padrio. Se voce nao fizer isso , e atri buido urn valor inicial padrao
• I xxx I eurn literal que fomeee urn valor padrao. de 0 [o u em braneo para urn tipo de dad o Characte r ).
A instrucio data pede apa recer em qualquer lugar em urn programa. A
defmi'iao para uma variavel deve vir fisicamente ante s da~ inst rucoes que a
A List agem 7.3 mos tra exemplcs de variaveis definidas com a instrucac acessam. Se voce colocar uma instrucic data dep ois do c6digo executavel, as
data. insrrucoes acima dela DaO podem acessar as vari dveis que ela define. Para urn
exemplo, veja a Lisragem 7.4.
ENTUDA~ Llstagem 7.3 Exemplos de vari 6veis defjnidos com a instru~ao data
ENTRADA'" Listagem 7.4 Exe mplo de umo vori6vel que e inco rretomente acessoda
1
2
data flel) ty pe c.
data f2 like fl . r a ntes de ser definido
3 data ~ax_nl u e ty pe t ve'lue 100.
4 data cur_dat e t ype d val ue ' 19980211' . 1 report zt I0704.
2 data fl(2) vej ce ' Hi ' .
3 write: fl, f l .
Os nomesde varisvel po dem ter de 1 a 30 caracreres de comp rimento. 4 data f2(5 ) val ue ' t here' .

Eles podem ce nter quaisqu er caract eres, exceto ( ) + • • : e devem conter pelc
men os urn caracte re alfabetic o. ANAUSE Iirltr... A vc rieve l F2 e definido no linho 4 e 0 jnstru~oo wrl t e no lmho 3 esto tentcndc
A SAP recomenda que no mes de variaveis semp re deve m co me car com ~ cce ssc-lc. Isso ge rero um erro de sintoxe. A instru~oo dat a no Hnhc quotro
urn caract ere e nio devem com er urn hrfen . U rn hrfen tern signi ficado espec ial devero ser movido ontes do linho 3.
(veja as strings de cam po abaixo). Em vez de urn brfen, voce deve urilizar urn
sublinhado U.
~ boa pr6tico de progremoJ;Qo colocor todos cs defini~bes de dodos
juntos no topo de seu progre mo ontes do primeiro jnstru~ao executavel.
Noo utilize USING nem CHANGING como nomes de vori6veis. Emboro
eles sejcmsintcticcm ente corretos, podem ccuscr prob lemos se voce
tenter posse -los pore sub-refines.
Ti pos de dados do ABAP/4
Hd duas categories pri ncipa is de dados no ABAP/ 4: caractere e numerico.
Variaveis recebem tratame nro espe cial pel o processador do ABAP/4 com base
Os seguintes pontos tambem aplicam para a instrucfo dat a: em sua categoria que vai alem do tratamento normal dad o pa r ourras lin-
• 0 co mprimento pad rjo depende do tipo de dad o. (C omprim entos- guagens. Portan to , eespecialmenre importance para voce ser capaz de reconhe-
pa drao sao Iistados na Ta bela 7.2.) cer e distinguir entre as tipos de dados de caractere e numericos.
• 0 tipo de dado padrf o e c (caractere).
244 I APRENDA EN 21 DIAl IBAP/' DIA 7:DEANIHOO DAnOS NOABAPl4, PARTE 1 245

Tipos de dodos de coroctere


as vclcres de sy-datum e sy-u ze! t sao configurcdos no comecc do
O s tipos de dado de caractere sao mostrados na Tabela 7.2. Note qu e eles execucdo de progromo e n60 o ltero m ate que 0 prog rorno termine. Se
inc luem 0 tipo n, Compriment'os intemos sao dadcs em bytes. Urn hffen na voce precisaracessora data e a he re mais cruel durante a iniciolizoc;:Cio
coluna Max leng th aparece pa ra tipos de dado de comprirnento fixo. de um progromo em execu¢o longo, utilize a instruc;:oo para obter a
. horo. Ela ctucllzc as vclcres de sy-detum e de sy- uzel t para refletir
Tobela 7.2 Listo de tlpos de dodos de ca roctere a data e 0 horo ctucis.

r ipo d e Descrifjoo Comprlmento Comprimento Valores Valo r


dado Interne inte rno int erno validos inicial Valores abscluros de hera que tern precisgo de milissegundos nao sao
padrao mclximo padrao utili zados no R/3 . Entretanto, valores de tempo relativos esnc disponiveis para
precisac de rnilissegundos. Para obter estes , utilize a ins trucao get run time e
c corocte re 65535 Q uo lquer Em bronco
coree . os armazene utilizando 0 tipo de dado 1. Veja 0 capitulo sobre analise de tempo
de execucao para mais detalhes.
n texto 65535 0-9 0
rwmerlcc
d dote 8 (I;xo) 0-9 00000000 Tipos de dodos numerices
t horo 6 (I;xo) 0-9 000000
O s tipos de dados numericos sao mostrados na 'Fabela 7.3. U rn hifen na coIuna
x hexodecimal ] 65535 O oclqoer Co mprim en to maximo indica que 0 comprimento nao pode ser alterado. Urn
asterisco indica que 0 atributo e dependence de maquina.
A coluna Valor iaicial padrfo indica 0 valor dado avariavel por padrao se
voce n ao especific ar urn valor ut ilizan d o a adi~ao va1ue. Tabela 7.3 Tlpos de dodos numericos

rlpo de Descrh;:&o Comprimenlo Comprimenlo Decimals Va loNs Yalor


dodo Intemo miudmo miodmos 'Icliidos Inldal
Representc ceo interno de vori6veis padrao padrao
As variaveis numericas de texto sao chamadas variaveis numericas de caracrere
i inteiro 4 (fixo) 0 _231 a +2 31 0
e armaz enam intei ros posi tives sem sinal. Cads dfgiro ocupa urn byte e
P decimal 8
intername nte cada urn dele s e armazenado como urn caractere. Esse e urn tipo empccctedc
16
" 0·9. 0

de dado de caractere. Ele apenas pode conter os caracteres 0-9.


f ponte f1 ul1Jonle 8 . 8 15· . 1E"'307 a lE308 0.0
U tilize texto num erico para armazenar cameros que sao utilizados como
identificado res especfficos, como e 0 caso do s numeros de documento,
Todas as varisveis na Tabela 7.3 esrjc com sin al. Nas variaveis de ponto
numeros de cont a e num eros de pedido . AMm disso, utilize-o para variaveis
flutuante, 0 expoente tambem esu com sinal.
que arm azen arn urn num erico extraidc de urn ripe de dados de caractere. Por
Utilize inteiros para variaveis que serjc envolvidas em ctlculos simples
exemplo , se voce fo r extrair 0 mes de do is caracteres de urn campo de data e
ou quando nenhum ponto decimal for exigido. Variaveis como contadores,
precisar de urna varisvel para arma zena-la, voce devers utilizar urn campo de
indices, posicoes au deslocarnentos sao bans exemplos.
tipo n.
Urna varifvel decimal armazena (l *2) - 1 dfgiros, onde l e o ccmprimento
A data e a hora sao tip os de dados de comprimento fixo . Voce nao deve
da varifvel em bytes. Valo res decimais sao armazenadc s em do is dfgitos por
esp ecificar urn co mprime nto na instrucac dat a para elas. Os valo res para
byte. excero 0 byte final, que Cantero urn unic o digito e urn sinal. 0 pr6prio
var isveis de data e ho ra sao sempre armazenados internamente como YYYYM\1DD
POntO de cimal nac e armezenado; ·e urn atriburo da defini<;ao. Por exemplo,
e HHMMSS, respecrivamente. A data atual esrs disp onive l no campo de sistema data f1 (4) type p defineuma varidvel fl que tern quatro bytes de comprimento
sy-datum e a hora arual em sy-uze i t .
e pode armazenar set e digitos (mais urn sina l), como mostrado na Figura 7.2.
dat a f2 (3) type p decimals 2 define uma varisvel f2 que tern tees bytes de
com prim ent o e pode armazenar cinco dfgitos (ma is urn sinal). A defini!fao data
f 3 t ype p define urna variavel f3 capaz de armazenar 15 dfgitos, porgue 0
comprimento pad rao para a tipo p e8.
~I II I_I I I" w w w .. • 'W . . . . . w w • • w
w _ _ .'W' - --
i CIA 7:DEAHIHOO DADOS NOABAP/4, PARTE 1 247
V
d
II,.
I
246 "RENDA EM 2\ DIAS ABAP/'

data fl(4) type p. Ta b e la 7 .4 Ccntlnuccdo


Figurg 7 2
Va/ores decimais
empocotodos s60
armazenodos em dais
Elm"'tRl ~"'I
6~ ~~m
Tipo de dodos
de DDIC
Descri~ao Definiljao de
dados do ABAP/ 4
drgilos par byte. 0 cuky Tecla de monetcnc c(s)
byte finol e vmo p decima ls 2.
curr Monet6r io p« L+2) /2 )
elrCeC;aOi ele
ormozena urn un;CO dec Decimal p« L+2)/2)
d;gito eo sinal. a flt p Ponto flutuante f
ponto decimal naa e
i nU Inteiro de 1 byte (nenhum)
ormozenodo e
portonto n60 ocvoc i nt 2 lntelrc de 2 bytes (nenhum)
espotjo no compo; ele
i nt4 Inteiro de 4 bytes
e parle do definic;60.
lang Unguogem c(l )
Variaveis de ponte flutuantes sao sempre aproximadas. Elas podem ser numc Texto nurnericc n(L)
utilizadas par a calculos que exigem valores muito gracdes au muitos espaccs prec Prectsec x(2)
decimai~. A precisac de ate 15 espacos decimais e possfvel, mas isso e depen- quan Quontidode p«L+2) / 2)
dente de hardware. uni t Unidodes c (L)

~o
Tenha cuidodo quando voce especlflccvclcres iniciois no instruc;oo de
dodos utilizondo a cdlcec de volar. Esses vclores nee soo volidodos Utilizando a instru~aa parameters para definir vari6veis
para vlsvcluc r se eles seo au nc o ccmpctlve ls com a tipo de dodo.
Utilizando a odic;:ao de valor, voce pode otribuir vclcres Invclldos pora NOV{) ~ Um pc rem etrc e um tipo de vcr tove l especial que e definida utilizando 0
inteiros, vorioveis de tempo e de data, texto numerlcc, vori6veis Tn.110 r tnstrucec parameters. Esse instruc;60 e muito porecida co m a'instru¢o data,
decimois empocotodos ou vari6veis de ponto f1utvantes, octdentcl- mas quando voce 'executor 0 programa, 0 sistemo exibirc as pcrcmetrc s como compos
mente ou intencionolmente. Os resultados dessa otribuit;oo sao depen- de entrada em umo tela de sele<;ao antes de 0 programo reolmente ccmeccr 0 ser
dente s de mc qulnc e sao indefinidos. executado. 0 usucdc pode digitor ou modificor sees vclores e entao press ionor 0 batao
Execute pare inido ra execucec de progroma. Voce pode utilizarta nto parameters come
data no mesmc programo. k. regros para as names de pcremetrc sao as mesmas que
Mapeando lipos de dodos de ODIC para lipos de dodos do os names vori6veis, exceto nos cases:
ABAP/4
• 0 comprimento maximo e de 8 caracteres, em vez de 30.
Os tipos de dados no Data Dictionary sse construfdos a partir dos tipos de
dados do ABAP/4. A T abels 7.4 mostra os tipos de dados comuns no Data • Alem de litera is e constantes, voce tambem pode utilizar uma varavel
Dictionary e as correspon demes definic;6es de dados no ABAP/4. leo para definir urn valor padrao.
comprimento especificado n o dominic. Para uma lista complete, consulte a
ajuda Fl para a ins trucac tab' es.
Sintaxe para a instru<;ao parameters
Tabela 7.4 Tipos de dados no Data Didionary e sews correspandentes no ABAP/4

Tipo de dodos Descriljco Definiljco de


-
CII
Z
o seguinte c6digo ea sintaxe para definir uma variavel que utiliza a instruc;ao
parameters.

de DDIC
char Ccroctere
dados do ABAP/4
c(L)
c(3)
S
'"
parameters pl( (l)] [type t] [deci mals d] ...

ou
clnt
dats
Cliente
Data d
T parameters pl 1i ke vl
... [default 'xxx'] [obliga tory] [lower case] [as checkbox] [radiobutton group g].

tims Tempo t onde:


.. . . . .. . . • • ....
DIA 7:DEFlNINDO DAOOS HO ABAP/4, PARTE 1 249
248 APRENDA EM 21 DlAS AUPI4

8 r b2 radi obut t on group gl ,


• pl e0 nome.de paramerro. 9 rb3 r adi obutton group g1.
• 1'1 e 0 nome de uma variave l ou pardm etro previamente definidos au 10 wri te :/ 'You ent ere d:' .
eo nome de urn campo que per tence a uma tabe la a u estrutura no D ata 11 / pI -" , pI ,
12 / p2 -", p2,
Dictionary.
13 / p3 - ", p3.
• (l) ea especifi cacfo intema de comprimento . 14 / chI-', cbi ,
15 / cb2=" , cbz,
• teo tipo de dado. 16 / r bIs ' , r bI ,
• d e 0 mimero de espacos decim ais (utilizado apen as co m tipo p). 17 / rb2" '. rb2.
r b3z ' , rb3.
I xxx I e uma variavel literal au pr eviamente definida qu e Fomece urn

18 /

valor padrao.
M adic c es para a insrrucs o par amete r s sao descritas na Tabela 7.5.

A Listagem 7.5 mostra exemplosde pardmetros definidos com ainstrucao Tabela 7.5 Adir;6e s pa ra a instrur;o o para meters e suos utilizoc;6es
parameters.
Utilizasao
ENTRADlllr. Listagem 7.5 Exemp los de pordmetros definidos utilizo nd o a instrucd o type Mesmo que a instrut;50 data.
,. parameters Mesma que a instrvt;oo data .
decima ls
1 par amet e rs pl (2) t ype c. 11 ke Mesma que a instru ~e o data .
2 parameters p2 like pI. default Mesma que a odic;.oo valu e no instru¢o data.
3 parameters mall_valu e type ; default 100. obligatory o usucric deve inserir um volar no compo a ntes de 0
4 parameters cur_date type d def eul t '19980211' obl ; gatory . progroma se r executado.
5 parameters cur_date 11ke sy-da tum def ault sy- dat um obli gatory.
lower case Impede que vclcres seja m troduzidos em tetras ma juscules.
as chec kbox Exibe 0 compo de entra da como umo coixo de selecec.

Um progro,!,o de exemplo utilizanda para meters e dodo no listogem radiobu t ton group 2. Exibe a campo de entrad a como um bofec de opc;.60
°
1.6 e tela de entrcdc que ele gero c pcrece . H6 duos vori occ es do pertencend o 00 grupo g.
i n s1 rv~ea parameters: parameter e parameters . Operacionalmente,
n50 h6 nenbcrnc dlferencc entre as duos; elcs sdo completamente Fig·ura 7 3
intercombi6veis. Entretanto , se voce tento obter a juda Fl no instrv; 60 Quando vocl!
parameter, nenhum a ser6 encoofrcdc. Per esse rczec, recome ndo que executo 0 relot6rio
voce utilize ope nas a instrut;aO paramet er s . z tx0106, os
primeiros
porometros
Urn progra,made exemplo eapresentado na Listagem 7.6)e a telade entra da oparecem em umo
que ele gera aperece na Figura 7.3. Por favor, execute esse relatorio agora. tela de sele'ido.
POrOmetros
obrigat6rios sdo
ENTRADAlrrrrr.... Listagem 7.6 Exemplo de urn proqrcmc que ocelto poru metros de indicodos com
,. e ntrada utilizondo 0 lnstrucco par amet ers pontos de
interroga'ioo. Paro
1 report zt x0706. come'iOr 0
2 parameters: pl(lS) type c, processamento, a
3 p2 l i ke pI obligatory l ower case, usu6rio deve
pressianor 0 batao
4 p3 1; ke sy-datum defa ul t 5y-datum,
Execute no borro de
5 cbl as checkbox, ferrom enfos
6 cb2 as checkbox, Application.
7 r bl radi obutton gr oup gl defa ult 'X',
250 [ APRENDA EM 21 DIAS AIAP/4 Da7,DEIlNINDDD'OOS HO ABAP/I. PAml I 251

O s seguintes pontes tambem se aplicam ainstru~ao parameters: de escolha verdadeiro/falso (true/false) . Voce pode utilizar mais de uma caixa
• Quando a tela de sele~ao emostrada, campos obrigat6rios contem urn de seleljio em uma tela. Se voce river rmilriplas caixas de selecac em urna tela,
ponte de inrerrogaclo. Estes indicam ao usudrio que os campos devem elas operarao completamente independentes uma da outra.
ser preenchidos antes de continuar. Para exibir urn paramerro como uma caixa de sele!jio, utili ze a adiljao as
checkbox. Voce nao pode especificar um tipo ou comprimento de dado; ele sera.
• 0 tipo de dado padrao e c (caracrere).
configurado como 0 padrao ripe c e.comprimento 1. 0 parlmetro contera uma
• 0 valor padrfo e 0, exceto pua tipo de dado c. que esta em branco. letra maitiscula Xse a caixa de sele~aa estiver marcada; e estara em branco se a
• A adi~ao val ue aceita urn literal, uma varisvel sy ou uma varisvel caixa de selecac estiver limpa. Se a caixa de se1e~io inicialmente deve center
previamente definida, no programa. uma me-rca de verifica!jio, utilize um valor padrio de letra X maiuscula. Execute
o programa ztx506 para ver a caixa de seleljao.
• Quando utilizar a adi~ao 1i ke, 0 parametro sendo definidc obtem seu
comprimento e ripe de dado da varidvel referenciada. Voce Dao pode
a espaco e a capital X sao os deices valores validos. Nenhum out re valor

especifica-los na mesma instru~ao com 1ike .


evalido para uma caixa de selecao.
• Quando utilizar a adi~ao 1 ike, 0 valor nso sera obtido da varidvel
refereociada. Voce ped e especificar a adi!jao val ue para dar urn valor Ulilizando a ad i~ao: radi obut ton group g
padrio ao parimetro. Se voce nao Fizer isso, sera. arribufdo urn valor Como as caixas de selecso, urn boeso de 0P!jao tam bern tern dois estados:
inicial pad rgo de 0 (ou em branco para urn ripe de dado de caract ere). se1ecionado e nao selecionado. Diferente das caixas de sele~io, as bc toes de
o p~a o nunca operam sozinhos, eles operam somente em gru pos. Voce pede ter
• Como data, a insrructo parameters pede aparecer em qualquer lugar
qualquer mimero de boeces de op~:ao em urn grupo, mas apen as urn ped e estar
em urn programa, mas a defini~ao deve vir fisieamente antes das
selecionado de cada vez . Eles sao utilizados quando voce precisa apresentar 010
instrucoes que a acessam.
usudrio uma lista de altemativas em que apenas uma 0pljio po de ser escolhida.
.• Os parametres apar ecem em uma tela de sele~ao na mesma ordem em Para exibir .um parametrc como urn bctac de 0p!jao l utili ze a adi~io
que sao definidos no programa. ra diobutton group g. Voce nao pode especificar urn ripe de dad o ou compri-
• Todas as instrucoes parameters, independentemente de onde elas menta; ele sera padrao configurado como 0 padrac tip o c e comprimento 1. 9
aparecem no prograrna, sao agrupadas pelo inrerprerador do ABAP/4 e urn nome de gropo arbitraric de urn a quatro caractere s de comprimento.
e exibidas na tela de sele!jao ao mesmo tempo. Mesmo se voce colocar Voce pede ter mais de urn gropo em urn programa.
uma instruci c parameter no me io do programa, esse partmetrc ainda a parametro camera uma letra Xse a batao de op~o estiver selecionado;
sera exibido ria tela de sele~ao antes de 0 programa ser executado. ele conrera uma lacuna se nao estiver selecionado. Para esta r selecionado
inicialmente, 0 botio de op~ao deve conterum valor padrao da letra x.Nenhum
• Os parametros sio exibidos em urn formato SAP padno. Para modi-
outrO valor e valido par a urn botao de opljio. Exp erimen te isso iniciando 0
ficar sua aparencia, por exemplo, moYa 0 campo de entrada para a
prognma ztx006.
esquerda ou moYa 0 r6rulo para a direita, utilize a ins tru!jao sel ect1on-
screen, descrita no Dia 21. R6tulos de campo de e ntr a da de para metra
N a tela de sele!jao, aesquerda de cada campo de entrada do pa.rametro, eSta urn
Ulilizanda a adi~ao : lelras minusculas r6tule. Por padrao, 0 r6tulo e 0 mesmo que 0 nom e do par ametro . Vo ce pode
confi gurar esses r6tulos manua!mente. Para parametres defmidos como cam -
Todos os valores digitados em urn parimetro sao traduzidos em letras maius -
pos de Data Dictionary, voce pod e recuperar 0 r6ru.lo automaticamen te do
cu1aspor padn.o. Para desa tivar essa tradu~o, utilize a adiljao l ower case. Essa
clemen to de clados.
adilj3.o apenas se aplica a campos de caractere.

Allerando rclulos de pa rametro


Ulilizando a adi~ao : como caixa de sele~a o
Uma em a de sele~ao tern somente dai s estados: marcado e limpo. Voc e os sctEEN CAM ~ Inide a ScreenCom"How to Change Input Field labels" agora.
utiliza quando quiser apresentar ao usuano ligado/desligado (in/off) ou tip o
252 APRENOA EM 21 OIAS ABAP!4
T I . . . ... W_JI"I

O~ 7,OEFINIHOODADOS HO 'B'P/!, P'RTE 1 I


I

253
I

,
Par~.alterar urn r6rolo de campo de entrada do para-metr o: Apesar de mudar no D D IC , a r6 tulo na tela nso e automaticam en te
at ualizado. P ara altera-Io, vo ce deve ir para a t ela ABAP/4 Text Elem en t s:
1. ·C omece na tela ABAP/4 Editor: Edit Program. Cba nge PA RAMETERS/ SELEC T-O PTIONS e escolher 0 caminho de menu
2. Escolha 0 caminho de menu Goto->Text Elements. A tela ABAP/4 Utilities-> Copy DD Text ou Utilities-> Copy D D Texts .
Text Elements e exibida. N o Program Field esta seu no me atual de
programa.
3. Selecione 0 borao de 0Pliao Selection Texts . A cdlcc c val ue no instru<;iio par ameter s, como com data, noo e
volidodo pora compotibilidode com 0 tipo de.dodo.
4. P ressioae 0 borao Change. A t ela ABAP / 4 Text Elem ents: Change Atribuir a ume cclxc de seleceo a u um batao de opc;ao um outro valor
PARAMETERS/SELECT-OPTIONS e exibida. Aqui, voce po de pcdrcc que noo espccc ou X mclcsculc noo e vclldc. Emboro umo
inserir ma nualmente rotulos na coluna Text. avolioc;ao superficial posso noo expor problemos, testes oprofundados
revelorom comportomento imprevisivel nos progromosde teste.
5 . Digite rotulos de campo na coluna Text.
6. Para urn parame rro definid o como um campo DDle, voce pede
reeuperar rcrulos do elemenro de clades. Para recu perar urn rd rulc do Efeito de definic;:6es de parametro : t yp e versus 1i ke
elemento de dados para urn dnico campo, posicione seu 0 cursor no Sempre utilize a adifilo likepara definir um parametTo . Quando voce a utiliza,
campo e escolha 0 caminho de menu U tilitie s-> C opy DD Tex t. 0 o pargmerro ad quire os seguintes atri butos d e Data Dictionary:
r6tulo de campo de comprimentc medicprovenien t e d o elemento de
dados aparece, 0 campo Text esta prot egido e 0 campo Type se altera
• A ajuda Fl eadquirida a partir do botsc Documentation no elemento
de dados.
para conter os caracteres DOIe. Na parte inferior da janela, a mensa gem
Oiction ary texts transferred f or select io n xxx aparece. • A ajud a F4 e adquirida se seu pargm et ro for como urn que tern uma
t abel a de verificacac.
7. Para remover a protecao de urn unic o campo, posi cione seu cursor no
campo e escclha 0 caminho de menu Utilities- > No DD T ex t. 0 • Urn r6tulo de CaInPO ead quirido do eleme n t o de dados.
campo Text torna-se desprotegido e os caract eres ODIC desaparecem Al em das van t agens fomecidas pelo as aspectos acima,
do ca~pa Type. Na parte inferi or da janela, aparece a m en sagem Text
• Urn r6tulo de cam po obtido do D at a D ictionary e garant id am ente
for xxx no long er transferred. from Di ctionary ..
co ere nte com 0 r6tule d e campo aprese ntado por outrcs p ro gramas
8. Para recuperar r6tulas de cam po para rodos os parametres que sao para 0 mesmo campo (des de que des tambem os obtenham do
definidos como campos de DDIC, escolha 0 caminho de menu DDIC) . 1sso elimina a confu sac d e t er dois campos que sao rotulad o s
Utilities->Copy DD Texts. O s r6tulos de campo para todos os de m ane ira dif erente e referenciam os mesrnos clades.
campos de DDIC sao recuperados e prot egid os. Quaisquer valore s
• As modificacoes no tip o ou comprimen tc de dad o no D D 1C auto-
existentes na coluna T ext sao sobrescritos. Na parte inferior da janela,
m ati camen t e sao refl etidas por seu programa.
aparecea mensagemAl 1 selec ti on t ext s t ransferre d from Di cti on-
ary . Na visualizacl o de todas essas vantagens, voce sempre deve utilizar a
adi!jao 1 i ke para definir urn pad-met ro . Isso se aplica mesmo pa ra as caixas de
9. Pressione 0 batao Save na barra de ferramen tas Applicat ion. N a parte
selecac e os b c toes de opcso. Se necessdrio, voce deve criar urna estru ru ra no
inferior d a janela, aparece a m ensagem Text el ements f or progra m
DDlC d e modo que voce p ossa ut ilizer 1i ke e) pelo menos, obter ajuda Fl.
xxxxx in 1anguage E accept ed.
Note qu e a ajuda Fl esca disp onfvel ate para bot6es de 0Pljao e caixas de selecao.
10. P ressione 0 batao Back na barra de ferramentas Ap plication duas
vezes para re tomar para seu p ro grama.
Efeito de uma tabela de verifi cccdo em um parametro
Se voce quiser anular 0 rotulo de DDIC para alguns campos mas nac
Se voce define urn parfimetro utiliz ando 1i ke st-fl e s t -f l te rn u ma tabela de
outro s, digite seus r6tulos na coluna T ext e endo escolha 0 caminho de menu
verificacao e u ma seta para baix o aparece no fim do campo de en trada quando
U riliries -c-Supplement DD Tex ts . T od os os campos T ext em branco serao
voce exec uta 0 programa. Voce pode pressiona r a seta para baixo para obter
preenchidos a partir do Data Dictionary , deixando apenas os valo res que voce
in seriu.

';""'f-
tt:~~,- .
-"a .W
aW. •
.. WI _ .
_ .WW _

254 I APRE ND A EM 21 DJAS ABAP/4 OIA7: DEANINDODAOOSMOAWH,PARTE l , 255

uma lists de valores vili dos para esse campo . Eneretan ro, 0 valor inserido em • Os valores digitados nos campos de ent rada de pardmetrc sao por
urn campo de en trada de pararnetro nao e validadc contra a tabela d e verificacao. padrac corrvertidos em letras maiiisculas. Para.inrerromp er a coo-
A valida~o somente ocorre para telas de didlogo como as vistas na transacao versao, utilize a adic;ao l owe r case.
se16. 0 usuario pade digirar qualquer valor no campo de ent rada e isso sera • Voce pede alterar as r6tulos de campo de entrada de pardmerro por
pass ado para 0 programa quando pressionar 0 batao Execu te. meio do caminho de menu Goto- >Text Elements.

Voce pede executor sumi pr6prios volidoC;6es de tela de setecec. Elos


sOo deta lhados no Die 2 1, 'Telos de se l~co · . IFa~a
L....:.- - - " _

Utilize urn sublinhado pore to ma r seus Nco utilize hlfen em um nome de vari6vel;
nomes de vcrlevel mais mceis de ler. um hifen de limito os componentes de umo
Resumo string de compo.
• Os programas sao colocados em urn buffer de programa no servidor
de aplicativo. H :i so mente um a c6p ia, portanro uma area de rolagem
enecess aria para cada execucao. A irea de rolagem contem os valores
de varidveis do programs e 0 pontei ro arual do programa. P&R
• U rn programa do ABAP/ 4- e compasto de insrrucoes, cada uma das
quais comeca com u ma palavra-chave e termina com urn pon to. As
insrrucoes podem comegar em qualquer coluna e podem ocupar varias
o Par que pre ciso codifi car em letras maiusculas entre aspas?
Como saberei se precise codificar em letras minuscules?
linhas.
.• U m cbjetc de dados e um a posiljao de mem6ria que contem dados
du rante 0 tempo de execufiao do program a. 0 5 obj eeos de dados
o N. maioria das vezes, 0 sistem a automaticament e con vene os
dados p ara letras m aia scul as an tes de ser arm azenado no banco
de dados. Essa co nversao e ex ecu ta da pelo dominie. Voce pode
njio-modificiveis sao literais e constantes. O s ob jeto s de dados modi-
determina r se a s dad os sao ccevertidos pe squ isando no do-
ficaveis sao variaveis, strings de campo e tabelas intemas. as o bjetos
minio. Se 0 tipo de dado do camp o for CHAR e se a caixa de
de dadcs sao alocadcs na area de rolagem do programa e liberados
selec;a.o Lower C ase esriver marcada, ennc 0 campo ap enas
quando programa termina.
contera m aiuscula s e m inuscul as mistu radas.
• as objeros de dad os tern tres nfveis de visibilidade: local , global e
exrema. A visibilidade d. urn objeto d. dados indica °
lugar a partir
de onde 0 o bjeto de dados e acessfvel. . o Posso defmir urn par.imetro que aceita mdltipios valores do
usuano ?
• Os Iiterais sse dados qu e sao muito codificados em seu pr ograma. As
constantes podem ser utilizadas para substituir Iite rais, facilitand o
assim a manu tencio do programa. o Sim , a in st ru ljaO de opcee s selecionada permite que a usuario
digice multipl e s valores e criterio s complexos.
• Os tipos de dad es sao dividido s em duas cate gorias amplas: caractere
e numerico. Os tipos de dad os de caract ere sao c, n, d, t e x; a s tipos W o rksh o p
de dados numerico s sao i . p e f. o Works hop oferece duas man eiras de voce verificar 0 que apre ndeu ne ste
• As varidveis po dem ser definidas utili zandc as instrucoes dat a e capitulo. A se ljao T este oferece perguntas para ajudar a solidific ar seu enrendi-
paramet er s. A diferenlja e que , quan do 0 programa e ex~cutado, 0 mento do co nt eudo abordado e a seljao Exe rci'cio pennite que voce pratique 0
sistema exibe urn camp o de entrada para cada para metro em um a tela que apr endeu . Voce pode c:n cont rar as resp ostas as perguntas do T este e aos
de sc:leljao. 0 usuano pode digitar n ovos valores ou a.lterarvalo resMpa- exerdcios DO Apen dice B, GRe spostas as perguntas e aos exercIcios".
dr.i:o.
-
256 APREH OA EM21 DIAl ABA PH

Teste
o que hi de em-do com estes Iiterais, se eque algaesci errado? (Pede havermais
de urn erro em cadaurn e algunsnao tern erros.] Escreva as defini~6es corretas.
1. Literal de strin g de caractere: •Don I t bi te , II
SEMANA 1
2. Literal de po n to flut uante: I +2.2F03. 3 I
3.. Literal numeric o : - 99
4. Literal hexadecimal: x I ooaOf'
S. Literal numerico: 9.9-
6. Literal de ponto [lutuante: ' 1. 1£308 I

7.
8.
Literal hexadecimal: HAI

Literal de String de caractere:


I

I I I I
Reviscio
9. Literal de String de caractere: r I I . I I I
N a semana passada, voce completou as seguintes tarefas:
o qu e hi de err ado corn est as definicoes de dados? (Pa d e haver mais de • aprendeu sabre 0 ambience R/3, incluindo Basis, clientes de logon,
urn erro em cada urn e alguns nao t ern erros.] Escreva as definiljoes corretas. o ABAP/4 D evelopm ent Wo rkbench e a Data Dictionary
1. data first·name(5) type'c. • escreveu programas simples de ABAP/4 e fam iliarizou-se com 0
2. data fl type character . ABAP/ 4 Editor
3. data fl (20) typ e c. • criou tabelas transparentes, elementos de dados e dominios
4. data 1a(5) type i. • criou cbaves estrangeiras para oferecer ajuda F4 para 0 usuario
5. data per -cent type p val ue 55.5.
• documentou elemen tos de dados a fun de oferecer ajuda F l
6. dat a fl(2) type p decteeta 2 value ' 12 .3' .
• criou indices secun darios e bu ffers para acelerar a acesso de dados
Exerdcio 1
Escr eva urn programa utilizan do parame tr e s par a a Figura 7.4.

,
.'
--- w _ 'W' _ w: _

~
SEMANA 2

Viscio geral
Na Semana 2, voce aprende a criar ob jetos de clades variaveis e fixes
utilizando os tipos de dados predefinidos e definidas pelo u suario. Voce
aprende as regras cia sintaxe ABAP/ 4 e as inscucces par a contrclar 0
£luxo do programa, as insrrucoes de atribuiliao e as regr as de conversso.
Voce tambem define as tabelas internas, preencbe-as utilizando areas de
trabalbo implicitas e explfcitas, executa 0 processarnentc de imerru pcac
de controle e otimiza as ins rrucoes se 1ect, a fim de pre encher as tabelas
intemas, direta e eficientemente. Finalmente, voce utiliza as opcoes de
[ormatacic da insrrucao wri te, conhece os efeieos do tip o de dado sobre
a salda, emprega as safdas de conversao e detecta sua pre senlia dent ro de
dominies .
• No Dia 8, "Definindo dados DO ABAP/4 , Pane 2", voce utiliza
a instrucio tabl es par a defmir as strings de campo, compreende
a instrucjo types e utiliza ess a Insrrucdo para defini r seus pr6-
prias tipcs de dados.
• 0 Dia 9, Atribuilioes, conversdes e calculos", en sina a utilizar
Il

varidveis comuns do sistema e a ser capaz de exibir ou localizar


qualquer variavel do sistema, prever e executar cc nverszes de
dados utilizando as instrucoes de atribuicjo e a codificar ex-
pressoes matematicas.
• No Dia la, "Insrrucoes de controle com uns", voce aprende a
codificar as insrrucces de controle com uns if, ca se, do e whi 1e;
;. a controlar a sequencia do programa utilizando exi t , continue
e check; e a codificaras especificacoes de comprimento e posili3.0
simples na instrucao wri t eo
• No Dia 11, "Tabelasiorernasr voce apr end e a de fini r uma tabela
interne, com ou sem uma linha de cabecalh o, a preencher uma
tabela inrema utilizando append ao lan ge de um a linha de ca-
AP REND A EM 21 DIASABA P14

becalho a u uma area de trab albo explfcita, e a d assificar as tabelas


in rem as e utilizer 0 complemento as text .
• Duran te 0 Dia 12. "Tabelas internas avancadas .Parte 1", voce aprende
a reccnhecer a op erador do cc rpo da tabela e utilizar esse operadar
par a testar quanto a existencia de dados em um a tab ela int erna, e a
comparar a igualdade do conteadc de duas tabe las internes.
• 0 Dia 13, "T abelas internas avancadas, Pane 2'" ensina a preencher
uma tabela in terna a p art ir de uma tabela de banco de dados utilizando
as consrruco es mais eficientes: e executa a processamen to de inter-
rupcao de controle em tab elas intemas u tilizan do at e on change of .
• Durante 0 D ia 14, "A inStIllliao Write", voce aprende a entender 0
efeiro dos tipos de da dos na safda, a utilizar as opcoes de formatacao
cia ins tru~o wri te, a urilizar as safdas de conversio e a derecear sua
presen ce dentro de domini es.

Definindo dados no ABAP/4,


Parte 2
Qb jetivos do capitulo
Depois de conduir este capitulo. voce devera ser capaz de:
• Utilizer a instrucao t abl es par a definir as strin gs de campo e com-
preender a diferenca en tre as strin gs de campo def inid as utilizando-se
data e as defmidas utilizando-se tabl es
• Compreender a instrucao types e utilizar essa instrucio para definir
seus pr6prios tipos de dados

Defi nindo constantes


U ma con stan t e e quase identica a uma varifvel, exceto quanta 410 fato de que
seu valor nao podera ser alterado. Para definir uma constante, voce utiliza a
instrucao constants.
U tilize um a constante quando precisar incluir 0 mesmo literal varias vez es
em urn programa. Voce pode defini r uma cons tante com a mesmo valor do
literal e utilizar a constante no corpo do progra ma em vez do literal. Mais tarde,
se precisar alterar 0 valo r do literal, voce po der.i simplesmenre alterar 0 valor
da cc ns tant e, fazendo com que seu valor seja atu alizado onde quer que seja
util izado no prcgrema.

hItpJI-.compus.com.br
I I I .I ~ I I I ~ 'If w w . - - .....--.- - - - ~ - -- ----- -- -

262 I APlENDA E' 21 DIAS ABAP" D~UEA"N DODADOS ND I.BAI'/4. PARTE I I 263

o ABAP/ 4 tern uma coastame predefinida: SPACE. C orresponde a urna Definindo strings d e com po
constante com urn valor igual aos espacos, Voce pcdera utiliza-la no Iugar do
literal ' I . IlOYO ... Uma string de compo correspond e a um lipo de vcricvel e e 0 eq uivole nte de
mMO " umo estrutura no ODIC, porem e definido dentro de um programa ABAP/4 .
Sintaxe da jnstru~oo CONSTANTS Como umo estruturo, umo string de compo corresponde a umo serie de co mpos
I ogrupo dos so b um no me comum. A diiere nco principal e 0 lugor ern que reside 0
en 0 c6digo a seguir dem ons tra a sintaxe para a definic;ao de urn a cons tan te. E definilioo . A estrutura de te rmas no R/3 se c pllcc apenas a urn c bjetc do Dato Dictionary
Z semelhant e a instruc;ao data ; entr etan to , a adiCjao value se faz ne cessaria. Em
-I ro dos a s outros modos, as constantes concordam com as mesmas regras das
!j cante ndo um cc nluntc de ca mpos. A string de compo de termo se oplico a um con iunto
de compos definido ern urn progrorna ABAP/4 .
~ varisv eis definidas com 0 u sa da insr ru cio data. Veja a Lisragem 8.1 quanta a ! D uas icsrrucces sao geralmente utilizadas para definir Strings de cam po .
m exemp los das deficicoes de con stante.
T consta nt s cl [{l) ] [ typ e t ] [deci mals II] va'lue 'xxx'.
I em um programa ABAP/4:
• data
ou
const ant s c1 l1 ke cv value ' xxx ' , I • t abl es

code: Utilizc ndo a instrucdo DATA para defin ir urno string


• cl e0 nome da con sta nte. d e campo
e a nom e de uma constante ou varisvel previament e definida ou e Uma st ring de campo definida com 0 usa' da instrucio data corre sp onde a um
• cv
o nome d e urn cam poque pertence a uma tab ela ou estrurura rio D ata
Di ctionary.
I
1
objeto de dada modificavel, Ela pede ter visibiliclade local ou global.

Sinlaxe para a definiccc de uma sIring de campo uliliza ndo


• {l} ea especificacjo intema de eomprimento. a i n slru~Ci o DATA
• teo ripe de dado .
• de0 numero de casas decimais (utilizadas apenas com a tip o p). -
III A seguir, veja a sintaxe para a defini~o de uma string de campo utilizando a
Z instnl/Sao dat a.
• 'xxx I eum literal qu e fomeee 0 valor cia const ant s.
S data: begi n of /sl.
jl [(l )] [t ype el
tJ
[decimals d] [value ' xxx '] .

...
1 ft . / 2[(1) ] [ty pe [deci mals d) [val ue ' xxx ' ] ,

end of /sl .
ENIRADA ~ Lislagem 8.1 Defini,6e s de consta nts
ou
1 cons ta nt s cl12} t ype c valu e ' M' . dat a begin of i sl .
2 const ant s c2 like cl value 'BB' . data fl [(l }] [type t] [deci mals d] [val ue ' xxx'] .
3 const ants error_t hre shol d t ype t value 5. data i 2 [ (0 ] [type t] ,[ deci mal s d] [value 'xxx '] .
4 constan t s amal gamatio n_dat e l i ke sy-dat um value ' 19970305 ' .
[i ncl ude structure stl . ]
data end of t st ,

As constcntes podern ser definidos em urn poo l de tipos. Quando ou


definidos, elc e podem sercompa rtilhodo s por dfverscs prog ra mos. Para
mois tnicrmocoes , co nsulte a secs c "Pools de tipos" no fina l de ste data is1 1; ke i s2.
ca pitulo. onde:
• j51 e 0 nome da s~ring de campo.
• f1 e j2 sao os camp os [tambem denominados componenres) da string
de campo.
264 .PREHO. EM 21 DI.S .BAP/4 DIA l : DEfININDO DAOOS NO ABJ.1/4, PAm 2 265

• ! 52 e0
nom e de uma string de 'campo previamente definida au ea EmAOA" Listagem 8.3 Umo string de campo pede conter umo o utro string de
nome de uma tabela ou estrutura no Data Dic tionary. " compo
• ( I) ea especificacac int erna de comprimento. 1 report ztxG803.
2 data : begin of names ,
• t eo tipo de dado. 3 namel li ke at xknat - neeet ,
• de 0 ndmero de casu decimais (utilizadas apenas com a tipo p). 4 nameZ like ltxknal -nameZ,
5 end of name s.
• ' xxx I eurn literal que fornece urn valor padrio', 6 dat a: begin of cust _i nfo ,
• stl e 0 no me de urna estrutura au tabela no Data Dictionary. 7 number (10) type n,
8 nm li ke names, N ccmc uma string de campo
9 end of cust_info.
As strings de campo seguemas mesmas regras das variaveis definidas com 10
11 cU5t_in fo- nlUllber .. 15.
o usa da instrucio dat a. Pa ra referi r-se a urn compo n ent e individu al, seu nome
12 cust _1nfo- nm- name l . '" 'Ja ck'.
deverd ter como prefixo 0 nome cia string de campo e urn trace (~ ). Por 13 cust_1nfo- nm- name2 '" ' Gordon'.
exemplo, para escrever 0 componente number cia string de campo cust_info, 14
voce utilizaria a instru~o write cust in f o-number . 15 ....tte: I cust_in fo-number,
A instrucio include nia faz parte cia instru ci o data : ela e uma instrucao 16 cust_in fo -nm-namel.
17 cust _1nfo-nm-nameZ .
independente . Portanto, ni a pe de ser encadeada em urna instrucao data . A
instrucao precedence a ela deve ser concluida com urn ponte.
Os exernplos de programas que definem e utilizam as strings de campo ..... A linho 2 inicio a defini¢o da string de compo names. Cc ntem dois compos
sao mosmdos nas Lisragens de 8.2 a 8.6. lK.lJJSE,. que s60 definid,?s como compos do ta be lo zt xkna l no Dota Dictionary. Aeles
nOosOofomec idos vclcres inido is. No linho 8, 0 componente cust_i nfc-nane edefinido
ENTRADA'" Listagem 8.2 Um exernplo simples de umo string de compo definido como string de compo names. Qua ndo utiliza do nos linha s 12 e 13, nm e inc1uido no
,. com a use do instruc;oe data nome do componente.

I report ztx 0802. EIflRADA" Listagem 8.4 Uma string de compo pode ser deftntdc exotamente como
2 data: begin of t otals I, ,. um o tobela ou estruturo do DDIC
3 : r egion(]) ;alu e 'unknown',
4 debits(lS) type p, 1 r eport ztx0804.
5 count type t , 2 data: my_l fal l 1ke %tx l f al, · como uma tabela no ODIC
6 end of totals_I, 3 my_addr like ztxa ddr . · como uma estrutura no DOIC
7 t otals_2 l i ke tot als _I. 4
B 5 ll\Y_l fal-n amel'" ' Andrea Mille r'.
9 totals_I -debits = 100. 6 my_lfal - t elf l .. ' 1-243- 2746'.
10 totals_I -count .. 10. 7 my_addr -landl '" 'CA' .
11 t ota ls _2-debHs .. 200. B
12 9 write : I lly_ltal - namel ,
13 write : I t ota ls _I -regi on. t ota l s_I - debit s , totals_I- count . 10 l'Iy_lfa l - name2.
14 I totals_2- region. t otals_2-debit s , totals_2-count . 11 my_addr-landl.

. .... A linho 2 inicio a defini¢o do string de compo to t al s 1. Elo cc ntem ires No linho 2, lnY_1fa l e definido exctcmente como a tc belc do ODIC. ztxl fal.
,lj1.lJ.IS~ ,.
ca mpos, 0 primeiro des tres e inid olizado com a valo r ' unk nown'. No Hohc 7, e my_addr e definida como 0 e strufuro do ODIC, ztxadd r .
a string de compo totals 2 e
definido exctornente como to t a l s 1. a
volar de
total s l- r egi on n60 e propagodo perc total s 2-regi on. Nos linh;s de 9 a 11, os
volores-;oo otribuidos oos co mpo ne ntes des string-; de compo e nos linhos 13 e 14, os
vclcres de todos as compo nentes sao totolmente escritos.
.... -_ ..... _--- ------ - - - - - - -- ,-

266 APRENOA EM 21 0lA5 ASAP" 01A I: DEFlNINDODADOS NOABAP/~. PARTE 2 267

Perc visuolizor 0 definil)oo do ODIC do tcbelo ztxlfo 1, d~ dois diqu es


Utilizando uma string de cam po co mo uma voricve l
no nome dele no seu c6digo-fonte. do tipo char
Voce nao apenas pede enderecar comp onentes individuais de uma string de

ENIRADA~ List a gem 8.S As tobelas e est ruturos do ODIC pad em tc mbem ser campo, como tambem pede ec derecar todos as eomp onentes de uma s6 vez,
tnclvtdos em umo string de compo como se fosse m um a (mica variavel do tipo char. A Listagem 8.7 ilustra esse
conceito.
1 report ztx OB05.
2 data begin of fsL .... List ag em 8. 7 Urn exemp lo do ut ilizo~ao de umo string de compo como
3 include structure ztxlfa1. EHTUOA,. diversas vori6veis e como umo (mica vo ri6vel do tipo char
4 data : extra_f ield(3) t ype c .
5 end of fs L
1 report ztx 0807.
6
2 data : begi n of fs1,
7 fsl -lifnr • 12.
3 c1 value ' A' ,
8 fsl -extra_f ield • ' xyz ' .
4 c2 value '8' ,
9
5 c3 value -c- ,
10 write : / fsl -l1fnr.
6 end of hI.
11 fsl-extra_f i eld .
7
8 write : / fs1-c1, fs1 -c2. fs1 -c3,
9 I fs!.
AMAuSE" A llnhc 2 inido 0 definit;oo do string de campo fsl. A instruc;Oo termino com
10
,. urn ponto, porque inc lude structure noo e porte do instrut;60 data; e umo
11 151 • 'XYZ'.
instru¢o independente. No Ilnhc 3, a estrvturo do tc belc ztxl fal e incluldo em urno
12
string de campo . Na linho 4, um outro compo e indul do no shjng de compo depcls des
13 wri t e : / fsl ·c1, fsl-c2, fsl · c3.
campos do tc belc zt xl f al. Qu a isquer ne meros de compos podem ser incluidos, como
14 / fsf.
tombem mais estruturas podem ser inckndcs oqui au qualquer comb inot;60 dos dais.

ENlRADA~ Lista gem 8 .6 Se voce utilizor 1i ke em vez de Include, voce obter6 urn
resu ltodo d iferen te. as names d os ca mpos inclufdos sao prefixodos par urn
o c6digo na Listagem 8.7 deve produzir esta saida:
nom e de co rnponente intermedi6rio . SAlOl ~ ABC
ABC
XYZ
1 r eport ztx 0806. XYZ
2 dat a: begin of fs 1.
3 mylfal l tke ztxlfa1.
4 extra_field(3) type c.
AKA .. As linhos de 2 0 6 definem a string de ca mpo f s l. Esso string possui tr!s

5 end of tst ,
USE ,. componentes, coda urn com um vclc r podnSo. No linha 8, coda componente
6
e escritc individualme nte. No linho 9, a string de compo e escritc como se fosse uma
7 h1-mylfal-l1fnr • 12.
unico vori6vel. Conseq Oentemente, a soido mostro 0 contecdc de f s1 como se fosse umo
unico vori6vel definrdc como char 3. No linha 11, a vclcr 'XYZ I e otribufda a string de
8h1 -ext ra_fi eld • ' xyz' .
compo , novomente trotando -o como uma vcricvel char. A scfdc resultante mostro que
9
coda componente reflefea clterocoo, porque este c acessondo 0 mesmo armozenomento .
10 wr i t e : / h1 -mylfa1- l ifnr .
11 fs1 -extra f ield . Uma string de campo pede ser atributda a uma c u t ra, se ambas tiverem
a mesrna estrutura, como pode ser visto na Lisragem 8.8.
ANAUSE" Alinho 2 inicic o defink cc dc stringdecompo 1fa1_with_extra_fi e1d.Ainstrut;60
,. terrnlro com um ponte, porque i ncl ude structure nCoe porte do instrur;oo data;
e urnc inst~60 independente. No llnhc 3, a estrvhJro do fcbelc ztxlfa1 e inclufdo no string
de campo. No linho 4, um outro campo e induldo no string de compo depois dos campos
do tobelo ztxl f al. Occlsqcer numeros de campos podem serind cldos, como tombem rncis
estruturaspodem ser incluidas oqui au quolquer ccmbtnccoc dos dois.
268 .APREND A EK ! 1 DIASABAP/' . DIAl, DEANINDODADDS ND ABAP/4, PAm! 269

EIITRADA'" Listagem 8.8 Urn exemplo de atribuit;60 envolvendo duos strings de • 151e 0 nome cia string de campo. Urna tabela ou estrutura com a
~ campo mesmc nome deve existir no Data Dictiona ry.

1 report ztx0808.
2 data: begin of 1s1.
3 cl value ' A'.
4 c2 value 'B',
ENTiADA'" Listagem 8 -,9 Exemplo simples de uma string de compo definida co m 0

S c3 value 'C'.
,. usa do instru~co tables
6 end of hI ,
7 152 like fs l . 1 report ztx0809.
2 tables ztxlfal.
a
9 152 z 151. 3
10 write: I tsz -cf, rsz-ea, 152-c3 .
4 zt xlfal-namel • 'Bugsy ' .
5 zt xlfal·landl ~ 'US '.
6
o c6digo na Listagem 8.8 deve produzir esta saida: 7 write : I ztxlfal.namel , ztxlfal-landl.

sliol ~ ABC
ANWSf 1IIrrr... " A linho 2 define a string de compo ztxl f al. Suo definkc c e exotomente iguol
I liIl... As linhas de 2 a 6 definem a string de compo fs1. A linhc 7 define a string de
ANAllS~'" compo f 52 exatomente como 1s1. No linho 9, fs1 e movida pora fs2, como
r a
tobelo do Data Dictioncrv com a mesmo nome . Nos ltnhos 4 e 5, volores sao
dodos a dais de seus co mponentes, que siio totalmente es critos no linha 7.
SI!fosse umo unicc vcrtcvel do tipo char. No linho 10, as componentes de f52 sao
totclmente escritos. String de compo definido utilizando TABLES inte rog indo
com SELECT
~ .. Umo string de campo contendo tipos de dado num erlccs requer
ccns'derococ especial durante as atribuic;6es. Esses ccnslderocees
A instrucao tables faz mais do que apenas definir uma string de campo. Ela
realiza duas a~6es:
H
se reo obo rdados no Die 9, no secec "Atribuic;6es•

• Define uma String de campo.


• Farnece ao programa 0 acesso a uma tabela de banco de dado s com 0
Utilizan do a instr uc;iio TAB LES para definir umo string mesmo nome, se uma existi r.
de compo o primeiro exemplo da instrucio sel ect ereproduzido na Listagem 8.10.
A string de campo definida com 0 usc cia instrucac tabl es corresponde a urn Voce pede agora analisa-lo sob uma nova persp ect iva.
objetc de dado modificavel. As strings de campo definidas com 0 usa cia
instrucac t ab! es seguem as mesmas regras das strings de campo definidas com ~NmDA~ Listagem 8.10 Seu segundo progra mo, revisitodo
o usa cia instruc io data. Urn exemplo de urn programa que utilize urna String
de campo tabl es aparece na Listagem 8.9. 1 repor t ztxOBlO .
2 tab les ztxlfal.
3 sel ect * from ztxlfal into z lfd or der by l ifnr .
Sintaxe para a deflnicco de umo string de compo utilizondo 4 wr1"te I z lfa l -11fnr .
a instrucco TABLES 5 endsel ect ,
A seguir, veja a sintaxe para a definicio de urna strin g de campo utilizando a
ins trucfc tabl es.
ANALISE .....A linho 2 define a string de compo zt xl fal. Suo defini<;iio e exctc mente igu oJ
tabl es [sl , r a do tobelo do Dote Dictionary com 0 mesrno nome, H6 tc mbem umo tobelo
do ban co dedodos com 0 mesmo nome, de modo que sejo pro porcionodo 0 0 progra mo
onde:
a ocesso a tobelc. a que slqnificc que 0 mesma pode agora serutilizadoem vmo instrv<;50
~f ·-"' '' '' '' '''
....... w w • WW
-- -
'" 270 'IiEND' "EM21 DIAS ABAPH CIA I, D£fIN1NDO DADOS NOw.Pf4, PARTE 2 271

sel ect. Sempre que a linha 3 e executoda, um registre e lido a partirdo tobelo do banco onde:
de dodos ztxlfal para a string de campo zt xl f al. Pora coda registro, 0 vclc r do
compon ente ztx l fal -l i fnr e tota lmente escrito (Iinna 4). • tl e 0 nome do tipo.
• vl ea nome de uma varisvel previamenre defmida no pr ograma au e0
Visibilida de de uma string de cam po definida utilizando nome de ~m camp o que pertence a uma tab ela ou estrutu ra no Data
TABLES Dictionary, .
U rna string de campo definida utilizandc tab 1essempreUTa avisibilidadeglobal .• (l) ea especificacao interna de com prim ento.
e externa, independentemente dolocal ondeedqinidanoprograma. 1S 50 signifies • t eo tipo de dado .
que se voce colocar u rna inStru«?o tabl es em uma sub-retina, a definic;ao sera
• de 0 mimero de casas decimais (utilizadas apenas com 0 tipo p).
global e voce DaD poderf ter uma c utra definiljao para a mesm a string de camp o
em qualquer local dentro desse programa.
A string de campo tambem evisfvel extemamente. Is50 significa qu e se, As Lisragens 8.11 e 8.12 mostram exemplos de pr ogramas que definem e
em urn programa de chamada e em urn programa chamado, a mesma instrucac utilizarn. seus pr6prios tipos de dados .
tabl es aparecer,essasStringsde campo compartilharao a mesma memoria, Esse
conceito eilustrado n a Figura 8.1. Quando 0 programa chamado for executado, ENTRADA'" Listagem 8.11 Simples exemplo de um tipo de dodo definido pelo
ele "veri" 0 valor em ztxlfa1 a partir do primeiro programa. Se ele alterar ~ usu6rio char2
ztxlf a1, 0 programa de chamada avera" af·altera~6es quando recupe rar 0
controle. 1 report ztx0811.
2 typ es char2 (2) t ype c .
F lgur n 8 1 3 dat a: 1,'1 t ype char2 val ue ' AS' .
/ve o de mem6rio 4 v2 t ype char2 value 'CD '.
As cle finifjOes de Progl'Clmo de chcmcdc c:omportilhodo Progrcmo c:homodo
tobe las id'nticos em
s
um programa de
Tobelas m.lfo1.
I I Tabelas ztxlfo 1.'
6 write: 'Ill. 1,'2. :' .
chomado e em um
programo chomado
fat com qce 0 o c6digo no Listagem 8.11 produz esta saida:
mem6rio sejo (choma outro
SAiD! ~
AS CD
compornlhodo por progl'Cl mo)
essos strings de
compo. , ..... A linha 2 define um tipo de dodo denominodo char 2. Eum compo char de
,lJ(lI.lSf,. da is bytes. Nos linhos 3 e 4, as vari6veis vI e v2 stio definidos como compos
char de dois bytes utilizondo 0 tipo de dodo charl o Elos recebem vclcres-pcdrec e, no
linha 6, esses vclcres s60 totalmente escritos.

Definindo tipos EIfTUDA ~ Listagem 8.12 A utilizac;a o de tipos poder6 tomor seu c6digo mois
clc ro e mcis f6cil de ler
Voce pede definir seus pr6prios tipo s de dados utilizando a instru~o t ypes e
basea-los nos tipos de dados existentes. 1 re port ztx0812.
Z t ypes : doll ar s( 16) t ype p deci mals 2.
Sintoxe para ci instr!J~ 60 TYPES 3 lira(l6} t ype p decimals O. "e li r a 1ta 11ana nilo tern dectna t s
4
!!! A seguir, veja a sintaxe para a definicac de um tipo utilizando a insrrucio t ypes. 5 data : I::iegin of ameri ca n_sums .
~ typu t1[(l)] [type t] [decimal, d] . 6 petty_cas h t ype dollars.
7 pay_outs t ype dollars.
~..r ' au
,
a l lJ'1lp_sums type dollars,
"' type s tl like -r . end of ll'ller1can_sums.
y 10 begi n of i t ali an_sums,
272 mENO' EM 21 DIAS ,mH OIA 8, OEANINOD O'OOS NO ' 8'P14. P'RTE2 273

11 petty_cash type li ra, 9


12 pay_outs t ype l 1ra, 10 data: customer_addr typ e address.
13 lump_sums type lira . 11 vendor_addr: t ype address ,
end of 'ital ian_sums. 12 empl oyee_addr ty pe address,
"15 J3 shipto_addr typ e address.
16 american_sums- pay_outs .. ' 9500. 03 I • "espes necess ar-ies quando l iteral 14
_ con t~m urn decimal 15 cus tomer_add r~street • '101 Memory l ane' .
17 italf an_ sums -l ump_sums .. 514l. 16 employee_addr-country • ' Transyl vani a'.
18 17
19 write : / amer1can_sums -pay_outs . 18 write: I cus tomer _eddr- st reet ,
20 / i t ali an sums - l ump sums . 19 employ ee_addr -country .

o c6digo na Listagem 'S.12 produz esta saida: , lilt... h linhos de 2 a 8 deflnern um tipo de dodo de nominodo addr ess que ccntem
ANALISE,. cinco comp os. Nos linhas de 10 a 13, quotro strings de campo sdc definidos
9,500 .00
siiDI~
com a uso do novo tipo. Sem 0 no.. . o tlpo, essos defini~oes teriom utilizado 24 linhos
5,141 ad icionais de c6digo . Alem disso, a mcnutencoo fica mois f6cil: se umo clterocec nos
deflnlcce s da s strings de compo de en derecc for necessaria, ope nos a definiIYoo do tipo
~NAlIS~"" A linho 2 define urn tipo de dodo denominaclo dol lars como urn campo preciscrc ser oltera do.
,.. decimal compa d odo de 16 bytes co m duos casas decima is. A linho 3 define
um tipo de dodo semelhcnte denom inodo 1i ra co;" 0 coso decima l. Nos llnhos de 5 a
14, duos strings de compo sa o definidos co m 0 usa dos novos tipos de doclo . Nos llnhcs Grupos de tipo
16 e 17, urn volo r e otribuldo 0 urn compo nente de coda e, nos linhos 19 e 20, ell'S soc
escr itos. . HO~O llr.. Uma in stru~ao t y pes pod e se r ormoze nodo em um grupo de fipo . Urn grupo
TERl{O" de tipo (to mbe m con hecldo como um pool de tipo) corresponde a urn objeto
Considere urn tipo definido pelo usuario como uma variavel,masurn tipo do Data Did io na ry que existe rnerome nte para canter uma ou mots insfruIYoes types au
que voce nao posse utilizer para armazenar clados. Elepodera apenasserutilizado constant s. Utilizondo a in stru~oo t ype-po ol s em seu programo, v eee aces sor6 tipos ou
para coo outrasveriaveis. As mesmasregrasse aplicam aos tipos, da mesmaforma consta ntes a pa rtir de um gru pe de tipo e"uflllzcre as mesmos em seu progromo. Muitos
program as pode m co mpa rtilhor um grup o de tipo, propordonondo a voce a hobilidade
as as
que se aplicam varidveis e strings de campo. N a mes de tipo , como nomes de de crier definiIYoes ce ntralizod a s. A Fig ura 8.2 ilustra esse conceit o. A Listagem 8.14
vari fvel, tern de urn a 30 caracteres de comprimento, mas, diferentememe das ccnt em urn exemp lo de um grupo de tipo e a Ustage m 8. 15 opre senta um exemplc de
vari dveis, seus names nao podem incluir a s caracte res - < >. um prog ramo utilizondo types e constants de tal grupo.

Grupo de tipo ztxt.


Tipos estruturodos Fig ura 8 2
Urn gropo de tipo e"
um cont~inar pore as
NOVO ... Urn tipo definido pe lo usu6rio pede ser boseodo no defini ~o o de umo string de ;n$~6 es types e
HilIO" campo. Ele e conhecido como um fipo estruturodo. A Usta gem 8.13 mostro constants. Ele pode
como vo ce pede reduzir 0 tc mcn hc de um prog romo vtilizonde um tipo estruturodo. ser comporlilhodo
enee cs progromos.
Progromo 1 Progromo 2
ENTRADA.... Listag~m. 8.13 A utilizac;oo de :ipas e.st~tu.rodas pode reduzir a
,. redonde ncrc e tamar 0 monutenc;oo mots faed
type-peols ztxt . typ e-pools zt xt .
data fl t ype _ztxLdoll ar-s . . dat a fl type.z.txt:...dol1ar s .
1 report ztx0813 .
2 t ypes : begin of address.

,3 street (25) •
c1ty( 20)•
5 region {7l .
6 count ry (l 5) ,
7 posta 1_code(g) .
8 end of addres s .
D~ UEfiNINDO DADOS ND .wP/'. PARTE 2 275
274 . PRE '" EM71 DIAS . U P/<

EMTRADAlrrItr.. Listoge m 8.14 Urn exemplo do lnstrvcdc type -pool contendo tipos e m.HNCAM~ lnicie a ScreenCom "'Howto Crea te 0 Type Group'" ogara .
,. constontes

1 typ e-pool i txl . Para criar urn gropo de tipo;


Z types : ztxl_doll ars (16) type p decimals ?
ztxl_li r a(l6) t ype p decimal s O.
1. Comece no D ict ion ar y: Initial Screen (ca min ho do menu
J
4 constant s : ztxl_'Ilarn1"9_th reshol d t ype 1 valu e 5000. Tools- > ABAP / 4 W ork bench, D evelopment- > AEAP/ 4 Dictionary).
5 ztxl_ama 1gamat i on_date l1k e sy -d etue value ' 19970305' . 2. Digi te a nome de seu grupo de ripe no campo Object N ame.
3. Selecione 0 botso de op~ao Type Groups.
ANAUSE'" A linho 1 indica 0 com ecc do grupo d e tipo e the cfribui um nome. As linhos 4. "Pressione 0 bcrao Create. A tela Typ e Group:c:o:t: C reate Text sed
,. de 2 c 5 defin em t ypes e constants que podem ser utilizodos em quolquer exibida.
progromo .
5. Di gite uma descricac de seu grup o de tipo no campo Short T~xt.
ENTiADllio.. J.Istagem 8.15 A utiliza~lio do grupo de tipo reduz 0 dcpltcccec de 6. Pressione 0 bono Save. A tela Create Obj ect C atalog Entry sera
,. c6digo para tomc r mois f6cil a mcnutencco exibida.
7. Pressione 0 borso Local Object. A tel. AEAP/ 4 Editor: Edit Type
1 re port ztxOSlS.
Group sera exibida. Na primeira linha, a instru~ao t yee- pee1 r ,
2 type -pcc l s ztxl.
3 data: begin of amer ican_sums . aparecers, onde te o nom e de seu grop o de tipo . Se 0 nome nao
4 pet t y_cash type ztx l_dollar s. aparecer, voce devera digita-lo agora.
5 pay_out s typl! ztd _dollars , 8. Nas linhas subseqilen tes, digit e as instI11~6es constants e types .
6 llll1p_sums t ype ztxl_dollars . Todos os names devem comecar com t_, onde t e o nome de seu pool
7 end of ameri can_sues ,
8 de tipo.
9 amer1ca"_sums-pay_outs • ' 9500.03'. 9. Pressione.o bono Save na barn de [erramen t as do aplicativo.Na parte
10 inferior da janela, a mensagem Typ e group saved sed. exibida.
11 if l/lll!r i can_sums-pay_outs > l u I_warning_t hre shol d.
12 write: I ' Warn i ng' •. amer1can_slIIlIS -pay_out s .
10. Pressione 0 botao Back na barn de ferrsmentas do aplicativo para
13 ' exceeds th res hol d' . ztxl_warning_threshold . retorn ar a D ictionary: Initial Screen.
14 end1f.
Par a excluir urn grupo de tipo, siga os passos de 1 a 3 do pr ocedimento
anterior e, em seguida, pr essione 0 boeao D elete na barra de ferrament as do
iHAUSf '" defi~i~6es ~~
tipo zt xl no prog roma .. As ltnhos de ap,licativo.
r AA3 linho
de tipo .
linho 2 ,ind ui a s
a 7 definem umo string de
do grup o
utllhcndc a
co mpo zt xl _dol l ars do grupo
tipo
9 ctribul um valor para pay_outs e esse valor e compcrndo com 0
cc nstonte ztxl _warni n9_th r e sho l d do grvpo de tipo no linhc 1 1. Resumo
• As strings de campo sao com o as estrururas definidas dentro de seu
Se 0 grupo de ripo ja river side inclufdo, tentativas subseqaeotes para pro grama. Voce pode definir as strings utilizando data au tabl es. As
incluf-lo serso ignoradas e nao causarao urn erro. strings de campo definidas utilizando tables tern visibilidade global e
O s nomes do gropo de ripe podern ter de urn a cinco caracteres de
extema.
comprime nto e devem comecar com y ou z. Os tipos e constantes incluidos
em urn programa com a usa cia inst ru cjo typ e- pools sempr e terio visibilidade • vccepode defmir seus pr6prios tipos de dados, ate mesrno tipos
glob al. estrururado s, utilizando a instrof:jao types. Os ripos definidos pelc
usuario reduzem a redu ndancia e tornam mais facil a manut encao.
Criando urn grupo de tipo • Voce pede defmir urn gropo de tipo no D ata Di ctionary para fazer
Para criar urn gropo de tipo no Data Dictionary, utilize a seguinte proce di- com que os tipos deflnidos pelc usuario e constantes sejam reu-
ment a . rilizfveis.
".. . • • w _ _ ... 'W' 'W' .. ~ __ ~ - ~ ~ "!'!""

276 APRENDA 1M 21 DIA SABA'" CIA I, OEAttlMOO OADOS NOAS""',., PARTE 1 277

----'---------
IFa~a
Utilize um sublinhodo para foci litcr c
lelturc des names de vc riovels.
Nco utilize um trccc em urn no me de
vori6vel; um trccc delim ito os compo nenfes
de um o string de compo.
Workshop
o Wo rksho p oferece duas maneiras de voce verificar 0 que aprendeu neste
capitu lo. A se~ao Teste oferece perguntas para ajuda r a solidificar seu entendi-
mente do con teu do a.bordado e a se~ao Exer cfcic permire qu e voce pratiqu e 0
que aprendeu. Voce ped e enco nt rar as respostas as perguatas do teste e ao
exerclcios no Apendice B, "Respostas as perguntas e aos exercfcios".

P&R Teste
1. Qual e a consta nte predefinida qu e pe de ser ut ilizada em urn pro-
o Por que preciso criar strings de campo? Por que n ao posso
apenas utilizar simples variaveis?
grama ABAP. Q ual e 0 seu equivalence urilizandc urn literal?
2. Q uais sao as tipos de instrucao t ype que podem ser utiliza dos equal
eo ripe que pode ser definid o no Data Dictionary?
o As Strings de campo propo rcionam a voce urn mo do de organizar
suas variaveis em grup os. Quando voce river cente nas de varifveis Exerdcio 1
em urn prcgrama, a organizacao dessas varuveis em strings de
Qual ea ourra forma de se declarer a variavel abaixo urilizando uma declaracac
campo fad.com qu e a rela~ao entre as varieveis se to me ainda mais
clara. Utilizar strings de campo para
agrupar as camp os tambe m
-type"?
data : begin of usd_alllOunt.
permitirf que voce execute uma .op eracao em urn grup o de hot el type p decimals 2,
variaveis como se elas fossern con siderada s u ma dnica variwel, r ent car t ype p decimals 2,
pl ane type p decimals 2,
Assim, por exemplo, se voce precisar mover 100 varifv eis, sed food type p decimals 2.
possrvel, em geral, cadificar uma Unica in s tru~ao a fim de executar end of usd_aJIlOunt ,
o movim eoto de um a string de campo para uma ourra, em vez de begi n of &meX_pt.
codificar 100 instrucoes de atribui~ao para cada variavel. Mover hot el type p dectee l s 2,
re nt car typ e p decteat s 0,
uma dnica String de camp o sen tambem mais eficiente do que 100 plane type p cectsets O.
insrrucoes move, com isso seu programa executara mais rapida- food type p decimals 0,
mente . Voce vera nos capfrulo s que estao par vir que muitas end of amex_pt.
instrucoes po dem utilizar uma string de campo com o urn ope-
rando. Se voce puder utilizar as strings de camp o, voce tera Exerd cio 2
vantagens sabre as mesmas , send o assim elas econo mizarao tempo Qual e 0 resultado desre pro grarna?
para depura ~ao, bern como urn c6digo muito exte nso.
report zb0816 .
dat a: begi n of f Id_stgl,

o Por que devo utilizar meu pr6prio ripo estruturado em vez de


uma estrutura do DDIC? Eu Da O posse criar strings de campo
var l value ' 1' ,
va-z valu e ' 3',
var3 valu e ' 5' ,
com ambos? . var4 valu e '7',
ve-s val ue '9'.
o Sim, voc e pode. A funci on alid ade das esrru ru ras do DDIC e
bern mai s imporran te qu e a oferecida pel os -tip os estru rur ados,
var6 val ue ' 4' ,
var7 value' S',
varS value '6',
po rque podem forn ecer r6 tulos e ajuda P I a F4. En tr etan to, end of fld st gl.
ty pes pede serutilizada para definircipos estru turados e aninhados f ld_stg2 11ke fld _stgl.
que ccntenham rabelas int ern as. 0 que nao acontece com as fld_stg2 • fld _stgl.
estruturas do DDIC . Isso sera demonstrad o no Capfruic 12 na write: I f l d_st g2-var l, fld stgl -var2 , f ld stg2-varti . fld stgl- var3.
se~ao sobre as tabelas int ernes. write : I fl d_stg l -va rS. fl ( st g2-var 7, fl(stg2~var4. f l (st gl- varS.
9
Atribui~oes, conversoes e ccilculos
Qbjetivos do ca pitulo
Depo is de concluir esee capitulo, voc e.sera capaz de:
• Utilizar variaveis comuns do sistema e ser capaz de exibir au localizer
qualquer variavel de sistema
• Utilizar a instrucao c1ear e comp reender seu efeitc sobre as varidveis
e Strings de campo
• Execucar atribuicces utilizandc as instrucoes move e move-corre spond-
i ng
• Prever e execu tar convers6es de dados utilizando as insrrucoes de
atribuic;ao
• Codificar exp ressoes maremdricas

Antes de prosse guir


Os programas oeste enos capltul os subseqa ec tes utiliza m [crmaros de entrada
e saida que sao confi gurados com 05 padr6 es do usuario e podem ser dif ere ntes
de usuario para usuario. Ante s de prosseguir, seria um a boa ideia configurar
seus padr6e s de usufrio para que corresponclam co m os existences oest e livre,
de mod o que sua saida coincida com as listagens de salda apresentadas neste
livro.

http://_ .compUJ.com.br"
---- - - - - - -- -
280 " RE NDA EM21 DIAS ABAr/4 DIA UTRIBUI(DES.CDHVERSOES Ec.ll!UlDS I 281

Configure se~ padroes de usu ario agora, seguindo este procedimento: Figura 9 1
Esto e a estruturo
1. Se voce estiver atualmente no sistema R/3, salve todo a seu t rabalho syst . f lo contem as
definil;6es de lodas
agora.
05 vori6veis de
2. A parrirde qualquer tela, selecione 0 caminho de menu System-> User sistemo. 0 boICo
Profile-> U ser D efaults . A tela Ma i nta i n User: Oefaul ts sera exibida, Column Right;
Next • • • role ume
3. Na caixa de gropo Date Fonnat , selecione a bouo de opcac co/unopor vel patO
YYIT!MMIDD. o direita, fozendo
com que 0 extensao
4. Na caixa de gropo Decimal Notation, selecio ne a bcrso de op~o totof deShott Text
Period. sejo vislJOlizodo.
5. Pressione a bono Save na ba rra de ferrameneas Application. Na pane
infe rio r da janela, a m ensagem Va l ues for user xxxxx saved sera
exibida, As alteracoes feitas em seu perfil de usuaric nao terao efeitc
.at e voce eferuar seu pr6xim o logon.
6. Selecione a caminho de menu System-c-Log Off. A cain de dialogo
Log Off sen exibida,
7. P ressione 0 bono Yes. Voce esd. ccaectadc ao sistem a.
Seus nov os padree s de usudrio terao efeiro na pr6xima vez que voce Tab ela 9.1 Vori6veis de sistema co mume nte utilizodos
eferuar logon.
Nome Des(ri ~ao

Tra balba ndo com va riaveis de sistema sy-datum Data atuo l


sy·uze1t Horo ctuc l
NOVO lit.. Existem 176 va ridve is de sistema dispcnfveis dentro de coda programo ABAP/4 . sy- uname Id do usu6rio otuol
TERMO" Voce noDpreciso defini-lcs: elce sec cvtomctlccmente definidas e estcc se mpre sy·subrc Ultimo c6digo de retorno
d isponfveis.
sy-mandt Cliente de logo n
Para exibir uma lista de variaveis de sistema, exiba a estrutura do DDIC, sy·pagno N umerc da p6gino de soldo otuol
syst. Voce pode exibi-la u tilizan do D ictio nary: Ini tial Screen (t ela inicial ) a u sy-co1no Nurnero do coluna de SOldo atuol
de dais cliqu es no no m e de qualqu er variavel de siste m a em seu pr ograma . A sy-l tnno Nu merc do linho de llstc de soldo atuol
prim eira pagina de sys t e apr esentada na Figu ra 9.1. Linho vertical
sy-vline
Na Figura 9.1, os names de campo apa recem na primeira col una e as
sy-ul i ne linh a horizonta l
descricees eseao a direita na co luna Short Text. Para visualizar a descricac
sy- rept d Nome do relot6rio otuol
inteira, ro le para a direita ciando urn clique no ba ta o Column Rig ht; Next . . .
sy-cprog Nome do progrom o principal
na pane inferio r da tela.
Par a localizar urn campo pelo nome. pressione a b atao Find na barr a de sy· t code C6digo do transol;0o otuol
ferramentas Standard. A tela Find Fi eld aparecera, solic itando 0 nome do sy-dbcnt Dentro de select, ccn tem a co nta dor de iterol;oo ctucl. Depots de
campo que voce deseja localizar. endse1ect , ccn tem a neme ro de linhcs que correspondem a
cl6usulo where.
o alias de syst e sy (pronuncia-se sai). Em seu ccdigc, voce podera
utilizar as dais nom es. P ar exemplo, voce pode codificar sy-datum ou syst-da - A Listagem 9.1 mo st ra urn programa de exemplo que utiliza as variaveis
tum; sao exatamenre equivalentes. A maioria dos programadores utiliza sy. A de sist em a.
Tabela 9.1 contem uma pequena Iista de vari aveis de sistema comurnente
utilizadas. Variaveis adicionais serfo apre sentadas por todo a livro.
282 I APRENOA EM 21 OIAS ABA P'. OIA UTlIIBU1\'El,CONVERsOEl EcALCUlOS I 283

fHTRADA~ Listagem 9.1 Utilizondo vari6veis b6sicas de sistema • A linha 10 res rring e a s el e~ao de registros somence para as que tern
urn codigc de pais igu al ao inserido na tela de selecao.
1 report zb0901.
2 ta bles ztx lhl. • A linh a 11 faz com que as registr os sejam classificados em ordem
3 parameters "landl li lce ztxlfal -l andl obl igatory def ault ' US' . ascen dent e po r 1i fn r (num ero do fabricante).
4 vr-tte : I 'Current date :' . sy-detum,
• A linha 12 escre ve 0 mimero de ite raliao atual a partir da variavel de
5 / ' Cur ren t time : '. sy-uaet t ,
6 / ' Current user: I . sy-uneme , sistema sy-d bcnt e urn nu mero de fabricante a partir de cada registro.
7 / 'Vendors having country code ' . ~l ~nd l. • A linha 13 marca 0 final do loo p sel ect / endsel ect .
8 t.
9 select * fr om ztxlfal • A linha 14 escreve 0 ntimero total de iteracces do loop se l ect . Esse
10 where landl .. "land] mimero eigual ao mim er o de re gistros que coincidiram co rn a clausula
11 or der by 1f tm-. where utilizan do a variavel de sistema sy-dbcnt.
12 wr ite : I sy-dbc nt , ztx lfal-l 1fnr.
• Na linh a 15, 0 c6di go de retorno a partir de sel ect, existence na variavel
13 endselect.
14 lli rite : / 5y- dbcnt, 'records found', de sistema sy-subr c, e testado . Se zero, os registros foram encontra-
15 if sr-subrc <> O. des . Se njio zero, nenhum registro foi encontrado e uma mensagem e
16 write: / ' No vendors exist f or count ry" , ~l andl. esc rira na lin ha 16.
17 endif.

La ca Iza o d a yanayelse
' • . d sistem . a
o c6digo na Listagem 9.1 produz esta safda: " deran do urn c6digo de entrada como urn pararnerro de entrada, suponha
Consi
que voce prec ise escre ver urn programa qu e escreva a descri/iao do pais a part ir
siiDI ~ Current
Current
date: 1998/02 /22
time: 14:38 :24 da tabela ztxt005t no id ioma de logon atual do usuario. Como voce deve se
' Cur r ent user : KENGREEN'~OOD lembrar , ztxt005t e uma tabela de texto contendo descricees de c6digo de p ais
Vendor s having country code US
em diversos idiomas. A chave primaria e mandt, spras (idioma) e la ndl. U ma
1 1040
2 1080 SOIUiao de exemplo e m ostrada na Listagem 9.2, m as esta faltando uma pa rte
3 1090 cru cial de info rmacfo na linha 5: 0 valo r do idioma de logon atual.
4 2000 N a Listagem 9.2 esta faltando uma variavel n a posii ao indicada pelo po nto
5 VI
6 V2
de inrerrogacao. Gerahnente, quando estive r tr abalhando com 0 ABAP/ 4, voce
7 V3 podera se deparar com 0 desafio de localizar variaveis contendo as inf orm aqdes
8 V4' nec essdrias.
9 V5
10 Y7
10 records found
ENTRADA ~ Lista ge m 9.2 Um program a 'd e exemplo com umo vari 6ve l sy faltando

1 r eport zt x0902.
• A linha2 define uma st rin g de campo zt xl fal exaram en te igual atabela
INjllSE ~ com 0 mesmo nome.
2 tab 1es ztxt0 05t.
3 par ameters · landl l i ke ztxlfal -landl obligatory default 'US ' .
• A linha 3 define urn anic o parametro de entrada "Iendt. 4 select s i ngle * f r om zt xt005t
5 where spr as • ? Yid ioma de l ogon atu e l
• N as linhas de 4 a 6, a data arual, hora e id do usua ri o sao totalme nte 6 and 1and1 • "landl.
escritos a partir das varidveis de sistema sy- datu m, sy- uae t t e sy- uname . 7 ; f sy-subrc = O.
8 write: 'Descri ption:', ztxt005t -l andx.
• A linha 7 escreve 0 c6di go do pais, que foi inserido no campo de
9 else.
entrada de pardmetro "1andl , na tel a de selec ao . 10 write: 'No description exi st s for', "l andf.
• A linha 8 escreve uma linha em branco. 11 endif.

• A linha 9 seleciona regis t ro s da tabela ztxlfal e os coloca, u rn por vez,


na strin g de campo zt xl f a l.
• • • • • • • .. - - .. - ..... ~ ~ .... "!I" - '"4!!!'" - - - - -"'!W- -

284 APRENDA EM21 DIAS ABApt! OIA 9,ATRIBUI\OES, CDNYERSOES EcAlQJlDS 285

iNius~ ~ • A linha 2 define uma String de campo ztxtOOSt exatamente igual a


tabela com a mesmo nome.
8. Pressione a t ecla Enter. A tela Find sera exibida.
9. No campo Search FOf, digite uma string de caract ere s a ser localizada.
• A linha 3 define urn unico pardmerro de entrada "l andl . Se voce estiver procur ando 0 idicma de logon atual, _devers digitar
1anguage. Caraceeres curiaga DaO sio permitidos.
• As Iinhas de 4 a 6 se1ecionam um Unico registro a partir da tabela
zt xt 005t par a a Strin g de campo ztxt005t urilizan do 0 idioma de logon 10. Pressione 0 boti o Find. Vma segunda tela Find aparecera mostrando
atual de uma fonte ainda desconhecida e 0 c6digo do pais do paramer ro as linhas que con tern 0 texto di git ado. As corr espondencias sao
"landf . Nao ha endselect ji que se trata de uma ins trucio sel ect realcadas.
sing 1e. Ela retoma apenas urn unico regisrro: nenhum loop e criado. 11. Para selecionar uma correspondencia, de urn iinico clique em uma
• A linha 7 verifica o c6digo de retorno a partir de s elect e, se urn palavra realcada. voce retornara a tela Print Preview for XD:t'j a lista
registro civer sido encontrado , escreverf a descricfo na linha 8. Se urn sera rolada para a linha par voce selecionada e a cursor sera posi-
regisrro nio tiver sido enc ontrado, a linha 10 escreverd uma mensagem cionado n aquela Iinha.
apropriada. 12. Para [ocalizar novamente, pressione a seta para baixo ao final do
campo C ommand na barra de ferramentas Stan dard. Uma caixa
o idioms de logon atual esta disponfvel a partir de uma varisvel de
sus pe nse aparecerf contendo as comandos rec entemente digirados.
sistema. Infelizmente, para ut ilizar 0 batao Find na barra de [erramentas
Ap plic ation, voce precisardsabe r 0 nome do campo. Se voce nao sauber 0 nome 13. Role, se necessario, para 0 comando esc e de urn clique nele. esc
do campo , entaO 0 bene Find naa tera grande utilizacio. Em vez disso, utilize aparecerf no campo do comacdo.
a seguinte procedimento par a localizar as descrifoes da esrru tu ra SY5t. 14. Pressione a teela Enter. A tela Find sera n ovamente exibida..
15. Press ione 0 bot i o Find . A busca e executada ccmecandc na linha
atual. A segunda tela Find sera novamente exib ida e as corresponden-
Este proced imento emuito prntico, po is pede ser utilizodo pora local ize r cias serio mos tradas .
as descricces de quo lq ue r estrvturo ou to belo.
16. D e urn unico clique em qualquer palavra realcada p ara exibi-la.

~REEHCAM. 1Ilr.. Inide .ogora a ScreenC om "'How to Searc h the Descriptions of ° Structure o r
,. Table . Pora referenda futuro, voce pcdero sa lvor a listc de Print Preview for
xxxx em um crqvivc de textc na sua unida de de disco ngido. Pora isso,
Para localizar as descricoes de um a estrutura a u ta bela: a pa rtir do tele Print Preview for lOOCX, selecicne 0 co minho de menu
System-c-Llst-c-Scve -c-Lcccl File. Ne tela Seve Ust in File ... ,seledone
1. Co mece na tela do D ictionary: Tab le/Structure: Display Fields. o boroo de o~oo Unconverted e pressione 0 borec Continue. No tela
2. SeIecione 0 carninho de menu Table- > P rint. A tela Prin t Table Tronsfer list to e local File, digite 0 nom e d e um orquivo de textc, por
Manual sera exibida. Aq ui voce especifica quais deta lhes deseja ver. exernplc, c: \temp\syst.txt e, em seguld o, presslone 0 botec OK.
lsso crioro 0 crq uivc em sue unidade de disco rlgido. Voe! pode obrir
3. Marque to dos os camp os e pressio ne 0 botac Continue. A tela Print: e pesquisc-lc ufilizondo 0 WordPed em qualquer me me nto, sem fer de
sera exibida. utilizer 0 procedimento "'C o mo localize r os descri c;6es de ume estrvturo
4. Se 0 campo O utput Device estiver em branco, posicione 0 cursor no ou tabelo'" mostrodo odmo .
campo, pressione a seta para baixo e se1ecion e qualqu er dispo sitivo de
saida. (Nao imp ona qual dispositivo sera selecionado; ele D aO sera Seguindo 0 procedimento anterior, voce pede p ercebe r que 0 idioma de
ut ilizado .) logon atual estava armazenado em 5y·1 angu. 0 programa complete apuece na
5. P ressione 0 botao P rint P review na parte inferior da tela. A tela Pri nt Lisugem 9.3.
Pr eview for xxxx Page 00001 of nnnnn sera exibida.
6. Selecione 0 caminho de menu Goto· > List Display. A tela Print
P review for %D:t' sera exibida.
7. Dig ite %sc no campo Command cia barn de ferramentas Standa rd.
286 APREN DA EM21 DIAS ABAPH D~ 9,mIBUI\05,CONVElS05 EckrulDS 287

ENTRADA'" Listagem 9.3 A Ustage m 9.2 com. a cdtccc do vcne.. .el sy que estova Sintoxe do instrucco cl ear
,. foltondo no linha 5 !!! A seguir, veja a sintaxe cia ins tru~ao c1ear.
1 report 2tx0903. Z clear vI [with -e : wit h 'A' : with HUll]
2 tables ztx t005t.
3 par~te rs "la nd! 11ke ztxl fal -landl obligatory default 'US'. S onde:
4 sel ect single" froll ztxtOOSt 1ft • vt e v2 sao ac m es de strin g de campo au variaveis.
continua ~ . 'A' eum literal de qualquer comprimento.
where spra s .. sy-langu · i di oma de l ogon atual
6 and land! .. "lendt ,
7 1f sy- subrc .. O.
8 write: 'Description :' , ztxt 005t - l andx. O s seguintes pontos se aplicam:
9 else . " • Se vl for uma varisvel do tipo c, sem quaisquer ad.i~6es, ela sera
10 write: '!'to desc ription e xists for', " l andl .
preenchida com espaccs em branco. Se 1/1 for de qu alquer outre tipo
11 endif .
de dado, ela sen preenchid a com zeros. Se vr for uma string de campo,
seus componentes serac configurados com espar;os em branco ou
o ccdigo na Lista gem 9.3 p roduz esta salda: zeros depe ndecdc do tipos de dado de cada urn. .
S.\iOA ~ Descript1on : United Sta t es • Utilizando a adi~o wi th v2, a pr imeiro byte de 1'2 sera utilizado pan
pr een cher 0 ccmprimento inteiro de vl , Se vI foruma strin g de campo,
JJ1.i.uSE'" A tinho 5 limite a inst rUl; ao se l ect 0 retomor openos as registros de ztxt 005t ela sera tratada como uma variwel do tipo c.
,. que tAm um c6digo de idio mo iguol 00 ldlc mc de logon atu a l. Pelo fota de
mandt set outomotico mente od icio na do no cornecc de codo wh er e, a chc ve primario e • Utilizando a adit;ao wit h 'A', ' 0 comprimento inte irc de vt sera."
ogora co mpletome nte espedficodo e um enicc e exclusive regi5tro e retom odo. Observ e preenchidc com 0 uso do prim eiro byte do lit eral ' A' .
que a Indice prim6rio suporto esse instrui700 selec t , portonto as compos do c16usulo
where fora m espedficodos no mesmo o rdem em que oparecem no fndice prim6rio .
• U tilizando a adit;ao wi th NULL, °
comprimento inteiro de 1/1 sera
preenchido c,om zeros hexadecimais.
A Lisragem 9.4 mostra urn pro grama de exemplo que limp a as variaveis
Instru<;6 es de atribui<;oo
e st rings de campo.
NOVO... Umo ;ns tru~oo de otribu;¢ o ctrlbul um vo lar perc umo vcrio vel ou string de
lERMO,. ca mpo : Tres lnstrucoes de atribuit;oo sao co mumente utilizodos:
A listogem 9.4 utilizo umo novo odil;cO denominodo no- ga p no
• clear instrut;c o wr; teo No-gap fez com que a proximo volar de sctdo sejo
escrito imedioto mente depois do otuol sem urn espccc interven'ente .
• move
• move-corresponding
EII1UOA~ Listagem 9.4 Vari 6veis configurodcs para espccos em bronco o u zeros
pete lnstrucoo cl ear
Utilizando a instru~ao c l ear
1 repo r-t zt xD9D4.
NOVO... A instrui700 c l ear co nfig ura a volar de uma vori6vel au umo string de compo 2 tab l es zt xlfal.
HUD~ como zero . Se 0 tipo d e dodo for C, 0 volar, par sua vez, ser6 conf igurodo como 3 data : fl {2} type c value ' AB' .
espccos e m bronco. Os espoccs ern bronco e zeros 500 conhecidos como va/ores inid ois 4 f2 type i valu e 12345.
podr6o . Frequ entemente, e co mentodo que cl ear otribui velcres inicia is podrcc a 5 f3 type p value 12345 .
vori6veis. ' 6 f4 type f value 'lEl',
7 f5 (3} typ e n valu e '7 89' .
a f6 type d valu e ' 19980101' ,
9 f7 typet villue'1201'.
10 fa type x val ue ' M' .
__ - - - - - - - - - - - _- _ - - _ - .- _ - -.-
. - =c--"-=--- _

~
288 APR ENDAEM21 DIAl AWl' D~ HTllIBUI\OES,CDNVERSOES EtiLruLDS 289

11 begi n of 51, 17- ' 000000'


12 f1(3) type c valu e 'XYZ', fa -'OO'
13 f2 type 1 val ue 123456, s l-fl-'
14 end of 51. s l·fl-' 0
15 zt xl fa l - l1 f nr - 'XXX'. ztxlfal - lifnr= '
16 ztxlfal-landl • 'CA' . ztx lfal-l andl- '
17 write : / 'fl-' " no-g ap, fl no-gap, ,
18 / ' f 2- ' " no-gap, f2 no-gap . I ' l l
llil5! ~ • Alinha2definea stringdec.mpo zt xlf. 1.
19 / ' fJ-' " no-g ap, f 3 nc-qep, "~'I
20 / '14-' " no-gap , f4 no-gap , • As linhas de 4 a 10 definem as varifveis de cada tipc e lhes atribui
21 / 'f5- '" no-gap, f5 no-gap, valores-p adci o.
22 / ' f 6- ' " no-gap. f 6 no-gap, ,
23 / ' 17_'" no-q ap, 17 no-gap, "" • Outra string de campo, s1, edefinida na linha 11, com valores-padrao
24 / 'fa- '" no-g ap, f8 no- gap. para cada componente.
25 / 'sl -fl- '" no-ga p, s l-fl no- gap, , • Sao atribufdos valores a dois dos compone nt es da string de campo
26 / 'sl-f2- ' " no~gap. 51-12 no-gap, ",.
zt xlfal nas linhas 15 e 16.
27 .I 'ztxlfal-li f nr- '" no- gap. ztx l fa l - 1i f nr no-gap,
28 / ' ztx lfal-landl-", no-g ap. ztx l f al - 1andl no-gap, I ll'
• Todas as variaveis e componentes de strings de campo sao configura-
29 char: fl , rz, f3 , f 4. f5, rs, n , f8 , 51, ztx l fa l. dos com zeros e espar;os em branco pela instrucao clear na linha 29 ..
30 wri te : / ' fl - ' " no-g ap, fl no-ga p, Tambem se pe de dize r que codas as variaveis e compone~tes sao
31 / ' f2-' " no-ga p, f 2 no- gap.
32 / ' f3-' " no-ga p, f 3 no-g ap, configurados com oelores iniciaispat/rao.
33 / ' 14-' " no-qap, f 4 no-gap, • As insrrucoes wri te que co megam na linha 30 descrevem totalmente
34 / 'f5-'" no-gap, 15 no- gap, as varisveis e os componentes que Ioram ~POSI dentro de aspas
35 / 'f6-' " no-gap, f6 ac-qe p, " ",
simples e sem espaccs in te rvenientes entre as aspas e os valcres ao seu
36 / ' f7-' " n o ~ g a p . n no- gap,
37 / ' f a-' " no-gap , f a no- gap, redor. -
38 / 'sl-fl - ' " no-gap, sl -fl no-g ap, A Listagem 9.5 mostra urn pr ograma doe exemplo qu e preench e asvaraveis
39 / ' sl·f2-'" no-gap , :;1-12 no- gap, e 05 componentes de st rings de campo com valores diferentes de espalios ou
40 / 'z txl fa l -1i f nr-' " no-gap. zbl fa l - lf f nr no-gap,
41 / 'ztxlfal-landl- ' " no-gap, zt xlfal-landl no- gap, ,',' zeros.

EMTRADA'" Listagem 9.5 Vo ri6veis preen chidos com cora de res difere ntes de
o c6digo na Lisragem 9.4 pr oduz esta saida: r espOl; os em bronco o u zeros utilizondo a adi<;60 wi th do instrur;ao c1 ear

SAiD! ~
fl - 'AB' 1 r epor t ztx0905.
f 2- ' 12.3 45 '
f3 -' 12,345 2 tab l es zt xl fa l.
f4 -' 1. 000000000000000£+01 ' 3 data: fl(2) type c value 'AB ',
f 5-'789' 4 f2(2) type c,
16- ' 1998010 1' 5 f3 typ e i val ue 12345,
17-' 120100' 6 begin of sl,
fa-'M ' 7 H(3) type c val ue ' XYZI ,
sl -fl-'XYl' 8 f2 type 1 val ue 123456.
sr-rz-: 123 , 456 g end of sl.
zt xl fa l- 1i f nr- ' XXX 10 writ e: / 'fl· '" no-gap, fl no-g ap, -" " ,
ztxl f al - 1andl - ' CA
fl-'
11 I 'f2>< '" no-gap. f2 no~gap . "" ,
f2-' 0 ' 12 / ' f3'"" no-gap, f3 no-gap , " " ,
f3·' 0 ' 13 / 'sl~f1-' " no-gap, sl-fl no-gap,
14 / ' sl· f 2" ' " no- gap, sl-f2 no-gap .
f4-' O. OOOOOOOOOOOOOOOE+OO '
f5 -'000 '
f6 - ' 00000000 '
15
16
/ 'ztxlfal-l1fnr=' " no- gap, zt xlfal - 1H nr no-gap,
I 'ztxlfal-land l-' " no- gap, zt xlfal~1a nd l no-gap.
"" .
-
290 , m N" EM 21 DIAl U'PI4 D~ UTl<lBu~6ES, CONVEISOES EtllrulDS 291

17 /.
18 cl ear: f1 with 'X'.
Utiliza ndo a inst ru <;tio move
19 12 with fl . Para mover urn valor de urn campo para outre , utilize a instrucao nove. 0
20 f3 with 3. conteddo ~teiro ou urna pane do coneeudo pode ser movida. Em vez de move,
21 51 with 'X'.
voce pede utilizar 0 operador de atribuicio "', como mostrado a seguir. Ambos
22 ztxlfal wi t h O.
23 write : / ' 11·'" nc-cep , fl no- gap, "".
sao referidos como um a in struca o move.
24 I .' fl· ' " no- gap. f2 no-gap,
25 / ' f3. '" no-gap, f3 no-gap, I " '. Sintaxe do i nstru~ii o move
26
27
28
/ 's l-fl. '" no-gap,
/ ' s l -12. 1 1 1 no-gap,
/ 'ztxlfal-lffnr."
sl-fl no-gap,
sl~f2 no-gap,
no-gap, zt xlfal-l 1fnr no-gap,
-
Ul
Z
A segu ir, veja a sintaxe da iD:stnJt;ao move. Os operadores e operan dos devem
ser separados por espaccs. Atribui t;io multipla ocorre da direita para a

~
I
esquerda.
29 / 'ztx lfal~lll.ndl=' " no-gap, ztx lfal-lll.ndl no-gap,

1ft
move vI t o '112.
o c6digo na Listagem 9.5 produz esta salda: Y ou

SAiDA ~ vz "·
fl· 'AB' 'Ill.
f2'" ,
f3'" 12.345 ' ou
sl-fl · ' XYZ ·
sl -f2. > 123,456 I
'112 • 'Ill "'vm • 'lin •
zt"l f a1- 11fn r- '
ztxl f al - linen-' ou
n ·'xx' IIICIve rl[+N(L )] tov2[+N(L )] .
f Za lXX '
13·'50, 529,027 ou
51-fla ' XXX'
51·f2·'1482184792 ' ,2[+N(L)] • , 1[+N(L)] .

ztx l fa l -11 fnr- ''"""'" , onde:


ztxl ta l - landl- '11#'
• vI e a variavel ou string de campo de envio.
ANALISE ~ • A Iinha 18 preenche fl com a letra X.
• v2 e a varifvel ou String de campo de recebimento.
• A linha 19 preenche f2 com 0 primeiro byte de f t, tambem urn X.
• N e urn deslocamento a partir do inicio cia variavei au string de campo.
• A linh a 20 preenche f3 com 0 primeiro byte do lit eral 3. Urn literal
• Le o namerc de bytes que devem ser movido s.
numerico com ate nove dfgitcs de eomprimento e armazenado como
urn inteiro de quatro bytes (veja a sCliao seguinte "C enversac de
clades"). f3 epreenehido com 0 primeiro byte desse inteiro de quatro Na Tabela 9.1, dois exemplos si o .mostrados cia maneira correra e cia
bytes, atribuindo essencialmenee lixo a f3.
maneira incorreta de codificar as instrucoes de atribui~o. A codificacsc incor-
• A linha 21 trata s I como uma varifvel do tipo c eo preenche com x. reta resulta em urn erro de sintaxe.
o componente fl e do tipo c, portanto recebe valores validcs. 0
componente f 2 e do tipo 1, ponanto recebe valores invdlidos.
• A Stringde campo zt xl fa l epreenchida com 0 primeiro byte do inteiro Correta Incorreta
de quatre bytes de valor 0, preenehendo-o com lixo. 0 Iixo, neste case,
e exibidc com indicadores de mimero (I ,. fl - f2 . n-ra ,
fl -f2 -f3. n- ra-ra.
292 "mDA E. 21 DlAS A'AP/! CIA 9,ATRIBUI\OES,COHVERSOES EckcuLDS 293

Convers6es de dados
KOYO'" Se duos voricveis tiverem tipo s de dodos au com primenfos diferentes , as dodos
Do tipo Para 0 tipo Regras de eeevereee
lERMO~ seruc ccnvertldos quando movidcs. Esse procedlm ento edeno minoclo umo c p o compo de envic pode cante r openos ncme rcs, um cnicc
odoptor;oo Qutom6 tica. Se as comprimentos dos vcrlcvels de en vio e de recebimento ndo seporodor decimol e um sina l opcio nol. 0 sinol pode ser
correspo nderem, umo odc ptocec cutcmcticc do comprimento sera executoda . Se ostipos inlciulou final. Os espor;os em bronco podem oporecer nos
de dodos noo cor responclerem, umo cdcp tccec outom6tica de fipo sem exec utoclo. do is lodos do valor , E alinhodo a direito e preench ido a
esque rdo com zeros. Um campo de envio completcme nte em
Se as tipos de dados dos camposde envio e de recebimentoforem as mesmos, bronco e cc nvertido poro zero.
mas as comprimentos nao, uma adaptaciode comprimentcseraexecutada, como c d o compo de envic deve canter openos umo dafo v6lido no
pade ser visto na Tabela 9.3.Nessa tabela,0 campo de envic e 0 campo "From". forrncto YYYYMMDD. Se e sse noDfor 0 coso, um erro noD
ocorre~6 ; em vez disso, um valor lnvcfldc sere otrrburdc 0 0
compo de recebimenfo. as re sultodo s do ufilizor;oo desse
volor sao lndefinidc s.
Quando atribu ir pa ra Quando otribuir para um
c t o ca mpo de envic deve ter openos um hcrcric va lido no
u m campo maior, 0 valor campo menor, 0 valor
formoto HHMMSS. Se esse ne e for 0 coso, urn erro nco
Tipo 'from' sera: ' from sera:
I
ocorre r6; por suo vez, urn vclo r lnvclldc sera otrtburdo 00
c Preenchtdc a direito com espc ccs Truncodo a direita compo de receblmento . as resultodos do utilizor;oo desse
em bronco volar sao indefinidc s.
x Preenchldc c direito com zeros Tru'ncodo a direito c n o compo de envlc e ono lisad o do esquerdc paro a direita e
c esque rdo com zeros somente os d rgitos de 0 a 9 seruo transferidos pore a cam po
n Preenchido Truncodo a esque rdo
de recebimento (a linha do a direito) e, cle m dissc, sere
p Preenchido c esquerdo com zeros Atribuido se 0 valor numerico se
a
preenchido esquerdo com zeros. Tados as outros coracteres
odeq uor 00 compo I to I •
soo simplesmente ignorod os.
Se 0 va lor nurnericc for grande
c x Os valores v6lidos poro 0 ca mpo de envio sao 0-9 e lefros
demois para 0 compo de
moiusculcs A-F. 0 valor e olinhodo c esquerdo e pree nchido c
recebimento, um curto dump
direitc com zeros au trunco do a d ireito. lodos os ccrocteres
ocorrer6 .
ap6s 0 primeiro va lor lnvclldc no compo de envlo sdc
ignorado s.
Os tipos de dados restantes (t , i, d e t ) sao todos de urn comprimento p c o valor ealinhodo (] dtreitc no co mpo de recebirnentc , co mo
fixo, de forma que os campos de envio e de recebimento terao sempre 0 mesmo byte mois (] direilo reservcdo paro um sinal finol. a sina l
comprimento se fore m do mesmo tipo de dado. somenfe sere exibido se 0 nvrnerc for neqofivo: portanto,
As regras para adaptacoes de tipo sao fornecidas na Tabela 9.4. As regras numeros positives seriio alinha dos c direito com urn onico
de conversac para 0 tipc i sao iguais as regras para 0 tipo p. Entre elas escio espoco em branco final. Coso VOCE! tente mover um valor
inclufdas as convers6es com comportamento incomum. Os pontos que devem positivo que contenho a mesrnc quon tido de de digitos
suportoda pelo comprimento do ca mpo de recebimento, 0
ser observados SaO:
sistema utilizora 0 comprime nto inteiro do compo de
• A compactacfo peculiar executada para as tipos de c a n. recebimento para o rmozenar 0 valor sem reservor 0 byte mots
• A capacidade de atribuir valores invalidos aos tip os d e t.
a dlreitc poro 0 sinol. Depois de conside ror 0 que foi
explicodo, se a valor "no campo de envlc noo se adoptor 0 0
• 0 tratamento desigual de caracte res invslidcs durante a conversao dos compo de recebimento, 0 numero ser6 fruncodo a esq uerd c.
tipos de c a x. Se 0 truncomento tiver oco rrido, 0 slstemo indicor6 lese
substituindo a digito mois a esquerdo po r um asterisco (*l. Se
• A utili~o inesperada do byte de sinalreServado em convers6es de ppara c. o va lor se odaptor 00 com po de rece bimento, os zeros iniciais
• 0 usa de * para indicar estouro em CODversoes de p para c.
• Urn campo c completamente em braneo e converti do par a urn campo
,
.
serOo suprimidos. Se 0 camp o de envio for iguol a zero, 0
compo de recebimento re cebera um unico zero.

p com urn valor zero .


DIA 9,,mBUI\05,CONI'£R5ii5 EcALCUlOS 295
294 mE'" EM 21 DIAS " " "

26 fe .. fpl. writ e: / fp1, », tc, 'ri ghtmost byte reserved fo r sign'.


Tabela 9.4 Confinuccdo
27 fc • fp2. write : / fp2, >, tc , ' only negati . . e nUlllbers use i t , but ' .
Do tipo Para 0 tipo Regras de eenve reee 28 fe .. fp3 . write: / fp3. >, t c, '+ ve nurns th at need it use it t oo' .
29 fe ;; fp4. write : / f p4. >, f c, 'o.. . er fl ow i ndi cat ed by lead ing *' .
p d o ncmerc e interpretc do como 0 nc me ro de dios desde 30 fe .. fpS. writ e: / fp5 , >, t c, 'l eading zeros are suppressed' .
000 1/01/01, convertidc em umo doto e a rmczen odo 31 fe .. fp6 . writ e: / fp6, >, t c, 'z ero in • zero out ' .
intemomente no fo rmctc YYYYMMDD. 32 fp ;; , ". wr1te : / ' " >. f p, ' bla nks i n · zero out ' .
p t o numero e interpretado como 0 ncm erc de seg undos desde
meio-nolte, convertido em 24 heros e a rmazenado
intem omente no fcrmct o HHMMSS. o ccdigc na Listagem 9.6 produz a seguinte said a:
e convertida em um valo r que repre sento 0
p A dote
dlcs desde 000 1/01/01 .
numero de
silDi ~ -A182C3.4 • •> 0000001234 non-numer ic char s are ignore d
E ABCD date and t ime fi el ds are in va11d
t p a hor6r io e convert ido em urn nvmerc que repr esento 0 ABCOEO when you load them wit h j unk
1998/02/22 •.., 729.443 d->p: days sinc e 0001/ 01/0 1
numerc de segundos desde meio-nclte.
14:57:05 . ,,> 53,825 d->t: sees since midnight
.4.484 > .4.4000000 ig nore all af ter in.. . a11d char
-1234 > 1,234- allows l eading sign
Para urna lista completa de regras de conversao, consulte a documentacio 1234~ 1,234- al so allows trailing sign
de palavra-chave do ABAP/4 para a instru cao move. 0 procedimento para 123, 456, 789 > 123456789 ri ght most byte reserved for sig n
exibi-la segue na proxima se!Sao. 123,456,789- > 123456789· only negative nwnbers use it , but
1,2 34,567, 899 > 1234567899 + e nurns that need t t use it t oo
A Listagem 9.6 contem urn progra m~ de demons rracao que executa 12. 345, 678,901 . 0 '*345678901 o erflow i ndi cat ed by l eadi ng *
co nvers6e s de dados de exempl o. \, 12.345 u> 12345 lead i ng zeros are suppresse d
o .. a> 0 zero in :s zero out
EHTRADA~ Listagem 9.6 Convers6es de dodos de exemplo ••> 0 blanks in • zero out

1 report ztx0906. .... lnicle o~oro 0 ScreenCom "'How to Display the Conversion Rules in the ABAP/4
2 const ants >(3) value '..>' , "define uma constante denomin ada '> ' SCRHNCAM,. Keyword Documentation"'.
3 data: fc (10) type c . . al ue '-AIB2C3 . 4' ,
4 fo (10) type n, P ara exibir as regras de conversjio na documentaqac de palavra-chave do
5 fp t ype p, ABAP /4:
6 fd t ype d,
7 ft t ype t , l. Comece no ABAP/ 4 Editor: Ini ti al Screen.
8 f x(4) t ype x,
9 fel (5) type e alue '_1234' , 2. Selecione 0 caminho de menu U tilities- > ABAP/ 4 Key Word doc. A
10 fe2(5) type e al ue ' 1234- ' , tela D isplay Structure: ABAP/4 SAP 's 4GL Programming Language
11 f pl type p val ue 123456789; sera exibida.
12 fp2 t ype p al ue '123456789-' .
3. P ressione 0 botao Find na ber ra de ferramentas App lication. A caixa
13 f p3 type p alue 1234567899,
de dialogo Search C hapter T itl es sera. exibida.
14 fp4 ' type p alue 12345678901,
15 fp5 ty pe p atue 12345, 4. No campo Fin d, digite move.
16 fp6 type p value O. S. N a caixa de gru po Type of Search} selecione 0 botao de opcsc From
17
Stru ct. Start.
18 f n .. f e. writ e: / fc , s-, fn, "ncn-rturte r-t c chars are i gnored' .
19 fd > ' ABCDE '. write : / fd, ' dat e and t ime f iel ds are invalid '. ,
l
6. Pressione 0 bot ao C ont inue. A caixa de dialogo desaparecerd e a linha
20 ft .. ' ABCDE' . write : / f t , ' when you lo ad t hemwith junk' . move sera realcada.
21 fp " sy-datum. wri t e: / sy- datum, >. fp , ' d->p: days since 0001/01/01 '.
7. De urn clique duplo na linha real<;ada. A tela Dis play H yp ertext: se ra
22 fp" sy-uzert , write : / sy- uzet t , >, fp, ' d->t : sees sinc e m1dnig ht' .
23 fx " ' M B4' . write: / ' M B4' , >, fx, 'i9nOre all after in valid char ' . exib ida.
24 f p • fel. write: / fe1, >, t p, 'allows le adi n9 si9n ' . 8. Pressione a te cla Page Down duas vezes. infcio da tabela de a
25 fp ;; fc 2. write : / f e2, >, f p, ' also all ows tra il in9 si gn' . coeversao sera exibido .
296 APR U DA EM21 DIAS AIAP/4

Subcampos 8 fl (1) • ' J' . ·mesmo que: fl+O(l) .. 'J'.


9 'ltr1te I fl . .f1 agora contern 'JOY ,
10 fl (1) • 12. ·mesmo que: fl(l) • f2 (1).
NOVO ... A porte de um compo referendodo pete esped fico<;oo de um deslcccmentc
1IIlIO ,. e/ou comprimento e denominodo subcompo . 11 'It1"He I n. -fl agora contem 'BOY
12 fl+4 • fl . ·lIl@Smo que : fl+4(3) .. fl (3 ).
13 wr ite I f1. ·fl agora cont~ '60Y BOY '.
Sintcxe de um subccmpo 14 fl( 3) • 12(3). -mesmo que: fl+O(3) • f2+O (3).
15 srtte I fl. -fl agora contem 'BIG BOY ' .
'1 ["][( Lll • ,2[-c ][(Lll.

onde:
o c6digo na Listagem 9.7 produz esta safda:
• vl e v2 sao nomes de string de campo ou de varifvel. TOT
• 0 eurn deslocamenro baseado em zero desde 0 inicio do campo. JOT
BOT
• L e urn comprimento em bytes . BOY BOY
BIG BOY

Osseguinres pontos se aplicam: IHius!~ • Na linha 6, urn des locamento de 0 e urn compriment o de 1 sao
utilizados para especificar urn subcampo consistindo apenas no pri-
• U rn subcampo po de ser especificado para 0 camp o de envio ou de meiro byte de fl. Atribuir a tetra IT I. portantc, pr eenchera somente
recebimento ou para amb os. .
o primeiro byte de fl.
• 0 deslocarnento au comprimento e opcional , Ambos podem estar • Na linha 8, 0 d eslocamento de 0 e ign o rado. 0 e 0 padrao , portanto 0
presentes.
subcampo ·sed 0 mesmo que 0 da linha 6.
• Se 0 deslocamento for especificado, subcampo iniciara no
• Na linha 10, 0 mesmo subcampo eutilizado, mas dessa vez a arribuicac
IUO 0
come cc do camp o.
e a partir de f 2. Somence 0 primeirc byte e trans~erido de fZ, porq~e
• Se 0 cornprime n to nao for especificado, 0 subcampo se estendera ao o subcampo de recebimentc tern apenas urn U01 CO byt e de comprt-
final do campo. mente.
• Nenhum espa~o pode ser utilizad o dentro da especificacao do sub- • Na linha 12, urn deslocamento de 4 especifica que 0 subcampo em f1
campo. comeca no quinto byte e continua ate 0 final de fl, to mando-c tr~s
• 0 deslocamenr o, quan do presenre , sempre serap recedido por um sinal bytes mais comprido. 0 campo de envio efl , faaeodo com que os tr~s
de mais (+). primeiros bytes de fl sejam duplicados nas pc sicoes de 4 a 6.
• 0 comprim en ro, quando pr esente, sempre estara entre parenreses. • Na linha 14, os tres primeiros bytes de f 2 substituem as tres primeiros
bytes de fl.
A Listagem 9.7 mostra urn programa de exemplo que re~liza atribuicdes
e utiliza sub campos.
Utiliza ndo move com strings de campo
ENTlADAIilIrr.. Listagem 9.7 Movendo umo porte de um compo utilizondo umc
Com move, urn no me de String de campo especificado sem urn nome de
" otribui~60 de subcompo componente e tratado como sendo uma variavel do tipo c. A Figura 9.2 e a
Listagem 9.8 ilustram este po nte.
1 r epor t ztx0907.
2 data : fl(7),
3 f2(7).
4 f1 .. 'BOY '. -meSllO que: mover ' BOY ' para fI.
S f2 .. ' BIG' . -Ilesmo que: ee ver ' BIG' para f2 .
6 fl+O(l) .. ' T' . · fl agora c ont~m 'TOY
7 '!trite / fl .
298 l PRENOl EM21 OilS ABl P/~ O~ 9, All"BUI~OE5. CONY£RSOES EcllCUlOS 299

Figlltg 9 2 doto f1 (4) value 'ABeD' Movimentos do string de campo envolve ndo campos nurner icos
Utilizor move em umo
string de compo, se m f1 IlfA~ lr-:-,y·I;i<.~ I~"c-'" l
.,,&_';) ';:' ~ '.-.:".. ~.
Se 0 campo de envio for de caractere de categoria (ripos c, n, d, t ou x) eo alvo
tJtj/izor um nome de: for um a string de campo con tecdo urn campo nu m erico (ripos t. p ou f),
oata begin of fs1,
componente, farO corn
eI O) •
nenhuma con'Versao de dadossera executada. 0 mo vimen to ocorreria se ambos
q ue: a stringse;o e2(2) . fossem considerados simp les caracteres. 0 inverse tambem e verdadeiro.
tratodo como umo
vori6vel do tipo c.
e{ 3 } .
N enh uma co~versao sera executada ao mo ver u rn numericc para u ma string de
end of fs1.
campo ccnrendo urn campo de caractere. Em amb o s a s cases, as resultado s
,, serao invaIidos e indefinidos.
A Listagem 9.9 mo stra urn programa de exemplo que execut a uma
ccnversfc invalida de urn campo numericc para um a st rin g de campo de
mo ve f1 to fs l .
caractere.
f1
ENTRJ.DA~ Li st a g e m 9.9 0 movimentc de urn compo numerico pare umo string de
,. campo de curuct ere e inv61ido .

1 report ztx0909.
Z data : fe(5 ) t ype e.
EtmADA ~ Lista g em 9.8 A instru«;ao move t-ete urn nome de string de co mpo sem 3 begin of s,
urn nome de componente como umc vcrtcvel do tipo c 0\ f i t ype t ,
5 endofs.
1 repor t zt x09OB . 6
2 datil : flC.) value ' ABCD ' . 7 fe • '1234'.
3 begin of 51. 8 s - fc. "ce-c, nenhllnia converss c exee ut ada
4 el(l). g writ e s- f i. _"escreve ju nk
5 e2{Z). 10
6 ' 3(1) , 11 s~fi • 1234. "at r1bu1 urn val or v&1 1do
7 end of s L, l Z fc-s . -ce -c, nenhuma ccnversjc execute de
su v n. - 51 ~ tretedo como uma var1 !v e l de 4 "cer ect er es 13 write I fe. "escreve junk
s write: / 51. "escreve ABCO 14
10 / si -ci , st -ez, si -cs . "escreve A BC 0 15 s- f 1 - 1234. "atr1bu1 urn valor val t dc
16 f c - s-ff . nee.; eonverslio execut ada
17 write / fe. "escreve 1234
o c6 digo na Lisragem 9.8 produz esta salda:
SliDI ~ ABCO
A Be D Na minha maquin a, 0 codigo na Listagem 9.9 produz a seguin te saida .
Seus result ados talvez possa.m variar nas p rim eiras du as linhas de saida devido

• A linha2 define f1 como uma variavel de qua tro bytes do tipo c.


as atribuicoes invalidas realizadas.

SliDI ~
• As linhas de 3 a 7 definem 51 como uma string de campo com eres B75770, 417
eomp.onentes: fl, f2 e f3. 0 comprimenrc total de 51 e calcu lado pela 0...
1234
so ma do comprim ento de seus cornponenres: 1+2+1 =4.
• A linha 8 move a valor de f1 para 51, byte p ar byte) como se foss em
lIIiUSE ~
• N a linha 2, fl .e definido como urn inteiro com urn valor de 1234.
ambos varidveis de ripos c.
• Nas linhas de 3 a 5,51 e defini do como urn unicc componente ct , do
• A linha 9 escreve 51 como uma varifvel de quatro caracteres.
ripe c. comprimento 1.2.
• A linh a 10 escreve 0 conreedo dos ccmponentes de 51.
~ • • • •.•. • • • • •-.- . w - w ·w --- .....-- -- -- -- - - - - - - - - - - ---

300 'PREND' EM21 DIAS "'PI'


D~ Um BUI~OEs. CONVEISOES EcllaJLOS 301

• Nalinha 6, f1 emovidopara 51. Nenbuma cc nversao eexecutada porque o c6digo na Listagem 9.10 produz esta saida:
s 1 euma String de campo, portanto erratadc como sendo do tipo c. Simi ~
199802171234AB
199802171234AB
• Na linha 7. st- et e escrito e as resultados sao lixo. 19980217 1234 A B
• Na linha 8, para s t - et eat ribuida urna stri ng valida de caracrere 11234 1

1998 02 17 12 34A8

N a linha 9, s1 ernovido p ara fl . N enhuma cocverssc e executada.


i1itISE~

• As linhas de 2 a 14 defin em duas strings de campo compostas inteira-
• A linha 10 escreve f1 e, novame nte, as resultados sao lixo. mente de campos do tipo caractere. Cada st ring de campo tem, no
• Na liaha 11, para f1 e atribuldo urn valor vilido de 1234. total. 14 bytes de comprimenro.
• Na linha 12, f1 e at ribuidc a s1-c1. Pelc fato de a atribuicic ser pan • Na linha 15, 51 emovido para 52, tratando cada string de campo como
o componente e ca c para a String de camp o, a conver sao sen executada se fosse de urn unico camp o do tipe c com 14 bytes de comprimento.
e a linha 13 escrevera urn valor vdlido.
• N as linhas 16 e 17, ambos sao escritos como campos de caractere.
• Nas linhas 18 e 19, os compone ntes de cada string de campo sao
Voe! nee deve mo ver urnc vcr tevel do tipo c porn umo string de ccrnpc totalmente escritcs. s l - d1 foi dividido entre s2-yl. ml e dl. Os primei-
ou de uma string de compo contendo urn tipo ncrner ico . as resultados
ros dois bytes de s1-n1 foram para s2-n1. Os bytes remanescentes de
dependem do m6quino e, porto nto , soo indefinidos.
51 foram para 52-c1.

Movendo de uma string de campo para uma outra utiliza ndo tipos
de dados de carodere Movenda de uma string de campo para uma Dutra com tipos de
dados num ericos
Voce poderi utilizar a instrucao move em duas strings de campo, se ambas
contiveremsoment e componentes de tipos de dado s de caracrere (c, n, d, t e
HO'O Ilr.... A maiorte-dos sistema s operocionc is reqv er c ende recc de m6quina dos compos
x). A Lisugem 9.10 ilustra este conceieo. TaMO" nume ricos a fim de concordor com as regrcs esce e ftccs. Per exemplc, 0
enderecc de um inteiro de quotro bytes pede ser necessaria pare que sejo divisive! por
ENTRAOAIlrrrrr.. Listagem 9.10 Ufilizondo move com duo s strings d e compo compostos dois. Gernlmente, esse regro e impa sto como "urn inte iro de quotro bytes deve ser
, . inteiramente de tlpos de dodos de ccrodere vdlld o s olinhodo em um limite de byte regular". Assim, a regrn com a qua l con cordo 0 enderecc
de um co mpo e den o minodo o/inhomento.
1 re port ztx0 91O .
2 data : begi n of 51, NOVO .... A fim de ctender oos requisito s de olinha mento , um compilad~ r tipico inserir6
3 dl type d value '1 99S0217 ' • -S byt es TEtMO " bytes de preenchimenfo a ntes de um campo que req ue r olmho mento. Por

5
"(,) t ype n value ' 1234' ,
value 'A' .
-4
-I
byt es
byte
exemplc, se se u inteiro de quotro bytes comer;or no deslccc mentc 0003, desde 0 infcio
de urn progromo, urn byte de preenchirnento sera necessa ria porn a linh6-lo em um limite
6 ",2 val ue 'B' • -I byte de dots bytes. 0 cornpilodor eo locorO urn byte noo utilizcdo no deslocomento 0003, de
7 end of 51, modo que a inteiro cc mece no deslocomento 0004, fozendo com que sejc cdequcdc-
8 b~1n of 52. mente o linhod o. Os bytes de preenchimento sOo lnvisfveis 00 progromador, mas seus
9 ,1(4) type n, -4 bytes efeitos pcdem, as vezes, ser vista s.
10 .,(2) type c. -2 byt es
11 d1(2) type n, -2 bytes Se vo ce criar um a string de campo com uma mescla de campos nurnericos
12 " (2) type c , -2 bytes e de caractere, bytes de pree nchimento, alguma s vezes , serao inseridos pelo
13 ct (4) type c, -4 bytes
sistema para 0 alinhamento de campos numericos. Se voce tentar utilizar uma
I' end of 52.
15 52 .. sf .
instru~ao move em tal string de campo a fim de mover seu conreado para uma
16 write: I 51. out ra, eases bytes de pree nchimento podem causar resultados inesperados.
17 I 52. Portanto, voce podera somente utili zar move se uma das seguintes for
18 I ,1 -dl . sl-nl . 51-ct . sr-cz, verdadeir.a:
19 I 52-11. 52-mI. s2- dl. 52- nl , 52- cl .
... ...I ..... - - - - - - -
- - - -- _.
i
302 APR ENOA EM21 OIH AUP/4 I DIA 9, A1iJBUI~OES, CONYERSOES EcAlCULOS 303

SAiDI ~
• As duas Strings de campo consistem inteiramente em campo s de A 1110 I
A 1,234 B
caractere (ripos C, n, d. t e x).
• Os tipos de dados, comprimentos e posi~ao de todos as componentes s t-et tern apenas urn byte de comprimento, port ant o c2 tera urn deslo-
nas' duasstrings de campo ,sao exatamenrecorrespondences (as nomes camento desigual desde 0 inicio da string de camp o e necessitard de preen-
dos componentes DaO p recisam ser correspondentes). chimento na maioria des sistemas, fazendo com que s1 se tome mais comprido
do que 52. Quando s1 for atribuido a s2, c3 nae sera alinhado e alguns dos
Se as campos de envio e de recebimento fore m inteiramente composto s
s1- c2 temiinarao no comeco de s2-c3 . Entretanro, 53 corresponde exatamente
de campos de caractere,nenhum byte de preenchimento existiri. e 0 resultado cia
com 51, dessa fonna 0 movimento na linha 14 ocorr erd perfeitamente.
utiliza ~io de move sera previsiveL Se existir uma mescla de caracteres e tipos
Esse exemplo mostra que voce nao pode ign orar os efeitos da existencia
numericos, as bytes de preenchimento pcdersc existire 0 resultado da utilizacio
de campo s numericos dentro de uma estru tura. 0 fate de cada camp o de
de move podera ser imprevisfvel. Urn exemplo e mo strado na Listagem 9.11 .
recebim ento ter 0 mesmo mimero de bytes que cada campo de envio nao e
suficiente para garantir 0 alinhamento dos component es.
A instrut;60 move-corresponding pode set utillzcdc pora move r as
As regras de alinhamento variam de acordo com 0 sistema operaciona],
strings de compo que ten hom umo mescla de tipos de dodos nume riccs de modo que 0 ndmero de bytes de preenchimento e suas posi~5es irao variar.
e de ccroctere. 1550 sera descritono seguinte seo;oo. O s resultados de move em urn sistema operacional po dem ser diferences em
outro. Portanto, para garantirque seus programas sejam portateis, nunca ccnfie
em bytes de preenchimento e cao os considere du~te os movi mentos. Cada
ENTUJlI~ Listage m 9.11 as bytes de preenchimento pod em ca use r resultad os
inesperc dos 00 mover dodos entre strings de ca mpo strin g de campo deve ser composts inteiramente de tipos de dados de caractere
ou todos os componentes de cada strin g de campo devem ser exatamente
1 r eport ztx0911. correspondentes (exceto quanto ao nome) .
2 data : begi.n of 51,
3 c1 value 'A', " \.Ill byte
4 ·CZ type 1 value 1234, · quat ro byte5, ern geral prectsa de ' preenchteenec
Utilizando a instru<;iio move-correspond ; ng
5 c3value 'B ', ·urn byte Para executar urn movimento de uma string de camp o par a uma outra, em que
6 end of 51, os tipo s de clados e/ou comprimeatos nao correspondam, ut ilize a instrucao
7 begin of 52, move- cor r es pondi ng. Ela gera instrucoes move para com ponentes com nomes
8 ei , " \111 byt e
correspondentes. as componentes na String de campo de recebimento qu e na o
9 e2(4), "quat ro bytes, sen preench1mento
10 es, "urn byt e tenham urn nome correspondente na String de camp o de envio nie sers o
11 end of 52, alterados. Isso e ilustrado na Lisragem 9.12.
12 begin of 53, "53 ccrre speede exetaeente can 51:
13 u. "- tipos de dados igua i 5 Sintoxe do instru ~Ci o move-correspondi ng
14
15
16
x2 ty pe i ,
xJ,
end of 53.
II~ nCln;ero de CillllP05 19ual
". ei1Jl105 na mesrna ord em
• (05 neees nlio pr ect 5il1l corresponde r )
-
III A seguir, veja a sintaxe cia instruqao move. O s op eradores e operandos devem
Z ser separados por espacos. MUltipIa atrib uicao ocorrera cia direita para a

~
1752 -51. esquerda.
18 write : I sz-ct , sz-cz, sz -ca . nove- cc r r es pcndt nc .v1 t o vz,
1953 -51.
20 write : I s 3~x1, s3- x2, 53-x3. on de:
T • vl ea variavel ou string de camp o de envio .
Em meu sistema, a cod igo na Listagem 9.11 produz a seguinte safda. Ern • v2 ea varifvel ou st ring de campo de recebimen ro.
seu sistema, os resultados podem variar para os campos com atribuicoes
invalidas.
r

OIA 9,ATiIBUI\OES,<OHVEiSiiES EclliuLOS 305

EHTRADAlirll.. ~is~~ger.n 9.12_ A lnsfrucdo move-:orresponding gera instrucces move • s ubtract au s ubtract -corres pondi ng
,. individucls e entdo executa converseo de dodos
• mul t t pl y a u multi ply-corres pondi og
1 report zt x0912. • divide au div ide-corre sponding
2 data: begin of 51,
3 cl type p deci mal s 2 value '1234.56 '.
4 c2(3) value 'ABC'.
Utilizando a instrucco compute
5 c3(4) val ue '1234' , Compute ea insrrucfo u tilizada co m mais frequencia para execut ar ctlculos.
6 end of 51,
7 begin of 52,
8 " (8) , Sintaxe da instrucno compute
10
11
9
c3
x2(3)
t ype i.
end of 52.
value ' XYZ'.
-
III A seguir, veja a sintaxe da instrucio compute. Os operada res e operandos devem
Z ser separados por espacos. Mais de urn operador par instrucao e permitido.
12 write: / '51 : ' , 51-e1, si -ea , 51-c3.
13 wri te: / ' 52 bef ore move- cor r espondi ng:' . s 2~c l . 52-x2, 52-d .
14 move-corresponding 51 t o 52. · cod1f 1cat;l o i gual as duas t nst r uczes a seguir
15 * move st- et to 52-c1.
S
In
compute v3 • vl op v2 [op vn • ••].

au
v3 = v2 op v2 [op vn ,..l,
16 *" move sl- c3 t o 52-d .
"execut a ccnversao
"execut a ccnversxc T onde
17 write : 1 's2 after lOOve- corresponding: ' . 52. cl ; 52-x2, 52-c3.
• v3 e a variavel de recebimento para a res~ltada do calculo.
• vr, v2 e vn sao as ope ran dos.
a c6digo na Listag em 9.12 produz esta safda: . • op e urn ope rador matemarico.
51 1. 234.56 ABC 1234
IliDI. s2 before scv e-c crrespondt nc: XYZ 0
s 2 after move- cor r es pondin g: 1234. 56 XYZ 1.23~
A Tabela 9.5 contem uma lista dos operadores validos.
,
... A linho 14 gero duos instrulioes move; por questoc de dcrerc , elos se o
ANALISE,. mostrodosdentro de co mentc rlc s nos linha s 15 e 16. Normolmente, voce neo Tabela 9 .5 Operadores v6 lidos po rc a instru ~aa compute
pode ver asses Instrocces move; 0 sistema as gero e as executa outomoticomente "!'nos
. Opero dor Opera ~ao
bcstldores". Uma instrulioo move sera gerodo para coda componente de string de compo
de receblrnentc que tenho 0 mesmo nome de um componente no string de compo de + Adi;oo
envio . Nesse coso, c1 e c3 fem os mesmos names, por isso duos instruc;6es move se c Subtrocec
gerad as. As convers6es de dodos sao executados , como seriam se voce mesmo five sse Multiplicac;eo
codtficcdc essas lnstrvcces. 0 cornevdo de c2 permcnecerc inolterodo depots de *
/ Dlvtscc
cond ufda a instruc;60 nove-cor-responding.
** Expcnencicccc
DIV Dlvisec de inteirc
Se duos strings de compo forem exetamente correspa ndentes, noo MOD Restodo divisdc de inteiro
utilize move-co r -respond! ng para mover os dodos de umo porn outra.
A utilizoc;oo de move e mois ehclente. Alem disso, existem funcoes predefinidas. Para uma lista, obtenha ajuda
utilizando Fl p ara a palavra-chave comput e.
Execufondo c6lculos A precedencia do opera dor e cia for~a coma segue:
V oce pode executar calculos utilizan do as seguintes instrucoes: • Funcces prede finidas sao avaliadas ,

• comput e • em seguida a expone c ciacac,


• em seguida ", / , DIV e MOD, na ordem em que ap arecem na expressao,
• add au adc- cor re spondt ng
• em seguida + e - na orde m em que apar ecem na expressao.
~~ ...... ,... -- - - -----
. Il"'''''"'IDES, ,.",usO" "AlCULOS 307

• v2 ea varisvel sendo adicionada.


• v1 e a varifvel adicionada a v2.

A sintaxe de subtract, mul t f pfy e div i de e semelhante.

Sintoxe do instrucco add-co rrespondi ng

- III Abaixo estli a sin taxe da instru~ao add- correspondi ng.


Z add-cor respo ndi "g 51 to 52.

g onde:
• 52 e a string de campo sendo adicionada.
T • sl ea strin g de campo adicionada a 52.

VIDa instrucao add e gerada para cada p ar de componen tes com 0 mesmo
nome em 51 e 52. As conversoes de dados sao executadas da me sma maneira
que oco rre com a instruc i o add. Subtract-corres pondi ng, multlply-ccrres -
pendin g e divide-corresponding operam de forma semelhente.
Exemplos sao dadcs na Lisragem 9.13.

ENlRIDi~ Listagem 9.13 Utilizondo as lnstrucoes add, subtract, multiply, divide e


correspond ; ng

1 report ztx 0913.


2 dat a: fl type i val ue 2,
3 f 2 typ e i value 3,
4 begfn of 51,
S cl typ e 1 value 10.
6 c2 ty pe f val ue 20,
7 c3 ty pe 1 val ue 30.
8 end of 51.
9 begf n of 52.
10 c1 ty pe i val ue 100,
11 x2 .typ e f value 200.
12 c3 t ype f valu e 300,
13 end of 52.
14 add fl t o f2 . write I f2 . -fl fica i nalterado
15 subt r act fl f rom f 2. wr t te I rz .
16 llIIltipl y f2 by f lo write / f2 .
17 div i de f2 by fl . write / f2 .
18 add- corres pondi ng 51 t o 52. write : / s2-c l , 52-x2, 5 2~ c3 .
19 subtract· corr e5ponding sl f rom sz, write : / sz- ct , sz-sz, s2- c3.
20 mult i ply . corre spond1ng s2 by 51. wr ite : / sz- ci , s2-x2 , s2-c3.
21 divi de-c orresponding s2 by s1. wr 1t e: / sz- ei . s2-x2, sa-cs.
308 ! HRENDA EM 21 DIAS ABAP/4 DIA9:ATRIBUltOES,CONVERSOES Eti.LfUlOS , 309

o c6digo na Listagem 9.13 produz esta saida: configurado co mo '01 ' . Jo1 que as datas sao sempre arm azenadas
5 utilizando 0 formato inte mo YYYYMMDD, 0 valor de dia da data em
3 d2 e. co nfi gurado como ' 01' . 0 resu lt ado e. que d2 contem u ma data
6
igual ao prime iro dia do mes atu al.
3
110 200 330 • Na Iinha la, 1 e sub tr aido de d2, considerando a data do ultim o dia no
100 ZOO 300
mes an te rio r.
1,0 00 200 9, 000
100 ZOO 300 • Na linha 12, a diferenca em dias entre a data atual e a data de fusio
(almagamation) e. calculada. 0 resulrad o e atribuldo ao campo com-
Cclculos de dolo pact a dc num_da ys e e. totalmente escrito na linha 13 .
Uma variavel de data (tipo d) p ode serutilizada dentro de express6 es mat emdti-
cas. Atribu ir a resultado de urn cdiculo de data a uma varidvel compacrada dara
a diferenca em dias. Urn exemplo e dado na Listag em 9 .14.
Atribuic;ao dinamica
NOYO'" Urn sfmbo lo de compo e urn indicad or que voce pode dinarnicamen te atribuir
~NTlADA'" Listag em 9.14 Colculos de doto que util izam a vcr tcvel de data dentro lUKO~ a um cam po. Depois do ctribuicc o, voce pode utilizer a sjmbolc de compo em
,. de um c61culo quolquer luga r de seu programo em vez do nome real do campo. Utilize 0 instruc;:60
fi el d- symbol para definir urn sfmbolo de compo e utilize assi gn para otribuir urn compo
I report ztx0914 . a ele. 0 nome do simbo lo de campo deve ccm eccr e term inor co m a sinal de menor que
2 t ype- pools ztd . e sinal de mo ior que . A Ustogem 9 .1 5 contem urn exemplo simples.
3 data : dl like sy-datUlll.
4 d2 li ke dl,
S nurn_days t ype p.
ENTUDAItrrr.. Listagem 9.15 Um sfmbolo de campo e uma referenda para urn outro
,. compo
6 dl • d2 " sy ~ d atum .
I
-data de ont ea I report ztx 0915.
8 subtract I f rom dl. wr ite / dl.
9 d2+6 · ' 01' . write / ez . -pr1meiro dia do ~s atual 2 dat a fl(3) value 'ABC'.
10 subtract I f rom ea. write / d2. -Olti lllO dia do ~s anteri or 3 field -symbol s <t> ,
4 assi gn fI to <f ::o. -<f::o pode agora s er usado no lugar de fI
11
12 nlml_days .. sy~datum ~ ztxl_amalgamation_dat e . 5 write <t> . "escreve 0 ccntenco de fI
13 write / nurn_days . "numer o de diu desde ztxl amalgamation_date 6 <f::o· ' XYZ'. -a t r i bui urn novo val or a fI
I write / fl.

No die 22 de fevereiro de 1998, 0 c6digo na Listagem 9.14 pr oduziu esta


saida:
o c6 dig o na Lista gem 9 .15 produz esta saida :
SAiDI ~
ABC

S.liDI~ 1998/02 /21 XY2


1998/ 02/ 01

IHilll~ ~ • A linha 3 define urn sfrnbolo de campo denominado <f>.


1998/ 01/31
354
• A linha 4 at rib ui a campo fl ao simbolo de campo <f >. <f> agora indica
IHius~ ~ • N a linh a 2, a ins rruc ao type -pool s faz com qu e a constante ztxl_amal- o arm az enam enro da variavel fl e pode ser urilizado, em vez de fl, em
qualqu er lu gar do programa.
gamat ion_date seja inclufda no programs.
• N a linha 6, a data arual e atribufda a dl e d2. • A linha 5 escreve <f>, fazenda com que 0 conteudo de fl seja escrito.
• Na linha 8, a data de ontem e. calculada subtraindo-s e 1 da data atu al. • A linha 6 mo difies 0 conteudo de <f> , mas . na verdade, modifies fl.

• Na linha 9, urn subcampo em d2 no desl ocamento 6 co m urn compri- • A linha 7 escreve 0 co nteudo madificad o de fl.
mento de 2 (comprimento obeido a partir do camp o de envio) e
-- ....... _... .
310 , API ENDA EM 21 OIlS ABAPH DllH TRIBUI\OB, (OIffiRSOB Ec.ltrulOS I 311

Voce pode ut ilizar stm bolcs de campo para criar programas muitc generi-
cos. Suponha, par exemplo, que voce queira criar urn pr ograms que aceite urn
IFasa _

nome de tabela como urn parimetro de entrada e exiba 0 conreedo. Voce DaO Utilize compos do mesmo tipo de dodo, Nao move vclores inv61idos para campos.
poderd codificar os nomes de campo na instrucao write, porque eles serao quando possivel, po re evitor cc nversees.
diferentes em cada tabela. Em vez disso, voce podera utilizar urn simbolo de Utilize move-cor -respond! ng para mover
os compos de uma string de campo
campo na instrucao write para referir-se 010 campo de uma tabela .
para umo outre, quand o as
compon entes tern 0 mesmo nome mas
Resumo os tipos de dodos e com primentos nco
coincidem .
• As varidveis de sistema sao arm azenadas na est rut ura sys t. Voce pode
Utilize a instrulScO clear para otribuir
pesqui sar as descricoes dos campos e seus elemen tos de dados a fim volores iniciois podreo a uma vc ricvel
de localizer 0 campo desejado. Esse procedimenro pode ser utilizado ou string de campo.
para localizar arraves dos campos de qualquer tabela.
• As instrucoes de atribuicao sao cl ear, move e mov e-co rresponding.
• Cl ear atribui valores iniciais padr ao a uma varifvel ou st ring de campo.
Voce tambem pode utiliza-la para preencher urn campo com qualquer
P&R
caracrere ou com NUlls.
• A instrucao move tambem pode ser escrita com o ". Mulriplas atri- o Posso utilizar a instrucsc clear para configurar Urn valor com
espacos em branco ou zeros, ma s existe uma instrucao que pode
buicoes em urna unica linha sao permiridas, como vl " v2 " v3. As configurar um a vari avel com 0 valor an terior) por mim especi-
con versoes sao automaticamente executadas, quando necessario. U rn ficado, utilizando a adi~o value na instrucao data ?
nome de string de campo sem urn nome de componente e tratado
com o uma varidvel do ripe c.
• Para mover c s dados ent re strings de campo, que correspondem o Nee, infelizm en te nao hi.

exatamen te em numero de componen tes, tipo de dado e comprimento


de cada componente, utilize move. Para mover os dado s en tre str ings o Possa utilizar a instrucao move com strings de campo de co m pri -
mentos diferentes?
de campo com componentes que tern (peIo menos urn component e}
o mesmo nome , mas com tipos de dados diferentes ou comprimentos,
uti lize move-corres pondi ng. o Sim , pede. Ambas serao tratadas com o va riaveis do tipo c. 0
valor de envio sera truncado ou pr eenchido no final com espaco s
em branco, se necessario, antes da arribuicao astring de campo de
• Para acessar os bytes individuais do valor de urn campo, utilize urn
subcampo . Urn subcampo pode ser utilizado como urn campo de envio recebi mento. 9
ou de recebimento ou ambos .
• Voce pe de executar calculos com utilizando compute, add, subtract,
mult ipl y,di vide,add -c orrespondi ng, subt ract- cor re spondi ng, mul t i -
o Por que precise saber sobre byte s de preenchim en to ? 0 sistema
DaO cuidara disso, caso eu siga todas as regra s?
ply -c or re spondt og e divi de- cor r espondi ng.
o Te cn icamen te, sim, cuidara. En rr eran ro, a medida que voce
co difies m ais pr ogramas, as vezes, voce podera inadver tid a-
m ente atri buir uma string de campo de forma incorreta util i-
zan do move. Se conhecer os byt es de preenchimentc e como eles
afet am sua satda, talvez felizmente voce seja capaz de reconhecer
a causa de seus pro blemas e nao precise recorrer a urna "modifi-
cac;ao" para fazer com que 0 programs opere adequadam ente.
312 t APR EN DA EM 21 DIAS ABA PI4
D~U""U1(OES, [QNV"SIiE" c.\LCUlOS I 313

o Parece estranho 0 faro de eu poder atribuir valor es invalido s as


varidveis. 0 qu e acontecerd se eu utilizar urna dessas variaveis elas?
Duas coisas esrao erradas com 0 programa na Listagem 9.16. Quais sao

que tenha urn valor Invalid o?


EHTRADA.... Listagem 9.16 Este c6digo ilustra a utillzoc do de algumas vcricveis
r
o Q ualquer coisa p oderf acontecer. Eu nao escreveria urn pro-
grama que con fiasse intenciona lmente em val ores invalidos.
b6sicas de sistema

report zt y0916.
Por exemplo, nao ren te uti lizar urn valor de data especial de x tables ztxlfal.
para indicar algo especial como uma data ausente. 0 compor- par amet er s l andl like ztxlfal-1andl obli gatory def ault 'US'.
ramento de seu pro grama toma-se imprevisivel quando voce ul- select * from ztxt005t
trapassa os limites admissiveis do idioma. where 1and1 '" 1andl
and spres > sy- langu .
write: / ' Description:'. ztxt005t-landx.
o As mensagens de sintaxe geralm ente nao indicam 0 que hoi de
erra do com meu program a. E minha culpa ou 0 verificador de
endse1ect.
if sy-subrc <> O.
sintaxe, as vezes, deixa a desejar? wri t e: / ' No desc rlptions exi st for country' . l andl.
endt f •

o Vamos apenas dizer... nfo e sua culpa. Minha mensagem favorite


exxxx i s expected. Na verdade, significa "xxxx ndo e esperado".
Encto, quando essa mensagem aparecer, insira a palavra nao e ela
ficara corre ra.

Wo rkshop
o .Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo . A se~ao Teste oferece perguntas para ajudar a solidificar seu entendi-
mente do cont eddo abordado e a se~ao Exercicio permite que voce pratique a
que aprendeu. Voce pode encontrar as respostas as perguntas do teste e ao
exercicios no Apendice B, "Respostas as perguntas e aos exercjcios".

Te ste
1. Qua l seria a outra for ma de mover urn valor de uma variavel para
outra?
2. 0 que deve separar operandos e operadores para que 0 calculo ocorra?

Exerdci o 1
U tilizando 0 proced imento denominado "Como localizar as descricoes de uma
estrutura au tabela" para localizar:
1. 0 nome do campo de bloco Payment na tabela lfa l.
2. 0 nom e do campo chave Gro up na tabela knal.
3. 0 nome do campo de sistema que contem a localizacao de uma string .
4. 0 nome do campo de sistema que conrem a ID da mensagem .
5. 0 nome do campo de grupo de material na tabela mara.
10
Instru~oes de controle comuns
O b jetivos do capitu lo
Depois de concluir este capitu lo. voce sera capaz de:
• Codificar as insrrucoes de con tro le comuns; f, case, do e whi 1e
• Controlar a sequencia do programa utilizando exit, conti nue e check
• Codificar especificacoes simples de comprimento e posicao na ins-
trucao wr; t e

Utiliza nd o a instruc;a o if
A instrucdo if no ABAP /4 te rn operadores relacionais para igualdade e de-
sigualda de e op erado res relacionais especiais para cornparacoes de string e para
mascaras de bit.

As comparoc;6es de bit nco s60 frequen ternente utilizodos no ABAP/4


e, po r isso, noD s60 a presentados oqui. Entretonto, s60 obordodas com
deto lhes no dcc vrnentc cco de pclc vrc -chcve do ABAPI4, sob 0 titulo
"O perodores relac ionois para ma scara s de bit".

http:// ,,,,,,,,,,,,,CCmpus.ccm.br
316 ! APREN DA EM 21 DIAS ABAPH
D1Al UNSTRD~6" DE CDOTRDLE COMUNS 317

Sintoxe do instru..ao i f Tabela 10 .1 Ccnnnvcccc


'" A seguir, veja a sin taxe da instrucac if. Compara fjao Formas a lternativas Verdadeiro quan do
Z if [not] exp [ and [not] exp ] [ or [not] exp ] .
vl >'" v2 GE, :> vl for moior que ou iguol a v2

S
m
[elsei f expo
---
[el se .
]
vI <: v2
vi between v2 and v3
not vI between v2
LE, :< vl for menor que ou iguol 0 v2
vl estiver entre v2 e v3 (inclusive)
vl ultrapossar a fa ixa de v2 a
---J
~ endif. and v3 v3 - (inclusive)
onde:
• expe um a expre ssao lo gica que avalia quanta a umacondicaoverdade ira Na Tabela 10.1, vl e v2 pode m ser variaveis, Iiterai s ou strings de campo.
au falsa. N o caso de variave is a u lit erais, a conv ersao automatica sera executada, se 0
• --- representa qualqu er numero de linhas de c6digo. Ate mesm o zero tipo de dado ou co mprime nto nf o corresponderem. A s Strings de campo sao
linhas sao permitidas. tratadas como variaveis do ripe c.
A co mparacao de da is valores que nao tern 0 me smo tipo de dado resultara
em uma adaptacao de ripe automatica e in tern e de urn ou de ambos os valores.
Os seguinres pontes se aplicam: Urn tipo tera p rec edencia e ditard que tipo de conversao sera executada. A
• C ada if clever ter urn end; f correspondente. ordem de preceden cia e:

• else e elseif sao opcionais. • Se urn campo for do tip o f. 0 outre sera convertido p ara 0 tipo f.

• O s parenteses p od em ser utilizados. Carla paren tes e deve ser separado • Se urn camp o for do tipo P. 0 outre sent convertido pa ra 0 tipo p.
por urn espa~o. Por exemplo, if ( f1 = f 2 ) or ( f l :: f3 ) esta • Se urn ca~po for do ripe t , 0 ou t re sera convertido para 0 tipo t.
corr eto e if (fl "' f2 ) 'or (fl "' f3) esta inco rreto. • Se urn campo for do tipo d, 0 outro sera convertido para 0 tipo d. Os
• A s variaveis po dem ser comparadas com espa~os em bra n co au zeros tipos c e n, entretanto, nao serfo convertidos. Eles sao diretamente
utilizando a adi~ao i s in it ial. Por exemplo, if fl i s in itia l sera co mp arados.
verdadeiro se fl for do ripe c e estiver em branco. Se fl for de qualq uer • Se urn campo for do tipo t , 0 ou tro sera convertido pa ra 0 tipo t. Os
outro ripe de dado, a instrucac sera verd adeira se fl co nt iver zeros. tipos c e n, en tretanto, nao serao convertidos. Eles sao diretam en te
• Para uma negacao, not dev e preceder a expeessac 16gica. Par exemplo, co mparados.
if not fl i s in itial esta corr eto. if fl t s not in iti al est3. • Se urn campo for do tipo n, ambos sersc convertidos para 0 tipo P
incorreto. (nesse ponto, 0 outro campo po derd ser apenas do tipo C ou x).
• As variaveis podem ser comparadas com valo res nulos utilizando a • Nesse pont o, urn campo sera do tipc ceo ou tro sera do tipo x. x e
adiljao ; s nul l. Por exemplo, if fl is nul l. convertido par a 0 tip o c.
O s operadores 16gicos p ara operan dos de qualquer tipo sao list ados na As conversoes seguem as mesmas regras daquelas que sao realizadas pela
T abela 10.1. instrucao move. As co nve rs6es de tipo sao completamente detalhadas na docu-
mentacao de palav ra-c have do ABAP/ 4, sob 0 titulo "Relational Operators for
Ta bela 10. 1 Cornporoco es comu ns e suas formas alternativas All Data Types".
ComparoCjoo Fonnas alternativas Ve rdadeiro quando
vI • v2 EQ vI for iguol a v2
ConversOo de dodos de literais dura nte compora..6es
vI <> v2 NE, >< vI nco for iguo l a v2 as literais sao arm azenados intemamen re com tipos de dados, como pode ser
vI > v2 6T vl for moior qu e v2
vista na T abela 10.2.
vl < v2 LT vi for menor que v2
318 I ' PRE '" EM21 OIlS "API' O~ 10, INmlJ(OES DE ( OKTiOl£ COMUNS 319

Ta bela 10.2 Tipos de dodos de [itercis o c6d.igo na Lisugem 10.1 produz esta saida:
, .,
Descri~ao Tlpo de da do SAiDI ~ Xis between X and Z
N emeros de urn a nove d igito s de comp rimento 51 <> 52
N c mercs de 10 au ma is d igitos de com prim ento p o• ' ,
Todos os outros c
INiuSE ~ • N a linha 12, 51-x e comparado com 52- x. Ambos sao do tipo c,
A s co nversees de tipo para [iterais segue m a mesma ord em de p reced encia comprimento 1. Nenhuma conversjc e executada e os dois sao iguais.
e as me smas regra s de conversac sao apl icadas. • A linha 18 esemelhanre, mas utiliza 0 operador bet ween. 0 valor Xfica
A Listagem 10.1 m ostra urn prograrna de exemplo utilizando os operadores na faixa de Xa I e, sendo assim, 0 teste sera verdadeiro.
comuns de comparacio. Uma conversac inesperada tambem e demc nst rada.
• A linha 24 compara as strings de campo 51 e s2 como se fos sem
ENTiADA~ Listagem 10 .1 Urn exempl0 do utiliza<;60 de if no progromo varidveis do ripe c. 0 valor de 51 e portanto XYI e 0 valor de 52 e Xl.
Eles DaO sao semelhantes.
1 report ztxlOOl.
• Na linha 30, a literal 0 e comparado com urn espacc- 0 zero e
2 data : begi n of 51,
3 x value 'X' ,
armaze nado intern amente como ripe i, 0 outro como tipo c. De
4 Y valu e ' Y' . acordo com a ordem de preceden cia, 0 tipo c e convertido para 0 ripe
5 z val ue '2 '. t. Converter urn espacc em branco pa ra urn inteiro resultara em urn
6 end of 51, valor zero e a comparacio provara ser inesperadamenre verdadeira .
7 begin of 52,
8 x value 'X'.
9 z val ue 'l '.
Exibind o convers6es
10 end of 52.
11 IOYO '" Ao executor umo on6 fise de prog rorno, voce poderc determiner onde ocorrem
12 1f sr -x • 52·x. TEUO " as ccnversces dent rode urn programo . Para executor umo on61isede progroma,
13 wri te: / 51- x. '. ' , 52-x . utilize 0 segu inte procedimento.
14 else .
15 .... ri t e: / 51-x, '0'. 52-x . 5CREENillI.~ Inid e og oro a ScreenCom "Howto Perform a Program Ana lysis".
16 endt f.
17
18 1f sf -x bet ween sz-x and s2- z. I. Comece no ABAP/ 4 Editor: Initi al Screen (Tela Inicial).
19 write : / sl - X, 'i s between', sz-x, ' and' , sz-e . 2. D igite 0 nome do programa a ser analisado no campo Pro gram.
20 else .
21 write: / s l - X, 'i s not bet ween' , sz-x, 'and' . sz-a . 3. Selecio ne 0 caminho de menu Ur iliries-c-Program An alysis. A tela
22 end1f. Conversions: xxx:o: sera exibida.
23 4. Pressione 0 borao Conversions . A tela Conversions : x;cca: sera
24 1f sl • s2. · compa rando st rings de campo , byte per byte
exibid a. T odas as convers6es sao resu midas nessa tela. A primeira
25 write: / 'sl • s2' .
26 els e. coiuna conrem tipos de campo co mparados.
27 write : / ' s l<> s2 ' . 5. De urn clique dupl o em qualquer linha para visualiza-la dentro do
28 endi f. programa.
29
30 i f 0 = ' ". "At en<;!o par a 0 que segue
31 write: / '0·
A primeiro coluno no telo Conversions: lOOOOC nlio mostra qual con-
32 else.
versec e executodo. Mostro simplesmente os tipos de dodos erwclvldcs
33 write: / '0 <> "
34 endif .
no converse o.
320 [ APR ENOA EM21 DJAS A BA P/ ~ O~ 10, INSTRIlI'" OECONTROlH OMUNI 321

Utilizando fl Sf; f 'Iltillzandc operodores de string de caroctere


Voce utiliza el seif para evitar 0 aninhamento de its. 0 aninhamento de its O s operadores especiais para as strings de caractere sao mostrados na Tabela
pede dificultar sua pr6pria leitura e manutencao . (Veja a Listagem 10.2.) 10.3.

ENTRADA.... Listagem 10.2 A utilizCl;ao de el setf e mais dc rc do que a utiJizac;ao Ta bela 10.3 O peradores especiais pore strings de ccroctere
,. de its oninhodos Ope~.. Sig nifl(o V. ..dodelro Ha d lsti "iCJo entre Os "pa~os e m
q ua nd o mahi.culas • branco finol.
1 repo rt ztxl002. mi nUsculo.l sbo Ign Ot'o dos?
2 parameters: fl def ault 'A',
3 f2 default 'B' , vI CO v2 Co nl6m se rneree V1 for com posto Sim Nco
4 f3 defau lt 'c. sc mene de
I ce recte-es em '12
6 if fl • f 2. write: / n. ',, ' f2 . '1 1 CN '1 2 not '11 CO '12 v1 pod, cooter 5im Noo
7 els e1f fl • f3 . write: / n , '. ' rs. coracteres que
8 elseif f 2 .. f3 . write: / f 2, I ", ' f3 . ntic 'st60 em '12
9 else . " write : / 'all fields are different' .
I. end1f.
'1 1 CA '12 Cont em q uolq uef v1 pode ccore-
PIlle mlIOOs um
'm ",,0

11
ccrecee em '12
12 - es l1nhas 5-9 fazem 0 mesmo Que as li nhas 14· 26
13 '11 NA '12 not '11 CA '12 .,1 nlio pod. Sim Nco
14 if fl • f2 . conler nenhum

15 write : / fl . ' . ' f 2. torodere em '12


16 else .
17 if n · f3 .
'11 CS '12 Contem stril'lg ... 1 pod. tonI .. 0
string de ee reeere
",,0
'm
18 write: / fl, ' .', B . ~ ,2

19 else. '11 NS '12 not '11 CS '12 ...1 n60 pode NOo Sim
20 if f2 .. f3 . co ni.. 0 string
21 write: / f2 . ''' ' , f3 . de corcceere
22 else . em '12
23 wri t e : / 'all fi elds are diff e rent ' .
24 endif . '11 CP '12 Cont6m podriio v1 pede center NOo Sim
o pad rtlo em '12
25 endt f.
26 endif. '11 NP '12 not '11 CP '12 ...1 ntio ped e NOo Sim
co nter 0 padrOo
em Y2
o c6digo na Lisragem 10.2 produz esta saida:

siiDI ~
all f iel d$ are different
Es ses operadores podem ser utilizado s em qualquer expressao de co m-
al l fields are different
para~ao. Os operadores CS, NS, CP e NP ignoram os espaCiOs em branco finais e
nio disringuem maiusculas de minasculas.
INitISE ~ • Se fl = f2 , a linha 6 sera verdadeira. Embora voce p os sa utilizar variaveis, co ns tantes ou [iterais com ope ra-
• Se f1 = f3 , a linh a 7 sera verdadeira. dares relacionais para as strin gs de caractere, a Listagem 10.3 utilizara apenas
• Se f2 = f3, a linh a 8 sera verdadeira, literais para umaexemplificacao mais clara . Ale m disso, para mais clareza, as
ins tru coes i f, aqui apresen tadas , ocuparn uma unica linha cads.
• Se nenhuma das ant erior es for verdadeira, a linha 9 sera verdadeira.
• As linhas de 14 a 26 fazem 0 mesmo que as linhas de 6 a 10. Elas for am
incluidas, de for ma que vo ce p ossa ver as dua s recnicas, lade a lado.

--~---- J
322 I APREHDA EM 21 OIAS ABAP /4 DIA 1000Sl1U\OB DECDNTlOLl COMUNS I 323

fHIRADA~ Lislagem 10.3 Um pregreme d••x.mple .mpregende co, CN , CA • NA • A linha 18 e falsa porque I ABCD' nao contem nenh um dos caracteres .
'XVI' .
1 report ztx IDD3 .
Z .. ope r ador: co • na e equivalente a not vI co v2.Portanro, as linhas 22 e 24 sao a negaljao
3 wri te / " ' AABS" c o " AB " ' . Ic gica das linh as 16 e 18.
4 if ' AABS' c o 'AS'. write 'True '. e lse. write ' Fa ls e ' . end 1f .
Ret omando a Tabela 10.3, os operadores CP (conrem padrao) e NP (ne-
5 write / " 'ABCD" co "ABC"' .
nhum padrao) executam uma pesquisa de string que permire caracteres com
6 i t 'ABCO ' co 'ASC' . write ' Tru e'. else . write ' Fa lse ' . e nd1f. cor respondencia de padrao. A expressao vl CP v2 sera verdadeira, quan do vl
7 contiver uma String que corresponds com 0 padrao em ,,2. A expressao vl NP
B .. ope r ado r: e n v2 sera verdadeira, quando ,,1 nao contiver urna string que corresponda com 0
9 write / " ' AA BS" en "AB" ' . padrao em ,,2. E equivalente 3: not vI cp vz. Os caracteres com correspondencia
10 if ' AABB' en ' AB' . write 'True' . e lse . write ' Fals e' . e ndif.
de padrao permitidos em v2 sao fornecidos na Tab ela lOA.
11 write / "'ABCD" en " ABC" '.
12 it ' ABCD' en 'ABC' . wri t e ' Tr ue ' . else . write ' False '. e ndi f.
13 Tabela 10.4 Op. roder.s CP. NP
14 .. ope r ado r :
15 write / "' AXCZ" ca " " AB''' .
Caradere Utllizado pa ra
16 if 'AXCZ' ca ' AB' • wr i t e 'T rue' . else . wri t e 'F als e ' . end i f. • Pode co rrespo nder qua lq uer seq uencia de cc rocteres.
17 write I " 'ABCO' , ca "XYZ ' " .
+ Pode co rresponder um cntcc caractere .
18 if ' ABCD' ce 'XYZ' . write 'True ' • else . write ' Fa lse ' . end ; f .
19 # Pode interprete r 0 pr6ximo ccroctere, llterclmente .
20 .. ope r a do r : na
21 write / " ' AXCl " " ABC' ''.
22 if ' AXCZ' na 'ABC'. " write ' Tru e ' . else . write ' Fals e' . end if .
# e 0 caracrere de escape. U rn unico caract ere seguinte sera interprerado
23 write I " ' ABCO" na " XYZ' , , . de forma exata. Urn significado especial, se exisrir, sera perdido. Voce tambem
24 if 'ABCD' 'XYI' . write 'True ' . else . wri t e ' Fal s e' . end; f. podera utilizar ' -para fazer uma pesquisa com distincdo entre maiiisculas e
" minusc ulas ou para pro curar os caracter es ", + ou I. A Tabela 10.5 mostra
exemplos de como voce poderf utilizar esses caracteres. 0 caractere de escape
o c6digo na Listagem 10.3 produz esra saida: sera necessario quand o voce quiser executar uma pesquisa com disnncao entre
SAiDA ~
' AA BB' co 'AB' Tr ue maiiisculas e mimisculas utilizand o C5, N5, CP ou HP. Voce pod eci tambem
'ABCD' co ' ABC' Fa ls e
' AA BS 'en 'AB' False
precisar do caractere de escape, se quiser executar uma pesquisa de padrao (CP
' ABCD' en ' ABC ' True ou NP) para uma string contendo ", + ou #.
' AXCl ' ea ' AB ' True
' ASeD' ca ' XYI ' False Tabela 10.5 Utilizondo corccteres
' AXCI ' na ' ABC' False
'ABCD' ne 'XYI ' True Instrul!ioo Ve rd a deira q ua ndo

AHALISE~ • co e 0 operado r que contern exclusivamem e. A linha 4 e verdadeira vl CP ' A+C' vl pode conter "a" na primeira posic;ao e "c" na tercelrc. Os dots
cc rocteres podem ester em letrc mcic sculc ou em letro minuscule .
porque 'AABB' contem apenas caracteres de ' AB'.
O vclqver ca ractere pod e a pa recer no seg unda posic;oo.
• A linha 6 efalsa porque ' ABCD' contem urn D, que DaOesta em ' ABC' . ,,1 CP '* Ab*' A string -ab- ped e occ rrer e m qua lquer lugar dentro de "1. Os dois
• As linhas 10 e 12 sao 0 oposto das linhas 4 e 6 porque cn e 0 mesmo ca raderes pode m este r em letra rnciu sculc o u em letro mlnusculo .
que not ,,1 co v2. Portanro, os resultados sao invertidos. A linha 10 e ,,1 CP ' *I Alb*' 111. pode conter uma letra A motusculc seguida por vmo letrc b
falsa e linha 12 e verdadeira. minuscule.
vl CP ' *" .' v1 pod e conter urn ,.
• ce e 0 operador que esd. comido e a linha 16 sera verdadeira se 'AXCZ '
contiver quaisquer caracteres de 'AB I • t verdadeira po rque contem A.

E
324 APRENDA EM 21 DIAS ASAP/. DIA 'UNSTRU\OES 0, CDNTROlE COMUNS 325

15 if 'ABCD' en ' ABC' . write 'True'. else. write ' Fal se '. endif .
A utilizacao desses ope rad ores sempre configu ra a variavel de sistema 16 write: 'sy-fdpos"' . sy-fdpos.
sy-fd pos. Se 0 resultado cia comparacfo for verdadeiro, sy-fdpcs ira center 0 17
desloca menro com base em zero ciap rimeira correspondencia ou car actere sem 18 * operador: ea
correspondencia, C aso contrdrio, sy-fd pos ira canter 0 comprimento de vj. 0 . 19 write / "'AXCZ" ce " AB" '.
valor atribuido a sy- fdpos p or cada ope rado r sera descrito na Tabela 10.6. 20 if 'AXCZ' ce ' AB' . write 'True'. else. write 'False' . endif .
21 write: "sy-f dpcs»", sy-tepcs .
Depois de uma com paracao, sy- f dpos ira comer urn deslocamenro do
22
primeiro caractere au 0 compriment o de v i. Nesta tabe la, " 1st char(vl)" 23 write / "'ABCD" ca "XYZ"'.
significa"o deslocamento do primeiro caractere de (string ou pa drao) vl ". 24 if 'ABCD' ea ' XYZ' . write 'True'. else. write 'False'. endif .
Entao, por exemp lo, onde esra " 1st char(v l) in v2", significa "0 deslocamento 25 write: 'sy-fdposz' . sy-fdpos .
com base em zero do pri meiro caractere de vi, que esta rambem em v2n • 26
Length(v l) significa "a comp rime nto de vl". Observe que somente a primeira 27
28 * operador: na
ca lun a contem as insrrucoes do ABAP/4.
29 write / " 'AXCZ" na " ABC' " •
30 if 'AXCI' na 'ABC' , write ' Tr ue ' . else . write ' Fal se'. endif .
Tab ela 10. 6 Valor atribuida a sy-fdpos par coda operodor Jl write : 'sy-fdpos·' . sy-tdpcs ,
32
Compa rafjoo if TRUE sy-fdpos • if FALSE sy-fdpos : 33 write / "'ABCD" ne " XYZ' " •
vi CO v2 length (v1) 1"chor (vi) not in v2 34 if 'ABCO' na 'XYI'. write ' Tr ue ' . else. write ' Fal se'. endif .
35 write: "sy-fdpos>", sy-fdpos.
vi CN v2 1"chor (vi) in v2 length (v1)
vi CA vz lslchor (vi) in v2 length (v1)
vi NA v2 length (v11 P'chcr (vi ) in v2 o c6digo na Listagern lOA produz esta safda:
vi CS v2 P'c hcr (v2) in vi length (v1) 'MBB' co 'AB' True sy-rdpcs- 4
vi NS vz length (v1) T'chcr (vi) in v2 ' ABCD' eo 'ABC'. Fal se sy-fdpos - 3
'MBB' en 'AB' False sy-fdpos" 4
vi CP v2 1"chcr (v2) in vi length (v1)
'ABCD' en 'ABC' True sy-fdpos= 3
'AXCl ' ea ' AB' True sy-fdpo s" 0
'ABCD ' ce ' XYZ' False sy~fdpos= 4
A Listagem I DA esemelhante a Listagem 10.3, mas algum as linhas for am 'AXCl' na ' ABC' False sy-fdpo sz 0
adicionadas para exibir 0 valor de sy-fdpos depois de cada comparaclo. 'ABCD' na ' XYZ' True sy-fdpos= 4

ENTRADA~ Lista gem 10.4 Utilizando sy-fd pos para ver a deslocamento do primeiro • A linha 4, urna comparacac co, e verdadeira. Portanto, sy- fdpos con-
cc roctere correspondente au do coroctere sem correspondenclc INillS~ ~ tern 4, 0 comprimento do primeiro operanda-.

1 report ztxl004 .
• A linh a 7, tambem uma comparacio co, e falsa por que vi contem
2 * cperacor r co valores que nac existem em v2. Sy-fdpos contem 3, 0 deslocament o
3 write / "'MBB " co "AB'" • com base em zero do pri meiro caractere em vi que nao esta em v2.
4 if 'AABB' co 'AB'. write 'True '. else . write 'False '. endt t . • Embora as linhas 12 e 15 sejam as opostas 16gicas das linh as 4 e 7, os
5 write: ' sy- f dpos=' , sy-fdpos.
valores de sy-fdpos nao serao alterados.
6 write / " 'ABCD" eo " ABC'" •
7 if 'ABCO' eo 'ABC' . write 'True' . else. write ' Fal se '. endif. • A linha 20, uma comparacao ca, e verdadeira porque vl contem urn
8 write: "sy-fdpus«", sy-fdpos. caractere de v2. Sy-fdpos contem 0: 0 deslocamento com base em zero
9 do primeiro caractere em vi que tambem esta em v2.
10 * opera dor: en
11 write / "'MBB" en "AB' ''. • Na linha 24, vi nao conte m nen hum dos caracteres em vz, portanro
12 if 'AABB' en 'AB '. write ' Tr ue ' . else. write 'False' . endt f , sy-fdpos contern 4: 0 comprimento de vi .
13 write: "sy-fdpos>", sy-fdpcs .
14 write / " 'ABCD" en "ABC'" •
• A linha 30 e a nega~ao 16gica de urn teste de ca. ' AXCZ' contern urn
valor de 'ABC' e, portanto, urn teste de ca seria verd adeiro. Negar esse

1
326 APRENDA EM 21 DIAl ABAP/< DIA 10, INITRU(OEI DE CO""OLE COMUNS 327

resultado dard falso. Sy-fdpos e configura da para 0 deslocamento com EMTRADA~ Lista gem 10.5 A j nstru~a o case exe cuta uma serie de compara ~6es
base em zero do primeiro caractere em ' Axez qu e tambem est a em
I
1 report ztxlO05.
' ABC '. 2 paramet ers fl type i default 2.
• A linha 34 e, novamente, uma negacao 16gica de urn teste de ca. ABeD I I 3
nao con tern urn valor de ' XVZ' e. po rtanto , urn teste de ca seria false. 4 case fl.
wri te / ' fl .. 1'.
Negar esse resultado dara verd adeiro. Sy- f dpos e configura da par a 0 5 when 1.
6 when 2. write I ' fl '" 2' .
comprimento de ABeD ' .I
when 3. write I 'f! " 3' .
7
8 when others . write / 'fl is not 1. 2. or 3' .
Utilizando a instruc;a o case 9 endcas e .
10
A instrucao case executa uma serie de cornparacoes. 11 * 0 c6digo a seautr e equtvalente a instrlll;ao case aci ma
12 if fl "'l. write/ 'fl" 1' .
Sintoxe do instrU!;fio case 13 elseif fl .. 2. write / 'fl • 2'.
14 elseif fl ,,3. write / 'fl z 3'.
~ A seguir, veja a sintaxe da insrrucao cas e. 15 else. writ e / 'fl i s not 1, 2. or 3' .
Z case vr ,
when ,,2 [ or vn •• • ].
16 end; f .

S
m
when 1'3 [ or vn •• . ] . a codigo na Listagem 10.5 pr oduz esta satda:

~ SAioA~
[ when ot hers. fl = 2
--- I fl .. 2
endcase.
onde: • A linha 2 defi ne fl como pardme tro de urn unic o caractere com urn
ANiuSE ~
0
• vl OU '12 podem seruma variavel, literal, consrante ou string de campo. valor padrac 2.
• --- representa qualquer mimerc de linhas de c6digo. Ate mes mo zero • N a linha 4, comeca a inscrucao case e fl ecomparado com 1, 2 e 3, ern
linhas sao permitidas. seque nci a.
• A linha 6 faz a corr espo ndencia e executa a instrucao wr -t te ime-
diatam ente depois dela. As insrrucoes when rema nes cen tes sao igno-
a s seguintes pontos se aplicam :
radas.
• Sornen te as instrucoes apes a prirneira corresponden cia wh en serso
• A proxima linha executada e a linha 12.
executadas.
• when others corre spondera se nenhurna when pre ced ente corr espo n-
der.
Utiliza ndo a instruc;a o ex; t
• Se when ot he rs nao estive r codificada e nenhuma when cor resp on der,
A instrucao ex; t impe de que processamentos posteriores ocorram.
10
o processamento continuard com a primeira instrucao apes endcase.
Sintoxe do instru\joo ex; t
• As expr essoes nao sao permiti das.
• A s Str ings de campo sao tra tadas como sendo variaveis do tipo c.
e mu ito e qu e em cada
-
CA
Z
exit.

Case semelhante a if/ els eif. A un ica diferenca


t f /el s ei f, voce pode esp ecificar uma expressgo complexa. C om case, voce
pod e especi ficar somen te urn anico valor a ser comparado e os valores sao
Sm
sempre comparados quanto a igualdade. Urn exemp lo sera. for necido na Lis-
ta gem 10.5. . ~
...
328 I APRE NDA EM 21 DIAS ABA PI4
OIA10: INSTRU~6B DE CONTIl:OLE COMUNS 329

A Listagem 10.6 mostra urn programs de exempl o utilizando exi t.


• . . . representa qualque r numero de claus ulas varying completas.

EHTRAOI~ Listagem 10.6 Utilizondo ex; t para interromper a co ntlnuccco do • - - - representa qu alquer numero de lin has de ccdigo.
processomenfo

1 report ztx~006 . Os seguintes po nt os se aplicam:


2 write: / ' Hi' .
3 exit . • Os loops do podern ser aninhados por urn numero ilimitad o de vezes.
4 write: / ' There' . • ext t imp ede a processamento de loop posterior e sai imediatamente do loop
atua]. Nao tennina 0 programa quando dentro de urn loop do. 0 proces -
samento contin uaci na pr6xima instruclo execuctvel depois de enddo.
o c6 digo na Listagem 10.6 produz esta saida:

Sliol ~ Hi • Voce pode criar urn lo op infin it o p ela co dificacao de do sem qualquer
adiljao. Nes sa situacao, utilize exit dentro do lo op para terminar a
processamento de lo op .
IHiuSE ~ Exit impede 0 processamento posterior, sendo ossim, exit no linho 3 impede
que a linha 4 seja executado. • Modificar 0 valo r de vl dentro do lo op nao afetard 0 pr o cessam ento
de loop.
. ex; t ~ode ser ut ilizada em varies situacoes. Essa ins trucao p ode ter
diverso~ efeiros, dependendo do loc al onde aparece no codigc. Entretanro, ela Dentro do lo op, sy- t ndex contera a numero de iteracao atual . Por
~empre_lI~pede processamentos pos teriores. Dentro de estruturas de loop, tal exemplo, a primeira vez at raves do lo op , sy- in dex sera 1. A segunda vez,
instrucao rgno ra 0 proces samento de lo op introduzido pelas instrucoes com o sy-i ndex sera 2 e assim por dianee. Depoi s de enddo, sy- i ndex ira co nte r 0 valor
, ~op, se l ec t , do e wh'i I e. Dentro de sub -retinas, ignora as su b-retin as introdu- que tinha an tes de entrar co m 0 lo op. Com lo ops do aninhados , sy- i ndex ira
zida s por FORM. Seus efeiros em outras situacoes. serao com plet ame nre conter 0 mimero de iteracio do lo op em que e util izad o (veja a Listagem 10.7) .
explorados a medida que surgirem.
EHTRADA~ L1sta g e m 10.7- Sy- in dex co nte m a nume ro de iterac;oo otuo l
Utilizando a instru~ao do 1 report ztxl007 .
A insrrucao do corresponde a urn me canis m o de loop basico. 2 ' sy-t ndex = 99.
3 writ e: / ' before l oop, sy-t ndex =' , sy- t ndex, / "
4 do 5 t imes.
Sintoxe do instruljOo do 5 wrt te sy-t ndex.
!! A seguir, veja a sint axe da instru cao do. 6 enddo.
7 write: / 'after loop, sv- tndex . ', sy- f noex, / "
Z do I vI ti mes] I vary ing 11 f rom s-cl next s-c2 ( varying 12 from s2.cl 8
;: next s2-c2 . .. ] ].
9 do 4 times.
~ lexft .I 10 wr i t e: / 'out er loop, sv-tnoex =' , sy-tndex ,
11 do 3 times.
~ enddo. 12 write : / ' in ner loop, sy-in dex - ", sy -f ndex.
13 enddo.
onde: 14 endoc,
• vIe um a variave j. literal a u const ante. 15
16 write : / " . "neve f t nhe
• s e uma string de cam po com as componen tes c1 e c2. 17 do 10 times.
18 write sy - f ndex.
• 11 ~ uma varidvel. O s componentes de s podem ser convertidos para 19 if sy- index = 3.
o tipO de dado e comprim en t o de 11. 20 ex; t.
21 endi f.
22 enddo.
330 ,HREN D'" EM 21 OIlS l U PI4 D~ Ie INmll\OEI DE CONTROl! CDMUNI 331

6 endt f.
o codigo na Listagem 10.7 produz esta saida: 7 enddo.

IliDI ~
before l oop. sy-index .. 99

~,
1 z 3
after loop, sy- i ndex " 99 Se esse programa for executado , ele ira realizar urn loop infinite e a sessac
. oute r l oop, sy - t ndex " 1 sera sincronizada. 0 termino da tarefa SAPGUI ou at e mesmo a reinicializacao
inn er
inner
l oop,
loop,
sy- i ndex =
sy-tndex = ,
1 nao interrompera 0 programa, ji que ele e executado em urn processo de
trabalbo no servidor do aplicativc e nac em seu PC. Se voce reinicializar e
inne r
outer
l oop,
loop,
sy- t ndex =
sy-index ;: ,
3
eferuar logon novamente, vera que (se estivesse no editor ao reinicializar} nao
fn ner l oop. sy- t ndex ..
inner l oop, sy-t ndex = ,
1 conseguira nem ao menos editar ta l pr ograma. Sua sessfc de logon ainda estard
ativa no servidor do aplicativo e ainda tera. 0 bloqueio em seu c6digo [o nte.
inne r loop . sy-i ndex .. 3
outer loop , sv- tnoex = 3 Depois de aproximadamente cinco au dez minutos, sua sessac de logon ira
inne r l oop,
inner l oop.
sy-tncex ..
sy- tn dex • ,
1 expirar e, enrao, voce conseguird editar seu c6digo-fonte novamente. Entre-
tanto, 0 programa podera ainda estar sendo executado no processo de trabalho,
in ner l oop. sy-i ndex .. 3
out er l oop, sy-t acex .. 4 o que diminui a velocidade do siste ma. Finalmente, seu program a consumira a
i nner loop, sy-tndex " 1 capacidade maxima de CPU permitida em sua configurscac e 0 processo de
i nner loop . sy-t ndex " z trabalho reiniciara por si s6 .
i nner l oop. sy-tneex .. 3
1 z 3 Para terminar urn loop sem fim, voce devers ter pelo me nos duas sess6es
-,
abertas e que tenham sido criadas atraves do caminho de menu Sysrem- c-C re-
A s alteracoes [eitas 41.0 valor de sy-t ndex nao afetam 0 controle de loop.
Por exem plo, se voce codificar do 10 times e durante a primeira passagem do
loop voce configurar 0 valor de sy-f ndex como 11, ele mantera esse valor ate
que a instrucao enddo seja execut ada. N esse ponte, 0 valor sera configu rado
n ovam ente como 1 e, em seguida, incre mentadc como 2 e 0 loop co ntinuara 0
processa me nto como se voce nac 0 tivesse alterado em absol ute .
, ate Session. Voce devers inicia-las antes de executar seu programa. Se voce
estiver em urn loop infinite e nao tiver uma outra sess ao em execucao se ra tarde
dema is. As sess6es criadas ao efetuar novamente urn logon nao funcionarao.

SCRHNCAM ~ lnicie ogora a ScreenCom " How to Termi nate an Endless loo p".

Para terminar urn loop sem fim :

Em rc ros oc oslees, a nec essldcde de "mete r tempo" surg ir6 em um


1. Quando efetuar logon pela primeira vez, selecion e 0 caminho de
program a. Voce no o dever6 utilizar urn loop vcnc par a recllzc r issei menu System-s-Create Session .
a CPU ser6 consu mida desnecessoriamente , se voce [izer isso. Em vez 2. Minimize sua nova sessao e a deixe no fundo ate precisar dela. Voce
dissc , voce dever6 chamar 0 m6dulo de fum; oo rzl_51eep . pede agoIil testar os programas com impunidade.
3. Agora execute urn prog rama que contenha urn loop sem fim, como
Term inando um loop sem f im ztxlooa. Voce vera uma arnpulheta quando seu ponteiro estiver sobre
Existir jo oc asioes em que urn programa em execucto tera urn loop inte r- a jan ela. Observe 0 num ero de sua sessao na barre de status na parte
minavel. A Listagem 10.8 mostra tal programa. inferior da janela.
4. Mantenha pressionada a TeclaAlt e pressione Tab vi rias vezes ate que
ENTRADA ~ Lista g e m 10.8 Urn loop sem tim poder6 ser frustrcnte se voce n60 o foco fique no leone R3 representando sua out ra sessao .
so vber interrompe-lo 5. Solte a tecla Alt.
I r eport thIOQ8.
2 do.
3
4
5
'Ilrite sy-teeex .
if sy-1ndeK .. O.
exit .
I 6. Digic e / 0 no campo Command na barra de [erram entas Standard.
7. Pressione a Tecla Enter. A caixa de diilogo Overview Of Sessions
aparecera. Ela contem uma lista de suas sessoe s, A esq uerda de cada
uma esta 0 numero assoc iado de sessao.
-~ -~ -- - --- -
--
334 I " RENDA EM 21 DIAl ABAP/4
DIA 10: INSTRU~OES DECDHTROLE COMutiS 335
7 cl typ e i val ue I,
12
8 c2 type i val ue 2,
13 write / "
9 c3 type i val ue 3,
14 do 6 times varyi ng fl from s-et next s-cz.
10 c4 ty pe i val ue 4.
15 if sy-index .. 6.
11 c5 t ype i valu e 5,
16 s -c6 .. 99.
12 c6 ty pe i valu e 6,
17 else.
13 end of s ,
18 fl=fl*l .
"
15 do 3 times veryt 119 fl from s-e t next s- ea
19
20
endif .
ass ign component sy-tndex of structure s t o <f:> . H< f> i ndfca agora
16 varyi ng f2 from s-ez next s-ea. 21 write <f>. Hum componente de s
17 write: / fl, f 2. 22 enddo.
18 add: fl TO tott ,
23
19 f2 to t ot2.
24 write / " .
20 enddo.
25 do 6 times varyi ng f l f rom s- et next s-cz .
21 wri t e: / ' - ~ - -- - - - -- -- - ---- ---- ' , 26 wrfte f1.
zz / toU , tctz. 27 enddo.

o c6digo na Listagem 10.10 produz esta saida: o c6digo na Lisragem 10.11 produz esta saida:
1 2
IAiDA~ SAiDA ~
3 • 1 2 3 4 5 99
5 6 2 4 6 8 10 6

AHillSE~
12
• Na linh a 14, os valores sao lidos dos componentes da string de campo
s para fl-, urn por vez.
AHilll~ ~ fl recebe quolque r outro componente de s comeccndc com 5-c 1 e f2 recebe
qvclq uer o utre compo nente ccmeccndo com s-cz. • A lin ha 18 modifica o valor de cada fl, multiplicando esse valor por 2.
o e
ultimo valor de f1 nao modificado. Em vez disso, ao componente
Modificando valores denim de do . .. varyi ng/e nddo de envio e atribuido 0 valor 99.

Vo ce pode modificar 0 valor de 11 ou 5 dentro do loop do . .. vary ; ng/ enddo. • A linha 20 atrib ui urn com po n en re de s ac sfmbolo de campo <f>. A
Q uando a insrrucao enddo e executada, 0 valor atual de 11 e retornado ao primeira vez atraves do loop, 0 componente 1 (cl) e atribuldo a <f>.
component» do qual oeio, independentemente se foi modificado ou nso. Na Na segunda vez, 0 componente 2 (c2) e atribuido e assim por diante.
Listagem 10.11, 0 relat orio ztxlO l 1 iiusrra essa funci onalidade. A linha 21 escreve 0 con teudo do componente que enviou seu valor
para f l. Na listagem de saida, voce pode ver 0 conteudo de cada
fNTRADA~ L1stagem 10.11 0 valor otocl de fl e escrito novamente no componente de 5 antes que enddo seja executada.
componente de envio quando enddo e executada
• Quando a instrucao enddo e executada na linha 22, 0 conteudo de fl
1 rep ort zt xlOl l. substitui 0 con teudo do componente de envio.
2 data : fl ty pe f ,
3 begin of s ,
• Novamente, variar atraves do loop (linhas de 25 a 27) exibira 0 novo 1
4 cl typ e t valu e I,
.conteudo de S . Isso mostra que 0 valor de f1 den tro do loop sobres-
5 cl typ e t val ue 2, · creve sempre 0 conteudo 'd o componente de envio.
6 c3 typ e t value 3. Uma instrucao ex; t dentro do loop ndo impedira qu e 0 conreudo modi-
7 c4 typ e i val ue 4,
ficado de f1 seja escrito de volt a para 0 campo de envio. A iinica maneira de
8 cS typ e i val ue 5,
9 c6 type; value 6,
deixar 0 loop sem 0 conted do de fl. sobrescrevend o 0 campo de envio, e
10 end of s . executando uma instrucao stop ou um a in srru cac de mensagem de erro dentro
11 fi e l d- symbols <f>. do loop (ambas abrangidas em capitulos posreriores) .
336 I APRENDA EM 21 DIAS AlAP/4 D~ lD,lN"'"IIiB DECDNTROlE (D.UNS 337

ENTlADA ~ Listagem 10.12 Urn exemplo do usa do instru<;6 0 whi 1e


Utiliza ndo a inst ruc;ci o whi 1e
A ins truc i c whi 1e corre sponde a urn mecanisme de loop semelhante ao do. 1 r eport ztx l 012.
2 data : 1, _ "caract eres tnt ct et s
3 r, "cerect er es f 1na1s
Sintoxe do instruc;ao whi1e 4 done. "f l ag de ccnctu r dc
en A seguir, veja a sintaxe da insrru cao whi 1e. 5 par amet er s p(25} default' Vendor Humber ' .
Z whi 1e exp [ vary f1 f rom s-c1 next s- et [ vary i 2 fro m s2-cl next s2-cZ .. • ]
6 while done s ' , "a expressac e aval 1ada primei r o

S
m
[ extt ,

endwhl 1e.
l
7
8
vary 1 from p+O next p+l
vary t f rom p+24 next p+23.
9 1 f l · " andt ..
10 l a t := ' -' .
"em segui da . as atr ibu1~ 6es vary sao executadas

~ onde: 11 e lse .
12 done· ' X' .
• exp euma expressso logica. 13 endif .
14 endwhil e .
• s euma String de campo co m os componentes c1 e c2. 15 write: / p,
• fl e urna varidvel. Os componentes de s podem ser con vert idos para
o tipo de dado e comprimento de fl .
o c6digo na Listagem 10.12 pr oduz esta safda.
• . . . represent s qualquer numero de clausulas vary compleras.
• -- - repre sent s qualquer numero de linhas de c6digo. sliol ~ p-- - Vendor Number

AHiuSE ~ • As linh as 2 e 3 definem duas variaveis com urn de ice caractere 1 e t.


A linha 3 defin e urn flag para indicar quando processamento e con-
a s seguint es ponte s se aplicam:
duido.
• Os loops whi 1e podem ser aninh ados por um mimero infinite de vezes
e tambem podem ser aninh ados dent ro de qualquer ourro tipo de loop. • A linha 5 define p como caractere 25 corn urn valor padrao.
• exi t impede 0 processamento de loop posterior e sai imediatamente • N a linha 6, a expressdo na instrucl o wh i 1e eavaliada ern primeiro lugar.
do loop atual. 0 processamento continua na pr6xima instrucao exe- Retoma verdadeiro, pela prirneira vez, atraves do loop. As atribuicoes
caravel depo is de endwhi 1e. nas linhas 7 e 8 sao ent jc executadas. A linha 7 .atribui 0 primeiro
caractere de p para 1 e a linh a 8 atribui 0 ulti mo caractere para t .
• D entro do loop, sy-t ndex ira center 0 ndmero de itera~ao atual.
D epois de endwh i 1e, sy-i ndex ira center 0 valor que tinha antes de • Se 1 e t estiverem ambos em bran co, a linh a 10 atr ibuira urn trace aos
entra r com 0 loop. Com loops wh i 1e aninhados, sy- t ndex ira center 0 do is. Se nao estiverem, a linha 12 atribuira urn ' X' ao flag done.
numero de iterar;ao do loop em que e utilizado. • N a linha 14, endwhile copia os valcres de 1 e t de volta ao p.
• endwh i 1e sempre copia 0 valor de 11 de volta para 0 cornp one nte de • 0 loop whi le sera novamente repetido a part ir da linha 6, desde que 0
envro. flag done esreja em branco .
• Em urna inStrUCI3.0 wh i 1e contendo urna expresssc logica e uma adicao
varyi ng, a expressao logica e avaliada primeiro. Utilizando a instruc;60 conti nue
while e muito semelhante a do. Aqui, ela e utilizada para colocar urn A instruc ao cant 1nue ecodificada dentr o de urn loop. Ela atua como uma goto,
num ero igual de traces em ambos os lados de uma string. passando 0 controle imediatamente a instrucao de terminacao do loop e
cc mecando uma nova passagem de loop. Na verdade, faz com que as insrrucoes
abaixo dela, den tr o do loop, sejam ignoradas e um a nova passagem de loop
comece. 0 efeito da insrru cao continue e mostrado na Figura 10.1.
338 I APREHDA EM 21 D'A5 ASAP" DIA 10: INSTRlIl;05 DE (QIlTROLE COMUNS 339

(Igu ra 1 0 1 do 10 times.' 13 endtf ,


if sy· index between 3 and 8.' enddo.
A instro~Oo cont inue
pula pore 0 finol do
continua,' - _
endif.,
"
loop, ignorondo todas write sy-index.'
as jn~6es depois enddo. o c6digo na Lisragem 10.13 produz esta safda:
delo pore 0 possogem
do loop cwa l. dupl1cate: found at posit ion 2
IAiDA ~ duplicate \ found at position 4
o c6di go na Figura 10.1 produz esta saida: : duplicate \ found at posi t ion 5
duplicate \ found at postttcn 10
IAiDA ~ 1 2 9 10

Sinta xe do instrUl;60 cont i nue AHiuSE~ • A linha 2 define urn pardmetro de entrada p com 20 caracteres de
comprime nto e atribui a ele urn valo r padrao.
en A seguir, veja a sintaxe ciainsrrucfo conti nue. Pod e ser utilizada dentro de um a
Z do, while, select ou l oop. (A instruciio l oop sera abrangida n o pr6ximo • A linha 6 inicia urn loop. Na prim eira passagem do loop, 0 primeiro
-t capirulo.) caractere de p e at ribuldo ace 0 caractere depois dele eatribuid o a n.
~ [do/ whil e/ select/l oop] • A linha 8 sera verdadeira quan do c contiver urn caracrere diferenre de
m : ou I.
conti nue .
~ [enddo/ endwh11eI endse1ect j end' oop)
• A linha 9 pula diretamente para a linha 14, faz.endo com que 0 loop
seja repetid c utilizando 0 proximo caractere.
c ode: • Se a linha 8 nao for verdadeira, a linha 11 sera executada e sera
• ._ ~ representa qualq uer num ero de linhas de c6digo. verdadeira se 0 pr6ximo caract ere for 0 mesmo que 0 caracte re atu al.
• A enddo co pia os valores de c e n de volta para p e 0 loop erep etido 19
vezes de urna s6 vez.
Os seguinres po ntos se aplicam:
• cont i nue pode somente ser codificada dentro de urn loop .
Utilizando a instru~a o check
• cant i nue nao tern adicoes. A instrucac chec k e codificada dentro de urn loop. Ela pode atuar de fo rma
A Lisragem 10.13 esemelhante a uma instrucao goto. Ela executa urn salto mu ito semelhante a cont inue, passando 0 con trole imediat amen te ains rrucio
para 0 final do loop arual. Est e programa remo ve caracteres duplicados, como de terminaqao do loop e desviando das in strucoes intermediaries. Diferente de
dois-pontos e barns invertidas, de um a string de entrada. cont i nue, ela aceita um a expre ssjio l6gica . Se a expressao for verdadeira , nao
fara nada. Se for falsa, pularf para 0 final do loop. 0 efeito da instru cao cheek
ENTiADA ~ Listagem 10 .13 Urn exemplo do uso do instruc;oo continu e emostrado na F igura 10.2.
1 report ztxlD13. Fi g u r a 10 2 do 10 times.
2 peree et ers p(2D) def ault 'c:: \ \ \ xxx\ \ yyy' .
A instru¢ o check e check not sY_,-index between 3 and 8.
3 data : c, -cerect ere atual
umoin~60 write sy-index. .
4 n. · proxl mo ceractere ... -;.""
continue enddo. .~
S condition al. f lo
6 do 19 ttees varying c from p+(l next p+l soltor6 poro 0 final do
7 varyin g n from p+l next p+2 . loop se a expressoo
8 i f c na ' :\ '. l6gica lor Io/so.
9 cont i nue.
10 end1f. o c6d igo na Figur a 10.2 produz a mesma safda daqu ela apr esenr ada na
11 if c • n. Figura 10.1:
11 wr i te : /'duplicat e ' , c , 'found', ' at position'. sv-tndex .
340 I ' PREND' EM21 DIAl AB APf ~ OIA 10: tNSTR~6ES DE CONTROLE COMUNS I 341

SAioA~
1 2 9 10
A ut iljzo~60 de check ou continue dentro de um loop select pode ser
multo inefkiente . Voce deverc , sempre que possfvel, modlflccr 0
c16usulo where a fim de selecionar menos registros, em vez disso.
Sintaxe do instruc,;Oo check

-
III
Z
A se guir, veja a sintaxe cia insrru cao check. Pode ser util izad a dentro de um a
do, wh ile, sel ect au loop. (A ins rru cso loop sera abrangida no proximo
cap ft ulo.}
Compara ndo as instru c;6es exit, cant i nue e
check .
S
m
[do/ whi 1el se1ect/l oop]

check exp o
Na Tabela 10.7, as insrru coes exit, cont i nue e check serao cornparadas.

T [enddo/endwhi l e/ endse1ectjendl oop]


Tabela 10.7 Comparando exi t , continue e chec k
Instru~ao Efel to
onde:
exit Sai do loop otuo l.
• exp euma expr essao Iogica.
contin ue Faz urn sclto incondicionol para a fino I do loop.
• representa qualquer num ero de linhas de c6digo.
check exp Soltero para 0 fina l do loop se exp forfaJsa.

N a Listagem 10.14, check se comporta ra como uma instruc ao conti nue


qu ando a expre ssao logics for falsa. Quando for verdad eira, na o fara nada . Especificac;6es sim ples de co m primento
e posi C;Cio da instruc;Cio wr i te
~NIRAOAllo.. L1stagem 10.14 A listag e m 10.3 la i navamente cadili cad a a lim de
A instruclo wri t e pennite a especificacao de urn eo rnprirnento e posicio de
,.. utili zer instrucdo check em vez de contin ue
saida.
1 re port zt xl014. Embora a ins trucao writ e permita muitas especificacoes complexes, as
2 par amet ers p(20) defa ult 'e ::\ \ \ xxx\ \ yyy' . especificacces regu lar es de comprimento e p osicao serao apresen tada s aqu i a
3 dat a: c, "ceract ere atua l firn de pe rm itir que voce eri e relatorios basicos nesse e no capitulo a seguir.
4 n, "pr6xi mo cer act ere
Urn tr atamen to det alh ado da insr ru cac write aparece ra posteriormente no
5
do 19 t i mes vary i ng c f rom p+O next p+l
Capitulo 14.
6
7 var yi ng n from p+l next p-z,
8 check c ca ':\ ". Sintoxe pa ra especificocoes sim ples de comprimento
9 i f c = n.
I. write : I 'du plicate '. c. ' f ound '. 'at positi on'. sy-tnoex .
e posic,;co no instruc,;co wri te
11
12
endt f.
enddo . -
en A seguir, veja a sint axe para espe cificacoes simples de comprimento e posicao
.
Z na mstrucao- wr-r.t e-.
1
o c6 digo na Listagem 10.14 produz esta saida: S
m
write [IJ [P][ (L)] vI.

onde:

SAioA~
dupl cat e: fo und at pos i t i on 2
dupl cat e \ f ound at posit ion 4 T • vi e uma variavel, literal ou eonstante .
dupl cat e \ fo und at posi t ion 5 • P e urn num ero que in dica u ma po sicao na lin ha aru al de saida.
dupl cate \ fo und at position 10
• ie urn numero que indica 0 numerc de bytes aloc ado na Iisra para a
, lrrrr.r.. As li nhos de 8 a 10 no Lisiogem 10.13 foram substituidos pelo lin ho 8 no saida de vi .
ANALISE,. Lisiogem 10.14. 0 progromo trobolho exotomente do mesmo maneira.
342 ! 'm HO' EM 21 DIAS 'BAPH OIA10: INSTRUtOES DE CONTRCLE COMUNS 343

Os seguintes pontes se aplicam : 10 / 2(1) ' Hi' • ' There' •


11 / 2(3) ' Hi ' • ' There ' •
• / comeca uma nova linha, 12 ' Hi', 10(3) 'Ther e ' •
/2
• I, PeL devem ser codificados sem quaisquer espaco s intervenientes. 1J / fl. f 2.
14 / fl. 4 f2 .
A Tabela 10.8 mos tra as maneiras correta e inccrreta de codificar as 15 / (3) fl.
esp ecificacoes de comprimento e posi~a.o na instru~o wri t eo 16 / (2) f l.

Ta b e la 1 0 .8 Moneiros co rreta e incorreta de codificcr as es peclflcocoes de


comp rime nto e posicco no instruC;ao wri t e o c6digo na Lista gem 10.15 prod uz est a saida:

. SAiDI ~
•• • •+• • • • 1••• •+ • • • • 2. • • •+ •• • • 3. . . . + •• •• 4
Correta IncorTeta Hi There
write /10 (2) ' Hi'. write / 10( 2) ' Hi ' . HiThere
HThere
write / 10 (2) ' Hi'. There
write / 10 e2} ' Hi ' . Hi There
H There
write / 10( 2) ' Hi' .
Hi There
write / 10( 2 ) ' Hi' . Hi The
write (2) ' H1'. 123 123-
123-
write ( 2 ) ' Hi I • write ' Hi' (2) . 123
write 10 ' Hi ' . ·3
write 10 'H1' . write ' Hi' 10.
INlllSE ~ • A linha 4 representa um a regua de modo que voce possa claram en te
ver as colunas na lista de saida.
Se voce deixor um espccc entre / e a especificocco de comprimenlo • A linha 5 escreve Hi comecando na posic;:ao 1 e There comecacdo na
ou pcslcco, 0 verlficcdcr de sintoxe poder6 outc mcticc mente corriqi-lo
posic;:ao 4~
para voce. Simplesmente pressione 0 bctec Correct no parte inferior
do [onelc de mensogem quando ere cpcrecer. • A Iinha 6 escreve Hi com ecand o na pcsicao 1 e There comecando na
posicao 3.
A Listagern 10. 15 ilustr a 0 usc das especificacoes simples de cornpri- • A Iinha 7 escreve Hi comecando na pcsicsc 1 e There comecando na
menta e posic;:ao na in st rucao wr ; te oMost ra tambern algumas das armadilhas. posic;:ao 2. There sobrescreve a ult im a posicio de Hi .
A linha 3 representa um a regua de modo que po ssa ver a s mimeros de coluna • A linha 8 escreve Hi comecando na posic;:ao 1 e Ther e cornecand o
na safda. tambem na posicsc 1. There so brescreve Hi completamente e voce na o
p o de nem ao menos diz er se Hi foi escrito na lista.
Ilrlt... Listagem 10.15 Ut ilizoc;oo des e.spec tftcoc oes simpl es de com prim ento
EHTRADA,. e pos ic;oo no instru c;oo wri te • A linha 9 escreve Hi com ecan do na p osic;:i o 2 e There depois de la. Wri t e
deixara urn espaljo entre os valores se voce nao especificar uma pcsicsc
1 re port ztxlOl5. de saida.
2 data : f1 type p val ue 123.
3 f 2 type p val ue - 123.
• A lin ha 10 escreve Hi ccmecando na posicjo 2 para urn comprim ent o
4 write : / ' . ... +.. .. 1•••• +.. .. 2.... +.. .. 3.... +. • • • 4· . de 1. Isso escreve so m ente 0 prim eiro caractere: H.
5 /1 'Hi '. 4 'There '. • A lin ha 11 escre ve Hi comecando na pcsicac 2 para urn co mprimento
6 /1 ' Hi'. 3 ' Ther e '.
de 3. Urn espaljo inre rmediaric vern depois, tomando da is e, em
7 /1 ' Hi' . 2 •There , •
seguid a, There.
8 /1 ' Hi' . 1 ' Ther e ' .
9 /2 'Hi ' . "r her e" , • A linha 12 escreve Hi comecando na pcsicao 2 e There na posicsc 10
para urn co mp rim ent o de 3, fazen do com que The aparec;:a na lista.
344 ! HRENDl EM 21 OilS lBlP/4 Oil 10: I NSTR~bES DE (OHTROlE COMUNS I 345

• A linh a 13 escreve as cam pos deci mais compactados f1 e fl , em • check exp sahara para 0 fin al do loop se exp for falsa. Quando exp for
sucess ao. verdadeira, check nao fara nada.
• A linba 14 tambem escreve f1 e f l. Dessa vez, fl e escrito comecando • Na insr rucac wri te, a posi c;ao e 0 comprimento podem ser ime-
na posj~ o 4. O s espacos iniciais que comegam na posicjo 4 scbres- diatament e esp ecificad os antes d o valor de saida . N enh um espaco
crevem 0 valor de fl, fazendo com qu e somente f l apa reca na safda. intervenie nce deve aparece r en tre eacla especificacio.
• A linha 15 escreve fl e aloca apenas tres byte s na lisra de safda para 0


valor. f1 aparece na lista cornecando na posicao 1; ele preenche co m-
pletamente 0 campo de safda .
A Iinha 16 escr eve f1 e alo ca apenas 2 bytes na lista de safda para 0
valor. a valor de fl n ao pode ser exibido em tres bytes, entao urn
asterisco (*) aparece na pr imeira coluna para ind icar 0 esto uro.
----:.. .-_----
IFa~a
Abro duos secees sempre que efetuor
logon, de modo que voce posso
termine r um loop infinite.
Nao utilize check ou continue dentro de
um loo p select para Hltrcr registros. Em vez
disso, utilize a d6usula where pora filtrc-los.
Utilize . . aryi ng para ler uma serie de Nao [eio op6s 0 final de uma voriovel ou
compos eqOidistantes a partir de uma string de compo corp a adir;Cio . . aryin g.
Resu m o string de campo. Excecces de proter;ooe comporto mento
• As instrucoes de comparacac sao i f e case. lmprevisfvel poclem cc orre r.

• case proporciona uma eapaeidade semelhan re a if/ elseif, mas cam-


para da is valores somente quanto a igualdade .
• As convers6es oco rrem ao com parar tipos diferentes de clados. A P&R
ferram en ta de ana lise d o pro gr am a acertari as eonvers6es sempre qu e
elas ocorre rem.
• Operad ore s especiais estao dispcnfveis para comparacces de String.
o Por que as op eracees de bit n ao sao muito urilizadas n o
A BAPi 41 0 que e utilizado em seu lu gar?
Utilize CP e NP para corresponder as strings co m os pad roes. Sy- f dpos
e configurado depois de cada com paracao.
• A s insrrucoes de loop sao do e whi1e.
o o us o de um a op eracao de bi t cria uma dependsncia do sistema
op eracion al. Isso re duz a portabilid ade, portanto. ela njio e
u tilizada a m en os que seja necessaria . Em vezdisso, uma variavel
• sy-index contem sempre 0 contador para a pa ssagem d o lo op atual.
co m u rn un ico caracter e e utilizada para rerer urn uni co va lo r
De pois de concluldc 0 loop, seu valo r ereinieializado para 0 que tinha
ativado/de sativado. C ornu men te . 0 "X" representa urn va lo r
quando do inicio do lo op . Embora vo ce possa alterar sv-t ndex, seu
"ativ ad o" e espaco rep resen ts um va lor "desativado".
valor sed. reinicializado co m a proxima passagem do loop.
• Utilize vary i ng para atribu ir 0 pr 6xim o valor de uma ser ie para um a
variavel. Se voce modificar a varisvel, enddo ou endwhi 1e copiarf 0 valo r o Por que X e a tecla de espaco sa o u til izados para representar os
valores binaries ativado e desativado ? Acho que 1/0. T /F o u
m od ificado para 0 lo cal de onde veio. Y I N deveria ser utilizado, como e 0 comum na area de pro-
• Utilize um a outra sessao e 0 comando / 0 para t ermin al' urn loop sem gramacao.
fim.
• Utilize as ins rrucoes exit, continu e e check para modifiear
same nto de lo op.
0 proces- o Ess a convencau e para compatibilidade co m as inter faces de
°
u su ario baseadas em caractere. Escrito, valor X indica uma
selecao p resen ce e 0 espacc indica nac presente.
• exit termina 0 proc essam em o de loop e continua a execucic na
primeira in strucio ape s 0 loop.
• ca nt ~ nue salta im ediatame nte para 0 final do loop. o E reco rn endada a abertura de mulriplas sessoes sempre que
c
efetuo logon. Isso nao urn despe rd fcio de recursos? Se todos
fizessern isso , a veloc idade do servid o r do aplicativo nac cairia ?
346 "PREMDA EM 21 DIAS ABAP j4 DIA lG: 1NmutOEs DE COmOLE (OlliUNS 347

o o re curso mais precioso ea CPU. :E verdade que um a cap acidade


pequena de mem6ria adicional e requ erida no serv ido r do ap li-
Teste
1. N a seguint e se!rao de c6d igo, alter e as instrucoes if para uma ins-
cativo para acomodar cada nova sessao. Enrretanro, nenhuma
tTU!rao case .
CPU sed utilizada p ela sessao livre, sen do assim, isso nao
diminui ra a velocidade do serv idor. Se voce escrever urn pro- write ' The number is fiv e. ' .
endt f.
gram a ini ciando urn loop, ele cons um ir a uma en or m e capaci- if vI eq 10.
dade de recursos, principalmente a CPU, e isso, sem dc vida wri te 'The n~ber t s t en.'.
algum a, degradarf 0 serv idor no memento em qu e esriver sendo endt f .
i f vI <> 5 and vI <> 10.
executado. Se voce njio cons eguir inter romper a loo p , voce nac write 'The number is not fhe or t en.'.
conseguira moder ar a desperdfcic de recursos. Sem verificacso, endi f.
o prog rama executa rf possivelmente por cinco ou dez min u tos,
ate qu e exceda sua capac idade de CPU e, dep ois disso, termi - 2. Q u ais operadore s de comparacao de string utilizam os tres caract eres
nara. Da pr6xi ma vez que voce 0 executar , ele podera n o- *, + e#?
vamente fazer 0 me sm o. Em resum o, abrir uma outra sesssc sera 3. Q uais sjo as tres instrucoes de controle de programa discutidas oeste
a melh or 0P!rao escolhida. capitu lo ? Quais sao as diferencas entre elas?

o De que fonna as byt es de preenchimento afetam 0 usa de


varyt ng? Tenho que pr estar aten!rio quanto a qualquer coisa qu e
Exercicio 1
Escreva urn programa que produza a safda da Figura.
eu fa~a, qua n do do m ovim ento a partir de strings d e campo e
para strings de campo?
"r" .."x 1:1111I1"" " ,,'n1il('o, "., ""
o A maneira mais faei! de garantir 0 sucesso de vary ; ng e ter certeza
cia sequencia exata em que os campos se rep etem. Se a mesma
"".
·j:· 1 2 , . S ' ~ " · • ''l . 'lr"'5 ' ' ' '.
sequencia de campos erepetida, 0 mesmo mimero de byres semp re 1 ' 1 2'"
.. 12' _5."
S 6 .L ' ; •
'· S " ". S. l " • • 'l,· sl l . '·
1 ' t " ~ L.I ". , 1Z .... ~'~ • • •
os separara. Desde qu e voce siga essa regra, nao haven nenhuma ,t ' : ' .561" ' . 11 11:'''S. ' .., _ n 1".SS "". .J,.'" ,_...
.. 1.l"

u
U. , I,,, S. , . ,.
'ZJ "~" I" 1• . ' 2 • • S .. '
11 ,~ ' .• S.1
-
-
'5 'J''''''1' '-
necessidade de se preocupar com os byte s de preen chimento. " tZ' .:;" '~ · U. ' ~' •• • ~ t, . '1'11."'5 ' 1 ' 9 .

o Posso utilizar uma variavel para indicar


posi!rao em uma instruci o writ e?
0 comprimento e/ou

o Sim. A instruqao wri te sera apresent ada com detalhes no Capitulo


14 e as especificacoes d e varidveis serdo abrangidas em tal capitulo.

Wo rksho p
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A se~ao Teste oferece perguntas para ajudar a solidificar seu entendi-
mento do conteudo abordado e a se!raoExercfcio permite que voce pratique 0
N ac codifique como strin gs. Em vel disso, calcule as numeros e as
que aprendeu. Voce pode en contrar as respo stas as perguntas do Test e e escreva co m urn uni co byt e por vez, ou uti lize a tabe la syst.
exer cicios no Apendice B, "Resp oscas as perguntas e aos exerctcios".
11
Tabelas internas
Objetivos do capItulo
Depois de conduir este capitulo, voc e sera capaz de:
• Definir uma tabela interna com ou sem uma linha de cabecalho
utilizando as instrucoes dat a e ; ncl ude structure.
• Preencher uma tabela intem a uti lizand o append ao long o de uma linha
de cabecalho ou uma area de trabalho explfcita.
• U tilizar loop at e l oop at . .. wher e para ler 0 con teddo de uma tabela
inter na e utilizar sy-tabix para det er miner 0 Indice cialinha atu al.
• Lo calizar uma uni ca linh a em um a tabela interna ut ilizan do read t able
e suas variacoes.
• C lassificar as tabelas intern as e utili zar a adicic as te xt.

Prindpios do tobelo inte rn o


NOVO Ilrrrrrr.. e
Uma tobe/o interne umo tobelo tempo r6rio armozenoda no RAM do servtdor
TIlMO '" e
do cplicotlvc. Ela criode e preenchido por urn progromo durante a execulj;oo
e e descortodo quando a programa termina. Como umo tobela de banco de dodos, uma
tobe lo interne co nsiste em umo ou mois linhos com uma estrutura identica, mas,
diferentemente de uma tobelo de banco de dodos, ela noo pod e armazenor dodos opes
a termlnc do prog rama. Utilize a tabelo lntemc como um ormozenomenfo tempor6 rio
poro a rnc nlpulccc o de dodo s ou co mo um buffer privado tempo r6rio.

hllp:// www.compU$.com.br
350 I APIENDA EM Zl DIAS ABAP/4 DO lU/JruS IHTERJiAS ! 351

Defini..ao de umo tobelo interno que voce adicione wi th header 1t ne dep ois da clausula occurs. Isso sera
ilustrado nas linhas de 2 a 10 da Lisragem 11.1.
Urna tabela inr ern a cons iste em urn ccrpo e urna linha op cio nal de cabecalhc
A unica ocasho em qu e voc e criaria um a tab ela interna sern um a linha de
(veja a Figura 11.1).
cabeca lho seri a n o caso de uma tab ela interna aninhada. Urna tabel a in te ma
aninhada nao pode ter urna linha de cabecalho.
NOVO..... a corpo a rmazena os linha s de tcbelc tntemc. Todes 05 linhas dentro de le tem
TUllO r a mesmo estrutura . Geralme nte, 0 te rmo "tobelc interne", propriamente dito,
refe re-se 00corpo do tc belo Interne. ~NnADA'" Listagem 11 .1 Ma neiros bosiccs de definir tab e la s inte rnes com e sem
,.. umo linha de cc becclbc
NOYO ..... A linho de cab~o lho e umo string de compo com 0 rnesma estrutura de uma
TERMO r llnhc do ccrpc, ma s pede ope nas arma zenar umo linho (mica. E urn buffer
1
2
report ztxllOI.
data: begin of 'i tl occurs 10, "t en uma Hnha de cabe~a l ho
utilizodo pora a rmozena r coda registro ontes que ele sejc cdicionodc ou coda registro
3 fl.
ossim que ele e recuperodo do tobelc Inte rne.
4 f2 .
5 f3,
6 end of HI.
Neste livre, umo ccn vencec de ot ri bui~{i o de nome e utilizad a pora 7
tobelos internes. Para prog rama s sirnples com apena s umo unica tobelo 8 data i t 2 like ztxl fal occurs 100. "'nao tem uma linha de ca be~a lho
interne, 0 nome do to belo interno normalmente sera ; t (de internal 9
table - tobela internal. Se existire m v6rias to belcs Inte rnes. 0 nome de 10 data i t3 l1 ke ztx lfal occurs 100 with Header li ne . "agora stm
ced e umo norma lmente comecc ro com it.

A Figura 11.1 mo stra a defini cao de u ma tabela"in terna denorn inad a it.
o c6 digo n a Lisra gem 11.1 nao produz nenhuma safda.

• A linha 2 comeca a definiljao de uma tabela intema denominada i tl.


Fi gura 11 data : begin of it occurs 3,
A definif;oo d" vmo fl(l) , E uma tabela intema por causa da presenlja da clausula occurs. Tern
tobe/o int"ma 12(2). tres co m ponentes: fl. f2 e fJ . Cada urn e do tip o c, comprimento 1.
denominoda t t e end of i t . Essa tab ela intern a tern um a linha de cabecalho porque a defmiljao
mostrodo no porle ccntem as palavras begi n of.
svperiO;d" sto ngvru.
A Iinho de co~olho it • A linha 8 define a tabela interne i t2 . T ern os mesrnos component es da
e 0 corpo tombem sec
est ru tura do DDIC , ztxlfal. N rc t ern urn cabecalho porque n ero
mostrudos.
begi n of nem wi th header 1t ne aparecem na definicao.
it • A definicso de it 3 na linha 10 e quase a mesma da definiljao p ara ; t2
na linha 8. A unica dife renca ea ad ic;aowi th header 1i ne. Isso, eclare,
[az com que i t3 tenha uma linha de cabecalho.

Esclarecendo a fonte principal de confusec em torno de


ta be los internas
Para definir a corpo de urna tabela in te ma, uti lize occurs n na definicao A Figura 11. 1 con tern urna tipica de£in iljaa de tabela in tern a. D efin e duas
de qualquer stri ng de campo, excero tab l es . occurs erie a ca rpa da tabel a coisas: 0 corpo de u ma ta be la interna e urna linha de ca b ecalb o . A
intem a. A mern6ria para 0 co rpo nao sera alocada ate que a p rirneira linh a seja confusao surge porque ta nto a corpo como a 1inha de cabe cal h o sao
adicionada nele. Sem occur s, voce te ra sornente um a str in g de campo . denominado s it. it e 0 n om e do co rpo e ; t e t am bem 0 nom e cia linh a
Pa ra defin ir urna tabe1a in terne com urna linh a de cabec alho, voce devera de cabecalho. 0 loc al onde voce coloea 0 nome i t em seu c6digo determina
inc1uir begi n of ou wi th header 1i ne na defini~ao. Urna linha de cabe~alho sera ao que voce esti se refe rindo.
au to maticament e criada se beg; n of aparecer na definil;jao. Se voce ut ilizar 1i ke Q uando utilizado em uma ins tru~ao de atribui~ao, it sem pre ira se refenr
em vez de begin of. a tabel a interna nao teci uma linha de cabeljalho a menos alinha de cabeljalho. Por exernplo. i t -fl '" I AI refere-se ao co rnponente fl da

?
~I I I I I I I I I I I • • TTT-.-W • •-.-. -.-• • • -. -TT-. If Y-y-I-.-I.....- .- Y'- ~- ~ ~-~~- ~,

352 , APRENDA EM 11 Olio SABAP/4 DlA 11:TABalS IHTEiNAS I 353

Iinba de cabecalhcdenominada it. Ou em f3 • it -fl, a linha de cabecalho it • As linhas de 2 a 10 sao as mesmas das linhas na Listagem 11.1; elas
tambem refere-se 010 componente fl . esrao inclufdas aqui para sua revisao.
• Na linha 12, i t4 e defmida como a String de campo den ominada t t3.
Exemplos dos definicoes de tobelo interno naa como a tabela intern a 1t3. As sim, uma adic;ao occurs e requ erid a
Para defiair as tabe!as intemas com e sem linhas de cabecalho, utilize os para toms-la uma tabela int erna; esta nao tern uma linh a de cabecalho
formulari os recomendados na Listagem 11.2. porque begi n of ou wit h header 1i ne ni e existe.

ENllADAIlrrr.r.. Lista g e m 11 .2 Estes defln tcces criom tobelos intemos com e sem umo • As linhas de 14 a 16 mostram a maneira antiga de defmir uma tabela
,.. linho de cc becclhc intema. It 5 eigual a it3 defmi da na linha 10. A adi~o 1; ke foi somente
incluida na versao 3.0; programas anteriores utilizam as defmi!joes
1 .report ztltll02. como as apresentadas b.a po ueo . Includ e structure nac e utilizada
2 dat a: b~9in of itl occurs 10, "t en l1nha de cabe~a'ho
UI1lI
agora. excetc para os casa s da seguinte defini~ao de i t6 . (Nesse
) n,
momenta, voce pode querer reviser a inStnl~O i ncl ude structure
4 f2 ,
5 f3 , abordada pelc no D ia 5, '0 Data D icti onary, Parte 3' .)
6 end of ru . • Esse seria 0 unico motivo pr atico em que voce utilizaria a instrucio
1
includ e, agora (depois da versto 3). Ela permite que voce erie uma
8 data 1t2 l i ke ztxlfa1 occur s 100. - n~ o t !lll uma l1nha de cab~ a lho
string de campo com todos as componen tes de uma estrutura do
9
10 data it) like ztxlhl occur s 100 with header li ne'. -agora tell DD IC, mais alguns componentes adicionais. A defmi~o de i t6 con-
1J tern as componentes de ztx lfal e dais campos adicionais que sao
12 data 1t4 like it) occurs 100. · n~o tern lIIIII l1nha de cab ~ al ho delfl ag e rowt otal. Essa tabela inte rna tern uma linha de cabecalho
13 uma vez que voce pode ver begi n of na defmii i o.
14 data beg1 n of itS occurs 100. "ten uma l1nha de ca be~alho
15 i ncl ude structure ztxlfal. • As linhas 'de 24 a 26 mostram a maneira incorreta de utilizer 1i Ice. Os
16 data .end of itS . ,. comp onentes dessa tabela interne comecam todos com i t7- s, por
11 exemplo, it7 -s-lifnr e i t7 -s-landl. Embora viavel, provavelmente,
18 data beg1n of 1t6 occurs 100. "esse ~ 0 motivo per que v . deve uti l1zar niio e 0 pretendido e produz urn myel desnecessario nos nom es de
19 include structure ztxlfal. "a i nstru ~ lo inc lude
20 dat a: de1flag . componente.
21 rcetctel , • Ao definir uma tabela intema que tenha apenas urn componente, sera
22 end of it6. possfvel utilizar a declaracio na linha 28 ou a declaracto na linha 31.
23
24 data : begin of i t 7 occurs 100, " n~ o fat;a tssc des se maneira
Z5 s l f ke ztxlfal, "os nomes de component e se r ae Adicionondo dodos em umo tobelo interno utilizond o
26 end of it7 . "preflxados cem it7 -s ·rno LIST " 27 a instru~6a append
28 data HS l 1ke sy-tncex occurs 10
29 with header l ine. Pan adicionar uma unica linha em uma tabela intema, voce podera utilizar a
3. instru~ao append. append copia uma unica linha de qualquer area de trabalho e
31 data: begin of 1t 9 occur s 10, a coloca no corpo 41 0 final deslinhas existent es, A hell. de trab alho pe de ser a.
32 f1 li ke sy~ i nde x . linha de cab e~alh o au qualquer outra string de campo com a mesma estrutura
33 end of 1t9 .
de uma. linha no carpo.

o c6digo na Listagem 11.2 nao produz nenhuma saida.


354 ! ,," PREMO ,," EM 21 Ol,,"S. ABAP/ ~ OIA l),J,,,UlIHTERNAS 355

EHUADAlilrr.. Lista g em 11.3 Este progra ma adiciona tres linhas em umo tabe la
!:!!
Sintoxe do Instruceo append
A seguir, veja a sintaxe da instrucio append.
r inte rne it a pa rtir do lmhc de cobecclho

Z append [1m t o] [in i t ia l Tine to] it. 1 report ztx l103.

~
2 data: begin of it occur-s 3,
on de: J fl(1),
In • 1'10 e 0 n ome de uma area de tra balho. 4 '2(21,
S end of it.
~ • it e 0 n ome de uma tabela in tema pr eviamente definida. 6 it-fl ,. 'A'.
7 it-f2 oS 'XX'.
8 append 1t to it . "ecrescente ali nha de cabece1he IT ao ccrsc IT
05 seguinte s pontos se aplic am : 9 write: / "sy- t ebf x - ': sy- t ebt x.
10 it-fl· 'B'.
• wo deve te r a mesma estrutura de uma linha do corpo. 11 1t~f2 • 'YY'.
• wo pode ser a linha de cabecalh o a u pode ser qualquer string de campo 12 append it . "0 mesmo que a li nha 8
13 write ~ / 'sy-tabix -" , sy-tebtx .
. com a mesma estru tura de uma linh a no corpo.
14 it-fl · 'e' .
• Se voce nao especifiear uma area de trabalho, 0 sistema utilizara a linha 15 append it. "a tebel e tnte me ccneen agora tres l i nhas .
de cabecalho como padrao. Na verd ade, a linha de cabecalho e a area 16 write: / "sy- tebtx ~', sy- t aet x.
de t rabalb o padrao. -, .
• D epois de append, sy-tabi x e configurada com 0 ndme ro de linha O c6 d.igo na Lista gem 11.3 produz esta saida:
relativo da linha recem-acre scen tada. P or exemplo, depois de acre s- sy-tabix .. 1
centar a primeira linha, sy-tabi x sera configurada como 1. D epois de SAlOl ~ sy-tebtx • 2
acrescentar a segunda linh a, sy- t abi x sera configurada como 2 e assim sy-tebtx • 3
por diante.
A instru/iao append it t o i t acrescenta a linha de cabecaiho den omin ada INlllSE~ • A lin ha 2 defin e u ma tabela intema denominada ; t e um a linha de
cabecalho denomin ada it. As duas possuem dais componentes: f1 e
i t ao corpo denominado it. A instrucio append i t faz a mesma coisa, po rqu e
a ar ea de trabalho padrao e a linha de cabecalho. Sendo mais sucin to, a ulti ma f2.
ea normalmente utilizada. • As linhas 6 e 7 configuram 0 coneeudo dos campos de linha de
cabecalho f1 e f2 (co mo pode ser vista na Figura 11.2). Aqui, it se
NOVO lrII...Uma 6 rea de trobolho me ndenodo expllcttc mente no instru<;6e append e refere alinh a de cabe calho.
m.MO'" de trobo/ho exp/(cila . Qu alquerstring de com po com
ccnhecldc como umo a rea
a mesma estrvtura de umo linha do tcbelc interne pode ser utilizodo co mo umo 6rea de • A linha 8 copia 0 contee d o da linha de cabecalho den ominada it pan.
trobo lho explkltc. Se umo 6rea de frcbclho n60 for mencio noda, a area de troba/ho °
coepo denominado it (como po de ser visto na Figura 11.3).
imp/kilo (0 linho de cobecclho) ser6 utilizodo.
Figura 11 2 it-fl· 'A' .
A instrucao append init ia l li ne to i t acrescenta uma lin ha contendo Estoss60 os instru¢es
it -f2 • 'XX' .
valo res in iciais (espacos em braneo e zeros) atabela interna. Equivale a execu tar de otrfbuiqao, que se Iinho de ccbecclhc

it[l]Bt.~1
as duas insrrucoe s a seguir em seq uen cia: e1ear it e append it. referem a linho de
A Listagern 11.3 mos tra urn programa de exemplo que acrescenta tres cobeqolho.
fl f2
lirihas em uma tabela interna.
co rpo

till ~
Ii ~
~ BJ
.........................-......-""'I
.....I. .-. -. I •• I • I • • I I I I I . . . . . • • .W .w. ~ ~ • • • • .. - - -

3S6 I ",PR EMD" EM11 DIU ABA P/4 D~ l),TASEUllrmRHAl I 357

• As linhas 10 e 11 atribuem 0 novo coarecdo aos componentes cia linha Fig lirA 11 . , append it.
de cabecalho, sobrescrevendo 0 coneeado existente (com o pede ser A crec de trcbolho
ltnhc de ccbecclbc
padrfJo i 0 Iinho de
it[l]~
visto na Figura 11.4) .
co~rno. Aqui, e
impJicitomente 11 f2 ...
Fi gura 1 1 3 append 1t to i t. ocrescerrtodo eo corpo.
""'pend i t to t t
copio 0 conteUdo de
Iinha de ccb~lho it it
port! 0 corpo it .

tirl ~
Si ~ • A linha 15 acresceata urna terceira linha a partir d.a linha de cabecalhc
~~ . ; t ao corpo it (veja a Figura 11.7) .

Figura 11 6 1t-fl = ' E",


• A linha 12 acrescenta 0 no vo cc ntec dc cia linha de cabecalho ao corpo
(veja a Figura 11.5) . Essa instrucic e-funcionalmenee equivalente a
o valorcJo
componente do linho linho de ccbecclbc
inStru~o na linha 8.Ja que uma area de trabalho nie recebeu urn nome , d. a>bo<olho It-Il
it . ,]
a area de trabalho padrac - a linha de cabecalho - sed utilizeda, ~ sobrescriio. 0 yo/or
de it- f Z permonece fl f2
Figura 11 4 1t-fl • ' 8'. inolterodo.
1t~ f2 • 'yy' .
Estos instru~6es de
cmbuio;oc
sobrescrevem 0 linha de ccbecclhc
conteUdo existente do
linho de cobeljOlho i t . 1t~~1
fl f2
CO"",

it
~~ . .
Figura 11 7
append i t .

~~ Aqui, 0 conteVdo do

.. .
~ ~2!
6reo de trobe/ho
imp/fcifO ~
oaescerdodo 00
""PO.
• A linha 14 altera 0 valor de it-fl e a deixa apen as em it·f2 (veja a
F igura 11.6).

Utilizcndo c c di~Ci o occurs


occurs nao limita 0 mlmero de linhas que po de ser adicionado atabel a intema.
Por exemplc, se voce especificar occurs 10, sera pos sfvel ccl ocar m a is de 10
a
linhas na tabela interna. numero de linhas qu e voce pe de colocar em uma
D~ lUABlLlS INTERNAS I 359

tabela interns, teoricamente, e apena.s limitado pela quan ti dade de memoria describe tabl e ap resentada co m de ralbes no pr6ximo capitulo ou at raves cia
virtual dispoajvel no servidor do aplicativo. exibicac de Field no depurador.) Quand o a primeira linha e adicicnada na tabela
interna, a m emo ria e aloc ada da area d e rolagem do programa. A quanridade
alocada e igual ao tamanho calcul ado da tab ela inr ema. Se esta quantidad e for
No reolidode, seu consultorde Bosisconfigura um limite considerondo excedida, uma quantidade igual sera alocada e 0 p rocesso sera repetido ate que
c quontidcde m6ximo de mem6ric estendidc que vmc tobelo intemo o total exceda 8 KB . Q uando isso aco ntecer, as alccacces subseqaentes obter ao
pode olocor. Se voce exceder esso quontidode, seu progrnm.o olocorc pfginas de 8 KB cia area de paginac;ao.
a mem6rio privodo do processo de trnbolho e este noo ser6 mois copoz
de continuor seu progremo. Isso faz com que 0 processo de trobolho Se voce especificar occurs 0, todas as alocacoes serio feitas na area de
tome-se indispc nlvel pore uso por outros progremos ate que seu pagina~ao) faze nd o com que uma pagina de 8 K.B seja alocada de um a s6 vez.
progremo termine completomente 0 processomento. Poro evitor esse Se 0 t ama nha caIculado da tabela interna for ma ier que 8 KB , 0 sistem a ira
problema, voce deve utilizor umo c6 pio. alrerar a valor de occur s p Wl zero quando a p rimeira. al0C3<j3.0 for realizada e
tcdas as alocacces atingirao seus objetivos a partir d.a area de paginac;ao. Voce
o sistema utiliza a clausula occurs apena.s como uma direrriz para deter- pede ver a alterac;i o de occurs utilizando a insrruc ac deser-tbe table depois da
minar quanta memoria deve ser alccada, N a primeira vez qu e um a linha e prim eira alccacac e exibinda 0 valor de sy- toccu. Essa insrruci o sera descries
adicionad a na tabela intema, mem 6ria su ficiente e alocada a fun d e armaze nar no Dia 9, ..Atribuicoes, convers6es e ct lculcs".
o numero de linhas especificado oa clausula occurs. Se vo ce utilizar recursos
alem da capacidadedessa memoria, mais sera aloc ado, conforme necessdrio. Le nd o dados a partir de vma tabela interna
Altemativamente, voce pode especificar occurs o. Se fizer isso, a sistema Duas instruc;6es sao comum en te utilizadas para a leitura dos dados a partir de
alo ca.cl paginas de mem6ria de 8KB d e uma s6 vez, Entretanro, Dio hi nenhuma uma tab ela int ema:
vanragem em utilizar occurs 0 a na o ser pelo fate d e que eurn p ou co mais facil
• loop at
codificar occurs 0 do que estimar 0 tamanho da tabela intema.
Para maximo des empenho e mfnimc desperdfcio d e me m6ria, escolha urn • read tab le
valo r occurs semelhante ao numero maximo medic d e linhas na tabela. Por Utilize loop at para ler vdrias linhas da tabela interna. Utilize r ead tabl e
exemplo, se na maioria das vezes a u bela interna for preenchida co m urn para ler u ma enica linha.
maximo d e 100 Iinhas, mas de vez em qu ando fo r p reen chi da com u rn maxim o
de 1.000 linhas, configure;' valor occurs para 100. Lendo verics Iinhas utilizando a instru~cio l oop at
Para ler algumas ou todas as linhas de uma tabela interua; voce pede u tilizar a
in st ni c;ao loo p at . loo p at Ie 0 cc nt ea dc d.a tabela intema, colocando as linhas
Nee utilize occurs 0 se voce esperc armazenor menos que 8 KB em do conteudo) urna.p or vel., na area d e trabalba.
umo tobela intemo. Se nzer isso, 0 siS1ema alocar6 8 KB do 6reo de
poginoljoo. A mem6ria ser6 desperdic;odo e a poginoljoo poder6
oumentor, resultondo em menor desempenho. Sintexe de instru~lio loop at
.!!! A segu ir) veja a sint axe da instruc;ao loop at .
D epend end o da clausula occurs e do camacho da ta bela intema. 0 sistema
alo cari. a mem6ria da area d e rolagem do p ro grama ou cia area de pagin a~aa do
z l oop at i t [into am] [fran _] [to n] [where u p].
sist em a, a u das d uas. Os acess as de mem6ria na area de rolagem podem ser urn
pouco mais rapidos que os acesso s n a area de pagina~ao . As aloca 'ijoe s na area
Em
endloop.

onde:
d e pagina'ijao tedio sempre 0 ta manho de urna pagina (n orm almente 8 KB ou
8.192 byte s). . T • it e 0 nome de uma tab ela in terna.
Ha dais m etodos que 0 sistema utiliza para exe cutar alocac;oes. N o
• wa e 0 nome de uma irea de trabalha.
p rimeiro. occurs e dif erent e de zero e 0 tamanho cia tabela intema (calculado
a partir d o numero de bytes por linh a d e occurs 11-) e Menor que au i gual a 8
,
KB. (0 numero de byt es par Iinh a po de ser obtido ur ilizando a ins truc;ao I

l
360 APHM DA EM 21 DIAl ABAPH
D~ lUABEllS INTERMAS 361

• men sao !iterai s de inreiro, constantes ou varidvels que representam Ap6s endloop, sy-subrc sera zero se quaisquer .linh as tiverem sido lidas.
urn mimero de linha relative. Por exemplo, 1 significa a primeira linha Sera difer ente de zero se nenhuma linha tiver sid o lida a partir cia tabe la interne.
na tabela, 2 significa a segunda e assim por diante. A Listagem 11.4 e expandida a partir da Lista gem 11.3, executando urn
loop e escr even do as linha s da eabela intema.
• exp euma expressac 16gica que restringe as linhas que sao lidas.
• ~ _ M representa qualquer nrimero de linhas de codigo. Essas linhas sao .... Listagem 11.4 Este p rogramo od iciono 3 linhos no tobe la Interne i t do
execuradasuma dnicavez para cada linha recuperada cia tabela interna. ENTliDA,- li nho de ccbe~olho e, em seguido, as escreve de volta novomente

1 report ztxll 04.


As linhas sao lidas cia tab ela intema, uma por vez, e col ocadas em Z data : begin of it occurs 3.
J f1(l),
sequencia na area de trabalho. As linhas de ccdigo entre l oop at e endloop sao • f 2(2) ,
executadas para cada linha recuperada. 0 loop termin a automaticamente 5 end of it.
quando a ultima linha e!ida e a instru!jio ap6s endl oop e entao execurada. 6 1t~ fl • ' A' .
Os seguintes pontes se aplicam : 7 1t - f Z ,. 'XX ' .
8 append it t o it . "ecrescente a linha de eabee;alho IT ac coree IT
• wa deve ter a mesma esrrutura de uma linha do corpo. 9 1t ~fl • 'B'.
• wa pode set a linha de cabecalho a u qualquer string de campo com a 10 1t-f2 • 'VY '.
11 append i t. · 0 mesmo que a li nha 8
mes ma est rutura de uma linha no corpa.
12 i t -fl· ' C' .
• Se vc cs nio especificar u ma area de trabalbo, 0 siste ma utilizari a linha 13 append it. "e t abela ln terna agora cont bJI t res H nnes .
de cabecalhc como padrao. Por exempl o, l oop at i t into it Ie as 14 sy-tabix • sy- subre • 99.
linhas da tab ele intema it, colocando -as uma po r vez na linh a de 15 l oop at it. . · 0 me5mo que: lo op at it into i t
16 write: / sy-tabix. it-fl . it-f2.
cabecalho it . Vma instru~ao equivalence e loop at it.
17 endlo op.
• Se from nao for esp ecifi cada, 0 padrac sera com ecar a leitura a partir 18 wr1t e : / 'done. sy-tebt x - ", sy-tabix .
da primeira linha. 19 / " sy-subrc -" , sy-subre.

• Se to njo for cspecificada, 0 padrao sera ler ate ~ ultima linha.


• Os compo n enres de i t especificados na expressac 16gica nso devem o ccdigc na Listagem 11,4 produz esta said a:
se r precedidos pel o n om e da tabela intema. Por exernp lo, where fl ::: 1 A XX
'X' estol. co rre ta, mas wh ere i t -fl .. I Xr causara urn 'err c de sin taxe. SAiDI ~ 2 B YY
3 C YY
• exp pode ser qualqu er expressjo logica. Entretanto,' 0 primeiro ope- done. 5y-tab; x .. 99
rando de cada cornparacjo deve ser urn cornpo nent e da tabela interna. sy-subrc .. . 0
Por exemplo, se it contivesse um comp onente f l) ea u o where f1 :::
• A s linhas de 2 a 13.sao as mesmas das existences na Listage m 11.3. Etas
' X' estaria correta; where 'X' ::: fl est aria incorre ta e causaria urn erro IMius!~ adicionam erzs linhas na tabela interna,
de sintaxe.
• A linha 14 configura sy-tabi x c sy- subr c para urn valor arb ieraric .
• A s adi~6es from, to e where poderso ser mis turadas, se assim for
desejado. • A linha 15 comeca urn loop que Ie a primeira linha da tab ela interna
dcn ominada it, coloc ando -a na linha de cabclialho it.
Dentro do loop, sy-tabi x con tern 0 numero de linba relativo do regis tro
atu al. P ar exemplo, durante 0 proces samemo do p rimeiro registro na tab ela • A linha 16 escr eve 0 valor de sy-tabix e os valor es nos comp onentes
in terna, 0 valor de sy-tab i x sera 1. Du rante 0 pr ocessam ento do segundo , d>. linha de cabe~o.
sy- tabix sera 2. Depois de terminado 0 loop, 0 valor de sy·tabix sera 0 0- • A linha 17 mar ca 0 fmal do loop. Re torna a linha 15.
vamente configurado para seu valor origin al qu and o do infcio do loop. Se os
loop s estiverem aninhados, 0 valor em sy- ta bix estacl relaciona do ao-Ioop
amal.
. _- _... -~ .. --:-~~
-
362 I APRENDA EM 21 DIAS ABAP/4 DIA 1UABEUSINTEWS 363

• e
A Iiaha 15 novamente executada. Dessa vez, a segunda linha ciatabela 25 loop at f t f rOlll 2.
26
"mesmo que: loop at it f rom 2 t o 3.
write: / sy-tebtx, i t - fl . It - f 2 .
interna e coloca da na linha d e cabecalho, sob rescreven do 0 coneeddo r 27 endloop.
ant erior. 28 s kip.
• A linha 16 e executad a, novamente escrevenclo as valores cia linha de ,
29
30 l oop at it from 2 where fl • 'C' .
cabecalho. I'
31 write : I sy-tebtx , it-fl. it-f2 .
• Na linha 17, 0 loop sera repetido ate que codaslinhas sejarn recuperadas 32 endl oop.
da tabela interna. Q uan do a Ultima linha tiver sido Iida, ela ira parar 0
loop.
• Na linha 18, sy- tabix foi restauracla para seu valor original antes da
o c6digo na Listagem 11.5 produz esta safda:
2 B YY
SliDA ~
execucao do loop . Sy-subrc contem zero, indicando que as linhas 3 C YY
. for am recuperadas da tabela interna pela instrucao loop at.
1 A XX
2 B YY
Restr ing indo as linhcs lidos do tabe la interne
2 B YY
Utilizan do as adicoes from, t o e where, voce podera restringir o n dmero de linhas 3 C YY
Iidas da tabela intema. A Listagem 11.5 e expandida a partir cia Listagem 11.4,
executando urn loop na tabela intema por quatro vezes. Em cada vez, ela escreve 3 C YY

apenas determinadas Iinhas.


IMiuSE ~ • As linhas de 2 a 13 adicionam tres linhas na tabela interna.
ENTRADA~ Listagem 1 1.5 Este programo e semelhante ao da Ltstoqern 11.4, mas • As linhas de 15 a 171eem samente as linhas da tabel a interna onde f2
,. openas algumas linhas sdo lidos t ern urn valar semelhante a 'yy I • Somenre as linha s 2 e 3 satisfazem os
criterios.
1 report ztxl105 .
2 data: begin of it occurs 3, • A linha 18 pula uma linha na safda, na verdade escrevendo um a linh a
J fI(l). em branco.
4 f2(2),
5 end of it . • As linhas de 20 a 22 leem somente as linhas 1 e 2 cia tabela interne.
6 it-fl. 'A' . • As linhas de 25 a 27 leem somente as linhas 2 e 3 da tabela interna.
7 it-f2· 'XX'.
8 append it . • A linha 30 faz a leitura comecaado a partir da linha 2, procurando po r
9 it-fl · '8 ' . todas as linhas com urn valor fl de ' C'. A linh a 3 e a tinica linha
10 1t ·f2 • ' YY'. correspondente nessa faixa.
11 append it .
12 1t ~f1 • ' C'.
Se voce tiver certeza de que 0 ripe de dado e 0 camprimento do campo
13 append it . " c o nt ~ agora tres li nhas em exp correspondem exatamente com 0 campo da tabel a inrerna, nenhuma
14 conversao sera executada. Isso fad. cam que seu loop seja executado mais
15 loop at i t where f2 • ' VY ' . "f 2 esU ccrretc, it-f2 esta rfa t nccr ret c aqui rapidamente. Se a conversao for necessaria, ela sera executada em cada passagem
16 write : / sy-t ebtx, it-fl , it-f2. de loop e isso pcderf diminuir a velocidade do processamento de forma
17 endl oop.
consideravel. Utilize 1i ke ou constantes para evitar a con versso.
18 skip.
19
20 loop at · it to 2.
21
22 endl oop.
23 skip.
"mesrno que: loop at it from 1 to 2.
write: / sy- t ebt x, it -fl . it-f2. I ~o '---
Embora where retorne um subcc njuntc do cco teudc de tobelc, ume
vcrreduro total de tcbelo ser6 sempre executodc .
--1

24

-.
-.. -T " -.-..-.-. - I -I I • • • 'I-I " I I .. I I I. __ I I .I"" . ~..._.• •

364 APR EHDA EM21 DIAS ABAP /. DIA lUABELlSIHTERH<5 365

UtiJizando exit, cont i nue, sto p e check • Se ta nto comp ari ng com o tran sporting estiverem especificadas, com-
A Tabela 11.1 ilust ra 05 efeiro s de exit, continu e e check qu an do ut ilizadas par i ng devers vir primeiro .
dentro de uma estrutura de loop at / endl oop.

Tabe fa 11.1 lnstrucees que podem altero r a processa mento de loop pa ra tobelos Os seguintes po nt os se aplicam :
inter nes • wa deve ter a mesma est rutura de uma linha do corpo.

Instru~ao Efeito • ser a linha de cabecalho au pode ser qualquer string de campo
'flO pode
corn a mesma estrutura de uma linha no corpo.
ext t Termino 0 loop imed iotomente. 0 proc essamento con tin uo no
lnstruccc imed iatomente op6s endl oop. • Se voce nao espe cificar uma area de trabalho, a sistema utilizard a linha
continue Voi imedia to mente pc rc 'c instru~50 endl oop, desviondo fodos as de cab ecalhc como padrac. P or exemplo, r ead table it into it l~
instrUl; 6es seguintes dentro do loop.A pr6ximo linha e refomodo do uma linha d..a ta bela intema it, colocando-a na linha de cabecalho ; t.
tobelo intemo e a processomento continue a pa rtir do inld o do Uma inserucio equivalente e read table ; t .
loop. Se na o existirem mois linhos a serem recuperado s, 0
processomento continuar6 no primeiro instruc;oo ap6s endl oop.
check exp Se exp fo r verdcdelrc , 0 processomento ccntln ucrc como se essa Ulilizanda a a di~oo index
instruc;Cio ndo flvesse side executodc . Se exp for folso, seu efeito ser6
o mesmo de cont inue. NOVO... 0 {ndice de linha de uma tabela intema corresponde 00 seu numero de linho
m.MO r relotivo. Per exemple, 0 primeiro linho no tcbelc tem 0 indice 1,0 segundo tem
Lenda uma unicc linha utilizanda a instru ~aa read tab l e o Indlce 2 e ossim po r dio nte . No instruc;Oo re ad table, se index i esfiver especificcdc,
o sistema ir6 rec uperar 0 t o linho do tob e lo interne e cclocc -lc no a rea de trobolho. Por
Para localizar e ler uma unica linha de uma tabela interna, utilize rea d t abl e.
example, r ead t ab le i t i ndex 7 1& a setimc llnho do tcbelc lntemc e a coloco no Hnhc
Ela Ie uma unica linha que co rresponda co m os criterios especfficos e a coloca de ccbecclhc. _
em uma area de trabalho.
Se a leitura for bem-sucedida (ou seja, se a linha i existir), sy-subrc sera
configurada como zer o e sy- t abix sera configuradacomo i (vejaa Listagem 11.6).
Sinlaxe da instruc;oo re ad t ab1e
A seguir, veja a sintaxe da instrucio r ead tabl e. EIl1lADA ~ ListCi gem 11.6 A odi<;ao ; ndex no instru<;ao read ta bl e locclizo uma .
read t abl e it (i nt o wa] (i ndex 'f ] with key keyexp (binary sea r ch] ]
. unice linhe por seu numero de linho relativo
[comparing cmpexp] (transpor ting texp].
1 r eport ztx1106.
on de: 2 data: begin of it occurs 3.
3 fl(2) ty pe n,
• it e0 nome de uma tabela in t erna. 4 f2 ty pe f.
• 'flO e0 nome da area de tr abalho. 5 f3(2) type c,
6 f4 type p,
• i e urn literal de in teiro, constant e ouverisvel que representa urn 7 end of it.
mime ro de linha relative . Pa r exempl o, 1 significa a p rimeira linha na a wa like it.
t abela, 2 significa a segunda e assim p or dian te. s
10 it~fl = ' 10 ' . it-f3 • 'M'. it-f2 • i t - f 4 • 1. append it.
• e
keyexp uma expressjio que representa urn valor a ser localiz ado.
11 1t·fl • ' 20 '. it-f3 = 'B8' . it- f2 " 1t-f4 '" 2. append i t .
• cmpexp euma expressao de co mpa racao que represe nta u rn teste a ser 12 It-fl = ' 30' . it-f3 • 'CC' • 1t- f2 " 1t-f4 = 3. append i t .
executado na linha locali zada. 13
14 rea d table i t index 2.
• e
texp um a expr essso que representa as campos a serem transportados 15 write : / "sy- s ubr c -", sy- subrc,
para a area de trabalho depois que urna linha elocalizada. 16 / ' sy-tabix - ", sy-ta bix.
17 / it-fl. it-f2, u-rs. i t - f4 .
18
I I I ••••• • - • ••• w__ • w w • w • • - • •

366 APiE' OA EM' 1 DIAl ABAPI4


0lA 1UABEUS lh'1IIHAS 367
19 read table it i nto wa in dex 1.
20 wr ite: I . Utilizanda a adi<;aa wi t h key
21 / 'sy-su bre -" , sy- subrc , Se w1 th key keyexp fo r esp ecificada, 0 sistema localizard uma linha que corres-
22 I "sy- ta bt x - ", sy- ta bh.. panda com a. express sc key e a colocari. na.1inha de cabecalho, A Tabela 11.2
23 / it-fl . it-f2 , ft - f 3. it· f4 .
descreve as express6es keye seus efeitos. Utilizando uma expr essao key. voce
24 / wa-fl , wa-f2 . ..a- f 3. wa-14.
21
podera especificar uma rinica linha a se r recuperada. Se mais de um a linha
. 26 re ad table i t i ndex 4. corres po nde r co m a expressao, a prim eira localizada (a que tiver a menor
: '27 wri t e: I . Indice) sera re tom ada.
28 I ' s1-subre - ", sy-suerc,
29 I ' sy- tlbix -", sy-tabi x.
30 / i t -fl . it-f2, u -rs, it-14,
31 / wa-fl . wa- f2 • • a- f 3. wa-t4. Expn:ssao ke y . Efeito
c1 • vi c2 • v2 . •. locol izo 0 primeiro linhc no tobe la intemo em que 0
o e6 digo na Listagem 11.6 produz esta safda: componente c1 tern 0 vola r vi e 0 componente c2 tern
o vclc r v2 e ossim po r dionte. vi eo um literal, ccnstcnte
SAiOA~
sy -s ubrc • 0 ou vcrtovel.
sy-t ebt x • 2
20 8B 2
(tI) • vi (12) v2 •• • o mesmo que 0 a nte rior, pc rem f1 e umo voricvel que
sy-s ubrc • 0
, cc ntem 0 nome do comp onente 0 ser comporod o. 0
volor em fl deve este r em letro mcicscolc . Se f1 estiver
sy- tll b1x • em bronco, a ccmpcrocdc sere ignorodo .
20 2 8B 2 . w. wa e ume area de trnbe lho· identico em estruture a urno
10 1 AA 1 linho do tobelo inferno . Esso expresseo key localizo o
primeiro Iinha no to be lo intemo exotcmente iguol 00
sy-s ubrc •
sy- ta bt x • 0 cc ntecdc de wa. as espccos e m bronco sao tratodos
20 2 8B 2 como volores a sere m loca lizodos; eles n60
10 1 AA 1 correspondem Q quo lque r outro va lor diferente de
espcccs em bronco .
• As linhas de 2 a 7 definem uma tab ela inre rna co m uma linha de w. wa e ume area de trobo lho id!ntico au rnenor que Q
cabecalho. estrutura do ta belo Interne. Se wafiver compos n, os
cam pos de wa cc rrescooderee com os primeiros compos
• A linha 8 define uma area de trahalho wa igual a linha de cabecalho de n de umo linha do to bela intemo. Esso expressOokey
it. lccclac a primeira bnhc no tobe fa inferno, em que os
primeiros compos n co rrespondem com 0 conteudc de
• As linhas de 10 a 12 acrescentam [reS linhas a tabela intema.
wa. Os espoc;os em bronco sOo trotodos como ve lores c
• A linha 14 1. a segunda linha. Ja que nenhuma area de trabalho est. sere m locolizodos; e les noo corres ponde m 0 quo lquer
especificada, 0 conteudo e colocado na linha de cabecalho. Depois cia o utro vclor dtlerente de espoc;os em bronco.
Ieit ura, sy- subrc sera configurada como zero. Is50 indica qu e a linh a
existia e que sy-tebt x foi configurada com 0 mimero cia linha.
No verseo 4, as co nversees necessaries poro c s tr&s primeiros 8)(-
• A linha 19 Iea linha 1 na area de trabalho wa. a conteddc da linha de pressOes key no Tabelo 11 .2 sOo executodas no mesme ordem de
cabecalho permanece inalteradc depois da leitura. precedenclc des utilizodcs poro os expressoes 16gica s. Em sistemos
• A linha 26 tent a ler a linba 4 na linba de cabecalho. Nao b. nenhuma onterio res, os ccnversc es ercm executodos convertendo 0 valor a
linha 4, entjic sy-s ubr-c e configurada como 4. sy-tab1x como a e a direita paro 0 tipo de dado e cornp rimento do componente a esquema.
linha de cabecalho e a area de trabalho wa fiearn inalteradas.
A Tabela 11.3 descreve as valores de sy-subrc e sy- tabix depois de
executada read table it with key • • ••
~. I I I I I .. I I I .. " _ " ' ~ _ . . - r _

368 HRENO' eM 21 01" "'PH O~ l UlSEUS INlIiNlS 369

Tabela 11.3 Volores atribuidos a sy-subrc e sy-t abi x 32 clear wZ.


33 w2~fl - '10' . w2-f3 .. ' M ' . w2~f2 .. w2-f4 .. 1.
Resultodo sy-s ubrc sy-t abi x 34 T'l!ad table it with key - . '112 .
35 write : t,
le ituro bem-svcedtdc (uma linho o Indice do 36 I ' s1 - suhr e - ", sy-subre,
correspondente foi locolizado) linha correspondente 37 / ' sy ~t a b h: . ', sy-tebtx ,
Leitu ro molsucedido, mas 4 Indice do linho 38 I it-fl. it-f2. it-f3, it-f4.
39
umo Iinho com umo key moior que com 0 pr6ximo oW w1-fl .. ' 20 ' . w1-f2 .. 2•.
umo solicitodoexiste key meier 41 read table it into w2 with key wI.
Leitcrc molsucedido e nenhymo 8 ncmerc de linhos 42 write: t,
43 / "sy-subrc - ", sy-subre ,
linha foi lccchrc dc com umo key mo ior em1t + l 44 / ' sy- t abfx -'. sy.tabix.
45 I it~fl. it-f2 , u-n. it-f4 .
A Listagem 11.7 ilustra 0 usa de express6es key.
o c6digo no Listagem 11.7 produz esta safda:
EHTRlDA~ Listagem 11.7 Utiliz ondo uma expressdo key, voce pede procure r por
sy-subre .. a
urne linhc espeoftcc ndo um valo r em vez de urn Indice
l.\iDA~ sy-tab'l x .. 3
1 report ztx l107. ., 30 3ee 3

2 data: be;;n of 1t occurs 3, sy-suarc .. 0


3 fl(2) type n, sy - tabix .. 2
4 f2 type t , 30 3 CC 3
5 f3(2) typ e r , 20 Z 88 2
6 f4 type p, 51-suhre .. 0
1 end of it , sy-tabh ..
8 begin of wl, 10 loA
9 fl 1ik!! f t -f l ,
sy-subrc .. 0
10 f2 11ke u -rz .
sy-tabix .. 2
11 end of wI, 10 loA
12 '112 l1ke it ,
13 f(8).
• As linhas de 2 a 7 defin em uma tabela interna corn uma linha de
14 AHlllSE ~ cabecalho.
15 it-fl .. ' 10'. it-O II ' M ' . 1t-f2" it-f4 - 1. append it .
16 it-fl II' 20' . i t-f 3 " ' BB'. it-f2" it-f4 " 2. apPl!nd it . .• A linha 8 define uma area de trabalho wi semelhante aos dois primeiros
11it-fl .. ' 3D'. i t -f3 .. 'ec'. it -f2 - it-f4 - 3. append i t. campos d.a linha de cabecalho i t .
lS
19 read table it with key fl II '3 0 ' f 2 3.
II • A linha 9 define uma area de trabalho w2 igualao cornp rimen to inteirc
20 write: / 'sy.subre - ", sy-subrc, da linha de cabecalho it.
21 / ' sy-tabix - ", sy- t ebtx,
22 / it-fl, it-f2 , it -n. it- f4 .
• As linhas de 15 a 17 acrescentam tres linhas atab ela in tema.
23 • A linha 19 Ie uma linha com 0 valor' 30' em f1 e 3 em f 2. Sy-suorc 6
24 f .. ' F2' . "deve ester em l etra maiiiscula configurada como zero a fun de indicar que uma linh a correspondente
25 read table it into w2 with. key (f ) .. 2. foi localizada e sy-tabix econfigurada com 0 rnimero da linha. Ja que
26 write: t ,
21 I ' sy- subre ..', sy- subre , nenhuma area de trabalho esta especificada, 0 conteudo ecolocado n a
28 I ' sy- t abb - ", sy-tebtx, Iinha de cabecalho.
29 I i t - fl , it-f2 , it-f3, it-f4. • A liclIa 25 p rocura por uma linha com urn valor 2 na coluna f2. A linha
30 I w2-fl . w2- f2. w2-fJ , w2-f4. Clocalizad.a e e coiocada na area de trabalho w2. 0 conteudo da linha
31
de cabecalho pc:rmanece inalterado depo is da leitura.
~• • • • • • • • • JI' ~ 1J •
........ ~ ~ - - - - - ~ - - ------ - -

370 APiEH DA EM11 DIAl ABA P/! DIA lU ABEUS IKTERNIS 371

• A linha 34 procura por uma linha com as valores especificados em A Listagem 11.8 fomece urn exemplo.
todos as campos de w2. Com essa sintaxe, w2 deve corresponder com
a estrutura inteira de it. 0 conteado cia linha corr esp ond ence e Usta g e m 11.8 Este programa localize u ma linha com os mesmos
cc locadc na linha de cabecalho. Os campos com espacos em branco volores dos compos Default Key no Iinha de ccbecclho. espocos em as
sao procurados na tabela: eles nao correspondem. com todos valores bronco em um compo Defau lt Key fczem co m que uma coluna seja
como acontece quando se faz pesquisa com 0 usc de Default Key (veja ig no ra d a .
a p r6xim a secac). 1 report ztxllOS.
• A linha 41 procure por uma linha com as valores especificados em 2 data : begi n of it occurs 3.
todos as campos de wI. C om essa sintaxe, wI po de sec menor que it. 3 fl(2 ) type n, · c a ~o de cerect er e - par t! de default key
4 (2 type f. ·campo nltlll(!r1 co - nao (! part! de default key
o com eodo da linha corr espondente ecolocado na linha de cabecalh o. 5 f3(2) type c . ·campo de carac t ere - parte de default key
Co mo dito anteriormente, a s valores em br aneo sao tratad os como 6 f4 type p, ·campo nLnt!ri co - nlo f: part e de default key
valores a serem localizados e correspondem apenas com eles mesmos . 1 end of it .
"8
9 i t - fl· '10' . it-f3 - 'M' . it-f2 - it-f4 • l. append it.
Utilizando a adi~ao bi nary search 10 it- fl· ' 20' . 1t -13 • ' BB' • tt-fz • it-f4 • 2. append it .
Sempre que utilizar a adiliao with key, voce tambem devers utiliz.ar a acli~o 11 i t - fl · ' 30 '. i t~ f3 • ' CC'. it-f2 - i t-f4 '" 3. append 1t.
12
bi nary search, 0 que faz com que a linha $eja localizada com 0 uso de urn
13 sort it by fl f 3.
algoritmo binario de pesquisa, em vez de uma varredura de eabela linear. Isso 14 clear it.
resulta nos mesmos ganhos de dese mpenho dos alcancados com a pesquisa de 15 i t(2) • ' ". it·f3 • ' BB'.
um a tab ela de banco de dados arraves de urn Indice . De .an tem ao, a tabela deve 16 N!ad tab le it bfnary search.
se r classificada em ordem ascendente pelos componentes especificados na 17 write: I ' 5y-subre -" , sy-su bre.•
expressao key (veja a seguin re se~ao sobre a classifica~o) . 18 I ' sy -ta_b ~_x -" , sy-ta bb.
19 I ·n.. ", it-fl. 'fZ" ' . it-f2. ' f3..• • 1t -f3. 'f4-' . it-f4.
20
21 cl ear i t .
Nenhuma adi~ao
22 it-fl - ' 30' . it-f3 - 'M' .
23 read tab le it binary search.
NOVO.... Se nem urn 1ndex nem uma expresseo key esti....erern espedficados, a tobelo 24 write : I ' sy- subrc - ' , sy-s ubrc,
TERMO ~ se r6 . . orrida desde 0 inlcic quanta a uma linha que correspondo co m Defouh 25 / '-sy-tahix - ", sy-tabix .
Key ed stente no ljnho de ccbecclho. Defau lt Key e umo key imogin6rio co mpost o de todos 26 I ' fl - ' , it·fl. 'f2-' . u-ra. 'f3- '. u-ra, '14. ', it-f4.
a s co mpos de ccrc ctere no linha de ca bec;olho (tipos c, d, t , n e xl. Um va lo r em bronco
e m uma coluna Default Key faz com que todos 05 vclores noquelo cclunc sejcm
correspo ndentes . Depois, as vclores d e sy - sub rc e sy -tebt x scoconfigurodos do mesmo o ccdigc na Listagem 11.8 produz esta safda:
moneiro co mo normolment e oeorre depois de uma read tabl e utilizondo umo expressoc
key. sy-suhrc • 0
sy-tahi x - 2
fl· 20 ra- 2 f3- B8 f4- 2
sy-s'ubrc - •
(Culd;do Some nte espoc;os em bronco em um ca mpo Defou h Key ccrrespcn-
deriio com todos os valores.l sso significo que voce nCio pod e r6 e liminor
os tipos d, t , n e x e abter umo correspondenco - isso fo r6 co m que
sy-tab1x -
fl· 30 f2=
3
0 fl - M f4 "' 0

lIIillSf ~
as mesmos se jom con figurodos como zeros e n60 com o espoc;os em • As linhas de 2 a 7 defmern uma tab e1a interna com uma linha de
bronco . Voce deve fo~ar espOl;OS em bronco pora dentro desses cabec;illlo. F1 e f3 sio as opos de dado s de carac tere e assim form am
compos a fim de que e les ca rrespondom . lsso ped e se rfeito utilizondo
uma string de compo (veia 0 exemplo segu inte), utilizondo um sub-
o Default Key.
cam po au uti[izondo um sfmbolo de compo (consulte a sec;oo onterior • As linhas de 9 a 11 acrescentam tres linhas atabela intema.
quanto a simbolos de co mpo pa ra abter mois info rmol;Oes).
• A linha 13 classifica it par f1 e f3 em ordem ascen dent e.

~ ,

-'_ ...
.~
,~
~ ..-y y ..- ..- ..- • · -. -Y-:Jr-'" ~ .. ~ .
372 APIEHDA EM 21 DIAl ABAPI' D~ IUABEill INTERNA5 373

• A linha14limpa 0 conteud o cialinhadecabecalho, configurando todos


as componentes como espacos em branco 'e zeros. f1 e do tipo n e,
Cmpe.xp
assim sendo, e configurado como zeros.
fI f2 •. . Depois de locolizodo umo llnbc , 0 vclor de fl no linho locolizoda e
• Utilizando urn sub camp o, a linha 15 fOflia espaljQs em bran co para a
compcrado com 0 volar de f1 no 6reo de trobo lho . Entao 0 vclcr
campo fl, de modo que correspoadam com todos as valcres. outre a de f2 e com porodo com 0 vclc r de f2 no 6rec de trobolho e ossim
campo Default Key (f3) e configurado como ' BB'. par dionte . Se todos forem ig uois, sy-subrc ser6 co nfigurodo como
• ' A linha 16 executa uma pesquisa biniria quanta a uma linha que O. Se a lgum fo r dtlerente, sy- s ubr c se m configurodo como 2.
contenha ' B8 1 no componente ra all f ields Icdcs cs compos sdc compo rados , com o descritc para f1 f2 . . . .
no fi el ds Nenhum compo e compo rodo . Esse e 0 pcdreo.
• Depois da pesquisa, a safda mos trari que sy- subrc foi configurada
como zero. indicando que umalinha,ccrrespondente com as criterios,
foi localizada. Sy-tabi x contem 2, au seja, 0 numero de linha relative A Listagem 11.9 fomece exernplos.
cia linha corr espo nden re. A linha de cabecalho foi preenchi da com 0
conteddo da linha correspondence e foi escri ta, Listagem 11.9 A odit;co comp aring ir6 configuror 0 va lor de sy-subrc
como 2 sempre que: as ca mpos forem diferentes .
• A linha 21 limp a a linha de cabecalho.
1 report ztxl109.
• A linha 22 coloca urn '30 'e ' AA' nos campos D efault Key fl e f3 .
2 data: begin of it occurs 3.
• A linha 23 executa uma pesqu isa biriiria qu anta a f1 .. '30 ' e f 3 3 fl(2) type n,
' AA' . 0 valor de ret orno de sy-subrc e 4. Isso ind ica. que uma linha 4 f2 type t ,
correspondente nao foi encont rada e sy- ta bi x contem 3 - 0 ndmero 5 f 3(2) t ype c.
6 f4 type p,
de linhas na tabela. a conteudo da linha de cabecalho p erm anece 7 end of it , .
inalterado, au seja da mesma forma como estava na linha 22. 8 wa 11ke it~
Nesse exemplo, a tabela interna contem apenas algumas linhas, sendo 9
10 it-fl ... ' 10' . i t -f3 • 'M ' . t t -f2 • it- f4 • 1. append it .
assim bi nary search nao produ ziria uma melhora mensuravel no desempenho.
11 it- f l · ' 20' . it·f3 • ' BB' . i t · f2 • ft - f4 • 2 . append it.
Poi apenas inclujda p ara ilustrar 0 modo como deve ser utilizada. 12 ft -fl z ' 3D' . it-f3 '" 'CC'• it -f2 · 1t -f 4 • 3 . append it .
13
14 read t abl e it i ndex 2 cOOlparing f 1.
A i nstrv~ao read table pede openos ser utilizoda para 0 Ielturc de 15 write : I 'sy-subrc - ", sy-subrc ,
to belos Internes. Nee funciono com tabelos de bonco de dodos. Utilize 16 / "sy-tebtx -". sy-tab1x ,
em seu luga r sel ect s ing le. 17 / it-fl. 1t -f2. it- f3, tt-f4.
18
19 r ead tab l e it i nto wa ind ex 1 compar ing f 2 f4 .
Utiliza ndo a odi~ao compa ri n9 20 ...r ite: I .
comparing detecta as diferencas entre 0 ccnteudo da area de tra balho e de urna 21 / "sy-sucr c - ", sv- subr c,
linha que foi loca.lizada antes de ser colocada na area de trabalho. Utilize-o
22 I "sy-tebt x . ', sy- t abix ,
23 / i t - fl, i t-f2. it-f3 . 1t.f4.
jun tam en te com inde x au with key. Se, dep ois de localiz.ada uma linha, 0 24 I wa- fl , wa-f2. wa-f3 . wa-f4.
con eee dc da Irea de trahalho for 0 mesmo da linha localizada, sy-s ubr c sera O. 25
Se 0 conteudo for diferente, sy-subrc sed 2 e 0 contecdo sed sobrescrito pela 26it ·wa.
linha localiz.ada. Se a linha nao for localizada, sy- subrc sera 2 e 0 conteudo 27 reed tabl e it with key f3 • ' M' cOlIIpar ing all f1eld s.
permanecera inalterado. 28 write: I,
29 / ' sy- subrt: .'. sy- subrt ,
A Tahela 11.4 descre ve as valores para a expressao de compara~ao (cmpexp 30 / ' sy- ta bi x . ' , sy- ta bilt ,
na sintaxe para read table). 31 I it-fl . it-f2 , it-f3 . it-f4 .
32 / wa-fl, wa-f2, wa-fl, wa-f4.
lI!!!r Y ..

I
_ 1J!II'
----- !!' !!! -- -

314 I 'PREMD' EM21 DIAS ,UP/' D~IU"EUSlllmNA5 315

o c6d.igo na Listagem 11.9 produz esta saida: Tabela 11.5 Formo s de expressao de tronsporte no instruc;oo read table
sv -s ubrc .. 2
Cmpexp Descri ~ Ci o
sy-ta b1x .. 2
20 2 BB 2 f1 12 .. . Depois de lccclbcd c umo linha , 0 valor d e fl no linho iccclhc dc e
sy-subrt: ,. 2 sobreposto 00 vclcr de fl no c rec de trobalho. Em segu ida, 0 valor
sy-hbix ..
de f2 e sobre posta 00 valor de f2 no 6reo de trnbo lho e ass im por
2D. 2 BB 2
d ionte. Some nte os componenfes identificodos op6s transporti ng
10 I M 1
sy-subrc .. o serdo movldcs. Ta dos os c ufros co mpo nentes permcneceroc
sy-tab1x .. Inc iterodc s.
10 M all f i el ds Todos os compos sdo tro nspo rtodo s. Esse e 0 pcdrec e tern 0
10 M mesmo efeito de ignore r a ocliC;do t ranspor t i ng.
no f ields Nenhum compo it tronsportodo. Ne nhum des co mpos no creo de
IHillSE ~ • Na linha 14, index 2 [ocaliza a linba 2 em it. Antes d e a linba ser t rc bclhc e cltercdc.
copiadapara a linha de cabecalhc, 0 valorde fl no corpo e cornparado
com 0 valor de fl na linha de cabecalho. Nesse case, a linha de
. cabecalho ainda ira canter 3 (valor inalterado depois de ser acrescen- Essa adi~ao sera uril,se voce quiser apenas testa! a existencia de uma linha
tada a ultima linha) e a linha localizada ira conter urn 2. Sao diferentes , em um a tabela interna sem alterar 0 conteddc cia linh a de cabecalho , Por
eedc sy-subrc sed configurada como 2. 0 cocceadc da linha ~ tabela exemplo, ant es de acrescentar uma linha, voce pcdera querer determiner se a
interna e eneto copiado para a linha de cabecalho e e sobreposto no 1inha ja exis te na tabel a interna. A Listagem 11.10 fo meee urn exemplo.
conteedo existente.
MlADAIItrr.. Listagem 11 .1 0 A mo ne iro mo is ejlclente de lnserir linh c s em umo
• N. linha 19" Iinha 1 eIocalizada. Os valores de f2 e 14na Iinha 1 do ,. tcbelc interne clcssrhccdc ma ntendo a orde m de c1 ossificac;oa.
corpo sao comparadoscom as ccmponentes cia linhade cabecalhocom
o mesmo nome. A linha de cabecalho con tern a linha 2 (recuperada 1 ~p ort ztxlllD. _·. .
pela instrulSao 14) e, panamo, sao diferemes. Como resu ltado, sy- 2 dat a: begin of it occurs 3,
n(2) type n,
subre econfigurada como 2: 3
4 f2 type t ,
• A linha 26 transfere 0 conteddo de wa para a linha de cabecalho. 5 f3 (2) type c,
6 f4 type p,
• Na linha 27, .uma linha com f3 : 'AA I e procurada. A linha 1 e 7 end of it.
corres pondida, conforme po de ser vista pelos valores de sy- subr c e a
sy- tabix na safda. A linha 1 ja esta na linha de cabecalho, portanto 9 1t ~ fl .. '4 0' . it-f3 .. ' 00'. 1t - f 2 .. itef4 .. 4. append it.
to dos os campos sao correspondidos em valore sy-subrc econfigurada 10 i t -fl .. '2 0' . i t - f 3" ' BB'. i t - f 2 " it-f4" 2 . append it .
como O. u
12 sort it by fl .
13 do 5 t te es.
Uliliza ndo a nd i~c'io transporting 14 i t -fl .. sy- i ndex ... 10.
15 itef3 · 'XX'.
transporti ng afeca 0 modo como campos sao movid os da linha localizada para 16 it-f2 • it- f4 = sy- tndex,
a area de trabalho, Se for especificado, somente os valores do s co mpo nentes 17 re ad ta ble i t
especificados serio movidos para a area de trabalbo . Se urna linh a Ili o for 18 with key fl .. i t -fl
localizada, transporting nao fara nada. 19 binary sea rch
A Tabela 11.5 descreve as valores pan a expressac de cc mp araci c (t exp 20 t ransporting no field s.
21 t f sr -s ubrc <I> D.
na sintaxe para read table) .
22 . in s ert i t i ndex sy- t ebt x,
23 endif.
24 enddo.
25
376 I "lENDA EM 21 DIAS ABAPH D~ IhTABElAS lNTERltAS 377

26 loop at H . Os seguintes pontos se aplicam:


27 ~rit! : I it-fl . u -ra, it-f3 . 1t - f 4.
28 I!ndloop . • ascend;ng e a ordem padrao de classificacao.
• Se desc end; ng aparecer depois de sort e antes de qualqu er nome de
ccmpoaente, ele se tornacl 0 padrac e sera. aplica do em rodos os
o c6digo DOl Listagem 11.10 produz esta safda:
componentes . Esse padrio pede ser anulado em urn componente
SAiDA ~
10 IXX 1 individualao se especificarascend;ogdepois do nome do componente.
20 lBB 2
30 3 XX 3 • Se nenhum componente for especificado, a t abela interne sera classi-
~ 4004 ficada pelos campos Default Key (todos campos de tip o c, 0, P, d e t )
SO 5XX 5
em o rdem ascendecee.
• As linhas 9 e 10 adicionam duas linhas em i t. (Elas estfo propositada- A ordem de classificaljao para linhas com 0 mesmc valor nao eprevisivel.
mente fora de ordem para exemplificacao.} A s linhas que tern 0 mesmc valor em uma coluna classificada podem aparecer
• A linha 12 classifies i t por fl ascendente, de modo que a r ead table em qualquer ordem depois da classifica~ao. A Listagem 11.11 mostra exemplos
seguinte pos sa utilizar a ad.i~o bi nary search. da instrucao sort e tambem ilustra esee ponto .
• A linha 13 executa urn lo op eineovezes . Cada vez que ocorre urn loop) ENTUDA IIltr.. Li st a g e m 11 .11 Utilize 0 instrut;60 sort para reorganizer as lin has de
ela eria uma nova linha para it e a cc loca na linha de cabecalho (linhas ~ uma tobelo intemo
14, 15 . 16). "
1 report ztxllll .
• As linh as 17 e 21 determinam se urn.. linha ja exis re com 0 mes mo
2 data : begi n of. it occurs 5.
valor de fl existente na linha de cabecalho. Se tal linha nao for 3 i 11ke sy- t ndex,
localizsda, sy-subrc sera co nfigurada como diferent e de zero e sy- 4 t,
t abi x sera configurada como a Indi ce da linha com 0 pr6xim o valor 5 end of it.
mais alto au para 0 rnimero de linh as na tabela intern a m ais 1. 6 alpha.(5) value ' eBARB' .
7
• A linha 22 insere a nova linha ant es da linha in dicada por sy- tebt x. S do 5 t 1mes vary i ng it-t from a.l pha+O next alp ha+l .
Isso mantem a ordem atual de classificac ao. 9 1t -1 "' sy- tncex.
10 append it .
Classificando 0 conteudo de wooo lobela interno 11 enddo.
12
Para classificar a conteado de uma tabela interns, utiliz e a instrucao sor t. As linha s 13 loop at it.
podem ser c1assifieadas par urna ou mais colunas em orde rn ascen dente ou 14 write: / f t - t , it-t o
descendente. A pr6pria sequ encia de classifica~o po de tam bern ser modificada. 15 endloop.
16
Sinloxe do instru~ao sort 17 skip.
lS "sort i t by t.
2! A segui r, veja a sin taxe da in strucao sort .
19 loop at i t .
Z sort it [descending] [as t ext] [by /1 [ascend1ng ldescend1ng] [lIS text] /2 .. .] . 20 write: / tt-f , it-t o

~ on de:
21 endloop.

m • it eo no me de uma tabela interna. "


23 ski p.

T • 11 e /2 sao os compcnentes de i t. 24
25
sort it by t .
lo op at it .
• . . . repres enta qualque r numerc de names de campo opcionalmente 26 write : / t t -t , it-t.
seguidos por asc ending) descend ing, e/ ou as text. 27 endl oop.
28
29 skip .
378 I APREND. E. 21 DIAS .8lPH DlA 11< TABELIS UCTElHAS I 379

INillS! ~
30 sort ft by t i. • A s linhas de 2"a 5 definem urna tabela. intern a com dais componentes:
31 loop at it .
t e t . A clausulaoccurs e5 porque a tabelaintem a sera. preenchidacom
32 write : / 1t -:i . t t-t .
33 endtccp . cinco linhas.
3' • A linha 6 define alp ha com o uma variavel do tipo c, comprimento 5,
3S s kip .
e the d. urn valor padrao.
36 sort 1 t by t des cendi ng t •
37 --meSSJO que: sort i t descend i ng by t 'I as ce ndin g. • As linhas de 8 a 11 acrescent am cinco linhas i tabela intema. Cada u rna
38 l oop at i t . ira conter urn a letra de al pha e 0 valo r de sy-t ndex quando a linha for
39 write: l i t -i. it- t o acrescentada.
40 end loop.
41 • A s linhas de 13 a 15 escrevem 0 conteddo da eabela interna. 0 mimero
42 skip . cia linha de sy-tebt x aparece a esquerda cia safda . As linhas cia tabela
43 sort it. intema estao em sua ordem original, sendo assim os valores de sy- t n-
44 *mesmo que: sort i t by t.
45 l oop at 1t .
dex e sy-tabi x sao correspondentes.
46 wri t e : I i t - t o • A linha 18 reorganiza as linhas, de mo do que os va.lores de t fiquem
47 endlo op.
em ordem ascendente.
• Na linha 24, a eabela interna e classificada n ovamente utilizando a
o c6digo na List agem 11.11 produz esta saida: mesma instrucio. Observe que a ordem relativa das Iinhas que tern urn
valor I BI eao ~ mantida. Sevoce quiser que as valores em uma coluna

SAIDI ~
,,
1 C
fiquem em uma ordem part icular, sera preciso especificar isso na
3 A instru~ao sort. A ordem cia linhas que contem valores idec uc os nac e
4 ,
S , conservada durante urna classifica~o.
• N a linha -30, a tabela interna ~ classificaclapor t em ordem ascenden re
,,
A
e, em seguida, por i em o rdem ascen dent e.

, • N a linha 36, a tabela interna Cclassificada p or t em ordem descendence


e, em seguida, par i em ordem ascend ente.
C

., ,,
3 A
S ,

1 C
• A linha 37 mostra uma sintaxe alternariva que ating e a mesmo efeiro
da Iinhe 36. Nessa instrucio, colocando descending depois de it faz
com 0 mesmo fique sendc 0 padrao. 0 com ponente t e, portanto ,
c1assificado em ordem descendente e no componente t . 0 padrf o e
anul ado com a adi~o ascendi ng.

,,,
A
o A linha 43 classifica a tabela intern. pelos campos Default Key (tipos
c, n, d, t e x). Nesse case, hi somenre urn campo em Defaul t Key, t ,
assim sendo a tabela intema classifica em ordem ascendente apen as
C

.
par t.
, ,,
1 C
Ordem de clcsslficcceo e a ad i~ci(j as text
S ,
3 A IOYO Ill... Dentro do sistema aperocio nol, cedo carodere que vod ve na tela e rep re-

,,
A rnMO ~ sentodo por um vclor numer icc . Duronfe umc clossificoc;oo, 0 valor ncmertcc
do ccrcctere de termino 0 ordem resultcnte . Pe r exernplc, quondo um progro ma AW/4
, e exec utod o e m uma plctcl ormc ASCII, 0 letrc 0 tem um volor decima l ASCII de 111 e p
de 112. Portonto, p vern depois de 0 no seq Oencia de d ossificoC;ao. Esso seqOAncia de
C
cla ssificoC;co e denominodo sequencia de c1ossificoC;60 bin6rio.
380 I APlEN DA EM 21 DIAl AUP"

Quando uma linguagem contem caracteres acenruados, hi urn valor 9 tt-t • ' Nubbl e ' . append i t.
10
nurnerico atribuldc para representar cada forma acenruada de urn caractere.
11 write: I 'sy-l angu-' , sy-langu.
Por exemplo, 0 e 0 (0 com urn trema) sao diferentes e, ponanto, caracteres 12 sor t 1t. "cla s s i f i ca per Default Key. t ! do ti po c, portant o class1fica por t.
indepe ndenres, cada urn com urn valor numerico individual. (Em ASCII, 0 13 l oop at a.
valor de 5 e0 decimal 246.) Q uando voce classifies dados contendo caracteres 14 wr ite: I it-t o
acentuados, as formas acentuadas devem aparecer com as formas njio acen- 15 endl ccp.
tuadas. Por exemplo , 0 e ti devam estar juntos e, em seguida, p. Entretanto, as I'
17 skip .
valores bicsrios dos caract eres acentuados e naa acentuados nio seguem uma
18 set loc al e la nguage '0 '. "Equival ent e I ace n t ua ~ ! o em alemlo
sequencia numerics. Portanto, sed necessaria um a maneira de alterar a ordem 19 wri te : I ' sy- la ngu- ' , sy- bngu.
de classifica!rio, de modo que as caracteres acenruados sejam corretamente 20 sort it as text. "as te xt aqui se ap11ca a todos os componentes de t 1po c
classificados. 21 *mesmo que : sort i t by t as t ext .
A adiliao as text modifica a ordem de classificacao, de modo que as Z2 loop at it .
caracteres acentuados sejam corre tamenre classificados. Com as te xt , a Z3 wr a e: I i t-to
Z4 endl oop.
sequencia de classificacic binaria mo eurilizada, Em vel. disso, a ambiente de
text o determina a sequencia de classificacac.
o c6digo na Listagem 11.12 produz est a safda:
NOVO... 0 ambiente de texfo e um eonjunto de cccccerrsnccs cssccicdcs C linguogem
sy- l angu- E
illMO " de logon do usu6rio. ~ determinado pelo e6digo de tdio rnc que voe! digita
H19g1e
quando efetuo logon e eonsiste prindpalmente do eonjunto de eoraderes do idioma e Hoffman
do sequencia de lntercclccoo. Voce tcmbem pede olterar 0 amb iente de texto em tempo Hubbl e
de execv¢o utilizondo a instru¢ o set locale. Esse instru¢ o configura 0 valor de HOl lilian
sy -Lanqu , 0 conjunto de caraderes atva is e 0 sequencia de inte rcoloc;Oo para a
linguoge m escecffccdc. sy-l angu- 0
H19!lle
as seguintes ponros se aplicam para a adi~ao as text: Hoffma n
HOll man
• Pode ap enas ser utilizado com campos de tipo c. Hubble

• Pode ser especifieado dep ois de sort e antes de quaisque r no mes de


IHiJ.ISE~
• As linhas de 6 a 9 adieion am quatro linhas na tabela intema. A da linha
componente. Ne sse case, se apliea a todos as componentes de tipo c
8 coneem urn 0 (0 com tr ema).
utilizados pela classificafjao.
• A linha 11 escreve a linguagern de logon atual.
• P ede ser especificado dep ois de urn nome de componente individual .
Nesse case, se aplica somente aquele componente. • A linha 12 classifica it par Default Key na sequencia de classificacfo
bicaria .de acordo com a linguagem de logon atual. A saida mostra que
A Listagem 11.12 fomeee urn exemplo.
ij vern por ultima na sequencia de classificaci o.

£NTlADI~ Lisfagem 11.12 A dassificoc;ao de corocteres ccentuados requer a usa


do odic;oo as t ext
• Set l ocal e na linha 18 altera 0 ambiente do programa; produz urn
efeito semelhante a acentuacao em alemao. Sy-1 angu e configurada
como D e a conjumo de caracteres do idioma aleruao, bern como as
1 report ztxlll2 . sequencias de inrercalacio sao urilizado s desse p on te em diant e no
2 data: begin of it occurs 4, ,. programa.
3 t (30).
4 end of it. • A linha 20 utiliza sort com a adi~ao as t ext depcis do nome da tabela
S interna. Isso faz com que as text se aplique a todos as compon ent es
6 i t - t • 'Niggle' . append it . do tipo C. Na saida, 0 e 0 aparecem junt os.
7 f t-t • ' Hoffman I. append it .
8 f t-t • 'H6l1man' • .Ippend i t.
.. .. ..- .... .- . . ...... ...... ----- - - - - - -
- - - -.. -

382 I " PUND.. EM21 OIAS ABA P/4

~o
Depo is de cicssificcr as text, n60 utilize read table com a odilWoo
bina ry se arch. As linhos ndc serec clcssftccdc s em ordem bin6rio,
sendo csslm umo pesqulsc bin6ria ter6 resultodos lnco rretos. Pora
utilizor a pesquiso bin6rio com b ito, consuhe a docomentccec de
IFa, a
L--.:-

Utilize a odi¢o bi nary search no


instru¢ o read table. Elo c vmentcrc
---J_ DlA l1:TABEUS lNIDHAS

Nee utilize occurs 0 para tobelos infernos '


com menos de B KB. lsso resulta em
I 383

pclc vrc-chove do ABAP/4 sabre 0 instru<;oo conv ert ; "to sortabl e muito 0 desempenho do pesquiso. superclccccec de memoria e diminui 0
code. de sempenhc.
Utilize a adit;aa index no instrut;oo
read tab le , sempre que passive!. Eo
As seqiiencias de classificacic variam de acordo com as plataformas. Ao maneira mois ropldc de localizer uma
transp ortar de urn sistem a operacional pan outre, as unicas sequencias garan- enicc linha .
tidas de classificacac sao A-Z, a-z e 0-9, mas n~o necessariamente nessa ordem.

• Utilize a instrucao r ead table para [ocalizar urna unica Iinha na tabela
Depo is do dassificoc;ao, voce pede exd uir duplicoC;6es de umo tobelo inte rna. Utilizando a adi!;ao inde x, voce pa den. lo calizar uma unica
interne vtilhcedc a insfruc;oo del ete adjacent dupl i cates , descrito linha peio numero de linha relative . Essa e. a maneir a mais eficiente de .
no dccumentocdc de pclcvrc-chcve do ABAP/4 .
localizar uma linha. Utilizando a adi !;ao wit h key, voce poderf localizar
uma linha especifica ndoum valor a ser localizado. compari ng derermina
Resumo se os valores na area de tra balho sac diferenees dos valores na linha
localizada, transporti ng impede atribuicoes desnecessarias au
• Uma ta bela interna euma cole~o de linhas armazenadas na RAM no
.tribui.6es indesejadas da linha localizadapara a :irea de trabalho.
servidor do aplicatlvo. Consiste em uma linha de cabecalho e urn
corpo. A linha de cabecalho e cp cional. A linha de cabecalho e a :irea • A instru~ao sort classifica uma tabela interna por componentes idea-
de trabalho impHcita da tabela interna. tificados . Se nenhum componente t iver urn nome, a tabela sed classi-
ficada por seus campos D efaul t Key (t ipos c, n, o, t ex).
• A existencia da clausula occurs cri a uma tabela interna, Ela e utilizada
c om o uma diretriz pan 0 sistema alocar mem6ria. Ela nao limita 0
nume ro de linhas qu e v:~ce pede adici onar em uma tabela interna. P&R
• Utilize a instrucao l oop at para recuperar mdltiplas linhas de uma
tabela interns. Cada linha ecolocada na linha de cabecalho ou em um a
are a de trabalho explfcita, um a por vez. U tilize from, to e where para
o Em al gu ns pr cgramas, vi u rn tipo definido pelo usudrio que tern
um a clausula occurs. 0 tipo e en tdo utilizado para definir um
tip o de tabela interna e subsequentemen te uma tabela intema,
esp ecificar as linh as a serem reto madas. Dentro do loo p, sy-tebt x iri
como a apresentada na Lista gem 11.13. Porque isso efcito dessa
center 0 mim er o de linha relative com base em 1. Depois de endl cop,
maneira? Nac se pode sempre definir a tabela inte rna com a
sy-subrc sed zero se q uaisqu er Jinhas riverem side processadas no
instru ~ao data? Qual e 0 motivo da introdu ~o da instru~ao
loop.
types ?
• D entro de urn lo op , a andamento do processamento pod erf ser
alterado por uma in Stru !;aO exit, cont i nue ou check. Exit termina 0
loop e continua com a instru!;ao ap6s endloop . Continue de svia as
OOI.lDI~ Lista g e m 1 1.1 3 Definindo umc tobelo Interne com urn tipo definido
pe lo usu6rio
ins tru!;6es rema nesc entes do lo op e com e!;a imediatam ente a pr6x.ima
ite ra!;ao. Check, dOl mesm a form a qu e continue, tambem co me!;a uma 1 report zt xl1l3 .
2 t ypes: begin of my_type,
no va itera!;ao, mas fara. isso so men te quando sua expressao lo gica for
3 fl .
fa lse. 4 f2 .
5 end of my_type.
6 t _1t type. lIy_ty pe occurs ID.
7 data i t t ype t_ 1t.
--- --
384 I "PRENO" EM 71 Dl"S UAPI4 OIAll :TAI!8.ASJNTERHAS I 385

Nac hi nenhuma vanta gem em utilizar os ti pos de tabela in - disponlve l para reutilizar;oo denf ro de multiplos prog romas . Em minho oplnlcc , utilizor
terns da m ane ira m ostrada na Listagem 11.13. Os rip os serao uma estrofvrc sere bem melho r do que utilizer umo definir;oo types .
a teis som ente se vcce os uri lizar p ara definir mais de urn obj eto Existe apenas uma coisa que urn tipo pode fazer e uma estrurura nao: ele
de dados. Nessa li stagem, ap en as u rn objeto de dados e defi nido pe de canter a defini~o pa~ uma tabela int ema aninhada. Som ente n esse caso
do ripo t_it. Seria mais simples, nesse caso, tirar as instrucdes eu utilizaria urn tipo. Em rodos os outros cases , um a estrutura data begi n of
type s e criar toda a definic ac utiliz ando data. ou l t ke a no DDIC seria ideal.
Teoricamente, os tipos serdo uteis se voce precisar definir multi-
ples cbjer cs de dados que sejam iguais. A List agern 11.14 most ra
tres maneiras de definir multiplas tabelas intern as: utilizan do
Workshop
apenas data (clades), utilizando t ypes e utilizando uma estrutura o Workshop oferece du as maneiras de voce verificar 0 que apr en deu n esre
doDDIC. capitulo . A s e~ao Teste oferece perguntas para ajud ar a solidificar seu entendi-
menta d o coctecdo abordado e a :Se~ao Exercfcio permire que vo ce pratique 0
que aprea deu. Voce p od e encontrar as respostas as perguntas do teste e ao
!N1IlDI~ Listagem 11.14 Deflnir multip les tc belcs internes com t ypes simplificerO
o~ definir;o es exercfcios no Apecdice B, "Respostas as perguctas e aos exercfcios".

,
1 report ztxl113.
Teste
3 • Defi ne 3 tabelas tntemes 1 d ~ nti ca s ut il iza ndo epenas DATA 1. 0 qu e confi gura urn limite para a qu antidade maxima de mem6ria
4 dat a: begin of t t _l a occurs 10, est en dida que pede ser alocada por uma tabela -intem a?
5 fl .
2. P or que nao utilizar occurs 0 se voce pretende arm azenar menos que
6 f2.
7 end of it_la , 8 KB em uma tabela intema?
B t t_lb li ke i t _la occurs 10 wtt h header li ne, 3. Voce pode utili zar a instrucao rea d tab' e para Ier as tabelas de ban co
g i t _Ie l 1k.e i t _la occurs 10 wt tl! header l i ne. de dados ?
I.
11 • Defi ne mats 3 tabelas internas 1denti cu ut ll i zando TYPES
12 types : begin of t _ , Exerdcio 1
13 fl , Exiba e explique as convers6e s que oco rrem ~o programa zt x1l 10 (veja a
14 f2 ,
Listagem 11.15).
15 end of t _,
16 t_it t ype t_ occurs 10.
17 data : it_21 type t_tt. Listagem 11.15 Conve rs6es (Dice: Progrem . > lv1olysis)
18 it_2b type t _it ,
1 repert ztx l lID.
,.
19 i t _2c t ype t_1t.
2 dat a: begin of it occurs 3,
3 fl (2) type n,
21 • Define mafs 3 utilizando urna estrutura do ODI C
22 data: 1t_3a 11ke ztx _it occurs 10 with oI!eader 11ne, 4 f2 type i,
23 i t _3b like zt lUt occur s 10 with header I t ne, 5 f3(2) ty pe c,
24 ft _3c l i ke ztx_it occurs 10 wit h header Hne. 6 f4 type p,
7 end of f t .
S
i g 1t-fl .. ' 40 ' . it-f3 • ' 00' . 1t- f2 .. it-f4 .. 4. append it .
l e
ANALlS~ .... Dos dais primeiros metcdos, uma qcestec de cpinieo direr qual e0 ma is
r
~
r clc rc: oenhum parece termuitas va nta gens sobre a outre. Acreditc qve 0
metcdc, entretanto, seic 0 preferido. E o ma is clorc e pore ver 0 definil;e o voce podero
terceirc
ID 1t -fl • '20'. it-fJ • ' SS' . it- f2 • it- f4 • 2. append it .
11
simplesmente da r urn clique duplo no nome da estruturo do ODIC. Ao visua lizer a 12 sort it ?y fl.
estrutura, 0 que voce estero venda e muito ma is significativo do que umo definir;eo do 13 do 5 times .
ABAP/4 ; hover6 urn texto curto para codo eleme nto de dodos e um pora a pr6pria 14 it-fl· sy· l ndex •. 10.
estruiuro. Essestextos pode m temb em ser programa dos . Alem do mais, 0 estrvtura estorO 15 it·f3 '" 'XX '.
~ - 386'" ..... .....- ~....- ..... ".-............ -.-.- ~ -.., ~ -- -

. PREHO... EM 21 DIAS ABA P!4


-- - -- - -- - r
16 ft-t2 ~ t t -f4 • sy- t ndex.
11 r ead table 11
18 ~th key fl ,; tt-fl
19 binary searc h
20 transporting no fi eld s.
21 11 sy-subrc <> O.
22 insert it i ndex sy-tebtx .
23 endif.
2. enddo .
25
26 loop at it.
21 write: I it-fl. it-f2 , u-n, f t - f 4.
zs endloop .

-,
12
Tabelas internas avan~ada s,
Parte 1
Qbjetivos d""o'--!Clo.!'O.ljPflJ[L!'tUl,Ll.IOL--
.l _
De po is de con cluir este capitulo, voce se.la capaz de:
• Reconhecer 0 operador de corpo ,d~:: tabela e ~tiliza-lo para testar
quanta a. existencia de dados em J i?a tabela interna e comparar 0
con teado de duas tabelas interna s para igualdade
• Determinar a numerc de linhas em uma tabela interna utilizando
deseri be e sy-tfi 11
• Copiar 0 conreudo de uma tabe la interna para uma ou tra ut ilizando 0
operador de corpo de tabela e as"instrucces append lines e i nser t
lines
• Visualizar e mcdificar as tabelas internas utilizan do edi t or- cal l
• ~tilizar as instrucoes i nsert e modi fy par a alterar 0 contecdo da tabela
mtern.
• Excluir as linhas de urna tabela interna utilizando del et e, delete
"
where, clear, clear i t [ J, refresh e f ree
• Preencher uma tabela interna utilizando append sorted bye call ect

hIlpJ I_.CDmpus.com.br
~'i '" ., .~ -­
I I I I II~li .... I I " . . . . . I -. . . . . . • _._~ • • • I . . . . "
~ ..5t
.....0 388 I APRE MOA EM 21 DIAS ABAP/4 OIA12 "BElli INTERNASAVAHIA" ' , PARTE 1 389
I I
Testa ndo e modificc ndo 0 conteudo da tabela i Determinondo se umo tgbelo interng est6 vgzig I'

inte rno Se 0 corpo de uma tabela intema contiver apenas valores iniciais (espacos em
Utilize as seguint es estruturas para tester e modificar 0 conteudo das tabelas
branco e zeros), eia estar.i vazia. Portanto, para determinar se uma tabela I
int ern a contem quaisquer Iinhas, fal$a urn tes te do corp o com a seguinte \
internes:
instrucao:
• 0 ope rador de corpo de tabela
if i t[ ) ts tntttel .
• describe t abl e
Se 0 te ste for verdadeiro, a tab ela interna estara vazia. Q uando false, ela
• append 1i nes ici ce nter p elo menos uma linha.
• in sert li nes
• editor- cal l Determ inando 0 numero de linhas em uma to bel a
• ins ert
interng
• modi fy
Para de terminer 0 numero de linhas em uma tabela interna, utilize a varidvel
sy-tfi 11.Ela e configurada pela ias truclo descri be t abl e.
• fre e
• del ete Sintaxe da instrucco descri be table
en A seguir, veja a sintaxe da instrucao descri be table.
• clear
• re fr esh
Z descri be table it [lines i] [occurs j].

• append sor t ed by S o n de:


• ca ll ect m • it e 0 nome de urna tabela int erna .
o carpa de uma tabela in terna erepresentado pela sintaxe it [ I , onde it ~ • t e j saO variaveis numericas.
e0 nome de qualqu er tab eia in terna. i t [ ] significa "0 corpo cia tabela in tem a
i t ". Nao podehaver nada entre os colchetes; eles devem ser escri tos exatamente
Essa insrrucfo preenche as tres varidveis de sistema mo stradas na "
da fo rm a como mos trado. Voca pode util izar essa sintaxe para executar ope-
rac;6es efici entes de tab ela qu e nao req ue rem 0 usa de uma linha de cabecalho. Tabeia 12.1.
Essas operacoes serao descritas por todo este capftulo.
Ta bela 12.1 A instru<; 60 describe tabl e preenche estes vori6veis de sistema
Se uma rabela intema nao tiver uma lin ha de cabecalho, 0 pr6prio nome
da tabela interna representara 0 corpo. Po r exemplo, se a tabela interna it njio Varlavel
tiver urna linha de cabecalho, voce podera utilizar tanto it [ ] como i t para
sy-t f f l l Namero de linhe s
rep resentar 0 corpo ; eles sio equivalences.
sy.tleng Ccmprimentc de ume llnhc em bytes
sy-tcccu Velor ctuel de d6usule occurs
O bte nd a informo<;6es sabre umo tobelo interno
Voce p ede obter as seguintes informacoes comumen te necessarias sobre uma
Os seguintes pontes se aplicam:
tabel a intema:
• Se a adic;io 1i nes i for especificada, 0 rnim er c de linhas sera colocado
• Se a tabela interna conrern dados
ern sy-t f t l l e f.
• Quantas linhas ela ccntem
• Se a adiC;ao occurs j for especificada, 0 tamanho da clausula occurs
sera colocado em sy-toccu e i.
........ ~ . . - . . - ~ 11' 11' • • • • 11' • • • • - ~ I ..1."' __
O~ lU ABElAS IHmH>S AY'"YlOA5,PAm1 I 391

Ho somente umo insffincio em que sy-toccu ire dife rir do clousulc INltIS~ ~ • A linha 7 campara 0 corpo cia tabela intema utilizando 0 operador de
corpo de tabela com valores iniciais. A tabela int em a ainda nao con tern
occurs no definic;c o de tobelc . Quando sy-tl eng * sy-tcccu > 8192
e depots que umo linho for cdtclcncdc a fobelo intemo , sy-toccu sem
Iinhas, entia 0 teste e verdadeiro.
zero. 1550 indica que a rnem6rio esfd sendo a!ocodo em blocos de 8 • A linha 11 utiliza 0 operador d e cadeia (:) para acrescentar tees linhas
KB porn esse tob elo interne . identicas a it.
• A linha 13 faz novamente urn test e do corp o. Dessa vez, 0 teste e
Progra ma de exem plo que obtern as informac;6es sobre prec edido por urn not logicc. A tabela intem a contem dadcs, entia
um a tabera interno esse test e everdadeiro.
A Listagem 12.1 mostra urn programa de exemplo que ob tem as informacoes .• Depois de cada instrucfo append, 0 valor de sy-tebt x sera configurado
so bre uma tabela intern e. com 0 mimero de linhas na tabe la in tema. A linha 17 escreve seu valor.
• A linha 18 utiliza a instrucao descri be para obrer 0 mimero de linhas
~NTRADA'" Lista ge m 12 . 1 A instrucdc describe table utilize os vcrlovels de sistema e o coloca em sy-tfil1. Tarnbem obtem 0 comp rimento e a tamanhc
,. pora quontfkor 0 ccnteudc de tabela cia linha da clausula occurs e as coloca em sy- t l eng e sy-toccn,
1 report ztx1201 .
2 data : begi n of it occurs 3,
3 fl val ue ' X' , Se voce precise- openos sober se a tobe lo ccntern dodos, ndo quontos
4 end of it, linhos elo possui, utilize 0 operador de corp o de tabe la. He e mots
5 n type 1. efldente do que 0 instrw;ao describe ta bl e.
6.
7 1f H [ ] is i nitia l .
8 writ e: I "tt is empty ' . Copiondo dodos de umo tobelo interno para
9 endif.
10
uma outre
11 append: tt , it , tt . "seee t hent e a escrever 'append i t' 3 vezes • Se duas tabelas internas tiverem a mesma estrutura, ut ilize a seguinte insrrucao
12 para duplicar D conteudc de uma tabela interna em Dutra:
13 ;f not H [ ] i s i nit ial .
14 write: / ' it i s not empty'. " m[ 1• j tl [ ] .
15 endif .
16
17 wrtte: I ' number of rows f rom sy- tebtx" , sy-te btx. Duos tobelos internos terec 0 mesmo estrutvro se 1) ambos tlverem 0
18 describe t abl e 1t li nes n. mesmo numerc de componentes e 2) 0 tipo de dodo e comprimento
19 write : / 'n~er of rows from sy-tfn 1: ' • sy-tfil1 , de codo componente fore m iguois 005 do compo nente correspondente
20 I ' l engt h of a row from sy- tleng:' , 5y-t1eng, do outro tobe la inteme . Somente os names de componente ndc
21 I 'oc curs val ue f rom sy-toccu:' , sy-tcccu . precisom corresponder.

o c6dig o na Listag em 12.1 produz esta safda: A inscrucao anterior copia 0 conteudo do corpo de it! e 0 coloca no corpo
de ; t2. Qualquer conteudo existente em i t2 sera sobrescrito. 0 conreado das
SAiDA ~
it i s empty
it i 5 not empty linhas de cabecalho, se uma das tabelas intemas river uma linha de cabecalho,
number of r ows from sy-tabix:" permanecerf inalteradc. Essa e a maneira mais eficiente de copiar 0 conteudo
number of rows from 5y-tfi 11: de um a tabela intema para outra.
l engt h of a row from sy-tl enq:
occurs val ue from sy-tcccu . 3
~IIIIIIIIIII················· · · · - - - - l
APREND! EM 21 0lA5 ABAPI4 oa12,lABEUS IKTEl<NASAVAN\ADAS, PAm1 393

Copiando umo porte de umo tobelo interno Sintoxe do instru~ao insert 1i nes
Se voce quiser copiar uma parte de urna tabela interna para ou tra, OU se voce
quiser deix ar 0 conteddo cia tabel a alvo, utilize as instI11~6es append 1i nes e
I
-
c.n
Z
A segui r, veja a sintax e cia insrruga o 1nsert 1i nes.
i nse rt lines of ttl [f l'Oll nil [t o nt] into tt2 [index nb].
i nse rt l ines.
~ onde :
m • i tl e i t2 sao as tabe1as in tern as c~m ou sem l.inhas de cabecalho.
Utilizondo 0 instru~cio append 1i nes
U tilize a instru~o append 1ines quando quiser acrescentar linhas ao final da T • nf, nt e nb sao cons tantes, litems ou variaveis num ericas .
ta bel a alva .

Todos as pont os que se aplicam a instrolJio append li nes tambem se


Sintoxe do instrucco append 1i ne s aplicam aqui . A diferenca e que as 1inhas de t tl sao inseridas em tt2 antes do

-
III
Z
A seguir, veja a sintaxe da inst ru cao append 1i nes.
append l1 nes of ttl [from nf] [to nt) to it2.
!,
ntimerc da linha nb. Se a valor de nb for 0 na merc de 1inhas em i t 2 mais 1, a
linha sera acresceo ra'aa ao final de tt2. Se nb for maier, a linha Dio sed.

S
m
cede:
• t t l e i t2 sao as tabelas internas com au sem linhas de cabecalho.
I
I
acres centada e sy-subrc sera confi gurada como 4. Se nb for menor que 1, urn
erro em temp o de execuljio c corr era,
Voc e pede utilizar essa instrucio den tro au fora de loop at tt2. Se

~ • nf e nt sao con stantes,literais au variaveis numeric as.


utilizada fora. voce devers especificar a adiljao ind ex. Se utilizada dentro, 1ndex
sera opcion al. Se a adilJao Dio for especiflcada, 0 rnimero dalinha are al em i t2

O sseguinres pontes se aplicam :


• As estruturas de itl e itZ devem corr esponder.
! sera assu mida.

Progra ma de exemplo que copia os dados e ntre as


• nf eo Iodice da primeira linha a ser copiado de t t l . Se a adiljao fr om tobe los internos
nao for especificada, a c6pia cornecaraa parti r daprimeira linha de i tl . A Listagem 12.2 mostra urn prograrna de ex emplo que copia os dados de uma
tab eia interns para outra .
• nt ea indice da ultima linha a ser cop iado de ttl. Se a adilJao to nao
for especificada, a c6pia continuara ate a ulti~a linha de ttl. .
ENTRADA'" Ustagem 12.2 Este pragrama copia as dodos de umo tabelo interne
• Se nem from nem to forem especificada s, a tabela inte ira sen acrescen- ~ para outra utilizondo os instruc;6es append lines e i nsert lines
tada. .
1 r~port ztx1202.
• Depois que a instrucio append 1i nes for executada, sy- tebt x iracanter 2 datil : best n of i tl occurs 10,
o mimero de linhas na tab ela. 3 fl.
•S end of lU •
HZ 1i ke i tl occurs 10 with header 11ne,
Utilize r append l t nes sera de tres 0 quotro veees mois rOp ido do que 6 alph a(lO) val ue ' A"BCOEFGHIJ ' .
utilizor append poro odicio nor os linhos umo de codo vez. 7

,
8 do 10 t tee s varyi ng 1tl-fl from al pha+Q next al pha+l.
append t t f ,
Utilizondo 0 instru~cio insert 1i nes to enddc.
U tilize a instrucio i nsert 1i nes quand o quiser inserir as linhas em um Ingar 11
12 append lines of it! fTOll 2 to 5 t o it2 .
dif er en re d o final cia tab ela-alvo.
13 l oop at ttz ,
14 write uz-n .
15 endloop.
16
17 i nsert j tn es of it! fJ"OOl 8 i nt o it2 t ndex 2.
~~~~~~~~~~~~ I I I I •• I ••••• • • • • • • • • • • • • • • • • • • • • • • • •
'" ~!.I
394 A/ RENDA EM 11 D'AS AU/ /. DlllUABlliS INlERNASAVAll(AIlAS.IARTn 395

18 ski p.
19 loop at ttz , Compo rg ndo 0 conteudo d e duos tobelos internos
20 wrtt~ itl-fl . Voce pode u tilizer 0 operador de co rpo de tabela para comparar 0 comeadc de
21 endloop.
duas tabelas intemas, co mo pode sec visto a seguin
22
23 l oop at 1t2. i f itI[] • i t 2[ 1.
24. if t t Z- fl >. ' E'.
Para utilizar essa estrurura, as tabelas intemas deverac ter a mesma
25 insert l ines of i tt to 1 into tt2.
26 end1f. estrutura, Se elas n io tiverem a mesma estru rura, voc e tera. que com pari-las
27 endloop. manualmente, linh a po r linha . .
28 Essa ins t ru~ao sera verdadeira quando iti e H 2 contiverem 0 mesmo
29 skip. mime ro de linhas e 0 conreado de cada linha for 0 mesmo.
30 l oop at tt2.
31 writt!! 1t2-f1.
32 endloop .
33
A instrulioo If - Equal t o e 0 moneiro mcls eficlente de comporar 0
34 sk i p. contendc de duos tobe los intemos.
35 i t2 [ ] • i tl [ ] .
36 loop at ill.
37 write rez-n. Utiliza ndo a instru~ao edi tor- ca l l
38 endloop. A instru~ao edt t or- call exibe 0 co c ceudo de urna tabela interna para 0 ususrio
em urn editor se m elhanre 41.0 edit or de c6digo-fonte do ABAP/ 4. E uti! para
o c6digo na Lisragem 12.2 pr oduz esta saida: depura.~o e como uma interface simples a fim de permitir 41.0 usuirio digitar e
modificar os dados em forma de tabelas.
8 C0 [

BH IJCO E Sintoxe do instruljo o ed i tor- call


B A H A l A J CD A E !!! A seguir, veja a sin taxe da ins tru~ao editor-call.

A BC D E F G H I J
Z editor-call for it [title el [display mode]

~ onde:
AHiLlS£~ • As linhas de 8 a 10 preen ch em i tl co m 10 linhas con te nd o as primeiras m • it ~ 0 nome de urna tabela in tem a.
10 letras do alfab eto. .
• A linha 12 acrescen ta as linh as de 2 a 5 de i tl para i tZ. i t 2 tern agora T • t eum literal, constante ou variavel.
quatro linhas contendo as let ras de B a E.
• N a linh a 17, a adi~ao t o nao esti especifica da, entdo 0 final de i tl e Os seguintes pontes se aplicam :
assumido. Is so ins ere as linhas 8, 9 e 10 de i tl em 1t2 antes cia linha • it pode apenas conter com ponen tes do ripe c.
2.
• 0 comprimeato maximo de uma linha e de 72 caract eres.
• Na linha 24) se a Ietra em it2-fl for maior que au igual a E, a linh a 1
• te o te xto exibido na barra de tfrulos da janela do editor.
de itl sera ins erida an tes cia linh a atual de i t2 . (A adilj:io f r omnio esta
especificada, entao 0 inicio de 1t 1 eassumido.) 1550 resul ta na inser~io • A adi<jao di spl ay mode faz com que os clados sejam exibidos no editor
de quatro linhas . Na saida, sio os valcres I A' . em modo de exibicsc . 0 usuario sera. capaz de p esquisar e rolar, mas
nao sera. capaz de alterar a cc nteud o.
• A linha 35 copia 0 conteudo de i tl para it2, sobrepondo com ple-
tamente 0 conteddo exist ent e, Depois de visua lizar ou mo dificar 0 conteudo da tabela inte rna atraves
do editor, 0 usuario pressionara um destes botoes: Save, Back, Exit ou Cancel.
Save grava as alteracoes feitas 41.0 con teddo da tabel a inrern a e retorna 41.0
XXIIIIIIIII •• I II •••••• • • • • • • • • • ••• _
... ----- -- -
396 APREH OA EM ' 1 DIAl ABAP/' D. 1UABElAS INTElHAS AVAH\ADAS. PARTE 1 397

programa. Back, Exit e Cance l saem do editor e retomam ao programa. Se 23 loop It it .


24 \IIrHe: I it-to
alreracoes tiverem sido feitas, sera solicitado 010 usudrio salvar au cancelar as
25 endloop.
alceracoes.
Depois que a instrucac edi tor-call for executada, sy-subrc sen configu-
rada com as valo res mostrados na T abela 12.2. Se nenhum dado tiver sido digitad o quando 0 editor foi exibido , 0 cedigo
na Listagem 12.3 produzirf esta safda:
Ta bela 12.2 Volores de sy-subrc depois do instruc;oo editor-cal l Data was not changed
sy-sub rc Significado Haee
o Uma grovo¢o foi executcdc . 0 ccntecdo do tcbelo interne pode ou Address
Phone
nOD fer side olterodo.
F~efo l"lll Text
4 o usu6rio noo executcu urne aC;Cia solvor. 0 conteudc do tobelo
interno est6 inolterodo.

• As linhas de 2 a 4 definem urna tabela intema que tern urn dnic o


. A Listagem 12.3 mostra urn programa de exemplo que utiliza a instntc;ao componente t, comprimentc de caractere s 72.
edi tor -ca 11. Nesse exemplo, a tabela interna e preenchida corn cinco linhas e
• A linha 5 define uma segunda tabela interna igual aprimeira. Ela sera
e exibida no editor. de modo que a usuario possa modificar as dados. 0
utilizada para armazenar urna c6pia de referencia dos dado s em it. Ela
conteddc e entao escrito e uma men sagem-tambem e escrita a fim de indicar
se uma alten!;aO foi execurada.
nao tern uma linha de cabecalho. A linha de cabecalho foi ignorada ja
que nao era necessaria nesse programa.
Listagem 12.3 Utilize a instrw;co editor-call paro visualizor, editor e • As linhas de 7 a 11 acrescentam cinco linhas a tabela intern a a partir
depurcr 0 ccnteedo de uma tcbelo inte rne . da linha de cabecalho.
1 report ztxI2.03. • A linlla-13 copia 0 corpo de it para 0 corpo de sa ve_H. ] i que save_i t
z dat a: begin of it occurs 10, nao tern uma linha de cabecalho, 0 lade esquerd o da atribuicao pode
3 t(i!), "t ext o ser escritc com ou sem colchetes.

I
end of it,
save_it l1ke 1t occurs 10. "ira center a c6pia do or ig ina l
• A linha 14 exibe 0 conteedo da tabela interna no edi tor com 0 titulo
6 Freeform Entry.
7 tt -t > 'Na~ :'. append it. • A linha 15 verifica 0 valor de sy-subr-c para determinar se 0 usuirio
8 it· t · 'Address : ' . append i t.
executou urn a~o salver. Se ele nao executou, provavelrnente os dadcs
9 1t-t · ' Phone : I . append it.
; 10 1t -t = ' Freeform Text append 1t.
nac foram alterados e uma mensagem sera escriea.
'j 11 clea r it-t with ' -'. append It . • A linha 17 compara 0 novo cocteedo de it com a c6pia de referencia
I 12 em save_it . Se forem diferenres, uma mensagem sed escri ta. Se forem
1.1
13 save_i t - H[] . "sese t hente a: save_it [ ] • H [ ] .
Ii 14 editor-ca ll for it t i tl e ' Freefonn Entry' .
iguais, a linha 20 escrevers uma mensagem para qu e isso seja indi cado.
.
I'
I 15
16
if sy- subrc • 4.
write : I ' Data was not changed'.
"0 usuartc n~o executou uma al;~o server • A linha 22 escreve urna sublinha com 72 cara cte re s de comprimenrc.

17 elseif save_it[ ] < > i t [ ] . -0 usuario executou IJlIIa alj:ao salvar


• As linhas de 23 a 25 es crevem 0 novo conteudo da tabela in terne,

18 \IIrHe: I ' Data was changed'. incluindo quaisquer modificacces feitas pelo usuario.
19 else .
20 \IIr1te : I 'Data \liAS not changMl '.
21 endif.
Inserindo linbos e m um o to be lo interno
22 write: I sy- ul1ne(72). Para inserir uma tinica linh a em uma tabela interns, utilize a instrucac i nsert .
..-. . . . . . . . .&.&..&...-..-.... I I I I I I -I . . . . . . . .. --- --- - - - -

APR EN DA EM21 DIA S AU P/4 .~ lHABELlS IIITERH.lS AVAN(AO.\S, PARTE I 399

16 endloop.
Sintoxe do instrU!;oo insert 17
U't A seguir, veja a sintaxe da instrucic insert. 18 loop at i t where fl :>. 4.•

Z insert [11'0 1nt o] i t [i ndex II]


19
20
1t - fl • - 88.
i nsert it.

S
m
cede:
• wa eum a area de t rabalhc com a mesma estrutura de uma linha cia tabela
int ema i t.
21
22
endl oop.

23 skip .

T • n eurn constante. Iiteral au varisvel numerics.


24 l oop at it.
25 write / 1t- fl .
26 endl oop.

Os seguintes pontos 5C aplicam: a codigo na Listagem 12.4 produz esta safda:


• Se Il'Q for especificado, 0 comeddc de va sera inseridc em it . 'fila devers 1
tee a mesma estrutura que it . 2
99-
• Se Il'O nao for especificado, 0 comeedc da linha de cabecalho sen
inserido em i t . Se it nao civet uma linh a de cabe~allio,ll'a cle ver! set
3
,
especificado. 5

• Se index for especificado, a nova linha sera inserida antes da linha n. A 1


2
linhan se tomara enta o a linha n+ 1.
• A ins tru~o i nser t p ede ser utilizada dectrc au fora de loop at it.
"- 3
Se urilizada fora, a adi~o index devera ser especificada . Se utilizada
derrtro, i ndex sera op cional. Se a adi~io Da O for especificada, a linha
,
88-

88-
atual sera assumida. 5

A Listag em 1 2.~ con rem urn prognma de exemplo que utiliza a instrucio
illUSE ~
• As linhas de 6 a 9 acrescentam cinco linhas contendo os numeros de
i nsert.
laSemi t.

EH1IJDA~ Llstagem 12.4 Utilize a instruc;ao insert perc inserir uma (mica linha • Alinha 11 atribui ao componente de liaha de cabecalho it·fl urn valor
em uma tabela intema ~-~. .
• A linha 12 insere a linh a de cabecalho de it com o uma nova linha no
1 r eport zt x1204.
2 data: begin of i t occurs 5, corpo de it antes da linha 3. A linha existence 3 tcrna-se a linha 4

,
3 fl l1ke sy-tneex,
end of it .

depois da insercso.
A linha 18 recupera essas linhas da tab ela in terna que tern um valor f1
5
maier que ou igual a 4. Antes de cada linha, a linha 20 inse re uma nova
6 do 5 t i mes .
7 It - fl • sy-tnde x, linha a partir da linha de cabecalhc de it. Antes da inser<;ao, a linha 19
,
8 append it.
eneeo.
alte rou 0 componente fl para que 0 m esmo contivesse ·88.

I.
11 it ·f1 • -99. Depois que coda instnH;60 1nsert for eecveec, 0 sistema indexa r6
12 i nsert it ; ndex 3. navome nte todas as llnhcs cbcixc do inserida. lsso introduzir6overhead
13 q uando voce Inse rir linhas pr6ximos 0 0 inicio de umo grande tebelc
14 l oop at 1t. interne. Se voc e precisor inserir um bloco de linhos em umo grande
15 wrt te / it-fI. tobelc Interne, prepare u ma outre to belo com as ltnhcs 0 serem
-. • • • • • • . -.~. • • w • ~ • w • ~ _ - . ~. ~

400 UREH DA EM 21 DIA SABA P/4

Os seguintes pontas se aplicam :


inseridos e utilize insert lines porsuo Vel . As linhos no tobelo a lve senSe
nova mente indexodos apenos umo unico vez, depois que esse instruc;ao • Se from va for esp ecific ada, a linha sed, scbrescrita com 0 conteudo de
for execvtedo. 00 .

• Se from vo me forespecificada, a linha sera sobrescritacom 0 conteedo


Ao inserir urna n ova linha em it dentro de loo p at it. a inser~ao eao d. linha de cabecalho.
afetari imediaumente a tabela interna mas, em vez disso, elase tomara efetiva
• Se i ndex n fo r especificada, n identificari a n6 mero cia linha que foi
oa pr6xima passagem do loop. Ao inseri r urna linha tkpois da linha atual, a
scbrescrita,
tabel a sed novamen te indexada em endloop, sy-tebf x sera incr emen tada e a
pr6xima passagem do loop pr ocessara a linha indicada po r sy- t abix. Por • modify i t pede ser especificada dentro ou fora de 1cop at it. Se
exemplo, suponha que voce esra. na terceira passagem do loop e ins ere urn especificada fora, i ndex n devers ser especificado. Quando especifl -
regiscro antes da linha 4. Quando endl oop ~ executada, a nova linha se toma a .ada dentro, ind ex n sera,op cional. Se nao fa r especificada, a 1inha atual
Iinha 4, a l.inha 4 anti ga se toma a linh a 5 e assim por dian te. Sy-te bfx e sed modificada.
incrementada em 1 ponto e a pr6xima passagem do loop processa 0 regisrro transport i n9 especifica quais compenentes devem ser sobrescritos. Sem
rece ntemente inserido. ela, todos eles sersc sobrescritos . Com ela, sornente os compcnentes especifi-
Set den tr o de urn lo op , voce inserir uma linha antes cia linha atual, a tabela cade s serac sobrescri tcs. 0 restante p ermanecerf inalterado.
sed novamente reinde xada em endlo op. D essa vee, entr etanto, sy-tebtx e Especificar uma condicacwhere depois de transport l ng fara com que as
incrementada par 1 mais a ntimerc de linbas.inseridas antes cia linha atu aL Da componentes especificadas sejam sobrescrieos em todas as linhas que saris-
pr6 xima vez que ocorrer 0 loop, a linha depois da linha atual sera processada. fazem a clausula where. 0 lade esquerdo de ada parte de exp deve especificar
Suponha, por exemplo , que voce insira na terceira pas sagem do loop uma linha urn componente de it . 0 mesmc componente pode ser espe cifi cado depois de
an tes ds linha 3. Em endl oop, a nova linh a se torna a linha 3, a linha 3 se torna
transporting e em exp o
a linha .. e assim p ar diante . A linh a que voce acaba de processar agora ted um
VocE. nio podera utilizar modify it com where:
Indice de 4. sy- t abi x eincremea t ada per 2,0 que cia S. A linha 4 fo i reindexada
para 5, sen do assim sera processada na pr6xima passagem do loop. • Dentro de lo op at i t
• Com a adi~ao in dex
Modificoodo as Hobos em umo to bela inte rno A Listagem 12.5 m ostra urn pr ograma de exemplo que m odifica 0 coo-
Para m odificar 0 conte6do de uma au m ais linha s de um a tebela in tema, utilize teadc de uma rabela interna.
a ins t ru~ ao modi fy.
Listagem 12.5 Utilize modify pa ra sob rescrever 0 conte udo existente de
Sintoxe do instruc;cio modify EHTRAOA~ uma ou mais lin has de uma tabela inte rne

-
tn
Z
A seguir, veja a sintaxe da instruci o modi fy.
modify i t [f rom 11'!1] [ind ex n] [transporting cl c2 • • • [where exp] ]
1 report ztx120 S.
• Z data: begi n of it occurs 5,

~
3 fl 1i ke sy-tndex,
onde: 4 f2 ,

...
5 end of it.
m • it e0 nome de um a tabelaintem a com au sem uma linh a de cabecalho.
6 alpha (5) val ue ' -'BeDE' .
• va e uma area de tr abalh o co m a mesma estrutura de uma linha no 7
corpo de i t . 8 do 5 time s varyi ng it-f2 f rom al ptla+O next alpha+l.
9 it-fl·· .. sy-index.
• n e uma cons tante, variivel au literal numerico. 10 append 1t.
• c1 e c2 sao compenente s de i t. 11 enddo.
1Z
• e
exp uma expressaa logica envelveodo componentes de it. 13 tt-f2 • 'l ' .
14 modify i t i ndex 4.
15
.........................................L..lL..lL..O.......................a...L.&. I .I- ~I I I I I 11 11 ...........
• .. .. .. • W • . -. i
402 APREN oA EM 21 nus ABA P/4 O~ 12. lABIUS IH1WIAS AVAHIAOAS.PAmI 403

16 l oop at 1t. • As linhas de 20 a 23 executam urn loop por todas as linhas de it,
17 write: I n - n, it-f2. colocandc cada linha, uma de cada vez, na linha de cabecalho . A linha
18 endl oop.
21 mu ltiplica po r 2 0 conteudo do cemponente da linha de cabecalho
19
20 l oop at it. flo A linha 22 copia 0 conteudc da linha de cabecalhc de volta para a
21 ft -fl • 1t-fl .. 2. linha atual no corpo de it, sobrescrevend o-o.
22 llIOdify it . • A linha 30 mo difica 0 coneea do do cornp onente da linha de cabecalho
Z3 endloop.
. f2, at ribuindo a ele urn.valo r de 'XI.
2'
25 ski p. • A linha 31 modifica todas as linhas n o corpo onde fl njo eigual a 10.
26 l oop at i t . Somente 0 valo r de f2 e copiado da linha de cabecalbc e scbrescreve
27 write: I it-fl . H-fl.
as valores de f2 no corpo. fl permanece inalterado no corpo e na linha
28 endloop .
29 de cabecalbo.
30 1t -fZ • 'X'.
31 modify it t r ansporti ng f2 where fl <> 10.
32
Excluindo 0 conteudo do tobelo interno
33 skip . Para excluir 0 conteddc de uma tab ela in tem a, voce pcderd ut ilizar as seguintes
34 l oop at It . insrrugoes:
3S write: I it-fl . it -f 2.
36 endloop . • free
• refre sh
o c6digo na Listagem 12.5 produz esta saida: • clear
• delete
Sllol ~
1 A
2 B
3 C
5 2
Utiliza ndo free para excluir 0 conte udo da tabela
5 , inte rna
2 A
Utilize a instru~ao free para excluir tcdas as linhas de uma eabela interna e
, B liberar a mem6ria associada.
6 C
10 Z Sintoxe do instru~ao free
10 E
A seguir, vejs a sintaxe da instruc;ao free.
2 X f ree it.
, X
6 X onde:
10 Z
10 , • tt eu ma eabela intema com au sem urna linha de cabecalho.
• As linhas de 8 a 11 adicionam cinco linhas em it. C ada linha contem
urn mimero e Ietra do alfabero sequenciais. Os seguintes pont os se aplicam :
• A linha 13 modifica 0 con teddo de it-f2, dando a ele urn valor de IZ' . • Todas as linhas sao exclutdas e toda a mem6ria urilizada pelo corpo. da
t t-f l DaD foi modificado, enno ainda conterd 0 ultimo valor adi- tabela interne e liberada.
cionado na tabela: 5. • A linha de cabecalho, se exisrir, permanecerd inalterada.
• A linha 14 sobrescrevea linha 4 corn 0 comeodc da linha de cabecalho,
alterandc f 1 para 5 e f2 para 2.
~ . I.-I

404
I I"'I I I -I I -I I I I • I • •-.

'PIEND' 1M 21 DIAS"",.
I I . -. . - - - -- .. - -- - -
DIA lH'BELAS INIDNAS'V"(ADAS. PARTE 1 40S
-

Emboro c memoria para as tc belcs internes seja cctcrncflccmente Utilizando refresh pa ra excluir 0 conte udo do tabela
libe rcdo durante fino l jzo~oo de seu progromo, se voce mesmo a llbercr
sere normo lmenfe mois eficiente. A raze o disso recc i sa bre 0 fato de
interno
que quando a se ide for exibido para 0 usu6rio, tecnicomente seu U tilize a instn1~ao refresh para excluir toda.s linhas de uma tabela interna, mas
prograrno oinde noo tero sido finolizodo . Todos as recursos permcne- deixe a memoria alocada,
ee eee o locodos e 0 progro mo nOo termincrO ate a usu6rio pressionor
a bettie Bock. lsso, finalme nte, terminc se u progro mo e Hbe rc tcd c 0 Sintoxe do instru~6 0 refresh
ccn tevdc do tcbelc infe rno. Voce poder6 ltbe rcr a s tobelos Internes
A seguir, veja a sintaxe da inStru~o refres h.
antedpodomente colocondo as instruc;6es free 00 final de seu pro-
a
grama. contecdo do tobelc interne ser6 liberodo ante s de 0 usuc ric r ef resh tt ,
ver a listc e nco depois d isso .
onde:

Utilize free quando terminar de urilizar urn. tabela interna.


• it euma tabela intema co m ou sem urna linha de cabecalho.
A Listagem 12.6 mos tra como utilizar a instro~ao f ree.
05 seguintes pontos se aplicam:
ENruOA~ Listag em 12.6 Utilize a instru.;co free pore excluir tcd cs as linhos de
umc tobela interne e hbercr a mem6rio ossociado • T odas as linhas sao excluidas. T oda a m em o ria utilizada pelc corp o cia
tab ela interna permanece alocada.
I report ztxl206.
2 data: begin of it occurs 3. • A linha de cabecalho, se exiscir, permaaecer f inal terada,
3 11 11ke sy- t ndex, U tili ze refresh quando quiser excluir to das as linhas, mas quiser pr een-

5
end of i t. cher a eabela intema novamente. Por exemplo, se esti ver produzindo urn
relat6rio de vendaspor departamento, voce podera preencher a tabela in tem a
s do ·3 ttees ,
7 it -f1 .. sy- t ndex, com todas as vendas de urn departamento, processar os dados e, em segu ida,
8 Append ft . escreve-los. E nrao, depois de r efre sh, voce poderf preench er a tab ela interna
9 enddo. co m os dados do proximo depart amento, escreve-lcs e assim po r dian te.
1D Se voce quiser pr eencher uma tabela imediatamente depois de [impa-la,
11 l oop at it.
refresh sera mais eficiente do que free ja que impede alocacoes des neces sarias
12 wri t e it-flo
13 endloop . de mem6ria.
I' A Listagem 12.7 mos tra co mo utilizar a insrrucao re f resh .
15 fr ee 1t .
16 1f H[ ] is initial.
17 write: / ' no rows exist in it after free '. ENllAOA~ Listagem 12.7 Util ize a instrur;o o refresh perc excluir tod cs as linhc s de
um a tobe lc interne
18 end1f .
1 r@port ztx 1207.
2 dat a: begin of it occurs 3.
o co digc na Lisragem 12.6 produz esta saIda: 3 11 11k@sy-t ndex,
4 end of it.
1 2 3 S 11k!! sy-i nd@x.
IAIOA ~ no rows exist in 1t after f ree s
7 do 3 t tees .
ANALISE ~ A linho 15 exclui tod as as linhas do tob elo lntem c e hbere 0 mem 6rio ossociodo . 8 t • sy-t neex.
9 do 3 times.
lD i t -fl· i * sy- tndex.
11 append it.
12 enddo.
II" • • I -.""" .....-......-••-. __ ... - ... __ ... -_ ...
406 APiE .DA EM21 DIAS AIAPH D~ IU A8El.\S INTEiHASAVIJl(ADAl, PAmI I 407

13 write: I " . Sintaxe da i n stru ~ao cl ear quando utilizada com uma tabela
14 l oop at it.
15 write it-fl.
interna
16 endJoop. III A seguir, veja a sintaxe da instru~ao clear quando ut ilizada co m u ma tabela
17
18
ref resh it.
enddo.
Z intema.

19
20 free it . S
m
cl ear i t : cl ear t t[ ]

on de:

o c6digo na Listagem 12.7 pr oduz esta saida:


T • it e 0 no me de um a tabela intern a. _
1 2 3
SAloA ~ 24 6 Os segu intes pontos se aplicam :
3 6 ,
• Se i t tiver uma linh a de cabecalho, c1ear i t [ ] excluiratodas as linhas.
c1ear it limpara a Iiaha de cabecalhc.
ANilJS!~ . • A linh.a 7 ccmeca urn loop que e executado ues vezes. Ela con tern urn
• Se it nao river um a linha de cabecalho, as duas fortnas excluirac todas
loop interne aninhado.
as linh as e deixario a m em6ria alocada.
• A linha 8 armazena 0 valor atual de sy-t ndex do loop enema.
• A linha 9 cornelia a loop interne. \,
o efeito de cl ear em uma tabela ia terna esta. resumido na Tab ela 12.3. 0
efeito de cl ear varia,dependendo se a tabelainterna tern uma linha de cabecalho
• Na linha 10, 0 mimero cia passagem do loop interne e mulciplicado ou nao.
pelc mimero da passagem do lo op externo.
• A linha 11 adiciona cada linha na tah ela intema. Tabela 12.3 Efeito de clea r em umo to belo intemo

• A linha 13 cornelia uma n ova linha de safda. Instru4jGo -Se it liver uma Se it nao IlYer uma
linha de cabe~alho IInha de cab~l h o
• As linhas de 14 a 16 escrevem 0 con teud o da tabela in terna.
cle ar i t . limpor6 a linhe de cc becclhc Exduir6 todos as lin has
• A linha 17 exclui todas as linhas cia tabela inrema, mas DaD Iibera a
memoria. Refresh sera utilizada aqui em vez de f ree ja que 0 loop cl ear it( J Excluir6 todes as linhos Excluir6 toda s as tinhas

ext~rno se repete e imediatamente preenche de novo a tabela interna.

• A linha20 excluitodas aslinhas e libera a memoria para a tabela intema o programa na Listagem 12.8 ilustra a usa cia instru ci o clear com uma
antes que a lista seja exibida. Isso faz com qu e 0 programa se tome tabela interua.
mais eficienee.
Listagem 12.8 A lnstrucdc clear pode ser utilizada pa re limpar a linha
de cobecolho au excluir 0 conteudc de umo tobe lo intemo
Utilizando cl ear com umg tgbelg interng
Voce pode utilizar a instru~ao c1 ear para execu tar um a das seguin tes a~6es : 1 report ztxl208.
2 data: begi n of it occur s 3,
• Excluir todas as linhas de um a tabela interna e deixar a memoria
3 fl ,
alocada . 4 end of i t .
• Limpar a linha de cabecalho (definir seus compone n tes para espacos 5
6 it-fl-'X' .
em branco e zeros) .
7 append: it . i t .
8
,. 9 clear it . -1t teen Ina l i nha de cabet;aloo . 1ss i .. sendo l1mpar.!o a li nha
de cabelia1ho
10 wr1t e: 'fl-' . it-fl .
11

"
";.J _ _

DlA12,TABEUS INltRNASAVAN~DAS, PART! 1 409


408 AP REN DA EM 21 DIASABAP/4

12 write : I I I . onde:
13 l oop at i t. • n, fn e tn sao constantes, varidveis au lite rais n umericc s.
14 write ie-n .
15 endloop. • exp e uma expressac 16gica envolvenclo a s componente s de it .
16
17 clear tel ] . "serethente a: refres h it.
18 loop at i t . Os seguin tes pontos se aplicam:
19 write it-fl.
20 endloop. • Todas as adi~6es depois de t»), (bl e (c) sio opcionais .
21 writ!!: I ' sy- subrc- ' , sy-subrc. • Somente lim a adi(jao de (a), (b) ou (e) po ders ser especificada.
• del ete it, sem quai squer adi(joes, podera sc mea eeser utilizada dentro
o c6d.igo na List agem 12.8 produz eSt41 saIda: de l oop at it. Nesse case, exclui a linh a atual.

,,
flo • Se in dex n for especificada, a a-esima linha de it seri exclufde.
• Se from i for especificada , as linhas serao excluidas comecandc com a
sy~s~bn:. 4
i-esima linha.
IHlJ.ISE ~ • A linha 6 coloca X n a linha de cabecalhc de i t.
I I • Se to j for especificada, as linhas serac exclufdas ate a j-esirna liah a,
• A linha 7 acres centa du as linhas em 1tj -ambas tern I XI em f l . inclusive ela,
• A linha 9 limpa a linha de csbecalb c de it. • Se from Dao for especificado com t o, from 1 sera assumido.
• A linha 10 escreve espacos em branco, mostrando que a linha de • Se t o DaO for especificado com from, a ultima 1inha na tabela sera
cabecalho de i t esd . limpa. assumida.
• As linhas de 13 a 15 produz em a safda, a fun de mostrar que a tabela • A expressao exp deve tel' urn componente de i t DO lade esquerdo de
inrerna ainda contem duas linh as. cada comparacao. POI'exernplo, se i t river as componentes f1 ef2, exp
pcdera ser where fl • 'A' and f 2 c I B' .
• A linha 17limpa a corpo de i t, excluindo efetiva.mente todas as linhas
e deixando a memoria alocada. 0 conteado da linha de cabecalho A Ilstagern 12.9 mcstra urn programa de exemplo que exclui as dados de
pennanece inalterado. uma tabela interne ut ilizando a inst ru (jao delete.
• A s linhas de 18 a 20 nao produzem uma saida porque a tabela interna
esd. vazia.
• A linha 21 ma st ra 0 c6 digo de ret o rn o depois do loop. Isso novamente
confirma que n enhuma linha existe na tabela int ern a. 1 repor t ztx1209.
2 data: begin of it occurs 12,
3 fl .
Utilizando a instruc;60 delete pa ra excluir a s linhas de 4 end of it ,
uma tabelc.Internc _ 5 alp ha(12) val ue ' ABCDEFGHIJ KL' .
6
Utilizando a inStnlr;ao del et e, voce podera excluir uma ou mais linhas de uma
7 do 12 t imes varying it-fl f rom alpha.+O next alp ha+L
t abela in tern a. append i t.
8
9 enddc ,
Sinlaxe do lnstrucao del ete lD
A seguir, veja a sinraxe cia instrucfc del ete. 11 loop at it .
12 write : I sy-tabix , u -n.
delete it (a) [indeK n]
13 endl oop.
(bi [f"", 'J [to j ] 14
15 del et e it tn dex 5.
(c) [where exp]
.
"'I~'- I
:.
ITT .~ .T-TT~I • •~ I . . . . . . T . ~ ... . . . • • '!I! • '!I! '!I! ~ ~ ~ ~ • • ~ • • • • • - - '!If - ....

410 I "m DA EM 21 DI A5 ABAP/, D~lUABElAS IMTERNAS AVAH(ADAS. PAm l r 411

16 skip . 11 ,
17 loop at it. 12 L
18 write : I sy-t abix . it -fl .
19 enetccp. 1 A
20 2 B
21 delete i t frtm 6 to B.
22 s ki p.
,
3 C
D
5 F
23 loop at it .
6 G
Z4 writl!! : I sy-tabix . it-flo 7 H
25 endloop . 8 I
2'
27 delete i t where fl between ' B' and ' 0 ' . ID
9 J
,
28 s kip. 11 L
29 lo op at it .
30 write: / sy- ta b1x. i t - fl . I A
31 end loop . 2 B
32
33 loop at it where fl between 'E' and 'J '.
,
3 C
D
5 F
34 delete it.
35 endloop .
6 J
7 ,
36 8 L
37 sk1p.
38 loop at it . I A
39 write: / sy-tabix. i t - fl . 2 F
40
41
e.ndloop .
,,
3 J
-.
5 L
42 read table i t wi t h key fl • ' K' bi nary sea rch.
43 "rite: t, I ' sy-su hre- ', sy- subrc , ' sy- h hh.- '. sy-tabfx. / " .
44 1f sy-s ubrc • 0;
45 delete i t i ndex sy- tabi.x.
1 A
2 ,
3 L
46 endtt .
47 sy-subre· 0 sy-tab 1x· 2
48 s ki p.
49 loop at it. 1 A
50 write : I sy- ta bix . it-fl. 2 L
51 endloop.
52
53 tr-ee it .
INlllS! ~ • As linhas de 7 a 9 preenchem it com 12 linhas contendo as valores de
'A' a I L' .
• As linhas de 11 a 13 escrevem 0 conteedo da tabela interne.
o c6digo na Listagem 12.9 pro duz est a sarda: • A linha.15 exclui a quiara liah a, removendo 'E' cia tabela. A sexta linh a
1 A se to m a a quinta,"a serima se lorna a sexta e assim por diante.
2 B
• A linha 21 exclui cia sexta linha ate a oitava linha, removendo G, He I
3 C
, D da tabela. A nona linha se coma a sexta e assim po r diante.
5 E
, F • A linha 27 exclui as linhas que tern as valores fl en tre B e ' 0' ) I I

7 G inclusive. Is50 faz com que a segunda., terceira e quarta linhas sejam
8 H excluidas.
s I
10 J
~ -- ---- -.- -- - . ...I ....
412 ! "'[NDA EM 21 DIAl ABAP/4 D~ lUABEUS IIffiRNAS AYAll(ADAS, PAmI I 413

• A Iinha 33 recupe ra as linhas que tern urn valor fl entre I EI e I J " Essa parece um a maneira 16 gica de prcceder. Enrretanto, a utilizac;ao da
inclusive. As linha s 2 e 3 atend em as crit erio s. A ins trucio del et e na instru~ao append sorted by com fr equ encia pcdera produzir 0 mesm o res ul-
linha 34 DaD tern quaisquer adiljoes, assim sendo exc lui a linha arual tado e ser duas vezes mais eficiente. .
em cads passagem do loop. Is50 faz com que a segunda e terceira linhas
sejam exclufdas. Sintoxe do instrur,;oo append sorted by
• A linha -tz localiza a linha com urn valor f1 de 'K Emb ora i t contenh a
I •
~ A seguir, veja a sintaxe da in srru cio append sort ed by.
apenas tres linha s, bi nary search foi incluida para um a me lhor exem -
Z append [11'0 to) it sorte d by c.
plifica~o. A linha 2 e correspondente, entaD sy-subre e configurada
a zero e sy-tebt x econfigurada a 2.
• A linha 45 e executada ja que sy-subre e zero. Ela exclui a linha 2,
S
m •
onde:
t teo nome de uma tabel a interna.
removendo I K' da t abela interna.
Semelhante is insercc es, as exclusoes dent ro de loop at it Ilia afetarao
T • wa ~ uma area de trabalho com a mesma estrutu ra de uma Iinha. cia tabela
interna.
imediatamence a tabela inte rna mas, em vez disso, se rcmarao efetivas na • c e urn componente de f t .
p r6 xima passagem do loop. Ao excluir uma linh a depois da lin ha atual, a tabe la
sera novam ente indexada em endl cop, sy-t abix sera incrementada e a pr6xima
pass agem do loop pro cessard a linha indicada por sy-tabix. Por exemplo, Os seguintes pontos se aplicam:
suponha qu e vo ce est i na te rceira passagem d~ loop e exclui a linha 4. Quando • Se "fa to nao fo r espec ificado, a linha. a ser acrescentada sera obtida a
endl oop fo r executada, a linha sera exclufda, a linha 5 se tornara a lin ha 4 e assim partir da linh a de cabecalho.
par diante. sy- t abix sen increm en tad a em 1 e a pr6xima passagem do loop
• Se wa to fo r especificado, a Iinha a ser acre scentada sera obtida a partir
processara 0 pr6xim o registro.
.:Se, demro de urn loo p, vo ce excluir uma linhaa nU s da linha atual, a tabela
da area de tra balho wa•
sed no vamente reindexada em endloop. D essa vez, entretan to, sy- t abix e • So me nte urn componente c pede ser especificado.
increm ent ada em 1 ponte, menos a ml mero de linhas exclufdas antes da linha , A instru~o append sorted by obtem uma linha da area de trabalho e a
atual. D a pr6x.ima vez que ocorrer a loop, a linha depois da linha atual sera insere na tabela interna no local em que pertence na o rdem de clessificacao. Ela
pro cessada. Sup onha, par exemp lo, que voceexclua na terceira passagem do tern duas propriedades in comuns :
loop a linha 3. Em endloop, a linha 4 se tcm a a linha 3 e assim por diant e.
• 0 mi m ero de linbas qu e pede ser acrescentado e limit ado pelo valor
sy- tebt x ~ incre mentada em 0 p ontes , resultando em 3. A linha 4 foi rein dexada na ckusula occurs. Por exemplo, se a clausula occurs for 10, urn
para 3, sen do assim sed pr ocessada na pr6xima passageII!' do loop. maximo de 10 linhas poderao ser acrescen u das a tabela interna. Essa
~ a unica situac;ao ern que occurs lim it a 0 Dumero de linhas que pode
Criando listas dos 10 melhores utilizando ser adi ciooado em um a tabela intern a.
append sorted by • Someote c1assifica em ordem decrescente.
Imagine que lh e seja solicit ada a criayao de urn rel.at6rio dos 10 melhores o efeito rea1euma -listadosn primeiros" onden e o nu.meronacliusulaoccurs.
rep resentantes de venda de su a empresa. Panindo do p res supostO de que voce Com cada append, 0 siste ma pesq uisa 0 conteudo da tabela existente para
tenha uma mane ira de obter 0 total de vendas de cada representante, sera determinar onde se en ema a nova linha. A ordem de classificaiao edescend en te
possivel executar uma das seguintes a~6es : po r c. Se existirem menos linhas na tabela interna do que a quantidade especi-
ficada p orn na c1ausula occurs, a linha ted a o rdem de classifica~ao. Se existirem
• Acresceote todos as rep res eotantes e 0 tOtal de suas vendas em uma
n linhas na tabe1a intema, a linha sera ins erida pela ordem de classifica~ao e a
tabela intern a.
ultima linha sen descanada. Se 0 valor em c ja existir na tabela interna, a nova
• C lassifique -os em ordem descendente par vendas. linha sera sempre acrescentada depois das linhas existen tes que tern 0 me~mo
• Escreva os 10 m elhores. valor. P ortanto, se occurs for 3 e a linha 3 cootiver I X I em c, urna nova linha
com I XI em c nao sera acrescent ada.
-414 APR!.'A EM II DIAl ABAP/l DlllUABB..\I INTElHAl AVAlI(AOAl, PmEl 415

A Listagem 12.10 mostra urn prognma de exemplo que em. uma lista dos • As Iinhas de 2 a 5 definem uma tabeh. intema com um valor occurs de
tres melhores representantes de veada. 3. Se essa tabela interna for preenchida ucilizando append sorted by,
o mimero mhimo de linhas nessa tahela intema sera Iimitado a tres.
mRlllA~ Listagem 12.10 Utilizando append sorted by para localizer as tres
melhores representcnt es de vendo
• As linhas 7 e 8 atribuem valores l. linha de csbecalho.
• A linha 9 pesquis a i t quanta ao local correto pan inserir a nova linha.
1 report ztxl2 10. A tabela interna esti vazia, entao a linha e simplesmente acrescentada
2 data : b~ 1n of it occurs 3, (veja a Figura 12.1).
3 sales type p decimals 2.

5
name(lO} •
end of it .
Figu rg 12 1 append it sorted by soles
linho de ecbecclhc
Quando nenhumo
6
I;nho exis1e no lobe/a sales nome
7 it-sal es • 100. Intemo, enll50 0
8 i t-name • ' Jack' . primeil'D /lnl1o Ii
9 append it so rted by sales . simple.smf!t11e
10 ocnsantodo.
11 it-sales • 50. linho 1
12 i t -name • ' Jfll'.
13 append it sorted by sales .
• 50 vem depois de 100 quando a orde m de c1assifica~ao e decres-
"
15 tt-setes • 150. \
ceate, entio a Iiaha 13 insere a nova linha depo is cia exiseenee
16 1t-nillll!: • 'Jane'. (veja a Figura 12.2).
17 append it s orted by sales .
18 F igura 12 2
19 i t - sal es • 75.
A segundolinha e
20 1t -namt • ' George' . inserido no s~iifncjo
21 append it sorted by sales. comto de
22 do u mca¢ o, de modo
23 it-sales • . ZOO . que elo venne depois
24 i t-name • ' Gina' , do primeiro linno. Iinho 1
25 append it sor ted by sal es.
26 2
27 it-sales • 100.
28 i t - naJnl!! • -' Jeff ' . • 150 vem antes de 100, entao a linha 15 inse re a nova linha ant es da
29 append 1t sorted by sa les .
primeira linh.a. A tabela int ema agora contem a mimerc maximo de
30
31 loop at f t. linhas : treS linhas (veja a Figura 12.3).
32 write: lit-sales , it-name.
33 endloop. Fig ura 12 3 append it sorted bysoles
Dessa vw. 0 linha de ccbecelhe
seqiifncio de
o c6digo na Listagem 12.10 produz esta saida: dossiliClJ'¢o dita que
o novcr linho dfNe ser
tt 150 Jcne

200.00 Gina inserido ontes do


SAiDA~
corpo
150. 00 Jane primeiro.
linho 1 150 Jone
100.00 J ack
100 - Jode


2
3 50 Jim
_............--_-..- -------
• • • ma.--_-
416 "RENDA EM21 DIAS . " P/4
_ -- - - - - - -

D~ ILTABruSIII1UIlASAV"~Al, PARTE 1 417

• 75 vern depois de 100, en tao a linha 21 insere a nova linha depois da Nao misturar append sorted by com quaisquer outras ins truc;6es que
segunda Iinha, fazendo assim com que a nova linha se torne a adicionam dados em uma ubela interna (como insert ou append) . Se voce
terceira linha. A t erceira linha deveria se tamar a qUafta, mas it preencher ; t com append sorted by, esta deved sa a Unica. io.stru~o a .ser
somente pa de armazenar tres linhas, enesc a quart. sera descartad..a utilizada, Misturar essas instruC;6es resultard em comportamento imp revisfvel.
(veja a Figura 12.4).
• 200 vern antes de 150, entio a linha 25 a insere antes da primeira linha.
append sorted by sera mcls ehctente quand o voce estiver ccrescen-
o restante das lin.has edisposto abaixo e a Ultima linha e descartada tondo uma linhc per ....ez em umo tabe lo intemo. Se voce j6 fiver os
(veja a Figura 12.5). dodos em uma tabela de banco de dodos e simplesmente quiser
localizer as 10 vclcres superiores sere mais efiden te inserir as linhos
Fi gu r a 12 4 append it sorted by sales utilizondo uma opera¢o de array e, em segu ida, a d ossificot;oa. (Para
Esso lin"o se eeeeee abter jnformo¢es sobre as cperccoes de arrey, ca nsulte a Dio 13,
dapoi5 do segundo. linno de cebec;olho "Icbelcs intemos ev encodes, Porte 2· .)
ent60 ala, inserida
16. Atobe/a inferno
it I I
75 George ~ ,
,
pode onnazenor um
m6Kimode 1r& linhos.
\ nOoocrescentado
\ porql.Je~63 Preenchendo uma ta bela interna utilizando
Jinho 1 150 Jane
ent60 0 quam linno Ii
desccrtodo. 2 100 Jaa
I e it ja contem
I 3 linhas
collect
3 50 Jjm .., I Utilizando a instru~o co11 ect, sera pcssfvel criar totais den tro de uma tabela
, interns amedida que voce a preenche.
--<-
Sintoxe da instru~aQ coll ect
F la" rn 1 2 5 append it sorted bysoles
Dena vez, 0 nOva
en A seguir, veja a sintaxe da instnlc;ao co11 ect.
I;nho dtNev;r Z col lect [wa '1nt o] it.

~
prim eiro. As };nhos
exis1enfes 560 onde:
disposlas o~ e a
ultimo Iinha Ii m • i t ~ uma tabel .. intema.
linna t 200 Gino
desccrlodo.
2 150 Jane T • va eurna area de trab~o que tern a mesma estrutura de it.
3 100 Joclt
1..5£ t: :!iri£ J Os seguintes pontos se aplicam:
• 100 ve:m depois de 150, mas ja existe 100la. A linha29. portaato, tenta • Se 11'0 ; nto for especificado, a linha a ser coletada sed obtida da area
icserir a nova Iiaha depois do valor existente de 100. 1550 a tornaria a de trabaIho expljcica we. Nease case, a Iinha de csbecalhc da tabela .
linha 4, ent.ao a linha nio einseridaabsoiutamenre (veja a Figura 12.6). interna sed ignorada, se existir.
Fl g u r n 12 6 ap pend it sorted bysales. • Se 'fiO into nao for especificadc, a tabela inrema deveri ter uma linba
&so novo finho de cabecalho. A linha a ser coletada sed abtida da linha de cabec;alho
seguim todos as linhos linoo de cab8l;0lho para. it.
eJristente5 que tern a
me.smovalor. IS50 0
il~ ...
, Quando collect for executada, 0 sistema formad. uma chave a partir dos
Iomorioa linho 4, co<po \ campos de chave pad rgo na irea de trabalho. Os camp os de chave padcio sao
en160e/o noo e \ as campos de can,ctere (tipos c, n, d. t ex) . PortantO, a chave sed composta
Inserido. Iinho 1 200
2 150
Gino
Jane ,
I t'IIio ocrescenlodo
des valores ,de codos as campos do tipo c, n, dJ t e x. Nio imp oru se estio urn .
3 100 Ja, k I ao lado do outro, au se estaa separados urn do outro por outros campos.
,I
-<-
sp-5 - 5·
I
i
418 I APR'NDA ' M11 DIAS ABAP/4 iI D ~ IUAB' lAS IffTERNAIAVAJlIADAS,PARTE I 419

osistema eneso pesqu isari 0 corpo da tabela interna quanto a uma linha I 41 tt-neee so 'Jack'.
com a mesma chave daquela na area de trabalho. Se nao localizer uma, a linha .2 eel teet it .
sed acrescentada ao final da rebel a. Se localizar uma, os campos numericcs "« loop at i t .
(tipos i, p e f) na area de trabalho serao adicionados nos campos corre spon- . 45 wr ite: I it-date, 1t ~tot_s a l e s , tr-neee, tt- num_sales.
dentes da linha localizada. A Lisragem 12.11 ilustra esse conceito. 46 endloop.

Li sta g em 12.11 col le ct combina as linhas assim que s60 odicionedos


em umo tobela intemo a codigo n a Listag em 12.11 produ z est. saida:
19980101 800. 00 Jack 3
1 report ztx1211. 19980101 700.00 J im 2
2 data: begin of it occurs 10, 19980101 600 . 00 .Jene 1
3 date type d, par te da chave padrlo 19980102 700.00 J ack 1
4 tot_sahs t ype p decil11als 2, -nao ! parte da cheve pa dr~ o
5 n!ll! (lO) , pilrt@ da ehave pad r~ o • As I.ioha.s de 2 a.7 definem urna ta bela interna com quatro componen-
6 nlf.lt_sahs type 1 val ue I , -nao ! parte dl chave padra o res. Dois sao do ripe caractere (dat e e name) e dois sao do tipo numeri co
7 end of i t .
(t ot_sal es e riurn_s ales ). A chave padrao ~J portanto, comp ost a dos
8
9 f t -date . • ' 19980101'. comp onec tes date e name.
io 1t~tot_sales • 100. , • As Iinhas de 9 a 11 atribuem valores aos componenees de linha de
11 f t -neee • ' Jack'.
cabecalhc dat e, tot_sal es e name. nurn_sal es ainda tern urn valo r padrio
12 collect it.
13
de I, arrib utdc na Iinha 6.
14 i t - dat e • '19980101'. • A linha 12 pesquisa 0 corpo de it q u anta a urna linha que tenha a s
15 it-tot sales · 200. mesmos valores em date e name (campos de chave padrio) daqueles na
16 1t.na~ • ·J 1m' .
linha de cabec;alho. A tabela interns esta vazia, entia nao ha corres-
17 coll ect i t .
18 pondsncia de linhas. A linha de cabecalho e, portaotO, acrescentada a
19 f t -dete . ' ' 19980101'. "bela intern. (veja a Figu ra 12.7) .
20 1t~tot_sales • 300.
21 it-name • 'Jack '. f ig " r " J 2 7 collect it.
22 ccl'lect it. $@oChov.podr6o
~n ho de eebe celhe
23 tl60 for/ocolizodono
24 it-date • ' 19980101'. corpo. 0 /inno sero
25 i t-tot _sal @s • 400. oc:rescentodo. A chave
26 tt -neee • ' Jack' . podmo ecompostc d@
27 collect it. Iodos os compos
28 nOo-numericos, @nt6o
n@ss!& diogroma, elo
29 1 t ~da t e • ' 19980101 ' .
comi!SpOlldea
30 1t ~ to t_sal es • 500.
c:ombino¢o de date
31 it- name • ' Jim '. (prim@lrc compoJ @
32 collect i t. name (ten:eiro compo).
33
34 ft ~date • ' 19980101' . • A linha 17 se comporta como a linha 12. A eabela intema te rn urna
35 1t - t ot _sahs • 600.
36 it-name • 'Ja ne' .
linha, mas as valores nos campos date e name nao sao correspoodentes,
37 coll ect i t. entio a lioha de cabecalhc eacres centa da arabela interna (veja a Figura
38 12.8).
39 i t - dat e • '19980102' .
40 it-tat_ules .7110.

'.
._~==----=-=-===-==-- - - ·i' =
- ~=-.---~------ - - - ~ ~- - -
421
420 [ APRENDA EM 21 DIAS ARAP/.
Ii DIA lHABELlSIKTlRNAS AYAH\ADAS, PARTE 1 I

F igurn 12 8 collect it. : • A linha 32 e correspon dida na linha 2 e adiciona 1500 I a t ot _sa1es e 1
Na'lomente, 0 chave a num_sales (veja a Figura 12.11).
podrtion oo e
focolizoc/o no tabelo, • Na linha 37. os valores em dat e e name (campos de chave pamo) cia
entOo em /jnho linha de cabecalho nao correspondem a quaisquer linhas em it) en rso
tcmbem e um~ n ova linha eacrescentada ao final ciatabela (veja a Figura 12.12).
ocrescentcc/o.

W'M~ 'J~_ Wg\i;~ I) ; F igura 12 11


Dessc vet, a chove
coiled it.

linno de cabeljOlho
[!8~~I~ .' 200' ~:<;"'~~ ;,::)~. " pac/reoCOfTesponde
com a segundo linho
do tobe/o. Os campos
• A linha 22 pesquisa a tabela intem a quanta a uma linha qu e tenha numencos no area de
' 19980101 ' no campo date e ' J ack ' no campo name. A linha 1 e a trobolho s60
correspondente, eneso os campos nume ricos sao junt amente adi- oc/idonadosnos .
compos'
cionados. 0 campo tot_sal es d.a linhade cabecalho contem 200. Esse corresponc/entes do
'valor eadicionado no campo t ot_sales na linha 1, dando urn total de segundo linno.
300. 0 valor no campo num_sa l es na linha de cab ecalhc e tambem
adicionadc no campo num_sales na linha 1. ciando um valor de 2. A coiled it.
Flgu rn 12 1 2
linha 1 e atualizada com esses valores. 0 conreudo da linha de ca-
becalhc permaneceinalterado (ve]a Figura 12.9). a A cnave podroo n60
CCHTesponde com
linha de c:abel;olho
nenhumo "nho cle S5CI
F ig urn 12 0 coiled it. vez. ent60 urno novo
Dessc vez, 0 chcve linna e ocrescentado.
pac/r6o corresponde linho de cobei71lho
com 0 primeiro Iinho ~ S~®:.J l!SIl
c/o lobe/a. Os compos
numericos no 6reo de
+ ~ ~~
trobo/ho s60 +
odicionodos nos ~ ~~mm
compos \J9,9Jtl§jJ }oo' l?!.?J"~ ' 2
correspondenles do
~ ; 2!lO~ ~'&t .y • A linha 42 tambem faz com que uma nova linha seja acresce.otada a
~rimejro Iinh a.
tabela internal jii que os valores em date e nameDaO correspondem com
• A linha 27 procura par uma linha com uma data 119980101 1 e urn nome nenhuma linha de it (veja a Figura 12.13).
' Jack 1 • A Iinha 1 e a correspond ente, entao 0 conteudc dos campos
F lg urn 12 ,~ collect it.
numericos (tot_sales e num_sales) nalinha d e cabecalho sao adicionados
/J.5 chaves pac/roo
aos campos numericcs da link localizada (veja a FigUJ:' 12.10). nevemenre nee
corresponc/emcom
Fl g u r n 12 10 eellect it. nennumolinno, enroo
Novomente, a chcve oulm Iinho Ii
podroo corresponc/e ccescencee.
com a primeirolinho
~\~;::~ 't~{
do lobe/a. Os compos
,
numericC5 no area de
+ ,. =i ,__4~
~ 'i<i!t~
troba/ho sec ccrpc
odicionodos nos
~~'i~~Ff
.' ~>~,'~
compos ~@t<@ , · 8 00 ·~
~~ 3
~ ,i,~.1~
correspondentes do
primeiro Jinho. e§@ '200"
~~ ,
E c c ... c .••.• • . • • • • • • • _ =

"i' " " - ....


422 I APif HDAEM 21 DIAl ABA1/4

Se voce utilizer col lect pa re od icionc r linhos a urnc to bela interna , e


II D~ IHABEUS IHIDHAS AVAII(ADAS, PARTE 1 I

• U tilize append sorted by para criar Usus dos 10 melhores em vez de


423

acrescentar linha par linha e, em seguida, classificar.


tod e s as linhos deveriio set odidonodos com a usa de CD11ect. Voce j
noo deve combiner coll ect com append au com quolquer outre • Utilize coll ect pan samar contagens e totais dentro de uma tabela
instrvC;60 que od icion o dodos em umc tabelo intem o. Os resultados intema amedida queestiver sendo preenchida. Essa inStnleraOtambem
sere c lmprevisfvels. A cnlcc instrur;oo que voce pede utilizer para
moclificor a cc ntec dc de urno tobelo lntemc preenc:hida otraves de
pode ser utilizada para garantir a exclusividade de todas as entradas.
e modify

- =- - ---- -'-
collect .• . t ransportin g fl f 2 • . " onde 11 e f2 sdc
compo s rurrnericcs so mente (compos de chov e noo podre o).
IFa~a
Resumo Utilize a instn.u;60 free 00 finol de seu Nao acrescente ou insiro a s linhas, umo
prog romo porn todas as tob elas par vez, se elcs podem ser processodos
• 0 operador de corpo de eabela proporciona UIIU maneira eficienre de
intemos. Essa instru~o ir6 llbemr como urn grvpo com 0 usc de insert
eesnr quanto a. existencia de dados, comparar duas tab elas intemas explidtomente 0 mem6ria q ue noo sere 11nes of ou append 11nes of.
pan igualdade au duplicar urna tabela int erna. mois vtilizado no mo menta em que 0
usuerio estiver visualizondo a sardo.
• A instrU<;ao descri be t abl e coloca 0 namerc de linhas da tabela
inte rna em sy-tfi 11, a largura de uma linha em byt es em sy-tl eng e Utilize 0 operador de corpo de tabelo
perc tester 0 existence de dodos.
o tamanho cia clausula occurs em sy- t occu.
Utilize a irutru c;c o oppend sorted by
• Para cop iar uma pane de uma tabela interna de uma pan. outra, utilize qua ndo crior listos dos 10 melbcres, a
append 1i nes of au i nsert 1i nes of . menos que a listo je existo e precise
apenos se r d os5mcqdo .
• editor-cal l exibe 0 conteudc de uma tabela int erna em urn editor.
Permite ao usuariomodificar as dados e etambemuma uti! ferramenta
de depura~ o.
• in sert adiciona uma linha em qualquer posierao de uma tabela intema. P&R
A pasi~o pode ser especifieacia urilizan do urn Indice ou pode operar
na linha arual dentro de urn loop.
• modify modifica a conreado de uma au mais linhas. A linh a pede ser
o Nest e capitulo, aprendi vdrias maneiras de realizar tarefas se-
melhantes. No ABAP/4, parece que sempre existem muita s
especificada util..izando urn Iodice ou pode operar na linha atual dentro maneiras de fazer a m esma coisa, Estou apenas apre nd endo.
de urn loop. Utilizando a chusula where, voce poderf modifica.r 0 C onsigo me lembrar somente cia. existcncia de muitas maneiras
ccneeado de muitas linhas . de se executar alga. Por que mio se mostra apenas a melbor
• defet e remove uma ou mais linhas. Quaado utilizada dentro de urn maneira e simplesm ente se esquece 0 resto?
loop sem adic;oes, exclui a linh a atual. Voce tambem pode especificar
urn deice Iodice, uma faixa de rndices. au uma clausula where.
• c1 ear it limpa a linha de cabe~alho de it. Se nao exisUr uma linha de
o Aprecio sua pre ccu pacdo. Quando possfvel, eu omi to metcdos
re petidos, raramente utilizados, ineficientes e arcaicos. Mas hi
du as raz6es muito boas para incluir as varia;oes que descrevi
cabec;alho, todas as linhas serio exclUldas. clear it[ ] sempre exclui
aqui : 1) eficiencia e 2) compreensao do c6digo existen te. Devido
todas as linhas de it. A mem6ria da tabela interna permanece aloca&.
aquantidadede dados que reside em urn sistema R/3 J a eficicncia
• r ef res h sempr e exclui todas as linb.as e dew a mem6ria alocacla. E ea principal preocupa!rao em programas AB AP/ 4. Voce deve se
eXatamente equivalente a c1 ear 1t [ ] . sera ut ilizada se a tabela interna esfon;a r em utilizar a fo r ma mais eficiente de cadainstru~ao em
tiver que ser novam ente preenchida com dados. urna d eterm in ada situ a!rao. 1S50 pode resultar em melhoras
• f ree i t exclui fodas as linhas de 1t e libera a me m6ria. Deve ser drasticas de desempenho, nao some nte para seus programasJ
colocada no programa imediatamente ap6s 0 termino do proces- mas tambem para a sistema in teir o. E comum ter que regravar
samento da tabeIa interna. o codigo depois que 0 mesmo alcan~ar a produ ~o, ji. que tera
424 APREN OA1M21 OIAS AUPI4

urn grande impa cro no desempenho do sistema. Quanta ao se-


gundo ponte, as programadores freqa eceeccec ee gastam mais
tempo Iendo a c6dig o existence do que criando urn novo ccdigo,

I
assim send o vocE: precisa comp reender as vOlriac;oes sum dessas
instrU~5es. Elas sao muito utilizadas no c6digo de SAP. Se voce
nie compreender 0 c6digo de SAP , voce ni e sera capaz de com-
preender como as dados chegam ao seu eseado presence ou como
pode -se chegar a uma det ermina da salda.

Workshop
o Workshop oferece dues maneiras de voce verificar 0 que aprende u neste

Teste
capitulo. A se~o Teste:oferece pergunt as para ajudar a solidificar seu entendi-
mente do con teudo abordado e a se~o Exercfcic permite que voce pratique a
qu e aprendeu. Voce pede encontrar as respostas as perguntas do questionirio
e ao exercfcios no Apendice B, "Respostas as pergunus e aos exercfcics".
13
1. Se eu modificar a valar de sy- t eb'lx deotra de urn loop. isso ira alterar
a linha atual? Par exemplc, as inStrulSoes insert. modify e del ete Tabelas internas avan~adas ,
operariam na linha da hea de trabalho ou na linha indicada po r
sy-tab1 x? Parte 2
2. Quando devo utilizar 0 valor de sy- t occu? Por que pr eciso saber a
valor cia c1iusula occurs em tempo de execu~o ? Q bjetivos do capitulo
Depais de coucluir este capitu lo, voce sera capaz de:
Exerdcio 1
• P reencher uma t ahela intern a a partir de uma tabela de banco de dados
Leia a coateadc de ztxlfal em uma tabela interna (utilize select i nt o t able). utilizando as estru turas mais eficientes
Em seguida, modifique a coluna 1andl, de modo que a terceira linh a cont enha
• Executar 0 processamentc de inte rruPIia.o de controle ern tabelas
·US' (utiliz e modify transport ing where). AIem disso, modifique as regices,
alcerandoMA para TX (utilize modi fy transporti ng Where). intemas utilizando at e on change of

Preen che ndo uma tabela interna a parti r


de uma tabela de banco de dodos
Freqiientemente no ABAP /4 . os dados que voce coloca em um~ tabela intema
pr oveem de uma au mais tabelas de banco de dad os. Esta secao apresenta as
melhores maneiras de se fazer isso,
As rnaneiras de preenchimen to uma tabela intema a partir de urn banco
!I de clados se dividem em duas categorias:
• Selecionar mdltiplas liahas diretamence para 0 corpo de uma tabela
inte rna

'l
I
.1IlI. . . . . .lIIII. . . . . . .lIIII. . . . . .lIIII. . . . . . . ._ ...._ ..._ .... . ._ ...... . ._ .....~~_ --..___ __ _ _ _ - - - ~ - _ - --

426 APREN OA EM 21 OI AS ABAP/4 O~ IH ABELlS umR HAS AVAH\AIlA~ PARTE ' 427

• Selecicnar uma tini ca linha pan u rna area de trabalho e, em segui da, OORADA'" Ustagem 13.1 Este progromo l~ as [inhos de uma te bela de banco de
acrescentar (append) ,. dodos diretarnente pa ra umo tabe lo inferno

Seleciona ndo multiples Iinhas diretamente para uma ,


I re port ztx 1301.
ta bl es ztx l fa 1.
ta be la interna 3 dab i t l1 ke ztxl fa l occurs 23 ""ith header- li ne .
4
Para selecicnarmulciplas linhas diretamente pan 0 corpo de uma tabela intema, -nllo cod1fica urra enesetect
S se l ect'" f ran zt xl fa l i nt o tab le i t .
utilize aa di!fao in to tab l e da instrucfo sel ect. Eta obtem as linhas selecionadas 6 l oop at it.
e as coloca no co rp o d e urn a tabela intema com urna tini ca operacfc conhecida 1 ""ri t e: / 1t-lifnr , it-nallll!!l.
como oper:a!fio de array. Nenhuma area de trabalho sera utilizada, nem mesmo a endloop .
sera necessaria. I
10 select • fJ'Olll zt xlfal into tabl e it
11 whl!!re 1i fnr between ' \12 ' and 'V5' .
NOYO..... Uma opertJ!;oo de arroy correspo nde a qualquer instruc;60 que executa ume 12 s kip.
TrulO " c cerccsc em multiploslinhas de ume tcbelc interne, em vezde ume unice linhc
13 loop at i t .
de coda VeL h ccerccses de arroy sao sempre mois eficentes que as operc~6es de umo
14 ""Mte: /1t ~1i fnr. it- name1.
unica llnhc.
15 endloo p.
16 free It .

sel ect i nt o t abl e e a mcneiru mois eficlente de se preencher vmc


tobe !o infemo a portir do banco de dodos . o c6digo na ListagemId.I produz est> safda:
Sintaxe da adic;oo into t able da instruceo se ject IArDA ~ VI Code Now, Specs l at er l t d.
1000 Parts Unlimited
A seguir, veja a sintaxe da adiliaO 1nt o tabl e da instruljao sel ect. 1010 Industrial PUAlPS Inc .

-
III
Z
fa) select •
(b) s~ll!!c't 11 /2 .
1020
1030
1050
Chl!lllical Nation Lt d.
Chic kenFe~d Ltd.
The Bit Bucket

~
.
1060 Me:nory tane Ltd.
from dbtab 1nto [campos eor re spcndent es dl!!] t abI e t t . Fl ip My Swit ch Inc .
1070
VIO Duncan's Mouse Inc .
on de: Anna Banana Ltd.
V6
• dbtab ~ a nome de uma tabela de banco de dados. va Smile When You Say That ltd.
V1l Wei ner Schnl ttsel Inc .
• f1 e fZ sao campo~ dentro de dbt ab. V12 Saur kroute n
1040 Mot herboards Inc.
• it e0 no me de uma t abe la interna. IOSO Sil icon Sandwich Lt d.
1010 Consune Inc.
2000 Moni to r s and Marl!! Ltd .
Os seguinres pontes se aplicam: VI Quanti ty First Ltd.
V, Over Pri ced Goods Inc .
• it pede tee uma linha de cabecalho. V3 Fl uffy Bunnies l t d.
V4 HoD 1ike a Cow Inc .
• O ut ras adilj6es, como where e order by, podem vir depois de ft . VS Wolfman Sport Accessories Inc .
V1 Tile Breakfast Club Inc .
• endsel ect nac e utiliaada com t nt c t able . select in t o t abl enioinici:z.
urn loop, conseqiien'temente, endsel ect nso e necessaria. V2 Over Pri ced Goods Inc .
A inStruljaO select into tabl e coloca to das as linbas selecionadas dire- V3 Flu f fy Bunnies l t d.
V4 Moo like a Cow I nc.
tamente no coepo de ft. Em prim eiro lugar, a coareado da tabela intema VS Wol fman Sport Acces sories Inc .
existence edescanado. A Listagem 13.1 contem urn program a de exemplo que
utiliza sele ct i nt o tab le.
428 APlEMOA EM21 DIAl AUPH

• A linh. 5 recuperA todas AS Iiahas a partir da tabela de banco de dado, Figu r a 13 1

zt xlfal e as coloca diretamente no carpa cia tabela interna it.A linha A tebelade banco
de: cabecalh o nao e utilizada e seu con teedo perman ece inalte rado. de dodosztx1302
contem Ires compos:
• A linh; 10 e semelhante alinha 5, anao ser pelo fate de que elaapenas f1,/2. f 3. f1 tem
recupera a s mimercs dos fabricantes entre V2 e V5. a conreado urn linico byte, f2
fem dois bytes e f3
existence de i t e descartad o antes de ser preenchida. /em urn byte.

Noo utilize endse lec t com se l ect into tab l e. Um errc de sintaxe
cccrrerc.

sel ect i nto table e clcssificccco


Suponha que seu prograrn a ja fa~ a leirura dos dados pan uma tabela interna.
Se es~es dadosprecisarem ser classificados, utilize ainstruc;ao sort. Nao utilize
order byem sel ect , mesmo se esses campos forem suporcados por urn Iodice.
Em urn sistema independence media, test es de medicao revelaram que a
inStruc;a.o sort e urn pouco rom rapida, M~m o se estivessem em urn mesmo
myel, sort seria ainda 0 raetcdc preferido ji que essa in structo faz urn offload
Figura 13 2 tables ztxl302.
dos ciclcs a partir do servidor de banco de dados pua 0 servido r de aplicativo. . dati it l ik e ztx1302 occurs s .
* faz com que todos
cs compos ~;om ~WJirt.~? ~~~~?1~{;i~~
'~~.,,,,~: .<. :~..zr-LT2~~-"':~ ~'-"''''

,iii
selecionod04 em

~.
Nco utilize order by com select into table. Em vez disso, utilize m e,", do tobelo de COIpO d·. i t
sort no tobelc intemo. banco de dodos n 12 13
ztx1302. f /es se
aiustarn exatcmente 12 f3
Os campos que voce seleciona devem se ajustar na tabela em coda Iinho de
interna tt. {6 que a coda hnhc de :tx1302
estruluro de i t
Imagine este exemplo: torno-se umo linhc no corpo de it . .-
cofTesponde com a
• Uma linha erecup erada de dbt ab. estrvturo do tabala
de banco da dodos.
• Urna linha e aloc ada em t e.
Fig ura 13 3 tab les ztxl302 .
• A linha de dbt ab 6 mo vida, byte por byte, para a nova lioha em it. dati it l1te ztxl302 occurs 5.
~~2~~f2~'1iitjn~(t~
"-~'"t-i"'b"1_ ')·"!~1U~-~'"'1
Nesse exemplo,
Cada Iinha de dbt ab e movida, byte par byte, pArA urn. novalinha de it, somente os dois
',
.~~:r.-~~.;'~ ::..:;. !-'r.-~~.,.r.--»=~~~~~
que e exatameate igual a atribuir uma St ring de campo para OUtra. H oi som ente primeiros compos sea
corpo de i t
seJecianodos do
uma diferenca entre esse procedimemo e uma atribui~.io de st ring de campo : tebela de banco de fl f2 f3
dbtab pede ser mais curta (em bytes) que i t, mas cao pede ser mais longa que dodosztx1302 pa re
it. Se for mais longa, urn dump curto (erro SAPSQL_S ELECT_TAB_TOO_SMALL) um totel de tr~s bytes.
Eles 56 0 co/ceodos
ocorrera. Os tipos de dados e comp riment os de cada campo de envio em dbta b byte porbyte nos 2 compos de code linnade lotxl302
devem corresponder com 0 campo de recebimento em t t . Quaisquer campos primeiros iris bytesde tcmem-se uma linha no cerpo de 1t
remanescentes em it sao preenchidos com valores iniciais (espacos em branco ceda linha de tt .
'"
ou zeros). As figuras de 13.1 a 13.4 ilustram esse ponto. ,:>..:oIo~ ·i ni~~j~ pcIar6o-_-; -
i (~,s ~~~ em· ~.~. ~ ~~J
_L.._ _ _ ~ _~_ ___ __ ~ _ __ _ -.J<_
.. ...-.. ~....-.. .-.

430 A/ REN DA EM 21 DIAl ABAP/4 D~ lU AiElAS lllTERNASlYAH(AIlAS, PAm2 431

FIgura ]3 4 ENTUDA'" Lista g e m 13.2 a que acontecer6 sa as estruturos de tcbelc diferirem


Novomente. cs dais ,. quando da vtilizol,;oO do instruc;oo sel ect -tnto
primeiros campos
sao sefecionodos do 1 report ztx1302.
Icbelo de banco de 2 tables ztxlfal.
dodos ztx1302
3 data b!gin of i t occurs 2.
mes,. eessc vez, em
uma ordem diferente 4 i ncl ude structure ztxlfal.
doqvelo em que 5 datil.: fnvoice_amt type p,
oporecem no 1a~1o 6 end of ft .
intema. tssc fonS I
com que as dodos 8 select ... from ztxlfal fnto tab1l!: it where hndl .. ' DE' .
flquem donificodos 9 l oop at it.
quando colocodos 10 write : I it-lifnr, it-landI, it-regfo, ·ft-1 nvoice_ilJl't.
byt. por by1e em 11 endloop.
coda linhode t t.
12
ft -!I recebe 0
prlmeiro byte de/2
13 skip. .
ett-JZrecebeo 14 select lifnr land; regi0 frtllll zu:1fal into table it wheN! landl .. 'DE'.
ultimo byte de f2 e 15 loop at ft .
um by1e de /I . 16 "rite: I ft-mandt , tt-I tfnr, it-landI, ft -rtg1o.
17 endloop.
\
18 free ft .
A T abela 13.1 resume as regras para autilizacjo de selectcom into tabl e.
O s campos selecionados devem ajustar-se na ube1a intema. Esta tabela des-
creve ~ restrir;oes com as quais voce ir.i se dep arar. o ccdigo n a Lista gem 13.2 produz est. saIda:
Tabela 13.1 Regros para a utiliza «;60 de select com i nto t able VII DE_ ..97 o
VI' OE 14 o
Instruljao Quais campos
V8 DE 03 o
Restrlsoes
sao selecionados? Vll DE 07 .
Sel ect * Tcdos csccmpcs no tobela de V12 DE 14
A tcb elc intem o deve conter
VB DE 03
banco de dodos pelo menos o mesma
quontidade de campos que 0

INluSE~
tobela de ba nco de dodos e • A linha 3 defin e i t como se tivesse todos os campos de zt xlfa l da
eles devem ser seme lhontes estrutura do DDIC, mais urn campo adicional.
005 compos do tobelo de
banco de dodos. • A Iinha 8 seleciona rodos os-campos de ztxlfal. Eles preenchem 0
Sel ect / 1 / 1 do tobelo de banco de dodos A tobela Interne deve cc rneccr ccmecc de cads linha em i t. Invoi ce_amt ! configurada como zero .
com urn compo semelhante a • A linha 14 selecions Ii fn r land I e regt 0para a primeira. parte de cada
/1 cu ter ope nos tim compo e 1inha de it. En rretanro, it comega com eandt, nao lifnr, porque
ele deve ser semelhon te 0/1.
ztxl fa l cia. estrurura DDIC corneca com mandt. A safda mostra que os
primeiros treSbytes de 1ifnr terminarn em 1t-mandt, que t t - 1i fnr e
As lisragens 13.2 e 13.3 ilustram esse conceito. movido pan a esquerda em tres bytes e tambem conrem 1and l e que
regia estl vazio.

,. ..
.'
.'
432 APiENDA EM21 DIAS ASA P/4

Ustagem 13.3 Seu proqrcmc produzir6 urn dump curto se voce tentor e comprimento, voce poderf utilizar a adic;io correspo ndi ng f iel ds. Essa.
co loco r mois campos em umo tabe lo interne dos que j6 existern nessc a.di~i.o tem 0 mesmo efeitc da instru cao move correspondi ng em um a string de
lobelo campo: ela move a s campos cia tabela de banco de dadcs para as campos com
o mesmo nome 'n o corpo da tabe!a intern a.
1 report ztxl303.
2 tables ztxlfal.
3 dat a: begin of it occurs 23,
4 l1tnr l ike zt xlfal· l 1f nr . "esse I Wll cainpo com 10 cerecteres corresponding f iel ds executa uma otribu ic;oo por campo, em vea
5 landl 11ke ztx l fa l - la ndl . "esse ~ UII campo COllI 3 cerecteres de uma unico atribui¢o pare 0 linho lntelrc , sendo ossim cd iciona
6 end of it . overhead a instru¢ o sel ect. Voce dever6 utiliro·1a somente qua ndo
7 necess6rio.
8 111. prtixilla ltnha causa. tJlI dtlnp curtc • A tahe14 interna ~ estreita dema1s.
9 select · f ro. ztxl fal in t o table it .
O s seguintes pontos se aplicam:
• A ordem des cam pos de envio e de recebimento ni o tern impcrdncia,
o c6digo na Listagem 13.3 produz a saida como a qu e pod e ser vista na
• Os campos de envio que nso t~m urn campo de recebimento corres-
Figura n .s,
pendente sao descartadcs.
Fig"'" 13 5 • Os camp os de recebimenro que DaO tern um camp o de envio ccrres-
Esm dump OJrto pendent e permanecem inalterados .
ocone quando vod
t xectlttl' c ztx1303 A Listagem 13.4 mostra as utiliza~6es eficientes e ineficientes dessa
de relot6rio. use adi~i.o.
e eeerece Qvondo
voc~ seleoono mois
compos do que a
fNTUOA.... Listagem 13:4 Utilizendo e edifice corresponding fi elds para
quontidode que SI! ,. preencher tcbelcs internos e pcrtlr de ban co de dodos
oiusto no Iobe-Ia
interno. 1 report ztx1304 .
2 tables ztx lfal.
3 data: begi n of itt occur s 23.
. 4 lifnr l1ke zt xlfaJ-lifnr •
5 lifnr_l!xt like ztx lfal - l 1fnr.
6 landl like ztxlfal-landl.
7 end of t t l ,
8 begi n of 1t2 occurs 23.
9 l1 f nr like zu lfa1-11f nr.
1D la ndl ltke zUlfaJ- Iandl .
11 end of tt2 .
12

IKiuSE ~ • A linha 3 define uma tabela interna que tem dais compcaentes. 0
13 + Esta ~ a uti1iz a~lo ett cte nte :
14 sel ect l1fnr landl from ztx lfd
comprimento total de 1t e 13 bytes. 15 into corresponding fiel ds of t able 1t 1
• Alin~a 9 selecion a t odo s as campo s dez t xl fa l em i t. 0 comp rimento 16 where l i f nr between 'VlO' and ' Vl 2' •
17 loop at i t1 .
total de todos esses campos tern mais de 13 bytes. Coase quen temente, 18 write : / ftl-lifnr, itt-Jandt.
urn dump curto o corrers. 19 endl oop.
20
Utilizanda a adi~cia corres pondi ng fi el ds 21 + Esta ~ il t nettctente r
Z2 select + f rom zulfat
Se os co mpo n ent es da tahela interna nio estiverem na mesma ordem dos
23 i nto corresponding f i el ds of t able i t2
componentes do banco de dados au se eles Daa tiverem a mesmo tipo de dado
OIA 13, 'A'EIAS IHlmAS AVAH(AOAS, PAm , 43S
24 where l ifnr between 'VIO' and ' VIZ' .
25 s kip. A Listagem 13.5 mostra alguns exeroplos da. utilizacjo de select para
26 loop at f t t , adicionar Iinhas, uma por vez, em um a tabela inter na.
27 write : / ttt -j ttm-, itl·landl.
28 endloop. ENTRADA'" Lista g em 13. 5 Utilizando sel ect com a lnstrucdo append para preencher
29
30 ... Em vez disso, escreva :
~ tobelas internes
31 se lec t lifnr la ndl f rom zt xlfal i nto tabl e HZ
3Z where l i fnr between ' YlO ' and 'V12 ' . 1 report ztx1305.
33 s kip . 2 t ables ztxlfal.
34 l oop at ttz , 3 dat a it like ztxlfal occ!lrs 2 wit h header line .
35 write: / it2-1ifm::, 1t2- 1andl. 4
36 endl oop. 5 "'Fa"a desta f orma
37 free : ftl , 1t2 . 6 set ect > fr om ztxlfal i nt o it "observe que ' t abl e ' ~ OIlIiti do, dessa forma a
7 where l andl • ' DE'. "lt nhe vet para a l tnhe de caber;alh o de it
8 append it .
o c6digo na Listagem 13.4- ptoduz esta salda: 9 endsel ect.
'0
SAloA ~
VIa cc 11 loop at it.
Vll . OE 12 write: I it-l1fnr , i t -landI , ft -regio .
vl 2 DE ~
13 endloop.
VlO CC 14 refr-esh it.
Vll DE '5
V12 DE 16 "Ou desta f orma
17 select'" from ztxlfal "nl!;o hot ' in to ' , dessa forma a li nha vai para a
. VI0 CC 18 wher e 1andl .. 'DE' • "i rea de t rabalho da tabela padrao
Vll DE 19 append ztx l f al t o it . "e, em seguid a, e ecrescented e a it
Vl2 DE 20 endsele ct.
21
22 skip.
ANALISE~ • A linha 14 faz a leitura dos campos lifnr e l and! a p artir da tabela 23 loop at i t .
zt xl fal para os campos 1i f nr e 1andl da t abela in tema t t i . A tabela ; .. 24 write : I i t - l ifnr , tt- Iendi , it-regi0.
interna tern 0 campo 1i f nr_ext entre 1ifn r el and!, dessa forma vces • 25 endl oop.
nao pcdera utilizar into tabl e. Se i t! exigir que os campos fiquem 26. refresh 1t.
nessa ordem, a utiliza~a.o de cor r esponding f ie lds sera apropriada 27
28 "Hio des ta f orma
aqui.
29 sel ect > f rom ztxl fal "a l tnhe vai para a aree de t r abalh o da tabela
• A linha 22 seleciona eodos os campos da tabela zt xlfal para apenas padrlo
dois campos da tabel a i t 2. Isso eineficiente. Em vez dis so, a linha 31 30 where l andl • ' DE ' .
31 it = ztxlfal. "em segufda, e atr1bufda a l tn ne de caber;alho
mcstra que 01 0 seleciona r apenas os camp os necessarie s na ord em 32 append ft .
correta, sera passive! utiliza r i nt o t abl e. 33 endsel ect ,
34
Adiciaoeoda liobes, limo pa r umo, util izoodo se] ect . 35 skip .
36 loop at it .
A utiliza~aa de select para adicionar Iinhas , uma pc r vez, req uer 0 usc de uma 37 write : I it-lifnr, it-la ndI , it'-r egie.
area de trabalho e de uma segunda instruclo, como append, ins ert ou col l ect. 38 endloep-.
Omirir a adi~ao tabl efara com que a linha seja atribufda a uma area de trabalho. 39 fr-ee it.
E comum urilizar a linha de cabecalh o de um a ta.bela inte m a com o uma area
de trabalho expllcita , Par outro lade, voce pode utilizer a area de tra balho da
tabela padrac (definida utilizando t ables). o c6digo na Listagem 13.5 prcduz esta salda:
436 APREHDA EM 21 DIH AIAI/4 OIA lUABEUS IHTERHASAVAHIADAS. PARTE 2 437

2D
SAioA ~
Vll DE D7
Yl2 DE 14 21 1I'Hao desta fonna:
V8 DE D3 22 sel ect " from ztlclfal
23 where 1andl • 'DE I •

Vll DE D7 24 move- corresponding ztx lfal t o it .


Yl2 DE append it .
V8 DE D3" 25
26 endselect.
27
Vll DE D7 28 ski p. .
Yl2 DE
V8 DE D3" 29 l oop at it .
30 write : !. t t -I'l fnr, It .ro w_i d. it·1and l".
31 endl oop.

ANAliSE~ • N a linha 6l t abl e n ao aparece antes de it, sendo assim as campos de 32 fr ee ft.
ztxl f alvao paraalinha de cabecalhc de it. A linha 8 acrescenta a linha
de cabecalho a i t . o c6digo na Listagem 13.6 produz esta saida:
• Nalinha 17, Ilia existe a clfusula into, sendo assim cadalinha val para a V11 D DE
area de trabalho da tabela padrao ztxlfal. A linha 19 acrescenta aarea de VI Z D DE
m balho zt xlta l atabela interne (a linhade cabecalho nilo eutilizada). V8 D DE

• A linha 29 coloca cada Iinha na areade trabalho ztxlfal . A linha 31 Yl1 D DE


move ztx l fal paraalinhade cabecalho de i t antes de acrescentar. Esse Yl2 D DE
e0 metoda men os eficiente. V8 o DE
into corresponding fi el ds pede tambem serutilizado para colccar dados
• N a linha 11,a adiliio table e omitida antes de i t , sendo assim, a linha
em uma area de trabalho em vez de no corpo cia tabela intema. 0 efeito e ANAUSE~ vai par~"o cabecalho. 1i fnrvai para it. lifn r e land 1 vai pan t t- 1and l.
se me lhante ao ds inst'rur;3.0 eove-co rrespcnd tnc e emais eficiente. A Listagem
13.6 mastra como. A linha. 7 acrescenta alinha de cabecalhc a. i t .
• A linha 22 move as linhas para a area de nabalho ztxl fal. A linha 24
ENTRADA.... Listage.m 13.6 Como 0 adi<;co correspond ing fields 'pera a instru.;;ao utiliza urna in5trutjao adicional - move-corresponding - a fun de
~ sel ect produz 0 mesmo efeito do instru.;;ao move-corresponding cransferir a area de trabalho para a 1inha de cabe..Iho it. A linha 25,
em seguida, acrescenta alinhade cabecalbo ao corpo de i t . Isso d.a 0
1 report ztx1306.
mesmo resuleadc da primeira instruljao select, mas envolve u~a
2 ta bl es ztxlf al.
3 data: beq1.n of it occurs 2, instrllljao adicional e, portanto, e menos eficiente.
4 l i f nr like ztxlfal-lifnr.
5 row_1d like sy-tnd ex, Resurnindo seJ ect tabelas internes e efici€m cie
6 landl lik e zblfal·landl. I
7 end of ft. A Tabela 13.2 contem uma Iista das varies formas de sel ect quando utilizada
8 . com as tabelas internas e sua. eficiencia pertinente. Sao apresentadas em ordem
9 · Fa~a desta forma: decrescente desde a melhor ate a menos eficiente.
10 select l1fnr landl f rom zb:lfal
11 into correspondi ng fi el ds of it "obser ve que 'table' ~ om1ti do Tabela 13.2 Varies formos de sele ct o ~ preencher urn o tebelo interno
12 where l andl " 'DE ' ,
13 append it. Escrita 00(0)
I nstfUljOo(oes)
14 endseleet ,
15 sel ect into table i t Corpo
16 loop lit H. select into corresponding f ie lds of table it Corpo
17 write : / tt-l tfnr-, tt-rov 1d. it-landl.
select i nto it Unho de ccbeccihc
18 endloop . -
19 refresh ft . sel ect i nt o corresponding f ields of it Unha de ccbecelbc
438 IIREN DI EM21 Dil l 1. 1// . D~ IJ,TIBEL\S Im RHAS IVI N(AOO, lAm 2 439

A Figura.13.6 representa a rel a~ o entre as chaves primdrias das eabelas


Utilizando as tabelas de exemp lo 1fa l , 1fb l, de Hal a lfc3. Tom elas ccmecam com lifnr, e lfal 0 utiliza como a chave
lfc l e lfe3 primiria iateira. lfb i utiliza a mimero do fabricante e 0 c6digo d.a emp ress,
Antes de discutir 0 proximo tema, sera lltil se familiarizarmais com as nbelas 1fcl utiliza 0 mimerc do fabricante, 0 c6digo da empresa e 0 ano fiscal. 1fc3
de exemplo ztxl fal, ztxl fbI , ztxl fel e zt xl fc3j elas serge frequentemente utiliza esses mesmos campos, alem de urn indicador de GIL especial.
utiliza das nos exemp los e exercfcios a seguir . Essas tabelas sao baseadas nas A tabela 1fc I contem os resultados das tnIls',oes do GIL (livro-razgo) .
as
eabelas de Rl3, que sao 1fal, 1fb I , 1fel e 1fc3. Favor reviser estruturas dessas Cada Iinha armazena 0 valor de um ano fiscal dos resultados <Us rransacoesde
tabelas 'dentrc do DDIC, assim que ler as descricoes abaixo. um fabric.a.nte dentro de uma empresa. A chave primaria consiste em 1i f nr,
A SAP desenvclveu 0 &/3 a fim de sec utilitivel por urn conglomerado bu1cr s e gjahr, no ana fiscal. .
que consiste em md lriplas empresas. Durante a configura~:io inicial do R/3, o conjunto de campos denominados umNNs, umNNh e umHNu erepecido 16
um ccdigc de empresa earribufdo a. cada empress no conglomerado. 0 c6digo veees dentro de uma linha 1fcl. Cada urn dos primeiros 12 conjunto s concern
de em~re~a forma parte cia chave primaria em muitas t abelas de dados-mestres, os Iancamentos de debito, Iancamentos de credito e vendas de um pertodo de
qu e permreeac con glo mera.do manter as inform~5es de codas as suas empresas Iancamento (normalmente urn mes) do ano fiscal. Os ultirnos quaere conjun-
em urn Unico banco de dados. 0 gerenciamento pede executar rela.t6rios para. tos correspondem em periodos de fechamento adicionais utilizados para.
urn c6dig o de empress individual, assim como relate rios consolidados conter ajustes de contabilidade do final do ano .
abrangendc multiplas empresas.
A eabela 1fal ccntem as informa~6 es -m~stres sobre fabricantes, que sao
ccrrentes em todas as empresas.Ignorando mandt, SU2 chaveprimdria consisrira Podehover12 au 13 perfodos de lcnccmerrtc em um ana fiscal. lsso
apenas em 1i f nr, que representa 0 mimero do fabricanre. Os campos de 1fal, edeterminado quando 0 sistema einiciolmente configurado. Se hoover
13, entao somente trfls periodos de fl!chom ento odicio nois existirtio .
par exemplo, apresentam a nome do fabricante e endereco, nemeros de
telefone, idiom. falado e atividade (definida pd o tipo de produto comerciaIi-
zado'p ela empress, como produtos qutmicos, agrfcolas e assim por diante). A rabela lfcl contem resultados de trans.<;oes do GIL especial. G/Ls
A tabela 1fbI contem 2S iaformacoes-mestres sobre fabricantes, que SaO especiais ut ilizam uma ccnta alternativa de reconciliacac no Iivro-razac. Cads
especrficas de uma empress. Sua cbave primfria consiste em 1i fnr e bukrs : 0 linha de 1fc3 armazena urn resume dos G/ Ls especiais de urn ano fiscal inteiro
campo de ccdigc de empresa (ve;aa Figura f3.6).Armazenados.dentro de 1fbl, em tres campos: sald v, 50 111 e habn1. Esses campos contern 0 balanlSo obtido
estao 0 numero da conta d.a emprcsa com 0 fabricante, 0 numero cia conta de e encaminhado e 0 total de la.nljamentos de debito e credito durante 0 ano fiscal.
reconcilia~o, as ioforma~6es sobre.impost os retidos, urn indicador de caIculo A ch.ve primm . e• mesm. de 1tel, alcm de um indic.dor de GIL especi.l :
de taxa de ;uros e assim por diante. shbkz. 0 valor nesse campo indica qual conta de reconcilialiio alternativa e
utilizada.
F igura 13 6 campos
, de cnove prim6rio
-_ _.A-_ _,\
A maioria das tabelas de clados-mestres utiliza urn mo delo semelhante
A
Re/ofiOo ~ tre os para suas estru turas de chave primi ria.
cnoves primarios. Neste livro, vers6es sirnplificadas dessas tabelas sao utilizadas: zt xl fal,
zt xl fbI) ztxl fel e zt xl fc3. Elas foram criacla.s e foram preenchidas pela rotina
de con£guraC;ao.

lab elos-mestres de comerciolizo¢o Processome nto de interrup<;oo de control"'e'--- _


Depois de preencher uma tabela intema com clados, em geral, voce precisari
escrcver os dados. Freql1entemente, essa saCda ira conter as informal$oes de
resumo (como tows) DO infcio au termino do relat6rio. Alem disso. poderio
existirresumos intermediarios (como subtotais) dentr o do corpo do relat6rio.
Por exemplo, suponha que voce precise escrever os resultados do GIL cia
ztxlfcl para cada fabricante, com subtotais por ano fiscal e urn total geral ao
termino do relat6rio.
-
"'!--~ - - - -

440 APIEHDA EM21 DIAS ABAP/4 DIA 1',TABEUSINmNASAVAN\.lDAS,Pl m l 441

Para isso, voce pede ler as dados em urna tabela int erna e. em seguida, • at fir st nio precisa vir antes de at last. A ordem dessas instrueroes
dectro de l oop at, utili ze as seguint es ins tru~6es : pede ser tr ocada.
• at f i rst / endat • Essas ins tru~6es podem aparecer multiples vezes dentro do mesmo
• at 1ast / endat loop. Por exemplo, voce pode ter duas instroljo es at first e tres
instrucoes at la st deatro de urn loop e etas podem aparecer em
• at new / endat qualquer orde~.
• at end of / endat • Esses instrucces nio devem ser aninhadas um a dent ro cia outra (ou
• sum seja, at 1ast njic deve ser colocada dentro de at f i rst e endat ).
• on change of I endon • N so existem adic;6es pan essas instrucoes.
Na primeira vez que ocorre r 0 loop, as Iicbas de e6digo entre at f i r-s t e
NOYO lilt... A primeiro instru¢o de coda urn desses poresde instruc;oo - exceto sum -
lERMO " co ntrola quando sera exeanodo 0 c6d igo que reside entre e les. Esse tipo de
endat serso executadas. Na ultima vez que ocorrer a loop. as linhas de e6digo
con tro le de ncml nc-se uma interrvp¢o de confrole. Seu prop6sito e execute- 0 c6digo entre at 1ast e endat serio executadas. Se existirem mulriplas ocorrencias de
entre eles, sempre que uma condil;oo espedfico nos dodos , detedodo, durante 0 at first, todas e1as serso executadas. at l ast se comp orts de uma forma
process omento do loop. semelhante.
Utiliz e at fi rst para:
Utilizando as instruc;6es at fj rst e at 1ast • Executar 0 loop do prccessamenrc de inicializacio
Utilize as insrru coes at f i rst e at 1ast para executaro processamento durante
• Escrever as [obis no ini'cio de um relat6rio
a primeira au a. Ultima passagem do loop por uma tabela interna.
• Escrever cabecalhos
Sinlexe des i nslru~oes at f i rst e at 1ast Utilize at last para:
III A seguir, veja a sintaxe das instru;oes at fi r st e at 1ast. • Execuiu a loop do prc cessamento de tertninacio
Z l oop at ft .
• Escrever os totals ao eermlnc de urn relat6rio
S at f i rst . • Escrever rc dapes

...
m
endat •

at last .
A Listagem 13.7 mostra um programa de exemplo que utiliza essas
estrutu ras.

endat. EHTRlDI" Llsta ge m 13.7 Utilizanda at fi rst para escrevercabe<;alhas e at l ast


,. para sublinhar a ultima linha
. endloop.
1 report zt x1307.
onde: 2 tables zt xlfc3.
J data it l1ke ztxlfc3 occurs 2S with header line .
• it euma rabela interna. 4 s elect" from ztxlfc3 into ta bl e it where stlbkz • 'Z' .
S loop at it.
• - -- represents qualquer numero de linhas de c6digo (ate mesmo zero).
6 at f i rs t.
7 wr1te: I ' Vendor' .
8 12 ' Cpny '.
O s segcictes pontos se aplicam: . 9 17 ' Year ' .
• instrUl,joes s6 podem ser utilizadas dentro de l oop at ; elas nao
Es5:lS
10 22 'Bal c/F' .
11 ul1ne .
podem ser uti¥zadas dentr c de sel eet.
12 encat,
13 wri t e : I t t - It f nr,
- -------
442 AP.REHDA EM 21 DIAl AW l' DIA 1>. TABElASIJITERHASAVAH\ADA5,PArTE2 443

12 it-bukn. OOWlA~ Listagem 13.8 Co nteudo dos compos do tebelo intemo e ntre at e endat
"15 17 it- gj ahr,
16 2Z i t - sal dv. 1 report ztx1308.
17 at las t . 2 t ables zu lfc3.
18
19
20
write : /
12
17 '
----,
'
.. 3 data it l i ke ztxlfc3 occurs 1 wi th header line .
4 sele ct 11 up to 1 rows from ztxlfc3 into table it .
S l oop at it.
21 11 6 wr ite: I 'Before " at f irst ": ',
22 eneet , 7 I t t- Htnr , tt-bukrs , tt- gj ahr , it-shbkz. it-saldv,
23 endloop. 8 tt- sclll ,
24 free it. 9 at ff r st .
10 write : I ' Inside "at first ":',
11 I i t - l itn!" , 1t - bukrs. 1t - gj ahr . it-shbkz. 1t-saldv,
o c6digo na Listagem 13.7 produz esta safda: 12 i t - sol n.
Vendor Cpny Year Ba l elF 13 it- litnr · ' XXXX ' .
14 endat .
1000 1000 1995 0. 00 IS write:· I ' Between " at fi rst" and " at la st ": ' ,
1000 1000 1996 5,000.00 16 I i t-H f nr , f t-bukrs. It-gjahr, it-shbkz, t t -saldv,
1000 lOCO 199B 4.000 .00 17 1t-sol11.
1040 4000 1997 0. 00 18 at las t .
1070 2000 1997 1.000. 00 19 write : I ' Inside "at last " :' ,
1090 2000 1997 250 .5 0 I i t -l1fnr . it- bukrs, 1t -9jahr, it- shbkz. 1t - saldv ,
21l
VI 1000 1991 1.00 0. 00
11 i t - solll.
VI 3000 1990 1.000.00
3000 1994 1.000 .00 11 i t-l1fnr • ' XXXX' .
VI
V. 4000 1997 100.00 23 endat .
write: / ' Afte r "at last" :',
V6 2000 1997 1.000.00 14
V6 4000 1997 D.DO 15 I it~l'tfnr , 1t-bukrs, i t . gja hr . it- shbkz. it -saldv,
16 it-soll l.
27 endl oop.
IHiu5E ~ • As linhas de 6 a 11 sao apenas executadas na prirneira ocorrencia do 28 fre e ft .
loop. Esse exemplo escreve cabecalhos seguidos por um sublinhado
(linha 11).
• As linhas de 13 a 16 escrevem 0 conteadc de uma linha. Elas sao
o c6 digo na Listagem 13.8 produz esta ,aida:
executadas para cada linha. Bef ore ' at f irst ':
UiDl ~
soe.oo
.......-..........
1000 1000 1990 A 1, 000.00
• A5 linhas de 17 a 22 sao executadas apenas n.aUltimaocorrencia do loop. Insi de ' at fi rs t':
Esse exernplo escreve urn sublinhado ao final de cada uma das colunas. 0.00 0.00
Between ' at first' and 'at last' :
1,000.00 500.00
Utilizando 0 inesperado : va lores de com ponentes vaz ios
Entre at first e endat ou ent re at l ast e endat , a s valores de compo nentes ._..__..... .....
lDOD 1000 1990 A
Ins1df! ' at last' :

Aft er ' at last ':


0.00 0.00
da linha da irea de rrabalho nie con terso quaisquer dado s. O s campos-cbave
l DOO 1000 1990 A 1, 000.00 500.00
padrjo serac preenchidos ccm " (ast eriscos) e os campos numericos serso
configurados como zeros. A instruljao endat restaura 0 conteudo para os
• A lin.ha 4 seleciona urn registro de ztxl1c3 para it.
valores iniciais que 0 rnesrno tinha antes de entrar em at. As alteracoes na area
IHillS~ ~
de trabalho denrro de at e endat serio perdi das. • Denno do loop que ccmeca na linha. 5, a comeede da linha e escrito
A Lisragem 13.8 demonstra que os componentes dos campos-chave primeiro. E1e e en tao escrieo novamente dentro de um.a at fi:st e
padria serso preenchidos com asteriscos e que a s campos nao-chave serso endat . A salda mostra que os campos-c have padno cc ntem astenscos
preenchidos com zeros, dentro de urna instruljao at ou endat . e as demais ccntem zeros.
-~-- --...--. -- - _ ...... -_ . -

444 AmMoA EM 11 DlAS ABAPH


DIA13: TABB.AS I NmN AS AYAN~DAS, PAiTE 2 445

• A linha 13 atribui urn novo valor para t t - l i f nr. • Essas instrulioes Ilia devem ser aninbadas uma denrro cia outra (ou
seja, at end of IUO deve ser eolocada dentro de at new / endat ).
• Depois de endat na linha 14, a salda mostra que to dos a s valores foram
re~uurados para a area de trabaIho. As alte raCjoe.s n a linha de cabecalho • N io existem adi~oes para essas ins troCjoes .
feitas deatro de at / endat sers o perdidas.
Ulilizondo at new
• A linha. 18 mostra que at l ast exibe 0 mesmo compo rt am ento . Cada vez que 0 valor de c for alteradc, as linhas de c6digo entre at new e endat
• A linha. 27 sai do loo p na prim eira passagem para man ter a. salda serio executadas. Esse blo co sera tambem executado durante a primeira pas·
simples. sagem de lo op au se quaisquer cam pos i esq uerda de c forem alrerad cs. Entre
at e endet , as campos num ericos i dire ita de c serio configurados como zero.
Utiljzao d o a s i nstruC;6 es at newe at end of Os campos Dio numericos serso preenchidos com asteriscos (*). Se houver
Utilize as instru~oes at new e at end of para deeecear um a a1teraliao em uma mUltiplas ocorrencias de at new, codas elas serac executadas. at end of se
coluna. de uma passagem de loop para a pr6xima. Essas instrulioes permitem compo rta d~ uma forma semelha.nte.
que voce execute 0 ccdigc no inicio e fmal de urn gropo de regis tros.
.oYO lrrrl...Urn nfve/de contro /e co rresponde 0 0 cornponente identificodo em umc in~c5o
Sinlaxe dos inslru~6es at new e at end of TEDO r de interrupt;c5o de eontro1ei ele regulo 0 interrup;c5o de controle..Po r exemp lo,
no seg uinte frog mento de c6digo , f2 e urn nivel de eeeecle porq ue opo rece no i n~60
.A seguir, veja a sintaxe das instnl~6es at new e at end of . at new.
loop at it .
sort by c. at new f2.
loop at f t . "( deve extsct r alg l,lll cOd1go aqui )
endat.
at n@w c. endl oop.

endat , Dizemos que uma ineerrupcao de controle sera acionada se 0 nfvel d e


controle fcealterado. Isso significa que quando a conteudo do nlvel de controle
at end of c.
for alterado, 0 c6digo entre at e endat sera executadc .
endat. Uma ineerrupcte de contrc le tambem sed. acionada se qualque r urn dos
campos antes do nfvel de contrele na estrutura for alterado . Portanro, voce
endloop.
deve definir a estrutura cia tabela interna para cornelia! com as campos que
onde: formam seus nlveis de controle. VatS tam bem deve clas sificar por todo s os
• tt eum a tab ela intema. campos antericres a c, incluindo c.
a
Entre at e endet, as campos nurnericcs dir eita do nfvel de cont rol e serio
• c eurn comp onente de it. zero e os camp os nao numericcs serso preenehidos com asterisco s.
• - - - representa qualquer mimero de linhas de c6digo (ate mesmo zero). As figuras 13.7 e 13.8 ilustram a utiliza~iio de at new.
Este programa fome ee urn exemplo pritico da.s figuras 13.7 e 13.8. Ele
ilustra a ponto em que uma inter11lp~ao de con trole sera acio nada, sempre que
Os seguintes pontos se aplicam: a mvel de controle for alterado au qualquer campo antes d o nfvel de contra Ie
• Essas instrUCjoes podem apen a.s: ser utiliz.adas dentro de loo p at j elas for alterado.
nao podem ser utilizadas den tro de sel ect.
• at new nao precisa vir antes de at end of. Essas ins t ruCjoes po dem
aparecer em qualquer ordem.
• usasinstrUCjoes po dem aparecer multiplasvezes dentro do me smo loop .
. Par exemplo, voce pode ter duas insuuCjoes at new e tres ins tIUCjOes at
end of dentro de um loop e elas pode m aparecer em qu alque r ordem.
1ll.l 13.TABlUS 1N1BHA5 lV"'~ PART! 1 447
,7;<~lg"rA J3 I
22 write : /it·n. a-fl.
&to figure mostra que 23 endat .
eentecde de it
o n!velde controle ~
11 f2 24 endlecp ,
od onodo quando 0
25 skip.
va/orde II e
alteredo. AJ~m elisso. ~m 26 sort it by fl f2. "i t agora s e perece com a Figura 13.8

~~
eta mostro que 12 Scrdc 1 • 27 loop at it.
contem um osterisc:o 2 • 28 at new fl.
dentro do inle l11Jp¢o
de contrele (entre at ~~ 3 •
_ -:.. ; '~' ..
29
30
write: /it-fl.
endat .
e endat).
~~ f2 contern urn cstertscc,
porque it se enccmrc c
31
32
at new f2 .
write: /4 it -f2.
direito do nivel de ccntrcle
~1 1 33 endat .
34 endl oop.
35 f ree i t .
Figura J 3 a
Esto figure mostro que conteVdo de it
o nrvel de centro/e ~
o do node quando1 2
fl 12 o codigc na Listagem 13.9 produz esta safda: .
o u 11 Ii a /teredo. 'sse
~~ ~
1•
ceenrec e porque 11 SAIDI 2•
vem antes de /2 no
eslruturo de it. ~ ~.0; Sardo: 1 A
3 A
3 •

~~
--
I B
:W 2 B
1 A
3 A
@B ~ 18
I 8

EN1lADllli. · Lisla gem 13. 9 0 c6digo nos figures 13.7 e 13.8 e reproduzido em um
r exemplo pr6tico A
B
1 re port ztx1309. 8
2 dat a: begin of it occurs 4,
3 fl. A
4 f2,
5 end of t t,
6 • A linha 12 c1assifica it por f1. Na liaha 14, at new e acionada na
7 i t.. ' lA' . append i t . "Preenc he i t com dados primeira ocorrencia do loop e sempre que f1 e alte rado.
8 it .. '3A' . appendit.
9 ft s '18 '. append it.
• A linha 19 classifies it per f2. N a liaha 20, at new e acionada na
10 it.. '2B' . append it. primeira ocorrencia do loop, ou sempre que 0 valor de f1 ou f2 seja
11 a1t~rado. 1550 acontece porque um nfvel de coa tro le sera acionado
12 sort it by fl. "t t agora se earece eee a Figura 13.7 sempre que f2 for alte rado ou qualquer campo antes de f2 tambem
13 loop at i t . tenha sido alteradc.
14 at new fl .
15 write: / it- fl,u-rz . • A linha 26 classifica it por fl e f2. Na linha 28, at newe acionada
16 endat . sem pre que 0 valor de fl e alterado e na linha 31, at newe acionada
17 endl oop. sempre que fl ou f2 ealrerado.
18 skip.
i 19 sort it by f 2. "it agora se perece cocn a Figura 13.8
20 loop et it.

I 21 at new f2.

~
..
..-
.~
~
.
. ,'. ;;".:

~~ "1'.
448 AmM OA E. 21 OIAS AlAP/4
DllIH\IIEUS IIrnWSA'IJIIADAS,PAI1l7 449

Utilizende at end of • A Iinha 12 classifies i t por f l.


As linhas de c6digo e~[re at end of e endat sersc executadas:
• Na linh a 14, at newe acicna da sempre que f1 ealterado.
• Se 0 nivel de contro le for alrerado.
• Na linha 1B, at end of sed acionadase 0 nfvel de controle for alterado,
• Se qualquer campo antes do nfvel de cont role for alteradc . quando a pr6xima linha for Iida ou se essa for a ultima linha.
• Se essafor a Ultima linha cia eabela.
A Listagem 13.10 iIustra essa instrucao. ~ Noo utilize as instrur;6 es de interrup¢ o de controle dentro de umc
\..CUldado estrvturo l oop at i t where • • • j 05 efeitos ~l!rCo imprevisiveis.
Usta g e m 13.10 Como at new e at end of sao ocionados pelos
clteroc;oesde compo e o ltera~6es de nfvel de ce ntrale
Utilizando a in stru ~ci o sum
I report ztx1310.
I data: begin of it occurs 4, Utilize a insuu!rao sum para calcular os totaisdas linhasde um nivelde controle.
3 fl.
4 fl. Sintexe de instru~ao sum
5 end of i t. A seguir,veja a sincaxe da instrucao sum.
6
7 i t · ' lA' . append t t . "Preen che it com dado! at f1 rstf1 ast/nl!w/I!nd of .
8
g
it .. 'JA' . append ft .
it .. 'lB' . append 1t .
,....
10 it • '28' . append it. endat.
11
12 sort it by fl . onde:
13 l oop 'at it.
14 at new fl. • -- - represe~ta qualquer mimero de liohas de c6digo.
15 wri t e: I ' st art of:' , it-flo
16 endat.
17 wri te : / 4 f t af l. Sum calcula urn total do valor arualdo ntvel de conerole que a contem. Isso
18 at end of fl . ficm mais clare se YOCe considerar que essa instrul$io faz a seguinte:
19 wri te : f ' end of: ' . it-f lo
20 endet •
• Localiza codas as linhas que tem os mesmos valores dentro do campo
21 endl oop. de nfvel de conrrole e toda s as campos aesquerda dele.
22 free i t. • Soma cada coluna au merica adireita do nIvei de contrcle.
• Coloca os totals nos campos correspondences d.a area de crabalho.
o c6digo n~ Listagem 13.10 produz em sald.: A Listagem 13.11 ilustra essa iostru~o.

5J.iDi ~
start of: 1
I Usta g e m 13.11 Utilizcndo a instruc;oo sum porc cclculcr as tatais de urn
1
end of : 1
EN1UDl~ ~.".:.::~=---
nivel de- contrale _
st ar t of ; 2
1 report ztx 1311.
I
2 dati: begi n of it occur s 4 ,
I!nd of: 2
st art of: 3 3 fl.
3 4 12 type t ,
end of: 3 S 13- typl!: 1.
6 end of it.
7
8 1t· fl" 'A' . it-f2 " 1. i t · f3 " 10 . apPl!:nd i t .
9 it-fl" ' s'. 1t -f2 " 3 . i t ·f3 • 30. append i t .
450 APRENDA EM 21 D1AS ABAP/4
DlA 13: TABEUS INTERNASAYAHVo0AS, PARTE 2 451

Flg u rg 13 9 ccntecdcs do ltnhc


10 1t-fl .. 'A' . 1t-f2 .. 2. it-f3 " 20. append i t.
de cobec;alho
11 it~fl .. ' 8' . it-f2 s 4. it-f3 .. 40. append i t. Esto figure i/ustrtr 0
12 que occrre no
13 sort it by flo Mit agora se pare ce com a Figura 13.9 Listogem J3.1 J. Na
14 loop at it. primeiro ocorrencia do
15 at new fl . loop, a infelTU(Jf;oo de
16 SlII1 . controle e odonodo e
17 write: I ' total:' . it-fl, it- fl. it- f) . o instrv¢o sum e
execvtodo. Todos os
18 endat .
linhas que h!m 0
19 write: / 11 it- f2, it-f3 .
mesmo valor do ntvel
20 endloop. de centro/e sao
21 free it . locolizados e cs
compos numericos Q
direito do n(vel de
a c6digo na Lisragem 13.11 produz est a saida: controlesao somodos
no area de trcbolho.
sliol ~ total: A 3
1
30
10 conteudos do linho
2 20 Fi gura 13 10
sort i t by· flo de ccbecclhc
total:B 7 70 Esta figure mom 0 loop at it. ANTES de sum
3 30 que cccrre no at neW' f L
4 40 segundo vee que a DEPOIS de SUIl
sum .
intelTUp¢o d~ wri te I
IHlJ.ISE~ • A linha 13 classifica i t por fl em o rd em cre scente. 0 cc nterido depois
da classificacao aparecera da forma como mostrado na Figu ra 13.9.
centrale e odonodo e
o ins1nl¢o sum e
endat •
endl oop,
ex.ewtodo.
• Na primeira ocorrencia do loop, a c6digo entre as linhas 15 e 18 e
executado. 0 nfvel de controle contem 0 valor IA I .

• Antes de a linha 16 ser executada, a s campos cia are a de tra balh o a


direita do nfvelde controle irsc conter zeros. A instru/.iao sum localiza
todas as linhas adjacentes que tern urn 'A I em fl. E1a soma as colunas f1 12 13
centecdes de 1t
numericas a direita do my el de contrale e coloca 0 result ado na are a
de trabalho (veja a Figura 13.9).
• Na segunda iteraliao do loop, at newnao e acionada. Utiliza nd o a inst ru<;60 on c hange of
• Na terceira iterali2.0 do loop, f1 contern IB I e at new (linha 15) e U ma outra in strucio que voce pode utilizar para executar 0 pro cessamento de
acionada. icterrupcso de controle e
a on change of , Tal instru; ao se comp ort a de uma
maneira seme lha nte a at . new.
• Antes de a linha 16 ser executada, os cam pos cia area de trab alho a
direita do nfvel de controle irao conter zeros. A instrucio sum lo caliza
Sintcxe de instru~Cie on change of
todas as linhas adjacenres qu e t ern urn I BI em fl. Ela soma as colunas
numericas a direi ta do nfvel de controle e colc ca 0 resultado na area
de trabalhc (veja a Figura 13.10).
-
III A seguir, veia a sintaxe da instrucf o on change of.
Z on change of v1 [or v2 • • •] .

e
A soma pode resulter em overflow (estouro), por que 0 to tol colocodo
em um compo do mesmo comp riment o. 0 overflow fez com que um
S
m
[e lse,
---)
endcn.

dump curto oco rra com 0 erro SUM OVERFLOW. Ao util izor sum, evite 0 T o nde:
prob lema aume ntando 0 comprim; nto dos campos nurnerlccs ontes
de preencher a tobela intemo. • vl, e v2 sao no mes de st ring de cam po ou variavel.
452 APRENDA EM 21 DIAS AWl! D1A 13,TABELAS INTERNAl AVAN\ADlS, PArn2 453

• . . . indica que qualqu er mime ro de condicees or poderf vir em . J6 que os compos e udllc res globeis nco existem fo ra de urn loop, voce
seguida. nco pode utilizer on change of fore de urn loo p.
• - -~ represen ta qualquer ntimero de linhas de c6digo.
Sempre que on change of fa r executada, a conteudo de seus ca~pos sera'
comparadc com 0 conte udc do s campos auxiliares globais. Se fo~em diferentes,
O s seguintes pontes se aplicam: on change of ser a acio nada e as campos auxiliares serio atualizados com .05
• S~ 0 V2.1o r de qualquer uma das variaveis (vI, v2 e assim p a r diante) for novas wares. Se forem as mesmos, 0 c6 digo denrrc de on change of nio sera.
alt erado de urn teste p ara a outre, as instrucdes depois de on change executado.
of sersc execu tadas. Esse conceito e graficamenre ilu str ado nas figuras de 13.11 a 13.16.
• Se nenhuma alteracio fo r detect ada e el se for especificada, as ins- Compo ol,lXiIlor
tru~6es depois de el se serso execu tadas.
Figura 13 11
globel porc n·f2
Esse ea primeira _ . •t. '·
on change of difere de at newnos seguinces aspectos: a~ncia de um loop
com a utilizo¢o de
• Eta pode ser utilizada em qualquer estrutura de lo op, nao apenas em on change of.
loop at. Par exemplo, p ode ser utili zada dentro de se l ect e endsel ect,
do e enddoa u while e endwhile, be rn como dent ro de even to s get .
• Uma unica on change of pe de ser acionada po r uma alt eraCjao den tro
de urn au mais camp os identificados depois de of e separa dos par or . No primeiro possogem pelo loop, it·f2
diferedes conte(idos de comp05. o ux.iliores,
Esses campo s podem ser camp os elementares ou strings de campo . Se en!l3o on change of 6 aclonado.
voce estiver dentro de urn lo op, esses campos nao precisarao pertencer
ao loop.
Compo avxilior
• Quando utilizada de ntro de urn loop, uma a1tera~ao em urn campo a. FlgurR 13 '2 global perc jf·f2
esquerda do nivel de co ntrole nao acionara um a interrupcfo de con- Quando on change · . q;;;;;Ii-~ 7

t ro le. oj eacionado. 0
compo auxiliar e U
• Quando utilizad a de ntro de urn lo op, as campos a direita ainda irao atvolizado. 11 !2
conte r seus valores originais; eles nao sao alte rados pa ra zeros au ~0
asteriscos,
• Voce pede ucilizar el se entre on change of e endon.
SiHI as 'conlll(idos de it·f2 soo copiodos

• Voce pode ueilizd-la com l oop at it where. . ..


~~ perc 0 compo ouxilior, e os inJiru¢lls
dentro s60 executodos.

• Voce pede utillzar sumcom on change of. 1550 soma tcdos os campos
~~
numericos, exceeo o (s) identi ficad o(s) depois de of. Compo ouxilior
Figura 13 13 globel poro a·f2
• Q uaisquer valores aleerados dentro de on change of permanec erf o Esser e 0 segundo
- .. .. '
!., . ;: :~

alterados depo is de endon. 0 ccnteudo da linha de cabecalho nao sera possogem de loop. 0
restaurado ja que pertence a at e endat. confeudodo campo lt
c auxilior e 11 !2
correspoodido e on
o que he per Ires de on change of change of nco ~ ~~
Q uando urn loop comeCja a execu cao, 0 sistema cria urn campo auxiliar global acionode..
~0
para cada camp o ident ificado em uma instru cfo on change of con tida pelo loop.
Na criat;ao, esses camp os rece bem valores ini ciais padrao (espacos em branco WI!
" m Ne segundo passegem pelc lo?~,. it·f2
e es conteudos dos compos au xtho res
sao os mesmcs, ent60 on cha nge of
~~
au zeros). Ele s Sao esvaziados quan do do termino do loop.
nco e ocionodo.

.J
.\ , · ~ 1 . ·v

li;';~~
r:

DlA 13~ TABELl51HT£RHAS AYAH~ PAm. 2


454 AP IENOA EM21 DIAS ABAP!4

Usta gem 13.12 Utilizcndo on change of de duos mcneiros diferentes:


EN1iADI~
Eig u rp 13 14 Compo ouxiliar
Esse e 0 lerceiro global porn if·f2 dentro de loo p at e dentro de sel ect
- -~~~ -
possogem de loop.
On change of e
1 report ztx1312.
odonodo.
2 tables zo.lfal.
3 data : begin of 1t occurs 4,

5
f1 type i •
12.
6 f3 type i,
No.Ierceiro possogem pelo loop, it-f2 7 14.
~~~~ dlle re dos cc raecdcs dos compos end of it .
8
ouxiliores, enlfio an change, of
, ocionodo . 9
10 it-fl .. 1. 1t -f2 .. ' A' . it-f3 .. 11. it·f4 .. ''11 '. append it.
11 u·n." 3. 1t-f2 .. 'A'. it-f3 .. 22. i t -f4 .. 'X' . append it .
F i gura 13 1 5 12 1t.fl .. 1. 1t·f2 .. 'A'. it.f3 .. 33. it-f4 .. 'y' . apllend it.
,4qui, 0 cam po olJrilior 13 tt.f1 .. 2. tt-f2 .. 'A' . it-f3 .. 44. it-f4 .. ' Z' . append it.
e atUolizodo. 14
15 loop It it.
16 on change of it-f2 .
17 write: lit-fl, 1t-f2, it·f3, it-f4 .
18 enecn.
19 endloop.
o cent.Ucla d. jf.1'2 ecopioclos 20 write: I 'End of 100~'.
pa ra 0 ca mpo ouxilior,e OJ 21
instnJ¢es demn;l s60 executcdcs. 22. executando 0 IIll!SlI'IO c6digo noulllente - 0 CaJqJO aux ainda cont~ ' A'
23 loop at tt.
24 at first.
25 mte: I 'looping without a reset ••• '.

I
f lu u ra 13 16 Compo ouxilior
global pera it·f2 26 'endet ,
Esta ea quorlo ~7 27 on change of i t·fZ.
possogem peto loop.
On change of nee e 28 wr1te: I i t .fl, 1t.f2, i t · f3 , it-f4.
ociona do. I 29 else.
30 write : I ' en changl! "of not t rigge r ed for row', sy-t1bix.
31 endcn,
32 endloop.
33 wrtte: I 'End of loop' •
No l1/timo pOssogem pelo loop, it·f2
c:::omeUdos de camposauxiliares
• O! 3'
~S;~~ 160 os mesmcs, enIOo on challge of 35 .reconf1g\,lra 0 campo aux para espal;os em ereecc
n60 e odonodo. 36 clear 1t·f2.
37 on change of it-f2.
38 endon.
39 loop at it.
40 at first.
41 write: I 'Looping after reset ••• ".
Utilizando on change of 42 endat .
A Lis tagem 13.12 ilus t ra a utilizaC;i o "d e on change of. 43 on change of it-f2.
44 write: lit-fl, it-f2, it-f3, it·f4.
4S endcn ,
46 endloop.
47 write: I 'End of loop'.
456 ' mNO' EM21 DiAl ,",P/ 4
""'\AD'" PARTE 2
OIA lU'BELlS INTIl<NAS 457

48 f ree it. • A tabela intern a nio e utilizada depois da linha 31, en ta.a aqui it e
esvaziada. Isso exclui todas as linhas e libera a mem 6ri.a.
4'
50 sel ect" fnn zb:l f l1 where land! .. 'US'. • A linha 33 selecicna todas as linhas de zt xl fal na ordem de 1andl.
Si an change of zt xlfal·1andl.
52 write: I ' l andl"' . zt xl f al - la ndl. • Embora essa ins tru!jio sel ect retorne 23linha.s, como pode ser vista
53 endon. pela ultima linha de safda, somente cinco valores exclusive s de 1andl
54 eees et eet , existirio e serso escritos.
55 write : I ' End of sel ect ' ,
56
57 "executa r I IM!!sma tn stru ~&o sel ect novamente sen lima re cQn f i 9' urar;~O f unciona be'll
Utilizando 0 pe rigo ocu lto em on change of
58 select .. fran , t x1fa l wheN! landt .. 'US' , Na primeira ocorrencia de urn loop, a campo auxiliar global e criado com
59 on chang! of ztxlfal - landl. valores iniciais {espacos em braccc ou zeros). Se a primeiro valor em urn loop
60 write : I 'landl-'. ztx lfa l - l and!. for am espa!i0 em bran co au zero. on change of aia sera acionada. A Lisragem
61 endcn,
13.13 ilustra esse problema e oferece urna solulj-a.o.
62 endsel ect.
63 ...r ite: I ' End of sel ect.".
OOiADA~ Ustag em 13 .13 linha do loop #1 noo ad ona on cha nge of

Em um ambience 3.0F e posteriori 0 c6digo na Listagem 13.12 produz 1 re port ztxl313.


Z data: begin of i t occurs 4 ,
esta safch: 3 f1 typl!!! i ,
1 All " 4 end of i t.
End of loop 5
l oopi ng wit hout a reset • •• 6 it.fl - O. append it:
on change of not t ri ggere d for row 2 7 1t-f 1 - 3. apPl!!!nd it.
on c:hange of not t ri 9gered f or row 3 8 1t-fl - 1. append t.t..
on change of not tri ggered f or row 4
9 1t ·f1 · 2. append it.
End of ' 09P
Loop1ng after reset . .. 10
1 "A 11 W 11 l oop at it . "loop 11
End of loop 12 ert t e: I 'aanew row aa ' , 12 i t ~fl .
l andl - US. 13 on change of i t - fl .
End of sele ct 14 write : I 'fl changl!!d: " lZ it-fl.
landt- US 15 endcn.
End of select 16 end'lccp .
17
18 skip .
AlillSE ~ • As linhas de 10 a 13 pre enchem a tabela interna com dado s. i t - f2
co ntem a valor I A I em codas as quatro linhas.
19 l oop at it . "l oop 12
ZO wt-t te : I 'a- new rown ' 12 i t - fl.
I

• A linha 16 escreve cada linha assim qu e ela e prccessada.


• As linhas 17, 20, 23 e 26 sao acionadas na primeira ocorrencia do loop .
Z1
22
Z3
on changl!! of it-flo .

el se,
I.
write : I 'fl changed: lZ u - rr.

Issc acontece porque os campos auxiliares con rem zeros ou espacos 24 if sy-tabix a 1.
em branco, entac diferem dos valoresna primeiralinha. O s valores cia zs write: I ' fl changl!d:' . 12 it-flo
primeira linha sao co piados para as campos auxiliares e as valores sao 26 endif.
27 endcn.
escrit os pew ins t ru co es wri teo
Z8 endl oop.
• A linha 20 nao e acionada novamen te porque em todas as passagens Zg f ree it.
de loop sobseqaenres, o valor de it·f2 e IAI eo campo auxiliar global
tambem contem I A I • Observe que um a alteralj-ao no valor :a. esquerda
de f2 mo acionari on change of como ocorre com at new.
o c6digo na Lisragem 13.13 produz est> safda:
458 APR EMO A EM21 DIAS ABAPl4
O~ !3,TABElAS IMTIRMAS AV~Yl0AS, PAm2 459

SAiDA ~
· -new row.... 0
··new row". 3 Para ser precise, a largura de uma linha da eabela interna em bytes deve
fl c ~anged: 3 ser maier que au igual ao ndmero total de bytes de todas as colun as
··new row"''' I selecionadas a partir d.a tabela de banc o de dados para a tabela ineema,
fl changed: I
....new row=" 2 Se a Iinha da tabela interna for mais larga, as cclunas selecion adas d:a
fl changed : 2 tabela de banco de dado s serso preenchidas com os byte s mais a
esquerda de cadalinhada tabela intema, Os bytes remanescentes serso
....new row.... 0
f1 changed ; 0
configurados com os valores iniciais padrao.
....new row"" 3 • U tilize a adiljao i nt o corresponding f iel ds se as camp os da tabela
f1 changed: 3
"·new row•• I
interne estiverem em uma ordem diferente ou estiverem separ ados urn
fl changed: I do outre par campos nao selecionados da tabela de banc o de dados.
·"new roW""'" 2
fl changed:
• Utilize at e endat para acionar 0 processamen to "baseado em um a
Z
aIteraljio na coluna de urna tabela inrern a ou qualquer coluna a sua
esquerda.
AHluSE ~ • As linhas de 6 a 9 preencbem a tabela interna com qu atro linhas. 0
• Utilize sum dentro de at e endat au on change of para caIcular totais e
valor de i t -fl na primeira linha e zero.
subtotais.
• Na linha 13, a primeira passagem de loop nao aciona on change of ,
porque 0 camp o auxiliar global contem zero . • Utilize on change of dentro de loops para acionar 0 proc essemento
baseado em uma altera<;ao em uma das colunas selecio nadas .
• -As linhas 23 e 24 [o ram adicionadas ao loop #2 para derectar 0 erro .
Ob serve que at fi rst n ao pede sec utilizada para detectar esse
problema, ja que todos as camposnumericos na area de trabalhoserdo Nco utilizesel ect e append. Sempre que posslve l, utillze sel ect into
configurados com o zero dentr o de at fi rst e endat. table.
Nee utilize order by co m se lect into t abl e. Em vee dnse, utilize
sort no to bela lntemo .
Em versses anteriores a 3.0 F, somente as instru t;oes sel ect e get
reconfiguram oufom oticamenfe as campos ouxlhcres glob ois. Entre.
fonto, se voce mesmo as reconngurar, sera posslvel utilizor on change P&R
of em quolquer tipo de loop. Utilize esse c6d igo "para executor a
reconfiguro<;;:60: c1ear fl . on change of fl. endon. deor move os
volores iniciois para fl. onchong eofcompara fl com 0 compo cuxlllor
global. Se forem diferentes, a on change of vozio scbrescreverc it com
o A primeira parte deste capitulo parece colocar muita enfase na
eficiencia, Estou apenas aprendendo e con sid ero todos esses
vclc res iniciois. Utlllre-c para preenche r as ccmposcuxlllores cam
metodos confusos. Issc realmente faz muita di ferenca, ou voce
quolque r valor de f l. esci se prcocupando com minucias!

Resumo o A experiencia ensinou-me que os alu nos que aprendem corre-


tamente pela primeira vez ganham muito. Em geral, os pro·
• Uma oper acao de array e a mane ira mais eficienre de preencher uma gramas em ABA P/4 processam uma enorm e quan ticlade de
tabela intema a partir de uma tabela de banco de dados. Ela Ie as linhas dadcs, portanto, par infelicidade, urn a c6digo facit " frequen re-
da tabela de banco de clados diretamenre para 0 corp o ciatabela interna mente results em "overhead over head overhead". Se voce
sem utiliz ar quaisquer areas de trabalho. E implementada atraves da aprender apenas os merodos facei s no in fcio, eles se tornarjio
adiljao i nt o tabl e na instru ljao select. hsbiros e serac diftceis de se descartar. Urn c6di go p obre afeta
o desempenho de seus program as e do sistema.
• A tabela intern e deve ser suficientemente grande para acomodar as
colunas po r .voce selecionadas a partir cia tabela de banco de dados .
460 APREHDA EM 21 DIAS ABAPI4

Workshop
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitu lo. A se!rao Teste ofer eee perguntas para.ajudar a. sclidificar seu entendi-
men te do conteu do abordado e a. sc)3.0 Exercicio permite que voce pratique 0
as
qu e aprendeu. Voce pede enconerar as respostas perguntas do Testee aos
exercicios no ApecdiceB, "R espcstas is perguntas e aos exercfcics".

Teste
1. Quais sao as mores dos campos adireiea do nivel de controle entre
as instrucdes at e endet!

Exerdcio 1
C op ie 0 programa ztxlllOpara· · · e1301. Alte re-c de modo que se uma lioha
for lccali zada e 0 comeedc de quaisquer camp os na linha localizada diferir do
que existe na linha de cab ecalhc, a linha localizada seja sobrescriu com 0
conceudo arual da linha de cabecalho . A saida deve se pareeer com a seguinte:
Dia 14
10 1 XX 1
. 20
~
2XX
3 n
2
3 A instru~ao wr; te
40 4XX 4
50 5 XX 5

Dica: Utilize a adi~ao comparing na instru~ao rea d tabl e. D epois de concluir est~ capitulo. voce sera capaz de:
• Enrender 0 efeito dos tipos de clades na safda
Exercicio 2
o pr ogra ma a seguir preduz urn dump CUrto. Descreva c pr ob lema. copie (, • Utilizer as ops:oes de formata!jio, da ins trU~io wri te
pro gram s para · •• e1302 e so lucione esse problema. • U tilizar as safdas de conversio e deeecrar sua presen!ji dentro de
dominies
M!port zt y1302
tab le s: zb. l h l.
dilta: begtn of it occurs la, Eormoto\;fi o e com primentos podrOo
lHnr li ke zt xl f al -l1 fnr .
la ndl li ke zt xlfal .1andl . Se voce nao especificar quaisqu er 0Pfioes de formata~ia au comprimenro
end of it. quando utilizar a instru!jaa write, 0 sistem a adocad. urn comprimento e formate
sel ect * frca ztxlfal in t o tab le it. padria baseados no tipo de dado de cada variavel escrita. As seguintes sece es
lo op at it .
write: / tt -If rnr-,
descrevem esses padroes. .
t t -I endt .
endl oop. Comprimentos padrijo
MOYO .... a comprimento de sa ido de um campo corresponde 00 n(imero de cc rccteres
TEUO r vtilhcdc s pora 0 exibii¥oo do valo r dcq uele compo . 0 comprimento de scfdc
eutilizodo pe rc instrui¥cO wr1te a fimde alocor espccc no listo de soldo pore um compo.
O s compos definidos dentro de urn prog roma por meio do in stru~co data te m urn
comprimento de sc tdc padrOo, como pode ser visto no Tabe lo 14 . 1.

hl1p:II_ .compus.com.br
- - - -- -- - --_._- _ ._- -- - - -

D~ lU INSTRU(iO WRITE I 463

Tabela 14.1 o tipo de dodo do ABAP/ 4 determino 0 formata e 0 co mprime nto de Fig u r a 1 4 1
sofdo podr6 o Os campos Decimal
Places., Output
Dado Alinhamento Fonnato Sinai Comprlmento length onufom 0
de tipo de seida padroo herdodo dos
padrilo IipO$ de dodos do
/>YPi<.
1 Adireito Zeros sup rimidos Finol 11
p Adireita Zeros suprim idos Final 2·~ d le n ou
(2'fldlenl+ 1
f Nenhum Noto~oo cientffica lniclcl 22
n Adireito Zero s inidois Nenhum fldlen
mostrodos
c A esquerda Espo«;os em bronco fldlen
iniciois suprimidos
d A esque rdo Determinado pelc 8
pcdrec do usu6rio
t A esq uerdo HH,MM,SS 6
x Aesq uerdo 2'fldlen

a s campos do Data Dictionary tern tipos de dados do ODIC, como DEC, Ta bel a 14.2 Comprim ento de scrdo podrao pa ra os campos deci mals
ccmpoctodcs
CHAR. CURR e assim. por diante. Todas eles sao baseados em tipos de dadcs do
ABAJ'/4 e herdam 0 formate e 0 comprimento padrao do tipo de dado do Defini~60 de dados Comprimenta de saida padriio
ABAJ'/4 . Para determinar 0 tipo de dado do ABAJ'/4 e, por conseguin te, 0
d.t. TAB TEXTD(4) t ype p. 8
formate de safda padrao, consulte a documentacao de palavra-chave do
d.t. f 2(4 ) type p declm. ls 2. 9
AJ!JAP/4 quanta a instrulja o tables . Para isso, colaque seu cursor em uma
instruc;io tabl es decrro de seu c6digo e pressi on e a eecla Fl. d. ta f 3(5) t ype p. 10
Alem disso, as campos do DDIC tern seu comprimemc de safda e data f4{S) type p decimals 3. 11
mimero de decimais definidos no dominic. Esses campos anulam 0 padrfo e
sao mostrados na Figura 14.1.
o comprimento de safda e as casas decimals si o herdados por todos os Eo rrnatOl; c o pad ni o
campos criados a partir de :LIm dominic. P or exemplo, na Figura 14.1. 0 a formato padrjo • derivado do tip c de dado da variavel. A Tabela 14.1
comprimento do campo e15, indicando que 15 digitos podem serarmazenados descreve co mo a saida sera. fonnatada para cad a tipo de dado do ABAP / 4. A
em qualquer campo utilizando esse dominic. 0 comp rimento de saida e 20. saida de cam pos numericos (ripos p, f e f) ealinha da adireita com zero s inici ais
entia a safda permite espacc suficiente para urn ponto decimal, urn sinal e treS suprimidos e para 0 restante e alinhada a esquerda. Formata~ao adicional
separado res de milhar. especffica ao tipo tambern se aplica,

Compos cornpododos Form oto ~a o de dota pcdreo


o comprimento de saida padrjo de urn campo do tipo p du as vezes 0e Os vaIores de data irao gerar uma safda de acordo com a configura~o de Date
comp rim ento de campo definido. Se casas decimais forem definidas, 0 corn- Format em U ser D efaults , contan to que e comprimento de saida seja 10 a u
primento de safda padrio sera aum entado em 1, equivalend a entac a 2 * maior. 0 comprimentc de sa!da pad rio cS, entao voce devers aume nti -lo para
comprimemc do campo + 1. A T abela 14.2 mostra os comprime ntos de saida pelc menos 10 ante s que a s separa de res possam servistos. A defmilii o de uma
padrio de exemplo para os cam pos do tipo p. variavel utilizando 1i ke (por exemplo, 11 ke sy-dat um) fari co m que a ccmp ri-
menta de sai'da seja retirad o do dominio.
~

_ _- ~ - _.. _~ ....
464 APR ENOA EM21 DIAl ABAP" OIA IH .11ilJyi0WRITE 465

Formc tccco de hora pcdreo Program a de exemplo demonstra ndo a form c t ocd o
O s valo res de bora irac gent uma safda no formato HH:MM::SS,contant o que
padrti o
o compri mcnt o de saida seja 8 au maier. 0 comprimento de salda paddc e 6,
en tia voc e devera aum en ta-lo p.ara pelc men os 8 an tes que a s separado res A Listagem 14.1 ilust ra a formatac;ao e 0 comprimento padrao. Tambem ilustra
possam ser vistcs. A defmi~ao de uma variavel utilizando 1ike (por exemplo, o tratamento de nUm.eros pr6ximos ao estouro do campo de saida.
1; ke sy- uzet t .) fm com que 0 comprimen to de safda seja retiradc do domlnio.
OORADI~ Listagem 14.1 Comprime ntos e formato,co podrao
Fo rm ata~ao nurnericc pcdrco I report ztx1401.
N e America do Ncrte escreve-se um mimerc como 1,234.56. Em outros pafses, 2 data: t1 t ype t val ue ' 123456' .
como a s da Europa e aqui n o Brasil, 0 mes mo mime rc eescrit o como 1.234,56 3 t2 11ke sy- uzet t value ' 123456'.
- 0 usa de vfrgula eo usa do decimal sio alterados em rela~io 010 padcio
. no rte -americana . 0 R/3 perm ite que cada usuario individual especifique urn

5
dl
d2
t ype d
like sy·datum
val ue
val ue
' 19980201' ,
' 19980201' ,
6 f1 type f value ' -1234',
desses fo rmatos atraves da configura~io de perfil do usudrio Dec imal N otation
7 11 type 1 value '12345678-'.
(a partir de qualquer tela, selecione a caminho de menu System-> U ser Pr o- 8 12 type i va I ue '123456789-'.
file- > User Defaults). 9 13 typ ei value ' 1123456789-' .
10 i4 type i val ue ' 1123456789' ,
II nl(5} t ype n value 123.
~c
'd d- Vod de ve efewcr sign off e efetuor ncvc mente sign on no sistema Rf3, 12 pl(S} type p val ue ' 123456789·' .
'-.\UlaaaO pore que as a ltere¢cs para 0 podriio do usu6rio tomem-se efetivos. 13 c1(S) type c val ue ' ABC' .
d(2) type x val ue 'AOBO' .
"IS
A Tabela14.3 mostra 0 efeito da ccofiguracac Decimal N otat ionna saida 16 write : / U . 26 'type t: defa ult output ll!ngth • 6',
numerica. 17 /(8) tl ,- '- 26 ' ty pe t: inc reas ed output length to 8',
18 / (12) t l , 26 ' type t: 1ncreesee output 1ength to 12' ,
19 / t2 , 26 ' t ype t: defaul t output le ngth · 8 (from domain) ' .
Tabela 14.3 A configuror;;60 De cimal Notation no podroo do usu6rio meta a s
20 / dl, 26 ' t ype d: defau1t out put l ength· 8 '.
Ic rmcto s de seide num erlcc
21 /(10) dl, 26 'type d: in creased output 1engt h t o 10'.

I
22 / d2, 26 'type d: def ault output l ength· 10 (from domai n) ' .
Conflgura~ao Saida de exe mplo
. 23 / n , 26 'type f: default out put l ength · 22',
Virgula , ,234.56 2. / 11, 26 'type 1: def ault out put length. 11'.
Ponto 1.234,56 25 / 12, 26 ' t ype i: same output 1ensth, more d1gi ts ' •
26 / 13, 26 ' t ype 1: S!Jll! output l ength, even IIICIre dig i ts ',
i
27 / (10) 13, 26 'type i: smal le r ootput l engt h, negative nLlllber ' ,
o formate de safda padrio pan variaveis de ponto fluruante [tipo f) e I
I 28 /(10) 14. 26 ' t ype 1: smaller output l engt h. pcsf tt ve nllllber ' ,
atraves de nat.rra o cientifi ca. Ele pode ser modificado utilizando uma mascara ,i 29 I nl ,26 ' t ype n: default output l ength· fie l d len gt h' ,
de edic;ao au safda de ccnversso. 30 / pi, 26 'type p: default output l ength . 2 • leng th· 10',
31 / (12) pi , 26 ' t ype p: output l ength i ncreased to 12'.
Formata ~a o de estouro (overflow) 32 Il lS) pl . 26 ' t ype p: out put len gth inc re ased to IS'.
33 / et , 26 ' t ype c: out put l engt h · f ie l d l enqth (l eft ju st) '.
Ao lidar com ntimeros qu e sao grandes demais p ara a camp o de safda, 0 sistema
34 / xi, 26 ' t ype x: default output l ength · 2 • l ength"" 4' .
coloca u rn asterisco na prime ira celuna de safda a fim de indicar estouro,
Enrretanro, antes que isso ocorra, 0 sistema tenta gerar urn. said. de todos as
dfgiros, se possfvel, Os separad ores de milh ar irao so men te gera r urna saida se o c6digo na Lisu gem 14.1 produz esta safda:
existir espacc suficiente n o campo de safda. Se Dao exi sr ir espacc suficiente,
siiDI ~
123456 type t: default out put length · 6
eles sersc removidos, urn de cada vez, come cand c cia esque rda do campo e 12:34:56 ty pe t: inc reased output leng t h to 8
seguindo para a direira. Se a ndmero for positivo e se ajustar a safda com a 12:34: 56 ty pe t: i ncreased output length to 12
12:34: 56 ty pe t: default out put length · 8 (from domain)
utilizaliao do cam po de sinal, 0 sistema 0 utilizaIi.
466 APlEMDA EM 21 DIAS AUP/' D~ 14>4 llISTRU(i.o WRITE 467

19980201 type d: default output length· 8 • A li.nha 26 aumenta novamente 0 mimero em urn dfgito, fazendo com
199B/D2/01 t ype d: increased output l engt h to 10
199B/02/01 type d: default output length .. 10 (frCll1 d0ll\41n)
que a segundo separador seja remcvido.
-1.234000oo000oo00E+03 type f: default output length · 22 • A 1i.n.ha 27 escreve 0 mesmo namero, dessavez diminuiodo 0 ccmpri-
12,345,678- type 1: default olltput length " 11
123456,789 - ty pe1: _same output l engt h, more dig its
mente de safda em 1 e 0 indicador de estouro e vista no primeiro
1123456789- type 1: sill:e output l engt h. even ecre dig its caractere do campo de saida.
*23456789- type 1: slMl ler outpu~ length, negati ve number
1123456789 type 1: smaller output. length, positive nllliler • A linha 28 escreve 0 mesmo nUmero utilizando a mesmo com pri-
00123 type n: default output l engt h " field 1I!ngth mente, mas dessa vex 0 mimero e positive. 0 sistema altera corre-
123456789- type p: default output length · 2 • length · 10 tamente 0 ndmerc e utiliza a campo de sinal para impedir estouro.
123 .456 .789~ type p: output length increased to iz
123. 456, 789- . type p: output length tncreesed to 15 • A linha 29 escreve urn campo numerico mostraod o que 0 mesmo e
ABC type c: output 1ength .. field length (left jus t) alinhado adireita e preenchido a esquerda com zeros iniciais.
ACSO type x: default output length · Z • length· 4
• A linha 30 escreve urn campo decimal compactado mostrando 0
comprimentc de saidapadrio e a remo~o dos separadores.
lHALISE~ • Alinha 16 escreve uma variavel do tipo t utilizando seu comprimento
• As linhas 31 e 32 aumentam 0 comprimento de safda para 12 e para
padcio de 6. Nrc hi espacc para as separadcres, de modo que eles113.0
sao escricos, 15, mostrando os separadcres e 0 alinhamento i direiea.
• A "linha 17 escreve a mesma varidvel utilizando urn comprimearo de • A linha 33 mostra urn campo de caractere alinhado a esquerda no
saida de 8, que foi especificado na instruljaowriteoEsse comprimento campo de safda.
de saida anula 0 comprimento de saida padrio e fomece esp~o • .A linha 34 mcstra a saId2. a. partir de u,m campo hexadecimal.
suficience na saidapara incluir os separadores.
• A linha 18 mostra que se 0 campo de saida for maior que 8 caracteres, 8di~6es para a instru~cio write
a campo de hera ira gel":lI' uma safdaalinhada a esquerda decerc desse Est. ,e~o detalha algumas das especificacoes especfficas de said. que po dem
campo por padrso. ser utilizadas com a instIU~ao writeo
• A linha 19 escreve urn campo defmido como sy-uzett. Dentro do
dominio para sy- uzeit, 0 campo Output Length econfigurado como Sintaxe da instru~oo wri te
8.Portant o, 0 comprimento de saidapara a.campo t 2 etambem 8) que !!! A seguir, veja a sintaxe da inStruljaO writeo
famece espaco suficienre para escrever eambem cs sepa.radores. z· wrfte ret] Up(l)) "['0(,1))
• A linha 20 escreve urn campo do tipa d que tern urn ccmprimento de -e (I ) under '12 : no-gap
safdapadrio de B. Nr c hi espaljo suficieme pan as separadores, entao
:J> (2) using edit mask _ : usi ng no edit lMsk

ocampo Ilio contem separadores. Entretanro, a ordem ano/mes/dia


>< (3) m/'d/yy ' ' '/",,/yy
m (4) mf'd/yyyy' " /m/yyyy
ainda e dererminada pelo padrdo do usudrio. ... (5) """yy , '_y , yymd'
(6) no-zero
• A linha 21 escreve a mesmo campo de data, dessa vez aumentando 0 (7) no-sign
compriment o de salda para 10 a fim de permitir os separadores. (8) decimals n
(9) , round n
• A linha 22 escreve a campo d2. 0 comprimento de d2 e obeidc do (10) currency c J unit u
dominio para sy-dat um. (11) left-justified: centered : ri ght-Just i f ie d

';: • A linha23 escreve urn campo de ponto flutuante mostrando a nOtaljaO onde:
cientifia e um sinal inici&!.
• '11 eurn nome de string de campo. variivel ou literal.
• A linha 24 escreveurn inteiro utilizando 0 comprimento padrio de 1I.
• P, l e n sao literais numericos ou variavc:is.
• A linha 25 escreve urn inteiro maior utilizando 0 mesmo cornpri-
mento. 0 primeiro separador de milhar erernovido para pe.nnitir que • pea especifica~ao de posi\Sao. Ident ifica a coluna de saleta na qual 0

o digito extra seja escrito. campo de salda cleve comeljar.


- - -.- - - .- - - - - - - .,.-- - - - - -.- _. _ ...

468 APRE NDAEM 21 DI Al AWl' D~ lH IN5Tl<U(i.o WRITE 469

• 1 e a especificaclc de comp rimento . Identifi ca 0 comp rim ent o do ENTUDA..... U.st a g e m 14.2 Umo sen e de instruc;oe s write pora ilustrar 0 efeito do
campo de safda no qual 0 valor deve ser escrito. r escecth cc cec de colune de sctdc
• 0 eurn. especificacac de deslccamenec de subcampo qu e pe de conter 1 r eport ztx 1402.
somente literals numericos. 2 data f1(4} t ype p val ue 1234.
• sl eurn. especificacso de comp riment o de subcampc que pede center 3 write: I '... -+- -- -1-- -·+ - -'.
somente literal s numeric os.
4 .I ' 12345678901234567'.
5 skip .
• me uma mascara de edi~o. 6 writ e / 1 ' X'.
7 write 'll' •
• c e uma chave monetdria (da tsbela tcurc).
· u. uma unidade de medida (cia eabela t006).
8 write
9 wri te
10 write
2 'll ' .
3 ' ABC '.
4- fl.
• n e urn literal numericc a u variavel. 11 writ'e 7 fl .
12 writ e 'Z · .

Os seguintespontos se aplicam:
• Se p au I for uma varifvel, a palavra at sera requeri da.
o c6digo na Listagem 14.2 produz esta safda:
____+_w__ l +__
• U rna barn. (I) ccmeca um a nova linha antes de se escrever 0 valor da 12345678901234567
variavel.
XYA 1 1. 234 Z
Se nenhuma adic;ao for especificada e du as inst ruC;6es wri t e forem execu-
• As linh as 3 e 4 escrevem uma regua, de mod o que voce possa ver as
tadas (como write: vt , V2 ' ) 10 valor de vz apare cerf DOl mesma linha de v I
separado dele por urn especc- Se 0 valor de vZnie se ajust ar ao restante da
IMluSE ~ colunas de safda.
linh a"arual, ele apare cera na pr6xima Iinhs. Se a comprimento de saida de v2 • A 1inha 6-iscreve urn x' comegando na coluna 1.
I

for maier que a cornprimento cia Iinba,a saida sera truncada adireite. Se 0 valor
• A linha 7 escreve I VZ ' comecandc urn esp~o dep ois de ' XI.
gerar uma safda alinhada a direita (como acontece com as variweis do tipo p)
antes de ser truncado adireira, ele sera deslocado para a esquerda, ccntanto que • A linha 8 escreve ' VZ comecando na coluna 2. Isso sobrescreve
I 0

existam espafJos em branco iniciais para impedir que ele seja truncado. Os espa~a e 0 ' Y' que havia side escrito.
separadores serac rambsrc removidos, se necessaria, a fim de impedir a trun- • A linba 9 escreve I ABCI cornecando na colun a 3. Isso sc brescreve os
camento. dois I Z's, mais urn espar;o.
• A linha 10 escreve f1 comecando na coluna 4. 0 comprimento de safda
padr.io de fl e 8j a forma to padrs o e alinhado a direita com 0 ultimo
Uma novo linho de soldo sempre cc mecc re no infci c de um novo
eventc. a s eventos serec obrongidos no Cap itulo 17, caractere reservadc para 0 sinal. as tres espa~os em branco iniciais
sob rescrevem a safda existen te comecan dc na coluna 4.
• A linha 11 escreve fl novamente, dessa vez comegando na coluna 7.
Compreen de nd o ° e specificoljiio de posiljiio • A Iinha 12 escreve 'Z' urn especc d epois de fl. N a salda, parecem
Referindc-se asintaxe apresectada acima.c especificaa coluna de saida. 0 valor
existir dais espacos. 0 primeiro espacc depcis de 4 e a campo de sinal
de said a pede sobrescrever to da a u parte de uma instrUfJao wri te anterior. 0
para fl . Entia , urn espaco ~ escrito e, depois, ' Z' na coluna.16.
programa na Listagem 14.2 ilustra a efeito de uma s~rie de instrulioes wri t eoA
Tabe la 14.4 mostra a efeita cumulativo de cada write, em sequen cia, para
mostrar como chega a saieh..
........................... ~--_...-- _~-.. . - - -

470 APlEHDA EM 21 DIAS ABAP/' D~ lU IHSTIlIJIiDWlltTE 471

••--+---·1··--.. ·-
S.liDI~ 12345678901234567
Instruljoes Sa ida cumulativa
----+---1--+-- XY
XlZ ABC
12345678901234567
1234
wr ite 1 ' X' . x 1, 234
write ' YZ'. X YZ
wri t e 2 'YZ'. XYZZ • A linha 6 escreve os primeiros dois caracteres de •XYZ I.
write 3 'ABC'. XYABC • A linha 7 escreve I XYZ I utilizandc quatre caractere s de salda. A
write 4 fl. XYA 1, 234 formata~o padcio e utilizada, entio a valor e alinh ado a esquerda e
write 7 fl. XYA 1 1,234 preenchido l direi ta com espaeos em branco.
wri te ' Z' . XYA 1 1, 134 Z • A linha 8 e~creve 'ABC' urn espacc depois do valor anterior. 0 valor
anterior foi pre enchido adire~ta com urn espalio em bran co. U m ou tre
espac;o em branco eadicianada e. em seguida, I ABC' eescrito.
Cornpreendendo a especifica~ao de cornp rirnento • A linha 9 escreve fl em urn campo que tern quatro caracteres de
Na desc ri~o desintaxe da inst ruliao writ e, 0 especifica 0 comprimento de satda. comprimento comegand o na coluna 5. 0 sistema rem ove as separa-
Correspo nd e ao ndmerc de caracteres na Iinha de safda utili.zado para rerer 0 dores para fazer com que a valor se ajusce em quarro caractere s,
valor de salda.
• A liaha 10 escreve fl em urn campo que tern eire caracteres de
As especificacoes de posiC;a.o e comprimento sao sempre opcionais. A
comprimento ccm ecaad c na coluna 5. VaIjav eis sio utilizadas, entjic
pcsicao e 0 comprimeoto podem sec especificados utilizaadc-se tanto urn
literal quanta umavariavel, Sc um dos dais faruma varifvel, deveserprecedido a palavta at e exigida. A formata~o padrto se aplica, entao 0 valor e
pela palavn at. at sera op cional se a posifiao e 0 compri ment o forem ambo s alinhado ~ dire ita com zero s iniciais suprimidos e. ji que exisre espalio
Iiterais, mas secl exigida se urn dos dais for uma varidvel. suficiente, separadores tambem sac escritos.
Se u ma barn (f) preceder UIIl2 especificact c de co mprimento au po sir;io,
Ilia poderi .existir urn espaco entre eles. A Listagem 14.3 forn eee exemplos. Trobolb a ndo com slJbcarnpos
Voce pode especificar urn subcampo na instru~ao wri t e utilizando as especifi-
EHTU~~ Lista~em 14.3 II.ustrondo o· utilizoc;ao dos especlflcccees de ' calioes de deslocamento e comprimento imediatamente depo is do valor sem
r co mpnmento e POSIC;CO "urn. esp2.~O intermed.i.irio. (Se necessaria , consulte a se~ao anterior sabre as
adi~oes para 2. instrUl;ao writ e.) Voce nao pode utilizer um su bcampo com urn
I r epor t ztx1403.
literal au um campo num ericc (tip os p, i e f ). A List agem 14.4 fornece
2 data : n (4) t ype p value 1234,
3 p type 1 value 5, exemplos . .
4 1 type 1 val ue B.
5 EIl111DI~ Lista ge m 14.4 Utilizondo subco mpos
6 write : 1 ' 1•• • • +__ 1 ,
7 1 ' 1Z34567B901234567'. 1 r eport zt x1404.
B s kip. 2 data 11(4) t ype c value 'ABCO'.
9 write 1 (2) 'XYZ' . 3
10 write 1(4) 'Xl Z' • . 4 writ e: /' .·.·+ · 1··__ +_· ' ,
11 write 'ABC'. 5 / ' 12345678901234567' .
12 write 15{4) 11. 6 ski p.
13 write at I p(l) f 1. 1 wr", I fl (2) •
8 write 1 n-ita) .
9 write: 1( 2) n-au), n.
o codigc na Listagem 14.3 p roduz esta safda:
DI. ,HlMmU\ADWRlTE I 473 t
o c6d.igo na Listagem 14.4 produz est a saida: 1030 CA
E
Ch1 ckenFeed ltd .
a71B Wishbone t ene

SAiOA ~ .
~---+---- l----+· ~
12345678901234567 1040 US Moth erboards Inc .
E 64 BitBus Blvd.
;{[f; AS
BC
ANlllSE~
~:,~ ",
C ABCD • A linha 6 escreve 0 campo 1and1 comecandc na coluna 15.
• A linha. 7 escreve 0 campo namel cc mecacdc na colona 25.

ANlUSE~ • A linha 7 escrev e a primeiro e 0 segundo cara ct ere de flo • A linh a 8 escreve 0 campo spr as comecandc namesma coluna de 1 andl .
• A linha 8 escrev e 0 segundo e 0 ter ceiro caractere de fl. C on sequenteme nte, e escrito ccmecac dc na coluna 15.
• A linha 9 escreve a terceiro cara ct ere de f1 comecando em u m a nova • A linha 9 escr eve a camp o s t ras comecando na m esm a coluna de name l .
linha em urn. campo q ue tern dois caracteres de comprimento . a Portanto, e escri eo comecando na col una 25.
alinhamento ea esquerda nesse campo e este e preenchido a dir eita
corn espa~os em branco. Eta escreve entia a conteddo inteiro de fl Utiliza ndo 0 odi"a o no- gap .
com urn espa'i0 em brancc inicial intermediario. A utili za.~ao de no-g ap ira. sup rimir a espacc intermediirio, colocado automa-
ticamen te depois de urn campo, se 0 campo se guint e nao river nenhuma
Utilizando 0 adi"ao under especificacac de coluna. A Lisragem 14.6 ilustra 0 usa de no-gap .
Utilizar under fad. com que 0 primeiro caract ere do campo seja posicionado na
mesma coluna do primeiro caractere de urn campo anterio rm ente escrieo. Voce EH1RAOA~ Listag em 14.6 Utilizondo no-ga p
nio podera utilizar under com urna especificaclo explrcita de p osi~3.o . A
1 rt!!port zt x1406.
Listagem 14.5 mostra exemplos.
Z data f l(4) ~ al u l!: 'ABCD' .
3
ENlRAOA~ L1stagem 14.5 Utilizondo a od1iYoO under 4 write: I fl. fl,

1 report ztx1405.
2 hbll!:s: zt xlfal.
,
5 I fl no-g ap. n ,
I "", fl, " ", .!
7 / "", 2 fl . 6 " " .
3 B I " " no- gap, fl no~gap . ,' ,'
4 select * up to 5 rows from ztll,lfal order by 1f fnr.

,
S write : 11 ztxlfal-11fnr,
IS ztll,lfal~1andl, o c6digo na Listagem 14.6 produz esta safda:
7 25 ztx l fal-name1,
SAloA~
8 I ztxlfal-spras under zt ll,lfa1-land1, ABCD ABCD
9 zt xlfa1-st r as under zb lfal -namel. ABCDABCO
, ABCD '
10 s ki p.
' ABCD '
11 endsetect . •ABCD,

a ccdigc n~ Listagem 14.5 prod uz esta satda: ANlUIE ~ • A linh a -4 escreve fl duas vezes na mesma linha. J a que nao existe uma
., especificacac de posit;ao para 0 segundo fl, urn unicc espaco inter-
SAloA~
1000 CA Parts Unl imlted
E 111 Queen St. mediirio sera.escrieo antes dele.
10lD CA Industri al Pumps I nc . • A linha 5 tambem escreve f l duas vezes. A ut ilizacao de no-gap depois
E 1520 Avenue Rd . do prim eiro fara com que as da is valores aparecam na saida sem urn
espaco-intermediario.
1020 CA Chemi cal Nation Ltd.
E 123 R1 ver Ave.
-SJ " y o. ·_-_··_ - ~ -1

;".s.'1!" .•:' .
.,, _~1' '
~ _ ~~ ; 4" APRE HDA EM21 e rAS U IP/4 Dll IH INmtJi.\OWR ITE I 475 I
f?~""
"f:""
.
" . Ies nos dcis
• A linh a 6 escreve fl co m aspas SlIIlp
interme diari e s apacecern scm 0
OIS ladas. 0 5 espacos
usa de no-qap.
Se houver mais sub linha.dos do que os caracteres existentes do campo de
origem, 0 efeito de LL sed alinhar a esquerda 0 valor 01 saicla; RR alinhari a
I
!
• A linha 7 escre ve f1 entre aspa s simples. As especificacce s de posicio a
direita a valor (veja Lista gem 14.7 para obte r urn exemplo).
fazem com que as aspas aparcCiOlm scm esp_liDS inrermedidrios. U ma mas cara de edic;ao comecando com urn v, quando aplicada a urn
campo numerico (tip os 1, p e f) , fan com qu e a campo de sinal seja exibido no
'. • A linha 8 utiliza no-gap p:a.ra gerar a mesm a safda. corneliO. Se aplicada a urn campo de caractere, urn V ser f a pr 6pria satda,

Utilizando mascaras de edi,.oo OOUDA~ Lislag em 14.7 0 eleile de va rios mascoros de edi~50
As mas caras de edic;ao perm item :
1 report ztd407.
• Inserir caracteres na saIda. 2 data: n(4) nlul! IABCO '.
• Mover 0 sinal p~ 0 inicio de um campo numerico 3 f2 t ype i val ue 11234·'.
4
• Inserir ou mane ardficialmence urn ponto decimal 5 writ e: I ' 5. ' . fl,
• Exihir urn nrimero de ponto flutu ante scm a utilizac;ao de no taljao 5 I ' 5, I, (6) 11 using edit mask 1_=_:_' ,
7 I ' 7. ", fl using edit maslc ILL_:_' .
cientffica
8 I ' B. I , f1 usin g edit mas k 'RR_:_' .
Em qualquer lugar denuo de uma mascara de edilijio, a caractere de 9 / I 9. " f2 usi ng edit mas k 'lLV_ _ ",
sublinhado U possui urn significado especial. No comecc de uma mucan de 10 I ' 10. ' . f2 using ed1t mlsk 'RRV_ _ ",
edi ljao, v, LL. RRe:: tern urn significado espec ial. T oda s a s ou tros caracteres
11 I '11. " f2 using edit maslc ' RRV_ , _ ' .
1Z I 'IZ . ", f2 using edit Nsk 'LlV_, _',
sao transferidos para a safda scm qualquer alterac?0' 13 I 113. " fl using edit mas lc IV_I .
Os subIinhados demrc de uma mascara de edi~o sao substirufdos, urn a
urn, pelc s caracteres do campo de origem (0 campo que voce esd. escrevendo).
o mi mero de caracteres reti rad o do campo de origem seri igual ao mirnero de o c6digo na Listagem 14.7 produz esea so.lda:
sublinhado s na mas cara de edi ~ao. Par exemplo , se existirem tres caracteres na
IAfDA ~
s. ABeD
mascara de edi~ao, no maximo tr~s cara cteres do campo de ori gem irs o gerar 6. A:BC :D
7. A:BC
u ma saida. Todos os outros caracteres na mascara de edi~o sers o inseridos na 8. B:CD
safda. Ncrmalmente, voce tambem pr ecisarf aumentar 0 comprimento do 9. ·1234
camp o de safda para acomcdar os caracteres extras.ins eridos p e1a mascara. 10. • 1234
Por exemp lo , a instru~ao write {6} IABCDI usin g edi t ma sk 1_: _ :_1 11. • 1.23 4
12. ·123,4
escreve A:BC:D. OS caracteres sao re cirsdos, urn porvez, do campo de origem 13. VASe
e as caracteres da m ascara de edi ~o sao inseridos DOS locais indi cados pels
mascara.Ains t ru~aowrit e IABCDI usi ng edi t mask I : : I somenee escreve
• A linha 5 gera a safda de f l sem quaisquer mascaras de edicao.
A:BC po rque 0 comprimento de saldapadrsc eigual ao ~omp-rimento do campo
de origem (4). • A linha 6 gera a sucia de todos as quatro caracteres de f1 utilizando
Se existissem meno s sublinhados na mascara em rela~ao aos que estao no doi s pontos pan separi-Ios .
cam p o de orig em, 0 padrac seriaobeer os caracteres n mais aesqu erda do campo • Existem t res sublinhados na mascara de edi~ao na linha 7. mas quatro
I
de orig em. onde n e igual ao mimerc de sub linhados na mascara de edi~ao. Isso caract eres em flo Po rtan to, os tres primeiro s caracteres de f1 sao I
p ede tarnbem ser explicitarne nre espec ificado ao preceder a mascara de edi~ao utilizados na mascara de edi~ao. !
com LL. Porexemplo, write IABCD I using edit mask ILL : ' ob tem as tr es • A linha 8 obtem os tres ultimos caracteres de f1 e os apJica amascara
caracteres rnais a. esquerda e escreve AB :C. Utilizar RR, po~";;' vez, obter.i os de edi,.o. 1
tres caracte res mais a direita , entao write IABCD ' using edit mask IRR_:_ I
escrevera BC :D.
.. • Exis tern seis sublinhados na mascara de editiao na linha 9, mais que os
quaero ca;acteres de flo 0 valor de fl gera uma sai'da alinhada a
esqu erda com urn sinal iniciaL ·
1
II

I
476 "PR EMD" EM 21 nus AUr/ 4 DIA 14: ArH~ WRITE

• Na linha la, 0 valo r de f1 gera uma saida alinhada a direita com urn aquele dominio e sed automaticamente aplicada quando a valor for escrito. A
simi icicial. Figura 14.2 mostra que a dominio zt x1 i fnr utiliza a retina de co eversac ALPHA.
• As linhas 11 e 12 mostram. 0 efeitc da combina~o dos caracteres
Figura 14 2
inseridos com alinhamento. as caracteres inseridos Ilia sao movidos
Observe 0 conteVdo
em rela~o 010 campo de safda. c/o camp o Convers.
• A linha 13 mosrra 0 efeiro da utilizacfo de urn V com urn campo de Routine.
caractere. 0 pr6prio V ea safda,

Utjljzo ndo os sordos de cooverso o

HOYO ... Uma saf da de conver-s j o 6 umo retina cha modo que formato a sc ldc. Umo
TElltO " mascara de edj~o o que ccmecc com·· seguido pa r um to de quatro corederes
cho ma um m6dulo de func;co que formato a sc fdc. Urn 10 ossim de quofro ccrccteres e
canhecidocomo umc se ide de cc oversec au refino de conversec. (O s m6d ulos de func;oo
serec obordodos em um cap itulo segu inte, mas, par e nquonto, imag ine um m6d ulo de
func;oo como urno sub·rotina dentro de um outro progromo.) 0 nome do m6dulo de
fu ~ o sere CONV ERSION EXIT XXXX OUTPUT, cnde XXXX e a 10 de quotro ccrcceres
depois de . ~. Por exemplo, writ e ' 000 01000 ' using' edit mas k ' ''~ALPHA ' chcmc 0
m6dulo de fun¢ o CONVERSION_EXIT_ALPHA_OUTPUT. A instruc;oo write possa , em
primeiro luga r, 0 vo lor pore 0 m6d ulo de func;oo, que 0 a ltere confo rme desejado e, em
seguida, retorno 0 valo r e hercde e, entec, tol valor e escntc . Esse scldc em porticular
(ALPHA) exc rnlnc 0 valor a fim de determiner se 0 mesmo consiste lnteircrnente em
numeres. Se esse for 0 coso, zeros iniciais serec retiredos e 0 nu mere ser6 al inhodo a
Portaneo , secipre que ztxlfal- lifnr for escrit o, a valor passara, em
esqverdc. Os vclcres que contem noo-numericos nco sOo o lterodos par ALPHA. A SAP
fomece o proximoda me nte 60 soldos de ccnversec pore v6rios terefe s de formoto¢o. primeiro lu gar, pelo m6dulo de funo;ao CONVERS ION_EXI T_ALPHA_OUTPUT, 0 qual
Depois do CopfhJlo 19, sobre as m6du los de fun¢ o, voce sober6 0 suficiente perc ser remove os zeros iniciais dos wares numericos .
capez de crior suos pre pr icsscldcs de ccrwersec . Uma sa1da de eocversac dentro de urn dominio pode ser desativada
especificando-se us i ng no edt t mas k na instI1l<;ao write.
As safdas de conversao sao particularmente ateis para tarefas complexas
A Liscagem 14.8 ilustra 0 uso das safdas de conversao.
de fcrmancac que sao necessari es em mals de um programa.. Para ilustrar, a
saida de conversjo CUNIT convene automaticamente 0 c6digo que representa
EHll.lIlA~ Ust agem 14.8 Uti lizanda scldos de converse o
uma unidade de medida em uma descricao significativa no idioma de logon
atual. Por exemplo, dentro de R/3, 0 c6digo para uma caixa de materiais ~ KI. 1 report ItxH 08.
(KI ~ um a ah reviarura de Kiste, pal avra alema para "caixa"".) Earretanrc, CUNIT 2 ta bles : ztltlfal , ztxmara.
converte KI no mn em e nicc ing les CR. Portan t o, quando co nect ado ern ingles, 3 data : fl(lO) value '0000001000' .
write : 'I' . ' KI ' using edi t mask '==CUNIT' . escreveraI crt.Para umususrio 4
5 write: / fl,
coneceadc em alemao, a safda seria 1 KI. U rilizar tal safda de conversao 6 / fl usi ng edi t mask ' ''-ALPKA'.
permicinique um ccnjunto padrso de c6digos armazenado no banco de clados 7
sejaauromaticamente convertido para que sejasignificativo no idioma de logon 8 ski p•
arual sempre que gerar uma saida para urn relat6rio. • g set ect " f ran zt xlfa l \lfhere lifnr • '00000010000 '
10 or l ifnr · 'Vl'
11 order by 1i fnr .
Rotinas de converseo dentro de um domlnio 12 write: / zt xlfal-l1 f nr , "0 domi ni0 contl!m conver so Saia de ALPHA
Uma saida de conversio pode tambcm ser colocada em Converso0 campo de 13 / ztx lh.l - 1ifnr using no edi t mask.
rotina em urn dominic. A safda sera herdada por todos as campos que utilizam 14 endse1ect.
IS
478 r 'PREiD. EN 21 DIAl '''PH DIA lH INSTRlI(iD WRITE 479

Hi skip.
SCiEENOM~ Inicie agora 0 ScreenCom "How to Display Existing Conversion Exits".
17 select single· from ztxmara wher-e matnr · ' MI03',
18 write:: I ztxmara-matnr ,
19 (10) ztxrr.a ra- brgew. 1. N a tela Development Workbench, selecione 0 caminho de menu
20 ztxmara-gl!:we i . ·o dCJllfnio cont&n converso Saia cle CUNIT Overview-> Repository Infosys. A tela Repository Information
21 set locale la nguage ' D'. System do AJ3AP/4 sen exibida.
22 wrHe: / ztXlldra-matnr,
2. De urn cliqueno sinal de mais (+) ao lado de Programming. A more
23 (10) ztXllara-brg ew,
24 Ztxlllara-gewe1 . ·o domfni o cont~ convers o Saia ee CUNIT sen expandida.
3. De urn clique no sinal de mais (+) ao lado de Fun ction Library. A
m ore ser::i. expandida,
o codigc na Listagem 14.8 produz est. saida; 4. De urn clique duplo na linha Functi on Modul es. A tela Re.p~sitory
0000001000 Information System: Func tion Module do AJ3AP/ 4 sed exibida.
lDOD
S. No campo Function Module, digit e CONVERSION_EXIT_· _
1000 OUTPUT (0 campo ede rolagem; voce pe de digitar urna quantidade
0000001000
VI
maior de caracteres do que de pede exibir).
VI 6. Pressione 0 botac Execute na barn de ferrame neas Application. A
tela Function Modules sed exibida, Tow as saIdas de conversao que
H1D3 50.000 CR
H103 50.000 KI
podem ser utilizadas na instrU~io wri te serio listadas aqui.

Trabalhando com a fo rmataljCio de data


1lI1USE ~ • A linha 5 escr eve 0 valor de fl.
As especificacces d~ .formata!jio de data, na maiori a da.s vezes, n40 faz;e~ 0 que
• . A Iinha 6 escreve 0 mesmo valor, mas aplicaa safda de coaversac ALPHA. vqcC imagina que elasdevemfazer. A maioria tira seu formato da especificacso
Antes de ser escrito, fl e passado para 0 m6dulo de fun~io CONVER-
Date Format no padrac do usuario (caminho .de menu Sys eem- > User Pro-
SION_EXI.T_ALPHA_OUTPUT, 0 qual detects que 0 valor e inteiramente
file-> User Defaults). .
numerico, remavend o os zeros Iniciais e alinhan do -o aesquerda.
A Tabela 14.5 contem uma descricac do efeiec de cada urna delas.
• A linha9 recupera dois registros de ztx l fa la nd e escreve 0 campo 1i f nr
duas vezes para cada,
• 0 dominio de zt xl fal- l i f nr contem a safda de conversio ALPHA, enuc Formato Efeito
a linha 12 escreve 1i f nr utilizando tal safda de conversac,
Ilffl/dd/yyyy Escreve 0 data vtilizando 0 formata especficcdc no pe rfil do usucrio.
• A linha 13 escreve 1ifnr, mas desativa a saida de coovers jo. Isso faz Esse e 0 podreo, sendo ossim esses formotas rea lmente n60 Iozern
dd/Ilffl/ YYYY
com que 0 valor real na tabela seja escrito . ncdo.
• A linha 17 seleciona um tinico registro de zt xmara. rrm/dd/yy Escreve a data odotondo um ona com dais coroderes u1ilizondo 0
formoto espec ificodo no perfil do usv6rio. Os dais fczem 0 mesmo
• A linha 20 escreve g,.,j
(unidade de peso) utilizando a safda de dd/Ilffl/YY
cotsc.
cocversfo CUNIT no dominic.
nmddyy Escreve 0 data odotondo um ono com dais corocteres u1ilizondo a
• A linha 21 altera 0 ambience de textc para alemao. Isso eequivalenre formoto
a se coaectar em alemao. . ddnmyy Especificodo no perfil do usvorio, sem seporodores. Os dais fozern 0
mesmo coisc.
• A linha 24 escreve 0 mesmo valor gewe i, mas dessa vez CUNIT exibe 0
mnemonico alemao. yynrndd Escreve a da ta no formata yym mdd se m sepc rod ores.

Exibindo os sordes de conve rsno existentes


Para exibir as saldas de conversao exisrentes, utilize 0 seguin re procedimen to.
480 APREND AEN 21 DIAl ABA PIl
DIA lH INSTRU(ADNRITE 481

o co digc na Listagem 14.9 produz esta saida:


As sofdos de conversec IOATE e SDAlE prod uzem fe rmata s de data
SAiD! ~
diferentes. Alem disso, 0 m6dulo de fum;oo RH GET DATE DAYNAME 1998/11/23
1998/11/23
retorno 0 nome do die do semana relative a ~mo -data -; idiomo
1998/11 / 23
especificos. C omo alternative, DATE_COMPUTE_DAYretorn o urn ncmerc
98/ 11/23
que representa 0 die do semono. 98/ 11/23
981123
981123
A Lisragem 14.9 ilustra. 0 usc das especificacoes de formate de data. 981123
1998NoV23
fHTRADA~ Listcgem 14.9 Utilizondo as especificac;6es de formate de data 1998/ NOV/ 23
23/11 /1998
1 report ztx1409. 11/23/1998
2 dlltll: fl 11ke sy-datum val ue ' 19981123' ,
3
4
begin of f2,
y(4). !HilIS~ ~ • A linha 2 define fl como sy-datum. 0 comprimen to de safda no
domfnic para sy-dat um e 10) entac separadores serao exibidcs quando
5 m(2J.
6 d(2) •
o valor de fl for escrito .
7 end of f2, • As linhas 19, 20 e 21 fazem todas a mesma coisa: escrevem fl utilizando
8 begi n of f3. o fo rmate espec ificadc no perfil do usufrio.
9 d(2) ,
10 m(2) . • As linhas 22 e 23 fazem ambas a mesma coisa: escrevem fl utilizando
II y(4) • a fo rm ate especificado no perfil do usufrio, mas utiliz am um ano com
12 end of fJ. dois dfgitos.
13 begfn of f4,
14 m(2). • As linhas 24 e 25 fazem ambas a mesma coisa: escrevem fl utilizando
15 d(2) • o formate especificado no perfil do usudrioadotando um anocom dais
16 y( 4) , djgitos, mas sem separadores.
17 end of f4.
• A linha 27 formataa data utilizando a safdade conversso IDATE. A saida
18
19 write : I fl. · 0 perfil do usulri o confi gura 0 formata de IDATE tern 0 formato yyyymmmdd.
20 I f l rtmjdd/yyyy, ·0 perfil do usulr10 conf igu ra 0 f ormat a • A linha 28 formata a datautilizando a safda de conversao SDATE. A safda
21 I f1 dd/rrrn/yyyy, -e perfil do usuAri o conf i gura 0 f OrN t o
de SDATE tem 0 formato yyyy/mm m/ dd.
22 I fl rrm/dd/yy, "perfil do usu!r10 fmt ~ ex1 bido adot ando um enc com 2
df g1t os • As linha.s de 30 a 33 mostram como criar seu proprio formate de safda,
23 / fl dd/",/yy . - perfil do usui r i o fmt, ! exfb fdo adot ando um ano cce 2 Se voce mesmo tivesse de fazerisso,seriamelhor coloca.r esse c6digo em
dfgi t os uma saida de conversdo e)entjo, atribuir urn nome asafda de conversao
24 / fl omld" . "perfil do usuar -t c fmt, anc corn 2 dlg i t os, s en na instru~ao write. Voce nao apenas simplificaria seu codigo , como
separadores
tam bem de ficarla disponfvel para voce e para codas as outros pro-
25 / f1 dcmnyy. "perfi l do usuar t c fmt, ana com 2 dl gitos. sem
separador es
gramadores para uma aplicacto imediaca em qualquer programa.
26 / fl yynmdd . "f ormat o yyrrrndd, sern separ edcres
27 / fl using edi t mllsk I·-!DATE', Utilizondo os odi~6es no-zero e no- s i gn
28 / ( 1) f1 using edit mas k I u SoATE , • .,.
29
A adiiao no-zero suprime os zeros iniciais quando utilizada com variaveis do
30 f2 - 11. tipo c ou do tipo n. No case de urn valor zero, a salda sera t otalmente gerada
31 II'IOve·correspond;ng f2 t o: t a. f4 . com espaios em branco.
32 wri te : / (10) f3 ust ng edit mask ' - '.J_ ', - f onnat o dd/nrn/yyyy Aadi<;ao 00 - 5; qn,quando utilizada com varidveisdo tipa t, pau f , suprime
33 / (10) f4 usin g edit lIlask '-.J-.J ". - f oma t o nn/d d/yyyy a saida do caractere de sinal. Em outras palavras, numero s negatives nao terac
urn sinal e apare~erio como se fossem positives.
~.

~\, ~
>..:::.::::=::.:. .==-=::..:..' --- - -- - - -- - - -t
A Listagem 14.10 ilustra 0 usa dessas duas adi~6es . i variavel de origem ni o seri alterad o, somente a saleh aparecerf diferente. Se
voce aumenur 0 mimer o de decimals, zeros seno acrescea ta dos ao final do
ENTRADA~ Listagem 14.10 Utilizondo no- zero e no-si gn valor. Valo res negatives de n mo veri o 0 decimal para a direita, multiplicando
efetivamen te a mimero por Farores de 10 e, enno, fazen do 0 arr edondamea to
1 r eport ztx 1410.
2 data: cl( lO) type c value '000123' . ant es da exibicso.
3 nl(10) type n value 123. A adi~io r ound n faz com que a safda seja multiplicada por fatores de 10
4 n2(10) type n value D. e, entaO, arredondada antes cia exibicao. Esse procedimenrc tern 0 mesme efeito
5 fl type 1 value '123-' . de multiplicar por l O"'*n. Valores n positives movem 0 decimal para a esquerda
6 i2 type 1 value 123. e as valores n egatives 0 movem pan a. direita. Isso sera. util, p ar exemplo ,
quando voce quiser gerar uma said a dos valcres pU2. 0 milhar mais pr6ximo.
7 write : I er , 20 "type c",
8 / cl nc-eere, 20 ' t ype c us Ing rc -zerc - , A diferen~a en tre de cimals e round e que decimals alters 0 numerc de
9 / nl . 20 ' t ype n", digitos depois do p ooto de cimal p ara n c) enu a ) executa 0 arredon damento.
10 / nl no-zero, 20 "t ype n usi ng no-zero ' . round move a ponto decimal para a esquerda ou para a direita pa r n, manten do
11 / nz, 20 ' t ype n: eere value ' . o ofunero de di gitos depo is do decimal e, entao, execu ta. 0 arr edondamento
12 I n2 no-zero , 20 ' type n: zerc value using no-zero ', para 0 rnime ro de digitos de cimais exibidos. .
13 / 11. 20 'type 1' .
14 / 12 no-sign. 20 l type 1 using no-sign' .
A Listagem 14.11 ilu st ra 0 us a de deci mal s e round:

ENrnDA.~ List a g em 14.11 Utilizando as odi<;6es deci mal s e round


a c6digo na Listagem 14.10 produ z esta , aida:
1 report ztx1411.
000123 t ype c 2 data f l type p decimals 3 val ue ' 1575.456 '.
123 t ype c usi ng no-zero 3 wr ite : I fl , 20 "ea-ts ",
0000000123 t ype n
4 / fl dec1ilals 4, 20 'd ~ c 1 ma ls 4',
123 t ype n using no-zero
000000000o type n: zero val ue 5 I fl d~i lla1s 3, 20 'decimals 3' .
type n: zero value using no-zero s I fl dec;lnals 2, 20 'decillllh 2',
123- t ype 1 7 I 11 eectnal s 1. 20 ' decimals 1',
123 type 1 using no-s i gn 8 I fl decimals O. 20 ' deci mal s a',
g If1 d e c i ma1s~l , 20'decimal s-1 ',
Especificando decima is e a rredo nda me nta 10 I fl round 4. 20 ' ro und 4' .
11 I fl round 3. 20 'round 3' .
Duas instrucces executam 0 arredonda mentc e 12 I 11 round 2, 20 'round Z' .
13 / 11 round 1, 20 'round 1',
• decima l s 14 /11 round 0, 20 'round 0' ,
• round 15 I 11 round - I , 20 'round ·1 ',
16 I fl round ~ 2. 20 'round -2 ' ,
T res instrucdes sao ut ilizadas para especificar 0 mimero de casas decimais 17 1 11 round 3 dec1mals I, 20 ' ro und 3 dec1mals 1'.
na safda: 18 I fl round 3 deci mals 3. 20 'round 3 dl!c1lnals 3 ' .
• decima l s
• currency
... a c6digo na Listag em 14.11 produz esta saida:
• unit 1.575 .456 as-i s
1.575 .4560 decimals 4
Utilizanda a s ad i~6es deci rna15 e round 1,575.4 56 dl!c illals 3
1, 575.46 decll:1.a1s Z
A adic;ao deci mal s n pede ser ueilizads para aum entar ou diminuir 0 ndmero 1,575.5 dec illlah 1
de casas decimais exibidas na lisa de safda. Se voce diminuir 0 ntimerc de casas 1,575 decimals 0
decimais, 0 valor seri arredondado ant es de ser escritc na lists, a valor cia 158 deci mals -1
484 l PR EN DAEM 21 DIA5 AB AP /4
CIA lH IHSTltU\iOWRITE 485

0. 158 round 4 ztxlf c3 ~ armazenada no campo ztxt001-waers. Voce pode descobrir isso
1. 575 ro und 3 clando urn. clique duplo em qualquer urn desses campos. Por exemplo, se der
15.755 round 2
157.546 round 1
um clique duplo em zt xlfc3-sal dv, veri a tela Display Field ZTXLFC3-
1.575.456 round 0 SALDV.mostrada na Figura 14.3.
15. 754.560 round -1 A ubela de referencia e a campo de referenciaindicamque ztxt001-waers
157 .545.600 round -2
con tfm a chavemoneciri.a..
1.6 round 3 dl!cillal s 1
1.575 round 3 decteets 3
F igu ra 14 3
No linha S, 0 od ic;codecimal s a nOo eorre dondoda para clmc porque a pa rte Umdique duple no
compo $OIdv do Iobela
frocion6ria do ncrnerc e menor que .5.
ztxHc3 exibin5 em tela_

A adi¢o dec imals onulo as casas dedmois de finidos no do minio.


Indep end entem ente do Iocol de onde a espedfico~co declmcls e
proven iente, elo ounce indicaro um ponto decimal rea l no nUmero. 0
numerc se re semp re crmczencdc como um valor inteire. A instru¢ o
deci mal s e uma espeoucccec de fonncto aplicoda 00 nemerc an tes
que a mesmo seic utilizedo em qua lq uer lugar, par exemplc, no
instruc;c o wri t e au em um cclcclc. "

A tabela ztxtOOl contem os atributcs de todos 0$ c6digos cia empresa;


Os tipos do ODIC. CURR e QUAM, sOo boseodos no ti po de dodo p do sua chave primaria e bukrs. Se voce recirar 0 valorde ztxl fc3- bukrs e pesquisar
ABAP/ 4 (decima l com poe:tedo). a Unica 1inha em zt xt001 que corresponder, waers ira center a cha:ve monetaria.
A Listagem 14.12 ilustra esse conceito.
Util izando as adi~6es curre ncy e unit
As adic;oes currency e unt t correspondem a uma maneira alternative de indicar EIiIDDI~ Usta g e m 14.12 Ulilizondo 0 adi<;oo currency
a posicsc do ponte decimal para urn campo do tipo p. Elas nao podem ser
1 rl!port zt xl 412.
utilizadas com a adiliao dec"imal s. 2 tabll! s: ztx1fc3.

3 data: fl type p deci mals 1 value '12345. 6' .


Utilizando a adi~ao cur r ency 4
Q uando escreve uma quan tia mon erdria, voce tambem deve u tilizar a adiC;2o 5 write : / fl ,
currency. N ormalmenre, tais quantias sao recuperadas de u rn campo do tipo 6 I 11 cur-rency 'USD'. 'USC' • ·D6la~s eee- tcancs
CURR em uma ..bela de banco de dados. 7 I 11 currency' IlL'. ~ ITL'• ·Lira 1t aliana
8
Utilize currency em vez de decimals a fim de especificar a mimero de
9 ski p.
casas decimais para os campos de quantia monetiria. Diferent emente de 10 select· f rom zblfc3 whl!re gja hr • '1 997'
decimal s, em que voce especifica a numero de casas decimais, com currency 11 and u ldv • 100
voce especi£ica urn c6digo monetfrio, como usn (dclares nort e-americanos}, 12 order by bukrs .
ITL (lira italiana] au JPY (iene japcnes). 0 sistemaentia pesquisa esse c6digo 13 on changI! of ztxlfc3 ~bukrs •
.i 14 sel ect single * f rom ztxtOOl where bukrs • ztxlfc3 -bukr s.
monetario na tabela TCURX a fim de determinar a mimerode casas decimaisque
deve ser utilizadopara exibir 0 valor. Se 0 ccdigc mcnetario nao for localizado 15 endon.
16 writ e: / ztxlfc3-saldv currency zt xt OOl·waers, zt xt OOl-wal!r5 .
em TCURX, um padcio de duas casas decimals sed utili:z.ado. 17 endselect ,
Normalmente, 0 c6digo mccenric tambem e armazenado na mesma
tebela de banco de dados ou em uma outra tabela relacionada. Por exemplo, a
chave monetaria pan. as campos do ripe CURR (sal dv, 50111 e habn l ) na tabela o c6digo na Listagem 14.lZ produz esta safda:
a

486 I IPREH OI EM71 nus lBAP/4

SAiDA~
123,456
1
!I
D1I IH INSTRU~O WRITE

decimalsque nao tenham zero. AMmdisso, nunca aumentara 0 numero exibido


487

1. 234.56
123 . 456
usa
ITL

usa
, de casasdecimais. Par exemplc, se 0 valor for 12. 30 e decan for I, a safda sera
12 .3. Se 0 valor for 12.34 e decan for 1, a safda sera. 12.34.
100.00 andec acrescenrara zeros depois que decan river sido aplicado. 0 namerc
100.00 usa exibido de drgitcs decimais deve ser multiple de endec. Se necessdrio, andec
100.00 usa
100 . 00 usa preenchers 0 valor a direita com zeros, Se andec for zero, nenhum zero sera.
100,000 ITl acrescen tad o. Por exemplo, se 0 valor for 12.34 depois que decan river sido
25,050 III aplicado e 0 valor de andec for 3, deverao existir 0, 3,.6 ou 9 (au qualquer outre
100,000 ITl
100, 000 J py numero multiple de 3) digitos decirn.ais. 0 valor de saida, .partanto, sen
300,000 J PY preenchido com zeros para se tamar 12.340. Se 0 valor depois de decan for
. 250. 50 CAD 12.3456, a safda secl 12.345600. Se 0 valor depois de decan for 12.30 e andec for
200. 00 CAD
1.000.00 CAD 2, a safda sera. 12.30.
100.00 CAD A Tabela 14.6 contem mais exemplos dos efeieos de decan e andec no
formato de safda,
AMluSE ~
• . A linha 5 escreve 0 valo r de flo
• A linha 6 escreve 0 mesmo valor,masprimeiro pesquisa ' usn na tabela
I
Tabela 14.6 Como as campos decan e andec do tobela t 006 ofetam a fc rmctoc oo
de scfdc de urn campo
TCURX a fim de dererminar 0 mimero de casas decimals. 0 valor USC' I

DaDesta na tabela, entao a saida eformatada utiliz.a.ndo0 padrdo (duas Entrada decan andec Resultado ·
casas decimals).
30. 1 1 o 30. 1
• Quando a linha 7 e executa da, a tab ela TCURXindica que III caa tern 30.1 1 2 30.10
casas decimais e, entio, formata 0 valor sem quaisquer decimais. 1 3 30.100
30.1
• A linha 10 seleciona as registros cia tabela zt xlfc3 em ordem de c6digo 30. 1234 1 3 30.123400
d. empre,. (bukr s) . 3D 1 3 30
• A linha 13 eacionada sempre que 0 c6digo da emp.resa e alterado. 30 2 o 3D

• A linha 14 pesquisa 0 c6digo da empresa na tabela ztxtOOl a fim de 30.1 2 o 30.1


[ocalizar 0 valor monetdric daquela empresa. A chave monetaria esta 30. 11 2 o 30.11
disponfvel no campo ztxtOO l-waers. 30.11 2 2 30.11
30. 11 2 4 30.1100
• A linha 16 escreve 0 balance obtido utilizando 0 mimero de casas
decirn ais indicado pela chave monetaria no campo ztxtOOl-waers.
N orrnalmente, a. adiliaO uni t eutilizada com as campos do tipo QUAN que
sao armazenados no banco de clados. Cada campo deve ter urn campo de
Utilizanda a ad i~ao un it
referenda do tipo UNIT; A unidade de medida para 0 valor no carD;pa QUANestara
A adi~ao un i t e utilizada para especificar a numero de decimais exibido para armazenada Iii. A Figura 14.4 mostra que 0 campo de referencia de ztxmara-
urn campo de quantidade. As unidades, como cm (centfmetros) ou l b (libras), brgewe ztxmara-gewei.
dererminam 0 mimero de casas decimais a ser exibido. 0 c6d.igo, como 1% 1
(por cento] ou lKM 1 (quilcmetros) e especificado depois que unit e automa- i
ticamente pesquisada na tabela t006. Em seguida, as campos decan e andec
determinam quantas casas decimais serjo exibidas. Os dais eoni sm urn valor
numerico. , J
decan especifica 0 mimero de valores decimais estimados em zero que
devem ser truncados. Ele remove os zeros fmais e nunca truncard as casas
488 A'RENDA EM 21 DIA' ASAP" D~ lH INSlRU\lO .,m 489

Figura] 4 4 33 ztxmara- brg ew unit ztxmara-gewei,


Se vod der um clique 34 zt xmara-ntqew,
duplo no compo 3S ztxmara-ntgew unit ztxma.ra-ql!wef,
ztxmara-brgew, 36 . ztXlllara-gewei,
ven5umo tela 37 85 tOO6-decan.
indicondo a tobelo d e
38 91 tOO6-andec.
referfndo e 0 compo.
39 endse'lect ,

o c6digo na Listagem 14.13 praduz esta salda:


99 .‫סס‬OO es-ts
99.000 .1 ~ 1I111 111ters eecan 3 eneec 3
99 .00 , - percent eecan 2 andec 0
99 - 1nch!!5 decen 0 andec 3
A Lisugem 14.13 ilu stra 0 uso dessa adi>ia .
99.1234 as-Is
EN1iAnJ.~ L1slagem 14.13 Ulilizendo e ed iC;ao un!t 99. 1234 %
99.1200 as- is
1 re port ztxl(1) . 99.1 2 %
2 tabll!s : ztxlMra . t OO6. 99.1 as-is
1 data : f1 type p dec1M.1s .. vetue '99 .‫סס‬oo'. 99.1 %


5
f 2 type p deci mals 4 ¥i lul! '9 9.1234' .
13 type p deci mals 4 value ' 99.1 200',
brg ew I s- is w/un1ts nt gI!W as-is w/units units decan eneec
6 (4 type p decimals 1 value ' 99. 1', 102. 560 100.000 100 M3 0 3
MI00 102. 560
,
7
",rH.!!: I n, 'as-i s' ,
HI0l
M102
10.100
1. 000
10. 100
I
10.000
0.000
10 PAL
o ROl
a
0
o
o
9 / fl unit 'Hl', 'ml - ml1 l il iters eecen 3 andec 3'. M103 50. 000 SO 0.000 o CR 0 o
10
II / n 'unit ,..
/ 11 uni t '%' . '% • percent
- i nches
eecen 2 andec 0'
decan 0 endec ) ' :
12 /. AHlllS! ~ • A linha 8 escreve fl sem utilizar a acllljaO unt ts.
13 / f2, 'as-1s' , • A linha. 9 utiliza a un idade ML (mililitr os). Uma. pesquisa e automa-
14 I tz unit '%' , '% ', ti camen te realizada na tabela t006 quanta a ML. Essa liaha conrem decan
IS / fl. '15-15 ' •
16 / 13 unit ' %' , ''1;' , 3 e andec 3. decan 3 faz com que os zeros depois da terceira casa decimal
17 / fI, ' es-t s ' , sejam remcvidos. andec 3 faz com que a ndmero de -decimais seja um
18 tf4 unit '% '. na me ro multiple de tres. Nesse ponto, ele ja ~ entac a saida.eexibida
19 utilizanda tres decimals.
20 skip .
21 wr1te: /1 2 ' br gew as-is ', • A llnha 10 farmata f l utilizando a unidade %(por cento), que tern decan
22 31 ' -nth units' , 2 e andec O. decan 2 essabelece que as zeros finais depais do segundo
23 48 ' ntgewas-is ', deci mal devem ser remo vidos. andec 0 indica que naa hi mais nenhuma
24 67 'with units ' medificalji o e, entia, a saida sen de duas casas decimais.
2S 79 'unit s' . •
26 85 ' decan', . • A linha 11 uriliza a unidade • [polegadas}. decan 0 indica que todes as
27 91 'andec· . zeros de cim ais devem ser truncados. andec 3 indica. que 0 ncm erc de
28 ul tn e , . decimais deve ser p reenchidc com zeros para tres casas decimais.
29 select · frtlCll ztxma l"'l .
30 sel ect s i ngle· t r Oll t 006 whe r e llIS ehi • ztxmara-gewI!1. • N; linhas de 13 a 18 [o rmatam de t2. t. utilizando a unidade %•
31 write : /(5) ztxmara-mat nr • Na linh a 14, decan 2indica que as zer os finais depois do segund o dlg iro
32 ztxma ra -bi'Ql!w. •
decimal devem ser rru ncsdos . Nrc existe nenhum, entia nada sera
490 APRENDA EM 21 DIAS AUP/! D~ lUINSTRU(iO NRlTE 49\

t runca do. andec 0 indica que me haven ma.is nenhum preenchirnento, AB


•• .• +• ••• 1. • • •+ • •• . 2• •• •+.•••3. .. . +. . ••4
pcrtanto, a saida sed jcrmatada utilizandc qu arrc dtgirc s decimals. 1234567890123456789012345678901234567890
• Na linha 16, decan 2 fu. 0 truncamento dos zerosfinais. AS

• Na linha 18, decan 2 m o faz nada porque mo ha nenhum zero final a


ser trunc ado. endec e 0, entia ncnh um zero sera acrescentado ao final.
• A linha. 29 seleciona todos as registr os cia tabela ztxmara. • As linhas 3, 4. 9 e 10 escrevem UIIU. regua, de mod o que p ossa ver os
• Paraada, a linha 30 seleciona 0 registro de tOO6 que contem a unidade mim eros cia colun a D.2. saida.
em zt xmara -gewei. Observe que issa nie ! normalmente feito. E • A linha 5 escreve f1 utiliz.anda a formata~o e a comprim ento padrao.
apenas fcito aqui para mostrar as valoresde decan e andec. A fOI1I1a.Uljio padrio para uma varisvel do tipo c espe cifica um ali-
• Nas linh as de 32 a 35. as valores gewei e nt gew sio escritcs de dUOlS nhamento a esquerda, entao a. safda apareced alinhada i esquerda
maneiras. Primeiro, sio escrieos como sio e, entao, sse reescritos dentro de seu comprimenro de saidapadrsc (6).
utiliz and o-se a adi~io un1 t a fun de mostrar 0 antes e 0 depois. • A linha 6 produz a mesma saida porque tambem especifica 0 ali-
• As linhas 37 e 38 escrev em as valores decan e andec que cram utilizados nhmlent.o a esquerda.
para form atar cads linha. • A linha 7 centraliza 0 valor deat rc do com prim ento de saida pad.rio
de 6.
Mudgndo 0 glinhamento • A linha 8 alinha a direin 0 valor dentro do comprimento de safd..a.
Com a ut.iliza~o de l eft -justifi ed, centered e right-justi fie d, voce! pede padrac de 6.
mudar a valor de saida denero d o espa ljo distribuIdo p ara 0 campo de suda.A • As linhas 11, 12 e 13 especificam urn comprimento de saida de 40. 0
Listagem 14.14 ilus tra esse conceito. valor e entao alinhado a esquerda, cenrralizadc e alinhado a direita
dentro daquele co mp rimento.
ENTRADA'" Listagem 14.14 Utilizando as cdil; 6es de alinhamento para a instruc;co
,.. write
Resu ro o
1 rep ort ztx1 414.
2 data : 11(6) val ue ' AB'.
• Se voce nio estabele cer qualquer especificacac de formato ou de
3 write : / ' .... +.... 1' . comprimento na instru~ao wr1 te l 0 formato e 0 comprimento padrao
4 / ' 1234567890 I • do campo seraoutilizadas. Es ses padroes sao originados a partirdos tipos
5 / fl. de dados do AEAP/4. O s campos do DOle s.o baseados nos tipos de
6 / f1 left-justified, dado s do AJ3A P/4 e, assim sendo , herdam 0 formato e a cc mprimenro
7 / fl cent ered ,
padrac. Alem disso, as especificacces de formate, como ntim ero de
8 / f1 r1ght .j usti f 1ed.
casas decimais e comprime nto de saIda eambem podem ser especifi-
9 / ' .. .. +.. •. 1. • . . +. •• . 2• ••• +. . .. 3. • •• + .. .. 4',
10 / ' 1234567890123456789012345678901234567890 ' , cades no domfnic; estes anul am os vaIore s herdad os.
11 /(40) f1 left -just i f i ed.
• Os cam pos de dat a e hera serac exibi dos com separadores, se exiscir
12" / (40) 11 centered.
13 /(40) fl r19ht·ju s t i f i~ .
espacc suficiente para eles no campo de sa.!da. Se nao existir, os
separadores serio completamente removidos . Em um campo nu-
merico, os separadcres de milhar sio removi dos, urn par vez, co-
o c6digo na Listagem 14.14 produz esta saida: mecandc cia esquerda do campo em direljaO a direita a fim de exibir
•• ••+.. . . 1 mais djgit os. A te mesmo 0 campo de sinal sen utilizado se 0 mesmo
1234567890 estiver em branco.
AS
A. • Para a maioria cbs especificaljoes de form a.t o de data, 0 pad.rio do
A. usuano defmiri. peto menos em parte, como os campos de data

J
.:8
492 I APREMD'" EM 21 etAS UAP/4 OIA lU IHSTllU\lOWRtTE 493

deversc ser formatados. De tcdas as especificacces de formato de data,


somenre yyrrmdd anulari ccmpletamente 0 padrao do usudrio. P&R
• U rna mascara de edi'iao pede ser utilizada para inserir caracteres na
safda, Eta tambem pode solicitar uma saida de cocverssc que ici
formatar a valor, utilizaodo 0 c6digo do ABAP/4 . Uma safda de
o Observei que existem tambem modules de fun~o com os
nomes CONVERSION_EXIT_XXXJO(_INPUT . Para que servem?
converssc ~ como urn conteiner reutilizavel que concern urn c6digo
para formatar urn campo. .
o m6dul o de fun~io INPUT E chamado sempre que urn valor E
inserido em urn campo, desde que 0 domfnio daquele campo
• Utilize no-zeropara suprimir zeros iaiciais nos campos do ripe n e tipo especifique uma sarda de conversto. A safda de cocversso INPUT
c. conven e a ent rada do ususrio para um novo formate antes que 0
• Utilize no-sign para remover 0 campo de sinal final "da exibi~ o. programa a receba. Eurilizada pan reduzir a quantidade de c6digo
repetitive necessaric para farm atar novament e urn valor de en-
• Utilize decimals para especificar 0 mimerc de casas decimals que
trada, de modo que a prognma que 0 utiliza nao tenha que fazer
devem ser exibidas.
isso.
• Utilize round para. indicar a posifiao do ponto decimal no valor.
• Utilize currency para especificar 0 numero de casas d.ecimais para os
campos de quantia moneciria. currency pesquisa 0 c6digo monetaric
o Como criar um a salth de conv ersio?

na ubela tc urx a fun de determinar 0 numerc de decimals. Se 0 c6digo


nao for Iocalizadc, urn. padrao de duas casas decimais sera utilizado. o Se nao souber como criar um m 6dulo de £Un c;ao, voce precisara
pr imeiro ler 0 capitulo relacionado com esse assunt o. Se voce
• Utilize un i t para [ormatar as campos de quantidade. A uaidade e souber como criar urn m6dulo de fun fiao, erie urn com a nome
pesquisadana rabela t006.decan determina 0 ndmerc de zeros decimais CONVERSION_EXIT_XXXXX_OUTPUT cede XXXXx ccrrespocde a urn
a ser remcvido e andec determina 0 namerc de zeros a ser adicionado. Dome-com cinco caracteres por voce definido. Deve haver urn
I?fgitos decimals diferentes de zero nunca serao removidos. parlmetro de iraporracac denominado INPUT e um pargmetro de
exponac;aodenominado OUTPUT. 0 valor original passado da ins-
• Utilize left -just ified, centered e right-justified para alinhar 0
tnlfiaO write erecebido arraves do parnneer o INPUT. Voce pc dera
valor dentro do comprimento do campo de salda,
formaef-lc novamente e ao final do m6dulo de funC;ao, atribuir 0

---=-------
novo valor 200 paramerrc OUTPUT. Uma boa maneira de comecar e
copiando urn existente.
I Fa~a
Permitc que cs usudrics es pec fi quern Nao ccdlfiqve demcis decimals 2 perc Workshop
sevs pr6prios fonnotos de ~oto. quon tios em d6la r. Por suo vez, utilize a
odic;oo currency,
o Workshop cferece duas maneiras de voce verificar 0 que aprendeu neste
capjtulo. A seljaoTeste oferece perguntas pan ajudar a solidificar seu entendi-
Utilize as scldcs de ccrwersec para Nao ccdrhq ue demais duos casas
declmcts para % ou parc quo lquer outro
mento do coneeedo abcrdadc e a se~o Exercicio permite que voce pratique 0
executor torefos de formotec;oo
repefitivcs, especiolmente se forem unidade de medidc . Por suo vez, utilize a que aprendeu. Voce pode encontrar as respostas as perguntas do teste e aos
com plexes. odiC;ao unit. exercfcios no Apendice B, "Respcstas as pergun tas e aos exercrcios".

Teste
1. 0 que voce precisa fazer pan garantir que as altera~6es no padrio do
usuirio entrem em vigor?
2. 0 que acontecera quando um.a ma-scara de edifiio que come~a com
urn Vfor aplicada. a urn campo numerico ou a. urn campo de caractere?
3. Com quais tipos de varisveis a adiljao no -stan pode ser utilizada para
fazer com que urn mimero negative .aparelja como se fosse positivo?

Exercfcio 1
SEMANA 2
Esereva urn programa que produza a seguinte said.:
., •. +•• ••1•• • •+•••. 2••• :+.• • •3•• ••+• • .. 4
First December
January
First

Revisao
Na semana passada, voce realizou as seguintes tarefas:
• criou os objeros de dados vuiiveis e fixos utilizando os tipos de
dados predefinidos, bem como os definidos pelo usuirio
• aprendeu as regras de sintaxe do AB~/4 e as instruljoes para
ccntrolar 0 and.a.mento do programa
• descobriu as instrucoes de atribuiljao e as regras de conversac
• definic as tabelas intemas e as preencheu utilizando areas de
trabalho implfciras e explrcitas
• otimizou ainstru(jao sel ect a fun de preencher de form a direta
e eficiente urna tabele interna
• executou 0 processamento de quebra de controle em tabelas
internas
• urilizou as 0pljoesde formatilrsao da instruljao wri te e observou
as efeito s de tipo de dado sa bre a saida
• empregou assaldasde ccnversac e detectou sua preseclia denrro
do dominic
r r r . rr r r> r r: r"' r> r> r"' r> ,...,...

SEMANA 3

Visio geral
N a Semana 3, voce produzira relatorios que utilizam simbolos grificos
e leones, anexa cabec;alhos e rodapes alistas e envia saida para a spool de
iccpressac utilizando a instruc;ao new-page pri nt . D epois disso , voce se
familiarizacl com as eventos i ni t i al i zat ton, start-of-sel ecti on, end-
of -sel ect ion, top-of-page e end-of-page. Voce tambem codificars sub-
rotinas externas e internas e m.6dulos de funtjae e passara pargmerros
digitados e nae digita dos p ara eles par valor, par valor e resultado e por
referencia. Par fim, voce definid excecoes dentro do m6dulo de funt;:ao,
co nfigu ra ni a v;Jor de retorno de sy-subrc e criara telas de selecac
utilizan do a. instru~ae select- npt tons.
• No Dia 15, "Tecnicas de formatatjao, Pa rte 1", voce utilizard as
opcoes de fo rmatafiao grifica da instrutjao sr-t t e (as symbol, as
icon, as line), impressjlo lista de saida e manipu la a sai'da no
spooL
• Durante 0 Dia 16, "Tecnicas de formatacio, Part e 2", voce
utilizard as instrugoes comuns de formatac;ao new- I i ne, new-
page, ski p, back, pas; t i on e set bl ank 1; nes; e enviara safda para
e spool que ueiliza new-page pri nt.
• Dentro do Dia 17, "Modularizacao: event os e sub-retinas",
voce utilizari as eventos init ial izati on, start - af-s el eetion e
erd-cf-s electtcn, definira sub-retinas int ernas e extemas; e
definiri verifveis locais , globais e estdticas e areas de trabalho
de tabela.
• Durante a Dia 18, "Modularizacao: passando pardmetros para
sub-retinas", voce passara pardmetrcs digitados e n jc digitados
para sub -retinas; passard parametres de tres man eiras: por re-
feraacia, par valor e par valor e resultado; e pass ard strings de
campo e tabeles internas para
uma sub-rotina.
498 APR EHDA EM 21 DIAl ABAP"

• Durante Dis 19, "Mcdularizaclo: modules de fun~ao, Parte 1", voce


entendera e util izara a instrucac i ncl ude, criard gropos de fun~o e
m6dulos de funr;ao e definira parametres de impcrtacao, de expor-
ta~o e aiterdveis.

• No Dia 20, "Mo dularizacao: modules de func;ao, Pane 2", voce


entenderd as compone ntes e as estrurura de urn gropo de fun~ao e
definir:i dadcs globais e sub-retinas dentro de urn grupo de func;io.
• No Dia 21, "Telas de selecic ", voce ccdificaei telas de selec;ao que
interagem cern 0 usudrio, utilizara elementos de formatacso para criar
telas be m-projetadas e eficientes de selec;ao e utilizara telas de se1ec;:io
para manter integridade de dados,

Di 15
Tecnicas de format a~ao, Parte 1
O bjetjvos do capitulo
Depois de completar este capitulo,voce sera capaz de:
• Utilizar as opcoes graficas de fonna taljao da instrucio write (como
simbolos, leones e linhas).
• Imprimir uma Iiseade saida e manip ular a saida no spoo1.
• Criar cabegalhcs e rodapes (no standar d page heading, top-of-pace,
end-cf-peoe) .
• Utilizar a instrulj:3.0 r eserve para manter grupos de linhas junt os na
Iistade safda.

Eormotoc;6 0 gr6fico com a instruc;60 wri te


Escr evendo imagens simples voce pede utili zer as trSs adilj:oes mos tradas na
Tabela 15.1. .

Efeito
as symbol Exibe urn simbolo em pretc-e-brcncc
as icon Exibe um ko ne"decor
as 11 ne Exibe urnccrcctere de desenho de linho

hllpJ l www.corTlPus.com.bl.
........ _~ -FFFFFee
~
• -~~ enmnnn nn n
,...-,
77

500 APREHDA EM 21 DIAS ABAP/4

' t axe p a ra as a d'u;oes


S 10 - g ra' f leaS
' pa ra a ,lOSt rU~ao
- wrJl t e •10
/4 sYD'_ fi1led_squaT"l! iI.S
/4 sym_fill ed_square as symbol.
s)'lllbol, ' KHAl ' ,
'KHBl',
~ write n1 (a) illS iymbol. 11 / 4 s)'lLfilled_square as symbol. 'KNCl' •
lZ skip.
~ (b) IS icon. 13 ul tne .
~ (e) IS line . 14 se lect · liP to 5 rows f rom ztxlfal.
15 write : / ztxlfal - l1 f nr ,
m onde: 16 ztxl f al-namel ,

T • As adic;oes (a) , (b) e (e) sao mu ruamente exclusives. 17


18
sytl.Jlhon e as symbol,
ztxlfal- t elfl.
• nl e 0 no me de urn sfrnbolo, {cone au caractere 11ne-dres. 19 endset ect .

o ccdigo D' Listagem 15.1 produ z a sald. mcs trada D' Figura 15.!.
Utiliza od o a adi~ao as symbol • As linhas 4 • 11 escrevem urn. lista de Domes de rabela dificil de
codificar na forma de marcadores.
lOyD .... Urn s{mbolo e urno figure blcclcr simples de urn simbolo comum como urn
m.o ,. quoclrcdo, urn d rculo, urno po sta ou urn documento. A moiorio dos sfmbolos
• As linhas 14 a 19 escrevem codigcs, nomes e c ame ros telefcnes de
ocupa um unico ccrcctere no liste de so ido, emboro a lguns poss om ocupor do is espcccs,
por exemplo,o slmbclc de urne moo opontondo pora a esquerdo (sym_1eft_hand). Umo fabricantes precedidos pelo simbolo de telefone.
instrui;oo de exernplc serio write sYDI_l ef t_hand as syrrtlol .

A fim de escrever um sfmbolo, voce deve incluir uma das duas instrucoes Utjlizaodo a ad i~aQ as i con
seguintes na parte su perior de seu program a:
IOVO .... Um fcon e_tsemelhonte 0 um sfmbclc , excetc pelo fato de que e umo nguru
inc:lud. <syrd,lol:> . lEUO " multicolorida qU«!I pode epereeer no listo de scjdc. A maioria dos leones ocupo
dois espocos no Iistc de scldc, emborc alguns ocupem mois. Um exemplo de umc
ou
instrv¢o write que escreve urn leone serio write 1con_l ed_red as 1con.
i ncl ude <list> .
Para escrever u m leone, voce deve incluir uma das duas insrrucoes
Tcdos as s!mbolos sao imprimfveis. Isso significa que se voce enviar sua seguintes na parte superior de seu programa:
safda p ara a impresscra, eles aparecerio no papel exatamen te com o voce os ve
include <icon>,
online .
ou
MOYO.... 0 nome entre slncis de maior e menor e urn progroma ind ude. Esse progromo t nclll de <l1st>.
TEi.ll:O" ccntem um conjunto de instruc;oes que defineos names dos simbolos que voce
pode utilizer. 0 include <symbol > conMm s6 os dennic;6es de srmbole. 0 include <1 i st> N em todos os leones sio imprimfveis. 0 procediment o para determinar
co ntem sfmbolos, leones, ccrccteres de desenho de linhc e definit;Oes de cor. A llstcqern quais podem ser impress os segue mais adiante oeste capitulo.
15.1 contem um progromo de exemplo que utilize simbolos .
A Listagem 15.2 escreve alguns Icones de exemplo.
ENTRADI ~ ListCl gem 15,1 Sfmbolos porc exibi~iio
EKTUD.l~ Lista gem 15.2 Como escrever kones em uma listc
1 re por t ztx1501 .
1 rtport zo.1502. .
2 include <syrrtlol>.
2 in cl ude <icon> .
3 t ables ztxlfll.
3 tables: ztxmara, ztXllgef .
4 wri te : I sy:nJllus_box as symbol , ' Vendor Ma ster Tables',
4 data f co 1i ke i con_generate .
5 /4 sym fi ll ed circl e as symbol , ' LFAl' ,
6 / 4 sym)111e(cin::le as symbol, ' LFBl' , 5
6 write : / 'checkmark '. 15 ico n_checked es icon ,
7 / 4 syrn f i ll ed ci r cle as symbol , ' LFCl ' ,
7 15 ico n_tncOJlPl ete as icon,
/ sym~l us_b~x as symbol , 'Customer Ma st er Tabl es ',
/ ' r ed x" ,
B
502 APRENDA EM !1 DIASABAP/4 euIS.TtCNICASDE FORMATA\lD,PAlm1 503

8 I ' o'll!!!n 1@w '. 15 icon_overview as .1con, F i g u r a 15 2


9 I ' t i lDe peMod'. 15 ic onJll!Mod as teen. Este e IHTl exemplo
10 s kip . de sardo de listo
11 ul tne. ccn1endo fccnes.
12 skip .
13 wr1te : I ' U st of Materi a15 wi th Rad;cect t ve Jndi cat or -s ' •
14 ul1ne .
15 select * f l"Olll l txmara .
16 clear tee.
17 1f not ztxmara·stoff 15 initia l.
18 select sing le * from ztxmgef where stoff " ztxmara·stoff .
19 if ztxmgef-lagkl .. 7 .
20 1co .. ico"_!ll!neratl!.
21 end;f.
22 endi f .
23 wrfte : lieD as teen ,
24 ztxmara-matnr.
25 zt xmaraellt art ,
26 ztxlIIara.matkl.
27 Itxmara -brg!'W.
28 ztxmaraentg!W.
29 ztXll\ilri!l·9~i . • As fuLhas 6 a 9 escrevem um exemplo de quatro leones diferentes.
30 eneseteet .
• A linha 4 define um a varifvel identificada como i co para canter urn
leone a ser escrito, Qualquer nome de Icon e pode aparecer depois de
SiiDI ~ o c6digo na Listagem 15.2 produz a safda mostrada na F igura 15.2. like.
• A linha 15 seleciona registros cia tabc:la de materiais ztxmar a. Pan cada
regis tro, alinba 17 pesquisa a ndmero do material de risco em ztxmgef.
Figura 1 S 1
Este e um l!xomplo de • A linha 19 deeermina se 0 material e radioativo. Se for, endo 0 Iccne
sardode listo id entificado como i con_gener at e e at ribu ldo avaridvel tcc.
COllftondo sfmbolos.
• A lioha 23 escreve a valor de 1co utilizando as ; con para fazer com
que 0 valor seja inrerpreradc com o urn leone. Campos adicionais de
zt xmara tambem sao escrito s.

Utjlizando a adi~6a as 1 j ne
NOYO '" Um coradere de desenho de linho e um ccrcctere que pod e ser utilizodo para
TElMO r desenhor bnbcs em umo listo. Voce pede utiliz6-lo pa ra crier linhas horizonta is
au verticcis, umo ccixc, uma grade ou umo estnJturo do tipo ervore.

> Em geral, para criar uma linha horizontal, voce utilizaria sy-ul i ne. Sim-

.,"~" ;;-, _,., ",;_ ._~ _,, ~,:,; ,; , ; ; .;. cjili>!!~


plesm ente escreva-o e especifique 0 comprirn ento nec essaria. Po r exemplo,
para escrever uma linha ho rizontal que corne lia em posiliao 5 para urn compri-
: c ••• . .. ." . menta de 10, voce codificaria write 5(lO} sy-ul i ne. Pa ra eriar uma linha
vertical, utilize sy- vl i ne: par exemplo, wri te: sy-vl i ne , X sy-vli ne escre-
I I ,

veria uma linha vert ical em qualquer lado de urn X. Se houver uma interse~ao
_ _ aa •
mm· rr
_ - _

504 ! A,m DA EM 21 DIAl ABAP/4


j D~ 15,OOIGlS IlE FORMA14>,O,' Arn 1 505

de linhas na salda, 0 sistema. inseriri 0 caractere apropriado de conedo. Per o c6di ga na Listag em 15.3 praduz a safda mostrada na F igura 15.3.
exemplo, onde a borda de uma lioha horizontal e vertical se encontrarn, urn
canto de caixasera desenhado . Para proporcionarcontrole absolute de: desenho • A linha 2 inclui as defini~6es para to dos as s!mb olos e caracteres de:
de linha ha caracte res 1t ne-draw adicionais disponfveis . desenho de: linha de modo que possam ser utilizados oest e programa.
• A linha 4- define duas variaveis qu e podern arm azen ar caracteres de
Lis ta gem 1 5 .3 Sfmbolos e corod eres l ine-draw desenho deliaha,

1 report ztx1S 03.


• A linha 7le todas as linhas de zt xlfal.
2 i ncl ude <list> . • A linha 8 Ie zt xlfbi para ver se ha qualquer registro-filho para a
3 tables : Ztll fal, ztxlfhl . ztltlfc3. registro ztxlfal atua].
4 dat a: l 1nel l1ke I 1ne_hor izontal_line ,
5 l1ne2 11k1! li ne_horizontalJine.
Figura 15 3
6
7 select 'It fl"Olll ztxlfal. EsIe Ii urnexemplo
8 select singl e " fl"OOl zulfbl where l H nr • ztxl f al· l1fn r. de safda de listo
9 if sy-subrc " O. contendo corocteres
de desenho de linha.
10 wrtte: I sr - vl f ne , s)'Ill_ope"_fold er as s~o1.
11 else.
12 write: I sy-vltne , sY"Lfolder as symbol.
13 endif.
14 writ e: ztxlftl -l1 fnr. 30 sy- vl tee .
15 select" from ztAlfbl where 11t nr • ztxltal·11tnr .
16 select single li fnr f1"Olll ztxlfbl i nt o (ztxlfbl -lf fnr)
17 where 11 fnr • ztxl fbl -lt fnr
18 and bukrs > ztxlfbl-bukrs .
19 i f sy-subrc • O.
20 Hnd • line_1eft _nri ddle_corner.
21 l1neZ • l1ne_vertiea l_l1 ne.
22 else;
23 li ne! • l tne..bottclIUeft_corner.
24 cle ar l tnez,
25 endif.
26 write : / sy-vBn e.
27 4 li nd as lt ae,
28 zt xl1bl-bukrs, • Se existirem registros-filhcs, a linha 10 escrev era uma linha vertical e
29 30 sy- vj tn e, urn slmbolo de pasta aberta. Se nc nhum fa r lo calizadc, serio escriras
30 select * from zt xl fc3 wher e 11fn1' '" ztxl f bl · l1 f nr urna linha vertical e pasta fechada.
31 and bukrs • ztx1fbl-b uk1's .
32 write: I sy-vttne, • A linha 14 escre ve 0 ntimerc de fab ricant e na mesma linhae entaa uma
33 4 l1ne2 as l i ne, linha vertical. na posi~ao 30.
34 8 li neJ eft_lli ddl e_comer as line,
35 ztx l fc3-gj ehr, ztxl fc3-shbkz.
• A linha 15 11 as regisrros-filho s de zt xlfbl.
36 30 sy~vl fne. • A linha 16 olha na fre nte para determiner se este ~ 0 ultimo registro-
37 endsetect , filho au se hi rnais.
38 if sy-s ubre • O.
39 write 8(Z) line_b ott cm) eft_corner as li ne. • Se h ouver mais regisoos-filhos, a linha 19 configu ra a variavel 1; nel
AD end1f. para armazenar urn caractere de desenho de linha de canto esquerdo
41 endselect. de meio, e l i ne2 para armazenar uma linh.a vertical. Sy-v1tne poderia
42 write: /(30) sy-ult ne.
43 endseleet , ter side utilizade aqui em vez de 11ne_vert1ca1_1t ne.
506 I 'PRE NO' EM 21 nus "'P"
--------4-----------------.f DIl lS,ITCNIClS DEFO....Tl(lO,p'mI ! 507
1
!l
I.

• A linh a 26 escreve a varisvel I ine l utilizando a adiljio as 1i ne de modo


que 0 valor seja interpreta do como urn caracrere de desenho de linha.
EHTiA DA ~ Listagem 15.4 Simbolos, leones e caraderes li ne-draw
~I:
1 re port zo 1504.
• As linhas 30 a 37 escrevem as filhos do registrc ztx lfbl atu al utili- 2 include el tst>. -def1n1t;lles para {cones , sflllbolo s + desenl'lo de linha
zando caracteres de desenh o de linha aprop riaclos. 3 t abl es: zUlfi l. ztx lfc3 .
4 data : it 11ke ztxlfc3 occur s 100 wit h header line .
• A linha. 42 escreve urn subliohado com urn comprimento de 30
S ;co_' 11ke 1con..9ree n_' ight.
caracteres. 6 setecr v from zb1fc3 i nt o table It.
7 sort it by lifnr bukn gjahr shbkz.
Exibindo as simbolos, leones e ca racteres 1; ne- draw 8 l oop at it .
g 1f tt - se'lev < 1000.
disponiye;s 10 1coJ • 1co"_gre en_li ght .
Utilize os pass os 1 a. 8 do procedim ento a seguir para exibir os sfmbolos, leones 11 el set f 1t~sa ld v betwffi' 1000 and 3000-.
e caraceeres de desenho de linha disponfveis. Seguindo to dos os pass os, voce 12 fcoJ .. 1conyellow_l1ght.
ira gerar uma instruCJao write que escreve 0 item selecionado na lists . 13 else.
14 1coJ • i co!,!_red_l1ght.
1. . C omece edinndc qu alquer program. no ABAP/4 Editor. Vace deve 15 end1f .
1.6 at new 11 fn r.
estar na tela ABAP/ 4 Edi tor: Edit Program XXXXX. 11 ff sy-tab1X ~ 1.
2. C oloque seu curs or em u ma linha em bracco. 18 write: / 5(82) sy-ul1ne .
3. De um clique no boeso Pattern au escclba 0 caminho de menu 19 19 lfne_bottOlll_m1ddle _corner as li ne.
20 21 l1ne_bottlJll_middle_corner as li ne.
Edit-> Insert Statement. 0 sistema exibe a tela In sert State ment..
4. Selecione 0 botao de opCJio Write. • 21
22
s lt:1p•
endt f ,
5. De urn clique n o bc tac C on tinue. 0 sistem a exibe a tela Assemble a 23 write: /S{lS ) sy-ul t ne,
2~ / S-sY- vl1ne . sYIK_docurr.ent s IS symbol .
Write Statem ent. 25 ft. ltfnr. 19 s1-vt.ine.
6, Escolha Symbol. Ico n ou Line. 26 / 5(82) sy-uli ne.
7. Coloque 0 cursor no campo de entrada a direirado batao de op~ao 27 19 line cross as Jtne ,
28 21 l1ne=top_middh_corner as line .
que voce eseolheu.
29 endat .
8. Pressione a reels F4. 0 sistema exibe urna lista dos itens disponfveis. _.30 write: / i co_l as icon.
9. D c urn clique duplo em urn para escolhe-lo. 0 sistema entjio 0 lev. 31 5 sy-vt t ne, ft ·bukrs. sy-vltne.
32 it-gjahr. U mU ef tJ l iddl e_comer as line no-gap.
de volta atela. Assemble a Write Statement. 33 1t - shbkz no-gap, l1 neJ1 ght _1I1ddle_coTner as li ne.
10. De urn cliqueno borao Copy.Voceeaeac volta a tela ABAP/ 4 Editor: 34 t t -saldv,
Edit Program XXXXX, e uma instru~o wri t e einserida qu e escreve 35 it-son 1,
o item . 36 1t -hebnt , sy-vl t ne.
37 at last .
38 write / 5(84) sy-u 'l t ne.
39 endat.

~o
Nem todos os leones podem ser impresses. Q uando voce as edbe 40 end1 oop.
utililondo as possos cntericres, voce pede ve r que as imprimiveis estOO
mercedes no llstc.

SliDA ~ o c6digo IU. Listagem 15.4 produ z a. saida mostrada na Figura 15.4.

Formato odo e impri mi od~oLlJre;<Jl",aut~6t.LruiQ....s,,----- _


Est a seCjao abraage as seguintes tecnicas de formata~ao de relat6rio:

H
'~ .
508 I APlEHDA EM 21 D[A5 ABAP/4 DO ls,r!cH[CAS DE fORMATA(.iD.PAm 1 [ 509

• Controlar 0 tamanho de pagina • k especifica 0 mlmero de linhas reservado para urn rodap e na pa.rte
inferior de ca.da pagina.
• Titulo! de relatorios, cabecalbcs e rodapes
• Posi~o comum e ic.stru~6es de formata~io
• Nao ccloqce t , j ou k entre aspas.

Fiou r a 1 5 4
Este iii um exemplo
de sardo de listc Utilizando 1; ne- s t ze e 1; ne-count
contendo sjmbolos. Por padrso, a largura cia lista de safda ~ iguall. Iargura maximizacla cia jaaela,
fconrs e eereeees
de desenho de /inno. Par exemplo, se sua janela estiver maximizada antes de voce executa! um.
relaterio, 0 sistema uti1iz.a.ra essa distincia como moddo pan a largura de safda
do seu programa. Se sua janela for redimensionada para menos que 0 maximo,
o sistema aincia utiliza.ri a tamanho maximizado. Urna barn de rclagem
aparecerd na pa.rte inferior cia janela permitindo a voce rolar para a direiea ever
o resto do relat 6rio.
Para anular esse comportamento, voce especiflca a largu ra da.lista de saida
utiliz.ando 1tne-s iz e. Valores validcs sao 2 a 255 .

A melena dos lmpressc rcs noo pode imprimir me is de 132 ccrecteres


par Iinho. Se voce sabe que se us uS!Jcrios poe/em querer imprimir a
Ij~~ de sardo, noo tente excede r esse limito¢ o.

Controlondo a tomonbo de p6g ino o numero da pdgina e impressa no canto superior direiro da lisra. 0
mimerc padriio de Iinhas por p agina ~ 60.000 - 0 maximo permitido. Voc!
Para contr olar 0 tamanho da p f gina de safda, utilize as seguintes adifioes na pode utilizar 1i ne-count para anular esse ndmero. Por exemplo, peraesp eciflcar
instru~ao report: 55 liahas por pdgina, digite re por t line- count 55. Especificar 1i ne-count 0
• line-si ze . significa utilizar 0 maximo (60.000).
• 11 ne-cou nt a usu dric pode esp eciflcar 0 ntime ro de linhas por pfgina que apro- e
priado p ara a imp ressora qu ando imprimir 0 relat6rio.
A adifiio , i ne- s1ze con trola a largu ra da lista de saida; 1i ne-c cunt ca n-
tro la 0 mimero de linhas por pagina.
Vocetcrnbem pede configurar 11 ne-count no meio do relat6rio, assim
Sintaxe das adi~6es 1i ne- s t ze e 1; ne-count para a i nstru ~60 p6ginas diferentes podem fer numercs diferentes de linhas de sclde .
report Para fozer isse, utilizec instnJ¢ o new-page (obordada mais cdlcnte).
A sintaxe das adifioes l i ne-s ize e li ne-count para a instrucic r eport e como Esta tcmbem pede ser utilizada para configurcra numerc de llnhcs per
segue : pcgina a ntes de quolquer scldc ser gerodo.

r eport ltne-st ze 1 l1ne-count j(t) .

onde:
e
1t ne-count mo ncrmalmente ueilizadc com rela t6rio s que sio visuali-
zados online. Por exemplo, suponha que a R/3 incrementasse a numera~a.o de
• t ,J e k sao con stan tes num ericas. Variaveis nio sio permitidas. pagina cada vez que voce pressionasse a tecla Page Do'NIl. Se 0 ususrio gerar
• i especifica a largura cia lista de saida (em caracteres). "
urn relatorio, rolar para a. pagina 3 e entao redimensionar a jaaela, ele ainda
estari na pdgina 3? Obviamente, 2. capacidade de redimension ar a janela torna
• j especifica 0 numero de linhas por pagina na lista de saida. dificil fazer regras sabre Dumeros de pigina online. vocep oderia tentar deixar
._ .;. ~:.

. ~p'rR£~D-A. EM 21 DIASABAP/4 DIA 15, TtoHCAS DE FllRliATAIiD, PAm 1 511


~.::~~'-'
INluSE ~
~ ~, . 0 wnanho de paginaiguala altura de janela quando 0 relat6rio for execuradc. • N a linha 1, li ne-size configura 0 mlmero de cclucas de safda co mo
~7,-:" - Mas se 0 usudric redimensionar a janela depois que a relatorio foi gerado , as 132. Isso configura urn mimero fixe de colunas de safda in de-
}' quebras de pdgina eao mais correspoaderao com a altura da janela, 0 usu drio pendentemente da largura da. janela de saida.. 0 usudrio pode urilizar
veri lacunas na salda e no inicio de paginas no meic da janela, Pan evitar esses a barn de rolagem na parte inferior cia. janela pan ver a sarda fora de
problemas em relat6rios online, utilize a valor pad rsc para 1tn e- count. visao a direita,
A Listagem 15.5 mostra urn programa de exemplo que ilus tra 0 usc de • Na linha 1, 1i ne-cou nt configura 0 numerc de linhas par pigina como
li ne-count el ine-size. 55. Iss o caus a urn p rob lema.quan do 0 ususrio role para baixo, que nie
ocorr eria se 0 valor padrfc pan 11 ne- count tivesse sido utilizado.
EHTU.OA~ LLstagem 15.5 li ne~ co unt eline-s ize Outre prob lema pod eocorrer quando 0 usudrio imprime a Iista, Se a
imp ressora eac imprimir exatame nte 55 liohas por pagina, 15 queb ras
1 report ltx150S line- si ze 132 li ne-count 55.
2 tables ztx lfc3. de pdgina sairao iaccrretas. N cvamente, uti.l.iundo 0 padrac 1ine-
3 select· 1I'"0Il ztxlfc3 order by l t t nr bukrs gjahr shbkz. count , esse problema pode ser evirado, porque 0 usuario especifica. 0
4 on change of ztxlfc3-1ifnr. mimero de linhas por pigim quan do selecionar uma impressora.
5 write I ztxlfc3-1ifnr.
6 . eoecn. Imprimindo 0 saida de lisla
7 on chanYI! of ztx1fcJ-gja hr .
8 wri te / 10 ztx l fc3-bukrs . Inicie a ScreenCam "How to Print list Output - agora,
9 endon. P ara imprimir a. saf&t da Listagem' 15.5, prime iro execute a relat6rio e
10 write: / 20 ztxlfc3-gjahr. entio siga este procedimento:
11 ztxlfc3-shbtz.
12 ztxlfc3~saldv . 1. Da.lista de safda, de urn cliqu e no batao Print ria barrade ferra mencas
13 ztx1fc3~sol11.
• Application. Se nao estiver disponfvel, escolha 0 caminho de menu
14 ztxl fc3-habnl. System->JJst->Print. A tela Print Scre en List sera exibida.
15 endsetect ,
2. No campo Output Device, digite a m
dOl sua impress ora. Voc! pode
obter uma lisa de codas as impressoras defini das para seu sistema
sllDI ~ o c6digo na Listagem 15.5 produz a ,aida mc strada na Figura 15.5. colocando seu cursor nesse campo e enta~ pression an do F4.
3. Coloque urn rnarca de sele~ao na caixa de selecao Print Immed.
FIgura 15 5
Este l! 0 efe/todo
4. De urn clique no batao Print na barre de ferrament as Application .
odi)60 Voc! volta para. a lista, e a mensagem Spool r equest (number nnnnn)
l me-count, created "aparece na parte inferior cia jace la.

Seu consultor de Basistcmbem pode definir uma maquino de fox como


urn dest ino de impressoo. Para envierurnrelot6rio porfox, esped flqce
Choose 0 FaxMachine 10 em vez de um Printer 10 no compo Output
Device.

As configura coes padrao de impr essora sao espec ificadas no seu perfil de
usudrio. U tilize 0 caminho de meou Profile- > UserDefaults para altere-las.
Essas configuracc es sersc utilizadas sempre que voce imp rimi r urn relat6rio.
512 APlENDA EM 1I DIA' ABAPI4 D~ 15,OOICAl DE FOWnl.io.PAJrrE 1 513

Se voce Ilio co locou a mara de seleCjao D elete After Print na tela Print
Pore envier urn rel0t6rio para multiples impressoros 00 mesmo tempo,
pecc para a seu consuher de Basis instclcr um poo l de impressorcs Screen List, a saida permanecerd no spool. Isso permite a voce reimprimir mais
(ere deve executer 0 rel0t6rio RSPOOO51 primeiro,e entao definir umc tar de. Isso ~ l1w se sua impressora ~ m.wta personalizada,
impressorc do tipo P - 0 poo l - utilizondo umo tronso¢o SPAD).
Entaa, co imprimir, voce escolhe esse poo l de impressora no lista de '(jgndo cobe<;jglhg5 e rOdg pe5 d e paging
impressoros. Essa funcionolidode esta disponrvelno versec 3.0F e mois
recentes. Pa r padrsc, a tela Print Screen List a.parece como a tfrulo a u ~bc.c;alho na parte
superior do seu relatorio. Voce pode eriar seus pr 6prios titu los au cabecalhos
utilizando urn destes dois metodos:
Tra ba lha ndo com 0 spool
Quando voce cia urn clique no batao Print, sua saidaeenviada primeiro pan.. a • Cabecalhos de paginapadrso
spo ol do R/3 e entio p:ara a sistema operacional. Se voce cac cclocou um a • Evento top-of -page
marca de se:1e~o em Prin t Imrned, a saida de lista e armazenada no spool do
R/3 - elanaa e enviadapara a spoo l do sistema cperacional. E aI fica ate voce Criando ccb ecclh os de p6gina pad roo
a. excluir au imprimircom a opc;ao de exclusao ativada (acaixade selecac Delete Uti!izar cabecalhosde paginapadrao E a maneira mais facil de criar cabecalbcs
After Print na tela Print Screen List), ou iite que envelheca a suficiente pan de relateric. 0 procedimento a seguir descreve essa maneira.
um tnbalho de limpeza exclui-la. Os tnbalhos de limpezasao agendadospelo
consultor do Basis; eles no rmal mente excluem a s arquivos de spool com mais
de 2 semanas. Para saber 0 tempo exato em seu escrit6rio, entre em ccntatc Esse procedimento rico funcionorO ~ voce chercr seu progremo e
tentor esse procedimento sem sa lvor suos o lte ~Oes primeiro. Quando
com seu consultor de Basis.
Para. ver a safda no spool. utilize 0 seguinte procedimento. .• voce escciher a cam inho de menu pare od ic::iono r os cobec;olhos,.em
vez disso voce ver6 umo ccixe de dielogo que indica que voc6 ~o
pede olterer um progromo do SAP. IS$O oc ontece se voce nCo fiver
SCiEEHo.M~ Inide 0 ScreenCam -Worlcing with the Spool- og~ra. sa lvo SUO$ olteroCioes, porque dessa forma no reclldc de est6 execu-
tendo urnc c6pio tempororio do origina l - urno que ccntem suos
a ltero<;oes. 0 nome dessc c6pio noo initio co m Y ne m Z, entao R!3
1. A part ir de qualque r tela, escolha 0 caminho de menu System- > Ser- noo 0 deixor6 eltere-le.
vices-> Print Requests. A tela Spoo l: Request Screen e exibida.
2. D igite as crite rios para localiz ar sua safda. Sell Id de csuaric (Inser ido ... lnicie a ScreenCom "How to Cre ate Standard Report Heo de rs from the Us!" .
no campo User N ame), e as campos Client e From Date em geral SCRE!HClM,. ogo"' .
sao suficien tes .
3. Pre ssion e Enter; A tela Spool: Requests e exibida. Ela contem uma I . lnicie a partir da tela AJ3AP/4 Editor: Edit Pro gram.
Iisu das ent radas que correspondem com 0 spool. 2. Se voce mer qua.lquer alterac;ao, salve seu relat6rio . Como men-
cic nado DO Ultimo quadro de Cuidado, voc e tkve fazer isso para as
4. Para exibir a saida para uma entrada, cclcque urn marca de s ele~io ao
lado deb. e entaD de urn clique no batao Display. passes seguintes funeionarem.
5. Para exibir a. safda para miiltiplas entradas, coloque urna mara de 3. Execute a relatorio. Vo ce entio ve a sa!da de lista.
selec;io ao lado de Multiple Entries ou utilize 0 caminho de menu 4. Escolha a caminho de menu System- > List-> List Header. Os cam-
Edit-> Cboose All. Entio de um cliqueno botio Display. A primeira po s de en trada aparecem na parte supe rior do relat6rio - om para a
entrada e ex.ibida.Para ver 11 pr6xima entrada, de um clique no botao cabe?1ho e quatro pan cabe<;alho. de cohm.a.
Next Spool Request na barra de ferramenus Application. Para ver a 5. Digite uma lista e as cabec;alhos de coluna n os campos de entrada em
entrada de visualizac;rao, de urn clique no botao PrevoSpool Request. branco.
6. Para imprimir uma entrada. de um clique no b otio Print. 6. D e um clique no batao Save na barn de ferramentas Application. A
mensagem Changed texts act i ve f r am next st art of xxxxx in
D~ l5,1lo<"" DEfO""TA\lo, PAm I 515
I
1 anguage E apuece. Isso signifies que voce veri as novos cabecalhos 4. Pressione 0 bon e Save para salvar suas alter:u;6es.
5. Pressione 0 botio Back. A tela AJJAP/ 4 Edito r: Edit Program 6 ;1
cia pr6xima vez que execurar esse programa.
7. De urn clique no botio Back duas vezes. Voce volta a tela ABAP/ 4 exibida. il
t,
Editor: Edit Program. 6. Execute seu program a. Seu tftulo e os cabecalhos novos aparecem na j!
8. Execute 0 relat6 rio acvamenee. Voce vera seus novas csbecalbcs na parte superior do seu relat6rio.
1
parte superior da said a, Os elementos de texro tambem podem ser acessados a partir cia ABAP / 4
Voce po de estar se perguntando: afinal, onde esses cabecalhcs sao ar- Editor: Initial Screen escolhendo 0 bcuo T ext Eleme nts, e en tia dacdc um
mazenados ? E mesma se nao estiver, voce descob~iri isso de qualquer jeito a
!
clique no bou"o Change. Voc! pede achar util revisera se~ao nos componentes
I de um programs de ABAP/4 neste ponto (veja a Figura 2.1 no Die 2, "Seu
segurr.

NOVO....
lEUO r
Os ccbecclhce qu e voce cccbou de fnsertr see ormozenodos com seu progromo
como elementos de texto. Um e lemento de teste e quolquer string de ccrectere
I
!
primeiro programs em AJJAP/4") .

FigurA 15 6
e &to tela c:ontem OJ
qu e exibido no soldo de ltstc . Tclvea c pc recc no parte superior como um ccbecelbc,
no meio (como umo string de corcetere que n60 vern do banco de dodos), ov no porte I elemenlos de IeldO
inferior Como um redcpe. A SAPgostc de proporcionor copocidodes de multiplos ldic mcs
em seve programos, de modo que quo lquer co isc que possc precisar ser tradlJlido (por
I idles eo Headers
podr60.
exemplc, ccbecelhcs de relot6rio) sl!!lio crmceeocdc seporodo men te do c6dige>-fonte i,
como elementos de texto. Esses elementos podem ser traduzidos sem o ltercr 0 c6d igo-
fonte . Neste s~60, estamos trotondo especiftcerrerrte dos elemen tos de texto de relctoric
i
e ccbeccthcs de cclu nc , mos tombem he outros que serna trotcdos mc ls odlcnte. !
L
Uma vez que as cabecalhos padrio SaO armazenados como elementos de
tex to, ·voce pede vs-los e mo difier- los a.cessando as elementos de texto do
pro grama. Estes eStaOccnti dcs na tela ABAP/4: Text Elements: Change Title
and Heading, mostr ada na Figura 15.6.
Utilize 0 seguinte procedim ento para ver, alterar au criar cahecalhos
padra o.

scmNCAM.... lnrcle 0 Scree nCam "How to Create Stonda rd Report Headers Via Tex! Elements"
,. a go ra.

1. D a tela ABAP/4 Editor: Edit Program, escolha caminhc de menu


0
Para reviser, na tela AJJAP/4 Text Elements: Change Title An d Heading,
Goto->Text Elements. A tela ABAP/ 4 Text Elements 6 exibida. se 0 campo List Header nio esciver em branco , ele esd, sendo uti.1izado como
o cabecalho. Se estiver em bracco, 0 campo Title eutilizado como cabecalho.
2. Escolha 0 bou o de op,ao Titles and Hea.d~rs.
3. De urn 'clique no ba tao Change. A tela Al3AF/4 Text Elem ents:
Change Title And H eading 6 exibida. 0 campo Title conrem 0 texto Traduzindo as elementos de teldo
do titulo que voce digit ou na tela ABAP/4: Program xxxxx A n ri- C riar d tu los e cabecalhcs como elementos de tex to permite que des sejam
butes. Se a campo List Header estiver em branco, 0 campo Ti tle e tnduzidos em idiomas estrangeiros, norma.lmente po r alguem especializado
exibido na p u te superior cia lisra. a campo List Header permite na tradu~ao de termos tecnicos au especlficos d.a. indus tria. Nesca secio , voce
anular 0 campo Title e especificar um cabecalho diferente do titulo pede experim entar isso se tiver uma ideia do pr ocesso.
do relat6rio . Insira urn cabecalhc de !ista ai e, na pane inferior da tela
nos campos Co lumn Header, insira as cabe~alhos de coluna. De urn
clique nos botoes na parte inferio r direita da tela para rolar para a
esquerda e para a direita. ate urn maximo de 255 caracteres.
DIA 15, TtOlICASOHORlllTAIio. ' AIUE 1 517
r
o pod nio da SAP e alinhar C esq uerdo 0 cobecolho no lista de scrdc.
Como resultcdo, 0 ccbecclhc noo pode ser centrollzcdo. Mesmo se
voce cenlrcllee-lc ma nuolmente colocondo espcccs no frente, ele
opo recer6 olinhodo a esquerda no sotdc.
I o funciandria que foz a troduc;ca normalmente utilize a tronsa<;co
SE63. Esta oferece urn conjunto de programos que permlteque tcdcs
os testes no sistema seicm trcdvzidos. Por exemplo, as descnce es dos
elementos de dodos, Indices, 1extosde seler;oa em progrcmos e os sim
par dionfe podem ser trcduzidos cqui. Comec;ondo no tela ABAP/4
Development Workbench, 0 ccminho de menu e Utilities-> Translo-
S(mNCAM~ Inicie a ScreenCom "Tronsloting Titles and Headers- agora. tlcn-c-Shcrt/Lcnq Texts.

1. A partir da tela ABAl'/4 Text Elements: Change Title and Heading,


escolha 0 caminho de me nu Gorc-e-Translation. A tela Target Lan-
Utilizando v~riaveis em ccbecolhos de pagina padnio
guage For Translati on e mostrada. Voce pode utilizar a.te 10 variaveis nos tftulos de pdgina padrac para urn
programa. Em seu programa, atribua valores as variaveis identificadas como
2. No campo Target Lan gua ge, escolha 0 idioma para 0 qual voce quer
sy-tvarO ate sy-tvar9. Nos tirulos, utilize os nomes de varisveis &0 a' &9
tr aduzir seus elementos de rexto. a idioma escolhido anteriormente
correspondentes as varaveis sy dentro do seu programa. Por exemplo, se no
pre cise ter sido ins talad o em sell sistema peIo seu consultor de Basis.
programa voce codifica sy-tvarO = I M I e sy-tvarl = I BB I , &Oseclsubsu tu ido
Deutsch (alemao) ~ instalado em cada sistema, porque e a linguag em
par AA e &l sera substiruido por BB no cabecalho.
Mestre para to dos os sistemas R/3. Portanto, escolha D (Delf.tsch).
Embora. cada varavel sy-tvar possa armazenar urn valor com ate 20
3. DS urn clique no bcu c Translate. A tela Translate Title And Headers caracteres, 0 comprimento de salda da varidvel e 2 por padrio. Isso signifies
Fo r Program xxxxx ~ exibida..Nessa tela esca, 0 nome do campo, urn
que, por exemplo, onde quer que &0 apareca no cabecalbo, exatam,en,te dois
campo Remark em.que a tradut or pode inserir comentarics, seguidos espacos sao reservados para. ~ valor de sy-tvarO. Se 0 valo r em sy·tvar O~ I A'•.
L
pelo texto original e urn campo de entrada. para a traducio. Quando aparece I A'. Se 0 valor e I AA I , aparecerd 'AAI • Se 0 valor e I AM I J aparece ~ AA I •
em branco, esse campo de entrada contem urn caracte re de subli- a comprimemo de saida pe de ser aumentado acrescentando- se pontos
nhado. no fim. da variavel de safda. Par exemplo, para aumentar de 2 pa ra 4 0
4. N os campo s que con tem urn caractere de sublinhado, digite a textc comprimento da sarda de &0; codiflque &0 .. (dois pontos foram acrescentados).
da sua tr aduljao para. 0 alemso. Se voce nao souber a idioms, simples - Para aumentar 0 comprimento da salda para 7 acrescenee 5 pontes ( &o • • ••• ) .
mente substirua to dos as.Ietras C par K e utilize diversas frases que Allstagem 15.6 contem um programa queutiliza ti'tulos de pagina p;.drio
terminem com Strudel ou que contenham a nome Wolfgang. contendo varifveis. A Figura 15.7mostra como codificar essasvarifveis na tela
5. De urn clique no batao Savena barra de [erramentas Standard. Se dyer ABAP/4 Text Elements: Change Title and Heading.
mais traducoes a faze r, vccs permanecera na mesma tela. De urn
clique no bosao Back para v.er a proximo conjunro. Quando nao EHTRADA~ Listagem 15.6 Voriove;, em cobe,olho, de peg;no podr60
houver mais texto a ser tradu zidc, 0 sistema 0 levari de volta a tela
1 report ztx1506.
ABAP/4 Text Elements: Change Title and Heading.
6. Agora efetue logon novamente, mas dessa vez digite 0 no campo
i Z tables ztxlfal.
,I 3 parameters: p)andl like ztxlfal-lanal default ' US1 •
Language na tela de logon. i, 4 sy-tvarO· sy-uname .
5 write: sy-datum to sy-tvarl.
7. Execute seu programa. as tftulos traduzidos aparecerao. Se exibir os
arriburos de programa, voce vera 0 titulo traduzido na tela ABAP/4:
,i . 6 sy-uzeit to sy-t varZ.
7 sy-tvar3· pJandl.
Program attribute xxxxx. a select * from ztxlfal where 1andl • p_landl.
9 write: I ztxlfa.l·l1fnr. ztxlfal-namel.
Todas as tra ducoes sao armazenadas em urn pool de propostas, do qual 10 endselect ,
voce p ode recupe rar traduqoes an teriores de uma palavra ou frase . Se voce
inserir uma tradu<.iao que difere das armazenadas no pool, 0 sistema automa-
ticarnente lhe oferecera as tradufioes anteriores. Voce entaa deve salvar a nova
au selecionar uma anterior.
OL\ I~ rtCHlClS OEFORlIATl\AO, PARTE 1 I 519

Flgnrn 1 5 7 • Na Figura 15.7, &0 . . . •. •.. .. indica o nde 0 valo r de sy-tvarO apare-
A leTa N3N'/4 T~ .cera. Os pontos aumentam 0 comprimento cia safda da variavel de 2
EletTWMIs: Otonge para 12. &1 • ••• • • •• indica onde 0 valor-de sy-tvarl aparecera, &2 ••••••
Til/I! andHeading
portJ 0 progroma
indica onde 0 valor de sy-tvar2 aparecera e &3. 0 valor de sy-tvar-S .
" ztxJ506. Os pontos .aument am os comprimentos de safda para 10, 8 e 3,
respecrivamente.

Criando cabe~a l h os de pagina manuais


Cabecalhcs de pfgina padrgo sse faceis de criar, mas tambem tem algumas
limita~oes. Eles sao limitados a um a linh a para 0 cabecalhc de pfgina e a quatro
linhas para os cabecalh os de coluna. Urn m aximo de 10 variaveis pode ser
i utilizado, ada com urn comprimeoto minima de dois caracteres. 0 cabecalho
6 sempre alinhado a esque rda e as co res sio padrao e eac po dem ser alteradss.
il Tteulos manuais, entretanto, nao tern essas limita~5es.
, Pa.ra ~.titulos manuais,voce precise
I
i• • Desativar cabecalhcs de pagina padrio.
• Utilizar 0 -eveaeo top-af-page para criar ueulc s personalizados.
o c6digo na Listagem 15.6 produz esta safda: I Para desa:tivar as atulos padrio de pdgiaa, voce adic ion a no standa rd page
i headi ng ao fim cia instnl~ao de relat6rio.
sliol ~
KEHGREENWOOO ' 1998/ 05/ 05 19,40,Ja
1
Country Code: US Um evento no ABAP/4 ~ como uma sub-retina em o utros linguogens. Trctc-se

I
NOVO ltrr...

1040 Mot her baarns Inc.


lUIO r de umc se¢o independente do c6d igo; elo executa umo torefa e entOo retorno
para 0 ponto de chcrnedc. Entretonto, 0 0 ccnt rcrlc dos svb-rctincs, voce nco codifico a
1080 Si li con Sandwich ltd.
chomodo pora um eveotc. Em vez disso, 0 sistema adono 0 evento po re vocA quondo
1090 ConSlIlle Inc.
ZOOO Moni tors and More ltd . umo condi«;ao espedfi co surge.
VI
V2
Quanti t y First Ltd .
OverPriced Goods Inc.
t o evento t op-of - peqe e acion ado quan do a primeira ins truliao write 6
V3
V4
VS
Fl uf f)' Bunni es Lt d.
Moo l 1ke a Cow Inc.
.

WolfJnan Sport Accessories Inc. I executada. Antes de quaisquer valcres serem escriros na Iista, a sistema ramifica
pan 0 c6d.igo qu e se segue a to p-af-page e executa. Entao ele retorn a para a
instro~o wri t e e escreve os valo res. A Listagem. 15.7 e a Fi gura 15.8 ilustram

I
V7 The Breakf ast C1 ub Inc .
esse processo.
• A linha 3 define p_1andl e solicits ao usudrio urn valor.
EHIDOA~ Ust agem 15.7 0 evento top-at -page
• A linba 4 atribui 0 Id do usudrio arual a sy- t varO.
• A instru~ao writ e C Ol linha 5 move 0 valor de sy-dat ue para sy-t vert .
Urn a instru~ao comurn de auibuic;ao (u tilizan do = ) teria movido 0
valor sem form aci-Io. Utilizar write faz com que 0 campo seja fo r-
i! 1 report zt.d 507 no standard page heading.
2 data fl( 5) val ue 'lni t'.
3 11 · 'Title '.
4 writ e: I 'Hi' .
matado co m separadores de acordo com 0 perfil do usuaric.
• A linha 6 fermata a data/hera atual e mov e pan sy- tvar2. , top-of.page.
5

7 wnte : I ' My ', f1.


• A linb a 7 atribui 0 valor que foi inserido pelc usuario a sy-tvar3. 8 u11ne .
• A s linhas 8 a 10 escrevem urn relat6rio simp les de fabricantes.

"j.
c.....
r7ti:
.A-
,.0.
----
:.~

520 APIEHDA EM21 DIASAWl<


IlIA ,s,r!a<IClS DE FOiMATA(lD. PAm1 521

SAiD.l~ A Figura 15.8 mostra a. safda para a Listagem 15.7. ! Os relat6rios em late normalmente sao impresses e assim terj o urn
tamanho de pagina definido que nfo se altera depois que 0 relat6rio ~ criado,

ANiusE ~ • Na I.i.o.ha I , a instru~io repor t contem a adic;io no standard page


!i dessa forma. ecrac des po dem ter rodapes de pagina.
Para. eriar os rodapes de pdgina voce precisa:
head; ng J assim cabecalhcs padrao Dia sao escritos,
• A linha2 define fl com o comprimento de caractere 5 e lhe atribui um
valor inicialde I l oit I .
I • Reservar espacopara 0 rodap' na pane inferior da p'gina utilizando a
adi~o 1i ne-count na instru~o rep ort.
• Do evemo end-of-page.
• A linha 3 atribui 0 valor •T1 t 1e ' para fl.
Para reservar espa~o paraseu rodape, voce pode codific ar 1i ne-c cunt n (m)
• A instru~:io write na linha 4 aciona 0 evento top- cf-peae na linha 6. na instru~ao rep ort. onde n ea mimerc de linhas par pagina e me 0 namerc de
As linhas 7 e 8 enti a SiD executadas, fazendo com que My Tit l e seja linhas reservadas para 0 rodape, Voce nio vai querer codificar muito n. porque
escrito na primeira linha da lists, seguido por urn sub linha do (escrito o usufric deve ser capaz de especificar 0 numero de linhas po r pagina quando
pela ins trulii o 1I1i ne n.a Iinha 8) . 0 processamento entia reto rna para imprimir 0 relat6rio. Portanto simplesmence ignore-o e digit e report zxx
a instrur;io wr t te na linha 4 e Hi ~ escrito para a linha 3 da lista de safda. l ine- count (m) . · .
• D epcis que linha -4 foi executada, 0 progr:una termina e a saida e D urante 0 processamento de relatorio, sy-pagna coneem 0 mimero arual
moscrada. de pfgina e sy-l i nna contem 0 admerc atual da linha qu e esta sendo escrita.
Codifique end-of-page na part e inferior do seu program a, como mos-
Figura 15 8 trado na Lista gem 12.8. As instrucdes qu e se 5eguem a end-of- page sio
A solda do l.istcgem executadas ant es de cada nova pagina ser iniciada. Uma nova pagm a e abena
15.7.
quando uma instru~:io write e executada e se a saIda nao se ajustar na pagina
atual Par exemplo, voce pe de ter codificado report zxx line-count (3)
deixando Ires linhas_para 0 rodape e 0 u sudric pode ter especifieado 60 linhas
1 por pagin a, A Orea de rodape pcrtanto fiea dentro das linhas 58 a 60. Se voce
acabou de escreve r a S;t! linha, a p r6xima instruliio wr i te para uma nova linha
acionaci 0 evecec end-of- page) seguido par uma quebra de p agina, a eveneo
top-of-p age e entjic escrevers a saida da pr6xima pagina.

Tec:nicamente os eventc s podem opo recer em quolquer ordem ou


pOsic;oodentro do sec progroma . Porenquo nto, codifiqu~osconforme
mostrcdo. Um capitulo scbseqcente explicorO mois sabre como ccdl-
ncar eventcs .

EMTiADA ~ Lista g e m 15.8 as eventos tap -of -page e end-of-page


Note que 0 valor de f1 escrito na pane supe rior cia psgioa e 0 valor no 1 report ztx1508 line-count 20{3) no st andard page heading.
memento em que a primei ra inStfUljaO writ e foi dada, nio 0 valor n o come~o 2 do 80 t i mes .
do program.. 3 write: / 'Please kid me ' , sy- i ndex, 'ti mes ' .
J 4
5
enddo.
Criando roda pes de p6gina 6 t op-af-p age.
C omo discutida am erionnent e, depois que urn relat6rio online foi gendo, 0 7 write : / ' CONFIOOOIAL' ,
usu ario pode alterar 0 tamanho da sua janela. Para eviur quebras no melo cia 8 / ' Thi s page begins wi t h number' . sy-1ndex.
pagina, os relat6n os online sempre consistem em uma unica pagina virtualmuito 9 uli ne.
10
longa, de modo que ter radapes nao faz muito sentido porque haven a s6 urn.
-APRE HDA EM 21 DIAS ABAPH O~ l s,r!CNIC.lS DE RJRMATA(Ao, PARTE 1 523

11 end-ef- paae. escritas no rodape. A inst rucao top-of -pace na linha 6 eneso e execu-
12 write: I 5Y-II1 tne, tada, e as linhas 7 a 9 escrevem 0 ttrulc da pagina na parte superior da
13 I 'The nl.ll1ber of kicks at the t op of the next page will be ",
proxima pagina. Entao ela retoma 0 controle para a linha 3 e a
14 sy- t ndex,
15 I ' Copyr i ght 1998 by t he ALA (Abus e lovers Of America)'. instrul$ao wr; te escrevea quarta linha na pagina 2 .
• Nenhum rodape de pigina eescritc na par te inferior da ultima pagina.
A primeira. pane da safda para a Listagem 15.8 apar ece como segue:
Utiliza ndo a instru~cio reserve
As vezes, voce pede precisar escrever de maneira
SliDA ~
CONFIOEKTIAl agrup ada informacoes re-
This page begi ns with nunber
~- - -- - - - - - - - - - - - - - - _ . - . _ - -- -_ ..---------------_..-----------_..--- Iacionadas que se distribuempor vdrias linhas.Par exemplo, vocepede escrever
P1 ease k1ck me 1 times o mimero e 0 nome de fabricante em uma linha., seguidos pelo endereco na
Pl ease [(1 ck me 2 times proxima linba, e as ndmeros de telefone na linha seguinte. F aria sentido manter
Pl ease k1 ck me 3 ti mes
times
essas linhas juntas como urn grupo na saida,e impedir qu e elas sejam.divididas
P1 ease ki ck me 4
Ple ase kick me 5 t imes em duas paginas.
P1 ease k1 ck me 6 t imes U tilize a instrucfo reserve para manterum gropo de linhas juntas na lista
Ple ase kick me 7 times de saida.
Pl ease k1ck me 8 t11OO5
Pleas e kfek me 9 times
P1 ease k1 ck me 10 t imes
P1ease k1 ck me 11 t1.Jnes Sintaxe para a iristruC;60 r eser ve
P1ease k1ck me
P1u se k1 ck me
P1ease k1ck me
---_..-----_ --_
12 t imes
13 times
14 ' t imes
--- --.------------_ - _-.-----
-
CII
Z
rese rve n 1 tnes .

onde :
The nlll'ber of kicks at the top of the next page w1 11 be
Copyri ght ~998 by t he ALA (Abus e Lovers Of hnerica)
CONFJOENTIAl
15
S
m
• n eum literal numericc ou variavel.

This page begi ns with number 15


T Quando a. instrucfo reserve e executada, 0 sistema verifica se ha n linhas
Please kick me 15 times disponfveis na pfgina atual. Se houver menos qu e n linhas sobrando na pdgina
Ple ase k.ick me 16 t imes atual, uma quebra de pagina e gerada. Isso aciona 0 eventc end-of-page (se
Pl ease ki ck me 17 times
Please kick me 18 tfmes existir), seguido pelo evenec top -of-page (se existi r) .. A instruCja6 wr; te
seguinte comeca na pme superior cia nova pigina.
Se pelo menos n linhas estiverem disponfveis qu an do a instruCjao reserve
INllIIE~
• A linha 1 suprime a u sa de cabecalhcs de pdginapadrso porque n6s
s6 queremos que os cabecalhos manuais de pdgina sejam mostrados. for executada, a c6digo 113.0 faz na da.
Elatambem configura 0 mimero de linhas na area de rodape como 3. A Listagem 15.9 mostra urnprograma de exemplc que util iza a instru~a.o
o mimerc de linhas por pagina 6 configurado como 20 para que r eserve.
possamos rester 0 rodape de pagina para exibicsc online. Normal-
mente urn relaeorio online nao especifica 0 mimero de linhas por ENIRADI~ Listagem 15,9 Ainstru<;oo reserye
pagina. 1 report ztxl509 line-count 18(2) no standard page headfng.
• Na prirneirapassagem peloloop, alinha2 acicna 0 evento top-of-pace Z tab l es ztxlfal.
na linha 6, fazendo com que as linhas 7 a 9 escrevam duas linhas de 3
cabecalhoseguidas por urnsublinhado. 0 contrcle retcrna paraalinha 4 sel ect .. from. ztxlfal.
5 reserv e 3 1; nes .
3 e a instruc;:ao wr; te escreve a quarta linha na lista de saIda.
6 wrft e: / ztxlfat-lifnr , ztxlfal-name l.
• Depois de fazer 0 loop 14 vezes, a 15L instruc;:aa write aciona a 7 / 2t xlfal -stras . ztxlfal -reg1D, ztx l f al-l andl .
instruc;:ao end-cf-paqe na linha 11. As linhas 12 a 15 sao executadas, 8 / ltxlfal-tel f l.

"i :
~%£.~~-
524 APREKDA EM 21 DIAS ASAP" D~ lHECHICAS DE FOiMATA\AD. PAm1 525

9 skip .
10 endsel ect ,
Resumo
11 • Voce pode criar said: gdfica simples na lisa utilizando as a.di~6es as
12 top-at-page. symbol, as i con e as line na instnlc;:ao write. Quando utilizar estas
13 wri te I Vendor Report '.
adic;:oes. voce deve utiliza.r a instruc;ao include pa.r.a trazer defini~oes
I

14 ul 1ne.
15 de sfmbolo,{conee caractere de desenho de 1inha. para seu programa,
16 end-af-page. • Utilize aadiliao 1i ne-s1 ze na instrucio report para configurar a largura
17 uf tne,
18 write: I 'Report'. sy-rep1d. ' Created by '. sy-uname .
da lista de saIda.. Utilize a adi~o 1i ne-count para configurar a mimero
de linhaspor pfginana lisra de safda, Voce tambem pode utilizl.-Iapara
especificar 0 niimero de linhas reservadas para a rodape, Voce mo
o c6d.igo IU Listagem 15.9 produz a seguiote saida: pede utilizar variaveis na iostnl~o report, entdo utilize a instruc;ao
new-page para essas adic;:6es se quiser configurar esses atributos em
siiDI ~
Vendor Report
tempo de execucgo.
1000 Par t s Unlimited
111 Queen St . • Para. mar cabecalhos de pfgina,vocepode utilizar tanto urncabecalho
O' "
416-255-1212 de pa.gina padrac como a instrUc;ao top-af-page. .

1010 Industrial Punps I nc. • Ate 10 variiveis podem ser utilizadas em cabecalhos de pigina padrgo.
1520 Avenue Rd. ON CA Os valores atribufdos is variweis sy-tvarO a sy- t var 9 substituem &0
416-535 -2341 por &9 na lista. Utilize pontos para estender 0 cc mprime nto cia safcia
1020 Chemical Nation ltd. dessas variaveis de substituicio.
123 River Ave. ON CA • Para suprimir a safdado cabecalhc padrao de pagina, utilize a adi,iio
416"'51-7787
no standard page headi ng na msrruc;:ao report.
• Se voce inc1uir 0 evento top-af-page em seu programa, ele sen
---_....-._. ------------_._.----_.-.. -..------- acionado quando 0 primeira instruc;aa wri t e for executada, As ins-
Report ZTX1209 Created by KEHGREENWOOO trulioes seguintes sio executadas, e enta~ a controle retorna para a
Vendor Report mstrU/iao wri teo
1030 ChickenFeed Ltd . • Utilize 0 eventc end-of- page para criar rodapes. Voce tambem deve
8718 Wishbone lane AB" utilizar 1i ne-ceuet na instrU~o report ou new-page para especificar 0
393-565-2340 admero de linhas e reservar espac;:o na pagina para 0 rodape.
1040 Motherboards Inc . • Utilize a instruc;ao reserve para manter um gropo de linhas juntas na
64 BitBus Blvd. MA US lista.
617·535-0198

P&R
• 'lit... A linho 5 determine SI!: he espcco .po re mots fres li~hos no ~9ina otu~1. Se
AMAUSfr hewer, 0 c6digo noo feznadoe a linho 6 escreve as Informo i70es defobnconte
o Qual e 0 metode preferido para erial' titulo, de clientes -
nas proximos linhos. Se nao hoover, 0 c6digo ad ona 0 eventc end-of-pace Oinhas 15 utilizar vmaveis sy-tvar au 0 evento toP.-of-plge?
o 17) e entoc envic umo quebro de pagino. Ele, entcc, odona 0 eventc top·of-page
(Iinhos 11 c 13). Depots, 0 instruc;oo write no linho 6 e executcido e os linhos 560 escritos
no parte superior do novo pogino. o Como a evento top-of-page e mais flexrvel, a m aioria des pro-
gramadores prefere utilizar esse metoda. Desde que voce utilize
simbolos de texto para seus Iirerais de texto , ambos podem ser
mduzidos enti.o Ilia hi qualquer vantagem para variaveis sy-tvar.
"
526 APlEN DA EM21 DIAS ABAPI4

Workshop
o Workshop cferece duas maneiras de voce verificar 0 que aprendeu neste
capitul o. A sCliao Tes te ofere ce pergunt.s pan ajudar a solidificar sell emendi-
menta do coareudc abordado e a seljao Exerdcio permire que voce pratique 0
que apren deu. Voce pe de enccntrar as respostas as perguntas do Teste e aos
exerdcios no Apendice B, "Respastas is perguntas e aos exerclcios".

Teste
1. Quais sao as treS adi<;oes gr.Hicas que sao utilizadas com a instru clo
write? Qual instruc;:ao nm bem deve secieclufda a fim de escrever as

16
adic;6es graficas? Dc um exemplo de uma instruc;:ao include.
2. Qu ais sao as duas adic;:6es que sao ueilizadas com a instruc;ao report
pan ccc trclar 0 tama.nho da pigina de saida? A variivel urilizadapara
as duas adif:loes pede ser vanavel?

Exercfcio 1
Escreva urn programa qu e exiba as seguintes simbolos: quadrado, losango ,
cfrcu lo, ~culos, lapis, telefon e, nota e pasta. Tecnicas de formatasao,Parte 2
Objetjvo s do capitu lo
AItlUSE~ Depois de conduirestecapitulo, voce sere copaz de

• Utilizar as instru!joes de formataqao new-l i ne, new-page, s ki p, back,


positi on e set bla nk lin es.
• Envi ar a safda para 0 spool utiliz ando new-page pr i nt ,

InstruC;6 es de formatac;60 de Iista


H oi viria.s ins~!ioes comumen.t·e necessaries panl forma tar uma lista:
• new-line
• new- page
• ski p
• back
• positi on
• set blank Tines

http;/I_ .campl,Is.com.br
-- -

528 APlEHDA EM 21 DIAl ABAP/4 D~ 16,OOICAS DE fORMATA(Ao. PARTE 2 529

1000 1994 A 0 .00 1, 000.0 0


Utiliza nd o a i n stru~a o new-J j ne 1000 1995 A 0 .00 1. 500.0 0
Utilize a instru<;ao new-l i ne para [azer com que a safda cia proxima inStru~o 1000 1996 A 1, 500.00 0.0 0
1020 Chenical Nati on Ltd .
write cornea: em uma no va linha. Diferentemente de sktp au wr ite l. in- 1000 1995 A O.DO 2.000. 00
stru~6es consecutivas new..1ine nao fazem com que urna linha em branc o 1000 1996 A 0 .00 0.00
apareca na Iista de saida. 1030 Chi ctenreec ltd .
1040 Mot her boards Inc .
1000 1990 A 100.00 3 , 000 .00
Sintaxe pa ra a instru~a o new- J i ne 1000 1997 A 100.00 1,5 00. 00
'!!! new-line [no-scroll ing]. 2000 1997 A 0 .00 500.00
300.00
2000 1998 A 1.000 .00
Z 3000 1998 A D.DO 2 , 400.00

S AIliuSE'" AS linhos 7 e 8 cpresentom defclhes de fcbricontes e seo mais largos que a tela.

...
m

A adic;ao no-sc rol l i n9 blo queia a proxima linha naquele lugar. A rolagem
, . Rclcr pare c direitc permite a voce ver a porte direitc des linhas, mas 0 nome e 0
numero de fobriccnte peerrcnecem dentro do visualizc¢o . Is.so acontece porcue a instru¢lo
writ e no llnhc 5 e precedido perc instrut;co new·1 ine no-scrol l i ng no linho 4.

horiz?oi2.l DaO tem nenhum efeitc nas linhas que Ioram bloqueadas des sa Utilizondo a instru~Qo new-page
manetra, Utilize a instnujio new-page para
A Listagem 16.1 ilustra 0 usa cia instrucao new-Iine.
• C aus ar a sU'da cia seguinte instrU'iiO write para comec;ar em uma nova.
EH11101~ Lis'C1gem 16.1 A instru¢o new-line
pigina. Instruc;o es new-page consecutivas nao geram em paginas de
branco.
1 report :tx1601 Hn e- s1ze 255. • Aciva.r e.desativar tirulos e cabecslbcs.
2 tables: ztxlfal . ztxlfc3 .
3 select 'It fran ztxlf4l. • Variac a contagem de linha au tamanhc de linha de uma pf gina para a
4 nev-l tne na-scroll ing. seguiate.
5 writ! : ztxlfal..l1fnr, ztxlfal -namel. -t h1s l i ne won't scroll right
6 select'" f rom zt xl fc3 where lifnr • ztx1fal-l1fnr. • Ativar e desarivar a impressio.
7 write : / 14 ztxlfc3-bukrs. ztxlfe3-gjahr . zt xlfc3.s hbkz,
8 40 ztxlfc3.saldv, ztx lfc3-so 1n . ztxlfc3.h abnl . Sintcxe para a inslru~Cio new-p age
9
10
endsel ect ,
t ndstl ect.
-
III
Z
new·page Inc-t t tl e : w1th· t i tl e]
[no- head1ng : wi t h- head1 ng]
[l i ne-ccunt 0 nem)]

o c6d.igo na Listagem 16.1 produz a seguinte saida : S [line- s iz e k]


[pri nt on : pr i nt off]
1000 Parts UnHllibd
1000 1990 A
1000 1991 A
1000 1992 A
1,000 .00
0.00
1.000.00
500.00
5 .000 .00
11.000.00
...
m
ande:
• n,me k sao vanaveis num ericas ou Iieerais.
1000 1993 A 0.00 10 ,000 .00
1000 1994 A 0 .00 1. 000 . 00
1000 1995 A 1,000 .00 1. 150.00 Os seguintes ponte s se aplicam:
1000 1995 Z 0 .00 9,000 .0 0 ' • new- page pode serutilizad a em qualquer lu gar no programa. Voce:pede
1000 1996 A 1,000.00 50.00 0.00
1000 1996 Z 5.000.00 0. 00
utilizi-l a mes mc ante s da primeira instru'i3.0 write para ca nfigurar as
1000 1998 Z 4.00 0 .00 0 .00 caracterlsticas da said a de lisea. Com6 aceita variaveis, ela ~ mais
3000 1998 A 0.00 10,000 .00 £lexIvel que adic;oe s semelhantes na instnl'iio repo rt .
1010 Indust ri al PI.IftPS Inc.
APIElfDA HI 21 DIAS ABAP/4 DlA lH EcHICAS OfroRJIATA\!O, PARTE 2 531

• no-t itle desativa 0 titulo padrsc nas p:iginas seguintes. (0 titulo e a Figura 16 1
primeira linha dos cabecalbcs padrac de p:igina.) with:"title ativa-a. A tela Prim
Parameters.
• nc-he adt n9' desativa os cabecalhos-padrjo de ccluna para. as p:iginas
seguintes. wi t h-headi ng os ativa..
• 1ine-count configura 0 mimerc de Iiahas por pdgina e 0 mimero de
linhas reservadc na parte inferior de cada p:igina para urn rodape.
Qu alquer urn desses valores, ou as dais, podem ser especificados. Issa
foi abardado antericrmente oeste capitulo.
• 1t ne-stz e configura. 0 nd mero de colunas de saida para as paginas
seguintes. O.padrao ea largura atual de janela,
• pri nt-on faz com que a saida da.s instrU'Soes write seguintes sejam.
enviadas para 0 spool, em vez da lists. Os usuaries mo veem essasafda a
menos que olhem no spool. (Visualiza'Sao e impressfo cia sarda de spool
que foi abordadamaiscedo oeste capfrnlo.} print-otf fax 0 eontriri o.
• Instrucces new-page consecutivas nao geram piginas em braneo.
• new- paqe nao aciona 0 evento end-ct-pace. Portanro, urn rodape nao
sera impresso na parte inferior da pagina atual se voce emitir a ins-
tru ~ao new-page.
Sintaxe para a instru~ao new-page print on

-
til new- page print on
[no dialog]

~
Se V'Cld quiser fazer uma quebrc de p6ginc e adonar 0 evemc end-of- [new section]
page, c:odifique linhas sy-lind reseoes. sy-I i net ceotem 0 numero atuol (1nned1atelr tmtdflog]
de linhos per p6gino. A scldc do pr6:.cime write cporecero no porte (destination destfd]
superiorde uma novo p6ginc e 0 eventoend-cf-peqe sere odonodo de [copies nt.llJCopfes ]
cntemec, fozendo com que urn rodope de p6gino sejo c:riodo. m [la yout layout~d]

T [1ht name
[sap cover page
lt stnane]
caverpagejlag]
Utilizando new-page pri nt [cover text ·tttle]
(departlll!nt do!'p't]
A.s vezes, pre cisa-se de urn relat6rio que tanto escreva para a.lista de safda e ao [receiver n c ievernGl'llt]
mesmo tempo enviea salda para a impressora. Por exemplo, voce pede desejar [keep i n spool ktepfIag]
[dataset expi ration ntmfoys]
escrever urn re1at6rio que mostre urn resume para a usudrio online enquanto [11ne-ccunt l tnes~rpage]
envia um relat6rio de detalhe pan a impressora. Utilize new-p eqe pri nt on para [l1ne- siz e nJ.IllCo ltmu]
fazer isso, A safdade todas as instrucces wr1 te que seguem 'new- pace pri nt on
nao apa recerf na lista, Em vez disso, sera enviada para 0 spool. A instruiao onde:
new-page pr i nt off elimina esse efeito. A safda de todas as inst rucoes wri te • Quaisquer names em itllico no c6digo de pro cedimenro podem ser
seguintes serao n ovam ente vistas na Iisra, urn literal ou uma variavel.
Toda vez que new-page print on e executada:
• 0 sistema exibe a tela Print Parameters para o usuario {mcsrrada na
Figura 16.1). Ela soliciraao usudric pargmerros como 0 ID de impres- O s seguintes pontes se aplicam:
sora e 0 formate de saida (Output Format). • Utilize no di alog para suprimira exibi~io da tela Print Parameters que
• Se, na tela Print Parameters, houver uma marca de sele'Sao no campo soliciea ao usudrio parametres de impressao. O s padroes do usuario
N ew Spool Request) ela eria urna nova solicita~ao de spool. Isso Sao utilizados em vez disso. Se 0 usuario nao civer preenchido urn ID
significa uma nova lista separada no spool.
APREMD A EM 21 DIASABAPI4 D~ lU!OiICAS DE FeRMATA"', PAm, 533

de impressora.em seus padrc es, a tela Print Parameters sed mosrrada Parametres a.dicionais sic documentadas na documentaci o de palavra-
mesmo qu ando voce esp ecifi car no di alog . chave de ABAP/4.
• Utilize new se cti on para reiniciar a numeracio de pf gin a, co meqando
novamente em 1.
Qua ndo envlc a scfdc diretomente para 0 spool lJfilizando new-page
• Utiliz.e hrmediate ly ' x' para fazer com que a liSta seja Impressa pri nt on, voce tombem pede utilizer duos instru¢es odicionois. A
imediatam ente. 0 padrio e 1mned1ately , ', que armazena a Iisra no instrvt;oo set margins permite que voce controle a s morgens durante
spool. .a impresseo. A instru¢ o print-control possibilito 0 envio de c6digos
de controle de impressdc diretomente pora a impressora. Utilizando
.• Utilize dest1 nati on para especificar um ID de impressora. print -cont rol, voce pode controlor qvclsquer caroderisticas do
impressora, como CPI (carodere par polegoda), l PI [linhos por pole-
• Utilize copies para especificar a mimero de copias a imprimir.
gada) ou fonte. Essos instn.u;5es n50 tem nenhum efeito em listos
• U tilize 1ayout para especificar um layout de im presson . 0 layout de impressos via a batao Print ou via a ap¢o de menu List Printj elcs s6
impressora determineas caracterfsricas de impressora como a mimerc ofetom Ilstcs impressosvia new-page pr1nt on. Eles nao inte~m no
de linh as per pagina e 0 mimer o de co lunas p or linha. Vace pe de ver moneira como a listo Ii exibido no tela. Veja 0 dacumenta¢ o de
pclc vrc-chcve de ABAP/4 pa ra mois detclhes .
. as layouts de impresson definidos para s~ instalacao, imprimindo
urn arquivo e olhan do no ca mpo Format na t ela Prin t List Output.
A Listagem 16.2 ilustra a usa cia inStruliio new- page pr i nt.
• Utilize 1i st name para especificar urn nome para a lista enquanto no
sp ooL Voce pede utilizar isso para procuri.-Io mais tarde DO spool.
!HIDIl,\~ Usl a g em 16.2 A instru¢o ne.-page pr int
(Digite esse valor no terceir c cam po ao lado de Spool Request Name
on the Spool: Request Screen) . 1 report ztx1602.
2 ta bl es zt xlfal.
• U tilize sap cover page para. controlar a impressao de uma pagina de
3 pari5n!ters: prt_1d --l1ke estwo·spooldest obligatory.
capa com a salda, Uro valor em braa cc suprim e a pigina de capa,
~
enquaoto I x' faz com que uma delas seja impressa e '0 1 indica que as 5 new-page pr1nt on
co nfigur.u;6 es de impresso ra devem determinar se um a pa-gina de capa 6 no dialog
sera ou nao impressa. 7 i Jmll!dia t el y ' X'

• Utilize cover text para especificar a titulo a ser imp res so na pagina ,
8 destinatfon prt_1 d.

de capa. i.o uhct • from zulfd .


• U tilize department para especificar uro ID de depanamento a ser 11 write: I ztx1f1.l· 11fnr.
12 Mdse1ect .
impressa na pagin. de capa..
13
• Utilize recet ver para especificar 0 nome da pessoa que deve receber 14 new·llage pr int off .
o relat 6rio. E~e ~ im pressa na pdgina de capa. 15 wri te: I sy- dbcnt , 'li nes sent t o printer'.

• U tiliz e keep i n spool IX' para fazer com que a solicital;3.0 de spool
perm aneca n o pr6 prio spool depcis que 0 relat6rio fo i impresso. IS50 o ccdigc na Listagem 16.2 produz a seguinte saida:
p ermite ao ususri o reimprimir a lista sem executa r novamente a 23 lines sent to pri nter BOS4
rela.t 6rio.
• U tilize data set expi ra t i on para especifica.r quantos dias a sclicitscac • A linha 3 solicit a ao usuario urn ID de impresscra. 0 campo estwo-
de spo ol deve pe rm anecer no spool. Quando a solicita~o expirar, ela spooldest tern urn relacionamento de chave estrangeira com a eabela
sen exclulda do spool. que contem os IDs de impressora, endc uma seta p ara baixo e exi bida
• U tilize 1i ne-cou nt e l i ne s1ze para espec ificar 0 numero de linhas
4
no campo de en trada. 1550 permire ao usuano exibir uma lista dos IDs
por pagina e 0 numer o de colunas par linha. de impressora disponiveis.
534 A/ i ENDA EM21 DIA l Am/4 IllI. 1~ OOIC.l5 OfFOiMATA(lD. PAm 1 I 535

• A linha 5 redireciona a safda para as ins truco es wri te subseqUentes. no Sem quaisque r a.di'io es, s ki p geea umalinha em branco. Slci pn gera n linhas
dialog suprime a. exibiljao cia tela P rint Param eters. Em vez disso 0 5 em branco . Se n for men or que 1, n enhuma linh a em branco sera geuda. ski p
parimetros sao torn ados do perfil de usuario e des parimetros espe- no fim da pdgina atual causari uma quebra de p~ ski p gerari .l.i.nhas em
eificados nas linhas 6 a 8. tnmedt at ef y ' X' faz com que a safda seja branco depois de qualquer instruliio wr i te, na parte sup erior da prim eira
impressa imediatamente. A linha 8 passa 0 ill de impressora inserido pagina e na parte superior de qualquer pfgina comecada pela instru~ao new-
pelo ususric na tela de sele~o. page. Ela nio gerardlinh.as em branco no cornelia de qualquer au tra nova pagina,
• A safda das linhas 10 a 12 eenviada diretamente para a impressora. Ela nem no fim da Ultimapagina da lisra, Por exemplo, se houver espaliopara mais
naa evista na lisra de saida. duaslinhas naparteinferior d.a pagicaarual, ski P 5 gerariduas linhas em branco
o.a parte inferior da pdgina atual, mas nenhuma na pane superior da pr6xima
• A linha 14 remove a indire/iao EF, e a sa1d~ das instrucoes writ e pfgina, Isso acontece porque a n<;JV3. pfgina nid era a primeira e nao foi gerada
subseqiient es aparece M Iista.
por uma instruliao new-page.
Exibindo a documentcccc de pa lavra-chave de ABAP/4 para
new- page Ppint Se voe! quiser um rcdcpe no ultime p6g ino de seu relot6rio, codifique
Norm almente, a ajuda Fl naomc srrard a do cumen tacio new-page print. Para ski p sy- 11 net como a ultimo instruljoo em se u progrcma. Esso
exibi-la, utilize 0 seguinte procedimento: instn.n;lio escrevere rcdcpes. Se voce qclser ccloncr umo novo p6gino
e fer um rodope no parte inferior do p6g ino cruel, co difique skip
1. Comece no ABM / 4 Edit or: Ini tial Screen. sy-I i net em vel de new page.
2. Escolha 0 caminho de menu Utilities-> ABAP/4 Key Word Doc.
Voce eneac vera a tela Display Strucrure: ABAP/4-SAP's 4GL Pro- ski P to 11ne n faz com que a posicac atu al de saida seja configurada no
gramming Language. ccmeco de 1in.ha n d.a paginaatual A safda da seguinre instruc;rao wri te comecara
3. De om clique no bctao Find na barn de ferramentas Stan dard. A tela nessa posic;rao. Por exemplo , skip to 1i ne 3 faz com que a saida da instrUc;rio
Search Chap ter Titles sera exibida.. write seguinte comece na coluna 1 dalin ha 3. Uma instnlc;rao skip to lin e que
4. No campo Find , digire new· page print . coatenha um mimero de Iinha maior qu.c 0 mimero areal de liohas pa r pagina
sera ignorada.
5. De urn clique no bacia Con tinue. Voce sera levado de volta a tela
anterior e seu curso r eposicionado na linha new-page pri nt . A Listagem 16.3 ilustra 0 usa cia ins truc;r~o skip.
6. De urn clique duplo n essa linha. A documenracfo para new-page pri nt EHTIlD.\~ Listagem 16 .3 A inslru,ao skip
sed exihida.
1 report ztx1603 .
Utilizando Q insfrw.Co ski p 2 tabl es ztxl fal .
3 datil n t ype 1.
A iostru/iao ski p permite que voce 4 setect " frDlll ztxlfal order by land1.
• Gere linhas em branco. 5 on change of ztxlfal- landl.
6 if sy·dbcnt > 1.
• Movaa posis:io arual de said. para eima ou para baixo dent ro da pagina 7 n • sy-l 1nno ~ l.
atual de saida. S skip t o f tne n,
9 write 35 ' ' '· l ast Vendor With This Country Code ."' .
Sintaxe para a instrucdo ski p 10 end1f.

-
III
Z
ski p [n : t o 11n!! n] .

c nde:
11
12
13
write / z t x l fa l ~1a n d l.
enden.
wri t e: / 4 ztxlfal-l1fnr. ztxl fal-namel.

S • n eum literal numerico ou uma vanavel.


14 endselett.


m
o cadigo na List.gem 16.3 produz a seguinte said.:
536 HR END'" EM 21 OIlS AIAP/4

SAiDA~
CA • A primeira saida de linha depcis de uma instru~ao rese rve fei emirids.
1000 Parts unl tntted
1010 I ndust ri al P\II1PS Inc .
1020 Chemi cal Hatio n ltd. Sintaxe para a i nstru~a o back
1030
1050
1060
ChickenFeed ltd.
The Bit Bucket
Henery Lane Lt d. -
UI
Z
o seguinte ea sinuxe para a mstruc;:io back:
back.
onde:

~
1070 Fl i p M1 Switch I nc. . ... Last Vendor With Thts
-Count ry Code •••
CC V9 Code Now, Specs Lat er- l td.
• back: emirida de dentro do evemo t op-of-page retorna aprimeiralinha
no Duncan 's Mouse Inc • • •• Last Vendor With This escrita dentrc de t cp-cf-p ece.
-.country Code ....."
DE Vfi Anna Banana Ltd. T-- - - - - - - - - - --
Vll Wiener Schnitzl!l I nc.
V12 Sauer kraut AG ••• Last vender- Wi th Thi s
Explicando ainda mais, sevoce especificou no standard page headi ng na
-Count ry Code ..- instruc;:i o report , ela retoma para a primeira li.nha. dapdgina. Se voce tiver urn
US va Smile When You Say ~ha t ltd . tltulo-padrio de pfgina, a po,ic;io de safda e configurada como a linha da
1040 Motherboards Inc . primeira l.inh.a que segue 0 csbecalhc-padrac.
l OBO Si ltcon Sandwi ch ltd.
1090 Consume Ltd . Urn programa de exemplo e mostrado na Listagem 16.4.
2000 JlIon1t ors and Mor e Lt d.
Vl Quality First Ltd. EN1lADA~ Listagem 16.4 A instru<;co back
V2 cverprtced Goods Inc .
V3 Fl uffy Bunnies Ltd. 1 report ztx1604 no standar d page headin g.
V4 /11.00 11lce a Cow Inc.
2 data n type 1.
V5 Wol fman Sport Accesso r ie s Inc.
V7 The Breakfas t Clu b In c. 3 do 4 t imes.
4 write: /(4) sy_-1ndl!!x.
5 enddo.
ANILlS!~ Toda vez que 0 valor de ztxl f al -l andl se drerar 6 back.
• Alinha 5 eacionadaroda vez que 0 valor de 1and! for mudado. 7 do 4 times .
8 n • 51- i ndex; • 10.
• Na linha6, sy...dbcnt e 0 cantader de passagemde loop atual. Quando g write: j 10(4) n.
o primeiro registro escl. sendo processado, d e t ern urn valor de uma 10 enddo.
unidade,e entia 0 c6digodentro de i f IUO eexeeuradc pa ra 0 primeiro 11
registro, mas para cada registro sucessivo. 12 top-of-page.
l3 write : I 'This was lily t itle' .
• Pa ra registros sucessivos, m linha 7 5y·1 i nno contem 0 mimerc da 14 ul tne.
linh a de lista are al. Istc e, ele e 0 mimero de linha. que a pr6xima 15 back.
instrUljio write escreverd. Uma unid ade e subuafda dele e isso e 16 write 6 '15
17 skip.
atribuido a n.
• A linha 8 move a posic;:ao de safdapara 0 comeco de linha n, que e a
Iinha previamenre escrita, o c6d.igo na Listagem 16.4 produz a seguinte saida:
• A llnha 9 escreve nessa linha, colocando flagno Ultimo fabricanee de SAiDA ~ This 15 r.y title
cada grupo. I 10
2 20
Utilizando a instru~ijo back 3 30
4 40
Utilize backpara rerornar a posic;:ao areal de safda para:
• A primeira Iinba da pagina atual (a primeira linba depois de t op-of-
page foi processada).
I AP lfflD A E1iI 21 DIAS AIAP/4

IHillIE ~ • A primeira execucgc da linha 4 aciona a linha 12 (0 even to top- of- 9 enddo.
page). 10
11 skip .
• A linha 13 escreve um titulo e a linb a 14 a sublinha. 12 do 4 ttees .
13 do 4 ttees ,
• A linha 15 configura a posi~io atual de safdapara a primeira linha na
14 position sy- t ndex.
lista de safda, 15 write ' A' .
• A linha 16 sobrescreve 'was I com li s I. 16 endcc,
17 sk1p.
• A linha 17 move a posi~io de saida areal para. baixo de uma linha. A 18 enddo.
segunda linha da lista de safda esd. agora na linha de saida areal.
• 0 centrale retorna a1inha 4. Ela emite urn novo caracrere de linha e
a primeiro valordesse loop ~ a safda para a terceira linha de safda, Os
o c6digo na Listagern 16.5 produz a seguinte saida:
valores restantes sao a saieianas l.i.nhas suc essivas. WA
WA
• A linha 6retorna a pcsicao de saIdaatualpara que ela fosse a primeira WA
"1 escrever depois do processamento t op-af - page (linh a de [ist a de WA
saida 2).
• 0 loop na linhas 7 a 10 sobrescreve a lista de saIda comecandc na linha
3. Esse dados sio escritos a direita dos dados existentes, comecando
na coluna 10.

Utilizando a instrUl;ao posj tjon


Utilize ainstrutji o posi t i on para especificar a pr6xima coluna de saida na linha
atual. Par exemplo, ski p to 1 i ne 2. pos i t i on 3. wri t e I Hi I • esc reveria Hi na lHilIsE ~ • A linha 3 comeca um loop do.
Iinha 2 , comecaadc na coluna 3. • A linha 4 comeca urn loop minhado do.A linha 5 sempre configura a
posil;iia de saida arual igual aiteratjio atual de loop. Entia, em primeiro
Sintaxe para a instru~ao positi on lugar, a posi~ao arual de saida e configurada como 1. Depois, e

-Z
III position r1.

onde:
configurada como 2 e assim pa r dante. Isso faz com que a linha 6
escreva a leera A quatro vezes, nas colunas 1 a 4.

~
• A linha 8 move a posi~o de saIda para baixo em urna linha. Isso resulta
• vI ~ uma varifvel numerics au lite ral.
na safda sendo escrita nas linhas suc essivas, comecando na linha

... m
A Listagem 16.5 ilus tra a usa cia ins rruc io position.
seguinte nos cabecalhos-padrac .
• A linha 11 d. saida em uma linha em branco.
• As linhas 12 a 18 si o as mesmas que as linhas 3 a 9. excet o que, em
EH1RADI~ Lis1agem 16 .5 A instruc;oa positi on vez de new-I i ne, ski p eutilizada na linha 17. Isso tern o efeitc deinserir
I re port zb1605.
linhas em branca entre as linhas sucessivas de safda.
2 data n t ype t , •
,
3 do 4 t1mes .
do 4 t imes. Utilizer e instrw;co positi on seguido imediotomente per umo write
5 posi ti on sy- tedex. e equivelente 0 emiti r umo instru~co write at (obordodo no capitulo
6 writ e ' A'. anterior).
7 eeeee.
8 new- li ne.
540 I APRENOA EM 21 DIA5 AUP/4 0016, lliHKASDEFORllATA(lo,PARTE 2 r 541

Text 1
Utilizo ndo Q inst rui;oo set bl ank 1i nes Text 2
Nc rmalmente, se seu programa emit e uma instro~ao wr i te qu e resul ts na safda
Text 3
de um a linha em branco, essa linha sera suprimida.. P or exemplo, quand o
escrever uma variivel que eontenh a espaccs em branco, voce nao veri uma
linha em branco nil. lista. U tilize a ins tru liao set blan k:: li nes para alterar esse , Text 4
comp crtamento.
Text 5
Sintaxe para a instru,cio set bla nk 1; nes \ Text 6

-Z
CIl set bla nk li nes on : off.
• A linha '2 define tres varidveis. Todas tern 1 como comprimento de

~ I caractere e um valor inicial padrio de espacos em braneo.


• Por padr ac, linhas em braneo que resultariam da tentativa de escr ever
Os seguintes p ontos se aplicam:
I espacos em bran eo sao suprimi das. Port anto, a linha 4 nao fn com
T • A cocfiguracao padrdo escl desativada, que quaisquer linhas em braneo sejam escritas.
• As linhas em branco geradas pel. instru~ao skip Dio
• As linhas em branco geradas por write I sem uma variavel nao sao
SaO suprimidas.
I • A instru~io ski p sempre escreve linhas em brancc e dessa forma., a
linha 6 gen uma 1inha em branco.
suprimidas. Por exem plo, wri t e [, sempre genra. uma linhll em
brancc.Write / ., ' .56 gerarauma linh aem branco se set blan k 1i nes
I • A linha 8 permite que a. in stru ~ao write escreva linhas inteiramente

on river sido executada de antemdo.


! em brane o na lista.
• A linha 10 escreve treS linhas em branco.
A Lista gem 16.6 ilustra a mstruliao set blank lines.
• A linha ffconfigura li.nhas em braneo novamente.
EH1RAOI~ Lista g e m 16.6 A instru, oo set blank l ines • A linha 14 gera uma linh. em branco.

1 report zt x1606. • A linha 16 nao gera linhas em bran co.


2 datil: fl . ra , n .
3 write: I 'Text 1' . Resum o
4 write: I fl. I f2, I fJ .
S write : I 'Text 2'. • Utilize new..line para cornecar uma nov a linha au blo quear urna linha
6 sk.ip. especjfica no Iugar. Ela pede prevenir ro lagem horizontal de qualquer
7 linhaindividual.
B set blank l i nes on.
s wr i t e : I ' Text 3' . • Utilize new·page para gene uma quebra de pagina, acme au desarivar
10 write : I fl . I f 2. I f3. d tu los e cabecalho s, alterar a contagem de linha ou tamanho de linha
11 wr-tte : I 'Text 4 ' . entre paginas ou enviar saida para 0 spool.
12
13 set b1.llnk. l i nes off . • Utilize ski p para gerar linhas em bnnco nil. safda.. skip t o 1ine
configura a posil$io de saida para uma linha espe cffica.
14 skip.
i
15 write:
16 wri t e:
I
I
' Text S' .
fl , I f2, I f3 .
• • Utilize back:: para retomar pan a parte supe rior d e urna pagina au para
17 write: I 'Text 6'.
o corneco de urn gropo de linhas.
• Utilize pos i ti on para especificar a proxima ccluna de saida.

o e6digo na Listagem • • Utilize set bla nk lines para permitir que linhas em branco sejam
16.6 produz a seguin te saida:
I criadas escrevendc varhveis q~e contenham esp aco s em branc c.
542 APIEH DA EM21 DIAS ABAP/4

IL...-:...-
Fa~a - - - - ' _
OORlOI~ List a gem 16.7 top-of- page, position e skip

Utilize sfmbo los e kones e m seu relc tcric Nao codflque excessiyomente um report zty1607.
perc cementer a reodopta bilidade. tomonho de p6gina. Permitc a os usucr ics data n type t ,
espe d fic6-lo quando jorem im primir 0 do 4 times.
relot6rio.
do 4 times .
positi on sy-tncex.
Nao erie relot6rios mois lorgos que 132
write 'A' .
coroderes no coso de 0 usu6 rio querer
enddo.
imprimi-Io . A moloria dos impressoro s 000
add 1 to n.
pode imprimir p6g inas mcls largos que
s kip to line n.
1"32 ccrccteres.
enddo .

t op-of-page.
n • sy-11nno.

P&R
o c6digo na Listagem 16.7 produz a seguince safda:
o Realmente, nao cntendo a difereuca entre skip e new-I ine . Elas
mio £UCID com que a pr6xima wri t e va para uma n ova linha? sllol ~ AMA
AMA
AMA

o o prop6sito de ski p ~ gene uma Iinha. em branco na. saida.


new..l1 ne faz com que apr6xima linhade safdasejaescrita parauma
AMA

nova linha e Da O gcra linhas em branco.

Workshop
o Workshop oferece duas maneiras de voce verificar a que aprendeu neste
capltulo. A sCliao Teste oferece perguntas para ajudar asolidificar seu entecdi-
mento do comeudo abordado e a sec;ao Exerdcio permite que vocs pratique a
que aprendeu. Voce pode enccntrar as resposras ~ perguntas do Teste e aos
exerctcios no Apendice B. "Respostas as perguntas e aos exercfcios".

Teste
1. Qual instruc;ao voce pode utilizar para sobrescrever a mesma linha?
2 . Quando voce devers preferir uriiizar ski p sy-l i net em vez de new-
page, se quiser urn rodap~ ?

Exercido 1 I
;
Explique a fluencia de ccntrole no seguinte programll. e como d e funciona.

i,
I
e
I 17
Modularixasao: eventos
e sub-rotinas
Depois de concluir este capitulo, voce sera capaz de:
• Cochecer as tipos de unidades de- modularizacio disponiveis no
AJ3M/4
• Entender as eventos de ABAP/ 4
• Utilizar eventos initi a11 zation, start-of-selec ti one end-or - set ec·
ticn
".. Definir sub-retinas enemas e internes
• Deflnir variaveis global, local e estaticas e areas de trabalho de label.
• Eceecder 0 efeito de ex1t, check estop dentro de eventos e sub-retinas

Unidades de modulariza <;oo no ABAP/4


IDVO... Umo unidcde de moduJc rizo~a o e como urn shell em que voce pode colocor
TEiKO" c6digo. Elo pennite 0 VOC! separor urn grupo de Iinhos de c6digo do restante
e entao execute-los em urn tempo especifico. M linhos de c6digo d entro de umo ~idode
de modulorii o¢ o comportcm-se de mcnelrc muito semelhonte 0 urn miniprogramo Clue
pede ser chomado de o vtro programe.

D ABAP/4 cfeiece tres ripos de unidades de modu larizaci o:

hltp;l!_ .cDmput ,COm,br


• Even tos • A linha 2 identifica 0 come cc do evento initial i n t i on.
/t • Sub-retinas • A linha 3 escl associada com 0 evectc initialization. Se rom linhas
de ccdigo seguirem essa primeira, eodas elss pertencerac 400 evemc
• M6dulos de fun,ao
infti ali zatten.
Esre capfrulo explica eventos e sub-retinas. 0 proximo capftulo trata de
• A linha -4 marca 0 fim do c6digo que pertence a in it ial iza t i on e 0
m6dulos de £Unljaa.
ccmecc do eventc start-of-selection.
Utilize asunidades de modularizacao para eliminar 0 c6digo redpndante
dentrc de seu prognma e para toma-lo mais facil de ler. Per exemplo, suponha • A linha 6 pertence ao evento star-t-cf-sel ect icn.
que voce eenba uma sene de instrucdes que formatam urn endereco e precise • A linha 8 marca 0 limite inferior do c6digo qu e penence ao evento
farmatar enderecos em mas lugares diferentes em seu programa. Em vez de start-of-selection e 0 limite superior do event o end- ct-se t ect tcn .
duplicar 0 c6digo dentrc de seu p rcgrama, euma boa ideia cclccar esse c6digo
• A 1.inha 9 perte.nce ao evento end-of-selection.
em uma unidade de modularizacao e chamd-lo sempre que voce precisar
farmatar urn endereco. . • a limite inferior do c6digo que pertence a end-of- select i on esti
marcado pelc fun do program•.
r Eventos •. Quando voce executa esse programa, esses even tos sao acionados por
Ao contririo da prim eira impressao, as programas de Al3AP/4 sao baseados urn prognma de driver. as seguintes pmgrafos explicam 05-detalhes
em eventos. Urn born entendimento sabre eles e a chave para. um bom desse conceitc.
eatendimento de ABAP/4.
IIDVO.... e
Urn progroma de driver um progromo que contro lo outro progromo {driven,
TIijO" que que r dizl!!r controlodo}. ASAP, fcmece programos de driver co m a sistema
Defin indo eyentos de R/3. VocA fomece a progromo contr%do. Quando voc! inicia Sl!!U software, urn
progrcmo de driver sempre tere sido inidado onteriormente e entcc otivarO as eventos
NOVO '" Um eveote ~ um tog que identifica umo se¢o de c6d igo. A se¢o de e6digo em seu prograrno: Para reltercr, urn progromo de drivl!!r inicio rC primeiro e enmo
TWtO II""" ossociodo com um eventc comee;o com urn nome de eventc e tenn ino quando contro lar6 quando se u progromo obtiver a co ntrole. Esse sempre foi 0 coso de todos as
e
a prOximo nome encontrcdo. No listegem -17.1, as nomes de evento s60 1n1tiali- progromos que voce escreveu ote ogara; openos n50 esteve ciente disso ofe agora.
ra t ten, start -of-s election e end-of-sel ection .as names de eventc sao pclevrcs Cerflflque-se de ler este porngrofo ccidcdcscrnente. Repetindo, quan do voc~ Inlclc seu
reservc dos. Voce nco pe de crie r novas eventos - somente pede utilizor a s edstentes. software, um progromo de driver terO iniciodo primeira e contro lor6 seu progroma,
chomondo eventcs dentro dele.
EKTRAD.\~ Listagem 17.1 Tres evenlos b6sicos
FigurA 17 1 Seu p~rc mo
~~ ..., lc:6cl.go otuaQ
1 report ztx1701. o progromo de driver Progrcmode driver
2 fnitial1zation. eos IlYentos que ere -,:":;:. (PSe~d0c6djgol report ztxl70 1.
a write I 'I'. pode adonar.
4
5 sta rt -c f-select t cn.
1.
2.
~~4~;J~~;~~~1~r-fi~~-~C
6 write I ' 2' . 3. '~ -'ita rt:~o{ . se1~~i'{~n'~
7 4. ~i.:.:~ ~h# r~.t"i \ :=.~~ ::
8 end-ot -select ion.
i:,;~~:.~:e~~e,~~~,~':.:~~~': ;...
5.
9 write I '] '.

o c6dig o na Listagem 17.~ produz a seguinte saida: o e


c6digo associado com urn evento acionado por uma instI1l<jio em

Sliol ~ 1 urn programa de driver. Os eventos sao acionades pele programa de driver em
Z urna sequencia predefmida e previslvel. A Figura 17.1 ilustra es~e ponto. .
3
AFigun 17.1 tempseudoc6digo dentro do programade driver. 0 e6digo
mostradC? DO programa i direita e 0 ~6digo real. Quando 0 programa ztxl701
O~ 17dIODIJWl1.lyio,eVEHlOSE SlJ8.R011JUS · 549

.~ execueadc, 0 driver a esquerda ten iciciado primeiro. 0 prognma entia 1. fl · 1


2. fl · Z
segue esta sequencia de passes :
3. f l . 99
• Aciona 0 eveaec i ni t ia li zat i on, fszeado com que 0 c6digo que -
pertence a i ni ti al i zation seja executado. Se voce nio river cod.i.fi~do
. lItiUSE ~ • Quando voce inicia ztx1702, 0 programa de driveriaiciars primeiro.
urn evento in i t ia l i z ation em seu programs, 0 programa de dnver
pulari esse passe .
l • Ele aciona 0 evento i nitial iza tian.
• Mostra a tela de sele~io para seu programa. (Uma tela de selcr;ao
con eem as camp os de ent rada pua suas icscucoes de parimetro.) Se
seu programs DaDtiver uma tela de sele'iao, ele pulara esse passe. I • 0 c6digo associado com 1niti al 1zat ian eexecuudo (linhas 12 e 13).
o valor de f1 e escrito e 1 e adicionado a ' ele. 0 con trcle entao
reromara para 0 progra ma de driver.

• Aciona 0 event o s ter-t-o f -sel ect t cn, fa.zendo corn que 0 c6digo que
p errence a esse event~ seja executado. Se voce aao tiver codificado urn
evento sta rt-of- selecti on em seu program a, ele pulara esse passo.
• Aciona 0 evento end-of- sel ecti on em seu programa, executando todc
I • 0 prcgrama de driver procurara uma tela de seler;ao. Como nao existe
nenhuma para esse programa,ele ira procurar urn evento sta rt -of - se-
lection. Ele a Iocalizari na linha 7 e entao ira ramificar para ztx1702
comecando na linha 8. As linhas 8 e 9 serac executadas e a contrcle
enta~ retcrnara para 0 driver. .
. 0 c6digo que pe rt ence a ele. Se vo ce nao tiver codificado urn end-of-
sel ect ten, d e pularf esse passo . • 0 programa de driver eneso procurar.i um evenec end-af - sel ect i on.
• Mosua a lista de safda para 0 usudrio. I Localizando-c na Iinha 4, ele transferiri 0 controle zo1702 comegandc
na linha 5. Somenre a linha 5 pertencerd ao eveae c end- af-sele ct i on,
A ardem de execucac dos eventos edererminadapelc programa de driver.
nao por seu progranu.. Po rtanto, voce pede codificar os evenros em qualquer
ordem. e a ordem de execucgo ainda sed a mesma, A ordem de eventos em seu
i entaa ela sen. executada e 0 controle entia iIi reto rn ar para
• 0 driver entio exibiIi a lisa para. 0 usuaric.
0 driver.

. Esse ezemplo ilustra que voce! pode colocar os evento s em uma ordem
pro grama ni o importa; des sempre serio acionados na mesm~ seqiiencia pela
diferente, mas a seCJ.iiencia de execu~ao naa sed alterada. A sequencia de
programs, de driver. A Listagem 17.2 ilustra esse ponto.
execu~ao ~ sempre i nit ial izati an, start-of-sel ectton, end-of- sa l ect i on. Hi
outros eventos tambem; alguns ocorrem depc is de in itialization e outros
.... Listagem 17.2 "Eventos ccion odos no ordem ditodo pelo programa de
ENTiADI,. driver . ocorrem entre start-of -selecti on e end-of-sel ect i on.
Os programado res nc rmalmente pa sicionam eventos na ord em em que
1 report ztd702 . eles sao acionados para deixarem seus programas mais faceis de entender.
2 data fl type 1 val ue 1. Hi onze event os d.iferentes no ABAP/4-, caregorizados na Tabela 17.1 de
3 acordo como eles sao acionados. .
4 end-ct- selecrt cn.
5 write : I '3 . fl·'. fl . Tabera 17.1 Eventos de ABAP/4
6
7 start-of- se1eet1on. Co1egoria Event os
8 write:: I ' 2. fl . '. fl .
Driver initiali zati on
9
10
fl • 99.
at selection-screen
,
11 initialization. start -af -select ion
Ii! write : I '1. fl·' . fl .
13 add 1 to fl .
get .Ir
end-af-s election
Usu6rio at line- selection
o c6digo na Listagem 17.2 produz a seguinte safda: at pfn I
at user-conmand
,. Progromo top-af -page
end-of-pag.e
I
J
Os evenros de driver sao acic nados pelc programa de driver. Os evenros Esse acionamentc duplo nao causa normalmente nenhum problema com seu
de usuario sio acionados pelc .:usu ario atraves da interface com ele. Os programs ou com sua safda, porque
evenros de programs sao as acionadcs de dentro de seu programa. Este • Voce nao pode ver a saiclade writes emitida. ant es de uma s ele~o ser
capitulo detalhs a usa de i ni ti al i zat ton, start-cf -se1ect i on e end-af-se- mostrada, entia normalmente nie as codifique ar.
lection. Note que alguns desses eveneos ocorrem entre stert-ct-selecttcn e
end-a f-s election. • 0 evento top-cf-paqe cc sruma somene conter insrrucoes write e a
No capitul o anterior, "Tecnicas de formatacao, Parte 2/' voce aprendeu safda do primeiro acicnamento e descartada, de modo qu e nenhum
sabre os eveetos top -at-page e bottom-af-page. As informafioes nesre capitulo dane e caus ado quando de e aciocado duas vezes.
tambem se aplicam a eles, mas esses sao aciceados par inStnlfiOeS dentro de
seu prognma, e nao do driver.
~ A varia¢<> write to de instru¢ o ."ri te nCio ad ona top-of-page.
Considerccoes espeCiois 00 utilizor write dentro de eventos
Os eventcs tern dois efeieos incomuns na inStrllfiaO write:
Padronizando start-of-Sf] f ct ; on
• Se urn programatem uma tela de selefiao e voce emite uma inStrufiao
Se a primeira instrur;ao execurwel em seu programa nao for precedida par um
write em um eventc acionado antes de start-of-sel ectton, voce nao
nome de evento, em tempo de execur;ao 0 sistema. aut cm aticamente insere
vera a saida dele. Por exemplc, se river uma instrU~o parameters em
sta rt-af-selection antes cia primeiralinha de c6digo executavel, Pott ant o, se
seu programs, uma tela de selefiao sen criada para. seu programa

I
permitir que a usudrio digite 0 valor de parl.metro. Set nesse programa,
voce nao civer quaisquer eveatcs codificados, au se nao river colocadc c6digo
voce emitir urn wri t e em [ oi ti al i r et t on, nao veri a saida da instrulfao na parte superior do programa sem atribuir name s a: urn evemc, sta rt -of - se -
lection e inserida. A Lisragem 17.3 oferece urn exemplo disso, em urn pro-
wri t eo
grams que contern tanto uma tela de selefi30 como evecros. Ele tam-bern

I
• Um' novo evento sempre come)il em uma nova linha na saida. Por '. contern urn. eveaeobaseadc em programs - top-of-page.
exemplc, se voce emi te uma instruljaO write em start-af-selection,
urn write em end- ot- se l ect i an come~ em uma nova linha.. Voce ENTlADAt.. U~ta~e~ 17.3 "sh .rt -af - sel ect ion outomaticoment~ inserido antes de
pode utilizar skip ta line se for necesssrio continuar escrevendo na r pnrnerro linho de c6dlgO
mesma linha.
1 report ztx1703 no standard page headfng'.
Acion ondo top-af -page 2 parameters pI(8) .
3
Esu ser;ao descreve quando top-at-page e acionada em rela~o aos eventos de
4 wrtt e: I 'p1 .'. pI.
programa de driver. Se seu programa nao tiver uma tela. de selefiao, a primeira 5
instrUt;aO wri te executadascions top -af-page. Se seu programa riveruma tela 6 ini t iali zati on.
de selecao, e passive! que top-of-page seja acionada duas vezes: 7 pl · 'I nit'.
S
• Pela primein. instru~ao write executada antes de a tela de sele~ao ser 9 end-of-se l ect1on.
mo stra da 10 write: J(14} sy-uline.
• Pela primeira instru~ao wr i t e executada depois que a tela de se1efiao e 11 I ' End of program'.
lZ
mostrada
13 top-of . page.
Somente se estiver fazendo algo incomum em top-of-page, como abrir 14 write: I ' Thi s is My Title ' .
arquivos ou inicializar clados, voce precisari ter cuidado com 0 efeito de IS skip .
acio narne nto duple.
Se top -of-pag e for acionada duas vezes. voce somente vera a saida de
instrur;oes writ e dentro dela na segunda vez que ela for acionada.. A safda criada
pelas instru~6es wri-te durante a primeira va que ela e acionada e descartacla .
o c6digo na Listagem 17.3 produz a seguinte safda:
I
I

.J
"
UlENDA EM 21 DIU ABAP!4 D~ 17.MDDUURllAlAo,[VENTOS E5U...onNAS 553

This i s My Titl e ( st ert-et- selectt cn.


pl - IIHT
,
5 fl - 'A'.

End of · progr am 7 1fn- 'A'.


.;.'
8 ene-et-selecttcn .
ANlusE~ • Q uando voce exec uta 0pro grama ztx1703, urn p rogr.una de driver 9 write: I fl.
inicia primeiro. Desde qu e haja c6digo no ccmecc do programa que 10 endtf .
m o pertenca a quaisquer evenros, uraa start -of-select ion auto ma-
ticamente e inserida na linha 3.
Flg urg 1Z 2
• 0 programa de driver aciona a eventc initialization. A linha 7 A tela de sele¢o
exe cuta e attibui 0 valor' Ini t' para pl. 0 cone-ole reroma ao pro- porc 0 progromo
gnm a de driver. ztx1703.

• Desde que haja uma tela d e se1elii o pa ra esse programs, uma dela s
agora e mostrada, Ela aparec e na Figura 17.2. 0 valor atribuido a pl
n.a linha 7 apare ce n o camp o d e entrada,
• 0 usuaric pression a Execute na tela. de seles:ao . 0 contrale retoma ao
programs de driver, qu e enrao acio na a event o st art-o f-se lect i on.
• Desde que start-of-sel ecti on seja inserida na linha 3, a controle
passa para ztx1703 iniciando na 1i.nha 4.
• A linh. 4 ~ executada. Como esta ea primeira instruljio wri te execu -
tada depois de start-of-se lectian, ela aciona a event o top-of- page.
D controle transfere para linha 14.
• A lioh. 14 escreve urn titulo . A linha 1S escreve uma linha de branco.
o
'controle rerorna pua linha 4.
• A linha 4 escreve a valor de pI.
o c:6digo no Ustogem 17.4 produz este erro de sinfoxe: Incorr ect
siiDI ~
nesti ng:
• 0 driver entao aciona 0 eventc eec-ot-setect t en. 0 controle passa bef ore the statement ' EN D -O F ~S ElECTION' 1 the structu re introduced
para a linha 10. by ' IF' mus t be concl uded by ' ENDI F'.
o A linha 10 escreve uma linha horizontal de 14 bytes.
• ..... Os nomes de evento tem prioridodemclsa ltaque outrnsinsfT'u(;6es de AWN.
• A linha 11 escreve End of pro gr am. 0 controle retoma para a programa ANALISE ,.. A instnu;:oo ; f no linha 7 pertence 0 0 eventc st ar t · of - sel ect1on. A instrue;oo
de driver. end; f no linho lO pertence 0 0 eventc end- of-sel ect ; on. Voce fechotodos as condir;;oes
obertos e cs loops dentro do eventc oos que eles pertencem. Pcrtcntc, esse progromo
• 0 driver exibea lista para 0 usudrio. deve ter uma end1f ontes do eventc ene-e t -setecet en. Como he tombem umo endif
V o ce nao pode colocar uma condiljio em volta de urn even to ne m colocar dentro de end-of- sel ection no linho 10, oquela endi f feria de ser remavido ontes de
urn even t o dentra d e urn loo p. Fazer isso caus a urn eITO d e sintaxe. P or o progrnmo ser executodo. .
exemplc ; c codigo na Listagem 17.4 causa u rn eITO d e sintaxe. Voce n ao deve colocar defini c;6 es de dados dentro de eventos. Embora
isso nio cause u rn erro de sintaxe, rrata-se de urn estilc de programa~ao pobre.
ENlli.DA..... Listagem 17.4 Nco cclo que um eve ntc dent ro de umo condit;ao ou de Tow as defini~6es de dados seriam feitas na parte superior do programa..
,. um loop
Cada evecec tern um prop 6sit o especfficc e e a ece sssric realizar uma
1 report ztx1704. tarefa de programacac especifica.. Quando surgir a necessidade, irei refereacia-
2 data fl . los no m ate rial que se segue. Se voce nao vir quaisquer eventos em um
3 pro grama, sempre lembre-se de que ainda exis t e u m - start-of-set ection.
554 ~=..::::...o:"'::'::=-"-------- -----------.jl------ ---- ----====
DlA 17: MODU~O: EVEHTDS ESUB-ROllNAS 555
APRlNDA lM 21 DIAS ABAP/4
==~
Sgjnd o d e urn eyento Nco utilize stop nos seguintes eventos: i niti ali zation, em selec -
Voce pede sair de urn evento a qualquer hora utilizan do as seguintes instrucdes: t io n-screen output, top-of-page , and end-at- page. Tecni-
cemente, stop pode fundonor com top-of-page e end- at - page, se
• exit voce evltcr utilizer a instru¢o write dentro de end-of - sel ect i on,
depois disso. No coso de top-of-page urn wr i te, ped e cousar urn
• check
dump curto; no coso de end-of-peae, voC!! pede perder a scldc. E
• stop mois segura evlto-lc 00 fodc dentro desses eventos.
Nesse me mento, p or favor revise a fun!jao da insrrucio check (apresen-
tada no Ca pitulo l Ol "lns trucoes de controle comuns"). orelat6rio mostrado na Listagem 17.5 permire a voce experimenter as
O s paragrafos a segui r descrevem 0 efeit o de check. e ex; t quando elas efeitos dessas instrucdes dentro de varies even eos. Co pie-a e remova a s
sjo codificadas foradeurn loop. 0 efeito de stop e0 mesmo,independentemente comendrios de uma. vez para experimenter as poasfveis variacoes.
de ela ter sido codificada ou nao denrro de urn loop.
ENmDA~ Lisfagem 17.5 Os ~feitos de exit, chec k e sto p dentro de evenios
Emborc nesse ponto somente tr&s eventos tenham sido opresentados 1 r eport ztx1705 no standard page heading l ine-count 6( 2).
e m deta lhe , esto se<;oo foi escrito em urn sentido qercl, de modo que 2 *em eventos antes de start-of-selection:
elc se a plique iguolmente bemdepois de voceoprender a utilizartodos 3 .. - exit e check. ti!m 0 mesmo comportamento. t l es dei xam 0 eventc
05 even tos. 4 * e 0 processenentc contfnua com 0 prOx1mo evento ou al :l.o.
5 * - stop vai diretamente ec eventc end-ct- select t cn
6 * (nao utllize stop em tnt tf al taetton ou na sal da de se lect t cn- screen)
Em tod os as eventos: 7
8 *em ste rt-cf-selecttcn e eventcs sUb seqllentes :
• checkimediatamente deixa 0 evento arual e 0 processameotc continua
9 * - exit termina 0 relatOrio e IIlOstra a lfsta de salda
com 0 pr6ximo evento ( 0 1,1 aliao, como exibir a tela de selecac ou lista 10 * excec;!o : top:'of-page: exit detx e 0 evento
de safda). 11 * • check. detxa 0 evente e 0 processamento continu a com 0 prOximo .
• stop imediatam ente deixa 0 evento atual e vai dir etamente para 0 12 * • stop vet diretamente para 0 evento end-ct- setectt cn
13
evento end-at-s election. Executar stop dentro de end-at-s election "execut a lIIl:
14
deixa 0 evento . N so causa urn loop infinito. 15 parameters: eXit_sos r-adtubut'tcn group gl, "exit em st art-of-sel ect ion
Em even tcs que ocorrem antes de start-ot-sel ection , 16 eXit_eos radiobutton group gl . "exit em end-cf- select fon
17 chck_sos radiobutton group gl. "check em sta rt-of- sel ect i on
• exi t e check tern 0 mesmo compcrtamento. Eles deixam 0 evento 18 chck_eos radlabutton group 91, "cheek em end-cf- setec t t on
imediatamente e 0 processamento continua com 0 proximo evento 19 stop_sos radiobutton group gl, "stop em st art-es-se 1ect i on
(au 01.<;3.0 , como exibicio da tela de selecac). 20 st op_eos radiobutton group gl, "stop em end-of-sel ecti on
21 none radiobutton group 91. "sem stop, exit ou check
Em start-ot-sel ect i on e evencos que ocorrem depois dele: 22
• exi t te rmina a relat6rio e mostra a lista de saIda. Existe uma unica 23 initiali zat i on.
exce<;aoj dentro de tcp-of -paqe, exit ccmpcrta-se como check. 24 * exit . "h6 evento
25* check l ·Z . "h6 evento
• check deixa 0 evento e 0 processamento continua com a pr6x.imo 26 * stop. "nlio taz 1550
eventc (au alJao l como exibi<;ao da lista de saIda). 27 eher_sos .. ' X' .
Z8
check, exit e st op nso configuram a valor de sy-sub rc, Se quiser con- 29 at selecti on-screen output.
figura-la, voce pode atribuir urn valor numerico a ela antes de partir. 30 " exit . "M evento
31 * check 1 '". 2. "h4 evento
32 * stop. "nio taz 1sso
33 message s789{zk) wi th 'at set ectton-sereen output ' .
34
APR ENDA EM21 DIAS UAP/4 557

35 at sel ectten-se-een on radiohutton group gl. • A linha15 defineurn gropo de boeees de op~o. A escolha de um dele,
36 '"' exit. - hi evente fm com que a instru~o mencionada no comentdric seja executada
37· check 1 .. 2. - hoi evento
como indicado. Por ezemplo, escolher exit_50S faz com que a ins-
38. stop. -vai pari end-of -select i on
tru~ao exit seja executada no evento start-at-s ele ct i on.
39 message i 789(zk) with ' at select ion-sc reen on rbg'.
40 • check 1 '"' 2 e muito codificado entao sempre reto ma urn resultado
41 at set ect f cn-screen. negativo.
42· exit. "M evento
43· check 1·2 . "M eventc • Voce pode querer incrementar a contagem de linha para tornar a saida
44'" st op. "vai para end-cf-selecttcn mais Iegfvel. isso e configurado para que 0 evento bottom-at- page seja
45 message 1789(zk) wi th ' at sel ect i on- scr een'. acionado.
46
47 s tart-ot· sele ct fon.
48 wri t e: / 'Top of SOS' . Retornondo do liste
49 if exit_50S " ' X' . Vejamcs row de perto os evenros no contexte de urn relat6rio que tern uma
50 exit . "hi rehtOrio tela de sele ~ao. (Lembre-se de que a instruc;:ao parameters gera uma eels de
51 elseif chck_50S.o ' X' ~
- hi evento
,e1e>10.)
52 check 1 • 2.
53 elsei f StOP_50S " ' X'.
Quando 0 usuirio executa 0 relatorio, 0 driver aciona i nit; al i zati on e
54 stop . "vai para end- of-se lect i on entio mcstra a tela de sele~o. Depois de pressionar 0 botio Execute. 0 driver
55 endif. acionaos evenecs restantes, 0 programa termina e 0 uscsrio ve a lista. 0 usudric
56 write: / ' Bot t om of 50S'. pressiona 0 botao Back para retomar. 0 driver entio reiaicia 0 processamearc
57 comecando na parte superior da lista de evento . Ele ad ona 0 evenro initial i-
58 end-of- sel ect i on.
zati on e entio todos cs eventos subseqaectes seguem novamente em sua
59 ~1te: / ' Top of EOS' .
60 11 nit_t!05 • 'X' . seqiiencia normal. 0 -resultado e que 0 usudrio ve a tela de sele~iio depois de
61 exit . -I'll rel atOr10 pressionar 0 bone Back. Ha uma diferenca no processamento, porem, quando
62 el seif chck ees • ' X'. ocorre urna reiaicializacio.
63 check 1 : 2. ~h! relatOrl0 A tela de se1e~ao tern sua pr6pria c6pia de todas as variaveis que sio
64 el setf · stoP_eDs .o 'X' .
-h&reletet tc
exibidas nela. N a primeira vez que 0 re1at6rio executa e 0 programa de driver
65 sto p.
66 endif . recupera 0 controle depois que 0 evento i ni t i al i zat i on terminou, ele copia
67 wr1t e: / ' Bottom of EOS ' . as valcres das varidveis do programa. para as varidveis corre spoodentes Il2 tela
68 write : / '1' , de sele~io e as exibe. 0 usuaric pede modificar os campos de entrada. Quando
69 / '2 ', o usuaric pressiona 0 botio Execute. 0 driver armazena as valores cia tela de
70 / ' 3' . se le~io em duas areas de dados: uma penencente i tela de s ele~ao e entio em
71
7Z top-of-pag e.
suas variiveis do programa..
73 write : / 'Title' . Entretanto, essa aljao dual somente ocorre na primeira vez que voce.
74'" exit . "M evento e retcme para a instru~ ao writ e executa 0 programa. Quando 0 ususrio pressiona.Back na lista, ini ti al ; zation
75'"' check ' X' • ' 1' . -ha event e " tom. para a 1n.strul;.lio write
II! eacionado novamente. Quando a controle rercrna para 0 driver, ele nao copia
76'" st op. -!lot o end-of- sele ct ion - ni o escreve depois dina suas variaveis de programa para a area de dados cia tela. Em vez disso,ele exibe
77 ultne . os valores exisrentes da area de dados da tela; ele aincia contem os valores que
78
79 end-at-page. o usuario digitou. 0 resultado e que 0 usui rio ve. os valores que insenu por
80 ul1ne. ultimo. independentemente do que fai alterado em seu pr ograma. Entia,
81· exit . -M relat6ri o depois que 0 usuino pressiona 0 botao Execute, os valores na tela sio copiados
82· check 'X' • 'y'. -hI event o e retorna para a i nst r,ul;! o write para a area de clados da teta e entaO para seu program a. sobrescrevendo
S3'" stop. "goto end-of -selection - naQ escreve depois dis so
quaisquer diferen~as. Por exemplo, se voce configura valores durante a 1n-
84 write: / ' Footer'.
Hi al i zati on, esses valores serao vistas na tela de se1eCjao quando iniciar a
S58 ~=~:"':::::"::::':':"-
!PREMDA EM 21 DIASABA P!4 -I--- ---====== ~~ 559

p rograma. Quand o voce pre ssiona 0 be tte Back na tela de sele~aol initial; · • A linha 10 executa.
zat ion executarf, mas as valores configurad os dea tro dele nao sen e mosrra- • A Iinha 11 retorna controle para a linha 6.
dos. 0 usuaric em vez dissoverd as valcres que ele digirou.
• A linha 7 executa.
Sub-rotinas Hi dais tipos de sub-retinas:
• Sub-retinas intemas
MOYO .... Uma sub-retina e umo se~ao de c6d igo reuti liz6vel. Ecomo urn miniprogramo
TWKI ~ que pode ser choma do de cvtrc ponto em sev progroma . Derrtrc dele voce
• Sub-retinas externas
pede defioir vcrlcveis, execvtcr instrv¢e.s, compute r resultados e escrever soido. Pore A List agem 17.6 ilustrou urna chamada para um a sub -retina interna.
definir umo scb-rcnnc, utilize a insfruc;oo fOnD para indicor 0 lofti o de umo sub-retina e
utilize endfo rm pore indica r 0 se u fim. 0 nome de umo sub-rotina nco pode exceder 30
corederes. .
Definindo e ,harnando s ub- re tinas internas
As defini~5es de sub-rotina normalmente sao colocadas no fun do programa,
Pan chamar um a sub-retina, utilize a instnu;ao per f onn. depcis de to dos os even ros. A instru~ao fonn define 0 fim do evento p recedente
~ Listagem 17.6 oferec e urn programa de exemp lo qu e define e chama e 0 ccmecc de uma sub-retina. As sub-retinas nio podem ser aninhadas no
uma sub-retina. interior de eventos.

EN'WDl~ Ustagem 17.6 Definindo e chornando umo sub·rotino Sintaxe para a instru~aa form
1 I"tpo.rt ztx1106.
2 -
en
Z
f orn s [tables tl t2 . . . ]
[using ul 'falue (u2) .. . J

~
3 write: j ' BefoT"@ call 1' .
[changing c1 'falue (c2) •• •].
4 perlonn subl .
5 writ e: j '·Before call 2' .
1ft
6 perfonn sub1.
endfonll.
7 writ e: j •After cal ls",
8
T code:
9 form sual..
10 write : j ' I nsi de subl' . • 5 e 0 nome da sub-retina,
11 endfonll. • tl, u, ul, cz, c1 e c2 sao parametres.
• tables pertnire que as eabelas internas sejam passadas como para-
o c6digo na Listagem 17.6 pr oduz a seguinte saida: metros.

SAiDA ~
Before call 1 • A adi~ao value cao pede serutilizada depcis de t abl es .
Insi de sub!
Before ca11 2 • A adi!j3.o val ue pede ser aplicada a quaisquer variiveis passadas via
Ins ide sub! us ing ou chang ing .
After calls
• ~ -- representa qualquer ntimerc de linhas de c6digo.

AHiuSE ~ • A linha 3 executa.


• A linha 4 transfere ccnt role para a linha 9. Os seguintes pontos se aplicam:
• A linha 10 executa. • Tod.as as adic;oes sao opcionais.
• A linha 11 trans fer e eontrole de volta pan..a linha 4. e Quando etas sao codificadas , as adi~oes devem aparecer na ordem
mostrada aqui. Se codificadas, tab l es devers vir prim eir o, e depois dela
• A linha 5 executa. .s
using e cha nging .
.• A linha 6 transfere con trole pan a linha 9.
560 A'REM OA EM 21 DIAl ABAP/4 oa 17, MOOUURlll\AHIETfTOS ESU~Ron"AS 561

• Cada a~~o somen te pede ser especificada urna vez. Per exemplo, a 10 form 52.
adi~ao tab les somente pede aparecer uma vez. En ereranto, tabelas 11 write : I 'Hi from 52' .
mriltiplas podem aparecer depois dela, 12 endfoT"lll.
13
• Nao utilize virgulas pan separar pargmetros. 14 for'll 53.
15 writ e: I ' Hi from 53'.
• tabl es somente permi te qu e tabelas internas sejam passadas - Die
16 endfortll.
tabelas de banco de dados.
• Uma sub-retin a pode chamar Dutra sub-retina.
o ccdigo na Listagem 17.7 produz a seguinre ,aida:
• A recursio e supcrtada, Um a sub-retina pede chamar a si mesma au
Hi from 51
uma sub-re tina que a chama de volta.
Hi f rocn 52
• As definicoes de sub- rorina nao podem ser aninh;cias. (Vae!:oio pode Hi f rom 53
definir uma sub-retina dentrc de ourra.) • A linha 2 comeca urn loop que executa treS vezes. Sy-index e o
comador de loop e e incremenudo em um a cada passagem do loop.
Sintaxe para a instru,Cio perform
• Na primeira vez que 4linlu 3 eexecutada, sy- index tern
-
0 valor de 1.
CIl perfol"ll a) s
b) n of sl 52 53 ••• Portanto, a primeira sub-retina (s 1) e executa-cia.
Z (tables tl tZ• • •] e
• Na segunda vez que a linha 3 executada, sy- t ndex tern 0 valor de 2.

S
m
on de:
[us i ng ul u2• • •J
(chltlg1ng: c1 I:'Z• •• ] .
Portanro, a segunda sub-retina (52) e executada,
• Na te rceira vez que a linha 3 e executada, sy- Index tern 0 valor de 3.
T e
Pcrtanto, a terceira sub-rotina (s3) executad a.
• s. 51. 52. 53, sao nomes de sub-re tina.
• n eurna variavel numerica. Deixa ndo umg sub-rating
• a) e b) sao mutuamente exclusives. Voce pode sair de uma sub-re tina a qualquer bora utilizando as seguintes
• tables, using e changi ng podem aparecer com a} au b}. instruc;5es:
• A adi~ao value( } nao pode ser utilizada com perform. • exit
• check

Utilizando a sintaxe b) voce pode especificar que uma sub-re tina de uma • stop
lista de sub-retinas seja executada. A n-es ima sub-retina na Iista de names Os panigrafos a seguir descrevem 0 efeito de check e exit quando elas
seguindo of eexecutada. Par exempl o, se n for 2, a segunda sub-rotina na Iist a, sao codificadas denero de uma sub-re tina, mas fora de urn loop. 0 efeito de .
ela sera execunda. A Listagem 17.7 ilustra esse sintaxe. stop dentr o de uma sub-retin a e 0 mesmo, independent emente se ela for ou
aac codificada dentro de um loop.
EHTlI.DA~ Listagem 17.7 Chcmondo uma serie de sub-retinas Em sub-retinas:
• check e exi t imediatamente deixam a sub-retina e 0 processamento
1 report ztx 1707.
2 do 3 t imes.
contin ua com a. pr6xima instru~ao execuuvel depois de perfonn.
3 perfornl sy.fndex of 51 52 53. • stop imediatamente deixa a sub-rotina e vai direrarnente para 0 evento
4 enddo.
end-of-se'lection.
5
6 fonn d . check, exit estop nao configuram 0 valor de sy- subrc. Se voce quiser
7 write: I 'Hi from 51' . configuri-Io, atribua urn valor numerico para ele antes de deixar. .
8 endfonn. A Listagem 17.8ilustra os efeires dessas instrU~6es dentro de sub-retinas.
9
562 APiEHOA EM 1I DIAS ABAPH

EHTRADA~ Lista ge m 17.8 as efeitos de exit, check estop dentro de umc o c6digo na Liscagem 17.8 produz a seguinte s:lfda:
r sub-retina
In sl
sy-s ubl"'C • D
1 N!!!port ztx17OB .
In sZ
2 data fl value 'X'.
sy-subre • o
3
4 clear sy -subrc . St opped. sy-subrc - 7
5 perfoT'll s1. write : / ' sy-subr c
6 perfonll 52. write : I'sy-subrc - ",
.t. sy-subrc.

AlliUS! ~
sy-subrc .
7 perform 53. write : / 'sy-subrc -'. sy-subrc . • A 1mb.5 traasfere 0 controle pan linha 17.
,
8 perform 54. write : I ' sy ~s ubrc -" , sy-subrc . • A linha 18 comelja urn loop. A linha 19 sai d o loop, m as Dio da
sub-retina.
10 end-cr -seleettcn .
11 write: 'Stopped; sy-subrc .'. sy-subrc . • A linha 22 ~ai da sub-retina, 0 controle retorna para Iiaha 6.
12 1 f sy-suarc • 7.
13 stop. • A linha 6 transfere a contrcle para linba 26.
14 " endt f , • A linha 28 trans'[ere 0 controle para linha 274 vea es.
15 write: I 'After Stop'.
16 • A linha 32 dew a sub-retina, 0 contrale retoma para a linha 7.
17 form sl. • A linha 7 transfere a controle para a linha 36.
18 do 4 times .
19 exit. • A linha 39 transfere 0 conrrole diretamente para a linha 10.
20 enddo.
• A saida da linha 11 inicia. em uma nova liaha, porque urn novo evenro
21 write ! 'In 51'.
lZ exit . comeccu.
23 wMte I 'After Exi t I • • A linha 13-sai do evemo e a lista e mostrada.
24 endfonn .
25
26 form 52.
Definindo yari6veis locois e g lo bois
27 do 4 times .
28 check II .. ' Y'. MOYO'" Umo vari6vel g/ob~1 e cqueic que e definidc foro de umo sub-rotlnc vti1izondo
29 write / sy-fndex. ID.MO,. a instruc;oo tabl es ou data . Elc pode ser ocessodo de quolquer ponto no
30 enddo. . progromo, se je dentro de um eventc ou dentro de uma sub- retina. ~ boo prcticc de
31 write I'ln 52' , ·prog romoc;Oo colccor definic;6es de vori6veis globo is no porte superior do progromo, em
3Z check fl .. 'y' . olgum lugar an tes da primeiro llnho de c6d igo executevel.
33 write / l After Check'.
34 end form. NOYO til... Umo vcri6vel 'ocal e definidc dentro de ume sub-rotinc vtilizondo 0 in~ruc;60
35 TWO" lecal, data au statics . Dizemos que elc e locol ~ sub- rotina . As vori6veis
36 fonn 53. definidos ufi~zondo local sOO ccessfvets de foro do sub-retina: os vari6veis definidos
37 do 4 times. utilizondo data ou statics n60 eec. Assim, se a sub-retina cha ma out ro sub-retina,
38 sy-subrc .. 7. vc rievels deflnldcs utilizonda 1oca 1 s60 vislveis de dentra do sub-retina chomada -
39 stop. vari6veis definidos utilizondo data ov statics n60 sdc.
40 write I sy-index .
41 enddo . Para variaveis locais definidas utilizando local ou da ta, a memoria C
42 endfonn. alocada toda vez que a sub-retina echamada. Essa memoria eliberada quando
43 asub-retina termina, e entia os valores dentro dele sao perdido s. Para stati cs,
44 forti 54 .
a mem6ria ~ rerida, Esses caracteristicas serio descritas pr ofun damente neste
45 write: l'In 54'.
46 endfol"'lll. capitulo .
,A"PRtHOA EM 21 DIAS ABAPI4 O~ 17, .OOUURI~O, EVENTOI EStJS.ROTINAS I 56S

Definindo uma area de trabalho tab l es 21 write: I ' 52-A' , zt xlfa l-l 1fnr.
As var isveis definidas que utiliz am a instrucio tables sao sempre globais. 22 sel ect si ngl e'" f rom ztxlfal whe re li fn r . 'V2' .
23 writ!!: I' 52- B', ztx lfal-l ifnr .
C olocar ainstrUliao tables na parte superior de urn programa define uma string
24 endform .
glo bal de campo. Colocar a mesma instrucao den tro de tima sub -rotina tambem
define uma String de campo 91oba1 desse nome. Portanto, voce nao deve utilizar
a instrucac tables demro de uma sub-retina, uma vez que a defini liao csempre o c6d.igo na Lista gem 17.9 produz a seguinte saida:
glo bal; essas definicoes globais devem ser colocadas na parte superior do
\AiOA~
*~----V9
programa. Sl -A V9
Para definiruma :irea de trabalho de tabela local den tro de urna sub-retina, 51- 8 VI
52-A VI
utiliz e 1oca1 em vez da instrucao t abl es: A sintaxe 6. a mesm a que t abl es, mas 52-B V2
ela define uma string local de campo, em vez de u ma glob al. As vsrisveis Sl~C V2 .
definidas por utilizer local sao visfveis den tro cia sub -retina e tadas as sub-ro- ·Sl~~~V9

tin as que a chamam. S2-A V9


52-B V2
*S2- --V2

e
Para ser precise , ume vcr icvel somente cc nhecldo dentro de um
programa depois do po nto em que e definido. Per example, se voce IHlllSE~ • A Iinha 2 define uma area de tra balha global identi ficada ztxl fal .
definisse ume vc ricve l no Jinho 10, yoct! eer ie capa z de ocessc -lc da • A linha 4 seleciona urn unicc regist ro de tabela zt xl fal eo caloca na
Jinho 11 em d ionte, mas noo an tes da linho 10 . No coso de umo area de trabalho global zt xl f al.
definic;oo loccl, voce pode cc esscr a versec gro bal do va riovel em
quaJquer ponfo ant es do defini¢o local. • A linha 5 escrevea valor V9 a partir daareade rrabalho global ztxlfal.
• A linha 6.p.assa 0 controle para linha 11.
A Listagem 17.9 ilustra a instrucao l ocal. • A linha 12 escreve a valor de 1ifnr da area de trabalhc global ztxl fa 1.

EN1RADA~ Listagem 17.9 A ;nslru<;co l ocal • A linha 13 define uma string local de campo ztxlfal. (E boa prarica
de pro gramacao colo car essa defini<.rao na p art e superior da sub-retina.
1 r eport ztx1709. Para as p rop6sitos desse exemplo, ela ecolocedadepois de wri te para
2 tables zt xlfal. demonstrar completame nt e 0 efeito de 1ccal .) Uma nova posi<.r ao de
3
mem6ria ealocada tendo 0 nome ztx l fa l . As referen cias para ztxl fal
4 se lect si ngle· from ztx1fal whe re lifnr • ' V9' .
5 write : / ' ''-~ - - ~ '. zt xlfal-li fn r.
depois desse ponto na sub-re tina e em eodas as ourras chamadas faria
6 pertann sl. referencia a essa defini'iao local de ztxl fal, nao a global. A global estd
7 wr1te : / '''Sl ~--' . ztxlfal-l1fnr. agora ina cessfveL
8 perform s2.
• A linha 14 selecion a urn anicc regist ro e coloca-o na area de trabalho
9 wri te : I '·S2-- ~ '. ztxlfal·li fnr .
10 localztxl fal.
11 fc rm 51. o A linha 15 escreve um valor apartir da area de trabalho local.Ele e Vl.
12 write: / ' 51- A'. zt xlfal-lifnr .
13 local ztxlfal. • A linha 16 trans fere ocontrole para a linha 20. A m emoria local fica
14 select si ngle· f rom zblfal where 1Hnr. ' VI'. aloceda e ainda sera visfvel den tro de 52.
15 write: I ' 51-8' . ztxlfal·l1fnr.
16 perform 52. .
• A linha 21 escreve a partir da area local de mem6ria definida em s1.
17 write: I . 51-C'. ztxlfal -l ifnr . • A linha 22 seleciona urn novo valor na local ztxl f al .
18 endf onn.
19 • A linha 23 escreve a partir cia local ztxl fal.
20 f orm 52. • A lin ha 24 retorna a controle para a linha 17. A m emoria local fica
alocada e inalterada.
566 "RENDA EM 21 OIA' ABAP"
~ Listagem 17.10 data e stat i cs
• A linha 17 escreve 0 valor colocado na local ztxlfa l por 52. EKTiADAr
1 M!port zt xl710.
• A linha 18 retorna 0 controle pan a Iinha 6. A memo ria local eliberada Z data: 11 type 1 value 8,
e 0 valor V2 e descartado. 3 f2 type 1 vatue 9•

• A linha 7 escreve 0 valor de l t fnr. Ela e agora V9 -


que teve quando sl fei chamado. '
0 mesmo valor •5 write: I 'before 51:' , fl . rz.
6 do 3 times.
• A linha 8 transfere 0 controle para.a linha 20. 1 pl!rfol'1ll 51.
8 enddo.
• Antes de executar a linha 21, urna defini~o local de ztxl f al cia foi 9 wM t l!: I ' af t l!r 51:', n , f2 •
. criada.. Portanto, a glob al ztxl fal -l i fnr e escrita, 10
11 101"1I 51.
• A linha 22 selecion a urn r egisrro na area de trahalho glob al ztxl f al. 12 data fl type i val ue 1.
o A linha 23 escreve V2 a partir da area de traballio global. 13 stati cs f2 typl! 1 v~lue 1.
14 write: I ' insi de 51: 1 , fl, f2.
• A linha 24 reroma 0 co ntrole para a linha 8. 15 perfona 52.
o A linha 9 escreve V2 a partir da area de traballio global. 16 fl -. f2 • 12 '" 2.
11 ertdfona.
Se voce defmir uma variivel local tendo 0 mesmo nome que uma variwel
18
global. a va.riivel local assumira a precedencia dentro d.a. sub-re tina, Con- 19 f ol"ll 52.
seqfient emente, voce mo sera, capaz de acessar a varifvel global do mesmo 20 wnte: ' 52·', fl, ra.
no me dentre dessa sub-retina. Tcdas as referencias serso para. a varisvel lccal. 21 endfonn.

Definindo dodos o c6digo na..ustagem 17.10 produz a seguinte sarda:


As varidveis definidas pela instrU~o data na parte superior do progr ama sao
before 51: 6 9 9
globais. As definiljoes de data denrro de uma sub-rotina sao locai.s para a insi de51: .1 1 '2- 8
sub-re tina, A mem6ria e aloca da para essas variaveis quan do a sub-retina e ins ide51: 1 2 '52-2- 8
8
9
9
chamada e e Iiberada quaodo ela retorna. Com variaveis definidas utilizaodo inside 51: 1 4
1ccal , os valores nessas variaveis dat a serso perdidos quando a sub-retina after 51: 8 9
retornar, o As linhas 2 e 3 definem as varisveis globais fl e f2.
Utilize a instruliao statics p ara CM variaveis locais qu e Ili o sejam • A linha 7 transfere 0 contro le pan a linba 11.
libertadas quando a sub-retina termina, A sintaxe para sta t i cs ea mesma que
• A linha 12 aloes nova memoria para a. variivellocal fl e atrib ui a ela.
a sintaxe para. a instrucio data. A rnem6ria para. urna varisve l estdtica ealocada
na primeira vez que a sub-retina e chama da e e r erida quand o a sub-retina urn valor de 1.
rermina . Entretanro, uma varia-vel esti tica e visivel somente d e dentre da • A linha 13 aloca nova memoria para a vanavel escl.tica f2 e atribui a ela
propria sub-retina, e nio de dentro de sub-retinas iniciadas par ela. Da pr6xima urn valor de 1.
vez que a sub-retina far chamada, a rnern6ria para essa variavel torna-se visivel o A linba 15 mnsfere 0 controle para a linha 19.
nov amente. 0 valor dentro dela sera 0 mesmo de quan do voce river retom ado
• A linha 20 escreve a partir das varifveis glo~ais f1 e f2.
dessa sub ·rorlna da ultima vez.
A memo ria de um a vwvel estinea p ertence i sub·rotina qu e a alocou; • A linha 21 retoma 0 controle para a linha 15.
essa variivel nio e visivel a panir de outr-.s sub-ratinas. Se voce alocar uma o A linha 16 ntultiplica f2 por 2 e atribui 0 valor para fl e f2.
variavel estitica do rnesmo nome em mu ltiplas sub-rotinas,'essas serio variaveis linha 6. A ~~m 6r iade fl eliberada,
• A linha 17 ret orna 0 controle para a e
separadas com sua propria mem6 ria e seus pr6prias w la res. mas a de f2 eretida. Entretan to, ela nio sera Vlslvel novamen te at a
A Lista gem 17.10 ilus tra variaveis dd inid-.s utilizando dat a e s tatic s.
pr6xima vez que a sub-rotina. for chamada .
DIA 1HODULWl.I\AlHVEHTOSESlJ8.ROTlfW r 569

• 0 loop inicia e a linha 7 novament e traas fere a ccntrcle para a linha voce deve memorizer sew nomes, assim como guardar as palavras-
11. cbave em instru~5es.

• A linh a 12 aloca nova m em oria para fl e atribui urn valor de l.


• A linha 13 faz com que a memoria antericrmente alocada para f2 o Posso ver 0 programa de driver? E possivel escolher 0 driver?
Posse criar u rn driver? Quais sao as diferengas en tre as pro-
tcme-se novamen te vistvel com essa sub- rotina. 0 valor em fZ ~ Z, gramas de driver disponiveis?
como era quando a sub -retina terminou da ultima vez.

Resumo
1010 ~
1!I.iO ,. o o e
progum a de dr ive r chamado banco tk dado, 16gico. Voce
pode esco lher 0 programa de driv er preea chen dc n os campos de
• 0 ABAF/4: tern tres ripos de unidades de modularizacio: evectcs, banc o de dados l6gicos na tela de atributos de programa. Se' voce
sub-re tinas e m6d ulos de fun~ao. nao espec ificar u m, urn padri.o e au romaticamente atribufdo. A
acica vez que voce icl. querer escclher a driver sera quando quis er
• Existem eventos em todos os programas, Se nenhum for codificado, Ier as dados a partir do ban co de dad os e Iorcecs-los para seu
o evento padr jo sta rt-of- s el ect ion sed automaricamenre iaserido.
programa auromaticamente. Os bancos de dados 16gicos padrjo
. in itial izati on e frequenremence utilizado para atribuir vaIores a
nao leem a partir de b anco de dados - eles apenas acionam as
parfmetrcs que aparecem em urna tela de sele~aa. end-of-selection e eventcs. Independentemente do driver que voce escolher, os
usado pua limpeza do programa, resumes ou rorinas de rerminacao
eveneos sempre serao acionados na me sma crdem relativa. Mesmo
ano rmal. O s event os sao acionadcs pelo programa de driver. 0 driver
Sf voce criar seu pr6prio programa de ban co de dados 16gico , nao
semp re inicia antes de seu programa e controls quando os evenros sao poderf alrerar a sequencia relativa de eventos, nem seus names.
execundos. Voce Dio pode colocar urna condicac em volta de urn
nem poded criar novas. Pan ver um p rograma de driver , inicie de
nome de evento . Toda s as eventos sao acionados no vamente quando
dentrc do edieor de codigo-fonte, Escolha 0 caminho de men u
a usuirio retcma da lista. En tr etanto, as variaveis de tela de sele~o Utilities-Help On. Selecione a bod e de op~o Logical Database
.cia sao pre enchidas de novo a partir da irea de dados do programa.
e digite um id de banco de dado s 16gico (KDF, par exemplo). Vo ce
• Util ize.ext t, check e stop para deixar urn evento. entao veri a estrutura da banco de dado s 16gico. Escolha a cami-
nbo de menu Gor o-Daesbase Program para ver a pro gnma de
P&R driver . Lembre-se, 0 codigc mestrado denero do driver n este
capitulo era urn pseu doccdigo, entia voce nao vera as instrucoes

o o que acontece se eu river dais eventos de mesmo nome denerc


do m esm o programa?
de como acionar a inicializacic at. Os banc os de dados J6gicos sao
urn tema complexo e exigem mu itos capitulos para serem descritos
completamente.

o Se voce river du as instru gdes codi ficad as de mesm o nome den -


teO do m esmo programa, qUa.D.do 0 ev ento for acionado a o Se coloco uma instru~o write em urn evento que vern an t es .d e
sistema executara os dais na ordem em qu e eles aparecem em start-of-selec:tion) eIa func:iona somente quando nao h oi um a
seu programa. tela de sele~o. Se houver uma tela de sele~o, mo vejo a saida.
Par que?

o Co mo passa saber a diferens:a entr e urn nome de evento e uma


instro~io?
o o R/3 uti liza alga denominado contexto de tela pan aceitar
entrada e exibir suda para voce. Voce pode pensaI em contexto
de tela como uma tela. Cada contexto de tela eprocessado em duas
o Se voce vir uma un ica palavra segu ida p ar u rn pedodo, isso e
normalmenteum even to . AI6n disso, a s even tes nae tern quais- fases: a fase de dialogo e a fase de lista. A fase de dialogo semp re
quer ou tras caracter£sticas identificaveis que seus n ames. Eles ocorr' primeiro. seguida pela lista. A fase de dialogo e utiJizada
sio simplesmente palavr.as rese rva das e p ara re con hecer u rn para exihir campos de entrada para a usumo, como aqueles gera-
570 ! APR"DA EM 21 DIAS AUP/4

dos po r uma instrU~ao de pargmetros. A fase de lista e utilizada


para exibir a safda da instrU~ao wri t e para 0 usuario. As duas fases
utiliz am 0 mesmo contexte de tela, portanto uma sobrescreve a
out ra. A fase de dialcgo, ent retanto, interrompe a entrada de
usuirio e eerao perml te a si mesma ser mostrada antes de a lista ,
ser mostrada. En tao, se voce emite uma instru~a.o wri te no evento f
init ialization e se a tela de sele~o e most rada, a tel a de sele~ao
sobrescreve a safda da write e essa sa!<b. e p erdida. Voce en tia deve
escclber Execute na tela de s ele~o e, se as instrucoe s write entia
forem emitidas , a lista sob resc reve a tela de selc!jao e voce veri a
saida. Entretantc, se naa river uma tela de selc!jao. as gravar;oes

Oi 18
que ocorrem em in itial i zati on ainda poderac ser vistas.

Wo rkshop
o Worksho p oferece duas maneiras de voce verificar 0 que aprendeu nesee
capitulo. A se~ao Teste cfer ece perguntas para ajudar a solidificar seu entendi-
mente do co nteado aboedado e a sec;:ao Exercfc io permite que voc e pratique 0
qu e aprecdeu. Voce pede en contrar as respostas as pe rguntas do Teste e aos
exercfcios no Apendice B, "Respostas is peegunus e aos exercfcios". Modulariza~ao: passando
Teste paramelros para sub-rotinas
1. A varia~o write to cia instru~ao write acicna top-of-page?
2. Que eventcs voce nao utilizaria.em stop ? D epois de completar esse capitulo, voce sed capaz de
3. Em que po nt.o uma variavel econhecida denero de urn programa? • P assar pardmetros digieadcs e eao dig itado s para.sub-retinas
• Passer parametres de tres mane iras: por refer ecci a, por valor e po r
Exercicio 1 valor e resultado
erie u rn rela.t6rio que aceita urn parimeteo de entrada chamado p-landl. • Pass u strings de campo e ubelas internas para. uma sub-retina
Defioa-c como ztxl fal~1andl. Preencha esse campo com a valor padrio US em
• En t end er como as variaveis sao compartilhadas entre sub- ro tin as
tempo de execu~o, utilizando 0 even to Init ia l i zat io n. Seu programa princi-
externas e int ernas
paldeve tee uma Unica instru~ao para. chamar uma sub-retina que selecioca
e
regisrros de zt xl fal , onde a campo 1andl igualao pardmetro p_l andl. D entro
de sel ect, chame outra sub-retina para escrever a registro . Utilize 0 evento Passando para m et ros
tcp-of-pape para criar 0 titulo do eelat6rio . Escreva 0 valor do campo p_landl Alem de definir variaveis utilizando t abl es , local, data e stati cs, tambem
no titulo. podem ser definidas variiveis na propria iru; tru~ao fOI}Jl. Estas sao conhec idas
. , como parametres, que podem see locais au referencias para variaveis globais.
A mem6ria de parametres locais e alocada quando a sub-retina e chamad a e
Iiberadaquando finalizada.
Se vc cs definirvariaveis na instrU~ao form, a instrucio perform deve passar
urn valor para cada urna dessas varisveis.

htlp:J/wwN.CIJlTIP'Jt,com.br
572 'PREND' ,M 21 DIAl AB,P/4

NOVO .... Os nomes de pcremetrc que oporecem no instrv~co form seo chcmodcs • A linha 14 define tres variiveis: fl, f2 e f3. Ela atribui 0 valor de fl a
tRiO r por6metrcs formais . Esse termc e IOcil de lembror, porque "former possu i 0 fl, 0 valor de f2 a f2 e 0 valor de f3 a f 3.
rod~ol "form". Par exempla, no instru¢lo fom 51 using pI changing p2 p3, as
parametres pl, p2 e p3 sao chomodos pcremetrcs fonnois . • A linha 16 escreve as valares das vuiiveis defmi das na linha 14 na
instrulSao form; fl, f2 e f3.
NOYO ... Os nomes de pordmetros que oporecem no instru¢o perfonn soo chcm cdos • A linha 17 retorna a controle para a lin.ha 7.
TWO r porOmefros recrs. Par exemplo, no instruc;co perform 51 using fl changing
Revise a sintaxe das IDstIlllSoes form e perform antes de continu ar. Con-
f 2 f3, as parametres fl, f2 e f3 soo chomodos pcrametros reels.
suite a sC!jaa "Definindo e chamanda sub-retinas Ineemas", no Capitulo 19.
U rna maneira de definir varidveis como parfmetros e ilustrada na Lis-
tagem 18.1.

EHTRADA~ Listage~ 18.1 Passcndo pa ra metros pora uma sub-ratine


1 report ztx l BOl .
~-----
IFa~a
Utilize pcremetrcs formais digitodos,
eles sOo mo is eficientes do que as
Nao passe tabelas inte mos par val or, nem
per volar e resultado, a me nos que voce
Z data: fl value ' A' . parflmetros noo digitodos. reolmen te precise de uma nova c6p io do
3 12 val ue 'B', tcbelo intemo. Posse pa r6metros par
4 fJ value ·C' . referencia sempre que pc ssfvel.
5
6 perfom: 51 using fl 12 ra ,
7 52 using fl 12 13 .
8
9 tOrrt 51 using pI p2 p3. Criondo pommetros digitod os
10 vrtte : I fl. f2. 13.
11 / pl. pl. p3. MOVO.... Os porern_~s formats podem ser digitcdos au nOo. Urn porbmetro O'9itcdo e um
12 endform. TEUO ,. por6metroformal que tem urn tipo de dodo seguindo seu nome no instrv¢o fonn.
13 e
Um pa~metro ndo digitcdo um po~metro formal que nciotem um tipo de dodo seguindo
14 torn 52 usi ng fl 12 f3 . suo defini¢o no i~oo fonn. Na Ustcgem 18.1, todos as parametres ercm nao digllada s.
15 skip.
16 write: / f l . f2 . rs. as pardmetros formais nao digitados permitem que voce passe uma
17 endform. varUvel de qualquer tipo de dado ou comprimentoparaole. 0 parametro fonnal
utiliza os atri butcs do parimetro real. Por exemplo , se vocs passa urn inteirc
de quatro bytes para urn parfmetro formal DaO digitado pi, este torn a-se urn
a c6d.iga na Listagem 18.1 produz a seguinresatda:
inteirc de quatro bytes. Se voce passa uma string de caractere de comprimento
A 8C igual a 3 pan 0 me~mo parimetro, ele se tamara a earactere 3.
A8 C

A 8C Sintaxe para pcrdmetros digitad os

AN.iUSE~ • A linha 6 transfere a cantrole para a 1inha 9.


• A linha 9 define treS varifveis: pI, p2 e p3. Ela atribui 0 valor de fl
I
I
-
CI'
Z
fom sl using u1 type t value(u2) type t
ch""gi ng cl type t value (e2l t)'lle t .

pan pI, 0 valor de f2 para p2 e o valor de f3 para p3.


• A linha 10 escreve as valores das variiveis pl, p2 e p3 e as varisveis
globais fl . f2 e f3.
I S
m
cede:
• 51 e urn nome de sub-retina,
• ul, u2, c1 e cz sao parametros formais.
• A linha 12 retorna 0 contrcle para a linha 6.
T • t~. tantoum tipo de dado de ABAP/4, como um tipo de dadodefinido
pelc usutrio.
• A linha 7 transfere a controle para a linha 14.
r

574 APRE,,, EM 21 DIAS ASAP/' DlA lUODUU~lAlio , PASSAHDO PARiMmOS PARA SUS-R1lll'AS 575

linhas 2 a. 5 definem qua.trO va.riivei s tendo varios tip os de dados.


IHiUlE~
Os seguintes pontos se aplicamr • As
F3 edo tipo c e ccmprimeatc iguala. 8, com um comprimento de safda
• Somente urn tipo de dado pede ser especificado na instnu;ao form. Urn
igual a 10 (definido no domfnio de syst-datum). Fa e do ripe c e
co mprim ento Ilia pede ser especificadc..
comprimento 6 com urn comprimento de saida. de 8 (definido no
• Se voce define urn pargmerrc forma.! urilizsndo urn tipo de dado de domlnio para. sy-uzef t }.
comprimento fixo (esses sio tipos d, t, i e f). 0 comprimento do
• A linha 10 rransfere 0 conerole pan. a linha 12.
parametro real deve corresponder ao tipo de dado do parimeuo
formal Esse enormalmente 0 case, ja que voce normalmente prcjecara • Na 1inh.a. 12, pI aceita somente parsmet rc s reais do tipo c. fl edo tip o
seu p~ogram~ de tal forma que as tipos de clades dos parametres c e comprimento igual a. 3, entia urn comprimentc de 3 unidades e
atribuido a pl. Se f1 nae fosse do tipo c, urn errc de sintaxe t eria
form~5 e rears conesponderio entre si, Voce normalmente mo passa.
ocorrido. p2 eum tipo de dado de comprimentc fixo ; 0 tipo i esempre
. urn txpo de dado.para um outre ripe de dado diferente.
de comprimento iguaI a 4; f2 tambem e, eerao as parimetros corr es-
. .. Passar ~~a variavel com 0 ~po de dado au comprimento errado para urn pondem-se complewnente. p3 e p4 tambem sao tipos de dados de
pa::metro digitado causa urn erro de sinnxe. A Listagem 18.2 mostra como comprimento Iixc, come sao seus parimetros reais.
utilizar padmetros digit ados.
• As linhas .16 a 19 escrevem os valores de pI a p4. N ote que 0 compri-
mento de safda DaO e· passado do parimetro real para. 0 form al 0
!HlliDI~ Listagem 18 .2 IJnlizondo porOmetros digitodos
comprimento de safda. dos pardmerros formais e confi gurado como 0
1 r~ort ztxlOO2 . padrao para. cads tipo de dado. Issc faz com que a safda de data. e a
2 data: f1 value 'A'. hera nao tenha separadores.
3 f2 type 1 value 4,
4 f3 l tke sy~datUli.
Os pardmetros digita.dos tem treS vantagens:
5 f4 like sy- uzef t. • Sao mais eficientes. Enecessaria mencs CPU a fun
de alocar memoria
6 para. urn parimetro digindo, que pan. um nio digitado.
7 f3. 5y·datum.
8 f4 · 5y- uzef t . '. • Ajudam a. prevenir erros de codifica.l;jao. Ji que voce MOpod e passar
9 urn parlmetro de tipo incompatfvel, 0 verificador de sintaxe indicari.
10 perfonn sl using fl f2 f3 f 4. o eITO para voce se ten tar passar urn parametr o incompatfvel.
11
• Ajudam a. prevenir erros de tempo de execul;jao. Par exemplo, se seu
1Z fo rm 51 usi ng pI ty pe c
13 pZ t ype f programa aceitar uma variavel nao digitada e executar nele um a ope-
14 p3 type d ral;jaO aritmecica, e posslvel passar dados de caractere pa.ra essa sub-
15 p4 type t. retina, Se isso acontecer em tempe de execu~ao, um dump curto
16 wr1te: I pI, a.contecera.
11 I p2.
18 I p3.
Possondo strings de campo
19 I ...
ZO endform.
voce pede passar uma string de campo cia mcsma maneira que qua.lquer outrO
parimetro. Entrecantol se voce quiser a.cessaros cemponentes cia. strin g de cunpo
dentro cb. sub-retina, voce deve fazer a estrUtut'2. cia string de camp o conhecida
a c6digo n' Listagem 18.2 produz, seguin" , aida: para. a sub~rotina, por meio de urna. desw duas a.di~6es ainStruliao .f orm:
MA.
like x
19960510
• •
• structure x
164836
A qui, x pode ser uma string de campo au um a estrutura de DDle ou
• tabela. Porexemplo, form sl using h I structure zt xlfa l defin e fs1 co m o
tendo a estrUtura de tabela DDIC ztx! f al.
576 AP RENDA EM 21 DIAS ABAP/4 D. lU DDUURIlA\AD, /ASSAIl" pARiMETlDSPARA SU6·R011N.4S 577

18 changing p3 val ue(p.) .


Co nt rol a ndo como as pardmetros sao passados 19 write: I pI, pZ. p3, p4.
H i eres maneiras de passar as p arimetros pan. uma sub-retina: 2D endfol"Ul .
21
• Passer por referencia 22 form s2 us ing pI value(pZ} va ll1e(p3) p4
23 changing value(pS) p6.
• Passar por valor 24 wri te: I pI , p2. p3. p4. p5, p6.
• Passarpor valor e resultadc 2S endfc re.
26
A sintaxe na instruc;ao form determine como as varidveis slo passadas. A 27 t om s3 using value{pl}
sint axe em perf orm mo faz isso. 0 seu significado sen explicado na proxima 28 cha nging p2 val ue(p3 ).
Seli3.a. A primeira coisa ne cessaria e aprender a. codificar each metoda. Z9 write: I pl . p2. p3.
A Tabela 18.1 mostra a relacionamento entre sintaxe e meeodcs de 30 endfol'1ll.
passagem.

Ta bela 18.1 As cdlcoes de instruc;60 form e 0 metodo resultcnte de possogem de o c6digo na Listagem 18.3 produz a seguince safda:
panlmetro A BC 0
A, 8 C D E F
Meto da A BC

• A lichs 9 passa quatrc parametres para a.sub-retina s1. A sintaxe na


IMlUSE ~
usi ng vI Passe por refe~ncic
chang ing vt Posse por refer!ncio linha 17 det ermina como des sao passados. f1 e f3 sio passadcs por
using val ue (vl) Posse por valor referenda; f 2 e passado por valor; f4 e passado per valor e resultado. .
changing val ue(vl) Posse por valor e resultado • A linha 9 passa seis parimetros para. a sub-retina 52. fl, f 4 e f 6 sio
passados por referencia; f 2 e f3 sio passados por valor. f 5 e passado
Embora a sintaxe em form e perform possa diferir, por causa da clareza de par valor e resulrado.
programa elas devem sec as mesmas. • A linha 12 passa tr es parametres para a sub -retina 52. f 3 epassado par
A Listagem 18.3 ilustra como codificar essas adi<;6es. valor, f3 epassado par reierec cie e ';5 6 passado par valor e resultado.
Embora a instt1.1iaOperf orm apenas especifique using, a instru ci o form
ENTRAOI~ Lislagem 18.3 Como codifica r adi, ,,e, de parOmetra pe de diferir. Ela especifica tanto usi ng como changing. A sintaxe na
instt1.1c;ao form assume precedencia e determina a met oda pelo qual a s
1 report zt xl80J.
2 data : fl value 'A' .
parirnetros sao passados.
3 f2 value 'B' . Lembre-se do seguint e:
4 13 val ue ' C' . ·
5 14 value ' 0' , • perfonn e form devem cant er 0 mesmo niimero de parametres.
6 f5 value ' E'. • A sintaxe nas instrucoes perform e form podem diferir.
7 16 value ' F' .
8
• A sint axe na instru~io f orm determina apenas 0 meto da pelc qual urn
9 perform 51 using f1 f2 paramerro epassado.
10 thanging 13 f4.
• A adic;ao ve1ue ( )nio pede ser utilizada na instru c;io perfo rm.
11
12 perform s2 using f1 12 fJ 14 • using deve vir antes de changing.
13 cllanging 15 f 6.
• A adi~a ust ngs6 pede ocorrer uma vez em uma instruc;ao. A mesma
l'
15 perforlll s3 using fl f2 fl . regra se aplica a changing.
16
17 tom 51 usi ng pI val ue (p2)
578 APIEi DA EM 21 DIAl AUP/4 DIA 11, IIOD1JUR1ZA(AO, PillIJIOO PW.mOS PARA51Ja.R1J11NAS 579

7 f oT'll s l using pI.


Utilizando OS metodos de possagem de pardmetms 8 pI - 'X'.
A Tabela 18.2 resumidam ente descreve as [reS metodos de pa.ssagem de 9 endf orm.
parametres.

Tcbela 18.2 Metodos de passogem de parametres o ccdigc na Listagem 18.4 produz a seguinte saida:
X
Metodo Descri~ao Vantag ens
Por referenda Posse um po nteiro po re a Muito eficiente ANluSE ~ . • A linha 2 aloca mem6ria para a variavel flo Por esse exemplo, vamos
posit;oo de mem6ria o riginal
partir do pressuposto que a posiliaOde.mem6ri a e 1000.
Pcr vclcr Alcco umo novo posic;oo de Impede olte rac;oes no
mem6rio pa ra utiliza~co dentm variey!!!" possodo • A linha -1- trans fere ? contro le para a linha 7.
do sub-retina. A memoria e • A linha. 7. faz com que fl seja passada par refergncia. Portanto, ,,1 e
liberndo quando a sub-refine
termina.
urn ponreirc para posiliao de mem6ria. 1000.
Porvalore resultodo Similar 0 po ssor por vclcr, mas Permite oltero<;6es e • A linha. 8 modifica a posicfc de memoria 1000, fazendo com que a
o conteUdo do nova membria 6 permite umo reversec mem6ria para f1 se altere para X.
cop iodo de volta para a mem6rio (rollbock)
original antes d e retornor.
• A linha. 9 retoma 0 ccctrole para a. ~ 5.
• A 1inha. 5 escreve 0 valor X.
Passanda para metros por referenda Com sub-rotinas ineemas, In pouca diferenca ent re passar parametr e s
Quando voce passa um parimetro po r referenda, a nova mem6ria nae ealccada por referencis, e acessar varU.veis globais de dentro cia sub-rotina. Ambos
para a valor. Em vez disso, urn pont eiro para a posi~ao original cia mem6ria e permitem que voce altere 0 valor de uma variavel global direeamec re. Nas
passado. Todas as referencias para 0 parimetro sao referencias para posi~ao sub-retinas externas e m6dulos de fun,ao (veja 0 CapItulo 19, "Modulariza,ao:
original cia memoria, Altera~6es na varidvel dentro cia sub-rotina anializam a. m6dulos de fun~o. parte 1"), a passagem por referencia. e mais ut i!. Mesmo
posi'iaa original da memoria im ediatam ente, A F igura 18.1 e a Listagem 18.4 assim, passar pargmerros para uma sub-retina - seja ela interna ou externa-
ilustram como isso funciona. ~ urn born estilo de prcgramacio, que tcrna a. manutencdo mais facil e melho ra
o readaptabilidade de seu progrema.
Figura 18 1 eoderecede mem6rio 1000 As duas adi'ioes us; n9 f l e chang; n9 fl passam fl por referenda - elas sao
report zt x1804. ~,~ ntes de c:homodo de 51
Como um pon5ml!trO
data f1 valu e 'A' . . _
,Q

identicas na fun,ao. A =io paraque asduas exisram e que- utilizadas adequada-


possocJopor
refer~ndo ofela a
~t ~~bUiC;OO 11m 51 mente_ podem documentar quando a. sub-retina. mudara. urn. pardmetro ou nac.
posi¢o original do
perfonn 51 us i ng f1 ~ Ao codificar changi ng com parimetros, a sub-ratina se alt er a, Voce deve
mem6ria.
wr1t eI f1 sc ldc : X 1 mer a codifica.c;::io us; n9com parimetros que Dio sejam aleersd os pela sub-ro-
tina. A Listagem 18.5 ilusua esse ponto. .
..- ..- . , . - ..: . • ;.'-'. ~' , ., -.-Jr:.~t:f .
. -.. . .
fortll. ~1 .u.5 ing_ PI., pJ e:'t~~..eo.r~~'pposi¢o de.m.e"!~~.l 000
,: pl - ' X '. - :~ iss2~~~o-ae mem6ri o 1000 pora 'X' .
endform . . - - .•--_.
EllflADI~ Lista gem 18.5 using e changing seo id€l nticos no func;eo

1 re port ztxI805 .
EIlTU.DA ~ Listagem 18.4 a efeito do possogem par refen! ncio Z dat a: fl val ue 'A'.
3 f2 value 'a' .
1 report ztx 1804.
2 data fl value 'A' .
•5 wri te : I fl. f2 .
3 6 perform sl using 11
4 perfonn sl usi ng fl . 7 changing f2.
S 'IIrae I 11.
6 ,
8 write : I fl . f Z.
580 A"ENDA EM 11 DIAS Am/4

10 fo m 51 using pI o c6digo na Listagem 18.6 produz a seguinte " ida:


11 changi nri p2.
X
12 pl ·pZ - 'X' . A
13 endforlll.
• A linha2 alOC2. mem6ria para a varisvel f l.
o c6digo na Lisragem 18.5 p roduz.a seguinte saida: . • A linha. 4 transfere 0 contrale para linha 7.

SAillA ~ AB • A linha 7 faz com que fl seja passsdc por valor. Portanto.jn se refere
XX a uma nova posilj2.o de mem6ria que ~ independente de fl. 0 valor de:
fl automaticamente e copiadc na mem6ria para pI.
ANiliSE ~
fl e f2 sao passados por referencia para. sl. Portanto, pl e p2sao ponteiros
para fl e f2. As altera~6es para pl e p2 sao imediatamecte refletidas em fl e • A linha 8 modifies a mem6ria para pl. fl einalterado.
fl. Esse exemplc 56 ilust ra qu e epcssfvel alterar qualquer parimetro passado • A linha 9 escreve 0 valor X.
por refer!nci.a. Voce deve codificarseus pardmetros de modo que usi ng e
• A linha 10 retorna a controle para a linha 5.
c~angi n9 documentemapropriadamente sua ucilizaliio desses paclmetros.
• A linha 5 escreve a valor A.
Passando pa rametros par valor U tiliz.e a passagem por valor, quando voce precisar de uma c6pia local de
Quando vcea passa um parimetro per valor, uma no va mem6ria ealccadapan. uma varavel que possa ser alrerada sem afetar a original. A passagem por
esse valor. Essa memoria e alocada quando a sub-retina e chamada e liberada referencia ~ rom eficienee que a passagem por valor. Utilize 0 metoda por
quando a sub-ratina retoma. Porranto, as refereacias para. 0 parimetro sao referencis, a mencs que voce precise de -um a c6pia local independente cia
voltadas para uma Unica area cia mem6ria que e conhecida apen.a.s dentr o cia variivel
sub-retina; a posi~ao original d.a mem6ria esta separada, 0 original estd
inalterado se vccz alterar 0 valor do parimetro. A Figura 18.2 e a Listagem 18.6 Passando as para metros par valor e resultado
ilusuam como isso func iona. A passagem par valor e resultado e muito similar apassagem par valor. Como
·1 no caso da passagem por valor, uma nova area de memoria e alocada e ela
Fi g ur a 1 8 2 report ztx1 806. m en tes do chomoda a 51 armazena uma c6pia independente da variavel. Eliberada quando a sub-retina
dat a: fl val ue ' A' . ~
Com o urn porfrmetrc . op6s a otribui~50 em s1 termini. e isso accctece tambem quando a diferen~a ocorre.
pos sa do per valor
a/ceo umo novo
perform 51 using f lo Quando a instruliaa endfonn e executada, ela copia 0 valor da area de
posi¢o de writ eI f1. soldo: A mem6ria local de volta para a area original de mem6ria. As altera;oes do
ormazenomeTJto parimetro dentro d.a sub-retina sao refletidas na original, mas nio at! a
Independente do
original.
sub-rotina reternar. .
Isso pede pareceruma diferenca pequena, mas eorna-se maier. Voce pade
modificar, case a c6pia aconteca ou nao.
A c6pia sempre ocorre, a menes que.voce deixe a sub-rotioa, utili.z.a.ndo
EIlTlADA~ Lisla g e m 18.6 0 efeito de possegem por volor
uma de duas instrUlioes:
1 report zt:d8 06. • stop
2 data: fl vat ue ' A'.
3 • message ennn
• perlol"lll 51 IIsi ng fl .
5 writ!! I fl .
A instrUl;ao stop finaliza a sub-retina e vai direeemeate para 0 evento
end-cf -sel ect 1on. Se pl foi passado por valor e resultado, as alteralioespan pI
6
7 fonn sl using val ue{pl) .
serio descartadas antes de end-of-sel ecti onser acionado. Num sentido; stop
B pI • ' X' . compona-se como urn mini-rollback para parametro s de valor e resultado.
9 write / pI. Quando eiltilizada dentro de urna sub-rotina, a instnJ'iao stop enormalmente
lD endfonn. precedida par urn teste de urna condiliio ~orma1 dentro do programa. Se a

~~i~
~i~;
582 APRENDA EN 2t DtAS ABAP/4 DIA 18:MODWRlZA~O: rASSANOO pARlMm:os PARA SUB-Rn1lNAS sa3

ccndicac manna! su rge, stop. e executads. Esta descarca as alterac;oes para o c6digo na Listagem 18.7 produz a seguinte sai'd a:
variaveis de valor e de resulradc e adona end-of-sel ect ton, onde as procedi- St opped. 11 :' B
mentes de limp eza sa.o errdo executados.
Utilize a passagem por valor e resultado para pargmetros que voce quer
• A linha 2 aloes mem6riapan a variavel f l.
alterar, pois pode haver uma possibilidade de que voce queira descartar as
alterac;oes se uma condicl o aoorm al surgir em sua sub-retina. • A Iinha 4 transfere 0 controle para a linha. 9.
• A linha 10faz com que f1 sejapassadopor valore resultado. Pcrtan to,
pI se refere a uma nova posiljao de mem6ria que ~ independente de fl.
A instru¢o message e seu efeito sab re a s sub-rctincs sOo obordados
no Capftulo 21, 'Telos de sele¢o·.
o valor de fl eautomaticamente copiado na mem 6ria para pt.
• A linha 11 modificaa mem6ria para pI. fl einalterado.
A F igura 18.3 e a Listagem 18.7 ilustram pardmetros passados par valor • A linha 12 copia 0 valor de pI de volta em fl , Libera pl e transfere 0

e resultado. controle para a linha 5.


• A Iinhe 5 passa 0 controle para. a linha 14.
Fig u r a 1 8 3 · enderer;o de memoria 1000
Como urn par6metro report ztxl807 .
antes do chcmcdo a s1 • A linha 14 faz com que f1 seja passado por valor e resu ltado. Uma
s de retcmcr de 51 no va area de memoria ~ alocadapara pI e 0 valor de 11 ~ copiado nela.
possadof'Ol' valor ~ dati: fl value ' A' .
resultado olocc urno
nova posi¢o de perfonl: 51 "using f1 • A linha 15 alters 0 valor de pI para B.
writl!: I fl. safda: X
ormozenoml!!nto • A linha 16 emite a instru)ao stop . Ela Iibera a mem6ria para pI e 0
indepe ndente do
original e copio 0
valor alte"cado ~ perdido. 0 centrale ~ transferido para a linha 7.
valor de vol'" • A linha 8 escreve 0 valor B.
novam~e.

Possando tobelos internos como porcimetros .


Talvez sejauma boa ideia revisar tabelas internas agora,especialmente a sintaxe
OORADA~ Listagem 18.7 0 efeito de passagem por valore resultodo de tt[ ] .
1 report ztdB07 . Voce pede utilizar urn des dais metodos para passar uma tabela interna
2 data: 11 value ' .... ". para uma sub-retina: .
J
4 perform: 51 changing fl . I. Passar com a linha de cabecalho
5 s2 changing 11. 2. Passar apenas 0 cerpo
6
7 end-ct -selecttcn. Sea tabela interna riverumalinha de cabecalho, a merodo 1passa as dais
8 wri t e: / 'Stopped . 11 "", fl. para a linha de cabecalhc eo corpo para a sub-retina. 0 metoda 2 passa 56 0
s corpo para a sub-retina.
10 form sl changing value(pl).
11 pl· 'B'. Se a tabels intema me tiver urna linha de cabegalho, voce pode tambem
12 endfonn. utiliza r as dois merodos, Entretanto, 0 rceecdc 1 se comporears urn pouea
IJ diferenee - ele automaticamente criara uma linha de cabecalhc para a tabe la
14 form s2 changing value(pl) . inrerna dentro da sub -retina.
15 pl· ' X' . Nesse pccto, voce pede estar se perguntando, "Per que eu iria querer
16 stop .
passar uma tabela interna sem uma linha de cabecalho?" Na mai oria das vezes,
17 el'ldform.
voce nao vai querer fazer isso. Entreranro, se river urn case especial que exija
uma tabela intema sem uma linha de cabecalho, pre cisari passa-la sem uma
linhade cabe~o. voce ter:i quefazerissose utilizartabelas internas aninhadas
584 APRf HDA EM21 DIAS ABAP/4 D ~ 11, MDDUWlZA>'Do PASSAHDO PARAMrnDS PARA SIJ8.R011NAS 585

- uma tabela interna aninhada DiD pede ter uma l.i.nlu de cabecalho. Tabelas tabela in terna serjo desconhe cidos dentro da sub-retina. Acessar qualquer
intemas aninhadas sao util.izadas rom freqiientementc Il2. vers ac 4, entia essa componente dentro cia. sub-retina entia resultari em um erro de sintaxe.
tecnica sera necessaria com mais freqiiencia em sistemas mais novos. A sintaxe de que voce pr ecisa depende do metodo que utiliza para. passar
A Tabela 18.3 resume a efeiec de cada Urn destes meeodos em tabelas a tabela interna. A Tabela 18.5 mostra a siceaxe apro priaciapara. cada. metoda.
internes com e sem linhas de cabecalho.
Tabela 18. 5 A sintaxe para desaeve r a tobelo inte rno pera a sub- retina
Tabela 18.3 Metodas e resultados de possogem em umo tobelc interne pera umo
Metoda Sintaxe Valores v6lidos para x
sub-retina
Com linho de tables it stru cture x Uma string de compo
Metodo Se a ta bela Inte ma Se a tabela inte rno ccbecclhc
tiver uma linha de cabesalho nao fiver uma linha
Umo estrutura de ODIC
de cab~alho
Uma tab ela de DDIC
Com Iinhc de Possa ambos eric umo linha de
Uma tabelo interne com umc
cc becclhc ccbeccthc dentro do
llnhc de ccbecolhc
sub-re tina
tables it li ke x Umc tcbelc inferno sem uma
Sem t.nho de Posse 56 0 ccepc Posse 0 corpo
linha de ccbecclhc
ccbecclbc
Um corpo inferno de tobe la
(i t [ ]1
A TabeIa 18.4 mos rra a sintaxe pua cada metoda de passagem em uma Sem linhe de using it [ 111ke X Uma tabel a interne sem linho
tabela intema para uma sub-rotin a, ccbecelhc ccbecelhc
Um cerp o Interne de tabelo
Tabela 18.4 A sintoxe de codo metoda de possogem em umo tcbela lntemo para (it [ )J
umo sub-refine

Metodo Sintaxe Como passodo A adi~a.o structure esperaurn nome de strin g de campo depoisdela. Aqui,
Com linhode ccbecclhc form sl t ables tt Pe r referende coclifique 0 nome de qualquer string de campo, estrutura DDIC, rabela ou 0
Corpo openes form '1 using tt[ ] Per referAnde
nome de uma tabela inter na que tern uma linh a de cabecalho.
A adi!rao1; ke espera urn corpo de tabela depois dela.Aqui, codifique uma
form ,1 changing ut ] Per referend e
refersncia para 0 corpo de um a eabeb inte rna. Se a tabela int ema que vocf
fo rm ,1 u'i ng valu.(lt[ ]J Pcr vclcr
deseja atribuir names aqui nio tiveruma linha de cabecalho , tanto it au it[ ]
form ,1 changing value (ft [ 1J Po!" valor e resvltcdo ira se referir ao corp o de it. Se it river uma linha de cabecalho, scmente a
sintaxe it [ ] podera ser utilizada para referenciar 0 corpo de it. .
Se a tabela iaterna tiver uma linha de cabecallic, 0 primeiro metodc na Se voce passa soment e 0 ccrpo, nc rmalm ent e preeisar.i de uma area de
T abela 18.3 passa tanto 0 cabecalhc como 0 corpo pan a sub-retina. 0 resto trabalho dentto da sub-rotina para edicionar e recuperar registros da tabela
dos mercdos passa somen t e a corp o. interns, P ara defmir isso, voce pede utilizar local, data au stat ; cs, Se uma area
Se a ubela intema nio civer uma linha de cabe~a1ho, 0 prim eiro metoda de trabalho global ja estiver disponivel, voce pode utiliza-la, embora seja menos
naTabela 18.3passa 0 corpo e cria uma linha de cabe~a.lho cleotra cia sub-rotina. deseji.vel. porqu e acessar variaveis globais de dentro de urn. sub-rotina toma
o resta passa somente a carpa. a miUluten~o de programa mais dificil. Se voce escolher utilizar a instru.!rio
data para defmir sua u ea de trabalho, a adiC;ao l ike line 01 ttabbodyestari
Tornando os componentes de uma ta bela intern a disponiveL Etadefine umastring de campo utilizando somente 0 corpo .de uma
conhecidos dentro da sub-retina tahela intem a. A strin g de campo resultante ~ exatunente como urna linha do
Mer amente passar uma tabela interoa Ilio e normalmente suficiente - voce corpo cia. tabela interna i. t abbody . Par exemplo, data fs l ike lin e of it[ J
tambem deve descrever a estrutura cia tabela interna para a sub-ratina. Se nao define uma string de campo chamada 1s. Ela tem a mesma estrotura que uma
descrever a estnl tura cia tabela intema na instru~io f o"", as componentes da Unica linha de ; t . .
586 APiENDA EM 2\ DlAS ABAP/'

Possondo umo lobelo interne com Iinho de cobecclh o • A linha 5 define a tabela intema it com uma linha de cabecalho.
Se urna tabela intema river uma liriha de cabecalhc e voce quiser passar tanto • A linha 7 preenche a rebels intema com Slinhas da tabela zt xlfal.
a linha de cabecalhc como a corpo pan uma sub-rotins, utilize a sintaxe
• A linha 8 transfere a contrcle para a linha 13.
mostrada na primeira linha da Tabela 18.4. Isso passari ambos, Iinha de
cabecalho e ccrpc, que serso passados por referencia, Portaorc, altenC;6es • A linha 13 faz com que a eabela interns seja passada junto com sua
Ieieas em uma linha de cabecalho au no corpo da tabela intema dentro cia linha. de cabecalho.Ela epassadapor refe rencia, encao pt eurn ponceirc
sub-retina imediatamenre serio refletidas na original pan a original, structure enecessaria para tornar a esrrurura da tabela
A Lisugem 18.8 ilustra essa sintaxe. interua conhecida para a sub-retina. Sem ela, qu alque r acesso a urn
componente da tabela interne causaria urn erro de sintaxe.

ENTUDA~
Llstc g e m 1 8 .8 Co mo passer umo tabelo Interne que tern uma hnho de • As linhas 15a 19mcstram asescalhas disponfveispara fazer a estrutura
ccbecclhc com sua Iinho de ccbecclhc it conhecida deaero da sub-retina.

l report ztdBOS . • A linba 20 Ie a linha 3 de pt e a eoloca na linha de eabec;alho. Sern a


2 • Aqu1, IT E IIIIla tabela. tnterna que tern uma l 1nha de cabet;alh o adiliaO structure na Iinlu 13. essa linha teria causado urn errc de
3 • Este programa IlOstr a CQIl'lQ passar a l1nha de cabecathc e a ccrpo. sineaxe.
4 tables ztxl fal.
5 data it l tke ztxlfal occurs 5 with header Jtne. • A linha21 altera c valor de 1i fnr nalinha de cabecalho. Cemo a ubela
s int erna foi passada com a linha de cabecalhc por referencia, isso
7 select * up to 5 rows from ztxlfal fnto table it order by l ifnr . modifica. 0 ccnteudc da linha original de cabecalho.
. 8 pl!!rfonn 51 tables it.
9 loop at i t . • A linha 22 scbrescreve a linha 3 da linha de eabec;alho. Como a tabela
10 write I 1t·1ffnr. ineema fai passadapor refersacia, isso modifica 0 conteu do cia tabela
11 end1oop. interna original.
lZ
13 forti 51 tables pt structure zulfal. · ut l1iz e a st ring de campo ztxl la l
• A linha 23 -retOrna 0 concole para a linha 8.
14 "ecut , vod pode ut iltzar: • As linhas 9 a 11escrevem 0 cccteedc databela interna. A saidamostra
15 'l!!strutura fs l uma str1ng de campo que 0 conteddo se aleerou.
16 "estrutura dd1cst -una estrutura ou tabela. ddic
17 "est r utu r e it -qualquer tabela 1nte rna com l1nha de Se urna tabela interns nao riverumalinha de cabecalho e voce quiser passer
cabe~al ho a carpa. criando uma linha de cabecalbc na sub-retina, pede tambem utilizar
18 -like 1t . -OK se ttab nlo t1ver l1nha dl! cabl!~alho i sintaxe mostrada na prirneira linha da Tabela 18.3. Issa passa 0 corpo por
19 '11k. 1l[ ] . -qualqul!r ta bel a 1ntl!rna .
referencia e cria um.a linha de caber;alha localmente na sub-rotina. Alteralioes
20 read table pt 1ndex 3.
21 Jlt-lifnr • 'XXX' .
feitas no corpo da ube:la iocerna dentro d2. sub¥rotina sao imediacamente
'2 lIOd1fy pt t ndex 3. refletidas na original.
23 endfonn. A Ilstagem 18.9 iluscn essa sintaxe.

o e6digo na Listagem 18.8 produz a scguinte salda: EN1lADA~ Lisfagem 18.9 Como passar uma tabela interna sem umo linha de
cabe~alho para uma sub-rotina e automaticomente cria r uma linha de
IliDI ~ 1000
1010
eobe<;olho
XXX 1 re port ztx1809.
1030 2 .. Aqui, uma tabela i nt erna que nao t ell Imi 1i nha de ca belil l ho
1040 3 • l pasuda com l1nha de cab~alho

INluse ~
4 tables ztx1fal.
' ; A linha 4 define urna uea de trabalho global ,txl fal. Essa uea de
trabalho eurna Stringde campo tendo a mesma estrutura que a tabela
de ODIC ztxlfal .
,
5 data: f t like ztxlfal occurs 5. -nlio tell uma l1nha de cabe'W alho

7 select· up to 5 rows fl'Olll ztxlfa1 i nt o table i t order by l ifnr .

' ..
588 APIENOA EM 21.0 1"'5 ABAP/4
o. l UOO~O, PASSAHOO PAR.lMmOS PARA sua-iunH.4S 1 589
8 perform sl tables it .
9 loop at it into ztxlfal. "prectse utf1i zar a Area de trablllho per-que • A linha 18 sobrescreve a linha 3 da linba de cabecalho local, Como.
eli tabela intema foi passada por referencia, isso modifica 0 conteddo da
10 wr1te I ztx 1fal ~ l ifnr . ·n lo tee lIna linha de cabelial ho eabela .intema original .
11 endloop.
12
• A linha 19 retorna 0 controle para a linha 8. A memoria para a linha
13 form sl t abl es llt st ructure ztxlfal . · 00 vocf pode utillzar: de csbecalho local eIiberada.
l' 11ke it • As linhas 9 a 11 escrevern 0 conterido dol tabela Interne, Como i t nao
IS • 11ke U[ 1
t em uma linha de cabecalho , a string de campo ztxlfal e utili zada
16 read tab le pt 1ndell. 3.
17 pt-li f nr • 'XXX' . como uma area de erabalho explfcita, A saida mostra que 0 conteedc
18 modify pt index 3. se alterou.
19 endfonn. Se uma eabela int ema Dio tiver uma linha de cabecalho e voce quiser
passar 0 corpo sem automaticamente criar uma linha de cabecalho na sub -rot-
o c6digo na Liscagem 18.9 produz a seguinte salda: ina, p ede utiliz ar a sintaxe mostrada nas linhas dais a cinco da Tabela 18.4.
Utilizando essa sintaxe, voce pede passer 0 ccrp c por referencia, por valor ou
1000
1010 por valor e resultado . Se voce passar 1t por referenda, as alteracoes feius no
XXX corpo da tabela int eraa dentro da sub-retina imediatamente serio refletidas na
1030 original. Se voce passar it por valor, uma c6pia local de it sera criada - as
1040
alte~oes serac descartadas no final da sub-retina quando a mem6ria local de
• A linh. 4 define uma irea de trabalho global ztx'lfa l. Essa irea euma it for liberada. Se YOCe passar 1 t par valor e resultado, as alteralioes serso
suing de campo que tern 2. mesma estrutura que a tabela de DDIC copiadas: de volta para a originalquando endf onn for executada, Uma instru~o
ztxlfal. stop dentro da sub-retina descartars todas as aItera'i0es para it e tra.nsferiri 0
• A linha 5 define tabela interna it sem uma linha de cabecalho. conerole diretamen te para end-of-sal ecti on.
A Listagem 18.10 ilustra esses merodo s.
• A ~ 7 preenche a tabela interna com 5 linhas de tabela ztxl f al.
• A linha 8 tnnsf:re 0 controle para a linha 13.
EIITI.\OA~ Listagem 18.10 Como posser umo teb elo interne sem ume linhc de
ccbecolhc para uma sub-retine .
• A linha 13 faz com que o corpo da tabela interna seja passado e
automaticamente cria uma link de cabecalho para ele. 0 corpo e .1 report ztx 1810.
passado par referzncia, 'entio pt se toma um ponteiro para 0 corpo 2 .. Aqui. uma tabela Int erne que nl o tee III'Ia 11-nha de cab~alho
original e para a linha de cabecalhc local. structure . utilizada para 3 .. ! passada Sell! criar lJl'Ia lfnha de ca bt! ~al ho automaticamente
tomar a estrutura da tabela interna conhecida para OJ. sub-retina. Sem
ela, qualquer acesso pua urn componente cia tabela interoa causaria
• t ables ztxlfa1 •
S data : 1t li lee ztxlfal occurs 5. "nlo t em ilna l1 nha de cabe~alho
6
urn erro de sintue. 7 select " up to 5 rows from ztxl fa1 into t able it order by l1fnr .
• As linhas 14 e 15 mostram as outras escolhas disponIveis para fazer a 8 perlonll: 51 usin g i t ,
estrutura 1t conhecida dentro da sub· rotina. 9 s2 usi ng it.
10 s3 using it, .
• A linh. 161hlinh. 3 de pt e a co10ca n. linh. de cabe..,lh o 10c:U. Sem 11 "ntei tout tab les it .
a adi'iao structure na linha 13, essa linha tena causado urn erro de 12
sintaxe. 13 end-of-se le ction.
14 write : I 'In End-Of-Select ion'.
• A linha 17'!tera 0 v.!or de 1i fnr na linha de cabe,alho. Com o . tabela 15 perfonn write1to ut tables i t.
intema ori~al nao tern urn;a, linha. de cabe'ialho, isso nao rnodifica 16
nada fora da sub-rotin a. 17 fOnl s l usi ng val ue(pt ) like i t. · pusa por valor
18 " voti! tarnbe. pode ut 111zar: como it[ J.
19 data Wl like line of pt.
590 lPRENO. EM 71 OIAS ABAP/4 O~ l B, MOOULARIZAIAO, P",,"OO PAlAMETlOS P.... SU'-ROTINAS 591

20 • you can also use: com qu e uma e6pia separada cia eabela interna seja criada, enta o pt se
21 • data wa like ztxlfal. refere a uma c6pia local cia tabela interns, 1i Ice enecessaria para dcfinir
22 • data 'Il'a 11ke li ne of pt[ ] .
73 • l ocal ztxlfal. · SI! vod: ut1 11za fs so, 0 ncrne da aree de t r abalho
pt como uma tabela in tern a. Scm 1i ke, pt seria u ma varidvel simples e
2' • · sera zt xlfal. n,so Will. um errc de sintaxe ocorreria.
25 read t able pt i nto wa ind ex l. • A Iinha 18 mo stra a cutra escolha dispc afvel para definir pt como uma
76 wa-11 f nr • 'XXX' .
tab ela interna.
27 modify pt frOll Wi i ndex l.
28 endfoT'lD. • A linha 19 defin e uma area de trabalh o local wa que tern a rnesma
2. estrutura que uma linha de pt. As linhas 20 a 24 mostram as ou tras
30 form s2 using pt li ke i t. · passa por nfer~n ch
escolhas disponiveis para de finir urna arca de trabalho local par a pt .
31 data Wi like. line of pt .
32 read table pt in to Ill! in dex 2. • A linha 25 Ie a linh a 1 de pt e a coloca em wa.
33 wa-lifnr • "tyr o
• A linba 26 altera 0 valor de 1i fnr 03 area de trabalho wa.
34 m di fy pt from Wi i ndex 2.
3S endfona. • A linha 27 sobrescreve a linha 1 de ee. Como a tabela intema foi
36 pass ada por valor, isso modifica 0 cc n eeud c cia c6pia local. A original
37 form s3 changing value(pt}" like it. ·passa por valcr e res ultado pe rmanece inalterada.
38 data "a 11ke line of pt .
39 read tabl e pt i nto Wi i ndex 3. • A linha 28 retorna a cc ntr ole para a linha 8. A mem6ria para pt e
40 wa-l 1fn r • 'ZZZ'. liberada e a alterac;io eperdida.
41 modify pt from Wi index 3.
• A linha cj traasfere a controle para a linha 30.

.
42 stop .
43 endform. • A linha 30 faz com que 0 corpo da tab e1a int em a seje passado por
referencia e naa cria uma linha de cebecalbc p ara ele. pt agora se refere
45 form wr1tel t out tab tee 1t structure ztxl fal.
46 leop at i t .
aoriginal 1i ke enecessario para definir pt como uma tabela intema.
47 wrfte / 1t - l 1f nr . Sem 1ike, pt seria uma variavel simples e urn erro de sintaxe ocorreria.
48 endloop . • A linha 31 define uma area de trabalba local wa qu e te rn a mesma
49 endfam.
estrutura que uma linha em pt .
• A linba 321. a linba2 de pt e a coloca em wa.
o c6digo na List agem 18.10 produz a seguinte safda: • A linha 33 altera 0 valor de 1i fnr na area de trabalho wa.
siiDI ~
tn End ·Of·S~1 l!ct1on
1000 • A linha 34 sabrescreve a linha 2 de w!. Como a eabela interna fo i
yyy passada por referencia, isso modifica 0 con tea do cia original. A original
1020 agora esta alterada.
1030
1040 • A linha 35 reto:na. 0 controle para a lin ha 9.

AlAUSE ~ • A linba 4 define uma are> de trabalbo global ztxlfal. Essa area de • A linha 10 transfere 0 controle para a linha 37.
tnbalho euma String de cam po tendo a mesma est rurura que a tabela • A linha 37 faz com que 0 corpo da rabela intema seja pass ado per valor
de DDIC ztxHal. e resultado, mo criando uma linha de cabecalbc para ele. pt agora se
• A linha 5 de fine a tabela intern a i t sem uma linha de cabecalho. refer e a urna c6p ia cia original. 1i ke e necessaria para definir pt como
uma tabela intema. Sem 11ke, pt seria uma variavel simples e urn err o
• A linha 7 reside na tabela interm com 5 linhas de tabela zt xlfal.
de sintaXe ocorre na .
• A linha 8 transfere 0 controle para a ~ 17.
• A linha 38 defin e urna area de trabalh o loal wa que tem a mesma
• A linha 17 faz com que 0 eorpo dOl u bela inte rn a seja pass ado por valor estrutura que uma 1inha em pt.
c nao em. urna linha de caber;alho para ele. A p assagem par valor faz
592 APREN DA EM 21 DIAS ABAP/! D~ lU DIlIJURI2A,.i<" PIll'HOO PlIl.iMETRDSP.... SU~HAS 593;

• A linh.a 39 1• • Iinha 3 de pt e a ccloca em wa. • Urn erro de sintaxe em qualqu er lugar no programa extem c causara
urn erro de tempo de execuc;ao, se ele estiver dent rc au fora da
• A linha 40 altera 0 valor de lifnr na irea de trabalho wa.
sub-retina extema. .
• A linha 41 sobrescreve a linha 3 de wa. C omo a ta bela interna foi
As sub-rotinas externas sao mui to semelhantes a sub-ra tin as internes:
passadapor valor e resultado, isso modifies 0 coneeedo da c6pialoC2.1.
A original ainda nao foi alterada. . • As duas permitem que as parlmet ros sejam passados .
• A linha 42 desvia da instru~ao endfonn - ela tr ansfere 0 controle • As duas permitem parimetros formais digitados.
diretamente para a linha 13. Isso faz com que a copia local seja • As duas p ermitem que as parametres sejam passados par valor, par
descartad a, Se a in s tru~o stop naa executar, endfonn fari com que a valor e resultadc e par referencia,
c6pia local sobrescr eva a original e a altera~o seja mantida,
• As duas permitem defmic;6es de variaveis locais.
• A linha 15 rraasfere 0 conrrole para a linh a 45.
A Figura 18.5 ilustra as difere ncas en tre sub-retinas exte mas e internas .
• A linha 45 faz com que a tab ela intern e seja passada por referzncia e
uma linha de cabecalhc seja auto maticamen te criada. Fig ur a 18 :'jj
mesmc area
As d~re~ enln! reportttx1811 . demem6ria repartzix1812.
• As linhas 46 a 48 escrevem 0 conreudc da tsbela interna, A anica
altera~o esti: na linha 2 e foi executada em 52.
svb-n:JIinos eJdemos e tcbles zlxllo1 - I -... CJ+--l- tabl., zlxllo1.
in1emos ,
dota 11 .CJ d;fe..nte dote 11 .c:::J
areas de mem6rio
Definindo e ,hernando sub-rotinas externas
Umo sub-retina extemo e oquelc que reside em um.prog romo dlferente que a As seguint es sao diferencas en tre sub-retinas intemas e externas:
HOYO ...
insny¢o perfom que a che rne . A Figura 18.4 ilustro ume sub-rotina enema. • Uma varifvel glob al definida utilizando data ~ conhecida somente
lEUO " dentro do prcgrama que a defin e. Par exemplo, na Figura 18.5 a
FigurA 18 4
~ po rtzt x1811. report ztx1812. instru~a data f1 apar ece nos dais pro gramas. Ess a ins truljao define
Umo ilustro¢ o de
umo sub-lOfino~, .
perfonn sl (ztxl812) .
=r fom 51.
?
duas areas de memoria chamadas fl . A f1 definida den tro de ,tx1811
e'penas acesstvel de dea erc ,tx181l . A fl defiaida den ero de ,txl8l2
~
- endf onn. eapenas acessivel de den tro ztxl81 2. T ow as referencias a fl dentro
de ztx18 12 sao referen ~ias a fl defmid as dentrc de ztx1812.
Quando urn perf orm ch ama um a sub-rotina enema • Uma vwveI global que tern' 0 mesma nome nos dais programa.s e ~
• 0 pragrama en ema que con tem a sub-retina e carregado. defin ida utiliza.nda a instru~o tab les nos dais pragramas e co mu m
aos dais pragramas. U ma alterac;ao para essa variavel em um prcgrama
• 0 pragrama exeem c int eiro everificado quan ta asintaxe .
afeta 0 ou tre, Na Fi gura 18.5, a uea de memoria chamada ztxl fal e
• a controle etransferido par a 0 fonn no programa exte rno . compartilhada entre as dais programas. Qualquer alteralja.a nessa uea
• As instruc; 6es deotra da sub~rotina extema sao execu tadas. de tnbalho evista imediatameme pdas dois program..s.
• A endfonn tran sfere a co ntrole de volta para a insuuc;ao que s~ segue As listagens 18.11 e 18.12 ilustram uma cbam ada a um a sub·rotina
a perform. . externa.
o fato de a verificaC;ao de sin taxe ocorrer em tempo de cxecutj2.o e EHliADI~ Listagem 18. 11 (homondo a sub-rolino mostrodo no Uslogem 18 .12
imp ortante, pebs duas razee s seguintes:
• Se 0 parametr o formal for digitado, urn parametro real oao corresp90~ 1 report ztx1811.
dente causm urn erro de tempo de executjao em vez de urn erro de 2 tables ztx1fal.
3 dat a f1(3) value 'W ' .
..
sint axe.
e
5 ztx lfat-1 1fnr" '1000'.
594 APR ENDA EM 21 DlASABAP/4
DIA 1.: MO OULARI~O: PASSANOO PARAMETROS PARA. SlJ8.ROTINAS

6 perfann sl (ztxIB12).
7 write : I 'f! .', fl . Resu m o
B / 'l ifnr II', ztxlfal-lifnr.
• Os parlmetros podem ser passadcs de tre s maneiras: por valor, par
valor e resultado, e par referencia. A sintaxe na instrucfc f onn deter-
!NlRADI~ List ag em 18.1 2 A sub-rotina <hamoda do programo no listogem 18.11 mina qual meeodo e utilizado.
1 r eport ztx 1812 . • 0 coepo deuma tabela interna pode ser passadovia usi ng au chang; ng.
2 tabl es ztx lfal. o corpo (e a linha de cabecalho, se pre sence} pade ser passado via
3 data fl(3). tables . Se a tabela intema nao tiver uma linha de cabecalho, tables
4 cria uma dentro da sub-retina.
5 fonn 51-
6 fl .. 'ZU' , • Para acessar os ccmpcnectes de um a stri ng de camp o ou sub-retina
7 ztxlfal- l1fn r • '9999', conhecida dentro da sub-retina, a estrutura deve ser declarada na
8 endform. instru~io form.
• A s sub -rotiD.as extemas sao muito semelhantes is inremas. Com as
·0 c6di go na Listagem 18.11 produz a seguinte-safda: sub-retinas externas, as variaveis definidas utilizand o dat a sao co-
nhecidas somente dentro do programa que as define. As varidveis
SAlol ~ fl· AM
l 1f nr .. 9999 tendo 0 mesmo nome definidas utilizando ta b1es sao comuns aos dais
programas.
INllIS~ ~ • N 05 dais programas, a linha 2 define uma area de trabalho global
ztxlfal. Essa area e com partilhada entre as dois programas.
P&R
• N os dais programas, a linha 3 define urna variavel de trabalho global
fl. Du as areas independentes de memoria sao definidas, urna para cada
programa.. o Por que precise conhecer todes as vana'ioes de passagem de uma
tabela intema com e sem linha de csbecalho! T odos os casas nao
• Em zt . ISll, a linh a 5 atribui urn valor de 1000 a zt.1fal-' ifnr. sao ahrangidos por apenas algumas dessas varia~o es ?
• Em ztx1811. a linha 6 pa ssa 0 controle para a linha 5 em ztxlB12.
Se voce eseivesse meramente eriando pr ogram as em ABAP/4,
• Em ztx1812, a linha 6 atribui ZZZ avariavel global" fl para ztx1 812. fl nao precisaria conheeer todas essas variac;6es . Voce poderia
em zt x1811 MO e afetada.
eodificar a maioria de seus programas com ap enas algumas
• Em ztx lB12, a linha 7 atribui 9999 a ztxlfal . 1550 afeta as dais variacdes simples. Entretanto, a m aior parte do tempo de urn
programas. programador em ABAP/4 norm alrnente n ao e gasta na criac;ao
• Em ztx1B12, a linh a 8 retorna 0 controle para a linha 6 em ztx1811. do c6digo em ABAP-e gasta na leitura . A pass agem de tabelas
intern as para sub -rotinas e urn assunto complicad o e 80% de
• Em ztxIBll, as linhas 7 e 8 escrevem as valores de fl e ztxl fal- 1ifnr.
seu tempo serao gastos len do 0 codigo qu e faz essas coisas
f1 permaneceu inalterada, enquan to 1i fnr foi alterada.
complicadas, enquanto menos de 20% de seu t emp o serao gastos
.crian do seu pr6prio ccdigo. Esse triste desequ iHbrio determine
Utilize a instrulioo local dentro de svb-rctincs extemcs perc evitcr
que voce deve aprender as varia~6es utilizadas pela SAP, para
comportilhomento de areas de trobolho de tobelos . qu e possa gastar menos tempo arranc an do cabelcs enquanto
t en ta entender 0 c6digo de SAP. 15 50 deixara voce com mais
t empo para escrever se~ p r6p ri o codi gc e com mais cabelo.
596 APRENDA EM 21 DIAl ABAP/4

Workshop
o Workshop oferec e duas maneiras de voce verificar 0 que aprendeu oeste
capi tulo. A se~ao Teste oferece perguntas para ajudar a solidificar seu entendi-
menta do conteudc abordado e a se<;ao Exercicio permite que voce pratique 0
que apren deu. Voce ped e encontrar as respostas is perguntas do Teste e ao s
exercicios no Apsndice B, "Resposras as perguntas e aos exercrcics".

Teste
1. Quais sao as parametres que aparec em na instruc;ao form chamada?
2. 0 que causa a passagem de uma varidvel de tip o de dado au compri-

Ii 19
menta errado para urn parsmetro digitado?
3. Quando voce passa urn pargmetro por referencia, nova mem6 ria e
alocada para a valor?
4. Q ue efeito as adi coes using fl e c"hang ing fl tern na maneira como
as p arametre s sac pass ado s?

Exercfcio 1
Execute 0 programa mostrado na Listagem 18.13. Comente a instrucio pa- Modularizalao: modulos
ramet ers e execute-a novamen te. Descreva a sequencia de eventos que ocorre
em cada case . de funlao,.Parte 1·
ENlliDA~ Lista ge.m 18.13 Expllque a seqllenclo de eventos que ocorre neste Depois de conduir eseecapfrulo, voce sera. capaz de:
prcqrcmc • Entender e utilizar a instru~ao i ncl ude
report ztxl813 no standard page headfng . • Criar grupos de fun~.o e m6dulos de fun~.o
ztx18 13 data: flag,
• D efln lr parame tres de importacao, expo rta/iao e altera/iao
ctr type 1.

parameters pl. Utiliza nd o a instruc;;Cio j Dcl ude


i nf t ia11 zat ion.
flag · '1'.
KOVO.... e e
Um programa include urn ap licotivoem que 0 ccnteedc projetodo pore ser
TERMO" utilizede per eutro pregrerna. Norrnalme nte, ele ndc e completo sozinho. Em
write : I 'in !nitialization'. vez d isso, outro progromo utilize 0 c6digo que 0 progro mo include ccntern , copiendo as
linhos de c6digo do progrorno include pore eles pr6 prios, A c6pio e executodo em te mpo
stert-cf-se 1ect 1on. de execu~a o vic lnstruce c i ncl ude. Urn progrcm o include tombem e con hecido como
flag .. '5'.
um progroma indu/do (induded program).
write : I 'i n Start-Of-Selection'.
I 'pt >', pt.
NOVO ... Urn progromo que indui o utro e conheddo como um programc de inc/usco.
tcp-ot-peae . milO ,..
add 1 to ct r.
write: I 'Top of page, fla g . ', f l ag. 'ctr .' , ctr.
ul t ne.

;' .:.

~?·~V;.~. h"p://www.compus.com.br
598 , PREMD, EM 21 DI,S ABA P/4 D~ 19, MDDUl.\R~o, MODUlOS DE FUM\AO, PAmI 599

Sinlqxe para q inslrw;Co j Del ude OOIAOI~ Lisla g e m 19.1 Um progromo de inclusoo
~ 0 seguinte ea sintaxe panla insrruci o include. 1 repo rt zn1901 no st a ndard page heading .
Z include ipgm.
Z tables: ztxlfal. ztxlfbl.

~
3 par ameters p_li fnr like zt xlfl1-l 1f nr obl1 gat ory defa ul t '1000' •

m
onde: •5 include: ztx19 02.
tpgm e um program . do tipc 1.
6 ztxI903 .
T 1
8 top-of - page.
o seguin tes POntOS se aplicam: 9 write : I ' Company Codes for Vendor ' . p_l 1f nr .
10 ul tn e.
• Urn progr ams include deve ser do ripe 1. Voce especifica 0 programa
do tipo no campo Type na tela Program Attributes quando voce cria
o program a. EH1UOI~ Lista gem 19.2 Este progromo ~ incluldo em zt xl 901
• Urn programa include pede estar incluido em urn au mais programas
1 .... INCLUDE ZTX190Z.
de iaclcsjc (including programs).
Z sel ect s i ngle* f r'Olll zt xlfal where l1fnr • p_l1fnr .
• Urn programs do ripe i nio pede cen ter insrruc ces parciais nem
ia completas.
EHTliDA ~ Lista g e m 19.3 Este progromo ta mbem est6 ineluido em ztx1901
A inStru~o 1ncl ude copia 0 conteadc do programa include no p rogram a
e
de inclusao. 0 ccdigc do program a include copiado como esti e substitui a 1 -·INCLUDE ZTX1903 .
instruc;ao in cl ude no tempo da gera~ao de programs. A Figura 19.1 ilustra a Z select .. from ztxlfbl where l1 f nr • ztxlf&1- 11fn r.
ins t~c;ao 1ncluee. 3 write: I ztx l f bl- bukrs .
4 enesetect •
. F Igura 19 1 Programo ZS
Report lA.
Umc ilustrofiOo cio
insfru¢ o i ncl ude.
Indude ZB. +f---~"
lnclude Zc. l-
Write 'Hr.
_
o c6digo nas Listagens 19.1 a 19.3 produz esta safda:
Progrbma ze SliOI ~ COIl'+Jany Cod ~ s f or Vendor 1000

i
Q uando 0 progroma e
Write 'There'.

. INluSE lI..
1000
3000

• No moment o cia ge",ao de zt xl 901, a linha 5 copia 0 ccdigc do


gero do, este Ii ) ,. program. ztxl902 pas. zt xl 901. 0 codig c inserido substitui a linha 5.
° resulta do do
c6digo-fonte. • Ainda dur ante a gera~ao de programa de ztx1901, a linha 6 copia 0
Report lA c6digo do program> ztx l903 par. ztx l9 01. 0 c6di go inserido substitui
write 'Hr. a linha 6.
Write 'There '.
• Quando 0 programa executa. zoc1901 comp ona·se como urn nnicc
prograrna. como se as linhas de c6digo dos programas incluidos
tivessem sido digiudas direeamecte em ztx 1901.
Na Figura 19.1, za eo programa de Inclusao. Os prcgramas include sao
zb e r c. No mem en to em que za egerado, 0 ccdigo-fonte para zb e zc einserido A SAP utiliza includes para reduzir a redundincia de c6digo e dividir
em za, f:a.z.endo a programa ser mastrada na part e inferior d.a figura. prognmas muito gnndes em unidades men ores.
As lisragens 19.1 .19.3 ilustram prognm as include.
OIA 19.MODUlARIZA(.io, .6 00'05DE FUN(.iO, PAm, , 101

Enquonto visuolilO um progroma de inclusOo, voce pede observer a Entende nd o grupos de fun!;oo
ccntecdc de um progromo inclufdo, simplesmente dondo um clique
Como declarado anteriormente, urn grop o de fun!tao ~ urn programa que
duplo em seu name . Per exernplo, enquonto edito ztx1901 no tela
ABAP/4 Editor: Edit Program, de um clique duplo no no me ztx1902 contem m6dulos de funCJao. Com cads sistema de R/3, a SAP fornece mais de
au em ztx 1903. 0 pragro ma incluldo ser6 exibida imediota mente. 5.000 grupos de fun~ao preexistentes. No total, eles ccntem mais de 30.000
modules de func;iio. Se a funcionalidade que voce exige j' oiio e abordada por
esses rn6dulos de funiio fornecidos pela SAP , voce tambem pod e coo seus
Se vocA quiser ver a c6cligo resultonte com fad e s a s inc ludes in-line pr6prios grupos de funC;iio e m6dulos de func;iio.
expondidos, execute a programa RSINCLOO, No te lo de selecoc para
RSINCLOO, no campo Program, digite a nome de um progromo que NOYO.... Code grupa de ,fvnl;oo e ca nhecido pe r urn ;~entificodor ~e quotro corode~s
inclui outros progromos. Coloque urn X nos compos Program Source lWiO" chomodo 10 de -gropo de fun~60 . Se voce cno seu pr6pno grupo de fun<; oo,
Code e Expand Include lines e pressione Execute. Umo listo do deve escclher um ID de grupo de fvn~oo qu e ccmecc com Y ou Z. 0 ID deve ser
c6digo-fo nte resultonfe sem exibido na proximotela . exotcmente de q uotro corocteres de comprimento e ndo pode confer lccunes nem
cc rccteres espec lcls.

Introduzindo m 6 d ulos de fun'i;oo

~o
Nos ve rsc es onferiores a 3. 0F, 0 sistema de R/3 permite que voce
NOVO.... Um module de fu n~o o e a ultimo des quctro vnldc des principe is de rncdulcri- es pec ftqoe um ID de grupe de fum;ao menor que qoctrc carocteres,
lruIOr za~oe do ABAP/4 . Ele e multo semelhante a uma sub-refina extema sab esses au utilizer espccos denfro de le. Enfretonfo, 'loci n50 deve fozer lase,
aspectos : porque as ferrcmemcs que monipulam m6d ulos de funlioo se ccrnpcr-
tcrec irregulormenfe co m esse gru po de func;o o. '
• Ambos existem dentro de urn programa extern o.
• Ambos ativam os pardmetr os a serem passados e r etornados. Para ilustraros gropos de fun~ao) descr everei resumidam ente a processo
• Os parametres podem ser passados par valor, par valor e resultado, de cri' c;iio de um grupo de func;iio e de um modulo de func;iio dentro ~ele.
au por referencia. Vamos partir do pressuposto que nenhum gropo nem m6dulo de fun~:ia ainda
As diferencas importantes entre m6dulos de fun/iao e sub-retinas exter- existam.
nas sao as seguintes: Voce ccmeqa crisndo um m6dulo de fun~ao. Quando cria.urn m6dulo, °
sistema primeiro peclir.i a voce um ill de gropo de fun~ao . Esse ill informs ao
• Os m6 dulos de fum;ao tern uma tela especial utilizada para definir
sist ema onde armazenar 0 modulo de fun~ao.
parametres - os parametres nao sao definidas via ins tru~6e s de
AJ3AP/4. · . Quando voce fomecer olD, e se ainda ele.nao existir, 0 sistema criardi

• As areas de trabalho tab l es nao sao compartilhadas entre 0 modulo • Urn programa principal
de fun~ao e 0 programa de chamada. • Urn include superior
• Para chamar urn m6dulo de fun~ao, e utilizada um a sin taxe diferente • Um inc lude ux:x
da empregada para chamar urna sub -retina. • Um m6dulo de func;iio include
• Para sair de urn m6dulo de fun CJao, eueilizada a instrucio raise ern vez Coletivamente, esses componentes sao conhecidos como grupo de fun -
de check, exi t au stop. ~ao . Seus relacion amentos sao ilustrados na Fi gura 19.2.
Urn nome de module de funCJao tern um comprimento minim a pra rico o seu ill de gropo
nome do programa principal sera sa plfgi d, on defgid e
de tres caract eres e urn comprimento maximo de 30 caract eres. Os m6dulos de fun~o de quatro caracteres. 0 sistem a automaticamente colo.ca duas
de fun~ao de cliente devem com eliar com Y_ ou Z_. 0 no me de cada m6dulo ins truCJoes ; ncl ude nele:
de fun/iao eunico den tro 40 sistema de R/3 int eiro. • incl ude ljgidtop.
• incl ude ljg iduxx.
602 I A'RENDA EM II DIAS AWI4

Flg u r Q 1 9 2 Top Ind vde Figuro 19 3

Esse 4 0 A fundion Ubrcry


re/oclonomento Injfjol~ . .
hier6rquico dos Proqmmg Principa!
function . pool fgid.
componMmsde urn SAPLfgid
grupo de lun¢o. r-----..",/
MQclulQ$ de func¢o
lnd ude lfgidTOP. ~
Indude UgidUXX. lfg;dUXX lfg ldU01
'NCLUDE lfg ldUOl functionz tx1901.
' NClUDElfg;dU02. write: I tir.
endfunction.

lfg ldU02
fun ction :r. tx1902.
~ -
endfunction .

NOYO'" 0 primeiro progromo include - ljg tdtop - eccnhecdc como 0 fop indude.
TEllO r Dentro dele voel!pode cclcc cr defin i1jOes globaisde dodos. Estossao definic;6es
de dcdcs que seo globois pe rc tcdos as m6dulos de funJ;oo dentro do grupo. Por exemplo, para acessar 0 programa principal do grupo de func;ao,
escolha 0 botao de opc;aoMain Program e entio pressione 0 bat i o Display. 0
KOYO ..... 0 segundo progromo inc:lude - lfgtduxx - econheddc como UXX.A voce program' principal de grupo de fun'iao ztxa emostrado llll Figura 19.4.
ltUO r. noo e permitido mod ifieor 0 uxx. 0 sistema ovtomaticomente colcccro umo
instruc;co i ncl ude no UXX porn coda m6dulo de func;oo que voce crier nesse grupo de F igura 19 4
fvnljoo. Para 0 primeiro m6dulo de fvn~oo, a instruc;6o 1nelude lfgiduOl ser6 inserido
Oprogromo
no uxx. Quondo ....oce crior um seg undo m6du lo de fun~co nesse grupo, 0 sistema principal de grupo
od idonor6 umc segundo instru<;Cio: i ncl ude lfgidu02. Todo vez que voc~ cdlcioncr urn de futHj:Oc ztXQ.
novo m6dulo de funr;o o 0 0 grup o, a sistema cdlclcncrc urn novo instruil;co 1ncl ude pora
o UXX. 0 nnmero do i ncl ude ser6 01 para 0 prirneiro rn6dulo de fun<;Oo criodo dentro
do grupe, 02 durante 0 segundo, 03 para 0 tercelro e cssim per dionte .

Dentro de cada include mencianado no UXX esta a codigo-Icare para


urn m6dulo de fun"o.

Acessando a bibliotecQ de fu n~ao

NOVO ... Os grupos de runr;oo slio onnozenodos em urn grupo de tobelos dentro do
TWO ,. banco de dodos chcmado biblioteco de funr;oo . Acessondo a biblioteco, voce
Jcmbem pede ocessor os ferramentos pelos qua is voce mon ipulo m6d ulos de func;o o e
grupos . Para ocessor 0 btbllctecc de funr;co do Development Workbench, pressione 0
bateo Function li brary no berra de ferramentos Applicotion. 0 c6digo de tronsor;oo e
5E37.

Cada um des compon enres de urn grope de func;ao pede ser acessado a A Figura 19.5 mostra 0 UXX p.n 0 grupo de fun'iao ztxa.
partir da Function Library Initial Screen mostrada na Figura 19.3.
604 APRE NDA EM 21 DIAS AB AP!4 OIA 19,MOOUlA'lZA(.io, MOOUlOS O!fUNlio.PAm1 605

urn m6dulo de func;ao antes de trabalhar nele, alterar 0 c6digo e entao executar
uma verifiCa~o de sintaxe nesse m6dulo tinico antes de reati vs-lo. Dessa
maneira, os demais m6 dulos de fu nc;ao ainda podem ser cham ad os, mesmo se
voce estiver trabalhando em urn deles.

Definjndo dodos dentro de urn mod ulo de fun~60


fu defini<;5es de dadas denerc de modules de fun,aa sao semelhantes l.quelas
de sub-retinas.
Dentro de urn mod ulo de fun):ia J utilize a instrllc;ao dat a para definir
variweis locais que sio reiniciilizadas toda vez que 0 mod ulo de fun~io e
chamado. Utilize a instrucfo stat i cs par a defmi r varUveis Iccais que saO
alocadas na primeira vez que 0 m6dulo de fun~o e chamado. a valor de uma
variavel esutica e lembra do ent re chamadas.
Defina parfmecros dentra da interface de m6dulo de fun) i o para criar
de£ini~oes locais de varifveis que sao pass adas no m6dulo de func;i o e retcr-
nadas dele (vejaa pr6ximase,aa).
Vace nao pade utilizar a instI11c;ao 1oca1 dentro de urn m6dulo de func;:ao.
Na Figura 19.5, voce p ade ver esse grupo de fun~o zt xa que contem dois Em vez disso, parimetros de int erface glab alizados servem para 0 mesma
modules de fun~ao: z_t x_1901 e z_tx_1902. a primeiro esta ativo, 0 segun do prap6sita. Veja a seguin te seliaa sa bre definic;ao de dados globais para aprender
nao (seu nome e comentado). sabre parimetros de interface globais e lccais.

Atjva ndo urn modulo de fun~a o Definjndo a inte rface de mo dulo de fu n ~a o


Urn m 6dulo de fun~o deve ser ati'lJado antes de ser iriiciado. H:i um. batao MaYO.... Pore passor pcrerretres pore urn m6dulo de fun¢o, voce deve definir umo
Activate na tela Fun ction Library Initial Screen. Pres sionando-o se ariva 0 TElMOr interface de m6dulode fun~o . Esse interface e c desc~oo dos porometros que
modulo de fun, aa . sao pcssados e recebidos do m6dulo de func;oo. Ela e tcmbem simplesmente ccnhecidc
Q uando 0 modul o de fun~ao river sido criado pela primeira vez., a como interface . No restante deste cap/tvlo, n6s vamos nos referir a interface do m6dulo
instru~o i nc1ude para de dentro do UXX sera comentada. Acivar 0 m6dulo de fun~ao simp!esmente como interface. .
de fun~ao faz com que 0 sistema remova a comennric da instruci c i ncl ude. Para defmir parjmetros, voce deve ir para uma de duas telas de defi.ni~o
a m6 dulo de fu.n~ao estara entao disponfvel para ser chama do de outre
de parlmetro:
program a. Se voc~ alterar 0 c6digo demro do m6dulo de fun c?o, ele Ilia
p recisara ser ativado ?ovamen te. Por ou tre lado , reativar naa causard qualquer • Import/Exp ort Parameter Interface
dane. • Table Paramet ers/ Except ion s Interfa ce
Se quiser, voce pede desativar urn m6dula de fun,aa. De ABA:F{4 A tela Impa rt/Exp ort Param eter Interface . mostrada na Figura 19.6.
Function Library: In itial Screen, escalha 0 caminho de menu F un ction Me- Nes sa tela voce pede definir 0 seguinte:
dul e- > D eactivate. A escolha desse caminho de menu insere urn come ntdrio na
instru~ao i nclu de para esse m odu le de fun):io dentro do UXX. • Os parimetros de importacac
Todos os m6dulos de fun~ao que pert encem a urn de ice grupo existem • O s parfmetros de exportacic
dentrc do programa prin cipal : sapl! gid. Por causa disso, urn erro de sintaxe • as parimetros de altera/Sao
em qualquer urn desses m6du los de fun~ao fara com que 0 resto se tome
inoperante; a execu)ao de qualquer urn deles resultani em urn erro de sintaxe.
As fun)o es Ac tivate e Deactivate permitem que vace trabalhe em qualquer
mo du lo de fun~ao unic o de urn grupa sem afet2.f 0 resto. Voce pade desativar
606 AmMDA EM 21 DIAS lBAPH D~ lU ODUURIl.l(.io, M6DUlOSDE FUH ~.PAm l 607

Fi gurq 19 6
NOlO...
A tela Imporl/Expott 1Bl!O ~ passodos no m6dulo de fv ~oo do progra mo de chamodo . Esses vclcre s 58
Porometer Interfoce. originom foro do m6d ulo de func;oo e se o importodos pare cleo

NOYO ...
lFlMO JII"" retomados do m6dulo de fun¢ o. Esses vclcres se originom de dentro do
m6clulo de funr; oo e sao exportodos pore fora dele.

1i10 ...
mMO " que seSo pcssod os no m6d ulo de func;oo, olterodos pelo c6d igo dentro do
m6dulo de furn;oo ee ntec retom odos. Esses volores se originom de foro do m6dulo de
func;eo, que a s recebe e a s passe de volta.

NOlO ... Pcnimetros de tabe/a sOc tc belcs internes que sOo passcdos pore 0 m6d ulo de
TrulO ~ fun~co, a lterados dentro de le e retomodos. As tobe/os infernos devem see
definidos no progromo qu e cha ma .

Umo exc~oo e um nome para urn errc q.ue ocorre dentro de um m6dulo de
fu n¢o . As exce~6es soo descritos em detolhe no pr6xima re~oo .

A tela Table Parameters/Exceptions Interface emostrada na Figura 19.7.


NesS1 tela voce pede: Passando pardmetros
as metodcs pan passar psrjmetros para modules de funliao sao maito seme-
• Definir parimetros internes de tabela
lhante s aquel es para passu parfmetros para sub-retin as enemas .
• Docurnentar as excecees Par padract--.
Fi gurp 1 9 7 • Os pargmetros de expcrtacfo e impona~ao sao passados po r valor.
A tela Table • as parametres de altera~ao sao passadcs por valor e resultado.
Parameters!
Exceptions Interface. • As tabelas inremas sao p~sadas par refereacia.
Voce pode fazer com que a importacjo, exportac jio e parametre s de
alteraiiio sejam passades po r referenda, colocando um a m arca de verifi-
ca~io na caixa d e selecac Reference na tela Impo rt/Export Parameters (veja
a Figura 19.6).

o cc ncelto de um pordmetro de expo rtc c;o o sendo possado per valor


e um poueo esfranho poro a moiorio doe programadores . Pense desto
moneiro: quo ndo possod o per valor, 0 me m6 rio porc um pcr e rnet-c
de exporto~c o e definido de ntro do m6du lo de fu~ao. A instT:v ~o o
endfunct1 on ccpic 0 volar do po rdmetro de exportoc;oo de dentro do
m6du lo de funlioO para a vori6vel ofribuldo a ele no progroma de
c:homodo. Se a instru¢o endfunct 1on noo for executodc (porex emplo,
se voc e deixa 0 m6clulo defunc;o o ono rmolmenfe ufilizando a instru~oo
e
rai se ), 0 volor noo co piado e Q vcrievel do chomodor permc nece
Voce digiu 0 nome do parimetro na primeira coluna e os aeriburos do lociterodc.
parimet ro nas colunas restantes. Digit e urn parimetro por linha.
;;",t'
. -"',
"_"".,r,.--'1'"~"I:,~Id'
.~1r-r'
:,;~.:;ijt:."H:::D~A.:cE~M~11:.D:::r:AS:;::A::'~AP,,'",-4----------------------~--l_--------------------=:::.:::::=~:::::==:::'::3:=='-'
d
Utiljzondo porometrosigito dos
as se noo d llgito d as
Oil19, MDDUUlUZA(AO,M6DUlOS DE fUN~ D, PAm1
609
especificar uma propcsta, 0 sistema automaticarnente colocard urna marca de
I
~¥~,. Como as sub-retinas, os parametres dem6dulo de fun!ja.o podem ser digitados verificac;i o na coluea Optional.
.T odos os parlmetros que voce define na interface eambem aparecem na
'F au nio digitados. A digita!?o funciona para m6dulos de fun!jio da mesma
pan e superior do c6digo-fonte dentro de comentirios especiais. Cada linha
rnaneira como fun ciona.para sub-retinas . Os parametres Ilia digitados adotam
especial de comentirio comeca com os caraceer es "", Toda vez que voce altera
tcdas de suas caracrerfsticas tecnicas cia passagem de parimctro. Por exemplo,
se a pargmetrc passadc e do tipo c, tendo a comprimento 12 e sendo a a in terface a sistema automaticamente atu aliza esses comentarios especiais para.
parimmo de m6dulo de fun <;,o nao digitado, 0 parimetro de m6dulo de refletir suas alteracoes.
fun~o toma-se tipo c com comprimento 12.
Parametres digitados para m6dulos de fun!jio seguem as mesmas regras
~ Nco a ltere nem exduo .esses co mentOrios; eles sOo gerod os palo
que parimetros digitados para sub -retinas. Hi duas maneiras de especificar ~ CUI dado sistemo. Se voce os alteror, 0 m6d ulo de fun¢o pode nco funcicno r.
parametres digiudos na tela Impo rt/Export Parameters:
• Especificar um tipo de dado de ABAP/4 na coluca Reference Type Na Figura 19.8, voce pode ver que pt, p2 e p3 sao pass adcs por valor.
• Especificar 0 nome de uma estrutura de DDIC au componente deuma
.estrutura de DDIC na coluna Reference Field Figura '9 8
Os comenl6rios
Voce nao pod e ut ilizar as dois meeodos ao mesmo tempo para um Unico
ge rados pefo
parimetr o . Voce deve utilizar ou urn ou outre. sisl'ema no parte ~

~
...
",- . ......,...~

_t1.. z tllf1oo.
.
A o utiIizar 0 prime iro me todo, simplesmente especifiqueum tipo de dado JUperiot do
., or, .........,u1 ut",.h... ,
de ABAP/4 n a cc luna Referen ce Typ e na tela Import/Export Parameter,"Po r c6digo-fonle.
1_.1I1C-

exemplo, na Figura 19.8, pl e p2 sao paramet res digirados que tern urn tipo de .IIlUm1J....!rrE I "niLT 1

da do definid c 0 0 ABAP/4 como i (iaceiro} , P3 tambem e digitadc, ten do um


tipo de dado p, 0 tipo i e um tipo de dado de co mprimectc fixo e p ortanto
tern urn comprimento de 4. a tipo p eurn tipc de dado de comprimento varhvel
e assume 0 comprimento e 0 mimero de casas decimals do pardmetro que e
. passado para ele.
Ueilizacdo 0 - segundo metodo, sim plesmente di gite 0 n ome de uma
estrutu ra de Data Dictionary na cc lun a Reference Field. Os parametres sao
defmidos como se voce tivesse ut ilizado a adiC;ao 1i ke na instruC;a~ fom em
uma sub-retina enema.
a s paramerro s tamb em podem ser opcianais e a eles podem ser fomeci-
dos valores-padrao. Para fazer uma importaC;ao de parimetro opcional, coloque
urn marca de verifica~a na coluna Optional (veja a Figura. 19.7). Se m er uma Ch o rna odo m6cUJJJIj;io!:>s.J:d;ue::Jl
fuJJo
wr;~a.llO
.L- _
imp ort ac;ao de parimetro c pciccal, voce nao ted de atribuir names a de na Para chamar urn m6dulo de func;ao, voce codifies a instru~io call function .
instruc;ao cal l funct i on quando cham ar 0 module de func;ao. as parametres
a £lux o de contrcle esta dentro cia Listagem 19.4.
de exportacio serio sempre opcionais. Por isso, eu quero dizer que voce nao e
obrigado .a codificar nenhuro pargmetrc de expona~o na instrucao call ... Ustagem 1 9.4 Este pregrcma executa uma chomodo simples pare urn
function. Por exemplo. se 0 modulo de fun~o z_xyz retoma ues parimetros OOilDA,. m6dulo de fun<;c o
de exporta~io, el , e2 e e3 e voce quer s6 e2, en tia 56 codifiqu e e2 na instruC;io
.cal l function. Simplesmente omita 0 resto . 1 report zt xl904.
. Para atribuir urn valor padrao para urn parimetro de imPOrta~ao, digite 2
3 write: I ' Bef ore Call' .
um valor na caluna Proposal, cenifique-se de colo c.r as valores de caract ere
4 call funct i on ' Z_TX_1901' .
entre ispas simples. a s names de variavel sy tambem sio permitidos. Se voce 5 wri t e : I ' After Call' .
O~ l,,"OOUlARllA(l o,MOOULOS DE FUH\IO. PAITE 1 611
610 AP' EH OA EM . l 0lA5 ABAP/'

Utilize a ins tru Cjio call f uncti on para transferir controle para urn m6-
o c6digo na Listagem 19.4 produz est>. su da: dulo de £unCjao e especific ar puimetr os. A Figura 19.9 ilustra como as pa-
B ~fal'1! Call
Hi f rom Z TX 1901
rimetros sao passados e recebido s do m6dulo de funcsa
o.
After Call - data : v1, , 2, ,3.
Figura 10 9
IlI.luSl ~
• A Iinha 4 transfere controle para. 0 ccmecc de modulo de funlSi a Esta figure ilU5fJ'(J
2_ tx _1901 . Nesse exemplo, 0 m6dulo de funljia exine dentrc do grupc CCIT10 05 par6metrDs
de run"o ztxe, sap! atxe e0 program. principal desse grupo de fun" o sOc possodos e
para valores exportodos pa re 0 mOdulo
recebidos do m6dulo
e age como container para z_t x_1901. de func;60' 0 atribuiQio e do dlreito pore
de fun;oo.
o esquerda.
• 0 ccdigc dentro do m6dulo de fun"o executa. para valores importodos pora 0 m6d ulo
de fun¢ o, a otribui¢o Ado esquerdo poro
• A Ultimalinha do m6dulo de fun~o reto rna 0 conerole pan a instnl~o o direi'o.
call function. 0 processam ento continua com a pr6xima instru/iao
depcis call function. . names de par6metro vari6veis
o esq uerda de _ 0 direita

Siotaxe para a iostrUl;QO call f unct j On


Na instru~o call functi O"J exportatS0es e importacoes existem do ponto
en
-
Z
,...
Esta e a sintaxe para a in stru~o cal l functi on:
call f unct ion 'F'
[exporting pl '" , 1 . . . ]
de vista do pro grama. O s valores que sjc exportados par call funct i on sao
import.dos pelc modulo de fun"o. Os valcres expomdos do m6dulo de
funfiao sao impo rta dos pela instrut;i o call function.
:a::- [1mport t ng pZ· .,Z •. • ]
>< [changing p3· r3 •• • ] A esquerda do operad or de atribui t;ao (-)J esta.uma lista dos nomes de
m [tables p4 • it .. . ] paramet ros defmid os na int erface do m6 dulo de funt;io . A dir eita, esti o as
T [excepti ons xl · n [other s · n] ] . variiveis definidas den tro do programa de chamada. A atribui~ao depois de:
onde: export; ng ocorre d~·direita para a esquer da.. A atribuiCjio depois de import; ng
ocorre da esquerda para a direita. A atribuit;io depois de changing e tables sjo
• F e 0 no~e de modulo de funljao.
bidirecionais. Antes da chamada, a atribui~ao 6 da direita para a esquerda. No
• pI a p4 sio as nomes de parfmetros definidos na int erface de modulo retorno, 0 valor de retorno e aeribuldo cia esquerda para a direita.
de fun,ao. .' Vamos utilizer a Figura 19.9 como urn exemplo. Quando voce chama 0
• vI a v3 sao as variaveis au nomes de strin g de campo definido~ dentro m6dulo de funtSao Z_XXX, a valor de varidvel v1 eatribuldc ao parametr o p1 e 0
do programa que chama. . valor de varii vel v2 e atribuid o a p2. 0 ccntrcle entao 6 rransferidc para 0
• tt euma tabela interna definida dentro do programa que chama. m6dulo de run , ao. N o retorno, 0 valor de p3 e atribufdo a v3.

• n e qualquer inteiro literal; n nio pede ser urna variwel.


• xl eurn nome de excecso levann dc dentro do m6dulo de funtSao. Neste ltvrc, 0 ferme "pa rflmetres de importo¢o" por si mesmc (se m
referendo , se far do ponto de vista do progroma a u m6d ulo de func;6o)
refere-s e 0 por6metros impo rtodos no m6du lo de fun¢o. a
termo
"parametros de exportol1co· se m uma referenda refere~se a pa-
Os seguinte s' pontos se aplicam:
rometros exportodos do m6d ulo de fun¢ o.
• T odas as aditSoes sao opcionais.
• call f unct i on e uma instru tSao especrfica. Nao coloque pontos ou
Exec uta o d o urn modulo de fuol;QO de exem p lo
virgulas depois de parimetro s ou Domes de excetSao.
Nesta se.l:?o, ilustrarei uma chamada para urn m6dulo de fun tS ao de exemplo
• 0 nom e do m6du lo de funtSao deve ser codificado em tetras maru.scu- z_t x_di Y, que simpl esmente divide dais numeros e retorna 0 resultado d.a
las. Se for codificado em minusculas J a fuot;aonao sera localizada e urn
divisio.
dump curt o acont eceri.
612 APREMOA EM 21 DIAl AUPH

A Listagem 19.5 cham. z_tx_di' e pass. parametres. A Figura 19.7 • A linh. 6 transfere controlepara 0 m6dulo de fun"o Z_TX_D I Y. valor o
mosera a tela ImportlExport Param eters pan. esse modulo de fun~ao e a. cia vaxUvel opl ~ arribuldc ao parimetro de importacgc pl e 0 valor de
Listage m 19.6 mostra 0 codigo-fonee para ele. . op2 ~ arribuldo ao pardmetro de impcreacac p2. Na tela Export/Import '
Parameters, urn Reference Type eespecificado para. esses pargmetros,
EHTRADA~ Listagem 19.5 Utilizondo' a instru'¥oo call function com parametres
,t o que as terns parfmetros digitados. Como esses parametr es sao
digitados, eles nao obtem seus atributos tecnicos de pI e p2. Em vez
1 report ztxl905.
2 parameters: apt type 1 defa ult 2. · oper and 1
. disso.os tipos de clados de opl e op2 devem corresponder aos tipos de
3 . op2 type 1 default 3. . · oper and 2 dados de pl e p2. opi e op2 sao definidos como inteiros, po n ant o os
• data rslt ~y;J1! p dec1llllls 2. art"sult tipos de dados correspondem. P3 ~ tipo Pieurn parimetro parcialmence
.I digitado. Ele obtem seu comprimento e ruimer c de de cimais de rs lt.
6
7
call function 'Z_n_DIV'
exporting
e
Os vaJores de opl op2 sio transferidos para 0 m6dulo de fonlj.ao e 0
controle e transferido pan a linha 1 daListagem 19.6.
8 pI - opl
9 p2 ·op2 • Na Lisragem 19.6, a linha 10 executa uma divisfc simples.
10 importing
11 p3 · r sl t , • 0 modulo de funl;jao "reeom e a con trole para a lic.ha 6 da listagem
12 19.5.0 valor de p3 eatribufdc il. varidvel rsll .
13 write : / opl. 'I' . opl. I.' . rslt . • A liaha 13 escreve 0 result adc da divisio.

fKIDDA ~ UstClgem 19.6 0 c6digo.!onte pora 0 m6dulo de run,co z_tx_di'


Pressione 0 botoo Pattern no tela AW/4 Editor. ·Edit Progrcm para
1 function z_tx_dh . inserir automaticomente 0 instru¢o _cal1 f unct io n em seu c6digo.
2 . ... ••-- ------•• ••••••• ••••--.-----•• ••-----.-.-. ----••••••_•••_. Voce sera perguntcdo sobre 0 nome de m6dulo de func;6o e ovtoma-
l ····Local i nterlace: ticci"niente ele coclificora 0 lodo esqverdo de todos as atribui¢es de
4 •• IMPORTING porometrode inte~ce pore voc6.
5 •• . VALUE(Pl) TYPE I DEFAULT 1
6 •• VALUE(P2) TYPE I
7 ."'- EXPORTING C[jendo um modulo de. fu nc;a o
8 VALUE(?3) TYPE P
9 Utilize 0 seguinte procedimento para criar um m6dulo de fun~ao. Para um
fr· • • • • __ ••__ • • • • • • __
t exercfcic, siga este procedimento e erieurn m6dulo de funl;jio exatamente como
10 ,3 • ,1 / ,2 .
11 endfunction.
• z_tx_di Y. Inicie 0 sen z_· - dt v e coloque-o em gropo de fun~o z·· a Qembre-
se de subscituir 0 •• com as dois caracteres que voce escl utilizando p~
identificar seus programas).
o c6digo na Lisragem 19.6 echamado da linha 6 da Listagem 19.5.
o c6digo na Listagem 19.5 produz esta saida: SCRHHo.M~ Inide a Scree~CC!m "Howto Creote·.o Function Module- cgorc.

2 / 3 • 0.67
1. D. tel. de ABAP/4Developm ent Workbench, pre ssion. 0 bode
Function Library na barra de fem..menus Application. A Fun ction
• Na Lisragem 19.5, as linh as 2 e 3 defiriem duas varifveis, op1 e op2.
Library Initial Screen emostrada (veja a Figura 19.3) .
C om o essas varidveis sao definidas. utilizandc a instru~ao par amet ers, i
o ususrio ~ solicitado a digiur valores para. elas quando 0 programa e 2. Digite 0 nome de seu modulo de funl;jao no campo Fu ncti on Module.
i
~.

executado. " . o
nome deve comeear com Y_ ou Z_.
3. Pres~ione 0 batao Create. A tela. Function Mo dule Cre a.te: Admi-

,
• A linha' -4- define uma varidvel nomeada rs lt ripo p com duas casas
decimais. . nistration e mostrada (vej•• Figura 19.10).
DIA 19, MODU1.4RI1A~ O, MaOUlOSDEFUH~D. PAm 1 615
614 APREMDA EM 21 DIAS A8A P/4

4. Digir e 0 nome de urn gropo de fun~o no campo Function Group.


. n ome de grup o de fun~ao deve ter de quatrc caracreres de compri-
me n ta e deve comecar com You Z.
5. .D igite urn 5 no campo Application. Esse campo e utilizado para
a Figu rn 19 10
Esso ea tela
Function Module
Crecre:
Administration.
II
indicar qual a :irea de func;ao que utiliza a modulo de fuoc;ao. Nessa
funcionalidade nao e utilizada por nenhuroa area fuocional, trata-se
simplesmenre de urn exemplo, eneao qualquer escolha servird, (5 .
indicaque a m6dulo de fun'ia,o contem funcionalidade necessariapara
a Basis.}
6. D igite uma descricao do m6dulo de funtj3.o 00 campo Short Text . 0
conteudo desse campo evista quando se exibe uma Iista de m6dulos
de fun,ao.
7. Pressione 0 ba tao Save na barn de ferramentas Application.
8. . Se a grupc de func;ao ji mio existe, urn pop-up informard iS50 a voce
e perguntard se voce quer cria-lo. Pressione 0 batao Yes para criar a
grupo de fun~ao. A caixa de diilogo Create Function Group apare-
cera, Digite uma descricl o no campo Short Text e pressione a bono Agora stria urn boa hora para criar u:". pro~a de AJ3AP/4 a fim de
Save. A tela C reate O bject Catalog Entry aparecerf. Pressione 0 chamar seu m6dulo de fun~ao e tentar exibi-lo. Cne um progr ama como 0
botac Local Object. Voce voltara para a tela Function Module Chan- mostrado na Lisragem19.5. Dentro de seu programa, certifique-se de c?difica.:
go: Administration. o nome do m6dulo de fun~ao em letras maiusculas. Caso contrano, voce obtera
9. P ressicne a batao Source Code na bam. de ferram entas Applicati on. urn dump curto, porque 0 sistema nio sera capaz de loealizar 0 m6dulo de
A tela Functio n Module Edit sera exibida (veja a Figura 19.8). fun, ao. .
10. Digite a c6digo-font e para seu m6dulo de funliaO. Nso altere as linhas
de comennrio geradas pelo sistema sob qualquer circuastjlncias! Seu
Utilize 0 Object Browser perc lister as modules de fonr;60 que \ICC!
m6dulo de fun ljao pede ter urn erra de operacao se voce fizer isso. criou. A partir do Obj ect Browser, escolha locol Pdv. ObjBd s e
11. Pressione a ba tao Save na barra de [erramentas Application. A men- pressione 0 botec Display.
sagem Progr am xxxxx saved aparecers na barra de status na parte
inferior cia janela.
12. Pressione 0 borac Back na barra de ferramentas Application. Voce Re_5umo
volt ara para a tela Function Library Initial. • Ve cE pade utilizar a instru~ao include .pa~a dividir seu c6digo em
partes menores gerenciaveis. Os programas include :~m u:n pro gram a
13 . Se voce quiser definir parametres de exportacio ou de impcrtacio,
s elecicne a batao de op~ao Import/Export Parameter Interface. I do ripe t , Seu codigc ecopiado para 0 programa de mclusao no ponto
cia. instrucao i nclude e a substitui completament e.
P ressione a batao Change. Aparecers a tela Import/Export Parame-
t ers (veja a Figura 19.6). Digite os nomes de seus parametres na
prim eira coluna e insira quaisqueroutras caracterfsticas desejadas para
I
\
• Os modules de funliao sao unidades de modularizaliao com nomes
especificos que podem ser charnadosa partir de qualquer pr~~ama em
todo 0 sistema de R/3. Eles armazenam 0 c6digo que eutilizado par
cada pargmetr o. Quando voce estiver terminado, pressione 0 bene I

Save e depois 0 bono Back. mais de urn programa .


14. Por fim, para ativar seu m6dulo de fun~ao: pressione 0 bono Activate • Urn gropo de funlSao euma colecao de prograrnas e tern uma est~tura
na barra de ferrarnentas Application d.a. Fun ction Library Init ial predefinida. Todos os n0I11:es de progr.ama dentrc do g~po contem 0
Screen. 1 ID do gropo do funljao de quatro caracte res.
1

I
616 APR EN DAEM21 DIA S ABA P/~ DIA lUDDUlARIZA(iD, MODUInS DE FUN(iD,PARlE 1 617

• A interfa ce de urn m6dulo de funfjao contem as definicoes para . ainda muitas em utilizaclc no sistema de R/3. Tamb em e mais facil
parametres de impcrtacao, expcreacso e alceracao, assim como a ent ender modulo de fumiao se voce soub er como as sub-retinas
documentacao para excecoes configuradas dentro do module de extemas funcionam. Em vez de sub-retinas externas, utilize me-
fun~ao. dulos de funt;io. include deve ser utilizado para simplificar a
estrutura do Sell programa e agrupar componen tes sem elhant es.
• Parametres digitados e njio digitados pcdem ser especificados e pas- Eles nac devem ser utilizados como conteineres para c6digo
sados por refersncia, p er valor au por valor e resultado. reutilizsvel que ~ inc1uido em rmiltiplos pragrama s. P ar exempl o,
voce pode colocar todas as declsracoes de seus dados em urn
i ncl ude, seus evento s em outre, suas sub-retin as em urn terceiro
I Fa~a e suas chamadas para modules de fun~ao em urn quarto.
Utilize possoge m pa r refe ~ ncjo pore Nao a ltere as coment6rios gerodos pelc
pardmetros de importOl;fic . Emois
efidente . Ten ho cuidado quando
sistema no.porte superior do c6digo.fonte
do m6dulo de func;oo.
o Como decide em qual gropo de fun~ao colocar urn novo
m6dulo de fun~aa? Quando dev o criar um nov o e quando
uti Jiz6~ lo co m param etre s de exportocdo. reutilizar urn existente?
Os volores de pordmetros po r referend a Nao importe vclcree de que voce n60
seo cltercdce imediotomente no precise de urn m6dulo de func;oo.
cham ada. Se voce alteror parametres de
exportccec antes de emitir 0 instruc;oo
Simplesmente cmitc importoc;6es noo
necess6rios do instruc;oo cal l functi on.
o Coloque m6dulos de funt;io que tem fun cionalid ade seme-
Ihan te no mesmo grupo de fun4j:ao. Par exemp lo, vo ce pede
configurcdo, voce retc rncre , mas as colocar todos os m 6d ulos de funli3.0 que calcularn depre ciacac
vclc res j6 tere c side olterad os no Nao utilize stop, ext t ou check dentro em urn grupo de fun<;ao, todos os qu e executam fu n4j:oes de
progrc mo de chama da . de um m6dulo de func;oo. (check e ext t calendaric em outro gro p o de fun4j:ao e aquel es qu e ofere cern
nee re presentom problema se estiverem
interfaces de comunicacao externas em urn terceirc.
Oocumerite todos os excecees no dentro de um de loop no interior do
interface de m6dulo de func;oo e m6dulo de func;oo.)
documente todos os pon5metros no Wo rkshJ./.
oj.L p ...,----_-'-- _
componente Documentotion do m6dulo
de funJioo. o Wor kshop oferec e duas maneiras de voce verificar 0 que apr endeu oeste
capitulo. A se<;ao Teste oferece perguntas para ajudar a solidificar seu enrendi-
Solve seus dodos de teste, de 'modo que mento do con eea do abordado e a se4j:ao Exercfcio permit e que vo!=c prat iqu e 0
voce posse testor novomente seu m6dulo que sprendeu. Voce pede encontrar as respostas as perguntas do teste e aos
de fvnc;oo depois de modificoc;6es que exerclcios no Apendice B, "Respostas as pe rguntas e aas exercfcios".
utilizom os mesmos dodos.

Teste
1. Verdadeir o au Falso : Urn pargmetrc de imporracao qu e tern uma
P&R proposta e semp re opcional.
2. Ve.rdadeira au ~a1so: Tados as parametre s de exportaca c sao opcio-
Co mo decido se utilizo urn include, uma sub-r~tina interna
o uma sub-rotina extema OU u~ modulo de fun~o para imple-
nars.

mentar meu c6digo? Exercfcio 1


U tilize a fun<;ao T est dentro da Function Library para testar 0 m6dulo de
o Se. ~ c6digo nao fa.r u:ilizado par n enhum outre programa,
,utIlIze u ma su b-rotma mterna. Se 0 c6digo pode ser util para
fun,ao PO PUP_WITH_TABLE_OISPLAY. D epois de te star esse m6dulo de fun~ao,
examine 0 progr~a. a seguir e fa<;a urn progn6stico do seu comportamento.
outros program as, utilize urn m6dula de funliao . Voce nao deve
criar ~ub.rotinas externas . Elas s6 foram abardadas no capitulo
antenor para que voce soubesse como ut,iliza-Ias, porque ha
- ~ .........•..• •••••• ••• •• •• • • •• • •
618 ""N D' EM 21 DilS 'Bl P/~

report zt x1910.
dat a: be~1n of it occurs S.
data{lO},
end of it.
result (lO}.

perform: f111 tabl e tabl es H,


call-fin ta bles i t changing result .
writl!!! : I 'Result-· . res ult .

form fill tabl e t abl e s it 11ke i t.


move- 'Sel ect' to it-data. append it .
move ' One' t o it-data . append it.
move 'Opt10 n' to i t - data . append it .
endfonn.
form call fm ta bles i t changing result .
call function ' POpup_WmtTABLE_D ISPLAY'
1 ~o rt 1ng
endpos col " 30
=
endpos row .. 30
startpos_col = 1
startpos _row .. 1
t1tletut .. ' Look Ha, a Wi ndow'
uporti ng
ctctse
tl.bles
valuetab
.. resul t

.. i t .
Modularizaicio: modulos
endfonn .
de funicio, Parte 2
Depois de conduir este capitulo, voce sera. ca.paz de:
• Entender as componentes e a estrutura de urn grupo de fun~:io
• Definir dad os globais e s~b-rotinas dentro de urn grup o de fUn~ao

Definindo dodos globais para m6dulos de


fun~60

NOlO... Da is tipos de dodos globois podem ser definidos pore um m6d ulo de func;oo :
!ElMO ,.
• As defini~6es de dad os colocadas no tope de i ncl ude sa o acessrveis a
partir de todos os modules de funliao e sub -rotinas dentro do grupo.
Esse ripe de dado global e persistente entre chama das de modulo de
func;ao.
• As defiaicees de dad es den tro da interface sao conhecidas apenas a
partir do m6dulo de funliaO. Se a interface for definida como in terface
global, as definicoes de paxametro sao tam bem conh ecidas dentro de
todas as sub -retinas que 0 m6dulo de fun~o chama . Esse ripe de clados
globais nao epersistente ent re chemadas de m6d ulo de funli ao .

nllp ://~.compus.CDm.br
~~~ ~~~ . .a_ •••••••• • • • • • • • • • • . ..... ~

620 A'IE",A E' 21 DIA S ABAP/'


D~ 2UDDUURIZA(.iD, .ODULOS DE FUH(AD. PARTE 2 621
Os dados globais definidos dentrc da parte superior de i nc1 ude sao ,.
10 f'~o...
~c;;.~111• •f11I;;;I;2-. - -- - - - - - - - - -- - - - - --
acessfveis a partir de todos as modules de fun~ao dentro do grupo. Eles sao
11 cal l functfon 'z TX 2002'
analogos as definil$oes de dadcs globais na parte superior de urn programa em
12 expcrtt ng
ABAP/4. 13 p_i n . parvU n
Os parimetros definid os dentro de uma interface global sao acesslveis a 14 exceptions
partir de codas assub-retinas chamadas do modulo de fun~ao . Elessao anilagos 15 oth er s • 1.
is varifveis definidas dentro de uma sub-re tina que uriliza a instru~ao lo cals. 16 endform.
17
Os pa.clmetros defmidos dentro de uma interface local sao inacessiveis a
18 •
partir de sub-retinas chamadas do m6dulo de funCiaa. Eles sao analogos as· is f';orm
;;;-:c;;.:l111_'fm:;I~3-.- - - - - - - - - -- - - - - -- - -
varisveis definidas dentro de uma sub-re tina que utiliza a instruc;:ao data . Por 20 eau function 'Z TX 2003'
padrao, as interfaces sao locais. 21 irport1ng - -
Para tornar global um a inte rface, a partir da tela Function Mo dule l2 p_out • fl
Ch ange: Import/Export Parameters, escolha 0 caminho de menu Edit-Globa- 23 excepti ons
24 oth ers • 1.
lize Parameters . Para toma-la local ncvamente , escclha 0 caminho de menu
25 endform.
Edit-Locilize Parameters.

ENIllDI"'. Ustagem 20.2 Este e0 codigo-fonte do primeiro modulo de fun<;oo


r
~o
Se um pcreme trc com 0 mesmo nome existe em dois m6d ulos de cha modo do listogem 20.1
func;oo dentro de um grupo e as d uos interfaces sao globois, as
definic;6es de dodos desses pa rametres devem ser identicos. 1 function z_t x_2002.
2 •• _-
-- - ~-- --- ~ ~ • ~ • __
~ .~ • _
3 · ·*·Local i nt er face :
Dados globais definidos dentrc da parte superio r de in cl ude sao alocados
quando urn programs faz sua primeira chamada pan qualquer m6dulo de
• ••
5 ••
IMPORTl NG_ ".
VALUE(P_I N)
fun~ao de urn grupo . Ele permanece alocado, contant o que 0 programa de 6
chamada permane~a ativo. Cada chamada subseqa ente para um m6dul o de 7 gl • IUn.
8 endf unct fon.
fun~ao dentro do mesmo grupo ve os valores prevics demrc da area global de
dados. Os valores na area global de dados pers istem ate 0 programa de chamada
t errmnar. mRADA.... Listagem 20.3 Este e 0 codlqo-fc nte do segundo m6d ulo de func;oo
Os dados globais definidos fazendo a interface global s' o reinicializados '" chomodo de Ustogem 20.1
toda vez que 0 m6dulo de fun!jao e chamado.
As listagens 20.1 a 20.4 ilustram a persisrencia de dados globais definidos
dentro de urn tapa include. 2 ..---_.
1 f uncti on z_tx_ 2003.
--~ -----
- -- ------ - ~--
3 · ···local in t erface:
--------.-- ------------ ---.-------
EHTlADA~ Listagem 20.1 Este prog romo ilustrc a persisfencio de do dos globois •
5 ••
EXPORTING
VALUE(' .OUT)
6 •• - - - - ~ • • ~ _
1 report zh2001. 7 p_out • g1.
2 par ameters pann_1n(l0) defaul t 'XYZ' oblig ato ry. 8 endf unct1on.
3 data fl( 10) val ue ' HUT' •

5 per fom: cal l _flIlIl ,
6 call _fml3.
7 write: I' tl . ', fl.
8
-. ~. .. .. .. .. .. .. ~ .. "!II' .. .. .. .. ~ .. __ .-.~

. - . -- - - - - - - - - -
APRE NDA EM 21 nus lBAPH
622 L:;..::.:.=:.:::.:::..:.::::..:.:::::..:.:.. --/ D~ 2UOOUWJZA>\UODUlOS DE FUN>\D, PAm I I 623

!Hl1ADA~ Listagem 20.4 Este e 0 incl ude supe rior para 0 grupo de fun~ao zt xb
- ztxb que cc ntern as m6d ulos de fun~ao mostrodos nos listagens 20 .2 e
Passando lima ta be la interna via tab] es
20 .3 Se voce utiliza a parte cia interface tables, pod e passar a tabela intema junta
com a linha de cabecalho. Se ela nao civer um a linha de cabecalho, automati-
1 f uncti on-pool ztxb. camente adquiriri uma dentrc do mo dule de fun~ao . as parametres tabl es
2 dat a gl (10) .
sempre sao passados por referencia.
Para utili zar esse metodo, a panic de F unctio n Library Initial Screen,
o c6digo nas lista gens 20.1 a 20.4 produzem esta saida: esco lha 0 batao de op~ao Table Parameters/Exceptions In terface e enno
SAiDA ~
pr essione 0 botao Change. Voc~ ven a tela Paramet ers/ Excepti ons. Na metade
11 • XYZ
superior cia tela sob a coluna T able Parameters, digite os names de para met re s
• Na Listagem 20.1, a linha 5 transfere contrale pan alinha 10, e a linha
AHAliSE ~
int ernos da tabela.
11 chama 0 modulo de fun~ao z_t x_2002, que existe no grup o de Se a tabela interna eurn tipo est ru tu rado , na coluna Ref. Structure, voce
fun~ao ztxb . 0 valor de pann_in ~ pass ado para p_in . 0 contra le e pode opcionalmen te digitar 0 nome de um a estrutura DDIC. Somen te os
transferido para a linha 1 da Listagem20.2. no mes de estrutura DDIC podem ser inseride s aqui. Se voce nao especificar
• Na Lisragem20.2, a linha 7 move a valor de p_in para a varifvel global um a estrutura DD1C ness e ponte, nao sera capaz de acessar nenhum dos
gl. 91 e defmida na p arte superior de i ncl ude na linha 2 na Lisragem compon entes da tabela intema den tro do m6dulo de funliao. Fazer isso caus ard
20. 14. 1S50 a coma visfvel para todos as modules de fun\=ao, e 0 valor urn erro de sintaxe.
epers istente entre chamadas para mod ules de fun~io desse grupo. 0 Se a esbela interna nao for urn tipo estruturado, voce pode inserir um ripe
contro le retoma para a linha 11 da Listagem 20.1. de dado do ABAP/4 na colnna Reference Type.
• Na Listage rn 20. 1, a linh a 16 transfere 0 controle para a linha 5, depois
para a linha 6 e enta o para a linha 19. A linha 20 chama os m6dulos de
Passa ndo uma tob ela interno via export; ng/i mpor t t ng
fun~ao de z_tx _2003, qu e tambem existem no gropo de fun~ao ztxb. e changi ng
o controle etransferido para a linha 1 cia Listagem 20.3. Se voce utiliza a parte da interface export ing / impor t i ng ou changi ng, voce s6
• Na-Listagem 20.3,a Iinha 7 move o valor cia variwel globalgl para o_out. pede passu 0 corpo de urna tabela intema, Entretanto, essas partes da interface
91 ainda contem 0 valor colocado nela pelc m6dulo de fun~o anterior. permitem qu e voce escolha se pass a 0 corpo interne de tab ela par valor (0
o controle rerorna para 0 programa de chamada e 0 valor eescrito. padrao) au por referencia. Quando u tilizar esse metodo, voce deve especificar
table na coluna Reference Type.
As figuras 20.1 e 20.2 e as lisragens 20.5 e 20.6 ilustram as rnaneiras de
Passando uma tabela interna para um modulo passagem tab elas intemas p~a urn m6dulo de fun~aC?
de fu n ~ao
Passar u ma tabela interne para u rn m6dulo de funiiao segue as mesmas regras £tmADA..... Ustag~m 20.5 Esse prog ramo passe tob elcs internos pore urn m6dulo
que passar uma tabela intema para uma sub -re tina . Hoi dois meeodos. r de fun~oo

• Via a parte tabl es da interface. Isso eequivalence a passa-la via adi~ao 1 report ztx2 005.
tables para a mstrut;ao perform. 2 tabl es ztxlfal.
3 data: it_a li ke ztxlfal occurs 3. -nao t em uma 'ltnhe de c a be~ J.lho
• Via a parte da interface i mporti ng ou changing. A primeira e equiva- 4 it_b like ztxlfal occurs 3. - nao tem uma linha dt cabt~al ho
lente a using na instruliao per f orm e a ultim a e equivalen te a changing
em perform. ,
5 select fI up to 3 r ows froo ztxlfal in to t able ft _a.

7 call f unction ' Z_TX3 006 '


Para retornar uma tab ela interna que se origina de dentr o de urn m6 dulo
8 export i ng
de funt;io, utilize urn dos seguintes : 9 i t!
• A parte da in terface tables 10 importing
11 1t2
• A parte da in terface exporting 12 tab le s
~
t':,"_ 0- • •
..,'t:' ........
,-
AAa~.A . a . . . A. • • • A • • • • • _-.....,- . . . . . . . -- - - - - - -
624 "RE'DA EI 21 DIA' ABAP/4 D~ 20,MDDULlRlZAyiD, llliOUlO5 DE FU.yiD, PARTE 2 625

13 l t4 • it_a 9 ." IT4 STRUCTURE LFAI


14 changing 10 It- CHANGING.
15 1<3 it_a[ ] 11 ... VAlUE(IT3) TYPE TABlE
12 It. .~ •• --- --- -- -_. _.----- -- -- -. -. -••• -- -- -- -----
16 excepti ons
17 others i. 13 data wa like lfd.
18 14 write I ' In :' .
19 write: I 'AFTER CAll ', 15 loop at itl in to wa.
20 / ' IT_A:' . 16 wri te I ve-t ifnr.
21 loop at ft_a into ztxlfal. 17 endl ccp,
22 write I ztx lfa l-l1fnr. 18 loop at it3 into wa .
23 endlo op. 19 wa-l1f nr • sy - t ebtx .
24 ultne. 20 modify it3 fl"Olll wa.
25 write / ' IT_B:' . 21 endloop.
26 loop at it_b into ztxlfal. 22 uj tne .
27 write I zt xl fal -l 1fnr. 23 write: I ' IT4: '.
28 endl oop. 24 loop at 1t4.
25 write I it4-11f nr .
26 endl oop.
27 ult ne.
28 1t2[ 1 • ,t1[ 1.
Porcmelefs mostro 29 endfunctio n.
como pa ssor 0 Corpo
do tobelo inlemo.
Fi g u r A 20 2
~~::tjt'_'S*'.III'lo"-~~~
.
. ~f?:.";'>r.-~ .._~,,":."'~ -::o::.-' 'G: ~~' ~'"
A telaTobIe - L __ g;-; ~ ;- x ;,_ · ,,- ~~~i " -s
Parameters/ ~ ;0~ ' ~ ;- :
Exceptions mastro
~' .
.....g)':riI;:~,""eu;
i;"
•....
"..- . ~ .-....
"
~

-' " . . - ~d"'IIC.,~ - · · · - ·


::r~~;~",",,~""

'lo-"..... '....,t.~...-it
como cesser tlma ~.
,n 1o~/a in/eme junlo
com $UO Iinhe de
cabe~olho.

m
; "! ......"'~ ....,~."'.
,

EMTRIDI.... List agem 20.6 Esse. 0 codlqo-ionte para 0 modulo de func;oo


r chomodo 0 partir do Ustogem 20.5

1
2
It" • • • • _. • . _ . _. . _
o c6digo nas lisragens 20.5 e 20.5 produz esta saida:
3 ..•..·Local t nterface :
4
5 .. IMPORTING
YALUE {ITl ) TYPE TABLE
6
7
8
.. EXPORTING

TABLES
YAlUE(lT2) TYPE TABLE

"
<.
l-
... . . . ....
""'""' • • • . --. • • • -• .-
626 APR EN DA EM 21 DIAS AWl'
D~ ,a, MDDUURI2A(lo, M6DUl OS DE fUN(lO. PARTE2 627

• Na Listagem 20.5, as linhas 21 a 23 mostram qu e 0 conteudo de ita


SAioA ~ Ill: foi alterado pelo m6dulo de fun,ao. -
1000
1010 • As linhas 26 a 28 mostram que 0 contecdc de i t_a foi copiado par a
1020 it_ b pelo modulo de fun,ao.
IT4:
1000 D efin ind o as sub-rotinas em urn grupo de f u n<jo o
1010
1020 Voce pode chamar sub-retinas externas e internes de dent ro m6dulos de
fun l$ao. As chainadas para sub-retinas externas para module s de funljao sao as
AFTER CALL m esmas que para relat6rios.As sub-rotinas internas devem ser definidas dentro
IT_A:
1 de urn include especial. 0 F 01.
2 o FOl ~ incluldo no grupo de fun,ao editando 0 programa pri ncipal e
3 inserindo a instrucac i ncl ude L!gid FOl. Assirn, a aljaO de dar urn clique duplo
IT_B: no nome do i ncl ude 0 cria automaticamente. Dentro dele, voce pede colocar
1000 sub-retinas acessfveis par todos m6dulos de fun(jao dentr o do grup o. Ha,
1010 entretanto, uma maneira mais facil.
1020
A maneira mais facil de definir 0 F O1 e codificar sua chamacia para a
sub-rotina e entfio dar urn clique duplo no n ome de sub-retina na in st ru C,jao
ANALISE ~ • Na Lisragem 20.5, it_a e it_b sao tabelas intemas sem linhas de
perfo nn. 0 procedimento a seguir ilustra esse processo .
cabecalho.
• A linha 5 coloca tres linhas em it_a. s(REEMCAM~ lnlcie c ScreenCom " How to Create Subro vtines with in a Function G roup" agora .
• A linha 8 passa 0 ca rpo de ; t _a para i tl por valor, para i t3 po r valor
e resulrado, e para 1t 4 per referencia com linha de cabecalho (it4 1. Inicie a partir da Function Library: Initial Screen.
adquirira um a linha de cabecalho dentro do module de fun,ao).
2. Selecione 0 bono de 0piSao Source Code.
• ~a Listagem 20.6 e dentro do modulode fun~ao, ; t1 e ; t 3 sao c6pias 3. Pressioae a botao Change. A tela Function Module: Edi t emostrada.
lD.~~pendentes de ; t _a. A linha 13 define urn area de trabalho wa para
u tiliza cso com it1 e i t3 porque estas njio tern linhas de cabecalho.
4. Digire uma insrrucao perf orm no c6digo-fonte do modulo de fun~ao.
Por exernplo, perform subl.
• As linhas 15 a 17 escrevem 0 conteudo de it! urilizando a area de
5. De urn clique dup lo no nome da sub-retina. Nesse exemplo, voce
t rab alho wa .
daria urn clique duplo em subl. A caixa de dialc go Create Object
• As linhas 18 a 21 modificam 0 conteudo de i t 3. Essa ta be1afoi passada aparece, perguntando se voce quer criar a su b-retina.
por valor e resulta do, entao 0 conteudo do original sera alterado 6. Pressione a botao Yes . A caixa de dialogo C reat e Subroutine aparece.
on
quando a instru cao endfuncti for executada. o nome de sub-rotina aparece no campo de Subroutine. 0 nome do
• As linbas 24 a 26 escrevem 0 conteudo de it4. Note que a linha 25 include l!gtdfOl aparece na caixa Inclu de Choice, e 0 b otso de 0Pljao
acessa urn componente de it. Isso s6 epo ssivel porque a coluna Ref. a esquerda dele automaticam enre ~ selecionado. .
Structure na tela Param eters/ Excep tio ns contem 0 nome da estrutu ra 7. Pressione 0 bono Co ntinue (a maroa de verificacao em ver de) . Uma
D D IC 1fal. IS50define a estrutura de it dentro do m6dulo de fUnlfaO . caixa de dialogo Warning aparece, in dicando qu e 0 pro grama principal
Se acoluna Ref. Structure esnvesse em branco, urn erro de sintaxe teria sera modificado e uma instruiSao i ncl ude l! gi df Ol sera inserida nele.
ocorrido na linha 25.
8. Pressione 0 botao Continue (a marca de verifica(jao em verde) . Vo~e
• A linha 28 copia 0 conteudc de itl para i t 2. ve a caixa de dialogo Exit Editor indicando qu e seu codigo-fonte
• A linha 29 copia 0 conteudo de it3 de volta para i t _a no programs de alterou e perguntando se voce quer salver as aheracoes.
cham ada e 0 controle retorna para a chamada.
~&A " A A A A" a a~a .".a..-.. . . . . a .I I_ X.,,~,--; w -a ....... I I a • • • • • • • • • • • • • • • • ~.~
••
628 HRENDA EM, 1 DIAS ABAP /4 DIA ' U DDtllARllA\AU ODlJlOS DE flJN\AD, /AiTE, , 629

9. P ressione 0 batao Yes . A tela Function Module Editor e mcstrada. mensagem Function module has been r el eased tambe m aparecera n a part e
Voce agora esta.editando 0 FOl . Codifique a sub-retina aqui. inferior da jan ela. Entretanro, se quise r alterar a interface, voc e s6 precisara
10. Quando tenninar a co dificacsc de sua sub-re tina, pressione Save e pressio n ar a bo rac Display C hange e ter a. permissac para alcera-lc de qualquer
depois Back. Voce vol ta para 0 c6digo-fonte do m6dulo de fun )ao maneira que quiser, Lembre -se, ent retanto, que voce nao deve fazer alteracoes
code comegou. que po dem fazer com que programas existences termin em an ormalmente ou
resulte m em resu ltados diferen tes.
Para ver 0 include que acabou de criar, rerome para a tela Function Library
Initial. Escolha 0 batao de 0p/iao Main Program e pressione a batao Change.
Voce vera a tela Fu nction Module: Edit . N a parte inferior. aparecera a instru/iao
Se voce a ddento lmente liberor um m6dulo de fun.;ao e quiser cancelar
i ncl ude ljgidfOl. Essa instru/iao foi inserida pelo passo 7 do procediment o a libe rot;60, v6 pam 0 tela Fundi o n Module Display: Administration,
aeima. Se voce dec u rn clique duplo nessa linha, veri sua sub -re tina, pressio ne 0 bottio Display Change e escclho 0 cominho de menu
Functio n Modu le -Relea se-Can cel Releose. Depcis de escolher esse
cominho de men u, pressio ne e tede Enter para comp leter 0 processo
Liberandc urn modulo de fun\;oo de cance!omento.

MOVO i.:. A fum;60 releas e od iciono um nlvel de profec;60 a interface de um m6dulo de


JEiMO r fun.;co protegen do-o de modifico~oo. Se tiverc ompletado o teste de seu m6du lo Testando urn mOdulo de fu n\;oo
de fvn.;oo, voce pede querer libera-/o pora indicor que e seg ura pora o utros desenvclve -
dores utilizor em seu c6digo. Fozendo tssc, bosicomente voce est6 prometendo noo oJtera r Se voce quiser testar urn m6dulo de fun~ao sem escrever urn programa
os parametres edstentes do interface de nenhu.mo moneira que posso causer problemas ABAP/4. vo ce pe de faz e-Ic utilizando 0 amb iente de teste den tr o daFunccion
pora q uelquer progromo q ue che me seu m6dulo de fvn¢ o. vccs est6 prometend o Library. Utilize 0 seguinte pr ocedimento para acessar 0 amb ience de teste.
estobilidede de interfoce.

Po r exemp lo, depois de liberar urn modulo de fuD~aO, voce nao adicio- SCiHNWI.... Inid e 0 ScreenCom "How to Use the Test Enviro nmenf for Function Modules"
,. a go ra. - --.
Daria urn parameero obrigarorio, DaO alteraria as propostas e nem rem overia
urn pargmetro. Caso conrrario , quaisq uer chama da.s existente s para seu m6dulo 1. Comece na Function Library: Initial Screen. D igire 0 nome do
de fum;ao poderiam falhar ou funcio nar de maneira diferente. m6 dulo de fun~ao que voce quer te stae n o campo Fun ction Module.
Depois de liberar, voce ainda po de alterar a interface, mas precisa dar urn 2 Pressione 0 bo rao T est, Yoce veri a tela Test Environment For
passo extra para faze· lo. Function Mo dules (mom ada na Figura 20,3).
Para libera r urn rn6dulo de fU1?'~ao, utilize 0 seguinte procedimento.
3. Digite os parametres que voce quer forn ecer para 0 teste. Para.
preencher um a tabela in tema, de urn clique duplo no nome interne
scmNCAM~ lnicle a Sc~eenCom "How to Releose a Functio n Module- ogoro .
de tabela. V ma tela sed mo strada, permitindo qu e voce digite as
dados na tab ela intema. (Se voce especificou uma Ref. Stru ctu re para
1. Comece na Function Library Initial Screen. a ta bela intema, as colunas da. est ru tura serro mostradas.} Di gite seus
2. Esco lha 0 bono de op~ao Administration. dad os e pres sione a teela Enter. Voc e voltara para a t ela Test Environ-
3. Pressione 0 borso Change. A tela Function Module Change: Admi- ment F or Function Modules.
nistration ~ mostrada. No canto inferior direita cia tela, na part e 4. Pressione 0 batao Execu t e na barra de ferram entas Application para
inferior da caixa Ge neral Da ta, voce veri Not Rel eased. exectitar a m6dulo de fun~ao. Vo ce veti Tes t Function Module:
4. Escolha 0 caminho de men u Function M odul e·Release-Release. A Result Scr een (veja a Figura 20.4) . A safda de instru~oes write dentro
mensa gem Released aparece na parte inferior da jan ela na barra de do m6 dulo de func;ao aparece prim eiro. Na Figura 2004. You passed
status. Na extremidade inferior direita da janela, Not Released muda A e a resultado de uma inStrUl;ao wri t e denn o do m6d ulo de fun~io.
para Customer Release On e ~ seguida pela data atual. Entao, a tempo gasto para executar a m6dulo de fun~ao (em mi-
cross egun dos ) e mostra do. Em seguicia, os valor es dos parametros
Se voce tentar alterar a interface depo is que 0 m6 duJo de fun ljao foi sao mostrados e tern do is valores : a de an tes e dep ois. Para parametrOS
liberado, as campos de entrada. na tela de interface est ario acinzentados. A changi ng, a valor "'antes" ~ mos trado primeiro e 0 valor "'depois·
.............. _~~--
-- - = -
630 APiEM DA EM21 DIA5 ABAP"
DIJ. 2UDDUWIll>'. d'ODIlOSDE FUM>" , '.uTE 2 631

aparece embaixo dele. P ara parametres tabl es, as conreedos "depois"


ap arecem acima dos cccteudos "antes" (original). Na Figu ra 20.4, a Perc sclvor seus dodos de teste e/ ou resultados, pressione po'botOo Save
no tela Test Environment o u no te la Result. Para recuperor sues
tabela inte rna i t cootinha duas linhas depois do pro tessamento e trSs
lnfcrmccces salvos, pressione 0 bctec Test Data Directory em quolquer
linhas antes . Para ver as conteudcs ant es ou depois cia tabe la intema, tela . As seqaenc lcs de teste tcmbem podem se r ccos trurdc s utilizondo
de urn clique duplo em qualquer linha, o bctoc Test Sequence. .

Figura 20 3
A tela Test Localiza nd o m6dulos de fun<;Cio ex istent es
Environment lor
Function Module s. Co mo mencionado antericrmente, a SAP fo rne ce mais de 5.000 gropos de
fun~o p reexistentes , contendo mais de 30.000 m6dulos de fun 'iao. Frequen-
temente, a funcionalidade que voce exige ji e abracgida per esses m6dulos de
funfiao fomeeidos p ela SAP - s6 eprecise lo calizar 0 corre ro . Para achar urn
module de fun~o existence, utilize 0 sistema Rep osit ory Inform ati on . 0
seguinte procedimento the mos tra como fazer isso.

SOHNUM~ lnicie 0 ScreenCom "Hew to Searc h for Functio n Modules· oqom .

I. D. tela AJ3AP/ 4 Development Workbench, escclha 0 caminh o de


menu Overview -> Repository Infosys. Voce ve a tela ABAP/4
Repository Inf orm ation System mostrada na Figura 20.5.

Figura 20 5
A te/o 1VJ.4P/4
Repository
Figura 20 4 Infetrnotion System
como oporece
A kla Test FundiOfl
in;ciolmente.
Module: Result
mostro os yo/ore s
a ntes e depo is pam
os pa l'6metros
changinge
tables.

2. Expanda a linha Programming dand c urn clique no sinal de .di,ao


(+ ) a esquerda dela. U rna subirvore e mo strada embaixo dela.
632 I APRE MOAEM21 DIAl A'AP!' DlA211: MOOULARIZAtA0: MOOUlOS DEfUHtAO, PARTt z I 633
~

l,
Figura 20 6
Digite m ultiples criterics de selecac aqui. Esses valor es sao conh eci-
A tela ABN'/4 dos com o os valor es inclufdos, au simp lesmente "includes". (Esse e
Reposjtoly
Info rmation System: I urn usa difer ente do. term o quando nos referimos a programas in-
Function Module clude.)
com os m6dulos de
£UnCiao expostos. Eigura 20 7
A tela AA4P/4
Repasitofy
Information System:
Function Module
cam rcccs cs
seler;oes mastrados.

3. Expanda a linha Function Libra ry clicando no sin al de adi~ao (+ ) a


esquerda dela. U rna subarvore emostrada em baix o dela. Sua tela ago ra
deve se parecer com a Figura 20.6.
4. De urn clique duplo na linha Function Modules. A tela ABAP/ 4
Repository Information System: Function Module emosrrada. Pr es.
sione o ba tao All Selections na barra de [erramen ras App lication para 7. P re ssion e a batao Options para espec ificar operadores de sele<;ao
exibir todos as possfveis campos de selecao. Sua tela agora deve como igual, difer ente, maior que, menor que e assim par diante. Voce
aparecer como mostrado na Figura 20.7. Essa e uma tela de selecac vera a te la Main tain Selection Optio ns, como mo strado na Figura
em que voce pede inserir criteri os de pesquisa para localizar modules 20.9. P ara ser capaz de espe cificar P att ern or Exclude Pattern , seu
de fun;ao. Todos as campos ndc diferenciam maiasculas e minris cu- valor deve canter urn caracte re coinci dence com 0 padrao: tanto +
las, com a excecic do campo Short De scription , que diferencia caixas como ". Pressione 0 ba ta o Copy para retomar pa ra a tela Multiple
altas e baixas! Selection.
5. Para pesquisar urn m6dulo de fun<;ao, tan to palavras com o string s de 8. Na tela Mult iple Selection, pr essione 0 botao Comple x Selection. A
caracteres podem ser inseridas nos campos de p esquisa. Utilize + e Ie tel a M ult iple Selection e mostrada n ovam en te, mas dessa vez ha uma
como caracteres curin ga. + corresponded a qualqu er caract er e uni co, barra de ro lagem n o lado direito e as campos Ranges aparecem (veja
e I;' correspondera a qualquer sequencia de caracteres. P a r exemplo, a Figura 20.10) . Para especificar valores que deverac ser exclufdos cia
digite *DATE* no campo Function Module. Isso Iocalizara todos os pesquisa, rol e para baixo e as digire dentro da caixa in titulada ...But
m6 dulos de fun<;ao qu e contem os caracreres DATE em qualqu er lugar N ot (veja a Figura 20.11) . Esses valo res sao conhecid os como valores
em seu n0!TIe. Ou, voc e pode tanto digirar "Dare" como "dare" no excluldos ou , simpl esmente, excludes.
campo de descricto curt a (apenas uma string e perrnit ida nesse
campo ).
6. P ara digitar mais de urn valor para pes quisar, pressione a seta no fim
do campo. A tela Multiple Selection e mos tra da (veja a Fi gura 20.8).
a s valores que vo ce digit a nessa tela devem ser separados pa r OR.
A& • • • A • • AA • • • • • • • • AA • • A~A •• • • • AA • • • A • • • A~ ..-.............................
~

634 , "fUND'" EM21 el..,s AUP/4

Figu ra 20 8 Figura 20 11

A tela Multiple A ceee ...&11Not.


Selection.

."

Fig u r g 20 9
9. Pressione 0 batao Copy para capiar seus criterios de selctjao de volta
A ~Jo Maintoin
Selection Options.
para a tela de sele>io. Voce volt•• t el. ABAP/4 Repository In form s-
tion System e, se voce inseriu mdlripl cs criterios de sele~ao. a seta no
fim da linha estari verde para mostrar que mais de um criterio -de
sde,'o existe (vej•• Figura 20.12 ).

Figura 2 0 12
A tela ABAP/ 4
Rep05itory
/nfonnationSystem.
A seta verde no fim
Figura '0 10 do linha m05tro que
Atela Multiple mais de urn criteria
Selection com umo de seJe¢ o existe.
barre de roJogem no
Iodo direffo e
camposRanges.

10. Para comecar a pesquisa, pressione 0 bono Execut e. Os resultados


de pesquisa sao dererminados como se pesquisas separadas tivessem
sido [eitas para todos as criterics de inclusao, e tambem para todcs
... A.
~ ~ ~

• AA .~.A a A A ...
& ~ - 'l4!l & . A & a & • • ~ • • • • • • • • • • • • III!- •

636 APlENDA EM11 DIAl ASAP" DIA 20, MOOUlAlJ2A(.iO, MODUl.Ol DE ru""D, PArTE I I 637

as resultad os OR. Emao, se a exclusac for especificada, eles serfo F i gura 20 1 4

aplicados em uma entrada depois da outra. Por exemplo, no campo A tela Function
Module Display:
Short Desc ription. sup6e-se que voce tenha especificado as inclusoes Documentation.
"Date" e "date" e"Update" e"update",Todasas descricoes que contem
"D ate" serso lccalizadas, e entac todas as descricces que contenham
"date" serac OR junto do prim eiro conjun to de resultad o: Logo. todas
as descricces que contenham "Update" sersc removidas e enuc codas
aquelas conten do "update" serfo removidas. 0 result ado conrera
st rings "Date" au "date" scm "U pdate" e "update". Voce vera as
resultados na tela Function Modules (veja a Figu ra 20.13). 0 num ero
de m6dulo s de £un,;:o localizado e indicado na barra de titulo a
esqu erda dele entre parenteses.
11. Para exibir urn m6d uIo de func;ao, de urn clique duplo nele. A tela
Function Module Display: Documentation emostrada (veja a Figura
20.14). Essa tela mcstra a voce todos os parametres de interface e sua
documentaclo. Para ver mais sobre documentaqao, de urn clique
duplo em urn nome de paramerro (veja a Figura20.15). Para retomar a
dccumentacao deinterface,pressione 0 bo n o Back.Para retornar a lista
de modulo de funliao, pressione 0 botao Back novament e. Nem tcdcs cs porametros tern doccmentocoo odicionol. Se 0
pcremetrc em que voc! deu um clique duplo 000 fiver mois doccmen-
12. Para testar urn rn6dulo de funliao, coloque seu cursor nele e pressione ta¢o, nodo ocontecer6 quondo voca der um clique duplo nele.
o batao Test/Execute. Voce vera a Test Environment Screen para esse
m6duIo de fun,;:n.
Figu ra 20 1 ,
Figura 20 13 A docvm emo~Qo
od id onol para urn
A ~fa Fundion pa nimetro.
Modules.

'.
• • • • • • • • •• • • • • • • • • • • • • •
638 APREN" EM 21 eus ABAP /~ PIA 2UDDULlRIlA(AD,MODUlDS DEfUN\iO. PARTE 2 I 639

Se, quando voce olhc r no barre de titulo no tela Function Modules, 0


Figura 2° 16
Esse e 0 modo como B~===
~~~~~!§!1~~~;);!;~~!;!!!;!@~~
ncrnerc de m6dulos de fvnc;oo encontrodo for exotomente 500, enta~ tela Function
(:I

prcvcvelmente tera ccesscdo 0 tomanho m6ximode listc. Retome pam Module Creote:
a tela de seler;ao e procure no compo Maximum No. of Hits. Se ele for Adm inistration
fombem de 500, voce estero acesso ndo 0 m6ximo. Voce pode ester oporece depais que
tenfondo oumentar 0 numerc maximo de ccessc, mas ;550 roromente o m6du/o de fvn¢o
foj criodo.
sem produtivo , porque voce provo velmente noo !ere urno listc inteiro
de 500 m6dulos de funr;60. Refine seus criterics de pesq uiso pa ra
reduzir a nCrmero de ocesso.

Explorando OS componentes do seu grupo de


£un~Cio
D epois de criar seu primeiro m6dulo de fun~ o, utilize 0 seguinte procedi-
mento e gastc alguns minutos para explorar a s componente s do gropo de
func;ao. Voce deve se familiarizar com a estrutura que acabou de criar.

SClHNWI ~ lnlciea 5creenCom MExploring the Components ofYour Function Gro up· ogoro.
5. Escolha 0 borso de op~ao Documentation e eneac pressione a ba tao
Change. A tela Function Module Change: D ocumentation e
1. Comece na Function Library Initial Screen. Se jaeac estiver af digire mosrrada. Aqui voce pode inserir uma descricac curta para cada
o nome de seu m6dulo de fun~ao no campo Function Module. parfmetro e excec;ao na interface. Pre ssione 0 batao Back para retor-
2. Escolha 0 botao de op ~ao Administration e entao pressione a batao nar.
Change. A tela Function Module Change: Administration e exibida 6. Escolha a botao de op~ao Source Code e entia pressione 0 botao
(veja a Figura 20.16). N a parte superior da tela, no C:iUIlpO Function Change. A tela Function Module : Edit emosrrada. Pressione 0 botao
Group, voce pede ver 0 ID do grupo de funr;ao a que esse m6dulo de Back para retom ar.
fun~ao pertence. N a extremidade inferior direita no campo P rogram,
7. Escolha 0 batao de op~ao Globa l Data e entac pressione 0 batao
voce pode ver 0 nome do programa principal para 0 grupo de fun r;ao.
Change. A t ela Functi on Module: Edit e mosrrada. D essa vez,
No campo Include esta 0 nome do incl ude que conrem 0 codigc-
entretanto, voce estara editando i nclude superior. Ob serve 0 nome
fonte para a m6dulo de fun~ao. 0 ultimo campo mosrra 0 status do
do i ncl ude superior na berra de tfrulc. Ele se adapts aconvencfo de
m6dulo de fun~ao: Active au Inactive. Pressione 0 botao Back para
nomeacao 1fgid top, on defgide 0 nome de seu grup o de func;ao. Aqui
retornar para a tela Function Library Initial.
voce pode definir varisveis globais e areas de trabalbo tables que sao
3. Escolha 0 bono de op ~ao Import/Export Parameter Interface e entac comuns a todos as m6duJos de fun~ao dentro do gropo de funr;ao. Se
pressione a ba tao Change. A tela Import/Export Paramete rs e seus modules de fun~ao utilizam a instrucdo message. voce tambem
mostrada . Pression e a bone Back para retorn ar a tela Function pode definir a classe pednc de men sagem [na instrucao f unctf on-
Library Initi al. pool). Pressione 0 batao Back para rerornar.
4. Escalha a batao de op~ao Table Parameters/Exceptions Interface e 8. Escolha 0 bors o de opcso Main Program e pressione 0 botso Change.
entaD pressione 0 batao Chang e. A tela Function Modu le Chan ge: A tela Function Module: Edit e mostra da. Dessa vez, voce estara
Parameters/ Exceptions emcstrada. Aqui voce pode inserir au alterar editando 0 program. principal (veja a Figura 20.17). Observe que a
parametres internes de tabela e na mes de exce~ao. Pre ssione 0 bono nome dentro da barra de nrulo comec a com sap1 seguido par seu ID
Back para retomar. de grupo de fun~o. As duas ins truc;6es i nclude incorp~ram 0 in-
cl udesuperior e 0 UXX no progr.ama princi pal. Dar ~m clique.duplo
no nome i nclude superior permitid que voce a edire, Pression e 0
_ .......L..A......._
..&...JL I I I a~

640 APR ENDA EM21 DIAl ABAP" DlA2UDDU,","UIAD, MODULOI DE FUNIAD. PARTE 2 641

bcuo Back para retomar ao programaprincipal. Dar um clique duplo Fig u r a 20 1 B


em UXX exibiri 0 ccdigo-fcme de programa include - ele contem Um erro de sinloxe
detedocJ em tempode
as instrucoes que incluem as m6d ulos de funCiaO no grupo. Seus
ellKU¢o dentrode
no mes sao indicados dentro de comenedrics no fim de cada instrucio um m6dulo de fum;60.
i ncl ude. Voce nio tern permi ssao para modificar 0 UXX. Dar urn
clique duplo em quaisquer das instrucoes i ncl ude exibira 0 codigc-
foote para urn module de fun~o dentro do grupo. Pressione 0 botio
Back para reto rnar. .
Denerc dessa caixa de diilogo SAP R/3 estio as informacoes sufi~ien~es
Flgurq 20 1 7 ttl! ,pc 11 BriE "'iflil
~_' . H. :~-:-o;.~~~_ .~_ ;,1',. '~~:~ ;..~~~~-'_
'«'''' para descobrir a posi 'iao exata e a causa do erro. N a Figura 20.18, 0 pnmclro
Ess~ 4 a progromo V ~- :;- 4 x " II ··!i-~d·~~..¥~,", campo concern 0 no me de programa 1ztxau02. Esse e 0 programa incl~de que
principal pore 0 "J 11 .); .. if . .. ;~ ~. '9i.1Iti;o ,~, . ~.... .......... :w-... '.~_";;"
m6dvlo de fun¢" contem 0 erro. 0 segundo campo diz a voce que 0 errc oco rreu na linha 10.
z_ tx_dfv. N a parte inferior cia caixa de dialogo esta 0 erro real. N esse case, 0 erro Ie •. •
expected after · P2-. .
Para corrigir 0 erro, utilize a seguinte procedimentc.

... lnicie a ScreenCom -How to Fix on Error in 0 Function Module- oga ra.
5mENCAM~

1. Comece na ABAF/4 Edit or: Initial Screen (t rans;ujao SE3B) .


2. No campo Program. digite 0 nome de programa do prim eiro campo
da caixa de diilogo, nesse case Iztxau 02.
3. Pressione 0 ba tao Ch ange. Is50 mostrara 0 c6digo-font e de modulo
de fuoc;ao que conte m 0 erro.
4. Pressione 0 bone Check na berra de ferramentas APplicad t ion,,Vodee
deve ver a mesmo erro qu e foi most rado na parte inferior a caixa e
dialogc SAP R13. .
Pora copter, renomear au excluir urn m6dulo de fu n~oo, utilize as 5. Corrija 0 erro . Fr equen temenre, voce pe de simples~e.n~e presslOnar
bot6es Copy, Re name, a u Delete no Fundion li brary: lnltlcl Screen.
a borac C or rect e a sistema aut omaticamente corrigtra 0 err o para
voce.
Lo caliza ndo e corrigind o erro s em modu les de
f u n!;o o Confi gu ran do 0 valo r de sy-subrc no retorno
Normalmen re depois de retornar de urn m6dulo de fuoiSaO, 0 SIstema. auto-
A ma neira mais faeil de corrigir en-os ern urn m6dulo de fun~ao execu tar uma e maticamente configura a valor de sy-s ubrc como zero. Utilize uma das duas
ve['ifica~ao de sintaxe quando voce estiver dentro do m6dulo de func;aa. Voce
seguintes instrucoes para configurar sy-subrc para urn valor nao zero:
ped e fazer isso n.a tela Functi on Module Edit pressionando 0 bata o Check na
barn de ferramentas Application. Ate agora, voce 56 criou urn modulo de • rai se
funlji o, entac voce sabe por onde procurar se ele nia funcionar. • mess age raising
Entr etanr o, depo is de criar muit os m6dulos de fun~o. voce pe de termi -
nar na situaljio em que esta, chamando urn au mais m6dulos de func;ao dentr o
Utilizando a instru(;fi o r aj se
de urn grupo, com 0 sistema dizendc a voce que hi.urn erro desintaxe em algum
lugar. A mensagem de eITO que talvez vocevejaapareceem uma caixade didlogo U t ili ze a .mstrucac
_rat
. se para sair
.... do m6dulo de fun,ao e configure 0 valor de
SAP R/ 3 como a mcstrada na Figura 20.18. sy-s ubrc no retorno.
•A. A • .- • • • . .. . . . . .. . _ ... . . . . . .-........~ . .. ... . . . . . . . . . . . . . - . .
642 APRENDA EM 21 DIAl ABUII
D~ 2'1. MODUWlL\(.i D,M6~ DE FUNIAD. 'AilE 2 643

9 exceptions
Sintaxe para a instru~ao r a'i se 10 er ror_a - 1

-
CIl
Z
A seguinte e a sintaxe para a instruc;ao raise.
raise xname .
11
12
13
error_b • 4
eTTOr_c - 4
othe rs • 99.

S
m
onde:
• xnume e 0 nome cia excecso a ser·configurada.
14
15
write: I ' sy-subrt - ", sy-su brc,
I I vout - ", vout.

T EMmDI~ U.lagem 20.8 Isla e a m6dula de lun~1ia chomoda do Listogem 20.7


Os seguintes po nte s se aplicam :
1 function z_tx_2.0oa .
• xname ped e ser qu alquer nome que voce tenha composto, Ela DaD [em 2 • •- --•• •• -- --- ----- . ----- -------•••• ----- .--- -- -- ••-- -- -- -- -,--
de ser pr eviam ente de finida em qualquer lug ar. Ela pede ter ate 30 3 " ·" lo cal i nt er f ace :
caracter es de co mp rimen to . Todos as caracteres sao permitidos, ex- 4 •• IMPORTING
ceeo " ". e :. 5 .a VAlUE(EXNAME)
6 •• EXPORTI NG
• -N ao coloque xnane dentro de aspas. 7 •• VAl UE (POUT)
• xname DaO pade ser uma variavel, 8 •• EXCEPTIONS
9 •• ERROR_A
Q uando a.instru~o r at se eexecutada, 0 contrale retorna imediatamente
10 ." ERROR_B
para a instIU~O ce11 function e urn valor e atribuido a sy-subrc baseado nas 11 •• ERROR_C
excecoes que voce listou af. Os valo res atribuidos a parametres de exportacio 12 •• ERROft X
nao sse copiados de volta para 0 prognma de chamada. As list agens 20.7 e 20.8 13 •• -- -.- - - - - . - - - - --------- ------• • - --- - ---- - - -- ----- - --. ------.
e a F igu ra 20.19 ilustram co m o isso acontece. 14 pout · 'XXX'.
15 cas e exname.
16 when ' A' . r ai se error_a .
17 when 'B'. ra ise error_b.
9 c6d igo no m6dulo de fun~c o mostrodo no listogem 20.8 e mere- lB when .' C'. r aise error_c.
mente po ra fins de exemplo; normolmente tc rnbern haveria um c6digo 19 when 'X'. ra ise error_x .
que Haesse olgum process omento real of tcrnbem. 20 enecese.
21 endfunction.
F igura 20 19 coli function I Z
~ XXX: l fundion Z_XlOI..
Iste ilustro 0
processomento do
exceptions
error_A ~ 1 raise error_b. o c6d.igo nas lisrageas 20.7 e 20.8 produzirf esta salda, se voce especificar
;ns1ru~6o raise . error_B = 2+- este valor e ~ . urn valor de A para pann_in:
other ... 3 otribuldo a endfundron.
sy-svbrc sy-s ubrc • 1
vout • INIT

• Na Listagem 20.7, a linha -4 pega 0 valor de parm_i n e 0 passa para 0


EHTUDA lrItrr.. U st ag em 20.7 Como config ura r 0 vclc r de sy- subr-c 0 partir do interi or
rn6dulo de fun~ao z_t x_2007. 0 controle e transferido pua a linha 1
". de urn m6 d ulo de fum;co .
da Lisragem 20.8.
1 rep ort ztx 2.007. • Na Listagem 20.8. a linh a 14 atribui urn valo r para 0 paramerro pout .
2. parameten panrL1n defa ult 'A'.
Esse parimetro e passado por valor. entao a altera~ao e apenas para a
3 data vout(4) value ' I NIT' .
4 call funct ion 'Z_TX_ZOOB ' defini~'o local de pout. 0 original ainda n' o loi modificado.
5 exporting • N a Listagem 20.8, a linha 15 examine 0 valor passadc via a parametro
6 exname • pann in exname. 0 valor e B, entao a linha 17 - raise e rror_b - eexecutada.
7 importing -
a pout. vout o e
controle transferido para a linha 9 da List agem 20.7. Como a

i§t.., .
"'''
~~ '','''' .....'"
. . -- ~ ~ --- - - - -

644 APiEHDA EM 21 DIAS ABAP'1

instruc io ra i se foi exe cutada, 0 valor de pout nio foi copiado de volta • Se a excec;ao identificada depois de r-atsing for tratada pela instroc;ao
para 0 pro grams de chamada, assim 0 valor de vout nio sera alterado. call functio n, uma men sagem nac e emitida para 0 usu drio. Em vez
disso, 0 conrrole retoma para a insrrucio cal' function e a exceliao e
• Na Lisragem 20.7, 0 sistema varre as linhas 10a 13 :lte ele localizaruma
tratada da mesma maneira que a instruc?0 rai se .
correspondencia para. a excer;ao identificada pela instrucio ra i se
recem-executada. Nesse case, ele esti procurando error b. A linha 11
Sinlaxe para a inslrv~ao message •.. raising
corresponde ao erro. -
A sintaxe para a instru~ao message . . . rais ing e a seguinte:
• Na linha 11, 0 valor no lade direito do operador de igual e atribuldc a
sy-subrc, 0 controle entia e,transferido para a linha 20.
-
Ul
Z message tnnn{cc) [with vl '/2 •• . J raising xncne

§
o nome especial ot hers

.
na linha 13 cia Listagem 20.7 corresponded. a onde:
todas as excecoes ni o explicitamente identificadas na adir;iO exceptions. Por • teo tipo da mensagem (e, w, 1, s, a au x).
exemplo, se a linha 7 cia Lis tagem 20.8 foi executada, a cxcer;ao error_x seria • nnn e0 nutnero da mensagem.
configurada. Essa exce!rao nio foi identificada na Listagem 20.7. entia others
• (ee) e a c1asse da mensagem.
correspondera e 0 valor de sy -subrc sen configurado como 99. Voce pede
codificar quaisquer cameros que quiser para c6digos de retorno de excecao. • '11 e '/2 sao o s valores a serem digitados no texto cia me nsagem.
• xname e0 nome cia excec;ao a ser configurada.
Se voce nee ccdlflccr ot hers e uma excecec for configurada dentro
do m6dulo de fun<;oo que noo foi nomeodo no odi<;oo except i ons, 0 o seguintes pontes se aplicam:
progromo ser6 obortodo e cccntecere um dump curto que tern 0 errc
de tempo de execu<;oo RAISE_EXCEPTION. • xnome e urn nome de excecac como descrito para a in struliao ra 1se.
• Se a classe de mensagem nao estiver especificada aqui, ela d eve ser
. Se urn parimetro de exponac?o fai passadc p ar valor, depois de urn rai se especificada na inStnl'ii0 functi on-poo l no i ncl ude su perio r pan 0
seu valor permanece inalterado no programa de chamada, mesmo se urn valor grupo de func;io via a aeli~io message-id.
river sido atribuldo dentrc do m6dulo de func;io antes de a instrucao rai se ter • As seguintes varidveis sy sao confi guradas:" sy-msqf d, sy- msgt y,
sido executada. Se 0 p arfmerrc foi passadc por referencia, ele sera alteradc no sy-msqno e sy-msgvl par sy~msgv4. Estas podem ser examinadas dentrc
cha mador (ele tern 0 flag Referenc e ativado na tela Export/Import Paramet ers}. do programa de chamada (depois do retorno).
Esse efeiro emost rado na List agem 20.7. 0 valor de pout eaherado no m6dulo
Quando a instrugao message . . • rai sing e executada, 0 £luxo do con t role
de fun~ae e, se uma ins trucac rai se for executada, 0 valor alt era do me e
depende do tipo da mensagem e de a condicac ter sido ou ni o tratada pelo
copiado de volta para 0 programa de chamada.
chamador (0 que eespecificado na lista de excecoes do programa de chamada ).
• Se a condicao for tratada pelo chamador, 0 controle retomani para 0
check, exit e stop tern 0 rnesrno efeito que m6dulos de fun~Oo em chamador. Os valores das vsriaveis sy-Ilsg sao co nfi gura dos. a s vale-
sub-retinos extemos. Entretanto, eles nao devem ser utilizodos dentro res de exportac;6es pass ados por ~alor nao serio ret omad os.
de m6dulos de fun<;Oo. Em vezdisso, 0 instru<;oo rai se serio utilizodo
porque ela ativa 0 chamodor para configurar0 volar de sy-su brc no • Se a candi<;ao naa far t ratad a pelo chamador, e para tipos de m ensagem
retomo. e, w e a, 0 m6dulo de fun<;ao sofre saida e 0 programa d e ch am ad a e
terminado imediatamente. A mensagem e exibida e a !ista de saida
aparece em branco. Quando 0 usuario pressiona a t eela Enter, a futa
Utiliza nd o a instru IYiia me ss age ... rai si ng em branco eremovida e 0 usumo eret omado i tela da qu al 0 programa
~ instt11C;io message. . . raisi ng t ern dois modos de operaliao: foi chamado.
• Se a exceliaOnomeada depois de r a i si ng nao for tratada pela instruc;ao • Se a condi~ao nao foi tratada pelo chamado!, nem para 0 t ipo de
call f unct i on e others nae ecodificada, umamensagem eemitida para mensagem i , a mensagem sera exibida para 0 usuario em uma eaixa de
o usuari o.
APRENDA EM21 DIAS ABA P/4 D~ 20, MDDUURlU"D, M6DUlDS DEFUN" D, pure 2 647

23 i~ o rti n9
dialogo . Quando a usu dric pressiona a tecla E nter, 0 controle ret om a
2' pout z vcut
para 0 m6dulo de fun~ao na instrufj3.0 seguindo a instrufjaq message. 25 exceptt ens
o m6dulo de fuD~O con tin ua processando e, na inStru~o endf unc- 26 l!!!rror_e - 1
t fcn, 0 cont role reto m a para 0 programa de chamada. Os valores ells 27 error_w ., 2
variaveis sy-msg SaOconfigurados e os valores de expc rt acoes pass ados 28 error_i - 3
por valor sao reto rn ad os. 29 er ror_s - 4
3D error_a - 5·
• S7 a condicao Ilio for tratada pelo chamador, e para ripe de mensagem 31 er ror_x = 6
s, a mensagem sed armazenada em uma are a de sistema. 0 controle 32 oth ers - 7.
continua dentrc do m6dulo de fun~o na instrU~o seguin te ainstrucac 33 endfonn.
message. 0 modulo de func;ao continua processando e, na instrucio 34
endfunct tcn;o centrale retoma para 0 programa de chamada. valores as 35
36
.:_---..,.,.----,--,....,-.,.--====
ca1l_and_dont _hand1e_excepti on.
tOT"lll
_
das variiveis sy-msg sao configurados e os valores de exportacoes 37 call funct ion ' Z_TX_2010'
passados por valor sao retomados. Quando a lista e exibida, a men- 38 expert! ng
sagem aparece na barra de Status na parte inferior da lista, 39 msgtype z p_et ype
40 importi ng
• Sea condicaonjiofoi tratada pelo chamador, e para 0 ripo de mensagem 41 pout .. vcut ,
x, 0 m6dul o de fun~o sofrera safda e 0 programa de chamada e 42 endfol"ll.
terminado imediatamente. Urn dump CUrto e gerado e e exibido para
o usudrio.
ENIRADI" L.ista g em 20.10 o c6digo-fonte perc 0 m6dulo de funlioo chomodo "do
As listagens 20.9 e 20.10 ilustram 0 efeieo cia instrufj3.0 message • . . ,. Llstc qem 20 .9
raising.
1 f unct10n z_tx_2010:-·
~NTRADA~ L1stagem 20.9 Utilizando a i nstru~o o message .. . ra ising 2 • •• - - - . ~ - -~-~~. --- ---_. -------- -- -------- - - ._-. -- ~- - -- ---- - ---
3 ""·-lo cal interface:
1 repor-t ztx2009. 4 .... IMPORTING
2 ·par amet!rs : P_!tyP! default 'E ' . " t nsf re os t 1pos de mensagem E WI S A X 5 "" VALUE(MSGTYPE)
3 p_handl e default 'Y ' . "se Y. trate a excet;lo 6 •• EXPORTING
4 data vout(4) value ' I Nn' . 7 ." VALUE(POUT)
5 ~ •• EXCEPTIOtiS
6 if p_hand1e - 'Y ·. 9 ." ERROR_E
7 perform call _and_handle_except fon. 10 •• ERROR_W
8 el se . 11 •• ERROR_I
9 perform call_and_dont_handl e_except fon. 12 •• ERROR_S
10 endif .. 13 .. ERROR_A
11 wr1te: / 'sy-subrc - ", sy-scbrc, 14 .- ERROR_X
12 / ' veut -" , vcut , 15 • •--- -- ---- -- -- -- ------.- ---- ----------- --. -- --- -- - -.--- - ------
13 / ' sy ~ ms g ty' , sy-msgty. 16 pout .. ' XXX' .
14 / ' sy-ms9i d'. sy ~msgid. 17 case msgt ype.
15 / ' sy-msgno' . sY-lllSgno . 18 whl! ! n 'E '. message e991(zz) with ' Error E' rai sing er ror_e .
16 / ' sy-msgvl' . sy-msgv l. 19 when 'W ' . message e992(zz) with ' Error W' raisi ng error_w.
17 20 when '1 '. message e993(zz) wit h ' Erro r I' rats i ng l!!!rror_i .
18 . _ ---..,: --,-,---::_ _,..,- _ 21 when'S'. message e994(zz) wi t h 'Error S' r ai sing error_s o
19 form call_and_hand1l!!!_except 10n. 22 when ' A'. message e995(zz) with ' Error A' rais i ng l!!!rror_a .
. 20 call function ' Z_TX_20IO' 23 when 'X'. message e996(zz) with 'Error X' raising l!!!rrOT_x.
21 export ing 24 eeeeese ,
22 msgtype - p_l!!!t ype. 25 l! ! ndf unct 1on.
A · A ••••••• A •••• •••••••• . .. . . . . -- - - - - - - - - - -
OL\ 21> MOOUl.lRlll(.io, .60ULO' DE FU'\AO. PAm2 649
648 AmHOA EM21 OIA' ABAP"

Utilizando as vslo res de parfrnetro padrao, 0 c6digo nas listagens 20.9 e 4. Pressione 0 botio Change. A tela Function Module Change: Table
20.10 pro duz esta saida: Parameters /Exceptions ~ exibida.
sy- subrc • 1 5. Na metade inferior cia tela, na seljio Exceptions , digiee os names das
SAiDA ~ you! • INlT excecoes que aparecem no codi go-fonre do m6dulo de fu oljao.
sy· ms gt y E
sy-msgid ZZ
6. Pressione 0 bota c Save e 0 bot ao Back. Vo ce volta a te la inicial
sy-msgno 991 Function Library.
sy-msgvl Er r or E

Inserindo automaticamente a insrrucco ca11


AMius! ~ • Na Liscagem 20.9, qu ando se utiliza as valores padrac para a lllilia 6
as pardmetros sao verdadeiros, en no 0 con rrc le e transferidc para a
sub-retina call_and_handl e_exception.
functjon
Em vez de digital a insrrucio call f unct ion em Sell c6 digo -fo nte, 0 sistema
• A linha 20 transfer e co ntrole para a linha 1 da Listagem 20.10. aut omat icam en te pode gera -la para voce . Quando voce faz dessa maneira, os
• Na Lista gem 20.10, a linha 16 atribui urn valor para 0 pardmetrc local nome s de exce~ao qu e voce docum ent ou na interface serso automaticamente
pout . Esse valor e definido como passado por valor, enr j c 0 valor de inseridos em seu c6digo tambem.
vout no chamador ainda nao foi alter ado.
IIlrrr... lnkle 0 ScreenC om "How to Insert a call fund ion Statement into Your ABAP/4
• A linha 18 cia inst rucao case e verdadeira e a inst rucac mes sage .. .
SCREENCAU" Progrom" cqcrc .
ra i 5 i n9 e execu tada. Is50 aciona a excefjao error_e.
Para ver os efei tos de sua documentacio de excetjao l erie UJ;11 pro gram a
• A excefjao er r or_e e tratada pelo programa de chamada, entaa a
de ABAP/4. E m vez de codificar da pr6pria in strucao cal l fu nct i on, util iz e
mensagem ndo eexibida pan. 0 usuario. 0 controle retorna para a linha
o seguinte procedimeoto para genr automaticamente a instrucao call fu nc-
25 cia List agem 20.9. 0 valor de vout nao ~ alteradc; as variweis sy- msq
sao atrib ufdas a vaIores. t f on :

• Na Listagem 20.9, a linha 26 atribui 1 para sy- subrc. 1. C omece na tela AEAP/ 4 Editor: Edit Program.
• A linha 33 ret o rna 0 controls para a linha 11 e os valores sao escritos. 2. Posicione seu cursor dentro do c6 di go- fo nt e na Iinh.a depais da
primeira onde vo ce quer qu e a instrufiao cal l fun cti on apare ca.
T ente executar 0 programa em ztx2009. Especifican dc urn valor p handl e
de N, vo ce vera as men sagens de erro produzidas. - 3. P ressione 0 botao Pattern na barre de [erramentas Applic ation. A
caixa de diilogo Insert Statem ent aparece .
Definindo excec;6es no interface 4. 0 batao de 0pljao Ca ll F unc tion ja estaria escolhido. Se n jio estiver,
Sempre qu e voc e configura uma exce~ao em urn m6dulo de funljao, voc e selecione-o.
deve docu ment ar esse nom e na interface do m6dulo de fuotjao. Os nomes de 5. Digite 0 nome de seu m6dulo de funr;ao no campo de entrada adireita
eXCeljao tambem aparecerao aurom aticament e na parte superior do fonte do de Call Function.
m6dulo de fun ljio dentro dos comentdrios gerados pelo sistem a. 0 seguinre 6. Pressione 0 batao Continue (a marca de verificaljio verde). Voce
procedimento des creve como documentar suas excecees. vol ta a tela Edit Program. U rna in strucio call f uncti on aparecera no
c6digo-fonte na Iinha acima da primeira que voce posicionou seu
SCRHHOMltrr.. lnicie a ;creenCam "How to Docu ment Exceptions in the Function Module cursor. A ins t ruf:iao comecar a na mesma coluna em que seu cursor
~ Interface agora . est ava. Os pardmerros e excecces qu e vo ce id entificou na int erface
aparecerao. Se um para metro estive r ma rcado como op cional na
1. Come ce na Function Library : I nitial Screen.
interface, ele sera com entad o e 0 valor padrac ap arecera adireita dele .
Z. Digite seu nome de m6dulo de fu oljao no campo Function Module
7. Preencha os valores a dire ita do s sinais de igu al. Sinea-se livre para
se ele ja nao est iver af.
alterar 0 codigo a u remover quaisquer linhas qu e se seguem aadi~ao
3. Esc olh a 0 batao de 0pljao Table Parameters/Exceptions Interface.
importi n9 se voce Dia precisar desses valores de ret o rn o.
650 AP IEND AEll 21 OIAS ABA PI4 D1A1D, MOouURll.l(.lO, M6oULOS OER,">,O, PARTE , 651

Umo d6usulo importi ngvazio ccusc um errc de sintoxe . Se nOohewer Work.:>J


sh wo
~p.L- _
nenhu m nome de pordmetro seguindo a po lovro importing, ou se o Workshop oferece duas maneiras de voce verifica.r 0 que aprendeu oeste
tod os e lesfor em ccmen tcdcs.vcce deve remover a po lovrn importi ng.
o e
mesmo tcmbern verdode iro para 0 exporto~oo .
capitulo. A se!jio Teste ofereee perguntas para. ajudar a salidifica.rseu entendi-
memo do contecdo aborda.do e a sec;io Exercicio permite que voce pratique 0
que aprendeu. Voce pode enca ntrar as respo stas is perguntaS do Teste e aos
Resumo exercfcios no Apendice B, "Respostas as pergun tas e aos exercfcios".
• As varidveis globais podem ser definidas em dois niveis. Q uando
definidas no i ncl ude sup erior, elas sao globais para tod os os module s Teste
de fun'iao dentro do gropo e Iembram de seus valores entre chamadas 1. Se urn pargmetro de mesmo nom e exisee em dois m6dulos de funC;io
a m6dulos de fun'iao dentro do grupo, contanto que 0 programa de dentro de um grop o e as duas interfa ces sio globais, as definicoes de
chamada continue a executar. Globalizando a inte rface, os parametres dados de dois desses pargmetro s devem ser identica s?
sao visfvels dent ro de sub-re tinas chamadas a partir do modulo de 2. Sevoce acidencalmenre liberar urn modulo de fun'iao e quiser cancelar
fun,an. a Iiberacac, qual caminho de menu voce pede utili z.ar?
• As sub-r et inas definidas dent rc deum gropo de funi?o sao codificadas 3. Se voce DaO codifica others e uma excectc e configurada dentro do
DO include Fo I. m6dulo de fun'iao que nao foi nomeada na adi~ia except i ons, 0 que
• O s m6dulas de fun'iio podem ser Iiberados pan. denotar que a inter- acontece?
face 6 eseavel e nenhuma altera'iio significativa sed feita para ela, 4. CheCK, exi t e stop tern 0 mesmo efeito com m6d ulos de func;ao que
P Ort"" O, ela ~ Iiberada pan dispooibilidade geral e ~ "segura" para ser, tern nas sub-retinas externas. Eles devem ser utilizados denrr o de
utilizada em c6di go de prodc cao. m6dulos de fun,aol
• 0 ambience de teste oferece uma maneira convenie nre de executar
modules de fuo'iiOsem escrever qualquer ccdigc de ABAP/4 . Exercicio 1
• M6dulos de fun'iao existen tes podem ser localizados com a ajuda de Copie 0 m6dulo de fun'iao z_tx_div eo modifique para configurar a
Repository Information System. exce'iao zero_di vi de, se 0 valor de p2 for zero. (para copier um m6dulo de
fun!jao, utilize 0 botac Copy na Function Library: Initial Screen.)
P&R

o Par que voce passaria urn panim etro de im portacdo par referen-
cia? Se voce especificar que a s parimetros de irnp ortagao e de
exportacao devem ser passados par referenc ia, eles nio serio os
mesmos ? Por que exist e 2 capacidade de fazer isso?

o Vma passagem por refe rencia e mais eficiente que um a pas-


sagem por valor. Voce deve util iza-la para eficienc ia. Entre-
tanto, as palavra s Im port e- Export oferecem documentacio
im portance reference ao papel que cada parjim etro desempenha
dentro do modu lo de fun~ao. Voce nao deve alte rar parametres
Imp ort. des sempre devem ser passados sem alt era!ii o pela
m6dulo de fun~io. Tarnpou co voce deve aceitar valores no
m 6dul o de fun!iaoviaparfm erros Export . O valo r de urn Expor t
sempre deve se origin ar den tro do m 6dul o de fun'iao.
21
Telas de selelGO
Objetivos do capitulo
Depois de completar este capitul o, voce deve ser capaz de
• Codificar telae de selecdo que interagem com 0 usudrio.
• Entender como as chaves esrrangeiras podem ajuda r a validar entr ada
de u suario.
• Entencler como as matchcodes (c6di gos de combinacao) sao ut ili-
zados em programas ABAP/4.
• Utilizar elementos de formataclo para criar telas de selel,fao bern
prcjetadas e eficientes.
• Utilizer te las de selec;ao par a manter a inr egridade de dadcs .
• U tilizar mensagens para oferecer comunicacao efetiva.

Prog ra ma <;a o baseada em evento


H oje em dia, com 0 surgimento da World Wide Web e tude que isso exige, 0
c6di go de programa deve ser capaz de interagir e se comunicar co m 0 usuario
final. 1550 e feito no ABAP/4 utilizando even tos que sao chamados pel as ac;oes
des usuarie s.

Irttp;/I_ .compus,com.br
Jl:- • . • • • • I I I •• II ••••••••••• • • • • • • •• •••• _ • _ •••••••

654 APR END' EM 11 DIA S ' U P/4


'IAIU ElAS DE smll' 655

Os blocos de processomento s50 definldos pe las po lovros-chove de evento e


sdc assim executodos no tnvccccec de certos eventos relevontes .
Utilizando 0 eye nto at sel ec t; on- s cr een
a e
evectc at se lect ion-screen processado dep ois cia entrada do usuario na
Por padrao, 0 evenro sta r t -of - sel ecti on e anexado a todos as eventos tela de seleljao ativa. Isso pede ocorrer quan do a usu i rio pressiona uma teela
no ABA P/ 4. Em seus pro gramas, voce pede definir urn bloea de proces- de fuoljao ou da urn clique em urn bono, bern como no caso de mui tos outros
samen to e anexar esse bloco a uma palavra-chave de evento. elementos que podem interagir com a usudrio. Alem da verificacao de vali-
Par a 0 c6digo genericameate facit de ler, euma boa pratica definir blocos daljoes de dadcs, mensagens de aviso, alteraca o do sta tus GUI e ate rnesmo
sequenciais de processamento na ordem em que d es mais provavelmente serdo janelas pop-up podem ser abertas utilizandc 0 evento at sel ection -screen.
acionados durante execucic cia tela de selecao. Eo fundamen tal tambem ut ilizar Voce vera mais dest es exemplos mais adiante neste capitulo. quando estudar
as eventos mais imp orrantes para programacdc cia tela d selecao. Esses eventos ~ telas de seleljao de [ormatacio e os eventOS envolvidos co m elementos de
7
sao: {ormatacao de tela. Par enquanto, entretanto, vamos examinar urn botao em
• a evento t ntt f et taat t cn uma tela de selecao e descobrir como as eventos at sele ct i on- s cr een e at
user- conmand sao utilizados no proximo exem p lo .
• 0 evento at selection-screen
• 0 evento at user-corrmand Utilizando 0 eye nto at use r -command
Os botoes, assim co mo muitas outras opcees de tela de seleljao baseadas em
Utilizando 0 eyento ; n; t; al ; zat ; on
evento, podem ser muitc uteis na manutencio da interacac com usuario e na
!a 0 seguint e c6digo most ra a sintaxe para 0 eventc init i al ization: validaljaOde entrada do usuario. Na pr6xima se~o, voce ira explorar a utilizacao
Z report ywhatyr. de bo toes para chamar 0 eveneo at user-cceand e estu dar urn exemplo de

~
tab les : marc, mvke.
com o os b otoes podem ser utilizados para processar a entrada de usuario.
data: p_year for sy-datum.
m 1n1tia 11 zati on. Sintaxe pa ra oevento se1ect i on-s cr een pushbutton
T if sy-datUIII ge '01012000'
pyear .. ' 2000' .
o seguinte c6digo mcstra a sintaxe para a event o sel ect i on-screen
t on:
pushbut-
else . .
p"year· ' Yest eryear ' . sef ect t cn-screen pushbutt on e Xil~ l @l user-comnand 1234.
endif .
Essa instrucao, quando utilizada junto com 0 comando at sel ect i on-
screen, e uma excelenre maneira de interagir corn 0 usuario quand o este digita
Nesse exemplo, quando ~ execuudc 0 programa pa..ra 0 qual uma tela de dados. A sintaxe esemelhante i de urn sel ect i on- screen corrment, exceto pelc
e
sele~ao estol definida, esse bloea de processamento i n; ti a 1fzat ; on executado, fatO de qu e os dad os sao passados quando 0 usuario pre ssiona 0 bono. A aljao
configunndo 0 campo de parametro p_year como igual a urn valor dependendo de pre ssionar 0 batao aciona sccrfi el ds -ucomn n o evento at sel ect ton-screen
da data de sistema no momenta de execuci o. E esse blocc no qual voce e os cam pos de entrada sao importados. Esses dada s entao p odem ser validados
especifica as valores-padrjioiniciais de sua tela de selecao, com base no fate de e uma mensagem pode ser exibida para 0 usudrio dependendo do prop6sito do
as criterios serem au ndo necessaries para manter a integridade de clados bo tao. Ess e e urn exemplo de como voce pode utilizar do is borees para
digitados pela usuano. Alguns exempl os inclue m a configura~ao de barras de determiner quallinguagem informari os dad os selecionados.
titulo, atribuiljao de elementos de text c a elementos de interface gcl fica do
usuario (GU I) e status de c6digo de fun<;.o.
Vo ce viu como 0 evento 1ni t i al izatioo func iona, entao agora e hora de
-
III o seguinte c6digo mostra a sintaxe para dois botoes que sao utiliudos
Z para escolher urna linguagem:
~m
se1ec t 1on·screen pushbutton lO(20} text-D03 user-ccxrmand eng1.
chegar mais proximo e obs ervar algumas utilizaljoes do s eventos at se1ecti 00- sel ect ion- scr een pushbutton SO(20} text-004 us er- carmand germ.
screen eat user-cOIlVMnd.
at se lection -s cree n.
T at us er- COllll'.and.
cas e sy- ucOlllll.
when ' engl'.
/.
-~
-J
~"
~ .~ ••..••....... --.-.. - ~ .. -- -----.
656 "mo. EM,I DIAS AB." . D~ 'UillS D< SRf\.iD 657

lang·e nglis h • ' Y'.


when 'genii' . Valida c;a o de dodos utilizando chaves
1ang·german • 'Y'.
endcase , estrangeiras
o modelo de dados relacionais do ambience de SAP p ode center muitas tabelas,
visualizacoes, estruturas e tabe las vineuladas. As chaves estran geiras, como
Nesse exemplo, voce pede verificar qual dos dois boroes foi pressicnado pcde-se dizer, define m esses relacionamentos entre rmiltiplas tab elas. As
pelo usuario utilizando urna instru cio case (veja a Figu ra 21.1). Quando 0 funljoes qu e as chaves estran geiras executam incluem fomecim ento de dados
usu drio aciona 0 evento at user- ccrmand, 0 campo sY-UCOIllTl armazen a 0 no me de ajuda e criacac de ob jetos de diciondrio, mas essa funljao que vo ce focalizara
unico de quatr o byt es do item que 0 usuario selecionou. D essa manei rs, voce estara na area de valida~ao de clado s. Afinal de comas} 3. m anut enlj.ao de
1,
pede codificardiversas validaljoes de dados au comandos de entrada do usuario integridade de dados eurn do s principais objetivos quando se definem telas de
com base na combinac ic de dad os inseridos enos irens, nesse caso os botoes, seleliio e a utilizacic mais importante des chaves estran geiras.
selecion ados pelo usuario. Urn campo de chave esrrangeira e, por definiCjio, limi tado a valores que
correspondem aos da chave prim aria cia tabela de verificacao do campo de
Fig urA 21 1
ent rada. Iss o eco mo fazer urn vinculo entr e duas tabelas. Uma tabela, FORKEYl}
Umo jmpreu60 dos poder ser entendida com o a tabeIa de chave estrangeira (ou dependente),
botOes.
principalmence porque ela inclui campos de chave estrangeira que sao
atribuidos a campos de chave primaria em CH ECKl}que e referido como a tabela
de verificacio (ou referencia) .

o campo de chove estrongeira e 0 chove prim6rio de umo tcbelc poi


deve m comportilhor 0 mesmo dominio e umo tobe lo de vclor pa ra esse
dominio tcmbem deve ser especificoda. Isso estende , de certo mcnefrc,
a verific.o ~Q o do integrida de dos dod os normolmente fomecida openos
celc tobe lo de volar.

Algumas tabelas 'de veoficacac podem ter mul tiples campos de chave
primfria. N esses casa s, as atribuicoes devem ser feitas para cada campo quando
se iniciam relacionam entos de chave estrangeira. r res op~6es sao:
• Utilizerurna chawestrangeiraparcial. Nesse case, alguns campo s DaO
serio urn fator ao se validarem valores aceitaveis para entradas no
Voce pode tc rnbe m crior ate cinco bctces no ba rre de ferromentos campo de chave estrangeira. Certos campos sao marca dos como
Application. Esses bat6es no barra de ferromentos Selection Screen 50 0 genericos nesse caso e assim ignora dos peIa siste ma na valida~ao.
ossociados a teclos de func;oo espedficas e 500 limitod os a teclas de • Utilizer urna ch~'Ue estrangeira constants. A fim de a entrada de campo
fum; ao de 1 a 5.
ser vdlida, 0 valor deve co rresponder ao cia constance na tabela de
verificacio.
NOYO.... Agora que vod op rendeu um pouco sabre vcldccec de dodos utilizondo
• Criar uma atribuirao campo a campo. Essa e a mais complete das tres
ltiM:O " ev entcs noAW/4 , e he re de excm'nc rclqcm cs tecnlccs de vclidccec de dados
que s60 no moioria montida s e definidos pelo sistema. Voce primeiro vera chcves escolhas . Cada camp o de chave prim:iria na tabela de verificacao
estrangeiros. Umo chave estronge iro significo um ou mois compos que representom a corresponde a urn campo na tabela de chave estrangeira e todos os
cbove prim6rio de urna segundo to belo. campos-chave sao endc utilizado s para determiner entradas validas na
tabela de chave estrangeira.
... ~ ~ -~ !I • • • • •
• ••• I
•• • • •• •• • • ........... . . . -""'-
658 APmnA EM 21 DIAS ASAP" D~ 2UElAS DE SElf\.lD I 659

Basicamente, 0 modo como uma chave estrangeira £Unciona se parcee campo de entrada contem urn valor especffico no campo chave cia tabela de
com uma instru~ao select em cpc sicac a ube la de verificacac d o campo com verifica~ao citada . Na consulu cia insrruca o se l ect , o campo constante e
a chave esrrangeira, Mais especificamente, quand o urn campo de ve rifi ca.~o de verificado em conrraposicao ao campo de ch ave primdria que contem 0 valor
chave esrrangeira e preenchido, a insuur;ao select que foi gerada pelo sistema fixe.
daSAP)quandodefiniua chaveesrrangeira, eenviada peloprograma.Seatabela
. retorna um valor dessa selecac, a entrad a sera vdida. Se 0 registro nao for
localizado, a entrada de campo se torna invalids.
o c6digo a seguirmostra a sintaxe para uma instrucao sel ect geradapelo
(Dj;.. E boo pr6tico de prog ramoc;do utilbcr ccoveocees de otribuic;oo de
nome que sdo descritivos e om ig6veis para a usu6rio. Alem disso, a
SAP adotou 0 pcdrec de nunco cc mecc r 0 nome de um objetc de
sistema:
desenvolvimento com as letrcs Z a u Y. Se voc! cr ier todos seus objetos
set ect 11 from table 1 where table 1-exam! • f lc examl com nomes q ue comecem com umc desscs duo s letros, 'lac! se
- and table).exam2 • fk::exarn2 . certificor6de neo ter nenhum prob lema co m co nflitos de nome quan do
otuo lizor seu sistema SAP.
Esse pequenoc6digo mostra urn exemplodeumainStrur;ao sel ect gerada
pelo sistema, que e chamada quando a s dados sao inseridos no campo com a
defmi'iio de chave estrangeira. Nesse cemrio, uma entrada em tal campo de Yolidoc;a o de dodos utilizondo motchcodes
tela e permitida somente se a instructo sel ect produzir dados validos a partir
da tabela de verifica~ao utiliundo as enrradas de dado s feitas nos campos KaYO .... Outro ma neirc Util de manter a integridode de dodos dura nte 0 entrada do
tk_examl e fk_exam2 como chaves. TaMO r usu6rio Ii utilizor mctchc cdes. Urn matchcode e urn c bjetc que e utilizcdc pe rc
lccclccr reg istros de dodo s no Data Dictionary do .SAP. Mois especificomente, os
. ,mo1chcodes ocessom regisfros de dodos de moneira seme lhonte a um fndice e m que
Uma COISO de q ue vod deve se lembror 0 0 cnor relodcncmentcs de todos os cam pos-chove nCo sao necess6rios, mas diferem dos Indices no senfido de que
chcve estm nge irc e a cordinolidade . A card ino lidode de umo chc ve as mptchcod es podem conter mois de umo tcbelc no intervolo de se lecec .
estrcnge iro, junto com seu tipo, ereferida como os otributos sern6nticos
do chove estrcnqelrc. Coda cordinalidode de umo chove estrongeira
Veja comcele funciona: primeiro urn objeto match code e definid o com
dessos entradas e op d onal. Entretonto, a cordinolidade ndo deve ser as tabelas secundarias e prim frias pertinenres e campo s significativos desig-
supervisionodo, porque a entrada e boo prefico e tomo -se necess6rio nados. Ess e objeto enno identifica tcdos os pcssfveis caminhos para .os
qua ndo voce quisercriar certos tipos de og regodos como visvcllzccoes registros de dadcs exigidos . Em seguida, os ID s de matchcode sao criad os
de c judc , por exernplo. mapeando urn caminho definido pelo obje rc matchcode. Os unicos'campos de
dados que sao admissfveis nesse ill sao baseados int eirament e no objeto
NOVO .... e
Cordinolidode umo descrtcec do relodonamento entre um a u mois elementos matchcode. Pelo menos urn ill deve ser declarad o para cada objeto matchcode.
mo " de dodos para um a u mo is elementos de dodos . Se ume chove estra ngeira Os ·ohjetos matchcode sao armaze nados como urn pool de ube1as, que auto~
vinculo duos tobelos que foram definidos, a registro do to belo de chove estrongeira se maticamente e gerado para cada ID de matchcod e que voce declara.
refere 0 urn registro do tobe le de verificac;do. Esse refel1mcio e construfdo se atribuindo
compos de umo tabe loa umo tobe lo de chove estrangeira, aos co mpos de chove pomaria
NOYO .... Um pool de dodos e uma tabe lo l6g ico de pool que e utilizodo pelo SAP pore
do outro tobe lo e 0 tobelo de verifica rydo.
mMOr ormazenor intemo mente dodos de co ntrole . Esse dodos , que noo sao pemnentes
extemomente, sdo mopeodos como um nume ro de tobelos de banco de dodos para umo
o relacionamento s6 exine se os campos de chave estrangeira forem do
tobe lo do SAP.
rnesmo tip o de dado e comprimento que as campos de chave p rim m a corres-
pondentes. Urna v erifica~ao - au tabela - pai e referenciada pela pr6pria Urn matcbcode pode ser configurad o (assembled) de doi, modos dife-
chave est rangeira. Esta e normalmente urna u bela de valoT) mas tam bem pode rentes:
cons istir em urn subconjuDta do conteudo de uma tabela de valor. Uma tabela • Fisicamente. N essa configura~aoJ os dados sao armazenados em urna
de valor governa as valores validos que sao atribu i'dos ao dominio do elemento tabela separada no sistema SAP. Os tipos de atualiza~ao A, P eS sio
de dados .
rnantidos em tabelas ffsicas.
Em alguns casos, uma chave estrangeira constante pod e ad aptar~se me-
lhor as suas necessidades. Esse e 0 caso quando toda s as ent radas validas no • Logicamente. Essa op~ao configura dados de matchcode temp oraria~
mente durante 0 acesso ao matchcode. Esse acesso ~ gerenciado por
..
- ~. . .. . . . . . - - - - - -
660 'PREHO' EM21 OIAS "AP" D~ 2J,1HASDE SELE\lO 661

uma visualizaeio do banco de dados. Nesse casa, a metoda logicce 0 5. 0 pr6ximo passo no processo de cria~ao eativar 0 obje to matchcode.
mes mo que 0 arm azena mento transparence. 1550 inclu i apenas tipos o e
status do objeto New e Saved (veja a Figura 21.6).
de atualizacao I e K. 6. 0 status esta agora configurado como Active e Saved. Logo, voce
precisara criar urn ill de marchcode au seu ob jeto estara inc omp lete
Fi g u r A 2 1 2
(veja a Figura21.7). Parafazer isso, dS: urn clique no batao Matchcode
A tela iniciol do
Dote Dictiona ry. IDs.

Figura 21 3 ·"""",~<~;''';'i'.JI_,:=: .'J:- -'''·''' L.ol;


.
;r.."
A tela de otribufos
Main tain Matchcode
O b;ed.

Na tarefa seguinre, voce aprendera a seguir 12 passos faceis para criar


e manter objetos marchcode. Inicie pela tela Data Dictionary mostrada na
Figura 21.2 e complete as seguintes passes:

1. Escolha urn nome p ara sen novo objeto, de urn clique no bono de Figura 21 4
0Plii o Mat chcode e pression e 0 bon e Create. A tela Creo~ Obied
2. Digite 0 texto descri tivo , quando for inserir sua tabela primdria na CatalogEntry.
tela Attributes mostrada na Figura 21.3, e pressione 0 batao Save. A
tabela primaria representa a origemprimariapara a pesquisa de campo
subs eqeenre. As tabelas secundarias tambem podem sec mantidas
nesse ponte dando urn clique duplo na tabela primdria au pres-
sionando a bone Table. Esses tabelas devem vincular-se com eabelas
primarias pa r chaves esrrangeiras.
3. Nesse pon te, vo ce tern a opcso de criar a macchcode como urn cbjetc
local au anexs-lo a uma soliciracfo de transporte. Depois de fazer isso,
de urn clique no bo eac Save (veja a Figura 21.4).
4. Quando a barn de status refletir, os campos-chave obrigat6rios sao
transfericios automaticamente (veja a Figura 21.5 ). Se quiser, voce
pode pressionar 0 batao Fields e [azer a manutencac de qualquer
campo de seIe~ao que quiser. Nesse ponte, voce precisa dar urn clique
na seta verde para voltar a tela Maintain Attributes.
~~ •••••••• ~.II •••••••• I

662 APREMDA EM I I DI AS Am" D1A IU,USDESEll\lD I 663

Figu r a 21 7
Os afribulos de
matdJcodedepois
do alivo¢o.

7. 0 sistema. pedid para voce criar urn ID novo se um nao existir (veja
F lgurq 21 6
a Figura 21.8). Para fazer isso , de urn clique DO bo tao Yes.
Os otributos de
matchcodeanles do
Qtivo¢o. Figu rA 21 8
Urn aviso Creote
Obi""·

8. Na tela Create Match code ID mostra da na Figura 21.9,especifique


urn mimero de ill de ma tchcode, entradas validas que variam desde
todo 0 alfabeto a qualquer numero. Voce tambem p ede dar urn clique
na seta para baixo para visualizar urn intervalo de entradas vaIidas.

Figura 21 9
A co ixa de dia/ogo
Create Matchcode 10.

9. Vamos visualiza r algumas possfveis entradas (veja a Figura 21.10) .


Como voce pede ver, essa janela de Iista mostra urn mi mero de IDs
de matchcocle e uma descricsc curta de cada urn . Escolh a urn e de urn
I · clique na seta verde .
A •• -a .A"'~ I...I~ • • • • • • • • • • • • • • • • . - - • -- -
664 .PRENO. EM 21 01.1 ASAP/. 01. 2UnAS DE sa£(.lO 665

Figura 21 10 Figurg 21 1 2
Umo listo ele cc essc A caixo de di6/09o
Motchcode. Maintenance
Selection Conditions.

10. Siga. as passes que aprendem os para manter as campos de sele~o para
"esse ID de m archcode, cerrifique-se de inserir um tipo Update e de
urn clique em Save (veja a Figura 21.11). Discutirei ainda sabre tipos
U pdate mais adiante nesta selSao. N esse ponte, voce pede inserir rnais
crirerios de selecao pr essionando 0 bono Selectio n C riteria.
12. Agora rude qu e voce tern de faze r eativar seu ill de matchcode e seu
F igurp 2 1 J 1 novo objeto esta pronto para utilizar (veja a Figura 21.13).
A monufen¢o de
oIribvtos motdl~e. Figur A 21 13
Gere e utilize 0
matchcode.

11. Na tela M aintain Selecti o n Conditions, voce pede inserir e manter


campos e criterics de seleljao para seus IDs de matchcode. Eis urn
exemplo de urn requisite de urn Material Number que nso e maior A subtelo Index noo precise ser man tido, porque essas c:eraderfsticos
que 0 valor de 8888 (veja a Figura 21.12). Quando terminar, de urn sao meromente para fins de documenta~oo no versec atua l do sistema
clique em Save e na seta verde para voltar. SAP. Simplesmente debe esse lacuna e ignore 0 a viso subseqOente que
cpcrece no log de otiva¢o do seu ob jeto.
666 I APREHDI EM21 DIAS I 'I P/. D~ 2UElAS DE sElf\.iD 667

N esses 12 passos Hceis , voce criou urn matchcode qu e ago ra pede utilizar as relot6rios que tAm logical Database anexodos a eles s60 otribuldos
para m an ter a integridade dos dados, Vace aprendeu como as cbaves prim arias a telas de selecoc pre-projetodos. Esses crttenos de selecec podem ser
ajudam a verificar possiveis valores de tabelas vinculadas e 0 conceito de urn modificodos para melber se odoptorem as sues necessidades. as
pool de campos de dados. Lembre-se, a m aneira com o a s dad os de m aechco de relot6rios que ndc tlverem as telos predefinidos devem ser rncnfidoa
sao organiz ados varia de acordo com que tipo de arualizacao foi selecionado pelo programador do relat6rio. Essas interfaces do usucrlc personali ·
zodos podem ossumir qualquerforma e combinerquoisq uere lementos
durante a crialJao inicial. Eis uma descricio de cada urn desses cinco ripos:
que voce, 0 programodor, quiser.
• 1- Organizado pelo banco de dados arribufdo.
• 5- Organizado pela inte rface do banco de dados.
Utilizando instrw;;6es sel ecti on- scr een
• A - Aut o-o rganizado pelo pro grarna de sistema SAPM ACO.
• P- Organizado por urn programa aplicarivo. NOVB'" as elementos de tete de seeceo podem ser combinadas em unidades cceslvos
lHW ~ chomodas bleeos. Esses blocos 16gicos s60, em essendo, um recursocosmetico
• K - Tambem organizado por urn pro gram a aplicativo. de tela que encopsulo uma ccmbrnc cec de elementos de entrada de tela e pede ser
criodo com um trtulo de frame descritlvo. Blocos 16gicos ojudom a tornar as cposes de
Sintaxe para utilizar urn matcbcode seleceo mois f6ceis de entender e ufillzor.
A seguir esta a sintaxe para utilizar matchc od es para valid acso de entrada de
!:!! parameero de tela de selecso: Sintaxe para sel ecti on- screen bloc k com frame
en A seguir esta a sintaxe para urn sel ect i on-s cre en bl ock com frame:
Z

S
tables : saptab
parameter: example l t ke saptab-f1eld matc hcode object exam.
select single f ield f rom saptab where f i eld · example.
-
Z selection-screen begin of block bl ockO with f rame title text-DOO .

T
In

Esse exemplo utilize 0 exame de ob jeto m atchcode, que ja foi definido


S
In
com urn ID de matchcode, para valid ar a entrada de da do s no exem plo de campo
de pardmetro. Esse exame de cbjerc armazena os dados de relacio namento
T
INilll!~
Alem do instruc;co blo ck, os telos de seleccc podem ser personolizodas
necessaries para manter a integridade da entrada de usu ario. utilizondo elementos de formotcl;co como os seguintesinstrvcces sel ect i on-
screen:
Eormatando telas de sele<;Cio • sel ection-scr een com:nent - C olo ca urn cornentario na tela de se -
A gora que voce explorou algumas ferramentas para validar clados de entrada leliao.
no ABAP /4, vamos dedicar algum temp o para aprender mais sobre com o • sel ect i on- screen uline - C oloca urn sublinhado na tela em uma
projetar formatos efetivos de tela de selecjo. Ao definir telas de entrada par a posi~ao especificada para urn comprimento especificado.
utilizacao na informacdo de dados, vari e s elem entos de selecao podem ser
• se l ec tion- screen posi ti on - U ma ferram enta muitc util qu e espe-
combinados para manter a integrid ade d os dad os e ainda cont in uarem faceis
cifica urn come ntario para a pr 6ximo parametro de campo na t ela. E
de se utilizer. Esses elementos in c1uem campos de entrada padrac como
util par:a se lect i on- opt ion s assim como para parameters .
opcoes de seleljao e parametros, assim co mo outros, tais co mo caixas de
selecsc, borees de opcac e bot6es pushbutton . A seliao seguinte m ostrara cada • se1ecti on-sc reen begi n-of - l i ne e se l ecti on-screen end-e f- t i ne -
um desses individualmente e dara alguns exemplos de onde eles sao me lb e r Todos os cam pos de entrada definido s entre essas du as instruce es sao
util izados. Voce ted uma oportunidade para combine-los no Exercicio 1 no colocados urn do lado do ou tre na mesma linha.
final do capitulo. • selecti on- screen s ki p 0 n-c- Essa instrucio cria umalinha em branco
para as n linhas na t ela de selecao .
A mai cria dos elem ent os inclufd os na se~ao anterior edo ripe cosrnet ico;
na pr6xima se~ao, vo ce vera algun s elemen tos de tela de selecsc que sao mais
especfficos para p roce ssament o de entrada de dad os.
~ ~_A & .I _A _ _A .~ .
••• • • -- -- -
668 APIEHDA EM 21 DIAl A1AP"

Figura 21 14
Parametres de t ela de sele<;60 A tela inidol
A instrU~o parameter nas telae d e selecac cria uma esrrurura de dados no Domains.
pr ograma que armazena a entrada inserida no campo Parameter pelo usudrio
em te mpo de execuclo.
Os para metres sao melb er utilizados quando a entrada de campo exigida
eurn valor unico, em oposi~ao a urn intervale de valores. 0 intervale validc de
valores pede ser determ inado pelo usuario dando urn clique na seta para baixo
ou pressionando F4 enquanto 0 cursor esti. no campo geradc pela instrutiao
para meter . Essa tabela de valor pede sec mantida pelo programador para incluir
valores persorializados para tra nsa gdes especjficas ou relatorics. A maneira
mais sim ples e direta de configurar a ajuda F4 e alocando uma eabela de
verificac fo para 0 dominic de campo no dicionaric do AEAP/4.

NOVO Um domlnio descreve a s propriedodes dos compos de umo tobe lo. He define
IItrr...
mWO ,. lntervolc de vclo res velidos de dodos pore urn compo e caraderisticos de
0
compo especfficos.

Os dominios det ermtncm otributos como tipo de compo, comprimento Figura 21 15


e posslveis relocionomentos de chcve estrange ira. A modifico ~oo de
A tela Domains
um dominio outomoticomente o lterar6 as otributos detodos os elemen- Display.
tos de dodos o nexodos a esse dominio. Isso e devido 00 fato de que
as elementos de dodos em urn domfnio herdom tcdcs os propriedodes
do dominio 0 que eles se referem.

P ara visualizar ou executar a<;oes em um dominio, inicie na t ela de Data


D icti onary (veja a Figura 21.14). Verifiq ue 0 botso de op<;ao correspondence
a Domains e escolha 0 bouo para as a<;oes que voce quer iniciar .
Nesse exemplo, voce escclheu 0 modo de exibi<;3.o (veja a Figura 21.15).
Como pode ver, as caract erfsticas de dom inio sao exibidas na tela.
C om a instrur; ao par amet er , voce pede induir palavras-chave que podem
restringir a entrada com certas opcoes. Essas tre s palavras-chave sao as seguin-
tes:
• lower case - C om isso inclufdc na instrucio de selecao, 0 valor em
letras min usculas inserido no c~po de entrada nao e automati-
camente convertidc para letras maiasculas, ao contrario do que aeon-
tece para to dos campos de entrada no ABAP /4 em tempo de execucao.
Os elemen tos de teste devem ser montidos pa ra elementos de tela
• obl igatory - Prolbe campos de entrada em branco. como Para meters a fim de oferecer a o usu6rio umo boo explicac;o o do
• defaul t - Mantem urn valor padrao inicial para 0 parametro. que 0 compo de entrada Selection Screen recresentc no contexte do
programo. Esses elementos de textc s60 independentes de idioma e
s60 exlbidos no idioma de logo n do vsvc ric.
~.-• •.:.I .. ]I • • • • • - • • •- • • • • • • • - • • - - - - - --- - - --
670 I "RENDA E. 11 DIAS ABAP/4 DIA 2UEUS DE sru\iO 671

Par a manter elemen tos de texto em suas telas de selecao, escolha 0 Figura 2 1 1 7 Mf' f ?!i ffl ii Hie life Iii,.!
1:"'~[jf."tii*; lM'Or.JI."""""'",~iWJI.~.?"<t",,~:7'.., ~~, :""4"'::. i-~~ "': ' ,:':';~.~ .;':"".""='.~

caminh o de menu Gorc-e-Text Elements do ABAP/4 Editor. Voce pede Mantendo sfmboJos
de fexto.
manter todcs as tres tip os de eexrc pan seu programa a partir desse
ponto. Agora, verem os urn exemplo de edicsc de simbolos de texto (veja
a Figura 21.16).
A Figura 21.17 mostra a tela que permite a voce editar a s sfrnbolos de
texto que voce criou em seu programa. Se voce quiser adicionar m ais, digite urn
ntimero e seu textc e de urn clique n o batao Save. Tambem observe 0 re curso
Where U sed, que realmente «muito uti!.

A tela de selec;oo checkbox


as parametres podem ser criados como campos de cla dos que contenham
apenas urnvalor de entradae tamb em podem sercriadoscomo caixasde selecto .
Q uando as Paramet ers assu me m a form a das caixas de seIel$ao. eles sao
declaradcs com o ripe C e dessa forma armazenam a valor de Xqu ando verifi-
cades e da tecla Espaco quand o Ilio verificados. Uma bo a utilizaclo do
parimetro checkbox e scliciear ao ususrio para indicar se ele qu er que certos
componentes de urn relatoric sejam exibidos. Sintaxe pa ra selection- sc reen checkbox
Figura 21 16 ~ A seguir esta a sintaxe para urn pa.r.imetr o que aparec e co mo urn checkbox:
A tela inicial Text Z parameters : te st parm as checkbox default ' X':

~
Symbols.

m
T
Nesse exemplo, 0 valor inicial e configurado como verific ado, ou con-
figura do co m o X para 0 processamento logico do programa. As caixas de
sele!Sao, ao contrario dos boeoes de 0pl$ao, njo sao mutuamente exclusivas e,
portanro, 0 usuaric pede ter tantas caixas de verificacfo quanu s forem geradas
na tela de se1el$3.o.
Como voce aprendeu, a instrucio paramete r e melho r utilizada quando
se solicita urn deice valor de entrada . Se a entrada. requerida e melhcr repre-
sentada em urn intervale de valores, a instruqao sele ct- opt i ons e.um campo
mais eficiente para se utilizar.

10YO .. A instru ~o select-options gem umo tobelo inferno de setecec que ccnte m
1Ib0 ,. o entrcdc pore os entrcdos de compo otribvidas.

AJ.elo de selec;oo sel ect -opt i oos


A instru~ao selec t- opt i ons e ut iliza.da. de maneira semelhante a instru~ao
paramet er s, no sentido de que cria criterios de selecac para urn campo de banco
de dados. A diferecca principal entre as duas e que a inst ru ~ao select-opti ons
672 APiENOA EM 21 DIAS " ../4

cria dais campos de ent rada qu e contem tanto urn campo FR()II com o um campo A sintaxe pora urn radi obuttoo group
TO. em oposi~io a somente uma Unica entra da de campo.

A sintaxe para se l ect -o pt i OOS


-
Ul
Z
A sintaxe para urn grop a de pardme tro radiobutton ea seguin te:
selection- sc r een begi n of bl ock r ad_blk with frame t i tle text-COO .

~m
.
parameter s: red ext radiobut to n group one,
!!! A sintaxe para essa instrucio e aseguin te: ra(exZ rad iobutton grouP. one,
rad ex3 radiobutt on group one .
~ select-opt i ons ex sel l! for tabl e-fie ld default ' VAl UELOW ' to 'VALUEHI ' . selection - scree; end of bl ock rad_bl k•

- - - - -- - - - - -- -
~
• ,
ANALISE
... A inslruc;oo select -optfo ns exlbe umo linho que normo lmente tem dots
r compos para dados de entrada . Isso pode ser restringido para um 56 campo,
utiliza ndo a cl6usula no-i ntervals no sintaxe select -options . Par exemplo, se seu
Esse exemplo gera urn gropo de trss parametres co mo bo roes de op csc.
Como voce pade ver, esses botoes de 0P~30 sao agrup ados em u rn blo co na
tela. Essa e uma boa prarica de programacao, porque ajuda 0 usu irio a. per cebe r
que tod os per tencem 010 mesmo gropo de sc licincac de entrada. Esses
pardmetros sao melhor utili zados para seleci onar urn unico valor de urna
progromo nao requer um compo TO perc entrada no linho de instruc;oo sel ec t - cpt t ons,
configu ralj3.o de varias opcces e devem center p elo menos do is bo toe s par
mas voce oindo quer utilizer a instruc;60 select-optio ns, ind uirio lese no dcvsulc
no- i nt er val s. Esso cldusulc, ossim como a no-e xtens i on, ser6 mois oindo explorodo grupo.
no exemploque cpcrece no fmc l destc set;60. Por enquonto, entretcnto, nos voltcremos 56 um desses tres botoes de exemplo pode.ser selecionado em tempo de
pore umo dlscussdc sobre 0 formata do tobelo de seleccc interne sele ct -opt ; ons. execuljio devi do a sua inclusac em urn gru p o. A integndade des dados e
mantida, porque essa e uma boa maneira de solicitar entrada muruamen te
Essa tabela intema e mantida com a seguinte form ate de campo, se 0
exclusiva ao usudrio. Isso sed demonstrado mais ainda na se~o a seguir, em
usuario clicar na seta para a direita do campo TO da sel ect -opt t ons. Clicando
que hi urn exemplo de um a tela simples de selec;.ao que utiliza muitos elem entos
nessa seta. voce abre uma tela de entrada Multiple Selections que preenche a
de tela de selec;ao qJJ~ voce apren deu.
eebela intema de selecao. Essa tab ela enuc arm azena os atributo s-chave dos
dados de entrada, incluindo 0 valor SIGN, OPTI ON, lOWe 0 valor HIGH. Esses
recurs os da instrucao sel ect - opt i ons podem ter as seguintes ccndicoes: Exemplo de prog rama d e tela de sele~ao
• SIGN - Pode significar INCLUSIVE, que e a padrao, au EXC LUSIVE, que A seguir est a 0 c6digo de exemplo para uma tela d e selec;ao envolve a maioria
p ode ser mar cada na jane la Complex Selections. dos elementos b:isicos:
report YJACOBJX message-id Y6.
• OPTION- P ede armazenar valores 6T (entre), CP (contem padrac), EQ
* Database Table Def in it i ons
(igual para) e GE (maior que au igual a). tabl es : mara.
select ion-s creen skip 1.
• lOW - Arrnazena a entrada de valor no cam po FROM.
sel ect i on- s cr een begi n of bl ock blockO with f rame t it l e t ext -GOO.
• HIGH - Armazena a entrada de valor n o campo TO. sele ct i on-s cree n skip 1.
selection-s cr een begin of l1ne .
sel ecrtcn - screen pushbutton 10( 20) te ll:t- 003 user-conmand engl .
set ecttce- screen pushbutton 50(20) t ext -004 user-COlllMnd germ.
Esse multiple select- opt ionpocle ser excluldc ufilizcndo-se 0 d6usulo selettion- streen end of line.
no-ext enst cn como dedorado onteriormente neste ccpuvlc. set ect f on-sc reen end of blo ck blockO.
* Sele ction par ameters
selection- screen s ki p 2.
BotPes de tela de sele~ao sele ct ion-s creen begin of block blockl with f rame t 1tle t ext -OCI
no in t erval s .
Alem do campo parameters e select-opti ons, a ins trucio de tela de sele~3.o selection-s cr een begin of line.
radi obutton e uma excel enee maneira de manter a integridade dos dad os parameter s : p ex! radi obutton group radl
.sel ect i on- scr; en conment 5 (30) text-ext .
durante 0 processamento da en trada do usuario em tempo de execuclo. A fim selecti on- scr een end of li ne.
de criar Parameters como bot oes de 0p c;30, voce deve declare -los urilizando a par ameters: p_jdatel t ype d default sy-datum.
cliusula r-ed tcb ut tcn gro up. . selecti on-sc reen skip 1.
_ ~ L..IL...I ~ I - - - -

674 APRE NDAEM 21 DIAl ABA f( ' 0\l2HELlSDE Sllf\AD 675

selec tion-s cree n begin of line . not ( ( p_Jdat e3 - ' l E01' ) or (p_Jd at e3 i s init ial ».
par aJleters: p ex2 rad 1ob;Jtto n group ra dl JIlessagl!! 1017 with ' We are now usi ng Ex~le 3'.
se lection-sc reen COIlIIlent 5(30} t ext -exz . endt f ,
se tecttcn-sereen end of line. i f ( P ex4 - ' X' ) and
select -opt ions: s_jdate2 for mara- la eda. ( ( s jdate4 - 'lE01' ) or ( s Jdate4 is initial ».
selection-screen skip 1. mess age E017 with ' Sel ect io n- Opt i on wi th no in t erval has no valu e' .
selection-screen begin of l1ne . ets et f ( p ex4 • ' X' ) and
par arr.et ers: p ex3 ra d1obutto n group radl. not ( ( sj dat e4 - 'lEO?' ) or ( s_Jdat e4 15 i nitial ».
selection-screen carment 5(20) te xt -exa . IM!!ssage J017 with 'We are now usin g Ex~ le 4'.
sel ecti on-screen end of line. endi f . .
paramet ers : p jdat!3 li ke eere -teeda . 1f p_ex5 - · X'.
selecti on-screen ski p 1. per f onn getJlrice _data .
51!1ecti on-screen begi n of 11ne. else .
parameters : p ex4 rad1obutton group radl message 1017 with 'No Pri cing Data sel ect ed ' .•
se l e c ti on-sc ~en conrnent 5(30) t ext-exa. endi f.
selection-scree n end of line. if p ex6 - ' X' .
sel ect-opt ions: 5 jdate4 for Illata-lieda no-extension no i nt ervals. perfortll get _cost_d ata.
se lecti on-screen end of block blockl. else .
selecti on-screen skip . message 1017 with '/'(0 Costing Dat a selected ' :
s el ect i on- screen begfn of bl ock bl ock2 with f rame t itl e t ext-CO2 endif .
no i nterval s . 1f p ex7 - ' X'.
set ectt on-screen begin of line. perfonn getJevenue_data .
parametl!!rs : P I!!x5 IS checkbox. else .
se1ecti on-s c~l!!n Camll!nt 5(30) text-exs , mes sage 1017 with ' No Revenue Data selected' .
sel ectt en- screen end of l tne, end1f.
se tecttcn-s creen skip . form get _cost_data.
setectt cn-s creen begin of l i ne.
parameters: P ex6 as checkbox. endf ol'1ll .
selection .s creen corrrnent 5(30) tex t-exs. fonn get Jevenue_qata .
setecttca-screen end of tt ne.
se lection-screen s kip. endfonn.
sel ecti on-s creen begi n of line. fonn getJlr1ce_dat a.
paramet ers: P ex] as checkbox.
se le ction -screen corrment 5(30) te xt -e x7. endfonn.
s el ect i on-s creen end of l i ne.
selection-screen end of block blo ck2. . ... Com o os botoes de op¢o soc mutua me nte exclusives, e uma bo o Idelc
• AT sele ct i on-screen. mUSE,. mente-los toclos no mesmo bloco de processomento no tela de selec cc. Note,
AT se lec t i on-s creen. no Figure 21 .18 , com o coda g rupo de ele mentos de compo foi isolodo pore canter 56
1f ( P exl - 'X' ) and
as compos que s60 relevontes 0 esse blocc de decislio .
( ( pjdate l '" ' tEO?' ) or ( p_Jdate1 is initial ) .
message E017 w1th ' Sel ect i on Opt i on with Default fi eld has no val ue ' .
elseif ( p ex! - ' X' ) and
Como voce pede ver na Figura 21.19, e rnais dificil seguir os campos de
not ( ( p j"datel - ' l EO?' ) or (p jd at el is initial ». dados exigidos quando eles n j .c esno agrupados em blocos de tela de selecso.
message- tOp with ' We are now using Exampl e 1' . Os pardmetros que sao definid os com a clausula 1i ke aparecerao com urna
endif. seta para baixo , na qual voce pede dar urn cliqu e para ver uma janela com uma
1f ( p_ex2 - ' X' ) and
( ( s_JdateZ · ' lEO? ' ) or ( s_Jdat e2 is 1nit141 »). Iista des valores validos (veja a Figura 21.20).
message E017 with ' Sel ecti on Option using f or f i eld has no valu e'. Ago ra, podemos dar um clique em cosso batao de selecao. (Veja a Figura
else1f ( p ex2 .. 'X' ) and 21.21). Ele pr eencher s 0 camp o daque le parametro com 0 valor que voce river
not { ( s JdateZ - ' l EO? ' ) or (s j dat eZ i s 1nitial ». selecionado. Isso pod e ser mui to uti! para ajudar a ususrio a se [amiliarizar mais
message-1017 with ' And now ExarJllle Z i s selected'.
endi f. com as exigeccias de sele~ao que voce impes.
if ( P ex3 - ' X' ) and Ao criar urn sel ect-option sem utilizar a c1iusula no- ext ension, voce
( ( pj date 3. ' IEQ1' ) or (p_Jdate3 t s init1al »). disp6e da capacidade de inserir mdlriplas sele~6es au urn intervalo delas. Para
mess age EOI1 wi t h ' Parameter w/ l1 ke sta t ement field has no val ue' .
elseif ( p_ex3 - ' X' ) and
~.~~.~ ~

676 APRE NOAEM21 OIAS AUP/4 O.2UWSD£ SBfI,io 677

inserir multiplasselecoesau urn inrervalo,simplesmente de urnclique no ba tao F i g ura 21 20

de seta branca (veja a Figura 21.22) . as pot6me'ros e a


solidlo~60 de seta
pore baixo.
F igura 21 18

A tela Selection com


um"bIoeo relevonte
de decis60.

Fi g u ra 21 21
Escolho um volor
v6/ioo.

F igura 21 19

A telo Selection sem


b/ocos.

f lgllra 2 1 22
As op¢e:s Selection
com Extension.
•• ww
678
ww
------- - -
APIEHDA EM ' 1 DIAl AB AP/4 D~ , \,TILlS DE " l£IlD I 679

Flgur9 21 24
Nesse ponte, voce pede inseri r todos as seus criterios de sele~ao e dar
A tela $@o/edion com
urn clique no bon e Copy (veja a Figura 21.23). o mo verdeativodo.
Como pode vel', a seta mu dou de cor e agora everde (veja a Figura 21.24).
Is50 reflete 0 fate de que voce selecionou mrilriplas selecoes par a esse campo
e essas entradas preenc herao uma tabela de se1e~ao em tempo de execucgo.
Se urili zar as clsus ulas nc- extens t ons e no-trrterva1s na instrucao se l ect-
options, voce obtera urncampo de entrada que[uncionade maneira semelhante .
a urn cam po de pardmetro, co mplete com uma teela de seta pa ra baixo para ver
entrada, validas (veja a Figura 21.25). "
Tenha euidado ao utilizar valores-padrac paraas campos se1ect -opt ion.
Como pede ver na Figura 21.26, se voce preencher urn campo select-option
com urn valor padrao, 0 camp o DaD permitira que vocs veja as entradas vslidas.
A seguinte tela mostra urn exemp lo de uma rotina de valida~ao de dados
que utiliza uma rnensagem de in forma!ioes no formuIario de uma janelapop-up
que emeramen te informativo e sim plesm en ce pausa 0 programa. Isso emelhor
utilizado para comunicar status de evea tos no processamento de dadcs (veja a
Figu ra 21.27).

F lgur9 21 23 Figura 21 2 5
Insiro seus exig~ncias
A tela Selection sern
de sele¢o.
extens60 OIJ
inl'efYOios.

Voce tambe m p ede u tilizar um a mensagem de texto do tipo erro . Esse


ripe de mensagem acrescentara a programa e emitira uma meosagem de texto
na barra de status. Isso eutilizado principalmenre para validar dados na entrada
inicial (veja a Fi gura 21.28) .

j
• • • • • • • • • • • • • aa • • • • • • ~

680 APREHDA EM 21 DIAl ABAPH D~ 2UEUS DE SElf(.lD 681

FigurQ 21 26 Esse exemplo mo stra muitos element os de telas de SeICIi2.0 combinada s


select -option em urn forma te simp les e eficiente . Examin e ocodigc que criou essa tela de
comvalor podr6o.
seleliao nos paragrafcs que precedem esse passo.

---:...-_----
IFasa
lembre-se de utiliwr os elem entos de
te la de se'~ao pore a s torefos mois
odequodos pore elc s.
Nco se esqvecc de ind uir bem-eloborodos
retinas de volidoc;60 de dodos que vtiJizem
as co pocidodes de evento do ABM'/ 4.
Projete sues te las de selecec o justondo
seus requisitos de entrcdo de dodos de
uma maneiro que sejo f6cil de ser
entendido pelo vsucric.

Como mencio nado nesse ultimo exemplo, e boa pratica utilizar ins-
trU~5es de mensagem como avisos de valida~o de entrada em tempo de
execut;ao.
Figura 21 27
M ensogem pop-u p Utilizando a instru~cSo message
vfjlizoda pore
vofjdo¢ o de dodos. As mensagens sao rnantidas e armazenadas na tabela noo e podem seracessadas
a partir do ABAP Workbench. Urn prograniador efetivo emitemens agens que
sao descritivas e ajudam a usudrio a entender a natureza do fluxo do programa.
.E posswel atribuir a cada instrucao de mensagem tipos de mensagem que
Fig ura 21 28 tern diversos efeitos no resultad o do programa.
h mensogens de
erro no borre de
• S- Success, essa mensagem e exibida na linha de status da tela
status. seguinte.
• A - Abend, a tranSa'iaO atual e interrompida e uma mensagem e
exibida ate que 0 usuario confirme-a.
• E - Error, 0 ususrio deve inserir dsdcs para con tinuar.
• W - Warning, a usuario pode tanto modificar os clados de entrada
coma pressio nar Enter para prosseguir.
• 1- Information, 0 usuario deve pre ssionar Enter para continuer no
mesmo P OntO no programa.
Voce deve especificar uma instru 'iao de informe message-id no comecc
de seu programa.
.... .... . .. . . ... .. . . ~. . ~.

682 APREHDA EM 21 DIAl AB AP/4 D~ , I, 1WS DE s<lE\-iD 683

FigurA 21 30
Sintaxe para a instrUl;tio me s sage -i d A tela Oth~r
!:!! A sin taxe para uma instrucio message· id em UJ'J} relat6rio e a seguinte: Development
Ob;eds.
~ re port ",,,,1. f tne-ccunt 65 Itn e-st ze 13' .....,.-id rs .

m
T Esse ID de dais caracteres e urn mimero de mensagem de rres dfgitos,
junto com 0 idioma, determinam as classes de mens agens. A SAP tom ou a
inclusso de instrucoes de mensa gem em seu prog rama rnais facil utilizando
camanda de instru~ao insert no ABAP/4 Edit or.
A Figura 21.29 ea tela facilmente acessivel que aparece quando se da urn
clique dup lo no nrlmero de ID de uma mensagem no p.,:£,AP/4 Editor.
Vamos ccm ecar pelo O bject Browser e escolher Other Objects na parte
inferior da lista (veja a Figura 21.30) . Voce pod. pular para a tela Maintain
Individual Messages clando urn clique duplo no numero de ill cia niensagem I
no AJiAP /4 Editor.
Em seguida , insira uma classe de mensagem e de urn clique no Jcone para
a a~o que voce quer executar. Nesse exemplo, de urn clique no modo Create F igurA 2 1 3 1 ;...........~:.-~~"'"""_M~~~_~I:0~ ~ ......
I
(veja a Figura 21.31).
. Agoravoceve atelaMaintain MessageClass; eaqui que voce pode inserir
os atributos da classe de mensagem que esta editando (veja a Figura 21.32). De
A tela Mointcin
M essage Doss.
I I
I
urn clique no botao de Messages para manter as mensagensindividuais.
Agoravoce esd no modo de edi~a o, 0 que corresponde a urn item na lists
I
de elementos de texto de mensagem. Depois que fizer as alteracoes necessaries,
de urn clique no.batao Save e sua mensagem estara pronta para ser utilizada.
Flguro 21 29
II
T~Ia jnicial ObjKt
Browser.

,I
I
I
~~ I I I • I I J,.-:I-. I I I I - I I I .I I • • . ..• .. ... .. ..........
~ ~

684 "FIEND. Ell 21 DIU ABA PI4 D~ ,"'".15 Of SRI\AD 685


Figura 21 3 2
• As mensagens podem ser utilizadas para comunicar 0 st atus do pro-
A tela Moinloin
Individual grama e a validade dos dados inseri dos, bern como para inreragir com
Messages. o usudric de uma maneira que permira processar os dados mais
eficientemente.
• Os elementos de texto devem ser mantidos para elemento s de tela de
seler;ao, de tal modo que 0 usuario tenha urn born entendimento do
uso dos varies objetos de campo para criterios de seler;ao.
• Com 0 ABAP/4, voce p ede personalizar e modificar telas 16gicas de
sele~ao de banco de dados existentes para arender as suas nece ssidades
especfficas.

P&R

o o que acontece se u rn campo de chave primdria eadic ionadc a


uma tabela de verifica~o depois que uma chave estrangeira foi
ddinida?

--'----------'-
IFasa
Lembre-se de utili zer mensog ens de uma
mcneiro que ajude a u$u6rio a Iraerir as
dodos de modo mois eficiente.
FOl;O born usa dos classes existentes de
Nao se esquecc de especificor a
message -id ccrretc no Inklc de seu
rel0t6rio.
o Campos adicionais que sao adicionados achave prima ria de uma
tabela de verificacso de chave estrangeira sao marcados como
genericos e, ponanto, ignorados pelo siste ma ao validar dados
icseridos no campo de cbave esrrangeira.

mens ogem de sistema a ntes de crier as


suos pr6prias.
o E. pcssfvel inserir vanaveis como mensagens de erro de sist ema au
c6digo s de retorno em uma mensagem de texta?

o Sim. Basta voce colocar urn "e" comercial (&) no lugar em que
voce qu er que a variavel apare.~a DO texto da mensagem e cham ar
Resumo a mensagem passan do pela variavel, de maneira semelhaaee a uma
instrucdo perform.
• 0 ABA P/ -4 e uma linguagem de programacfo baseada em eventos e
voce pede tirar p rovei to desse fato utilizando as eventos at se1ec-
ti on-screen e i n; t i al i zati on, assim como 0 evento at user-conmand, Workshop
para vaLidarentrada do usuaeio utiliz.ando urn namero de tecnicas. o Workshop oferece duas maneiras de voce verific ar 0 que aprendeu oeste
• As chaves estrangeiras podem set utiliz.adas para verificar a integridade capitulo. A se~ao Teste oferece pergunus para ajudar a so lidificar seu entendi-
de dados de entrada urilizando os campos de chave primaria de uma mento do ccnteddc abo rdado e a se~ao Exercfcio permite que voc e pratique 0
tabela de verificaclo. que aprendeu. Voce pede encontrar as respostas as perguntas do Teste e aos
exerclcios no Apendice B, "Respostas is perguntas e aos exercfcios".
• Os matchcodes u tilizam dados de pccl logicc para validar entrada de
usuaric baseados em criterios especificados de sele~ao quando utili-
Teste
zados em conjuncac com pardmetros de tela de selecac e opcoes de
sele~ao. 1. Como os dais tipos de matchcode trabalham juntos com rela~ao ao
-,
armazenamento de dados de matchcode?
................ -. --. . . ----. - -. ---- - ~

2. Se voce alterar as caracterfsticas de urn dominic, as caracterfsticas


vinculadas dos elementos de dados tambem irac se alterar?
3. Qual ea principal regra para estabelecer urn relacionamento de chave
estrangeira?
SEMANA 3
Exerdcio 1
Crie urn relatcric de tela de selecso que lisre eodos as compooentes de urna
ccnta de materiais em diversos idiomas. Construe campospara selecces de urn
intervale de combinacoes de materiais e plantas. Lembre-se de utilizar as
elementos que aprendemos oeste capitulo que melh ar se adequarem as tarefas.

Revisao
Na semana pass ada, voce realizou as seguintes tarefas:
• produziu relatorios que utilizam sfmbolos grafi cos e leones
• anexou titulos e rodapes a listas
• enviou salda para 0 spool de Impressao utilizan do new-pase
pr int
• familiarizou-se com as evenros in iti al izat i on, start -at-se-
l ecti on, end-cf-sel ect ton, t op-of - page e end- at- page
• codificou sub-retinas extemas e internas e m6dulos de fun~ao.
e passou parimetros digitados e nao digitados para d es por
valor. valor e resultado e por referencia
• estabeleceu excecoes dentro de urn modulo de fun~ao para
configurar 0 valor de retorno de sy-subr-c
• criou telas de sele~ao utilizando a instrucic select-opt ions
A
Conven~oes de alribui~iio de nome
Convencoes de atribuic;ao de nome de
programas
Ha dais tipos de programa:
• Relat6rios
• Programas de diaIogo
Carla tipo de programa tern suas pr6prias convencces de atribuic j o de
nome. A Tabela A. I con tern as caracteres qu e nae sao permitidos em nome s
de program',

l Tabel a A.l Corocteres inv6lidos para names de progromo

Cara ctere Descri~60

Ponto

r, Vlrgulo
Lacuna
() Pcrenteses
Aspos simples
Aspas duplos
Sinol de iguaJ
Asterisco
Sublinhodo
% Sino! de po rcentagem
Aeo s u os Coroderes com trema e "'s duple clemco"

.. htIpJt-.mmpus.tom.br
~ I I" .I I • • .I I . - I •• • • -- i .
690 'PRE'" E. 21 DIAS ABAP/4

Conyen..6es para atribu i..60 de nomes a relot6 rios Convencoes para otribuicco de nomes a programas de
as n om es de relato rio d e clien re segue a convencio Yaxn:xxx au Zcccecce, onde: di61ogo .
• 0 primeiro cara crere deve sec urn Yau Z. N a mes de pragrarna de dialogo de c1iente segu e a convencfo SAPMYxxx au
• 0 segundo caractere represents a area de aplicativo. SAPM2=, oDde:
• 0 compr:imento maximo de programa e 10. • O s p rimeircs quatro caracteres devem ser SAPM.
o segundo caractere ea fonna curta para a irea de aplicativo (vejaTabe1a • 0 quinto caractere deve ser u rn Y ou Z.
A.2). Por exemplo, urn relat 6rio de cliente para a Tesouraria seguiria a con- • O s dlcimos tres caract eres podern ser qu aisquer caracteres validos.
v en c;ao Z5.:a:x.o:x, enquanto u rn relat 6 rio logfstico seria nomeado Z21xxxxx.
Programas escrieos p a r SAP devem seguir a convencao SAPMaxxx, onde a
C ada area de aplicati vo pede ser representada po rum c6digo. Cada c6digo
tern duas formas comumente utilizadas, a forma curta e a longa. H i tambem
e a forma curta para uma area de aplicat ivo .

urn c6digo utilizad o sa mente para nomes 16gicos de banco de dados. Esses
c6d.igos.sao mostrados ~a T abela A.2. . Intervalos d e nomes de c1ientes
o sistema de R/3 contem rnu it os tipos de objetos de de senvolvimento. Se voce
Tabela A.:2 C6d igos pare as 6reos de oplicotivo no R/3 mesm o quiser criar urn ob jero de desenvolvimentc, deve cris-lc no interualo
Area de a plica~ao Forma Fonna Forma
de nom e de cliente. As convencces para intervalos d e Domes de clientes sao i
mostradas na Tabela A.3. i
longo curta LDB
Ccntobllldcde finance ira (Finan cial Accounting)
Ge renciome nto de materia is
FI
MM
1
2
F
M
Tabela A.3 Intervclos de nomes de cllen te s pora todos o s o bjetos de
desenvolvimento do R/3 I
(Materia ls Management)
Vendos e Distribui¢o (Sales a nd Distribution)
Plcnejcmentc de produt;oo e centrole
SO
PP
3
4
npo de objeto Comp rim.
Max.
ConYen~ao
d e atribui'ioo
Notas I
de nome
(Produdian Plonning a nd Ccntrcf
Tesou roria (Trea sury) TR 5 ABAP/4 Query
Ge renciame nta de qua lidade OM 6 Q uery 2
(Q ua~jty Mona gement)
Sistema de proietc {Proiect System) PS 7
Functional Area
Fundion Gro up
4
3 I
Monutene;oo de planla (Plant Ma intenance)
Gerenciamento de estoqve
('Na rehouse Management)
PM
WM
8
9
Appen d Structures
Appe nd Structure 10 Y* Z· I
I
Recursos hvmcncs (Humon Resources) HR 10
Append Structure Fields
Application l ag s
10 YY·ZZ· i, ,
Contabilidade de ativa (.Asset Accounting) M 11 I
Object 4 Y· or Z·
Co ntrole (CO)
Atividod es de processo (Process Industries)
Control ling 12
PI 13
Sub-Object
Area Menus
10
4
Y· o r Z·
Y' Z· I
G erenciamento de investimento
(Investment Manogement)
1M 14 Avthorizotion s
Avthorization 12 ony NOo permitido no !
loglstico (Ge raij {logistics (Ge ne ra l))
Desenvclvlmento Intemociona l (Internationa l
Development)
LO
IN
21
22 Authorization Closs 4 y' Z·
2Q pos it;60
I
Authorization G roup 30 y' Z-
Funcionalidade ctroves de op licotivo CA 23 y' Z·
Authorization O bject 10
(C ross Application Functionality)
CATT Flows 8 y. Z'
"
.I • ~ • ~I-I _I . - ..-. . . .- .-... - • • _ ~• • _ --..-_
--- - -- - - - - - - - -
692 " PIENDA EM 21 DIAS ABAPH APt,DIU A, CO'VE'IOB 0' ATRIBUI>\ODE 'OM' 693

Tabela A.3 Ccnft nucceo Tabela A..3 Conti nuot;oo

Tipo de eblete Comprim. Conven!roo Notas Tip o de ob (eto Comprim. ConvenCjQO Nota s
M6x. de atribul!rCio M6x. de atribuiCjQo
de nome de nome
C hange Docu ment Objects 10 Y· or Z· Field Exit Func Module 30 FIELD_EXIT.:
Codepoges 4 9' FIELD_EXIT_' y
Data Elements User Exit Func Module 30 EXIT"'pppppppp_nnn
Dot e Element 10 y. Z· Conversion Exits 30 CONVERSION_EXIT_""""JNPUT
Data Elemenf Supplement 4 Se 0 diente crlou CONVERSIO N_EXIT_""",,_OUTPUT
o elemente de GUI Status 8
"dodos
IDOCs
SAP Supplement 4 9' Se 0 SAP criou 0
Segment Type 7
ele mente de dodos
Data Models Basis IDOC Type 8
Doto Model 10 y. z- Enhancement Type 8
Enfity 10 y. t: IDOC Type 8
Develo pment Closses 4 y. Z· Includes (DDlq
DialogModull!s 30 Y· ZtRP_* Customizing Includes 10 Apenas vtilizado
em uma tobela
RHJNFOTYP_9' criado pelo SAP
Dccurre ntction Modules
Includes (Programo)
General,Text (TX) 28 y. Z·
Include 8 Y· z·
Test Run Description 20 y. z- Include for User Exits 8 ZffffUnn ffH = func group
Mo;n Chopter(BOOK) 20 y' Z' (m6dulos de fun¢o)
Chapter of lMG 20 y. Z·
Info Types 4 9'
Chcpter (CHAP) 20 y. t : EY. EZ·
lock Object 10
Chopter Note (NOTE) 26 y. z· logical Data bases 3 Y· o Z·o Q = 6reo do
Release Information 20 y. z: op licotivo (forma
Structure 12 y. Z· LOB, vejo Tobelc
O nline Text 28 y. z: A.2)
Domains 10 y. Z· logisticsInfoSystem
Enha nce me nts Event 2 y. Z·
Unit 2 y. z:
Enhancement 8 y. Z·
Maint. & Transport Obje cts 10 y. z·
Enhancement Project 8
Fund ion Codes Motehcodes
Functi on Code 4 y' Z'
Matchcode 10 1 0-9
Menu Exit 4 +' Motchcode Objed 4 y. z:
Function Ubrary Messoges
Functio n Group 4 y. z: Message Classes 2 y. z:
User Exit Function Grp 4 XZ' Message Numbers 3
Function Module 30 Module Pools
Y_· Z_·
-.•.. • • II!' !!!! II!', • • •• • • • • -- - - - - - - - - - - - ~
-
694 " 'REHOA EM 21 OIAS AUPI4 AP ~NOICE A; COHVENtOES DE ATRIBUJ9,O DE NOME 695

Tabela A.3 Conftn uocoo Tabela A.3 Contlnuocuo

Tipo de objeto Comprim. Conven~ao Notas Tipo d e obieto Comprim. ConvenCjQo Notos
Max. de atribuiCjoo Max. de atribu lCjao
de nome de nome

Dialog Module Pools 8 SAPDY' SAPDZ' System Barcode 8 v z:


Screen Module Pools 8 SAPMY' SAPMZ' Standard Task 8 9'
Info Type Module Pools 8 MP9' Stondard Roll 8 9'
Subroutine Module Pools 8 SAPFY' SAPFZ' Structure (DDIQ 10 y. z·
Update PgmModule Pools 8 SAPUY' SAPUZ' SYSlOG Message fO 2 y" Z·
Number Range Objects 10 y. z· Tables
Parameter Ids 3 Y' Z' Field Nome 10 Emestruturcs
appe nd: YY- U·
Printer Ma cro s Y· Z· 9'"
apenos
Relation Ids 2 y. z- y. z·
Index Nome 3
R/3 Analyzer Identifier 20 y. z· 10 y. z·
Trcnsporent, Pool,
Reports
Cluster Nome
Report Nome 8 y. z:
PoolNome T9' Pora tobelcs de
Report Cat egory 4 y. z- pool no pool
Report Variant ATAB paro tipos
Tronsportable, G labal 14 X· CUS&· de informc¢o de
cllente i
Transportable, Local 14 Y'
P9'
Not Tronsportable
Report Writer
14 Z'
PA9' PB9' I,
PS9' I
Report
Report G roup
8
4
1a carodere noo ~9
HRT9' HRP9' II
Library 3
111 carod ere noo 0-9
1a ccrcctere noo 0-9
HRl9' I'
Tobie Pool Nome 10 y. t: :I
Standard Layout 7 111 coroctere noo 0-9
Table Cluster Name 10 y. z· I'
SAPScri pl
Titlebcrs 3 ,I I
Layout Set 12
Farm 16 y. z-
1a corodere ndc 0-9
Tronsad ion Codes 4 y. z· I
Standard TextlD 4 y. z· Type Group 5 y. z·
Standard Text Nome 32 y. t: User Profiles 12 c ny _ nee permitido
na 211 pasiC;ao
Style 8 y. Z·
Views
Screens 4 9' Pare soido de telc pora y. z·
View Cluster 10
>0 progromos de di61ogo
do cllente View Name 10
Spaol HelpView 10 H_Y· H_Z·
Layout Type 16 Y· z- View Maintenance Data
Fonl Group 8 y. z· View Content reservodo no TRESC
Device Type 8 Y· z· Table Content reservoda no TRESC
Page Former 8 Y· Z· Worlcflow O bjed Type 10 Y' Z'
~ .- .- I- Y • • • • -. -. -.-. -• • - • •- . -. -. -• • • • . . . . . . - --- - - - - - - - - .
.~-

696 "REND AEM 21 DIAl ABA PI<

Vo ce descobrirf que existe m poucos ob jetos SAP dentro dos intervalos


de nome de diente e que, portanto, violam as conven cc es de atribui~ao de no me
des critas aqui . Esses objetos foram criados ant es de as convenco es precedentes
serem adotadas. Uma lista dessas exceco es pede ser encont rada na tabela TOKZ.

B
Respostas cis perguntas
,
testes e exerclclos
dos .
Die 1. " Q embiente de desenvolvimento"
Re spQsta s do teste
1. SM04 (utilize 0 caminho de menu: Syrttm ->StatNS)
2. 5000
3. 5001
4. Tree. Hi urn banco de clados por sistem a de R/3 .
5. Tres: dais para os servid ores de aplicativo, mais urn para 0 servidor
de banco de dados.
6. O p en SQL e0 dialet o ANSI SQL da SAP. Eurn subcon junto e um a
vari.<;ao do ANSI SQL.
7. 0 Open SQL tern eres vantagens:
• Eportatil p orque autom aticamente econvertido em SQL nativo
p elo compon ente de interface de banco de dad os do pr oc esso de
tr abalho .
• Sopo rta tabelas de u tilizaci c de buffer, faz endo as programas
que 0 utilizam serem execun dos mais rapid am en te.
• Oferece tratamento automdticc de clien te.
8. A pane de interface de banco de dados do processo de t rabalho
implement. O pen SQL.
9. Uma nov a area de rolagern c alocada sempre qu e urn prognma e
executad o, e c d esalocada quando 0 programa termina. A area de

hrtpJ I_ .campvs.c;om.br
-.A.A • . • • • • ••••••• • • • • • - -- - - - - - - -- -

698 APREH DA EM 21 DIAS Am"

rolagem con tern as valores das variweis para esse programa e 0


APEHDlCE 8. RESPOSTAS IsPER_ASDOS 1ISTES Emooos 699
ri
diferenca na safda para esse programa, especificandc ou Ilia as aspas. I
ponteiro atual do pr ograma. Entretantc, para evirar conversoes e uma boa prari ca de programacfo
10. Urn context e de usudrio e aloeado toda vez que urn usuario eferua e toma 0 programa mais eficienre.
lo gon, e desalocado quand o esre eferua 0 logoff. Ele comem as 1 report zt z020l.
informacces sobre 0 usuario, co mo autorizacoes, con figura coes de 2 tables ztxlfbl.
perfil e endereco de TCP/JP. 3 select * from zt xlfb1 where bukrs >- '3000'
4 order by bukrs lifnr descending.
11. 0 roll-out ocorre no fim de urn passo do dislcgo . Ele libera 0 5- wr i t e : / zt xl f bl- bukrs , ztxlfb1 -1ifnr.
pr ocesso de trabalho para prepara-lo para Dutra sclicieacso, de 6 endset ect ,
7 If sy-sub rc <> O.
mo do que 0 pr ograms nao utilize a CPU enquanto espera pela B wri t e / ' no recor ds f ound' .
entrada de usuario. 9 endtf ,

2. M ova 0 teste para sy-s ubrc depo is de endsel ect, como mos trado aqui:
Resposto do exe rcfcio 1
1 re port ztz02 02.
N as figu ras 1.28 e 1.31, 0 primeir o cam po nie tern 0 ripe CLNT;ponanto, a tabela 2 ta bles ztxlfal.
eindepe ndence de clien te. As instru\roes Open SQ Lopenrio em todas as linhas dentro 3 se le ct * from. ztx l fal where lifnr l tke ' IA' .
dessas ta belas. Nas figuras 1.29 e 1.30, 0 primeiro c:unpo na tabela e do tipo CLNT; 4 write / ztxlfal·l1fnr.
5 endse 1ect ,
portanto. a tabela e dependence do clienee. As instrulioes Open SQL s6 operarao nas
6 if sy-subrc <> O.
linhas que tem 0 mesmo numero de cIiente que seu ndmero de cliente de logon arual, 7 wr1 t e / •no records found' .
8 endif.
Die 2 , "Sew primeiro programe em ABAP/4" 3. Ha urn ponte ausente no firn da instrucio tables, e a rnimero do
fabrican te deve ser preenchido aesque rda com zeros porque de eurn
Respostes do teste campo de .caractere no banco de dados. (Esse componamento e
1. Al oca um a are a de tra b alho padra o para a tabela e da para 0 programa inteiramente explicado no capitulo sabre con vers oes.)
acessc a tabela de ban co de dados do mesmo Dome. 1 report ztz 0203.
2. A area de trabalho de tab ela padrac ea area de mem6 ria alocada por 2 table s zt xl fa l.
3 sel ect * f rom ztxlfal where ll f nr > '0000001050 '.
uma insrrucac tabl es . Essaarea de mem6ria ternome smo nome e a mesma 4 wt-tte / ztx l fa l - 11f nr .
estrutura que a tabela ide nti ficada na instruci o ta bl es. A instru cj c sel ect 5 endsel ect.
utiliza-a par padrao se nao h ouver a clausula into.
4. A ultima linha da said. sera no r ecords found, mesmo se as registros
3. N a area de tra balb o de tabela padrao. forem loc alizados . 0 problema esti na linha 6. 0 test e deve ser para
4. P ara a mesma Iinha que a saida da instru~ao write anterior. igualdade, n'o desigualdade .
5. sy-subrc 1 report ztz0204.
6. sy-dbcnr 2 tables zt xlfal.
3 select - fl"Olllltx lfal where l ifnr > '‫סס‬OO0010 50'.
7. A linha 4 sera executada 30 vezes, uma vez para cada linha recuperada. 4 wrf te / ztxlfal -l1fnr .
8. N enhuma vez. A linha 4 nao ser.i executada se a tab ela estiver vazia, 5 endse\ ect .
6 i f sy-dbcnt - O.
7 wri te / 'no records found' .
Respostos do e xerd cio de programa~ao 8 endif.

1. Este relatorio exibe todos as nu meros e ccdigcs de emp resa do 5. A instrucao write deve estar dentro do loop select .
fabricante da ta bela ztx l fb l , on de a c6digo de empresa e maier que 1 r eport zt z0205.
a u igual a 3000. N ote que bukrs e urn campo de caractere. Se voce DaO 2 tab les zt xlfal.
cclccsr 0 valor 5000 entre aspas simples, a sistema automaricamente 3 sel ect * f rom ztxlfa1 where lHnr > ' 0000001050' .
a converted em caracrere paD a-comparacao. Nao hi nenhuma 4 write / ztxlfal- lifnr .

..f: . .-
.......................Aua.....--.JII.-A-~ • • •- . -• • • - • • • • • • • • • • • - • •- . -• • • • • • - - - - - - - - -

,P!!lOlU HBPOOAS IsPERGUHTAS DOS 1ISTI5 EElIRdoos 701


700 ' PiE' O' EM2101' S " ""

5 endse lect.
6 1f sy-subrc <> O.
Dia 3, "0 Data Dictionary,. Porte ) "
7 write I no records found
I I •

8 end if. Respostos do teste


6. Veja 0 program. original , .atab ela zt xl f c3 ndo ~ utilizada: a d efini~o 1. 0 do minic d.a a urn camp o suas caracterlsticas recnic as, como tipo de
para eta pod e ser removida da linha 2. 0 into ztxl fal na linha 4 naa dado e comprimento.
e necessaria , uma vez qu e zt xlfal e. a ,an a de trab alho padrao. As 2. 0 elemento de dados con tern um nome de dominio, r6tulos de campo
linhas 5 e 6 podem ser encadeadas juntas. A segunda exp ress sc que para telas e listas, e a dccurnentacac de ajuda Fl.
utiliza sy-dbcnt na linha 8 e redu ndante e po de ser re movida. A linha 3. Os dados de aplica tivo se refere m a da dos utilizados pelos aplicativos
12 nao precisa de uma area de trabalho explfcit a, enrao pode ser de R/3 co mo SD (Sales e Distribution ) ou MM (Materials Manag e-
removida. Consequentemente, as linhas 13 e 14 devem ser alterada s me n t) . Hi dois tipos: dado s de transacio e dad os-mest res. Exemplos
para escrever ztxl fb l, e a linha 3 DaO e mais necessaria. As linhas 13 de dados de aplicativo sao ordens de compra (urn exemplo de da dos
e 14 podem ser encadeadas junta s. 0 pro grama simplificado segue: de rran sacao) ou as inform a~ 6e s de fabricante (urn exemplo de dados-
1 report ztz0206. mestres). H i tam bem clado s de sistema, como dad os de configuracio
2 ta bl es: ztx lfa l . ztx lfb l. ou meradados de D D IC, alem de dados de aplicariv o.
3
4 S!1ect * f rom ztx lh l . 4. Nso, a posi~ao do ponto decimal e pane da descricao do campo. Ele
5 write : I ztx lfal- l1f nr, esta co ntido no domlnio, nao arm azenadc com 0 valor.
6 ztx lfa l-namtl .
7 eedse 1ect • S. SE 16, SE17, SM30 e SM3l. SE16 i mais comumente utilizado, e SE17
8 i f sy-subrc <0 O. nao pode ser utilizado pa ra arualizar dados.
9 wr;te I ' no records found in ztx l fa l ' .
10 endif . 6. Uma tabel a transparente tern urn relacionamen to urn para urn com
11 uj t ne. uma tabela no banc o de da dos. Tab elas de pool e de cluster tern
12 sele ct * from ztx lfbl. relaciona mentos muitos para urn com tabelas de banco de dados.
13 write: I ztxl fbl- l1fnr .
14 ztx lfbl- bukrs .
IS . eneselect • Resposto do exerddo 1
16 11 sy-subrc <0 O.
17 write / ' no records found' . Para essa solucao, veja a tabe la ztz l f al do sistema R/3.
18 end; f.

7. 0 erro de sintaxe e causado pela endsel ect na linh a 5. Ele deve ser
Re sposto do exerdcio 2
removido. Vo ce tam bem pode corrigi r 0 erro de sintaxe removendo Para ver a solucao para a tabel a .•. knal , veja a tabela zt zknal do siste ma R/3 .
a palavra s i n91e cia in struqao se 1ect na linha 3. Enrr etant o, essa e uma A solu r;ao para 0 reLat6rio e a seguin te:
solul;ao menos eficiente, uma vez que apenas uma linha sera lida. 0 1 report zt z0302.
operador de comparaclo na linha 3 tam bem esta incorreto. Ele deve 2 tables ztz knal.
3 select ... from ztz knal.
ser . 4 write: / ztaknet- kunnr , zt Zknal-namel ,
report zt zOZ07. 5 ztzknal-cityc , zt zknal-regi o,
tables ztx lfal. 6 ztzknal-1andl.
select sing le * fro m ztxlfal where lHnr • '0000001000'. 7 endsel ect .
wri t e I zt xlfal- lifn r . 8 1f sy- subrc <0 O.
if sy-s uerc <0 O. 9 wrl te / ' No rows found' .
write I 'no records found ' . 10 endif .
endi f.
~LA~.I_. _.I I I I •••••••• • • • • • • • • • -••••• • • • • • • • • I I~

, .&.PENDICE B: RESPOSTAS As PERGUNT.lS oos TESTES EEXERdclOS , 703


I APRE!'lOA EM 21 DIA SABA P/4 -;,- ---------------"'==::::..::=:.:.:::===~=~

Dia 4 , II 0 Data 0 ictioOl.la:ury¥+,.rP:l.aurt~eI;;U2,,-1_' _ Re sposto do exercfcio 7


• Para a soluca o desse exerclcio, visualize a tabela zt zknal onlin e do sistema R/3 .
Respostos do teste
1. Eles devem utilizar 0 mesmo dominic. Dia 5. 110 D ata Dictiona ry . Part e 3"
2. D entre de tabela ztl, digite . INCLUDE no campo de nome de campo e
zsl no campo de nome de elemento de dados, no ponto cia rabela code Respostos d o teste
a est rut ura deve ser incluida. 1. N so. Voce njo pede "unir" urn Indice a uma insrrucac select. 0
3. Urna tabelade text o ofere ce descricoes para c6digos contidcs em uma otim izado r semp re escc lherd urn Indice em tempo de execuclo.
tabela de verificacsc em multiplas linguagens. 2. Sim, mas voce deve aplicar a um a tecla de modificacao da SAP para
4. mandt, spras, fl e f2. fazer isso. Pode ser feit o pelo ass. 0 Online Service System.
5. Cada camp o de tip o CURR deve fazer referencia a urn campo de chave 3. Sim, voce pode ut ilizar a ferramenta de analise de temp o de execucac
monetaria (tipo CUKY). para me dir a difere nca.

Resposto do exercfcio 1 Re sposto do exerd cio 1


Para a sc lucic desse exerctcio, visualize a tabela ztzt005 online do sistem a R/3. Va para a transacao Data Di ctionary (c6digo de transacao SE12) e exibaastabelas.
Examineas configuracoes tecnicas.
Resposto do exerclcic.Z; _ A classe de dados qua nt o ao seguinte:
Para a sclucso desse exercfcio, visualize a tabela online ztzt005s do sistema R/3. MARA: APP LOdados-mestres, tabelas transparentes (veja a Figura 5.21)
Nao se esqueca de comparar a cardin alidade e 0 cipo de campo de chave estrangeira LFAI: APPLOdados-mestres, tabelas transpar entes (veja a Figura 5,22)
do relacionamentc de chave estra ngeira com aqueles especificados online. KNA 1: APPLOdados -rne srres, tabelas transparentes (veja a Figura 5.23)
A caregoria de tarnanho quanta ac seguinte:
Resposto do exerdcio 3
Para a solucso desse exercfcio, visualize a tabela online zt zlfa l do sistem a R/3 . MARA: a.regist ros de dad os esperados: 57.000 a 4.600.000 (veja a Figura
05,21)
N so se esquelja de comparar a cardin alidade e 0 tipo de campo de chave esrrangeira
dos relacionamentos de chave est rangeira com aqueles especificados onlin e. LFAI: 3 registros de dados esperados: 11.000 a 44,000 (veja a Figura
05.22)
KNA1 : 3 r egistros de dados esperados: 9.600 a 38.000 (veja a Figura
Resposto do exerdcio 4 05.23)
Para a solucao desse exerctcio, visualize a tabela online zt zknal do siste ma R/3.
Nao se esqu eca de comparar a cardinalidade e 0 tipo de campo de chave As figuras a seguir ajudam a explicar:
estrang eira de cada relacionamen to com aqueles online. A cat egoria de tamanho de termine 0 requisito de espacc provavel para
uma eabela no banco de dados . Pressione F4 na caregoria de tam anh o de campo
Resposto do exerdcio 5 par a ver 0 nti mero de registros de dados que pode ser mant iclo em suas
categorias individuais cia tabela sem complicacoes. Essas complicacoes podem
Par a a solucao desse exerclcio , visu alize as tab elas online ztzt005h e zt zt005g
ser, por exemplo, uma reo rganizacao que toma-se nec essaria po rque 0 espaljo
do sistema R/3. Nee se esqueca de comparar a cardinalidade e 0 ripe de campo
maximo a ser reservadc para a tabela foi ex cedido, devid o a caregoria de
de chave estrangeira de suas chaves est rangeiras com aqu eles on line.
tamanho ma ntida.

Resposto do exerdcio 6
Para a soluc;ao desse exerctcio , visualize a estrutura .. ·t el e as tabelas online
zt zl f al e ztz knal do siste ma R/3 .
- • . • • .-. • .--."""". - -- - - - - ~ - - - .-"

704 'P REN D' EM 2101'S ,",PI' 'P~D1CE U ESPOSTAS ISPER.DNEM DOSTESTES EEXERdoos I 705

1_. B' h ~ .Id '"


Dio 6. "0 Data Dictionary, Porte 4 "
II '

~ '~ '-l*w ."" llOo"i.· ~ "' ';''; '''' ·';; ·....·~_·::i:irW-'-·.: - ".: :;': ~~.... -~"- ""
Ax -H::I.t'JnO - ~'-" .~ .......~

Resposta s do teste
1. Sim. Q ualquer alteracao no domlnio ex.ige que ele seja reativado. A
tabela tambem deve ser reativada e uma verifica~ao de consistencia
deve sec executada,

Re sposta do exercicio 1
1. N o utilitdric de banco de dados, de urn clique no bono Delete
Database T able. 1550 "derruba" a tabela, que com 0 con teudc sera
exclufda. Voce pede recriar a tabela pressionando 0 bono Create
Database Table. A tabela sen recriada utilizandc a versso ativa da
tabela. Voce pede utilizar 0 utilitario de banco de dados. Seja cau-
telcsc quand o fizer isso em uma tabela na SAP.

Dio 7 . "Definindo dodos no ABAP/4 •. parte ]"


Resposta s do teste
As solul1oes sao as seguintes :
1. A defIDi~o correta e ' Oon 1 I t bite.' Eta dev eria ter sido colocada
entre aspas simples e ela exige duas aspas cons ecut ivas dent ro dele.
2. A defmi~ao corret~ e 1+2 .2E03 ' . 0 caracrere de expoent e e E, DaO F.
e os decimais DaOsao permi tidos em urn expoente.
.......II!!!!!!!Iool L& L -.....,L~ •• • •-.-.-.-•••-
- .~ .,. _
706 APiE NDA EM 11 DIU AU r /4 .lPEHDlCI B: RESPOSTAS As PERGUHTAS DOS nsns EEX£RClCIOS 707

3. A definicac esd correta.


Dio 8 . "Definindo dodos no ABAP/4.. Parte 2"
4. A definiljio co rr eta e I OOOOOF I . Nio deveria haver u rn titulo x. Urn
mesmo mimero de caracteres deve existir e deve estar em letras Resposta s do teste
maitisculas.
1. A primeira constante predefinida e SPACE e 0 format e literal equiva-
5. A definic;ao correta e ' - 9. 9' . Lite rais numericos que con tem d ecim ais
len re e I " ,
devem sec envolvidos em aspas simples e 0 sell sinal deve predo minar.
2. Os tipos de insrruco es que podem ser u tilizados sac dados e tipo de
6. Valo res de POntO flutuante ni o pode m exceder 1£+308.
estrutura. O s definidos pelo usudrio sao definid os no Data Dictio-
7. Hnio eurn caractere hexadecimalvdlido. Os caracteres vdlidos sao A-F nary para facilitar a manu tencao e aju d ar a reduzir redundan cia.
e 0-9.
8. A defiaicic esta correta. V ma aspa simpl es e representada, Se escrita, Re sposta do exercicio 1
a saida se ria I. t ypes : dollar (16) t ype p deci mal s 2,
9. A defwc;ao esti correta. V ma aspa dupla denrrc de aspas simples e p01nt(16) type p decimals O. "pontes de carUo de c r~ d i to
representada. Se escrita, a saida seria I . I •
dat a: begi n of usd amount.
hotel - type dollar,
As sclccoes sao as seguintes: rent car type dollar ,
plane t ype doll ar ,
1. A defini,:;io correta e dat a st_f1(S)type c. Urn hife o Dio deve food t ype dol la r .
aparecer na definiljio de urn nome de varidvel. a caractere sublinhado end of usd_amount .
begt n of arnex pt ,
deve ser utilizado no lugar dele. hotel - type p decimals 2,
2. A defini ~o correta edata fl type c. a tipo de dado para. cara crere rent _car type point .
plane type point.
eC. food type poi nt,
3. A definiliio correta e data f l (20) t ype c. N ac deve haver urn espalio end of arnex_pt.
ent re 0 nom e de campo e iL espe cificacjo de comprimento.
4. as nomes de variav el nio devem iniciar com um numerico, e urn Re sposta do exerdcio 2
comprimentc nso epermicido com 0 tipo 1.A definic;ao co rreta ~ data Out put:
al t ype t •
1 3 4 5
5. A definict o corr eta e date cent type p decimals 1 val ue ' 55. 51 •
per 9 8 7 6
Urn hifen na c deve se r utili zado em urn nome de varidvel. U rn decimal
eespecificad c no valor, mas a adic;ao decimal s esd. faltand a. 0 valor Diq 9 , "Atribuil,;6es, convers6es e c6 Icu l...o"'sL" _
con tern urn decim al, mas nia esd. colocado entre aspas .
6. A definiljao escl correta. fl pede armazenar tres digit os porque Re spo sta s do teste
(L'Z)-1 • (Z'Z ) -1 • 3.
1. Vo ce pode utiliz ar eq au =. Par exemplo, move vara to verb. eo
m esmo que varb = ver a. au varb eq Yar d.
Resposta do exercicio 1
2. Os operadores e operan dos devem ser separados por espacos para que
re port ztz0707.
par amet er s: p dat e li ke sy- dat um def ault sy-derem, as variaveis possam ser compu tad as.
p-fie ldl ty pe c.
chckboxl as checkbox. Respostg do exerdcio 1
chckbox2 as checkbox.
radbutl radt obut t on group 91 dl!faul t ' X', 1. sperz
radbut2 radt obut t on group g1.
2. konzs
3. fdpos
..... .... -
!
-.-.-. -. - ..-.-.-.... ...... •••-.-, -
709 -~~
"PREMOA EM21 DIAS ABAP/. lPENDla B: RESPOSTAS is PERGUNTAS DOS rum EEXERdoos

4. msgid Dia 11. "Ta be la s inte rn a s"


5 . matkl
As duas coisas erradas no programa sio a declaracac de ubela de ztxt 005t Resp ostos do teste
e as aspas simples an tes cia variavel, 1and!. Declare a. tabela ztxt005t e remova 1. N a realidade, seu consultor de Basis configura urn limite para a
as asp as simples antes cia variav el 1andl . quantidade maxima de mem6ria estendida que uma tabela interna
pede alocar. Se voce exceder esse quantidade, seu pTograma alo cara
Dia la, "lnstruC;6es de co ntro le comuns" mem6ria privada do pr ocesso de trabalho e nao ma is sera capaz de
fazer roll out do seu programa.
Respostos do teste 2. Se voce fizer isso, 0 sistema alocara 8 KB da area de paginacao. A
1. A resp osta ea seguinte: mem6ria sera desperdicada e a paginao;:ao pod erf aumentar , resul-
case vi .
tando em baixo desempenho.
when 5. write 'The numbl!!r is five . ". 3. A insrrucao read ta bl e pede ser utilizada apenas para ler tabelas
when 10. wr; t e ' The number 15 ten.'.
int em as. Ela nao funciona com tabelas de banco de clados. Utilize
when ot hers. wri te 'The number 15 not f i ve or t en. ".
endcese. select single em vez dela.

2. Os operado res de strin g sao CP [ccntem padrao] e NP (nao contem Resposto do exerdcio 1
padrao).
N os sistemas anteriores, as convers6es cram executadas convertendo a
3. As [ r e S instrucees de contrale de p rcgrama SiD exit, continue e
partir do valor i direita do tipo de dado e 0 comp rimento do compone nte i
check:
esquerda.
• A instrur;io ex; t eutilizada para prevenir que mais p rocessamen-
t OS ocorram nas instruljoes loop, select, do e while e nas sub-
retinas introduzidas par fonn.
• A instrucic conti nue e utiliaada para pular tawas instruljoes na
passagem areal de loop e ir pan a final do loop . Ela pede ser utilizado
com as instruo;oesloop, se lect , do e wh il e.
• A instruci c check ecomo a instrucao conti nue mas pode cent er
uma expressao 16gica.

Resposto do exerdcio 1
report zt zl ool .
dat a: 11(2) typ e c.
do 20 ttees ,
write I sy-tndex.
do 10 t imes .
11 • sr-tndex,
writ e 11.
enddo.
endee.

A conversdc oco rre no programa da seguinte forma:


Nas linhas 9 e 10, havia uma conversao de c para n (de caractere para
I - -> C ZTXIOOI 000060 Ll • SY-INDEX.
numerico] e entao uma conversao de p para I (de pardmetr o para inteiro).
Na linha 16, havia uma conversao de p para I (de pararnetrc para int eiro}.

- .'1
~ ..~ Jl _I .3~. I _ .. I I . . . 11 .. I •••• I •• • • • ~. • . ~. ~. -. .. • • • • -. • • • • -. .~.~

710 I APRENDA E. " DIAS ASAP/' APblDICIUESl'OSTASAs PlRGUNlAS DOSTES1I5EE1Etd aos I 711

Dio 12. 'Tobelos internos oyon~odas. Parte 1" Resp osta do exerdcio 1
report ztz1301-
data: begin of it occurs 3.
Respostos do teste n(2) type n,
1. Sua alteralja o para sy- tab ix seria ignorada e as instruc;6es operariam f2 ty pe t ,
f 3(2) type c,
nalinha na area de trabalba . sy-tebt x ecomo sy-t ndex- modificando
f4 type P.
qualquer urn naa iria afetar as operacoes de loop. Alem disso, 0 valor end of it.
de sy-tabt x ereinicializado no endloop, e a pr6xima passagem do loop
prossegue como se 0 valor nunca tivesse sido alterado. it-fl · '40' . it-13· ' 00'. 1t -12 a 1t -f4· 4. append i t.
it-11 a '20'. It-13 .. 'SS' . it-f2 • 1t-14 • 2. append i t .
2. A tinicacoisa que sy- toccu pede dizer a voce que outras variaveisDaO
podem e se sua tabela interna esta inteiramente na area de paginafjao. sort 1t by f1.
do 5 t imes.
Se for zero. ela esrara inteiramente na area de paginaclo . Isso oaa tern 1t -fl a sy-tneex • 10.
nenhuma utiliz:lc;ao em urn sistema de producao, mas voce pede 1t-f3 a ' XX' .
acha-lc uti! durant e 0 desenvolvimento para confirmar sua expecta- 1t -f2 a It -f4 .. sy-tnde x.
, tiva de como a memoria e alocada para uma tabela inrerna. Se, par read table 1t
wit h key fl .. it-fl
exemplo, voce espera que a tabela interne este ja na area de rolagem, binary s earc h
mas sy-toccu contem zero (indicando que esd, na area de paginacao), compa ri ng f 2 f3 14
voce pode precisar dar ma.is uma o1hada em sua clsuscla occurs para transporti ng no fields .
if sy- sucrc • 2.
determinar se ela esti. correta. modify it i ndex sy-tabix.
e1seif sy-subrc <> O.
Resposta do exerdcio 1 in s ert it index sy-tab1x .
endt f ,
r eport ztz 1201. enddo.
t abl es ztx l fa l.
data it 11ke ztxlfal occurs 23 with header li ne. loo p at it .
write : I it -fl , 1t -f2, 1t -13 , it-14.
s ele ct· f rom zt xlfal i nto t abl e it. ·n~o codif1que urn endselect
endloop.
l oop at it.
write : I sy-t ebtx, ft - l andl , i t - regi a.
endloop. Re sposto do exerdcio 2
ul t ne .
it- la ndl .. ' US '. modify tt in dex 3 t ra nsporti ng land1. Eis uma maneira eficiente de corrigir 0 problema:
'it - regi o · ' TX' . IIIOdify it transporti ng regio where regia " 'MA ' . report ztz1302 .
l oop at i t . tables : ztx lfa1.
write: I sy-t abl x. t t -t andt , tt -reate. data: begin of it occurs 10 ,
endl oop. lifnr 'lf ke ztxlfal -1ifnr,
free 1t. landl Hke zt xlfal-landl.
end of i t .
sele ct l 1fnr l andl from zt xlfal into table i t.
Dio 13, "Tobelas infernos ayan~odos, Parte 2" loop at it.
write: I i t-Hfnr-,
Respostas do teste tt- tendl.
endloop .
1. Campos nu mericos (tipos 1 p e f ) saopreencbidos com zeros. 0 resto
dos campos a direita do nivel de controle sao preenchidos com
asteriscos.
... . . .-• • •-.-.-• • • • - a .. a a ........... a -a

712 , m HO' EM21 01'5 " "" W OlCEHESPDnASls PERGUHT,S DDSTESTEl EEXERdaos 713

Die ] 4 , II A instru!;oo wri te"


Respostos do teste
1. Voce deve desconecrar-se e conectar-se novamente no sistema R/3
para que as alterac;6es nos padroes do usuario tenham efeiro,
2. Uma m.is= de edi",o come" com urn v, quando aplicada a urn campo
numerico (tipos i, p e f), fazendo com que 0 campo de sinal seja exibidc no
ccmeco. Seaplicada aurn campo de caractere, a saida e realmenteurn V.
3. A adic;ao no- si gn, quando utilizada com variaveis de tipo i , p ou f,
suprime a saida do caractere de sinal. Em outras palavras,os numerus
negatives nao eersc urn sinal e apar ecerac como se fossem positivos.

Re sposto do exerdcio 1
1 report ztzl 40l.
2 write: / •. . . . +•• • •1. • • •+• • • • 2•••• +•• ••3. •. •+•••• 4'.
3 I ' Fi rst ' ,
4 40 'beceeee r-",
5 / 16 'January'.
6 /30 ' Fi rst '.

Die 16. IITecnices de formote~oo , Perte 2"


Di e 15. IITecnices de formete!;o o, Perte ]"
Re sposta s do teste
Respostos do teste 1. A inscrucl c back pode ser uti lizada para reeornar a posicsc de saida
1. As erss adi~6es graficas sao symbol s, ic on e 1i ne. 0 pro grams deveter atu al.
uma instrucl o i nclu de, i ncl ude <• • •>. par a cada urna das adicoes 2. U tilize 0 ski p sy- 1i net em vez de new- page quando quiser configu rar
graficas a fim de utiliza-la. P a r exemplo: uma n ova pagina e quis er urn rodape n a parte inferior dess s psgina
i ncl ude <symbol> for symbols , atual.
1nclude <1 con> for ico ns .
i nclude <line> for li nes .
Resposta do exerdcio 1
2. As duas adic;6es ut ilizadas com a instruc;ao re port sao tamanh o de
• A linha 3 comeca em urn loop do. Na primeira passagem par ele, a
linha e contagem de linha. As varifveis utillzadas para as adic;6es
instru~o write na linha 6 aciona 0 evento top-of-page. 0 valor de
devem ser numericas, po rqu e ccntrolam 0 tamanho da pagina.
sy-1 inno sempre contem a num ero da.linha atual da lista. Nesse ponte,
ele e configurado como a linha que se segue aos titulos padrao da
Re sposta do exercfcio 1 pagina. A linha 13arribui esse valo r avarifvel. 0 ccntrole retom.a para
report zt:1501.
i ncl ude <symbol> .
a linha 6 e Aeescrito. Em cada sucessiva passagem p elo loop, a hnha 8
write : / 4 sym f i ll ed square as symbol . ' square' , incrementa a valor de e a linha 9 co nfigu ra a linha de saida atual. Isso
/ 4 s)'lll) i ll e(dla mond as symbol , ' di amond' , resulta nas linh as escritas sucessivamente na safda,comecando na linha
/4 S)'lll f1ll ed ci rc l e as symbol , "ct rct e ",
segu in do as titulos padrao.
/ 4 syr'I-gl assei as symbol, ' gla sses' ,
/ 4 SyrI- penci1 as symbol , 'p enci 1' , • A linha 4 comera em urn loop aninhado do. A ca.da pass agem par ele,
/ 4 S)'1llyhone as syrnol , 'phone', a linha 5 configura a posi~ao de salda atual como igual a iteracao do
/ 4 S)'II note as syrrbol, ' not e'.
/ 4 S)'lIl)older as symbol . ' fol der' . loop atual . A posicac atual de salda e co nfigurada como 1 na primeira
714 APREHDA EM 21 DIAl ABAPI4 AP!NDlCE UESPO\TAS 'SPER'UHTAS DIB1IITES HXERdolB 715

vez.Na segunda vez e configurada como 2 e assim por diante. Isso faz
com que a linha 6 escreva a letra A quaere vezes , nas colunas 1-4.
Dia 18, "Modulariza c;oo: passa ndo pornrnetros
para sub-roti na s"
Dia 17,. "Modulariza~oo ; eyentos e sub-rotinas"
Respostas do teste
Respostos do teste 1. Os names de pardmetro que aparecem na instrucic fonn sao ch.amados
I. Nao. parJm etrosftmnaiJ. Esse termo eficil de lembrar porque formalpossui 0
radical form . Por exemp lo, na instrucao form s l using pt changing p2
2. Nao utilize stop nos seguintes eventos: i nit i ali zat1 on, at sel ect i on-
p3, a s parametres p l, p2 e p3 sao chamados param etre s formais.
scre ~ n output, top -of- page e end-af-page. Tecnicamente, ele pede
2. Pas sar uma varia vel do tip o de dado errado ou comprimento para urn
funcionar com tnp -cf-paqe e end- cf-paqe se voce nao utilizar as
pargmetro digitado causa urn erro de sintaxe.
insrrucoes wri te dentro de end- af - sel ecti on, posteriormente.
3. Para ser preciso, urna variavel somente e conhecida dentro de urn 3. Nova mern6ria Ilio ealocada para a valor. U rn pont eiro para a posic;ao
original da memor ia epassado, em vez disso. T odas as referencias para
prog:ama depois do POntO em que e definida. Por exemplo, se vo ce
definisse uma variavel na linha 10. seria capaz de acesss-la na linhas o parimetro sao referecciasa posic;:ao original cia memoria. As at-
terac;:6es na varia-vel dentro cia sub-retina atualizam a posic;:ao original
11 e mais tarde, mas nae nas linhas 1-9. No case de urna definiciof o-
cal , voce po.d: acessar a vers ia global da variavel em qualquer ponte da m em6ria imediatamente.
antes da definicgolocal, 4. As duas adic;:6es usi ng f1 e changing fl passaro fl par referencia c-,

elas SaO identicas na func;:ao. A ratio pela qu al as du as existem eque,


Resposta do exerdcio 1 utilizadas adequadamente, elas podem dccumentar se a sub-retina
. REPORT ZTZ1701 NO STANOARD PAGE HEAD I NG . alterari urn pargmetro ou na o.
TABLES ZTXLFAI .
PARAMETERS P_LANOl LI KE ZTXLf Al- LANOl.
Resposto d o e xercicio 1
INITIALIZATION. A seguinte saida e gerada:
P_lANDl · 'US'.
Top of page, f la g · S ct r = 1
START-OF-SELECTION.
PERfORM CREATE_REPORT. i n Start -Of-Sele ction
pi :::
FORM CREATE REPORT.
SELECT * FROM ZTXLfAl WHERE WDI • P lAMD!.
A se'ia-o de inicializacfc Ilio e executada porque nenhurn criterio de
PERFORM WRITE REC . - seleliao esta pr esence no programa. 0 evenrc Sta rt-Of-Sel ect i on eexecutadc.
EHDSELECT. - Quando 0 programa obtem a primeira instrucao wri te, 0 controle no programa
EHDFORM. e passado com a evento Top-of-p age . Quando 0 evento Top- of -p age esd.
f ORM WRITE_REt. complete, 0 controle e passadc de volta para 0 event o Start-Of-Select ion.
WRITE: I ZTXLFAl-LIFHR. ZTXLFAI-NWI. ZTXLFAl -lAMOl.
ENDFORH.
Dia 19, "Mod ula rizac;oo: mod ules de funcco,
TOP-Of- PAGE.
FORMAT COLOR COL HEADING .
Parte 1"
WRITE: I 'Vendors wit h Country Code ' . P lANDI.
Ull NE. - Respostas do teste
1. Verdadeiro. Vo ce nunca precisa especificar u rn valor para urn pa -
ra-metro de imporracao que tern uma proposta.
2. Verdadeiro. Voce nunca precisa codi ficar param et ro s que sao expor-
cade s do m6dulo de fun~ao.
::A' ..... A.-I""'" .... -._.... -I . - .- • • • •-..~ • • • • • • •- . -. -• • • • • . . . - - - - - -- ~

716 APRE'D' E. 21 01'5 ABAP/4 APt'D'" So RESPOOAS IsPrn;uHTAS DOS 15TES'ElERCiaDS 717

Rasp.osta do exercfcio 1 2. Sim, as caracterfsticas de urn dominic vinculado com elementos de


dados tambem sersc alteradas, porque as elementos de dados em urn
Q uando programa executa, a tabela interna e pre enchida e 0 modulo de
0
dominic herdam todas as propried ades de urn dominio que sao
£un~ao e chamado. Urna janela pop-up com 0 coareudo cia tabela intema
referenciadas.
apar ecerd. D ep ende ndo cia entrada escolhida pelc usuario , eta entao imprimira
utilizando a insrrucic writ e. 3. A regra primaria para eseabelecer urn relacionamento de chave es-
trangeira e definir e vincular urn relacionamento entre multiplas
tabelas.
Dia 20, "Modulariza ~co: modules de funcco,
Parte 2" Resposta do exercfcio 1
report ztz2101.
Respostas do te ste tables : mara , tOOlw .
• Selection parameters for BC»ls
1. As definiJ;oes de clades de dais dos parametres devem ser idecticas. select ion -screen begin of li ne.
2. Utilize 0 ca.rninho de menu Function Module-Release-Cancel Release. se lection-screen CCllTITlent (33) text-beer .
parameters : bom like mara-matnr.
3. . 0 programa sera. abortado e resultard urn dump curto que tern 0 eITO spras l 1ke tOO2-spras .
de tempo de execucto RAISE_EXC EPTION. selectten-screen end of line.
selection-screen skip 1.
4. Elas DaO devem ser utilizadas dentro de m6dulos de fun93.0. Em vez Setect-epttens : matnr for mara-matnr,
disso, a insrrucio rai se deve ser utilizada porque eta ativa 0 charnaclor werks for tOOIw-werks.
para confi gurar 0 valor de sy- subrc no retorno.

Resposta do exercfcio 1
I" function z_tz_dh .
2 • • .-- ------ - - --.-- - --- - - - - • • - -. ------ -- .-- •••--------- •• - •••• •
3 · ···local interface:
4·· lKf10RTIHG
5 •• VAlUE(Pl) TYPE 1 DEFAULT 1
6 •• VAlUE(P2) TYPE I
7·· EXPORTING
8 •• VAlUE (P3) TYPE P
9·· EXCEPTIONS
10 •• ZERO_DIVIDE
11 .... - - - - - - - - - - - ••• •--- - - -- --- - - - - - --- --- - - - - - - - - - - - - - --- - ••- ---
12 if p2 • D.
13 rais e zero _dlYide .
14 endlt.
15 p3 • pI / p2.
16 endfunction.

Dia 21 , "Telos de sele<;co"


Respostas do te ste
1. Os dois tipos de marchcc de configurado sao ffsico e icgicc.
Eisicamente, os dados sao armazenadcs em uma tabela separada.
Lcgicamente , os d ados sao gerenciados pela visualizacao de banco
de dados, qu e ~ a mesma que 0 armazenamento tra nsparente.
· I • •·• • ····.··········-· . w... --- - - - - . ---- - ~ - - -

indice
A_ _ tutorial ,63
tela inicial
acrescentando campos a
tabelas, 126
ABAP/4 ajuda, obtendo, 6S Active, versoes de tabelas
lisn gem de sintaxe basica, prcgramas, comparan do com
230 p rocu ran dc, 66 Raised,2 17
primeira listagem de u tiliza~es, 50 comparando com tabelas
pmgram~ 49
ABAP/ 4 Key Wor d Doc, de: banco de dados,
segundo prcgrama
ccm and o (men u 2 19-220
listagem, 72 U til ities). 520 descri ct o, 2 16
listagcm revisirada, 263
ABAP/ 4 T ext Elements: adapt2!roc:s automaticas e
lisu gem simplificada,
Change Ti tle and iostru'iao move. 285-287
76 Heading. tela, 503 ad2 pta~oes de comprimento
ABAP/ 4 Dictio nary: e tipos de dado.
abordagem bottom-up
Maintain Technical
dominios, criando, instru'.?o move, 285
Setti ngs Screen, 189
110- 111 ada pta~6es de tipo e tipos
ABAP/4 Editor
elementos de dadcs, de dados, instru~o
conerole Help (barra de criando, 11 3~ 11 6 move, 286-287
[erramentas
tabelas, criando, 107 adi~ao arre don dada,
Application),.58 instru~o write, 470-471
eabelas transparenres,
tela Edit Program, 51
criando, 117-122 a di~ao bina ria de pesquisa,
2juda durant e edi ~a o abordagem top-d own, instru~o read table, 359
de cc digos-fc nte,
tabelas adi,?o de campos
65 correspondentes, 421-422
adicionando campo a,
ajuda Fl, 64 adi~ao decimal, instru'.?o
122-113
ajudaR/3 Library, 64- crian do, 107 wri te, 470-471
buffers Cut and Paste; adi~ao e correspondences,
Accou nting, menu,
59-60 instrucoes, sintax e, 299
comando Accounts
cont rcles de barra de adi~o monetiria, instru~ o
Payable, 13
ferramenw wri te, 471-473
acessand o
Application, 57-58 adi~ao. subtr.l,?o,
biblioteca de fun~o. 586
contrcles de b21T2 de multipllcaeio, divisao e
Ierramenta urilitaria de
ferramenw . banco de dados, ccrrespondentes,
Standard, 52-56 218-2[9 instru~6es, listagem, 299
fun~6es, 61-63 adi~Oes graflcas, tipos, 697
now de versac, 96

hllpJt-.cumpus.com.br
720 ! AP REND A EM 21 nus ABAP/4 INDICE 721

a d i ~oes, descricfo, 236 alccandc dados glcbais, 620 A pplicatio n, berra d e at selection-screen, even to, buffer em dados no bl occs (elementos de
Adm inistration, ccmandc alter.tndo ferramentas, 16 &55 servidcr de aplicativc se le~io de tela),
(m enu Tools), 21 fl. ucilizalj6es, 715 batao Foreign Keys,.liS at user-com mand, evenro, • no Open SQ L, 36-37 dcscric;,io, 667
aju da Fl nomes em eabelas, 125 bo de O bject Log. 230 655-65& definindo 0 sistema Rl3 botoes de 0 P~oJ efeieos em
campos. adiciorando a, padrces do usuf ric , 712 botio Technical Settings, ativando com o, 26 caix2s de grope, 51
135-13 6 parametres, descricrc, 193 m6dulos de funlSio, portabilidade de ecdigc, buffer em registro unicc,
docu m enta~ io de 607 criandc bcroes em, 656 &04-605 36 208-209
elementc de dados, 113 pane de interface. 623-627 Applications, area do menu .objeros, descri~o, 107 prcjeeandc e buffer em tabelas,
elemen tos de dados e, 102 ambiente de texto, principal , 10 atribuip,o di.n.amica, desenvolvendc, campos u ti lizando, 196-213
inserindc linh as em defini~o, 380 APPLO, classe de dados , simbolos de campo, Valu. Tobie, 165 atual izandc Infc rrm cees,
u belas, 130 analise de programa. descri~o , 194 309-310 suporudos pelc R/3, 21 201-204
links de hiperrexto, realizando, 319 ar ea de tela de m enu atribuip,o. ins tru;6es barra de sta tus , 17 buffer em sincron izacsc,
adicionando.1 36-138 aninhandc estrutu ras, 172 principal . 17 clear barns de ferra m entas 197-201
tela ABAF/4 Ed itor. Edit ani nhando loop s do, 713 Command Field, 19-20 corn adic;ao, 289-290 Ap plication (ABAP /4) , bypass de buffer, 204
Program, 64 ano s fiscai s, pertodos de In terface Menu , 17-19 sintaxe, 287 57-59 eecsrics, 211-212
tesrandc , 136 publica;ao, 439 ar ea de ~balho de tabela codificando.291 Application, 16 deslocamencc de buffer,
a juda, po ssiveis entradas, aplicarivo, areas, c6digos padrio,descrlc;ao,698 descri~. 286 bode de Log de 210
150 para , 690 area funcional , move, 291-303 c bjetc, 230 resumo.212-213
ajuda, sistema de ap licativo.dadosde conhecimento, 9 adaptac;oes bot i o Foreign Keys, resumo das ccnfiguracees
ABAP/4 Edito r defmi~o, 97 Area Menus. tipo de objeto, automancas.292 148 tecniC2.!,221-222
ajucUF l , 64 tipos , 701 &91 regras de cc nversjo, bcu c T echnical tecnicas .204-205
eodigcs-fonte, ajuda apl icativos , conjuoto areas de pagina;ao. exibindo, 295 Setting s, 193 tipcs de uso de buffer
ao editar, 65-66 padrio, 7 sy-toccu e, 710 strings de campo, criando botbes em, 656 cheios, 206-207
Initial Screen, 65 ap pen d lines , inst.ru'iao, areas de trabalho expl fcitas, 297-303 Standard (ABAP/4 genericcs, 207-208
Rl3 Library, 65-66 392 77,354 subcampos, 296-297 Di ctionary),67 registrc unico, 208-209
tut orial,64 app end sorted by, areas de trabalhc imp licitas, move-corresponding, Standard (ABAP /4 resurno, 209-210
ajuda Fl instrUc;ao, 413-417 354 sintaxe, 303 Editor) buffer, slncronizacio
campos, adicionando, A ppen d Structu res, tipo de areas de trabalhc, exp llcitas arua lizando tabelas com cont roles, 52-53 descricsc, 197
135- 136 obj eto, 691 versus im plfcitas, 354 buffer. 201-204 recu rso Find and intervale, configurando,
elementos de dados e, append. ins tru cio, e tabelas areas fu ncionais (m6 dulos ) AVI select, in s tru~a o, Replace', 54-57 200
102 int ern as Ionres de inf or m2'ioes proc essamen to, 74 Standard, 16 buffer. urilizaljao completa,
inserindo Iinhas em adic;:io de ocorre ncias, em, 10 Co mmand Field, 19 20&-207
357-359 visio geral, 8 buff er, uriliZ2~o generics ,
eabelas, 130
links de hiperte xrc, sin taxe, 354 areas trahalho de tabela, B Fin d button, 280
barns de menu, 16 207-208
76-78, 354, 564-566. 698 Back, controle (barn de
136-13 8 APP Ll, classe de dados, barras de tfrulo, 16 bu ffers Cut and Paste
[erramentas Standard).
testa ndc, 136 desc ricio, 194 arredon da m en to, Basis, area.do menu (ABAP/4 Editor), 59-60
ABAP/4 Editor, 53
ajuda F4, chaves APPL2, classe de dados, especific ando, instru 'i:\o principal, 10.20-22 buffers de programs,
wri te, 482-490 back, ins tru ;io
estran geiras e, 150..1 51 descri cac , 194 Batch Data descri;ao, 236
sinraxe, 537
ireas fun cionais, 10 Appl ication Logs, ti po de at end of, instru'iio, Com mun ications bypass de buffer para
440-441, 448-449 utiliuc;oes,713
diilogos de manuten';i o. obj eto ,691 (BDC) , chaves tabelas, 204
Back, tech. pression.ando,
134 applicatio n, barn de at firs t, insttuc;:ao, 440-444 estrangeiras e, 152 bytes de preenchimeato,
at last, i ns tru ~o, 440-444 75
dominios, 111 ferrame ntas (ABAP/ 4 bibl ioteca de fu n~o , 301,303
banccs de dados
alinb3m ent os, 30J Editor ). 57-59 at new, ins truc;io. 444-447 d es cri ~o. 602
..... I

722
I _I I

APlEN DA EM21 DIAS AUP/4


I - .~.- • •~ .~ .- .- • • - . -. -. -• • • ~ • • • • I I
...
INOlO' I
~
723
1
C
cain de didlogc SAP Rll, reseandc, 136 ca.m.pos-chave
descricac, 156
ScreenCams, instalando ,
44
candidatos-chave.
156-157
I
mensagen s de erro, alterandc 0 comprimento
cabecalbos e rodapes de de, 10<, 127-128 padri o, instrU;io read utilitirio C opylt, J24- 125 vaU~ de dados,
psg ina
640-6 41
caixa de se!e;:io, parametr o, campos de quaneidade, tab le, 370
tabelas de textc, 157-160
centralizando cabe;al.bos de util i.zand.o para, I
centr.dizando,516 pagina, 516 657-659
format ando c imprimindo
670- 671 requis ites, 170
campos mcneurios,
I: Cancel, ccntrole (barra. d~ chamandc m6dul os de vertl5~d o, 144-145
cains de gro po, efeitc s de
cabecalhos manuais de bctoes de o p~ o. 51 168-169 ferrame ntas Standard), luD(io, 609-6 13 cbaves estrangeiras
pagina, criando,
519-52 0
cabecalhc s padrio de
calcu lando datas, 308-309
calculos, execu ta odc
chaves estrangeiras,
detennina~o
ABAP/4 Editor, 53
cancelando a versao do
m6 dulo de fun~o, 629
dado. glob';', 619 -622
execu tandc urn exemplo,
611-6 13
adaptadas, defini~o, 163
chaves estrangeiras I
instru~o compute auro mdrica de. 149-150 compostas, 152·1504
pagina, opera dores para, 305 controlan do a ex ib i~o cand idatos chave, des cri~ao, instru ~ocall function , chaves esrrangeiras
arm azenandc , 514 de, 71 156 609-611,613 constantes, defini ~o, 163
sirnaxe, 305
cabecalhcs padrio de inStfUliOes add e convencees par:l. auibu i~o cara ctere, literals de string Change Document Objects, chaves estrangeiras
psgina, criando, corr espond ences, de nome, 105 de, 239 eipo de objeto, 692 genericas, defmi~o, 1 61
513- 515 sin taxe, 306-307 criando dom in ies, 103 caractere, operadores de Change Vendor. In itial, chaves pri.marias . indi ces,
cabecalhos padrao de calculos , reallzandc elementos de dados, 102 string de. instrU~o if, te la, 12 184
pagina,tradualadc, adicione e adicicne - instru~i o select. em
321-326 change. documentos, Check. Table, proposta,
515-517 adi~o de eabela, 430
caractere, tipcs de dado 21 8-220 campo Value Table
instru ~6es
cabecalhcs padrio de correspondences, pcntos decima is, 701 descri~,2# change, m od o, defini~o, 5 J como, 166-167
pagina., utiliundo sia taxe, 306-307 refereaci a, defini~o, 169 movendo de um.astring cbaves estrangeiras Check, controle (barn de
varifveis em, 517-519 data, 308-309 rabelas, adicionando a de campo para outre, achpada, d efini~o, 163 [erramentas
csb ecelhos padri o de abordagem top-down, 300-3 01 ajuda F4 .. 150-15 1 Application), ABAP/ 4
insrru~o compute.
pagim, op eradores para, 305 122-124 caracteres eceueuado s, campo Value T able. Editor, 58
visualizando e classifiando, Iistagem, 164- 165 check, instru~o
ins tru~o compute," acrescent ando , 126
modificando, sineaxe, 305 inserin do , 126 380- 381 como prcpcsta Check comparando instru ¢ es
514-515
call function, instnl~a o , tabelas, excluindc de, 127 caracteres cu.ringa, tela Table , 166· 167 exit e continue, 341
rcdapes de pagina,
609-611 Value Table Search/Replace, 55 pr opcsitc, 165-166 instru~ao loop at e, 364
criand o, 520-523 chaves estrangeiras e, caracteres especials, t ela cardinalidade de. 154, 658 siataxe, 340-341
inserin do
cebecalhos e rodapes, auromaricamente, 613, 164-165 Search/Repla ce, 55 colun a CheckT able, 149 ueilizacces, 708
formatando e como proposta Check caracteres hexadecimais, 706 cornpos~, 152-15-4 Check.Table, coluna (tela
649-650
imprimindo Iiseagem de parimetros, Table , 166-167 caracteres inv aIidos em constance, defmi~o , 163 Dictionary:
cabecalhos manuaisde 6 12 prcposito, 165-166 no mes de programa, 689 criando, 1-46, 1049 Table/Structure ]
pigina,criando, 519-520 sineaxe, 610-611 sem chaves cardiaalidade descri~o, 144, 656 chaves estrangeiras e. 149
eabecalhos padrio de camadas (tien), dd uu(io, 23 esrran geiras, 168 chaves escaogeiras, 15-4, determina~o aurcmatica fun c;6es de. 167-168
pagim cam pos cam pos de referenda., 658 de camp os, 149-150 CIA, CN, CA e NA,
~azenando,5 14 descri~, 658 genericas, d efini~ao, lisbgem 322
ajuch Fl defiD.i~o. 169
criando, 513-5 J5 cam pos d e sist ema. data nlores de X, 155 161-163 classes de dados, 194
.2.dicionando, 135- 136
m.duundo, 515-517 links de hipenexto , areal e tem po . 244 valores de Y, 155 programas em lote e. cJassificando instnJ~o
utili zando variaveis case, instru~o. sintaxe. 152 select em adi;a o de
adicionando, . cam pos empacota dos,
em, 517-519 comp ri me n tos de saida. 326-327 testando, 149 "'bela, 428
l3 6-m
visualizan do e CA17 F lows, tipo de tipos de campo, 156-160 clear. instru~ao
links de hiperte:l.:to, 463
modi ficando, objeto , 691 carnpos-chave, 156, com adi~o, 289-290
solucionando cam pos m on ecl n os. 168
514-515 CD-ROM 157-160 sintaxe, 287, 0407
p roblemas, 138 campos numericos, 299, 710
~'
:0;

i!a
••••• A A A A A.a a a • A • • • ~ • • • ~ • •- , . -. -• •-.-. • . -.- • • • • • • • • • - - - - -

724 I APRE II DAEM21 DllS HAPH i IHDlCI J 725

cliente de logon, defini£io, AJ3AP/ 1, Editor; Edit Com mand Field, con trole bufferizando tabelas, d efini~o. 27 crdem de precedencia
Program. tela. sjcda (barn de Ierramentas 196-213 c ontU1ue) tns tru ~io para tipos de dado,
32
clien te/servi dor de duas enquanrc editando , Standard), A:BAP/4 campo Size C ategory. companndo com 317
eatnad2s,descri~o,23 65-66 Editor, 53 195 instrUl;oes exit e sin taxe, 316-317
cliente/servidor em tres corcendrics, parirnetros como adi~o de leon e. ceaarios com rabelas check, 341 while. sintaxe, 336-337
1:, 609 instru ~o write, 501·5 03 de usn de buffer, instru~o loop at e, 364 contrcle, iaterrupci o,
eamadas
des cri~,23 pesquisando e como adi~o de linha, 211-212 Iistagem, 338-339 prccessamento
robstiruindo em, 56 instru~o write. 5 03~506 classes de dadcs, sintaxe, 338-339 in stru~o on change of,
RJ3 arquieetura de sistema
servidor de aplicativc, collect, instru~o como adi~o de simbolo, 193-195 utiliza!;Oes, 708 451-458
24-25 combinando linbas instrU!;ao write, 500-501 deslocamentc de controlando a sequen cia do loops e, 452-0454
servidcr de confonne elas sao como adi~o de tcxto, buffe r, 210 programa utiliz.a.ndo, 454-458
apresenta~o, 24 adicionadas a tabclas instrocrao sort, 379·3 82 ntimerc de exteas ces, comparando com as instru!;io sum, 4049-0451
servidor de banco de intem as,lisugem, comparaliOcs 195-196 instrUC;Ocs exit, insuuC;6e:s at first e at
dados.25 418-419 instrUc;ioif, conversces tlenicas de usc de continue e check. 304-1 last, 44Q....«4
servidcres, sintax e, 04 17-0422 de dado s de lieerais buffer, 20+206 instru~o check, 339-3041 instruc;oes at new e at
configunndo, commdos durante, 317-319 tipos de usc de buffer, insauc;ao continue, 337-339 end, 444-449
25-26 menu A ccountin g, crdem de precedecciapan 205-209 instroc;io exit. 327-328 controle, ineerrupcces,
clieare/servidor single-tier, Accounts Payable, 12 eipcs de dados, 317 resume, 221-222 controle Help (barn. de descri~o, 440

menu Gore, Text comparac;Ocs e suas formas confi gurando matchcodes ferramentas Standard), con trole, nIveis de,
dcscricrao,.23
Cl iente/Servid or, 22·2 3 Elements from th e altemativas, 316-317 lo gicam en te, 659-660 ABAP/4 Editor, S3 descri \;io. 445
clientes, sistemas de AJ3AP/4 Edit or, comparando adic;:ao, confi gur.mdo padrOes do controle, instruc;oes conversees de dado s
inrtaIac;:ao R./3 c~ 36 670 instru-ra o read table, 373. usuario, 280 case, sintaxe, 326-32 7 insuucrio if
Clipboards, AJ3AP/4 mcnu Program 375 consistincia, v erifi~6es. do exibindo. 319
Editor, 59-60 C npy, 77 componcntes, grupos de utilizando a fcnamcnta sintaxe, 328-330 Iiterais duran te
Codepages. tipo de objeco, Save As, n fun,.o, 638-640 u tilittria de banco de . terminan dc loops co mpancr6es,
692 menu System comprimento fixes, ripos dados, 226-230 infinitos, 330-332 317-319
codificando Create N ew Session, de dado, descri~o, 244 em nametab, 228-230 varying addition, instrucrao move
express6cs matem:i.ticas, 76 comprimentos de saida papel de nsmeeab, 227-22 8 332-334 adapta¢es
306 Status , 20, 95 campos de DDIC, 462 constantes. 261·262 vuying/enddo autom:i.ticas,
ins~ao write, 342 menu Tools campos empacotados, CONSTANfS, instruc;:ao, additi on, 334-335 293-294
instrUc;oes de ·a ttibui~o, Adminism tion, 22 462-463 sintaxe, 262 elseif,320 regras de convers j c ,
291 D evelopment desaic;ao, 461 consu ltorcs, conhecimento if. 315-326 exibindo, 295
c6digo Workben ch, 12 compute. instnl~O fun cional da :irea e, 10 ccnversj c de dados de copiando
areas de eplicaeivo, 690 menu U tilities operadores pan, 305 ccatag em de Iinha, adicrao literal durante dados em tabelas intcrnas ,
colocando comentirios ABAP /4Key Word sintaxe, 305 e lisugem de umanho de comp aracees, 391-395
em, 85 Do c, 534 Concatenate, co ntrole 1inha, 510 317-319 m6dulos de fun ~io, 640
exemplcs, cortando e Help on, 65 (barn de [erramentas instrul;io rcpon, 508-513 conversees, exibindc, tabe las, 124-125
colando do sistema de comentarios Applica tion) , ABAP/ 4 rodapes,criandc, 319 Copy To Buffer, con trc le
ajuda, 65 c6di go, substituindo em, Editor, 58-59 520-523 opcndores de string (barn de ferramentas
pcreabilidad e de, 36 85 confi guracoes tecnicas sintaxe, 508·5 09 de caractere, 321 ~3 2 6 A pplication), ABAP/4
c6digos de tranSayao, codigo- fome, parimetros exibindo, 193-213 utili.ando,509-511 operado res logiccs Editor,S8
e, 609 . bufferiz.ando resumo contextos do usuUio para c peraados, Copy, co man do (menu
definicrao, 19
ccdigos-fonte Command Field, 16, 19-20 de tabelas, 212-213 alocando, 698 316-317 Jlrogram), 77
A A I I I I " I .. I I .-a a-. a-.-.-••-.-.-•••••••••
726 I "PIEND'" EM 21 DllS AUP/4 IHDICE 727

Copylt, utilitirio, ubeI",,106-107 Data Browser: Table:: Decimal Places , campo (tela Delivery CW~ campo {tela d ialog o com 0 ciien te,
CD-ROM, 124-125 tabelas eraasparentes Selection. tela, 70 Dictionary; Maintain Dictionary: programa, _conven~6c:s

carpa (tabela internal, 350 abordagem Data Dictionary (RIj Data Domain). 109 Table /Sttucture: Change pan atribui~o de: nome,
Create Foreign Key, tela, bonom·up.1t7-122 D icti onary) defini~6es de dadcs dentro Fields),l1('-117 691
148,163 solucionando =npos de m6duJos de fun~o, desativandom6dulos de: diaIogo, passos
Create: New Session, problemas. 119-122 comprimeneos de 605 fun~o. 604 defini~o.28
comando (menu tela Dictionary: ,arch, 462 definindo descartaadc versoes iniciando, 29
System). 76 Table/Structure: ccntrolandc a constant es, 261-262 Revised de tabe las, d idlogo , pro gramas, 46,691
criando Change Fields, 117 exibi~o, 71 puametros pan. 22)-224 Di ctionary : Chan ge Data
botoes na barn de curses de treinamen to, sites defuli90es,exibUldo,70 interfaces, 605 describe able, instru~ao, Element, tel a, 112
ferramen tas d. Web, 10 descricac, 67 strings de camp o sintaxe, 389 Dictionary: Initial, tela, 67
Appli cation, 656 C ut and P aste, bu ffers estrururas, 68 instru~o de dados, descritioes de campo, Dictionary: Maintain
campos, dominios, 103 (ABAF/4 Edi tor), 59-60 objetos 263-266 pesquisando, 82 Domain, tel a
chaves eseangeiras, 146, C ut, controle (barra de ativando, 107 instro~o tables, desempecbo, aprimorando campo Data Type,
H9 [erramen tas impcrdncia de, 96 268-269 buffer em resume de 108-109
domfnios Applicati on ), ABAP/4 posi~o de. 67 instru~o tables, ubclas,212-213 campo Decimal Places,
abordsgem Editor, 58 tabelas , 68, 70 int en gin do co m buffer em tabelas, 196 ~2 04 109-110
bottom-up , 110.111 rabelas e'estrutu ras, select, 269-270 cerWios com ubelas de campo lowercase Letters,
incluindo na Listagem insuu;ao tables, usa de buffer, 211-2 12 109-110
tela Dictionary: 0
M:ain~ Domain, de string de.campo,265 visibilidadc, 270 deslocamento de buffer, campo Output Length,
da dos
108 ripos de dados , mapeando utilizando como 210 109-110
de tabelas, copiando,
WTSJ4Sieutiliz.ando, pan ti pos de dado vu1aveis do ripe -__ t~cnicas de usa buffer, campo Shon Tex t, 108
124-125
104-105 ABAP/4 ,246-247 char, 267-268 204 -205 crian do dominios, 107
defiaiado, 566-568
elementos de dados utiliz.a¢es,67 sub-retinas tipos de us o buffer, Dictionary:
exibiadc
aboedagcm Data Elements, ti po de definindo e listagem 205-209 Table/Structure, tela,
modificando e,
bcrtcm-up, 113-116 objetc, 692 de chamada, 558 desenbo de Iinha, care cte res . coluna CheckTable, 149,
127-128
solucionando Data Mo dels, tipo de em grupos de funCiaO, defini~ao, 503 167
ucilizando seu pr6prio
probl emas, 115-116 cb jeto, 692 627-628 exibindo, 506-507 Dictionary:
prognma. 135
tela Di ctionary: Data Type . cam po (tela tipos com a instr:u~ao desenvclvedcres, Table/Structu re :
globais, cipos, 619
Change Data Di cti on ary: Maintain . type, 270-272 conhecimento funcional Change F ields, tela, 117
linhas inserindc em
Element, 112 Domain),108.109 varii veis, 714 de area e, 9 Display Symbols. Hsta gem,
tabelas
grupo s de ripe, 274-275 data, cilculos, reallzando, inStru~o de dado s, deslocamento de buffer, 500·501
navegadores de dados ,
indices , 187-189 308-309 u""""",do,241-243 descri~o, 210 Display: C hange, ccnercle
utiliz.ando, 128-131
indices secundsrics,
solucionando
data, campo de
sistema ins trU~o parameters, Development Classes, tipo (barn. de ferramentas
diretrizes para, 189-190 sy-datum, 244 utilizan do, de objeto, 692 Application), ABAP/4
problemas, 129-130 <
m6dulos de func;ao, 601, data, formatando, instroc;ao 247-254 Development Workbench Editor, 58
validandc com a interface
613-615 write, 479--481 tipos de dado s, area de menu principal, 10 distin ~ o entre maiusculas e
do ususrio, 145
objeeos raatchcode, DB Utility: Transparent 243-247 compon entes , 44 m inesculas. Iirerais de
dados e estattstica, lis tag em,
660-665 Tables: Database deixaadc cbjeecs de string de cara ctere, 239
567
programas Para m et ers , tela, 231-232 eventc s, 55-4-557 desenvolvimento, do , instnJ ~ o
dados globais
processo para, 48-50 deci din do quando urilizar sub-retinas, 561-563 exibindc , 66 sintsxe, 328-329
alocando, 620
solucionando navegadores de dados, delete, instn1~o, slntaxe, Dialog Modu les, tipo de rerminando loop s sem
tipos .619
problemas, 50 134-135 408-409 objeto, 692 fim, 330-332
• -
728 APRENDA EM 21 DIAS lBAPI4 INelCE 729

varying, adi'iao, 332-334 relaeorios com telas de defini~o, 514 estru turas, testando e indices secundsrios, indices, 187
varyinglenddo, adi<;io, selcljio,557-558 elementos de tela e, 669 modificando conteudc 190-191 Indices secondaries, 186
334-335 rornando padrio para ~uzindo, 515-517 interne de tabela, 388 linhas em tabelas intemas, nameeab da ferrsmenta
do, loops, 713 inicio cia selecfo, elementos de texto, estru turadcs, tipos, 408-412 utilicl.ria de banco de
documentando excecses na 551-553 annazenando, 514 utilizando, 272-273 m6dulos de fun~o, 640 dad05,227
interface do m6dulo de Dup licate Line, contrcle elseif in$tnl~o. 320 evento de inicialiZ2~o, tabe1as,125,232-233,705 o log de ativa~o II. partir
funl'jio,648 p649 (berra de ferramentas enddo, listagem 334-335 sintaxe, 654 exemplos de tabela de dentro do utili tario
Documentation Mo dules, Application), ABAP/4 eadform, instJut?o, eventos relacionemeneos de chave de banco de dados,
tipo de objeto, 692 Editor, 59 utiJiu~o de, 558 des cri~o, 519 primaria, 439 230-231
Domains Display, tela, 669 end-of-page, evento, efeitos da safda, visio geral, 438-439 objetos de
521-522,530 verifica~o e parada exibindo desenv olvimenco, 66
Domains, ripe de objeto, . E Enter, contrcle (barn de dentro cia listag em, caracteres de stmbolos, parametres de
692 edit or- call, instru!jao,
domfnios ferramentas Standard), 555-556 leones e desenho de arma zenamento
sintaxe, 395·397
altera~es n~ ARAP/4 Editor, 53 efeitos na instru!jw writ e, Iinha,506-507 dentrc do uciIit:irio de
elementos de dados
earaceerjsticas, 717 erros em m6dulos de 550 confi.gura~oes de teda de banco de dados,
alt~ra~oes para 231-232
campos fun!jio, corrigindo, envolvendo condi.liio ou fuo!jao, 19
caraceerfstico de
alteraado 0 640-641 loops denrrc de configura¢es tecnicas regras de ccaversac na
modificando vinculou
ccmprimentc, 104 escopo da pesquisa, I istagem, 552-553 pan tabelas, 193 documenracsc de
com, 717
criando, 103 configurando, 55 Iistagem do Basis, 546 buffer, usa de, 196-204 palavra-chave do
cardinalidade, descdcac,
convencees para escrevendo Icones na HSb, programas de driver e, 547 buffer em resumo de ABAP/4 ,29 5
658
atribuiliio de nome, Iistagem, 501-502 acionando em ordem tabelas, 212-213 tabelas ou esrruturas
contecdc de, 701
105 especificg!jao de ditada pela listagem campo Size Category, (DOlC), 70
convencoes p:ua
criando comprimentc, instru!j<io do programa de 195 variaveis de sistem a,
atribui!jao de nome,
abordagem write, 470-471 driver, 548 cendrios com tabelas 281
105
bottom-up, 110-111 especiflcando posi~o e acionando tapa de de usos de buffer, Exi t, contrcl e (barra de
criando
tela Dictionary: comprimento com a pagin>,550-551 211-212 ferramentas Standar d).
abordagem
Maintain Domain, instru~o write, 341·344 deixando.554·557 classes de dados, ABAF/ 4 Editor, 53
bottom-up,I13~116
108 estouro, instru~o sum, ordem de execc cac de 193-195 exit, instru!j<io
solucionando
descri~ao, 102, 668 450 eveneos, 548 deslocamenro de comparando com
problemas, 115-116
obrecdo a documentacso estruturas relat6ri os com eelas de buffer, 210 ins tru~() es continue e
tela Dic tionary:.
do SAP,l11-112 aninhando, 172 sele;ao, 557-558 namerc de extensoes, check, 341
ChangeDau
prop6sito, 701 criando, 171-172 tor nando padrio par.l 195-196 instr'U!jao loop at e, 364
Element, 112
reativando, 705 DOle infcio da se1e~o, tecnicas de uso de sin taxe, 327·328
descricao, 102
reurilizandc versus exibindo, 70 551-553 buff", 204-206 u tiliz.a~oes , 708
documeneacio ao salver,
criando, 104-105 versss eabelas, 70 exce~6es tipos de usa de buffer, exportacac, parametres,
113
driver, programas includ e chain, defmi;ao, documenta~o em 205-209 descricao, 607
dominios, 102
descricac, 547 173 interface do modulo converse es de dados, exportando/importando
elementos de tela,
eventos inc1uindo mnltiplas vezes de fun~o, 648-649 in stru~o if, 319 parte da interface.
elementos de texto e, 669
acionando 0 tOpO de em tabelas, 174-175 visac geral, 607 dados, utilizando os seu s 623-627
elementos de textc
pagina, 550·551 pesquisandc variaveis de excluindo pr6prios programas, exp ressoes chave,
cabe~alhos padrio de
deixando, 554-557 sistema, 283-286 campos em tabe1as, 127 135 utiJizando, 367-369
pagina, utilizando para expressoes matem .iticas
ordem de execu!jao, syst,82 comendo interno de uma documenta,?o de
eriac, 514 codificando, 306
548 versus tabd as, 171 tabela, 403-412 palavra-cbave, 534
A •••• I I I I .II • •• • • • • • •-• • • ~ . - . - . -.-.-.-.-.- . -.- . - . - . -.-. • - ~- -- -~

730 , APlENDA EM.!1 DIAS AU P/4


- i.DlG , 731

variav~ tipo d. 308 Field Name, coluna (tela como adi~o de stmbclo, pos ition, 538-539 m6dulos de fun ~o. d!'cumentos alterados,
extensOes · Di ctionary: 500-501 print-control, 533 ccpiand o, 218-219
definil'o, 195 TobI, /SttUctur" Change exibindo stmbolcs, leones set blank lines, 5~5" 1 renomeando e utilizando,221
exibindo numerc alocadc Fiolds),11 7 e caracteres de set margins, 533 excluindo, 6-«)
para tabelas,195-196 Find Next, contro le (barn desenho de linha skip, 534-536 Function Module Change:
resumo tecnico cbs de Ierramen tas disponiv eis, 506-507 U.DUnhO de pi gIDa; Administration Scre en,
{con es
configuracoes, 221 -222 Standard), ABAP/4 sineaxe pu:l adi~oes, 500 contrclaadc, 508-511 639
defini~o, 501-503
Editor, 53 formatando eecnicas, 507-508 Function Mo dule Create:
exibindo , 506-507
Find, bou o (barn de cebecalhose rodapes de eelas de sele~a Administration, tela,
E ferram entas Standard ) pagina instru~io de bctoes de 613
IDs de gropo de fun~o,
FO I, include, deflnindc descri~io, 601
ABAP/ 4 Edit or, 53 csbecalhos manuais de oPl'o, 672-673 Function Mo dule Displays
sub-retin as em gropos if, instru~ao, 315·326
campo s de variiveis de pagina, criando instruli10 param eters, Documentation, tela,
de fun~o com , 627-628 conversces de dados
sistema, loca1iz.ado, 280 varidveis em, 668-670 636
F4, ajucb, chaves estrangeiras exibindd,319
£1, listage m, 715 519-520 instnl~o Function Modu le Edit, tela,
e, 15C-151,154 literais durance
form, instru~ o cabecalhcs padra o de selection-screen 609
fax, envi an do rebt6 rios compararr oes,
definicdo variiv eis em, pl gitu, block with frame, Function Mo dules , tela, 636
par, 511 317-319
571 armazenandc , 514 667
Ierrsmenta de rastrelc de operadores de string de
nome s de parimetra , cabecalhos padrio de
SQL, determlnandc qual
715 pagina; criando,
insuuljio G caractere , 321-326
select-options,
Indice e uti1izado, Goto, comandos do menu, cperadcres Iogicospan
sinuxe, 559 513-515 671-672
191-193 Text Elem ents from the operandos, 316-317
utilizal'o de 558 ,,",.~os padrio de instru¢es
Ierram eata utili tUia de ABAj)/4 Editor, 670 ordem de preferencia para
fo rma gerada de programas, p:5.gina. traduzindo, selection-screen, 667
ban co d e da dos gropos de fun~o tipos de dados, 317
47 515-517 parimeno de cain de
acessando, 225 componentes,638-64O sintaxe, 316-317
fOnIl2b~O de Iista, cabecalhos padrio de sel e ~o, 670-671
excluindo e recriaadc definindo em sub-retinas, utilizando na listagem de
instru ~6es , 527-541 p:5.gina. utiliundo parimetro de cain de
tabelss, 232-233 627-628 programa, 318
marg ens configuradas, 5~3 variiveis em, sele ~o de sele~o
fun¢ es, 225-226 listagem de zexb, 622 If-equal, in Stn1 ~O igual,
new-line, 528-529 517-519 de tela, 671
log de ativali1o, exibindo, visi o geral, 601-602 compar.mdo conteddo de
new-page, 529-530 cabecalhcs padrsc de programs de exemp lo,
230-231 " grupos de tipos duas tabe1as internes, 395 .
new-page print. exibindo plgin a, 673-681
parfmetros de criando, 274-275 Import/Export Parameter
do cumenta~io de visualizando e visl o geral, 666-667
armazenamento, dermi~o, 273 Interface, tela, 605-606
palavra-cbave pan. 53-4 mo dificando, free, instru~ o, sintaxe,
exibindo e GUJ Status, tipo de objeto, importa~o, parimetros
new-page print on , 514-515 403
modificando, 231-232 693 com propostas, 715
530-534 rodapes de plgitu, from, adi ~o, i nstru~o loop
ueilizando, 225-226 des cn~o,607, 6 1 1
position, siceaxe, 538 crian do, 520-523 at, 362-363
toraandc opeionais, 608
verificacces de
set blanklines, sincaxe, instru~io reserve. 523-524 fun~Ocs, ABAP/J, Editcn H valores padrio,
cca siseenc is, 226-227
540 ins uuCioesde formata~o tela Edit Program, 61-63 handles, defini~o, 47
em aameeab, 228-230 fcmecec do, 608-609
skip, sintexe, 534 de lis", 527 Functio n Ce des, ti po de Help on , comando {m enu
papel do nameeab, impressao, t ecnicas de
forma ta~ o grifica e back, 536-538 objeto, 692 Utilities), 65
227-228 eabecdhos e rodapes de
in stro ~ o write, 499-507 new-line, 528-529 Functi on Library, tipo de Help system, oer ajuda,
Fiel d Label and H eader, plgina
como a di~o de leone, new-pa ge, 529-530 objeto, 692·693 sistema de
cam pos (tela D icti onary: cabecalhos padrao de
501-503 new-page prin t. Func tion Library. Initial, hist6ria de tabela
Change Data Elemen t), pagina,
como adirri o de linha, 530-53. " La, 602 automatica
113 ~azenan d o, 5 1 4
503-506 new-page print on, 531 aipbiente de teste , 629-631 descrirrio, 217
~ ~-'~.I.,",.-. J...A:..a.-.....II I X . I -.....- I I .-L":::":-".-"-.l~'-.l-'~"-I~' -'~'C"" ~"-'-" -
I
••• . . ... ..
I
m APREH DA EM 21 OIlS AUP/4 IHDleI I 733

cabe~ o s padrio de Iodice, adi~o, instru~o insert lines. instru~o. 392-393 interfaces glob ais, links de hipertexto, 136- 138 camp os numericos,
pagina. criando, read table, 365 insert, instnl)io. sintaxe, ddinindo parametres, Hstagem de fonnata~ e movend o pan strings
513-515 in dices 398-400 620 comprimentos padrao, de campo de caracte re,
cabecalhos pamo de criando.l87-189 instalandc in terfaces Iocais, definindc 465 299
pagina, traduzindo, defuU<;io,183 Basis. 21 parimetros, 620 listag ens char defmido pelc
515-51 7 descricac, 183-186 ScreecCams, ...... in tervalos de no m e de a ins ou~o back, 537 usuirio de tipo de
csbecalhos padrac de determinandoqual e instdncia central, defini cao, clien te ABAP/4 dado, 271
pagina, ueilizandc utilizadc (Ierram enta 26 convenliOes pan pro grama, 50 classificando caracteres
varidveis em, de rastreic de SQL), instincia, defini~ao. 26 atribuiljio de nom e. sinw:e basica, 236 acen cuados, como
517-5 19 191-193 instnu;ao de contr ole de 691-696 adi~ comparando adi~o de rexec ,
cabecalhos padrao de ex ibindc tcdos, 187 imprcssao,533 descricao, 47 configura valor de 380-381
pagina, ligando, 703 inStn1~O de dados janelas, abrindo, 76 sy-subrc pan 373 CO , cs, CA e NA,
visualizandce secunddric definindo varifveiscom. ad.i~ mone dria, 485 exercirand o, 322
mcdificaado, defini~io. 185 241-243 , di<;io uni~ 488-489
sictaxe, 77, 263· 264
J-L cc n staa tes, defmi¢ es de,
514-51 5 diretrizes para cria/iao, adilioes arr edc ndadas e 262
justificativa, deslocando
multiplas impressoras de 189-190 instru; ao local, 564· 565 decimais, 483 contagem de linha e
com a instru~o
uma vee, 512 excluindo.1 9O-191 instru;oes, descri~o. 236 adi~Oe s de parimetro, eamanhc de 1inha, 510
statement, 4 90~9 1
safda de Iista, 511-5 12 exibindo, 186-187 interatividade e eodific.ndo, 576-577 ccnversee s de dados,
'pool, 512-513 selerivos, 188-189 programacic baseada em agrupando por eipo p ara 294-295
Lamb to n Co ll ege Web , site ,
ununho de pigina. 'nIltagens.185 even eo, 653·65 4 reduzir a duplica~o dadas e estatistica,567
curses de treinamento,
cc c rrolan dc em Info Types, ripe de objeto, 693 eventc at de codigo e tomar a dadcs globais
10
instru~o report, in forma~6es ripidas {dicas selection-screen, 655 manut en<;io mais f:i.ciI, persistentes, 620-621
lendo
508-511 de ferramen ta), 17 eventc at user-command, 274 elseif ~ mais clare que
listagem de algumas
impressora, con£igura~6es °
in ician dc Rl3, 10 655-656
linhas,362-3 63
append sorted by pan urilizar ifs anin..bados,
padrao, alterando, 511 ins erindo event c initializa tion , 65<4- localizer a s tres 320
para arualizar (tabelas
.INCl UDE, 172 a instru~io call functi on evento selection-screen relatorios de vendas especificacees de formate
bufferizadas) ,
inclu de, cadeia, defmi;5o, 173 autcmaticarneure, 613, push-burton, 65 5~656 principals, 414 de data, <4- 80
descriliia, 203
in clude , instru~o. sintue, 649-650 interceptando eventos area de rrabalhc da tabela, eventc top-of-page, 519
Ua1, tabela, visio geral, 43·8
598-600 campos em nbebs , 126 command Windows, 31 77 eventos
lfbt , tabel a, vi sio geral, 438
include, progr~mlS Iinhas em eabelas, 397-400 interface d o usuaric at first para escrever acionand o em ordem
Ifcl, tabela, visio geral,
defini<;io, 597 navegadores de dados, cbaves estrangeiras, dru lcs e at last para ditada por prognma
438-439
segundo (UXX), utiliz ando, 128- 130 verifican do, 1++145 sublinhar a Ultima de driver, 548
like tln-sJlS in clud e,
descnlii o, 602 solucionand o persccalizacdc, 17 1inh.. 441-442 Dio incluindo dentro
listlgem, 266
top o,des cn~0, 602 problema.s, 130-131 tew, familiariundo-se at new e at end, aciorudas de condili5es a u
lingmgem de logon e
loclud.. (DOIC), lipo de Insert From Buffe r, com, 52 par ah era¢es em loops , 552-553
tabew de texto, efeitos
objeto,693 controle, (harra de validando dados com, 145 campo s e alten¢es no tres eventos de base,
de, 159-160
Includes (p rognm), tipo de ferramentas Interfa ce, m enu., 17-1 9 myel de contrale, 448 546
linha de eabe~lh o (..beb
objtto,693 Application), U~/4 in terfa ces bytes de p reenchimeoto eventos top-of-page e
interna), defini ndo,
incl uindo prognmas, Edi tor, 58 defmindo pa.rimetrOs, ao mov er dados en tre end ~of-pa.ge, 521-522
350
defmiliio, 597 Insert Line, controle (b2rra 605,607 St rings de campo , 302 expre ssao- chave, 368-369
linhas, m ovendo p2ta 0
.INCl U-XXX, 174 de ferramenus d es cri ~io,
605 dlculos de data, 308 fl, valor atu al de quando
to po da jan ela do editor,
Indice (tabe las internal ), AppH"lion), ABAP/4 servidores de campos , movendo parte enddo ~ execur:ada,
59
def iniliio, 365 Editor, 58 apresenu liio e, 24 d, ,296-297 334- 335
.-
•• • - ---
, APR ENOA EM 21 DIAS ABA P/4 iNCKE I 735

formau~o e instru~o move, 298 mstI'Utjoes write on change of definindo como rabelasinremas
comprimentos padrao. . com duas strings de :adi¢es de justificati...", acioaando, "457 ts belas d. DDIC adi~ de campo s
465 cunpo.300 490 dDUmaneiras ou estrururas, 265 correspcadentes
gravandc icones na !ina, instrut;io especificatjOes de diferentes, 455-+56 instru~o dau., para p reeac her a
501-502 move-corresponding, po si~o e para exihir simbolos, definindo com, 264 partir de urn banco
if, utilizando no 304 comprimentc em, 500-501 inSttlly2.0 tables, de dadcs, 433-4304
prc grama, 318 ins tru~onew-line, 528 342-343 partmeercs, defmindo defmindo com, 269 adicion and o tres
incluindo prograrna, 599 instru~o new-page print, ilusrrandc efeitos da com a instru~o referenciandc outre linhas a partir da
inlcic da selcc?o 533 espec ificacio da parameters, 248 campo,309 linhado caberUbo.
automatica.mentt insuu;io parameters coluna de saicb, 469 parimeuos digitados, 5704 ..riiveis do tipoch2r, 267 355
inserido antes da prcgramas que sceitam operadcr de cadeia passando panimett'os p ara subcampcs, ~7 1 a.dicionando tr &
primeira lich a do parimetros de para reduzir sub·rocinas, 572 sub-roeicas linhas a parti r cia
c6digo execuctvel, 551 en trada redundsncia em, 83 passando por referencia, chamando a sub -retina linh a do cabecalho,
ins tru~ao call fun ceion, udlizando, 24 8 ~2 4 9 lendo apenas algumas 578-579 mostrada na e gravaado -as de
udlizsndo com ins~ position. 538·539 linIus,362-363 passando por valor, 580 Listagem 593-594 volta novamente,
parimetros, 612 instrU~o read table, adi~ like 'fImUS include, 266 passando por valor e clwna.ndo uma seri e 361
inst~O case. realiundo de In dice, 365-366 linhas de cabecalho, resulradc, 582 de, 560-561 colocando mais
urna serie de instru~o reserve, 523-524 linhas com mesmos posj~o e especifica~6es defmindo e chamando, camp os do que
compan.~oes. 327 instruc;ao select valores que de comprimenec, 470 558 existem em uma
instru ~io check. 340 adi ~o de campos campos-chsve p adri o restringindo os sy-db cnt para con rar ubela,432
instrU~o cleat. utiliundo correspoadentes, em, 371 fabricantes linlus reeornadas da cc nteado de campo s
para limp er a linha de 436-437 loops sem fim, 330-331 selecicea dos, 78 instruliio select, 81 entre at e eode, +43
eab~o, 407-408 com a instrulj-io misc:an.s de edi~o, saida panr syfdpos pan visualizar copiaa dc dados de
instru~o collect, appendpara efeitos de 475 processamen to de deslocamenrc do uma para cutra
combinando linhas preencher eabelas mensagem, insuucrio prognrna morto em primeirc caraceere utilizan do as
conforme sdicionadas ineemas, 435 raising. 646-647 suas trilhas, 328 coincidente ou !lio instru~oes append
as eabelas intemas, instru~o select- into, 431 m6dulos de funljio, 615 s:udas de coaversao, coincide nte,324-325 lines e insert lines,
418-419 ins truc;ao sum pan chamada simpl es para, 477-478 sy-index ccntendc 393-394
instro~o continue, calcu1ar rctais de myel 609 seu segundo prognma, namerc arual de criando com e sem
338-339 de concrcle, +49-550 chamados .da Lisugem 72 itera~io, 329 . IWw d.
instro~o describe table, instrU~o type -poo l 20.1, primeiro, 621 revisitad c, 269 sy-subrc cabecalbo, 352
utiliundo vamveis de contendo tipos e chunados da Listagem simplificado.76 determinando se definindo com e sem
sistema para constantes, 274 20.1, segundo, 621 sfrnbolos e caracteres de qualquer linbas urna linha de
quan tificar conteudo inStnl ljio while, 337 chamados cia Listi.gem desenho de linha, 504 fonm selecionadas, eabe<;>lho, 351
de tabela de, 390 instrU~6es add, subtract, 20.5, c6digo~fonte strings de campo 80 excluindo linhas de,
instruyao do, adi~
variivd , 333-334
multiply, divide •
corr espondent es, 307
pan, 624-625
chamados da Li.stagem
''',;0 varymg,
retornando
valor configunndo de
por dentro m6dulos
409-410
inserindo linhas em
ins tru~io editor -call para instrU~oes exit, check e 643 componen tes em d. Iun\io, 642- 643 listagens
visualizar, editar e stop cham2dos da Listagem sequencia, 332 tabela ztxIfal, exibindo dassificadas,
estreat a conteudo de dentro de evemos. 20.9, c6digo~fonte atribui ~o envolvendo dados em,135 enquanto
uma ubela interna, 555-556 para , 647 duas, 268 ubelas e estruturas mantendo a ordem
396-397 dentro de sub- rotinas , no -gap, 473 conten do cutra string ODIC. incluindo em de c1as si fi~oJ
instru~o locI. 564-565 562 nG-zero e no- sign, 482 de campo . 265 strings ,de campo, 266 375-376
-:---
~DI" 737

Maintain of Matchcode areas de tela, 15-17 cri~do ,60 1 , 6 1 3 - 6 1 5


Ob ject Fields, tel a, 662 Command Field, 19-20 definic;ao, 600
Maintain Select ion Interface Menu, 17~19 defini~6 es de dados
Conditions, tela, 664 message, in.s tru~o raising , dentro de. 605
Maint:l.mSelection configurando 0 valor de dcsativando, 604
Options. tela. 633 sy-subre com. 644-648 documcnundo excecoes,
.I
mendt, campo, indices e, 188 message, instrosoes, tipos, 648-649
manuten~o diaIogo 681 e lTDS, corriginda, 640-641
padrao, dC5crir;rao, 134 message-Id, i.nstro~o, excecoes, vida geral, 607
mapeando tipo~ de dado sin taxe, 682-683 . Iiberando, 628-629
ODIC para tip os de m estre de fabricante listagem para, 615
dado ABAP/4, 246-247 re gistra, arual izando, 13 localizado existenee,
Mark Line, controle (barra modiflcandc 63H38
de ferramentaa csbecalhcs d. p;gin ~ parimetfos
Application), ABAP/4 514-515 digitados e cia
Editor. 59 fonna dos parimetros de digiesdos, 608-609
mascaras de edi~o armazenameato expcresdc de, 715
ccmecacdc com V. 712 dentro do udlietric de passandc para, 607
instru~ao write, 474-476 banco de dados, passando rabelas internas
masC2ttS de cdi~o em V, 231-232 para
712 Iinhas em tabelas, 400-403 metodos, 622
matchcodcs modify, instrusio, sintaXe, viaexporu~o/
sabores de, 716 4CO importa~a e
nlidaliiode dsdos, Module Pools, tlpo de alterandc, 623-627
utiliundo pan, objeto, 693-694 via u belss, 623
659-666 mo dulo d e fu n~o , sy-subrc, valor
configurando,659-660 in terfaces . 'f)eja interfaces configurando de
criandc e mantendo modules de aplicativo, inst ru~o raise,
cb jetcs matchcode, visdc gera l, 8 64t -644
660-665 m6dulos de fun~ measagem, instrolilo
organizando pOI' tipcs acivando, 604-605 raising, 644-648
d••tualiza<;20, 666 cancelando a versi o de, 629 testandc, 629-63 1
sineaxe, 666 chamando , 609-613, M ove Line, contrale [barra
matchcodes Bsicamente 624-625,643,647 de ferramentas
configurados, 659-660 dado! globais, 619-622 App licati on ), ABAP/4
m cm6ria em tabelas execueando urn Editor, 59
Intemas, alccando, 709 exemplc, 611·613 move, instru~o
mcnsagens de erro, caw de instrusio call adapta~6es aut cm aricas,
diilogo SAP Rl3, 641 function, 609-611, 293-294
menu principal 613 lisugen, 298
iI'~ coaceiruais, 10-15 primeirc e segundo, 621 regras de ccnversac ,
area Applications. 12 copiando, renomeandc exibindo, 295
area Basis,20-22 ou excluindc, 640 sinraxe,291
INDICI I 739

strings de campo, 297-303 new-page print on , ndmercs. fJU campos hexadecUn~,240-241 Oracle, ban cos de dadcs e adi~o de grupc de hordes
campo s numericcs de, jnstru ~o) sintaxe, 531 numericos; literals num ericos, 239-2+0 espa~o de tabela, de op~o,251
299-300 new-page print, instru!?O, numericos; tipos de .string de caractere, 239 defm iljio, 193 adi¢es para, 249
tipoa de dado de exib in do a dado numericos objetos de desenvolvimento organizando objetos campo de entrada rorule,
caractere, docume ntl;io de Object Browser Initial, tela, conven¢es para matchcode, 666 251.
utilizando, 300-301 palavra-chave para, 534 instru;6e.s message, 682 ambui~o de nome, .(7 oti miudores, 187 campo de entrada rcrula,
tipos de dado new-page, instru~o, Object Log, baCio (berra do defini~o, 44 Output Length, campo alt erando, 251-253
nemericcs, sintaxe.529 ferramenta.s exemplos de, 96 (t ela D icti onary: como adi~o de cain de
utilizando,301-303 no-gap , adi;io, inst:ro;io Application),230 umindo, 66 Maintain Domain), selecao, 250-251
subcatnpos,296-297 ~ te,287, 473-474 Object xxxn:: Dupuy int ervalos de no me de 109-110 efeicc de verificando
move-ccrrespca ding, n om e, ecoveucees pan. Active Runtime Object, clien te, 691-696 tabela om, 253-25~
ins tru;oe.s
sinuxc,303
atrib ui!?o de
caracteres invaIidos, 689
tela, 227
ohjetos
pc rtabilida de, 45
ohjetos de tempo de
P sintaxe, 247-248
type """" like,~ 253
padrees
utiliza¢e.s, 302 iaeervalos de nome de agregados, defini~o, 156 execusio,d~~o,47 parimetros
alterando, 712
Multiple Selection, tela, 632 cliente, 691-696 ODIC, arivando, 107 obtendo a documenta~o do alterando, 607
Ueas de trabaIho de
objeeos de desenvolvimento, SAP em dominios, de expOrta~O, descricsc,
rabela, 76
N desenvohnrnnento,47 exemplcs de,-96 111-112
ativando altera;6es para,
607
paranetros, 247 ohjetos agregados, occu rs, adi~o, instnJljio de impo naliio
nametab 464
p ro gramas de dii1ogo, defm.i~ o, 156 append, 357-l59 defini;io,611
descri~o, 227 impressora, aleerandc, 511
691 objetos de dados on change of, instru~o, descri~o, 607
papel em progrunas instru~o write
relatorios, 690 descri~o e tipos, 237 451-458 tomando opcionais,
ABA P/4, 227-228 ccmprimentcs,
tabelas ~ componentes, literal loops e, 452-454 608
vc:rifica;oes de 461-462
105 de ponto fluruanre, 240 perigc oculto em, valores padrio,
ccnsistenciaem, for matando, 463-467
variaveis.242 bexadecimais, 240-241 457-458 fomeceado,
228-230 listagem de campos
vari fveis de sistema, 79 numericos.239· 240 utilizando, 454-457 608-609
natureza ineegrada do chave, 371
vida geral, 659 -, . String de caractere, 239 Open SQL, 36-l7 de tabela,descricsc, 607
ambiente Rl3, 8-9 pad rOes do usu ari o,
nomes de dominios, chaves visibilidade de, 237 descricao, 697 defini~io. 247, 571
n avegadcr de dados, . configurando, 280
estrangeiras compostas, cbjeeos de dadcs tabelss, operando sobre, definindo
utilitirios Page Do wn, pr ession and o,
153 extemame nte visiveis, 698 em interfaces globais,
decidindc quando 74-75
nomes de progra m a e desc ri ~o, 237 vantagens 620
ut ilizar,13 4-135 palavn-ch ave,
caracteres invalidos, 689 ohjetos de dados buffer em dados em em interfaces lccais,
fun;oes de, 132-134 docum entacdo, instruljio
nomes de re lat6ri o de glohalmente vis!veis. servidor de 620
inserindo linhas em new -page prin t, 534
cliente, conven ; oes para descrkac, 237 aplicativo.36-37 varifveis como, 572
tab elas, 128-131 paJaV1'2S cbav e de even to,
at:ribui~o de n om e, 690 objetos de dados lc calmen ee p onabilidade, 36 digita dos e nao digitadcs,
SE16,'dados de tabda de5cri~o, 654
n o- scrolling, adi; ao, visfveis, descri~ao. 237 tra tamentc 608-609
exibindo com, 131-132 Parameter Id s, tipo de
instru~o new-line, 528 objetcs de dados automaticc de exportando a partir do
SE17, comparando com objero, 694
no-sign, adi ;ao modificiveis, descri~o, clien t e, 37 m6dulo do fun"o, 715
-SE16, 134 para m eter, ins trulji o,
instru~o write, 481-482 237 operador de encadeamentc, form~,572
SM31 0 SM30. 134 668-670
utiliza~6es , 712 cbjetos de dados nao utilizando, 82-83 digitados, sinesxe, 573
cpos, 131 parameters, instru~o,
n o-zero, adi~o, instru~o modificlveis op endor es 16gicos, digitados, vantagens,
utiliza;6c:s, ]28 definindo vari,heis com ,
write, 481-482 descri~o, 237 instru~o if, 316-317 575
new-line. instru~o, sin taxe , 247
Number Range Ob jects, literais op en dores, instru~o digitados 'lJtTIJI.S nao
528 adi~o de cain baixa, 250
ti p o d e objeto, 694 de po nto flutu ante, 240 compute, 305 digitados, 573-575
-~~~JL-IJK-I~.- .-.-.-.-.-.-.-.~.- .~_~_-_ '--_- _-_-

740 I ,PREND, EM 21 DIAI'SAP/' I ~, m


interfaces, definindo pan, pass by value and re sult. interface do usuario, 17 Print, ccntrcle (barra de induindo, defmi;io, 597 C ommand F ield, 19-20
605-607 Iistagcm, 582 ubelas,98 ferramentas Standard), cbjetcs de tempo de Interface Menu, 17-19
passandc pan m6dulos pass by value, Iistsgem, 580 pesquisa ABAP/4 Editor, 53 execu~o, 47 platafonnas e bancos de
de fu n~o. 607 passandc descri;6es d e camp o, 82 Printer Macros, ti p o de procurando, 67 dadossupo~dos, 2 1
p assandc pan padmetros pan modules prognmas,67 objeto, 694 salvando altera¢es, 54 prop6sito, 8
sub -retinas. 576-Sn d. fun,.o. 607 .oj< 14mbfm lccalizadc processamento de blo cos, tipo s de visio geral, 7-8
reerodos, 578-583 param etres pan plataformas suportadas pelc de.scri~o ,6S4 programas de dalcgo, RJ3 Analyzer Identifier ,
por referenda, 578-580 sub-retinas. 576-577 R/3 ,21 processos de trabalho, 31-32 46 tipo de objeto, 694
per valor, 5S()..S81 listagem, 572 ponteiros d e m ouse, Program, comandos do relatorios, 45-46 RJ3 Data Dictionary
p or valo r e resultado, metodos, 578-5 83 informa~6es ripidas meou programas de cliente, (ODIC)
581-5 83 por refersneia, 578·58 0 (dicas de ferramenta), 17 c opy, n descri ~o, 47 campo s. controlando a
reais, 572 po r valor. 580-581 ponto Iluruante.fiterais, 240 Save As, 77 programas em late, chaves exibi~o de, 71
parametros de por valor e resultado, pontos decimals, campos, programa~o baseada em estrangelras e, 152 defmilioes, exibindo, 70
armazenamento c 581-583 701 eventc publica~o. perfodos d e, descri; io,67
ferramenta utilitaria de strings de campo pan po ol de tabelas eventc at ano s fiscais, 439 estrururas, 68
banco de dados, 231-232 sub-retinas, 575 descricao, 98 selection-screen, 655 objetos, imporUncia de,
parametres de grupo,
instru~ao de bctoes de
op~o. 673
tabelas int emas para
m6dul os de fun~ao,
622-627
resericees, 101-102
poo ls de dados , desc:ri;2o ,
659
- eveneo at user-command,
655-656
evento de inicializa~,
Q-R
quantidade, campos,
96
paisagem de sistema .
d.fini,.o, 26
definj~o, 170
parimctros de tabela, eabelas ia remas para po ols d e ta bela, descri;io, 98 sinuxe, 654 po si~o de, 67
quebras de pagina,
dcscri~oj 607 sub- retinas, 583 pools de tipos evenrc selection-screen eabelas, 68. 70
causando, 530
parametros digitados, 608-609 com linlw de cons tant es e, 262 pushbutton, sintaxe, utiliz.ac;:6es, 68
R/3
. descri~ao. 573 cabe~ o, 586 d.fini,.o. 273 655-656 R/3 Library help. ABA P/ 4
ambience, natureza
sinaxl:, 573 corpo por referencia, pcrta bilidad e interatividade de, 653-654 Editor: Edit Program,
integrada, 8-9
vantagcns, 575 587-588 do codigo, 36 programado res, te la, 65
arquite rc ra de siste ma
parametres fonnais corpo por referencia, objetos de conhe cime n to da ar ea rad iobuttons, instru;io,
definindo, 27
descricso, 573, 715 valor, ou valo r e desenvolvimento.45 fun cional e, 9 " parimetro de grupo,
servidor de aplicadvo,
digitadcs resulcdc, 589-590 posi~o e comprirnento, prognmas 672-673
24-25
sintaxc, 573 descrevendc den trc de especifica;oe.s, li stag em , convenliOes para raise, instnJ~
servidor de
vanu gcns, 575 sub- rotina. 584-585 470 atribuic;:ao de nome, configurando 0 valor de
apres enta~io, 24-
f)trSUS naD digirados, m etcdcs, 584 posi;io, especifica~o, 47-48 sy-subrc co~, 641-644
servidor de ban co de
573 smt axe.584 instnJ;io write, 468-470 criando utilizac;:oes. 716
dados,25
parametres naa digitados, variaveis.71 5 posi ti on, in stru;io, sin tax e, processo pan, 48-50 read table, instruliio
servidores,
608-609 Pattern, centra le (baIT2 de 538 solucionaodo tabelas ineemas,
configurmdo,
descricao , 573 ferramentas pre ssion ando problemas, 50 urilizando com

-
25-26
parametr es reels, dcscri;ao, Application), ABAP/4 Back, sequencia de em lore, chaves adi ~o de comparaliio,
clienees do sistema de
5n Editor, 58 eventc s, 75 estrangeiras e. 152
instala;ao, 36
372-374
parametres, adic;Oes, perfil de servi dor de Page Down, seque ncia de include adi;ao de Indice,
iniciando, 10
codifican do, 576-577 apli cativo, 24 eveneos, 74.-75 defmi~o, 597 365-366
menu principal , 10
parametros, nomes, perform, instrur; 20 primeiro program; ~e superior, adi c?o de pesquisa
area Bas"is, 20-22
instru~o form, 715 sintaxe, 560 ABAP/4 , listagem, 50 descrir;ao. 602 binaria, 370
pass by refcrencc,lisagcm, utiliza ~o de, 558 Pri nt Param et ers , t ela, segundo (UXX).
areas conceituais, 10-15 com a di~ o de chave,
areas de tela, 15-17
578-579 personaliZ2odo 531 des ai~, 602 367-370
742 APRENDA EM 21 DlAS ABAP" INDICE 743

nenhuma adic;io,
370-372
release, fun~o
cance kndo.629
s listagem simplificada, 76
segundo prognma in clude
sy-subrc, 79-80
eabelas in tenus
apresentac?o, 24
banco de da.dos, 25
sa fda de Iista, impressao,
sintaxe, 364-36 5
eransportandc a
procedim en to para, 628
renomeando m6dulos de
511-512 '. (UXX). descri~o, 602
select single. instru~o,
adicionando linhas
uma a uma, ~34-437
confi gurando, 25-26
servidores de ap licativo
safdas de ccnversac e
.eli,.o, 374-376 £Un~o, 640 sintaxe, 83-84 preenchimento, arquitetura de, 27
instru ~o write, 476-479
utiliUtjoes. 709 Report Writer, tipc de Select, controle (barra d e opcoes, 437 area de rolagem, 28
exibindo as existentes,
r eativandc domfnios, 705 ob jcto,694 ferra mentas select- toto, in strufiio. ~31 cliea ee de lo go n, 32
478-479
re cri ando tabelas, 232-233 , report, instru~o Application), A BAP/4 select-o ptio ns, instrufi3o. 672 componentes do
lista gem, 477-478
705 adi~ line-count, 521 Editor, 58 sequencia de clas:stfica~s'o processo de
re tinas de cc nversao
r ecursos de referencia adic;oes, 712 select, ins tru~ o, 72-76 bindria, definifiao, 379 trabalhc, 31-32
dentro de domfnios,
online, 10 tamanh o de pagim., adi~o de campos seqde ncia do pr ogra ma, cont exte de ususrio,
476-4 78
refresh, instrucao, sintaxe, formatando, 508-511 ccrrespcndentes, con trolan do 27-28
salvan do
405 Repository Information 432-434 ccmparando com as passos do dialogc,
a1t era~oes de programs,
registros Mestre do usuario, System, tela, 631 area de trabalho expllcita, instru~oes exit, 28-29
54 contin ue e che ck, 341
status dependence do Repository Information 77-78 passos d? dialcgc,
dados, restandc mcdulos
clientc.35 System: Function areas de trabalhc de inst royio check, 339-34 1 inicia.ndo,29
de fuo,.o, 631
regras de conversso, Module, tela, 632 tabela, 76-77 instru~o continue, processamento
elementos de dados,
exi bindo com a reserve instru~o, sintax e, chaves estrangeiras e, 658 337-339 roll -in/roll-out,
documeeeacao, 113 cl:iusuhwhere, 78-79 instro~o exit, 327-328
instru~o move, 295 523 30-31
SAP. documenta cic sobre
reindexando, in serindo Restricting the Vendors codificando pan indices, servido r de banco de da dos, cbelas, tipos, 32-36
Selected listing. 78
domin ies, obtendo, 188 des cri~o. Z5 trocando dados com
linhas e, 399-400
111-112
relacionamentos de chave reutilizandc domfnios detertninando qual Indice servidores servid c res de
SAP, sit e da Web, curses de
estrangeiras, oersus criando, 104·1 05 ~ utilizado para, aplicativo, 2-4-25 apres enta~ o , 31
treinamentc , 10
esrsbelecendo, 717 Revised, versoes de tabelas 191-193 irea de rolagem, 28 descrici o, 24
sapgui.exe,24
r eIacio na m en to s de chave companndo com Active, em adi~ao de eabela arquite rura de, 27-36 urilizando buffer em
Save As, comando (men u
primdria, tabelas de 222-223 classificando , 428 buffer em dados e dados e Open SQL,
Program), 77 O pen SQL, 36-37 36-37
exemplo,438 descarundo,223-224 regras para ur iliaar,
Save. botao, 12
Relation IDs, ripe de descricso, 222 430 cliente de logon, 32 servidores de apresentaclc
Scr een Cams, 44
obj eto, 694 rodapes e cabegalhos, sintaxe, 426 compo nentes do descri ci c, 24
Scr een s, tipo de obje to, 694
relat6rios 513-524 estrutura 51St, exibindo, processo de tr ocand o dados com
SE16, nave gad cr de dad cs , raballio,31-32 servidc res de
componentes, 46 rcdapes, utilizando a 82
instru~o skip, 535
exibiado dados de eabela instrU~o tables , con texte de usuario, aplicativo, 31
convencoes para
com 0,131-132
arribuicic de nome, rolagem, areas interagindc com , 27-28 servidcres, configurando,
fun,oe, do , 132- 134 passos do diilogo, 28-29 25-26
690 alocando, 697-698 269-2 70
SE17, navega dor de dad os,
dez liscas principais, descricao, 28, 236 processamento cia passos do dialogo , sessses, abrindo, 76
comparando co m 0 set blank lin es, instru~o,
criando,412-417 objetos de dados e, 237 inStru~ o AVI select, iaiciando, 29
SE16,134 prccessamento sintaxe, 540
envian do por fax, 511 roll-in/roll-out 74
SE63, transa ~o , tra duzi ndo roll-W ra ll-out, set margins, instru ~ o , 533
impressio em multiplas processamento, proce ssamento de Back,
elem en tos de text o, 517 seta para baixo , te cla, ajuda
imp ressons de urna defini~o , 30-31 75 30-31
Sear c:h/R.eplace, tc:la, 54-56 tabclas. tipos, 32~36 F4 e, 150-15 1
vez, 512 roll-outs, proposit o, 698 processamento de Page
segu n do programa Down, 74-75 trocando dados com seu primeiro programa
in strUljaO appendsorted . r6rnlos, instnlc;ao
listag em, 72 servidores de ABAP/4,li,tagem , 50
by, 412-413 parameters, 251-253 sintaxe,72
Iistagem revisitada, 269 sy-dbc nt, 80-81 apresentac;s'o, J 1 seu segundo programa
telas,45
r r
.....,~. , .
r' r> r>; r- ~
r- r>;
I
~ r: ~ r> r-. ~ ~ »<: r> »<. r r ~ ~
'""' r
" "
~

" " '"


~

"
~ -e-,
- "'
-r-, ~ --..,
'"'
~

.;
~
''Ii'
'744 .lPREND.l EM 21 DIAS ABA P/4 iNOICE 745

Iiseagem, n inscruc;ao case, 326--327 inscrucac new-line , .52 8 instru~o report, tamanho especificacoes de Stack. controle {barra de
liscagem revisicada, 2 69 instru~o check, 340-Hl . instrucic new-page. 529 de linha e adir;:Ocs de po si~o e ferramentas
Iiseagem simplificada, 76 instrU'?o clear, 287, 407 instruc;io new-page print contagem de liaha, cc mprimenco, Application), ABAP/4
Short Text, campo com adifjio, 289-290 on, 531 508-5 09 341-344 Ed itor, 58
eela Dictionary: Change instru~o collect, ..17-422 instrur;:ao on changeof, instru~o reserve, 523 mstruljOes add and Standard Roll, ripe de
Data Elements, 112 inStru~ o compute, 305 451-452 lnstculjio select, 72 add-correspondin g, ohjeto, 695
tela Dictionary; Maintain instru<?o C ONSTANTS, perigo oculto ern, area de rrabalho 306'307 Stan dard Task, rip e de
Domain, 108 262 457- 458 explfcita, 77 matc hco de , 666 objeto, 695
tela Di ctionary: instn1~o continue, 338-339 ins tru~o param eters, areas de rra balho de mes sage, raising, Standard, barr. d.
Table/Structure: instru~o data , 77, 247-248 tabela, 76-77 in scru<;ao, 645 ferramentas, 16
Chang. Fields, 116 241-242,263-264 adi<;ao d e gropo de clausula wh ere, 78-79 selection-screen blo ck ABAP/4 Dictio nary
sim bo los inserucsc dele te, 408-409 bc ee es de op~o, em ad.i<;3.o de tabela, with frame, 667 butto n, 67
deficicao, 500 instru~o describe cable, 25 1 426 tabelas int ernas , 388 ABAP/4 Editor
exibindo, 506-50 7 389 adi <;ao de lecras estrurura 51St, sites da Web para curses d e conero les, 52 -53
sim bolos de campo instru<;ao do, 328-329 minusculas,250 exibindc, 82 trcinamento,10 recu rso Find and
Iiseagem, 309 varyin g, ad.i~o, adi<;ao type tJtnus like, proce ssamc nto da Size Ca tego ry, campo, Rep lace, 54-57
u tiliza¢es, 310 332-3 34 253 inscru~o AVI descricao, 195 Command Field, 19-20
sim bo los e caracteres de v:uyinglenddo, adi~o, adi¢es a, 249 select, 74 ski p sy-Iin ct, utilizac;5es, 713 Find bu tto n, 28 0
desenho de linha 334-335 com o adi~o de caixa processamento de skip , instru~o, sintaxe, 534 start-of-selection,
Iistagem, 504 instru~o editor-call, de sel~o, 250-25 1 Back, 75 SM31 e SM3 0, navegadcres automaticamen te
aintax e 395-39 7 efeiec cia tabela de processamenco de de dadcs, 134 inscrindo Iistagem , 551
ABAP/4,236-23 7 instru~o, 560 verifica <;3.o em, Page Down, 7+.7 5 solucionandc problemas Status, comando (m en u
event o de inicializacao, instru<;ao exit, 327-328 253-254 sy-dbcnt, 80-81 do~os,criando, 111 System), 20, 95
654 insrrucao form , 559 ins tru<;ao positio n. 538 sy-subrc, 79-80 elementos de dados , stop, instruc;ao
evento selection-screen instru~o free, 403 instru<;ao ra dio bu ttons, instru<;2a selec t single. criando , 115-116 inStruc;ao loop at e, 364
pushbutton, 655-656 instI1:t~·o if, 316 parimetro de grupo, 83-84 in ser indo linhas em ucilizacoes, 714
ins rrucac add, 306-307 instruljao include, 598-600 673 inStrulf20 tabelas, 130-131 strings de ca mpo
inStru<;20 instru~o inse rt, 398 inStrulfao raise. 642 selection-screen, links d'e hipe rtexeo e atribuicac envolvendo
add-corresponding, ins trucio insert lines, 393 ins rrucio read table, pardmeerc de cain d e ajuda Fl , adicionando , duas listage ns, 268
307 inStruljio lo op at, 359-3 60 364-36 5 seleljia,671 138 con rendo ou tra listage rn
in strulfio appen d, 354 adi<;5es from, eo, adi<;ao de Indice, instru<;ao select-options, navega dor de dados SE 16, d e String de campo,
occurs addition, whe re, 3 62~3 63 365-366 672 132 265
357: 3,9 instrucao que pede adi<;ao de pesquisa instru~20 set blank line s, programas, processo de defmi lj2o, 263
inStruc;ao appen d lines, aleerar 0 binaria, 370 540 cria~o, 50 defmindo
392 processamento do com adi<;iio de chave, ins ttu <;ao skip, 534 tabelas rransparentes, como tabe la ODIC ou
instru<;3a append so rte d lo op, 364 367-370 instru<;ao SOrt, 376 criando, 119· 122 lista gem d e
by, 413-417 instrucio m essage-id, comparando adi<;ao, como adit;i.a de textc, sort, ins trut;i.o, utilizando eserueura, 265
inStruyao at end of, 444 682-683 372-374 379-382 com tahelas internas, lnstruljaO de dadcs,
instru<;ioat fIrst, 440 ins cru~o m odify, 400 sem adi<;5es, ins truljio sum, 449 376-382 263-2 66
instru<;io at new, 444 instru~o mo ve, 291 370-372 instru<;20 tab les, 268· 269 SPACE, constante, 262 ins tnl~o tables, 268-269
in Stru<;2o back, 537 inStnlt;aO tran spartanda adi<;io, " inscru<;aotyp e, 270-272 spaol, irnp ressaa, 512-5 13 instru~ao move, 297·303
instruljao call functi oo , move -corres ponding, 374-376 instruljio while, 336-337 Spool, tipo de objeto, camp os numericos de,
610-611 303 ins tru ljio refresh. 405 instru<;ao write, 46 7-468 694- 695 299-300
r> r- ~~~~0rr~rr~0rrrrr~~~r~~~~~~~~~~~~~~~

~ --::iH::DI::::.J
CE 747
746 "REND A EM 21 DIAS ABAP/4

campos,adicionando defini~o . 68 dete rm inand o 0


cipos de dados de por valor e resultadc, syststnu~ture,instru ~ao
caractere, 58 1-583 select, 82 abordagem top-down, documentos alcerados, namero de linhas,
122- 124 21 8-220 389-390
utilizando.300-301 passando st rin gs de System, comandos do menu
tipos de dados campo pan, 575 Crea-te New Session, 76 acresc entan do , 126 excluindo, 125, 705 determinando se vazia,

numericos, passando tab elas internes Status, 20, 95 inserindo, 126 exibindo, 70 389
campos, excluindc, 127 [erramen ta ur ilitdria de esrrururas para
u tilizan do, 301 -303 para, 583 sy-subrc
Iistagem da adi~ao corp o por referencia, configurando 0 valor de chave estrangeira.143 banco de dados, testando e para
variavel,332 587 de dentrc de s cornponent es de excluindo e re criando m odificando
p assando para cccveocses p ara por dentro, 232 -233 ccne ea do, 388
corpo por referencia, m6dulos de
su b-retinas, 575 valor, ou valor e atri builiao de hi st6ri co de tabela excluin do linhas, 406,
funliao, Iistag em,
utilizando como varidveis resu lta do, 589, nome, 105 au tormcicc 408-412
642- 643
do tipo char, 267-268 590-591 instrucio raise, eleme ntos de dados, descriliw . 217 excluindo 0 conteudo,
strings,localizado todas des crevendo dentro da 641-644 102 u tilizaado, 221 403-406
ocorrencias de, 56 sub-retina, 584-5 85 m essage, instrucao configuracoes tecnicas in dices indice, defull~o,3 65
Structure (DDIC), tipo de sintaxe, 584 raising, 644-64 8 buffer, utilizando , criandc, 187-189 ins u uliao append,
o bjeto, 695 tabelas com linhas de ins trucic select, 79-80 196-213 descricso, 183-186 u tiliz wdo, 353- 359
subcampos cabe"lho, 586-5 92 variavel, depois da buffer em re sume de dererminando qual e instru~a o loop at,

instru~ao move, 296 -297 tipcs, 559 in st ru cdc editor- call, tabe las, 212-213 u cilizada com a utiliz and o, 359-364
inserucaowrire, 471-472 sub-retinas extemas 396 campo Size Cate gory, ferramenta de instrUc;ao read table,
sub-retinas comparando com 195 rastr.eio de SQL, utilizando, 364- 376
sy-tabix, cperacses de loop
chamada urn mostradc na in temas, 593 e,710 cemrios com tab elas 191-193 instrucac sort,
Listagem 18.12, 594 comparando com m6dulos sy- to ccu , areas d e pagina~ao de u so de buffer, exibindo codas, 186-187 urilizando, 376-382
chamando uma sene de de fun,ao, 600 e, 710 211-212 vantagens, 185 lend o dados de,
listagens, 560~561 descricio, 592 sy- uzeit, campo 245 classes de dados, indi ces secundarios 359-376
definindo em grupos de sub-retinas in ternes 193-1 95 criando, 189-190 linh as inserindc em,
deslocamen eo de d eflnics o, 185 397-400
fun c;aovia F Ol ,
627-628
comparando co m
ext ernos, 593
T bu ffer, 210 excluin do, 190-191 modificand o Iinhas
Tab. Maint. Allowed, exibindo, 193 exibindc, 186 em, 400-403
deixando, 561-563 definindo e cham ando ,
campo (Dictionary: ndmero d e exte ns oes, m tem as passando m6dulos de
descricao, 558 559-561
Table/Structu r e: 195-196 conteudo classificando fun.,.o, 622-627
efeitos de exit, check e deixando, 56 1-563
Change Fields, te la) , 117 res ume, 221-222 de, 376-382 preenchend c a partir
stop dentro de sum, instrucao, 449-451
tabela, campos con teudo comparando de tabelas de banco
Iistagem, 562 sy, variavel tecnicas de u sa de
campos de quanridade, buffer, 204-2 05 de do is, 395 de dadcs, 425-437
extemas, comparando adi cionando lisragem, 2 86
170-171 cop iandc dados entre, preenchendo utilizando
com in rernas , list agem, 283 cipos de u sa de buffer,
campos monetarios, 393-394 a insrrucio collect,
593 sy -daturn, campo, 245 205-209
168-169 copiando p art es de, 417-422
internes, definindo e sy-dbcnt, selecion an do cop iandc, 124- 125
tabela, dusters, descricio, 99 392-393 processamento de
charnando, 559-561 instrucao, 81 criandc, 106-107
tabelas definii;ao, 350 -353 iccenupcso de
passando parametres sy-fdpos, 324- 326 DDIC,67-68
Active, versoes ativas, definind o, 349 controle, 440-444,
p ara , 576-577 sy-index content namero de duster
comparan do com definindo a Iinha de 445,449,451-458
rnetodcs, 578-5 83 atual d e itera~oes , descricso, 99- 101
tabelas d e banco de programa para obter
p or referencis, listagem, 329 restricoes em, 101-102 cabecalho, 350
dados, 226-22 7
57 8-580 svstoc Message ID, tipo alt erand o a nom e de, 124
vantagens, 100 definin dc 0 corpo, informecces sabre,
par valor, 580-581 de objero, 695 de verifica~o , 143 350 390 -391
testando top include, programa, Utilities , comandos do
chaves estrangeiras, 149 descricdo,602 menu
modules de fun~o, top-of-page, eventcs A BAP / 4 Key Word Doc,
629-631 acionando, 550-551 534
Text Elements from the . f eventos end-of-page, Help on, 65
ABAP/4 Editor, 521-522 utilizando e alterando sao
comando (menu Goto), insrrucio write, 519 identicos em fun~o,
670 traduzindo elementos de llstagem,579-580
tipo de dado char definido rexto, 515-51 7 UXX (segundo programa
pelousuario,listagem,271 transacoes, definicao, 19 include), descricac, 602
tipos de campos e chaves Transaction Codes, tipo de
estrangeiras, 156-160 objeto, 695
campos-chave, 156-160 transportando adi~o,
V
validando dados, 145
candidatos-chave, instru~o read table, 375
valores de componente
156- 157 tratamento automaticc de
gone, 442-444
tipos de dado numericos cliente, Open SQL e, 37
valores de X, cardinalidade,
descri!rae, 245-246 tutorial on ABAP/4 Editor:
155
instru<j3.0 move, Edit Program, tela, 64
valores de Y, cardinalidade,
utilizando, 301-303 Type Group, objeto de
155
tipos de dados Grupo, 695
valores excluidos
definindovariaveis com type, instru~;io, sintaxe,
(excludes),633
mapeando tipos de 2 70-272
valores iniciais padrao,
dados DDIC para type-pool, instrugac,
de£ini~o, 286
tipos de dado contendo tipos e
valores, excluidos, 633
ABAP/ 4,246-247 constantes, Iistagem, 274
Value Table, campo
tipos de clados de
chaves estra ngeiras e,
caractere, 244
tipos de dados de
U 165-166
under addition, instru~a o como proposu Check
comprimenrc fixe,
write, 472-473 Table , 166- 167
244
Undo, conrrole (barra de sem chaves estrangeiras, .
tipos de dados
ferramentas 168
numericos, 245-246
Application), ABAP/ 4 variaveis
instrusao if, ordem de
Editor, 58 acessando incorretamente
preferenca, 317
unidades de modularizacao antes de definir,
rabelas, alrerandc em,
descricso, 545-546 listagem, 243
127-128
utilizacoes, 546 cabecalhos padraode
Titlebars, tipo de objeto, 695 pdgina, lisragem, 517
unit addition , instrucao
to addition, instru ~o loop compuuundo, 707
write, 484,486-490
at, 362-363 convencoes para
User Defaults, comandos
Tools, comandos do menu atribuicao de nome,
(menu System), 511
< Administration, 22 242
Development
User Profiles, tipo de
ohjeto,695 de sistema, Iistagem, 28'
' -
Wotkbench, 12
rrrrr0~n0~n~~nn~n~n~

i'
I
adi~oes no-zero e evento end-o f-pa ge, exibindo exisrenres,
definindo, 714
como pargmetros, 572
varredura de intervale
de fndice, definicio,
w no-sign, 481~482 521-522 478-479
where, adicio, instrucio :ldi<;6es redondas evento top-of-page, 519 retinas de conversao
insrructo de dados, 188
loop at, 362-363 decimais, 482-484- eventos, efeitos em, dentro de
utilizando,241 -243 varying addition, instrucdo,
where, clausula comprimentos padrao, 550 domfnios, 476-478
instru<;io form, 332-3 34
instruljaoselect, 78 461-462 Iormatacio padrao, sintaxe, 467-468
571 -573 Ven dor Master Update
suportada par indices, 185 desloeando a justificativa, 465-467 subcampos, 471-472
inStru~o param.eters, Transaction Address,
tela, 12 Where-Used List, controle 490-491 dOlUS, 463 tabelas intemas e, 716
utilizando, 247-251
tipos de dados, Vendor Master Update
(barn de ferramentas especificact o de estouro, 464 u nderaddicioD,472-473
Application), ABAP/4 comprimento, 470-4 71 numeros, 464
243 -247 T ransaction: Initial, tela,
definindo dados, 566-568 12
Editor, 58
while, instru~o, sintaxe ,
especificacao de posicao,
468-470
vezes,4 64
formatando da ta, 479 -481
z
globais, descricio , 563 verificacac, campos de, ztxa, grupo de fun~o,
336-33 7 especificacoes de posi<;ao mascaras de ediljao,
insrrucrc dear e, 287-288, ch aves estrangeiras listagem, 622
Windows, ambiente, e comprimentc, 474-476
2 89-290 compostas e, 152 ztxlfal, tabela, exibindo
iniciando 0 R/3, 10
local, descri~ao, 563 verificacio, tabelas de, 341-344 saidas de ccnversao,
dado s na, Iistagem, 135
Windows, eventos, 476-479
passando, 715 defini~o, 143 zxtl 901listing, 599
interceptando, 31
tabelas definindc areas de verifi cando chaves
trabalhc, 564- 566 with key addition,
estrangeiras,144-145
vari dvels de sistema versdo, nfveis de, visao instrucao read table,
367·370
comumen te utilizadas , 280 genl,95-96
descricao, 79 versao, notes de, acessan do,
Workflow, tipc de objeto, ,\
695
exiblndo, zso 96
write, instru!;ao
instru<;io describe table, versc es de mo dules de
389 fun ~a o , Ian cando,
adi<;ao de nenhuma
lacuna, 287, 473-474
localizado, 283-286 62 8-629
nomes de, 79 adiljao de unidade,
versoes d e tabelas
486-490
sy-dbcnt, 80-81 eomp arando Revised e
sy-fdposvoperadores Active, 223 adiljoes de formaeacsc
para, 324 descanando Revised, grafica
sy-index, 329 como Icone, 501-5 03
223- 224
como linha, 503-506
sy-subrc, 79-80 ternporfrios, 223
variaveis globais, descricdo, como simbolo,
versoes te mporaries de
500-501
563 tabelas, 223
varisveislocals, descricto, exibin do simbolos
visibilidade
563 objecos de dados, nIveis disponfvel, Icones e

variaveis t ipo c, move ndo de, 237


caracteres de
para ou de strings de desenho de linha,
strings de campo , 270
506 -507
campo contend o tip os vis ualizando
n umericcs, 300 sintaxe, 500
paginando cabecalboe,
variaveis tipc d, expressoes 514
adi<;oes monetaries,
matema ti cas e, 308 4 84-486
programas de inclusao e
variaveis, com putando, 707 adicoes monetarias e de
variavel, nomes, 706
incluldos, 600
safda no spoo l, 512
unidade, 484 .'

I," !

Vous aimerez peut-être aussi