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
.~
. , .~,
!il,
:erie tabelas transparentes u~an~o' ~iemerilos~>
. ,: dados e dorntn ios
. .
t......
".
..'
.
'.
:" ?~; ~ : :: ' ~~~
~ . . .,~.. ; .~. . ., UtilJ7e.o Data Di~ioriary p-;;';a-exibir tabelas, .~' . chaves estrangeir~:e'indiCes secundarios . .';',i . ~ . ," , ~:.~
6/'
_~" . De~e!J'vol~ e. uti U~~~fetjvap:!·~ote··rel.atqrio~ , .. . iru:luiiidG a sua fo'rlnata<;ao"com 'sfmbolos :." ' . . , ' "....;' ~...... ·.grM icos e .fc_oneS':~ .: ".-:'.'" ,; ., ..
'J
. ~
...."
~,
• Crie telas de selecao bern-projetadas e eflclente-
contem: '
. .. ,
'}a Mais de 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.
'50'
I
• Utillta rfos originai s,
'-
.... . c .ampu,<;.car.-: ' " "' -'--k"",
....cC
. ' \IV\IV\N. ..
..J
-'-~__1__:;_--'
.
.
:
)
)
) ·1,,;~}·;i:.;D ·~~~ :>,;;·l~l·:{~ ·.',.,~.\t\'i;:1 · "'_~ ~ ~i~r~).f ,~ it.':~W ·';i ;~~ .:~.~.{.~~1:; ::, \1:.'~;,, ·.f/. . ,13 2 ; .'I,,! I·~n " .it-."\ ;o;.;~, pla .3:q:,:~r' ~ ~ ,JI,~~,~:, Dia 4:\:!11_" ~'1~' •. -, "" 1\"0 , ;- .:·,'. . .I< L ~'. ·.. . ... ··III!,I'. ~ ", ' ..,-' ,·'.-,. ,-,' 1" , .1 .<..iM·.-: ....';'. ,,,,,.... "' .(, ~". "
Enlellda a que' um slslema de RI'J. sua aparllnda e lunciollamenlo para0 U5udrio; apreAda sobfe larqu~e lurl do slslema emque programas A8AP/41unclonam,
Cliee modillque programas ASAPI. sinples;exibaI.WI18
Descreva asdlIerent;aS 8l'ltrt labelas transparentes, labolat de poole de du slp. r, erie domlnlos. elementos de dadose \abelas transparentesno Data O!cllonary.
tabela e !lC1J CMlelldo
ulilizando 0 Dala Dictionary; adldone comenl4rio1e documen t~o. eeus progllmas.
Crle cha'o'lls ntemas;erie B u~!Ilelabelasdtt laxlo; deSCf&va a djrerll~a entre
uma esm nsa I UITl/Illl.bela; ctIeestruluras no Data Diclbnaryde FV3.
;i;f.{~:: :,:~,.,
";
"".;'ill )
. ,.;);".;,Dla 6. Coo e utilI Indices
Apllqul 0 ulW1aria de banco ee dados para newtar I vorUlcllt;ao decoerl!nd:l; atesteInlorma¢es de banco dedades espadlicas de labela; Insira a recra labelas nobanco dedados.
seQ.Jrxlar!os apropriedamenle;configure osalriltJlos16cnlcos para labolas Iransparenles: configure 0 usadebuller para tabelas,
Enlendaos eLemenlOi de $lntaxe do ABAPI":
cescreva0 conce~o de obielosde lidos . sua visibilidade; ulihe Il!lBis e entendacomo codi~ce r
')
cada lipo; delifUI e utilize constantes,
')
':'·i
D!~.;~ ,~ ;:',~~~i:,,:i:I,~E~,': ':_-~'?Rf~ ',~,~~,fi~,:·~}:~
UIiIlzoa nstM;Aotab 1e s para dellnlf strings de campo; ontenda a InstnJ;fto types eutilize-ap8fa delinlr seIlSPJ6prios tipes dedados.
Ulillze VlIIilI.velsde sistema comuns8 se]o CIlPaz de exibir oukx:aIiZOf qualquer vari<lvel de lllslem.; pl'eveja e exeaJle convolS6es de oaocs utilizenda InSllUl(6es deatribulrrllo; codillque ellpl'ossOes malematk:as,
I'
'j ; .Pt ".;·!" :~}.1 '·,,'; , ;') ~ :':;':'~'-:~, : l1:t~~~:" ~.'~~~ 9, ~ >"' !~ ; ~ ,J.l'!i..,:i.:P(~ 1~.:~\\;t:, .',
J
Cod~e
ISlnSIru¢es comunsdlt conlrole i f.
case. do ewhtl e: cootrol& I seqiillnclado progrlmau!iIIzando ex i t , conti nuee chec k: codi£que especficllt;ees simples dlt pos~o 0 decomprmento nl InstrOlfAo wri te o
, D"la..' 15. If,'1.''.," '. '::':'!Dla. 1 ~/·:!;',;·I:: j~;:;~. ol;{1E\ "
• ••\.'1; :l . ~
,{,
•
,~ :
U~Vze as ~¢es do
Iormata9io grallca da lnstrur;io wr i t e (as sy mbo l , a s icon, as 11 ne): lmprma salde de Isla a manlpure I , aidanospool.
UtilizeasInslru¢es comuns delormala¢o ne w- l 1ne, ne w-page, ski p, back. pas i t 1o n e set b lan k lines; envle salda pala0 spool IIlil/zando ne w-page print.
...... ,,~
~--- ~_-...
" .''''Ko>i>i
"
Ulllize asavenlos init 1a1 1zat i on , s t ar t - o f se lec ti o n, end-of -se 1ecti on; donn.$Ub-fo1lnas eklemas e Inlerna$; conflguro variaveis locals, global! e eslali:as,alllm deareas de lraba tlode labela.
-.-<;1:
!0:tt~·" ~,i~\2.(: ~ ~ ;~ ~(
v,
Defina umalabE IaIntema • Reconh~ 0 opefalb de com ousom umallnhade corpo delabltla It umze-e para tester a oxlstllnclade cabSl;alho;preencl\a essa labelautilzaooo append dados emuma labela ehaves uma irmade Inlemae compauuo . conteudo deduas labelas cab~lt1o Otl um e dreade . Intemas quanta! Iguaklade. Ifabalho explidla; c:lasslnque labeln! kltltmas ' autilize a ad~!o as text.
': .~ ".; . :. '":' , -,':\-\,"ii; .1 ; ..
I: !;;: ' Cia18:~ :'{:'~:~: Passe paffimetros dlgiledo! II nAo lIigilados para sub-rolinas; passa parilmetros 116lr ~S Il'lllIleltas: pol' re'orAnda, parvalore porvaklrIt rosullado; pas~6 slrlngs de campo e labelas tnlemas para umasuIHotlnl.
rI:!'~~""",.~",,",""-:;"
\
Enlerda0 ele~o do! \IpOs de dados nasalda: utlllza as oP95es de)Ofma la~o
, :t"
"
,Dla 19 .f·
Entonda e utilizea Instr~o in c 1ude; crIo grupes de funyao e I'llOOJos de fun ~D; dannapa!llmellos deimponaljio, eXpDrla¢o
Dla 20
Dia21
Entenda 05componenles I a eslrulull de urn grupo de tunr;l o;definadados glDbals 0 sUb-rotinas denlro de umgrupo de Iunc?o.
Codlfiquelela. dnselel;lo que interagem com 0 osuarb; utilize elementos de !orma!a~o para crlar lelas deseleiO!o bem pl'ojeladas eellcienles: utilize lelesde snl~o para manter aintagrk1ade dos
e alle ~o .
'''~';'
)
da ~o i,fr 1te;
utilze seeasdecoovorstio e deiecteSOlI preseo", dentrodedomlnios.
!
,:.
',\ ':'
Dla14
Dla13
Pre&flCha umalabela Jnlama apar1ir deuma labela debanco dedado. u~lizando aseSlruturas (consll1lcl ~ matserlcienles; relllillt processamento de ln lll"u~1o decontmleem labelas Inlernes utI~zando at e cn c hange of.
d_.
_ _ 'n'_.,....
~·.-
.,.. .• .••••. h ~
'· ·
lido
r--: h ~c ~
I
I
-n
..
f~j ~'
~.
P" ~ §<
-
fT1 ;U
Jl
Z
J>
I
CJ
~~ o
<1l
I
!<o
~
"
·;lfl l; •it·hr i
CJ
"Ho
~ J> ()
J>
;U
~
OJ
J>
CJ
:s
I
- " • • : . . . - - -. ._
.1'.
v_ ,.......
~
_ _
-:....---.1-.........:.... :-;...............-::.:..
~:
I
I I
.. J.. "-- . .. ,,;. A_ : 4I'4a. ~ ......
I
~.
...:·· ..- -_ •. - - --
I
J>
, \S
._-----~
-_ ..,- - - -- - .--/
~~
-
...
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
o
et"
Aprenda
C
;:;-~ ~ :s,f; SEU CONHECIMENTO ACELERE '"tfl o
N OVIDAOE S. CAOA ST IIIO , I.A Nlf'AM ENTOS . C.OMI"ItAS
~<".
s«
i!b
---= e.. =.m .: . .: .
~
¢
ef!'
Comp leto e
,<>"
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 ~ CopyrightCo' 1999 by Sarns
C 1999 , EdilQIlI Camp llS
Dedicatoria
s.ns
uea.
lodes os dlrello, reseIVedos e protegid05 pilla Lei 5.988 de 14/12/73, NlInhuma parte dUI II IJVro, Sllfll 8utoriz ao;Jo pn~via por 8 $eritD da e dlto ra, pod e ra
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. COnk/do. l(!Ito,... o{.} aul or{lIs) nAo U$Uffi8m responsabilldade pelos
resultados . US(! da. Inronna~ Iomecida. Reeomendamo. aos Inlar. 'I11ormat;:4o antn de sua UIiIIZa<,;:iO.
"d".
~Ionts
""" ee.-_
Paoo Vrtmlel10
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
r
;IBLIOTECAS OA PUCMINAS ~ELO HORIZONTE ,
f GlSTRO 22~.f2-~
Q' ,£3.....;
IATA:2 / . / ?'L ICERVO;Z3 0 2 9 / •
'p , l
.. ..
__
I
4
3
2
o
Este liuro ededicado a meus pais. Marian e Vern Greenw ood Obrigado por tudo.
Dia 20
M odu larizacao: m 6dulos de fun,ao, P arte 2
619
D ia 21
T elas de selecao
653
SEMA NA
3 Revisao
Introducao
. 68 7
Apen dice A Convencoes de atribuicao de nome .
689
Apen dice B Re sposta s as per guntas dos testes e exercfcios
697
Ind ice . . . . . .. . . . . .. . . .â&#x20AC;˘ . . . . . .
Sumario geral
719
i
l
....... 1
Convencoes utilizadas neste livro
2
Visao geral. . . . . . .
. 5
SEMANA 1
Dia 1
.
0 ambiente de desenvolvimento
7
Objetivos do capitulo que R!3 ?
7 7
o
e
Qual ea fun<;ao do R!3?
. . .
Por que voce precis a saber isso? Descobrindo 0 R/ 3 . Utilizando as areas conceituais do sistema R13 Descobrindo a interface com 0 usuario do RJ3 Enrendendo 0 Basis . Entendendo 0 clienre/servidor . Arquitetura do sistema RJ3 . . . o serv idor de apresentacao . o servidor de aplicativo . . . Descobrindo 0 servidor de banco de dad os Configurando os servid ores . Definindo urn sistema R/3 . Definindo uma instdncia R/3 . Arquiterura do servidor de aplicativo . Enrendendo urn contexto do usuario Enre ndendo uma area de rolagem .. Entendendo os passos de dialogo .. Entendendo 0 processarnento roll in/roll ou t . Descobrindo como os dados sao enviados ao servidor de apresentacao . . . . . . . . . . . . . . . . . . . . . . . Entendendo as cornponentes de urn pro cesso de tra balho Enrendendo os tipos de processo de trabalho . . . . . . . Entendendo 0 cliente de logon . . . . . . . . . . . . . . . Entendendo tabelas dependentes e independent es de cliente U cilizando 0 Open SQL da SAP . . . . . . . . . . . . . . Pcnabilidade . . . . . . . . . . . . . . . . . . . . . . . Ucilizando buffer de dados no servidor de aplicativc . Tratamento automdtico de cliente Resurno . . P&R . . .
Workshop Teste . Exercfcio 1
8 9
10 10 15
20 22
24 24 24 25 25 26 26 27 27
28 28 30 31 31 32 32 32 36 36 36 37 37 38 38 39
39
.. , .. XII
"RENDA EM 21 DI AS ABAp/' SU"'''DGERAl
Dia2
Seu primeiro programa em ABAP/4 . . . . .
.
Antes de prosseguir . Explorando 0 ambienee de desenvolvimento Descobrindo tipos de prog rama . Definindo relatorios . Definindo programas de dialogo . . Descobrindo componen res de rela ta rio . . D escobrindo a ob jeco de tempo de execucac de prograrna Inrroduzindc as conven co es de atribui'):ao de nome de programa Criando seu primeiro programa . . . Exp lorando 0 editor de codigo-fome . . Utilizando a Editor: Initial Screen Explora ndo a funcionalidade do editor de codigo-fo nr e Obten do ajuda . . . . . . . . . . . . . . . . . . . . . . . . . Obtendo a ajuda F1 . O bt endc a ajuda R/3 Libr ary . Localizando seus ob jeto s de desenvolvimento . Introduzindo 0 R/3 Data Dictionary . Explo rando as tabelas e as esrrururas . Exibind o uma ta bela ou definicao de estrutura Exibindo 05 dados na tabela . . . De termin andc campos exibidos . Entendendo a sintaxe do ABAP/4 . . Introduzindo a instruci c se 1ect . . . . . Entende ndo as areas de t rabalhos de tabela "In trc duzindo a clausul a where . Trabalhando com variaveis de sistema . Utilizando 0 ope rado r de encadeamenro . Utilizando a instrucio se l ect singl e . . . Comentando 0 c6digo e a documen tacao formal Resumo . P&R . Workshop .. Teste . . . Exercfcios do edito r . . Exercfcios de prcgramacac
Dia3
o Data Dictionary, Parte 1 .. O bjetivos do capitulo . Descobrindo nfveis de versac do R/3 . Aprofundando-se no R/3 D ata Dictionary Explorando os tipo s de tabelas em R/3 . . Tabelas transparen tes . . . . . . . . . . . Pools de eabela e tabelas de pool . Clusters de tabela e rabelas de cluster . Restri<;6es nas tabelas de pool e de cluster.
.
. 43 43
. Explorando componentes de tabela . Mantendo as caractertsticas tecnicas de s campos . Determinando quando crier ou reu rilizar dominie s e elementos de dados _. . C onvencoes de atribuicac de nome para tab elas e seus componentes C rian do uma rabela transparence e seus componentes Abordagens para criar tabelas . A tiva<;ao de objetos DDIC . Desccbrindo dominies . Descob rind c elemento s de clade s Descobrindc tabelas transparentes . M odificand o tabelas . . . C opiando uma tabela Excluindo uma tabela Adicionando campos Excluindo campos . . Aleerando 0 ripe de dado ou comprimento de urn campo Trabalhando com dados . Acessando a funcionalidade do navegador de dados de dentro doODle . Utilinrios gerais de navegador de dados . Exibindo os dados utilizandc seu proprio programa de ABAP/4 Utilizando a ajuda Fl Resume .. P&R . . W orkshop Quescionario . Exercfcio 1 . . Exerdcio 2 . .
44
45 45 46 46 47 47 48 50 51 51
64 64 65 66
67 68 70 70 71 72 72
76 78 79 82 83 85 85 86 87 87 88 93
•• . • • .• • 95 95 95 96
97 97 98 99 . 101
Dia4
a
Data Dictionary, Parte 2 .
. . . . . . . .
.
Objetivos do capitulo . . . . . . . . . D escobrindo as chaves estrangeiras . Acionando a verifica<;ao de chave estran geira Requisites tecnicos para cria r uma chave estran geira Criando uma chave est rangeira . Des cobrindo a coluna CheckTable . Dererminacio automdtica de campos de chave esr rangeira . Relacionando as chaves esrrangeiras com a seta parabaixo e a ajuda F4 . Chaves estrangeiras e programas em lore Chaves esrrangeiras cornpostas . .. Entenda a cardinal;dade . . . . . . . Tipo de campo de chave estrangeira Chaves esrrange iras constantes e genericas Chaves estrangeiras adaptadas . . . . . . .
· 102
· 104 . 104
· 105 · 105 · 106 . 107 .107
· 112 .116
. 124 . 124
· 125 · 126 · 127 · 127 · 128 · 128 . 131 . 135 . 135 . 139 . 139 . 140
. 140 · 141 · 141
. 143 .143 . 143 . 144 .145 . 146 .149 . 149 .150 · 151
. 152 · 154
. 156 · 161
. 163
XIII
XIV
SUMARIO GERAl
I APRENDA EM 21 DIAS ABAP"
Definindo uma tabela de valor Campos especiais de T abela . . Os campos monetarios . campos de qua nridade . As esrruturas no D ata Di ctionary Enrendendo Includes . . . . . Incluindo a mesma estrutura diversas vezes Resumo . . P&R . . .
· 164 · 168 · 168 . 170 · 171 .1 72 · 174 . 175 . 176 . 177 . 177 .177 · 178 . 178 · 178 · 179 .180 .180
as
Workshop Teste . Exercfcio Exerclcio Exercfcio Exercfcio Exercicio Exercicio Exercicic
Dia5
1 2 3 4 5 6 7 .
o Data Dictionary, Parte 3 .
• • ..• • •...
O bjetivcs do capftulc . Entendendo as Indices de tabela . Exibindo indices . Consider acbes ao cria r urn Iodice Criando urn Indi ce secundario . . Excluin do urn Indice secun dsrio . D etermin ando qu al Indice esu sendo uti lizado 'Exibindo configuracoes tecnicas Classe de dados '. . ': Ca tegoria de taman hc . Exib indo 0 nu mero de extens6es alocadas para uma tabela . Utilizacic de buffer em um a tabe1a Res umo . . P&R . . .
Workshop Teste . . Exerd cio 1
Dia 6
o Data Dictionary, Parte 4..
.
Objetivos do capi tulo . H ist6r ico auto mati co de tabela e documentos alterados D ocumen tos alterados . Sabendo quand o ut ilizar hist 6rico automdtico de tabela Resumindo as configuracoes tecnicas versees ativas e revisadas . Vers6es adicion ais . D escartando uma verssc revisada
183 . 183 . 183 · 186 · 187 · 189 .190 · 191 · 193 . 193 · 195 . 195 . 196 .213 . 214 .214 .215 .2 15
. 217 . 217 .217 . 218 .221 . 221 .222 .223 .223
.. 225 .226
U cilizando 0 utilicirio de banco de dad os Verificacoes de coerencia . Exibindo 0 log de ativacao . Exibindo e mcdificando parametres de armazenamento Excluindo e recriando as tabelas no ban co de dados Resumo . , P&R . . .
.230
Workshop Te ste . Exercfcios 1
Dia 7
.\ .
Definindo dados no ABAP/ 4, Parte 1 . . . . . Objetivos do capitulo . o buffer de programa e a area de rolage m Elementos de sintaxe do ABAP /4 Definindo ob jeto s de dados . Definindo literais . Definindo variaveis Resumo .. P&R . . .
Workshop Teste . Exerctcio 1 SEMANA 1
Revisao
SEMANA 2
Visao geral
Dia 8
. 231 .232 .233 .233 .234 . 234 .234 235 . 235 . 236 . 236 . 237 .238 . 241 .254 . 255 .255 .256 . 256
. 2 57
• ... ..•.. .. •
.259
Definindo dados no ABAP/4, Parte 2 . .•
261
. 261 Objetivcs do capitulo . . 261 Definindo constantes . .262 Sintaxe da instrucao CONSTANTS .263 Definindo strings de campo . . . . , .263 Urilizando a instrucao DATA para definir uma string de camp o . Utilizando uma string de campo como uma varidvel do tipo char . .267 .268 Utilizando a instrucao TABLES para definir uma st ring de camp o String de campo defi nida u tilizando TABLES in teragindo com SELECT . . 269 .270 Visibil idade de uma string de camp o definida uril izand o TABLES .270 Definindo ripos . .270 Sintaxe para a inserucao TYPES .272 Tipos estruturados . . 273 Grupos de ripe . .274 Criando urn grope de ripe .275 Resume. .276 P&R .
XV
XVI
I 'PIE NO' EM2101'S "'PI'
Workshop . . Teste . . . Exercfcic 1 Exercfcic 2
Dia 9
SUMARID GERAl I
r
At ribuicg es, conversoes e calculos
.
Objetivcs do capitulo . Antes de prosseguir . T rabalhando com variaveis de sistema Localizando varidveis de sis tema Instru coes de atrib uicio . . . . . U tilizando a insrrucao cl ear Utilizando a instrucao move
Utilizando a instrucdc move -correspondi ng Executando cilculos . Atribuis;ao dinamica Resumo . .
P&R .. . Workshop Teste . Exercfcio 1
Dia 10
Ins trucoes de controle comuns Objetivos do capitulo .. . Utilizando a instrucao if . Sintaxecia instrucao if Conversao de dados de literais durante comparacdes . Exibindo convers6es . Utilizando el se t f . Utilizandc operadores de string de caractere
Utilizando a instrucao cas e . Sineaxe cia instrucao cas e Utilizando a instrucao exi t . Sintaxe cia instructo exi t Utilizando a instrucio do . . Sintaxe cia instrucdo do . Terminando urn loop sem fim Utilizando a adic;ao varying . Madificando valores dentro de do ... varyi ng/enddo Urilizando a instruc;2.o whi 1e . .
Sintaxe da inspucac whil e . . Utilizando a instruc;ao cont i nue . Sineaxe da instrucac conti nue Utilizando a insrrucdc check . Sintaxe da insrru cdc check . Camparando as instrucoes exit , continue e check
Especificacoes simples de comprimento e posici c cia instrucdo wri te . 341 Sintaxe para especificacoes simples de co rnprimemo e posica c na instrucfo wri te . . 341
. 277 . 277 . 277 . 277
Resumo . .
279 .279 . 279 .280 .283 .286 .286 . 291 . 303 . 304 .309 . 310 . 311 . 312 .312 . 312
Workshop Teste . Exercfcio 1
Dia 11
Tabelas in ternas . . . . . ..
.
.
349 .349 .349 .350
Obierivos do capitulo . Princfpios da tabela interna . Definicao de urna tabela interna Adicionando dad os em uma rabela interns util izando a instrucac append . Lendo 'dados a partir de uma tabela interna . C lassificandc 0 ccnteodo de uma tabela intem a Resumo . .
P&R .. . Workshop Teste . Exercfcic 1
.. 31 5 .315 . 315 .316 .317 .319 . 320 .32 1 .326 .326 . 327 .327 . 328 . 328 .330 .332 . 334 . 336 . 336 .337 .338 .339 .340 .341
. 344 . 345 . 346 . 347 . 347
P&R .. .
Dia 12
Tabe1as internas avancadas, Parte 1 . Objetivos de capitulo . Testando e modificando 0 conreudo da tabela inrerna Obtendo informacoes sobre uma tabela interna .. .. Determinando se uma tabela interna esta vazia .. Deterrninando 0 numero de linhas ern uma tabela interne Prograrna de exemplo que obtem as informacoes so bre uma
tabela intema
.
Copiando clades de uma tabela inrem a par.1 um a a utra . . _ . -: . Copiando uma parte de uma tabela int ema . P rograma de exemplo que copia os dado s ~n tr e as tabelas internas Cornparando 0 conreudo de duas tahelas internas U tilizando a instrucl c edi tor-ca11 ..
Sintaxe da instru~i o edi tor-ca 11 . Inserindo linhas em uma tabela interna Sintaxe da instruc;ao insert ... . Modificando as linha s em uma tabela intema Sintaxe da instru ci o modify .
Excluindo 0 conteudo da tabela interna . Utilizando free para excluir 0 conreudo da tabela interna . conteudo da tabela interna . . Utiliaando a instruljao de1ete para excluir as linhas de uma tabela interna , . Utilizando r ef r esh-para excluir
0
Uriliaando c1 ear corn uma tabela interna
.353 . 359 . 376 . 382 . 383 .385 . 385 .385 387 . 387 . 388 .388 .389 . 389 .390 . 391 .392 .393 . 395 .395 ; 395 . 397 .398 . 400 . 400 . 403 . 403 . 405 . 406 . 408
XV"
{VIII , APREHD A EM 21 DIAS ABAP / ~
SUMARlOGERAl t
C riando Iist as dos 10 melho res uti lizando append so rt ed by . Sintaxe da instrucio append sorted by . . . . . Preenchend o um a tabe la intema utilizandc co11ect Sintaxe da ins tru cjio co 11 ect . Resume . . P&R .
Workshop . . Teste . . . . Exercic io 1 .
Dia 13
Tabelas internas avancadas, Parte 2 . . . Objetivc s do capitulo
.
. . 412 . . 413 . 417 . 417 . 422 . 423 . 424 . 424 .424
. 425 . 425
. Preen ch end o uma tabe1a in terna a partir de uma tabela de banco de dados . Selecionando rmiltiplas linhas diretam ente para uma tabela intern a Adicionando Iinhas, uma por uma , utilizando se1ect Resumindo se 1ect, tabelas in temas e eficiencia .. . U rilizandc as tabelas de exemplo 1fal , 1fbi , 1f el e 1fe3 Process amento de interrupcao de con trole . . . . Utilizando as in struc oes at fi r st eat l ast . Utilizando as instru co es at new e at end of . Ut ilizando a instrucdc sum . Llrilizand o a ins trucio on change of Resumo . P&R .
Workshop . Teste . . Exercfcio 1 Exercfcio 2
Dia 14
A instrucao write . . . . . . . . . . . . . . . .
.
Objetivos do capitulo . Porrnatacao e comprimentos padra o Co mprim enros padrao Campos compactados . Eormatacao padrao . P ro grama de exemplo dem on st rand o a formatacao padrdo . Adiljoes para a instrucao writ e .
Ccmpreendendo a especificacdo de posicao . Compreendendo a especificacao de comprimento Trabalhanclo com subcampos . . Ucilizando a adifjao under . . Utilizando a adi~ao 'noMgap . . . Utilizando mascara s de edicac . Utiliza..ndo as safdas de conv ersao Trabalhand o com a formatacf c de data
Utiliza..ndo as adifjoes no-zero e no-sign
Esp ecificando decimals e arr edondamento Mudando 0 alinhame nto . Resu mo . . P&R ."..
Workshop Teste . E xer clcio 1
SEMANA 2 Revisao
D ia 15
.461 . 461 . 461 . 462 .463 .465 .467 . 468 . 470 .471 .472 . 473 . 474 . 476 . 479 . 481
".
. 4 95
SEMANA 3 Visao geral
. 425 . 426 .434 .437 . 438 .439 ". 440 . 444 .449 .451 .45 8 . 459 . 460 . 460 .460 .460
. 461
. 482 " 490 .491 . 493 . 493 .493 .494
.497
T ecnicas de Iormaracao, Parte 1
499
Objetivos do capitulo . . 499 Fo rmatacic grafica com a inscructo write . .499 Sint axe paraas adiljoes graficas para a inscrucao write .500 Utilizando a adic;ao as symbol . . .500 Utilizando a adic;ao as i con . . 501 Utilizando a adifjao as 1; ne . . 503 Exibindo os sfmbclos, leones e caracreres 1i ne-drawdisp onjveis . . 506 Formatando e imprimindo relatorios . Contro lando 0 tamanho de pfgina . Criando cabecalhos e rodap es de p agina . Res umo . . P&R . . .
. 507 . 508 .513 . 525 .525 . 526 .526 .526
Workshop Teste . Exe rdcio 1 . .
D ia 16
Tecnicas de formatacao, Parte 2 O bje tivos do capitulo . Ins rrucoes de fcrmaracio de lista .. U tilizando a instrucao new-l 路; ne . . . Utilizando a instrufjao new路page . Utilizan do new-page pr i nt U tilizando a inserucic s ki p .. . Utilizando a instrucao back Utilizando a ins rruefo posi t; on . Utilizando a insrrucio se t blank 1i nes Resu mo . . P&R . ..
Workshop Teste . Exercfcic 1 . . .
.
527 .527 .527 . 528 . 529 . 530 . 534 .536 . 538 .540 . 541 .542 . 542 .542 . 542
k.IX
9 .622 .623
... .. 559
Deixando uma sub-retina . Dermmdo variaveis Resumo .. P&R . . . Workshop Teste .
18
nassanuo
Definindo as sub-retinas em U1U gropo de Liberando um modulo de . . . . . . Testando um modulo de . Localizando modules de funcao existentes Explorandoos cornponentes do seu grupe de Iuncao . Localizando e corrigindo erros em modules de fun~ao Configurando 0 valor de sy-subrc no retorno . Utilizando a instrucao rai se . Utilizando a instrucao message. '0 rai si ng Definindo excecoes na interface . . . . , .. Inserindo automaticamente a instrucao ca 11 funct ion Resumo .
.568
.570 .570 .570
Exercicio 1 . Mc)duLlaI'lzalGajO:
ng
. . . 561 .563 .568
571
oal~anletroS para
.571 .573 .576 .578
Passando parametros . . . . . . , . . . . Criando parametros digitados . . . . Controlando como os pararnetros sao passados .. U tilizando as metodos de passagem de parametros Passando tabelas intern as como parametros . Definindo e chamando sub-retinas externas · . Resumo . . · . P&R . . . . . Workshop Teste . Exerclcio 1
.595 .595 .596 .596
eo'
.597 .598 .600 .601 .602 .604 .605 .605 .607 .608 .. 609
610 •
0
•
.611 .613
.
Workshop . Teste .. Exercicio 1
.592
597 U tilizando a instrucao include . . . · Sintaxe para a instru<sao include Introduzindo modules de Iuncao . Entendende gropos de fun~ao . Acessando a biblioteca de fun~ao Ativando urn modulo de fun<sao . . · · . . · · . Definindo dados dentro de urn Definindo a interface de modulo de Passando parametres ., · U tilizando parametros dizi tacos e nao dizitaacs Chamando modules de fun<$ao . . · . . · . . para a instro~ao ca11 functi on . · · · Executando um modulo de fun<sao de exemplo Criando urn m6dulo de Resumo. .. · . . .
P&R
.583
ng .
.628 .629 1 .638 .640 .641
.641 .644 .648 ,649 .650 .650 .651 ,651 .651
Dia 21 Objetivos do capitulo . . . ' . . . Programacao baseada em evento U tilizando 0 evento i ni t i ali zat ion . Utilizando 0 evento at sel ect i on-screen .. Utilizando 0 evento at user-command ... Validacao de dados utilizando chaves estrangeiras Validacao de dados utilizando matchcodes Sintaxe para utilizar um matchcode . Formatando telas de selecao
.
U tilizando
se1ect i on-screen .. Sintaxe para sel ecti on-screen block com frame.
Parametres de tela de selecao . . . . . . . . . .
A tela de selecao checkbox . . . . . . . . . . . Sintaxe para se1ecti on-screen checkbox A tela de selecao select -opt ion s . A sintaxe para se1set-opt i ens . Botoes de tela de sele~io . A sintaxe para urn radi obutton group Exernplo de programa de tela de
... . . .
.653 .653 .654 .655 . 6~5 ,657 .659 .666 .666 .667 .667 ,668 .670 .671 ,672 .672
.673 .673
-.,., ,~t..
IXXII
;il~\ v
~A P R E N D A EM 21 DIAS ABA P/ ~
'------ - - -----'-- - -- - -- - -- - - - - -- - -- - - -- - - ----1 Utilizando a insrrucac message . . . . . Sinraxe para a inst ruci o message-i d Resumo ' .'
.681 .682 .684 . 685 . 685 . 685 .686
P&R ...
Workshop Teste . Exercfcio 1
SEMANA 3 Revisao
687
Apendi ce A Convencoes de atribu i<;iio de nome .. Convencoes de arribuicao de D.ome de programas . Co nvencoes para arribuic do de nomes a relat6rios . Convencoes para atribuicao de nomes a p rogramas de dialogo Inrervalos de nomes de dientes : . . Apend ice B Resp ostas as perguntas dos teste s e exer cfcios Indice
Introdu~ao
.
689 . 689 . 690 .691 . 691 697
719
"
Tendo ministrado 0 curso de certif icacao em ABAP/4 para centenas de novatos e desenvolvedores experientes, tanto na SAP como em outras insritui<;oes, conbecc a ripe de prob lemas e perguntas que voce ted. quando aprender essa linguagem poderosa. Incorporando neste livre todas as m elh ores tecnicas que enconrrei, espero compartilhar essa mesma expe rien cia de aprendizagem com voce tambem. Para esse [im, este Iivro e repleto de diagramas detalhados, imagens de tela in reira, programas func ionais de exemplo, ap resentacoes (sereencams) narradas em ingles e procedimenros passo a passo . Toclos os prcgramas de exemplc tambem sao forne cidos no CD-ROM de modo que voce possa earregar e executa-los em seu pr6prio sistema. Alem disso, as utilirarios que Iorn eco para todas as minhas classes eseao incluidos no CD -RO M, mais alguns novos que desenvolvi especificamente para as leitores deste livro. o ABAP/4. apesar de toda sua simpiicidade na supe rflcie, euma comple- . 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 apenas 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 informaco 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
-Z
UI 0 leon e Sintaxe alerta para a usa adequado da sintaxe de urn codigo.
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!
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
parect da com est a
para sirnular a forma que 0 texto assume na sua tela. Variaveis e placeholders (palavras que espelham 0 que voc e realmente digitara ) aparecem em fonre monoespacoda e em ttouco. Cada capit ulo econcluldo com perguntas relativas ao assunto do dia, co m respostas do autor. A maioria do s capftulos tambem inclui u ma se~ao de 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 disccssco.
0
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 nco fozer com 0 ASAP/ 4.
0
que
scmNUMlIltr...
Muitos dos proced imentos neste Ilvro sao demonstrodo s vtilizondo screencoms . ,.. As screencoms s60 como filrn es; mostrom umo sene de telcs, induindo pressionomentos de teclo e movimentos de mouse, com umo ncrrocdo "descrifivo em ingles.
NOYO ...
milo ,.
Termos novas s60 introduzidos utilizcndo a kane Novo Terma .
.,
ENlllOI~
o kane Entrada destoco 0 c6digo a ser digifod o .
Iliol ~
a leone Soido destoco a SOldo produzido pe lo execucoo do ccdiqo.
INAtIIE~
o leone Analise de signo 0
an alise do oute r, linha por linho.
3
'.
Sumcirio .. . . . . .
Inrroducao SEMANA 1
. . . 1
..
Visco geral . . . . . .
5
Dia 1
0 ambiente de desenvolvimento ..
. 7
D ia2
Seu primeiro programa em ABAP/4
43
Dia 3
143
Dia5
o Data Dictionary, Parte 1 . o Data Dictionary, Parte 2 . o Data Dictionary, Parte 3 .
Dia 6
o Data Dictionary, Parte 4 .
217
Dia 7
Definindo dados no ABAP/4, Parte 1 .
235
Dia4
95 183
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
Dia 12
Tabelas internas avancadas, Parte 1
387
Dia 13
Tabelas internas avancadas , Parte 2
425
Dia 14
A instrucao write . .. .
461
.
349
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 Workbench 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?
e uma inst dncia R/3? que e 0 Basis?
• 0 que • 0
• 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
o •1
que
o
e clienre d,elogon ?
e R/3? e
R/3 urn conjunto inregrado de aplicativos projetado para tratar 0 processamento de dado s em grandes corporacoes. Ele foi desenvolvido na Alemanha pela empres a denominada SAP {uma sigla de Systems Applications and Produc ts for data processing - aplicativos e produrcs de sistemas para processamento de dados). .
'"
8
lA, .NT. .Dl
VOl
EN'
APRENDA EM21 DIAl ABAP/4
• WF
r:w orkflow -
[luxe de trabalho)
Quando voce ve a pclovro SAP por si mesma, ela e pronunciodo "es -ei-pl". Quando e combinodo com Dutro pclovro, e pronunciodo
• IS (Industry Solutions -
sop, como em "teclo sap" . Voce nunce deve dizer "sop" quando se referlr o empreso SAP. Sempre 0 pronuncie como "es-el-pl". Dlzer "sop" eo mesmo que dizer lieu n60 sei node sabre SAP".
• PM (Plant Maintenance - rnanutencao das insta~a~6es).
solucoes de industria)
• HR (Human Resources - recursos humanos) . • QM (Quality Management -
Estes aplicativos sao chamados areas [uncionais, areas de aplicativo ou, as vezes, modulesfuncionais do R/3. Todos Esses termos sao sinonimos . Tradicionalmente , as estruturas empresariais desenvolvern urn conjunro de apjicativos de processamentc de dado s avaliendo produ tos individuais e . cornprando Essesprodutos separadamente de diversos fabri cantes de software. Interfaces entre eles sao entsc necessarias . Por exemplo, 0 sistema de geren 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 alimentacao a partir do sistema de HR. Uma quantidade.significativa de tempo e dinheiro de IS e gasta na implementacao e manutencao dessas interfaces. a BJ3 vern predefinido com os aplicativos empresariais basicos ne cessarios a maioria des grandes corporacoes, Esses aplicativo s coexistern em urn ambiente homcgeneo. Eles sao projetados para funcionar uti lizando desde urn unico banco de dados e urn conjunto (muito grande) de tabelas. Os tamanhos de banco de dados de producao atuais variam de 12 gigabytes a aproximadamente 3 terabytes. Cerca de 8.000 tabelas de banco de dados SaO distribuidas com 0 produto R/3 pad rdo.
Demro do R/3 , hi urn ambience de tempo de execucao e urn conjunto integrado de programas aplicativos escritos em 4GLdo SAP -ABAP/4. Esses programas aplicarivos foram projetados para atender ao processamento de clades necessaries para negocios muito grandes. R/3 e seu predecessor Rf2 sao particularmente populares no setor industrial. o RJ3 e 0 sist ema em que seus programas ABAP/4 serao executados. A Figura 1.1 oferece uma representacfo 16gica disso. Fig ur a
1
1
pp
Todos os m6dulos de oplicotivo s60 escritos em ABNJ/4, que e
inlerpretodo por executovets Basis, que
por suo vez, s60 execurcccs no sistema operocionol.
BAS IS
. por que voce, preCIse
SISTEMA OPERACIONAl
E importante para
QU ai e a fLJo \;oO do R/3? A unica utilidade de urn sistema RJ3 e of~recer urn conjunto im egrado compacto, de aplicativc s empresariais de grande escala. Alguns desses podem ser vistas na parte superior da Figura 1.1. a conjuntc padrao de aplicativos integrados com ceda sistema R;3 e 0 seguinte: • PP (Production Plan ning - planejamento da producao) • MM (Materia ls Management -
gerenciamentc de materiais)
• SD (Sales and Distribution - vendas e disrr ibuicao) • FI (Financial Accounting • CO (Controlling -
comabilidade financeira)
controladoria)
• AM (Fixed Assets Management - gerenciamento de ativos fixos) • PS (Projec t System -
sistema de projetc)
gereneiamento da qualidade)
II
b
'
2
S al.l:He ~rU:IS :ilS'-lO=
_
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. Por exemplo, suponha que voce conhece ABAP/4 e tenha recebido a incumbencia de escrever urn relat6rio financeiro que resum e debitos e crediccs de cada ano fisc·al para cada fabricante na empresa. Talvez voce saiba escrever c6digo em ABAP. mas voce saberia como comecar a resolver essa tarefa? au talvez seu trabalho exija urn novo desenvolvimemo em ABAP/4. Voce e incumbido de projetar urn sistema que ofereca inf ormacoes de estoque para potenciais compradores. Se voce njio conhece os sist emas de vendas e financeiro e de disrribuicao, voce nac sabere se esta criando algo que ja. existe 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 aplicativos sao altamente integrados. Urn desenvolvedor que assume a abordagem "eu construirei minhas pr6prias tabelas e manterei minh as pr6prias capias 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
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 ocesso 0 um sistema com dodos do IDES (Internat io na l Demo and Education Sysfem), voce tcrnbem pcderc troba lhor co m as exerdcios do R/3 library. Perc lnformocces sebre-e dispcn'btlidcde de cu rsos de trelncm entc, co ntofe a SAP (ht tp ://www . s ap. com) o u la mbto n Col-
1 3 A lela de logon do R/3 solicifa 0 voce urnc senho.
EJgurp
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. 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 Enter. o sistema R/3 entao exibire uma tela de direitos autorais e, quando voce pressionar Enter, exibira 0 men u principal do R/3 como mos trado na F igura 1.4.
o
\ i
I
I! I
j
lltiliza ndo as areas conceitlJa is do sistema R/3 A partir do menu principal, vo ce pode ir para tres areas conceituais no sistema RJ3: â&#x20AC;˘ a area Applications
J
-j
I
!
,
.~.
â&#x20AC;˘ a area Basis â&#x20AC;˘
0
Development Workbench
._ - -'--
,.. r 12
~1
APIENDA EM21 DIAS ASAP,. Fig ura J 4
o menu princi pal do R/3.
1~ R' 9 It . . . .lcVo'c< - - - ., _ - . , _ _ 1_
:" 1
~.::r~-:+- ~
1,1,,1
~·tIolJ · :..,., .i ~ ').;
;: _. -~r_
~ iHl;ri n ~ ~i~ :: ";::-.'_~ ;. ~
....•. '. " '. ........·t -'•• .,;.;
~
.'- ; " ' ".
,EI
ESE
LV
ITC
-'e'.. .1 Figura] 5
a cominho de menu 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 seu tempo dentro do Workbench. Para acessar 0 Development Wo rkbench, escolha 0 caminho de menu Tcols-c-Developrnent Workbench. Entretanto, seu c6dig o devers ler ou atua lizar as clados de aplicativo e, portant o, sera des tinado a to mar-se parte cia area de aplicativos. Com isso em mente, vamos 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 counting->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).
.lit
Figur a]
A...--
o cominho de me:nlJ otuolizoo registro-mestre de um fobriconle (p orte 2).
14
APREHDA EM21 DIAS ABAPI4 F igura 1 7
A lela Vendor Mosler Update Trcnsocti on: Initial.
Fig ura 1 9
@'.: sr ;_
Solvondo oltero~6e s no eneJerer;o do fobriconte.
[Ill
f! -'
G.- ' _-
~ .s,.o..: llifIl · : .· , · -, :'
.• -" . -.- -' ~' -' ... -
.1.".. ,1
.,::,. _.',.
I __._ d o:" . D, x -~ M : i:l ~ o ~ ,:rq . . '. , ~~·;i.;i;;'I~I~"ld·l lio~;t ,_'\1 ~" " ;~.;-' f':'~'~/~" ... " .> _.
.. ' .. "
'.-~','~ - .~ ':-'-
II"
",:
.-.~ ~i.--<'•• ; :. " l"'::-
[~;?:;;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....
~, ..ht..
I"]
Io/fIlI·';1
.-
.-,'
~.
·tf~~~~~}~~~~~~f~;·;{t:~}tii~~ E..i..Q..ura 1 8
figur "
A tela Vendor Moster Update Tronsodion;'
A Initiol Screen
Address .
1 10
, ,"
~£':
.1<,, ' >< '
' ~ ,.,.. ...
con ~rmo
q ue 0 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 semelhan res.
Desco b rio do a interlace com A Figura 1.11 mostra de tela iden tificadas.
0
Q
usu6rio do R/3
men u principal novamente com as areas importantes
16
APRENDA EM 21 DIAS ABAPi4 Quando voce ccloco a pante iro do mouse sab re quoiquer batao par alguns segundos , 0 R/3 exlbe ume dice de ferromenta descrevendo suo fun<;ao. No R/ 3 , isso se chama info rma<;ao rcptdo (quick info). Elo contern uma breve descricoc do batao e a teclo de f un<;aootribuldo a
Cada t ela do R/3 contem estes elementos :
• A barra de titulo: contern
0
titulo cia tela atua].
• A barr~ de menu: a conteudo ciabarra de menu altera-se com cada tela. P esquisando as menus dentro dele, vo ce pode descobrir todas ' as 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 alte ram. .
• 0 campo Command: aqui voce digita comandos a serem executados. Por ex~mplo, voce po de efetuar 0 logoff digitando { nex nesse campo e pressionando a teela Enter. A se<,;ao "Utilizando 0 campo Command" descreve esse campo em mais detalhe.
• A, ~arra de ferramentas Standard: contem a campo Command e uma sen e_de ~ot6e~, Eles nunca se alterariio na aparencia, posicao 0'; fun<,;ao, e estarao presentes em cada tela . Algumas podem estar acinzen radas por fora se sua funcionalidade estiver atualmente indis p onfvel.. • A b~rra de ferramentas Application: altera -se com cada tela. Ex ibe as botoes que dec a voce acesso rap ido a irens de me nu des sa tela . .
ele.
• Menu de interface: permite que voce pers onalize as caracterfsticas da interface com 0 usudrio, acesse a area de rrans fer encia do Windows e gere imagens. A seC;ao a seguir abordara mais profundamente os recursos do menu de in terface. • Area Screen: esta e a area grande no mei o da t ela que exibe os dados de relat6rio ou a tela de urn programa de dialogo . • A barra de status: exibe mensagens, 0 ID de sistema, 0 numero de sessj.o, 0 numero de cliente, 0 indicador do modo inserirl sob rescrever e a hora! data atua]. Voce pode ativar e desativer a maioria dos elemento s da tela. Se sua tela nao se parecer au se comportar como descrito neste capit u lo, siga as instrucoes na proxima sec;ao para corrigi-la.
Traba lhando com Figura "] 1 1
Barra de
titulo
Compo Command
0
menu de interface
o leone corn tres cfrculos coloridos no canto superi or direit o da janela do R/3
e chamado menu de interface. Com ele, voce pode pe rsonalizar a interface com
Elementos imporfon tes 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
18
01.
AI/EHDA EM 21 DIAl ABAP/.
De urn cliqu e na guia Ge neral e altere suas configuracoes para coinc idir corn . as mcstradas na Figura 1.13. Pazendo isso, voce assegura que a sua interfa ce com 0 usuririo ficard par ecida e se comportara como descrito ne ste livre. 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.
JA Jll
:Dr
VD'
IEN- .J ~ ..-
.
Figura 1 14
~!i~i~J,
Calocondo marcas de selelOoo no caixa de selelOoa Co lors In
Lists.
.~"",~ ~~ •..• ,,, . ~?,
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 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 no linho supe rior dos tedos em seu tecla do. As teclcs de fum;ao 13 0 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
°
F ig u ra 1 13
As op¢es de Gen eral Inte rfa ce .
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 comandos 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
A opcac Lines In List s ativa ou desativa a exibicao de linh as verticals e
rran sacao.
horizontais em seu relarorio de saida. Essa opr;ao deve estar selecionada para que voce veja 0 efeito das insrrucoes graficas de linha que voce codificard mais tarde neste livre .
Por enqucnto, pense em um progromo como ume trcnsc ce o. O s do is sa o grosseiromente eq uivole ntes. Quando voce inicic umo trc nsocc o, voce est6 inician do urn progr oma . Em vez de escolher urn co minho _de menu pora inicior uma tronsac;o~, voce 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).
NOYO ....
milo"
20
AP' ENDA EM 21 DIAS ABAPI4
Para localizar 0 c6digo pa ra qualqu er transacac , voce invoca a tr ansacl o e enrao escolhe 0 caminh o de menu Sysrem- c-Status. A tela System:_Status sera exibida. codigo de transacao aparecera no campo Transaction. Por exemplo, a partir do menu principal R/ 3, escolha 0 caminho de menu A ccounting-c- Financial Accounting->Accoun ts Payab le. Vo ce vera a tela Accounts Payable. A partir daqui, escolha 0 caminho de menu Ma ste r Records- >Display. Voce vera a tela Syste m:_Status . Escolha 0 caminho de menu Systern -c-Srarus . Aparecerf a tela System: _Status. N o campo T ransaction esti 0 codigo de transacio para essa tela: FK 03. . Agora que voce tern 0 c6digo de transaca o, pede iniciar essa transacao de qualquer tela digitando 0 camp o de com ando I n seguido pelo codigo de transacao. Por exem plo, re tome ao men u principal (de urn clique no bo ta o Cancel duas vezes e emac de u rn clique no bono Back). No campo de cornando digite / nfk 03, enrac de urn clique na tecla Enter. Voce imediatamenre vera a Display Vendor: Ini tial Screen.
a
Em qua lquer tela, voce pode encontrar 0 c6diga de trcnsocco do troosccec etuel. Pera fozer isso, escolho 0 cominho de menu System- >Stotus.
Enten d en d o
0
Basis
NOVO ~
Basis e como um sistemo operocional para R/3. Ele fico entre 0 c6digoABAP/4 eo sistema cperoooncl da computodcr. ASAPgosta de chcmc-lo middlewore porque ele fico no mete, entre 0 ABAP/4 e 0 sistema operacionel.
lUMO "
-
o
-
--~-
e
Basis 芦para prograrnas ABAP/4, enquanto a Windows para programas Windows. Basis oferece 0 ambiente de tempo de execucao para programas ABAP /4 . Sem de, programas ABAP/4 nao pod em ser executados. Quando 0 operador inicia 0 R/3, voce pode cons iderar que ele est a iniciando 0 Basis. Ele e uma colecsc de programas de sistema R/3 que apresen ta uma interlace a voce. Utilizando essa interface a usuario pode iniciar programas ABAP /4. Para instalar 0 Basis, urn instalador exe cut a 0 pro grama r3 in st no nfvel do pr ompt de comando do sistem a operaeional. C om o na maio ria das in stala~6es, essa operacio erie uma esrrurura de diret6rios e copia urn conjumo de executaveis para ela. Esses executaveis torn ado s juntos com o uma unidade fo rm am 0 Basis. Para inieiar 0 sistema R/3, 0 oper ador digita 0 comando starts ap. Os executaveis d o Basis iniciam e permanecern sendo executado s, aceit ando solicitacoes do usuario para execur ar p rogramas ABAP/4. Programas ABAP/ 4 sao executados dentro do ambienc e protetcr do 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. as programas ABAP/4 nfo acessam fun~6e s de sistema operacional 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 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. Basis torna os programas ABAP/4 portateis. As plataformas em que o R;3 po d e ser executado sao mostradas na Tabela 1.1.
a
o
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 cdcptou-o para 0 ombientecliente/servidor_Para fczerisso, 0 SAP criou o Basis. Suo criol;oo permitiu que 0 c6digo em ABAP/4 existente funcionosse em outros plctoformos. Se voltar para a Fi gura 1.1, voce podera ver 0 Basis co locado entre 0 ABAP/4 e 0 sist ema operacional. 0 ABAP/ 4 DaO pode funcionar diretamenre em urn sistema operacional. Ele exige urn conjunto de programa s (coletivam ente .chamad e Basis) pa ra carre gar, inrerprecar e usar buffer em sua entrada e safda .
Sistema operational
Hardwa re suportado
Fro ntaEnd s suportados
Ban cos d e dados suportados
AIX SINIX SOLARIS HP路UX
IBMSNISUN
W;n 3.1 /95 / NT OSF/ Mol;f
Inform lx-Online
D ;g~ol .UN IX
Bull
Windows NT
o Basis, sob certo aspecto, e como 0
ambience Windows. En quanro 0 Windows estive r sendo executado , ele ofereee urn amb ience em que os program as Windows po dem fu ncionar. Sem 0 Windows, 0 programa escrito para o amb iente Windows nao pede ser executado.
Di gital HP
DB2 for AIX
OS/ 2
O rccle 7.1
Macintosh
ADABAS D
W;n 3. 1/ 95/NT
BulllZen;lh
OSF/ Mot;f
Orode 7.1 SQl Server 6.0
HP (Inlel) SNI
OS/2
ADABAS D
IBM(Intel)
Macintosh
AT&TCompoq
Diqltcl (Intel) Dcto-Geoerc l
OS/400
AS/400
W;n95 OS/2
DB2/4 00
a
22
...• <
"R END A EM 2\ DIA l ABIP/4
Por exemplo , se voce escrevesse urn programs ABAP/ 4 n o Digital UNIX
com urn banco de dados Info rmix e uma interface OSF/Motif, esse mesmo programa deveria sec executado sem modificartio em uma mdquina Windows NT com urn banc o de dados Oracle e uma inte rface Windows 95. Ou, ele pode sec executado em urn AS/400 com urn banco de dados DB2 utilizandc OS /2 com o front -end . A SAP tambem oferece urn co njun to de [erramentas para adm inistrar 0 sistema do Basis. Essas ferramentas executam tarefas como monitoracao do desempenho do sistema, alem d a con figuracso e manutencio de sistema. Para
acessar as [erramentas de administracf c do Basis a part ir do menu principal, escolha 0 caminho To ols-> Adm inistration. Eis alguns exemplos de [erramentas de adminis n-aci o do Basis: • Para ver urn a lista dos servidores atualme nt e sendo executados em seu sistema R/ 3, escolha 0 caminh o de menu Tools->Administration, Monito ring-> Syst em Moniroring-> Servers . • Para visualizar 0 log de sistema atual, escolha Tools-> Administration. Monitoring->System Log. • Para ver a esratisti ca de desempenho de sist ema, execu te a transacao
,,03 (digite 105103 em Co mmand Field), escolha This Application 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 resposta de usuario para os ultim os 15 minutes (veja em A v , Response
Time).
o Basis foi p rcj etado para ser executadc em uma configuracac clien-
chama uma sub -retina transfere 0 controle para a sub-r otina e nao pode ser executado em qualquer processamento at e a sub-retina retoma r 0 controle. Os programas cliente e servidor sao processos independen tes. Se 0 cliente envia uma soliciracao ao servidor, ele eSta livre para executar outre trabaiho enquanto espera a respcsta. A Figura 1.16 mostra as rres configuracoes cliente/servidor padrao . 0 R/ 3 pod e ser modelado para trabalhar em qualqu er uma dessas configuracoes. Quando 0 programa cliente e 0 servid or sao execu tados no rnesmo cornpu tador, a cccfiguracao e referida como cliente/servido r em urna camada. [Uma camada (tier) e 0 limite entre dois computadores.] Quando des sao execurados em cornputadores diferentes, a configuracao e referida como eliente/ servidor em duas camadas . Urn programa pode func ionar como urn cliente e como urn servidor, se ele tanto solicita informacoes como responde as solicitac oes. Quando voce tern treS programas em comunicaclo, como e mo strado na Figu ra 1.16. a configuraliaO e chamada client e/ servidor em tres cam adas. A configuracao cliente/ servidor permite que 0 sistema R/3 divida sua c.arga com mul tiple s computadores. 1 550 oferece ao cliente a capacidade de ajustar a escala ao poder de processamento do sist ema para cima ou para baixo simplesmente adicionando Dutro computador a u ma configuracio existence , em vez de substiruir urn {mica computador que executa todo 0 processamento, como ocorre no mundo des mainframe s. F igmn 1 16
ConfjgLlro~6es ~
NOVO .... llRIIO
r
0
outre [ve]o
0
Solicitocc c de
Progrom o
die nte
Resposto
dLios e Ires comodos.
s..:.dot ... d.... CI>IftC>do> DDis , ompvIOllo,u
._. ......"""-
inform oc;60
c1iente/servidor. Progromo 1
_
....... .....
Figure 1.15).
AeSSEmOo do sistema
Limo.
_
C1iente/servidor soo dai s progremo s que conversam um com
flgu rg 1 1 5
dienle/servidor em
... _e-acIo
te/servido r.
Entenderidc.c.cliente/serxidcr
23
DlH.O....BIEHlE DEDESENVDLVIMENTD
Progro mo 2 Progromo 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
..f=f-l-I-- -} •-
,
24
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 camadas. A'arquiterura de sistema R/3 aparece na Figura 1.17.
~rvidor
de opresentoc;60
o
• A quanridade de memoria que cada processo pe de utilizar • 0 perfodo de tempo em qu e urn usuario pode ficar inativo antes de ser automaticamente desconectado
o
e
servidor de opresento~ oo reo lmente um progroma identificodo como sapgui . exe. Normolmente, elee insto lodoem umoestccsc de trobolhode uscorio. 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 dentro de ume janela. Esso jonelo e comumente coohecidc como SAPGUI, ou como interface com a usu6rio (au simplesmenfe, interface). A interfoce oceifo entrada do usvoric no forma de pressionomentos de tecla, cliques de mouse e teclos de func;oo e envlo esscs sclicltccoes 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.
NOVO ...
TEmO "
1..
D1A1:0 AMBI'tHTE lit DEStft10lVI/IIl::NTL
APlEHOA EM 21 DiAl ABA'"
servidor de aplicarivo existe para interpretar programas ABAP/4, e eles somente 5[0 executados nesse servidor - os programas nao fun cionam no servidor de apresentacso. Urn programa ABAP/4 pede iniciar urn executive! no servidor de apresentacao, mas urn prograrna AB AP/4 nao p ode ser execurado nele. Se seu prograrna ABAP/4 solicirar inf ormacce s do banco de dados, servidor de aplicarivo forma tara a solicitacsc e a enviard ~o servidor de banco de dados.
°
Descobrindo
0
servido r d e ponco de dodos
F i g u ra] 17
0 servidor de banco de dodos e um con junto de execvtovels que oceitc solicltocoes de banco de dodos do servldor de op licotivo. Essos scllcttccces soo 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.
KOVO....
A orquiteturo do'
sistema R/3.
Serwdor de gptl!5 entg¢O
ServiOor de beeee de dodc»
mwo ,.
Hoinormalmente urn computador especjfico dedicadc a abri gar 0 servidor de banco de dados; e 0 RDBMS pode ser executado nesse computador tam bem, 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 configurot;6es do sistema R/3.
o servidor de oplicotjvo NOYO '"
e
Urn servidor de aplicativo urn conjunto de executoveis que interpreta ccletivomente 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.
milD r
Cada servidor de aplicativo tern urn perfil que especifica suas caractertsticas quando ele inicia e enquantc esta sendo executado. Por exernplc, urn perfil de aplicativo servidor especifica:
26
-
--
-- - DIAL 0 AMBIENTt DEDESEHVOlVIMENTO
I "RENDA EM 21 nus ABAP/4
Em uma configuracao clienre/servidor em tres cam adas, todos a s servidores de apresenracio, de aplicativos e de banc o de clados sao executados em mdqu inas separadas. Essa e a configuracao mais comum para sistemas grand es e e comum na ar ea de pro ducao. Na dist ribuicao cia configu raclo de apresentacao, 0 aplicativo e a s servi dores de banco de clados sao combinadas em urn co mp utado r e os servidores de apresenracao sao executados separadam ente. 1550 e utilizado para sistema s men ores e {requentemente e visro em urn sistem a de desenvolvimento. Na configuracac cliente/servidor em duas camadas, as servidores de apresentacao e de aplicativo sao com binada s e 0 servido r de banco de dados e separado. Essa configuracac e uti lizad a em conjuncao com outros servidores de aplicativo. Ela eaplicada para urn servidor em lote quando este esta separado dos servidores online. Uma SAPGUI e instalada nele para oferecer controle
local.
Arquitetura do servidor de.npllcntiza.;
NOVO....
r
0 fermo poisogem do sistema R/3 signific o uma descrtcec do ncme rc de
URMO
sistemas dentro de umo Instclccoo de SAPe a forma como eles s60 designados, tois como desenvclvirnentc, teste ou prodocec.
Definlndc
uma instfmcia R/3
NOYO ~
Quendo voce ovvir o!guem utlllzcr 0 po lovro insfdncia , no maio rio de vexes essa pessoo estero se referinda 0 um servldor de ap Jicotivo. 0 le rma instdnci o sin6nima de servidor de apficatiYo .
TtRMO ~
e
o termo instdnciacentral refere-se ao servidor de banco de dados. Se urn
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.
_
a s componentes de urn serv idor de aplicativo saO mostrados na Fi gura 1.19.
Ela con sisce em urn dispatcher e multiples p roc essos de trab alho. T odas as solicitacoes provenientes de servidores de apresen taci o sao dir igidas prim eiro eo di spatcher. 0 dispatc her grava-as prim eiro na camada do disp atc her. 0 dispatcher extrai as soliciracces cia camadautilizando 0 algoritmo primeiro a entrar, primeiro a sair . Cada solicicacao e entao alocada para 0 primeiro pr oces so de trabalho disponivel. Urn proc esso de trabalho trata uma solicitacao por vez. Do servidor de cplicotivo _
~e~d~ ~e ~l!::a~vo_ _
A ofquiteturo do servidorde opJicotivo.
_
I
â&#x20AC;˘
1 I I I I I
Definindo um sistema R/3 A definicjo mais simples de urn sistema R/3 e <Cum banco de dedos", Em urn sistem a R/ 3, ha somente urn banco de dados. Para expandir a definicao, 0 R/3 e considerado como sen do to dos as cornponentes anexados a esse primeiro banco de dedos. Urn sistema RJ3 e compos to de urn banco de dados servidor qu e acessa urn unico banco de dados, urn au mais serv idores de aplicativo e urn ou rnais servidores de apresentacao. P or definicao, urn sistema R/3 consiste em tcdos os com ponentes ane xados a urn banco de dados . T en do urn banco de 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 dados) atr ibufdo para 0 desenvolvimento, urn ou mais sistemas designados para t estes e urn at ribuido para a producao.
27
Em te rm os mais gerai s, uma instdncia eurn seruidor. UIDa in stan cia eurn con junto de process os do R/3 que oferecem servic e s ao sist ema R/3.
Figura 1 19
Quando todo s as servidores sao combinadas em uma unica maquina, voce tern um a configuracao central. Isso raramente evisto porque des creve urn sistema R/3 independent e com apenas urn unicc usuario .
I
I I
I I I
Area de rolagem Mem6rio estel'1dido
I I
1
_
-- ---- - -- - - -
Perc a servldor de banco de dodos
P ara executar qualquer processamento para uma solicitacio do usuario, urn processo de trabalho precise enderecar duas areas espe ciais da memoria: 0 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 ro lagem e uma area de memoria que conc ern as infor rnacoes sobre a execucjo des program as. .
Entendendo um contexto do \lSl!orio NOYO
r...
URMO ~
e
Um contexto do usu6rio memo ria alo ca do que co ntem as corcctertstlccs de urn usucrtc que estc con ecto do 00 sistema R/3. Ele ormozeno as lnformccoes
necessa ries para 0 R/3 sobre a usu6rio, co mo :
I
~r
,..,
- --- - --- __
r-=--~~~~~------- --~~
I,
,
~~
~~
...
~-- ~~~
DIA I: 0AMBIflffi. DE OEStNVOlYIMENTO
28
I
J------.-:-----~==:::=.-
APIEHDA EM 21 DIAS ABAP/4
Um posse de di61ogo
Fjgurg 1 20
• As configuracoes atuais do usudrio
•
0 no me dos programas que
I
I
Pcsscr do Initiol
FK02
Screen parc 0 Address
• As autorizacces do usu aric 0
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 em mais detalhes nas secoes a seguir.
Foboccnte 0
~yo ....
pare 0
•
-,
Processo de Iroholho
-+--+~
Tanto a area de ro lage m como 0 contexte do usuario representam urn papel importance no processamento de passos de urn dialogo.
Entendendo os passos de dialogo Um posso de die /ogo
e quolque r clterocc o de tela [vejc 0
e
I
I
\.. \
'
'1..0»5 I ,
05 consultores de Basis costuma m vscr
lEma r
lnklo do po sso de , di6lo go
0 pon teiro d o programa arual
tel utlllzodo.
c:::l
Dispatcher
O s valor es das varieveis
0 termc 6reo de rolcq em referindo -se a todcs a s 6rea s de rologem pa ra um usu6rio ou oinda todos os 6reas de rologem em um servidcr de cpllcof ivc. Normalm ente, voce pode de duzir 0 significad o prete ndido a po rtirdo cont exte em qu e
= = = ==
,
Urno orec de rolcgem e 0 mem6rio que e c locodo po r um pro cesso de trobolho pora umc instc ncio de um progromo. Elo ormozeno informoc;6es necessc rics R/3 sabre 0 execvcco do prog romo , como;
T o da vez que urn usuari o inicia urn programa, urna area de ro lagem e 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.
NOVO ..
•
\
• As alocacoes de m emoria dina-mica •
Enderecc
ADO
c1 Endereco
Entendendo uma area de rolagem ftRl!O ~
Address Screen
lnif.o IScree n
Screen pode ser . con siderodo um posso de die/ogo.
usuario esti atualmente utilizando
29
\ i
!
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 .p r6xima tela. Por exemplo, quando 0 usuario dol. urn ch~ue DOl tecla Enter n o Change Vendor: I nitial Scre en, ele in icia urn passe de dialogo e a amp~lheta apa rece , impedindo out ra entrada . 0 p rograrna sapmf02k recupera as infermacoes 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 . Ha quatro maneiras de
0
usuario poder iniciar urn passo de d ialcgo. A
partir do SAPGUI: • Pressionar Enter. •
Figura 1.20) .
Um posse de di610ga utilizodc pelcs ccnsultores de Basis como umo vnidode de medida pa ra 0 tempo de respcstc do sistema.
Pressionar uma te cla de funr;ao .
• Dar urn clique em urn bono na te la. • Escolher urn item de m enu. Eim port ante para 0 prog ramador de ABAP/4 conhecer sa bre pass os de dialcgo porque eles formam uma un idade discrera de processamento para um
programa ABAP/4.
.
---
'-T'..{ ' . .r:
f
-
II
I
I
,
1
30
OIA 1: 0AMBIEHTE DE DESENVOLVIMENTO
I 'PREND' EM 21 DIAS 'UPI'
Entendendo
0
processamento roll in/roll out
NOYO Ilrrr..
Urn programa ABAP/4 ocupo openos urn process o de trobolho pora urn passo
lERMO
de di6!ogo. No ccmeco do posso, a 6rea de rologem e
r
0
31
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 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 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 d o di6logo.
contexte do usu6rio
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. Fi g u r a 1 21
o processo menlo roll 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 [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 servidor de aplicativo. Par exemplo, urn PC OS/2 e urn PC Wmdows p odem cc nectar-se ao m esm o servidor de aplicarivo ao mesmo tempo.
urn
.,.
~~
-
Durante 0 roll in, as ponteiros para a area de rolagem e 0 contexte do usuario sao ocupados no processo de trabalho. 1550 permite ao processo de trabalho acessar os dados nessas areas e entao executar processamento para esse usuario e tal programa. 0 processamento continua ate 0 programa enviar uma tela ao usuario. Nesse memento, as duas areas sofrem roll out. 0 roll out invalida as pocteircs e desassocia essas areas do processo de trabalho. Esse p rocesso de trabalbo agora esta livre para execurar processamento para ourra solicitacio. 0 programa esta no memento apenas ocupando memoria e nac consome nada da C PU. 0 usudrio ve a tela que foi enviada e logo enviara ourra solicieacsc. Quando a proxima soliciracjo e enviada do usuario para con tinuar 0 processamento, 0 dispatc her aloca essa solicitacao para 0 primeiro processo de trabalho disponivel. Este pode ser 0 mesmo ou urn processo de trabalho 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 proxima tela ser moserada, ou ate 0 programa term iner. Se outra tela for enviada, as areas novamente sofrem roll out. Quando 0 programa termina, a area de rolagem e liberada. 0 contexte do usudrio permanece alocad o ate 0 usuari o efetuar logoff. Num sistema com muitos usudrios utilizando mu ito s prcgramas, apenas alguns desses programas estarao ativos nos pro cessos de trabalho de cada vez , Quando eles nso estiverem ocupando urn processo de tra balh o, des sofrem roll OUt para a mem6ria estendida e apenas ocupam a RAM. Isso poupa a CPU e permite ao sistema R/3 alcancar urn alto throughput de transacio.
Entendendo os com po ne ntes de urn processo de trqbolho Cada processo de trabalho tern quatro componen tes (veja a Figura 1.22). FigurA 1 22
Os componentes de um proceno de
trabo/ho.
Interprefodor do ABAP/4 Handler de to refo
Interpretodor de telo Interface de bonco de dodos
Cada processo de trabalho
e composto do seguinte:
• Um handler de tarefa • U rn interpretado r de ABAP/4 • Urn interpretador de tela • U rna interface de banco de dado s Todas as soliciracces passam pelc handler de tarefa , que entao afunila a solicieacio para a parte apropriada do proce sso de tr abalho. interpretadores interprerarn 0 codig o do ABAP / 4. Note que hi dois interpretadores: 0 inrerpretador do ABAP/4 e 0 int erpr etador de tela'. Hi
as
__.. . .__.. ._.. -__.. ._........_. .-. _. _.. ._.... _
r------------~--
32
'W .....--
D~ h 0U BiEIffi DEDESENVDl~MÂŁ", O
APRENDA EM 71 DIAS ABAP/4
realmente d uas varialjoes de ABAP/4. Urna e a linguage m de p rocessamento de dados do ABAP/4 completamente desenvolvida e a out ra e u ma lingu agem muito especializada de processamemo de tela. Cada uma delas e processada pelo seu pro prio interpretador. A inter face de banco de clades trata 0 trabalha de comunicacdo com 0 banco de dado s.
b"!P
Fjgura 1 23
a usu6ria digifo a d iente de logon no tela de logon no compo Client.
Entendendo os tipos de processo de trabalbo Hoi sere tipos de processo de trabalbo. Cada urn deles trata urn tipo de ripe de processo de trabalho e 0 5 tip os de soliciracso solic iracao especlfica. que ele trar a sao mostrados na Tabela 1.2.
a
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
S (Spool)
Imprime so licitac;ees de spool
Fjg ura 1 2 4
Esto lobelo ~
E (Enqueue)
Solicitoc;5es de bloqueio 16gico
M (Message)
Roteio as men sagens entre os servidores de op licotivo den tro
depen dente de di ente porque 0
de urn sistema R/3
primejro ccmpc
G (Ga teway)
Entendendo
do tipo COO.
Afunila a s me nsagens dentro e fora do sistema R/3
0
-- ....1
~ ~ ~.., _ ....- -_ ......_-.~--~-------
c1iente de logon
o
e
termo cliente de logon DaO tern nada a ver com Cliente/Servidor 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.
~
l' -'
g-"
~ _ ,", - . ~
,: ~. ~ _~ , ....
_
I.
33
l
/
-
·"'-'~'-r --·-·-" .-r- _..".....
34
":"\
r>
-r> r~·-;-,-...,.---~~-
--- _ --
;W _
-w
.,....
APRENOA EM 21 DIAl ABAP"
OIA1:0 AMBJENTE DEDESENVOlVIMHHO
£laura 1 25 Esto tobe/o e
a
mecan ismo de clience de logon divide as linh as dentro de uma tabe1a de dep endenc ia de clien te em grupos distintos. Pa ra acessar urn conjunto diferenre de da do s, 0 usuerio efet ua lo gon e especifica urn nume ro diferente de' cliente.
independ ente de elien/e, porque 0 prime iro compo n60
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 .
A Figura 1.26 mostra como este camp o afeta 0 usuario. Na Figura 1.26, 0 usuari o efetua lo gon para 0 cliente 800 e executa 0 programa mostrado. Este programa seleciona linha s de tabela Hal e emite 1fal -l; f nr. Quando esse programa e executado, so men te dua s linhas sao selecionadas: apenas nos casas onde mandt e igual a 800. 1550 acontece autom aticam ente porqu e 0 primeiro campo na tabela ede tipo CLNT. Hoi cinco linhas na tabela, mas 0 programa apenas emi te essas linhas onde mandt e igual a 800. Se 0 usuario est iver para efetuar logon para 0 cliente 700 e executar 0 mesmo programs, tr es linhas de dados seriam localizadas e seriam emitidas. Se 0 usuario estiver para efet uar logon para 0 eIiente 900, apena s uma linh a de dado s seria localizada. Figura 1 26
o efeito do dependencio de cliente.
o ulv6rio
l ela Rl3 log on
elelllO logon e Clienle
[]QQ]
f---...,.-~ ~ e;:~:e
Jcbe lc lFAt
MANDT 700
700 80 800
' @] Sardo
: :
,
100 : 101 :
,
lIFNR I 11
12
100
1 1
o
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 . Jul ieta co nfigu ra a s clados para seu tes te, executa 0 re latorio e obtem uma sarde. Romeu trabalh a na sala ao lade, mas deviclo a suas tendencias anti-sociais esti feliz ignorando que sua tr ansac ao utiliza as mesmas tabe las que 0 relat6rio de Jul ieta. El e execut a sua tra nsa cac e atuaiiza os dados . Romeu obteve 0 que ele que ria, ma s Julieta entao modifica seu c6digo e executa seu programa novam en te. Sua safda difere da ultima e m uitas diferencas nao resultam de suas alteracoes, ma s das aheracoes de Romeu. 0 que tem os aqui e uma falha de comunicac t o . Se as tabelas u tilizadas p or Rom eu e os programas de Julieta fossem depend ent es de cliente , eles poderiam con ecrer-se a clientes separados, configurar 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 conforto de sua sala e isolado s de seu companheiro de tr abalho. Par a torn ar suas rabelas dependences de clien te, eles apenas precis am ter ma ndt co m o 0 primeir o cam po e 0 sist em a R/3 cuid ara do restc. Quando registros sao adi cionado s a tabela, 0 siste ma automaticamente move 0 cliente de logo n at ual no campo ma ndt quand o 0 re gisrro for enviado ao banco de dados . Suas instrucoes se l ect em Open SQL somente retornarao as Iinhas em que 0 numerc de clience na tabela for igual ao seu num ero do client e de logon atual. 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 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 funcionalidade divergences com 0 m esm o con jun to de programas simultaneam ente se
..
35
r 36
-r-
r r
--- -,.-.;- r . t">:
~"
I 'PRE"" EM 2\ DI'S 'BAP/~
DIA 1:0AMB\Uffi DE DESEHVOlVIMENTO
efetuarem logon 'com diferentes clientes de logon. As atualizacoes feitas pa r uma equipe nao alterarac as dados que pertencem aoutra equipe. Tambem poderia existir no sistem a de teste urn treinamento de cliente. Os alunos poderiarn conectar-se a urn cliente e as tesradore "s poderiam conectar-se a outre. Os dois teriam executad o 0 mesmo conjunto de programas, mas a s programas acessariam conjuntos de dados independentes.
de buffer reduz a carga no servidor de banco de dados e no vfnculo de rede entr e 0 banco de dados e os servidores de aplicativo e pede acelerar 0 acesso ao banco de dados de 10 a 100 vezes mais. Servidor de ccltccnvo
F; gllrg 1 27
o ccmponenle de
Processo de frobolho
interfac e d e bonco de
..2
••
dodos do processo de 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 sistemas de desenvolvlmento e de teste, ma s roromente voce vera mois de um cliente no producdo.
( Nota
Uti Iizoad 0
0
Open SQuL....,d...,o.........S""A:\LP
E
trobe/he"
-0
•
'U c
1=\
Ope n SQl
IIF
1
SQL native
_
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 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 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 - --
~D B
- - - - - -- -
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 alternar de urn banco de dados Oracle para urn Informix, 0 banco de dados poderia ser alrerado e seu c6digo ABAP/4 cont inuaria a ser executado sem nenhuma alteracao.
Buffer de dodos
I
Servrdor de
bcncc de dcdo5
8 Troto me nto o!ltom6tico de c1i ente A terceira vantagem de utilizar Open SQL eo"tratan:zento automdtico de cliente. Com Open SQL, 0 campo de cliente automaticamente e ocupado pela interface de banco de dados. Isso ofereee as suas equipes de desenvolvimento e de teste 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 informacoes do banco de dados no servidor de aplicativo. Quando as dados sao lidos do banco de dados, eles podem ser armazenados em buffers no servidor de aplicativo. Se entao for feita um a solicitacao para acessar os mesm os registros, estes ja estarao no servidor de aplicativo e a solicitacao sen satisfeita a part ir do buffer sem necessidade de ir ao banco de dados. Essa tecnica de use
Resu m o • 0 R/3 sup~rtamultiplas platafo rmas de hardware, sistema operac ional e bancos de dados .
• Alem de permitir SQL native, 0 ABAP/4 oferece Open SQL. Utilizar O pen SQL torna seu codigo por tavel, mais rapido e oferece tratamento autom":itico de cliente.
37
--- 38
_
W'
'W" _
-
.w DIA 1, DAMBIEHTIDE DEIENYDlYIMENTD
APIl:ENDA fM 21 ens ABA P/4
â&#x20AC;˘ 0 cliente de logon perm ite que mulriplos grupo s de dados independentes sejam armazenados ria rnesma tabela. Os dados que voce acessa dependem do numero de c1ientes que voce digitou quando efetuou lo gon.
P&R
o o
o o
Po sse copiar urn clienr e existente para um novo cliente?
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 normalmente tern p elo menos urn clienre de refer en cia e urn clience de trabalho. Seus clados "validos" sao man tides no elien te de refe rencia. Eles sao copiados para eriar 0 cliente de trabalho. Se voce COHamper 0 clien te de trabal ho, 0 consultor do Basis pode restaurar seu estado original copiando 0 cliente de referencia novam en re. 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? Sim . Voce pede adicionar as palavras-chave clientspecified em qualquer inst ruc ao de Open SQL. Por exemplo, pa ra ler os dados no cliente 900, voce escreverie 0 seguinte codigc: sele ct
* from tb l cl ient specified whe re mandt = '900' .
Teste 1. Eseolha 0 caminho d e menu T ool s-> Ad ministr ation, Monitoring ->System monircring-> User overview. Qual eo c6digo de tr ansa!S3.o para essa transacio? 2. Qual e 0 codigo de transacio par a 0 menu principal R/3 ? (0 menu 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-Development Workbench? 4. Se hi treS sistemas R/3 na sua paisagem de siste ma atua], quantos bancos de dados existem ? 5. Se urn sistema R!3 tern dais servidores de aplicativo, quan tas inst ancias ele tern? 6. 0 que e Open SQU 7. Quais as van tagens que 0 Open SQL of erece sob re 0 SQ L native ? 8. Qual e a parte do processo de t rabalho ut ilizada para implementar OpenSQU 9. Quando um a area de rolagern e alocada, quando edesaloc ada e 0 que ela contem? 10. Quando urn contexte do usuario e alocado, quando e desalocad o e 0 que ele contem? 11. Quando ocorre roll out e por que isso oeorre?
Exerd cio 1 As tabelas na figuras de 1.28 a 1.31 sao depe ndentes
Entretanro, voce deve saber que voce apenas faria isso se estivesse 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 dimente 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".
clienre?
OU
indepe nden tes de
39
"""""-~----
- ...
~
0\,1. 1: 0 AMBI£NTE DE DE5£HVOLVIMENTO
40
'PREHD' E." DiAl AB "/4 Figura 1 30
Estc lobe/a e dependente o u independente de d iente?
Figura 1 31
Fig ura 1 29
, Estctobe/o e dependente ou independente de
Esto lobe/a e dependentt! au independente de
clienle?
cliente?
I
I
': , . l , •
t
Sf
P
J,ftj
fIf
:l""".[ill-1i"' -~ '~'tro ...... ~M " '
~".,
1.
g, ,:.i;"'4o .Ii
, ;; -
x"'-Q Mn"c -0 "0 e li
":~. <
•
41
~ -- - -.- _
.. . -._.
- -_ .
~~~-----------
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_~
_. ~-
-
44
!
~
-
_
..........
W
'W _
-
-
-
-
-
-
I
• Configurar sua interface como recomendado no Dia I, na Se~ao "0 Inte rface Menu", se voce nao river feit o isso ate agora.
• uma [erramenta de teste auxiliada por comp utador para regressgo de teste
• Execurar 0 p roced imen ro de instalacao para as ScreenCams no CD-ROM. Esse procedimento esta descrito no arquivo rea dme . txt localizado no diret6 rio raiz do CD-ROM.
• uma ferramenta de pesquisa de repositorio p ara encontrar objeros de desenvolvimento
Muitos dos procedimentos neste [ivrcs60 demonstrodos vtilecndc ScreenComs . ScreenComs s60 como filmes; elos mostram vmo sene de telcs . ind uinclo pressionomentos de tedo e movimenios de mouse, com umo norro~60 des critivo. Elos pcdem ser enccntrcdcs no CD·ROM que vern com este llvro . Vejo 0 orquivo readme. txt loca lizodo no diret6rio rulz do CO-ROM para mois Infcrrn ocoes.
fxplora ndo MOYO lit.. H~O
0
ombiente de desenvolvimento
Um ob jeto de desenvofvimento
r
e qualquer cclsc criodc por urn desenvclvedor.
Exem plos de objetos de dese nvo!vimento s50 programos, telcs, tcbelos, visuo1i ZQ ~6eS, estrvlvrcs, modelos de dod os, mensoge ns e includes .
NOYO.... TIR.\IO ~ .
0 sistema do R/3 ccntem ferromentos para crier e testar objetos dedesenvclvimento. Essos ferromentos estoo locolizodos no R/3 Development Workbench. Perc ccesscr quolqu er ferromento de deseovclvlmentc , voce ir6 para workbench.
•
workbench contem as seguintes ferramentas para ajuda -lo a criar objetcs de desenvolvimemo:
• 0 editor de programa ABAP/4 code voce pode criar e modiflcar
I
ce digo -fonre do ABAP/ 4 e outros componenres de prcgrama
0 Workbench Organi zer para registrar alteracoes em obj ecc s e promove -las na produclo
Todos os objeros de desenvolvimemo sao portateis, 0 que signifiea que voce pod e copia -los de urn sistema do R/3 para outro. Is50 norrna lmenre efeico p ;;fa mover seus objeros do sistema de desenvolvimento para 0 sistema de producio. Se os sistemas de origem e de des tino es-se em sistemas operacionais diferentes ou utilizam sistemas de ban co de dados diferentes, seus objetos de 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 hardware e sist emas operacionais suportados, veja a Tabela 1.1.)
Desco b rindo tipos de progJ:QLLmI..lJ.l O
_
Hi. dais tipos de programas ABAP/4 principais: • relat6rios • programas de dialogo
o
I
--
DIA 2: Sl:U PRUWROPROGWlAEM ABAP/4
HOVO ...
,/
--
APRENDA EM 2.1 DIAS AB APH
ltiMO r"
I
-~~' --.r
.....--....,.. -....- ............. ""W"
Definind o relat6rios
o prop6sito de urn relat6rio eler dados a partir do ban co de dados e escreve -los. Ele consisre apenas em duas telas {veja a Figura 2.1) .
• 0 D ata D ict ionary onde voc e pede criar tabelas, est ruturas e visualiza~6 e s
• 0 mod elador D ata on de voce pode documentar os relacionamentos entre tabelas • A biblioteca Function onde voce pode criar m6dulos de fun~ao globais
doABAP/4 • A tela e menu pintores onde voce pode criar uma interface com usus ric para seus programas
0
ABAP/4 Debugger
• a [erramenra de rastreio de SQL utilizada par a refina r instru~6es de
SQL •
0 analisado r de tempo de execu~ao para otimiza~ao de desempenho do seu programa
• uma ferramenta circunstancial para analise de impacto
A prime ira tela
entec as compos de entrada de intervale de dote opareceri om no tela de sele~oo do relot6 rio. A segundo tela e a tela de soldo. Elo co nte m a listo. A Hstc e a scldo do relctcrro e no rmal menfe nee tern nenhum campo de entra da. Em nosso exemplc, elo cc ntenc urne listo des vendee que occrrercm de ntro do intervalo de doto especficodo.
NOVO
0
As seguin res [erramentas de test e e pesquisa tambem eseac disponfveis: •
echomo da tela de se/e~60 (seledion screen). Ela con tem campos de entrada que permitem 00 usu6rio inserir critertcs para 0 relot6rio. Po r exemplo, 0 relctoric pede pradu zir ume listo de vendee para urn dodo interva lo de dotes,
NOVO lrl.r.. TE~O "
h..
TER»O"
A tela de selecsc e opcional. Nem todos as relat 6r ios tern uma. Entretanto. todos os relat6rios geram uma Iista. Neste livro, voce aprende ra a criar programas de relat orio.
45
.... 46
r-
DlA 2,SEUPRIMEIRO PROGRAMA EM AMP/.
47
AP"NDA EM21 DIAl ABAP/4 EW=>..-2L..Ll_ _ A tela de setecoc e a lela de soldo .
liste [soldo do re lot6 rio)
Tela de selecee (pcnimetros de e ntra da )
Soles Per Period ' ·
251 .25"Edna Everedge .. 131 .50 Wendy Rose.: .. . '
I1efin.inrlu..p.rrnlim.l.\aJ-'sLd...... e J,d.ui" q '-'lo~gl"oL-_------- 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 de telas e a sequencia de telas pede ser alterad a dinamicamente em tempo de execucio. Em cada tela, voce pode ter campo s de entrada, campos de saida, boroes (pushbutton) e mais de u ma area rolavel.
D~-SCQbrim:lQ~ornpon.entes
de relat6rio
Os relat6rios do ABAP/4 con sisrem em cinco componentes (mostrados na Figura 2.2) ; • 0 codlgc-Ionee
Descobrindo 0 obj eto de tem po de execucoo de-programo MOVO.... TIRMO~
Os progromos ABAP/4 s60 interpretodos : eles noDsao compilodo s. A primeiro 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 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.
Se voce alterar 0 codigo-Ionre, 0 objero de tempo de execucao sera autom aticamente gerado novamente, na pr6xima vez que voce executar 0 programa .
Introduzindo as convencoes de orrlbulcco de Dome de programa NOYOl.. nmO,. NOVO lrrrrr...
• Os atributo s • as elementos de texto
A ernpresa em que voce trobo lha e cliente do SAP . Portonto, os progromo s que
voce crtc em :iUO ernprc50 s50 chomodo s progromos-dienfe . O s objetos de desenvolvirnento de di ente de ve rn segujr as cc nve nca es de at ri bui ~oo de nome que sao predefinidns pelo SAP, Esses convencees SOO
n~o ~
chomod a s intervalo de nome de elienfe. Pa ro os proqrc rnos. 0 Intervolo de nome de diente 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.
°
• A documentacao • As variantes Fi gu r a 2 2
Os componentesde progromo ,4BI>Pj4.
urn
-
Um progromo ABAPj4 consiste em
Atributos
NOVO.... URMO'-
Dedique urn memento para esco lher urn identificador de tres co roderes especffico 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 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. I
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] Somenre 0 c6digo-fonte e os componentes de atributo de programa sao exigidos. Os demais componentes sao opciona is. 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 reldtorio e armazenado na tabela dd010s do banco de dados.
de 01 a 99. • Nomes de p rograma ut ilizados em exercfcios seguem a convencao zt ycc nn,on de cc e0 mim ero de capftulo e nn eurn numero sequencial. nom e de programa para a solu;ao sera. zt zccnn.
o
'** -
,
,c48
APiEN DA EM 21 Dl AS ABAP/ .
01" 2: SEUPRlMEIRO PROGRAMA EMABAPj4
• Programas utilirarios oferecidos no C D -ROM seguem a convencao de atribuicgo de nome y -xxxxxx, onde xn:xxx e 0 nome do utilitario.
a
programa de in stalacao que cria objetos d e desenvolv imento e os carregacom dad os pa ra a s exercfcios echamado y-s etup. Se necessaria, ele pode sec executado de n ovo a qualqu er mem ento para rest aurar a cond icao orizinal dos dados do exercfcio. Para remover [OdDS as objeros de desenvolvimenro e dadcs criados pelo program a de inst alacj o do siste ma, execute y- uninst. Veja
o arquivo readme. txt no CD·ROM para mais informacoes.
Cria ndo seu primeiro pro-Q.LCra.........mJ.JO ........
a
----'-
_
e
que vern abaix c urria descricao d o processo que voce seguirf p ara criar urn programa. . Quando voce efetua logo n no R/ 3 para criar seu primeiro pr ograma em ABAP /4, a primeira tela que voce ve e 0 menu p rincipal da SAP. A partir dar, voce i.r.i para a Development Workbench e depois para a editor. Voce ira digitar urn nome de programa e cria-lo. A prim eira tela que voce vera sera a tela Program Attributes. Af voce deve inser ir os arributos de pro grama e salvd-los. Voce enuc teci permissdo para pros seguir para 0 editor de codi go-fcnte . N o editor de codigo -fonte, voce ici inserir o codigo-fonte, salvs-lo e entdo execurar o programa. SCRHNW ~ lnicie a ScreenCom " Hew To Crea te Your First Proqrc m" ag ora.
Siga este procedimento para criar seu prim eiro programa. A ajuda para problemas comuns e oferecida no D iagn6 stico e Solu~ao de Problem as que se segue a ele. Se voce tiver problemas com qualquer urn dos passos , njio es que ~a de consultar esse procedim en to. I. Do menu principal do R/3, sele cione
0
Tools->ABAP/4 Workb ench. Urn. tel. com velopment Workbench
2. Press ione
eexibida.
0
cami nho de m en u titulo ABAP/4 De -
botao do ABAP/4 Editor na barr a de ferrame ntas do aplicativo. 0 ABAP/4 Edi tor: Initial Screen e exibido.
I
j
I I
0
3. No campo Program, digite 0 nome do pro grarna •• · 0201. 4. Pressione 0 boreo Create. A tela ABAP/4: Program Attributes e exibida. a s campos que contem pontes de inre rrog acio sao exigidos . 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, 6. Digite 1 no campo Type, a mimer o 1 in dica que 0 programa eurn relat 6rio .
7. Di gire urn asterisco (*) no campo Application. 0 valor no campo Ap plication indic a a area do aplicarivo a que esse programs penence. A lista compleca de valores pod e ser obtida posicionando 0 cursor ness e campo e en tao danclo u rn clique na seta para baixo adireita dele. Po r exempl o, se esse pr ogram a perr encesse ao gerenciamento Inventory, voce colocaria urn L no campo App lication . C omo e urn pro grama simples de test e, uti lizei urn asteri sco para indi car que d e nao pertence a qualquer area especlfica do aplicativo. 8. Faca uma marca de selecf o na caixa de selecfc Editor Lock. Ativendo o Editor Lock, voce evitara alteracoes no programa per qualquer ou tra pessoa alem do criador . Para seus exercfcios, fa<,ia uma marca de selecac nessa caixa para proteger seus programas de modificacsc acidemal por ou tros. Enrretan to, voce ndo deve uti lizar isso para blo quear programas de desenvolvim en to reais. Esse recurso impedira que outros p rogramad ores facam a manu rencao depois . 9. Para salvar os atr ibutos de programa, pr essione 0 bo tac Save na barn de ferrame ntas Standard. A tela Create Object Catal og Entry e exibida. 10. Pressione 0 borao Local Obj ect. A tela de atributos do programa e 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 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 con v en<.iac de deixar 0 nom e de obieto de desenvolviment o for a cia mensagem sera mantida ao longo de todo esre livrc.) 11. Pressione 0 batao Source Ccdena barra de [erramentas do aplicarivo. A tel. ABAP/4 Editor : Edit Program e exibida. 12. Escolha 0 caminho de menu Serrings- > Editor Mode . A tela Edito r: Settin gs e exibida. 13, Escolha 0 borao de 0P<,i3.0 PC Mode With Line Numbering. 14. Escolha 0 bota o de 0P<,iaOLower Case . 15. P ressioo e 0 bot ao C opy (a marca de selecso verde). Voce agora salvou suas configuracoes de edit or. (As configuracoes do edit or precisam 'ser configu raclas apenas uma vez.) 16, O llie na linha 1. Se ela nac contiver a mstru<,iao report •• · 0201. , digite -a agora, com o mostrado na Listagem 2,1. 17.Nalinha2,digitewrite ' Hello SAP worl d '. Utilize aspas simples e coloque urn po nto no final da lin ha, 18. Pressione 0 botao Save na barra da ferram entas Stand ard.
49
--r"- --~~_;. .
50
-
--DIA 2:SEU PRIMHROPROGRAlIA EM ARAP/~
APREND' EM21 DIAl AS AP"
19. Para exe cu ta r seu programa, escolha 0 caminho de menu Program- c-Execure. Urna tela com 0 titulo My First ABAP/4 Pro gram e exibida e as palavras Hello SAP world serao escritas embaixo dela. Essa e a safda do relatorio, tambem conhecida como lista.
miAOA ~ Lislagem 2.1 Seu primeire pregrome
em ABAP/4
1 report z h 020l. 2 write ' Hell o SAP World' .
Utiliza ndo a Editor' Initial Scree n A ABAF/4 Editor. InitialScreen emostrada na F igura 2.3. A partir dar,voce pode exibir au alterar todos os componentes de programa. Par exemplo , para alterar 0 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 batao de op~ao Attributes e entao pr essione 0 batao Display.
NOVO ... TflMO"
a c6digo na List agem 2.1 p roduz esta safda: SIIDI ~
51
Pressicncr 0 botao Change exlbe 0 componente se lecionado no modo de olterc/iao, que cerm tte que voce c ltere 0 componente. Imprimir lPrinl)
Canceler (ConO!Q
Hello SAP World
Scir (Exit)
Parabens, voce acaba de escrever seu primeiro programa em ABAP/4! Para retomar 41.0 editor, pressione 0 batao de seta verde na bar ra de [erramentas Stan dard [ou a tecl a F3 ) .
Vollar (Bode)
Salvor (Sevel Compo de comclF'ldo
locolizor (find) locoFizor 0 pr6lcimo(find Null Prtmelrc p6gino (fin.1 Page) P6gino onte rior (Previous Pagel PrOximo p6gino (Next Pagel
Ultimo p6gino (lost Pose)
(Commond field) lnserir (Enter)
0
I
S Cl z o· Problema ~ n
i
0...
j
.n
1 1 I
'"
, I
I
0
'" C
l>'
0
.'" .... 0
0
'" ~
Fjgu r a 2 3
Esses se c os prob lemas co mu ns e ncontrados no cricccc de urn prog ra ma e sue s respe ctivcs sc lucoes
A partir do N3AP/4 Editor: Initial Saeen voce pode exibirau
Sol u!;oo
AD pressionor a batao Create, voce cbtem umo coixo de di610ga duende De Not Oecte Objects SAP Nom e Ronge.
Voce digilou a nome e-rode de progromo . Seus names de progroma devem inicicr com y ou z. Pressione 0 bcteo Ccncel {a X e m vermelbol para retomc r e digitor um novo nome de progruma .
Quonda voce pressiono 0 botcc C reol e, voce cbtem umo caixa de di610ga com urn ca mpo de enfrada que pede uma teclo.
Voce digitou a nome de progromo errcdc. Seus names de progromo devem inicior com y au z. Presslcne c boteo Cancel (0 X em verrnelhc] para retomor e digitar um novo nome de progromo.
Voce esto c btendo vmc tela Change Request Query pedinda um Request Number.
No Tela Create Object Catalog Entry, noo digite um vola r no compo de clcsse. Em vez dtsso , press ione 0 botoo local Object.
'"
olterer os camponenles de progromo.
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 . (pushbutton) erwolvldcs. 0 efeilo des bctces de op<;oo llmitodc pelc cc ixo de grupe; eles 060 tem efeito em botces (pushbutto n) foro do ccbo.
°
"
e
Explo ra odo
0
editor d.l:Lc.6dig,.. o-fonte...
Nesta se~ao, voce apre nders como subordinar e aprendeni a ut ilizar duas telas nesra secao. • A ABAP/4 Ed itor: Initial Screen • A tela ABA P/4 Editor: Edit Program
0
_
poder do edito r do ABAP/4
Ex plora ndo a fllncionalidod e do ed itor de c6digo.fonte 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 mosrrada, como na Figura 2.4.
52
CIA 2,SEU PRIMEIRO PROGRAIM EMABAPj.
APRE NOA EM 21 OIAS AS APj .
53
1, ' J
, '-
Exibi, < -> Alterer (Display <. > C Verificer (Check) Llstc circunstonciol (Where-used lisI) Pilhe (Stock) Linhe de insen;oo (Insert line)
r,_l
Figura 2 5
Estes s60 os conlrole s no barre de ferromentcs Standard dentro do editor do
tit l olI r.oo 'I h
II
·_
....
. --'~""- ,
!.. ~
... --. .: _...
NW/4_
Cortor (CUi)
~'porc o "~' " ' , " , Imerir do buffer pnsen From bvf{e ~
EJgllra 2 4
Utilize a tela ABAP/4 Editor: Edit Progrom para olterar Ivncionolidade de componenle.
..
. '!.4.
-
-
I
Selecioncr (Select) Desfozer(Undo) , - Ajudo do ABAP/4 (ABAP/4 help)
-: .. ..---- . ...... • "-
'-_~r.llfJlx Q,1,a!:.
....,.
. ...
~
'C C £l C
~
-- -- ,
it]:f" ." ;'" .....-::-:'~-:
-
""'
~
.'
..:: .~,'
ferrcmentos Standard
.
"
· 1
• ••• • • • 0
• 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.
~~. , .,~~',~~,.~:r"iJ~.'1., " ""-,-;c.,~l-y. "!~-... . ~1~·-1;(~·· ~4i-" "."'~""~ W~;;:;, ......a:-.l"i) .- w.~~> ,i~~""". -·,-t";-"'-iff.£<'5,Y' ~. -;;-.~;_::' '' :: ., ": .;;,< ,....~..:...::-:5.- , :.:;:'!-.- :i~~ Mu ito s desenvclvedo res ochom a interface com 0 usu6 rio do R/3 cc mple xc e porton to dlfkl l de oprender. Sugiro que vo ce cdote uma obordagem met6dica que Ihe permito fleer vontode com cede novo tela. Sempre que voce se deparar com uma novo te la. examine minuciosomente os itens de men u e bot ees. Comece no estremidcde superior esquerda da te lo e sigo para ba ixo e perc a direita . Mantenho o cursor sobre cod a ite m par tempo suficien te para ler a di ce de telo 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.
a
Explorondo a borra de ferro mentas Stand ard smEHCAM ~ lrncie
0
Os ccotrcles do barre de
• C om man d Fi eld: Esse campo aceita codigos de tr ansaci o e vari es outros comandos . •
• 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 solicitado a fazer isso. •
Print: Esse coman do imp rimirf a c6di go-fon te de seu programa. Quando voce 0 pressi ona, a tela Print P arameters eexibida. Para recebe r sua saida, cenifique-se de que a caixa de seles-ao Print Immed. esta ativada.
• Find: Proporciona pesquisa e subsrieui a funci ooalidade. Quando voce o pression a, a tela de Search/Replac e emo strada. Uma explicacio mais detalhada segu e abaixo. • Find.Next: Esse eum atalhc amao pa ra localizar a proxima ocorrenci a de uma string. •
Firs t Page , Previous Page, N ext P age e Last P age: Esses comandos 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 sabre 0 ed itor e a sintax e do ABAP/4, ent re outras ccis as. Posicion e o cu rsor em uma palavra-chave do ABAP/ 4 ou em uma linha em branco an tes de pressionar 0 botao H elp. Para mais informacoe s, veja a seS-ao intirulada "Obtendo ajuda" ma is adianre oeste capitulo.
ScreenCam · Exploring the Standard Tcolbor" ag ora .
as co m ro les de barra de ferramentas Standard sao most rados na Figura 2.5. Os _cont roles de barre de ferrarnentas Standard (veja a Figura 2.3), na ordem, sao :
Back e Exit: Os dois levam 0 usuario de volta aABAP / 4 Editor: Initial Screen . Se-nao river salvo as alteracoe s, vo ce ser a solicitado a salvd-las.
54
OlA 2, 5EU PRIMEIROPROGRAMA EMABAP/4
"RENDA EM21 DI AS "API'
IFa~a Solve seu progro mo ante s de digitor urn cc mc ndo /n no cam po de cc rncnd o. Coso cootrone , voce perc/ere sue s clte rcco es.
•
Para executar uma pesquisa co m curingas, utilize os caracre res + e " , o sin al + corr esponderf com qualquer caractere unico e 0 sinal '" corresponde d . com qualque r st rin g de caracteres. Ent retan to, '" so mente pode ser ut iliz adc como um curinga no comeco a u no fina l de uma string; dent ro do corpo d e uma string ele na c age como urn 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 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 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.
•
_. • : : sao caracteres esp eciais. Se sua string inicia corn quaisquer desses carac teres, voce deve envc lve-los dentro de delimitadore s. Voce pode 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 exemplo, : hh com eca com urn caractere espe cial. P ara localizar essa suing,di gite -:hh-ou .:hh. ou , : hh ou ; :hh; .
•
0 caractere # tambem e especial. Para localizar uma strin g que contem # em qual qu er lugar dentro dele . voce deve subs tituir II par cada urn
Nee feche a ic nelo de edito r presslcnc odc a bctcc X no extremidode superior direlto do jonelo. Voce perder6 as clte rccoes n60
salvos.
Utilizando os recursos de locc lizc cco e substitu icdo S(mNOM ~ Inicie a ScreenCom "Using Find a nd Replace.. . ogoro.
Pression e 0 botac F in d na barra de [erramenras Standard e 0 sistema exibira a tela Search/Replace (veja a Figura 2.6). Insira a string que voce quer lc caliza r no campo Fi nd. F igu ra 2 6
Etta e a tela Seon:~/Reploce.
Bo
permite que voc! localize e altere slrings
de coroctere em sec
55
# que ocoere na string. Por exemplo , para localizar a string alb, utilize a string-de pesqui sa all b .
progromo.
lnide
IIrrrrrr..
S(lEENWl JI""
0
ScreenC om "Setting the Scope of a Search or Replace Functio n" ogora .
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 no program a.
2. Escolha 0 botio de opc;ao In C urrent Source Code. 3 . E scolha a bono de op~ao Fro Cursor para comecar a pesquisa na posicic arual de cu rso r. Altemativam ente, voce pode escolher 0 botao
• A s a Word [ocalizara ape nas casas em qu e espaccs em bran co ou p onruacao envo lvem a pa lavra dentro do codigo-fonte . •
de opcao Fro m Line e digitar
!
I
0 bon o C o ntinu e. 0 cursor e co locado a esq ue rda da primeira st ring de coincidencia. 5. Pressione 0 pr6xim o botao Fi nd pa ra localizar a p roxim a string de coincidencia.
4. P ressione
• Para pes quisar uma strin g que con tern espacos em br anco inco rporados, 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.
IIrrrrrr..
\CREENCAMJI""
,I
i
ruim ero s de linha de infcio e de fim
pa ra a p esqm sa.
U pp er/Lower C ase fara a pesquisa dif erenciar letras mai usculas de min usculas.
o campo Find tern algu mas qualidades incomuns:
I !
05
.
Inide a Scree nCom "How to Find NI Occurrences of 0 String" ogora.
56
'W'
_
- . -- .. â&#x20AC;˘
DIA 2:SEU PRIMEIROPROGRAMA EMABAP/~ I
APRENDA EM 21 DIAl ABAP/4
Para localizar todas as ocorrencias de uma string: 1. Na tela Search/Replace, digite a string que voce quer localizar no campo Find. 2. Escolha
0
botao de opcao In Program.
3. Press ione a batao Continue. Urn resumo das ocorrencias localizadas eexibido na tela Global Search In Programs.
4. De urn clique duplo em uma linha para ve-la no contexte do codigofonte .
5. Pressione
0
bot ao Back para retornar a tela Global Search In Pro-
grams. 6. P ression e 0 botao Back mais uma vez para retornar ao editor de codigo -fonte. S(mHCAM~ lnkle a SereenCom "How to Search and Replace in the Source Code" ogara.
Para localiz ar e substituir no codigo-fonte. 1. Na tela Search/Replace, digite a string que voce quer localizar no campo F ind. 2. Paca uma marca de seleliao ern Replace By e digire uma string de substituicao no campo Replace by. 3. Pressione 0 bouo Continue. A tela ABAP / 4 Editor: Edit Program e exibida com 0 cursor pcsicionado a esquerda da proxima string coincidente. 4. Para subsr itu i-la, pre ssione 0 botso Replace. A string n a posicao de curso r e subs titufda e 0 cursor e posicionado na p roxima string coincidente. 5. Para ir para a proxim a posicio sem substituir, pressiona 0 bone Next H it. 0 cursor e p osieionado na pr6xima string coincidente. 6. Para substituir todas as coincidencias restantes da posicao do cursor atua] para 0 fim do cod igo-fonte, pressione 0 borso de No Confirmation. 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.
57
3. Escolha 0 boeao de opcao In Program. 4. Pressione 0 botao Continue. A tela Global Replace In Program s e exibida com a cursor posicionado na primeira str ing coincidente. T odas as linhas que contem strings coincidente s sao exibidas e as strings coincidences sao destacadas. 5. Para substituir a string na posicao de cursor, pressic ne 0 botao Replace. A string na posicao de cursor e substituida e 0 cursor e posicionadc na proxima string coincidente. 6. Para ir para a proxima posicao sem substituir, pres sione 0 batao Next Hit. 0 cursor eposic ionado na pr oxima string coin ciden te. 7. Para substircir codas as coincidencias restantes da posicao atual de cursor para 0 fim do codigo-fonte, pressione a bono N o Confirmation. 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 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.
Explorando a bo rra de fer romentas Application SCRHHCAM..... lnicie a ScreenCom "Exploring the Application Too lbor of the ABAP/4 Editor" ,.. oqoro. .
Antes de prosseguir, maximize sua janela (se ela ja nao esciver maximizada). Voce nao .pode ver os botoes na extremidade direita da barra de ferramentas Application se sua janela for menor que 0 tamanh o maximo. Os con troles de berra de ferramentas Application sao m ostrados na Figura 2.7. Figura 2 7
Os conlroles de bono de ferromenloS At:Jplir::otion.
~ ~
---~www_
58
!
•••• _.
•
........ ....- _
• D isplay < -> C han ge: Altera a tela de modo de exibicao para mudar o mo do . Pressio n e-a novamente para altera -la de volta ao modo de
exibicao. • Check: Verifiea a sintaxe do pr ograma atual. • Where-Used List : Q uando voce pressiona esse botao enq uamo 0 cursor esta em qualquer nome de varifvel, ele exibird rodas as linhas
de c6digo que a utilizam. • Stack: Exibe 0 conteudo cia pilha de navegacao atual. • Cut: Exclui a linha que contem
I,
-
-
DIA 2:StuPRIMfiROPROGRAMA EM ABAP/4
0
cursor e a coloca no buffer.
• Co py To Buffer: Copia 0 conteudo cia linha que concern
0
cursor para
I
•
Duplicate Line: D uplic a uma unica linha au urn bloco in teiro de c6digo se urn est iver seleciona do {veja 0 botao Select, acima}.
• Move Line: Move linhas a esquerda e a direi ra. P ara mover uma Iinha, 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 cursor na primeira Iinha do bloco na posicxo para a qual de deve ser mo vidc e entao pressione 0 botao Move Line. Para move-lo para a esquerda, coloque 0 curs or aesquerda no comecc cialinha e pressione a borao Move Line. • Mark Line: Co loque urn bookmark em uma Iinha . Voce po de exibir todas as linh as marcadas com 0 cami nho de menu Goto -> Markers.
o buffer. • Ins er t From Buffer: Ins ere 0 conteudo do buffer ern uma nova linha acima cia p osi<;ao de cu rsor atua].
Para trozer uma linha para a tope do [onelu do ed itor,de urn clique duple entre as polcvrcs ov no final do linha . Mas n60 de um clique duplo em umo polovrc, isso n60 funcio nor6. Um metcdo alternative e colocor c cursor no fina l de umo linho e pressionor a teclo F2.
• Insert Line: In sere uma linh a em branco acima da posi csc atual do curs or. • 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 Select. C ola que 0 cursor na ultima linha do bloeo e pressione Select n ovamente. A s linh as contidas no bloeo se romarao ver m elhas. Voce po de agora cortar, co piar ou duplicar 0 bloco de codigo da mesma 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 . •
U n do: In verte sua ultima variavel. Somenre urn nfvel de desfazer este
Utilizan do Cut e Pa ste
N~ mai oria dos aplicativos Windows, ha u ma area de transferencia para operacoes de cortar e colar . No RJ3 , h.1 cinco areas de t ransfere ncias. ATabela 2.1 descreve codas elas.
Tabela 2.1 Buffers de Cut e Poste Chamado
Utili:r:ado pa ra
Como Copia r pa ra ele
Como Colar a partir dele
o Buffer
Carta e colo de ntro de um progra mo
Pressione as botc es Cut ou Co py no editor
Pressicne 0 batao Insert From Buffer
as Buffers X,Y,Z
Corte e co la e ntre da is progromos
Ccmi nho d e menu : Block/Buffer- > Copy to X Buffer
Caminho de menu: Block/Buffer-> Insert X Buffer
Area de
Carta e colo en tre: - duos sess6e s
Cominh o de menu: Block/Buffer-> Copy to Clipboard
disponfvel. •
ABAP /4 He lp: Oferece ajuda sabre geral.
0
editor e sobre
0
ABAP/4 em
• P att ern : Pe rmire que voce digire uma instrucao ABAP/4 gerada automa ricam ente. P or exem plc, para inserir uma instrucfo write qu e escr eve do coneeu do de uma variavel identificada vt, pressione o bo tao P attern, escolha a botao de opcac W rite, pressione a batao Continue, dig ite 0 nome de va riavel no campo Fld e enn c pressione o batao Copy. Uma inst ru cao write sera inserida na posicao de cursor atua l. • Concatenate: Une duas linhas . Para utilizd-lo, coloque 0 cursor no final de uma linha e pressione 0 batao Concatenate para concatenar
-
59
urna linha com a linha seguinte. Para dividir uma [inha, posicione 0 cursor onde voce quer que a divisao ocorra e pressione a tecla Enter.
aparecem n a barra de ferrame ntas, sao as seguinres:
,
................. .... ....- ... ....,.---.-.- - - --- - - -
APRE NDA EM 21 DIA S AB AP/4
as controles de barra de ferramentas Application. na ordem em que eles
;I I , I
W
trcnslerenoc
R/3
I
-
_
-:
60 ,
-
-
'!='
-
'!'!'
-DIA2:SEU PRIMEIROPROGRAMA EM ABAi'/4
AP RENDA EM 21 ClASAB AP/ 4
Como Copia r para e re - R/3 e outro
Como Colo r a partir de le Ceminho de menu : Block/Buffer- > Insert from Clipboard para inserir as ccnteedcs do area de trcnsjerenclc como linhos novas no progromo no pos iCioO do cursor. Ou Orl+V perc color no topo dos linhos exlstentes. Com Ctrl+V, as dodos seroo truncodos se tod os eles noo se o justc rem no tela
opllc oftvos
Windows (p. ex., Bloco de Notes)
f
• e
•
1,
pora
0
Tab el a 2.2 O utros prog romos convenienfes e fun~oes do ed itor Para•..
1- De um clique
ed itor
- copia mcls de umo linho do c6digo
2 - Ctrl+Y 3- Arroste e marque
s.
Escolha a caminho de me nu Help- >Exte nde d He lp.
Obter ciu do de qualquer pclo vrc-chcve do AW/4
Coloqoe 0 cursor em umc pc lovro-chcve dentro da c6digo e pressione Fl .
Salvor seu programo
Presslone F11. Presstone Fa.
Exibiras teclo s de fun ~oo Mover a cu rsor perc" 0 co mpo de comondo
Pressione Ctrl + Tab.
Troaer quolquer linha pore
De um clique duplo nos espccc s em bronco (no om do linho) ou ccloque 0 cursor nos espcccs em bronco e pressione F2. Pressione a tec lo Enter com 0 cursor no cc mecc ou no fina l de umo linho . Ccloqve 0 cursor no linha e presslooe 0 bata o Cut.
lnserir umo Hnhc Excluir umo linho
Coloqu e
Excluir urn bloea de tlnhcs
F9 (seleciona) . Entoo coloque -o na ultimo hnhc do bloco e pressione F9 no vornente. Seledone 0 bloco e press ione 0 bctc o Cut.
r
0
cursor no prime ira linho do bloco e pressione
botoo Duplicate line .
Repetir umo ltnho c u blccc
Pressicn e
Dividir umn linha
Posicione 0 cc rsc rno ponto de divisoo e presstcne a tedo Ente r. Posicicne 0 cursor no tim do linho e presslone 0 botoc Concat enate. Morque urn bloco . Pressicne 0 bctcc Copy To Buffer. Entoa posicione 0 cursor no ponto o nde 0 c6d igo devere se r inserido e p ressio ne 0 botoo Insert From Buffer.
Cop ior os linha s de ntro do programe otuol
0
1
I: i I,
.'
I
I·
I! I
I I I
Marco r um blocc de c6digo
Unir duas linha s
I
d
I
De urn cliq ue com 0 bcfeo d jrelto do mou se em quolquer lugor no 6reo de tela de urno [cnelo.
a porte superior do tela
(,-
F o~a ..•
Obter cjodo no ed it,or
Executor seu programa
4- Ctrl+C
. N a primeira linha da T abela 2.2 esta 0 buffer especffico do programa, simplesmenre chamado buffer. Ele permite que voc e copie demro de urn pro gra~a. Para ut iliza-lo, coloqu e 0 cursor em um a linha au marq ue urn bloco e preSSlOne as bot oes C ut, Copy ou Insert Fr om Buffer . 0 conteddc do buffer e perdido quando voce deixa a editor. as bu ffe:~ X, Y e Z sao utilizados para copia r c6digo de urn pro grama pa ra DUtro . U tilize a menu Block/Buffer para acessa-lo s. Embora eles tenham tres buffers separad os, tc dos eles sao utilizados da mesma mane ira. Seus cont ea dos sao retidos dep cis qu e voce deixa 0 editor, mas d es sao pe rdidos quando voce efeeua 0 logoff . A area de tran sferen cia ea m esma que a area de transferenci a do Windows. Utilize-a para cort ar e colar em outros aplicarivos do Win dows como 0 MSWord au 0 Bloco de Notas. Ela tamb em e utilizada para eop iar texto de telas de ajuda Pt [veja a seguime sefSao int irulada "Obtendo ajuda") . Alem dos bo tc es na barra de ferramentas Ap plication e as menus, voce 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 mamenha pressionada a tec1a Shift e pressione as tec1as de seta pa ra a direita
Utilizondo outros funco es co nvenientes do edito r A Tabela 2.2 contem urn resume das fun~6es do editor cornumente utilizadas. T odas as fun~6es sao acessadas a partir cia tela ABAP/4 Editor: Edit Program a mencs qu e observado de outro mo do.
ofvcl. - coplc e c6d igo do c jv dc F1
61
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 com 0 mouse e entao pressio ne C trl + Y. 0 ponteiro mud ara para a forma de uma cruz . Arraste a cru z para desracar a secac que voce quer copier. Pre ssione Crrl + C para copiar 0 texto dest acado para a area de transferencia ou pressione Ctrl + X para cortaro Cole da area de rrans ferenc ia utilizando Cr rl + V.
Tabela 2 .1 Confinuoc;60 Chama d o
1
7Z ··
:IrrrrrrY ••• t: _1' ww w w w.v • 62
.. - 011. 2:SEll PRJMElRO1'10GR.UlA. EM ABAPJ4
"RENO' EM 21 OIAS ABAPH
Tabela 2.2 Continuo<;oo
Tabela 2 .2 Ccnnnoccec Para...
FOlj o •••
Para...
Copter as Iinhas perc o utro programo
Marque um bloco . Escolha a cominha de menu BlockiBuffer->Copy to buffer X. Abro urn novo progroma e escolhc 0 eom inho de me nu Block/Buffer-> Insert Xbuffer. (Voce tcmbem pode utilizer os buffers Y e Z do mesma ma ne iro.)
Exduir urn progroma
FOlja...
Do ABN'/4 Editor: lnifiol Screen , escclhc
0
cominho de
menu Prcqrcm-o-Delete.
Salvor sues olteroc;6es com um novo nom e de progro ma
Enquonto ed itor urn programc, escolho a cominho de
Exibir dais progromas ao mesmo te mpo
Iniciondo em quo lque r tela, cbro umo novo [cnelc que utilizQ 0 com inho de men u Systern-c-Creote ne w session. No novo jcnelc , ...6 para ABM/4 Ed itor: Initia l Screen,
menu Proqrcrn-c-SoveAs.
C opier pora au do 6reo de trcnsferendo do Windows
Marque urn blocc. Esco!ho a eom inho de menu Block/Buffer- >Copy to the clipboard. Entao escolho cominho de men u Block/Buffer-> Insert clipboard.
Feser um comentc rio
sabre um blccc de linhos
Marque um bloco e escol ho 0 comi nho de menu BlocklBuffer->lnsert com me nt.
Remover 0 coment6rio de um blccc de linhcs
Ma rque um bloc o e escolho 0 caminho de menu Block/Buffer->Delete comment.
Imprimir seu progromo
Pressione
Imprimir sua scldc do progromo
Enquonto visvcliac 0 soido , escol ha Systern-> Llst->Print.
lccchrcr e repetir a
Presslcne as bo f6es Find e Find Next.
Compa re r dais pro gro mos em sistemas dderentes
Co loque 0 cursor no linho a ser rncvidc, no coluna que voce quer mcve-lo. Entao press ione 0 bcteo Move line (F6). Para mover um blccc, pcsicicne 0 cursor no primeira linho e entcc presslcne 0 bo tec Move line.
Salvor umo versec de urn programa
De dentro do editor, escolha a caminho de menu Progrom-> Generote ve rsion. 0 prog roma otuol e sclvc ' no ba nco de dodos do ve rseo .
Recupero r uma versoc do progromo
Da tela Editor Initial, escolho 0 cami nho Utilities ->Version management . A te la Versions Of Object Of Type REPS ~ exlbldc . Tire 0 sele ce c do verseo ctivc e Ieee umo marco de setecec no verseo 0 resta urar. Pressione 0 bctec Retrieve e e ntco pressicne 0 botoo Bock. Clique em Yes e a versec atual tomo-se a geroc;eo -1 e uma c6pia do ve rsec se lecionodo tomo-se a versec at ual.
Comparar versoes do progromo
A partir do tela Initial Editor, escclh c 0 cominho de men u Utilities - c-Ve rslon monagement. A tela Versions Of Object Of Type REPS e exibido. fo cc uma marco de se'ecec nos vers6 es que voce q uer cc mpc rc r e pressione 0 batao Compare . A tela Com pe re Programs: All e exlbidc . Role para ba ixo para visualizer as diferenccs. Escolho o cominho de menu Prog rom- > Print. No pr6ximo tela , especifique umo impressora e foc;o uma marco de se le1;ao no coixo de se lec;ao Print lmmed.
0
0
0
bctcc Undo . He apenas um nlvel de Undo.
Desfazer a ultimo vcricvel
Pressione
0
Escolha
0
caminho de me nu Progrom->Pre!ty Printer.
Fazer download de um progromo poro urn arquivo em seu PC
Escolha
0
co minho de men u Utilities->Download .
Fazer upload de urn progromo de urn arquivo em seu PC
Escolhc
0
eaminho de men u Utilities-> Upload . .
Solver umo e6pia ternpcrcric de seu programo
Escolho 0 co minho de menu Program->Sove Temp . A c6pio te mpo r6ria e exd uido q uando voc e sa lvo a prog romo .
Recuperor 0 c6p ia tempor6rio de seu progroma
Escolha 0 caminho de menu Prog rom->Get Temp . Version. Voce pede recuperor a c6p io sclvc de quolquer nume rc de vezes cte qu: voce solve 0 progromo.
Puler diretomente paro editor
De qualquer tela , digite / nse38 no compo de eomando e pressione Enter.
0
Compara r dois progromos diferentes
Copiar um progroma
Do ABAP/4 Editor: Initiol Screen, esc o lha menu Progrom->Copy.
0
cominho de
Renomeor um programo
Do ABAP/4 Editor: Initia l Scree n, esc olho men u Prog rom->Renome.
0
caminho de
no me do segund o progromo e pressicne a
Do ABAP/4 Editor: lnitlol Scree n, escolhc 0 cc mlnho de menu Utilities->Splitscreen ed itor. lnsiro dais names de crcqrcrnc e pressione 0 bata o Display. Para exlblr a
primeirc dderencc , pressione a ba tao Next Diffe re nce . Para cltnhcr as dais prog ram as nc prOxima linho ldermcc, press ione 0 botcc Alig n.
cominho de me nu
Formotor automotieamente o c6d igo -fonte
0
bc tco Display or Chonge.
botco Print.
loeo lizo¢o Mudor 0 c6digo poro a esquerde e perc a direita
insirc
lmprimir seu progroma
Da ABAP/4 Editor: Initial Scree n, escclh o 0 comj~ho de menu Utilities->Splits:::reen ed itor . Presslooe 0 botao Compore Dift Systems. Insira dois nomes de prog ro ma e urn id de sistema e presslone 0 bctoc Display.
63
64
APIl:EHOA EM 21 OIAS ABAP/~
orA2:sru PRIMEIRO PROGRAMA EMABAf'/4
Qbie.ndo~--" a4-'iu",-,d.....a",-SmEHUJI ~ lnicie
0
_
ScreenCom "Obtendo ojudo" ogara.
Pa ra urn tu torial complete no editor:
I.
v芦 para a tela ABAP/4 Editor: Edit Program .
2. Escolha 0 caminho de menu Help-s-Extended Help. A tela SAP RJ3 Help e exibida. 3. D e urn clique no tex ro ABAP!4 Editor. A tela BC ABAP/4 D evelopmentWo rkbench To ols e exibida. 4. De urn clique em qualquer rexto sublinhado para ob eer ajuda sobre esse t6p ico.
NOYO ... TERMO "
ABAP/4.
He dots tipos b6sicos de c judo no editor, 0 oiudo Fl eo oiudo R/3 Ubrory. A civdo Fl tc mbem e conhecido como documenlo.:;60 de pelovros-chove do
. '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 de dados do R!3. A ajuda R/3 Library e muito mais exrensa e contem visoes gerais e procedim entos para criar objet os de desenvolvimento. Ela euma ajuda baseada no Windows e reside fora do banco de clados do R/3. normalmente em um CD-ROM.
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
uteis de c6digo. Para ob rer ajuda F I:
I. Va para a tela ABAP/4 Editor: Edit Program. 2. Coloque
0
cursor na palavra-chave ABAP/4 que voce quer ajuda.
3. Pressione Fl. A tela Di splay Hypertext
eexibida.
Den no .da ajuda FI, as palavras destacadas sao vfnculos de hipertexro. Dando urn clique n elas, voce ob tem mais informacoes.
Voce pede utilizer 0 utilit6rio Findlt no CD路 RO M pore localizer ma is exemplos de c6d igo.
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 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 + 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 pode colar na parte superiorde seu c6digo utilizan do Crrl + V. (Ctrl + V nao cola na origem) mas na tela , encso isso nao colard na part e inferior da pdgina
vislvel.}
O btendo a o juda &/ 3 Library A ajuda R/3 Library esu arrnazenada nos arquivos de ajud a do Windows. Para visualiza-los: 1. De qualquer tela, escolha 0 carninho de menu He lp- > R/3 Library. A . tela R!3 System Online Help e exibida. 2. Para ajuda em ABAP/4, de urn cliqu e no rextc Basis Components. A tela Basis e exibida.
3. De urn clique no texto ABA P/4 Development Wo rkb ench . A tela ABAP/4 Development Workbench
e exibida.
4. Daqui voce pode ob eer ajuda detalhada em qua se qualquer aspecto de programacic em ABAP/4. De urn clique no tema sobre 0 qual voce qu er ajuda. . Adicionalmente, a ajuda pode ser obtida do A BAP/ 4 Editor: Initial Screen. Para visualiza-la:
1. va para a ABAP/4 Editor: Initial Screen. 2. Escolha 0 caminho de menu Utilities - >ABAP/ 4 key word doc. A tela Display Structure: ABAP/4_SAP's 4GL Pro gram Language e exibida. 3. Pressione 0 batao Find na barre de ferramen tas Application. A tela . Search Chapter Titles e exibida. 4. Digire 0 texto que voce quer localizar n o campo Find. 5. P ressione 0 bouo Continue. A primeira linha que contem esse texto 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 Standard para localizar a proxima ocorrencia. 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:
65
66
APReHDA EM21 DIAS AS APH
OIAtlEU P'I»EI' OP'OGRA.. EM ABAPi<
• Aj uda do editor
Se voce estiver procurando urn programa e souber os primeiros caracreres de seunome, poderalocalizs-lo a partirdeABAP/4 Editor. Initial Screen. Parafazer isso:
• Visso geral do ABAP/4 • Pa!avra-chave do ABAP/4
1. Va para a AJ3AP/4 Editor: Initial Screen. 2. N o campo Program, digite os primeiros caracreres de seu nome de
• Novas recu rsos da linguagem ABAP/4 • Exibir modules de funlSao • Exibir estruturas de rabela
• Exibir bancos de clados logicos • Exibir objetos de autorizacio • Exibir infotipos
Local iza ndo seus ob jeto s de desenvolvjmento S(RHN(AM~ Inide a ScreenCam "l ocalizondo seus c bjetc s de desenvclvimento" ogora.
Para exibir todos as objero s de desenvolvimento que voce criou no sis tema RJ3 :
i, DOl tela ABAP/4 Development Workbench, pressione 0 bono Object Browser. A Object Browser: Ini tial Screen
2. Escolha
0
e exibida.
botao de op <;ao Local Priv. Objects.
3. Pressione 0 bon o Display. A tela Object Browser: Development Class $TMP e exibida. Aq~i voce veri uma lista de categorias de objero de desenvolvimento. A esquerda de cada categoria hi urn sinal de adi!fao. 4. De urn clique em urn sinal de adi!fao para expandir 0 n6 . 5. De urn clique duple em Urn nome de objeto para exibi-lo . Se o objero em que voce deu urn clique duple era urn programa, uma visualizacao em arvore do p rograma e de seus componentes e exibida. 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. Voce esta agora no modo de exibicio no obje to selecionado. Voce pede press ionar 0 bone Displ ay < -> Change para alrernar no modo de edi~ao. Esse metodc somente funciona com cb jetos que forom selves como cbjetos lcc cis. Eles seroc exlbidcs cq ul somente se voce tiver pressionodo 0 bctoo locol Ob ject no telc Creote Object Cotolog Entry quondo voce crlcu 0 c bjeto.
pr ograma seguidos par urn asterisco. Por exemplo, para exibir eodos os programas que comecam com z tx , digire ztx *. 3. De urn clique na seta para baixo a direita do campo Pr ogram. A tela Programs e exlbida. Urna Iista de nom es de programas coinciden tes aparece nesta tela:A direita de cada no me de programa esn a descricso Shan dos atributos de programs. 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 que voce deu um clique duplo apar ece no campo P rogram.
Introduzind o NOYO""""
mllo r
0
R/3 Data Dictiona ry
a RJ3 Doto Dictionary lou ODIC pera obrevcf eum utilitOrio para definirobjetos
.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:
1. Va para a tela do ABAP/4 Development Wo rkben ch. 2. Pressione 0 botao ABAP/ 4 Dicti onary na barra de [err am en ta s Standard . A Dictionary: InitialScreen eexibida, como mo strad o na Figura2.8. 0 ODIC estc dentro d o sistema Rl3 . Voce pe de pensa r nele como estondo 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 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 tobelo ree l no ba nco de dodos. Quondo quiser mcdficc r 0 ta bela, voce deve mcdificcr a defini<;6 0 de tobelo no ODIC. O ucndo ctivor a tobelo novcmente, mois SOL e gerodo, fozendo coni que 0 ROBMS modifique a tcbelc.
HOYO lll... fiRMO
r
Fa~a
Utilize a ODIC para crier e modifkcr todos os objete s de bonco de dodos.
Noo rncdifiqve urno tcbelc ou quo lquer 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 de dodos. lssc pede cou sar erros de c plkctivc e ate lever 0 urno perdo de integrida de do s do dos.
67
~~...~. ~ .~:...:.:.:.< ,~ .. ..;,.,..
68
....... ;,c'.·"-c·=_;;:;-""":---::::--:":---
:w:o
... , . _
"..- .,,,- "'- ... ~_..__.._ ..._ ...._ ...._ ..._ .......P'"..._
...-~-----------------------------~-
DIA 2: SEUPRIMEIROPROGRAMA EM ABAPt.
APRE NDA EM 21 DIAS ABAPH
fig ur e 2 8
A Dictionary:Initiol
Screen.
.':' 4'
I~ "· ~_1 .. · .i. l/lIIioo ~ · """" iflIl> ·-. _
i,.o
-I .
.::J '~ ¢.: A )( :. ~ 10U
~
. ~'"
~ 0
,,,.I'-· ·· ·r-."· : :<· : ~~;:d. " ":':;,. .'
• .• ..-'.
. .c,,,,
-rarn .""
.> }.
Exp lorondo as tabelas e as estrutllros No RJ3 umo tahe la e urno colecc c de ltnhos. Coda ltnho cc ntern compos , 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.
NOVO- lilt.. TiRMO,.
Uma tabela armazena dad os persist entes. Ern outras palavras, se voce coloca dados em uma tabela, e1es permanecem ai depois que seu programa finalizar. Eles permanece rao ate serem ahera dos a u exclufdcs par seu pro grama a u curro. 0 n ome de um a tabela eunico dentro do sistema R/3 inteiro. 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. No R/3 vmc estrutvro e urno descrit;60 de urn g ropo de compos. Elc descreve 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.
NOYO ....
lIiMO"
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 descrev et urn conjunto de campos.
F i g ur a 2 9
A defjnis:oo de ODIC pore tabe/o Zfal .
Estritam en te falando, uma estrurura e algo que 56 existe dentro do R/3 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 palavra estrutura"para referir-s e a u rn grup o de varidveis dentro de urn programa. A estrutura ema re emostrada na Figu ra 2.10 como urn exemplo de como uma estrutura ap arece n o DDIC. Fi g ur a 2 10
A defjnit;dode ODIC para 00 eslrvturo
emora.
69
4az::;:
cc;:_~
_
."' -
70
D1AU W PRIMEIRDPROGRAM> EM ABAPi<
APRENOA EM 21 DiAl ABAPH
No R/3, tabelas e estruturassao definidas no DDIC. Voce no tara entretanto, quando as visualiza, ha uma diferenca muito peguena entre elas. Isso e porgue, no RJ3, uma tabela esomente uma descripio de uma tabela real de banco de dados. E a estruturada tabelano banco de dados. Entao, tanto tabelas como estruturas dentro do DDIC defin em urn layout - uma serie de campos. A diferenca principal entre as duas eque uma tabela tern uma outra subjacente de banco de dados associada a ela. VIDa estrutura rdo tern, Algumas pessoas, as vezes, acham a documenrac ao do R/ 3 confuse, uma vez que a SAP ocasionalrnente utiliza esses dais termos int ercambiavelrnent e.
Nco deixe em bronco 0 cc rnpc Maximum No. Of Hitspara exibir todos a s registros, 0 menos que voce reolmente pretendo procurar no listo Inteirc. Para tobelos grondes, isso pode conwrnir muito CPU nos dois 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. Se um relotcrlo multo grande fo r necessaria, em gem ! ele deve se r executodo em lote. A obo rdoge m preferida e estreitc r suo pesq uisa , digita ndo volores nos cam pos Doto Browser; Table: Selection Screen. Isso sera a bordado em deto lhe em capitulos posteriores. E.ig ll r g 2 1 1
Exib inQQ umo to bela ou defin il¥i:io de estruturo Para exibir uma tabela au definicao de estrutura n~ DnIC: 1. 2. 3. 4.
r-ra II-! 1_ _
! [ olt
§f tj it!'''PTJ£ 'tTm'' '' 1iolo . 5ol1jroo "lJ"Iiot
£""' _ ~ .$""'"
1IftI· " , -
A tela Data Browser: Table Select Entries.
.-
<.
-: :,;,
.. . . .._I<!Oj"l" '
Va para a Dictionary: Initial Screen. Insira a tabela ou nome de estrutura no campo Object N ame. De urn clique em Tables ou no bono de opcao Structures. De urn clique no botao Display. A tela Dictionary: Table/Structure: Display Fields e. exibida, como mostrado nas Figuras 2.9 e 2.10.
'.
,
.,l~ "
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
o
R/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. 2. Escolha a caminho de menu Utilitie s-s-Table contents . A Da ta Browser: Table : Selection Screen eexibida. 3. Para exibir todas as linhas na tabela, pressione 0 botao Execute sem inserir qualquer crirerio de pesquisa. A tela Da ta Browser : Tab le Select Entries e exibida (vejn a Figura 2.11).
o numerc de registros 'exibido eIirnitado peIo valor no campo Maximum No. Of H its na Data Browser: Tab le: Selection Screen.
71
Determ in a n d o compos exibidos Voce pode con trolar quais campos serao exibidos na D ata Browser: Tab le: Selection Screen. Para fazer isso: 1. Va para Data Browser: Tabl e: Selection Screen. 2. Es colh a 0 caminho de menu Sertings-> Fields for selection. A tela Choose Fields For Selection e. exibida. 3. Faca uma marca de selecao nos campo s que voce quer incluidos na 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 ,
Enten dendo a sintaxe do ABAP/4 Ante~ ~e contin.uar, voce agora deve executar 0 utilitdrio de configuracao de exerctcm fornecido no CD-ROM. Ele criers as tabelas e os dedos necessaries para. as exercf~ios neste livro . Para instrucoes, veja 0 arqu ivo readme. txt localizado DO diretcrio raiz de CD -ROM.
73
1060 1070 1080 1090 2000 V1 Vl0
Vll
lntrcduzindo a instru~ao s el e;_,cJt~
---,---,
_
V12 V2 VJ
A instrucao sel ect recupera registros do banco de dados.
V4
Sintaxe para a instru,fio sel ect
-
VI
a seguinre c6d igo mostra a sintaxe simplificada para a insrru cdo se l ect:
tn
Z
select .. from tl (i nt o 11'0] (where f l op vI and/or 12 op v2 .. .J [order by f l] . (other abap/4 s t at ement s) endselect.
~
m
onde:
"
* indica que todo s os campos na rabela devem ser recuperados. tl ~ 0 nome deuma tab ela previarnenre definida em uma instrucio tabl es. 11 e a nome de urn campo na rabela t l , ~p eurn dos seguin tes operadores logicos: = v1 e urn literal ou um a variavel. and/or e uma palavra and a u uma palavra or.
V9
Lf a1 e 0 to belc-mestre do fa brico nte no R/3. Zt xl f al foi criodo pelc rotina de configuro~60 de CD-ROM e e se me lha nte a 1fa l, mas e utilizado poro as exercicios neste livre. com po 1i fnr 0 ccm po de n c rnerc de fobriconte .
a
« •
·0202. Digite 0 c6diga como
a codigo na Lisragem 2.2 deve produzir esta safda: 1020 1030
1040
ANAlIS~ ~ Esse progr~mo Iefodos as reg isiros detobelo zt xl fa l e escreve a contecdc do compo 1 i fnr (0 ncme ro do fob riconte ) em o rdem crescente.
r
• Na Iinha 1, a instrucao report esolicitada como a primeira linha de urn relar6rio.
Lista ge m 2. 2 Seu segundo prog roma
1000 1010
e
. <> > >= < <=.
1- report ztx0202. 2 tables ztxlfal. 3 set ect .. f rom ztxl fill into ztxl fal order by 1ifnr . 4 write / ztxlfal -lifnr . 5 endselect.
SAioA~
V7
va
wo e 0 nom e da area de trabalh o que coincide com a estrutura da tabela
Crie urn novo p rograma e atribua a nome mostrado na Listagem 2.2.
ENTRAOA~
YO
,
, ;!
• N a linha 2, a instrucao tables faz a~ duas coisas. Primeiro, ela aIoca uma area de mem6ria (chamada area de t ra balho) ide nt ificada ztx l f al. 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 5 marca 0 fim do loop. As linhas de c6digo entre se 1ect e endse1ect sao executadas uma vez para cada linha retornada do banco de dad os.
I
• 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.
E "
N ote que em seu programa, voce tern duas co isas identificadas como ztx lfal: uma area de trabalbo e uma tabela. A du as te rri 0 mesmo nome zt xl fa I. A pcsicao do name ztxl fal denrro de uma inst rucdo de termina aqual 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.
1050
I
,I I
_ .J.;,
74
DlH lEU PRIMEIBDPBOGRAMA EM ASAP/' APRENDA EM 21 DIAl ABAP/4
lVI
~
lnlcie a NAYI Select Statement Processing'" ogora .
Prossiga os processamen tos como a seguir (veja a Figura 2.12) : 1. P ressione F 8 para executar 0 programa que causa uma solicitacao a set enviada do SAPGUI para 0 dispatcher no servidor de aplicativo para executar 0 programa ztx0202.
2. A solicicacao
e despachada
para
0
primeiro processo de trabalho
disponfvel. 3.
a contexte de usuaric edeslocado no processo de trabalha.
4. 0 prog rama
e recuperado do banco de clados.
5. 0 processo de trabalho aloca uma area de rolagem para armazenar as variaveis do program a, 0 ponteiro atua l de programa e as alocacoes privadas de mem oria.
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 para a Iista. 9. A Iinha 4 causa 0 campo 1; fnr a ser escrito da area de trabalho ztx l fal 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 ztxl fa l.
15. 0 programa termina, mas a area de rolagem (contendo a pagina virtual) perman ece alocada . 16. 0 processo de traba lbo determina 0 numero de linhas que a tela do usudrio ecapaz de exibi- e errvia essas muitas linhas cia pagina virtual como a pr imei ra pagina da lista para 0 servidor de apresentacao.
17.0 ccnrexro de usudrio e a area de rolagem sao deslocados para fora do processo de rrabalh o. Se 0 usuerio en rac pressionar Page Down, como a segu ir (veja a Figura 2.13):
0
processamento prossegue
1. Pressionar Page Down [az com que uma soliciracfo seja enviada do SAPGUI para 0 dispatcher DO servidor de aplicacivo para obter a proxima pdgina de saida a partir de ztx0202.
2. A soliciracac e despachada para
0 primeiro processo de trab alb o disponivel. 3. 0 contexte de usuario e a area de rolagem para ztx0202 sao deslocados para 0 processo de trabalho.
4. 0 processo de trabalho envia a pr6xima pagina para
0 servidor de apresentacao. 5. A area de rolagem t: 0 contexte de usuario sao deslcca dc s para fora do processo de trabalho .
Figura 2 12
SAPGUI (Servidor de cpresel1tol;oo)
Esto e 0 moneiro como a ins/rus:oo se lect fundono.
Mem6riaestendldo
DBS
~'4~~~.~{t~짜;:.;,~ ,
':~~i ;
. .. L
~ ' ~i.:~:';"~~
17
_, .~ """ , . 7 ' .... ' r:ita~Ji'!'.
0
processamento continua assim:
B
};
Se 0 usuario entao pressionar Back,
1. 'P ression ar Back faz com que uma sclicitacao seja enviada do SAPGUI para 0 dispatcher no servidor de aplicativo para terminar 0 programa
ztx0202. 2. A soliciracao e despachada para 0 primeiro processo de trabalho disponfvel. 3. 0 contexte de usuario e a area de rolagem para ztx 0202sao deslocados no processo de trabalho. 4. 0 sistema libera a area de rolagem para 0 programa. 5. 0 contexte de usuario
edeslocado para fora da tela.
75
-.;
76
-"".~--=-----=--=-=-,,,""""""'------------~---~~--~-------------~
APR EN OA EM 21 OIAS AB.lP/4
DIA 2, l EU P'W.EliU P' 06RAJI,A EM ABAP/~
F jgura 2 13
Co mp arada a Listagem 2.2, apenas a linha 3 mu dou. Esse programa funci ona exatamente da mesma maneira e produz a mes ma saida que a anterior. C omo a clausula i nt o nao foi especificada na instrucao se 1ect, 0 sistema utiliza a drea de trabalho cia tabela padrsc ztxlfal.
Esso e 0 seqiiencia de eveorcs ocionoda quando 0 usu6rio pressiona Poge Down.
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
L-
- - - - - - - ---I- - HI va V9 .
_
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. Voce pede definir areas de trabalh o da tabela adicional utilizando a in struc;ao data .
.1..0 de
:oglhO :"'irtUQl:.~._ . rologem
Sintaxe simplifica da para a instrucco 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 c brir urn maximo de seis sessces. Se voce qctser chrlr mois de sels, simples ment e efetue 0 logon umo segundo vez.
Entendend o os areas d e tro bo lhos da tabela TfRMO~
[NTiAOA~
~
m
'f
data
ItO
like tl.
onde:
â&#x20AC;˘
â&#x20AC;˘
Ita
e a n ome de um a area de trabalho de tabela qu e voce quer definir
e a no m e de uma ta bela qu e voc e quer para padrjio em sua area de trabalho de poi s . tl
il...
No linho 3 do listog e m 2.2, as polovros ; nto zt xl f al sse opcion ois. Se voc e debe-los de foro, 0 crec de trobolho co m 0 mesmo nome do tcbelo e uftlizode. 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 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.
NOVO
Z
Abaixo eSta a sintaxe simplificada para a insrrucio data .
Listagem 2.3 Seu segundo prog romo simplificodo
1 report ztx0203. 2 t abl es ztx lfa l. 3 sel ect > f rom zblfal order by ll fnr . 4 write / ztxlfal- lifnr. 5 endset ect ,
A Listagern 2.4 mostra como utilizar a in srrucao dat a para criar um a nova area de trabalho.
EKTWlA~ List a g em 2.4 Utilizando sua pr6pria a rea de trobolho de to bela 1 re port zb:0204 . 2 tables ztxlfal. 3 data Wi li ke ztxlfal. 4 select" tree ztxlfal into wa order by l t fnt-, 5 wr ite / ee - j tfnr, 6 endsetect .
77
--- 78
DlA 2:SEU PRIMEIRO PROGRAMA EM ABAPf4
APREN" EM 21 DIAS ABAP/4
a
c6digo na Lisragern 2.4 deve produzir a me sma saida que as duas listagens anteriores (veja a saida cia Listagem 2.3). Observe que nesse exemplo njio e necessaria defini r uma n ova area de trabalha - uma e utilizada apenas para ilusrrar 0 conceito .
ANlus[ ~
• A 1inha 3 define uma nova area de trabalha chamada ~a como a estrutura zt xl fal de DDIC. ~ A linha-lle uma linha de uma vez cia tabela ztxl fal na area de trabalho
wa em vea cia area de trabalho cia tabela padrao. •
NOVO....
Quando voc e explicitcmente atribui names a umo 6rea de trobclho
rrRMO"
se 1ect {como; nto wa no ltnhc 5j, esse crec de trobolho
ANALISE....
Este programa Ie todcs as reqlstro s de tobelc ztxlfal onde 0 nc rnero do ,. fahrican te e menar que 2000 e escreve 0 contecdo do compo 1i f nr (a ncmerc de fabriconte). No banco de dodos, 1; fn r e urn compo de ccroctere cc nte ndo vclcres nurr-ericos que estcc exa tcmente [ustificcdos e p reenchtdcs 6 esquerdo co m ze ros. Portanto, 0 vola r a ser comparedo com 1; f nr deve fer 0 mesmo formata e tipo de dodos pore evitor o converscc de dodos e osseguror que os resultados desejodos se jam obtido s.
no instru<;6a
e chomodo area de
frobo/he explfdfo .
latro d uzia do a c1ausulo where 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 fabricantes que tern numeros de fabricante menores que 2000, utilize 0 c6digo . na Listagem 2.5.
_
o
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 disponive is e automaticomente sec ctucluodcs pe lo sistema como cltero coes sue s no 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 otuol em sy-uzeit. Em gerel, eles soo chomados obrevtcdcmente de com pos sy [prc rw oclo -se "'sci'").
HDVO ...
HRMO'-
Todas as var iaveis de sistema sao definidas na estrutura sys t de DDIC. Mas nao def ina syst em seu programa; seus campos estao dispo niveis automaticamente dentro de cada programa.
ENTRADA~ Lista gem 2.5 Restringindo os fabricantes selecionad05 as names de vcrtcveis de sistema podem ser codificodcs utilizando 0 prefixo sy- ou syst -. Por exemplc, sy-datum tornbem pod e ser codiftcodo co mo sy st-datum; eles s60 funciono lmenle equlvclentes . Sy- e 0 formvlcrtc preferido, embora voce occsionalmente veto sy stem progremos mais a ntigo s. Syst eo unico estrutura que tem umo duolidade de prefixes . Para todos as outros, voce de ve utilizor 0 nome complete de estruturo como 0 preflxo.
1 report ztx0205.
2 tables ztx.lfa1. 3 select * from ztxlfa1 where lifnr 4 write / zt xlfal · l ifnr .
5
' 0000002000' order by lifnr.
endsetect .
o SAiDA ~
<
c6digo na Listagem 2.5 deve produzir esta saida:
1000 1010
1020 1030
1040
..
1 ;
;
Note que codificar urn caractere literal em ABAP/4 (como '0000002000 I na linha 3), deve envolver a string de caractere dentro de aspas simples.
Ira bo Ib °ad Q co rn veri uxeis,-,d..,e"--,,s,;isut"'eJjrnLLO"'-
A linha 5 emi te a linha para wa em vel. de ztxl fal.
79
Duas verieveis de sistema sao muito tite is para saber qu and o co dificar a inscrucao se 1ect : •
sy-subt-c
II
sy -dbcnt
I
I'
I i
I ![
1050
of
1060 1070
or
1080 1090
Deseobrindo sy-subre NOVO .... \ Pcro d~:e rmincr s.e a instru<;oo s e lect retor~ou qU~is~uer linhos: teste 0 volar do vcridve ] de slstemc sy-subrc fprcnunclo-se sol-sub-cre-st"] depois do
HRMO"
instru<;oo endsel ect. Se as ltnhos foram loeo lizodos, a vclor de sy -s ubr c se ra O. Se nenhuma linho [o! lccclizcdc, a valor sera 4. (Veic a listagem 2.6.)
d
:f d
.f
---~~~~~~~~~~~~~~----------'--~---------------~ 80
DIA 2:StU PRIMEIROPROGAAMA EM ABAP/4
APRENDA EM 21 DlAS ABAP/4
Depois de endselect. elo reter6 seu volar e entcc ccnterc 0 ruimerc de linhos selecionodos. Por exemplo, pora irnprimir rujmercs seqcenclots 00 lado de coda fobriconte e imprimir um tolo l do nomero de llnhos selecionodos no po rle inferior do relot6rio, utilize o c6d igo no listogem 2.7.
ENTRADA'" lista gem ~ .6 Utilizando sy-subrc para determinar se quoisquer llnhos ,.. fora m selecionodos 1 2 3 4 5 6
report ztx0206. tables ztxlfal . se lect .. from ztx'l f al where l f fnr > 'Z '. write / ztx lfet-ltrnr , endselect. H sy-subrc < > O. 7 write / 'No records found' . B endif.
ENTRADAlItr.. Listagem 2.7 Utilizando 0 sy-dbcnt para co ntor lmhc s retomados do "
~
No records found
ANALISE..... A instru<;oo se lecionodo no linha 3 estc restringido par umo cl6usu la where.
r
~epois do
o codigo na Listagem 2.7 produz esta saida:
Nesse coso, nenhumo linho coincide com a criteria no d6usulo where , entoo
endselect,
0
valor de sy -subrc
e configurodo como 4.
instrucoo select
1 re port ztx0207 . 2 tables ztxlfaL 3 se lect 10" from ztxlfa1 order by lifnr. 4 wri t e / sy- dbcnt , 5 wr ite ztx lfa1-1ifnr. 6 endse tect . 7 write / sy-dbcnt . B wri te ' r ecor ds fou nd'.
a codigo na Listagern 2.6 produz esta safda: SAiDA
~
SAiDA Muitos pclovrcs-chove otribuem vclores a sy -subrc . Algumas polovrcs-chove slmplesmente nco 0 configurorn. Se urne pe lovra-chave configura sy -subre, as volores oossrvels 500 documentodos no ojuda Fl para esse pclcvrc -chcve.
Se voce codificou u m a set ect e quiser testar 0 valor de sy-subr-c, seu teste deve vir depois de en dse 1ect. Por que? A resposta reside no fato de que 0 codigo entre select e end select e executado uma vez para cada linha retornada do banco de dados . Se nenhuma linha (zero) eretornada do banco de dados, 0 codigc entre select e endselect nunea e executado. Pcrtanto, voce deve codificar 0 teste para sy-subrc depois de endsel ect.
1 2 3
1000 1010 1020 4 1030 5 1040 6 1050 7 1060 8 1070 9 1080 10 1090. 11 2000 12 VI
21
Des cobrindo sy-dbc nt NOVO ~
Poro determinor a nume rc de Jinhos retornodo por umo instru<;60 sel ect, teste a valor de sy-dbcnt decors de endsel ect . Voce tombern pode utilizo-lo como urn contodorde 100Pi entre sel ect e endsel ect , elcccntem uma soma do itera'ioo otuol. Pore a prirneiro linho, sy -db cnt se ra 1, durante a segu ndo sera 2 e ossim por dionle .
I
VI2 V2 V3 V4
V5 V6 V7
22 VB 23 V9 1-3 registros encontrados
ANAliSE~
â&#x20AC;˘ A linha 4 escreve 0 valor de sy-docn t para ca d a linha que e retomada pela sel ect . A barra (/) comeca em uma nova Iin h a, eneao cada sy-dbcnt comeca em uma nova linha. â&#x20AC;˘ A linha 5 escreve sy-dbcnt.
II I
13 VlO VlI
14 15 16 17 18 19 20
Sy-subt-c noo e outomot icomente inicializodo como zero quando seu progromo lntctc. Entretcntc, isso nunco deve ser umo preo cupoceo, porque voce nee deve venficc-lo ate q ue umo instruceo que oconfiguro tenhc exeeutado.
HRMO"
81
0
valor de ztxlfal- l ifnr na mesma linha que
-,;.;.:,
82
APRENDA EM 21 DIA l ABAP/'
Exi bindo
0
DIA 2:SEU PRIMEJRO PROGRAM.&. EM ABAP{4
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. tables ztxlfbl.
• Da tela ABAP/4 Editor: Edit Program, de urn clique duplo no nome de qualquer campo sy dentro de seu codigo
• Va para
Data D ictionary , insira syst, se1ecione a bctao de 0pljao Structure e pressione a batao Display
au, voce poderia utilizar
0
Para localizar C'flmpos dentro cia estrutura, pressione a batao Find na barra de ferramentas Standard e digire 0 nome do campo que voce quer local izar. Se voce nao sabe 0 nome do campo que quer localizar, mas antes deseja localizar urn par descncao, voce tambem pode pesquisar as descricoes. S(RHN(AM~ lnicie a Screeotlcm "How to Seorch Through Field Descriptions" ogora.
Para pesquisar par descricoes de campo, utilize este procedimento:
0
operador de encadeament o, com o esse:
tables: ztxlfal. ztxlfbl.
Funcionalmente, os dais segmentos precedentes de c6digo sao identicos e ern tempo de execucio nao hi nenhuma diferenca em desempenho. Durante a gerecac de c6digo, 0 segundo segmento de c6digo e expandido em duas instrucces. Entao, de um ponto de vista funcional os dois prograrnas sao identicos. 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 ilustrada na Listagem 2.8.
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. 2. Escolha 0 caminho de menu Table->Print.. Uma caixa de dialogo aparece ra perguntando quais compon-entes voce deseja imprimir.
. 3. Faca uma marca em todas as caixas de selecao e pressione
0 batao Continue. Uma caixa de didlogo aparecera pergunrandc a voce as parametres de impressao.
4. P ressione 0 borao Print Preview. A caixa de dialogo se fechara e uma lista contendo uma pequena fonte aparecerd. 5. Escolha 0 caminho de menu Goto-> List Display. A Iista mudara para uma fonte maier de especc fixo. 6. No campo de comando, digite %sc ~ pressione a tec1a Enter. A caixa de dialogo Find aparecera. 7. Digite 0 texto que voce quer localizar e pressione a tecla Enter. Uma lista de coincidencias aparecera e cada ccincidencia sera desracada.
8. De urn clique em uma pa lavra desraceda para pular imediatamenre ate essa linha na lista. Se voce deseja localizar cutra ocorrencia do texto, va para 0 passo 6 desse procedimenro.
Utilizondo
0
Nova... a
ope rodor de encodeomento
e
sinal de dois-pontcs (: l chamado operodor de encodeomento. Uttllze-c HRMO"" para combiner linhas de c6digo que cornecom com e mesmo polcvro ou 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.
1 2 3 4 5 6
report ztx0208. tables ztxlfal. select * from ztxlfal order bylifnr . write: / sy-cbcnt , ztxlfal-lifnr. endselect. . write: / sy-dbcnt, 'records found'.
a c6digo na Lisragem 2.8 produz a mesma saida que 0 pro gram a anterior (veja a saida da Listagem 2.7).
ANAliSE ~
• A linha 4 combina as linhas 4 e 5 da Listagem 2.7 em uma unica linha utilizando 0 op erador de encadeamento. • A linha 6 combina as linhas 7 e 8 da Listagem 2.7 em uma u nica linha utilizando o· operador de encadeamento.
Utilizondo a
jnst[lJ~ao
sel eet si agl e
A instrucao select single recupera urn registro do banco de dadc s. Se voce conhece a cbave primaria inteira do registro que deseja recuperar, se 1ect s i ngl e emuito rnais rapida e mais eficiente que select/endselect.
Sintaxe para a lnstrucco select single A seguir esta a sintaxe simplificada para a insrrucao se 1ect si ogl e.
83
- - - ._- - - - - • - - - - - - -
.-';,.~ "",- ""~ :~--", ;';;;:"'::-="",=:"'"":=:-=~~_""'!!!""'!!I"'"_""",,",,,
."""".
84
- - - - - - - - - - - - ..,
_ 'W ........_ _...._ _........_ _.....
_ _......._ ...,....,..._ ........_ .......
DIA2: SEU PRIMEIROPROGRAMA EM A8AP/~
APREH D" EM 21 DIAS AB AP/4
III
s el ect
Z
*
from tl [into wa] [where fl op vI and/or f2 op v2 . •. ].
* indica que tcdos a s camp os na tabela devem ser recuperados . tl eo nom e de um a tabela previamente definida em uma instrucao ta bl es .
wa 11
T
e0
Co me nta nd o
0
c6 d igo e a
d ocumenta~ao
...._ _ .
85
fo rm al
Ha duas maneiras de colocar comentarios em seu c6dig o:
onde:
~m
.....r-"_ _....
no me: cia area de trabalha que coincide com a estrutura da tabela.
e0 nome de urn campo n a tabela tl.
op e urn dos seguintes ope radores vl um literal ou uma variavel.
logicos: '" <> > > = -c <=,
• Urn * (asterisco ) na primeira coluna indica que a linh a inteira e urn comentdrio. Ela ficare em vermelho dentro do edit or para indicar que eurn comentario de linha inteira. 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 vermelho como para urn comen tario de linha in teira.
•
e
and/or e uma palavra and ou uma palavra or .
P a r exemplo: * Isto e um ccnentartc
as seguinte s pontos aplicam: •
select si ngle nao corn elia urn loop porque ela apenas retoma uma linha. Po rtanto, nao co difique uma instrucio endsel ect , Se fiaer i550. voce obtera urn erro de sintaxe.
• Certifique -s e de que uma linha un ica foi retomada, voce deve especificar todos os camp o s de chave prim aria na cldusula whe re. Se voce nao fize r isso, seu p ro grama ex ecu tara, mas obt era urn aviso. (Para ex ibir os avis os , es c ol h a 0 caminho de menu Programa Program-c-Check -> Display Warnings.) 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.
fHTRADA~
Lisfa g em 2 .9 A instru;ao sel ect si ngle
I repor t zt x0209. 2 tables zt xl fa l . 3 sel ect sing le * from ztxlfal where lifnr" 'VI ' . 4 if sy-subrc z o. 5 write : / ztxlfaI · l i fnr , zt xlfal - namel. 6 el se . 7 wri t e 'record not found" . 8 endif.
SAiD! ~
o VI
!NjllSE~
c6d igo na Listagem 2.9 produz esta saida: Quantity first Ltd . A linho 31ocolizo 0 fobrkonte VI no to be lo zt xl fal. Como apenos umo linha foi retornodo, order by noo e necessaria e nem e endsel ect .
ta b' es ztxlfal.
" Isto t ambem e vm cement ar t 0
Nao ha caractere end- comnent (fim de co mentario). Em outras palavras, quando voce comeca urn comentario, 0 res tante da linha sera apenas urn comen tdric. Nenhum c6d igo adicional pode entrar nessa linha. 0 comentario termina no final cialinha atual. Independenremente dos comentarics, voce pode formalmente registra r seu c6d igo no componente de document aci o do progra ma. Para fazer isso, va para a tela Editor I nitial, de urn clique no batao de opca o D ocumentation e pre ssione Change. Digite sua documentacio e pr essione Save.
Resum o • O s programas do ABAP/4 sao compostos de compone ntes . Os cornponentes sao atriburos, codigo-fonte, vari ante s, elementos de tex to e documenracao. No minimo, urn programa deve ter atributos e codi gofonte. •
Os rela t6rios do ABAP/ 4 devem comecar corn a instrucao re port.
• A insrrucao tables aloca uma area de trabalho da tab ela p adrao e tambern da acesso ao programa para a tabela de banco de clade s do mesmo nome. • 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 ndse 1ect para recuperar multiplas linhas. • 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 rermina automaticamente quando todas as linh as forem processadas. Se voce DaO esp ecificar uma clausula ; nto, cada [inha sera colocada na area de trabalho da tabela padrao e sobrescreverd a linha anterior. 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
e
.,.. 86
- .....
'W' W
W
â&#x20AC;˘
_ -w DIA 2: SEU PRIMEIRDPROGRAMA EMASAP!.
"RENDA EM 1\ DIAl ABAP/4
aumentado sempre uma vez p elo loop e dep ois do endsel ect ele con tem 0 mimero de linh as recuperadas.
edito r teria acabado. Hoi agora duas vers6es do seu pr ograma no banco de dados: a versao alterada (a que voce acabou de executar) e a original. (A versso alrerada e armazenada com urn nome temporario que consisre em ! e os ultimos sere caracteres de seu 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 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 executou) simple smen te pressio ne 0 bo-ac Continue.
â&#x20AC;˘ 0 operador de encadeamento e dois-ponccs (:) . :E urilizado para reduzir a redunddncia on de dua s ou mais insrrucoes comecam com a mesma pala vra ou sequencia de palavras.
P&R
o o
0-
e o
o
Se eu estiver edltando um programa, 0 que acontece com minhas alteracces se estiver desconectado do R/3 j por exemplo, se meu PC trava e tenho de rei niciaIizar? Perderei m inhas altera<;6es? 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 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
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
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.
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? Nso. Mas quando voc e quiser salvar basta pressionar a tecla El I. As vezes, quando edito urn p rograma, obtenho u rna caixa de dial ogo com a me n sagem "Program was temporarily buffered (pos sibly due to a system error/failure) Choose one of the foll owing op tions" - 0 prograrna ternporariamente teve uso 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 ? 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 voce executa seu programa sem pri mei r o salvd-Io. N ormalmente e excluida qu ando voce ret crna ao editor e salva suas alteracbes, mas se voce an ormalmen te sai do editor, ela p ermanecera. Por exemplo, voce poderia modi ficar seu program a e entdo executa-lo imedi atamente sem salva-Io. Se sen pr ograma 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
o o 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 e ap ena s ignora-la. Todo mundo faz issc . Possa aninhar as in struco es sel ect dentr o de autra? 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.
Wo rksho p Os exercrcios a seguir oferecem uma prarica para utilizar 0 editor e escrever progra mas simples que utiliz am as instrucoes t abl es, sel ect e wr it e. As respostas estao n o Apendic e B, "Re spos ras as pergumas e aos exercfcios" .
87
..,
"::'!!!'-------------~-88
APREHDA EM 21 DIAS AWl'
Teste 1. Quais as duas coisas que a instrucao tabl es faz? 2. A que 0 termc area de trabalho da tabela padrao se refere? 3. Se a inscru cao sel ect esta faltando em urna clausula ; nto, onde entrarao as linhas? 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 em uma nova linha? 5. Qual e 0 nome da varidvel de sistema que ind ica se quaisquer linhas for am localizadas pela instrucao select? 6. Qual e0 nome da variavel de sistema que indica quantas linhas foram localizadas pela insrrucao select? 7. .Veja a Listag em 2.6. Se h a 30 linhas na rabe la ztxl fal, quanras vezes a linha 4 foi executada? 8. Veja a Listag em 2.6. Se a tabela ztxlfal esdver vazia (se contem 0 linhas), guantas vez es.a linha 4 foi executada?
Exe rcfcio s do ed itor No exercfcio a seguir, voce copiara urn programa, corrigira erros no codigo, mesclara novo c6d igo nele, executara, imprimira, carregara, criara uma versao e comparara versoes . Veja a Tab ela 2.3 quando necessaria. 1. Copie a program a zty0200a para 0 programa ••• 0200a. Para executar a c6p ia, utilize 0 botao Copy localizado na barra de [erramentas Application do ABA P/4 Ed itor: Initial Screen. report zty0200a. sel ect v from ztx lfal. write / ztxl fe l-Hfnr . endsel ect • endsel ect . ~ linha duplicada intencionalmente r eport zty0200b. if sy-su brc <> o. write : / ' no records fo und' . endif.
2 . Edite 0 programa • - • 0200a. Corrija 0 nome de relat6rio na insrrucao report. 3. Insi ra uma nova linh a depois da linha 1. Digite a instrucao tables apropriada nessa linha. 4. Obtenha ajuda para a instrucfo tables. (Coloque a cursor na instru~ ao tabl es e press ion e F1.)
",.
D1A 2,SEU PRIMEIRO PRDGRAMA EM AMP/4
89
L
5. Retorne da ajuda novamente para seu programa. (Pres sion e 0 bo rao Back na barre de ferram entas Application.) 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.) 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 .)
8. Exclua a Iinha 6. (Cologue 0 cursorna linha 6 e pres sione 0 batao Cut na berra de ferramentas Application.) 9. Abra uma nova sessao e exiba a programa zty0200b. (Escolha 0 caminho de menu Syst em-> Create session. Uma nova janela de SAP R!3 e exibida. Escolha 0 caminho de menu Tools- >ABAP/4 Workbench. A telaABAP/4 Development Workbench eexibida. Pressione o botac ABAP/4 Editor na barre de [erramentas Application. No campo Program Name, digite zty0200b. Pressione a bocao Display.) 10. Marque as linhas 2 a 4 utilizando 0 botac Select. (Coloque 0 cursor na linha 2. Pressione a borao Select na barra de ferramentas Application . 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.) 11. Copie 0 bloco marcado para 0 buffer X. (Escolha a caminho de menu Block/Buffer-> Copy to X Buffer.) 12. Alterne de volta para a jane la em que programs • • - 0200a e exibido. 13. Cole as linhas do buffer X depois da Iinha 5. (Cologue 0 cursor na linha 6. Escolha 0 caminho de menu Block/Buffer-> In sert X Buffer.) 14. Marque 0 bloco de linhas 6 a g. (Coloque 0 curs or na linha 6. Pressione 0 botao Select na barra de [erramentas Applicati on . Coloque 0 cursor na linha 8. Pressione 0 botac Select novamente .) IS. Mova 0 bloco quarro espacos para a esquerda, alinhe a inst rucao ; f com a inscrucao select. (Coloque 0 cursor na linha 6 na coluna 1. Pressione 0 batao Move Line na barra de ferramentas Application.) 16. Escolha 0 caminho de menu Program->Save As e salve seu programa modificado como > • - 0200b. 17. Exiba 0 programa _ . -0200b utilizandc 0 caminho de menu Program-> Other Program. 18. Corrija 0 nome de programa na instruqao repo rt. (Altere _•• 0200a para·· ·0200b na linha 1.) 19. Selecione as linhas 3 a 5. (Cologue 0 cursor na linha 3. Pression e 0 batao Select na barra de [erramentas Application. Coloque a cursor na linha 5. Pressione 0 batao Select novamente.) 20. Ccpie 0 bloeo selecionado para a buffer interne do pr ograma. (Pressione 0 batao Copy To Buffer na barra de ferram entas Application.)
.,
i ,i'" , 90 };."':£ ;or'
~-
..
-!'"""I-_......._.. . . .- . . ...--_.. . . . _.. . . . . . . . .
....~""r-"--....e-"="....,=-....",......,.....
-~~~~---~
w
.
w
~
~
. w_
r -. w .-...........w _ .......... ._ _ ....,.......,..-.............---.,......,.......,......,.......,......,.................._ w ••• w •• _ _ ........
_
I APRENDA EM 21 OJAS ABAP/~
DIA UEUPRiMEIRDPRDGRAlIA EM ABAP/4
J
I
21. Cole 0 bloco que voce acabou de copiar no final do seu prcgrama. (Coloque 0 cursor na Iinha 9 e pressione 0 borao Insert From Buffer na barra de ferramentas App licarion.) 22. Cole 0 mesma bloco novamenre no final de seu programa. (Ccloque o cursor na linha 12 e pressione 0 borde Insert From Buffer na barra de [erramentas Application.) 23. Des faca a ultima colagem. (Pressi one [erramentas Applicarion.)
0
bordo Undo na barra de
24. Digite 0 seguinte c6digo nas Iinhas 12 a 14. Comece cada Iinha na coluna 1.
35. Utilize urna teela de funcac para salvar seu p rograma e outra tecla de funlJao para execun-la. (Pressione F I t. Pre ssion e F 8.)
if sy-dbcnt > O.
write : endif.
I
sy-obcnt , ' records found' ,
25. Automaricamente fixe a endentacao, escolhendo 0 caminho de menu P rogram- > Pretty Printer. 26. Salve seu p rograma. (Pressione
0
34. Substitua todas as ocorrencias cia s tring zt xlfal nas linhas 10 e 11 com a string ztxlfbl utili zan do a fun~ao Search/ Replace. (Culo que o cursor na linha 10. Press ione 0 borso Select. C oloque 0 cursor na linha 11. Press ioneo botao Select. As linha s IDe 11 agoraesno marca d as como urn bloco em verrnelho. Pressione 0 botao Find.. A tela Search/Replace eexibida. Digite ztxl fal no campo Find. Paca um a marca de selecao na caixa de selecao Replace By. Digire ztxl fbl no campo Rep lace By. Pressione 0 botao Continue. A tela ABAP/ 4 Editor: Edit Program e exibida . Pressione 0 botec No Confirmation . Tod as as ocorrencias cia string dentro do bloco marcado sao substitufdas.)
botso Save.)
27 . Retcme para 0 ABAP/4 Editor: Initial -Screen e documente seu programa. (P ressione 0 batao Back na barra de ferramentas Standard. Escolh a 0 bo tao de opcao Documentation. Pressione 0 bouo Change.) 28. Salve sua documen tacao e retom e para editar 0 codigo-fonte. (Pressione 0 botao Save. Pressione 0 botao Back. Escolha 0 botao de op~ao Source Code. D igite • • • 0200b no campo P rogram. Pressione 0 bo tao - p ushbutton - Change.) 29 . Exi ba as componentes cia estrutura SYST clando urn clique dup lo em
urn campo sy. (De urn clique duplo na palavra sy-subrc na linh a 6. A estrutu ra SYST e exibida .) 30. Rerorne para .edirar seu programa. (Pressione 0 botac Back.) 31. Localize a primeira ocorrencia da string ztx lfal em seu programa. (Pressione 0 bon o Find. A tela Search/Replace e exibida . Dig ire ztxlfal no camp o F ind . Pressione 0 bo tao de op~ao From Line. Pressione 0 botao Continue.) 32 . Repita a pesquisa, localizando cada ocorrencia sucessiva ate que voce encontre to das elas. (Pressione 0 batao Find Next repetidamente ate a mensagem "Strin g wri te not found" aparecer na barra de status na parte inferior da janela.) 33. Adicione a nome de tabela zt x'lfal a instrucfo tabl es. (Alterando a instrucao de tabe las, de modo que e1a exiba tables: ztx'l tef , zl xlfbJ.) ,
36. Salve a saida de lista para urn arqu ivo em seu disco rigido esco lhendo o carninho de menu List - c-Save- > Fi le. Utilize formate nao convertido. 37. Exiba sua saida descarregada ut ilizando 0 Bloeo de N ota s. 38. Retorne para editar seu codigo. (Pressione
0
b otao Back.)
39. Faca download de seu prograrna para 0 arquivo c: \ temp\ · •• 0200b. tx t. (Escolha 0 caminho de menu Utilities- c-Download. A tela Transfer to a Local File e exibida. Digite c: \ t emp\ •• · 0200b. tx t n o campo File Name. Pressione 0 botao OK. A mensagem "277 bytes tr ansferred" aparece na barra de status na parte inferior da jane1a.) 40. Ed ite seu programa depois de fazer download ut ilizando 0 Bloco de Notas. Adic ione urn comentario de linha inteira dep ois da in stru cao de relat6rio com seu no me nele . (Insira uma n ova Iinha .depois cia insrructo report: *Created by Seu nome.) 41. Digite 0 segu inte comentario no final da primeira ins truc io sel ect:
II
read all records from table ztxl fal. 42 . No Bloco de Netas, salve seu program a modificado em disco. 43. Carregue-o, substituindo 0 programa •• ·02QOb. (Alterne para sua tela ABAP/4 Editor: Edit Program· •• 0200b. Escolha 0 caminh o de menu Utilities-> Upload. A tela Import Local Fil e e exibida. No campo File N ame, digite c: \ t emp\ · ·· 0200b. txt . Pressione 0 botao
OK.) 44 . Salve 0 programa carregado. (P ression e 0 batao Save.) 45. Imprima seu programa. (Pressione 0 botao Print na barra de ferramentas Standard. A tela Print Paramet ers e exibida. Ce rt ifique-se de que a caixa de sel e~ao Print Immed. est a at ivada. Pressione 0 botao Print . Sua saida e enviada para a imp ressora e voc e e ret omado para a tela ABAP/4 Edi tor: Edit Program.)
91
92
- -D1A 7:SEU PRIMEIRO PROGRAMA EM AIIAP/4
APRENOA EM21 DIAS ABA P/4
55. Remova os com entarios utilizando Buffer-c-Delete Comment ::-.
46. Execute seu programa e imprima a safda. (E scolha 0 caminho de menu 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. Pressione 0 bene P rin t. Voce acaba voltando para a safda de Iista.)
fxerdcios de
49 . Salve suas alreracoes. (Pressione
0
botao Save.)
50 . Retorne ao edito r tela inicial e compare as duas vers6es. (Pressione 0 bo tao Back. A ABAP/ 4 Editor: Initial Screen e exibida. Escolha 0 cam inho de me nu U rilities -c-Version management. A te la Vers ions Of O bject • • • 0200b Of Type REPS e exibida. Eaca uma marca de selecao na caixa de selecao Version 00001. Pressione 0 bor ao Compa re na barra de ferramentas Application. A tela Compare Programs: All e exibid a. Role para baixo para visualizar as diferencas .) 5 1. Recu pere a vers ac original. (Pressione 0 botao Back. A tela Versions Of O bject ' • · 0200b Of Type REPS i exibida. Remova a marca de selecso da caixa de selecao Act. Pressione 0 bono Re trieve na barra de [err ame ntas Application (0 sistema nao oferece uma resposta). Pressione 0 bon o Back. A tela Res tore Version e exibida . Pressione o botao Yes. A tela Versions Of Object e • • 0200b O f Type REPS i exibida. Pressione 0 bo eso Back. A ABAP/4 Editor: Initial Screen e exibida.) 52. Edite seu p rograma e m arque as ulrimas tres Iinhas como urn bloco. (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 lin ha 13 torna-se vermelha. Coloque 0 cursor na linha 15. Pressione o botao Select. 0 bloco e marcado em vermelho.) 53. Comente 0 bloco utilizando 0 caminho de menu Block/Buffer-> In sert Comment ". 5 4. Marque as ultimas tres linhas como urn bloco (veja 0 passo 51) .
caminh o de menu Block!
pro-9 ,j.rua.umLJ.lla.l.l~ ... 6.l.1o",-
_
1. Escreva urn programa que recupere todas as linhas da tabela ztxlfb i 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 Iabricante, com 0 primeiro c6digo de empresa. A safda deve ser classificada primeiro pelo c6digo de empresa em ordem ascendente, depois pe lo mimero de fsbricante em ordem desce nden te. (Utilize a ajuda Fl para localizar a sintaxe correta.) Atribua nome a seu programa •• ·e0201. Urn exemplo de como sua saida deve aparecer e mostrado a seguir.
47. Retome para editar programa •• ·0200b e salve uma versao dele no banco de dados Ve rsions. (Pressione 0 botao Back para retornar para a tela ABAP/4 Editor: Edit Program. Escolha 0 cam in ho de menu Program->Generate Version .) 48. Substirua todas as ocorrenc ias de ztxlfbl com ztxlfc3. (Pressione 0 boeo Find. A tela Search/Replace e exibida. Digire ztxl fbI no campo Find. Faca uma marca de selecao na caixa de selecso Replace By. Digite ztx l fc3 no campo Replace By. Pressione a batao de opcao In Program. Press ione 0 bon o Continue. A tela Global Replace In Programs e exibida. P ressione 0 botao No Confirmation . Todas as ocorrencias da string sao substituidas. Pressione 0 batao Save. Pressione a batao Back. Voce e retornado para a tela ABA P/4 Editor: Edit Program.)
0
93
SAioA~
1000 1000 1000 2000
Y9
YB Y6
V9
2. Copie 0 progl'ama zty0202 para·· ·e02D2 (a listagem aparece a seguir). Ele nac produz qualquer saida. Localize 0 bu g n ele e corrija-o. Depois de voce [azer isso, a safda correta deve ser no re cor ds found. 1 report zty020Z. 2. tables 'ztx1fal.
3 select * from ztxlfal where lifnr l ik e 'W%'. 4
5 6
if sy -subrc <> O.
write / ' no records found '. endt f.
7
write / ztxlfal-1ifnr.
B
endsel ect ,
3. Copie 0 programa zty0203 para ••• e02Q3 (a listagem aparece a seguir) . E le contem urn erro de sintaxe e urn bug. C o rrija 0 erro de sintaxe e 0 bug. Quando corrigido, eIe deve exibir numeros de fabricante maiores que 1050 da tabela ztxlfal. 1 report zt y0203. 2 tables ztxlfa1 3 setect > from ztxlfal where 11fnr 4 write / ztxlfa1~ 1i fnr . 5 endse1ect .
>
' 1050' .
4. Copie 0 programa zty0204 para ••• e0204 (a listage m aparece a seguir) . A safdaestd incorreta. Olhe a saida, descubra 0 que ha de errado e corrija 0 programa. 1 report zty020 4. 2 tables ztxlfal. 3 select'" from ztxlfal where 1ifnr 4 write I ztxlfal-1ifnr.
>
' 0000001050'.
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 2 3 4 5
report zt y020S. tab les zt xl fal . setect ... from ztxlfal wh ere lHnr endselec t. write / ztx lfal-l ifnr.
:>
' 0000001050' .
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 .
oData Didionary, Parte 1
3 data we l i ke zt xl f bl. 4 setect > f rom ztxlfal into ztx lfa1.
5 write I ztxlfal- lifnr . 6 wri t e ztxlfal -namel. 7 enese1ect . 8 if sy- subrc <> 0 or sy-dbcnt .. O. 9 write / ' no records f ound i n ztxl fa l" , 10 endif . 11 ul t ne. 12 set ect ... f rom ztxl fbl int o ea . 13 write / ee- Itfnr- . 14 write wa-bukr s .
Objetivos do capitulo Depois de coinpletar esse capitulo. voc e devers set: capaz de: • D efin ir as diferencas ent re tabelas transparente, de pool e de cluster • Criar dominies, elementos de dados e tabelas tra n sparen te s no Data D ictionary • Crier aju da Fl para os campos de uma tabe la e criar vinculos de hipertexto dentr o ciaajuda F l
15 encsete ct , 16 if sy-subrc <> O. 17 write I 'no record s found'. 18 endi f .
• U tilizar os qua tro navegadores de clades fo rn eeidos pela SAP para 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 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 est ru rura (co ns tru ct) de programacfo mais eficiente. 1 re port zty0207. 2 ta bl es zt xlfal. 3 sele ct s ingle '" from ztxlfa l whe re lifnr > ' 0000001000 ' . 4 write I ztxlfal -l1fn r. 5 endsetect • 6 if sv- suer c <> O. 7 writ e I ' no records f ound' . 8 endi f.
Oe.scobriodo oiveis de versoo do R/3 NOVO....
H6 muitas versees - tombern chemodas niveis de versec - do sistema R!3 em utiliza~6a nos die s de ho]e. A verscc 3.0 foi a primeira, mas desde suo 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 pode de terminer a nlvel de versec de se v sistema utilizanda a caminha de menu System- > Status.
TEUD '"
I
L
Este livre foi tes tado em urn sistema 3.of. Seu siste ma pe de ser em Outre nivel de versao. Embora a maicria das difer encss deva ser menor com referencia aos temas abord ad os aqui, algum as pod em causar confu seo au most rar infer-
hllpJlwww.ccmpl1$.com.br
----~~--~ - - - ----------- -- - - - - - - - - ~ 96
APRE MDA EM 21 DIAl ABAP/~
DlA3:0DATA DlaJONARY,PARTEI
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 pod em causar confusao foram observadas neste texto. Entretant o, se a fun cionalid ad e em seu sistema parec e diferir da descrit a aqui, voc e pode cons ultar as 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 proc edimen to:
Explorando os tipos de tabelas em R/3 No R/3 ha tres tipos de tab ela: tab elas t ransparent es, de p ool e tabelas de cluster, Elas sao mos t radas na Figura 3,1. Fig urQ 3 1
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 aparece.
2. Escolha
0
3. Pressione
",b.le>T9
borao de opca o RELN. 0
A ", bolo <lcbonco d. dodo, ,.",.
botao Choose na bar ra de ferramemas A pplic atio n. A tela
Find Release Notes
''''' '''''''''''''''0 de c<l/'I'P<>1 • ",.""0 _
eexibida.
.o<""""",ltmo,"...".o
~,
4. Pressione 0 botso Complete List. A tela D isplay St ruc tu re: Complete List of Release NOtes
~o<nl!
0 "' belc> DOICIVJ
eexibida.
ITlJ """"-A
Moo"", ..bel",
"" R/3, m<>' "p'"'''' u"'" '" be'a "" DOIC. At. Ichb. "" IVJpode m "" hila I., ",,"'pc" d. e..... . p<imO';"
",b."'T9
"'belode
bo",,"----
ITT]
do dod<l. t,,,,' • """' . d;IG<. nl. • nii me... d. C<lmp<>< d,I,,.,,,.. • a' <''''PG .lim .,.,.,.•• d,I.,•• ,.. <!G IO bela ODIC do IVJ
.", 0GnI"",
.o.q....... "'llelcl.> "" R/3. """.0 Iab.le> "" booc:"d. dod... .
At. ",bel", I'", pole>
""""" ..."'" e""" ",;",oM ,m """''''''
" ' "'V"c1. <6<> ....... ..""' 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 subn6 ABAP/4 Development Workbench.
Apro£undando-se no R/3 Data Dictionary Como uma revisao , por favor espere alguns minu tos e releia a sec;ao no Dia 2 intirulada "Introduzindo o R/3 D ata Di ctionary" nesse mement o. Os objetcs Data Dictionary sao utili zados na mai or ia do s programas ABAP/4. A natureza do entrosam entc dos pro gram as em A BA P/4 e objeto 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, voce aprendera a criar objeros DDI C co mo tab elas, elem entos d e daclcs e domfnios.
Muites cble tcs de dese nvclvlmento ufilizodos com o exemples 0 0 le ngo 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 objetos de exernplo te reo a mesmo nome que a s o bletos do R/3 reots, 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.
Tobe los transporentes NOVO ~ TERMO '"
Umo tobeio transporente no dlclcncrlo fern relocionomento um-poro-um com 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 fronspa rente no dlcloncrlo, he umo tobela ossociodo no banco de dodos. A tcbelc de ban co de dodos tem a mesmo nome, a mesmo num erc de co mpos e as compo s tern a s 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 banco de dodo s.
NOVO... Tn.MO ~
As tab ela s trcn sporentes sec multo mois comuns do que as tobelos de pool cu de duster. Elcs sao utilizad os pa ra a rmazenor dodos de oplicotivo. Os dodos
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 as Icbricont es.
As tabe1as rran sparent es sao provavelmente 0 unico tip o de tabela que voce criara.. As tabelas de pool e de cluster nao sao normalmente utilizadas para 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 .
.
97
98
DIU DDATA DICTIDNARY, PAR" 1
"RE NDA EM 21 DIAl ABAP/4
Alguns exemplos de dados contidos nas tabelas de pers onalizacao sao ccdigos de parses, c6d igos de regiao {esrado au provincia), numeros de conta de reconciliacao, taxas de cambio, meeodcs de depreciacfo e condicces de pre c;o. Cada fluxo de tela, validacao de campo e atributos individu ais de campo sao as vezes ~orientados por tabela via configuracces nas tab elas de personalizac;ao.
Tanto as tabelas de pool como as de clus te r tern relacionamentos rnuieospara-urn com tabelas de banco de dad os . As duas podem aparecer como m uitas tabelas em R/3, m as elas sao arm azenadas como urna iinica tabela no banco de dados. A rabela de banco de dadc s tern urn nome diferente, numero de campos diferente e nomes de campo diferentes dos cia tabela do R/3. A diferenca entre as dais ti pos permaneee na carac terf srica dos dados que des armazenam e sersc expli cadas nas se~6es a seguir.
Poo ls de to bela e labelaLd",e,-,p""o",-o ",-,'
99
Fig ur a 3 2
As lobe/os de pool
_
femum
re/ocionome"to
lOYD Il.. illitO "
mvitos-poro-um com
Umo tobe/o de pool no R/3 tem um relociono mento muitos- poro- um com umo
pools d" tcbelo. .
tc belo no banco de dodos [vejo as Figuros 3.1 e 3.2). Pore ume tcbelc no 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 (construct) pro priet6rio do SAP.
NOYO Il.. TfUO"
Quondo exomino umo tcbelc de poo l no R/3, voce ve umo descdccc de umo 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 cada um a}. Os poo ls de tab ela reduzem a quantidade de recurs os de banco de dados ne cessarie s quando mui ras tabelas pequenas tern de ser abertas ao mesmo tempo. A SAP as uriliza pa ra dados de sist ema. Voce pode criar urn p ool de 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 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 tabelas) sera criada n o banco de dados. Voce entdo pode definir as tabelas de pool dent ro do R/3 e at ribuir t odas etas ac seu pool de tab elas (veja a Figura 3.2). As tab elas de po ol sao prin cipalmenre utilizadas pelo SAP para armazenar dad os person alizados.
Durante a implemenracic inicial do sistema os dad os nas tabelas de personalizacao sao configurados par urn analista fun cional . Es se pro fissio nal nonnalmente tera experiencia relacionada co m a area de ne g6cio sendo implernentado e recebera treinarnen to ex tenso na configuracso de urn siste m a R/3.
Cluste rs de to bel a e tobe los de cluster Umo tobe /o de cluster e seme lhante a umo tcbelc de pool. Elo te m um 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 d uster de tobe /os.
HOYO .... mM.O "
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.
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 empreso . No R/3, esso perscncluccec e feila via tobelos de personolizo¢o. As tcbelos de person olizoc;oo co ntem co digo$, volidoc;oes de compo, intervolos d e numero e parametros que olterom a mon eiro como os op!icotivos do. R/3 se comportom.
NOYD ....
;
I I
j
I
Como as tabelas de p ool , as de cluster sao out ra estrutura (co nstru ct) proprietaria ciaSAP. Elas sao utilizadas para armazenar clados de algumas (aproximadamente de 2 a 10) tabelas muito grandes. As tabelas de cluster s.eriamutilizadas 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.
., ri
I'
100
APREIiDA EM 21 OIAS ABAP/4.
OIA 3:0DATA DlGlONARV, PARTE 1
Os clusters de tabela contem menos tabelas que as pools de tabela e, dif erenre dos pools de tabela, a chav e p rimaria de cada tabela dentra do cluster de tabelas ccrneca com a mesmo campo ou campos. As linhas das tabelas de cluster sao combinadas em uma (mica linha no cluster de tabelas. As linhas sao combinadas com base na parte cia chav e primaria que elas tern em co mum. As sim , quando uma linha elida de qualquer uma das t abelas no cluster, codas as linhas relacionadas em todas as t abelas de clus ter t am bem sao recuperadas, mas apenas uma {mica E/S e necessaria . Urn cluster e vantajoso no caso em que as clados sao acessados a partir de multiples tabelas simultaneamente e essas tabelas tern pelo menos urn de seus campos de chave primaria em co mum . As t abelas de cluster reduzem 0 numero de leituras do banco de dad os e assim melhoram 0 de sempenho.
Ccbeco lhc do pedido
dodos de
1000 1000 2000 2 2000 3000
PK 1000 2000 3000
0. c/adm0P'l"'''''''
Header Data Hec er Data Header Dolo
,
no R{.!"""", so
,",I~ ....
. ", ."..
'-
IObolo, .. ~,.do,.
I
0"""'.""'"
o
I
j
01 02 01
clII1lor: ~
CDHDR
I I
Cluster !able
Change document header Field nama
03 01
I
~
Variable lenght row....... r 1000 Order Heoder Dote 0 1 ITEM 1DATA 2000 Order Heeeer Dote 0 1 ITEM10ATA 3000 Order Header Data 0 1 ITEM10ATA
-'-
02 02
COpa s
Field name MANDANT
OBJECTCLAS OBJECTID
CHANGENR TABNAME
CHNGIND
Key Typa
l engtll
171 CLNT
13
[7 1
CHAR
r-wr--.w r-wr-w-
171 CHAR 171 CHAR 171 CHAR 171 CHAR 170 171 CHAR 110 171 CHAR J1 171 CHAR 11" 17
fUNiTrs
~:~;~~: ~ I~:~ R
ICUKY_NEW [71 CUKY 15
I
VALUE..NEW
I
J
Tabla Cluster
CDClS
Change document header
~
....
ITEM20ATA fTEM20ATA
Cluster table
Change document Items
I I I I I ITA'KEY IFNAME I I IUNIT.OLO
ITEMl DATA ITEM2DATA ITEM 1DATA ITEM20ATA ITEM30ATA ITEM 1DATA
:-:::~~ --~~
M"
primeiros quatro campos de creve primaria em comum e sempre sao ccesscoos iuntos e enlao s60 ormozenodos no cdcls de duslerde lobe/os .
I I
T EXT_CASE
~~~,. - - --- - --~ - - - -- - - - -- ---- -- -- -~--- --_ . _----- - --
O, do<Io> ..,.I o
fern os
~
do tobelo
vc rtes lobe/os bcseocos nos compos de chove prim6rio que e/os fern em comum.
cdpos
Detolhe do pedldo do tobelc PK
Figurg 3 3
Os clusters de lobe/a orm ozenom
Fi g u r a 3 4
As fob e/os cdhdr e
101
03
I I
Fieldname.
171 CHAR
[II
.: VALUE_OLD
CHAR
J2i4 J2i4
MANDANT
OBJECTCLAS
IOBJECTlO
Per exemplo, como mostrado na Figura 3.4, os quatro primeiros campos de chave primaria em cdhdr e cdpos sao identicos. Eles rornam-se a chave primaria para 9 cluster de tabelas com a adiliaOde urn cam po pad rao de sistema pageno para assegurar que cada linha e(mica. Como outro exemp lo, suponha qu e os dados de cabecalho d o pedido e 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 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, todas as linhas de item para de tambem serao lidas p orgue rodas elas sao armazenadas em uma unica linha no clust er de tabe1as. Se urn uni cc item for lido, a cabecalho e rodos os irens tam bern serac lid os, porque eles sao armazenados em uma (mica Iinha.
I IPAGENO
CHANGENR
ITI MESTMP
I IVARDATA PAGElG
Restric;6e s no s tob.elo.s...de..p.ool e de cluste r As tabelas de pool e de cluster sao n orm alm ente u tilizadas somente pela SAP e njio utilizadas p or clien tes, pr ovav elrnente p a r caus a do format o proprietario dessas tabe las den rro do banco de dado s e p or causa das resrricoes tecni cas colocadas scbre su a utilizacao dentro de progra mas ABAP/4. Em um a tabe la de pool au de clus-ter:
,i
I
~~J
••• 102
-.v
v •• v.v
•
w •••
w. w
--
w.tW. w:ww _ _ •
Da D
-~103
As lobe /os 560 co mposlos de com pos, que 560 compostos de elementos de dodos, que pa r suo vaz 560 compostos de dom inios.
• V oce DaD pede ut ilizar SQ L nativo. • Voce nac pode especifi car no mes de campo depois cia cldus ula or der by. A unica variacao permitida e orde r by pr i mary key.
I
I"
Compo
Eo
cc mcostc de um
"
co ntem r6tulos de com po
Elemento de dod os
,
a usa de tobelcs de poo l e de cluster pode impedir que suo empreso
-,
e docum entocc o o nline {ejude Fl) preci ~e
,
de urn
des creve ccrcct ertsuccs
tecnkc s. (p. ex., Do mlnio
utilize plenomente a s fe rromentos de relat6 rios indep end entes se eic s 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 buseor olternotlvos an les de crier tobelas de po ol au de du ster.
lipo e com primen!o dos do dos)
'~ F jgurg 3 6
Um exemplo de praiela utilizondo tobelos, ele mentos de dodos e dom lnios.
Par causa dessas restricoes nas tabel as de pool e de cluster e par causa de sua utilidade limitada, este livre concen tra-se na criacao e u tilizacao de tabel as transparentes. A criacao de tabelas de pool e de cluster na o e abordada .
Explorando co mponentes de tabeloL-
-
HI 0"
F igura 3 5
podem ser criad os.
• Voce: DaD pede utilizar as estrururas (constructs) do ABA P/4 sel ect dt sti net ou grou p by.
(Cuicfudo
'W ' & _
DlA 3:0 OATA OIITIONARY, PARTE1
" m DA EM 21 DlAS AWl'
• Os indic es secundarios
_
Compos de Cu stom e r Tobie
Ele me nto s d e do dos
:
Domfn io
~ Zphonew ROtu\o: numern comerci ol
_
Voce ja sabe a que as tabe las transparentes sao e as dif erencas entre tabel as transparentes, tabe las de pool e de cluster. Agora, voc e apr enderd as co mpo nentes que sao necessaries para criar tab elas.
phonew
Zpho nel
Zphon.
phonef phoneh
R6tulo: lo~
loxlipo: cnor comp.: 12
I'
Zphoneh RO fulo: telelone r••idenciol
Umo tobelo e compostc de campos . Para crier um compo voce precise de um e leme nto de dodos . 0 eleme nta de dodos conte m os rctvlcs de ccmpo e a docwnentccoc online [tcmbern chcmcdc ojuda FJ) para a ca mpo. Ele e purome nte descritivo; co ntem as ccrccterlst'ccs sem enticcs para 0 compo , tcm bem co nhecidas como "co ntexte do neg6do"' . Os rotulos que voce oferece dent ro de um ele mento de dod os 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 pressionand o a tedo Fl .
NOVO....
ifRMO"
Par a crier urn campo, voce normalmente inicia criando urn dom inic para ele. N este caso, voce pode criar urn dominic generico de numero de telefone, chamado zphone e dar a ele urn tipo de dado de CHAR e urn comprimento de 12. Isso seria u rn dominic generic o de numero de relefone : a maioria de s ripos de mime ros de t elefone poderia ser armazenada ut ilizando-se esse dominie. 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. Dep ois de criar 0 do mfnio pa ra armazenar a descricao puramen te tecnica de urn cam po, voce entac cria urn elemento de dados para armazenar a s atr ibutos descritivos do campo . N o elem en to de clades, voce deve digitar 0 no me de u rn domini c par a dar-Ihe a caracterfst ica tecnica . Entao, voce insere 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 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 numero de te lefone que voce arma zen ara co m ele e a ajuda Fl pa ra a usuario
NOYO ~
Umo defini'ioo do eleme nte de dodos eXi ~ e um dom;nio (veia a Figura 3.5). 0 dam inio co ntem a coraderfstico tecnco de um ca mpo, como 0 co mprimenta do compo e 0 tipo de dado.
HRMO"
O s domtnios e as elemen tos de da do s sao reutiliz ave is . U rn domfnio po de s er utilizado em mais de urn elemento de dados , e u rn elemento 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 informacoes de cliente chamada zcust que deve canter os nti meros de te lefo ne ccmerc ial, fax e residencial (veja a Figura 3.6) .
final.
t
I
!
----• • w_ -• ----- • 104
w _
-
-~
----- - -- --- - ..., ~
OIuoomOlmOHARY,PARTE l
APiENOA EM 21 OIAI ABAP"
Te ndo criado a s elem entos de dados, voce agora p ode criar a tabela, Voc e p od eria criar treS camp os de ndmero de telefone na tab ela {residencial, comercial e fax) e arribuir 0 elemento de dados corresp ond ence a cada campo. U rn eleme nto de dados eat ribufd o a cada campo. 1 550 oferece informacoe s descritivas do campo do elemento de da dos e informacoes te cnicas do do minic a que e1e faz referencia. Quando 0 campo e utilizado em uma tela, ele obtem urn rotulo e a documentacao de ajuda Fl do elemen to de dad os e seu com primento
e ripo de dado formam
0
domini c deruro do elemeneo de dadcs .
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 de clientes, voce q uer arm azenar urn nome de cliente: na tabe1a de fabricante urn nome de fabrican te e na tabela de empregado urn nome de empregado. Par 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 nome d e p essoa , par exemplo zper sname. En rao voce pode criar urn eleme nto de dados para carla urilizacfo de neg6ci o de urn nom e da pessoa: p ara 0 n om e de clienr e, 0 nome de fabricanre e 0 nom e de emprega do . D entro de cada 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 criar camp os denero de cada tab ela.
Ma nte n d o as caracterfsticas tecnicos d os ca m pos Se voce precisa alterar 0 comprimen to do camp o depois qu e crio u uma tabela, voce apenas precisa altera-lo no dominio. Se 0 dominic e utilizado em mais de urna rabela, a alteracao eautom aticam ente propagada para todos os campos que utilizam esse dominio. " P a r exem plo, se os an alist as de neg6cio solicicassem que voce aumentasse a comprimento de seu camp o de nome de pessoa de 12 para 15 caracreres, voce alteraria 0 comprimento no dominic zpersname. Quando vo-ce ativar sua alreracio, a s cornp rimentos de rodc s as campos de nom e 'baseados nesse do min ic (nas tabelas de clienre, de fabricanre e de empregado) tambem mudarao.
Determ ina ndo quando criar ou reul ilizar domini os e elementos de dodos Cada sistema R/3 vern co m mais de 13.000 dom inios preexist entes criados pe1a 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 au co mprimem o de dados de seu campo deve ser dependeme de urn campo existente da SAP . Se seu camp o precisa ser in depen dent e, erie urn novo 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 rotulos de campo e docu m en ta~a o alt erarem quando a SAP alterar os de1a.
105
Po r exemplo, im agine que voce deseja cria r uma nova tabe la que co nrem informaco es adicion ais de fabri cante. Quando voce p rojeta a tabela, voce deve associar as fab rican te s em sua tabel a com esses na tab eia de SAP . Em sua tab ela, erie um a chave primdria con tendo 0 mimero de fab ricante. Utilize 0 elemen to de dad os exist ente para cria r seu campo. As dua s rabe las estjo agora ch aveadas no campo de numerc de fabricante de SAP urilizandc os mesmos elem entos de dados e do mlnios. Se a SAP alterar 0 tipo de dad o ou o comprim en to do seu camp ?, 0 seu mudara au to rnaticamente.
Convencoes d e ctribuicco d e nome para tabe las e seus compon entes As tabelas, elementos de dados e dominies cria dos no site de cliente devem seguir convenc oes de atribuicjo de nome da SAP para objetos de cliente. E stes estao delineado s na T abela 3.1.
Tabela 3.1 Convencoes de otribu i~50 de nome para tobe los, compos, ele me ntos de dod os e do minios criodo s pelo cli ente Prlmeiro eereete re permitido
Tipo de objeto
Comprimento max. d e nome
Tobelo
10
s, z
clemente de dodos
10
v, z
Domlnio
10
r, z
Compo
10
Quolquer ccrcctere
T odos os nomes tern urn m aximo de 10 caracte res de comp rimenro. Os nomes de todas as tabelas, dominios e elem ent os de dados que voce cria devem iniciar com 0 caractere y ou z, Voce nao p od e utiliz ar qualquer outro caractere no comeco; todos as outros sao reservado s peia SAP . 0 sistema RJ3 imp oe essa convencio: voce obterd uma mensagem de errc se tentar criar u rn c bjeto que tern urn nome qu e na c se adapte a essas convencoes. 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 campo. A tabela de DDIC t rese cc ntem a lis ra completa das palavras re s er~ vadas. 0 conteudo de t re se pode ser exib ido utilizando 0 procedim en ro do Dia 2 na seiSao intitul ada "Exib indo os clados na tabela" .
Criando uma tabela transparente e seus .c.omp.onlJ;;elLnutJ;;: e.:.s
_
Nas sec;6es a seguir, voce cria ra dominio s, elemen tos de dado s e, por fim, sua primeira tabela transpa ren te - ela sera um a versao escalada para baixo da tabela-mestre de fabricante fornecida pela SAP iden tificada Hal.
-_.
e¥¥.w 106
w __
._~_~_
-01' " ODATA DICTIONARY,PART£1
",," OA EM 21 OIAS ABAp/'
Para as prcpcsitos deste livre, porto do pressupostc qu e a siste ma R/3 j6 noo armoze na quoisq uer Informocoes-mestres do fob riconte . Ima g-
ine que a tobe lo Hal noo existe, nem sevs elementos de dodos, nem seus dominios. Portonto, nestes exerdcios nos as crlcremos.
Para armazenar informacoes-mesrres do fabricante voce criara a tabela •• -1fal. Ela contera campos para urn mimero de fabricante, urn nome, urn c6digo de regiso e urn ccdigc de pais. Os nomes de campo e as caracterfsricas tecnicas que voce utilizara sao mostrados na Tabela 3.2. Urn x na coluna de PK indica campos que formam a chave primaria . (0 procedimento de instalacao criou uma tabela identificada zt xlfal em seu sistema R/3. Ele e muito semelhante a tabela - - -Lfal . Utilize-a como uma referencia enquanto Ie esse capftulo.)
Tabela 3.2 Os compos e suos coroeteristicos para a tabela - - -Ha l Nome de ca mpo
PK
Nome
Nome
de DE
de OM
Tipo de dado
x
1ifnr namel regio 1andl
• • - 1 i fnr -- - namel
" · lifnr
• •• regi 0
• - -name • • - reg i 0
• ··landl
• ·-land!
CHAR CHAR CHAR
CHAR
~o
Comprimen10
N60 altere as na mes mostrodos oclmo. Os exerclclcs mois adian te neste livre contcrn com esses names de compo como mostrodo. Se voce n60 utiliza esses names exctcs, as exerclclos sobseoueroe s nco podem funcionar.
Como essa tabela contem cladas de aplicativo, ela dev e ser dependenc e do cliente. Portanto, 0 primeiro campo deve ser mandt. (C a nsult e 0 Capitulo 1 se voce precisar revisar as tabelas dependentes de cliente.)
•
top-down
Atjyo<;oo de objetos ODIC MOVO ... T,ijlO ,.
Antes de oprender sabre objetos ODIC profunda me nte, voce deve sober sobre otlvoceo de cbjetc. A otivccco cplico-se a todos a s cbjetos de dicion6 rio.
Depois de criar urn objero Data Dictionary, vo ce 0 ativara. Ativar urn 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 tent ar utilizar urn e1emento de dados inativo 01.0 criar urn campo, voc e obtera uma mensagem dizendo qu e 0 elemento de dados na o exisce nem esra ativo. Sua respos ta seria ativar 0 elemento de dados. 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 o bjeros que se re ferem a ele nao "saberao" da altera~ao.
De sco brind o dominios Ant es de realrnente criar urn domlnio, descreverei a tela que voce ut iliz ara para
cria r tobelas
Hi duas abordagens que voce pode utilizar quan do criar tabelas: • bottom-up
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. [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 de nome de progroma".) Nee utilizeat x como os primeiros tres ccrc cteres. Se voce utilizer ztx, sera muito difidl dete rminar quais 5 6 0 as se us cbjetcs.
10 35 3 3
Esses names de campo e suas carac terlsticas tecnicas sao beseadcs em campos reais da tabela Hal.
Ab..~pa ra
107
Na abo rdagem bottom-up, voce primeiro cria as domini os, dep ois os elemento s de dados e per fim a tabela. N a abo rdagem top-down, voce cria primeiro a tabela e depois cria os 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 rapidamente to rna-se incomoda. A abordagem top-down e muito mais facil de utilizar depois de voce se familiarizar urn pouco com a pr ocesso de cria~ao de tabela. P a r essas razoes, demonstrarei as duas tecnicas, iniciando co m bo ttom-up. Q uando ler as secoes a seguir , voc e primeiro ap rendera sob re urn objeto _ como um do min ic - e encao criara urn. Os ob jetos qu e voce cria ra sao descriros na Tabe1a 3.2.
mandt
mandt
...
cris-lo . 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 tipo de dado, urn comprimento de camp o e opcionalmente urn comprimento de saida. Estes iteus sao explicados naS se~6es segu intes.
~- TT
w
108
Wo w o_ W â&#x20AC;˘
W Yo W Woo W
w.
W W WWW.WWWi
---
~
~
~
--
--- -
--- -
-
--------- - _ --..- -- --- -=- ""="'" ~, DIU D"T' DiCTlONARY, PARm
' ' ' EN D' EM 21 DIAl ,SAP/.
Tabela 3.3 Tipos de dados comumente uflllzodos
f.i.g..u.r.a 3 7
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
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 uma lista de do minies , com o em uma pesquisa. N esse campo , voce des crevera as tipcs de dados que voce quer que 0 dominic cont enha. Por exempl o, a descr icao de u rn domin ic de numero de telefone reutilizavel pode ler "Nemero de telefone generico" ou "Ncrnero de telefo ne geral". Adicionor a pclc vrc "dcrnlnic" no finol do descrtce c de texto curto e red undonte e deve ser evltc do. Por exemplo, 0 texto curto "Ncmero de telefone de dominic qenericc" devero ser evttodc. Em vet dtssc, digite "Ncme rc de telefon e gene rico".
o campo Da ta Type o
campo D ata Typ e especifica a repres entacao utilizada internamenre pelo banco de clados par a arma zenar 0 valor desse campo. Para alguns ripos de dados, e1e tambem dete rmin aa validacfc de formato de entrada e formate de saida do camp o. Po r exemplo, campos do tipo de dado OATS (data) e TlMS (hora) sao automaticamente fo rmatados com separadores em uma de saida de lista ou quando sao exibidos na tela. Na entrada, e1 es rambern devem estar no formato de data ou he ra ou um a mensagem de erro e emitida para 0 usu ario. Os tipos de dados mais comumente utilizados sao iistados na Tabela 3.3.
Os campos O utput Le ngth, Decimal Places e Lowercase Letters
o
campo Output Len gth indica 0 ntimero de bytes necessa rie s para dar saida ao campo para uma Iista ou para u ma tela, incluindo virgulas , p on to decimal, sinal e quaisquer outros caracteres de for matacao. Por exemplo, na saida, os campos de data e de hora sao automaticamenre formatados com separadores. 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 estiver em branco, seu valor automaticamente sera calculado pelo sistema quando voce pressionar Enter. Para campos decimais, voce pode especificar 0 nume ro de decimais cclocado no campo D ecimal Places. Os campos de caractere sao normalmente convertidos em letras maiusculas antes de serem armazenado s no banco de dados. Voce pode desativar essa conversao desmarcando a caixa de selecao Lowercase Letter s. A maioria dos desenvo lvedores nao tern problemas em entender a representacio interna de caract ere ou campos im eiros. En tretanto, a pos icjic do ponto decimal nos campos decim ais efrequentemente urn campo de confus6es, por isso descrevemos esse assumo aqui. Para campos de tipo DEC, 0 ponto decimal nao earmaze n ado no banco de dados. Sornente a parte numerica e armazenada; nao 0 decimal. Na saida, a posicao do decimal edeterminada pelo valor que voce colocano camp o Decimal Places do dominic.
109
·_,~~t2}~'
~.~ll<~ O .
APREND A
E"~lf;:~:B~:~4
01.&. 3: 0 DATA OlalONARY, PARTE 1
0
campo seja adequadamente exibido, voce deve especificar
urn comprimento de saida que in c1ua urn byte para 0 ponto decimal e outro para cada separador de milhar que pos sa ser exibido. Entretanto, 0 sistema calcu lara 0 comp rim ento de saida se voce simplesmente deixar em branco 0 campo O utput Length e pressionar En ter. .
Problema
Possivei s sint omas
Nee posso criar
Qu and o voce pressiona Creole, nodo ocontece .
o dominio
SolUliCO 0
botco
Olhe no barro de status no porte inferior do janelo e pressione 0 balao novomente. Epr cvc vel que voce vera umo mensogem
cl.
Cria ndo um do minio Nesta seciio, voce aprendera a abo rdag em bottom-up para criar urn dominic . S(mNCAM~ Inid e a ScreenCom "How to Crea te
0
Domain" ogoro .
Execute esse pr ocedimento duas vezes para erial' os dominies •• '1; fnr e • • • namel. A ajuda com problemas comuns e dada no diagn6stico e solucao de problemas que se segue. Se voce river problemas ern alguns des passos, nao se esquec;a de consulter 0 . diagn6stico e solucac de problemas. 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 Workbench, Development-> ABAP/4 Dictionary.)
2. Digire
0
Q uand o pressiana a ba tao Creole, voce ve a me nsagem "Syste m change o ption do e s not allow cha nge s to SAP o bjects".
Altere a name de dominio pa ra y au z.
Q ua ndo pressiono 0 batao Cre ate , voce ve a me nsa ge m " Enter occess key".
Altere 0 name de domrnlo pora inicior co m y a u z.
Q uan do presslonc a bctoc Create, voc~ ve a mensoge m " You are not authorized to moke cha nges".
Soltcito outcrizoccc de
Q uonda pressiono a botcc Creole, vo ce ve a mens agem "a lrea dy exists".
o nome que voce digitou j6
"W: {calculate d output length is sma ller tha n specified)."
Deixe em bronco a ca mpo Output Length e pressio ne Enter e depois Activate,
"E: Value table doe s not exist."
Delxe em bronco a ca mpo Vclve Table, presslone Ente r e depois Activate.
nome de domin io no campo O bject N ame.
·3. Escolha 0 batao de 0PliaODomains. 4. Pression e 0 batao Create. Voc e entac ve a tela Dictionary: Maintain Domain. as campos contendo pontos de in terrogacao sao campos obrigatorios. 5. Digite uma descric ao do dominio no campo Short Tex t.
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 de dados permitidos . Selecione urn ripe cialista ou digire urn.
de senvolvimento do sev odm inistrodor de seguron<;a
existe no Data Did iona ry. Escalho urn nome de domfnio diferente.
.Obtendo dccumentocco de SAP nos dom inios H i muitos lugares para obter documentacao de SAP sobre as recursos de s
domfnios.
7. Digi te urn comprimento de campo. 8. Pressione 0 botco Active na barra de [erramenras Application par a co mesmo tempo salver e ativar 0 domfn io. A tela Create Object Catalog Entry e exibida . 9. Pressione 0 botao Local O bject. Vo ce tionary: Maintain D omain ,
O btendo mensa gem
e levado de volt a a tela D ic-
10. Pressione 0 botao Back na barra de ferramen ras Stan dard. 1550 0 leva de volta para onde voce comecou nes se procedi mento, a tela Dictionary: Initial.
111
Se voce deseja ver a do cumentacao que descreve todos os ripo s de dados e suas u tilizacces, coloque a cursor no campo Data T yp e e pressione Fl . Voce vera uma caixa de dialogo cam en do campos destacados. De urn clique nesses camp os destacados para mais detalhes. Vo ce pode tambem consultar a ajuda da biblioteca do R/3 para encon rrar docu me nt acao adicional sobre tipos de dados e outras proprie dades do dom fnio, Para visualizar essa documenracao, a partir de qualquer tel a escolha o caminho de menu Help->R/3 Library. Voce vera o menu principal da biblio reca do R/3 , A partir daf de urn clique nas seguintes guias: Basis Componen 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
I, :~
112 t...==:...:::..:::...:.:.::.:..::.:::.:.:..:... APREHDA EM 71 OIAS AB AP/4 de urn clique em C reat ing D omains e depois de urn clique em External Data Type. Para obeer doc urne ntacao que descreve 0 mapeamento de tipos de dados de d ominic par a cipos de dad os do AB AP/4. exiba a ajuda Fl para a palavrachave "tables" . (Par a fazer isso, dent ro do editor de ABA P/4, colo qu e 0 cursor napalavra t abl es epressioneFl.)
Descchrindc elementos de dodos Antes de realmente criar urn elernento de dados , descreverei a tela que voce utiliza ra para crif-lo. A Figura 3.8 mos tra a tela utilizada para criar um elem ento de dad os. Aqui voce esp ecifica 0 texto curto, no me de dominic, r6tulos e urn cabecalho, que sao explicad os nas selioes seguintes. A documentacfc tambem pode ser criada depois que 0 elemento de dad os foi salvo. F i g ur a 3 8
A lela Dictionary: Chonge Dolo
Element,
j-
~==~~'_'_ 0143:0 DATA DIOlONAR'f, PARTE 1
113
Os ca mpos Field Label e Header A parte inferior da tela rnostrada na F igura 3.8 conrem quatTO campos de texto. as prime iros eres sao rctulos de campo. Quando qualquer camp o aparece em uma te la (como u rn campo de entrada em uma tela de entrada), urn dos campos cur tos, medias a u longos ap arece rao aesquerda del e como urn rotulo de campo. 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 tapa das listas, Se os campos que voce cria com esse elernentc de dado s nao aparecerem em quaisquer telas , desative a caixa de selecso Ma int ain Field Labels e pressione a teela Enter. Voce nao veri mais os campos Fie ld Lab el e Header. Voce tera de pre ssionar Enter duas vezes para [aze r a s campos desaparecerem se esses camp os contiverem valores.
A documentccdo de elementa de dodos Depois que voc e salve 0 eleme nto de dados, urn bouo Docum entatio n aparece na barra de ferramentas Application, de modo que voce possa armaze n ar te xto na forma livre. 0 usu drio ve esse texto quando solicita ajud a Flo E m outras 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 documentacio comecando na linha da is.
e frequ entemente muilo util progro 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.
A docornen tcceo de elemento de dodos
para
0
Crianda um elemento de dodos
I
I â&#x20AC;˘
l t /
N esta seCjao, voce aprendera a abordagem bottom-up para criar urn elemento
o cam po Shari Text
de dados.
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 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 .
S(RHNCAM~ Inicie a Screen Co m "How to Creote a Data Element" ogo ra .
o
Exec~t e esse prc cedi mento du as vezes para criar os elementos de dados 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 fn r e " ' namel. A ajuda corn proble mas comuns
I
I I
;
114
DlA3, ODATAOlCTIOHARY,PARTE 1
AP ' EN DA EM " DiAl " ,P/4
1. Comece na Di ctionary: Initial Screen. (Para chegar ai a partir do menu principal SAP, siga 0 caminho de menu Tools->ABAP/4 Workbench, Developmen t-> ABAP/ 4 Dictionary.) 2. Digite 0 nome de elernentc de dados no campo Object Name. 3. Escolha 0 borso de op~ao Data Elements. 4. Pressione 0 bo-se Create. A tela Dictionary: Change Data Element aparece. 5. Digite rexto curto para 0 elemento de dados. 6. Digire urn nome de dominic e pressione a tecla Enter. Se 0 dominic existe e ests ativo, seu tipo de dado e comprimento aparecerao. Se voce nao vir urn tipo de dados e comprimento depois de pressionar Enter, verifique 0 nome de Data Element. Se a nome estiver correto, verifique se esta ativo abrindo urna nova sessao (utilize 0 caminho de menu System- >C reate Session) e exibindo-o no Data D ictionary. 7. Insi ra rotu los de campo nos campos Field Label Shorr , Medium, Long e Header. a valor no campo Short deve ter no maximo 10 caracreres, o Medium deve ter no maximo 15 e Long deve t er no maximo 20. 0 valor no campo H eader deve ter 0 mesmo comprimento ou ser menor que a comp rimento de saida no dominic . 8. Pressione a bono Save na barra de [erramentas Standard. A tela C reate Object Catalog Ent ry e exibida. 9. Pressione 0 botao Local O bject. Voce e levado de volta a tela Dictio nary: Change Data Element . as campos Status con tern os valores New e Saved e a mensagem "Saved without check" aparece na parte inferior de janela na barra de status. a bccso Documentation (entre outros) aparece na barra de ferramentas App lication. 10. Pressione 0 borso Documentation. A tela Change Data Element: Language E e exibida. Aqui voce pede digitar a documentacio de usuario final. Essa documentaci o e exibida quando 0 usuario solicita ajuda F1 para os campos criados utilizando esse elemento de dados. A primeira linha contem os caracreres &DEFI NITION&. Isso eurn titulo; nao altere essa linha. D igire sua documentacao comecando na Iinha dois. Pressione a tecla Enter para comecar cada novo paragrafo . 11. Pr essione 0 borao Save Active na barra de [erramentas Application para salvar seu texto. A mensagem ÂŤDocument was saved in active status" aparece na barra de status . 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 activated" aparece na barra de status.
14. Pressione Screen.
Problema
0
botao Back. Voce
I
115
e levado de volta aDictionary : Initial
Possive is
SoluCjoo
stntem es Nsc posso
Q uando voce pressiono a botcc
crier elementos
Crecte, nade acontece.
de dodos
Nne posso otivcr elementos de dados
0 1he no borra de stotus no parte inferior do jonelo e ~ressi on e 0 botco nova mente. E prov cvel que voce vejc umo mensag em.
Quando pressiono 0 botoo Create, voce ve 0 mensagem "System change option does not a llow changes to SAPobjects".
Altere 0 nome do elemento de dod os pa ra inicior com y ou z.
Quando presslono 0 botcc Create, voce ve a me nsoge m "Enter access key".
Altere 0 nome do elemento de da dos per c inicior com y ou z .
Quando pressiona 0 botoo Create, voce ve a mensa gem "You o re not authorized to make changes" .
Soliclte a autori zOl:;oo de
Quando pressio no 0 batao Cre ate, voce ve a mensogem "'olreodyexists".
o no me q ue voce inseriu i6
Aporece a mensog em "No act ive domoin exists with nome".
V6 a te la Dictionary: Change Dolo Eleme nt e de um clique duplo no nome de domlnio.
o
Voce enteo vera uma coixo de di610go o u a tela Dictionary: Display Domain.
nome de dominio que voce d igitou no lela an terior n60 exlste ou ':l0oestc ctlvo.
desenvolvtmento do seu od minislrodor de sequronco.
existe no Dota Dictiona ry.
Escotho um nome de dominio difere nte.
Se voce vir a ccixc de di610go com 0 iftulo Create Domain, 0 dom inic nee existe. Verlfique 0 no me cuidadosamente. Voce inseriu 0 nome e rrado ? Pode ser uma boa ldelc obrir uma novo sesscc e exibir as objetos que voce criou usando Object Browser. (No Die 2, vejc 0 se~o o "Locolizondo sevs o bjetcs de desenvolvimento".)
I I \
I I
I ~,J
&
!£!
116
-
-
DlA 3:0DATA ormoNARY, PARTE 1 )
APRE NDA EM 21 DIAS ABAP /4
Problema
Possiveis
Fig u r a 3 9
Soluljao
A tela Dictiona ry:
sintomas
Toble/ Structure:
Se, de pais de da r urn clique duplo , voce vir a tela Dicti on ary: Display Domain,
clh e no ca mpo Status nesso
tela. New
e urn status? Se for,
a dominic precise ser ativodo. Pressione 0 batao Activate e entoo pressione 0 botoo Bock para retarnor 0 0 eleme nto de
Chonge Fie lds cnvc fexto curta, otribu los e nam es de compo 0 serem inse ridos.
.~ : iFol.
";;.~~ ~}';' ~~f~
:,,1
TYIn1
~"' nild. 'f\;i.': ;j".·~:~,~. ·. ;/,->:;,···~:'·;>c .,.: .; ;.;>.,;
~':'':T;ln~p;;;:~~i:'' t~81~''' ~. ''''''}'''::':''~;:' ''''; :-~<~~''::'';{~.:c' ./_
"I~~~~~1t;~'jf· Fwi'n~ j(.~
UtI
.1.~. ·TYi'f l.ng~h cb.~kI~bl. -Sh or t. ~.~.~~ _, .• ,<, :: ~~:, .. . " ' ."':"- ;t. , ~ ,
.
.. s:::'.'
dodos e tente ctlvo-lo novomente.
Obtendo
"Mainta in field lobel."
Insiro a s rctclos de campo sho rt, me d ium , lon g e depois olive.
mensa ge ns IIW: Length was inc rea sed to th e
adual text lenqth."
o texto de cc becolhc que voce digitou era mais long o que a comprime nto do compo . Esse n60 urn"erro serlo. Para
e
contcmd-lc, simplesme nte pressione Enter e de pais al ive. Ne e posse
digifor r6fulos de compo .
Compos de entrodo estoo perdidos no tela .
Alive a co ixe de seleceo Mainta in Field Labels e pression e Enter.
Descobrindo tob e los transparentes A Figura 3.9 mostra a tela utili zada para criar uma tabela transparente. Aqui voce especifica a texto curto, a classe de remessa, os nomes de campo, urn nome de elemento de clados para cada campo e seleciona as campos de chave primaria. As secoes a seguir explicam esses itens em mais detalhe.
o ca mpo Short Text
o campo Short Text e utilizado para
os mesmos pro p6sitos que os campo s Short Text de dominic. 0 usuari o final mo vera essa descricao em qualquer lugar, mas 0 desenvolvedor veri quando trazer a to na um a lista de tabelas .
o campo Delivery Class
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. Nas tabelas de cliente, voce deve sempre inserir urn A aqui , que indica que a tabela cont em dados de aplicativo po ssuldo s apenas pelo cliente . Ou tro s valores inseridos no campo sao cre is somente para a SAP e ind icam que ele possui os dados ou a SAP e 0 clienre em con jun to pos su em os dados.
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 .
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 caminho de menu, a tela Table Insert e exibida, permitindo que vo ce digite dado s em sua tabela. Eutil para tes te e en trada manual de quantidades pe quenas de dados. Se a caixa de s ele~ao T ab.Maine.Allowed estiver em br anco, 0 caminho de menu U tilitie s- >Create Entries esta ra acinzentado.
A coluna Field Name N a metade inferior da tela voce pode inserir nomes de camp o na colun a Field Name. Os camp os de chave pr im aria devem aparecer primeiro nesra lista e devem ser in dicados por um a marc a de verificaclo na coluna Key. Urn nome 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 ferramentas Standard se voce quiser inserir campos adicionais.
Cria ndo umc tabela transparente usa ndo dom inios preexistentes e elementos de dados Nes ta s e ~ao, voce aprendera a abordagem bottom-up para erial' uma tabela transparente.
117
=== • • • • • • • • • • • 118 I
--
==.--=====--
DIA 3: 0 DATADICTIONARY, PARTE1
APRE!fDA EM 21 DIAS ABAP /~
.... Inide a Screent.crn "Hew to Create a Tra nspa re nt Table Using Preexisting
SCREENCAM,. Domains and DOlO Eleme nts" a gora. Execute esse procedimento pa ra criar a tabela " 'Hal. N esse procedimento, criaremos a tabele, mas apenas incluirem os os primeiros tres campos (menot, " '1 i fnr e ," name l ) nele. Mais tarde, adicio narem os os camp os restantes u tilizandc a abordagem to p-down. A ' ajuda com problemas comuns e dada no Diagno sti co e solccso de pr obl emas que se segue a esse procedimento. Se voce tiver p roblem as com quaisquer urn dos passos, nao se esqueca de consulta-l o. 1. Comece na Dictionary: Ini tial Screen (para cheg ar af a par ti r do menu principal SAP, utilize 0 caminho de men u T ools-> ABAP/4 Wo rkbench, D evelopment- > ABAP/ 4 Dictionary). 2. Digice 0 nome de tabela • • 'Hal no camp o O b ject Name.
3. Escolha 0 batao de 0Pl1ao Table s. 4. Press ione 0 bots o Create (pushbutton) . V oce vera
"
atela Dictionary:
Table/Structure: Change F ields. 5. Digite 0 texto curto para descrever a tab ela. 6. Digite urn An o campo Delivery C lass. 7~ Faca uma marca de verificacao na caixa de selecao T ab .M aint.Al lowed. 8. Na coluna Field Name, di gite 0 no me do primeiro campo cia tabela. 9. Falia uma marca de ver ificacao na coluna Key se ela faz parte da chave
primaria. 10. D igite a nome de urn elem ento de dados na coluna Data Elem .
11. Pression e a tecla En ter. 12. Olhe na berra de Status. Se voce vir a mensagem "Data element is not active", 0 elemento de dados nao existe ou foi ativado. Estas sao as pos sfveis raz6es por que voce pode ver essa mensagem: • Ele nao foi criado. • Urn erro de ortografia ocorreu quando voce criou dados.
0
elemento de
Se voce agora estiver olhando 0 elem en to de dados, observe 0 valor campo Status deve co nter Act . para indicae que no cam po Status. est a ativo . Se na o esti ver, pr essione 0 bo tao Active e verifiqu e se 0 status esca agora Act . (Se e1e nao fun cionar, arive 0 Diagno stico e solccao de problemas associado com 0 proc edim ento para criar elem en to s de dados.) U ma vez que 0 elemento de dados for ativado, press io ne bor do Back para retomar a tela D ictionary : Table/ St ructu re : Change Fi elds.
a
°
13. Repita os passo s 8 a 12 para cada urn dos campos restantes na tabela
,(' - -1; fnr e _ • • neme f) , 14. Pressione 0 bono Save na barra de fer ra men tas Standard. Vo ce entao vera a tela C reate Object C atalo g Ent ry . 15. Pressione 0 b atao Local O b ject. Voce entao e ret ornado a tela D ictionary : Table/S truc ture: Change F ields . 16. Pressione 0 bot ao T echni cal Settings na barra de [erramenras Application. A tela ABAP/4 D icti onary: Maintain Technical Sett in gs e exibida. 17. No camp o Data C lass) digite APPl O (APPlO com urn zero, nao com a
letra 0 ).
Pro ble ma
Possivei s sintomas
Nco posse
Qu a ndo voce presslonc Create, nada oco ntece.
crier a tobela
Sol ufjao
0
batao
• a elemento de dados exist e e 0 nome esra escrieo corretamente, mas nao esta ativ o.
!iI, 'I
"
Il
I;
Ii
I, I
18. Digite 0 (z ero) no campo Size C at ego ry. 1'9. P res sione 0 bono Save. 20. Pressione 0 botao Back. Voce e levado de volta a tela Dic tio nary : Ta ble/ Stru ctu re: Change Fields. 2 1. Pressione 0 botao Active na barra de ferrame n tas Applicatio n. Se a ativ aliao for bem-sucedida, a mensagem "was acti vated" apare cer a na barra de Statu s e 0 campo Status tera 0 valor Act . 22. Pr ession e 0 bo tao Back para re tornar a D icti on ary: Initial Scree n .
• 0 nome de elementc de dados esti erra do na tela atual.
Verifique 0 nome cuidadosamente. Se a ortografia esciver correta, de urn 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 .
119
Q ua ndo voce pressiono 0 batao Create, voce ve a mensagem "Enter access key".
O lhe no barra de status no pa rte inferior do [c nelo e pressione a botoc novomente. Eprcvovel que voce veja uma mensagem. Altere a n~me do tobelo poro que passe a lnlclcr com y au z.
L
i!
i
• • w.w • • --~~---~-~~~-~-~~--120
DIA 3,0DATA DICTION" Y, PARTEl
"RENDA EM 21 DIAS ABAP/4
Problema
Possiveis sintomas
Solu~60
Problema
Posslveis sintomas
SoluCjoo
Quando presslo no 0 bata o Create, voce ve a me nsagem "Syste m change option does not allow changes to SAP o bjects".
Altere a nome do to bela par a qu e posse a Inlci c r com y ou z.
Mensoge ns exibidos em verme lho
"E- Field (Data eleme nt or domai n
Ve ja a linha "Nco poss e otivo r a tobelc", cnterlcrrnente .
Quanda press iona a batao Create, voce ve c me nsoge m "You are not au thorized to ma ke changes".
Solicite a outcrlzocec de de senvolvimentc de se u administrador de seq uronco.
Quando pressio na a ba tao Create, voce ve a mensag e m "already exists".
Nco posso c tlvor a tobelo
Aporece a me nso gem "E-Held (Data element or domai n is not active or does not exist)".
o nome que voce
digito u ia exlste no Da ta Dictionary . Escolho um no me de dominic diferente. Volte pa ra a tela do tobela Dictionary: Ta ble/ Structure C han ge Fields . De um clique d uplo no no me do elementc de dodos. Voce vera uma cclx o de di6logo ou a proprio ele mento de dodo s. Se voce vir uma co ixo de d i61ogo com 0 titulo Creote Data Element, a elernento de dodos noo exlste. Verifique 0 no me coidcdoscmente . Voce digito u 0 nome errado? Pode ser um o boa ideio abrir umo nova sesseo e exibir os obietos qu e voce criou usando 0 Ob ject Browser . (No Dia 2, velo 0 seccc "locchzondc seus o bjete s de desenvolvimento".) Se voce puder exibir a elem e nta de dodo s, examine a co mpo Stat us. New e um stat us? Se nco, 0 elemento de do do s precise ser cttvcdo. Presslone 0 botdo Activote e e nloe presslo ne a ba tao Back para retornor a tabela .
Venda
0
tela
ABAP/4 Dictionary : Ma intai n
Technlccl Settings
O s ctrtbvtos tec nfco s fora m au nao lnseridos a u selves. Insira entoc as otnbutcs tecnlcos, pressionando a bctcc Save e par ftrn pressione Back.
is not act ive or does nat exist} ."
"E- Entry in ta ble TAO RA missing. "
Procure mais e mboixo umo men sagem (em vermelho) scbre 0 Data Closs au a categorio Size.
"E· Error in co de ge neratio n for
Proc ure odio nte umo mensogem (em vermelhoJ sa bre Data C loss ou cotegorio Size.
creating ta ble in the DB" "E- Ta ble (Sta teme nts coul d not be ge ne rated)."
Procure adiante uma me nsogem (em ve rmelho) sobre Da ta Closs a u categor ia Size.
"E- Field Size cat egory (Va lue no t permitted)."
"E- Field Data clcss (Volue not perm itted}."
Voce dig itou um va lor invalido no co mpo Size Category des confiqurocoes tecoicos . Pres sione Back seguido de Technica l Settings e mude c Size Category para 0 (zero). Voce digitou urn valor inv6!ido no compo Size Category des configurac;6es tecnlcos. Presslone Back seg uido de Technica l Settings e mude 0 Da ta C loss pora APPLD (use um zero no fina l de APPL}.
"E- Key is a lready de fined ; field
Oe campos de chove prim6 rio
ca nnot be in the key."
es e sao cdiccentes para co da um. Pressione Bock e cerf ff ique-se que seus ca mpos
de cbove prim6ria esteo todos corneccndc a parti r do tobe la com nenhurnc tntervenc ec
nem compos choves. [Tados as marcos de verificao;oo no colune Keydevem este r juntos no comeco de to belo .)
121
DIA 3, 0OATAOICTIOHARY, PARTE1
122
J
123
" mOA EM21 DIA S A'AP/4
Problema
Possiveis sintomas
Vendo a cclxc de di6loga Adjust Table cam a texto Table must
A tobelc preciso ser convertido.
be adjusted
Solu~ao
Voce mud au a tobelc e cqoro umo eonverseo de tobel o deve ser feita para completer a ctlvccoc. Escolho um flpc de processa me nto Online e pressione 0 botoc Adjust..
in the
datab as e. Voce tentou remover um compo delxcndo-c em bronco. Nco se pa de fozer lsso: voce deve excluir os cam pos usonda o bctcc Cut no borro de ferromentos. Pressiooe Cut ate voce ver a mensogem "Selected entries were copied to the clipboard" no parte interior do [cnelo no borro de status.
Aa oparecer a mensogem no porte inferior do tela "Initial va lue not permitted as the field nome" ou: e impassivel desloccr-se para cimo au nco e pas sive! ver os com pos d igitodos Nee consiqo
lr para outro mensa ge m
Uma mensog em ca mec;ando com os corccteres "W:" oporece no borro de status e voce n60 pode prosseg uir.
Pressrooe a teda Enter para responder a me nsogem.
Criendo urno tobelo transparente sem do minios preexistentes e e lementos de dodos Nes ta se'iao voc e aprendera a adicion ar campos a um a tabela utilizando a aborda gem top -down . Voc e adicionara os dois campos restantes (. - - reg; 0 e •• • landl ) asua tabela -·-Hal. U tilizand o a abordagem top -down, voce pode edicionar campos a uma tab ela antes de criar os elem ent os de dad os e do min ies. Voce po de simplesmen te criar elementos de dados e dominies a medida que avancar . Para fazer isso, voce ira inserir urn elemen to de dados ou nome de dom fnio e entac dar urn cliqu e duplo nele. Voce sed. levado a tela Creation. A part ir dai, vo ce cria 0 domtnio ou 0 elemento de dados, ativa-o e entac pressiona o batao Back para retornar aonde voce estava. o que se segue e 0 procedimento para adicionar campos a uma tabela transparente sem primeir o criar os dominies e os elementos de clados.
• --t..
<.:...:~..
SCREEMC,I.M'" Inid e ? ScreenCom "Hew t~ Create a Transparent TobIe Without Preexisling ,. Dornotns and Data Elements ogoro .
1. Comece na D ictionary: Initial Screen (para chegar at a partir do menu principal SAP, utilize 0 caminho de menu Tools->ABAP/ 4 Workbench, Development->ABAP/4 D ictionary ). 2. Digite 0 nome de tabela •• - H al no campo Object Na me,
3. Escolha a botao de op~ao Tab les. 4. Pressione 0 botao Change. Is50 0 leva a tela D ictionary: T able/ Stru cture: Change Fields. 5. Pr essione 0 botao New Fields. Linhas ern branco-aparecem na parte inferior ciatela e as campos existentes de tabela sao rolados para cima. 6. Na coluna Fiel d Name, digire 0 nome do camp o que voce deseja adicionar. 7. FalSa u ma marca de verificacao na coluna Key se ela e parte de chave primaria. (Os campos -- - regia e - - e Land l nao sao, mas esse procedimentc e escrito gener icamente para que seja utilizado em situa'i0 es gerais.) 8. Digite 0 nome dos elem entos de dados associa do s na coluna Data Elem. 9. Pressione a recla Enter. 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. 11. De urn clique duplo n o no me do elemento de dados . A caixa de dialo go C reate D ata Elem ent sed, exibida. No camp o Data Element 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 esteja incorr eto, nao 0 altere aqui . 12. Pressione 0 batao Continue . A tela Dictionary: C hange Data Element aparece . 13. Digite 0 te xro curro para 0 elemento de dado s.
14. Digice urn nome de dominic . 15. De urn clique duplo no nome de dominic para cria-lo. A caixa de dialcgo Create D omain sera,exibi da. No campo D omain N ame estara a nome do dominic a ser criado. Este naruralment e sera 0 domfnio que voce deseja criar, entao a menos que esteja incorreto, nao 0 altere aqul . 16. Pressione 0 botao Continue. A tela Dictiona ry: Maintain Domain e exibida. 17. Preencha os campos Short Text, Data Typ e e Eield Length.
I'
I, I
i
f I
I
;xxn I!. !:J I 124
I
~. _'I .•
. .. . . . .
I •••
* w •••• •
'W •
•
•
y
y
•
•
w w w w w . it . :5-;; DIU aDATA DICTIONARY, PART< 1
125
APH NDA EM 21 01,1..5 ARA PI4
18. P ression e 0 bo rao Active na barr a de ferramentas Application. 19. P ressione 0 botsc Local Object. Voce e levado de volta a tela Dictionary: 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 . 20. Pression e 0 batao Back na barra de [erramentas Standard para retornar a tela Di ctionary : C hange Data Element. 21. Digire os campos r estant es no elemen to de dado s (v eja 0 passo mimero 7 do Procedi me nt o de Criacao de Elemento de Da dos na se~ao "Criando urn elem ento de dados" ). 22 . Pressione 0 bot ao Active n a barre de [erramentas Application . Voce entao vera a tela Create O bject Catalog Entry. 23. P ressione 0 bo tao Local Object. Voce e levado de volta a tela Di ctionary : C hange Data Elem ent . 0 valor no campo Status se altera para Act . e a men sagem "was activated" aparece na barra de status. 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 , 25. Repita os passos 5 a 23 para cada novo elemento de dados que voce quiser crier. 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 ativacao for bem-s ucedida , a mensagem "was activate d" apar ecera ria barra de status e 0 campo Status ira ca nte r 0 valor Act . 27. Pressione a botao Back para retomar a. D ictionary: Initial Screen.
Modificondo tabelos D ep ois que voce criou uma tab ela, voce pede:
• copia-la •
exclu i-la
• adicion ar mais camp os nela • excluir os campos dela • alterar os campos dent ro dela Essa secao descreve como executar est as fcncoe s.
Copiondo umo tobelo Se uma tabela estiver ativa no DD IC, voce pode copia-la. Voce pode querer fazer isso se a tabela que voce quer criar for muitc semelhan te a uma que ja existe no banco de dados. Ou, voc e pode querer experimentar alguma funcio-
nalidade de dicionario qu e ePOllCO con hecida para voce , sem querer modificar uma tabela exisrente. Para cop iar uma tabela, siga est e procedimento: 1. Va para a Dictionary: In itia l Screen . (Pa ra chegar ai a partir do menu pri ncipal SAP, utilize 0 caminho de menu Tools- >ABAP / 4 Workbench, Development->ABAP/4 D icticnary.) 2. Esc olha 0 botao de 0Pliao T ables. 3. Pressione 0 borao Copy na barra de [erramentas Application. 4. Digite 0 nome das tabe las F rom e To. 5. Pressione 0 be-eo Continue. Voce elevado de volta para a Dictionary: Initial Screen e a mensagem + + aparece na bar ra de Status na parte inferior da janela. 6. Pressione 0 botao Active na barra de ferr amentas Application para ativar a nova tabela.
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 desejodo e entcc exclulra tab ela original. Se 'lace preclscr fozer isso, certlftque-se de copiar tonto a estruturo como os dodos do tooele.
Esse procedimento copia apenas a estrutura de tabel a, nao 05 dados. Para copiar os dados de tabela, escreva urn programa pequeno de ABAP/4 de sua propriedade.
Excl uindo u ma tobela Voce pode excluir ta belas existentes de DDIC . Voc e pod e querer fazer isso 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 que epo ucc ..c onheci da para voce. Para excluir uma tabela, siga este pr ocedimento:
1. Va par a Dictionary: Initial Screen. (Para chega r af a partir do menu principal de SAP, utilize 0 caminho de menu Tools- > ABAP/4 Workbench, D eve!opment-> ABAP/4 Dictionary.) 2. Digice 0 nome de tabe la no campo Object N am e. 3. Escolha 0 botac de op ~ao T ables. 4. Pressicne 0 bono De lete na ban-a de [erra men tas App lication. U rn pop-up pedira a voce a confirmacao do pedido de exclusao . 5. Verifi que 0 nome da tabela que voce digitou e pression eYes se desejar continuar.
I ~ i' .j!
-~~~~"""'~'m"'"~·""" "·.~-"",;;:..~::_=_-=-:,,,......,...-....,. . ...W-.~W.---~_. ...~.....,............r-...........,....,r....r-.r-...........,.....r 126
W._ ••••• WW •••• W•• 9&* _
..r-...........,....,r...r-..r ..........,r.,r...r ...I""".....,r..,!!"'""'!!r
,P REN" EM 21 DI,S 'BAP /4
Adicionando
camp~Ol:>S
DIA3,DDATADICT1DN' RY,P, RTE I _
H a duas maneiras de adicionar campos para uma tabela existente: • inserir •
acrescentar
Inserir urn campo permire que voce posicione urn campo antes de outre existente . Acrescentar urn campo permite que voce adicione novos campos no fim da tabela, depois de todos as campos existentes.
Inserindo um campo Para inserir urn novo campo acima de urn campo existente, execute esse proce dimento: 1. Co mece na Dictionary: Initial Screen. (Para chegar afa parti r do menu principal de SAP, utilize 0 caminho de menu Tools -> ABAP/ 4Workbench, D evelopment - > ABAP/ 4 D ictionary.) 2. D igite 0 nome de tabela no campo Object Name . 3. Escolha 0 bata o de opc;ao Tabl es. 4. Pressione 0 botsc Change. Isso 0 leva para a tela Dictionary: Table/St ructure: Change Fields. 5. Posicione 0 cursor em urn campo. 6. Pressione 0 ba tao Insert Field na berra de ferramentas App lication. : U ma nova linha aparecera acima da posicao do cursor. 7. erie seu novo campo na linha que voce acabou de digitar.
Ac rescenfando um campo Para acrescentar urn campo no fim de uma rabela, execute este procedi menta: 1. Comece na Dictionary: Initial Screen. (Para chegar aia partir do menu principal de SAP, utilize 0 caminho de menuTools->ABAP/4 Wo rkbench, D evelopment- > ABAP/4 Dictionary.) 2. Digite 0 nome de tabela no campo Object Name. 3. Escolha 0 botao de op~ao Ta bles. 4. Pr essione 0 bono Ch ange. Is50 leva voce para a tela D ictionary: Table/Structure: Change Fields. 5. Pressione 0 boec New Fields na barra de ferramentas Application . N a metade inferior da tela, os campos existentes rolam para permitir que voce digite campos adicionais no fim. 6. Crie seus novos campos nas linhas que voce acaba de digitar.
"'!!!!""""'!!!!....I!!!'~~""l;!i!
Excluindo campos Voce pode excluir campos existentes de uma tabela. Voce pode desejar fazer isso se 0 campo nac for mais necessario na tabela au se voce tiver criado urn campo para os propcsitos de experimenrar funcionalidad e de dicionario que e pouco conhecida para voce. Para excluir um campo de uma tabela, compl ete os seguintes passos: 1. Va para Dictionary: Initi al Screen. (Para chegar af a partir do menu principal de SAP, utilize 0 caminho de men u Tools- > ABAP/4 Wo rk bench, Development-> ABAP/4 Dicricnary.) 2. Digi te 0 nome de tabe1a. 3. Escolha 0 borao de opc;ao Tables. 4. . Pressione 0 botao Change. 5. Coloque 0 cursor no campo a ser exclufdo. 6. Pressione 0 bcrac Cut na barra de ferramentas Application ou escolha o caminho de menu Edit-s-Delete Field. 7. Ativ ea tabela. A tela Adjust Table eexibida. Pressione 0 botao A djusr para converter a tabela no banco de dados.
~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 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 ate que exdua 0 linho que voce deixou em bronco.
Alterando 0 tipo de dado ou comprimento de urn campo Voce pode alterar 0 tipo de dado e/ou comp rimento de campos existentes em uma tabela. Voce pode querer fazer isso se 0 comprimento de campo pr ecisar 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 devem ser inseridos no campo. Complete os seguintes passos para alterar 0 ripe de dado ou compri men to de urn campo: 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/ 4Workbench, Developme nt->ABAP/4 Dictionary. ) 2. Digite 0 nome de tabela.
127
128
Din 0 DATA DICTIONARY, PARTEI
"RENDA EM,l DIAS ABA'"
3. Escolha 0 bocao de opclo Tables. 4. Pressione 0 ba tao Display . 5. De urn clique duplo no elememo de dados correspondente ao campo que voce quer aItera r. 0 elemenro de dados sera exibido.
6. De urn
clique duple n o nome de dominic no elemenro de dados . a dominic sera exibido. 7. Pressione 0 batao D isplay < -> Chan ge na barra de [erramentas Application. Voce agora sera capaz de alterar os atributos do dominic.
8. Deixe em branco 0 campo Output Leng th. 9. Altere 0 tipo de dado e/on compriment o. 10. Pr essione 0 batao Ac tive. A tela Please note! e exibida para mostrar uma lista de todas as tabelas e estrururas que utilizam esse dominic . Elas scrao todas afetadas . Para continual', pressicne 0 batao Co nnnue.
fun cionalidade
0
utlllzcm.
da tela Dictionary: Table/ Structu re (no modo de
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 dados, mas pulara a tela inici al e 0 levard dire tamente a tela que permitira que voce insira novas linhas em uma tabela. Se esse caminho de menu est iver desativado, faca u ma marca de verifica ~a o no camp o Ta b.Maint.AlIowed e reative sua tabel a. Consulte a secso anterior neste capitulo intitulada "Campo Tab.Mai nt. Allow ed." para uma explicacao desse campo. Esco lher esse cam inho de menu automaticame nte executa estas tarefas em ordem: •
• Fozer clterocoes em urn do minio ofeto todos os ca mpos que
e a partir
129
Gera urn programa espe clfico atualizad o de A BAP/4 para sua tabela que urn navegador de dados pede chamar. (Ess e pr ograma de ABAP/ 4 so m ente egerado a primeira vez que vo ce acessa esse carninho de menu 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
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.
NOVO...
Dentro do R/3 estec 05 ufilit6rios fornecidos pe lo SAP chomodos nov.I?90dores TERMO ~ de dodos que permitem que voce monipule os dodos dentro dos tcbelos: Embora 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.
Voc e pode ut ilizar os utilitarios de navegador de dados para exibir ou modificar dados den tro de tabelas das seguintes maneiras: • proeu rando e exibindo as Iinhas que en contram criteria especificadc • adicionando novas linhas • . modificando linhas existentes • excluindo linhas Esta se<;ao descreve como u tilizar os navegadores de clados pa ra executar essas fun~5es.
Acessando a funciona lida de do navegador de dados de denim do ODIC Como obs ervado antes, urna das fun<;6es de urn nav egador de dados e ins erir novas linhas em uma ta bela. Uma mane ira Hcil e rapida de acessar essa
Execute esse procedimento para adic ionar clados asua tabela. A ajuda com problemas comuns e dada no D iagnostico e solocso de probl em as que se segue. Se voce tiver problemas com quaisquer urn do s pas sos, nac se esque<;.a de con sultar 0 Diagnostico e solu<;ao de problemas. 1. Va para Dictionary: Initial Screen. 2. Digite
0
nome de sua tebele no cam po O bject Name.
3. Pressione 0 botao Display. A tela Di ctionary: T able/ Stru cture: Display Fields e exibida. 4. Escolha 0 caminho de menu Utilities- c-Create Entries. Observe a barra de status na parte inferior de sua tela quando voce escolhe 0 caminho de menu; vo ce pode ser capaz de ver a m ensagem "Compiling. .". Essa mensagem indica que 0 sist ema esta gerando a 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 cads campo de entrada, aparece 0 no me de campo . Os campos de chave primaria apare cem primeiro, seguidos po ruma linha em branco, depois seguem as campos restantes da tabela. Para ver 0 programa que foi gerado, escolha Utilities->Creat e Ent ries e depois escolha a
._., ~
~
'J:fr
'. oil
"~::-....""-""-:,,,,"""'''''""""'!!,,..-"'''!!r:-''!!!!~'!!!!!''''''!!'"""''!!!!''""""''!!''''-'''II!!r'!!!!''''''!!!!'''''' IIII'" ,...-,r'''ll!!''''''''''''''''''''''''P-..r-''''''
130
r
,....,.....
r- ,..
...,
caminho de menu System -c-Status. 0 nome de programa aparece no campo Program (Screen).
Problema
Fl '~
Se voce coloco 0 cursor em qualquer campo e presslcno a tecla telo Help - Ta ble Insert e exlbido. Nessa tela, voce vera a documentac;co que voce digitou no elemento de dodos. Para reto ma r tela Table Insert, pressione botcc Continue ou Concel.
a
5. Preencha os campos com as dados que voce quer digirar em sua tabela. 6. Pressione 0 botso Save na barra de ferramentas Standard. Voce vera a mensagem "Da tabase record successfully created" na barra de status. 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/Structure: Dis play Fields. 9. Escolha 0 caminho de menu Utilities->Table Contents para exibir as linhas que voce acabou de criar. A tela DOl ta Browser: Table: Selection e exibida. 10. Para exibir todas as linhas na rabela pressione 0 botao Execu te sem inserir qualquer criteri o de pesquisa. A tela Data Browser: Table Select Entries e exibida e as novas linhas que voce inseriu serao mostradas em uma lista.
Po ssive is sintomas
Nso posso adicianar dodos
o item de menu Create Entries est6 ocinzentado e noda cccntece quando voce da um clique nele.
_
DlA3: 0 DATADICTIONARY, PARTE I
APRENDA EM 21 DIAS ABA P"
Problema
r-..,.....
Possiveis sintom as
SoluljOO
Quando presslcno 0 botoc Save , voce ve 0 mensagem II A data record with the specified key a lready exists" na porte inferior do [onelc.
A tob elc ;0 cc ntem um reqlstro co m 0 mesmo chove prima rio que a primeiro que voce estcvc tentondo salvor. O s compos de chove prirnorlo sec os prlrneircs grupos de ca mpo s que oporecem no tela. Hd urn espoco em bronco no telo sobre 0 ultimo camp o no chove primcric . Altere 0 va lor no primeiro des compos ocimo do espoco e tente solver seu registro novomente .
'131
Utilit6rjos gerais de novegodor de dodos A funcionalidade que voce acessou na se~ao prec edente esom ente uma fun~ao de urn unico navegador de dado s. sistema R/3, hi quatro utilitarios gerais de navegador de dados: SE16, SE17, SM30 e SM31. Eles sao similares sob alguns aspectos e ainda oferecem varie s tipos de funcionaliclade.
No
Utiliza nda
0
SE16
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 tarefas. Ele pode ser acessado de qualquer uma destas duas maneiras:
A ca ixa de seleceo Tob.Moint.Allowed nee estc otivada. Va para a tela Dtctlcncry: Table/Structure: Change Fields (para chegar ate 16 exiba a tobelo e clique no bcteo Display -c-c- Chonge no borro de ferromentos Application ate que os compos seja m modificcdos) . Adicione umo marco de verlficcccc em Ta b.Moint.Allowed. Pressione o batao Activate.
â&#x20AC;˘ D a tela Di ctionary: Table/Structure: C hang e Fields, escolha minho de menu U tilitie s-c-Table Contents.
0
ca-
iI
â&#x20AC;˘ Digire /nse16 no campo Command. S(mHCAM~ lnlcte a ScreenCam "How to Display Tc ble Da ta Using the Doto Browser" agora.
1. 2. 3. 4.
Digi re / nse16 no campo Command. Pres sione a tecla Enter. A Data Brow ser: Initial Screen aparece. Digire seu nome de tabela no campo Table Name. Pressione 0 batao Table Contents na barr a de [erram entas App licatio 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
DIU 0OAT' olmoNARY,P' RTE I
'P RE Ho , EM 2J DiAl ' ' ' PI'
serao mostrados na pr oxima tela - a tela Data Browse r: T able: Selection. Essa tela ena maioria das vezes simplesment e chamada tela de selerao. A qui voc e po de inserir os criterios de pesquisa para locali 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 coincida m com seu criteria e voce quiser exibir codas elas, deixe em branc o 0 valor no cam po M aximum No. Of H its. 5. Pre ssione 0 bo tao Execu te na barra de [erramentas Application. Voce eneac vera a tela Da ta Browser: Table Select Entries. T odas as linhas que coincidem com seu criteria serao exibidas ate 0 numero maximo de linhas espec ificadas no campo Maximum No . of H its.
Solusao
Node c contece quan do voce pressiono 0 botdo Exec ute.
• Voce intenciona lmente au acid entalmente deve ter digitado a lga em um campo no tela de seleccc e nenhumo linha coincidiu co m esse criteria de pesquisu. Deixe e m bronco todos as compos no tela de selecc o e presstcn e Execute novorn ente.
• Nc o h6 dodos no tooele. • Vocl! pressionou Save depois de coda registro ?
scldo do que voce inseriu no tobela
• Voel! inseriu dodos no tabela? • Voce pressionou Save depois de coda regi stro ~ • Voce iosenu vclcres de compos de chove ."; ' primc rio para code registro? • Voce intencionol ou oclde ntclme nte digitou olga em um campo no tela de sele<;60e nem tcdos os registros eoincidem co m esse c-iteric de pesquisa. Retorne para 0 tela de setecec , delxe em bronco fodo s os campos e pressic ne o bat ao Execute nova mente.
Do mesrnc forma qu e a caminho de menu Utilities->Create Entries, Utilities->Table Contents tombern gero um prog romo, e le e ge ra do 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 System- > Status.
S(RHNCAM ~ Inicie
0
Screen Cam "Dote Browser Functionolitl ogara.
Na tela de naveg ador de dad os voce pede fazer
• Role
a esquerda e a direita.
• De urn clique dup lo em um a linha para ver mais campos de uma vez .
• Cri e uma n o va linha es colhe ndc
0
caminh o de me nu Tabl e
Enrry-> Create. • Altere uma linha existe n te ativando-a e entao escolhendo de menu Table Entry -c-Change.
0
seguinte:
0
caminho
• Altere as mulriplas linhas ma rcando-as, escolhendo 0 caminho de menu Table Ent ry- > Chang e e entao pressione os bot6es Next Entry e Previous Entry na barra de fer ram entas Application. • Copie uma linha existe nte m arcando -a e entjio escolhendo de menu Table Entry-> C reate w/reference.
Problema
He menos registros no lista de
• Ro le para cim a e par a baixo.
•
0
caminho
Copie as mulciplas linhas marcando-as, escolhendo 0 caminho de menu T able Entry->Change e cntsc pressionando os bo roes Next Entry e Pr eviou s Entry na barra de ferramentas Application.
• Exclua uma linha ou mais marcan do-as, escolhendo 0 caminho de menu T able Ent ry- c-C reare w/ refer en ce e coeac pr essiona nd o 0 boteo Delete Ent ry na barra de fer ramentas Application para cada linha que voce quer excluir. • Selecione todas as linhas e tire a selecso de rodas as linhas pressionando os bot6es correspondentes na ba rra de ferramentas Ap plication . • Im prima a lista pressionando Standard.
0
botso Print na barra de ferramentas
• C lassifique a lista colocando 0 cursor em uma coluna para classificar e entao pressiona ndo os bo t6es Sort Ascending ou Sort Descendin g na barra de fer ramentas App lication. • Localize um a st ring pression ando 0 ba tao Find n a barra de [erramentas 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 o caminho de menu Edit-> D own load. Voce: pede esco lh er ASCII, form ato de plan ilha ou Rich Te xt F orm at. • Selecione os campos que vo ce quer vel' na lista esco lhen do de menu Setrings-> List fo rm at-> C hoose fields.
0
caminho
• Varies outrOS parametres de Iista m ilium 0 caminho de menu Settings-> 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
133
DtAJ: oDATA DlOiONARY, PARTE 1
conversjo ou exibir 0 nu mero real de linhas que coincide com 0 criterio de selecsc. Voce tambem pede alterar os tftulos de coluna para utiliz ar os r6t ulos de elementos de dados em vez dos nomes de campo das
tabelas.
nolo sera capaz de utili zar 5£16 se a tabela river urn malogo de manuten~ao padra o. Ness e case, use 0 SM3l. A maneira mais simples de dizer se voce deve utilizar S£ 16 ou SM31 e 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 tabela . SM31 euma versao mais anriga de SM30 que tern menos func ionalidade. 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 de comprimemo. An tes qu e voce possa utilizar qualquer urn, urn programa espe cial chamado dialogc de manu tencac padrac deve ser gerado para a tabela que voc e quer exibir.
a
Um di6/ogo de monuten¢o podroo e um progromo ABAP/4 qu e voce gero . 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 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.
NOVO lrl...
niMO r
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 da l, de um clique nos seguintes guias: Basis Components·>ABAP/4 Deve lopment wcrkbench-> Extended App lica tions Funct ion U· brary->E xle nded Table Maintenance.
Comparanda
0
SEl 7 cam a5El 6
Exibi ndo os dodos utilizando seu pr6prio prog ro mo de ABAP/4 Em vez de utilizar urn navegador de dados, e mais facil escr ever urn programa pequeno de ABAP/4 para exibir os dadcs em sua tabela. Teate criar urn agora. Projere seu programa para escrever uma men sagem aprop riada se nenhuma Iinha existir na tabela. U rna solu ~ao de exemp lo e mos trada na Lista gem 3.1. Experim enre criar uma por conta pr6pria antes de olhar na solucs o.
ENTRAOA~
Lista ge m 3.1 Programo simples para exibir os dodos no ta belo ztxlfal
1 report ztx0301. 2 tables ztxlfaL 3 se je ct > from ztxlfal. 04 wr H e : I ztxlfal-11fnr, 5 zt xlfal-namel , 6 ztx lfal-regi o, 7 ztxlhl-landl. 8 endsete ct • 9 if sy-subrc <> O. 10 write 'Table is empty.' . 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 criterio de pesquisa complexo para urn maximo de 40 campos p or vez; com SE17, voce . pode especificar criterios de pesqui sa simples pa ra qualquer numero de campos de urna vex. 5£16 somente at iva a safda a ser classificada par um a un ica coluna de um a vez; 0 SE17 permite que voc e especifique 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 fun cionarg.
a
Somando as navegadores de dodos Em casos especiais, para exibir dados som ente onde voce precisa especificar multiples criterios de classificacsc, utilize SE17. En treranro, para a maioria das arividades rotineiras de exibiljao/atualiza~ao de dado s, utilize 0 5E16 . Mas voce
Utiliza ndo
0
qjuda El
A ajuda Fl e a documenracjo vista pelo usuario para urn' campo. Para obra-la, o ususrio coloca 0 curso r no campo e press iona Flo A do cumentacao e exibida em uma caixa de dialogo. Voce utilizara 0 seguinr e proc edime n to para modificar a ajuda F I que voce cri ou ant::riormente para 0 campo 1i fnr. SmtHCAM~ lnicle a 5creenCom "How to Crea te or Mod ify Fl Help" oga ra .
Adicion anda a juda Fl para urn cam pa Para adicionar ajuda Fl para urn campo: 1. Comece na tel a D iction ary: Tabl e/S tructure (no modo de altera~ao ou exibicao).
135
,1 t l
"'l!'"
",!!!!"--'!!!9 ~- .~
-
-es- -.~ -~ ~ ~""'="'" ~ ~--~~ ~-~------
~'~i ~ÂŁ:C
OIA3,0 DATA DICTIONARY,PARTE 1
2. Localize 0 campo para 0 qual voce quer edicionar ajuda e de urn clique duplo no nome do elemento de dado s correspondence a esse campo. A tela D ictionary: Disp lay Data Element sera exibida. 3. Pressione 0 botao Display < -> Change na barra de ferramentas App lication. A tela muda para 0 modo de alreracao. 4. Pressione 0 borao D o cumen tation na barra de ferramentas Application. A tela Change Da ta Element: Language E e exibida. 5. Digite 0 texro que 0 usu erio deve ver quando ele solicitar ajuda para esse campo. A primeira linha contern os caracteres &D EFINITION &. Isso e urn titulo; nao altere essa linha. Digite sua documenracao comecando na linha da is. Press ione a tecla Enter para comecar cada novo pardgrafo. 6. Press ione 0 botao Save Activ e na barra de ferram entas Appl ication para salvar suas alreracoes . A mensagem "Document was saved in active status" aparece na barra de status . 7. Pr essione 0 batao Back na barra de ferramentas Standard. VocS e levado de volta a tela Dictionary: Change Data Element. 8. Pressio ne 0 botao Back mais uma vez para retomar a tela Dictionary: Tab le/Structure.
Testo rido a ajuda Fl
Ad icio na ndo vinculos d e hiperte xto pa ra aju da Fl NOVO ~
Vrnculos de hiperlexto perm item que voce cliq ue em urnu pclcvro destocodo au HRMO "" [rose no elud e Fl e exibo ojudo edicione J pore esso pclov ro ou [rose. Pora 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. Os names de dccumentos devem inicior com y au z. Voce pade indui r hiperlinks e m seu novo documento tcmbem e vincu!er 0 portir dol pore outro dccumentc, ad infinitum. ScreenCom "How to Create
3. De urn clique na seta para baixo do campo Document Cla ss. U ma lisra de classes de docurnento e exibida. 4. De urn clique duple em General Text . a campo D ocu ment C lass agora contem 0 valor Genera 1 text e u rn campo identificado Gen eral Text e exibido na parte superior cia tela Document Maintena nce. (0 campo Documentation Type ja deve conter 0 valor Orig; nal us ervSe ele nao contiver, de urn clique na seta para baixo no fim do campo e o ahere. ) S. No campo General Text, digite 0 nome de urn documento que vo ce quer criar. 0 nome deve iniciar com y ou z. LEMBRE-SE DESSE
N OME. 6. Pressione e exibida.
0
ba tao Create. A tela Change General Text: Language E
7. Digite seu doc umentc aqui. Pressio ne a tech Enter no final de cada paragrafo.
exibida.
1. Come ce na tela Dictionary: Table/Structure (no modo de alteracao ' au exibicao). 2. Escolha 0 caminho de menu Urilities-> Create ent ries. 3. Coloque 0 cursor no campo com 0 texto de ajuda modificado. 4. Pressione Fl. 0 sistema exibird sua documentacao modificada.
0
2. Escolha 0 caminho de menu Utilities- >Docu mentation. A Document Maintenance: Initial Screen e exibida.
8. Pressione-o botec Save Active . A tela C reate Object Catalog Entry e
Para testar sua ajud a F l :
S(RHN(AM~ Inicie
1. Comece no menu principal do R/ 3 e escolha 0 caminh~ de menu Too ls->ABAP/4 Development Workbench. A tela ABAP/4 Development Wo rkbench e exibida.
0
Hypertext link in F1 Help" ogora.
9. Pressione 0 bo-se Local Object. Voc e elevado de volta a tela Change General Text e a mensagem "Document was saved in active st atus" aparece na barra de Status. '10. Pressione 0 batao Back para retornar a tela D ocument Maint enance: Initial. 11. Pressione 0 batao Back novamente para ret omar Development Workbench.
a tela de ABAP/4
12. Entre no Data Dictionary e exiba seu elemenro de-dado. 13. Pressione a batao D isplay < -> Change na barra de {erramentas Application. Sua tela altema-se para alrerar 0 modo. 14. Pressione 0 bono Documentation na barra de feITa~emas App lication. A tela Change Data Elem en t: Langua ge E e exibida. 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
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.
"' 137
138
DIA3: 0 DATADIGlONARV, PARTE 1
APmDA EM 71 DlAS ABAP/4
18. De urn clique duple em General text. 0 campo Selected Reference agora contem 0 valor General text e urn campo rotulado General
Resumo • a Data Djctio~ary e uma ferramenta utilizada por program as em ABAP/4 para cnar e man ter tabelas . Hi tres ripos de tabelas: transparente, de pool e de cluster. As tabelas transparentes sao as mais comuns e sao utilizadas para armazenar dados de aplicarivo. As rabelas de pool e de cluster sao principalmenre utilizadas pela SAP para armazenar dados de sistema.
Text e exibido no topO cia tela. 19. No campo Gene ral Te xt, digite
0
nome do documentoque voce crio u
no passo 6,· 20. N o campo Name In D ocumen t, digite 0 texto de hipe rlink. Esse e 0 tex to que sera. dest acado e no qual 0 usuario sera capaz de dar urn clique par a reeeber ma is ajuda. 21 . Pressione 0 batao Continue . Vocee levado de volta para a tela Change Data Element: Language E e urn link aparece na posiceo do cursor ,
• Para criar uma tabela, voce pr imeiro p reeisa de dominies e de elementOSde dados . a s domfnios ofere cern as caracteristicas recnicas de urn campo; os .elementos de dad os ofere cern os r6tulos de campo e a ajuda FI. as dois sao reutilizaveis.
22 . P ression e 0 botao Save Ac tive na barra de fer ramentas Application.
•
23. Voce pode experimentar seu novo hiperlink imediatamenre escclhendo 0 caminho de menu Document-c-Sc reen Output. A tela Display D ocument ation e exib ida, seu texto de ajuda aparece e seu hi perlink devera ser desta cado. 24. De urn clique no h ipe rlink. A tela Display Hypertext: e exibida e seu doc umento prov avelmente aparecera. 25. P ressione Back tre.s vezes para retomar para a.tela Dictionary: Table/St ructure. . 26. Para testar seu hiperlink, exiba sua t abela e escolhao caminho de menu Uriliries- c-Create Entr ies. A te la T able Insert e mos tr ada .
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. 29. D e urn clique no hiperlink. Seu novo documento deve ra ser exibido.
..
o E 'j;l, o c
'" -e ~ III
~
'"
~
....
Problema
Sol u ~ ao
Nee posse loca lizer Gener al Text no llsto de classes de docvmento.
•
Aparece a mensagem "Chonqe relevant to trcnslotlo nt"
•
Aparece 0 mensogem "Dote element is not used in on ABAP/4 Dictionory structure.
o~ .objetos de .dieiomirio devem estar ativos antes de poderem ser utilizados. Se fizer uma alteracao para urn objeto de dicionario, voce deve reativar 0 objero para que as alteraqoes tome m-se efetivas .
• a s n avegadores de dados permitem que vo ce exiba e modifique os dados dentro de tabelas. a SE16 e 0 navegador mais geral de dados. o SEll, 0 SM30 e 0 SM31 sao os out ro s navegador es que oferecem capacidades variadas. • ~oce po de erial' ajuda Fl dentro de u rn elemento de dados pressl~nando 0 bordo Documentation. Dentro dess a ajuda Ft, voce pode cnar vfnculcs de hipertexto para outros docum entos de aju da FI.
P&R
o
Role pore cirnc.
Presslone 0 botoc Save Active no bo rra de ferromentas Application , noo 0 bctco Save no borra de ferromentos Standard. ~ Altere a closse de docu mento po ra General Text.
o
H
Estou pressionando 0 botco Documentation no tela de elemente de dodes, mas nado cccntece.
•
0 titu lo do tela e Didionary: Display Doto Element? Se for, voce est6 no modo de exibi~oo. Voce precise ester no modo de clterccoo. Pressione 0 batao Display <-> Change e entec tente novome nte.
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 con rem dados pree n ch en do 0 comprimento in tei ro do campo, o qu e acon t ece? 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 teriam perdido dados falharia e um a lis ta d essas rabelas seria m os rrada para voce. Se voce en tao p rosseguir e ativar essas tabelas, 0 sistema au tomaticam en te converte d. os dad os nelas e os dados na coluna referenciada pelo domla io serao rruncados . Como voce sabe qu ais tabelas serac af~tadas an tes de alterar urn
dominic?
139
140
-
- - __ v
I APRENDA EM 21 DIAl ABAP/4
o
w-- . . . . = _ . DIA 3, ODATADJCTlONARY, PARTE 1
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 ferramentas Application, selecione Other Objects ~ pressione Continue. Uma lists de drvore sera exibida. De urn clique duple na linha em que esta escrito Table. A lista de.nomes de ta~e~a e exibida. De um clique duple em qualquer linha para exiblr a
rabela.
o
E possive1 er iar um cam po de tabe1a sem utilizar urn eleme~to
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 alteracio e en tao escolha 0 caminho de me~u Edit-c-Direct Type Entry. Voce entac pode inserir 0 compnmento de campo e ripe de dado diretamente. Esse metoda ndo erecomendado para 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 SAP uciliza esse me todo de criar tab elas para tabelas que armazenam as in formacoes de sistema como ID s de cursor de banco , . de dados . Voce po de udliza-lo na visualizacio (staging) de. tab ela ,que arm azena dados brutos em transite den rro ou fora do s;:}e,ma R!3. H a duas desvantagen s principais nesse metoda. Pr1IT~el~O~ 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.
de dad os au domin ic? Isso parece muito trabalhoso pa ra crrar para eada cam po.
Works hop Os segu intes exerclcios proporcionarao. a voce pratica para c~iar objetcs no dicionaric de dados e urilizar esses objetos em prcgramas SImples com as insrrucoes tabl es, sel ect e write. As respo stas estao no apendice.
!
141
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 atualizar dados? ~
I,
I ~
I! !
!
II
6. Q ual ea diferenca entre uma tabela tra nsparenre e um a tabela de pool ou uma tabela de cluster ?
Exerd cio J Adicione os campos mo strados na Ta bela 3.4 em S1..1<'I tabela · ··1 f al . Nenhum 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. Reutilize 0 dominic do campo namel para a camp o name2. Para 0 resto dos 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 para atualiza r as linhas existences em sua tabela e col oque os dados nos novos 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
Nome de DE
Nomede DM
name2 erdat ert i m ername
• " • name2 ." -e rdat · · ·ertim • • • ernam
•• · name datum time usnam
Exerd cio 2 C rie uma tabela transparenre • • • knal para conter dad os-mestr es de clienres, co mo mo strado na Tabela 3.5. Utilize urn na vegador de dados para adicionar da do s at abela. eri eurn novo programa ••• e0302 que Ie os dados dessa tabela e os escr eve ern uma Iista.
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
de ca mp o
PK
No me
Nome
de DE
de OM
Tipo
Len
Chente mafldt
mandt
Numero de c1iente
kunnr
• •• kunnr
Nome de clente name~
• •• knamel
Ctdode cityc
• •• ci tyc
Regioo
regio
• • "r egi o
Pels
1andl
• • • , and l
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 estrutu 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" -
_
Umo chove estrongeiro e um compo em umo tobelo que estc coneetodo a outra HiMO tcbelo via um rela ciono mento de chcve estrang eiro. prop6sito do relocionomento 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.
NOVO -....
r
nl1p:l/www.compU$.ccrn.br
a
-------------~~~~~~w~~~144
.. -....
APREH DA EK 21 DIAl AB AP/ ' Figura 4 1
A tcbetc de chcve estrongeiro e 0 tobelo
YWWYW W .
DlA 4: QOATA OIcnONARY. PARTE 7
Tabelode move
Tobelo
estronge.ro
de yermco<;Oo
de verificor;60.
l MOOS land l
rth lfo1
cbc ve ~ lan d l estrongeiro ~
Ii US CA
cA ~
US US
IT
DE DE
JP -'-
nome do tob ela
nome do compo reloctonc mentc de chove eslrongeiro
Esto to belc contem umo lisle de c6digos
ta~6es de inr egri dade sio mantidas no banco de dados. Portanto, urn programa em ABA P/4 incorretamente escrito pode violar a inregridade referen cial; ele pode inserir valores invalidos nas ta belas de banco de dados . P or ess a razao, pr ogram as em ABAP/4 qu e precisam atu alizar 0 banco de dados com dado s proven ientes d e uma out ra fon te qu e nao a in t erface com 0 usuari o n orm almente passaro esses dad os p or u ma interf ace com 0 usuario a fim de
valids-los.
de pcis v61ido$.
US
Para mo is lnfcrmccces sabre utilizoliCio do interfa ce com 0 usvcnc pora vcltdcr dodos, consulte os programas de ajude do R/3 library para BOC (Botch Data Communication). Para visuolizor esso documentcceo, o partir de qvclqc er tela escolbc 0 co minho de menu Help->RJ3 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 Develo pment Workbe nch-> Basis Programming lnterfcces->Tronsferring Data With Botch Input.
"-
Q uando voce odic:iono dodos a esto tcbelc, umc verificot;60 , feito para 'o'er se a c6 digo do pa is que voce estc
lentando inserirexiste no tcbelo de verifico<;60 (ztxO05).
P or exempl o, sua tabela·· - 1f al contem c6d igos de pafses em urn campo 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 chave estran geira como a mostra da na Figura 4.1, uma verificacf o automaticam en te sen. feiea contra a tab ela de verificacao para urn valor valido. C om essa chave esrrang eira no lugar, 0 usudrio nac po de in serir codigcs de parses invalidos na tabela - - "l f al , 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. .•
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 bastidores a interface com 0 usuario formula uma instrucao sel ect para validar o camp o de chave estrangeira e envia-la ao banco de dad os. Se uma linha coincidence njio foi la calizad a na tabela de verificac ao, 0 u suario ve uma 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 permissao para passar para 0 programa em "ABA P/ 4 subj acen t e. Ass im, as chaves estrangeiras jii sao verificadas ant es de 0 pr ogram a receber os valores . 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-
Raquisi tos tecnicos para criar uma ch ave estrongeiro Para criar um a cbave esrrangeire: • A verificacao deve ocorrer em relaljao a urn campo dentro da chave prim dria da tabela de verificacao.
• Os no mes de dominios do campo de ehave estrangeira e 0 campo de rabela d e verificacao devem seros mesmos.
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) .
No Figura 4.2, os dais compos utilizom 0 mesmo e lement o de dodos . ossim como 0 mes mo domlnio.lembre-se de q ue noo e tmpre scindlvel qu e as dois utlllzem 0 mesmo elementc de dodos - somente as dornlnlcs de vem ser os mesmos.
Como esses campos compartilharn urn dominic em com um, aintegridade da comparacao entre os dcis campos e garan tida, porque seus tipos e comprimente s ~e dados sempre coincidirao.
145
- ...
......
146
I
- •• ---
-
.. -
... .... .. -- --
APRENDA EM 21 VIAS AB AP/4
CIAt 0 DATADlmONARI, PARTE 2
Fig ur a 4 2
Tobela de
Este e urn diogromo
verifico<;oo
do compo de chc ve estrangeiro, do compo
de tobelo de
,",,005
tcbelcs
landl
land1
com pos
do dominiccomum que eles comportilhom.
"
"
I, pe: n: 3chcr
"" /
I
~
A seguir apresen tamos 0 procedimento de criacao para a tabela de verificacao - • - tOOS. Se voce tive r problemas, cons ulte a se<;ao de diagn6sti co e solucao de problemas relative ao p rocedi men to de criacio de tabelas rransparentes para dominies preexistentes e elementos de dados no Di a 3. 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 sao herdodo s do dominic
type: chc r len : 3
ztxlcnd l
2. Digice
0
3. Escolha
elerne nto de dodos
nome de tabela no campo O bje ct N ame . 0
bo tao de opcao T able.
4. Pressione 0 bocao Create. A tela Di ction ary: Table/Structure: Change F ields e exibida.
ztxlondl
TYPE : CHAR LEN,3
147
Procedime nto de criccco de ta be lo de verificccuo
mlto 1
verificoc;lio e
-
=
_
5. D igite urn textc cu rto, escolha a classe de entrega A e colo que uma marca de verificacao em Tab. Maint. Allow ed.
dominic
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"---
_
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 . cam po s nessas relas serfo explicados em deralhes mais adian te neste capitulo. " Os pro cedimenrcs a seguir demons tram como criar a tab ela de verifieafac zt xt 005 e dep ois uma chave estrangeira em zt xlfal - l andl ut ilizan do ztxt 005 como a tabe la de verificaclo. D epois de visualizar esse procedimento, vo ce sera solicitado a erial' sua pr6pria tabela - - -tO OS e entao criar urn relacion am ento de chave esrran geira de - - - lfal -l and 1 para tabela de verificacao - - - t OOS. Antes de erial' uma chave est ran geira, voce deve prim eiro te r um a tabe1a de verificacao. Emb ora ja haja uma tabela de c6digo de pafses n o R/3, para pra ricar voce criara e ut ilizara a sua propria tab ela. A tabe la d e verificacao se cha mar a - - - tOOS e ira conter os campos e utilizar os elem entos de dad os mostrados na Tabela 4.1. (Urn x na coluna PK indica campos qu e fo rmam a chave primaria. ) Tabela 4. 1
as campos e sues ca racterfsticas para a tabelo
Nome d e cam po
PK
mandt l andl
x
No me de DE
- --TOOS
7. Coloque uma mar ca de verificacao nos dois campos para indicar que eles formam a chave primaria. 8. Pressione 0 b c tao Save na barra de [errament as Standard. A tela Create Obj ect Ca talog Entry aparece. 9. Pressione 0 botao Local O bject. Vo ce e levado de volta tion ary: Tab le/ St ruc ture: Change Fields.
a tela Dic-
10. Pressione 0 botao T echnical Settin gs na barra de ferr amentas Applicatio n . A tela ABA P/4 Dictionary: Ma intain T echnical Settings e exibida. 11. No campo Data Class, digite APPLO (APPLO com urn zero, na o
APPLO com a letra 0). 12. D igite
a (zero)
13. Pressione
0
no campo Size Category.
batao Save.
14. Pressione 0 batao Back. Voce e.levado de volt a pa ra atela Dictionary: Table/St ructure: C han ge Fi elds. 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 contem 0 valor Act. .
mand t • - -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 ... 148
• ........... ••••••• w •
wv • •
•• • ••
APRENDA EM 21 DIAl ABAP/4
DJA4: 0 DATADlcnmURY, PARTE2
Proced imento de criocc o de chave estrangeira
Fi g u ra 4 3
S(RHNCAM~ Inicie
A tela Create Foreign Keyeobe compos de tobela de verificaqdo e seus compos de chove
0
V . W ! ' ' I..;
ScreenCom "How to C reate a For eign Key" ag ora.
esfrangeiro ossociodos.
Para criar uma chave estrangeira:
1." Comece na Dictionary: In itial Screen . 2. No campo Object N ame, digire a chave esrrange ira ( - - -1fal). 3. Escol ha
0
0
n om e da tab ela que .
e para conter
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 estrangeira (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 exemplo, Country Code val idat i on.
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. 9. 0 pop -up Change Foreign Key aparece. Ele declara Check ta ble name was created or changed. Generate a proposal for fi e 1d ass i sn- , ment? Pressione
0
borso Yes.
10 . Voce elevado de volta atela Create Foreign Key. Os names de ca·~~o de tab ela de veri ficacao e os nom es de campo de chave estrangeira sao exibidos. (Os names de campo de tabela de verificacao sao - - • t005mandte - - - t005 - l and!. O s nomes de camp o d e chave est ran geira sao .- - l fe l -mand t e· - -lfal-landl. ) 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 transferred" aparece na barra de Status . O s campos Status contem os valores Rev; sed e Not save d. 12. Pressione 0 batao Activate na barra de fer ramentas Application . A mensagem "was activated" aparece na barra de status. as valores nos campos Status sao agora Act . e Saved. V oce acaba de criar urn relacionamen tc de chave estrangeira entre as tab elas · · - H al e ·· - tOOS. ---Hal-landl e o campo de chave estrangeira e - - - tO05 e a tabela de verificacao. A interface com a usu ario validara a valor dentro do campo _. -Hal-landl con tra os valor es na colun a - - - t 005-landl.
Testa ndo
0
relacionamenta de chave estrangeira
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: 1. Inicie na · tela Dicti ona ry: Table/S tru cture (qualquer alreracdo ou modo de exibicso) .
2. Escolha 0 caminho de menu Utilities-> Crea te entries. 3. D igire um valor no campo de chave estr angeira (c6digo de pais). , . 4. Pressione a te cla Enter. Se a valo r nac for localizado na tabela de verificacao, a mensagem "Entry do es not exist (please check your en t ry) " e exibida.
Desco brio do a coluoa CbeckTable Dep ois de criar um a chave est ran geira, a nom e da tabela de veri ficacao aparece 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 verificacac desse campo. O lhe em sua tabela agora. Vo ce deve ver 0 nome de sua tabela de verificacao na colona C heckT able.
D ete[rn i o a ~60
autorn6tico de.compos de chave estraogeira
Quando cri ou a chave est rang eira, voc e nfio teve de especificar os campos que devem pa rricipar no relacionamen ro de chave estran geira - 0 sistema as deterrn in ou au romaticamente. Esta se~ao explica como 0 sist ema determine esses n a mes de campo .
149
. ..'-.
150
,PRENDA EM 21 DIAS "'P/4
DIA4;OOATADlaJONARY, PARTE 2
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 sistema gero u uma p roposta de chave escrangeira consistindo em pares de 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 da tabela de verificacio devem ser incluidos no relacionamento de chave cstrangeira o sistema pesquisa nesses campos de chave primaria 0 primeiro que tern o mesmo dominio que 0 campo de chave estrangeira e 0 emparelha COm sell campo de chave estrangei ra. Se houver diversos campos na chave primaria cia tabela de verificacao, 0 sistema tentara localizar uma coincidencia de cada urn dos campos resrantes. Urn a urn, 0 sist ema tentani localizar urn campo na rabela de chave estrangeira que tern 0 mesmo do minic que a campo de tabela de verificacao. Se isso nso funcionar, ele tentard localiz ar urn campo que tenha 0 mesmo tipo e comprimenta de dados. Se ele encon trar ma is de uma coincidencia, selecionara urn e 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 a urn campo da tabela de chave estrangeira.
Rel aci o'na nd o as chaves estran geiras com a seta pa ra baixo e a ajlJdo F4 NOVO...
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 verlftcccoo exibido.
Acompanhe 0 procedimento a seguir para testar 0 relacio namento de chave estrangeira que voce criou em - - -1 fal- 1andl . Se sua chave estrangeira nao funcionar, tente esse procedimenro urilizando ztxlfal, entao compare ztxl fal com sua tabela para dete rminar 0 problema.
1. Comece em qualquer tela.
2. 3. 4. 5.
No campo Command, digire /nse16. Pressione a tecla Enter. A Data Browser: Initial Scree n e exibida. Digite - - - 1fal no campo Table Name.
Pressione 0 botao Create Entries na barra de ferramen tas Application. A tela Table Insert e exibida.
6. Digire qualquer valor no campo de numero de fabricante, por exemplo, MY-V!.
7. Posicione
cursor no campo Country Code (landl)..Em bo ra uma seta para baixo apare~a no fim dele, nao a pressione ainda.
8. Digite
0
0
valor xx no campo Country Code.
9. Pressione 0 borso Save na barra de [erramentas Standard. A mensagem "Entry XX does not exist (please check your ent ry)" aparece .
Alem do ojudo Fl. voce tcmbem pode oferecer alga chomodo oiudo F4.pora a vsucrlc. A ojude F4 e ume listo de vclores volidcs que 0 usvcric pe de digitor em um compo. A flm de obter ojudo F4, a usuoria posiciono 0 cursor em urn ccmpo e 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 vtiluodos intercambiovelmente pelo SAP.
Seu cursor esta posicionado no comeco do campo que contem 0 valor incorreto. Urna seta para baixo aparece no fim do campo. 10. De urn cliq ue na seta para baixo ou pressione a tecla F4. Urn pop-up contendo as colunas de chave primdria de tabela de verificacac - - -tOos aparece.
e automaticamenre
11. De urn clique duplo em us. 0 pop-up desaparece e 0 valor n o campo c6digo de pais muda para US.
lERMO
r
Quando voce cria uma chave estrangeira, a ajuda F4 ofe rec ida para esse campo.
$CRHHCAM
lnlcie a scree nco m "Using
Q
Foreign Key to Provide F4 Help" agora.
Em uma tela, se voc e coloca 0 cursor dentro de urn campo de chave estran geira , um a seta par a baix o aparecera no fim do campo de entrada. Essa e a ajud a F4 . Se voce der urn clique na seta pa ra baixo ou pressionar a teela F4, . uma Iista de p ossiveis en tradas vdlidas eexibida. Essa lista e0 conteudo da tabel a de ve rificacao. N essa lista, as colunas de chave primaria da tabela de verifica~ao sao exibidas, excluin do mandt.
151
12. Pressione 0 botjc Save na barra de [erramentas Standard. A mensagem "Database record successfully created" apar ece na barra de status.
o
relacionamento de chave estrangeira oferece urn mecanisme para validar os dados inseridos pelo usuario na tela . Se 0 campo fo r urn campo de chave estrangeira, 0 valor ecomparado contra a tabela de verificacao. Se 0 valor nao existe na tabela de verificacao, e exibida uma mensagem de err o padrao.
i
I
I
I II I
I !
f
~~j
152
DlA 4: 0 DATA DICTIONARY, PARTE 2
AP RENDA EM 21 DIAl ASAP"
C h aves e strangeiras e p rogTIlLLm UUOL:lsc..!eOW mLllo Wt!e« Os programas em late que leem arquivos sequenciais au outras
_
origen~ de 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 manerras :
• 0 programa deve passer as dodos per uma interfac~ c~m ~ usuario chamando uma rra nsacao qu e contem as telas. 1550 efeitc mterramente em segundo plano. Os clados sao automaticamente "chaveados" par a os campos de tela a fim de fazer com que a verificacao de chave estrangeira seja executada. Essa tecnica e chamada EDe (Batch Da ta Communications) e foi mencionada anterio rmenre na se~ao "Desccbrinclo as chaves est rangeiras". BDC e a tecnica padrao utilizada para impo rta r dados no sistema Rj3 . • Ele pode canter in srru coes se lect que executam a verificacao de chave estrangeira. Essa tecnica e menos confidvel, porque os programas devem ser atualizados se novas chaves estrangeiras forem adicionadas au se existirem alteracoes. • Ele pe de passar os dados para m6dulos de funljao especiais que executam as duas verificaco es de chave estrangeira e atualizacoes de banco de dados. A SAP cria esses modules de funljao (chamado BAPIs ou Business APIs) e os forne ce com 0 sistema R/3 .
Chaves es t ro ng e iro s compostas
_
Umo chove estronge jro comp osta e umo cbcve estrongei ro composto d~':dois 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 a verlflcococ de chove estrongeira composto. NOVO 'rr....
MOVO ~
Quando voce eric umo chove estrongeiro composto, 0 compo em que voce rea lmente define a chove estro ngeiro echcmodo compo de verifica<;ao. Some nte um volor nco nulc no compo de verificc cc o adona a veriflcccec em relccec 0 tobela de verificac;ao. Um valor em quolquer dos outros compos de ntro do chove estronge iro composto noo ocionar6 a volidoc;oo.
URMO ~
Por exemplo. 0 campo reg; a em zt xl fa l deve conter apenas 0 estado valida ou os c6digos de provincia. A cornbinaljao de regi a e 1andl juntos deve ser valida. Portanto. urna tabela de verificar;ao (ztxto05s) comendo cornbinaljoes vili das de regia e l andl e necessaria. Depois de eriar essa tabe1a de verificar;ao. uma chave estrangeira composta e necessaria em ztxl fal para validar a combinaljao de regia e 1andl em re1ar;ao a tabela de verificar;ao. Comumente, ztxt005s- 1andl tambem deve servalidado contra ztxtOOS - l andl (veja a Figura 4.4).
figmg 4 4
Uma chove estrangeira compo sto volidondo a . combino; oo de regioo
e de poisem relo<;Cio 6 lobelo de verificor;Cio.
Iobelo de chcve
Tobela d e
estrongeiro
v e rifi ca ~60
ztxllal
ztxt005
LOOrr us FL CA ON
US A US GA DE DE
-
02 01
LOrEr CA CA US US US
ON
DE DE
01 02
o
153
relacionamento de chove estrongeira
NS AK Fl
GA
chcve estrongel r a " composto cc mcc de verflcocco. Umvalor nesse compo a d ona a verthcocec
Voce cria urna chave est rangeira composta quase exatamente da mesma maneira como voce cria uma chave estrangeira cont endo urn un ico campo. Voce comeca posicionando 0 cursor em urn campo , nesse caso zt xl f al- r eg; 0 e depoi s press ionando 0 botao Foreign Keys. C om o 0 cursor esta em reg; 0, e1e se torn a 0 campo de verificafiio da chave estrangeira composta. Embora a chave estrangeira seja composta de divers os campos, apenas urn desses campos acionard uma verificacao contra 0 banco de dados . Como re g; 0 e 0 campo de verificacao, urn valor inserido nele na tela aciona urna verificacao. Se 0 campo 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, nenhuma verificacfo e feita mesmo se as outros campos contiuerem oaiores.
I, , f
i
,,t ;
Como com a chove estrangeira simples, os names de dorofnlo do campo de verificac;ao e seu compo ossoclc dc no tcbelc de vertficocco devem cai ncidir. Entretcntc, quando a chcve estrongeiro e criado, as demais names de domin ios no chc ve estra ngeira composto nco tem de coincidirj a chove estrongeiro pode ser crlcdc se 00 menos seus tipos de dados e comprimentos coincldirem. Mois tarde, se 0 tipo de dodos au comprimento em um desses domlnlos for alterodo, os campos ndo mois coincldiruo e os resultados da verificococ de chove estrongeiro serao imprevisiveis. Por essa roz60 , emboro 0 R/3 nao imponho q ue todos os names de dominio de umo chove estrangeira compo sto coincidom, isso e basto nte desej6veL Em geral. quando a lterar 0 tipo ou a compnmento dos dodos de um campo em umo outro chave estrange ira composto que nao 0 compo de verifico~oo, voce deve confenr se a chove estrongeira e os campos de tobelc de verifica~oo estoo vfilizondo 0 mesmo dominic. Se naoestiverem, voce deve otuoliz6·los para ter 0 mesmo tipo e comprimento de dodo. Umo falho nissoresuhor6 no operoc;co imprevislveldo chove estrongeiro.
II
154
DIU 0 DATA DICTIONARY, PARTE 2
" RE NDA EM 21 DIAl ABAP /~
Se voce criar urn relacionamentc de chave estrangeira para u ma tabela de verificacao con tendo mais de urn campo na cbave primaria, todos os campos de chave primaria da tabela de verificacio deverao ser inc luldos na chave estrangeira. Nero todos precisam ser verificados [veja a se~ao "Chaves estrangeiras 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
F igu ra 4 ....A....--
A defini¢o do cho ve estrongeirc mostrodo
no Figure4.5.
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 . F igura 4 5
Umo cho ve ~strongeirc
envofvendo
0
compo
Tobelo de
Tobelo de chove estrongeiro
verifico~oo
ztxIfa1
",,1(105
composto
as valores de X significam: •
1: Se 0 prograrna aplicativo exclui uma linha da tab eia de verificacao, tambem excluini as Iinhas correspondenre s da tabela de chave esrrangeira. Por exemplo, se 0 programa de aplic acao remover 0 valor us da tabela de verificacao, ele excluira todas as linhas da tabela de chave 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 tendo esse valor na tab ela de verificacao.
•
C: E possfvel excluir da tabela de verificacao sem exc1uir as linhas correspondenres na tabela de chave esrran geira. Em out ras palavras, po de haver valores na tabela de chave estrangeira sem valo res correspondent es na rabela de verificacao,
MANDT LANDl REGIO tv\ANDT lANDl R.EGIO
mandt . I
700 800 800 800 800 900 900
I I I I r r
I I
I I I I I I I I
US Fl US GA US GA CA NS CA ON DE DE
01 01
700 700 800 800 800 900
CA ON Volores v6lido$ no clteete 7~ US Fl I~ CA NS Volores v6lidos no cliente 800 CA ON
US
GA
~
DE 01 } Volores vclldos no cllente 900
as valores de Y sign ificam :
t
•
cutros
compos
1: Hi sempre uma e, somente uma, linhana tabela de chave estrangeira 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 NOVD ....
• N: H a sempre pelo menos uma linha na tabela de chave estrangeira para cada linb a na tabela de verificacao ,
TEilID
•
A cordino/idode do relccloncmentc de cbove estrongeiro descreve , para coda valor no tcbelo de verifico~60, quonfos linbcs de dodos soa perm itidos no tabela 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 a tobelc de chcve estrongeira. X pode cpe ncs ter as vclores 1 ou C e Y pede ser 1, C, N au eN.
r
CN: Pede au nao haver Iinhas na tabela de chave esrrangeira para cada linha na tabela de verificacio.
e
A cardinalidade ndo imposta pelo sistema R/3 . Especificar a cardinalidade
e opcional e a siste ma nao verificara a cardinalidad e pa ra determiner se
1:>5
44 . ....
156
_
APREH DA EM 21 DIASABAP/4
essa atualizacao tern permissao para acontecer quan do urn prograrna em ABAP/4 atu aliza uma tab ela. A (mica vez que a cardinalidade e utilizada e quando voce cria urn objeto agregado n o DDIC.
OIH OO'T'OICTIONARY, PARTE ' I
Urn o bjeto ogregado e um cbjetc ODIC co mposfo de mois de ume fabe la. Um exemplo de urn ob jeto egr egedo e umo visua Hzot;oo.
chave estrangeira, a ripe correto de chave estrangeira sen do tipo campos/can didatos -chave. A o criar uma chave esrrangeira, voce deve escc lher carnpcs/candidatoschave se 0 campo de chave est rangeira for urn dos campos de chave primaria da tabela au fo r urn candidato-chave. Caso contrario, escc lb a campos/candidat os nao chave.
Quando voc e cria uma chave estrangeira vo ce deve especificar a cardina lidade . Se nao espe cifica-la, voce sera incapaz de incluir a tahela em urn ohje to agregado.
o sistema R13 suporta diversos idio m as e, ponanto, permice que os usuarios
NOVOlio.. lElI',O "
Iipo de campo de chove estrangeira o ripe de campo de chave estr angeira tambem deve ser especificado na mesma
Campas-chave de uma ta bela de lexla
se conectem utilizando 0 idioma de sua preferencia. Por causa disso, ...s descricoes rio R/3 sao armazenadas em rabelas especi ais dependenres do idioma chamadas tabelas de texto .
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. 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 usua rio s6 se tom o efetivo no seu pr6ximo logon.
• Campos/candidaros-chave •
Campos/candidates nac chave
• Campos-ch ave de um a tabela de texto
Campas-chave Escolha Key Fields/ C and idate s seo campo de chave est ran geira fo r urn dos campos de chave primar ia da tabela de ch ave estrangeira. Escolh a Non-Key " F ields / C andidates se nao fo r. Por exemplo, suponha que a tabela tl seja co m posta de campos fl a fl Oe qu e seus camp os de chave primaria sejam fl,; f2 e f3. Se voce fosse definir um a chave estrangeira no campo f3, Key F ields/C andidates seria 0 tipo correro, porque f3 e pane da chave primaria. Se v6ci fosse definir u ma chave estrang eira rio campo f S, Non-key F ields/Can didates seria correto, po rque f S nao eurn dos cam pos de chave primdria.
Candidalos-chave Urn condidcto-dtove e urn co mpo em urno tobelo que , por si mesmo ou em con junt;oo com outro compo que n60 foz porte do cho ve prim6rio, pede ser utilizodo poro identificor de mon eiro unico urno linho no tobe lo. Em o uiros polovros, se houver umo mo neira de selecion or umc linhode"umo tobelo sem utilizer compos de chove prim6rio, existem condidotos-chove nesso tebela. as candidatos-chove s60 os compos que noo se encont rom dent ro do chove prim6rio que podem ser otilizod os unicomente pore identjficor umo linho de mo neiro unicoi bosicc me nte e les podem se rvir como umo chove prim6 rio alterna tive .
NO VO'"
TERMO ""
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
Umo tobelc de fexto e urna tcbelc que contern descnce es 'n c lingua fa lodo' de vclo res em umo tobe lo de veohcccec. Essos descricees 56 0 ormoze nad os em v6rios ldlomcs. A chove prlrncric do tobelo de texto e c mesmo que 0 chove primcrlc do tobe lo de verlftcocec , com a edie;oo de umo colune spras (idiomo).
NOYO .....
rmlo "
Por exemplo, a tabela ztxtOOS po ssui c6digo s de patses nela. Os nomes dos palses sao armazenados em uma tabela separada chamad a ztxtOOSt (m ost rada na Figura 4.7). po rque voce realmente precisa de muitos nomes para urn c6digo de pars . Como ela armazena descricoes espe cfficas do idioma de urn c6d igo generico, ztx t 005t e chamada de tab ela de texro . 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 spr-as contem 0 c6digo de idioma e ativa essa tabela para conter uma descricao de divers os id iomas de logo n. A chave primaria de qualquer tabela de text o e compost a dos campos mandt e spras, seguidos pelo campo de validac;ao (ou campos); Urn QU mais campos de descri~ao seguem essa chave primaria. Urn relacionamento de chave estrangeira e definido em ztxt OOSt- l andl para a tabela de verifica c;ao ztxtOOS. 0 tipo de campo de chave estrangeira deve ser campos -chave de urna tabela de texto.
157
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
landl
A tcbelo de fexto pore ztxt005 eo ztxt005t. flo eo comp osto de compos
us
mandt, spros,
DE
CA
landl, landx e natio.
IT
JP AQ CC
Ta bel a 4.3 Conte udo do tobela ztxt OOSt s pras
l andl
D
CA CA
E
DE
D
DE
E
sistema R/3 que a fobe lo de chove esfrongeira e umo fobe lo de felda. Quando voce escoihe esse tlpo, a primeiro descrtcco que segue a chcve primorio e exibida no ajuda F4, no idiama de logon do csuoric. Pcrtcnto, esse tipo de chcve tem duos
D
US US
E
IT
D
IT
propriedades esped ais:
E
JP JP AQ AQ CC CC
E
Relocionando as tabe las de te xto com a ajuda F4 HOVO TIiMO ... "
•
•
Quando as linhas cia ta bela de verif icalSao sao exibidas em respcsta a uma solicitalSao de ajuda F4. 0 primeiro campo de clescrilSao da tabela de textc apar ecera na mesma lista, como se fosse uma parte da tabela
D
de verificacao. 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.
E
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 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 as linhas onde spras igual ac idioms de logon atual sao exibidas. resultado e que 0 usuaric ve as descricoes em seu idioma de logon para os codigos em
e
ztxl f al.
a
a conreudo das tabelas ztxt005 e zt xt 005t emostrado nas Tabelas 4.2
e 4.3.
E D D
lan dx Canad a Kanada Germany Deutsch' and United States
USA Ita ly Italien Japan Japan Ant arcti ca Antarcti ca Coconut Islands Kobinseln
$Cl£ENC,Ul,.... lnlcle ~ ScreenCom "Text Ta ble Demonstratio n: The Effect of the Logon Lon,. guage ogara.
1. Inicie a rransacao 5E16 (digite /nse16 no campo C ommand e pressione a tecla Enter). 0 nome de tabela ztxlfal no campo Table Name. 3. Pressione 0 bcrao Create En tries na berr a de ferram en tas Application. '
2. Digite
4. Posicione a cursor no campo Country Code {l andl }.
_,I
_______J
:
.,~'
160
APREWO A fill 21 OIAS ABAP I ~
5. Pressione a te cla F4 a u de u rn clique na seta para ba ixo no fim do ~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 as descricoes de lingua in glesa da tabela ztx tOOSt sao exibidas.
I ,
6. A gora efe tue logon novarnen te (voce nac precisa efetuar 0 logoff primeiro ). Dessa vez , digite 0 par a Deutsch e (alemao) ern Language Field de tela de lo gon do R!3,
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 alemao.
DIA 4:0DATA DICTIOHARY, PARTE 2
161
Chave s estIlmgeiros canstantes e genericas 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 amente de chav e estra nge ira . Entretanto , as v eze s, voce po de nao que rer exe cutar uma verificac jo em rela<;ao a to dos esses camp os . Em ourras situacoes, voce po de desejar verific ar em rela cio a u rn valo r constan te. Em qualquer urn d esses casos, voc e pode defin ir uma chave estran geira gen erica ou consrante.
Chaves estrangeiras genericas NOVO llr.. ltRMO"
Uma chove estrongeiro generi co e umo chove estrongeira no qual um dos 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 nco tern urn corresponde nte no tobe lo de chove estrongeira e nco porticipono venficcceo.
Criando uma tabe la de texto e uma cha ve estrangeira para e la 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 conterd os campos que utilizam os elemento s de dad os e do mini o s mostrad os na Tabela 4.4. Voce rambem ted de criar a elernento d e dados - - -1 andx. Utilize o dominio SAP existence textl5 p ara seu novo elemenro de dados. U rn x na coluna PK indica os campos que formam a chave prirnaria.
P or exemplo, dentro do ap licarivo M at erial s Management, a tabela mara e a tabela Material Ma st er. Ela com em a lista-mestr e de ma teriais utilizad os par a fabricacao e os atri buros de cada ma te rial. o programa de configuracfo p ara este livro crio u u ma tabela ztx ma ra 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
mandt spras 1andl 1 andx
x x x
mandt spras - - -1andl - - -1andx
t ext1 5
semelhonte alobe/a mara de the R/3 MaterialMosler.
,
;,
'
,
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 procedimento 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. 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 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.
""
1.-"
...t,,
;,J,.
.'
,
Ocampo ztxmara- s t of f con t em 0 numero de urn material de risco . Se 0 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 ~ :
" DIA S AB AP/ ' Figura 4 10
urn procedimento de tr atamento que exige luvas. Atualizar urn material e colocar 0 mimero 1 no campo ztxmara-stoff para 0 . mate rial ind ica que 0 material exige tratamento esp ecial com luvas.
Umo ma rco de
verificor;oo no coixo de selet;60 Generic
indicaque um compo deve ser ignorodo durante 0 verificor;oo
_1;,1",1
~z~ii;~:;;:mara !;tilj:~l:1l~:~~.F~~'E:'.~E~5j~~: ;~;;,:'0 '~~?·~
':M"; t. ~~~ , . .
~"
,..
-.,"
-
'
~
, . ' r.,~eO""'.IirJnf.:,~unt"1.. ~. d~ ~::;:[
~l',,~ ; $t.• j" '~' ~U5S · ~ ·,.-t ,,;; r,;.~: ~-··_ :
-
•
~
'f';:',;~;;'':::;:::~;;~B~~~~~;'~~ .
0 DATA DICTIONARY, PARTE 2
de chc ve eslrongeiro .
I
., i
Quando essa chave estrangeira e verificada, somente a combinaci o d e 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 A tabe la de verificacao pa raz txmara-s toff eztxmgef. A definicsc de chave est rangeira e mos trada n a Fi gura 4.10. Essa chave esrrangeira valida as valores inseridos em ztxmara- ~t~off e assegu ra que apenas num eros de tratamento validcs existem na tabela at xme re. I nfeliz mente, regu lamentos d e rratam en t o podem variar de aco rdo com as regioes geogrd ficas. Por tan to , a chave primariade : t xmg e: compo_sta de sto,f:, r eg; a e 1andl .Entretanto, ztxmare n ac ccntem qUalsquer informacces geograficas - essas informacoes en contram -se nas ta belas da fabrica. 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 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 posicao n ao exis t em em ztxmara e nao imporram para essa validacao . Basta saber que 0 mimero de t ratamen t o espe cial especificado existe. Nesse relacionamento de chave estrangeira, os campos reg ia e lan dl na chave primdria de zt xmqef estao sendo ign orad os. Para garantir que esses campos serao ignorados durante a validacao, d es sao definidos no re lacionamento de chave esrrangeira como genericos. A rnarca de verificacao na caixa de selecao Generic n a tela Create Foreign Key faz isso.
e
HOVO.... Chaves es/-rcngeiras canstonfes sao chcves estrang eiros compostos em que um 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). Por exemplo, imagine que voce p recise criaruma nova t ab ela de fabricante ztx lfalus como ztxHal contendo ap en as os fabri cante s dos EUA, mas, par razoes de compat ibi lidade, voce quer que des tenharn exa tamen te a mesma estrutura que ztxl fal. 0 c6digo de p ars nessa rabela semp re se ra.us. Vo ce po de criar uma chave estrangeira constante para restringir os valores na tabela ztx lfalus. Urn exemplo da definicao e mostrado na Fi gura 4.11.
Chaves estrangeiras odopto dos NOVO.... TtRMO~
Nem lodos as compos de choveestrangeirode uma chcve estrongeiro composta precisomresidirno mesmatabela . Se eles nee residirem, ISSO econhecido coma uma chave estrongeiro adaptodo. Par exemplo, assumo que a c6digo de pols para a 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 clteroric 0 compo de tobelc de verificalioo de 1andl para zt xl f al cc-l andl [ve]c a Figura 4.12 }. A vohdcceo no compo reg i a verlflcor io se a ccmbincceo de mandt e re g; 0 existia em zt xt 005s e se 1and1 existia em quolquer Hnha de ztxt 005cc.
163
.
...
~
'!' '!' '!' 11 !!f 'I' .. 'I' ... .. .. .. ... ... ... • ... ... ... ... 164
"II!" •
-- --- w w
_
'W
- -- -- - - - - - -
DIH 0DATA DICTIONARY, PARTE 2
APR!NDA! M21 OIlS A BA P / ~ Fi gu r a
4 11
o compo
pots como umo chove estrongeiro ccostonte.
Sempre que voce cria urn relacionament o de chave esrrangeira, 0 sistema olha no campo de rabela de valor. Se houver u rn nom e de tabela af, ele propoe esse nome como a tabela de verificacao. 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 familiarizado 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 normalm 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 verificacao primeiro. A principal fina lidade de voce erial' uma tabela de verificacao e validar dad os. Voce pode erial' diverscs relacionamencos de chave estrangeira vinculando muitas outras tabelas com uma unica tabela de verificacao. 0 campo Value Table no dominio existe para simplificar a taref a de erial' esses relacionamentos. 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.
Fjg ura 4 12
Exemplo de
umo
chove eslrongeirc odoptodo .
ztxtOOS
Fi g u r a 4 13
a compo Value Tobie
Defini nd o um a tabel a de valor 11010
ll.
Dentro d o domlnio esta 0 cc mpc lobe/a de volor. A tobelo ldentificodo den tro desse compo oferece a s segu intes fun<;6es para 0 do minic :
•
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), mas nac oferece validacao
URIIO"
-
tcbelc de verifico~oo
dentrodo dominio contern 0 nome de limo tabelo de verincolioo. Elemento de dodos
Domlnio
'165
0111 t 0 DIITA DICTIONARV,PARTE 2
166
167
'mHO' EM 21 OIAS "AP"
Quando voce cria uma tabela de verificacio, voce deve primeirc criar um dominic. Voce sempre criaria urn novo dominic especificamente para uma tabela de verificacao . Voce entac criaria 0 elemenro de dados e depois a propria tabela. Dar, ativaria a tabela. Entao, voltaria ao dominic, no campo de chave primaria, e colocaria 0 nome da tabela de verifica~io que voce acabou de eriar no campo Value Table-mas lernbre-se de que 0 chamamos de campo Default
1. Comece na Dictionary: Initial Screen. 2. No campo Object Name, digite 0 nome da tabela ( * * *Hal ). 3. Escolha 0 batao de opc;ao Table. 4. Pressione 0 boco Change. A tela Dictionary: Table/S t ructu re: Change Fields e exibida. 5. Posicione 0 cursor no campo de ch ave estrangeira (' andl }.
Check Table.
6. Pressione 0 botao Foreign Keys ria barra de {erramentas Application. A tela Change Foreign Key e exibida. 7. Pressione 0 batao Delete (a lixeira) na parte infe rio r da janela .
utilizariam 0 mesmo dominic. Agora voce criaria a chave estrangeira para validar 1andl. Voce colocaria 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 de que a chamamos de campo Default Check Table) . Se houver urn nome de tabela af, 0 sistema automaticamente ira propor esse nome como 0 nome da tabela de verificacao . No nosso ceso, 0 sistema localizaria ztxt005. Portanto, 0 sistema iria propor ztxt005 como a tabela de verificacfo - exatamente 0 que quererlamos . A pro posta de chave estrangeira seria mosrrada, e entao po-
8. Voce e levado de volta a tela Dictionary: Table/Stru cture: Change Fields. A mensagem Foreign key was deleted apar ece ri a barra de
Agora, voce criaria Dutra tabela, no nosso exemplc e ztxl fal. Voce criaria ocampo 1andl e utilizaria o elemento de clades ztxl andl e entdo as dais campos
deriamos salva-la. Nesse exemplo, 0 sistema automaticamente criou a chave estrangeira para nos, porgue colocamos 0 nome da tabela de verificacfio no campo Value Table. Dando tres cliques de mouse, criamos uma chave estrangeira! 1sso, em essancia, ea principal razjio para 0 campo Value Table. Ele existe para fazer a criacao de chaves estrangeiras mais Iacil. Para resum ir, 0 campo Value Table sistema:
e utilizado
de duas maneiras pelo .' '"
• A tabela de valor {lembre-se de imaginar a Default Check Table) automaticamente e proposta como a tabela de verificacao quando se cria uma chave estrangeira. • A tabela de valo r ofe rece uma lista de valores para a ajuda F4, mas nenhuma validacao e feita nesta lista.
o campo Value Ta ble como proposta de Check Table
Nessa se~ao,.voce adicionara uma tabela de valor para urn dominio e observarf seu efeito na cria~ao de uma chave estrengeira. -E dite urn domlnio _. -Landl agora e digire ** *tOOS no campo Value Table, ativando depois 0 dominio. Agora voce excluira a chave estrangeira no campo - * *Hal-landl e entao a criara novamente de modo que voce posse vel' 0 efeito do campo Value Table no processo de criacao de chave estrangeira. Para fazer isso, siga 0 procedimento abaixo.
status. 9. Com 0 cursor ainda posicionado no campo de chave estrangeira (1 andl), pressione a batao Foreign Keys novamente. A tela Create Foreign Key e exibida. Ela Ie Foreign key does not exist. Generate proposal with value table as check table? Voce ve essa caixa de men sagem porque 0 sistema olhou no dominic e localizou urn nome no campo Value Table. Ele responde exibindo essa caixa de mensagem. 10. Pressione 0 batao Yes. A tela Create Foreign Key eexibi da e 0 campo Check Table contem a tabela de valor do domlnio. O s campos Check Table e-as campos Foreign Key sao pre enchidos. 11. Pressione 0 borao Copy. Voce e levado de volta a tela D ictio nary : Table/Structure: Change Fields. A mensagem Foreign key was trans ferred aparece na barra de status. as campos Status exibem 0 texto Rev; sed e Not saved . 12. Pressione 0 botao Activate. A mensagem "was saved apare ce na barra de status. as campos Status Ieem Act. e Saved. Com urn nome de tabela no campo Value Table no do min ic voce po de rapidamente e com confianca erial' chaves estrangeiras.
Redescabrindo a cal una de CheckTable A coluna CheckTable na tela Dictionary: Table/Structure executa duas func;6es: • Se urn campo for urna chave estrangeira, a coluna CheckTa ble con tera o nome da tabela de verificacao para esse campo. •
Urn asterisco (*) nesra coluna significa que uma rab ela de verificaqao nao foi definida para 0 campo, mas uma tabela de valo r exisre no domfnio.
"': I. It t.1Jt:I,X::X:XI" I . II 168
w • w w
w .. DlA~ : 0DATADICTIONARY, PARTE 2
APRENDA EM21 DIAl AB AP,.
O s campos m onetarios tern esses requisit e s:
Hoi uma excecao para 0 segundo ponto acima. Se voce atualmente est iver exibindo um a tabela de valor, 0 asterisco DaD aparecera no campo cujo dominic se refere a tabe la de valor qu e vo ce esta visualizando.
• 0 ripe de dado no domlnio deve ser CURRo • 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 canaden ses}, ITL (lira italian a) e assim par diant e.
Ulilizando a labela de valor como uma lisla de possive is va la re s Se urn campo con tiver uma tabela de valor mas DaD for uma chave estrangeira, quando esse campo aparecer em uma tela nenhuma valid ?t;;ao sera [eira no campo. A tabela de valor nao executa a validacao. Som enre uma chave es-
A chove mone t6rio e con hecido como comp o de refe r@:ncio Trata se de outro ccmpo no mes rno tobelo au em outro tabela. Esse co mpo d'eve ter-a fipo CUKY (chove mon et6rio) no do mfnlo. Ele indica a chove monet6rio pa ra a campo monet6 rio relere nctcdc.
NOVO ~
n~\O r
trangeira valida as valor es. Com apenas uma ta bela de valor, urn seta para baixo nao apa recera no fim do campo como acontece para urn campo de chave est rangeira. Entretanto, se voce colocar 0 cursor no campo e pr essionar F4, a tecla F4 ainda exibira uma lista de valores da tab ela de valo r. N ee hi nenhuma indicacao na tela de que a funcional idade F4 esta dispo n fvel t: nenhuma verificacao efeita se urn valor for
Por exemplo, imagi ne que voce criou uma t abela contendo uma [ista de pagamentos feitos aos fabricantes. Voce precisaria de um campo de quantidade de p agamento (nome de campo wrbtr) e urn cam po- ch ave monetaria (normalmente waer s) para indicar completarnente a qu an ridade e a chave m onetaria utiliz~das nesse pagamento. Para vincular as do is campos entre si, voce dari a urn clique duplo no nome d e campo monetario na tabe la e entao inseriria a tabela de chave m one raria e a nome de campo no s campos Refe rence T able e Reference Field (ve]a a Figura 4.14) .
inserido no campo . Essa fu ncion alidade pode ser uti! quando voce qui ser oferecer ao usua rio uma lists de valores sugeridos, mas quer permitir que OUtrOS valores sejam digitados no campo tambem.
l
Campos especiais de Tabela Dois ti pos de campos de tabe la precisam de tratamento especial : •
os campos m on ect rios
•
as campos de qu antidade
•...;'"
O s campos mooet6rios NOVO ~ TtRMO "'-
Imagine que voce qu eira ir 00 ba nco e pedir 1.000. 0 coixa provave lmenle 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
Elg ll r a 4 14
Os compos de referen cio no lela Display Field.
~!! i~ ; !t! ~~;.. ?~t'.'im1(= _JLt-¥;'\"t~'.! N~j~ ~· -=-2~, ,, ;.- ·;,)5 !i' -!~!:J . , :1
8;' ~ ,~
-
-.~
H' ~ {) ~
-~ ~ '-·:i~l.:H>·~~~'-i~~\(~2~·, C
169
I.J
., I· ~~~~~~--------------lHf! .os ca mp os de qu-oanoIlti.od.o .ou;dlfeL..NOYO....
milo r
Urn compo de quantidode
_
e urn compo qu e contem umo medido n.umerico. Por
exemplo, esse compo pede conter uma medid~ de peso, co~pnmento,. tempe 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 quantidod e tern estes req uisites :
P
li
rl ~I
OIH 0DAnOICT10NARY, PARTE 2 Figura 4 16
Esses soo os o/ributas de compo poro 0 compo ntgel'f. Note que cs dois compos
Reference Tobie e Reference Field ofere~m 0 vInculo
perc
•
0 tipo de dado no do min ic dev e ser QUAN.
•
Ele deve estar vinculado a urn campo do tip o UNIT.
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 (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 de refe rencia e ztxmara e a campo de referencia e gewei (veja a Fi gura 4.16).
0
compo UNIT.
t
~
~
.>
As estruturas no Data Dictionary NDVD ....
TWO '"
Alem dos tobelcs, as esfruturos tcmbem podem serdefinidos no Data Dictionary. 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.
I
17
APRENDA EM 21 DIAS ABAPI4
11-----~~~ DIA 4: 0 DATAOlCTIOHARY, PAm2
• Nenhum atributo tecnico pode ser especificado, como classe de dados, caregoria de tamanho a u usa de buffer.
I
Entendendo Includes 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 manutencao agrupand o campos juntos em uma estrut u ra e enrac inclu indo essa estrutura dentro de outra estrutura ou mesmo dentro de uma tabela. 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 mante r esse endereco em diversas tabelas. Dentro da tabela do fabricante voce 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 uma estrutura para agrupar os campos que juntos formam 0 en dereco, voce 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 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: zt xemp l -stra's; zt xempl - ortOl. ztxempl reqt 0 e zt xemp1-1andl.
NOVO ...
A codeic de estrvturos cricdo incluindo umo estrvturo dentro de outro ' h d r b 1codeio de indudesoA profundidode maximo de oninhomento • no e c ome ,0 od . •
TEi.UO
.~ :j,'
Eigur g 4 17
A tcbelo de z t xemp l ccntem um • I NCLUDEpora fazer com que os campos de ztxaddr seiom odicionodo s a ela.
!~ "
1
1... 'r.
It · 'd 1: diE· it ' ~:bo. j/Moo ' ~ ~ ..... ~
; ::" :' ''';~~;'''' '_,; ; __<.1 -'".:t~. _.,:
. ;,
-(.~~.,.
.,,,,,., ... ?"-:: "
::::::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_.
'iI' j ~
~~~~i~=~~i~II ~~!~:~~i1~;~~1t:flwt~~~~~tie;f2.t~~~~~:: . ...:u.~ du~"f~~~"PU~l tn1lt.(~.";~.tr~u~tb"
Nhl .'
~ ~?>-<~':.J,
"!io''; .• " ", _. ; :--
il.... ; n .-.: ~~' : UU >,d'.".' .1n~ l-~,t~ · ~~u"rnl l " '~"l;:.t ... t~ -'-',* \ :"': : _~ -O. , ".:..k'\""'::'o'"'::r.:-!i£,.:.,,: ~ ,t o;,
e
ve e sc me nte
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. .E.ig.1l..l:.a..-':
1a
A estrufuro z t xaddr contem as compos de enderel;o que sea induidos no tobefo
°
e
a i ncl udes expandida dentro cia definiicao cia propna . . ta beIa, JhPara visualizar . ~ 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 • INCLU DE, como mostrado na Figura 4.19.
ztxemp l.
I
j I
, j
i
I
II
Flgut a 4 19
o formulcirio . [ NeW-XXX do tabela z t xemp l inclui 0 in strv~6 o de modo que ztxoddr posso ser incluido duos vezes sem dup/ic:or os names de compo.
.'.,,><1
17:
174
APRENDA EM 21 DIAS ABA P/4
'''I
FigurQ 4 21
Indui nd o a mesmo estru tu ro d jyersos yezes Vo ce pede incluir a mesm a estrutura diversas vezes dentro d e urna tabela se, em vez de . INCLUDE, voce utilizar .1NCLU- XXX. 0 xxx representa sua escolha de quaisquer [reS caracreres . Esses treS caracte res serao acr escen cados em cada nome de campo que e inclufdo para roma-lo unico. Por exemplo, imagine qu e voce precise armazenar dois enderecos em 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.
51
if &hi ei"lt4E
if ·L._.
. _'3 ; ~
"1, 1,,1
c- --; "· I-~,.~~';' >;.', · ."\-":'t::"''''''-=.>l./:- -:>t:~,'';r:-...l''_ '' ¢o 4: 'Xn M'rt . t~l ~ E'-- -~ -{ {.;~<~~~•._;--;;:~~: ,::.: ~
;.1... l llt.li'" EJIo. ·LlI'io' £~ ~
Escolhe r 0 caminhode menu
Ilolo 7 ~-:,:;r
Ex/ro-> Substructures- >
Expond AllSubs!f. fez os compos des estrutvros oporecerem no lisle.
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
Resumo
ztxoddr po sso ser inc/uldo duos vezes
• A s chaves est rang eiras asseguram a integridade de dados execurando validacoes n a tela e oferecem ajuda F 4 para 0 usu i rio co rn Iisea de valores pe rmissfv eis.
sem dup/icor 05 nomes de. compo .
•
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 descricoes no R/3 e especialment e p ara ajuda F4.
,i
'!
•
Ii
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 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 determine r quo l v oce estc olho ndo, olhe 0 direito do compo de nome . N voce v ere ume tobelc Transporent ou Structure.
• Voce p ede utili zer est ru tu ras para de finir areas de trab alho ide nricas em divers os programas. Voce p ode incluir uma est rurura dentro de -outras est ru turas e tabelas.
i
I
I
1
-y 176
r...
_ !
" " ' D' EM ' 1 DIA l " ""
P&R
o o
Urn programa em ABAP/4 ped e ignorar relacionamcntos de chave estrangeira e inserir Iinhas que violarn a integridade referendal? 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 u suario valida as infcrmacoes antes de voce inseri-Ias no banco de da dos, po rtanto chaves estran geiras ja foram verificad as.
o
Nao. Apenas Key Fields Of A Tex t Table empr ega fu ncionalidade de sistema. a s outros nao [azem nada acontecer - eles servem prin cipalm enr e para documentacao.
o
As estruturas podem ter definicces de chave estrangeira?
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. Se quiser, voce pode desativar essa heranca ao incluir a estru-
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 inte gridad e re feren cial sim ulan do sessoes de u su drio e passando as dados ao programa via in ter face. Entr etanto , se vo ce atualiza
o banco de dados sem passar as dad os pela interface com
o
as seguintes exercicios darso a voce pratic a na cri acao de chaves estrangeiras, campos esp eciais e estr uturas.
0
usufrio, seu p rogram a ern ABAP/ 4 deve ser escrit o cui dad osam ence de mo do que ele Dao tr ansgri da a integridade
o
Workshop
Teste
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?
Se quero garantir a integridade referendal de meu banco de
2. Qu al e a sintaxe para inclusao cia estrutura zs l dent ro cia tabela ztl?
dados, posso ir para 0 nivel de DBMS e criar Iimitacoes de integridade? Como isso afetaria 0 Rt3?
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 do banco de dados. Se voce atu alizar 0 banco de dad os rtia~ua1 mente, as defini coes de banc o de dados e as definicoes de DDIC do R/3 serso inconsistences e os resultados serao imprevisfveis.
3. Q ual e a prap6sito de urna tabela de texto ? 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 primaria de uma tabela de rexro para zc? 5. Se voce cria urn campo mcnetario, que tipo de campo ele deve
referenciar?
Exercfcio 1 e rie uma tabela de veri fica~ ao de co digc de pals charnade ••• toOS. Ela sera . utilizada para validar todcs os codi gcs de pajses inse ridos em suas tabelas. As especificacoes aparecem na Tabe1a 4.5.
o
Se exc1uo uma linha de uma tabela de verificacao, possa fazer com que as linhas que tern 0 mesmo valor sejam automaticamente excluid as da tabela de chave estrangeira tambern?
o
Nso. Esse recurso e normalrnen te definido clusao" e D aO esta disp onfvel no RJ3 .
Descri~ao
o
o ti po de ch ave estrangeira Key Fields Of A Text Ta ble faz com
Nome de campo
que 0 sistema se com porte diferentemente. Os outros tipos de campo de chave estrangeira tern qualquer funcionalidade par tras deles?
Cliente
"cascara em ex-
Tabela 4 .5
as ca mpos e sues corocterfsticas pera a tobela
mandt Chove do pafs 1andl
•• -tOOS
PK
Nome de D E
x
mandt
x
•• -1 andl
178
"RENDA EM!1 DIAl ABAPI4
DIU 0 DATA rncnoNARI. PARTE!
Depois que voce ativou essa tabela, va ao domfni c •• - 1andl e digite • • - tOOs no campo Value T able, entao ative-o. Utilize SE16 para adicionar c6digos de parses asua tabela.
e rie uma tabela de verificacao de c6digo de pais:chamada • • • t 005s. Ela sera utilizada para validar todos as c6digos de parses ins eridos em sua s tabel as. As especificacoes aparecem na T abela 4.6. Tabela 4 .6 Os campos e'sues ca raderistices pare a tabela • • · tOOSs
mandt
PK Nome
Nome
de DE
d e OM
Tipo
Len
Tabela de verificD ljOO
Cliente
mandt Chove de-pels landl
x
mandt
x
··· l andl
x
• ··regi o
x
• •• ct t yc
- - -tOOS
C6dig o de reg ioo
rect o
Descriscio
C liente
Descri ~ a o
N om e de camp o
Exerdcio 2
Nome de compo
Ta bela 4. 1 O s ca mpos e sues corocter fsticos para 0 tobelo •• 0t 0059
•• 0
t OOSs
C6digo de cidod e
PK
Nome de DE
,
mandt
x
. 0 -Jendl
x
_. -regi o
Ta bela de
v e r ifi ca ~a o
citye
•• - ci tyc
CHAR
4
Nao se esqueca de criar os relacion ament c s de chave estrangeira nos campos land1 e regie.
Cbcve de pais
, andl
••• t005
C6di go de regioo
regio
Depo is que voce ativou essa tabela, va no dominic - - - regi 0 e digite • - - t 005s no campo Value T able, entao ative-o. U tilize 5£16 para adicionar . c6digos de regijo para sua rab ela. Teste sua chave esrrangeira em 1and! rentando inserir urn codigc de pars invalido. ,.'
Exerdcio 3 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 exist ences dentro de - - - 1fa 1 e insira ccdigcs de paises vslidos de regiso.
Exerdcio 4 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 canter uma lista de c6digos validos de cidade. As especificacces para ela aparecem na Tabela 4.7.
Exercfci o 5 Depois que voce ativou a tabela, va ate 0 dominio ••• ci tyc e coloque • • ·t005g 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 c6digos de pais e de regiao invalidos. Entao erie a ehave estr angeira dentro da tabela • - - knal no campo ct t yc e utilize 5E16 a fim de adieionar clientes para - - - knal. Teste 0 relacionamento de ehave esrrangeira rentando inserir c6digos 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. Ta b e la 4 .8 05 compos e suos caracterfsticas pa ra ta be lo
0
••
tDOSh
Descri~ cio
N ome d e campo
C1iente
man dt
PK
,
Nom e de DE
N om e d e OM
Tlpo
Len
Ta bela de verifl co~ac
mandt
Chcve de idiomo
spras
spras
tOO2
Chcve de pols
l andl
x
• • • , andl
•• otOOS
x
.0.reg1 0
.00t005s
C6digo de regioo
re qt o
179
180
I
DlA ~ : O DA.TA Dl mONA RY, PARTE 2
APRE NDA EM21 DIAS ABA P/4
Exerdcio 7
Tabela 4.8 Connnuocdo Descrit;ao Nome
PK
de campo
Nome de D E
Nome
Tipo
Len
Tabela de ve r i f i ca~a o
de DM
C6digo de cidode cf tyc
x
• • -t005g
···cityc
Descrtcco
bezei
I
·· ·bezei 20 text20
CHAR 20
Adicione mais dois campos para a tabela ••• knal. As especificacoes sao m c st radas na Tabela 4.10. Tabela 4 .10 Compos odiciono is e sues coroderistic as para ta bela ••• knal
Descrisao Nome de cempo
.Nome de DE
Nom e
Tipo
Len
Decimal
de DiY".
Tahela de verifi(a~ao
li mite de Credttc
o relacionamento de chave estrangeira no campo ci tyc deve ter 0 Foreign Key Field Type "Key Fields Of A Text Table". Utilize SE16 para criar descricoes para cada codigo de cidade. erie essas descricoes em dais idiomas: 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 de cidade devem aparece r na lista, mas some.nte em seu idio ma at ual de logon. F aca 0 logon em elemao e teste novamenre para ver as descricoes em alemao.
Exercfcio 6 erie uma est ru tura chamad a - - - t el . As especificacoes apare cem na Tabela 4.9. , Ta b e la 4 .9 Os campos e sues caraderisticas para estruturo - - -tel
Descr isao 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
~I :J
telxl
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 .
cr editl
• ·· cred it • • · creditl CURR
12
2
C hcve monet6rio
waers
waers
tcurc
Ocampo eredi t 1 cont era 0 limite de credit c do cliente. 0 campo waers contera a chave m onetdria pelo qual 0 limite de crediro ser valido. Nao esque~a 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 no e1emento de dados. 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 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 cnou.
181
• • • • 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 esperando 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
~_
0" s,oDATA OICTIOHARY,PARTE 3 I
APUNDA EM 21 DUS ABAPI4
examinar minuciosamente a tabela do inicio ao fim procur and o todas as linhas onde 1and1 ;: ' US' . A tabela na Figura 5.1 e muito pequena, mas esse e urn processo que consumiria mu ito tempo em uma tab ela maior.
Imagine que voce agora co loco u as pdginas de volta na ordem. Procurando aleatoriarnente no livro recentemenre ordenado, talvez vo ce co mece a procurar a psgina que desc reve 0 SE16. Po r cnde voce cornelia a procurer? Voce nao sabe a numero de pagina, entac olha 0 tndice remissivo. Este contern as palavras m ais importantes classificadas em ordem alfabetica. Voce rapidamenre encontra SE16 no Indice e cbtem urn mimero de pagina. Lltilizando isso, voce pesquisa 0 livro para localizar essa pagina. Para criar um Iodice, 0 editor duplica informacoes importanres e entao as classifies, colocando-as no fim do livro, separado do corpo. Quando voce olba essas informaco es, esn olhando nas informacoes originais ? Nao, e claro . Voce esta olhando em uma c6pia das informacces originais; elas foram duplicadas. a livro ocupa urn pouco mais de espacc em sua estante por causa do Iodi ce, de aumenta urn pouco 0 prelfo do livro por causa do tempo e esforc c exigido para crid-lo, mas nioguern se queixa disso, porque economiza muitas horas quando voce quer localiaar alga. Uma tabela no ban co de dados emuito parecida com esse livre. Para cada linha e dado urn nurnero sequencial quando uma linha e adicionada a uma rabela, de manei ra mui to parecida com urn numero de pdgina. As colunas importantes sao copiad as em urn Ind ice e c1assificadas de maneira seme Ihante a urn Indice remissivo. Para localizar qualquer parte dos dados, a sistema pesquisa primeiro 0 Indice para encontrar 0 mimero de linha e enesc rapidamente localiza a linha. Cada tab ela do R/3 tern urn Indice primdrio construfdo na chave primaria 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 informacoes-chave sao classificadas e copiadas no Iodice, junto co m urn pon· tei ro na linha o riginal, A Figura 5.1 mostra urn exemplo utilizando a tabela ztxlfal. Os dados do campo 1Hnr em ztxlfa1 sao capiados no indice, classificados alfabeticameme e arrnazenados junto com 0 numero da linba original. (0 campo mandt foi deixado de fora para simplificar 0 exemplo.)
o
Figura 5 1
Urn indice de lobe/a Ii
ormozenodos em ordem clossifjcoda com pan/eiros para as linhos originals.
I'
.,
, "
'I
.,I
J
II
)
LI
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. Agora, suponha que a instru)ao select * from zt xlfal where landl ;: I US I foi executada. 0 .in dice e c1assificado por 1i fnr, nao por 1andl . A coluna landl nao esta em qualquer ordem especffica na tabela. 0 sistema tera de
,
nOdo
,
I"/nr linho .1 .2 3 .3 1 7 .5 6 .6 2 .7 S
.,
1
2
.3 .6
, ., 3
.2
5
.7
6 7
.s
.,
Ag ora, pense novamente no exemplo de livre . As vezes, urn livro tern m ais de urn Indice . P or exempl o, urn livre sobre ut ilizacces med icinais de ervas p od e ter 0 Indice normal, alem de urn Indice somente pa ra nom es comuns de planta, o urro apenas para nomes de boesnica e urn terceiro apenas para efeitos medicinais , Para crier esses indices, as informacoes pr ecisam ser c1assificadas e duplicadas em mais tres lugares no final do livre. En eso, ha quatco maneiras de localizar urn numero de pagina rapidamente: por meio do Iodice comurnente utilizado ou por -qualquer dos tres indices adici onais . . ~ 0 fndice comumente utllizcdc e on61090 0 0 Indlce prim6rio de umo tobelo. Os rIt~O indices cd icloncis s60 cnclcqos 0 indices secund6rios. Para suporter uma clc vsvlc where em um campo de chove n60 prlmc ric, pode-se definir urn lndice secund6rio. Umo tobe la pede fer multiplos ind ices se cund6rios.
MOYO
e
Quando a inStru)ao select * from ztxlfal where 1Hnr :. '0000001050'
Icbe'e mile I
pe rc m Ho 1
umo c6pio de umo au mcis ca /unos
numero de linho infernomenle otribuido pelo bonco de dodos ; voce nunce 0 ve no ODIC. Ele e utilizodo pe lo indice porc opon tor de volta para a linno original, do qual as dodos vierom.
eexecutada, 0 sistema reconhece que ha uma 1i fnr ja classificada em urn indice
IndIce primoria
,I
r
A Figura 5.2 ilustra urn indice secundario em ztxl fal-l and!. Urn indice aumenta 0 desempenho tremendamente. Em uma tabela comendo urn milhao de linhas, urn select em uma coluna comendo valores unicos que nao sao suportados por urn indice leria, em m edia, 500.000 registros para localizar a primeira correspondencia, com uma visao pessimista de urn rnilhao de compara~6es. Se voce adiciona u rn indice, 0 sistema pode utilizar urn algoritffio billario 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 mais rapido. Por essa razao, deve assegurar que oscampos em urnacUusula where 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 urn indi ce secundario. .
185
. .,5 , ..'" E1.gurQ 5 2
Indice prim6rio
Tobelom lfo1
Urn Indice
seclJnd6rio permite que voce
pesquise ropidomente
em outros co/uno!> o/@m dessos no chove prim6rio.
,
n.O do
., ,
nnr
.2 .3
.,
linho
,
,
linna
limr lond1 .3 US .6 CA
2
7
, .,.2
.5
6
2 5
.7
n." do
n." do
3
.6
indice secvr.dcirio em lond l
3
5 6 7
US
.7
DE DE
.5
CA
.,
US
lendl linho
CA CA
DE DE
US US US
1=." Wi ,l
Fig mQ 5 3
"1._
..-., "","
ztxlfal e
co mpos la petos
, ,
campos
mandt
e
londl .
5
If '
"
~ '
~':_'~'-""" " '''',~_':'!'''' ' ~ ~ ' '''' ~._ ,. ' "':'
l"'I,
3.~ C.AIX : ~ H U · n
secundorio no lobe/a .~ t-I '8t :".._ -,,·~ ,~; :_'. ~:::.;.;.: -: . ~.,.. : <.
2
6
S_ · IWIl ·.,... ·~ ·
.
(,F
. t"j xl
, ay A H
. ..... (. ' .... 1MOO
o in<!ice Z
.ne
.oC", :_:~-"~'~"":" :10:>-..:" _'1.:""-.f'"7"" ~~ ' ",:.T. -, ,~- .~.
~~~i~;~~§j;~~;~~0r:;:·; :.~ ~~./~5 '.
3 7
Exibin d o ind ice s Cada Indice em R13 tern urn unico para tres idenrificadores de caractere, ou id. Iodice primfrio sempre tern urn id de 0 (zero) . Urn id de Indice secundario pode ser qualquer Dutro n umero ou urn caractere alfabetico .
a
_.__ "" ........_...... ... ~
SnE EN(ij ~ Inicie a ScreenCam "How to Display Se-condaryIndexes" agora.
I
l
I I"
I'
i
Para exibir os ind ices secun derios existentes em uma tabela de banco de dados, siga este pro cedimen ro:
1. Exiba a tabela. 2. Pressione 0 borao Inde xes. " na barra de [erramentas Application. Se voce nso vir esse batao , sua janela pede estar mui to estreita. . Alargue-a a u escolha
0
caminh o de menu Goro-> Indexes. ~.~..
3. Se existirem indices secundarios, sera exibida uma Iista dele;-em uma caixa de dialogo. Se D a O existi r nenhum, sed'exibida uma mensagem. 4. Para exibir urn deles, de urn clique duplo nele . 0 Jndice e exibido na tela ABAP/ 4 D iction ary: Ta ble: Display I ndex, como mosrrado na Figura 5.3.
o status do Indice eexibido no campo Status. A existencia do Indice no 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 no banco de dad os. 0 nome de indice no banco de dados efo rmado peIo nome cia tabela, seguido po r su blinhados e depois pelo id do Indice. Na pane inferior cia janela, esrdo os campos que abrangem 0 Indice . A ordem de ripe do Indice ~ a mesma que a ordem d e campo.
...,..
---:..;. ~
..
~
~
~ "'. -·=.;;-_ ~
. . _l
_
a
procedimentc precedence somente mc strara indices secundsrios . 0 Indice na chave p rimfria (Indic e 0) DaO aparece nessa Iista . smENW~ Inicie a ScreenCam "How fa Display All Indexes" a gora .
Para exibir todos as indices, incluinde
0
primario, siga estes passes:
1. Exiba a tabela. 2. Escolha 0 caminho de menu Utilities->Database Utility. A tela ABA P/4 Dictionary: Utiliry for Database Tables e exibida. 3. Escolha 0 caminho de menu Extras-c-Databa se Object- s-D isp lay. U rna lisca de todos os campos na tabela e exibida e embaixo deja esd. uma Iista de eodos os indices com seus camp os, incluindc 0 Indice O.
Considero<;6es NOYO ..... TtU.O "
00
crier lim Ind ice
Urn Indice pede co nsisfirern mois de um campo. Pa r exemplc, construindo urn 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. Quando existem multiplos indices (urn prim6 rio e urn ou mais indice:; secund6rios), 0 RDBMS ufilizo urn otimizador para selecionar a melhor. Para escolher urn Indice, 0 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
indice s e MANDT Se urna rab ela comeca com 0 campo mandt, seu s indices tambem devem com ecar com esse campo. Se um a tab ela comelja com mandt e urn Indice nao, 0 ot imiaado r pode nao ut ilizar 0 Ind ice. 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 executada, 0 SQL real enviado ao ban co de dad os e select *" fro :n ztxlfa l where 0 mandt = sy-mandt e 1andl ;: 'USI • Sy-mandt contern 0 cliente atual de lo gon . Q uando voce seleciona Iinhas de uma tabela utilizando Open SQL, 0 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. Quando voce cria urn indice em uma tabela con tendo mandt, tambem deve incluir ma ndt no Indice. El e deve vir primei ro no Iodice, p orque sempre aparecera p rimei ro no SQ L gerado. No resta nre dessa discussao, par ta do pressuposto que mandt esra inc1uido em todos os indices.
Codifique um Sel ect para utilizer urn dado indic e
NOVO ....
Sevocecodilicc sel ect *" from ztx lfal where regia" ' MA ' , precisa haver urn indice iniciondeemmandt e regi 0 para cssegurarque 0 otimizodoroutilize. 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 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 localizer uma ccrrespondendo em regio. Uma vorreduro de intervolo de indicej ! umo busco seqcencol por uma porte de um fndlce.
Tn.ll.O ~
ind ices se letivos e a efic6c ia do fndice Se a clf us ula where cont iver mais campos que 0 Indic e, 0 sistema utilizara 0 Indi ce para esrreitar a pesquisa. 0 sistema entao leri os registros da rabela e os varrera p ara localizar corr esp ondencias. Par exemplo, se urn Iodi ce for comp 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 e F2==2. Ele lera esses regisrros da tabela para saber quais tern F3=3. Portanto, 0 Indice sera apenas parciahn en te eficaz. Ele teria mais eficacia se contivess e todos os campos: Fl, F2 e n .
NO VO.... TWlO ~
Qual 0 grau de efic6cia do fndice com F3? Depende do moneirocomoos dodos distribufdos no fabelo. Se a combina<;ao de F1 e F2 for muifo especifico (ou 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 do fndice durante as atua l izo~6 e s de tabela. Se a combina ~oo de Fl e F2 resultar no sele<;oo de um grande nvmero de linhas da tobelo, a Indice 1"160 estoro muito seletivo e adicionar F3 provovelmente oumentora 0 desempenho e reduzir6 a consumo de recurso. 500
D~
s.o DATA DlenOHARY, PARTE 3 J 189
Ao criar ou modificar Indi ces, rente nao utilizar urn camp o que ji esn em urn deles. Ha uma chance, quando urn programa pree xist ente for execurado, de que 0 otimizador va escolh er 0 novo Iodic e e urn programa preexisrente po de tornar-se mais lent o.
Diret rizes para crior urn Indice Via de regra, siga estas diretrizes quan do voce criar urn Jndice: • Nao ren te adicion ar indices desnecessarios. Per gunte-se como voce pode esc rever a ccdigc para utilizar urn Iodice existen te. • Tente evitar indic es que se sobrepoem; em outras palavras, evite in cluir o mesmo campo em multiples in dic es. • T en ce fazer indices mu iro seletivos, mas nao inclua camp os que au mente m a seletividade em apenas poucos nfveis.
H6 um maximo de 15 indices secundc rtos pe r tcbelc permltrdcs pelo
R/3.
Cri o ndo urn Iodice secun da rio S(REEHCAM~ Inicie a ScreenCam "How to Create a Secondary lodex" agora.
Para criar u rn Indice secundario:
1. Exiba a tabela.. Voce deve comecar na tela Di ction ary: Table/ St ru cture: Di splay Fields. 2. P ressione a batao Indexes. . . na barra de ferram entas Application (ou escolha 0 caminho de menu Gorc-e-Indexes. . .) 3. Se os indices secundsrios ja exisr irem, uma lisra deles sera exibida em uma caixa de dif logo identificada como Indexes for Table xxxxx. Para criar urn Indice, pr essione 0 ba tao Create. A caixa de dialogo Create Index se ra exlbida. 4. Se nenhurn Indice secundaric exisrir, voce nao veri uma Iista de indices. Em vez disso, vera a caixa de diaIogo Create Index imediatamente. 5. Insira u rn id de fndice no cam po Index rD. Os indices de cliente dev em comelja! com You Z, embora 0 sistema nao imponha isso. 6. Pressione 0 botao Continue. A tela ABAP/ 4 Dictionary: Ta ble: Maintain In dex e exibida . 7. No campo Short T ext, digite uma descri~ao do fndice.
I AP RENO A EM 21
eus ABAP/4
D1AS, OOATA DlCTJONARY. P" IT3 I
8. Na coluna Fl d Name, digite os campos que 0 Indi ce deve abranger na ordem em qu e eles deve m ser classificados. 9. Se os valores nesses cam p os, quando reun idos , devern ser sempre un icos, facsa uma marca de verificacao na caixa de seleclo Unique Index. 10. P ressione 0 botao Save na barra de [erramentas Application . as valores nos campos Status sao ago ra Newe Saved e di retamente aba.ixo deles c mensagem Does not exi s t in t he database aparece. Tarnbern aparece a mensagem Index xxx to table xxxxx was sa ved na p arte in ferior da janela na barra de sta tu s. 11. Pression e 0 batao A ctivate na barra de ferramentas Application. 0 sistema gera a SQ L e envia pa ra 0 RD BMS, criando 0 Iodice no banco de dados . Se bem-sucedido, os eampos Status exib em Ac t 1ve e Saved . e, ebaixo dos campos de status , aparece a mens agem Exists in t he 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 success fu l ly activated. na barra destatus. 12. Pressione Back. A t ela Indexes for Tabl e xxxxx e exibida. 13. Pres sione Cancel para retorn ar a tela Dictionary: Table/S tructure: Display Fields. Voce aprendeu a criar urn indice secundario. O s indices melhoram a eficiencia da insrrucao sel ect.
Se voce fizer umo morco de verificoC;ao no coixo de seleccc Unique Index, c ccmblnoccc de compos no indice eseguromente fundomen tal; 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.
e
Excluindo urn Ind ice secund6rio S(mNUM~ Inide a ScreenCam "How to Delete
a eabela, entao vo ce nao pcders excluir n enhu m. Se cs indices secondaries ja existire m, uma lista deles sera exibida em uma caixa de diilogo chamada Indexe s for Table xxxxx. 3. De urn clique dupl o no indice que vo ce quer excluir. A tela ABAP/4 Dictionary: Table: Display Index e mostrada.
4. Pressione 0 batao Display < - > Change na barra de [erramentas App lication . A tela alterna pa ra mod o de alteracao e 0 titulo da tela e ABAP/4 Dictionary: Table: Maintain Index . 5. Esco lha 0 caminho de menu Ind ex- > Delete. A caixa de dialc gc D elete Index D efinicion aparece p edin do para coofinn ar a solicitacao de exclusao.
6. Pressio n e 0 batao Yes para excluir 0 in dice. Voce e Ievado de volta a tela Dict ionary: T able/Structure: D isplay Fiel ds . A mensagern Index xxxxx deleted aparec e na barra de status. No pass o seis, pres sionar 0 botao Yes faz com que 0 Indice seja excluido do banco de dad os. Ao rer ornar a tela Dictionary: Table/ Structure: Display 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.
Deterrni no n do qual ind ice est6 sendo utilizodo Quando uma instrucao sel ect eexecutada, a oti mizad or tenta escolher 0 indice 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?
~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.
Para fazer isso, voc e pode utilizar a ferramenta de rasrreamento de SQL. 0
Secondory Index" ogoro .
Para excluir urn Indice secundario: 1. Exiba a rabela. Voce deve comecar na tela Dictionary: Table/Structu re: Display Fields 2. P ressione 0 borso I nd exes. .. na barra de [erramentas Application (au escolha 0 caminho de menu Go to->Inclexes . . .) . Se voce vir a .caixa de dialogo Create Index, ne nhum Indi ce secundario existira para
S(RHNUM~ lnlce 0 ScreenCom "How to Use SQl Troce to Determine the IndexUsed" ogora . Para dererminar qual Iodice esta sen do utili zado por uma instrucio se lect: 1. erie urn pequeno programa em ABI\.P/ 4 que contenha apenas a ins trucao select. Antes de prosseguir, tesre-o pa ra certificar-se de que funciona.
191
192
DIAs,oDATADlcnDHARY,PARTE ' I
I APREHDA EM 21 DIAS AW l'
2. Abra esse programa no modo de edicsc pan. que ele esreja promo e espe rando para ser execu tad o.
15. D igite %s c no camp o Co mm and e pressione a tecla Ent er. A caixa de
3. Abra uma nov a scssa o utilizando ate sessron.
16. Di gite 0 no me da tabela que voce esta rasrreando no campo Search For. (Essa e a tabela identificada na instrucao sel ect em seu programa em ABAJ.'/ 4.) ,
0
caminho de me nu Syst em- > C re-
4. Execut e a tra nsacio STOS (digit e I n stCS - zero-cinco, e ndo O -cinco - no campo C o m m and o u esco lha 0 ca m inho de m en u System -> Urilities->SQL Tra ce) . A tela T race SQ L D atabase Requests
e exibida.
dialcgc Find e exibida..
17. Pr essione 0 bono Find. V ma lista de resultados de pesqui sa devers ser exibida com seu nom e de tabela dest acado.
e levad o de volta a tela T ra ce SQ L: List Database Requ ests. Seu cursor e posieionado na primeira linha qu e co ntern seu nome de tabela. A direi ra dele, na coluna O peration, deve estar a palavra PRE PARE , OP EN ou REOP EN.
18. D e urn clique no primeiro nome destacado da tabela. Voce
5. Se a caixa T race SQL Starus Information exibe Tr ace SQl is switched off, va para 0 passo 7. 6. Nesse p ontO, a caixa Tra ce SQL Status Information con tem Trace SQ l switc hed on by, seguido pelc id de usua ric qu e ativou 0 rasrreamento e a data e a ho ra que fo iiniciado. Voce deve altern a-lc antes de poder prosseguir. Se 0 rastreamento foi iniciado dent ro da ultima hera, e pcssrvel que ainda este]a sendo utili zado . Ent re em con tat o com 0 usufrio indicado ou rente novam ente mais tarde. Se 0 rastre 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 desligar 0 rastreamento, pressione 0 bono Trace Off. A mensa gem na caixa Trace SQL Statu s In fo rmation agora dev e ser Trace SQL is switc hed off. 7. P ressio ne 0 botao Trace On. A caixa de didlogo Trace SQLDatabase Requests eexib ida. 0 campo DB -Trace for User deve center seu ID de usua rio. Se seu ID de usuario nao estive r nesse camp o, insi ra-o agora . ~_::.' 8. Pressione 0 botao OK. Vo ce e levado de volta a tela Trace SQ L Database Requ est s e as informacoes de sta tus exibem Trace SQL 'switc hed on by. indicando qu e voce ligou 0 rasrream ento. 9. Aherne de volta para a janela que contern sua sessso de editor (aqu ela com seu programa esp eran do para ser executado) . 10. Press ione F 8 para executar seu programa. (Apenas pressione F 8, nao fa~a mais nad a, nem mesmo p ressione 0 bo tio Back.) 11. Quando seu programa t iver side execut ado e a ampulheta nao estiver mais sendo exibida, alt em e de volta ajan ela de rastr eam en to. 12. Pressi one 0 botao T race Off. As inf ormacce s de status leem Trace SQL is switched off. 13. Pression e 0 ba tao List Tra ce. A caixa de diilogo T race SQL Database Requests e exibida. Os campos nessa tela jacon terao os valore s. 14. Pres sione 0 botao OK. Vo ce pode precisar espe rar urn pou eo, no maximo doi s minutos. A tela Trace SQ L: List D atabase Requ ests e exibida.
19. P re ssione 0 bcrac Explain SQ L na barra de ferr amen tas Application. A tela Show Exec ution Plan for SQL Statement e exibi da. 20. Role para baixo ate exibi do em azul.
0
plan o de execucao. 0 Indice utilizado sera
Voce aprendeu a executar urn rastr eamen to de SQL Isso ajudad. voce a determinar qual Indice esd. sendo urilizado.
Exibiodo coofig uro(;oe S fecoicas P ara exibir as configuracoes tecnicas de uma tabela, exiba a tabela e pr essio ne o botac Technical Settings na berra de ferrame n tas Application . (Se 0 bo tac na o estiv er af, sua janela pode estar muito estreita. T en te alargar sua janela ou utilize 0 cam inho de m enu G orc-e-Technical Settings.) Para modificar essas co nfiguracoes, pression e 0 bor ac D isplay <-> C hange na barra de [erramentas Application. A tela ABAP/4 Dictiona ry : Ma in tain Te chnical Settings eexibida, como mostrado na Figura 5.4.
Closse de dodos A cosse de dodos determino a tablespoce 0 que 0 fobelo e ctribuldo. (0 termo "tcbt espoce" se cplico 0 bancos de dodo s Oracle. Pora lnformix, substituo pelo termo "'DBS spa ce"'.) Um tabJespoce e um orquivo fisico no disco que e uttlucdc para crmczencr tcbelcs . Coda tc belc eotribuida a um toblespoce. As tabela s com corocteristicos seme lho ntes nc rrnc lmente sao agrupoda s em urn tab lespace, ossim toblespcces sa o as unidad es a dministrotivos utilizada s pelo DBA pa ra gerencior 0 ban co de dodos. Pa r exernplo, a s tobelas que cresce m rcp idomente esto roo ogrupodas em urn toblespoce em urn disco com muilo espo<;olivre.
NOVO'"
TftÂťO ~
Ca da classe de dados tern urn tablespaee associado. Quando voce ativa uma tabela. ela e criada no tablespac e associado a essa c1asse de dados. Se voce alte ra a elasse de dados quando a tabela est a ativa, oada aco m ece; ela nao se move para outro tab lespace .
193
.w.. 194
w.w.w • • • • •
---~-----D1A5: 0 OATADIITIONARY,PARTE 3
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
"" .' '''
No telo A.B.AP/4
,. 195
Alem de ssas categories, p ode haver classes de dados USER tambem. Estas 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
.- ~-~.~~;~ .~.,~~.: .".<:~) ,~~~%~.~\,~,~,
i_~ 'i~i'f.;"'!$C~~?" ?*;~~~n'::.l :I~W-ID'; ~:;- l:, :)'~ :;" '; .:1:.-t(,9,~~§·f~:;;:'
*~""-'~~~::j;.~;r~.~ ' "·~··"~~~i{~l:ll~
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 espera dos em carla categoria de tamanlro mudare de acor do com cede tabela baseada n o co mprim ento de uma linha. Esco lha uma categoria apr o pr iada baseada no numero m aximo de registros qu e voc e espera que a tab ela arm azen e.
.....,. ~--"':.;.,.:..~~~
As classes de dados imporrantes sao: •
~o
Q uando escolher umc ca teg orio de tomonho, se jc ge neroso . No R!3 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 clccccec inicicl, 0 RDBMS oloco outra extenseo. Extens6es seccn dcrlc s redvaem 0 dese mpen ho e exigem uma reorqc nlzocec do lable spoce para sere m remcvidos. As reorgcnizocoes podem se r muito diflceis de banco de do dos g rond e, especiolmente e m urn que · executo r e m exijo a lto disponibilidode. t muito mois focll reduzir uma ca tegorio de tom onho excessivome nte qeneroso do que ournentor umo subestimodo .
e muito
APPLO au dados-mestres . Escolhendo APPLO (dados-m est res) , signifies
que a tab ela nao e atualizada com freqeencia e cresce lentamente. Ela sera colocada em urn tablespace com tab elas semelhanres. 0 mestre do fabricante e as tabelas-mes tres do cliente sao bans exem plo s de , dados -mestres.
•
APPLl ou dados de transaoio , Escolher APP LI (dados de traqsj.<;ao),
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 contem essas ordens terao uma classe de dados de APPLl. •
urn
dodos de personalizacso. Escolher APPL2 (clados de personalizacao), significa que 05 conteudos cia tabela sao determinados am es da implementacio e njio alteram com frequencia depcis disso . As tabelas de verificacao e suas tabe1as de texto associadas, como ztxt005 e ztxt OOSt , sao bons exemplos de tabelas que devem ter uma
APPL2 OU
classede dados de APPL2.
Exibindo 0 numero de extensoes alocadas para umo tabela Voce po de exibir a ndmero de extens6es aIoca das para uma tabel a ut ilizando a seguinte proce dim ento.
smENCAM.... lnicie "
a Scree rrCom "How to Display the N umbe r of Extents Used by a Icble"
a gora.
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 perc ba ixo no fim do compo Doto Closs e ernoc press ionondo-se a 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, par exemplo, as roforrrocees de Doto Didi on o"ry e a c6 digo·fonte do progromo.
pressione a tecla En ter.) A te la Database Performance: T ables and Indexes e exibi da. 2. Pres sione 0 bctao D etailed ana lysis. Uma caixa de dialogo Memory Ma nagem ent: T ables and Indexes e exibida.
.*•.
wwww •• ww • • • _ • • ~-- -
~ ~ DIA 5:DDATADICTIONARY, PARTE3
APRENDA EM 21 DIAS ABAP/4
3. Digite
nome cia tabela no campo Tables e pressione VIDa tela M emory Management: Tables and Ind exes nome de tabela apa rece ria lista. 0
0
batao OK.
e exibida. 0
•
4. De urn clique duplo no nom e de tabela. Uma caixa de dialogo Memory Management: T ables and Indexes eexibida. 5. Selecione 0 ba tao de opcao Extents. 6. Pressione
botao OK. Uma tela Memory Management: Tables and Indexes e exibida, contendo a Iisca de exrensoes, seus nomes de tablespace, n umeros de extensao, mimero frsico de arquivc, tamanho de bloco, tamanho de extensao e mimero de blocos na extensao. Ha 0
um a linha nessa lis ta para cada extens ao. Voce aprendeu a exam inar 0 numero de extensoes alocadas em uma tabela. I sso informara se a t abela p rec isara ser reorganizada au nao.
lliiJi za ~ii Q
de buffer em um a tg be lo
Como mencionadono Dia 1, as dados podem ser colocados no buffer na RAM no servidor de aplicat ivo. Isso e contro lado individualmenre e especificado nas configuracoes tecnicas para cada tabe la {veja a Figura 504). Sempre que uma instrucao Open SQ L e utilizada para ler urn regis tro, 0 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~ : RAM no servido r de aplicativo em buffers de dados. Mais tarde, se esse registro for lid o novam ente, ele sera lid o atraves do buffer, em vez do banco de dados. Urn diagrams desse processo e mostra do na Figura 5.5. Elg ll r g 5
no
CD
5
Os dodos podem ser colocodos no buHer
Progromo em
WI. do servidor ABAf'l4
do oplicotivo.
sendo exeectcdc em um procl!SSO de trcbclbc
(2)
Colocando os dados no buffer, voce aum enta maneiras significativas:
0 prccessc de trobolho verik o 0 buffer perc ver se es dodos eslo o ui. Se nco esuverem.
ele obtl!lm 05 dodos do banco
0
desempen ho de duas
Os programas que udlizam os dados no buffer sao execut ado s mais rapido porque eles nao precisam esperar as informacoes chegarem do banco de dados . Isso reduz os arrasos d e espera pelo ban co de dados e a rede que as conecta.
• Os outros programas que preeisam acessar a banco de dados sao executados mais rapido porque hoi men os carga no ba nco de dados e menos trafegc na rede. Colocar uma tabel a no buffer pode fazer com que uma sel ect execut e 10 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 inteiramente na RAM, assim 0 especc e limitado pela qu antidade de RAM 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 acc nt ece urn overrun em urn buffer, ele pode fazer troca (swap) para 0 disco, que pode apagar qualquer desempenho ganho pela utilizacao de buffer. As tabelas contendo tipos de dados numericos ria ehave primaria nao podem estar no buffer. Os tipos de dedos numericcs -de DDIC sao CURR, DEC, FLTP, INTI, INT2, INT4, PREC e QUAN.
A trcnsoceo 5T02 exibe buffers e estctleflcc de usc. No tela Tune Summary, os buffers de dodos sao chcmodcs Generic Key e Single Record. Urn clique duplo em coda umc desscs liohas exibir6 umo analise detclhcdo. A partir del, os cbietos no buffer podem ester exibidcs pressloncndo -se 0 botoc Buffered Objects no borro de ferromentes Application.
o
e
consultor de Basis 0 responsavel par monitorar a s buff ers e evitar que a falta de buffer tome lema 0 sistema. Antes de utilizar bu ff er em u ma cabela, e uma boa ideia conversar com seu consultor de Basis.
de dodos e
o®
preenche
0
buffer.
Acesscs subseqiienles leem os dodos do buffer.
Sincronizac;cio do b uffer 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.
197
~ . Y W W W W W W W W
198
W . W W W . W . W
••
•• •
--
_:w:
~
__
~
__
Dl's,o DATADICllDN'RY, PARm
mEHO' EM 21 DIAS·"AP"
Por exemplo, como mo strado na Figu ra 5.6, supo nha que 0 usud rio 1 esteja conectado ao servidor de aplicat ivo 1 e 0 usuaric 2 esteja conectado ao servidor de aplicarivo 2. 0 usuario lIe 0 registro 1. 0 registro 1 e colocado no buffer do servidor de aplicativo 1. N a Figura 5.7, 0 ususrio 2 Ie 0 registro 1. 0 mesmo registro esta agora n os buffers dos dois servidores de aplicativo. . Na Figu ra 5.8,0 usudrio 1 atualiza 0 regiscro 1. A atu aliza cao e refletida n o banco de clades e no s buffers do servidor 1, mas 0 regist ro an tigo aind a esd no serv ido r 2. Uma entrada e feita no log de siruronizaoio n o servid or do banco de dados indicando que 0 registro 1 foi atualizado. "F i g u r a 5 6
Posso A 0 usu6rio J Ie 0 registro J,
fozendo com que ele seio colocodo no buHer no seNldor de oplicolivo J"
--
l egendo: AS: Servidcrde oplicotivo DB5 : 5ervidorde banco.de dodos SP: Processo de sincronimco c
-'
L!o====...J I
I
199
I !
11 j
fig u r g 5 8
Posso C: 0 usucria J oluolizo 0 regislro de J, fozendo com que ele seio otuolizodo no banco de dodos e no buffer do seNidor do oplicotivo 1.
SYNC lOG
. ..
I
Na Figu ra 5.9,0 usuario 21e 0 registro 1. A versjio auriga do registro 1 e 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. . N a Fi~ra 5.10, a processo de sincronizacao de buffer detecta que 0 l~terval? de_ smcroni~a(jao expirou e com elSa a sinc ron izacao. Ele Ie 0 log de smcromzacao no servidor de banco de dados e determine que 0 regist ro 1 esta fora de sincr onizacao. Ele entao marca esse regist ro como invalido no buffer. Ele ainda ndo atua liza 0 registrc n o buffer do banco de dados.
I SYNC lOG
1
REC 1
I
Fi g u r a 5 9
Possa D:
0
usuorio2
Ie 0 registro I e obtem 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
II
• 200
!
HREND" EM71 DIAS ABAP/4
Na Figura 5.11, 0 usuario 2 Ie 0 registrc 1 novamente. Dessa vez, 0 regis tro 1 foi marcado como invalido no buffer, entao ele e buscado do banco de dad os, atuali zando assim 0 buffer no servidor de aplicativo 2. 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, cada processo de sincronizacao ver ifies 0 log para ver se quaisquer clados que esrejam colocados no buffer fo ram modificados. as dedos modificados sao marcados como invalidos no buffer. Da pr6xima vez que as dados forem lidos ,
I ,f
DIA 5: 0 DATAD10IONARY, PARTE 3
!
! I
Para checar, uti lize a transaclo RZ10 como a segu ir:
I
• Inicie a transacao RZ10 (digite /nrzlO no campo Command e pressione a recla Enter). A tela Edit Profiles e exib ida.
I
i
• Escolha 0 caminho de menu Gcto-> Profile Values-> O f a Server. A tela Active Application Servers e exibida. • De urn clique duplo em urn servidor de aplicativo. Voce vera urna Iista de todos os valores de paramerro de perfil par a esse servidor. • Digite %sc no campo Command e p ressione a tecla Enter. A caixa de dialogo Find e exibida.
eles serao atualizados a partir do banco de dados . 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 lista,
buHer involido 0 registro J no buHer
do servidor de 2.
oplicoijvo
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 F: 0 usv6rio 2 tenlo reler 0 regi slro J rue s tile esrc morcodo como inv6Jido no
buHer. 0
registro
Posso A a usu6rio 2 Ie 0 regislro 1, fozend o com q ue eJe sejo colaco do no
buHer no seNidor cia oplicofivo 2.
entoo e atuolizodo do banco de dodos.
DBS Fl
F2
[ATI]
201
_. O~ 5.00ATAOlcnONARY. PAR1E '
202
203
APm" EM 21 01 AS ABAP I'
Utilize bypassing buffer no insfru~oo se lect quando voce prectsor de
MOYO.....
a usuario 1, agora querendo atualizar 0
registro 1, bloqueia-o e 0
le (veja
a Figura 5.13). . usudrio 1 altera Fl, escreve -o ao banco de dados (veja a Figura 5.14) e
a
destrava-o. 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 eo le (do buffer), altera F2 (veja a Figura 5.15) e entao salva-o no banco de dados, as alreracoes feitas pelo usuario 1 serao perclidas [veja a Figura 5.16). E.ig..urq 5 13
UiMO"
informccees mais atua lizodos, par exem plo, select * fram zt xt lfa l by0 buffer seic ignora do e 05 dodos sejcrn lidos diretomente do banco de dodos. Voce deve utilizer issc se mpre que estlver Jendo para aNalizar, lsto e, lendo urn registro que ser6 otuchr odo e gravo do de volta no
pass; ng buffer. Fozendo isso, voce consegue que
bc nco de dados. Figura 5
15
Posse D: a usuario 2 Ie 0 registroantigo I e o bloqueio.
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
I
A
F2
I
DBS F1
B
F2
w::u F igura 5 16
DBS Fl
F2
IA IB
Posso E: a usu6rio 2 salvo 0 registro J no banco de dodos, grovondo par cimo do o ltero~aa do us u6rio.
F igu ra 5 14
Posse C
0
usu6rio 1
registro de J, fozendo com que ele seio oluolizodono banco de dodos e no br.Jffer do servidordo oplicotivo J. 0 bloqueio e removido.
otuorizo
0
ler
0
Por exemplo, no passo D, se 0 usuario 2 utili zou bypass tnq buffer para 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
o bypa ss do
buffe r para otualjzo~6es oferece melhor equilibria entre seguron<;o e velccldcde. Entrelonlo, se voce puder fer certezo de que todes as atuolizo <;6es seroc [eitcs em urn cnlcc servidor de oplicctivc,
nCio prectscrc codihccr pore fczer bypass do buffer. Seu byposs toma lentc a proc esso de otuolizm;ao urn pouee, porque um ccessc de bonco de dodos e exigido . Se voce preciscr de quontidocle m6ximo de
velocidade pa ra otocllzocoes e puder fer certezc de que openos um servidor de oplicotivo ser6 utilizodo, esso cltemctlvc pede funcionor po ra voce. Converse co m seu consultor de Bosis perc sober se issc pade ser providenciodo .
Resumindo as abor dagen s de utllizccco de buffer com atualiza ~6 es Hs eres abordagen s de urilizacso de buffer para tabelas que podem ser atuali zadas. N a ord em do m elhor p ara 0 pior desempenho, elas sao as segu in tes : • U tilize buffe r na tab ela, DaO use bypass 1ng buffer e assegure -se de qu e to das as atu alizacoe s foram [eitas a partir de urn unico servidor de
. aplicarivo. • U tilize buffer na tabela e use bypassing buffer.
• Nac utili ze buffer na tabela. Se uma tab ela sera atu alizada com freqaancia, nao utilize a abcrdagem bypas si ng buffer. C arla atualizac;ao fad. com que os buffers em todos os outros servidores de aplicativo sejam recarregados na proxima sincronizacio. Nesse caso, a utilizalSaOde bu ffer realmente pe de aumentar 0 trffego total de rede e~ vez de diminuf-lo. ~ ." ",/
Buffering Not Allowed em umo tobelo SAPslqniflcc que voce nee deve onvcr 0 cclcccccc desso tc belo no buffer. Se fleer isso, voce pode cou sa r umo operc ce c fcltvel dos oplicofivos do R/3 e tolvez perdo ou corrvp¢ o de dodos.
Tecn icos de
uti liza~ii o
de buffer
A met ade inferio r da tela Techni~a1Se ttin gs {mosrrada anreriormente na Fig ura 5.4) conrem as controles para configuracoes de buffer. Ao criar urna tabela, voce tern controle complet e sabre essas configuracoes. Para alterar essas configuracoes em urna tab ela de SAP. voce precisa obrer urna reels de modificac;io da SAP . Voce pode configu rar a utilizalj:io de buffer para uma tabela quando voce 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.
Esses rres bcroes de opc;:ao ativarn e desativam a utilizacao de buffer: • Buffering Not Allowed
• Buffering Allowed But Switched Off • Buffering Switched On Escolha Buffering Not Allowed se nao se puder usar buffer na rab ela, 0 que ocorre no seguintes casos: • 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 sistem as de controle de te mpo real como movirnentos de mer cad ori a em armazens . • Os registros da tabela sao atualizados com a mesma frequencia com que sao lidos. fazendo com que a urilizacjo de buffer seja inad equada (veja a seguir).
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 minutes. Njo se esquelj:l1 que esse larencia nao existira quando atualizar dados porque voce codificara bypassing buffer para cbter as ul~imas informa coes. utiliza~iio de buffer Como mostrado na tela Technical Settings na Figura 5.4. rres ripos de utilizaci o de buffer sao possiveis:
Tipos de
• Comp leta
• Generics • De regis tro unico Embora voce utilize uma caixa de selecao para indicar 0 tipo de utiliza~ao de buffer) somente urn tipo pode ser selecio nado por vez. Se voce escolher m ais de urn, uma mensagem de erro sera exibida. Ha dois buffers de dados em cada servidor de aplicativc e a ripe de utiliza~3o de buffer escolbido det ermine qual buffer sera utilizado. Em urn servidcr de aplicarivc hi: • 0 buffer de registro generico •
0 buffer de regisrro Unico
o buffer de registrc generico echamado TABL (abrevia~ao para "tabela") . o buffer de registro enicc eTABl P ("pn significa "parcial-).
205
-=------206
lPHNOl EM 21 OIl S ABAPI4
Ut il iza~ao
DIAS, DDATA DICTIONARY, PARm
de buffer completa
Para ativar 0 tipo de utilizaci o de buffer completa, fac;a uma marca de verificac;oio na caixa de se1e~ao Full. Quando ~ feita uma tentativa de ler os dad os de uma tabela com utilizacio completa de buffer, 0 sistema exam ina 0 buffer TABL para ela. Se ele nao for encontrado af, todasaslinhas serao carregadas do banco 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 no buffer se a tabela Olinda DaD estiver al ou se ela estiver invalidada devido a sincronizacao de'buffer. E gura
Todescs linhes de
TBI REel
ume lobelo com
ulilizor;60 comp le/o de buffer s60 corregod as em
TABLP
TABL
5 17
REC2 REC3 REC4
TABl
I~ Select ' from I'D1 where...
TB I Technical Setting5: .-
o
"
/' Full Buffering
-,
./
Se umo instrul700 seledonada e executod o, ma s mcitc s vezes nee enconfro dodos no tcbelc, a utiJizol700 complete de buffer aindo pade toma r 0 ocess o a tobelcs mots eliciente . Como 0 tobelo lntelrc estc no buffer, 0 sistema pede de terminor se os registros exlstem a ntes de ir 00 banco de dod os, a ssim ele evitc urn ocessc de ba nco de dod os porn e ncontra r as dodos .
Utiliza~ao
ge nerica de buffer
C om a utilizacao generi ca, urn grupo de regisrros e carregado em TABL em vez cia tabela int eira . Para at ivar esse tipo de utili zacao de buff er, falia uma marca de verificacio na caixa de selec;ao Generic e colo qu e urn numero n no s No. of Key Fie lds de m odo que os n campos a esquerda da chave prirnaria agruparac regist ros . Qu ando urn registro e lido e n e 1, todos os registros con tendo 0 mesmo valo r no primeiro campo de chave primaria sao carr egados no buffer. Quando urn registro e lido e n e 2, t odos os registrcs contendo 0 mesm o valo r nos primeiros dois campos cia chave primaria sao carregad os no buff er. Isso e ilusrrado na Figura 5.18. Figura 5 18 Ufilizo¢ o generiea de buHer. n deve ser menor que D num ero de campos no chove prim6ria.
TABl C I 1 C 2 C 3
TABlP
rec4 ..05 re , 6
TB I
RECl REC2 REC3 REOI
o
Select' fromtb1 where f1 = 'C ~
carregamenro de TABL nao ocorre com as instru coes sel ect s tn ql e: somente sel ectJendse 1ect faz isso. Se a tabe la estiver com utilizacao completa de buffer e um a instrucao sel ect single for execurada, n enhum registro sera carr egado ern TABL. Enrretanto, se a tabela ji estiver carregada em TABL, select 5 i ng1e [er fi os regis tros de la. Durante a sincronizacio de buffer, a tabela inteira einvalidada se qualquer registro dentro dela se aiterar. D a pr6xima vez que dado s fo rem lidos, ;I. tabela 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 ztxtOOS, ztxtOOSt, ztxt005s e ztxt005u. devem t er u tiliza~ao co mpleta de buffer. Elas sao configuradas com urn conjunto inicial de valores validos e d escrj~6es, e raramente sao mo dificadas dep ois .
f'--TBI F1
\
•
~i
A B C C C D D
/ F2 1 2
I 1 2 3 1
2
reel ree2 re,3 ree4 fecS rece ree7 recS
TB 1 Technica l SeMing5:
12] Generic Buffering Number of Field5:m
---
Em outre exemplo, suponha que voce escolha a utilizacao generics para a tabeIaztxl fal e configure N o. of Key Fields com o 1. Como o primeiro campo e mandt. todos os regi str os para urn cliente sao carregados no buffer de uma vez.
207
:1 ,..1 .,i:
:I·" '
!
1
__ ...
' W ' ~ _ ~
208
__
"RENDA 1M 21 DIAS ABAp/'
ous.o DATA maiDNAR!, PAm 3 FI g u r a
Se voce especthccr vtilizOliOO complete perc ume fobelo dependente do cbente {tendo rna ndt no primeiro coluna}, 0 sistem a autome ticcrnente a utilize gen ericomente com n igua l 0 1. Isto e, quando um registro elida, cpenos as registros que tern 0 mesmo neme rc de diente sec ca rrega da s no buffer. Voce noo pod e ver issc refletido nos configurolioes tecnlcos: elos cc ntinuom a indice r utilizaliQO complete. lsse simplesmenle ocontece "nos bosndcres" .
TABL
5 19
TABLP
Com c ulilizo¢ o de buffer de regislro
,
I I1I
unicooti'lodo,
",3
~
selec.ione regish'os de corregomenlounico de ume vez porc 0 bufferTABLP.
I
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 par a registros do mesmo grupo. Po r exernplo, se urn usuario efetua logon em ingles, e muito prova,:el que sornente descricoes em ingles sejam lidas por esse 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 do idioma) como os primeiros dois campos . Portanto, a uriliza cdo generics de buffer com n iguaI a 2 eapropriada.
r-; TBl F1
A A
~ F2 1
,
2
C
I
1
reel ree2
,«3 reca
./
TS1 Technicol Settings:
0
Single record Buffering
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 que 0 bu ffe r TABLP seja p esquisado pelo registro VI. Se ele e encontrado ai, essa c6pia e utilizada. Caso comrfrio, e carregada em TABLP a partir do ban co de
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 utilizOliQO gen erico, se voce ccobc corregondo 0 moioric dos hnhcs de ume tcbelc e e los sao co rrego da s em muitos grupos pequeno s, urno tcbelo colocodo completa me nte no buffer ser6 mais efkie nte.
dados.
. '
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 de dados . D a pr6xima vez que esse regist ro for solicitado, a bu ffer p ode sec utiliza do p ara resolv er a solicitacao e urn acesso a banco de dados nao sera necessa rio . 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 nao existe no banc o de dad os. Da pr6xima vez que 0 fabr icance Xl for solicitado, o sistema exam ina 0 buffer.e desccb re que nao exisre e nao pr ecisa ir ao banco
D urante a sincronizagdo de bu ffer) se um a tabela' for colocada no buffer genericamente e urn registro estiver invalidado no buffer, todos os registr os no grop o tambe m serjio invalid ados. A pr6xima leitura de qualquer registro n esse grupo fara com que 0 grupe inreirc seja recarregado.
Utilizac;ao de buffer de regi stro unlco Co locando uma marc a de verificacao na caixa de selecsc Single Records, vccs ativa a ut ilizacao de buffe r de regist ro dni cc. Co m esse ripe de utilizact o de buffer, se l ect s1ngle seleciona urn registro no buffer de registro Unico TABlP, como mostr ado na Figura 5.19. Com esse tipo de utiliza~ao de buffer, os regist ros sao apenas colocad os no buffer quando a instru ~ao select s i ngle e execuuda. Sel ect/ends el ect nao carrega nern Ie TABlP.
de dados.
A u~iliza~ao de buffer de registrc unico e apropriada par a tabelas muito grand es em qu e uma por cent agem pequena dos registros e lida com freqiiencia. Para a utiliza~ao de bu ffer de registro unico funcionar, os registros devem ser 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•
.
209
• • • • • • • • • • w __ .. __ 210 , .lPRl:ND.l EM
21 DIAS ABAPj4
DIAl, DlllTADlmDNARY,PARlIJ
Durante a leirura, se lect somente Ie TABl ; ela ignora TABlP. A inst ruci o select s ingle Ie os doi s buffers. Es se comporramento e resumido na Figur a 5.20. Lembre-se de que urn regist ro somen te pode estar em urn buffer de um a vez po eque um a tab ela ape nas pede t ee urn tipo de urilizac ao de buffer. FlgurQ 5 2 0
Bufferde reg istro:
Como 05 instroC;6es seledonodos interogem com as
buHers.
Buffer de registro unico
generico
Select Single
Select
SOMENTE
CARREGA E LE
lE
CARREGA E lE
NAO lENEM CARREGA
Perc limper 0 conteudc de TABl e TABlP, digite I Sta b no ca mpo Com mand e pressione c teclo Enter. Voce ped e cttlbor esse metcdc depois que desativa r 0 utilizo~cio de buffer pora limpor os buffers cotes de testor a d iferenc;o de desemp enho de um prog rama. Note que issc pode dlmlnuir 0 desempe nho do sistema, em gerol olll d uos ho ros, ate que as buffers sejam novo mente preenchldcs.
Subsfituicco do buffer Se lASlP esdver compleca e urn novo regisrro precisar sec car re gada, os antigos serao jogados fora para dar eepacc aos novos. Os mais antigos sao aqu eles que ha mais t empo estao esperado se r acessado s. Em l ABl, os registros antigos nao sao desc art adcs qu ando os nffVos sao carregado s. Em vez disso, tabel as in teiras sao periodic amente descarregadas do bu ffe r. 0 com primen to de te mpo ent re descarreg ar e quais tab elas 'sao descarre gadas e det erminado par urn algori t mo de cache den tr c d o R/3. Esse algoritmo com plexo e baseado na quantid ade de espas:o utilizado por uma tabela no buffer versus 0 numero de acessos de leirora oele no pedodo anterior e t ambem Daquantidade de espa~o livr e disponlvel no buffer e na qualidade atu al de aces so do buffer.
Dec idindo se
e ne cessa rio utilizo r 0
o obje tivo da utiliza~ao d o bu ffer ere duzir 0
buffer
numero de leituras de banc o de dados e a qu antidade de td .fego de rede do banco de dados para os servidores de aplicativo. As ses:6es a segu ir listarao cenarios com tabelas de utilizas:ao de buffer que DaO sao atualiza das, junto com utiliza~ao de buffer e inclexa~ao.
Ta be las de utilizac;ao de buffer que ndc sec otualizad a s Se uma tabela e aces sada co m frequencia mas rae atualizada co rn frequencia, 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 nao houver e sua tabela for acesseda com frequencia, e po ssivel aumentar a quantidade de RAM alocada para os buffers. Altemativamen te, o urra t abela acessada com menos frequencia que a Sua pode ser alterada, de m odo que nao seja mais colocada n o buffe r. Ulilizo~ii o
de buffer e indices
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 para posicionar regisrros em uma rabela. Entrerant o, in dices secunddrios ndo sao criados no buffer, tampoucc indices secundarios de ban co de dados sao utilizados para acesso a dados colocados no buffer. Portanto, quando codificar uma instrucao s el ect. . . where em uma tabela colocada no buffe r, utilize campos de ch ave pri mari a na cldusula where comecandc com 0 primeiro campo 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 where (nao ccntando mandt), uma varre dura complete da tabela no buffer sera execu tada . P o r "exemplo, se a rabe la zt xlfal foi colocada completam en te no buffer, sel ect * from ztxlfal onde lifnr = ' Vl ' sera supo rt ada pelo Indice pr imdrio do buffer. Select * from ztxlfal where la ndl '" ' CA' causara uma varredura complera da tabela no buffer. Ser in cap az de utilizar in dices se cundarios resulta em um a p ecul iar situa~ao sem safda, se voce utilizar buffer de modo complete em tabelas grandes que tem indices secundarios. C olo car um a tabela no buffer dessa maneira fad com que selects no Indice primario acelere, mas possivelrnen re tcrnara selects leDta em in dices secu nda rios . U rna instru~ao selec t em uma tab ela grande (categoria de tamanho 1 ou maior) que e completamente sup ort ada por 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 mais lento (se for mais len to) dependera da quantidade de dados na tab ela. Para compensar es'se problema, evite 0 buffer e utilize os indices secundarios, adicionando bypassing buffer para a instrU~ao select onde urn indice secu ndario deve ser utilizad o. 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-
211
I', !
I
...
~~
212
I
-~
~-
--
OlAs,oOITADlcrJOHARY, PARTE 3
AP REN DA EM 21 DIAS ABA PI4
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 varredura complera de tabela no buffer.
~o
Sejo muito cuidodoso quondo utilizor bypass de buffer em tc belcs colcccdos no buffer que tcmbem 500 otcolucdcs. Se voce utilizo em 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 trcnsccoo. Coso ccn trcdc, voce de feto estero misturondo dodos cclccodos no buffer e fore dele. Isso pode cousar lncoere ncics dos dodos em sev progromo e possivelmente no banco de dedas, se seu programo tombem firer o tu el i zo ~oes .
Resu mo do utili za ~fio de buffe r
o
seguinte pontos devem ser lembrados em relacao buffer e indic es:
a tabelas colocadas no
• As tabelas colocadas no buffer podem fazer seus programas serem executadcs mu ito mais rapido. Entretanto, se urilizadas de forma negligeme, a colocacio no bu ffer pode rer 0 efeit o opos to. • Os buffers esperam na RAM do servidor de aplicativ o, ponanto 0 espaljo no buffer e lim itado. Urna tabela que nao e acessada com freque ncia nao deve ser cclocada no buffer para conservar especc de bu ffer e evit ar estouro. • A s tabelas que sao pequ enas (categoria de tamanho 0), acessadas com fr equen cia e raramente atualizadas devem ser completamenre'colocadas no buffer. • A s tabelas que sao gran des (cate gor ia de ta manho 0) e acessadas com freq uencia ut ilizam sel ect sing le devem ser colocadas no buffer no m od o de registro unico. • U rna tab ela onde os regist ros de urn grupo sao acessados juntos devem utilizar buffer de m aneira gene rica. Urna chave primaria parcial deve id entificar 0 grupo. • As tabelas que saOatualizadas com frequencia nao devem se r colocadas no buffer se sua confi guraljao tiver multiplos servidores de aplicativo. 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.
I
• Se possfvel, utilize os campos do Indi ce prim erio em urna chusul a where nas tabe las colocadas no buffer. Se isso nao for possfvel e a tabela 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.
Resu m o • Urn Indice euma c6pia de colunas especfficas de um a tabela cIassificada em ordem crescente. •
as in dices aceleram as insrru coes select. Urn a instrucao sel ect 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 clausula where. •
Os campos em uma ch usula wh ere devem se r lisradc s em seu programa na mesma ordem que apa recem no Indice.
• A transacao 5T05 pode ser u tilizad a para m ost rar qual Indice, se algum, foi utilizado por uma dada insrrucio sel ect.
• Configuracoes tecnicas da tabela po dem ser uti lizadas par a ccntrolar a classe 9.~ dados, categoria de tamanho, tipo de urili zacio de buffer e se a coaexao esta ativada. • A classe de dados determine em qual tablespace a tabela sera. criada . As classes mais importances de dados sao APPLO (dados mestres) e APPLl (d ado s de transacao}. • A catego ria de tam anho determina 0 tamanh o das extensoes inicial e pr6ximas da tabela e 0 n dmero maxim o de extensces permitido. Isso deve ser escolhido de m od o que a exren sac inicial seja suficientem enre grande para arm azenar a tabela in teira. Extensoes secundirias deixa m o desempe nho de siste ma lento e tornam a reorganizacjo necessaria. • A utiliza~ao de buffer acelera a acesso de dados par fazer cache dos clados m ais freqUentem ente utiliz ados na RAM no servid or de aplicativo . 0 espaljo de buffer e limitado, entaO as tabelas devem ser colocadas no buffer prudentemente.
213
I' i
K_I ... I'" .. I ..... 214
APR!"A EM21 DIA, 'ABAP/.
~ IFa~a
----J_
Coloque as compos no c16usula where no mesmo ord em em que eles aporecem
Nao codifiqce umo 5e' ect que nao sejc
suportada per um fndice.
no fndice.
Seja generoso quando escolher umo categoric de tomonho.
Nao escolho umc categ o rio de tomonho que focc umo tabe la exigir umo extenseo secund6rio.
Utili ze bypcss de buff er quando ler um
registro para ctucluc r de ume tabe lo cclocodc no buffer.
...-...:-.I_..._...... DIH DDATArncrIDl<ARY, PARTE 3
Teste 1. Po sso especificar em algum lugar 0 Indice exaro se quera utilizar uma instrucao select? 2. Posso criar indices secundarics em tabelas de SAP au ccloc a-Ios no buffer ?
3. Posse diz er que meu programa e executado mais rapido com tabelas colocadas no buffer do que fora dele?
Exe rd cio 1 Q ual e a classe de dados para as tabelas MARA, LFAI e KNA I? Qual categoria de tamanho para MARA , LFA I e KNA1?
P&R
o
N so posso exibir algumas telas mencionadas neste livro . Obtenho a m ensagem de erro You" are not authorized to use t ra nsacti on XXXX. C omo posso vcr essas telas?
o 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?
05 bu ffers de dados sao apenas dois dos mu itos buffers mantidos 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 entendimento 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".
ea
~ -y
215
~
,
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 O IH.
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 prccedimento utilizodo pora exlblr rdi sp/bufreftime no se~co lntitulcdo
"Slncronuc ccc de buffer- no Dio S.
'nttp;II_.compVJ.CQm.br
...... I
-114.............- .- .. I
218
Pore coda jnse~o o, otua l izo~o o ou exd usOo de umo tcbelc ctivcdc pora
hist6rico outom 6tico de tobelc, um registro e criodo no tobe la dbt abprt.
0
Coda
•
DELse a registro foi exclufdo .
U tilizand o 0 c6digo de tran sacao SCU3 ou OY1S (veja a Figura 6.1), voce pode exibir as documen tos alrerados e cornpara-los com as valo res atu ais na rabela. Nso hi nenhuma difere n~a ent re esses dais codigos de transa?o; ambos execu tam 0 mesmo program a.
com hist6rico
de tohelo
otivodo.
;.
A partir da tela Ta ble H istory as seguin tes funljoes:
C hoose Function, voc e p e de execurar
• 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
I
•
•
_~
219
Para exibira lists de tabelas pela qual 0 hist6rico autom dricc emantido, escolha 0 batao de op~o Tables With H istory Mana gement e pressione 0 bono List . Essa lista most ra todas as tabel as que tSm uma marca de seleljao na caixa de selecao Log Data Changes.
• P ara campa rar valc res de campo em documentos alteradcs com valores atuais de campo em uma tab ela, escolha 0 batao de 0pljio History <-> Curre nt e pressione 0 bo uo Compare. A tela Table H istory e exibida. Insira. 0 criteria de pesquisa para. os documentos alterados e pressione 0 bone Compare. A tela Table History - Comparison 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).
documentos eltercdos de Iobelas elJ1omatico
•
• Para exibir 0 mime ro total de documentcs alte rados na tabela dbtebpr-t, pressione a bo n o Total N o. D ocu ments na barn de ferra mentas Application.
.!!ix! ......... .,..
F igu ra 6 1
•
• P ara exibir um a comagem do mi mero de documentos alterados que exine para urn dad o int ervale de da ta ou intervale de tabela , pression e cs bo no No.of Docs. (Select) .
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 nome do progroma utilizodo poro fazer a oltero¢o, e 0 tipo de c lterecoc executodo. 0 tipo de olte rm;60 sera I NS se 0 registro foi inserido, UPD se 0 reg istro foi ctcclhcdc ou
A tronSCI~60 Tehle History eJCibe
]I • • •
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 para ela se seguem (veja a Fi gura 6.3).
Docu mentos olterados M OYO til...
...... ..
D~""DATlDlrnoNARY, PAR1H
AP RENDA EM 21 DIAS ABAP I'
TUllO'"
I
Fi g u r a 6
2
Os compos do Iobe/o HPRJ OO7 opo recem antesdos documentos o/terodos. mostrondo os names ae compo, 0 ind'rcodor de chove prim6rio, 0 tipo de dodo, a comprimento, 0 nome de coluno e 0 des cri~60.
,"
I:
!,
!
iI
Ii
I
I
• • • ww.ww.w • .• 220 , AP REM DAEM21
~~
_ DU DDATADICTlOIWY. PArTH
D'AS AUPI4
F igura 63
Os documenfos ollerodes do 1o~lo HPR100loporecem depors do listo de compos. A chcve prim6rio de coda registro oporece (em hJrqueso) seguido pe/osdodos (em bronco),
pri me;ro
221
Sa bendo quando utilizar bist6rico autom6tico de tabel a
o histcricc automatico de tabe la deve ser ut ilizado em tabelas qu e con tern informacoes imponantfssimas e quando ada altera~o deve ser mcnitorada sem [alha, independentemente da arualizacfo do p rograma utilizado. Infelizmente, arualizacoes para tabela sao lentas, porque urn registro e escri to pa ra dbtabprt para cada registro alte rado. N a rnaioria dos casas, quando 0 hist6rico da tabela e necessario, Change D ocum ent Objects oferece uma alternativa eficienre e mais rapida e portanto seria utilizado no lugar. Para mais infor -
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 Workbench, Extended Applicatipns Function Library, Change D ocum en ts.}
~o F igura 6 4
)qui. cs dodos em dbt abpr t sOo comporodos cos conteudos otuois de
coda reg isll'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 vdata contem 0 reslonte do reg istro e tem 500 bytes de com primento .
Resu mi nd o as configurac;6es tecnicas 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. 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 extens5es adic ionais .s erem alocadas. VID a eabela que envolve varias exteosoes diminui 0 desempen h o do siste ma, aumenr a a manutencfo do banco de dadcs e reduz a disponi bilidade de sistema, novamente porque 0 banco de dados normalrnente 6 colocado em estado offline para reorg anizace es.
• A cat egoria de tam anho determina
A chave primdria aparece ern rurquesa c a metade esquerda cia tela. A metade direita esta dividida em valores aruais e valores de hist6rico. As linhas acinzentadas indicam que exist e um a diferenca. Para exibir 0 significado dos ccdigcs na coluna mais a esquerda, cclcque 0 cursor aI e pressione FI. Esse relarorio mostra que quatro registros existe m na tab ela EKPA mas 'nenhum hiscorico de regist ros existe para des.
•
A bu fferizacao aumenta 0 desempeahc do sistema [azendo 0 cache de dados Iocalment e no servidor de aplicativo. Quando feito adequada-
'.
w w • • • W'
~
222 , AfUNDA
ww w • w ••• w
W W T'Ir T T
EM 21 DIAS ABAP/4
W'
01' 6, 0D'T' DICTI~ARY, PAR1H I
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 na barra de ferramentas Application. A lista e atualizada para conter apenas as diferencas entre as duas vers6es.
mais frequentemente lidos sao armazenados na RAM DO servidor de aplicativo. Bons candidates para bufferizacao sao tabelas que raramente sao atualizadas e frequentemente lidas. • Ativar 0 log automatico do recurso em uma tab ela fara. com que urn documento alterado seja criado coda vez que tabela e aleerada. Esse
recurso diminui as arualizacoesde tabela e portanto eutilizado apenas para tabelasque content dados vitais.Nas tabelas nao vitais, devem ser utilizados objetos de docurnento alterado.
Figurg 6
5
Qu end o Limo tooele eve /em Lime versec
revisodo e exibido. voc~ ~ 0
versec
revisodo por podr6o .
.
Yers6es ativas e revjsadas NOVO...
Podem existirduos versoes de uma tabela (au qua lquer objeto OD!C): a verscc 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. 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.
YERMO"
e
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 (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 sera exibida e a botao na barra de ferramentas mudara para a versio revisada, permitindo que voce pressione 0 botao novamente e retome para a exibicso anterior. SmEHtlM~ lnicie a ScreenCam "How to Compare Revisedand Active Versions" agora. Pa~a comparar as vers6es ativas e revisada.s:
1. De tela Dictionary: Table/Structure: Display Fields, escolha
Vers6es adicionais Independenternente das vers6es revisadas e ativas, voce tamb em pode criar versoes temporaries de uma tabela. Para fazer isso, escolha 0 caminho de menu Table->Generate version. A mensagem Temporary verst on of act ; ve object 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, escclha 0 caminho de menu Ueilities->Version Management . A versac com 0 na m ero mais alto e a primeira que voce criou.
Descartando umg versOo revisada 0
caminho de menu Utilieies->V ersion management. A tela Versions of Object e exibida. A primeira linha contem a palavra mod .. Esse e a 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 pressione 0 bono Compare. A tela Version Comparison for Tables eexibida. As liohas alteradas sao indicadas na margem direita. <- only ecttv significa que a linh a somente existe na. versao ativa. <- only modi f significa que a linha apenas existe na versac revisada.
Para descartar uma versao revisada sem ativa-la, voce deve primeiro gerar um a versac tempordria da versao ativa e entio restaura-Ia, como mostrado no seguinte procedimento. SCifENOM~ lnicie a ScreenCam "How to Discord a Revised Version" a gora.
Para descartar uma versao revisada e restaurar a versao ativa:
W'
223
"1J
~I 224
• • • ••
WWWWWW_
-- -
' PREND' EM21 01" ,", PI'
OIA 6:0DATA D1mOMARY,PAiTE"
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
contendo a men sagem Version of » act ive « object stored.
IOU .
2. Pressione 0 botao Continue. Voce elevado de volta it. tela Di ctionary: Table/Structure: Change Fields e a mensagem Temporary versi on of activat e object stored e exibida na parte inferior cia janela. 3. Escolha 0 caminho de menu Utilities- > Version management. A tela V ersions Of O bject e exibida. H aven uma marca de sele ~io ao lado da palavra act . . 4. Remova ~ marca de se1e~o do lado cia palavra act .. 5. Coloqu e uma marca de sele~ao embaix o de Version (s) In The Version
lERMO ,. dodos.
I I
I i
utilitaric de banco de dados:
2. Digice urn nome de tabela no campo Object Name. 3. Pression e 0 bctao Display. 4. Selecione 0 caminho de menu U tili ties- c-D atabase Utility. A tela ABAP/ 4 D ictionary: U tiliry for D ataba se Tables ~ exibida, como mcstrado na Figura 6.6. Figura 6 6
8. Para verificar se a versao revisada coincide com a versac ariva, coloque
Todos'os objetos·DD IC, como domini os e elemencos de dados, possuem versoes revisadas e ativas. Todas elas podem ser exibidas e comp aradas da 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.
0
1. Comece na D ictionary: Initial Screen.
7. Pressione a ba tao Yes. Voce ~ levadc de volta a tela Version s O f Object e a mensagem Restored ver sion must be acti vatedl aparece na pane inferior de janela. H averf uma marca de selecac 010 lade cia palavra act .. A ver sao revisada ~ agora a mesma que a do botao Active.
I
ScreenCom "How to Access the Dctcbcse Utility- agora.
Para acessar
6. P ression e 0 batao Retrieve na barra de ferramentas Application. VIDa caixa de dialogo aparece coneendo a mensagem vers i on nnnnn is now new revi sed (non·active) version . Proceed?
I
Dentro do ODIC extste umo ferromento de utilit6rio de bc ncc de dodos . Utilizondo-o, voce ped e exa minor e modifieor tobelas no nivel de ba nco de
S(mNW ~ lnlcle a
Database: line beside the highest version number.
uma marca de selelji o ao lado d.a palavra mod .. As duas linhas act . e mod . agora esta.rio com uma marca de sele~ao. 9. Pressione a ba tao Comp are na barn de ferramentas Application . A tela C omparison For Tables e exibida. 10. Pressione 0 batao D elta D isplay na barn de ferramentas Application. 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 na parte inferior da janela.
utjlitCirio de banco de d o d os
0
,
Utilizondo 0 tela A8AP/4 Dictionary: Utility for Database Tobles, voce pOOe se comun;cor diretomerrtecom o banco de cJodos pe ra exihir au alteror
umolobe/a.
D aqui voce pode: • Verificar a coerencia das definicoes de DDIC de R/ 3 em rela~o ao banco de dad os. • Visualizar 0 log de ativa<;ao para ver as instru~6es de SQL reais enviadas ac banco de dados: • Exibir e modificar a s parimetros de armazenamento do banco de dados .
225
.. -226
I
DIA6:0DATADICTlONARY,PARTE 4 I
'PREHD' EM 21 DIAS "'Pi<
• Excluir urna tabela excIuindo-a temporariamente no banco de dados, ou esvazia-la excluindo-a e recriando-a no banco de dados.
NOYO....
iEUlO"
Figura 6 7
Umo veriDco¢ode coer!ncio com 0
banco de dodos confirmo que 0 denni¢o DOIC R/3 do tobelo ztxl f al e 0 definit;60 do
bancode dodos s60 identicos.
de R/3 e, sob certcs aspectos, como
um progra mo trodidonol. Elo
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 tombem e conhecido como nornetob.
Ve ri fi co (;6e s de coerencio A definicao de uma tabela trans parente existe em dois lugares: no diciomrio de dados de R/3 e no banco de dados. Para verificar a coerencia entre os dcis , a partir de dent ro do utilitario de banco de dados escolha 0 caminho de menu Extras-> Da tabase Object->Check. A versac ativa da tabela ecomparada com a tabela de banco de dados. A tela Table xxxxx: Check Database Object ,era exibida, e uma mensagem na parte superior da lista indicant se 0 objero de banco de dados e coerente (veja a Figura 6.7) .
Umo tabela
exlste em dois fcrrnulerics : na "fonfe" que vocA pode exibir e mcdificcr e no
Quando urna verifica(f3.o de coerencia e executada, 0 nametab e com parade com 0 banco de dados . Voce pode exibir 0 nametab do utilitario de baccc de dados escolhendc o caminho de menu Extras-> Runtime object-> Displa y. A tela O bject xxxxx: Display Active Runtime Object eexibida (veja a Figura 6.8) . Na parte superior esta 0 selo de tempo do camerab seguido pelas informacoes de cabecalho. Ele 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 comprimento em bytes do regisrro, 0 namero de campos chave, 0 comprimenta dos campos chave em bytes , as informacoes de bufferizaclc etc. (Para informacoes detalhadas sabre os campos de cabecalho e seus valores, exiha a estrutura X030L.) Embaixo do cabecalbc esd. uma lista dos campos, sua posilj3.o na tabela, 0 tipo de dado , 0 comprimento, a namerc de casas decimais, 0 deslocamento desde 0 infcio do registro, 0 comprimento exeem c cia tabela de refereacia, a tabela de verificaljao etc. Os atributos recnicos cia rabela sao 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. Encontrar urna incoerencia indica que a origem do problema pode estar fora de seu programa.
o popel do nametab nos programas em ABAP/4 Como aprendeu no Dia 2, quando voce cria urn programa em ABAP/4 que seleciona dados de uma tabela, voce deve codificar uma instI1Jljao tables. A insrrucao tables torna a estrutura da tabela conhec ida para 0 programa.
227
-~ 228
I
•••• w••••••• • •
w._--- -
APIENDA EM 21 DIU ABAPI4
Entretanto, quando voce,gera 0 obieto de temp o de execucjo para 0 programa, a defini~o da tabela nao esti incorporada a ele. Em vez disso, quando 0 objetc de tempo de execucic do p rograma e executado, ele faz uma ch ama da para a narnetab a fim de determinar a estrurura em tempo de execucio da tabela. Isso permi te que voce altere uma tabela (ou estrut ura) sem ter de gerar novam ent e todos as progranw: em AIJAP / 4 que a utilizam. Eles detenninam dinamicamente as caracterfsticas da tabela em tempo de execuc j o chamando a nametah. Embers voce DaO tenha de gerar novamente to dos as program as sempre que um a altera~ao far feita ern uma tabel a, certas alteracoes (como renomear ou excluir urn campo) exigirjo qu e voce fa~a altera~6es no c6d.igo do ABAP / 4. N esses casas, voce pre cisarf ene ontrar to dos as programas que a utili zam. S(REOlCAM~ inicie a ScreenCam "How to Perform ~ Where-Used List on a Toble" cqcro.
Para localizar todos a s progr arnas que utiliz arn uma da da ta bela:
DIHOIlAU DIGIOORY,PARTH
Extras- >Runtime O bject->Check. 0 objeto de tempo de execucgo e camparado aos objetcs [onte de DDIC. A tela Object xxxxx: Check Active . Runtime Obje ct sera exibidaeuma mensagem na parte superior da Iisraindicard se 0 objeto de banco de dados e co erenre. A s Figuras 6.9 e 6.10 mostram urn exemplo de uma incoe rencia no narnetab para a tabela zt xl fal. Se urn dominic for alcerado e a reativacf o cia tah ela falhar, uma incoerencia pode exisrir entre 0 nametab e 0 dominic. .
No caso cia Figura 6.10, a verificacac descobriu que campo 1i fn r
3. Pressione 0 bctac Where-Used List na barn de ferramen tas Appli'. cation. Uma caixa de dialogo Wh ere-Used List apar eee. . 4. Escolha a botao de opere Programs . 5. Pressioneo botao' Continue. A tela Table xxxxx in P rogra ms ~ exibida. Uma lists de todos a s programas que utilizam a tabel a apareee. 6. D e urn clique duplo em urn nome de program s para exih ir todas as linhas de c6di go em qu e a tab ela e utilizada . 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
echar
0
tipo de dado de
10 no nametab e i nt 4 no domfuio.
Os programasem ABAP/ 4 utilizam apenas 0 aametab. Portanto, des cae 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 inccerencias 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 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 de indica umomensogem de
lIerifiCIJlj6 0 coe~ncio
~rro ~m que 0 compritrn!!nto d~
r~gjstro,
a
comprim~nto
do
<hove. 0 olinhomenlo do tobelo s6 0 inroerentes.
229
230
"""1"0-
APR EN DA EM 21 DIAS ABAPI'
DIU DDATAD1cnDlIARY, PAJ<l"
Figura 6 1 0
FiGura 6 12
Rolor porabaixo no llsto mostraos campos do nomelob eo raz60 do
Este li 0 restonte do log de affva~60
mostrodo na Figufa 6.1J.
ineoerendo .
II I ! Exibindo
0
log de otiva!foo
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 lo g som ente e gerado se a ativa~ao fizer 0 c6digo SQL ser gerado. (Em alguns casas, uma a lteracao de tabela pode ser ativada sem afetar 0 banco de dados, por exemplo, uma alteracac para. 0 texto curto.) 0 log contem a sequencia de passos realizada e todas as instrucoes de SQL enviadas ao banco de dados durant e a ultima ativa/iao (veja as Figuras 6.11 e 6.12). F ig ura 6 11
o Jog de oHvo¢o exibe
0 seq ~n cio
de possos reolizodos . durante 0 otivo ~ao e
o e6digo SQL que foj gerado. Esse log mostro que durante o olivo¢o, 0 tohe/o fai exc:lufdo temporariomente no bonco de dodos e
reer/odo .
Para exibir asinformacoes em detalhe que descrevem qualquer mensagem no log, posicione 0 cursor na mensagem e pre ssione a reels F I.
Exibindo e modificando pa ram etros de o rmazen a me nto Pressiona r 0 boteo Storage Parameters de dentro do ueilitario de ban co de dados (veja a Figura 6.1) exibe a tela DB Utility: Transparent Tables D atabase Parameters. A Figura 6.13 mostra como essa tela se,parece quando urn banco de dados Oracle e inscalado. Essa tela se presta princip almente it utilizacio pelo DBA para alterar os parametres de armazenamentc de dentro de R/3 depois que uma tabela foi ativada. Ela e apresenta da aqui para tornar a discussao complete. Informacoes especfficas de banco de dados sobre os parametres de armazenamento da tabela sao exibidas aqui. A coluna Src indica a fonte dos valores. DBS significa que esses sao os valores reais no banco de dados. eMP significa que esses valores sao compurado s a partir da caregoria de tamanho e a partir das classe de dados. A linha USR permite que voce defina os valores de Next E, MaxE, Pf e Pu e os aplique imediatamente pr essionando a bono Apply Parameters Next E, MaxE, Pf e Pu Inmedt atel y. Na maioria das vezes, as linhas DBS e eMP serge as mesmas, a menos que os parametres de armazenamento para a tabela de banco de dadcs forem alterados manualmente depois que, a tabela tiver sido ativada.
231
TII 232 ,p",o, EM21 F jgura 6
......-.-~
.............. -w w'W
...........
_
~ ---.-..
233
OlA 6; 0 DATA DlcnotWY,PAm"
OI'S Ai'P /4
caixa de di:ilogo sen exibida para confi rmar sua solieita~o. A nbela e seu
'3
Pcrdm~tros
coneeodo serac excluidos do banco de dadcs. Paracrid-lo novamente, pressione
espedhco s de banco de dodos sOO mostrodos no tela DB Utility: Transparent Tobles
o borac Create D at abase T able. A tabela sera recriada para util izar sua versa c ativa. Vo ce pede utilizar 0 utilitdrio de banco de dados para fazer isso em vez de escrever urn programa em ABAP/4 para excluir todas as linhas.
- Database Porameters. Essa h!1c mostrc que cs
Excluirtempororiomente umo tcbelofez com que todos as dodos dentro de la sejcm permonen temente perd idos. E umo boo ideio fcaer umo c6 pia de bock.up do tobelo a ntes de exd uf-Io. Se voce copier 0 tcbelc monua lmente, le mbre -se de copier to nto 0 definil;oo do tobelo co mo a s dodos.
poro metros de orm ozenomenlo
pore
0
tobe/o
. ztx lfal
{oram
oherodos depois do OM¢o, porq ue as
/inhos OBS e eM?
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.
nee coincidem.
Resum o
As colunas InitExt e NextExt con rem os tamanhos (em blocos) das 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 registradas em do cumencos alteradcs. Para dad os nao vitais, obje ros de documentc alreradc devem ser urilizados no Iugar.
e maximo dasext ensoes permiridas. 0 nome de reblespacevern depois, seguido pew cc lunas FGe i r, que ccntem 0 ndmero de gropes de list a livre e 0 mimero de listalivre em urn grup o. (Essas duas colunas sao apenas utili zadas se 0 Oracle
• Uma versso revisada de uma tabela e criada quand o voce a modifica sem ativa-la. Somence a versac ativa de urn cbietc pede ser utilizada.
estiver sen dc utiliza do no modo de pr ocessamento paralelc.) As co lunas Pf e Pu contem a po rcentagem de espa~o livre e a porcentagem de especc utilizado nos blocos dedados.Para maisinformacoes sabre qualqueruma dessas colunas, pos icione 0 cursor nela e pre ssione Fl. Em b ora os unicos p ardme tr os que podem ser alterados sej am NextExt, Hax E, Pf e Pu, voce deve preencher completamente a linha antes de pres sionar o botao Apply. Por exemplo, para alrerar 0 tamanho cia proxima extensdo para 64 e configurar 0 numeromaxim o de ext ensoes como 4, priin eiro selecione 0 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 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 Application. A linha que t~m DBS na coJuna Sr c conted. as valores atu aliu dos.
• Usando 0 urilitaric de banco de dados , voc~ pod e examina r a name tab e comparar sua coerencia com 6 D ata Dictionary e com 0 banco de
dados. • 0 u tili tario de banco de clados tambem permire que voce visualize
P&R
o o
Excluindo e recriando as tabelas nO bo nco de dodos A maneira mais nipida de excluir os dados de uma labe la eexclui-Ia temporariamente (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
0
log de ativa~ao para uma rabela, os pardmetros de armazenamento e drope e recrie uma tabela no banco de dados.
•
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? V a para 0 utilitirio de banco de dados e p ressione Storage Pa rameters.
0
bo tao
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 entendimenta 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 possfvel
que 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 caractere e os tipo s de dados numericos.
0
• 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 236
I III
•
I
• I .- I ........ ..- • • •
• w w w
-
-
-
-
-
-
D~]'oEFIHIHDOOAOOSHOABAP I4,PAR1I1
I APR ENO" . 21 OIAS ABAPI4
o buffer de programa e a area de
W
ro lagem
O s programas sao colocados no buffer no servidor de aplicativo em urn buffer de programa. Quando urn usuari o faz uma solicitacl o para executar urn program a, um a pesquisa efeita no buffer de pr ograma para ele. Se ele fo r localizado 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 programa e recarregado . 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 pro grama. 0 fator de diferenciacso e uma alocacf o de memoria separada chamada area de rolagem. Uma area de ro lagem e alocada po r execucac de usuario p orprograrna. 0 sist em a utilizaa areade rol agem para armazenar to das as informacoes sobre a execucao atu al do p rogram a e todas as alocacoes de 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 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 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 programa diferente, ele aind a teria duas areas de rolageos, um a para cada programa.
Elementos de sintaxe do ABAP/4 Coda programa do ABAP/4 e compa sta de uma ou mois instrut;oes. Coda YERMO" instru¢o contem uma vcri edcde de polavras seporodos por pelo menas um 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.
NOYO....
N a Listagem 7.1, as p alavras-chave sao select, wr i te e endse lect. D ua s adic;5es aparecem na instruclo select : where e order by. Tudo 0 que norm alm ente e chamado de cltiusula em outras lingu agens e chama do de adifao no ABAP/4: ou seja, e qualquer palavra ou grope de pa lavra.s depois de palavrachave que modificam 0 comp ort ame nto da insrrucao.
EKTRADA~ Lislogem 7.1 1I", lro, 50 do sinlox. be,i co do ABAP/4 1 sel ect · from zt xlfal where l1fn r > ' 0000001050' order by l ifnr . 2 write : \ ztxlfal- lifnr, ztxlfal - namel, ztx lfal-landl. 3 endse1eet.
-
-
I
237
Uma instrucao pode comecar em qualquer coluna e pode girar qualquer mimero de linhas. Para continuar uma instrucao em outre linha, quebre a instrucio entre quaisquer duas palavras. U rn caract ere de continuacac nao e necessario. P or exemplo, 0 c6dig o na Listagern 7.1 pede ser refo rmatado como moseredo na Listagem 7.2.
ENTRADA.... Listagem 7.2 Este c6d igo e 0 mesmo do Ustogern 7.1, ele apenos foi ,. forrnatodo de maneiro diferente 1 sef ect " from zt xl fa l 2 where 1i f nr > I OO~OOO IO SO' 3 order by lifnr. 4 wri t e : \ ztxlfal-l 1fnr, 5 ztx lfal-namel, 6 ztxlfal -1andl. endsel ect.
o
c6digo do ABA P/4 nao faz disdncso ent re maiusculas e minusculas.
Definindo objetos de dodos KOYO..... TERMO"
Os ob;etos de dodos sao posit;oes de mem6ria que voce utilizopa ra ormozenor dad os enquo nto 0 programo est6 sendo exec~tado. H6 dais t~pos de .~biet~s de dodos : mcdlfkoveis e noo-mo dific6veis. 0 tipos de cbje tos de dodos neo-mcdfflccvets 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
Quand o 0 p rograma e iniciado, a aloca<;ao de mem6ria para cada objeto de dad os ocorre na area de rolagem do programa. Enquanto 0 pr ogram a esta sendo execut ado, voce pede ler 0 conteu dc de urn ob jet o de dados nao-modificevel 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 todos os objetos de dadc s e seus conteudos sao perdidos.
NOVO.... YERMO"-
cbjetos de dados t~m ires nlveis de visibjJidode : local, global e extem~. A vlsibllidode de um cb jeto de dados indica em qua l loco I do progromo c objetc
Os
de dodos IS ccess'vel.
Obietcs de dados localmente visfveis sao acessfveis apenas a partir de dent ro da sub -rotina em que d es sao definidos. Objetos globalmen te visiveis podem ser acessados de qual quer Iu gar dentro do progra ma . O bjetos ext~rna m ente visiveis sao acessiveis de fora do pr ograma por outro prograrna. A FIgura 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
~I
I
238
O~ HEIlNINOO OAOOSNO ABAP/l.PARTE I
AP RENOA EM21 OIAS ABA PI4
acessa-los. De forma semelhsnte , as objeros de dados locais nas sub-retinas lB e 2A DaD estaoacesstveisem qualquer lugar, somente dentro dessassub-re tinas. Qualquer instru~ao no p rograma 1, indiferente do local onde a .instru~ao aparece, p od e acessar as obje tos de dados globais no programa 1. De form a similar, qualquer instru liao n o programa 2 pe de acessar as objetos de dados
globais no progruna 2. f lou r a 7 1
A visibi/idodede um ob;eto de dodos indi ca
SIlO
ocessibilidode. ~ lor loco/mente vislve!, ele e ocessivel openos de
dentroumo
for wsNd.
svb-retina. Se globalmen~
Ar eo de mem6ria extem o
~: Dodos extemas ~",,:"i¥@ . Obietos
emmomltnte vislve/,
e ocesslvel de foto do progrcmo. par" DUtro
Literais de string de caractere as litcais de string de caraetere sao strings que diferenciam letras maifisculas e minuscules de qualqu er comp rimen tc inclufdas entre aspas simp les. Pa r exemplo, I JACKI e urn literal de string de carac tere que contem som ente caracteres em letras maiusculas. 'Eaesar the cat I e urn literal de string de caractere que 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 • Como urn literal de string de caracte re e inclufdo entr e aspas. voce nio pode utilizar aspas simples pa r si mesmo no valor do literal. Para representar uma aspa simples. voce deve utilizar duas aspas simp les ccnsecutivas. Por exemplo, a insrrucio wri te I Caesar I IS ta t l ' . escreveri cees er- ' 5 tai 1. mas a instrucao wr; t e ' Caesar 5 t eil ' causarau m erro de sin taxe por'que elaconcern uma aspa simpl es den tro da pr6pria string . A instrucao wr ; te I I I I • fara com que um a aspa simples seja escrita na pagina de safda, po rque as duas aspas 'consecutivas dentrc das aspas sao tr aduz.idas como uma aspa simples . Por fim , write : • I I I . 'Hello Caesar '• "". escrevers 'Hello Caesar I • Eis alguns exemplos de literals de string de caractere icvdidos e a maneira correta de codified-los . "Samant ha" esta in correto; ela deve estar inclufda entre aspas simp les. cia aspas duplas e. po rtanro, devem ser codificadas I Samantha I . Em I Never end; ng, a aspa da direita esta faltando e assim deve ser codificado I Never end; ng' . I Don I t b1 t e I deve canter duas aspas simples con secutivas; ela deve ser codificada I Don' 't bi t e ' . I
Progroma 1
Progromo 2
~J::i!i'.ts.1-"f:i!. Dedos globois
r~ ; Dodos global
~~ Obiete!
~:M' .
ele e oceu fvel de quo/quer fugor dentro de um progromo. Se for
239
Sub-retina lA
m~
O bjelos
Sub-retina 2A Dodos laea is
~iMl'~_, Ob jetos
~. Dodos locois
!#ci#~
Ob ietos
progromo.
Sub-reline 1B
~. Dodos lcccrs
$~~
O bjetos
Os obje ros de dados ext emos pod em ser acessados de qualquer instru~o no pro grama 1 ou 2. Na realidade. se eles podem ou nao ser acessados dependeri do tip o de area externa de me m6ria util izado e do relacionarne nto ent re os dois programas . O s deulhes disso sao descr itos nas se~6es sob re a rnem6ria
SPNGPA e a mem6ria doABAP/4 .
Definindo lite rais 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 digit ados ood e necessa ria . H a quatro ripos: String de ca.ractere. numerico. de ponto flu ruan te e h exadecimal.
~o
Q ua ndo um litem] esfiver en va lvido em uma ccmpcrccoc, de modo 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! obtera umo soldo incorrefo au nenhuma seido no final dos contos. Em 99,99% das vezes, os valores de seu life ral de string de ccredere serOo comporodos e esteroo em lefras maiuscules. Portanto, sempre digite . . a lor pare um literal de string de coredere em letros maiuscules, a 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 1ifnr • ' Vl ' loceliza r6 urn registro , Voce notou as letrasmjnuscu las ~
°
Lite rais numericos Litu ais numericas sao valores numericos codificados manualmente com urn 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
D1AloDEllNINDOlWlOSNOABAl'/VAlTE 1
APUlDA EM21 DlAS AlAP/.
ocorrera 0 erro de sintaxe Stateme nt x is not def ined. Please check your spell i ng.. A Tabela 7.1 mostra as maneiras erradas e certas de codificar literals. 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 aspas simp les. Urn literal pe de ser utilizado como 0 valor padrao para uma
Tabela 7.1 Mc neiras erradcs e certos de codificcr [itercis Certa
Erra da
Explica sa o
-99
99-
o sinal a dire ita ndc permitido em um nume ricc a me nos que este]c dentro de as pos. Nurnenccs entre ospos podem ter sinal c esquerda a u a dtrelto ('12 _ '].
, ~ 12 '
variwel ou pede ser utilizado para fornecer urn valor em uma instru~ao . Exemplos de literaisinvalidos sao: 99- (sinal de subt raci c adireita), "Confi rm· (incluido entre aspas duplas} e 2.2 (contem urn decimal mas nao esta incluldo entre aspas).
literais de ponto f1 utuan te Literais de ponte f/utuante sao especificados denero de aspas simples como ' cmant i ssa> E<expoente>'. A mantissa pede ser especificada com urn sinal a esquerda e com au sem espaccs decimais e 0 expoent e pade estar com sinal ou sem sina l, com ou sem zero s a esquerda. Par exempla, '9.99E9 1 , ' -10E-32 I e 1+l E09 ' sao literai s de ponto flu tua nte validos.
Numericos con tendo um ponto decimal devem se r
lZ.3
' 12. 3'
lncluldcs entre os pos simples. Aspos du pla s na o sdc perm itidos.
' Hi I ' Can' It'
·HP ' Can' t
' Hi'
'Hi
A ospo
7£1
Valores de ponto flutuonte devem ser ind uid os entre a spas . letras mlncsculcs se c perrnitidos para lltercis de ponto flutuonte.
17E1 '
l
'] e1'
Para representor umo as pa simples, utilize duos ospo s simples consecctbcs.
a d ireito est6 fcltcndo.
Literais hexadecimais
' OAOO'
' OaOO'
Urn literalhexadecimal e especificado dentro de aspas simples como se fossem um a string de caractere. Os valores permitidos sio 0-9 e A-F. Dev e haver urn mesmo mimero de caracteres na String e todos as caracreres decem estar em
Letros minusculos e m litera is hexcdeclmcls doo resultodos tnccrretcs.
' OAOO'
'AOO'
Um numere lmpor de drgitos hexadecimois d6 resulta dos lncorretcs . .
' OAOO'
X'OAOO'
letras maiNsculas.
~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 errc . Entretant o, quando seu progromo for executodo , a volar do literal estar6 e rrado.
Um ccroctere, sejo coloca do antes ou depois, ndo
e perm itido porn lite rois hexodecimcis.
Definindo yoricyeis Duas instrucoes sao comumente utilizadas pa ra definir variiveis em urn pro. grama do ABAP/4 : • data •
Exemplos de Iiterais hexadecimais validos sao ' 00 ' , 'A2ES' e 'FlFOFF'. Os exemplos de literais hexadecimais invilidos sao' aleS ' [contem caracteres em letras mimisculas}, ' 0 ' (coutem urn numero de caract eres Impar}, - FP (ioc1uido entre aspas duplas ) e x' OO' (nio deve ter um x no infcio).
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 hexodecimal que eria dependenclo de mcq vinc de ve ser e....ita do.
Utilizando a instru~a o data pa ra definir vari6veis U tilizando inStrUliio data, varidveis podem se r declaradas par a 0 programa. Variiveis definidas na instru~ao de clado s sao atribuidas a urn tipo de dado e tambe m podem ter padrces . Sintaxe para a instruCjoo data A seguinte e a -sintaxe para definir um a variavel que utiliza a ins tru~ao data: ~ d.ta , 1[{l )] [type tJ [dec' ...." d) [,,1 ve ·x,,·].
til A Tab ela 7.1 desc reve maneiras erradas e cert as de codificar de literais hexadecimais e numericos.
parameters
Z
... m
au
241
242
Hmo . EM 21 OI.S ABA P/!
DIA 7,DEFININDO DAOOS NO ABAP/t PARTE 1 I
data vl like tl2 [val ue 'xxx ' ] .
• 0 val or inicial padrjo
•
•
•
e0 nome da verievel. v2 e0 nome de uma variavel previamente definida no programa ou e0
If 1
ea especificacso int erna do com primento.
•
(l )
•
It! 0 tipo de d~do.
• de 0 I
xxx I
•
numerc de espacos de decimals (utilizado apenas com
0
ripe p).
eurn literal que fomeee urn valor padrao.
A List agem 7.3 mos tra exemplcs de variaveis definidas com a instrucac
data.
ENTUDA~ Llstagem 7.3 1 2 3 4
Exemplos de vari 6veis defjnidos com a
instru~ao data
data flel) ty pe c. data f2 like fl . data ~ax_nl u e ty pe t ve'lue 100. data cur_dat e t ype d val ue ' 19980211' .
Os nomesde varisvel po dem ter de 1 a 30 caracreres de comp rimento. Eles podem ce nter quaisqu er caract eres, exceto ( ) + • • : e devem conter pelc men os urn caracte re alfabetic o. A SAP recomenda que no mes de variaveis semp re deve m co me car com urn caract ere e nio devem com er urn hrfen . U rn hrfen tern signi ficado espec ial (veja as strings de cam po abaixo). Em vez de urn brfen, voce deve urilizar urn
sublinhado
de dado c. que esu em
U.
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 .
• Quando utilizar a adi~ao 1i ke, a varia-vel que for definida obtem seu eornprimento e ripe de dado da variavel referenciada. Voce nao pede "especificf-los na mesma ins tru c;ao com 1ike .
nome de urn campo que perte'oce a uma tabela ou estrurura no Da ta Diction ary. .
•
e 0. excero pa ra tipo
branco.
onde :
Quando u"tilizar a adiCjao 1; ke, a valor nso e obtido da variavel referenciada, Voce pede espe cificar a adic;io value para dar a variavel urn valor padrio. Se voce nao fizer isso , e atri buido urn valor inicial 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 acessam. Se voce colocar uma instrucic data dep ois do c6digo executavel, as insrrucoes acima dela DaO podem acessar as vari dveis que ela define. Para urn exemplo, veja a Lisragem 7.4.
ENTRADA'" Listagem 7.4 Exe mplo de umo vori6vel que e inco rretomente acessoda
r
a ntes de ser definido
1 report zt I0704. 2 data fl(2) vej ce ' Hi ' . 3 write: fl, f l . 4 data f2(5 ) val ue ' t here' .
ANAUSE Iirltr... A vc rieve l F2 e definido no linho 4 e 0 jnstru~oo wrl t e no lmho 3 esto tentcndc ~ cce ssc-lc. Isso ge rero um erro de sintoxe. A instru~oo dat a no Hnhc quotro devero ser movido ontes do linho 3.
~ 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.
Os seguintes pontos tambem aplicam para a instrucfo dat a:
• 0 co mprimento pad rjo depende do tipo de dad o. (C omprim entospa drao sao Iistados na Ta bela 7.2.)
• 0 tipo de dado padrf o e c (caractere).
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 em sua categoria que vai alem do tratamento normal dad o pa r ourras linguagens. Portan to , eespecialmenre importance para voce ser capaz de reconhecer e distinguir entre as tipos de dados de caractere e numericos.
243
244 I APRENDA EN 21
DIAl IBAP/'
DIA 7:DEANIHOO DAnOS NOABAPl4, PARTE 1
Tipos de dodos de coroctere
as vclcres de sy-datum e sy-u ze! t sao configurcdos no comecc do execucdo de progromo e n60 o ltero m ate que 0 prog rorno termine. Se
O s tipos de dado de caractere sao mostrados na Tabela 7.2. Note qu e eles inc luem 0 tipo n, Compriment'os intemos sao dadcs em bytes. Urn hffen na coluna Max leng th aparece pa ra tipos de dado de comprirnento fixo.
voce precisaracessora data e a he re mais cruel durante a iniciolizoc;:Cio 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 a data e 0 horo ctucis.
Tobela 7.2 Listo de tlpos de dodos de ca roctere r ipo d e dado
Interne
c
corocte re
Descrifjoo
Comprlmento inte rno padrao
Comprimento
Valores
int erno mclximo
validos
Valo r inicial padrao
65535
Q uo lquer
Em bronco
coree . n
texto
65535
0-9
0
0-9 0-9
00000000 000000
Valores abscluros de hera que tern precisgo de milissegundos nao sao 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 os armazene utilizando 0 tipo de dado 1. Veja 0 capitulo sobre analise de tempo de execucao para mais detalhes.
rwmerlcc
d
dote
t
horo
8 (I;xo) 6 (I;xo)
x
hexodecimal
]
65535
O oclqoer
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.
Representc ceo interno de vori6veis As variaveis numericas de texto sao chamadas variaveis numericas de caracrere e armaz enam intei ros posi tives sem sinal. Cads dfgiro ocupa urn byte e intername nte cada urn dele s e armazenado como urn caractere. Esse e urn tipo de dado de caractere. Ele apenas pode conter os caracteres 0-9. U tilize texto num erico para armazenar cameros que sao utilizados como identificado res especfficos, como e 0 caso do s numeros de documento, numeros de cont a e num eros de pedido . AMm disso, utilize-o para variaveis que arm azen arn urn num erico extraidc de urn ripe de dados de caractere. Por exemplo , se voce fo r extrair 0 mes de do is caracteres de urn campo de data e precisar de urna varisvel para arma zena-la, voce devers utilizar urn campo de tipo n. A data e a hora sao tip os de dados de comprimento fixo . Voce nao deve esp ecificar urn co mprime nto na instrucac dat a para elas. Os valo res para var isveis de data e ho ra sao sempre armazenados internamente como YYYYM\1DD e HHMMSS, respecrivamente. A data atual esrs disp onive l no campo de sistema sy-datum e a hora arual em sy-uze i t .
Tipos de dodos numerices O s tipos de dados numericos sao mostrados na 'Fabela 7.3. U rn hifen na coIuna Co mprim en to maximo indica que 0 comprimento nao pode ser alterado. Urn asterisco indica que 0 atributo e dependence de maquina.
Tabela 7.3 Tlpos de dodos
numericos
rlpo de dodo
Descrh;:&o
Comprimenlo Comprimenlo Decimals Intemo miudmo miodmos padrao
Va loNs 'Icliidos
i
inteiro
4 (fixo)
_231 a +2 31
P
decimal
8
0 16
empccctedc
f
ponte f1 ul1Jonle
8
. 8
Yalor Inldal padrao
0
"
0路9.
0
15路
. 1E"'307 a lE308
0.0
Todas as varisveis na Tabela 7.3 esrjc com sin al. Nas variaveis de ponto flutuante, 0 expoente tambem esu com sinal. Utilize inteiros para variaveis que serjc envolvidas em ctlculos simples ou quando nenhum ponto decimal for exigido. Variaveis como contadores, indices, posicoes au deslocarnentos sao bans exemplos. Urna varifvel decimal armazena (l *2) - 1 dfgiros, onde l e o ccmprimento da varifvel em bytes. Valo res decimais sao armazenadc s em do is dfgitos por byte. excero 0 byte final, que Cantero urn unic o digito e urn sinal. 0 pr6prio POntO de cimal nac e armezenado; 路e urn atriburo da defini<;ao. Por exemplo, data f1 (4) type p defineuma varidvel fl que tern quatro bytes de comprimento 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.
245
~I
246
w
II I_I I I"
w w ..
i
• 'W . . . . . w w •
•
w
w _
_ .'W'
- --
II,.
CIA 7:DEAHIHOO DADOS NOABAP/4, PARTE 1 "RENDA EM 2\ DIAS ABAP/'
Figurg 7 2 Va/ores decimais empocotodos s60 armazenodos em dais drgilos par byte. 0
byte finol
Ta b e la 7 .4 Ccntlnuccdo
data fl(4) type p.
Elm"'tRl ~"'I
Descri~ao
Definiljao de dados do ABAP/ 4
cuky
Tecla de monetcnc
c(s)
Tipo de dodos
6~ ~~m
de DDIC
p decima ls 2.
e vmo
curr
Monet6r io
dec
Decimal
p« L+2) /2 ) p« L+2)/2)
flt p
Ponto flutuante
f
ormozenodo e
i nU
Inteiro de 1 byte
(nenhum)
portonto n60 ocvoc
i nt 2
lntelrc de 2 bytes
(nenhum)
espotjo no compo; ele e parle do definic;60.
i nt4
Inteiro de 4 bytes
lang
Unguogem
numc
Texto nurnericc
elrCeC;aOi ele ormozena urn
un;CO d;gito eo sinal. a ponto decimal naa e
Variaveis de ponte flutuantes sao sempre aproximadas. Elas podem ser utilizadas par a calculos que exigem valores muito gracdes au muitos espaccs decimai~. A precisac de ate 15 espacos decimais e possfvel, mas isso e dependente de hardware.
~o
Tenha cuidodo quando voce especlflccvclcres iniciois no instruc;oo de dodos utilizondo a cdlcec de volar. Esses vclores nee soo volidodos
prec
Prectsec
quan
Quontidode
uni t
Unidodes
p«L+2) / 2) c (L)
Utilizando a instru~aa parameters para definir vari6veis NOV{) ~
Um pc rem etrc e um tipo de vcr tove l especial que e definida utilizando 0 tnstrucec parameters. Esse instruc;60 e muito porecida co m a'instru¢o data, mas quando voce 'executor 0 programa, 0 sistemo exibirc as pcrcmetrc s como compos de entrada em umo tela de sele<;ao antes de 0 programo reolmente ccmeccr 0 ser 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 os names vori6veis, exceto nos cases:
Utilizando a odic;:ao de valor, voce pode otribuir vclcres Invclldos pora inteiros, vorioveis de tempo e de data, texto numerlcc, vori6veis decimois empocotodos ou vari6veis de ponto f1utvantes, octdentclmente ou intencionolmente. Os resultados dessa otribuit;oo sao dependente s de mc qulnc e sao indefinidos.
Tn.110
Mapeando lipos de dodos de ODIC para lipos de dodos do ABAP/4
Descriljco
Definiljco de dados do ABAP/4
de DDIC char
Ccroctere
c(L)
clnt
Cliente
c(3)
dats
Data
d
tims
Tempo
t
r
• 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 Dictionary e as correspon demes definic;6es de dados no ABAP/4. leo comprimento especificado n o dominic. Para uma lista complete, consulte a ajuda Fl para a ins trucac tab' es.
Tipo de dodos
c(l ) n(L) x(2)
para vlsvcluc r se eles seo au nc o ccmpctlve ls com a tipo de dodo.
Tabela 7.4 Tipos de dados no Data Didionary e sews correspandentes no ABAP/4
V d
• Alem de litera is e constantes, voce tambem pode utilizar uma varavel para definir urn valor padrao.
CII
Z
Sintaxe para a instru<;ao parameters
o seguinte c6digo ea sintaxe para definir uma variavel que utiliza a instruc;ao
S '"
T
parameters. parameters pl( (l)] [type t] [deci mals d] ...
ou parameters pl 1i ke vl ... [default 'xxx'] [obliga tory] [lower case] [as checkbox] [radiobutton group g].
onde:
247
I
.. . . . .. . . • • .... 248
DIA 7:DEFlNINDO DAOOS HO ABAP/4, PARTE 1
APRENDA EM 21 DlAS AUPI4
•
•
e0 nome.de paramerro. 1'1 e 0 nome de uma variave l ou pardm etro previamente definidos au
pl
eo nome de urn campo que per tence a uma tabe la a u estrutura no D ata Dictionary. •
(l)
ea especifi cacfo intema de comprimento .
• teo tipo de dado. • •
d e 0 mimero de espacos decim ais (utilizado apen as co m tipo p). I xxx I e uma variavel literal au pr eviamente definida qu e Fomece urn valor padrao.
r b2 radi obut t on group gl , 8 rb3 r adi obutton group g1. 9 10 wri te :/ 'You ent ere d:' . pI -" , pI , 11 / p2 -", p2, 12 / p3 - ", p3. 13 / chI-', cbi , 14 / cb2=" , cbz, 15 / r bIs ' , r bI , 16 / 17 / rb2" '. rb2. r b3z ' , rb3. 18 /
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
,. parameters 1 2 3 4 5
par amet e rs parameters parameters parameters parameters
pl (2) t ype c. p2 like pI. mall_valu e type ; default 100. cur_date type d def eul t '19980211' obl ; gatory . cur_date 11ke sy-da tum def ault sy- dat um obli gatory.
Um progro,!,o de exemplo utilizanda para meters e dodo no listogem 1.6 e tela de entrcdc que ele gero c pcrece . H6 duos vori occ es do i n s1 rv~ea parameters: parameter e parameters . Operacionalmente, n50 h6 nenbcrnc dlferencc entre as duos; elcs sdo completamente intercombi6veis. Entretanto , se voce tento obter a juda Fl no instrv; 60 parameter, nenhum a ser6 encoofrcdc. Per esse rczec, recome ndo que voce utilize ope nas a instrut;aO paramet er s .
type
Mesmo que a instrut;50 data.
decima ls
Mesma que a instrvt;oo data .
11 ke
Mesma que a instru ~e o data . Mesma que a odic;.oo valu e no instru¢o data.
default obligatory
o usucric deve inserir um volar no compo a ntes de 0
lower case
progroma se r executado. Impede que vclcres seja m troduzidos em tetras ma juscules.
as chec kbox
Exibe
radiobu t ton group
°
Urn progra,made exemplo eapresentado na Listagem 7.6)e a telade entra da que ele gera aperece na Figura 7.3. Por favor, execute esse relatorio agora. ENTRADAlrrrrr.... Listagem 7.6 Exemplo de urn proqrcmc que ocelto poru metros de ,. e ntrada utilizondo 0 lnstrucco par amet ers 1 report zt x0706. 2 parameters: pl(lS) type c, 3 p2 l i ke pI obligatory l ower case, 4 p3 1; ke sy-datum defa ul t 5y-datum, 5 cbl as checkbox, 6 cb2 as checkbox, 7 r bl radi obutton gr oup gl defa ult 'X',
Fig·ura
7 3
Quando vocl! executo 0 relot6rio
z tx0106, os primeiros porometros oparecem em umo tela de sele'ido. POrOmetros obrigat6rios sdo indicodos com pontos de interroga'ioo. Paro come'iOr 0 processamento, a usu6rio deve pressianor 0 batao Execute no borro de ferrom enfos Application.
2.
0
compo de entra da como umo coixo de selecec.
Exibe a campo de entrad a como um bofec de opc;.60 pertencend o 00 grupo g.
249
250 [ APRENDA EM 21
DIAS AIAP/4
Da7,DEIlNINDDD'OOS HO ABAP/I. PAml I
O s seguintes pontes tambem se aplicam •
ainstru~ao parameters:
Quando a tela de sele~ao emostrada, campos obrigat6rios contem urn
ponte de inrerrogaclo. Estes indicam ao usudrio que os campos devem ser preenchidos antes de continuar. •
0 tipo de dado padrao e c (caracrere).
•
0 valor padrfo e 0, exceto pua tipo de dado c. que esta em branco. adi~ao val ue aceita urn literal, uma varisvel sy ou uma varisvel previamente definida, no programa.
• A
• Quando utilizar a adi~ao 1i ke, 0 parametro sendo definidc obtem seu comprimento e ripe de dado da varidvel referenciada. Voce Dao pode especifica-los na mesma instru~ao com 1ike .
• 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 padrio ao parimetro. Se voce nao Fizer isso, sera. arribufdo urn valor inicial pad rgo de 0 (ou em branco para urn ripe de dado de caract ere). •
Como data, a insrructo parameters pede aparecer em qualquer lugar em urn programa, mas a defini~ao deve vir fisieamente antes das instrucoes que a acessam.
.•
Os parametres apar ecem em uma tela de sele~ao na mesma ordem em que sao definidos no programa.
• Todas as instrucoes parameters, independentemente de onde elas aparecem no prograrna, sao agrupadas pelo inrerprerador do ABAP/4 e exibidas na tela de sele!jao ao mesmo tempo. Mesmo se voce colocar uma instruci c parameter no me io do programa, esse partmetrc ainda sera exibido ria tela de sele~ao antes de 0 programa ser executado. • Os parametros sio exibidos em urn formato SAP padno. Para modificar sua aparencia, por exemplo, moYa 0 campo de entrada para a esquerda ou moYa 0 r6rulo para a direita, utilize a ins tru!jao sel ect1onscreen, descrita no Dia 21.
Ulilizanda a
adi~ao :
lelras minusculas
Todos os valores digitados em urn parimetro sao traduzidos em letras maius cu1aspor padn.o. Para desa tivar essa tradu~o, utilize a adiljao l ower case. Essa adilj3.o apenas se aplica a campos de caractere.
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 utiliza quando quiser apresentar ao usuano ligado/desligado (in/off) ou tip o
de escolha verdadeiro/falso (true/false) . Voce pode utilizar mais de uma caixa de seleljio em uma tela. Se voce river rmilriplas caixas de selecac em urna tela, elas operarao completamente independentes uma da outra. 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. configurado como 0 padrao ripe c e.comprimento 1. 0 parlmetro contera uma letra maitiscula Xse a caixa de sele~aa estiver marcada; e estara em branco se a caixa de selecac estiver limpa. Se a caixa de se1e~io inicialmente deve center uma me-rca de verifica!jio, utilize um valor padrio de letra X maiuscula. Execute o programa ztx506 para ver a caixa de seleljao. espaco e a capital X sao os deices valores validos. Nenhum out re valor evalido para uma caixa de selecao.
a
Ulilizando a
ad i~ao:
radi obut ton group g
Como as caixas de selecso, urn boeso de 0P!jao tam bern tern dois estados: 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 qualquer mimero de boeces de op~:ao em urn grupo, mas apen as urn ped e estar selecionado de cada vez . Eles sao utilizados quando voce precisa apresentar 010 usudrio uma lista de altemativas em que apenas uma 0pljio po de ser escolhida. Para exibir .um parametrc como urn bctac de 0p!jao l utili ze a adi~io ra diobutton group g. Voce nao pode especificar urn ripe de dad o ou comprimenta; ele sera padrao configurado como 0 padrac tip o c e comprimento 1. 9 e urn nome de gropo arbitraric de urn a quatro caractere s de comprimento. Voce pede ter mais de urn gropo em urn programa. parametro camera uma letra Xse a batao de op~o estiver selecionado; 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 outrO valor e valido par a urn botao de opljio. Exp erimen te isso iniciando 0 prognma ztx006.
a
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 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 pos de Data Dictionary, voce pod e recuperar 0 r6ru.lo automaticamen te do clemen to de clados.
Allerando rclulos de pa rametro sctEEN CAM ~ Inide a ScreenCom"How to Change Input Field labels" agora.
251
T I . . . ... W_JI"I 252
O~ 7,OEFINIHOODADOS HO 'B'P/!, P'RTE 1 I
APRENOA EM 21 OIAS ABAP!4 Par~.alterar urn r6rolo de campo de entrada do para-metr o:
1. ·C omece na tela ABAP/4 Editor: Edit Program. 2. Escolha 0 caminho de menu Goto->Text Elements. A tela ABAP/4 Text Elements e exibida. N o Program Field esta seu no me atual de programa. 3. Selecione 0 borao de 0Pliao Selection Texts . 4. P ressioae 0 borao Change. A t ela ABAP / 4 Text Elem ents: Change PARAMETERS/SELECT-OPTIONS e exibida. Aqui, voce po de
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: Cba nge PA RAMETERS/ SELEC T-O PTIONS e escolher 0 caminho de menu Utilities-> Copy DD Text ou Utilities-> Copy D D 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. Atribuir a ume cclxc de seleceo a u um batao de opc;ao um outro valor pcdrcc que noo espccc ou X mclcsculc noo e vclldc. Emboro umo avolioc;ao superficial posso noo expor problemos, testes oprofundados revelorom comportomento imprevisivel nos progromosde teste.
inserir ma nualmente rotulos na coluna Text. 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 elemento de dados para urn dnico campo, posicione seu 0 cursor no campo e escolha 0 caminho de menu U tilitie s-> C opy DD Tex t. 0 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 para conter os caracteres DOIe. Na parte inferior da janela, a mensa gem Oiction ary texts transferred f or select io n xxx aparece.
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 campo Text torna-se desprotegido e os caract eres ODIC desaparecem do ca~pa Type. Na parte inferi or da janela, aparece a m en sagem Text for xxx no long er transferred. from Di ctionary .. 8. Para recuperar r6tulas de cam po para rodos os parametres que sao definidos como campos de DDIC, escolha 0 caminho de menu Utilities->Copy DD Texts. O s r6tulos de campo para todos os campos de DDIC sao recuperados e prot egid os. Quaisquer valore s existentes na coluna T ext sao sobrescritos. Na parte inferior da janela, aparecea mensagemAl 1 selec ti on t ext s t ransferre d from Di cti onary . 9. Pressione 0 batao Save na barra de ferramen tas Applicat ion. N a parte inferior d a janela, aparece a m ensagem Text el ements f or progra m xxxxx in 1anguage E accept ed.
10. P ressione
Efeito de definic;:6es de parametro : t yp e versus 1i ke Sempre utilize a adifilo likepara definir um parametTo . Quando voce a utiliza, o pargmerro ad quire os seguintes atri butos d e Data Dictionary: •
A ajuda Fl de dados.
eadquirida a partir do botsc Documentation no elemento
• A ajud a F4 e adquirida se seu pargm et ro for como urn que tern uma t abel a de verificacac.
• Urn r6tulo de CaInPO
ead quirido do eleme n t o de dados.
Al em das van t agens fomecidas pelo as aspectos acima,
• Urn r6tulo de cam po obtido do D at a D ictionary e garant id am ente co ere nte com 0 r6tule d e campo aprese ntado por outrcs p ro gramas para 0 mesmo campo (des de que des tambem os obtenham do DDIC) . 1sso elimina a confu sac d e t er dois campos que sao rotulad o s de m ane ira dif erente e referenciam os mesrnos clades. •
As modificacoes no tip o ou comprimen tc de dad o no D D 1C autom ati camen t e sao refl etidas por seu programa.
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 selecac e os b c toes de opcso. Se necessdrio, voce deve criar urna estru ru ra no DDlC d e modo que voce p ossa ut ilizer 1i ke e) pelo menos, obter ajuda Fl. Note qu e a ajuda Fl esca disp onfvel ate para bot6es de 0Pljao e caixas de selecao.
0 batao Back na barra de ferramentas Ap plication duas vezes para re tomar para seu p ro grama.
Se voce quiser anular 0 rotulo de DDIC para alguns campos mas nac outro s, digite seus r6tulos na coluna T ext e endo escolha 0 caminho de menu U riliries -c-Supplement DD Tex ts . T od os os campos T ext em branco serao preenchidos a partir do Data Dictionary , deixando apenas os valo res que voce in seriu.
';""'f-
tt:~~,-
.
Efeito de uma tabela de verifi cccdo em um parametro Se voce define urn parfimetro utiliz ando 1i ke st-fl e s t -f l te rn u ma tabela de verificacao e u ma seta para baix o aparece no fim do campo de en trada quando voce exec uta 0 programa. Voce pode pressiona r a seta para baixo para obter
I
253
I
,
aW . -"a .W 254 I
• .. WI
_ . _
.WW
_
OIA7: DEANINDODAOOSMOAWH,PARTE l
APRE ND A EM 21 DJAS ABAP/4
• Os valores digitados nos campos de ent rada de pardmetrc sao por padrac corrvertidos em letras maiiisculas. Para.inrerromp er a cooversao, utilize a adic;ao l owe r case.
uma lists de valores vili dos para esse campo . Eneretan ro, 0 valor inserido em urn campo de en trada de pararnetro nao e validadc contra a tabela d e verificacao. A valida~o somente ocorre para telas de didlogo como as vistas na transacao se16. 0 usuario pade digirar qualquer valor no campo de ent rada e isso sera pass ado para 0 programa quando pressionar 0 batao Execu te.
Voce pede executor sumi pr6prios volidoC;6es de tela de setecec. Elos deta lhados no Die 2 1, 'Telos de se l~co · .
sOo
•
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.
• 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
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 njio-modificiveis sao literais e constantes. O s ob jeto s de dados modificaveis sao variaveis, strings de campo e tabelas intemas. as o bjetos de dadcs sao alocadcs na area de rolagem do programa e liberados quando programa termina. •
as objeros de dad os tern tres nfveis de visibilidade: local , global e lugar a partir
exrema. A visibilidade d. urn objeto d. dados indica de onde 0 o bjeto de dados e acessfvel. .
°
• 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. •
• Voce pede alterar as r6tulos de campo de entrada de pardmerro por meio do caminho de menu Goto- >Text Elements.
IFa~a L....:.-
- - " _
Utilize urn sublinhado pore to ma r seus nomes de vcrlevel mais mceis de ler.
Resumo
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 de dados numerico s sao i . p e f.
• As varidveis po dem ser definidas utili zandc as instrucoes dat a e paramet er s. A diferenlja e que , quan do 0 programa e ex~cutado, 0 sistema exibe urn camp o de entrada para cada para metro em um a tela de sc:leljao. 0 usuano pode digitar n ovos valores ou a.lterarvalo resMpa-
dr.i:o.
, 255
Nco utilize hlfen em um nome de vari6vel; um hifen de limito os componentes de umo string de compo.
P&R
o
Par que pre ciso codifi car em letras maiusculas entre aspas? Como saberei se precise codificar em letras minuscules?
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 determina r se a s dad os sao ccevertidos pe squ isando no dominio. Se 0 tipo de dado do camp o for CHAR e se a caixa de selec;a.o Lower C ase esriver marcada, ennc 0 campo ap enas contera m aiuscula s e m inuscul as mistu radas.
o
Posso defmir urn par.imetro que aceita mdltipios valores do usuano ?
o
Sim , a in st ru ljaO de opcee s selecionada permite que a usuario digice multipl e s valores e criterio s complexos.
W o rksh o p
o Works hop oferece duas man eiras de voce verificar 0
que apre ndeu ne ste capitulo. A se ljao T este oferece perguntas para ajudar a solidific ar seu enrendimento do co nt eudo abordado e a seljao Exe rci'cio pennite que voce pratique 0 que apr endeu . Voce pode c:n cont rar as resp ostas as perguntas do T este e aos exerdcios DO Apen dice B, GRe spostas as perguntas e aos exercIcios".
256
APREH OA EM21 DIAl ABA PH
Teste
o que hi de em-do com estes Iiterais, se eque algaesci errado? (Pede havermais
SEMANA
de urn erro em cadaurn e algunsnao tern erros.] Escreva as defini~6es corretas.
1
1. Literal de strin g de caractere: •Don I t bi te , II
2. Literal de po n to flut uante: I +2.2F03. 3 I 3.. Literal numeric o : - 99
4. S. 6. 7. 8. 9.
Literal hexadecimal: x
I
ooaOf'
Literal numerico: 9.9-
Literal de ponto [lutuante: ' 1. 1£308 Literal hexadecimal: HA Literal de String de caractere: Literal de String de caractere: r I
I
Reviscio
I
I I I I
I I . I I I
N a semana passada, voce completou as seguintes tarefas:
o
• aprendeu sabre 0 ambience R/3, incluindo Basis, clientes de logon, o ABAP/4 D evelopm ent Wo rkbench e a Data Dictionary
1. data first·name(5) type'c. 2. data fl type character . 3. data fl (20) typ e c. 4. data 1a(5) type i. 5. data per -cent type p val ue 55.5. 6. dat a fl(2) type p decteeta 2 value ' 12 .3' .
•
qu e hi de err ado corn est as definicoes de dados? (Pa d e haver mais de urn erro em cada urn e alguns nao t ern erros.] Escreva as definiljoes corretas.
escreveu programas simples de ABAP/4 e fam iliarizou-se com
0
ABAP/ 4 Editor • criou tabelas transparentes, elementos de dados e dominios •
criou cbaves estrangeiras para oferecer ajuda F4 para
0
usuario
• documentou elemen tos de dados a fun de oferecer ajuda F l •
Exerdcio 1 Escr eva urn programa utilizan do parame tr e s par a a Figura 7.4.
,
.'
criou indices secun darios e bu ffers para acelerar a acesso de dados
~
--- 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 pr6prias 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 expressoes 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 interrupcao 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 compreender 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 ~ 262 I
'If
w
w . - -
.....--.-
- -
- ~ - -- ----- -- D~UEA"N DODADOS ND I.BAI'/4. PARTE I I
APlENDA E' 21 DIAS ABAP"
o
Definindo strings d e com po
ABAP/ 4 tern uma coastame predefinida: SPACE. C orresponde a urna constante com urn valor igual aos espacos, Voce pcdera utiliza-la no Iugar do literal ' I .
Sintaxe da en 0 c6digo
jnstru~oo CONSTANTS
a seguir dem ons tra a sintaxe para a definic;ao de urn a cons tan te. E 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 ~ varisv eis definidas com 0 u sa da insr ru cio data. Veja a Lisragem 8.1 quanta a m exemp los das deficicoes de con stante.
Z
T
consta nt s cl [{l) ] [ typ e t ] [deci mals II] va'lue 'xxx'.
ou const ant s c1 l1 ke cv value ' xxx ' ,
I
!j !
•
cl
e0 nome da con sta nte.
•
cv
e a nom e de uma constante ou varisvel previament e definida ou e
o nome d e urn cam poque pertence a uma tab ela ou estrurura rio D ata Di ctionary. {l}
D uas icsrrucces sao geralmente utilizadas para definir Strings de cam po .
I
em um programa ABAP/4:
I
• teo ripe de dado .
• 'xxx I
numero de casas decimais (utilizadas apenas com a tip o p).
eum literal qu e fomeee 0 valor cia const ant s.
I 1
-
1 cons ta nt s cl12} t ype c valu e ' M' . 2 const ant s c2 like cl value 'BB' . 3 const ants error_t hre shol d t ype t value 5. 4 constan t s amal gamatio n_dat e l i ke sy-dat um value ' 19970305 ' .
•
t abl es
Sinlaxe para a definiccc de uma sIring de campo uliliza ndo a i n slru~Ci o DATA
III A seguir, veja a sintaxe para a defini~o de uma string de campo utilizando a Z instnl/Sao dat a.
S
...
1 ft .
ENIRADA ~ Lislagem 8.1 Defini,6e s de consta nts
data
Uma st ring de campo definida com 0 usa' da instrucio data corre sp onde a um objeto de dada modificavel, Ela pede ter visibiliclade local ou global.
ea especificacjo intema de eomprimento.
• de0
•
Utilizc ndo a instrucdo DATA para defin ir urno string d e campo
code:
•
Uma string de compo correspond e a um lipo de vcricvel e e 0 eq uivole nte de umo estrutura no ODIC, porem e definido dentro de um programa ABAP/4 . Como umo estruturo, umo string de compo corresponde a umo serie de co mpos ogrupo dos so b um no me comum. A diiere nco principal e 0 lugor ern que reside 0 definilioo . A estrutura de te rmas no R/3 se c pllcc apenas a urn c bjetc do Dato Dictionary 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 .
IlOYO ...
mMO "
data: begi n of /sl. jl [(l )] [t ype / 2[(1) ] [ty pe
el tJ
[decimals d] [value ' xxx '] . [deci mals d) [val ue ' xxx ' ] ,
end of /sl .
ou dat a begin of i sl . data fl [(l }] [type t] [deci mals d] [val ue ' xxx'] . data i 2 [ (0 ] [type t] ,[ deci mal s d] [value 'xxx '] . [i ncl ude structure stl . ] data end of t st ,
As constcntes podern ser definidos em urn poo l de tipos. Quando 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 ca pitulo.
ou data is1 1; ke i s2.
onde:
e 0 nome da s~ring de campo.
•
j51
•
f1 e j2 sao os camp os [tambem denominados componenres) da string
de campo.
263
264
DIA l : DEfININDO DAOOS NO ABJ.1/4, PAm 2
.PREHO. EM 21 DI.S .BAP/4 • ! 52
e0
•
ea especificacac int erna de comprimento.
nom e de uma string de 'campo previamente definida au nome de uma tabela ou estrutura no Data Dic tionary. ( I)
ea
• t eo tipo de dado. •
de 0
• ' xxx I
ndmero de casu decimais (utilizadas apenas com a tipo p).
eurn literal que fornece urn valor padrio',
• stl e 0 no me de urna estrutura au tabela no Data Dictionary.
As strings de campo seguemas mesmas regras das variaveis definidas com o usa da instrucio dat a. Pa ra referi r-se a urn compo n ent e individu al, seu nome deverd ter como prefixo 0 nome cia string de campo e urn trace (~ ). Por exemplo, para escrever 0 componente number cia string de campo cust_info, voce utilizaria a instru~o write cust in f o-number . A instrucio include nia faz parte cia instru ci o data : ela e uma instrucao 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 sao mosmdos nas Lisragens de 8.2 a 8.6.
EmAOA"
Listagem 8.3 Umo string de campo pede conter umo o utro string de
"
compo 1 report ztxG803. 2 data : begin of names , 3 namel li ke 4 nameZ like 5 end of name s. 6 dat a: begin of cust _i nfo , 7 number (10) type 8 nm li ke 9 end of cust_info.
ccmc uma string de campo
14
15 ....tte: 16 17
I
cust_in fo-number, cust_in fo -nm-namel. cust _1nfo-nm-nameZ .
.... A linho 2 inicio a defini¢o da string de compo names. Cc ntem dois compos 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 como string de compo names. Qua ndo utiliza do nos linha s 12 e 13, nm e inc1uido no nome do componente. .
lK.lJJSE,.
Listagem 8.4 Uma string de compo pode ser ,. um o tobela ou estruturo do DDIC 1 2 3 4 5 6 7
B
9 totals_I -debits = 100. 10 totals_I -count .. 10. 11 t ota ls _2-debHs .. 200.
r eport ztx0804. data: my_l fal l 1ke %tx l f al, my_addr like ztxa ddr .
deftntdc exotamente como
· como uma tabela no ODIC · como uma estrutura no DOIC
ll\Y_l fal-n amel'" ' Andrea Mille r'. my_lfal - t elf l .. ' 1-243- 2746'. my_addr -landl '" 'CA' .
B
9 write : I lly_ltal - namel , 10 l'Iy_lfa l - name2. 11 my_addr-landl.
12
I t ota ls _I -regi on. t ota l s_I - debit s , totals_I- count . totals_2- region. t otals_2-debit s , totals_2-count .
.
.... A linho 2 inicio a defini¢o do string de compo to t al s 1. Elo cc ntem ires ca mpos, 0 primeiro des tres e inid olizado com a valo r ' unk nown'. No Hohc 7, a string de compo totals 2 definido exctornente como to t a l s 1. 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.
,lj1.lJ.IS~ ,.
N
10
EIflRADA"
I report ztx 0802. 2 data: begin of t otals I, 3 : r egion(]) ;alu e 'unknown', 4 debits(lS) type p, 5 count type t , 6 end of totals_I, 7 t otals_2 l i ke tot als _I.
I
n, names,
11 cU5t_in fo- nlUllber .. 15. 12 cust _1nfo- nm- name l . '" 'Ja ck'. 13 cust_1nfo- nm- name2 '" ' Gordon'.
ENTRADA'" Listagem 8.2 Um exernplo simples de umo string de compo definido ,. com a use do instruc;oe data
13 write : 14
at xknat - neeet , ltxknal -nameZ,
e
a
No linho 2, lnY_1fa l e definido exctcmente como a tc belc do ODIC. ztxl fal. e my_addr e definida como 0 e strufuro do ODIC, ztxadd r .
265
.... -_ ..... _--266
------
- - - -
-
-
--
,01A I: DEFlNINDODADOS NOABAP/~. PARTE 2
APRENOA EM 21 0lA5 ASAP"
Perc visuolizor 0 definil)oo do ODIC do tcbelo ztxlfo 1, d~ dois diqu es no nome dele no seu c6digo-fonte.
ENIRADA~
List a gem 8.S As tobelas e est ruturos do ODIC pad em tc mbem ser
tnclvtdos em umo string de compo
1 report ztx OB05. 2 data begin of fsL 3 include structure ztxlfa1. 4 data : extra_f ield(3) t ype c . 5 end of fs L 6
7 fsl -lifnr • 12. 8 fsl -extra_f ield • ' xyz ' . 9
10 write : / fsl -l1fnr. 11 fsl-extra_f i eld .
AMAuSE"
A llnhc 2 inido 0 definit;oo do string de campo fsl. A instruc;Oo termino com ,. urn ponto, porque inc lude structure noo e porte do instrut;60 data; e umo instru¢o independente. No Ilnhc 3, a estrvturo do tc belc ztxl fal e incluldo em urno string de campo . Na linho 4, um outro compo e indul do no shjng de compo depcls des campos do tc belc zt xl f al. Qu a isquer ne meros de compos podem ser incluidos, como 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 nom e de co rnponente intermedi6rio .
1 r eport ztx 0806. 2 dat a: begin of fs 1. mylfal l tke ztxlfa1. 3 4 extra_field(3) type c. 5 end of tst , 6
7 h1-mylfal-l1fnr • 12. 8h1 -ext ra_fi eld • ' xyz' . 9 10 wr i t e : / h1 -mylfa1- l ifnr . 11 fs1 -extra f ield .
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.
Utilizando uma string de cam po co mo uma voricve l do tipo char Voce nao apenas pede enderecar comp onentes individuais de uma string de campo, como tambem pede ec derecar todos as eomp onentes de uma s6 vez, como se fosse m um a (mica variavel do tipo char. A Listagem 8.7 ilustra esse conceito. .... List ag em 8. 7 Urn exemp lo do ut ilizo~ao de umo string de compo como
EHTUOA,.
diversas vori6veis e como umo (mica vo ri6vel do tipo char
1 report ztx 0807. 2 data : begi n of fs1, 3 c1 value ' A' , 4 c2 value '8' , 5 c3 value -c- , 6 end of hI. 7 8 write : / fs1-c1, fs1 -c2. fs1 -c3, 9 I fs!. 10
11 151 • 'XYZ'.
12 13 wri t e : / fsl ·c1, fsl-c2, fsl · c3. 14 / fsf.
o c6digo na Listagem 8.7 deve produzir esta saida: SAlOl ~
ABC ABC XYZ XYZ
AKA
.. As linhos de 2
0 6 definem a string de ca mpo f s l. Esso string possui tr!s componentes, coda urn com um vclc r podnSo. No linha 8, coda componente e escritc individualme nte. No linho 9, a string de compo e escritc como se fosse uma 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 compo , novomente trotando -o como uma vcricvel char. A scfdc resultante mostro que coda componente reflefea clterocoo, porque este c acessondo 0 mesmo armozenomento .
USE ,.
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.
267
268
.APREND A EK ! 1 DIASABAP/'
EIITRADA'" Listagem 8.8 Urn exemplo de atribuit;60 envolvendo duos strings de ~ campo 1 report ztx0808. 2 data: begin of 1s1. 3 cl value ' A'. 4 c2 value 'B', S c3 value 'C'. 6 end of hI , 7 152 like fs l .
•
e 0 nome cia string de campo. Urna tabela ou estrutura com a mesmc nome deve existir no Data Dictiona ry.
151
ENTiADA'" Listagem 8 -,9 Exemplo simples de uma string ,. usa do instru~co tables
de compo definida co m
0
1 report ztx0809.
2 3 4 5 6 7
a 9 152 z 151. 10 write: I tsz -cf, rsz-ea, 152-c3 .
o c6digo na Listagem 8.8 deve produzir esta saida:
sliol ~
269
. DIAl, DEANINDODADDS ND ABAP/4, PAm!
tables ztxlfal. zt xlfal-namel • 'Bugsy ' . zt xlfal·landl ~ 'US '. write :
I
ztxlfal.namel , ztxlfal-landl.
ABC
ANWSf 1IIrrr... " A linho 2 define a string de compo ztxl f al. Suo definkc c e exotomente iguol
r
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 fosse umo unicc vcrtcvel do tipo char. No linho 10, as componentes de f52 sao totclmente escritos.
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.
I
SI!
~ ..
Umo string de campo contendo tipos de dado num erlccs requer ccns'derococ especial durante as atribuic;6es. Esses ccnslderocees se reo obo rdados no Die 9, no secec "Atribuic;6es H
String de compo definido utilizando TABLES inte rog indo com SELECT A instrucao tables faz mais do que apenas definir uma string de campo. Ela realiza duas a~6es:
•
Utilizan do a instr uc;iio TAB LES para definir umo string de compo A string de campo definida com 0 usc cia instrucac tabl es corresponde a urn 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 o usa cia instruc io data. Urn exemplo de urn programa que utilize urna String de campo tabl es aparece na Listagem 8.9.
Sintaxe para a deflnicco de umo string de compo utilizondo a instrucco TABLES A seguir, veja a sintaxe para a definicio de urna strin g de campo utilizando a ins trucfc tabl es. tabl es [sl ,
onde:
• Define uma String de campo. • Farnece ao programa 0 acesso a uma tabela de banco de dado s com mesmo nome, se uma existi r.
0
o primeiro exemplo da instrucio sel ect ereproduzido na Listagem 8.10. Voce pede agora analisa-lo sob uma nova persp ect iva. ~NmDA~ Listagem 8.10 Seu segundo progra mo, revisitodo 1 repor t ztxOBlO . 2 tab les ztxlfal. 3 sel ect * from ztxlfal into z lfd or der by l ifnr . wr1"te I z lfa l -11fnr . 4
5
endsel ect ,
A linho 2 define a string de compo zt xl fal. Suo defini<;iio e exctc mente igu oJ 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 a ocesso a tobelc. a que slqnificc que 0 mesma pode agora serutilizadoem vmo instrv<;50
ANALISE .....
r
....... w w
~f ·-"' '' '' '' ''' '"
270
•
WW
-- CIA I, D£fIN1NDO DADOS NOw.Pf4, PARTE 2
'IiEND' "EM21 DIAS ABAPH
sel ect. Sempre que a linha 3 e executoda, um registre e lido a partirdo tobelo do banco 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).
onde: •
•
tl
vl
e 0 nome do tipo. 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 e externa, independentemente dolocal ondeedqinidanoprograma. 1S 50 signifies que se voce colocar u rna inStru«?o tabl es em uma sub-retina, a definic;ao sera 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, em urn programa de chamada e em urn programa chamado, a mesma instrucac tabl es aparecer,essasStringsde campo compartilharao a mesma memoria, Esse conceito eilustrado n a Figura 8.1. Quando 0 programa chamado for executado, ele "veri" 0 valor em ztxlfa1 a partir do primeiro programa. Se ele alterar ztxlf a1, 0 programa de chamada avera" af·altera~6es quando recupe rar 0 controle. F lgur n 8 1
/ve o de mem6rio
As cle finifjOes de tobe las id'nticos em
um programa de chomado e em um
Progl'Clmo de chcmcdc Tobelas m.lfo1.
c:omportilhodo
I
I
Progrcmo c:homodo Tabelas ztxlfo 1.'
.•
compornlhodo por essos strings de
ea especificacao interna de com prim ento.
•
t eo tipo de dado .
•
de 0 mimero de casas decimais (utilizadas apenas com 0 tipo p).
As Lisragens 8.11 e 8.12 mostram exemplos de pr ogramas que definem e utilizarn. seus pr6prios tipos de dados .
ENTRADA'" Listagem 8.11 Simples exemplo de um tipo de dodo definido pelo
~ usu6rio char2
1 report ztx0811. 2 typ es char2 (2) t ype c . 3 dat a: 1,'1 t ype char2 val ue ' AS' . 4 v2 t ype char2 value 'CD '.
s 6 write: 'Ill. 1,'2. :' .
programo chomado fat com qce 0 mem6rio sejo
(l)
.
o c6digo no Listagem 8.11 produz esta saida: (choma outro progl'Cl mo)
SAiD! ~
AS CD
,
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 Voce pede definir seus pr6prios tipo s de dados utilizando a instru~o t ypes e basea-los nos tipos de dados existentes.
Sintoxe para ci instr!J~ 60 TYPES
!!!
A seguir, veja a sintaxe para a definicac de um tipo utilizando a insrrucio t ypes.
~
typu t1[(l)] [type t] [decimal, d] .
~..r '
au
"'
type s tl like -r .
y
EIfTUDA ~ Listagem 8.12 A utilizac;a o de tipos poder6 tomor seu c6digo mois clc ro e mcis f6cil de ler 1 re port ztx0812. Z t ypes : doll ar s( 16) t ype p deci mals 2. 3 lira(l6} t ype p decimals O. 4
5 data : I::iegin of ameri ca n_sums . petty_cas h t ype dollars. 6 7 pay_outs t ype dollars. l lJ'1lp_sums type dollars, a
,
10
end of ll'ller1can_sums. begi n of i t ali an_sums,
"e li r a 1ta 11ana nilo tern dectna t s
271
272
OIA 8, OEANINOD O'OOS NO ' 8'P14. P'RTE2
mENO' EM 21 DIAS ,mH
11 12
petty_cash type li ra, pay_outs t ype l 1ra,
13
lump_sums type lira . end of 'ital ian_sums.
"15
16 american_sums- pay_outs .. ' 9500. 03 I urn decimal 17 italf an_ sums -l ump_sums .. 514l. 18 19 write : / amer1can_sums -pay_outs . 20 / i t ali an sums - l ump sums .
•
"espes necess ar-ies quando l iteral
_ con t~m
o c6digo na Listagem 'S.12 produz esta saida: 9,500 .00 5,141
siiDI~ ~NAlIS~""
A linho 2 define urn tipo de dodo denominaclo dol lars como urn campo ,.. 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 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.
.
Considere urn tipo definido pelo usuario como uma variavel,masurn tipo que voce nao posse utilizer para armazenar clados. Elepodera apenasserutilizado para coo outrasveriaveis. As mesmasregrasse aplicam aos tipos, da mesmaforma
as
as
que se aplicam varidveis e strings de campo. N a mes de tipo , como nomes de vari fvel, tern de urn a 30 caracteres de comprimento, mas, diferentememe das vari dveis, seus names nao podem incluir a s caracte res - < >.
Tipos estruturodos Urn tipo definido pe lo usu6rio pede ser boseodo no defini ~o o de umo string de campo. Ele e conhecido como um fipo estruturodo. A Usta gem 8.13 mostro como vo ce pede reduzir 0 tc mcn hc de um prog romo vtilizonde um tipo estruturodo.
NOVO ...
HilIO"
9 10 data: customer_addr typ e address. vendor_addr: t ype address , 11 empl oyee_addr ty pe address, 12 shipto_addr typ e address. J3 14 15 cus tomer_add r~street • '101 Memory l ane' . 16 employee_addr-country • ' Transyl vani a'. 17 18 write: I cus tomer _eddr- st reet , employ ee_addr -country . 19
,
lilt... h linhos de 2 a 8 deflnern um tipo de dodo de nominodo addr ess que ccntem cinco comp os. Nos linhas de 10 a 13, quotro strings de campo sdc definidos
ANALISE,.
com a uso do novo tipo. Sem 0 no.. . o tlpo, essos defini~oes teriom utilizado 24 linhos 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 preciscrc ser oltera do.
Grupos de tipo HO~O llr.. TERl{O"
Uma in stru~ao t y pes pod e se r ormoze nodo em um grupo de fipo . Urn grupo de tipo (to mbe m con hecldo como um pool de tipo) corresponde a urn objeto do Data Did io na ry que existe rnerome nte para canter uma ou mots insfruIYoes types au constant s. Utilizondo a in stru~oo t ype-po ol s em seu programo, v eee aces sor6 tipos ou 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 de crier definiIYoes ce ntralizod a s. A Fig ura 8.2 ilustra esse conceit o. A Listagem 8.14 ccnt em urn exemp lo de um grupo de tipo e a Ustage m 8. 15 opre senta um exemplc de um prog ramo utilizondo types e constants de tal grupo. Grupo de tipo ztxt.
Fig ura 8 2
Urn gropo de tipo
e"
um cont~inar pore as ;n$~6 es
types e constants. Ele pode ser comporlilhodo
enee cs progromos.
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 1 report ztx0813 .
2 t ypes : begin of address. street (25) • c1ty( 20)• 5 region {7l . 6 count ry (l 5) , 7 posta 1_code(g) . 8 end of addres s .
, 3
Progromo 1
Progromo 2
type-peols ztxt . data fl t ype _ztxLdoll ar-s .
typ e-pools zt xt . . dat a fl type.z.txt:...dol1ar s .
273
274
D~ UEfiNINDO DADOS ND .wP/'. PARTE 2
. PRE '" EM71 DIAS . U P/< m.HNCAM~
EMTRADAlrrItr.. Listoge m 8.14 Urn exemplo do lnstrvcdc type -pool contendo tipos e ,. constontes 1 typ e-pool i txl . Z types : ztxl_doll ars (16) ztxl_li r a(l6) J 4 constant s : ztxl_'Ilarn1"9_th reshol d ztxl_ama 1gamat i on_date 5
Type Group'" ogara .
Para criar urn gropo de tipo; type p decimals
?
t ype p decimal s O. t ype 1 valu e 5000.
1. Comece no D ict ion ar y: Initial Screen (ca min ho do menu Tools- > ABAP / 4 W ork bench, D evelopment- > AEAP/ 4 Dictionary).
l1k e sy -d etue value ' 19970305' .
2. Digi te a nome de seu grupo de ripe no campo Object N ame.
ANAUSE'"
A linho 1 indica 0 com ecc do grupo d e tipo e the cfribui um nome. As linhos ,. de 2 c 5 defin em t ypes e constants que podem ser utilizodos em quolquer
progromo .
1 re port ztxOSlS. 2 type -pcc l s ztxl.
3 data: begin of amer ican_sums . 4 pet t y_cash type ztx l_dollar s. 5 pay_out s typl! ztd _dollars , 6 llll1p_sums t ype ztxl_dollars . 7 end of ameri can_sues , 8 9 amer1ca"_sums-pay_outs • ' 9500.03'. 10
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 . 13 ' exceeds th res hol d' . ztxl_warning_threshold . 14 end1f.
defi~i~6es
exibida.
10. Pressione 0 botao Back na barn de ferrsmentas do aplicativo para retorn ar a D ictionary: Initial Screen.
~~
linho 2 ,ind ui a s do grup o tipo zt xl no prog roma .. As ltnhos de r AA3 linho a 7 definem umo string de utllhcndc a zt xl _dol l ars do grupo 9 ctribul um valor para pay_outs e esse valor e compcrndo com co mpo
3. Selecione 0 botso de op~ao Type Groups. 4. "Pressione 0 bcrao Create. A tela Typ e Group:c:o:t: C reate Text sed 5. Di gite uma descricac de seu grup o de tipo no campo Short T~xt. 6. Pressione 0 bono Save. A tela Create Obj ect C atalog Entry sera exibida. 7. Pressione 0 borso Local Object. A tel. AEAP/ 4 Editor: Edit Type Group sera exibida. Na primeira linha, a instru~ao t yee- pee1 r , aparecers, onde te o nom e de seu grop o de tipo . Se 0 nome nao aparecer, voce devera digita-lo agora. 8. Nas linhas subseqilen tes, digit e as instI11~6es constants e types . Todos os names devem comecar com t_, onde t e o nome de seu pool de tipo. 9. Pressione.o bono Save na barn de [erramen t as do aplicativo.Na parte inferior da janela, a mensagem Typ e group saved sed. exibida.
ENTiADllio.. J.Istagem 8.15 A utiliza~lio do grupo de tipo reduz 0 dcpltcccec de ,. c6digo para tomc r mois f6cil a mcnutencco
iHAUSf '"
lnicie a ScreenCom "'Howto Crea te 0
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 ap,licativo.
tipo
de tipo .
0
cc nstonte ztxl _warni n9_th r e sho l d do grvpo de tipo no linhc 1 1.
Se 0 grupo de ripo ja river side inclufdo, tentativas subseqaeotes para incluf-lo serso ignoradas e nao causarao urn erro. O s nomes do gropo de ripe podern ter de urn a cinco caracteres de 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 glob al.
Criando urn grupo de tipo Para criar urn gropo de tipo no Data Dictionary, utilize a seguinte proce diment a .
Resumo • As strings de campo sao com o as estrururas definidas dentro de seu pro grama. Voce pode definir as strings utilizando data au tabl es. As strings de campo definidas utilizando tables tern visibilidade global e extema. • vccepode defmir seus pr6prios tipos de dados, ate mesrno tipos estrururado s, utilizando a instrof:jao types. Os ripos definidos pelc usuario reduzem a redu ndancia e tornam mais facil a manut encao. • Voce pede defmir urn gropo de tipo no D ata Di ctionary para fazer com que os tipos deflnidos pelc usuario e constantes sejam reurilizfveis.
275
".. . • • w _ _ ...
276
'W'
'W'
..
~
__
~
-
~
~
"!'!""
CIA I, OEAttlMOO OADOS NOAS""',., PARTE 1
APRENDA 1M 21 DIA SABA'"
----'---------
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.
P&R
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 entendimente 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".
Teste
o o
Por que preciso criar strings de campo? Por que n ao posso apenas utilizar simples variaveis?
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 em urn prcgrama, a organizacao dessas varuveis em strings de campo fad.com qu e a rela~ao entre as varieveis se to me ainda mais
para
clara. Utilizar strings de campo agrupar as camp os tambe m permitirf que voce execute uma .op eracao em urn grup o de variaveis como se elas fossern con siderada s u ma dnica variwel, Assim, por exemplo, se voce precisar mover 100 varifv eis, sed possrvel, em geral, cadificar uma Unica in s tru~ao a fim de executar o movim eoto de um a string de campo para uma ourra, em vez de codificar 100 instrucoes de atribui~ao para cada variavel. Mover uma dnica String de camp o sen tambem mais eficiente do que 100 insrrucoes move, com isso seu programa executara mais rapidamente . Voce vera nos capfrulo s que estao par vir que muitas instrucoes po dem utilizar uma string de campo com o urn operando. Se voce puder utilizar as strings de camp o, voce tera vantagens sabre as mesmas , send o assim elas econo mizarao tempo para depura ~ao, bern como urn c6digo muito exte nso.
o o
Por que devo utilizar meu pr6prio ripo estruturado em vez de uma estrutura do DDIC? Eu Da O posse criar strings de campo com ambos? .
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, po rque podem forn ecer r6 tulos e ajuda P I a F4. En tr etan to, ty pes pede serutilizada para definircipos estru turados e aninhados que ccntenham rabelas int ern as. 0 que nao acontece com as estruturas do DDIC . Isso sera demonstrad o no Capfruic 12 na se~ao sobre as tabelas int ernes.
1. Qual e a consta nte predefinida qu e pe de ser ut ilizada em urn programa 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?
Exerdcio 1 Qual ea ourra forma de se declarer a variavel abaixo urilizando uma declaracac -type"? data : begin of usd_alllOunt. hot el type p decimals r ent car t ype p decimals pl ane type p decimals food type p decimals end of usd_aJIlOunt , begi n of &meX_pt. hot el type p dectee l s re nt car typ e p decteat s plane type p cectsets food type p decimals end of amex_pt.
2, 2, 2, 2.
2, 0, O. 0,
Exerd cio 2 Qual e 0 resultado desre pro grarna? report zb0816 . dat a: begi n of f Id_stgl, var l value ' 1' , va-z valu e ' 3', var3 valu e ' 5' , var4 valu e '7', ve-s val ue '9'. var6 val ue ' 4' , var7 value' S', varS value '6', end of fld st gl. f ld_stg2 11ke fld _stgl. fld_stg2 • fld _stgl. write: write :
I I
f l d_st g2-var l, fld stgl -var2 , f ld stg2-varti . fld stgl- var3. fl d_stg l -va rS. fl ( st g2-var 7, fl(stg2~var4. f l (st gl- varS.
277
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 spondi 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
- - - -- DIA UTRIBUI(DES.CDHVERSOES Ec.ll!UlDS I
" RE NDA EM21 DIAS ABAr/4
Configure se~ padroes de usu ario agora, seguindo este procedimento:
1. Se voce estiver atualmente no sistema R/3, salve todo a seu t rabalho agora.
2. A parrirde qualquer tela, selecione 0 caminho de menu System-> User Profile-> U ser D efaults . A tela Ma i nta i n User: Oefaul ts sera exibida, 3. Na caixa de gropo Date Fonnat , selecione a bouo de opcac YYIT!MMIDD. 4. Na caixa de gropo Decimal Notation, selecio ne a bcrso de op~o Period. 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.
Figura 9 1
Esto e a estruturo syst . f lo contem as definil;6es de lodas 05 vori6veis de sistemo. 0 boICo Column Right; Next • • • role ume
co/unopor vel patO o direita, fozendo com que 0 extensao totof
deShott Text
sejo vislJOlizodo.
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 eferuar logon.
Tra balba ndo com va riaveis de sistema NOVO lit.. TERMO"
Existem 176 va ridve is de sistema dispcnfveis dentro de coda programo ABAP/4 . Voce noDpreciso defini-lcs: elce sec cvtomctlccmente definidas e estcc se mpre d isponfveis.
Para exibir uma lista de variaveis de sistema, exiba a estrutura do DDIC, syst. Voce pode exibi-la u tilizan do D ictio nary: Ini tial Screen (t ela inicial ) a u de dais cliqu es no no m e de qualqu er variavel de siste m a em seu pr ograma . A prim eira pagina de sys t e apr esentada na Figu ra 9.1. Na Figura 9.1, os names de campo apa recem na primeira col una e as descricees eseao a direita na co luna Short Text. Para visualizar a descricac inteira, ro le para a direita ciando urn clique no ba ta o Column Rig ht; Next . . . na pane inferio r da tela. Par a localizar urn campo pelo nome. pressione a b atao Find na barr a de ferramentas Standard. A tela Find Fi eld aparecera, solic itando 0 nome do campo que voce deseja localizar. alias de syst 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 tum; sao exatamenre equivalentes. A maioria dos programadores utiliza sy. A Tabela 9.1 contem uma pequena Iista de vari aveis de sistema comurnente utilizadas. Variaveis adicionais serfo apre sentadas por todo a livro.
o
e
Tab ela 9.1 Vori6veis de sistema co mume nte utilizodos Nome
Des(ri ~ao
sy-datum sy·uze1t sy- uname sy·subrc sy-mandt sy·pagno sy-co1no
Data atuo l
sy-l tnno
Nu merc do linho de llstc de soldo atuol
sy-vline sy-ul i ne sy- rept d sy-cprog sy· t code sy-dbcnt
Horo ctuc l Id do usu6rio otuol Ultimo c6digo de retorno Cliente de logo n N umerc da p6gino de soldo otuol
Nurnero do coluna de SOldo atuol Linho vertical linh a horizonta l Nome do relot6rio otuol Nome do progrom o principal C6digo do transol;0o otuol Dentro de select, ccn tem a co nta dor de iterol;oo ctucl. Depots de
endse1ect , ccn tem a neme ro de linhcs que correspondem a cl6usulo where.
A Listagem 9.1 mo st ra urn programa de exemplo que utiliza as variaveis de sist em a.
281
282
I
APRENOA EM 21 OIAS ABA P'.
OIA UTlIIBU1\'El,CONVERsOEl EcALCUlOS
fHTRADA~ Listagem 9.1 Utilizondo vari6veis b6sicas de sistema 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
report zb0901. ta bles ztx lhl. parameters "landl vr-tte : I 'Current / ' Cur ren t / ' Current / 'Vendors
date :' . sy-detum,
• A linha 12 escre ve
0 mimero de ite raliao atual a partir da variavel de sistema sy-d bcnt e urn nu mero de fabricante a partir de cada registro.
time : '. sy-uaet t ,
user: I . sy-uneme , ~l ~nd l.
• A linha 13 marca
where landl .. "land] or der by 1f tm-. wr ite : I sy-dbc nt , ztx lfal-l 1fnr. endselect. lli rite : / 5y- dbcnt, 'records found', if sr-subrc <> O. write: / ' No vendors exist f or count ry" ,
final do loo p sel ect / endsel ect .
• Na linh a 15, 0 c6di go de retorno a partir de sel ect, existence na variavel de sistema sy-subr c, e testado . Se zero, os registros foram encontrades . Se njio zero, nenhum registro foi encontrado e uma mensagem e esc rira na lin ha 16.
~l andl.
endif.
c6digo na Listagem 9.1 produz esta safda:
Current Current ' Cur r ent Vendor s
0
• A linha 14 escreve 0 ntimero total de iteracces do loop se l ect . Esse mimero eigual ao mim er o de re gistros que coincidiram co rn a clausula where utilizan do a variavel de sistema sy-dbcnt.
select * fr om ztxlfal
o
date: 1998/02 /22 time: 14:38 :24 user : KENGREEN'~OOD having country code US 1 1040 2 1080 3 1090 4 2000 5 VI 6 V2 7 V3 8 V4'
9 V5 10 Y7 10 records found
INjllSE ~
• A linh a 11 faz com que as registr os sejam classificados em ordem ascen dent e po r 1i fn r (num ero do fabricante).
t.
17
siiDI ~
• 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.
li lce ztxlfal -l andl obl igatory def ault ' US' .
having country code ' .
I
• A linha2 define uma st rin g de campo zt xl fal exaram en te igual atabela com 0 mesmo nome. •
A linha 3 define urn anic o parametro de entrada "Iendt.
•
N as linhas de 4 a 6, a data arual, hora e id do usua ri o sao totalme nte escritos a partir das varidveis de sistema sy- datu m, sy- uae t t e sy- uname .
•
A linha 7 escreve 0 c6di go do pais, que foi inserido no campo de entrada de pardmetro "1andl , na tel a de selec ao .
• A linha 8 escreve uma linha em branco. • 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.
' • . d sistem . La ca Iza o d a yanayelse a " 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 da tabela ztxt005t no id ioma de logon atual do usuario. Como voce deve se lembrar , ztxt005t e uma tabela de texto contendo descricees de c6digo de p ais em diversos idiomas. A chave primaria e mandt, spras (idioma) e la ndl. U ma SOIUiao de exemplo e m ostrada na Listagem 9.2, m as esta faltando uma pa rte cru cial de info rmacfo na linha 5: 0 valo r do idioma de logon atual. N a Listagem 9.2 esta faltando uma variavel n a posii ao indicada pelo po nto de inrerrogacao. Gerahnente, quando estive r tr abalhando com 0 ABAP/ 4, voce podera se deparar com 0 desafio de localizar variaveis contendo as inf orm aqdes nec essdrias.
ENTRADA ~
Lista ge m 9.2 Um program a 'd e exemplo com umo vari 6ve l sy faltando
1 r eport zt x0902. 2 tab 1es ztxt0 05t. 3 par ameters · landl l i ke ztxlfal -landl obligatory default 'US ' . 4 select s i ngle * f r om zt xt005t 5 where spr as • ? Yid ioma de l ogon atu e l 6 and 1and1 • "landl. 7 ; f sy-subrc = O. 8 write: 'Descri ption:', ztxt005t -l andx. 9 else. 10 write: 'No description exi st s for', "l andf. 11 endif.
283
•
•
•
284
•
•
•
•
..
-
-
.. - .....
~ ~
.... "!I" -
'"4!!!'" -
-
-
- -"'!W- OIA 9,ATRIBUI\OES, CDNYERSOES EcAlQJlDS
APRENDA EM21 DIAS ABApt!
iNius~ ~
• A linha 2 define uma String de campo ztxtOOSt exatamente igual a tabela com a mesmo nome. • A linha 3 define urn unico pardmerro de entrada "l andl . • 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 atual de uma fonte ainda desconhecida e 0 c6digo do pais do paramer ro "landf . Nao ha endselect ji que se trata de uma ins trucio sel ect sing 1e. Ela retoma apenas urn unico regisrro: nenhum loop e criado. • A linha 7 verifica o c6digo de retorno a partir de s elect e, se urn registro civer sido encontrado , escreverf a descricfo na linha 8. Se urn regisrro nio tiver sido enc ontrado, a linha 10 escreverd uma mensagem apropriada.
o
idioms de logon atual esta disponfvel a partir de uma varisvel de 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 do campo , entaO 0 bene Find naa tera grande utilizacio. Em vez disso, utilize a seguinte procedimento par a localizar as descrifoes da esrru tu ra SY5t. Este proced imento emuito prntico, po is pede ser utilizodo pora local ize r as descricces de quo lq ue r estrvturo ou to belo. ~REEHCAM. 1Ilr.. Inide .ogora a ScreenC om "'How to Searc h the Descriptions of
,. Table .
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. Se voce estiver procur ando 0 idicma de logon atual, _devers digitar 1anguage. Caraceeres curiaga DaO sio permitidos.
10. Pressione 0 boti o Find. Vma segunda tela Find aparecera mostrando as linhas que con tern 0 texto di git ado. As corr espondencias sao
realcadas. 11. Para selecionar uma correspondencia, de urn iinico clique em uma palavra realcada. voce retornara a tela Print Preview for XD:t'j a lista sera rolada para a linha par voce selecionada e a cursor sera posicionado n aquela Iinha.
12. Para [ocalizar novamente, pressione a seta para baixo ao final do campo C ommand na barra de ferramentas Stan dard. Uma caixa sus pe nse aparecerf contendo as comandos rec entemente digirados.
13. Role, se necessario, para
0
comando esc e de urn clique nele. esc
aparecerf no campo do comacdo.
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 correspondencias serio mos tradas . 16. D e urn unico clique em qualquer palavra realcada p ara exibi-la.
° Structure o r
Para localizar as descricoes de um a estrutura a u ta bela: 1. Co mece na tela do D ictionary: Tab le/Structure: Display Fields. 2. SeIecione 0 carninho de menu Table- > P rint. A tela Prin t Table Manual sera exibida. Aq ui voce especifica quais deta lhes deseja ver. 3. Marque to dos os camp os e pressio ne 0 botac Continue. A tela Print: sera exibida. 4. Se 0 campo O utput Device estiver em branco, posicione 0 cursor no 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 ut ilizado .)
5. P ressione 0 botao P rint P review na parte inferior da tela. A tela Pri nt 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.
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,
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 o boroo de o~oo Unconverted e pressione 0 borec Continue. No tela Tronsfer list to e local File, digite 0 nom e d e um orquivo de textc, por 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 e pesquisc-lc ufilizondo 0 WordPed em qualquer me me nto, sem fer de utilizer 0 procedimento "'C o mo localize r os descri c;6es de ume estrvturo ou tabelo'" mostrodo odmo .
Seguindo 0 procedimento anterior, voce pede p ercebe r que 0 idioma de logon atual estava armazenado em 5y·1 angu. 0 programa complete apuece na Lisugem 9.3.
285
286
D~ 9,mIBUI\05,CONVElS05 EckrulDS
APREN DA EM21 DIAS ABAPH
ENTRADA'" Listagem 9.3 A Ustage m 9.2 ,. foltondo no linha 5
com. a
cdtccc do vcne.. .el sy que estova
1 report 2tx0903. 2 tables ztx t005t. 3 par~te rs "la nd! 11ke ztxl fal -landl obligatory default 'US'. 4 sel ect single" froll ztxtOOSt
continua where spra s .. sy-langu and land! .. "lendt ,
6
Sintoxe do instrucco cl ear
!!!
· i di oma de l ogon atual
A seguir, veja a sintaxe cia ins tru~ao c1ear.
Z
clear vI [with -e : wit h 'A' : with HUll]
S
onde:
1ft
•
~
. 'A'
7 1f sy- subrc .. O. 9
else . "
S.\iOA ~
o ccdigo na Lista gem 9.3 p roduz esta salda:
• 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, ela sera tratada como uma variwel do tipo c.
Descript1on : United Sta t es
JJ1.i.uSE'" A tinho 5 limite a inst rUl; ao se l ect 0 retomor openos as registros de ztxt 005t ,. 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 ogora co mpletome nte espedficodo e um enicc e exclusive regi5tro e retom odo. Observ e 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 .
Instru<;6 es de atribui<;oo NOVO...
lERMO,.
• Utilizando a adit;ao wit h 'A', ' 0 comprimento inte irc de vt sera." preenchidc com 0 uso do prim eiro byte do lit eral ' A' .
°
• 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 e st rings de campo.
Umo ;ns tru~oo de otribu;¢ o ctrlbul um vo lar perc umo vcrio vel ou string de 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 instrut;c o wr; teo No-gap fez com que a proximo volar de sctdo sejo
• •
move
•
move-corresponding
clear
Utilizando a NOVO... HUD~
eum literal de qualquer comprimento.
• Se vl for uma varisvel do tipo c, sem quaisquer ad.i~6es, ela sera preenchida com espaccs em branco. Se 1/1 for de qu alquer outre tipo 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 . zeros depe ndecdc do tipos de dado de cada urn.
write: '!'to desc ription e xists for', " l andl . endif .
10 11
e v2 sao ac m es de strin g de campo au variaveis.
O s seguintes pontos se aplicam:
write: 'Description :' , ztxt 005t - l andx.
8
vt
instru~ao
escrito imedioto mente depois do otuol sem urn espccc interven'ente .
c l ear
A instrui700 c l ear co nfig ura a volar de uma vori6vel au umo string de compo como zero . Se 0 tipo d e dodo for C, 0 volar, par sua vez, ser6 conf igurodo como
espccos e m bronco. Os espoccs ern bronco e zeros 500 conhecidos como va/ores inid ois podr6o . Frequ entemente, e co mentodo que cl ear otribui velcres inicia is podrcc a vori6veis. '
EII1UOA~
Listagem 9.4 Vari 6veis configurodcs para espccos em bronco o u zeros pete lnstrucoo cl ear
1 repo r-t zt xD9D4. 2 tab l es zt xlfal. 3 data : fl {2} type c 4 f2 type i 5 f3 type p 6 f4 type f 7 f5 (3} typ e n a f6 type d typet 9 f7 10 fa type x
value ' AB' . valu e 12345. value 12345 . value 'lEl', valu e '7 89' . valu e ' 19980101' , villue'1201'. val ue ' M' .
287
288
-
-
-
-
-
-
- - - - - _- _
-
- _
-
.- _
-
~
__
-.. - =c--"-=---
D~ HTllIBUI\OES,CDNVERSOES EtiLruLDS
APR ENDAEM21 DIAl AWl' 11 begi n of 51, 12 f1(3) type c valu e 'XYZ', 13 f2 type 1 val ue 123456, 14 end of 51. 15 zt xl fa l - l1 f nr - 'XXX'. 16 ztxlfal-landl • 'CA' . 17 write : / 'fl-' " no-g ap, fl no-gap, , 18 / ' f 2- ' " no-gap, f2 no-gap . I ' l l 19 / ' fJ-' " no-g ap, f 3 nc-qep, "~'I 20 / '14-' " no-gap , f4 no-gap , 21 / 'f5- '" no-gap, f5 no-gap, 22 / ' f 6- ' " no-gap. f 6 no-gap, , 23 / ' 17_'" no-q ap, 17 no-gap, "" 24 / 'fa- '" no-g ap, f8 no- gap. 25 / 'sl -fl- '" no-ga p, s l-fl no- gap, , 26 / 'sl-f2- ' " no~gap. 51-12 no-gap, ",. 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, 29 char: fl , rz, f3 , f 4. f5, rs, n , f8 , 51, ztx l fa l. 30 wri te : / ' fl - ' " no-g ap, fl no-ga p, 31 / ' f2-' " no-ga p, f 2 no- gap. 32 / ' f3-' " no-ga p, f 3 no-g ap, 33 / ' 14-' " no-qap, f 4 no-gap, 34 / 'f5-'" no-gap, 15 no- gap, 35 / 'f6-' " no-gap, f6 ac-qe p, " ", 36 / ' f7-' " n o ~ g a p . n no- gap, 37 / ' f a-' " no-gap , f a no- gap, 38 / 'sl-fl - ' " no-gap, sl -fl no-g ap, 39 / ' sl·f2-'" no-gap , :;1-12 no- gap, 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,
o c6digo na Lisragem 9.4 pr oduz esta saida: SAiD! ~
fl - 'AB' f 2- ' 12.3 45 ' f3 -' 12,345 f4 -' 1. 000000000000000£+01 ' f 5-'789' 16- ' 1998010 1' 17-' 120100' fa-'M ' sl -fl-'XYl'
sr-rz-:
123 , 456
zt xl fa l- 1i f nr- ' XXX ztxl f al - 1andl - ' CA fl-' f2-' 0 ' f3·' 0 ' f4-' O. OOOOOOOOOOOOOOOE+OO ' f5 -'000 ' f6 - ' 00000000 '
_
17- ' 000000' fa -'OO' s l-fl-' s l·fl-' 0 ztxlfal - lifnr= ' ztx lfal-l andl- '
llil5! ~
• Alinha2definea stringdec.mpo zt xlf. 1.
• As linhas de 4 a 10 definem as varifveis de cada tipc e lhes atribui valores-p adci o.
• Outra string de campo, s1, edefinida na linha 11, com valores-padrao para cada componente. • Sao atribufdos valores a dois dos compone nt es da string de campo zt xlfal nas linhas 15 e 16. • Todas as variaveis e componentes de strings de campo sao configurados com zeros e espar;os em branco pela instrucao clear na linha 29 .. Tambem se pe de dize r que codas as variaveis e compone~tes sao configurados com oelores iniciaispat/rao.
I ll'
• As insrrucoes wri te que co megam na linha 30 descrevem totalmente as varisveis e os componentes que Ioram ~POSI dentro de aspas simples e sem espaccs in te rvenientes entre as aspas e os valcres ao seu redor. -
A Listagem 9.5 mostra urn pr ograma doe exemplo qu e preench e asvaraveis
e 05 componentes de st rings de campo com valores diferentes de espalios ou ,','
zeros.
EMTRADA'" Listagem 9.5 Vo ri6veis preen chidos com cora de res difere ntes de
r
espOl; os em bronco o u zeros utilizondo a adi<;60 wi th do instrur;ao c1 ear
1 r epor t ztx0905. 2 tab l es zt xl fa l. 3 data: fl(2) type c value 'AB ', 4 f2(2) type c, 5 f3 typ e i val ue 12345, 6 begin of sl, 7 H(3) type c val ue ' XYZI , 8 f2 type 1 val ue 123456. g end of sl. 10 writ e: / 'fl· '" no-gap, fl no-g ap, -" " , 11 I 'f2>< '" no-gap. f2 no~gap . "" , 12 / ' f3'"" no-gap, f3 no-gap , " " , 13 / 'sl~f1-' " no-gap, sl-fl no-gap, 14 / ' sl· f 2" ' " no- gap, sl-f2 no-gap . 15 / 'ztxlfal-l1fnr=' " no- gap, zt xlfal - 1H nr no-gap, 16 I 'ztxlfal-land l-' " no- gap, zt xlfal~1a nd l no-gap.
""
.
289
290
, m N"
D~ UTl<lBu~6ES, CONVEISOES EtllrulDS
EM 21 DIAl U'PI4
17
/.
Utiliza ndo a inst ru <;tio move
18 cl ear: f1 with 'X'. 19 12 with fl .
20 21 22 23 write : 24
25 26 27 28 29
f3 with 3. 51 with 'X'. ztxlfal wi t h O. / ' 11·'" nc-cep , fl I .' fl· ' " no- gap. f2 / ' f3. '" no-gap, f3 / 's l-fl. '" no-gap, / ' s l -12. 1 1 1 no-gap, / 'ztxlfal-lffnr." / 'ztx lfal~lll.ndl=' " I
no- gap, "". no-gap,
no-gap, I " '. sl-fl no-gap, sl~f2 no-gap, no-gap, zt xlfal-l 1fnr no-gap, no-gap, ztx lfal-lll.ndl no-gap,
o c6digo na Listagem 9.5 produz esta salda: SAiDA ~
fl· 'AB' f2'"
,
f3'" 12.345 ' sl-fl · ' XYZ · sl -f2. > 123,456 zt"l f a1- 11fn r- '
Z
~
1ft
Y
Sintaxe do i nstru~ii o move 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 esquerda. move vI t o '112.
ou
vz "·
'Ill.
'112 • 'Ill "'vm • 'lin •
I
ztxl f al - linen-'
ou
n ·'xx'
IIICIve rl[+N(L )] tov2[+N(L )] .
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#'
~
-
Ul
ou
f Za lXX ' 13·'50, 529,027
ANALISE
Para mover urn valor de urn campo para outre , utilize a instrucao nove. 0 conteddo ~teiro ou urna pane do coneeudo pode ser movida. Em vez de move, voce pede utilizar 0 operador de atribuicio "', como mostrado a seguir. Ambos sao referidos como um a in struca o move.
• A Iinha 18 preenche fl com a letra X. • A linha 19 preenche f2 com
0
primeiro byte de f t, tambem urn X.
• A linh a 20 preenche f3 com 0 primeiro byte do lit eral 3. Urn literal 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 bytes, atribuindo essencialmenee lixo a f3.
• A linha 21 trata s I como uma varifvel do tipo c eo preenche com x. 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 de quatre bytes de valor 0, preenehendo-o com lixo. 0 Iixo, neste case, e exibidc com indicadores de mimero (I ,.
e a variavel ou string de campo de envio.
•
vI
• •
e a varifvel ou String de campo de recebimento. N e urn deslocamento a partir do inicio cia variavei au string de campo.
•
Le o namerc de bytes que devem ser movido s.
v2
Na Tabela 9.1, dois exemplos si o .mostrados cia maneira correra e cia maneira incorreta de codificar as instrucoes de atribui~o. A codificacsc incorreta resulta em urn erro de sintaxe.
Correta
Incorreta
fl - f2 . fl -f2 -f3.
n-ra ,
n- ra-ra.
291
292
CIA 9,ATRIBUI\OES,COHVERSOES EckcuLDS
"mDA E. 21 DlAS A'AP/!
Convers6es de dados KOYO'"
lERMO~
Se duos voricveis tiverem tipo s de dodos au com primenfos diferentes , as dodos seruc ccnvertldos quando movidcs. Esse procedlm ento deno minoclo umo
e
Do tipo
Para
c
p
odoptor;oo Qutom6 tica. Se as comprimentos dos vcrlcvels de en vio e de recebimento ndo correspo nderem, umo odc ptocec cutcmcticc do comprimento sera executoda . Se ostipos de dodos noo cor responclerem, umo cdcp tccec outom6tica de fipo sem exec utoclo.
pade ser visto na Tabela 9.3.Nessa tabela,0 campo de envic e 0 campo "From".
Tipo
Quando otribuir para um campo menor, 0 valor ' from sera: Truncodo a direita
c x
Preenchldc
c direito com zeros
Tru'ncodo
n p
Preenchido Preenchido
c esque rdo com zeros
Truncodo a esque rdo Atribuido se 0 valor numerico se odeq uor 00 compo I to I •
c esquerdo com zeros
a direito
o
d
compo de envic deve canter openos umo dafo v6lido no 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.
c
t
o ca mpo de envic deve ter openos um hcrcric va lido no formoto HHMMSS. Se esse ne e for 0 coso, urn erro nco ocorre r6; por suo vez, urn vclo r lnvclldc sera otrtburdo 00 compo de receblmento . as resultodos do utilizor;oo desse volar sao indefinidc s.
c
n
o compo de envlc e ono lisad o do esquerdc paro a direita e
a
Os tipos de dados restantes (t , i, d e t ) sao todos de urn comprimento fixo, de forma que os campos de envio e de recebimento terao sempre 0 mesmo comprimento se fore m do mesmo tipo de dado. As regras para adaptacoes de tipo sao fornecidas na Tabela 9.4. As regras de conversac para 0 tipc i sao iguais as regras para 0 tipo p. Entre elas escio inclufdas as convers6es com comportamento incomum. Os pontos que devem ser observados SaO: • A compactacfo peculiar executada para as tipos de c a n. • A capacidade de atribuir valores invalidos aos tip os d e t. • 0 tratamento desigual de caracte res invslidcs durante a conversao dos tipos de c a x. • A utili~o inesperada do byte de sinalreServado em convers6es de ppara c. • Urn campo c completamente em braneo e converti do par a urn campo p com urn valor zero .
o compo de envic pode cante r openos ncme rcs, um cnicc
somente os d rgitos de 0 a 9 seruo transferidos pore a cam po de recebimento (a linha do a direito) e, cle m dissc, sere preenchido esquerdo com zeros. Tados as outros coracteres soo simplesmente ignorod os.
Se 0 va lor nurnericc for grande demois para 0 compo de recebimento, um curto dump ocorrer6 .
• 0 usa de * para indicar estouro em CODversoes de p para c.
Regras de eeevereee
c
I
a direito com espc ccs
Preenchtdc em bronco
tipo
seporodor decimol e um sina l opcio nol. 0 sinol pode ser inlciulou final. Os espor;os em bronco podem oporecer nos do is lodos do valor , E alinhodo a direito e preench ido a esque rdo com zeros. Um campo de envio completcme nte em bronco e cc nvertido poro zero.
Se as tipos de dados dos camposde envio e de recebimentoforem as mesmos, mas as comprimentos nao, uma adaptaciode comprimentcseraexecutada, como
Quando atribu ir pa ra u m campo maior, 0 valor 'from' sera:
0
,
.
c
x
Os valores v6lidos poro 0 ca mpo de envio sao 0-9 e lefros moiusculcs A-F. 0 valor e olinhodo c esquerdo e pree nchido direitc com zeros au trunco do a d ireito. lodos os ccrocteres ap6s 0 primeiro va lor lnvclldc no compo de envlo sdc ignorado s.
p
c
o valor ealinhodo (] dtreitc no co mpo de recebirnentc , co mo byte mois (] direilo reservcdo paro um sinal finol. a sina l
c
somenfe sere exibido se 0 nvrnerc for neqofivo: portanto, numeros positives seriio alinha dos c direito com urn onico espoco em branco final. Coso VOCE! tente mover um valor positivo que contenho a mesrnc quon tido de de digitos suportoda pelo comprimento do ca mpo de recebimento, 0 sistema utilizora 0 comprime nto inteiro do compo de recebimento para o rmozenar 0 valor sem reservor 0 byte mots 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 compo de recebimento, 0 numero ser6 fruncodo a esq uerd c. Se 0 truncomento tiver oco rrido, 0 slstemo indicor6 lese substituindo a digito mois a esquerdo po r um asterisco (*l. Se o va lor se odaptor 00 com po de rece bimento, os zeros iniciais serOo suprimidos. Se 0 camp o de envio for iguol a zero, 0 compo de recebimento re cebera um unico zero.
293
294
DIA 9,,mBUI\05,CONI'£R5ii5 EcALCUlOS
mE'" EM 21 DIAS " " "
26 fe 27 fc 28 fe 29 fe 30 fe 31 fe 32 fp
Tabela 9.4 Confinuccdo Do tipo
Para
p
d
0
tipo
Regras de eenve reee
o ncmerc e interpretc do como 0 nc me ro de dios desde 000 1/01/01, convertidc em umo doto e a rmczen odo intemomente no fo rmctc
p
t
YYYYMMDD.
meio-nolte, convertido em 24 heros e a rmazenado A dote
o
HHMMSS.
e convertida em um valo r que repre sento 0
silDi ~
numero de
dlcs desde 000 1/01/01 . t
p
writ e: write : write: write : writ e: writ e: wr1te :
/ / / / / / /
fp1, fp2, fp3. f p4. fp5 , fp6, ' "
», tc, 'ri ghtmost byte reserved fo r sign'.
>, >, >, >, >, >.
tc , t c, f c, t c, t c,
' only negati . . e nUlllbers use i t , but ' . '+ ve nurns th at need it use it t oo' .
'o.. . er fl ow i ndi cat ed by lead ing *' . 'l eading zeros are suppressed' . 'z ero in • zero out ' . f p, ' bla nks i n · zero out ' .
o numero e interpretado como 0 ncm erc de seg undos desde intem omente no fcrmct o
p
.. fpl. • fp2. .. fp3 . ;; fp4. .. fpS. .. fp6 . ;; , ".
a hor6r io e convert ido em urn nvmerc que repr esento 0 numerc de segundos desde meio-nclte.
Para urna lista completa de regras de conversao, consulte a documentacio
de palavra-chave do ABAP/4 para a instru cao move. 0 procedimento para exibi-la segue na proxima se!Sao. A Listagem 9.6 contem urn progra m~ de demons rracao que executa \, co nvers6e s de dados de exempl o.
EHTRADA~ Listagem 9.6 Convers6es de dodos de exemplo 1 report ztx0906. "define uma constante denomin ada '> ' 2 const ants >(3) value '..>' , 3 data: fc (10) type c . . al ue '-AIB2C3 . 4' , 4 fo (10) type n, 5 fp t ype p, 6 fd t ype d, 7 ft t ype t , 8 f x(4) t ype x, 9 fel (5) type e alue '_1234' , 10 fe2(5) type e al ue ' 1234- ' , 11 f pl type p val ue 123456789; 12 fp2 t ype p al ue '123456789-' . 13 f p3 type p alue 1234567899, 14 fp4 ' type p alue 12345678901, 15 fp5 ty pe p atue 12345, 16 fp6 type p value O. 17 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 '. 20 ft .. ' ABCDE' . write : / f t , ' when you lo ad t hemwith junk' . 21 fp " sy-datum. wri t e: / sy- datum, >. fp , ' d->p: days since 0001/01/01 '. 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 ' . 24 f p • fel. write: / fe1, >, t p, 'allows le adi n9 si9n ' . 25 fp ;; fc 2. write : / f e2, >, f p, ' also all ows tra il in9 si gn' .
ccdigc na Listagem 9.6 produz a seguinte said a:
-A182C3.4 • •> 0000001234 non-numer ic char s are ignore d E ABCD date and t ime fi el ds are in va11d ABCOEO when you load them wit h j unk 1998/02/22 •.., 729.443 d->p: days sinc e 0001/ 01/0 1 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 1234~ 1,234- al so allows trailing sign 123, 456, 789 > 123456789 ri ght most byte reserved for sig n 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 12. 345, 678,901 . 0 '*345678901 o erflow i ndi cat ed by l eadi ng * 12.345 u> 12345 lead i ng zeros are suppresse d o .. a> 0 zero in :s zero out ••> 0 blanks in • zero out
.... lnicle o~oro 0 ScreenCom "'How to Display the Conversion Rules in the ABAP/4 Keyword Documentation"'.
SCRHNCAM,.
P ara exibir as regras de conversjio na documentaqac de palavra-chave do
ABAP /4:
l. Comece no ABAP/ 4 Editor: Ini ti al Screen.
2. Selecione 0 caminho de menu U tilities- > ABAP/ 4 Key Word doc. A tela D isplay Structure: ABAP/4 SAP 's 4GL Programming Language sera exibida. 3. P ressione 0 botao Find na ber ra de ferramentas App lication. A caixa de dialogo Search C hapter T itl es sera. exibida.
4. No campo Fin d, digite move. N a caixa de gru po Type of Search} selecione 0 botao de opcsc From Stru ct. Start. 6. Pressione 0 bot ao C ont inue. A caixa de dialogo desaparecerd e a linha move sera realcada. 7. De urn clique duplo na linha real<;ada. A tela Dis play H yp ertext: se ra exib ida. infcio da tabela de 8. Pressione a te cla Page Down duas vezes. coeversao sera exibido .
S.
, l
a
295
296
APR U DA EM21 DIAS AIAP/4
Subcampos NOVO ...
1IIlIO ,.
A porte de um compo referendodo pete esped fico<;oo de um deslcccmentc e/ou comprimento e denominodo subcompo .
Sintcxe de um subccmpo '1 ["][( Lll • ,2[-c ][(Lll.
8 fl (1) 9 'ltr1te 10 fl (1) 11 'It1"He 12 fl+4 13 wr ite 14 fl( 3) 15 srtte
onde: vl e v2 sao nomes de string de campo ou de varifvel.
•
0
• 0 deslocarnento au comprimento presentes. • Se 0 deslocamento come cc do camp o.
IUO
camp o de envio ou de
0
.
e opcional , Ambos podem estar
for especificado,
• Se 0 cornprime n to nao for especificado, final do campo.
0
0
subcampo iniciara no
subcampo se estendera ao
• Nenhum espa~o pode ser utilizad o dentro da especificacao do subcampo. 0 deslocamenr o, quan do presenre , sempre serap recedido por um sinal de mais (+).
• 0 comprim en ro, quando pr esente, sempre estara entre parenreses. A Listagem 9.7 mostra urn programa de exemplo que re~liza atribuicdes e utiliza sub campos. ENTlADAIilIrr.. Listagem 9.7 Movendo umo porte de um compo utilizondo umc " otribui~60 de subcompo 1 r epor t ztx0907. data : fl(7), f2(7).
f1
.. 'BOY '. f2 .. ' BIG' . fl+O(l) .. ' T' . '!trite / fl .
I
I
• fl . f1. • 12(3). fl.
BOY BOY BIG BOY
IHius!~
• U rn subcampo po de ser especificado para recebimento ou para amb os.
2 3 4 S 6 7
I n.
·mesmo que: fl+O(l) .. 'J'. , ·mesmo que: fl(l) • f2 (1). -fl agora contem 'BOY ·lIl@Smo que : fl+4(3) .. fl (3 ). ·fl agora cont~ '60Y BOY '. -mesmo que: fl+O(3) • f2+O (3). -fl agora contem 'BIG BOY ' .
.f1 agora contern 'JOY
TOT JOT BOT
eurn deslocamenro baseado em zero desde 0 inicio do campo. L e urn comprimento em bytes .
Osseguinres pontos se aplicam:
•
• ' J' . fl . • 12.
o c6digo na Listagem 9.7 produz esta safda:
•
•
I
-meSllO que: mover ' BOY ' para fI. -Ilesmo que: ee ver ' BIG' para f2 . · fl agora c ont~m 'TOY
• Na linha 6, urn des locamento de 0 e urn compriment o de 1 sao utilizados para especificar urn subcampo consistindo apenas no primeiro byte de fl. Atribuir a tetra IT I. portantc, pr eenchera somente o primeiro byte de fl. • Na linha 8, 0 d eslocamento de 0 e ign o rado. 0 e 0 padrao , portanto subcampo ·sed 0 mesmo que 0 da linha 6.
0
• Na linha 10, 0 mesmo subcampo eutilizado, mas dessa vez a arribuicac e a partir de f 2. Somence 0 primeirc byte e trans~erido de fZ, porq~e o subcampo de recebimentc tern apenas urn U01 CO byt e de comprtmente. • Na linha 12, urn deslocamento de 4 especifica que 0 subcampo em f1 comeca no quinto byte e continua ate 0 final de fl, to mando-c tr~s bytes mais comprido. 0 campo de envio efl , faaeodo com que os tr~s primeiros bytes de fl sejam duplicados nas pc sicoes de 4 a 6. • Na linha 14, os tres primeiros bytes de f 2 substituem as tres primeiros bytes de fl.
Utiliza ndo move com strings de campo Com move, urn no me de String de campo especificado sem urn nome de componente e tratado como sendo uma variavel do tipo c. A Figura 9.2 e a Listagem 9.8 ilustram este po nte.
298
O~ 9, All"BUI~OE5. CONY£RSOES EcllCUlOS
l PRENOl EM21 OilS ABl P/~
doto f1 (4) value 'ABeD'
Figlltg 9 2 Utilizor move em umo string de compo, se m tJtj/izor um nome de: componente, farO corn q ue: a stringse;o tratodo como umo vori6vel do tipo c.
f1
Movimentos do string de campo envolve ndo campos nurner icos
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 for um a string de campo con tecdo urn campo nu m erico (ripos t. p ou f), nenhuma con'Versao de dadossera executada. 0 mo vimen to ocorreria se ambos fossem considerados simp les caracteres. 0 inverse tambem e verdadeiro. N enh uma co~versao sera executada ao mo ver u rn numericc para u ma string de 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
~ '.-.:".. ~.
.,,&_';) ';:'
oata begin of fs1, eI O) •
e2(2) . e{ 3 } .
end of fs1.
,, 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 .
EtmADA ~ Lista g em 9.8 A instru«;ao move t-ete urn nome de string de co mpo sem urn nome de componente como umc vcrtcvel do tipo c 1 repor t zt x09OB . 2 datil : flC.) value ' ABCD ' . 3 begin of 51. 4 el(l). 5 e2{Z). 6 ' 3(1) , 7 end of s L,
su
v
10
n.
s write: / 51. 10 / si -ci , st -ez, si -cs .
- 51 ~ tretedo como uma var1 !v e l de 4 "cer ect er es "escreve ABCO "escreve A BC 0
o c6 digo na Lisragem 9.8 produz esta salda: SliDI ~
ABCO A Be D
• A linha2 define f1 como uma variavel de qua tro bytes do tipo c. • As linhas de 3 a 7 definem 51 como uma string de campo com eres eomp.onentes: fl, f2 e f3. 0 comprimenrc total de 51 e calcu lado pela 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 ambos varidveis de ripos c. • A linha 9 escreve 51 como uma varifvel de quatro caracteres. • A linh a 10 escreve
1 report ztx0909. Z data : fe(5 ) t ype e. 3 begin of s, 0\ f i t ype t , 5 endofs. 6 7 fe • '1234'. "ce-c, nenhllnia converss c exee ut ada 8 s - fc. _"escreve ju nk g writ e s- f i.
0
conreedo dos ccmponentes de
51.
11 s~fi • 1234. l Z fc-s . 13 write I fe. 14 15 s- f 1 - 1234. 16 f c - s-ff . 17 write / fe.
"at r1bu1 urn val or v&1 1do -ce -c, nenhuma ccnversjc execute de "escreve junk "atr1bu1 urn valor val t dc nee.; eonverslio execut ada "escreve 1234
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 as atribuicoes invalidas realizadas.
SliDI ~
B75770, 417
0... 1234
lIIiUSE ~
• N a linha 2, fl .e definido como urn inteiro com urn valor de 1234.
• Nas linhas de 3 a 5,51 e defini do como urn unicc componente ct , do ripe c. comprimento 1.2.
299
~ • • • •.•. • • • • •-.- .
300
w - w ·w
---
.....-- -- -- -- - - - - - - - - - - --D~ Um BUI~OEs. CONVEISOES EcllaJLOS
'PREND' EM21 DIAS "'PI'
o c6digo na Listagem 9.10 produz esta saida:
• Nalinha 6, f1 emovidopara 51. Nenbuma cc nversao eexecutada porque s 1 euma String de campo, portanto
erratadc como sendo do tipo c.
e escrito e as resultados sao lixo. Na linha 8, para s t - et eat ribuida urna stri ng valida de caracrere 11234 N a linha 9, s1 ernovido p ara fl . N enhuma cocverssc e executada.
Simi ~
• Na linha 7. st- et • •
1 •
• A linha 10 escreve f1 e, novame nte, as resultados sao lixo.
e atribuldo urn valor vilido de 1234. e at ribuidc a s1-c1. Pelc fato de a atribuicic ser pan
• Na liaha 11, para f1
• Na linha 12, f1
o componente e ca c para a String de camp o, a conver sao sen executada e a linha 13 escrevera urn valor vdlido. Voe! nee deve mo ver urnc vcr tevel do tipo c porn umo string de ccrnpc
ou de uma string de compo contendo urn tipo ncrner ico . as resultados dependem do m6quino e, porto nto , soo indefinidos.
Movendo de uma string de campo para uma outra utiliza ndo tipos de dados de carodere 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 x). A Lisugem 9.10 ilustra este conceieo.
ENTRAOAIlrrrrr.. Listagem 9.10 Ufilizondo move com duo s strings d e , . inteiramente de tlpos de dodos de ccrodere vdlld o s 1 re port ztx0 91O . 2 data : begi n of 51, -S type d value '1 99S0217 ' • dl 3 -4 "(,) t ype n value ' 1234' , -I value 'A' . 5 -I ,2 val ue 'B' • 6 end of 51, 7 b~1n of 52. 8 -4 ,1(4) type n, 9 -2 .,(2) type c. 10 -2 d1(2) type n, 11 -2 12 " (2) type c , -4 ct (4) type c, 13 end of 52. I' 15 52 .. sf . 16 write: I 51. 17 I 52. I ,1 -dl . sl-nl . 51-ct . sr-cz, 18 19 I 52-11. 52-mI. s2- dl. 52- nl , 52- cl .
•
199802171234AB 199802171234AB 19980217 1234 A B 1998 02 17 12 34A8
"
byt es byt es byte byte
bytes byt es bytes bytes bytes
compo compostos
i1itISE~
• As linhas de 2 a 14 defin em duas strings de campo compostas inteiramente de campos do tipo caractere. Cada st ring de campo tem, no total. 14 bytes de comprimenro.
• Na linha 15, 51 emovido para 52, tratando cada string de campo como se fosse de urn unico camp o do tipe c com 14 bytes de comprimento. • 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 totalmente escritcs. s l - d1 foi dividido entre s2-yl. ml e dl. Os primeiros dois bytes de s1-n1 foram para s2-n1. Os bytes remanescentes de 51 foram para 52-c1.
Movenda de uma string de campo para uma Dutra com tipos de dados num ericos HO'O Ilr....
A maiorte-dos sistema s operocionc is reqv er c ende recc de m6quina dos compos 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 dois. Gernlmente, esse regro impa sto como "urn inte iro de quotro bytes deve ser 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.
TaMO"
e
NOVO ....
A fim de ctender oos requisito s de olinha mento , um compilad~ r tipico inserir6 bytes de preenchimenfo a ntes de um campo que req ue r olmho mento. Por 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 de dots bytes. 0 cornpilodor eo locorO urn byte noo utilizcdo no deslocomento 0003, de modo que a inteiro cc mece no deslocomento 0004, fozendo com que sejc cdequcdcmente o linhod o. Os bytes de preenchimento sOo lnvisfveis 00 progromador, mas seus efeitos pcdem, as vezes, ser vista s.
TEtMO "
Se vo ce criar um a string de campo com uma mescla de campos nurnericos e de caractere, bytes de pree nchimento, alguma s vezes , serao inseridos pelo sistema para 0 alinhamento de campos numericos. Se voce tentar utilizar uma instru~ao move em tal string de campo a fim de mover seu conreado para uma out ra, eases bytes de pree nchimento podem causar resultados inesperados. Portanto, voce podera somente utili zar move se uma das seguintes for verdadeir.a:
301
... ...I ..... - - - - - - -
302
-
- -- _.
i
I
APR ENOA EM21 OIH AUP/4
• As duas Strings de campo consistem inteiramente em campo s de caractere (ripos C, n, d. t e x).
DIA 9, A1iJBUI~OES, CONYERSOES EcAlCULOS
SAiDI ~
B
s t-et tern apenas urn byte de comprimento, port ant o c2 tera urn deslocamento desigual desde 0 inicio da string de camp o e necessitard de preenchimento 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 s1- c2 temiinarao no comeco de s2-c3 . Entretanro, 53 corresponde exatamente com 51, dessa fonna 0 movimento na linha 14 ocorr erd perfeitamente. Esse exemplo mostra que voce nao pode ign orar os efeitos da existencia de campo s numericos dentro de uma estru tura. 0 fate de cada camp o de recebim ento ter 0 mesmo mimero de bytes que cada campo de envio nao e suficiente para garantir 0 alinhamento dos component es. As regras de alinhamento variam de acordo com 0 sistema operaciona], de modo que 0 ndmero de bytes de preenchimento e suas posi~5es irao variar. 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 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 correspondentes (exceto quanto ao nome) .
• Os tipos de dados, comprimentos e posi~ao de todos as componentes nas' duasstrings de campo ,sao exatamenrecorrespondences (as nomes dos componentes DaO p recisam ser correspondentes). Se as campos de envio e de recebimento fore m inteiramente composto s
de campos de caractere,nenhum byte de preenchimento existiri. e 0 resultado cia utiliza ~io de move sera previsiveL Se existir uma mescla de caracteres e tipos numericos, as bytes de preenchimento pcdersc existire 0 resultado da utilizacio de move podera ser imprevisfvel. Urn exemplo e mo strado na Listagem 9.11 .
A instrut;60 move-corresponding pode set utillzcdc pora move r as strings de compo que ten hom umo mescla de tipos de dodos nume riccs
e de ccroctere. 1550 sera descritono seguinte seo;oo.
ENTUJlI~
A 1110 I A 1,234
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
1 r eport ztx0911.
2 data : begi.n of 51, 3 4 5 6
7 8
c1 value 'A', ·CZ type 1 value 1234, c3value 'B ', end of 51, begin of 52,
ei ,
9 e2(4), 10 es, 11 end of 52, 12 begin of 53, 13 u. 14 x2 ty pe i , 15 xJ, 16 end of 53. 1752 -51. 18 write : I sz-ct , sz-cz, sz -ca . 1953 -51. 20 write : I s 3~x1, s3- x2, 53-x3.
" \.Ill byte · quat ro byte5, ern geral prectsa de ' preenchteenec ·urn byte
Para executar urn movimento de uma string de camp o par a uma outra, em que os tipo s de clados e/ou comprimeatos nao correspondam, ut ilize a instrucao move- cor r es pondi ng. Ela gera instrucoes move para com ponentes com nomes correspondentes. as componentes na String de campo de recebimento qu e na o tenham urn nome correspondente na String de camp o de envio nie sers o alterados. Isso e ilustrado na Lisragem 9.12.
" \111 byt e "quat ro bytes, sen preench1mento "urn byt e
"53 ccrre speede exetaeente can 51: "- tipos de dados igua i 5 II~ nCln;ero de CillllP05 19ual ". ei1Jl105 na mesrna ord em • (05 neees nlio pr ect 5il1l corresponde r )
Em meu sistema, a cod igo na Listagem 9.11 produz a seguinte safda. Ern seu sistema, os resultados podem variar para os campos com atribuicoes
invalidas.
Utilizando a instru<;iio move-correspond ; ng
~
Sintoxe do
instru ~Ci o
move-correspondi ng
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
T
esquerda. nove- cc r r es pcndt nc .v1 t o vz,
on de: •
vl
•
v2
ea variavel ou string de camp o de envio . ea varifvel ou st ring de campo de recebimen ro.
303
r
OIA 9,ATiIBUI\OES,<OHVEiSiiES EclliuLOS
EHTRADAlirll.. ~is~~ger.n 9.12_ A lnsfrucdo move-:orresponding gera instrucces move ,. individucls e entdo executa converseo de dodos 1 report zt x0912. 2 data: begin of 51, 3 cl type p deci mal s 2 value '1234.56 '. 4 c2(3) value 'ABC'. 5 c3(4) val ue '1234' , 6 end of 51, 7 begin of 52, 8 " (8) ,
9
x2(3)
value ' XYZ'.
mul t t pl y a u multi ply-corres pondi og
•
divide au div ide-corre sponding
-
ea insrrucfo u tilizada co m mais frequencia para execut ar ctlculos.
Sintaxe da instrucno compute
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.
S
compute v3 • vl op v2 [op vn • ••].
In
au
T
v3
= v2 op v2
s2 before scv e-c crrespondt nc: XYZ s 2 after move- cor r es pondin g: 1234. 56 XYZ
v3
•
vr, v2 e vn sao as ope ran dos.
•
op
... 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 pode ver asses Instrocces move; 0 sistema as gero e as executa outomoticomente "!'nos 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 envio . Nesse coso, c1 e c3 fem os mesmos names, por isso duos instruc;6es move se c gerad as. As convers6es de dodos sao executados , como seriam se voce mesmo five sse codtficcdc essas lnstrvcces. 0 cornevdo de c2 permcnecerc inolterodo depots de cond ufda a instruc;60 nove-cor-responding.
Se duos strings de compo forem exetamente correspa ndentes, noo utilize move-co r -respond! ng para mover os dodos de umo porn outra. A utilizoc;oo de move e mois ehclente.
Execufondo c6lculos V oce pode executar calculos utilizan do as seguintes instrucoes:
add au adc- cor re spondt ng
e urn ope rador matemarico.
0 1.23~
,
comput e
e a variavel de recebimento para a res~ltada do calculo.
•
1. 234.56 ABC 1234
51
[op vn ,..l,
onde
a c6digo na Listag em 9.12 produz esta safda: .
•
•
Utilizando a instrucco compute
15 * move st- et to 52-c1. "execut a ccnversao 16 *" move sl- c3 t o 52-d . "execut a ccnversxc 17 write : 1 's2 after lOOve- corresponding: ' . 52. cl ; 52-x2, 52-c3.
•
s ubtract au s ubtract -corres pondi ng
Compute
10 c3 t ype i. 11 end of 52. 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
IliDI.
•
A Tabela 9.5 contem uma lista dos operadores validos. Tabela 9 .5 Operadores v6 lidos po rc a . Opero dor
+
instru ~aa compute
Opera ~ao
Adi;oo
Subtrocec
/
Multiplicac;eo Dlvtscc
** DIV MOD
Dlvisec de inteirc Restodo divisdc de inteiro
*
Expcnencicccc
Alem disso, existem funcoes predefinidas. Para uma lista, obtenha ajuda utilizando Fl p ara a palavra-chave comput e. A precedencia do opera dor e cia for~a coma segue: •
Funcces prede finidas sao avaliadas ,
• em seguida a expone c ciacac, • em seguida ", / , DIV e MOD, na ordem em que ap arecem na expressao, • em seguida + e - na orde m em que apar ecem na expressao.
305
~~
...... ,...
-- - - ----. Il"'''''"'IDES, •
v2
ea varisvel sendo adicionada.
•
v1
e a varifvel adicionada a v2.
A sintaxe de subtract, mul t f pfy e div i de
-
,.",usO" "AlCULOS
e semelhante.
Sintoxe do instrucco add-co rrespondi ng
III Abaixo estli a sin taxe da instru~ao add- correspondi ng.
Z
g
T
add-cor respo ndi "g 51 to 52.
onde: •
52
•
sl
e a string de campo sendo adicionada. 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 6 c2 ty pe f val ue 7 c3 ty pe 1 val ue 8 end of 51. 9 begf n of 52. 10 c1 ty pe i val ue 11 x2 .typ e f value 12 c3 t ype f valu e 13 end of 52. 14 add fl 15 subt r act fl 16 llIIltipl y f2 f2 17 div i de 18 add- corres pondi ng 51 19 subtract· corr e5ponding sl 20 mult i ply . corre spond1ng s2 21 divi de-c orresponding s2
10. 20, 30.
100, 200. 300, t o f2 . f rom f 2. by f lo by fl . t o 52. f rom sz, by 51. by s1.
write wr t te write write write : write : wr ite : wr 1t e:
I I / / / / / /
f2 . -fl fica i nalterado rz . f2 . f2 . s2-c l , 52-x2, 5 2~ c3 . sz- ct , sz-sz, s2- c3. sz- ci , s2-x2 , s2-c3. sz- ei . s2-x2, sa-cs.
307
308
!
HRENDA EM 21 DIAS ABAP/4
o
DIA9:ATRIBUltOES,CONVERSOES Eti.LfUlOS ,
configurado co mo '01 ' . Jo1 que as datas sao sempre arm azenadas utilizando 0 formato inte mo YYYYMMDD, 0 valor de dia da data em d2 e. co nfi gurado como ' 01' . 0 resu lt ado e. que d2 contem u ma data igual ao prime iro dia do mes atu al.
c6digo na Listagem 9.13 produz esta saida: 5 3
6 3 110
200
330
100
ZOO
300
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)
Cclculos de dolo
~NTlADA'" Listag em 9.14 Colculos de doto que util izam a vcr tcvel de data dentro ,. de um c61culo
sy-datUlll. dl, p.
wr ite / dl. write / ez . write / d2. ~
-data de ont ea -pr1meiro dia do ~s atual -Olti lllO dia do ~s anteri or
ztxl_amalgamation_dat e . "numer o de diu desde ztxl amalgamation_date
0
N a linh a 2, a ins rruc ao type -pool s faz com qu e a constante ztxl_amalgamat ion_date seja inclufda no programs.
• N a linha 6, a data arual
I
2 3 4 5 6 I
c6digo na Listagem 9.14 pr oduziu esta
354
IHius~ ~
Urn sfmbo lo de compo e urn indicad or que voce pode dinarnicamen te atribuir a um cam po. Depois do ctribuicc o, voce pode utilizer a sjmbolc de compo em 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 a ele. 0 nome do simbo lo de campo deve ccm eccr e term inor co m a sinal de menor que e sinal de mo ior que . A Ustogem 9 .1 5 contem urn exemplo simples.
NOYO'" lUKO~
e uma referenda
para urn outro
,. compo
1998/02 /21 1998/ 02/ 01 1998/ 01/31
•
Atribuic;ao dinamica
ENTUDAItrrr.. Listagem 9.15 Um sfmbolo de campo
No die 22 de fevereiro de 1998, saida:
S.liDI~
e. calculada. 0 resulrad o e atribuldo ao campo come. totalmente escrito na linha 13 .
pact a dc num_da ys e
Uma variavel de data (tipo d) p ode serutilizada dentro de express6 es mat emdticas. 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.
I report ztx0914 . 2 t ype- pools ztd . 3 data : dl like 4 d2 li ke S nurn_days t ype 6 dl • d2 " sy ~ d atum . I 8 subtract I f rom dl. 9 d2+6 · ' 01' . 10 subtract I f rom ea. 11 12 nlml_days .. sy~datum 13 write / nurn_days .
Na Iinha la, 1 e sub tr aido de d2, considerando a data do ultim o dia no mes an te rio r.
e atribufda a dl e d2.
report ztx 0915. dat a fl(3) value 'ABC'. field -symbol s <t> , -<f::o pode agora s er usado no lugar de fI assi gn fI to <f ::o. write <t> . "escreve 0 ccntenco de fI -a t r i bui urn novo val or a fI <f::o· ' XYZ'. write / fl.
o c6 dig o na Lista gem 9 .15 produz esta saida : SAiDI ~
ABC
IHilll~ ~
• A linha 3 define urn sfrnbolo de campo denominado <f>.
XY2
• A linha 4 at rib ui a campo fl ao simbolo de campo <f >. <f> agora indica o arm az enam enro da variavel fl e pode ser urilizado, em vez de fl, em qualqu er lu gar do programa. • 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
• Na linha 9, urn subcampo em d2 no desl ocamento 6 co m urn comprimento de 2 (comprimento obeido a partir do camp o de envio) e
•
A linha 7 escreve
co nteudo madificad o de fl.
0
conteudo de <f> , mas . na verdade, modifies fl.
309
-- ....... _... . 310 , API ENDA EM
21 OIlS ABAPH
Voce pode ut ilizar stm bolcs de campo para criar programas muitc genericos. Suponha, par exemplo, que voce queira criar urn pr ograms que aceite urn nome de tabela como urn parimetro de entrada e exiba 0 conreedo. Voce DaO poderd codificar os nomes de campo na instrucao write, porque eles serao diferentes em cada tabela. Em vez disso, voce podera utilizar urn simbolo de campo na instrucao write para referir-se 010 campo de uma tabela .
Resumo • As varidveis de sistema sao arm azenadas na est rut ura sys t. Voce pode pesqui sar as descricoes dos campos e seus elemen tos de dados a fim de localizer 0 campo desejado. Esse procedimenro pode ser utilizado para localizar arraves dos campos de qualquer tabela.
DllH TRIBUI\OB, (OIffiRSOB Ec.ltrulOS
IFasa
I
311
_
Utilize compos do mesmo tipo de dodo, quando possivel, po re evitor cc nversees.
Nao move vclores inv61idos para campos.
Utilize move-cor -respond! ng para mover os compos de uma string de campo para umo outre, quand o as compon entes tern 0 mesmo nome mas os tipos de dodos e com primentos nco coincidem . Utilize a instrulScO clear para otribuir volores iniciois podreo a uma vc ricvel ou string de campo.
• 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 caracrere ou com NUlls. • A instrucao move tambem pode ser escrita com o ". Mulriplas atribuicoes em urna unica linha sao permiridas, como vl " v2 " v3. As con versoes sao automaticamente executadas, quando necessario. U rn 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 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 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.
P&R
o o o o
• Para acessar os bytes individuais do valor de urn campo, utilize urn subcampo . Urn subcampo pode ser utilizado como urn campo de envio 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 ply -c or re spondt og e divi de- cor r espondi ng.
o
o
Posso utilizar a instrucsc clear para configurar Urn valor com espacos em branco ou zeros, ma s existe uma instrucao que pode configurar um a vari avel com 0 valor an terior) por mim especificado, utilizando a adi~o value na instrucao data ?
Nee, infelizm en te nao hi. Possa utilizar a instrucao move com strings de campo de co m pri mentos diferentes? 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 recebi mento. Por que precise saber sobre byte s de preenchim en to ? 0 sistema cuidara disso, caso eu siga todas as regra s?
DaO
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 am ente atri buir uma string de campo de forma incorreta util izan 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 "modificac;ao" para fazer com que 0 programs opere adequadam ente.
9
312
t
APR EN DA EM 21 DIAS ABA PI4
o o
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 que tenha urn valor Invalid o? Q ualquer coisa p oderf acontecer. Eu nao escreveria urn programa que con fiasse intenciona lmente em val ores invalidos. Por exemplo, nao ren te uti lizar urn valor de data especial de x para indicar algo especial como uma data ausente. 0 comporramento de seu pro grama toma-se imprevisivel quando voce ultrapassa os limites admissiveis do idioma. 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 sintaxe, as vezes, deixa a desejar?
D~U""U1(OES, [QNV"SIiE" c.\LCUlOS I
Duas coisas esrao erradas com
o 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 entendimente 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.
programa na Listagem 9.16. Quais sao
EHTRADA.... Listagem 9.16 Este c6digo ilustra a utillzoc do de algumas vcricveis b6sicas de sistema
r
report zt y0916. tables ztxlfal. par amet er s l andl like ztxlfal-1andl obli gatory def ault 'US'. select * from ztxt005t where 1and1 '" 1andl and spres > sy- langu . write: / ' Description:'. ztxt005t-landx. endse1ect. if sy-subrc <> O. wri t e: / ' No desc rlptions exi st for country' . l andl. endt f â&#x20AC;˘
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.
0
elas?
313
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 instrucao wr; t e
Utiliza nd o a instruc;a o if A instrucdo if no ABAP /4 te rn operadores relacionais para igualdade e desigualda 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
Sintoxe do instru..ao i f
Tabela 10 .1 Ccnnnvcccc
'" A seguir, veja a sin taxe da instrucac if.
Z
if [not] exp [ and [not] exp ] [ or [not] exp ] .
S
[elsei f expo ]
m
---
[el se .
---J
~
Compara fjao
Formas a lternativas
Verdadeiro quan do
vl >'" v2
GE, :>
vl for moior que ou iguol a v2
vI <: v2
LE, :<
vl for menor que ou iguol
v2
vl estiver entre v2 e v3 (inclusive)
not vI between v2
vl ultrapossar a fa ixa de v2 a v3 - (inclusive)
and v3
endif.
0
vi between v2 and v3
onde: •
•
e um a expre ssao lo gica que avalia quanta a umacondicaoverdade ira au falsa.
exp
--- representa qualqu er numero de linhas de c6digo. Ate mesm o zero
linhas sao permitidas. Os seguinres pontes se aplicam: •
C ada if clever ter urn end; f correspondente.
•
else e elseif sao opcionais.
• O s parenteses p od em ser utilizados. Carla paren tes e deve ser separado por urn espa~o. Por exemplo, if ( f1 = f 2 ) or ( f l :: f3 ) esta corr eto e if (fl "' f2 ) 'or (fl "' f3) esta inco rreto. •
•
A s variaveis po dem ser comparadas com espa~os em bra n co au zeros utilizando a adi~ao i s in it ial. Por exemplo, if fl i s in itia l sera verdadeiro se fl for do ripe c e estiver em branco. Se fl for de qualq uer outro ripe de dado, a instrucac sera verd adeira se fl co nt iver zeros. Para uma negacao, not dev e preceder a expeessac 16gica. Par exemplo, if not fl i s in itial esta corr eto. if fl t s not in iti al est3. incorreto.
• As variaveis podem ser comparadas com valo res nulos utilizando a adiljao ; s nul l. Por exemplo, if fl is nul l. O s operadores 16gicos p ara operan dos de qualquer tipo sao list ados na T abela 10.1.
Ta bela 10. 1 Cornporoco es comu ns e suas formas alternativas ComparoCjoo
Fonnas alternativas
Ve rdadeiro quando
vI • v2 vI <> v2 vI > v2 vl < v2
EQ
vI for iguol a v2
NE, ><
vI nco for iguo l a v2
6T
vl for moior qu e v2
LT
vi for menor que v2
Na Tabela 10.1, vl e v2 pode m ser variaveis, Iiterai s ou strings de campo. N o caso de variave is a u lit erais, a conv ersao automatica sera executada, se 0 tipo de dado ou co mprime nto nf o corresponderem. A s Strings de campo sao 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. Urn tipo tera p rec edencia e ditard que tipo de conversao sera executada. A ordem de preceden cia e: • Se urn campo for do tip o f.
0
outre sera convertido p ara 0 tipo f.
• Se urn camp o for do tipo P.
0
outre sent convertido pa ra 0 tipo p.
• Se urn ca~po for do ripe t , 0 ou t re sera convertido para
0
tipo t.
• Se urn campo for do tipo d, 0 outro sera convertido para 0 tipo d. Os tipos c e n, entretanto, nao serfo convertidos. Eles sao diretamente co mp arados. • Se urn campo for do tipo t , 0 ou tro sera convertido pa ra 0 tipo t. Os tipos c e n, en tretanto, nao serao convertidos. Eles sao diretam en te co mparados. • Se urn campo for do tipo n, ambos sersc convertidos para 0 tipo P (nesse ponto, 0 outro campo po derd ser apenas do tipo C ou x). •
Nesse pont o, urn campo sera do tipc ceo ou tro sera do tipo x. x e convertido par a 0 tip o c.
As conversoes seguem as mesmas regras daquelas que sao realizadas pela instrucao move. As co nve rs6es de tipo sao completamente detalhadas na documentacao de palav ra-c have do ABAP/ 4, sob 0 titulo "Relational Operators for All Data Types".
ConversOo de dodos de literais dura nte compora..6es as literais sao arm azenados intemamen re com tipos de dados, como pode ser vista na T abela 10.2.
317
318
I
' PRE '" EM21 OIlS
"API'
O~ 10, INmlJ(OES DE ( OKTiOl£ COMUNS
o c6d.igo na Lisugem 10.1 produz esta saida:
Ta bela 10.2 Tipos de dodos de [itercis Descri~ao
Tlpo de da do
, .,
SAiDI ~
Xis between X and Z 51 <> 52
N emeros de urn a nove d igito s de comp rimento N c mercs de 10 au ma is d igitos de com prim ento
p
Todos os outros
c
A s co nversees de tipo para [iterais segue m a mesma ord em de p reced encia e as me smas regra s de conversac sao apl icadas. A Listagem 10.1 m ostra urn prograrna de exemplo utilizando os operadores comuns de comparacio. Uma conversac inesperada tambem e demc nst rada.
ENTiADA~ Listagem 10 .1 Urn exempl0 do utiliza<;60 de if no progromo 1 report ztxlOOl. 2 data : begi n of 51,
x value 'X' , 4 Y valu e ' Y' . z val ue '2 '. 5 6 end of 51, 7 begin of 52, 8 x value 'X'. 9 z val ue 'l '. 10 end of 52. 11 12 1f sr -x • 52·x. 13 wri te: / 51- x. '. ' , 52-x . 14 else . 15 .... ri t e: / 51-x, '0'. 52-x . 16 endt f.
3
o• ' ,
INiuSE ~
• N a linha 12, 51-x e comparado com 52- x. Ambos sao do tipo c, comprimento 1. Nenhuma conversjc e executada e os dois sao iguais. • A linha 18 esemelhanre, mas utiliza 0 operador bet ween. 0 valor Xfica na faixa de Xa I e, sendo assim, 0 teste sera verdadeiro. • A linha 24 compara as strings de campo 51 e s2 como se fos sem varidveis do ripe c. 0 valor de 51 e portanto XYI e 0 valor de 52 e Xl. Eles DaO sao semelhantes. • Na linha 30, a literal 0 e comparado com urn espacc- 0 zero e armaze nado intern amente como ripe i, 0 outro como tipo c. De acordo com a ordem de preceden cia, 0 tipo c e convertido para 0 ripe t. Converter urn espacc em branco pa ra urn inteiro resultara em urn valor zero e a comparacio provara ser inesperadamenre verdadeira .
Exibind o convers6es IOYO '"
TEUO "
utilize
0
Ao executor umo on6 fise de prog rorno, voce poderc determiner onde ocorrem as ccnversces dent rode urn programo . Para executor umo on61isede progroma, segu inte procedimento.
5CREENillI.~ Inid e og oro a ScreenCom
"Howto Perform a Program Ana lysis".
17 18 1f sf -x bet ween sz-x and s2- z. 19 write : / sl - X, 'i s between', sz-x, ' and' , sz-e . 20 else . 21 write: / s l - X, 'i s not bet ween' , sz-x, 'and' . sz-a . 22 end1f. 23 24 1f sl • s2. · compa rando st rings de campo , byte per byte 25 write: / 'sl • s2' . 26 els e. 27 write : / ' s l<> s2 ' . 28 endi f. 29 30 i f 0 = ' ". "At en<;!o par a 0 que segue 31 write: / '0· 32 else. 33 write: / '0 <> " 34 endif .
I. Comece no ABAP/ 4 Editor: Initi al Screen (Tela Inicial). 2. D igite 0 nome do programa a ser analisado no campo Pro gram. 3. Selecio ne 0 caminho de menu Ur iliries-c-Program An alysis. A tela Conversions: xxx:o: sera exibida. 4. Pressione 0 borao Conversions . A tela Conversions : x;cca: sera exibid a. T odas as convers6es sao resu midas nessa tela. A primeira coiuna conrem tipos de campo co mparados. 5. De urn clique dupl o em qualquer linha para visualiza-la dentro do programa.
A primeiro coluno no telo Conversions: lOOOOC nlio mostra qual conversec e executodo. Mostro simplesmente os tipos de dodos erwclvldcs no converse o.
319
O~ 10, INSTRIlI'" OECONTROlH OMUNI
320 [ APR ENOA EM21 DJAS A BA P/ ~
Utilizando
fl Sf;
321
'Iltillzandc operodores de string de caroctere
f
Voce utiliza el seif para evitar 0 aninhamento de its. 0 aninhamento de its pede dificultar sua pr6pria leitura e manutencao . (Veja a Listagem 10.2.)
ENTRADA.... Listagem 10.2 A utilizCl;ao de el setf e mais dc rc do que a utiJizac;ao ,. de its oninhodos
O s operadores especiais para as strings de caractere sao mostrados na Tabela 10.3.
Ta bela 10.3 O peradores especiais pore strings de ccroctere Ope~..
1 repo rt ztxl002. 2 parameters: fl def ault 'A', 3 f2 default 'B' , 4 f3 defau lt 'c.
vI CO v2
Sig nifl(o
Co nl6m se rneree
V. ..dodelro
Ha d lsti "iCJo entre
q ua nd o
mahi.culas • mi nUsculo.l
V1 for com posto
Sim
Nco
5im
Noo
'm
",,0
Sim
Nco
",,0
'm
NOo
Sim
NOo
Sim
NOo
Sim
Os "pa~os e m branco finol. sbo Ign Ot'o dos?
sc mene de ce recte-es em '12
I 6 if
fl • f 2.
7 els e1f
fl • f3 . f 2 .. f3 .
write: / n. ',, ' f2 . write: / n , '. ' rs. write: / f 2, I ", ' f3 . write : / 'all fields are different' .
'1 1 CN '1 2
not '11 CO '12
v1 pod, cooter coracteres que
8 elseif 9 else . " end1f. I. 11 12 - es l1nhas 5-9 fazem 0 mesmo Que as li nhas 14· 26 13 14 if fl • f2 . 15 write : / fl . ' . ' f 2. 16 else . 17 if n · f3 . write: / fl, ' .', B . 18 19 else. 20 if f2 .. f3 . 21 write: / f2 . ''' ' , f3 . else . 22 23 wri t e : / 'all fi elds are diff e rent ' . 24 endif . 25 endt f. 26 endif.
ntic 'st60 em '12
'1 1 CA '12
Cont em q uolq uef
v1 pode ccorePIlle mlIOOs um ccrecee em '12
'11 NA '12
not '11 CA '12
.,1 nlio pod. conler nenhum torodere em '12
'11 CS '12
Contem stril'lg
... 1 pod. tonI .. 0 string de ee reeere ~ ,2
'11 NS '12
not '11 CS '12
...1 n60 pode co ni.. 0 string de corcceere em '12
'11 CP '12
Cont6m podriio
v1 pede center o pad rtlo em '12
'11 NP '12
not '11 CP '12
...1 ntio ped e co nter 0 padrOo em Y2
o
c6digo na Lisragem 10.2 produz esta saida:
siiDI ~
all f iel d$ are different al l fields are different
INitISE ~
• Se fl
Es ses operadores podem ser utilizado s em qualquer expressao de co mpara~ao. Os operadores CS, NS, CP e NP ignoram os espaCiOs em branco finais e
nio disringuem maiusculas de minasculas. Embora voce p os sa utilizar variaveis, co ns tantes ou [iterais com ope radares relacionais para as strin gs de caractere, a Listagem 10.3 utilizara apenas 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.
= f2 , a linha 6 sera verdadeira.
• Se f1 = f3 , a linh a 7 sera verdadeira. • Se f2 = f3, a linh a 8 sera verdadeira, • 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
fHIRADA~ Lislagem 10.3 Um pregreme d••x.mple .mpregende co, CN , CA • NA 1
• A linha 18 e falsa porque I ABCD' nao contem nenh um dos caracteres . 'XVI' .
report ztx IDD3 .
• na e equivalente a not vI co v2.Portanro, as linhas 22 e 24 sao a negaljao Ic gica das linh as 16 e 18.
Z .. ope r ador: co 3 wri te / " ' AABS" c o " AB " ' . 4 if ' AABS' c o 'AS'. write 'True '. e lse. write ' Fa ls e ' . end 1f . 5 write / " 'ABCD" co "ABC"' . write ' Tru e'. else . write ' Fa lse ' . e nd1f. 6 i t 'ABCO ' co 'ASC' .
7 B .. ope r ado r: e n 9 write / " ' AA BS" en 10 if ' AABB' en ' AB' . 11 write / "'ABCD" en 12 it ' ABCD' en 'ABC' . 13 14 .. ope r ado r : 15 write / "' AXCZ" ca 16 if 'AXCZ' ca ' AB' • 17 write I " 'ABCO' , ca 18 if ' ABCD' ce 'XYZ' . 19 20 .. ope r a do r : na 21 write / " ' AXCl " 22 if ' AXCZ' na 'ABC'. 23 write I " ' ABCO" na 24 if 'ABCD' 'XYI' .
"
"
"AB" ' . write 'True' . e lse . write ' Fals e' . e ndif. " ABC" '. wri t e ' Tr ue ' . else . write ' False '. e ndi f.
AHALISE~
co co en en ea ca ' AXCI ' na 'ABCD' ne
Tabela 10.4 Op. roder.s CP. NP
Caradere
Utllizado pa ra
•
Pode co rrespo nder qua lq uer seq uencia de cc rocteres.
+
Pode co rresponder um cntcc caractere .
#
Pode interprete r 0 pr6ximo ccroctere, llterclmente .
" ABC' ''. write ' Tru e ' . else . write ' Fals e' . end if . " XYZ' , , .
# e 0 caracrere de escape. U rn unico caract ere seguinte sera interprerado de forma exata. Urn significado especial, se exisrir, sera perdido. Voce tambem 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 sera necessario quand o voce quiser executar uma pesquisa com disnncao entre maiiisculas e mimisculas utilizand o C5, N5, CP ou HP. Voce pod eci tambem precisar do caractere de escape, se quiser executar uma pesquisa de padrao (CP ou NP) para uma string contendo ", + ou #.
write 'True ' . else . wri t e ' Fal s e' . end; f.
o c6digo na Listagem 10.3 produz esra saida: ' AA BB' 'ABCD' ' AA BS ' ' ABCD' ' AXCl ' ' ASeD'
Ret omando a Tabela 10.3, os operadores CP (conrem padrao) e NP (nenhum padrao) executam uma pesquisa de string que permire caracteres com cor respondencia de padrao. A expressao vl CP v2 sera verdadeira, quan do vl contiver uma String que corresponds com 0 padrao em ,,2. A expressao vl NP v2 sera verdadeira, quando ,,1 nao contiver urna string que corresponda com 0 padrao em ,,2. E equivalente 3: not vI cp vz. Os caracteres com correspondencia de padrao permitidos em v2 sao fornecidos na Tab ela lOA.
wr i t e 'T rue' . else . wri t e 'F als e ' . end i f. "XYZ ' " . write 'True ' • else . write ' Fa lse ' . end ; f .
" AB''' .
"
SAiDA ~
I
'AB' Tr ue ' ABC' Fa ls e 'AB' False ' ABC ' True ' AB ' True ' XYI ' False ' ABC' False 'XYI ' True
Tabela 10.5 Utilizondo corccteres Instrul!ioo
Ve rd a deira q ua ndo
vl CP ' A+C'
• A linha 6 efalsa porque ' ABCD' contem urn D, que DaOesta em ' ABC' .
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 . O vclqver ca ractere pod e a pa recer no seg unda posic;oo.
,,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 que not ,,1 co v2. Portanro, os resultados sao invertidos. A linha 10 e falsa e linha 12 e verdadeira.
,,1 CP ' *I Alb*'
111. pode conter uma letra A motusculc seguida por vmo letrc b minuscule.
vl CP ' *" .'
v1 pod e conter urn ,.
• co e 0 operado r que contern exclusivamem e. A linha 4 porque 'AABB' contem apenas caracteres de ' AB'.
e verdadeira
• 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.
ca raderes pode m este r em letra rnciu sculc o u em letro mlnusculo .
E
323
324
DIA 'UNSTRU\OES 0, CDNTROlE COMUNS
APRENDA EM 21 DIAS ASAP/.
A utilizacao desses ope rad ores sempre configu ra a variavel de sistema sy-fd pos. Se 0 resultado cia comparacfo for verdadeiro, sy-fdpcs ira center 0 desloca menro com base em zero ciap rimeira correspondencia ou car actere sem correspondencia, C aso contrdrio, sy-fd pos ira canter 0 comprimento de vj. 0 . valor atribuido a sy- fdpos p or cada ope rado r sera descrito na Tabela 10.6. Depois de uma com paracao, sy- f dpos ira comer urn deslocamenro do primeiro caractere au 0 compriment o de v i. Nesta tabe la, " 1st char(vl)" significa"o deslocamento do primeiro caractere de (string ou pa drao) vl ". Entao, por exemp lo, onde esra " 1st char(v l) in v2", significa "0 deslocamento com base em zero do pri meiro caractere de vi, que esta rambem em v2n • Length(v l) significa "a comp rime nto de vl". Observe que somente a primeira ca lun a contem as insrrucoes do ABAP/4. Tab ela 10. 6 Valor atribuida a sy-fdpos par coda operodor Compa rafjoo
if TRUE sy-fdpos •
if FALSE sy-fdpos :
vi CO v2
length (v1) 1"chor (vi) in v2 lslchor (vi) in v2
length (v1)
length (v11 P'c hcr (v2) in vi
P'chcr (vi ) in v2 length (v1)
length (v1)
T'chcr (vi) in v2 length (v1)
vi CN v2 vi CA vz vi NA v2 vi CS v2 vi NS
vz
vi CP v2
1"chcr (v2) in vi
1"chor (vi) not in v2
15 if 'ABCD' en ' ABC' . 16
18 * operador: ea 19 write / "'AXCZ" ce " AB" '. 20 if 'AXCZ' ce ' AB' . write 'True'. else. write 'False' . endif . write: "sy-f dpcs»", sy-tepcs . 21 22 23 write / "'ABCD" ca "XYZ"'. 24 if 'ABCD' ea ' XYZ' . write 'True'. else. write 'False'. endif .
25 26 27
write: 'sy-fdposz' . sy-fdpos .
28 * operador: na 29 write / " 'AXCZ" na " ABC' " • 30 if 'AXCI' na 'ABC' , write ' Tr ue ' . else . write : 'sy-fdpos·' . Jl 32 33 write / "'ABCD" ne " XYZ' " • 34 if 'ABCO' na 'XYI'. write ' Tr ue ' . else. write: "sy-fdpos>", 35
write ' Fal se'. endif . sy-tdpcs ,
write ' Fal se'. endif . sy-fdpos.
length (v1)
ENTRADA~ Lista gem 10.4 Utilizando sy-fd pos para ver a deslocamento do primeiro cc roctere correspondente au do coroctere sem correspondenclc
"AB'" •
write 'True '. else . write 'False '. endt t . write: ' sy- f dpos=' , sy-fdpos. " ABC'" •
write 'True' . else. write ' Fal se '. endif. write: "sy-fdpus«", sy-fdpos.
"AB' ''.
write ' Tr ue ' . else. write 'False' . endt f , write: "sy-fdpos>", sy-fdpcs . "ABC'" •
write 'True'. else. write ' Fal se '. endif . write: 'sy-fdpos"' . sy-fdpos.
17
o c6digo na Listagern lOA produz esta safda: 'MBB' ' ABCD' 'MBB' 'ABCD' 'AXCl ' 'ABCD ' 'AXCl' 'ABCD'
A Listagem I DA esemelhante a Listagem 10.3, mas algum as linhas for am adicionadas para exibir 0 valor de sy-fdpos depois de cada comparaclo.
1 report ztxl004 . 2 * cperacor r co 3 write / "'MBB " co 4 if 'AABB' co 'AB'. 5 6 write / " 'ABCD" eo 7 if 'ABCO' eo 'ABC' . 8 9 10 * opera dor: en 11 write / "'MBB" en 12 if 'AABB' en 'AB '. 13 14 write / " 'ABCD" en
325
INillS~ ~
co eo en en ea
'AB' True sy-rdpcs'ABC'. Fal se sy-fdpos 'AB' False sy-fdpos" 'ABC' True sy-fdpos= ' AB' True sy-fdpo s" ce ' XYZ' False sy~fdpos= na ' ABC' False sy-fdpo sz na ' XYZ' True sy-fdpos=
4
3 4
3
0 4
0 4
• A linha 4, urna comparacac co, e verdadeira. Portanto, sy- fdpos contern 4, 0 comprimento do primeiro operanda-. • A linh a 7, tambem uma comparacio co, e falsa por que vi contem valores que nac existem em v2. Sy-fdpos contem 3, 0 deslocament o com base em zero do pri meiro caractere em vi que nao esta em v2. • Embora as linhas 12 e 15 sejam as opostas 16gicas das linh as 4 e 7, os valores de sy-fdpos nao serao alterados. • A linha 20, uma comparacao ca, e verdadeira porque vl contem urn caractere de v2. Sy-fdpos contem 0: 0 deslocamento com base em zero do primeiro caractere em vi que tambem esta em v2. • Na linha 24, vi nao conte m nen hum dos caracteres em sy-fdpos contern 4: 0 comprimento de vi .
vz, portanro
• 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
DIA 10, INITRU(OEI DE CO""OLE COMUNS
APRENDA EM 21 DIAl ABAP/<
resultado dard falso. Sy-fdpos e configura da para 0 deslocamento com base em zero do primeiro caractere em ' Axez qu e tambem est a em ' ABC '.
EMTRADA~ Lista gem 10.5 A j nstru~a o case exe cuta uma serie
de
327
compara ~6es
I
1 report ztxlO05. 2 paramet ers fl type i default 2.
• A linha 34 e, novamente, uma negacao 16gica de urn teste de ca. ABeD nao con tern urn valor de ' XVZ' e. po rtanto , urn teste de ca seria false. Negar esse resultado dara verd adeiro. Sy- f dpos e configura da par a 0 comprimento de ABeD ' . I
3 4 case fl. when 1. 5 when 2. 6 when 3. 7 when others . 8 endcas e . 9
I
I
Utilizando a instruc;a o case Sintoxe do instrU!;fio case
13 14
A seguir, veja a sintaxe da insrrucao cas e.
S
case vr , when ,,2 [ or vn •• • ].
~
else.
16
end; f .
SAioA~
--- I
endcase.
onde: vl OU '12 podem
seruma variavel, literal, consrante ou string de campo.
ANiuSE ~
• Sornen te as instrucoes apes a prirneira corresponden cia wh en serso executadas. • when others corre spondera se nenhurna when pre ced ente corr espo nder. • Se when ot he rs nao estive r codificada e nenhuma when cor resp on der, o processamento continuard com a primeira instrucao apes endcase. • As expr essoes nao sao permiti das.
0
pardme tro de urn unic o caractere com urn
• A proxima linha executada e a linha 12.
Utiliza ndo a instruc;a o ex; t A instrucao ex; t impe de que processamentos posteriores ocorram.
Sintoxe do instru\joo ex; t
-
CA
• A s Str ings de campo sao tra tadas como sendo variaveis do tipo c. semelhante a if/ els eif. A un ica diferenca
• A linha 2 defi ne fl como valor padrac 2.
• A linha 6 faz a corr espo ndencia e executa a instrucao wr -t te imediatam ente depois dela. As insrrucoes when rema nes cen tes sao ignoradas.
a s seguintes pontos se aplicam :
e mu ito
fl = 2 fl .. 2
• N a linha 4, comeca a inscrucao case e fl ecomparado com 1, 2 e 3, ern seque nci a.
• --- representa qualquer mimerc de linhas de c6digo. Ate mes mo zero linhas sao permitidas.
Case
elseif fl ,,3.
write/ 'fl" 1' . write / 'fl • 2'. write / 'fl z 3'. writ e / 'fl i s not 1, 2. or 3' .
a codigo na Listagem 10.5 pr oduz esta satda:
[ when ot hers.
•
fl "'l. elseif fl .. 2.
15
when 1'3 [ or vn •• . ] .
m
is not 1. 2. or 3' .
11 * 0 c6digo a seautr e equtvalente a instrlll;ao case aci ma 12 if
Z
.. 1'. '" 2' . " 3' .
10
A instrucao case executa uma serie de cornparacoes.
~
wri te / ' fl write I ' fl write I 'f! write / 'fl
e qu e em cada
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 sempre comparados quanto a igualdade. Urn exemp lo sera. for necido na Lista gem 10.5. .
Z
S m
~
exit.
10
... 328
I APRE NDA EM 21 DIAS ABA PI4
OIA10: INSTRU~6B DE CONTIl:OLE COMUNS
A Listagem 10.6 mostra urn programs de exempl o utilizando exi t.
EHTRAOI~
Os seguintes po nt os se aplicam:
3 exit .
• Os loops do podern ser aninhados por urn numero ilimitad o de vezes.
write: / ' There' .
Sliol ~
•
• 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 .
Hi
Exit impede 0 processamento posterior, sendo ossim, exit no linho 3 impede que a linha 4 seja executado.
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
~empre_lI~pede processamentos pos teriores. Dentro de estruturas de loop, tal instrucao rgno ra 0 proces samento de lo op introduzido pelas instrucoes com o , ~op, se l ec t , do e wh'i I e. Dentro de sub -retinas, ignora as su b-retin as introduzida s por FORM. Seus efeiros em outras situacoes. serao com plet ame nre explorados a medida que surgirem.
Utilizando a
instru~ao do
A insrrucao do corresponde a urn me canis m o de loop basico.
Sintoxe do instruljOo do A seguir, veja a sint axe da instru cao do. do I vI ti mes] I vary ing 11 f rom s-cl next s-c2 ( varying 12 from s2.cl next s2-c2 . .. ] ].
~
lexft .I
~
enddo.
onde: •
•
e um a variave j. literal a u const ante. s e uma string de cam po com as componen tes c1 e c2. vI
• 11 ~ uma varidvel. O s componentes de s podem ser convertidos para o tipO de dado e comprim en t o de 11.
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.
c6 digo na Listagem 10.6 produz esta saida:
IHiuSE ~
Z
• - - - representa qu alquer numero de lin has de ccdigo.
Listagem 10.6 Utilizondo ex; t para interromper a co ntlnuccco do processomenfo
o
;:
. . . representa qualque r numero de claus ulas varying completas.
1 report ztx~006 . 2 write: / ' Hi' . 4
!!
•
• Modificar de loop.
0
valo r de vl dentro do lo op nao afetard
0
pr o cessam ento
Dentro do lo op, sy- t ndex contera a numero de iteracao atual . Por exemplo, a primeira vez at raves do lo op , sy- in dex sera 1. A segunda vez, sy-i ndex sera 2 e assim por dianee. Depoi s de enddo, sy- i ndex ira co nte r 0 valor que tinha an tes de entrar co m 0 lo op. Com lo ops do aninhados , sy- i ndex ira conter 0 mimero de iteracio do lo op em que e util izad o (veja a Listagem 10.7) .
EHTRADA~ L1sta g e m 10.7- Sy- in dex co nte m a nume ro de iterac;oo otuo l 1 report ztxl007 . 2 ' sy-t ndex = 99. 3 writ e: / ' before l oop, sy-t ndex 4 do 5 t imes. 5 wrt te sy-t ndex.
6 enddo. 7 write: / 'after
=' ,
sy- t ndex, / "
loop, sv- tndex . ', sy- f noex, / "
8 9 do 4 times. wr i t e: / 'out er loop, sv-tnoex =' , sy-tndex , 10 do 3 times. 11 write : / ' in ner loop, sy-in dex - ", sy -f ndex. 12 enddo. 13 endoc, 14 15 "neve f t nhe 16 write : / " . 17 do 10 times. 18 write sy - f ndex. 19 if sy- index = 3. 20 ex; t.
21 22
endi f. enddo.
329
330
D~ Ie INmll\OEI DE CONTROl! CDMUNI
,HREN D'" EM 21 OIlS l U PI4 6
o codigo na Listagem 10.7 produz esta saida: IliDI ~
before l oop. sy-index ..
z
1
loop, l oop, l oop, loop, l oop, loop, fn ner l oop.
after . oute r inn er inner inne r outer
sy- i ndex " sy - t ndex "
sy- i ndex = sy-tndex = sy- t ndex =
sy-index ;: sy- t ndex ..
inner l oop, sy-t ndex inne r loop . loop , inne r l oop, inner l oop. in ner l oop. out er l oop,
outer
=
sy-i ndex ..
sv- tnoex = sy-tncex .. sy- tn dex â&#x20AC;˘
sy-i ndex .. sy-t acex ..
i nner loop, sy-tndex " i nner loop . sy-t ndex " i nner l oop. sy-tneex .. 1
z
7
99 3 99
~,
1 1
, , 3
, 1
3 3
, 1
3 4 1
z
3 3
-,
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 .
,
endt f. enddo.
Se esse programa for executado , ele ira realizar urn loop infinite e a sessac sera sincronizada. 0 termino da tarefa SAPGUI ou at e mesmo a reinicializacao 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 eferuar logon novamente, vera que (se estivesse no editor ao reinicializar} nao 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. Depois de aproximadamente cinco au dez minutos, sua sessac de logon ira expirar e, enrao, voce conseguird editar seu c6digo-fonte novamente. Entretanto, 0 programa podera ainda estar sendo executado no processo de trabalho, o que diminui a velocidade do siste ma. Finalmente, seu program a consumira a capacidade maxima de CPU permitida em sua configurscac e 0 processo de trabalho reiniciara por si s6 . 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 reate 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 :
1. Quando efetuar logon pela primeira vez, selecion e
Em rc ros oc oslees, a nec essldcde de "mete r tempo" surg ir6 em um program a. Voce no o dever6 utilizar urn loop vcnc par a recllzc r issei a CPU ser6 consu mida desnecessoriamente , se voce [izer isso. Em vez 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 ztxlooa. Voce vera uma arnpulheta quando seu ponteiro estiver sobre a jan ela. Observe 0 num ero de sua sessao na barre de status na parte inferior da janela. 4. Mantenha pressionada a TeclaAlt e pressione Tab vi rias vezes ate que
Existir jo oc asioes em que urn programa em execucto tera urn loop inte rminavel. A Listagem 10.8 mostra tal programa.
so vber interrompe-lo I r eport thIOQ8. 2 do. 3 'Ilrite sy-teeex . 4 if sy-1ndeK .. O. 5 exit .
se
caminho de
2. Minimize sua nova sessao e a deixe no fundo ate precisar dela. Voce
Term inando um loop sem f im
ENTRADA ~ Lista g e m 10.8 Urn loop sem tim poder6 ser frustrcnte
0
menu System-s-Create Session .
o foco fique no leone R3 representando sua out ra sessao .
voce n60
I
5. Solte a tecla Alt. 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.
331
-~
334
-~
--
-- - --- -
I " RENDA EM 21 DIAl ABAP/4 cl typ e i c2 type i c3 type i c4 ty pe i c5 t ype i c6 ty pe i end of s ,
7 8 9
10 11 12 13
DIA 10: INSTRU~OES DECDHTROLE COMutiS val ue val ue val ue val ue valu e valu e
I, 2, 3, 4. 5, 6,
12 13 write / " 14 do 6 times varyi ng fl from s-et next s-cz.
15 16 17 18 19 20
"
15 do 3 times veryt 119 fl from s-e t next s- ea 16 varyi ng f2 from s-ez next s-ea. 17 write: / fl, f 2. 18 add: fl TO tott , 19 f2 to t ot2. 20 enddo. 21 wri t e: / ' - ~ - -- - - - -- -- - ---- ---- ' , zz / toU , tctz.
21 22 23
IAiDA~
o c6digo na Lisragem 10.11 produz esta saida:
2 • 6
SAiDA ~
AHillSE~
12
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.
Modificando valores denim de do . .. varyi ng/e nddo •
Vo ce pode modificar 0 valor de 11 ou 5 dentro do loop do . .. vary ; ng/ enddo. Q uando a insrrucao enddo e executada, 0 valor atual de 11 e retornado ao component» do qual oeio, independentemente se foi modificado ou nso. Na Listagem 10.11, 0 relat orio ztxlO l 1 iiusrra essa funci onalidade.
fNTRADA~
L1stagem 10.11 0 valor otocl de fl e escrito novamente no componente de envio quando enddo e executada
1 rep ort zt xlOl l. 2 data : fl ty pe f , 3 begin of s , 4 cl typ e t 5 cl typ e t 6 c3 typ e t 7 c4 typ e i 8 cS typ e i 9 c6 type; 10 end of s . 11 fi e l d- symbols <f>.
valu e val ue value val ue val ue value
if sy-index .. 6. s -c6 .. 99. else. fl=fl*l . endif . ass ign component sy-tndex of structure s t o <f:> . H< f> i ndfca agora write <f>. Hum componente de s enddo.
24 write / " . 25 do 6 times varyi ng f l f rom s- et next s-cz . 26 wrfte f1. 27 enddo.
o c6digo na Listagem 10.10 produz esta saida: 1 3 5
I, 2, 3. 4, 5, 6,
335
1 2
2 4
3 6
4 8
5 10
99 6
• Na linh a 14, os valores sao lidos dos componentes da string de campo s para fl-, urn por vez. • A lin ha 18 modifica o valor de cada fl, multiplicando esse valor por 2. ultimo valor de f1 nao modificado. Em vez disso, ao componente de envio e atribuido 0 valor 99.
o
e
• A linha 20 atrib ui urn com po n en re de s ac sfmbolo de campo <f>. A primeira vez atraves do loop, 0 componente 1 (cl) e atribuldo a <f>. Na segunda vez, 0 componente 2 (c2) e atribuido e assim por diante. 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 componente de 5 antes que enddo seja executada. • Quando a instrucao enddo e executada na linha 22, substitui 0 con teudo do componente de envio.
0
conteudo de fl
• Novamente, variar atraves do loop (linhas de 25 a 27) exibira 0 novo .conteudo de S . Isso mostra que 0 valor de f1 den tro do loop sobres· creve sempre 0 conteudo 'd o componente de envio. Uma instrucao ex; t dentro do loop ndo impedira qu e 0 conreudo modificado de f1 seja escrito de volt a para 0 campo de envio. A iinica maneira de deixar 0 loop sem 0 conted do de fl. sobrescrevend o 0 campo de envio, e executando uma instrucao stop ou um a in srru cac de mensagem de erro dentro do loop (ambas abrangidas em capitulos posreriores) .
1
336
I
D~ lD,lN"'"IIiB DECDNTROlE (D.UNS
APRENDA EM 21 DIAS AlAP/4
ENTlADA ~ Listagem 10.12 Urn exemplo do usa do
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.
Sintoxe do instruc;ao whi1e en A seguir, veja a sintaxe da insrru cao whi 1e.
Z
S m ~
whi 1e exp [ vary f1 f rom s-c1 next s- et [ vary i 2 fro m s2-cl next s2-cZ .. • ]
[
extt ,
l
endwhl 1e.
onde: •
exp
euma expressso logica.
euma String de campo co m os componentes c1 e c2. fl e urna varidvel. Os componentes de s podem ser con vert idos para
• s
•
. . . represent s qualquer numero de clausulas vary compleras.
• -- - repre sent s qualquer numero de linhas de c6digo.
14
endwhil e .
15 write: / p,
o
sliol ~ AHiuSE ~
a s seguint es ponte s se aplicam:
whi 1e
1 r eport ztx l 012. 2 data : 1, _ "caract eres tnt ct et s 3 r, "cerect er es f 1na1s 4 done. "f l ag de ccnctu r dc 5 par amet er s p(25} default' Vendor Humber ' . 6 while done s ' , "a expressac e aval 1ada primei r o 7 vary 1 from p+O next p+l "em segui da . as atr ibu1~ 6es vary sao executadas 8 vary t f rom p+24 next p+23. 9 1 f l · " andt .. 10 l a t := ' -' . 11 e lse . 12 done· ' X' . 13 endif .
o tipo de dado e comprimento de fl . •
instru<;6 0
c6digo na Listagem 10.12 pr oduz esta safda.
p-- - Vendor Number
• 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 conduido.
• 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 do loop atual. 0 processamento continua na pr6xima instrucao execaravel depo is de endwhi 1e.
• N a linha 6, a expressdo na instrucl o wh i 1e eavaliada ern primeiro lugar. Retoma verdadeiro, pela prirneira vez, atraves do loop. As atribuicoes 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 entra r com 0 loop. Com loops wh i 1e aninhados, sy- t ndex ira center 0 numero de iterar;ao do loop em que e utilizado. • endwh i 1e sempre copia envro.
0
valor de 11 de volta para
0
cornp one nte de
• Em urna inStrUCI3.0 wh i 1e contendo urna expresssc logica e uma adicao varyi ng, a expressao logica e avaliada primeiro. while e muito semelhante a do. Aqui, ela e utilizada para colocar urn num ero igual de traces em ambos os lados de uma string.
• Se 1 e t estiverem ambos em bran co, a linh a 10 atr ibuira urn trace aos do is. Se nao estiverem, a linha 12 atribuira urn ' X' ao flag done. • N a linha 14, endwhile copia os valcres de 1 e t de volta ao p.
• 0 loop whi le sera novamente repetido a part ir da linha 6, desde que 0 flag done esreja em branco .
Utilizando a instruc;60 conti nue A instruc ao cant 1nue ecodificada dentr o de urn loop. Ela atua como uma goto, 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.
337
338 I
DIA 10: INSTRlIl;05 DE (QIlTROLE COMUNS
APREHDA EM 21 D'A5 ASAP"
(Igu ra 1 0 1 A instro~Oo
cont inue
pula pore 0 finol do loop, ignorondo todas as jn~6es depois delo pore 0 possogem do loop cwa l.
do 10 times.' if sy· index between 3 and 8.' continua,' - _
endif., write sy-index.' enddo.
o c6di go na Figura 10.1 produz esta saida: : IAiDA ~
Z -t
~
" IAiDA ~
AHiuSE~
c ode:
A Lisragem 10.13 esemelhante a uma instrucao goto. Ela executa urn salto para 0 final do loop arual. Est e programa remo ve caracteres duplicados, como dois-pontos e barns invertidas, de um a string de entrada.
ENTiADA ~ Listagem 10 .13 Urn exemplo do uso do instruc;oo continu e 1 report ztxlD13. 2 peree et ers p(2D) def ault 'c:: \ \ \ xxx\ \ yyy' . -cerect ere atual 3 data : c, · proxl mo ceractere 4 n. S 6 do 19 ttees varying c from p+(l next p+l varyin g n from p+l next p+2 . 7 i f c na ' :\ '. 8 cont i nue. 9 end1f. 10 if c • n. 11 wr i te : /'duplicat e ' , c , 'found', ' at position'. sv-tndex . 11
4
5 10
postttcn
• A linha 2 define urn pardmetro de entrada p com 20 caracteres de comprime nto e atribui a ele urn valo r padrao. 0
caractere depois dele
0
primeiro
eatribuid o a n.
0
loop
• Se a linha 8 nao for verdadeira, a linha 11 sera executada e sera 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 vezes de urna s6 vez.
Os seguinres po ntos se aplicam:
cant i nue nao tern adicoes.
2
: ou I.
• ._ ~ representa qualq uer num ero de linhas de c6digo.
•
posit ion position posi t ion
• A linha 9 pula diretamente para a linha 14, faz.endo com que seja repetid c utilizando 0 proximo caractere.
[enddo/ endwh11eI endse1ect j end' oop)
cont i nue pode somente ser codificada dentro de urn loop .
at at at at
• A linha 8 sera verdadeira quan do c contiver urn caracrere diferenre de
conti nue .
•
found found found found
caractere de p e at ribuldo ace
[do/ whil e/ select/l oop]
~
dupl1cate: duplicate \ duplicate \ duplicate \
• A linha 6 inicia urn loop. Na prim eira passagem do loop,
do, while, select ou l oop. (A instruciio l oop sera abrangida n o pr6ximo capirulo.)
m
enddo.
o c6digo na Lisragem 10.13 produz esta safda:
1 2 9 10
Sinta xe do instrUl;60 cont i nue en A seguir, veja a sintaxe ciainsrrucfo conti nue. Pod e ser utilizada dentro de um a
endtf ,
13
Utilizando a
instru~a o
erep etido 19
check
A instrucac chec k e codificada dentro de urn loop. Ela pode atuar de fo rma mu ito semelhante a cont inue, passando 0 con trole imediat amen te ains rrucio de terminaqao do loop e desviando das in strucoes intermediaries. Diferente de 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 emostrado na F igura 10.2. Fi g u r a 10 2
A instru¢ o check e
do 10 times. check not sY_,-index between 3 and 8.
umoin~60
write sy-index.
continue
enddo.
.
.~
... -;.""
condition al. f lo soltor6 poro 0 final do loop se a expressoo l6gica lor Io/so.
o c6d igo na Figur a 10.2 produz a mesma safda daqu ela apr esenr ada na Figura 10.1:
339
340 I
OIA 10: tNSTR~6ES DE CONTROLE COMUNS
' PREND' EM21 DIAl AB APf ~
SAioA~
1 2 9 10
S 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
[do/ whi 1el se1ect/l oop]
m
Tabela 10.7 Comparando exi t , continue e chec k
[enddo/endwhi l e/ endse1ectjendl oop]
onde: •
exp
•
euma expr essao Iogica. representa qualquer num ero de linhas de c6digo.
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 . ~NIRAOAllo.. L1stagem 10.14 A listag e m 10.3 la i navamente cadili cad a a lim de ,.. utili zer instrucdo check em vez de contin ue
5 6 7
o c6 digo na Listagem 10.14 produz esta saida: SAioA~
cat e: cat e \ cat e \ cate \
fo und f ound fo und fo und
at at at at
pos i t i on posit ion posi t ion position
2 4 5 10
, lrrrr.r.. As li nhos de 8 a 10 no Lisiogem 10.13 foram substituidos pelo lin ho 8 no ANALISE,. Lisiogem 10.14. 0 progromo trobolho exotomente do mesmo maneira.
Efel to
exit contin ue check exp
Sai do loop otuo l. Faz urn sclto incondicionol para a fino I do loop. Soltero para 0 fina l do loop se exp forfaJsa.
A instruclo wri t e pennite a especificacao de urn eo rnprirnento e posicio de saida. Embora a ins trucao writ e permita muitas especificacoes complexes, as especificacces regu lar es de comprimento e p osicao serao apresen tada s aqu i a firn de pe rm itir que voce eri e relatorios basicos nesse e no capitulo a seguir. Urn tr atamen to det alh ado da insr ru cac write aparece ra posteriormente no Capitulo 14.
1 re port zt xl014. par amet ers p(20) defa ult 'e ::\ \ \ xxx\ \ yyy' . "ceract ere atua l 3 dat a: c, "pr6xi mo cer act ere n, 4 do 19 t i mes vary i ng c f rom p+O next p+l var yi ng n from p+l next p-z, check c ca ':\ ". 8 i f c = n. 9 write : I 'du plicate '. c. ' f ound '. 'at positi on'. sy-tnoex . I. endt f. 11 enddo . 12
Instru~ao
Especificac;6es sim ples de co m primento e posi C;Cio da instruc;Cio wr i te
2
dupl dupl dupl dupl
.
Na Tabela 10.7, as insrru coes exit, cont i nue e check serao cornparadas.
check exp o
T
341
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
I
Sintoxe pa ra especificocoes sim ples de comprimento e posic,;co no instruc,;co wri te en A seguir, veja a sint axe para espe cificacoes simples de comprimento e posicao . - wr-r.t e-. Z na mstrucao
-
1
S
write [IJ [P][ (L)] vI.
m
onde:
T
•
vi
•
P e urn num ero que in dica u ma po sicao na lin ha aru al de saida.
e uma variavel, literal ou eonstante .
• ie urn
numero que indica saida de vi .
0
numerc de bytes aloc ado na Iisra para a
342
!
'm HO' EM 21 DIAS
'BAPH
OIA10: INSTRUtOES DE CONTRCLE COMUNS
10 11 12
/ 2(1) ' Hi' • ' There' • / 2(3) ' Hi ' • ' There ' • ' Hi', 10(3) 'Ther e ' • /2
• I, PeL devem ser codificados sem quaisquer espaco s intervenientes.
1J
/
A Tabela 10.8 mos tra as maneiras correta e inccrreta de codificar as
14 15 16
/
Os seguintes pontes se aplicam : •
/ comeca uma nova linha,
esp ecificacoes de comprimento e posi~a.o na instru~o wri t eo 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 Correta
IncorTeta
write /10 (2) ' Hi'.
write / 10( 2) ' Hi ' .
/ (3) / (2)
o . SAiDI ~
write / 10 (2) ' Hi'.
write / 10 e2} ' Hi ' . write / 10( 2) ' Hi' . write / 10( 2 ) ' Hi' .
write 10 'H1' .
I •
Hi There HiThere HThere There Hi There H There Hi There Hi The
123 123-
123
write 10 ' Hi ' .
·3
Se voce deixor um espccc entre / e a especificocco de comprimenlo
ou pcslcco, 0 verlficcdcr de sintoxe poder6 outc mcticc mente corriqi-lo
para voce. Simplesmente pressione 0 bctec Correct no parte inferior do [onelc de mensogem quando ere cpcrecer.
A Listagern 10. 15 ilustr a 0 usc das especificacoes simples de cornprimenta e posic;:ao na in st rucao wr ; te oMost ra tambern algumas das armadilhas. A linha 3 representa um a regua de modo que po ssa ver a s mimeros de coluna na safda. 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 1 re port ztxlOl5. 2 data : f1 type p val ue 123. 3 f 2 type p val ue - 123. 4 write : / ' . ... +.. .. 1•••• +.. .. 2.... +.. .. 3.... +. • • • 4· . 5 /1 'Hi '. 4 'There '. 6 /1 ' Hi'. 3 ' Ther e '. 7 /1 ' Hi' . 2 •There , • 8 /1 ' Hi' . 1 ' Ther e ' . 9 /2 'Hi ' . "r her e" ,
INlllSE ~
f 2. f2 .
c6digo na Lista gem 10.15 prod uz est a saida:
write ' Hi' (2) . write ' Hi' 10.
4
•• • •+• • • • 1••• •+ • • • • 2. • • •+ •• • • 3. . . . + •• •• 4
write (2) ' H1'. write ( 2 ) ' Hi
fl. fl. fl. f l.
123-
• A linha 4 representa um a regua de modo que voce possa claram en te ver as colunas na lista de saida. • A linha 5 escreve Hi comecando na posic;:ao 1 e There comecacdo na posic;:ao 4~ • A Iinha 6 escreve Hi com ecand o na pcsicao 1 e There comecando na posicao 3.
• A Iinha 7 escreve Hi comecando na pcsicsc 1 e There comecando na posic;:ao 2. There sobrescreve a ult im a posicio de Hi . • A linha 8 escreve Hi comecando na posic;:ao 1 e Ther e cornecand o 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. • 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 de saida.
• A lin ha 10 escreve Hi ccmecando na posicjo 2 para urn comprim ent o de 1. Isso escreve so m ente 0 prim eiro caractere: H.
• A lin ha 11 escre ve Hi comecando na pcsicac 2 para urn co mprimento de 3. Urn espaljo inre rmediaric vern depois, tomando da is e, em seguid a, There.
• 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.
343
344
!
Oil 10: I NSTR~bES DE (OHTROlE COMUNS
HRENDl EM 21 OilS lBlP/4
I
• A linh a 13 escreve as cam pos deci mais compactados f1 e fl , em sucess ao.
•
check exp sahara para 0 fin al do loop se exp for falsa. Quando exp for verdadeira, check nao fara nada.
• A linba 14 tambem escreve f1 e f l. Dessa vez, fl e escrito comecando na posj~ o 4. O s espacos iniciais que comegam na posicjo 4 scbrescrevem 0 valor de fl, fazendo com qu e somente f l apa reca na safda.
•
Na insr rucac wri te, a posi c;ao e 0 comprimento podem ser imediatament e esp ecificad os antes d o valor de saida . N enh um espaco
• 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 mpletamente 0 campo de safda . •
A Iinha 16 escr eve f1 e alo ca apenas 2 bytes na lista de safda para 0 valor. 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.
a
Resu m o •
As instrucoes de comparacac sao i f e case.
•
case proporciona uma eapaeidade semelhan re a if/ elseif, mas campara da is valores somente quanto a igualdade .
•
As convers6es oco rrem ao com parar tipos diferentes de clados. A 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. 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. •
•
intervenie nce deve aparece r en tre eacla especificacio.
----:.. .-_----
IFa~a
P&R
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?
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 co m u rn un ico caracter e e utilizada para rerer urn uni co va lo r ativado/de sativado. C ornu men te . 0 "X" representa urn va lo r "ativ ad o" e espaco rep resen ts um va lor "desativado".
sy-index contem sempre 0 contador para a pa ssagem d o lo op atual. De pois de concluldc 0 loop, seu valo r ereinieializado para 0 que tinha quando do inicio do lo op . Embora vo ce possa alterar sv-t ndex, seu 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
m od ificado para 0 lo cal de onde veio. • Utilize um a outra sessao e
0
comando /
0
Nao utilize check ou continue dentro de um loo p select para Hltrcr registros. Em vez disso, utilize a d6usula where pora filtrc-los. Nao [eio op6s 0 final de uma voriovel ou string de compo corp a adir;Cio . . aryin g. Excecces de proter;ooe comporto mento lmprevisfvel poclem cc orre r.
Abro duos secees sempre que efetuor logon, de modo que voce posso termine r um loop infinite. Utilize . . aryi ng para ler uma serie de compos eqOidistantes a partir de uma string de campo.
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 Y I N deveria ser utilizado, como e 0 comum na area de pro-
gramacao.
para t ermin al' urn loop sem
fim. • Utilize as ins rrucoes exit, continu e e check para modifiear same nto de lo op.
0
proces-
•
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
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.
o
E reco rn endada
°
a abertura de mulriplas sessoes sempre que 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 ?
c
345
346
"PREMDA EM 21 DIAS ABAP j4
o
o o
o o
DIA lG: 1NmutOEs DE COmOLE (OlliUNS
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 licativo para acomodar cada nova sessao. Enrretanro, nenhuma CPU sed utilizada p ela sessao livre, sen do assim, isso nao diminui ra a velocidade do serv idor. Se voce escrever urn program a ini ciando urn loop, ele cons um ir a uma en or m e capacidade de recursos, principalmente a CPU, e isso, sem dc vida algum a, degradarf 0 serv idor no memento em qu e esriver sendo executado. Se voce njio cons eguir inter romper a loo p , voce nac conseguira moder ar a desperdfcic de recursos. Sem verificacso, 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 nara. Da pr6xi ma vez que voce 0 executar , ele podera n ovamente fazer 0 me sm o. Em resum o, abrir uma outra sesssc sera a melh or 0P!rao escolhida. 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 eu fa~a, qua n do do m ovim ento a partir de strings d e campo e para strings de campo? 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 sequencia de campos erepetida, 0 mesmo mimero de byres semp re os separara. Desde qu e voce siga essa regra, nao haven nenhuma necessidade de se preocupar com os byte s de preen chimento.
Posso utilizar uma variavel para indicar posi!rao em uma instruci o writ e?
0
Teste 1. N a seguint e se!rao de c6d igo, alter e as instrucoes if para uma instTU!rao case . write ' The number is fiv e. ' . endt f.
if vI eq 10. wri te 'The n~ber t s t en.'. endt f . i f vI <> 5 and vI <> 10. write 'The number is not fhe or t en.'. endi f.
2. Q u ais operadore s de comparacao de string utilizam os tres caract eres *, + e#? 3. Q uais sjo as tres instrucoes de controle de programa discutidas oeste capitu lo ? Quais sao as diferencas entre elas?
Exercicio 1 Escreva urn programa que produza a safda da Figura.
"r" .."x "". 1
' 1 2'"
S 6 .L ' ; •
.. 12' _5." '· ~ L.I ".
1 ' t " ,t
u U.
"
' : ' .561" ' .
, I,,, S. , . ,. 'ZJ "~"
I"
tZ' .:;"
'~ ·
1:1111I1"" "
·j:· 1 2 , . S ' ~ "
·
S " ". S. l " • , 1Z .... ~'~ • • •
11 11:'''S. ' .., _ 1• . ' 2 • • S .. '
11
,~ '
U. ' ~'
".,
,,'n1il('o,
.• S.1
-
-
•• • ~ t, .
""
• ''l . 'lr"'5 ' ' ' '.
• 'l,· sl l . '· 1".SS "". .J,.'" ,_...
.. 1.l"
n
'5 'J''''''1' '-
'1'11."'5 ' 1 ' 9 .
comprimento e/ou
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 entendimento do conteudo abordado e a se!raoExercfcio permite que voce pratique 0 que aprendeu. Voce pode en contrar as respo stas as perguntas do Test e e exer cicios no Apendice B, "Resp oscas as perguntas e aos exerctcios".
N ac codifique como strin gs. Em vel disso, calcule as numeros e as escreva co m urn uni co byt e por vez, ou uti lize a tabe la syst.
347
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 e
NOVO Ilrrrrrr.. Uma tobe/o interne umo tobelo tempo r6rio armozenoda no RAM do servtdor TIlMO '" 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.
e
hllp:// www.compU$.com.br
350 I
APIENDA EM Zl DIAS ABAP/4
DO lU/JruS IHTERJiAS
Defini..ao de umo tobelo interno Urna tabela inr ern a cons iste em urn ccrpo e urna linha op cio nal de cabecalhc (veja a Figura 11.1).
NOVO..... TUllO r refe re-se
a corpo a rmazena os linha s de tcbelc tntemc. Todes 05 linhas dentro de le tem a mesmo estrutura . Geralme nte, corpo do tc belo Interne.
0
te rmo "tobelc interne", propriamente dito,
00
!
351
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. A unica ocasho em qu e voc e criaria um a tab ela interna sern um a linha de 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.
~NnADA'" Listagem 11 .1 Ma neiros bosiccs de definir tab e la s inte rnes com e sem ,.. umo linha de cc becclbc
A linho de cab~o lho e umo string de compo com 0 rnesma estrutura de uma TERMO llnhc do ccrpc, ma s pede ope nas arma zenar umo linho (mica. E urn buffer utilizodo pora a rmozena r coda registro ontes que ele sejc cdicionodc ou coda registro ossim que ele e recuperodo do tobelc Inte rne.
NOYO .....
r
Neste livre, umo ccn vencec de ot ri bui~{i o de nome e utilizad a pora tobelos internes. Para prog rama s sirnples com apena s umo unica tobelo interne, 0 nome do to belo interno normalmente sera ; t (de internal table - tobela internal. Se existire m v6rias to belcs Inte rnes. 0 nome de 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. Fi gura 11
A definif;oo d" vmo tobe/o int"ma denominoda t t e
mostrodo no porle svperiO;d" sto ngvru. A Iinho de co~olho e 0 corpo tombem sec mostrudos.
data : begin of it occurs 3, fl(l) , 12(2). end of i t .
1 2 3 4 5 6 7 8 9 10
report ztxllOI. data: begin of 'i tl occurs 10, fl. f2 . f3, end of HI. data i t 2 like ztxl fal occurs 100.
"t en uma Hnha de cabe~a l ho
"'nao tem uma linha de
ca be~a lho
data i t3 l1 ke ztx lfal occurs 100 with Header li ne . "agora stm
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. E uma tabela intema por causa da presenlja da clausula occurs. Tern tres co m ponentes: fl. f2 e fJ . Cada urn e do tip o c, comprimento 1. Essa tab ela intern a tern um a linha de cabecalho porque a defmiljao ccntem as palavras begi n of.
it
• A linha 8 define a tabela interne i t2 . T ern os mesrnos component es da est ru tura do DDIC , ztxlfal. N rc t ern urn cabecalho porque n ero 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 de qualquer stri ng de campo, excero tab l es . occurs erie a ca rpa da tabel a intem a. A mern6ria para 0 co rpo nao sera alocada ate que a p rirneira linh a seja adicionada nele. Sem occur s, voce te ra sornente um a str in g de campo . Pa ra defin ir urna tabe1a in terne com urna linh a de cabec alho, voce devera inc1uir begi n of ou wi th header 1i ne na defini~ao. Urna linha de cabe~alho sera au to maticament e criada se beg; n of aparecer na definil;jao. Se voce ut ilizar 1i ke em vez de begin of. a tabel a interna nao teci uma linha de cabeljalho a menos
A Figura 11. 1 con tern urna tipica de£in iljaa de tabela in tern a. D efin e duas coisas: 0 corpo de u ma ta be la interna e urna linha de ca b ecalb o . A confusao surge porque ta nto a corpo como a 1inha de cabe cal h o sao denominado s it. it e 0 n om e do co rpo e ; t e t am bem 0 nom e cia linh a de cabecalho. 0 loc al onde voce coloea 0 nome i t em seu c6digo determina ao que voce esti se refe rindo. Q uando utilizado em uma ins tru~ao de atribui~ao, it sem pre ira se refenr 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
Iinba de cabecalhcdenominada it. Ou em f3 • it -fl, a linha de cabecalho it tambem refere-se 010 componente fl .
• As linhas de 2 a 10 sao as mesmas das linhas na Listagem 11.1; elas
esrao inclufdas aqui para sua revisao. • Na linha 12, i t4 e defmida como a String de campo den ominada t t3. naa como a tabela intern a 1t3. As sim, uma adic;ao occurs e requ erid a para toms-la uma tabela int erna; esta nao tern uma linh a de cabecalho porque begi n of ou wit h header 1i ne ni e existe.
Exemplos dos definicoes de tobelo interno Para defiair as tabe!as intemas com e sem linhas de cabecalho, utilize os formulari os recomendados na Listagem 11.2.
• As linhas de 14 a 16 mostram a maneira antiga de defmir uma tabela 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
ENllADAIlrrr.r.. Lista g e m 11 .2 Estes defln tcces criom tobelos intemos com e sem umo ,.. linho de cc becclhc 1 .report ztltll02. 2 dat a: b~9in of itl occurs 10,
)
n,
4 5
f2 ,
6 1
end of
"t en
UI1lI
l1nha de
como as apresentadas b.a po ueo . Includ e structure nac e utilizada agora. excetc para os casa s da seguinte defini~ao de i t6 . (Nesse momenta, voce pode querer reviser a inStnl~O i ncl ude structure
cabe~a'ho
abordada pelc no D ia 5, '0 Data D icti onary, Parte 3' .)
f3 ,
ru .
• Esse seria 0 unico motivo pr atico em que voce utilizaria a instrucio includ e, agora (depois da versto 3). Ela permite que voce erie uma string de campo com todos as componen tes de uma estrutura do DD IC, mais alguns componentes adicionais. A defmi~o de i t6 contern as componentes de ztx lfal e dais campos adicionais que sao delfl ag e rowt otal. Essa tabela inte rna tern uma linha de cabecalho uma vez que voce pode ver begi n of na defmii i o.
- n~ o t !lll uma l1nha de cab~ a lho 9 10 data it) like ztxlhl occur s 100 with header li ne'. -agora tell
8 data 1t2 l i ke ztxlfa1 occur s 100.
1J
12 data 1t4 like it) occurs 100. 13
· n~o
beg1 n of itS occurs 100. 14 data structure ztxlfal. 15 i ncl ude .end of itS . 16 data 11 beg1n of 1t6 occurs 100. 18 data structure ztxlfal. 19 include 20 dat a: de1flag . rcetctel , 21 end of it6. 22 23 24 data : begin of i t 7 occurs 100, Z5 s l f ke ztxlfal, 26 end of it7 . 28 data HS l 1ke sy-tncex occurs 10 29 with header l ine.
"ten uma l1nha de
tern lIIIII l1nha de
cab ~ al ho
ca be~alho
,. "esse ~ 0 motivo per que v . deve uti l1zar "a i nstru ~ lo inc lude
• As linhas 'de 24 a 26 mostram a maneira incorreta de utilizer 1i Ice. Os comp onentes dessa tabela interne comecam todos com i t7- s, por exemplo, it7 -s-lifnr e i t7 -s-landl. Embora viavel, provavelmente, niio e 0 pretendido e produz urn myel desnecessario nos nom es de componente. • Ao definir uma tabela intema que tenha apenas urn componente, sera possfvel utilizar a declaracio na linha 28 ou a declaracto na linha 31.
" n~ o fat;a tssc des se maneira "os nomes de component e se r ae "preflxados cem it7 -s ·rno LIST " 27
3. 31 data: begin of 1t 9 occur s 10, 32 f1 li ke sy~ i nde x . 33 end of 1t9 .
o
I
c6digo na Listagem 11.2 nao produz nenhuma saida.
Adicionondo dodos em umo tobelo interno utilizond o a instru~6a append Pan adicionar uma unica linha em uma tabela intema, voce podera utilizar a instru~ao append. append copia uma unica linha de qualquer area de trabalho e a coloca no corpo 41 0 final deslinhas existent es, A hell. de trab alho pe de ser a. linha de cab e~alh o au qualquer outra string de campo com a mesma estrutura de uma. linha no carpo.
353
354
!
OIA l),J,,,UlIHTERNAS
,," PREMO ,," EM 21 Ol,,"S. ABAP/ ~
EHUADAlilrr.. Lista g em 11.3 Este progra ma adiciona tres linhas em umo tabe la
r
Sintoxe do Instruceo append
!:!!
A seguir, veja a sintaxe da instrucio append.
Z
append [1m t o] [in i t ia l Tine to] it.
~
on de:
In
•
1'10
~
•
it
e 0 n ome de uma area de tra balho. e 0 n ome de uma tabela in tema pr eviamente definida.
inte rne it a pa rtir do lmhc de cobecclho
1 report ztx l103. 2 data: begin of it occur-s 3, J fl(1), 4 '2(21, S end of it. 6 it-fl ,. 'A'. 7 it-f2
oS
'XX'.
8 append 1t to it .
• •
wo deve te r a mesma estrutura de uma linha do corpo. wo pode ser a linha de cabecalh o a u pode ser qualquer string de campo . com a mesma estru tura de uma linh a no corpo.
• Se voce nao especifiear uma area de trabalho, 0 sistema utilizara a linha de cabecalho como padrao. Na verd ade, a linha de cabecalho e a area de t rabalb o padrao.
"ecrescente ali nha de cabece1he IT ao ccrsc IT
9 write: / "sy- t ebf x - ': sy- t ebt x.
05 seguinte s pontos se aplic am :
-,
10 it-fl· 'B'. 11
1t~f2
• 'YY'.
12 append it . "0 13 write ~ / 'sy-tabix -" , 14 it-fl · 'e' . 15 append it. "a 16 write: / "sy- tebtx ~',
mesmo que a li nha 8 sy-tebtx .
tebel e tnte me ccneen agora tres l i nhas . sy- t aet x.
.
• D epois de append, sy-tabi x e configurada com 0 ndme ro de linha relativo da linha recem-acre scen tada. P or exemplo, depois de acre scentar a primeira linha, sy-tabi x sera configurada como 1. D epois de acrescentar a segunda linh a, sy- t abi x sera configurada como 2 e assim por diante.
SAlOl ~
sy-tabix .. sy-tebtx •
1 2
sy-tebtx •
3
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 ea normalmente utilizada. Uma 6 rea de trobolho me ndenodo expllcttc mente no instru<;6e append e de trobo/ho exp/(cila . Qu alquerstring de com po com a mesma estrvtura de umo linha do tcbelc interne pode ser utilizodo co mo umo 6rea de trobo lho explkltc. Se umo 6rea de frcbclho n60 for mencio noda, a area de troba/ho imp/kilo (0 linho de cobecclho) ser6 utilizodo.
NOVO lrII... m.MO'"
ccnhecldc como umo a rea
A instrucao append init ia l li ne to i t acrescenta uma lin ha contendo valo res in iciais (espacos em braneo e zeros) atabela interna. Equivale a execu tar as duas insrrucoe s a seguir em seq uen cia: e1ear it e append it. A Listagern 11.3 mos tra urn programa de exemplo que acrescenta tres lirihas em uma tabela interna.
O c6 d.igo na Lista gem 11.3 produz esta saida:
f2.
• 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 refere
alinh a de cabe calho.
• A linha 8 copia 0 contee d o da linha de cabecalho den ominada it pan. coepo denominado it (como po de ser visto na Figura 11.3).
°
Figura 11 2 Estoss60 os instru¢es de otrfbuiqao, que se referem a linho de cobeqolho.
it-fl· 'A' . it -f2 • 'XX' .
Iinho de ccbecclhc
it[l]Bt.~1 fl co rpo
f2
till ~
Ii ~ ~ BJ
355
.........................-......-""'I .....I. .-. -. 3S6
I
I •• I • I
•
•
I
I
I I . . . . . • • .W .w. ~ ~ • • • • .. - - -
I
D~ l),TASEUllrmRHAl I
",PR EMD" EM11 DIU ABA P/4
• As linhas 10 e 11 atribuem 0 novo coarecdo aos componentes cia linha de cabecalho, sobrescrevendo 0 coneeado existente (com o pede ser visto na Figura 11.4) . append 1t to i t.
Fi gura 1 1 3
append it.
Fig lirA 11 . ,
A crec de trcbolho padrfJo i 0 Iinho de co~rno. Aqui,
ltnhc de ccbecclbc
it[l]~ 11 f2 ...
e
impJicitomente ocrescerrtodo eo corpo.
""'pend i t to t t copio 0 conteUdo de Iinha de ccb~lho it port!
0
corpo
it
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) .
~~
• 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 inStru~o na linha 8.Ja que uma area de trabalho nie recebeu urn nome , a area de trabalho padrac - a linha de cabecalho - sed utilizeda, 1t-fl • ' 8'.
Figura 11 4
1t~ f2
Estos instru~6es de
cmbuio;oc sobrescrevem 0 conteUdo existente do linho de cobeljOlho i t .
1t-fl
Figura 11 6 o valorcJo componente do linho d. a>bo<olho It-Il ~ sobrescriio. 0 yo/or de it- f Z permonece inolterodo.
=
' E",
linho de ccbecclbc it .
,]
fl
f2
• 'yy' .
linha de ccbecclhc
1t~~1 fl f2 CO"",
it
. . ~~ ~~ ~ ~2!
.. .
append i t .
Figura 11 7
Aqui,
0
conteVdo do
6reo de trobe/ho imp/fcifO ~ oaescerdodo 00
""PO.
• A linha 14 altera F igura 11.6).
0
valor de it-fl e a deixa apen as em it·f2 (veja a
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 linhas na tabela interna. numero de linhas qu e voce pe de colocar em uma
a
357
D~ lUABlLlS INTERNAS I
tabela interns, teoricamente,
e apena.s limitado pela quan ti dade
describe tabl e ap resentada co m de ralbes no pr6ximo capitulo ou at raves cia 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 excedida, uma quantidade igual sera alocada e 0 p rocesso sera repetido ate que o total exceda 8 KB . Q uando isso aco ntecer, as alccacces subseqaentes obter ao pfginas de 8 KB cia area de paginac;ao. Se voce especificar occurs 0, todas as alocacoes serio feitas na area de pagina~ao) faze nd o com que uma pagina de 8 K.B seja alocada de um a s6 vez.
de memoria
virtual dispoajvel no servidor do aplicativo.
No reolidode, seu consultorde Bosisconfigura um limite considerondo c quontidcde m6ximo de mem6ric estendidc que vmc tobelo intemo pode olocor. Se voce exceder esso quontidode, seu progrnm.o olocorc
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 tome-se indispc nlvel pore uso por outros progremos ate que seu progremo termine completomente 0 processomento. Poro evitor esse problema, voce deve utilizor umo c6 pio.
Se
e
adicionad a na tabela intema, mem 6ria su ficiente e alocada a fun d e armaze nar o numero de linhas especificado oa clausula occurs. Se vo ce utilizar recursos alem da capacidadedessa memoria, mais sera aloc ado, conforme necessdrio. Altemativamente, voce pode especificar occurs o. Se fizer isso, a sistema alo ca.cl paginas de mem6ria de 8KB d e uma s6 vez, Entretanro, Dio hi nenhuma vanragem em utilizar occurs 0 a na o ser pelo fate d e que eurn p ou co mais facil codificar occurs 0 do que estimar 0 tamanho da tabela intema. Para maximo des empenho e mfnimc desperdfcio d e me m6ria, escolha urn valo r occurs semelhante ao numero maximo medic d e linhas na tabela. Por exemplo, se na maioria das vezes a u bela interna for preenchida co m urn maximo d e 100 Iinhas, mas de vez em qu ando fo r p reen chi da com u rn maxim o
Ha dais m etodos que
.
sistema utiliza para exe cutar alocac;oes. N o 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 0
0
sistem a ira
Duas instruc;6es sao comum en te utilizadas para a leitura dos dados a partir de
uma tab ela int ema: •
loop at
•
read tab le
Utilize loop at para ler vdrias linhas da tabela interna. Utilize r ead tabl e para ler u ma enica linha.
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 do conteudo) urna.p or vel., na area d e trabalba.
Nee utilize occurs 0 se voce esperc armazenor menos que 8 KB em 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.
8.192 byte s).
t ama nha caIculado da tabela interna for ma ier que 8 KB ,
Le nd o dados a partir de vma tabela interna
de 1.000 linhas, configure;' valor occurs para 100.
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 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 d e pagina'ijao tedio sempre 0 ta manho de urna pagina (n orm almente 8 KB ou
0
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 pede ver a alterac;i o de occurs utilizando a insrruc ac deser-tbe table depois da prim eira alccacac e exibinda 0 valor de sy- toccu. Essa insrruci o sera descries no Dia 9, ..Atribuicoes, convers6es e ct lculcs".
o sistema utiliza a clausula occurs apena.s como uma direrriz para determinar quanta memoria deve ser alccada, N a primeira vez qu e um a linha
359
Sintexe de
.!!!
z
E m
T
instru~lio
loop at
A segu ir) veja a sint axe da instruc;ao loop at . l oop at i t [into am] [fran _] [to n] [where u p]. endloop.
onde: •
it e 0 nome de uma tab ela in terna.
•
wa e 0 nome de uma irea de trabalha.
, I
l
360
D~ lUABEllS INTERMAS
APHM DA EM 21 DIAl ABAPH
• men sao !iterai s de inreiro, constantes ou varidvels que representam urn mimero de linha relative. Por exemplo, 1 significa a primeira linha na tabela, 2 significa a segunda e assim por diante. • •
exp
euma expressac 16gica que restringe as linhas que sao lidas.
~ _ M representa qualquer nrimero de linhas de codigo. Essas linhas sao execuradasuma dnicavez para cada linha recuperada cia tabela interna.
As linhas sao lidas cia tab ela intema, uma por vez, e col ocadas em sequencia na area de trabalho. As linhas de ccdigo entre l oop at e endloop sao executadas para cada linha recuperada. 0 loop termin a automaticamente quando a ultima linha e!ida e a instru!jio ap6s endl oop e entao execurada. Os seguintes pontes se aplicam : •
wa deve ter a mesma esrrutura de uma linha do corpo.
•
wa pode set a linha de cabecalho a u qualquer string de campo com a mes ma est rutura de uma linha no corpa.
• Se vc cs nio especificar u ma area de trabalbo, 0 siste ma utilizari a linha de cabecalhc como padrao. Por exempl o, l oop at i t into it Ie as linhas da tab ele intema it, colocando -as uma po r vez na linh a de cabecalho it . Vma instru~ao equivalence e loop at it. • Se from nao for esp ecifi cada, da primeira linha.
0
padrac sera com ecar a leitura a partir
Ap6s endloop, sy-subrc sera zero se quaisquer .linh as tiverem sido lidas. Sera difer ente de zero se nenhuma linha tiver sid o lida a partir cia tabe la interne. 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.
.... Listagem 11.4 Este p rogramo od iciono 3 linhos no tobe la Interne i t do ENTliDA,- li nho de ccbe~olho e, em seguido, as escreve de volta novomente 1 report ztxll 04. Z data : begin of it occurs 3. J f1(l), • f 2(2) , 5 end of it. 6 1t~ fl • ' A' . 7 1t - f Z ,. 'XX ' . 8 append it t o it . "ecrescente a linha de eabee;alho IT ac coree IT 9 1t ~fl • 'B'. 10 1t-f2 • 'VY '. 11 append i t. · 0 mesmo que a li nha 8 12 i t -fl· ' C' . 13 append it. "e t abela ln terna agora cont bJI t res H nnes . 14 sy-tabix • sy- subre • 99. 15 l oop at it. . · 0 me5mo que: lo op at it into i t 16 write: / sy-tabix. it-fl . it-f2. 17 endlo op. 18 wr1t e : / 'done. sy-tebt x - ", sy-tabix . 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 se r precedidos pel o n om e da tabela intema. Por exernp lo, where fl ::: 'X' estol. co rre ta, mas wh ere i t -fl .. I Xr causara urn 'err c de sin taxe. • exp pode ser qualqu er expressjo logica. Entretanto,' 0 primeiro operando de cada cornparacjo deve ser urn cornpo nent e da tabela interna. Por exemplo, se it contivesse um comp onente f l) ea u o where f1 ::: ' X' estaria correta; where 'X' ::: fl est aria incorre ta e causaria urn erro de sintaxe.
• A s adi~6es from, to e where poderso ser mis turadas, se assim for desejado. 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 in terna, 0 valor de sy-tab i x sera 1. Du rante 0 pr ocessam ento do segundo , sy- tabix sera 2. Depois de terminado 0 loop, 0 valor de sy·tabix sera 0 0vamente 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.
o ccdigc na Listagem 11,4 produz esta said a: SAiDI ~
1 A XX 2 B YY 3 C YY
done. 5y-tab; x .. sy-subrc .. .
IMius!~
99
0
• A s linhas de 2 a 13.sao as mesmas das existences na Listage m 11.3. Etas adicionam erzs linhas na tabela interna, • A linha 14 configura sy-tabi x c sy- subr c para urn valor arb ieraric . • 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. • A linha 16 escr eve
0
valor de sy-tabix e os valor es nos comp onentes
d>. linha de cabe~o. • A linha 17 mar ca 0 fmal do loop. Re torna a linha 15.
361
. _- _... 362
-~
..
I APRENDA EM 21 DIAS ABAP/4
•
-
--:-~~
DIA 1UABEUSINTEWS
e
A Iiaha 15 novamente executada. Dessa vez, a segunda linha ciatabela interna e coloca da na linha d e cabecalho, sob rescreven do 0 coneeddo
r
ant erior. • A linha 16 e executad a, novamente escrevenclo as valores cia linha de
cabecalho. • Na linha 17, 0 loop sera repetido ate que codaslinhas sejarn recuperadas da tabela interna. Q uan do a Ultima linha tiver sido Iida, ela ira parar 0
, I'
363
25 loop at f t f rOlll 2. "mesmo que: loop at it f rom 2 t o 3. 26 write: / sy-tebtx, i t - fl . It - f 2 . 27 endloop. 28 s kip. 29 30 l oop at it from 2 where fl • 'C' . 31 write : I sy-tebtx , it-fl. it-f2 . 32 endl oop.
loop.
o c6digo na Listagem 11.5 produz esta safda:
• Na linha 18, sy- tabix foi restauracla para seu valor original antes da execucao do loop . Sy-subrc contem zero, indicando que as linhas . for am recuperadas da tabela interna pela instrucao loop at.
2 B YY 3 C YY
SliDA ~
1 A XX 2 B YY
Restr ing indo as linhcs lidos do tabe la interne
2 B YY 3 C YY
Utilizan do as adicoes from, t o e where, voce podera restringir o n dmero de linhas 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 apenas determinadas Iinhas. ENTRADA~ Listagem 1 1.5 Este programo
3
IMiuSE ~
e semelhante ao da Ltstoqern 11.4, mas
1 report ztxl105 . 2 data: begin of it occurs 3,
5 6 7 8 9 10 11 12 13
• A linha 18 pula uma linha na safda, na verdade escrevendo um a linh a em branco.
fI(l).
f2(2), end of it . it-fl. 'A' . it-f2· 'XX'. append it . it-fl · '8 ' . 1t ·f2 • ' YY'. append it . 1t ~f1 • ' C'. append it .
• As linhas de 2 a 13 adicionam tres linhas na tabela interna. • As linhas de 15 a 171eem samente as linhas da tabel a interna onde f2 t ern urn valar semelhante a 'yy I • Somenre as linha s 2 e 3 satisfazem os criterios.
,. openas algumas linhas sdo lidos
J 4
C YY
• As linhas de 20 a 22 leem somente as linhas 1 e 2 cia tabela interne. • As linhas de 25 a 27 leem somente as linhas 2 e 3 da tabela interna. • A linha 30 faz a leitura comecaado a partir da linha 2, procurando po r todas as linhas com urn valor fl de ' C'. A linh a 3 e a tinica linha correspondente nessa faixa. " c o nt ~
Se voce tiver certeza de que 0 ripe de dado e 0 camprimento do campo em exp correspondem exatamente com 0 campo da tabel a inrerna, nenhuma conversao sera executada. Isso fad. cam que seu loop seja executado mais rapidamente. Se a conversao for necessaria, ela sera executada em cada passagem de loop e isso pcderf diminuir a velocidade do processamento de forma consideravel. Utilize 1i ke ou constantes para evitar a con versso.
agora tres li nhas
14
15 loop at i t where f2 • ' VY ' . "f 2 esU ccrretc, it-f2 esta rfa t nccr ret c aqui 16 write : / sy-t ebtx, it-fl , it-f2. 17 endl oop. 18 skip. 19 20 loop at · it to 2. "mesrno que: loop at it from 1 to 2. 21 write: / sy- t ebt x, it -fl . it-f2. 22 endl oop. 23 skip. 24
I
~o
Embora where retorne um subcc njuntc do cco teudc de tobelc, ume vcrreduro total de tcbelo ser6 sempre executodc .
'---
--1
-.
-.. -T " 364
-.-..-.-.
-
I -I
I • • • 'I-I " I I .. I I I. __ I
I .I"" . ~..._.• • DIA lUABELlSIHTERH<5
APR EHDA EM21 DIAS ABAP /.
• Se ta nto comp ari ng com o tran sporting estiverem especificadas, compar i ng devers vir primeiro .
UtiJizando exit, cont i nue, sto p e check A Tabela 11.1 ilust ra 05 efeiro s de exit, continu e e check qu an do ut ilizadas dentro de uma estrutura de loop at / endl oop.
Os seguintes po nt os se aplicam :
Tabe fa 11.1 lnstrucees que podem altero r a processa mento de loop pa ra tobelos inter nes Instru~ao
Efeito
Termino
ext t
•
wa deve ter a mesma est rutura de uma linha do corpo.
•
'flO pode
•
Se voce nao espe cificar uma area de trabalho, a sistema utilizard a linha de cab ecalhc como padrac. P or exemplo, r ead table it into it l~ uma linha d..a ta bela intema it, colocando-a na linha de cabecalho ; t. Uma inserucio equivalente e read table ; t .
0 loop imed iotomente. 0 proc essamento con tin uo no
lnstruccc imed iatomente op6s endl oop.
Voi imedia to mente pc rc 'c instru~50 endl oop, desviondo fodos as instrUl; 6es seguintes dentro do loop.A pr6ximo linha e refomodo do
continue
tobelo intemo e a processomento continue a pa rtir do inld o do
loop. Se na o existirem mois linhos a serem recuperado s,
ser a linha de cabecalho au pode ser qualquer string de campo corn a mesma estrutura de uma linha no corpo.
0
processomento continuar6 no primeiro instruc;oo ap6s endl oop.
check exp
Ulilizanda a
Se exp fo r verdcdelrc , 0 processomento ccntln ucrc como se essa instruc;Cio ndo flvesse side executodc . Se exp for folso, seu efeito ser6 o mesmo de cont inue.
a di~oo
index
NOVO... m.MO r
0 {ndice de linha de uma tabela intema corresponde 00 seu numero de linho relotivo. Per exemple, 0 primeiro linho no tcbelc tem 0 indice 1,0 segundo tem 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
Lenda uma unicc linha utilizanda a instru ~aa read tab l e Para localizar e ler uma unica linha de uma tabela interna, utilize rea d t abl e. Ela Ie uma unica linha que co rresponda co m os criterios especfficos e a coloca em uma area de trabalho.
example, r ead t ab le i t i ndex 7 1& a setimc llnho do tcbelc lntemc e a coloco no Hnhc de ccbecclhc. _
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. read t abl e it (i nt o wa] (i ndex 'f ] with key keyexp (binary sea r ch] ] [comparing cmpexp] (transpor ting texp].
on de:
e0
•
it
•
'flO
•
i verisvel que representa urn mime ro de linha relative . Pa r exempl o, 1 significa a p rimeira linha na t abela, 2 significa a segunda e assim p or dian te.
• •
nome de uma tabela in t erna.
e0 nome da area de tr abalho. e urn literal de in teiro, constant e ou
e cmpexp euma expressao de co mpa racao que represe nta u rn teste a ser keyexp uma expressjio que representa urn valor a ser localiz ado.
executado na linha locali zada. •
e
texp um a expr essso que representa as campos a serem transportados
para a area de trabalho depois que urna linha elocalizada.
EIl1lADA ~ ListCi gem 11.6 A odi<;ao ; ndex no instru<;ao read ta bl e locclizo uma . .
unice linhe por seu numero de linho relativo 1 r eport ztx1106.
2 data: begin of it occurs 3. fl(2) ty pe n, 3 4 5 6 7
a
f2 ty pe f. f3(2) type c, f4 type p, end of it. wa like it.
s 10 11 12 13 14 15 16 17 18
it~fl = ' 10 ' . it-f3 • 'M'. it-f2 • i t - f 4 • 1. append it. 1t·fl • ' 20 '. it-f3 = 'B8' . it- f2 " 1t-f4 '" 2. append i t . It-fl = ' 30' . it-f3 • 'CC' • 1t- f2 " 1t-f4 = 3. append i t .
rea d table i t index 2. write : / "sy- s ubr c -", sy- subrc, / ' sy-tabix - ", sy-ta bix. / it-fl. it-f2, u-rs. i t - f4 .
365
I 366
I
I
••••• • - •
•••
APiE' OA EM' 1 DIAl ABAPI4
0lA 1UABEUS lh'1IIHAS
19 read table it i nto wa in dex 1.
20 wr ite: I . 21 / 'sy-su bre -" , 22 I "sy- ta bt x - ", 23 / it-fl . it-f2 , 24 / wa-fl , wa-f2 .
Utilizanda a adi<;aa wi t h key Se w1 th key keyexp fo r esp ecificada, 0 sistema localizard uma linha que correspanda com a. express sc key e a colocari. na.1inha de cabecalho, A Tabela 11.2 descreve as express6es keye seus efeitos. Utilizando uma expr essao key. voce podera especificar uma rinica linha a se r recuperada. Se mais de um a linha corres po nde r co m a expressao, a prim eira localizada (a que tiver a menor Indice) sera re tom ada.
sy- subrc , sy- ta bh.. ft - f 3. it· f4 . ..a- f 3. wa-14.
21
. 26 re ad table i t i ndex 4. : '27 wri t e: I . 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 .
c1 •
vi c2 •
Efeito
v2 . •.
o e6 digo na Listagem 11.6 produz esta safda: SAiOA~
sy -s ubrc •
0
sy-t ebt x •
2
20
8B
sy-s ubrc • sy- tll b1x •
0
2
2 8B 1 AA
20 10
sy-s ubrc • sy- ta bt x • 10
,
2 1
(tI) • vi (12)
cabecalho. • A linha 8 define uma area de trahalho wa igual a linha de cabecalho de it.
• As linhas de 10 a 12 acrescentam [reS linhas a tabela intema.
• A linha 14 1. a segunda linha. Ja que nenhuma area de trabalho est. especificada, 0 conteudo e colocado na linha de cabecalho. Depois cia 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. • A linha 19 Iea linha 1 na area de trabalho wa. a conteddc da linha de cabecalho permanece inalteradc depois da leitura. • A linha 26 tent a ler a linba 4 na linba de cabecalho. Nao b. nenhuma linha 4, entjic sy-s ubr-c e configurada como 4. sy-tab1x como a e a linha de cabecalho e a area de trabalho wa fiearn inalteradas.
o mesmo que 0 a nte rior, pc rem f1 e umo voricvel que cc ntem 0 nome do comp onente 0 ser comporod o. 0 volor em fl deve este r em letro mcicscolc . Se f1 estiver em bronco, a ccmpcrocdc sere ignorodo . wa e ume area de trnbe lho· identico em estruture a urno linho do tobelo inferno . Esso expresseo key localizo o primeiro Iinha no to be lo intemo exotcmente iguol 00 cc ntecdc de wa. as espccos e m bronco sao tratodos como volores a sere m loca lizodos; eles n60 correspondem Q quo lque r outro va lor diferente de espcccs em bronco .
w.
wa e ume area de trobo lho id!ntico au rnenor que Q estrutura do ta belo Interne. Se wafiver compos n, os cam pos de wa cc rrescooderee com os primeiros compos n de umo linha do to bela intemo. Esso expressOokey lccclac a primeira bnhc no tobe fa inferno, em que os primeiros compos n co rrespondem com 0 conteudc de wa. Os espoc;os em bronco sOo trotodos como ve lores c sere m locolizodos; e les noo corres ponde m 0 quo lquer o utro vclor dtlerente de espoc;os em bronco.
2 1
• As linhas de 2 a 7 definem uma tab ela inre rna co m uma linha de
v2 •• •
locol izo 0 primeiro linhc no tobe la intemo em que 0 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 ou vcrtovel.
. w.
0 2 8B 1 AA
20
w__ • w w • w • • - • •
No verseo 4, as co nversees necessaries poro c s tr&s primeiros 8)(pressOes key no Tabelo 11 .2 sOo executodas no mesme ordem de precedenclc des utilizodcs poro os expressoes 16gica s. Em sistemos onterio res, os ccnversc es ercm executodos convertendo 0 valor a direita paro 0 tipo de dado e cornp rimento do componente a esquema.
A Tabela 11.3 descreve as valores de sy-subrc e sy- tabix depois de executada read table it with key • • ••
367
~. I I I I 368
I
HRENO' eM 21 01"
.. I I
I
..
"
'
~
_
.
.
-
_
r
O~ l UlSEUS INlIiNlS
Resultodo
sy-s ubrc
sy-t abi x
le ituro bem-svcedtdc (uma linho correspondente foi locolizado) Leitu ro molsucedido, mas
o
Indice do
4
Indice do linho
linha correspondente
com 0 pr6ximo
umo Iinho com umo key moior que
umo solicitodoexiste
key meier
8
Leitcrc molsucedido e nenhymo
ncmerc de linhos
em1t + l
linha foi lccchrc dc com umo key mo ior
A Listagem 11.7 ilustra
0
32 clear wZ. 33 w2~fl - '10' . w2-f3 .. ' M ' . w2~f2 .. w2-f4 .. 1. 34 T'l!ad table it with key - . '112 . 35 write : t, 36 I ' s1 - suhr e - ", sy-subre, 37 / ' sy ~t a b h: . ', sy-tebtx , 38 I it-fl. it-f2. it-f3, it-f4. 39 oW w1-fl .. ' 20 ' . w1-f2 .. 2•. 41 read table it into w2 with key wI. 42 write: 43 / "sy-subrc - ", sy-subre , 44 / ' sy- t abfx -'. sy.tabix. 45 I it~fl. it-f2 , u-n. it-f4 .
t,
usa de express6es key.
o c6digo no Listagem 11.7 produz esta safda:
Listagem 11.7 Utiliz ondo uma expressdo key, voce pede procure r por urne linhc espeoftcc ndo um valo r em vez de urn Indice
.,
1 report ztx l107. 2 data: be;;n of 1t occurs 3, 3 fl(2) type n, 4 f2 type t , 5 f3(2) typ e r , f4 type p, 6 1 end of it , 8 begin of wl, fl 1ik!! f t -f l , 9 10 f2 11ke u -rz . 11 end of wI, 12 '112 l1ke it , 13 f(8).
sy-subre .. sy-tab'l x .. 30
a 3 3ee
II
II
II
23
24 f .. ' F2' . 25 read table it into w2 with. key (f ) .. 2. 26 write: t , 21 I ' sy- subre ..', sy- subre , 28 I ' sy- t abb - ", sy-tebtx, 29 I i t - fl , it-f2 , it-f3, it-f4. 30 I w2-fl . w2- f2. w2-fJ , w2-f4.
"deve ester em l etra maiiiscula
AHlllSE ~
3
0 2 3 CC Z 88
30 20
15 it-fl .. ' 10'. it-O ' M ' . 1t-f2" it-f4 - 1. append it . 16 it-fl ' 20' . i t-f 3 " ' BB'. it-f2" it-f4 " 2. apPl!nd it . 11it-fl .. ' 3D'. i t -f3 .. 'ec'. it -f2 - it-f4 - 3. append i t. lS 19 read table it with key fl '3 0 ' f 2 3. 20 write: / 'sy.subre - ", sy-subrc, 21 / ' sy-tabix - ", sy- t ebtx, 22 / it-fl, it-f2 , it -n. it- f4 . II
l.\iDA~
sy-suarc .. sy - tabix ..
14
31
_
"'PH
Tabela 11.3 Volores atribuidos a sy-subrc e sy-t abi x
EHTRlDA~
"
51-suhre .. sy-tabh ..
0
10
loA
sy-subrc .. sy-tabix ..
0
10
loA
3 2
2
• As linhas de 2 a 7 defin em uma tabela interna corn uma linha de
cabecalho. .• A linha 8 define uma area de trabalho wi semelhante aos dois primeiros campos d.a linha de cabecalho i t . • A linha 9 define uma area de trabalho w2 igualao cornp rimen to inteirc da linha de cabecalho it. • As linhas de 15 a 17 acrescentam tres linhas
atab ela in tema.
• A linha 19 Ie uma linha com 0 valor' 30' em f1 e 3 em f 2. Sy-suorc 6 configurada como zero a fun de indicar que uma linh a correspondente foi localizada e sy-tabix econfigurada com 0 rnimero da linha. Ja que nenhuma area de trabalho esta especificada, 0 conteudo ecolocado n a Iinha de cabecalho. • A liclIa 25 p rocura por uma linha com urn valor 2 na coluna f2. A linha Clocalizad.a e e coiocada na area de trabalho w2. 0 conteudo da linha de cabecalho pc:rmanece inalterado depo is da leitura.
369
~• • •
370
• • • • • • JI' ~ 1J •
........
~ ~ - - - - - ~ - - ------ - -
APiEH DA EM11 DIAl ABA P/!
DIA lU ABEUS IKTERNIS
• A linha 34 procura por uma linha com as valores especificados em 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 cc locadc na linha de cabecalho. Os campos com espacos em branco sao procurados na tabela: eles nao correspondem. com todos valores como acontece quando se faz pesquisa com 0 usc de Default Key (veja a p r6xim a secac).
• A linha 41 procure por uma linha com as valores especificados em todos as campos de wI. C om essa sintaxe, wI po de sec menor que it. o com eodo da linha corr espondente ecolocado na linha de cabecalh o. Co mo dito anteriormente, a s valores em br aneo sao tratad os como valores a serem localizados e correspondem apenas com eles mesmos .
Utilizando a
adi~ao
bi nary search
Sempre que utilizar a adiliao with key, voce tambem devers utiliz.ar a acli~o bi nary search, 0 que faz com que a linha $eja localizada com 0 uso de urn algoritmo binario de pesquisa, em vez de uma varredura de eabela linear. Isso resulta nos mesmos ganhos de dese mpenho dos alcancados com a pesquisa de um a tab ela de banco de dados arraves de urn Indice . De .an tem ao, a tabela deve se r classificada em ordem ascendente pelos componentes especificados na expressao key (veja a seguin re se~ao sobre a classifica~o) .
371
A Listagem 11.8 fomece urn exemplo.
Usta g e m 11.8 Este programa localize u ma linha com os mesmos espocos em volores dos compos Default Key no Iinha de ccbecclho. bronco em um compo Defau lt Key fczem co m que uma coluna seja
as
ig no ra d a . 1 report ztxllOS. 2 data : begi n of it occurs 3 fl(2 ) type n, type f. 4 (2 5 f3(2) type c . 6 f4 type p, 1 end of it .
3. · c a ~o de cerect er e ·campo nltlll(!r1 co ·campo de carac t ere ·campo nLnt!ri co -
-
par t! de default nao (! part! de default parte de default nlo f: part e de default
key key key key
"8 9 i t - fl· '10' . it-f3 - 'M' . it-f2 - it-f4 • l. append it. 10 it- fl· ' 20' . 1t -13 • ' BB' • tt-fz • it-f4 • 2. append it . 11 i t - fl · ' 30 '. i t~ f3 • ' CC'. it-f2 - i t-f4 '" 3. append 1t. 12 13 sort it by fl f 3. 14 clear it. 15 i t(2) • ' ". it·f3 • ' BB'. 16 N!ad tab le it bfnary search. 17 write: I ' 5y-subre -" , sy-su bre.• I ' sy -ta_b ~_x -" , sy-ta bb. 18 19 I ·n.. ", it-fl. 'fZ" ' . it-f2. ' f3..• • 1t -f3. 'f4-' . it-f4.
20
Nenhuma
adi~ao
NOVO.... Se nem urn 1ndex nem uma expresseo key esti....erern espedficados, a tobelo TERMO ~ se r6 . . orrida desde 0 inlcic quanta a uma linha que correspondo co m Defouh Key ed stente no ljnho de ccbecclho. Defau lt Key e umo key imogin6rio co mpost o de todos 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 moneiro co mo normolment e oeorre depois de uma read tabl e utilizondo umo expressoc key.
(Culd;do
Some nte espoc;os em bronco em um ca mpo Defou h Key ccrrespcnderiio 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 as mesmos se jom con figurodos como zeros e n60 com o espoc;os em bronco . Voce deve fo~ar espOl;OS em bronco pora dentro desses 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 subcam po au uti[izondo um sfmbolo de compo (consulte a sec;oo onterior quanto a simbolos de co mpo pa ra abter mois info rmol;Oes).
21 22 23 24 25 26
cl ear i t . it-fl - ' 30' . it-f3 - 'M' . read tab le it binary search. write : I ' sy- subrc - ' , sy-s ubrc, / '-sy-tahix - ", sy-tabix . I ' fl - ' , it·fl. 'f2-' . u-ra. 'f3- '.
o
'14. ', it-f4.
ccdigc na Listagem 11.8 produz esta safda:
sy-suhrc • sy-tahi x fl· 20 rasy-s'ubrc sy-tab1x fl· 30 f2=
lIIillSf ~
u-ra,
0
•
2 2 f3- B8 f4-
2
3 0 fl - M f4 "'
0
• As linhas de 2 a 7 defmern uma tab e1a interna com uma linha de cabec;illlo. F1 e f3 sio as opos de dado s de carac tere e assim form am o Default Key. • As linhas de 9 a 11 acrescentam tres linhas
atabela intema.
• A linha 13 classifica it par f1 e f3 em ordem ascen dent e.
~ ,
...
-'_
.~
,~
~ ..-y
y
372
..- ..- ..- •
· -. -Y-:Jr-'"
~
..
.
~
D~ IUABEill INTERNA5
APIEHDA EM 21 DIAl ABAPI'
• A linha14limpa 0 conteud o cialinhadecabecalho, configurando todos as componentes como espacos em branco 'e zeros. f1 assim sendo, e configurado como zeros.
e do
tipo n e,
• Utilizando urn sub camp o, a linha 15 fOflia espaljQs em bran co para a campo fl, de modo que correspoadam com todos as valcres. outre
Cmpe.xp
fI f2 •. .
Depois de locolizodo umo llnbc , 0 vclor de fl no linho locolizoda e compcrado com 0 volar de f1 no 6reo de trobo lho . Entao 0 vclcr de f2 e com porodo com 0 vclc r de f2 no 6rec de trobolho e ossim par dionte . Se todos forem ig uois, sy-subrc ser6 co nfigurodo como O. Se a lgum fo r dtlerente, sy- s ubr c se m configurodo como 2.
all f ields
Icdcs cs compos sdc compo rados , com o descritc para f1 f2 . . . .
no fi el ds
Nenhum compo
a
campo Default Key (f3) e configurado como ' BB'. • ' A linha 16 executa uma pesquisa biniria quanta a uma linha que contenha ' B8 1 no componente ra • 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 cia linha corr espo nden re. A linha de cabecalho foi preenchi da com conteddo da linha correspondence e foi escri ta,
e compo rodo . Esse e 0 pcdreo.
A Listagem 11.9 fomece exernplos.
0
Listagem 11.9 A odit;co comp aring ir6 configuror como 2 sempre que: as ca mpos forem diferentes
• A linha 21 limp a a linha de cabecalho.
• A linha 22 coloca urn '30 'e ' AA' nos campos D efault Key fl e f3 . • A linha 23 executa uma pesqu isa biriiria qu anta a f1 .. '30 ' e f 3 ' AA' . 0 valor de ret orno de sy-subrc e 4. Isso ind ica. que uma linha correspondente nao foi encont rada e sy- ta bi x contem 3 - 0 ndmero conteudo da linha de cabecalho p erm anece de linhas na tabela. inalterado, au seja da mesma forma como estava na linha 22.
a
Nesse exemplo, a tabela interna contem apenas algumas linhas, sendo assim bi nary search nao produ ziria uma melhora mensuravel no desempenho. Poi apenas inclujda p ara ilustrar 0 modo como deve ser utilizada.
Utiliza ndo a
1 report ztxl109. 2 data: begin of it occurs 3. 3 fl(2) type n, 4 f2 type t , 5 f 3(2) t ype c. 6 f4 type p, 7 end of it , . 8 wa 11ke it~
9 10 it-fl ... ' 10' . i t -f3 • 'M ' . t t -f2 • it- f4 • 1. append it . 11 it- f l · ' 20' . it·f3 • ' BB' . i t · f2 • ft - f4 • 2 . append it. 12 ft -fl z ' 3D' . it-f3 '" 'CC'• it -f2 · 1t -f 4 • 3 . append it . 13
A i nstrv~ao read table pede openos ser utilizoda para 0 Ielturc de to belos Internes. Nee funciono com tabelos de bonco de dodos. Utilize
14 read t abl e it i ndex 2 cOOlparing f 1. 15 write : I 'sy-subrc - ", sy-subrc , 16 / "sy-tebtx -". sy-tab1x ,
em seu luga r sel ect s ing le.
17
odi~ao
compa ri n9
comparing detecta as diferencas entre 0 ccnteudo da area de tra balho e de urna linha que foi loca.lizada antes de ser colocada na area de trabalho. Utilize-o jun tam en te com inde x au with key. Se, dep ois de localiz.ada uma linha, 0 con eee dc da Irea de trahalho for 0 mesmo da linha localizada, sy-s ubr c sera O. Se 0 conteudo for diferente, sy-subrc sed 2 e 0 contecdo sed sobrescrito pela linha localiz.ada. Se a linha nao for localizada, sy- subrc sera 2 e 0 conteudo permanecera inalterado. A Tahela 11.4 descre ve as valores para a expressao de compara~ao (cmpexp na sintaxe para read table).
/ 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 . 20 ...r ite: I . 21
/ "sy-sucr c - ", sv- subr c,
22
I
"sy-tebt x . ', sy- t abix ,
23 / i t - fl, i t-f2. it-f3 . 1t.f4. 24 I wa- fl , wa-f2. wa-f3 . wa-f4. 25 26it ·wa. 27 reed tabl e it with key f3 • ' M' cOlIIpar ing all f1eld s. 28 write:
I,
29 30 31
/ ' sy- subrt: .'. sy- subrt , / ' sy- ta bi x . ' , sy- ta bilt , I it-fl . it-f2 , it-f3 . it-f4 .
32
/ wa-fl, wa-f2, wa-fl, wa-f4.
0
va lor de sy-subrc .
373
lI!!!r Y
..
I 314
_
1J!II'
-----
!!'
!!!
I 'PREMD' EM21 DIAS ,UP/'
20
2 2 2 BB
sy-subrt: ,.
2
2
sy-hbix .. 2D. 2 BB 10 I M
IHillSE ~
sy-subrc ..
o
sy-tab1x .. 10 10
M M
Tabela 11.5 Formo s de expressao de tronsporte no instruc;oo read table Cmpexp
Descri ~ Ci o
f1 12 .. .
Depois de lccclbcd c umo linha , 0 valor d e fl no linho iccclhc dc e sobreposto 00 vclcr de fl no c rec de trobalho. Em segu ida, 0 valor de f2 e sobre posta 00 valor de f2 no 6reo de trnbo lho e ass im por d ionte. Some nte os componenfes identificodos op6s transporti ng serdo movldcs. Ta dos os c ufros co mpo nentes permcneceroc Inc iterodc s.
all f i el ds
Todos os compos sdo tro nspo rtodo s. Esse e 0 pcdrec e tern 0 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 t rc bclhc e cltercdc.
2 1
• Na linha 14, index 2 [ocaliza a linba 2 em it. Antes d e a linba ser
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 acrescentada a ultima linha) e a linha localizada ira conter urn 2. Sao diferentes , eedc sy-subrc sed configurada como 2. 0 cocceadc da linha ~ tabela interna e eneto copiado para a linha de cabecalho e e sobreposto no conteedo existente.
• N. linha 19" Iinha 1 eIocalizada. Os valores de f2 e 14na Iinha 1 do corpo sao comparadoscom as ccmponentes cia linhade cabecalhocom o mesmo nome. A linha de cabecalho con tern a linha 2 (recuperada pela instrulSao 14) e, panamo, sao diferemes. Como resu ltado, sysubre econfigurada como
• A linha 26 transfere
0
2:
conteddo de wa para a linha de cabecalho.
• Na linha 27, .uma linha com f3 : 'AA I e procurada. A linha 1 e corres pondida, conforme po de ser vista pelos valores de sy- subr c e sy- tabix na safda. A linha 1 ja esta na linha de cabecalho, portanto to dos os campos sao correspondidos em valore sy-subrc econfigurada como O.
Uliliza ndo a transporti ng
-
D~IU"EUSlllmNA5
o c6d.igo na Listagem 11.9 produz esta saida: sv -s ubrc .. sy-ta b1x ..
--
nd i~c'io transporting afeca 0 modo como campos sao movid os da linha localizada para
a area de trabalho, Se for especificado, somente os valores do s co mpo nentes especificados serio movidos para a area de trabalbo . Se urna linh a Ili o for localizada, transporting nao fara nada. A Tabela 11.5 descreve as valores pan a expressac de cc mp araci c (t exp na sintaxe para read table) .
Essa adi~ao sera uril,se voce quiser apenas testa! a existencia de uma linha em um a tabela interna sem alterar 0 conteddc cia linh a de cabecalho , Por exemplo, ant es de acrescentar uma linha, voce pcdera querer determiner se a 1inha ja exis te na tabel a interna. A Listagem 11.10 fo meee urn exemplo. MlADAIItrr.. Listagem 11 .1 0 A mo ne iro mo is ejlclente de lnserir linh c s em umo ,. tcbelc interne clcssrhccdc ma ntendo a orde m de c1 ossificac;oa.
1
~p ort
ztxlllD. _·. .
2 dat a: begin of it occurs 3, 3 n(2) type n, 4 f2 type t , 5 f3 (2) type c, 6 f4 type p, 7 end of it.
a 9 1t ~ fl .. '4 0' . it-f3 .. ' 00'. 1t - f 2 .. itef4 .. 4. append it. 10 i t -fl .. '2 0' . i t - f 3" ' BB'. i t - f 2 " it-f4" 2 . append it .
u 12 sort it by fl . 13 do 5 t te es. 14 i t -fl .. sy- i ndex ... 10. 15 itef3 · 'XX'. 16 it-f2 • it- f4 = sy- tndex, 17 re ad ta ble i t 18 with key fl .. i t -fl 19 binary sea rch 20 t ransporting no field s. 21 t f sr -s ubrc <I> D. 22 . in s ert i t i ndex sy- t ebt x, 23 endif. 24 enddo. 25
315
376 I
D~ IhTABElAS lNTERltAS
"lENDA EM 21 DIAS ABAPH
26 loop at H . 27 ~rit! : I it-fl . 28 I!ndloop .
u -ra,
Os seguintes pontos se aplicam: it-f3 . 1t - f 4.
• ascend;ng e a ordem padrao de classificacao. •
o c6digo SAiDA ~
DOl Listagem
10 20
11.10 produz esta safda:
IXX lBB
1 2
30
3 XX
3
~
4004
SO
5XX
• Se nenhum componente for especificado, a t abela interne sera classificada pelos campos Default Key (todos campos de tip o c, 0, P, d e t ) em o rdem ascendecee.
5
•
As linhas 9 e 10 adicionam duas linhas em i t. (Elas estfo propositadamente fora de ordem para exemplificacao.}
•
A linha 12 classifies i t por fl ascendente, de modo que a r ead table seguinte pos sa utilizar a ad.i~o bi nary search.
• A linha 13 executa urn lo op eineovezes . Cada vez que ocorre urn loop) ela eria uma nova linha para it e a cc loca na linha de cabecalho (linhas
14, 15 . 16). •
•
"
As linh as 17 e 21 determinam se urn.. linha ja exis re com 0 mes mo valor de fl existente na linha de cabecalho. Se tal linha nao for localizsda, sy-subrc sera co nfigurada como diferent e de zero e syt abi x sera configurada como a Indi ce da linha com 0 pr6xim o valor mais alto au para 0 rnimero de linh as na tabela intern a m ais 1. A linha 22 insere a nova linha ant es da linha in dicada por sy- tebt x. Isso mantem a ordem atual de classificac ao.
Classificando
0
conteudo de wooo lobela interno
Para classificar a conteado de uma tabela interns, utiliz e a instrucao sor t. As linha s podem ser c1assifieadas par urna ou mais colunas em orde rn ascen dente ou descendente. A pr6pria sequ encia de classifica~o po de tam bern ser modificada.
Sinloxe do
2! Z
instru~ao
sort
A segui r, veja a sin taxe da in strucao sort . sort it [descending] [as t ext] [by /1 [ascend1ng ldescend1ng] [lIS text] /2 .. .] .
~
on de:
m
•
it eo no me de uma tabela interna.
•
. . . repres enta qualque r numerc de names de campo opcionalmente seguidos por asc ending) descend ing, e/ ou as text.
T
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 componentes . Esse padrio pede ser anulado em urn componente individualao se especificarascend;ogdepois do nome do componente.
• 11 e /2 sao os compcnentes de i t.
A ordem de classificaljao para linhas com 0 mesmc valor nao eprevisivel. A s linhas que tern 0 mesmc valor em uma coluna classificada podem aparecer em qualquer ordem depois da classifica~ao. A Listagem 11.11 mostra exemplos da instrucao sort e tambem ilustra esee ponto .
ENTUDA IIltr.. Li st a g e m 11 .11 Utilize 0 instrut;60 sort para reorganizer as lin has de ~ uma tobelo intemo 1 report ztxllll . 2 data : begi n of. it occurs 5. 3 i 11ke sy- t ndex, 4 t, 5 end it. 6 alpha.(5) value ' eBARB' . 7 S do 5 t 1mes vary i ng it-t from a.l pha+O next alp ha+l . 9 1t -1 "' sy- tncex. 10 append it . 11 enddo. 12 13 loop at it. 14 write: / f t - t , it-t o 15 endloop. 16 17 skip. lS "sort i t by t. 19 loop at i t . 20 write: / tt-f , it-t o 21 endloop.
of
"
23 24 25 26 27 28 29
ski p. sort it by t . lo op at it . write : / t t -t , it-t. endl oop. skip .
377
378
I
APREND. E. 21 DIAS .8lPH
DlA 11< TABELIS UCTElHAS
30 sort ft by t i. 31 loop at it . 32 write : / 1t -:i . t t-t . 33 endtccp . 3' 3S s kip . 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.
INillS! ~
• A s linhas de 2"a 5 definem urna tabela. intern a com dais componentes: t e t . A clausulaoccurs e5 porque a tabelaintem a sera. preenchidacom
cinco linhas. • A linha 6 define alp ha com o uma variavel do tipo c, comprimento 5, e the d. urn valor padrao.
• As linhas de 8 a 11 acrescent am cinco linhas i tabela intema. Cada u rna
38 l oop at i t . 39
sort it. 44 *mesmo que: sort i t by 45 l oop at 1t . 46 wri t e : I i t - t o 43
47
ira conter urn a letra de al pha e 0 valo r de sy-t ndex quando a linha for acrescentada.
write: l i t -i. it- t o end loop.
40 41 42 skip .
t.
endlo op.
o c6digo na List agem 11.11 produz esta saida:
,, 1 C
SAIDI ~
3 A
4 ,
S ,
,, A
,
C
., ,, 3 A
S ,
1 C
,,, A
• A s linhas de 13 a 15 escrevem 0 conteddo da eabela interna. 0 mimero cia linha de sy-tebt x aparece a esquerda cia safda . As linhas cia tabela intema estao em sua ordem original, sendo assim os valores de sy- t ndex e sy-tabi x sao correspondentes. • A linha 18 reorganiza as linhas, de mo do que os va.lores de t fiquem em ordem ascendente. • Na linha 24, a eabela interna e classificada n ovamente utilizando a 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 fiquem em uma ordem part icular, sera preciso especificar isso na instru~ao sort. A ordem cia linhas que contem valores idec uc os nac e conservada durante urna classifica~o. • N a linha -30, a tabela interna ~ classificaclapor t em ordem ascenden re 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.
• 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.
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 par t.
C
.
, ,,
I
1 C
S ,
,, , A
C
3 A
Ordem de clcsslficcceo e a
ad i~ci(j
as text
Dentro do sistema aperocio nol, cedo carodere que vod ve na tela e rep resentodo 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 cla ssificoC;co e denominodo sequencia de c1ossificoC;60 bin6rio.
IOYO Ill... rnMO ~
379
380
I APlEN DA EM 21 DIAl AUP" 9 tt-t • ' Nubbl e ' .
Quando uma linguagem contem caracteres acenruados, hi urn valor nurnerico atribuldc para representar cada forma acenruada de urn caractere. Por exemplo, 0 e 0 (0 com urn trema) sao diferentes e, ponanto, caracteres indepe ndenres, cada urn com urn valor numerico individual. (Em ASCII, 0 valor de 5 e0 decimal 246.) Q uando voce classifies dados contendo caracteres acentuados, as formas acentuadas devem aparecer com as formas njio acentuadas. Por exemplo , 0 e ti devam estar juntos e, em seguida, p. Entretanto, as valores bicsrios dos caract eres acentuados e naa acentuados nio seguem uma sequencia numerics. Portanto, sed necessaria um a maneira de alterar a ordem de classifica!rio, de modo que as caracteres acenruados sejam corretamente
11 write: I 'sy-l angu-' , sy-langu. 12 sor t 1t. "cla s s i f i ca per Default Key. t ! do ti po c, portant o class1fica por t. 13 l oop at a. 14 wr ite: I it-t o 15 endl ccp.
I' skip . set loc al e la nguage '0 '. "Equival ent e I ace n t ua ~ ! o em alemlo wri te : I ' sy- la ngu- ' , sy- bngu. sort it as text. "as te xt aqui se ap11ca a todos os componentes de t 1po c *mesmo que : sort i t by t as t ext . Z2 loop at it . Z3 wr a e: I i t-to Z4 endl oop.
17 18 19 20 21
classificados. A adiliao as text modifica a ordem de classificacao, de modo que as caracteres acentuados sejam corre tamenre classificados. Com as te xt , a 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:
0 ambiente de texfo e um eonjunto de cccccerrsnccs cssccicdcs C linguogem de logon do usu6rio. ~ determinado pelo e6digo de tdio rnc que voe! digita quando efetuo logon e eonsiste prindpalmente do eonjunto de eoraderes do idioma e do sequencia de lntercclccoo. Voce tcmbem pede olterar 0 amb iente de texto em tempo de execv¢o utilizondo a instru¢ o set locale. Esse instru¢ o configura 0 valor de sy -Lanqu , 0 conjunto de caraderes atva is e 0 sequencia de inte rcoloc;Oo para a linguoge m escecffccdc.
NOVO... illMO "
sy- l angu- E H19g1e
Hoffman Hubbl e HOl lilian sy-l angu- 0 H19!lle Hoffma n HOll man Hubble
as seguintes ponros se aplicam para a adi~ao as text:
• Pode ap enas ser utilizado com campos de tipo c. • Pode ser especifieado dep ois de sort e antes de quaisque r no mes de componente. Ne sse case, se apliea a todos as componentes de tipo c utilizados pela classificafjao.
IHiJ.ISE~
• 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 ij vern por ultima na sequencia de classificaci o.
A Listagem 11.12 fomeee urn exemplo. Lisfagem 11.12 A dassificoc;ao de corocteres ccentuados requer a usa do odic;oo as t ext
1 report ztxlll2 . 2 data: begin of it occurs 4, 3 t (30). 4 end of it. S
6 i t - t • 'Niggle' . 7 f t-t • ' Hoffman 8 f t-t • 'H6l1man' • I.
append it . append it . .Ippend i t.
• As linhas de 6 a 9 adieion am quatro linhas na tabela intema. A da linha 8 coneem urn 0 (0 com tr ema). • 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.
£NTlADI~
append i t.
10
,.
• 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 sequencias de inrercalacio sao urilizado s desse p on te em diant e no programa. • A linha 20 utiliza sort com a adi~ao as t ext depcis do nome da tabela interna. Isso faz com que as text se aplique a todos as compon ent es do tipo C. Na saida, 0 e 0 aparecem junt os.
.. .. ..- .... .- . . ...... ...... ----- - - - - - -
-
382
I
-
-.. -
~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 pclc vrc-chove do ABAP/4 sabre 0 instru<;oo conv ert ; "to sortabl e
code.
As seqiiencias de classificacic variam de acordo com as plataformas. Ao transp ortar de urn sistem a operacional pan outre, as unicas sequencias garan-
---J_ DlA l1:TABEUS lNIDHAS
" PUND.. EM21 OIAS ABA P/4
IFa, a
L--.:-
Utilize a odi¢o bi nary search no instru¢ o read table. Elo c vmentcrc muito 0 desempenho do pesquiso.
I
383
Nee utilize occurs 0 para tobelos infernos ' com menos de B KB. lsso resulta em superclccccec de memoria e diminui 0 de sempenhc.
Utilize a adit;aa index no instrut;oo read tab le , sempre que passive!. Eo maneira mois ropldc de localizer uma 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 inte rna. Utilizando a adi!;ao inde x, voce pa den. lo calizar uma unica linha peio numero de linha relative . Essa e. a maneir a mais eficiente de . localizar uma linha. Utilizando a adi !;ao wit h key, voce poderf localizar uma linha especifica ndoum valor a ser localizado. compari ng derermina se os valores na area de tra balho sac diferenees dos valores na linha localizada, transporti ng impede atribuicoes desnecessarias au
Depo is do dassificoc;ao, voce pede exd uir duplicoC;6es de umo tobelo interne vtilhcedc a insfruc;oo del ete adjacent dupl i cates , descrito no dccumentocdc de pclcvrc-chcve do ABAP/4 .
Resumo •
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 ideatificados . Se nenhum componente t iver urn nome, a tabela sed classificada por seus campos D efaul t Key (t ipos c, n, o, t ex).
de trabalho impHcita da tabela interna.
• 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 esp ecificar as linh as a serem reto madas. Dentro do loo p, sy-tebt x iri center 0 mim er o de linha relative com base em 1. Depois de endl cop, sy-subrc sed zero se q uaisqu er Jinhas riverem side processadas no
o
loop. •
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 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 no va itera!;ao, mas fara. isso so men te quando sua expressao lo gica for fa lse.
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, como a apresentada na Lista gem 11.13. Porque isso efcito dessa maneira? Nac se pode sempre definir a tabela inte rna com a instru ~ao data? Qual e 0 motivo da introdu ~o da instru~ao types ?
OOI.lDI~
Lista g e m 1 1.1 3 Definindo umc tobelo Interne com urn tipo definido pe lo usu6rio
1 report zt xl1l3 . 2 t ypes: begin of my_type, 3 fl . 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
Nac hi nenhuma vanta gem em utilizar os ti pos de tabela in terns da m ane ira m ostrada na Listagem 11.13. Os rip os serao a teis som ente se vcce os uri lizar p ara definir mais de urn obj eto de dados. Nessa li stagem, ap en as u rn objeto de dados e defi nido do ripo t_it. Seria mais simples, nesse caso, tirar as instrucdes type s e criar toda a definic ac utiliz ando data. Teoricamente, os tipos serdo uteis se voce precisar definir multiples cbjer cs de dados que sejam iguais. A List agern 11.14 most ra tres maneiras de definir multiplas tabelas intern as: utilizan do apenas data (clades), utilizando t ypes e utilizando uma estrutura doDDIC.
!N1IlDI~
Listagem 11.14 Deflnir multip les tc belcs internes com t ypes simplificerO o~ definir;o es
,
1 report ztxl113.
disponlve l para reutilizar;oo denf ro de multiplos prog romas . Em minho oplnlcc , utilizor uma estrofvrc sere bem melho r do que utilizer umo definir;oo types .
Existe apenas uma coisa que urn tipo pode fazer e uma estrurura nao: ele pe de canter a defini~o pa~ uma tabela int ema aninhada. Som ente n esse caso eu utilizaria urn tipo. Em rodos os outros cases , um a estrutura data begi n of ou l t ke a no DDIC seria ideal.
Workshop
o Workshop oferece du as maneiras de voce verificar 0
que apr en deu n esre capitulo . A s e~ao Teste oferece perguntas para ajud ar a solidificar seu entendimenta 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 exercfcios no Apecdice B, "Respostas as perguctas e aos exercfcios".
Teste 1. 0 qu e confi gura urn limite para a qu antidade maxima de mem6ria est en dida que pede ser alocada por uma tabela -intem a?
3 • Defi ne 3 tabelas tntemes 1 d ~ nti ca s ut il iza ndo epenas DATA 4 dat a: begin of t t _l a occurs 10, 5 fl .
2. P or que nao utilizar occurs 0 se voce pretende arm azenar menos que 8 KB em uma tabela intema?
f2.
6 7
end of it_la , t t_lb li ke i t _la occurs 10 wtt h header li ne, i t _Ie l 1k.e i t _la occurs 10 wt tl! header l i ne.
B
g
3. Voce pode utili zar a instrucao rea d tab' e para Ier as tabelas de ban co de dados ?
I. 11 • Defi ne mats 3 tabelas internas 1denti cu ut ll i zando TYPES 12 types : begin of t _ , 13 fl , 14 f2 , 15 end of t _, 16 t_it t ype t_ occurs 10. 17 data : it_21 type t_tt. 18 it_2b type t _it , 19 i t _2c t ype t_1t.
Exerdcio 1 Exiba e explique as convers6e s que oco rrem Listagem 11.15).
i l r
~
~o
programa zt x1l 10 (veja a
Listagem 11.15 Conve rs6es (Dice: Progrem . > lv1olysis) 1 repert ztx l lID. 2 dat a: begin of it occurs 3, 3 fl (2) type n, 4 f2 type i, 5 f3(2) ty pe c, 6 f4 type p, 7 end of f t .
,.
21 • Define mafs 3 utilizando urna 22 data: 1t_3a 11ke ztx _it occurs 23 i t _3b like zt lUt occur s 24 ft _3c l i ke ztx_it occurs
estrutura do ODI C 10 with oI!eader 11ne, 10 with header I t ne, 10 wit h header Hne.
S
e
ANALlS~ .... Dos dais primeiros metcdos, uma qcestec de cpinieo direr qual clc rc: oenhum parece termuitas va nta gens sobre a outre. Acreditc qve
r
I
e0 0
ma is
terceirc
metcdc, entretanto, seic 0 preferido. E o ma is clorc e pore ver 0 definil;e o voce podero simplesmente da r urn clique duplo no nome da estruturo do ODIC. Ao visua lizer a estrutura, 0 que voce estero venda e muito ma is significativo do que umo definir;eo do ABAP/4 ; hover6 urn texto curto para codo eleme nto de dodos e um pora a pr6pria estruiuro. Essestextos pode m temb em ser programa dos . Alem do mais, 0 estrvtura estorO
g 1t-fl .. ' 40 ' . it-f3 • ' 00' . 1t- f2 .. it-f4 .. 4. append it . ID 1t -fl • '20'. it-fJ • ' SS' . it- f2 • it- f4 • 2. append it . 11 12 sort it ?y fl. 13 do 5 times . 14 it-fl· sy· l ndex •. 10. 15 it·f3 '" 'XX '.
385
~ - 386'" ..... .....- ~....- ..... ".-............ -.-.- ~ -.., ~ -- -
-- -
-- -
-- -
r
. PREHO... EM 21 DIAS ABA P!4
16
ft-t2
11 18 19
r ead table 11 ~th key fl ,; tt-fl binary searc h transporting no fi eld s. 11 sy-subrc <> O. insert it i ndex sy-tebtx . endif.
20 21 22 23
~
t t -f4 • sy- t ndex.
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 II~li .... I I " . . . . . I -. . . . . . • _._~ • • • I . . . .
~'i '" ., .~ - ~ .....0
"
..5t
388 I
APRE MOA EM 21 DIAS ABAP/4
OIA12 "BElli INTERNASAVAHIA" ' , PARTE 1
389
I
Testa ndo e modificc ndo inte rno
0
conteudo da tabela
Utilize as seguint es estruturas para tester e modificar internes:
0
i
Determinondo se umo tgbelo interng est6 vgzig Se 0 corpo de uma tabela intema contiver apenas valores iniciais (espacos em branco e zeros), eia estar.i vazia. Portanto, para determinar se uma tabela int ern a contem quaisquer Iinhas, fal$a urn tes te do corp o com a seguinte instrucao:
conteudo das tabelas
• 0 ope rador de corpo de tabela
if i t[ ) ts tntttel .
• describe t abl e •
append 1i nes
•
in sert li nes
•
editor- cal l
•
ins ert
Se 0 te ste for verdadeiro, a tab ela interna estara vazia. Q uando false, ela
ici ce nter p elo menos uma linha.
Determ inando interng
fre e
•
del ete
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.
Sintaxe da instrucco descri be table en A seguir, veja a sintaxe da instrucao descri be table.
•
clear
•
re fr esh
Z
•
append sor t ed by
S o n de:
• ca ll ect
o carpa de uma tabela in terna erepresentado pela sintaxe it [ I , onde it 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 da fo rm a como mos trado. Voca pode util izar essa sintaxe para executar operac;6es efici entes de tab ela qu e nao req ue rem 0 usa de uma linha de cabecalho. Essas operacoes serao descritas por todo este capftulo. 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 tiver urna linha de cabecalho, voce podera utilizar tanto it [ ] como i t para rep resentar 0 corpo ; eles sio equivalences.
O bte nd a informo<;6es sabre umo tobelo interno Voce p ede obter as seguintes informacoes comumen te necessarias sobre uma tabel a intema: • Se a tabela interna conrern dados • Quantas linhas ela ccntem
numero de linhas em uma to bel a
Para de terminer
• modi fy •
0
descri be table it [lines i] [occurs j].
m
•
~
• t e j saO variaveis numericas.
it
e 0 nome de urna tabela int erna .
Essa insrrucfo preenche as tres varidveis de sistema mo stradas na " Tabeia 12.1.
Ta bela 12.1 A instru<; 60 describe tabl e preenche estes vori6veis de sistema Varlavel
sy-t f f l l sy.tleng
Namero de linhe s Ccmprimentc de ume llnhc em bytes
sy-tcccu
Velor ctuel de d6usule occurs
Os seguintes pontes se aplicam: • Se a adic;io 1i nes i for especificada, 0 rnim er c de linhas sera colocado ern sy-t f t l l e f. • Se a adiC;ao occurs j for especificada, sera colocado em sy-toccu e i.
0
tamanho da clausula occurs
I I'
I \
........ ~ . . - . . -
~
11'
11' •
•
•
•
11' •
•
•
•
-
I
~
O~ lU ABElAS IHmH>S AY'"YlOA5,PAm1 I
Ho somente umo insffincio em que sy-toccu ire dife rir do clousulc 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 zero. 1550 indica que a rnem6rio esfd sendo a!ocodo em blocos de 8 KB porn esse tob elo interne .
Progra ma de exem plo que obtern as informac;6es sobre um a tabera interno A Listagem 12.1 mostra urn programa de exemplo que ob tem as informacoes so bre uma tabela intern e.
~NTRADA'" Lista ge m 12 . 1 A instrucdc describe table utilize os vcrlovels de sistema ,. pora quontfkor 0 ccnteudc de tabela
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 Iinhas, entia 0 teste e verdadeiro. •
A linha 11 utiliza 0 operador d e cadeia (:) para acrescentar tees linhas identicas a it.
• A linha 13 faz novamente urn test e do corp o. Dessa vez, 0 teste e prec edido por urn not logicc. A tabela intem a contem dadcs, entia esse test e everdadeiro. .• Depois de cada instrucfo append, 0 valor de sy-tebt x sera configurado 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 e o coloca em sy-tfil1. Tarnbem obtem 0 comp rimento e a tamanhc 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' , 4 end of it, 5 n type 1.
Se voce precise- openos sober se a tobe lo ccntern dodos, ndo quontos linhos elo possui, utilize 0 operador de corp o de tabe la. He e mots efldente do que 0 instrw;ao describe ta bl e.
6.
7 1f H [ ] is i nitia l . writ e: I "tt is empty ' . 8 endif. 9
10 11 append: tt , it , tt .
Copiondo dodos de umo tobelo interno para uma outre
"seee t hent e a escrever 'append i t' 3 vezes •
12
13 ;f not H [ ] i s i nit ial . 14 write: / ' it i s not empty'. " 15 endif .
Se duas tabelas internas tiverem a mesma estrutura, ut ilize a seguinte insrrucao para duplicar D conteudc de uma tabela interna em Dutra: m[
1•
j tl [ ] .
16
17 wrtte: I 18 describe 19 write : / 20 I 21 I
' number of rows f rom sy- tebtx" , t abl e 1t li nes n. 'n~er of rows from sy-tfn 1: ' • ' l engt h of a row from sy- tleng:' , 'oc curs val ue f rom sy-toccu:' ,
sy-te btx. sy-tfil1 , 5y-t1eng, sy-tcccu .
o c6dig o na Listag em 12.1 produz esta safda: SAiDA ~
it i s empty it i 5 not empty number of r ows from number of rows from l engt h of a row from occurs val ue from
sy-tabix:" 5y-tfi 11: sy-tl enq: sy-tcccu .
3
Duos tobelos internos terec 0 mesmo estrutvro se 1) ambos tlverem 0 mesmo numerc de componentes e 2) 0 tipo de dodo e comprimento de codo componente fore m iguois 005 do compo nente correspondente do outro tobe la inteme . Somente os names de componente ndc precisom corresponder.
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 linhas de cabecalho, se uma das tabelas intemas river uma linha de cabecalho, permanecerf inalteradc. Essa e a maneira mais eficiente de copiar 0 conteudo de um a tabela intema para outra.
..1."' __ 391
~IIIIIIIIIII················· · · · - - - - l oa12,lABEUS IKTEl<NASAVAN\ADAS, PAm1
APREND! EM 21 0lA5 ABAPI4
Sintoxe do
Copiando umo porte de umo tobelo interno 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 nse rt l ines.
Utilizondo
0 instru~cio
I
append 1i nes
U tilize a instru~o append 1ines quando quiser acrescentar linhas ao final da ta bel a alva .
III
Z
S
Sintoxe do instrucco append 1i ne s A seguir, veja a sintaxe da inst ru cao append 1i nes. append l1 nes of ttl [from nf] [to nt) to it2.
!,
cede:
I
m
•
t t l e i t2 sao as
~
•
nf e nt sao con stantes,literais au variaveis numeric as.
tabelas internas com au sem linhas de cabecalho.
O sseguinres pontes se aplicam :
•
As estruturas de itl e itZ devem corr esponder.
•
nf eo Iodice da primeira linha
a ser copiado de t t l . Se a adiljao fr om nao for especificada, a c6pia cornecaraa parti r daprimeira linha de i tl .
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.
•
nt
•
Se nem from nem to forem especificada s, a tabela inte ira sen acrescentada. .
•
Depois que a instrucio append 1i nes for executada, sy- tebt x iracanter o mimero de linhas na tab ela.
-
c.n
I
!
Z
Utilizondo
0 instru~cio
insert 1i nes
U tilize a instrucio i nsert 1i nes quand o quiser inserir as linhas em um Ingar dif er en re d o final cia tab ela-alvo.
insert 1i nes
i nse rt lines of ttl [f l'Oll nil [t o nt] into tt2 [index nb].
~
onde :
m
•
T
• nf, nt e nb sao cons tantes, litems ou variaveis num ericas .
i tl e i t2 sao as tabe1as in tern as c~m ou sem
l.inhas de cabecalho.
Todos as pont os que se aplicam a instrolJio append li nes tambem se aplicam aqui . A diferenca e que as 1inhas de t tl sao inseridas em tt2 antes do 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. 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 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 sera assu mida.
Progra ma de exemplo que copia os dados e ntre as tobe los internos A Listagem 12.2 mostra urn prograrna de ex emplo que copia os dados de uma tab eia interns para outra .
ENTRADA'" Ustagem 12.2 Este pragrama copia as dodos de umo tabelo interne ~ para outra utilizondo os instruc;6es append lines e i nsert lines 1 r~port ztx1202. 2 datil : best n of i tl occurs 10,
3
•S
Utilize r append l t nes sera de tres 0 quotro veees mois rOp ido do que utilizor append poro odicio nor os linhos umo de codo vez.
instru~ao
A segui r, veja a sintax e cia insrruga o 1nsert 1i nes.
6
fl.
end of lU • HZ 1i ke i tl occurs 10 with header 11ne, alph a(lO) val ue ' A"BCOEFGHIJ ' .
7
,
8 do 10 t tee s varyi ng 1tl-fl from al pha+Q next al pha+l. append t t f , enddc. to
11 12 append lines of it! fTOll 2 to 5 t o it2 . 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.
393
~~~~~~~~~~~~ I I I I
'"
394
•• I ••••• • • • • • • • • • • • • • • • • • • • • • • • •
A/ RENDA EM 11 D'AS AU/ /.
DlllUABlliS INlERNASAVAll(AIlAS.IARTn
18 ski p. 19 loop at ttz ,
Compo rg ndo
20 wrtt~ itl-fl . 21 endloop. 22 23 l oop at 1t2. 24. if t t Z- fl >. ' E'.
26
27
i f itI[] • i t 2[
end1f.
endloop.
29 skip.
30 l oop at tt2. 31 writt!! 1t2-f1. 32 endloop . 33 34 sk i p. 35 i t2 [ ] • i tl [ ] .
Utiliza ndo a
endloop.
1.
instru~ao
edi tor- ca l l
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 depura.~o e como uma interface simples a fim de permitir 41.0 usuirio digitar e modificar os dados em forma de tabelas.
c6digo na Lisragem 12.2 pr oduz esta saida:
8 C0 [
BH IJCO E
Sintoxe do instruljo o ed i tor- call
B A H A l A J CD A E
!!! Z
A BC D E F G H I J
AHiLlS£~
• As linhas de 8 a 10 preen ch em i tl co m 10 linhas con te nd o as primeiras . 10 letras do alfab eto. • A linha 12 acrescen ta as linh as de 2 a 5 de i tl para i quatro linhas contendo as let ras de B a E.
comeadc de
A instrulioo If - Equal t o e 0 moneiro mcls eficlente de comporar 0 contendc de duos tobe los intemos.
36 loop at ill. 37 write rez-n.
o
0
Para utilizar essa estrurura, as tabelas intemas deverac ter a mesma estrutura, Se elas n io tiverem a mesma estru rura, voc e tera. que com pari-las manualmente, linh a po r linha . . Essa ins t ru~ao sera verdadeira quando iti e H 2 contiverem 0 mesmo mime ro de linhas e 0 conreado de cada linha for 0 mesmo.
28
38
conteudo d e duos tobelos internos
Voce pode u tilizer 0 operador de co rpo de tabela para comparar duas tabelas intemas, co mo pode sec visto a seguin
insert l ines of i tt to 1 into tt2.
25
0
tZ. i t 2 tern agora
• N a linh a 17, a adi~ao t o nao esti especifica da, entdo 0 final de i tl e assumido. Is so ins ere as linhas 8, 9 e 10 de i tl em 1t2 antes cia linha
2. • Na linha 24) se a Ietra em it2-fl for maior que au igual a E, a linh a 1 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 de quatro linhas . Na saida, sio os valcres I A' . • A linha 35 copia 0 conteudo de i tl para it2, sobrepondo com pletamente 0 conteddo exist ent e,
~ m
T
A seguir, veja a sin taxe da ins tru~ao editor-call. editor-call for it [title el [display mode] onde:
•
•
it ~ 0 nome de urna tabela in tem a.
t
eum literal, constante ou variavel.
Os seguintes pontes se aplicam : •
it pode apenas conter com ponen tes do ripe c.
• 0 comprimeato maximo de uma linha e de 72 caract eres. • te o te xto exibido na barra de tfrulos da janela do editor. • A adi<jao di spl ay mode faz com que os clados sejam exibidos no editor em modo de exibicsc . 0 usuario sera. capaz de p esquisar e rolar, mas nao sera. capaz de alterar a cc nteud o. 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
395
~!.I
XXIIIIIIIII •• I 396
II •••••• •
•
•
•
•
•
•
•
•
•••
_
APREH OA EM ' 1 DIAl ABAP/'
... ----- -- D. 1UABElAS INTElHAS AVAH\ADAS. PARTE 1
programa. Back, Exit e Cance l saem do editor e retomam ao programa. Se alreracoes tiverem sido feitas, sera solicitado 010 usudrio salvar au cancelar as
alceracoes. Depois que a instrucac edi tor-call for executada, sy-subrc sen configurada com as valo res mostrados na T abela 12.2. Ta bela 12.2 Volores de sy-subrc depois do instruc;oo editor-cal l sy-sub rc
Significado
o
Uma grovo¢o foi executcdc . 0 ccntecdo do tcbelo interne pode ou nOD fer side olterodo.
4
o usu6rio noo executcu urne aC;Cia solvor. 0
23 loop It it . 24 \IIrHe: I it-to 25 endloop.
Se nenhum dado tiver sido digitad o quando 0 editor foi exibido , 0 cedigo na Listagem 12.3 produzirf esta safda: Data was not changed Haee
conteudc do tobelo
Address Phone F~efo l"lll
Text
interno est6 inolterodo.
. A Listagem 12.3 mostra urn programa de exemplo que utiliza a instntc;ao edi tor -ca 11. Nesse exemplo, a tabela interna e preenchida corn cinco linhas e
e exibida no editor.
de modo que a usuario possa modificar as dados. 0
conteddc e entao escrito e uma men sagem-tambem se uma alten!;aO foi execurada.
e escrita a fim de indicar
Listagem 12.3 Utilize a instrw;co editor-call paro visualizor, editor e depurcr 0 ccnteedo de uma tcbelo inte rne . 1 report ztxI2.03.
z 3
• I 6
;
'j I 1.1
Ii
. I' I
7 8 9 10 11
dat a: begin of it occurs 10, t(i!), end of it, save_it l1ke 1t occurs 10.
"t ext o "ira center a c6pia do or ig ina l
tt -t > 'Na~ :'. append it. it· t · 'Address : ' . append i t. 1t-t · ' Phone : I . append it. 1t -t = ' Freeform Text append 1t. append It . clea r it-t with ' -'.
12
13 14 15 16 17 18 19 20 21 22
save_i t - H[] . "sese t hente a: save_it [ ] • H [ ] . editor-ca ll for it t i tl e ' Freefonn Entry' . if sy- subrc • 4. "0 usuartc n~o executou uma al;~o server write : I ' Data was not changed'. elseif save_it[ ] < > i t [ ] . -0 usuario executou IJlIIa alj:ao salvar \IIrHe: I ' Data was changed'. else . \IIr1te : I 'Data \liAS not changMl '. endif. write: I sy- ul1ne(72).
• As linhas de 2 a 4 definem urna tabela intema que tern urn dnic o componente t, comprimentc de caractere s 72. • A linha 5 define uma segunda tabela interna igual aprimeira. Ela sera utilizada para armazenar urna c6pia de referencia dos dado s em it. Ela nao tern uma linha de cabecalho. A linha de cabecalho foi ignorada ja que nao era necessaria nesse programa. •
As linhas de 7 a 11 acrescentam cinco linhas
a tabela intern a a partir
da linha de cabecalho. • A linlla-13 copia 0 corpo de it para 0 corpo de sa ve_H. ] i que save_i t nao tern uma linha de cabecalho, 0 lade esquerd o da atribuicao pode ser escritc com ou sem colchetes. •
A linha 14 exibe
0
conteedo da tabela interna no edi tor com
0
titulo
Freeform Entry. • A linha 15 verifica 0 valor de sy-subr-c para determinar se 0 usuirio executou urn a~o salver. Se ele nao executou, provavelrnente os dadcs nac foram alterados e uma mensagem sera escriea. • A linha 17 compara 0 novo cocteedo de it com a c6pia de referencia em save_it . Se forem diferenres, uma mensagem sed escri ta. Se forem iguais, a linha 20 escrevers uma mensagem para qu e isso seja indi cado. • A linha 22 escreve urna sublinha com 72 cara cte re s de comprimenrc.
• As linhas de 23 a 25 es crevem
0 novo conteudo da tabela in terne, incluindo quaisquer modificacces feitas pelo usuario.
Inserindo linbos e m um o to be lo interno Para inserir uma tinica linh a em uma tabela interns, utilize a instrucac i nsert .
397
..-. . . . . . . . .&.&..&...-..-....
I I I I I I -I . . . . . . .
.. --- --- -
-
Sintoxe do instrU!;oo insert
16
U't A seguir, veja a sintaxe da instrucic insert.
at i t where fl 19 1t - fl • - 88. i nsert it. 20 21 endl oop. 22 23 skip . 24 l oop at it. 25 write / 1t- fl . 26 endl oop.
insert [11'0 1nt o] i t [i ndex II]
S
cede: • wa eum a area de t rabalhc com a mesma estrutura de uma linha cia tabela int ema i t.
m
T
• n eurn constante. Iiteral au varisvel numerics.
a
• Se Il'Q for especificado, 0 comeddc de va sera inseridc em it . 'fila devers tee a mesma estrutura que it .
, 5 1
2
linhan se tomara enta o a linha n+ 1.
"88,
• A ins tru~o i nser t p ede ser utilizada dectrc au fora de loop at it. 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 atual sera assumida.
, 5
6 do 5 t i mes . It - fl • sy-tnde x, 7
, 8
append it.
codigo na Listagem 12.4 produz esta safda:
993
• Se index for especificado, a nova linha sera inserida antes da linha n. A
1 r eport zt x1204. 2 data: begin of i t occurs 5, fl l1ke sy-tneex, 3 end of it .
4.•
1
especificado.
Llstagem 12.4 Utilize a instruc;ao insert perc inserir uma (mica linha em uma tabela intema
:>.
2
• 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
EH1IJDA~
3
885
illUSE ~
• As linhas de 6 a 9 acrescentam cinco linhas contendo os numeros de laSemi t.
• Alinha 11 atribui ao componente de liaha de cabecalho it·fl urn valor
.
~-~.
• A linha 12 insere a linh a de cabecalho de it com o uma nova linha no corpo de it antes da linha 3. A linha existence 3 tcrna-se a linha 4 depois da insercso. •
A linha 18 recupera essas linhas da tab ela in terna que tern um valor f1 maier que ou igual a 4. Antes de cada linha, a linha 20 inse re uma nova linha a partir da linha de cabecalhc de it. Antes da inser<;ao, a linha 19 alte rou 0 componente fl para que 0 m esmo contivesse ·88.
eneeo.
I. 11 it ·f1 • -99. 12 i nsert it ; ndex 3. 13 14 l oop at 1t. 15 wrt te / it-fI.
399
endloop.
17 18 loop
Os seguintes pontos 5C aplicam:
A Listag em 1 2.~ con rem urn prognma de exemplo que utiliza a instrucio i nsert.
.~ lHABELlS IIITERH.lS AVAN(AO.\S, PARTE I
APR EN DA EM21 DIA S AU P/4
Z
-
Depois que coda instnH;60 1nsert for eecveec, 0 sistema indexa r6 navome nte todas as llnhcs cbcixc do inserida. lsso introduzir6overhead q uando voce Inse rir linhas pr6ximos 0 0 inicio de umo grande tebelc interne. Se voc e precisor inserir um bloco de linhos em umo grande tobelc Interne, prepare u ma outre to belo com as ltnhcs 0 serem
-. 400
•
•
•
•
•
•
. -.~.
•
• w •
~
• w •
~
_ -
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 for execvtedo.
• Se from va for esp ecific ada, a linha sed, scbrescrita com •
Ao inserir urna n ova linha em it dentro de loo p at it. a inser~ao eao
Modificoodo as Hobos em umo to bela inte rno Para m odificar 0 conte6do de uma au m ais linha s de um a tebela in tema, utilize a ins t ru~ ao modi fy.
Sintoxe do instruc;cio modify
tn
Z
~ m
...
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] ]
onde: •
it e0 nome de um a tabelaintem a com au sem uma linh a de cabecalho.
•
va e uma area de tr abalh o co m a mesma estrutura de uma linha no corpo de i t .
• n e uma cons tante, variivel au literal numerico. •
c1 e c2 sao compenente s de i t.
•
exp uma expressaa logica envelveodo componentes de it.
e
conteudo de
Se from vo me forespecificada, a linha sera sobrescritacom 0 conteedo
d. linha de cabecalho.
afetari imediaumente a tabela interna mas, em vez disso, elase tomara efetiva oa pr6xima passagem do loop. Ao inseri r urna linha tkpois da linha atual, a 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 exemplo, suponha que voce esra. na terceira passagem do loop e ins ere urn regiscro antes da linha 4. Quando endl oop ~ executada, a nova linha se toma a Iinha 4, a l.inha 4 anti ga se toma a linh a 5 e assim por dian te. Sy-te bfx e incrementada em 1 ponto e a pr6xima passagem do loop processa 0 regisrro rece ntemente inserido. Set den tr o de urn lo op , voce inserir uma linha antes cia linha atual, a tabela sed novamente reinde xada em endlo op. D essa vee, entr etanto, sy-tebtx e incrementada par 1 mais a ntimerc de linbas.inseridas antes cia linha atu aL Da pr6 xima vez que ocorrer 0 loop, a linha depois da linha atual sera processada. Suponha, por exemplo , que voce insira na terceira pas sagem do loop uma linha an tes ds linha 3. Em endl oop, a nova linh a se torna a linha 3, a linha 3 se torna a linha .. e assim p ar diante . A linh a que voce acaba de processar agora ted um 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.
0
00 .
• Se i ndex n fo r especificada, n identificari a n6 mero cia linha que foi scbrescrita, • modify i t pede ser especificada dentro ou fora de 1cop at it. Se especificada fora, i ndex n devers ser especificado. Quando especifl .ada dentro, ind ex n sera,op cional. Se nao fa r especificada, a 1inha atual sed modificada. transport i n9 especifica quais compenentes devem ser sobrescritos. Sem ela, todos eles sersc sobrescritos . Com ela, sornente os compcnentes especificade s serac sobrescri tcs. 0 restante p ermanecerf inalterado. Especificar uma condicacwhere depois de transport l ng fara com que as componentes especificadas sejam sobrescrieos em todas as linhas que sarisfazem a clausula where. 0 lade esquerdo de ada parte de exp deve especificar urn componente de it . 0 mesmc componente pode ser espe cifi cado depois de transporting e em exp o VocE. nio podera utilizar modify it com where: •
Dentro de lo op at i t
• Com a adi~ao in dex A Listagem 12.5 m ostra urn pr ograma de exemplo que m odifica teadc de uma rabela interna.
EHTRAOA~
coo-
Listagem 12.5 Utilize modify pa ra sob rescrever 0 conte udo existente de uma ou mais lin has de uma tabela inte rne
1 report ztx120 S. • Z data: begi n of it occurs 5, fl 1i ke sy-tndex, 3 f2 , 4 end of it. 5
alpha (5) val ue ' -'BeDE' . 7 8 do 5 time s varyi ng it-f2 f rom al ptla+O next alpha+l. it-fl·· .. sy-index. 9 append 1t. 10 enddo. 11
6
1Z 13 tt-f2 • 'l ' . 14 modify i t i ndex 4.
15
0
. ~. ~
.........................................L..lL..lL..O.......................a...L.&. 402
I .I-
~I
I
I I
I 11 11 ...........
18
endl oop.
19
20 l oop at it. 21 ft -fl • 1t-fl .. 2. 22 llIOdify it . Z3 endloop.
• A linha 30 mo difica 0 coneea do do cornp onente da linha de cabecalho . f2, at ribuindo a ele urn.valo r de 'XI.
2'
• A linha 31 modifica todas as linhas n o corpo onde fl njo eigual a 10. Somente 0 valo r de f2 e copiado da linha de cabecalbc e scbrescreve as valores de f2 no corpo. fl permanece inalterado no corpo e na linha de cabecalbo.
25 ski p. 26 l oop at i t . 27 write: I it-fl . H-fl. 28
endloop .
29 30 1t -fZ • 'X'. 31 modify it t r ansporti ng f2 where fl <> 10. 32 33 skip . 34 l oop at It . 3S write: I it-fl . it -f 2. 36
W •
• As linhas de 20 a 23 executam urn loop por todas as linhas de it, colocandc cada linha, uma de cada vez, na linha de cabecalho . A linha 21 mu ltiplica po r 2 0 conteudo do cemponente da linha de cabecalho flo A linha 22 copia 0 conteudc da linha de cabecalhc de volta para a linha atual no corpo de it, sobrescrevend o-o.
16 l oop at 1t.
write: I n - n, it-f2.
.. .. .. •
O~ 12. lABIUS IH1WIAS AVAHIAOAS.PAmI
APREN oA EM 21 nus ABA P/4
17
•
Excluindo
0
conteudo do tobelo interno
Para excluir 0 conteddc de uma tab ela in tem a, voce pcderd ut ilizar as seguintes insrrugoes: •
endloop .
free
• refre sh
o c6digo na Listagem 12.5 produz esta saida: Sllol ~
• clear •
1 A
delete
2 B
3 C 5 2 5 , 2 A , B
Utiliza ndo free para excluir 0 conte udo da tabela inte rna Utilize a instru~ao free para excluir tcdas as linhas de uma eabela interna e liberar a mem6ria associada.
6 C 10 Z 10 E
2 X ,
X
Sintoxe do
instru~ao
free
A seguir, vejs a sintaxe da instruc;ao free. f ree it.
6 X 10 Z
onde:
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. • A linha 13 modifica 0 con teddo de it-f2, dando a ele urn valor de IZ' . t t-f l DaD foi modificado, enno ainda conterd 0 ultimo valor adicionado na tabela: 5.
• A linha 14 sobrescrevea linha 4 corn 0 comeodc da linha de cabecalho, alterandc f 1 para 5 e f2 para 2.
Os seguintes pont os se aplicam : • Todas as linhas sao exclutdas e toda a mem6ria urilizada pelo corpo. da tabela interne e liberada. • A linha de cabecalho, se exisrir, permanecerd inalterada.
. -.
403
i
~ . I.-I
404
I I"'I I I -I I -I I I I • I • •-.
I
I
. -.
.
- - -- .. - -- - -
-
DIA lH'BELAS INIDNAS'V"(ADAS. PARTE 1
'PIEND' 1M 21 DIAS"",.
Emboro c memoria para as tc belcs internes seja cctcrncflccmente 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
que quando a se ide for exibido para
0
0
fato de
usu6rio, tecnicomente seu
prograrno oinde noo tero sido finolizodo . Todos as recursos permcneee 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 ccn tevdc do tcbelc infe rno. Voce poder6 ltbe rcr a s tobelos Internes
antedpodomente colocondo as instruc;6es free
a
00
final de seu pro-
Utilizando refresh pa ra excluir 0 conte udo do tabela interno U tilize a instn1~ao refresh para excluir toda.s linhas de uma tabela interna, mas
deixe a memoria alocada,
Sintoxe do
instru~6 0
refresh
A seguir, veja a sintaxe da inStru~o refres h.
grama. contecdo do tobelc interne ser6 liberodo ante s de 0 usuc ric ver a listc e nco depois d isso .
r ef resh
tt ,
onde: •
Utilize free quando terminar de urilizar urn. tabela interna. A Listagem 12.6 mos tra como utilizar a instro~ao f ree.
ENruOA~
• T odas as linhas sao excluidas. T oda a m em o ria utilizada pelc corp o cia tab ela interna permanece alocada.
umc tobela interne e hbercr a mem6rio ossociado
• A linha de cabecalho, se exiscir, permaaecer f inal terada, U tili ze refresh quando quiser excluir to das as linhas, mas quiser pr eencher a eabela intema novamente. Por exemplo, se esti ver produzindo urn relat6rio de vendaspor departamento, voce podera preencher a tabela in tem a com todas as vendas de urn departamento, processar os dados e, em segu ida, escreve-los. E nrao, depois de r efre sh, voce poderf preench er a tab ela interna co m os dados do proximo depart amento, escreve-lcs e assim po r dian te. Se voce quiser pr eencher uma tabela imediatamente depois de [impa-la, refresh sera mais eficiente do que free ja que impede alocacoes des neces sarias
•
I' 15 fr ee 1t . 16 1f H[ ] is initial. 17 write: / ' no rows exist in it after free '. 18 end1f .
o co digc na Lisragem 12.6 produz esta saIda: IAIOA ~
1
2
euma tabela intema co m ou sem urna linha de cabecalho.
05 seguintes pontos se aplicam:
Listag em 12.6 Utilize a instru.;co free pore excluir tcd cs as linhos de
I report ztxl206. 2 data: begin of it occurs 3. 3 11 11ke sy- t ndex, end of i t. 5 s do ·3 ttees , it -f1 .. sy- t ndex, 7 Append ft . 8 enddo. 9 1D 11 l oop at it. 12 wri t e it-flo 13 endloop .
it
3
no rows exist in 1t after f ree
ANALISE ~ A linho 15 exclui tod as as linhas do tob elo lntem c e hbere 0 mem 6rio ossociodo .
de mem6ria. A Listagem 12.7 mos tra co mo utilizar a insrrucao re f resh .
ENllAOA~
Listagem 12.7 Util ize a instrur;o o refresh perc excluir tod cs as linhc s de um a tobe lc interne
1 r@port ztx 1207. 2 dat a: begin of it occurs 3. 3 11 11k@sy-t ndex, 4 end of it. S 11k!! sy-i nd@x.
s 7 do 3 t tees . t • sy-t neex. 8 do 3 times. 9 i t -fl· i * sy- tndex. lD append it. 11 enddo. 12
40S
-
II" • •
406
I -.""" .....-......-••-. __ ... - ... __ ...
-_ ... D~ IU A8El.\S INTEiHASAVIJl(ADAl, PAmI I
APiE .DA EM21 DIAS AIAPH
16
write: I " . l oop at it. write it-fl. endJoop.
17
ref resh it.
18
enddo.
13
14 15
Sintaxe da interna
Z
S
on de:
T
o c6digo na Listagem 12.7 pr oduz esta saida:
ANilJS!~ .
cl ear i t : cl ear t t[ ]
m
1 2 24 3 6
•
3 6 ,
_
e 0 no me de um a tabela intern a.
• Se i t tiver uma linh a de cabecalho, c1ear i t [ ] excluiratodas as linhas. c1ear it limpara a Iiaha de cabecalhc. • Se it nao river um a linha de cabecalho, as duas fortnas excluirac todas as linh as e deixario a m em6ria alocada.
loop interne aninhado.
• A linha 8 armazena 0 valor atual de sy-t ndex do loop enema. • A linha 9 cornelia a loop interne.
\,
Na linha 10, 0 mimero cia passagem do loop interne pelc mimero da passagem do lo op externo.
e mulciplicado
• A linha 11 adiciona cada linha na tah ela intema.
• A linha 13 cornelia uma n ova linha de safda. • As linhas de 14 a 16 escrevem
it
Os segu intes pontos se aplicam :
• A linh.a 7 ccmeca urn loop que e executado ues vezes. Ela con tern urn
•
cl ear quando utilizada com uma tabela
III A seguir, veja a sintaxe da instru~ao clear quando ut ilizada co m u ma tabela intema.
19 20 free it .
SAloA ~
i n stru ~ao
0
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 ou nao. Tabela 12.3 Efeito de clea r em umo to belo intemo
Instru4jGo
con teud o da tabela in terna.
• 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
cle ar i t cl ear it(
J
-Se it liver uma linha de cabe~alho
Se it nao IlYer uma
. limpor6 a linhe de cc becclhc
Exduir6 todos as lin has
Excluir6 todes as linhos
IInha de
cab~l h o
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 antes que a lista seja exibida. Isso faz com qu e 0 programa se tome mais eficienee.
o
programa na Listagem 12.8 ilustra a usa cia instru ci o clear com uma tabela interua. 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 : • Excluir todas as linhas de um a tabela interna e deixar a memoria alocada . •
,.
Limpar a linha de cabecalho (definir seus compone n tes para espacos em branco e zeros) .
1 report ztxl208.
2 data: begi n of it occur s 3, 3 4
5 6 it-fl-'X' . 7 append: it . i t . 8 -1t teen 9 clear it . de cabelia1ho 10 wr1t e: 'fl-' . it-fl . 11
"
fl , end of i t .
Ina
l i nha de cabet;aloo . 1ss i .. sendo l1mpar.!o a li nha
407
";.J
408
DlA12,TABEUS INltRNASAVAN~DAS, PART! 1
409
AP REN DA EM 21 DIASABAP/4
onde:
12 write : I I I . 13 l oop at i t. 14 write ie-n . 15 endloop. 16
n, fn e tn sao constantes, varidveis au lite rais n umericc s.
•
• exp e uma expressac 16gica envolvenclo a s componente s de
17 clear tel ] . 18 loop at i t .
Os seguin tes pontos se aplicam:
write it-fl. 20 endloop. 21 writ!!: I ' sy- subrc- ' , sy-subrc.
• Todas as adi~6es depois de t»), (bl e (c) sio opcionais . •
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 de l oop at it. Nesse case, exclui a linh a atual.
•
Se in dex n for especificada, a a-esima linha de it seri exclufde.
o c6d.igo na List agem 12.8 produz eSt41 saIda:
,,
flo
sy~s~bn:.
IHlJ.ISE ~
• A
it .
"serethente a: refres h it.
19
4
linha 6 coloca X n a linha de cabecalhc de i t. I
I
• A linha 7 acres centa du as linhas em 1tj -ambas tern I XI em f l .
• Se from i for especificada , as linhas serao excluidas comecandc com a i-esima linha. • Se to j for especificada, as linhas serac exclufdas ate a j-esirna liah a, 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 cabecalho de i t esd . limpa.
• Se t o
• As linhas de 13 a 15 produz em a safda, a fun de mostrar que a tabela inrerna ainda contem duas linh as.
• A expressao exp deve tel' urn componente de i t DO lade esquerdo de cada comparacao. POI'exernplo, se i t river as componentes f1 ef2, exp
• 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
pennanece inalterado.
DaO
for especificado com from, a ultima 1inha na tabela sera
assumida.
pcdera ser where fl • 'A' and f 2
c
I
B' .
A Ilstagern 12.9 mcstra urn programa de exemplo que exclui as dados de 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.
Utilizando a instruc;60 delete pa ra excluir a s linhas de uma tabelc.Internc _ Utilizando a inStnlr;ao del et e, voce podera excluir uma ou mais linhas de uma t abela in tern a.
Sinlaxe do lnstrucao del ete A seguir, veja a sinraxe cia instrucfc del ete. delete it
(a) [indeK n]
(bi [f"",
'J
[to j ]
(c) [where exp]
1 repor t ztx1209. 2 data: begin of it occurs 12, fl . 3 end of it , 4 alp ha(12) val ue ' ABCDEFGHIJ KL' . 5
6 7 do 12 t imes varying it-fl f rom alpha.+O next alp ha+L append i t. 8 enddc , 9 lD 11 loop at it . 12 write : I sy-tabix , u -n. 13 endl oop.
14 15 del et e it tn dex 5.
_
_
.
ITT
"'I~'- I :.
410
I
.~ .T-TT~I
• •~ I . . . . . .
T . ~ ... . . .
•
•
'!I! •
'!I! '!I! ~ ~ ~ ~ • • ~ •
D 5 F
6 G 7 H 8 I 9 J
writl!! : I sy-tabix . it-flo endloop .
2'
,
27 delete i t where fl between ' B' and ' 0 ' .
ID
28 s kip. 29 lo op at it . 30 write: / sy- ta b1x. i t - fl .
11 L
I A 2 B 3 C
end loop .
,
32 33 loop at it where fl between 'E' and 'J '. 34 delete it. 35 endloop .
D
5 F 6 J
36 37 sk1p. 38 loop at it . 39 write: / sy-tabix. i t - fl . 40 e.ndloop . 41 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. 46 endtt . 47 48 s ki p. 49 loop at it. 50 write : I sy- ta bix . it-fl.
7
,
8
L
A 2 F 3 J
I
,,
-.
5 L
,
1 A 2 3 L
sy-subre·
0
sy-tab 1x·
2
1 A 2 L
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 1 A
-
,
21 delete i t frtm 6 to B. 22 s ki p. 23 loop at it .
o c6digo na Listagem 12.9 pro duz est a sarda:
-
1 A 2 B 3 C
enetccp.
51 endloop. 52 53 tr-ee it .
•
11 12 L
20
31
•
,
16 skip . 17 loop at it. 18 write : I sy-t abix . it -fl .
Z4 25
•
D~lUABElAS IMTERNAS AVAH(ADAS. PAm l r
"m DA EM 21 DI A5 ABAP/,
19
•
0
conteedo da tabela interne.
• A linha.15 exclui a quiara liah a, removendo 'E' cia tabela. A sexta linh a se to m a a quinta,"a serima se lorna a sexta e assim por diante.
2 B 3 C , D
• A linha 21 exclui cia sexta linha ate a oitava linha, removendo G, He I
5 E
• A linha 27 exclui as linhas que tern as valores fl en tre B e ' 0' ) inclusive. Is50 faz com que a segunda., terceira e quarta linhas sejam
,
F
7 G 8 H s I
10 J
da tabela. A nona linha se coma a sexta e assim po r diante. I
excluidas.
I
'!If - ....
411
~ --
---- -.- -412
!
. ...I ....
-
"'[NDA EM 21 DIAl ABAP/4
D~ lUABEUS IIffiRNAS AYAll(ADAS, PAmI
• A Iinha 33 recupe ra as linhas que tern urn valor fl entre I EI e I J " inclusive. As linha s 2 e 3 atend em as crit erio s. A ins trucio del et e na linha 34 DaD tern quaisquer adiljoes, assim sendo exc lui a linha arual em cads passagem do loop. Is50 faz com que a segunda e terceira linhas
sejam exclufdas. I •
e executada ja que sy-subre e zero.
Ela exclui a linha 2,
removendo I K' da t abela interna.
Semelhante is insercc es, as exclusoes dent ro de loop at it Ilia afetarao imediatamence a tabela inte rna mas, em vez disso, se rcmarao efetivas na 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, suponha qu e vo ce est i na te rceira passagem d~ loop e exclui a linha 4. Quando endl oop fo r executada, a linha sera exclufda, a linha 5 se tornara a lin ha 4 e assim par diante. sy- t abix sen increm en tad a em 1 e a pr6xima passagem do loop processara 0 pr6xim o registro. .:Se, demro de urn loo p, vo ce excluir uma linhaa nU s da linha atual, a tabela sed no vamente reindexada em endloop. D essa vez, entretan to, sy- t abix e increm ent ada em 1 ponte, menos a ml mero de linhas exclufdas antes da linha atual. D a pr6x.ima vez que ocorrer a loop, a linha depois da linha atual sera pro cessada. Sup onha, par exemp lo, que voceexclua na terceira passagem do loop a linha 3. Em endloop, a linha 4 se tcm a a linha 3 e assim por diant e. sy- tebt x ~ incre mentada em 0 p ontes , resultando em 3. A linha 4 foi rein dexada para 3, sen do assim sed pr ocessada na pr6xima passageII!' do loop.
Criando listas dos 10 melhores utilizando append sorted by Imagine que lh e seja solicit ada a criayao de urn rel.at6rio dos 10 melhores rep resentantes de venda de su a empresa. Panindo do p res supostO de que voce tenha uma mane ira de obter 0 total de vendas de cada representante, sera possivel executar uma das seguintes a~6es : • Acresceote todos as rep res eotantes e 0 tOtal de suas vendas em uma tabela intern a. • C lassifique -os em ordem descendente par vendas. • Escreva os 10 m elhores.
Essa parece um a maneira 16 gica de prcceder. Enrretanto, a utilizac;ao da instru~ao append sorted by com fr equ encia pcdera produzir 0 mesm o res ul-
tado e ser duas vezes mais eficiente.
.
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 apenas tres linha s, bi nary search foi incluida para um a me lhor exem plifica~o. A linha 2 e correspondente, entaD sy-subre e configurada a zero e sy-tebt x econfigurada a 2.
• A linha 45
I
~
A seguir, veja a sintaxe da in srru cio append sort ed by.
Z
append [11'0 to) it sorte d by c.
S
onde:
m
•
T
• wa ~ uma area de trabalho com a mesma estrutu ra de uma Iinha. cia tabela
t teo nome de uma tabel a interna.
interna. • c
e urn componente de f t .
Os seguintes pontos se aplicam: •
Se "fa to nao fo r espec ificado, a linha. a ser acrescentada sera obtida a partir da linh a de cabecalho.
• Se wa to fo r especificado, a Iinha a ser acre scentada sera obtida a partir da area de tra balho wa• • So me nte urn componente c pede ser especificado. , A instru~o append sorted by obtem uma linha da area de trabalho e a insere na tabela interna no local em que pertence na o rdem de clessificacao. Ela tern duas propriedades in comuns : •
0 mi m ero de linbas qu e pede ser acrescentado e limit ado pelo valor na ckusula occurs. Por exemplo, se a clausula occurs for 10, urn 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 ser adi ciooado em um a tabela intern a.
•
Someote c1assifica em ordem decrescente.
o efeito rea1euma -listadosn primeiros" onden e o nu.meronacliusulaoccurs. Com cada append, 0 siste ma pesq uisa 0 conteudo da tabela existente para determinar onde se en ema a nova linha. A ordem de classificaiao edescend en te po r c. Se existirem menos linhas na tabela interna do que a quantidade especificada p orn na c1ausula occurs, a linha ted a o rdem de classifica~ao. Se existirem n linhas na tabe1a intema, a linha sera ins erida pela ordem de classifica~ao e a ultima linha sen descanada. Se 0 valor em c ja existir na tabela interna, a nova linha sera sempre acrescentada depois das linhas existen tes que tern 0 me~mo 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.
413
-414
APR!.'A EM II DIAl ABAP/l
DlllUABB..\I INTElHAl AVAlI(AOAl, PmEl
A Listagem 12.10 mostra urn prognma de exemplo que em. uma lista dos tres melhores representantes de veada.
mRlllA~
•
• 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. A tabela interna esti vazia, entao a linha e simplesmente acrescentada (veja a Figura 12.1).
1 report ztxl2 10.
2 data :
5 6
7 8 9 10 11 12 13
of it occurs 3, sales type p decimals 2. name(lO} • end of it .
b~ 1n
• it-sal es
• 100.
i t-name
• ' Jack' .
Figu rg 12 1
append it sorted by soles
Quando nenhumo I;nho exis1e no lobe/a
sales
nome
primeil'D /lnl1o Ii simple.smf!t11e
ocnsantodo. it-sales
• 50.
i t -name
• ' Jfll'.
linho 1
append it sorted by sales .
"
• 50 vem depois de 100 quando a orde m de c1assifica~ao e decresceate, entio a Iiaha 13 insere a nova linha depo is cia exiseenee (veja a Figura 12.2).
\
i t - sal es • 75. 1t -namt • ' George' . append it sorted by sales.
F igura 12 2 A segundolinha e
it-sales
• . ZOO .
inserido no s~iifncjo comto de do u mca¢ o, de modo que elo venne depois
i t-name
• ' Gina' ,
do primeiro linno.
Iinho 1
append it sor ted by sal es.
2
26 27 it-sales • 100. 28 i t - naJnl!! • -' Jeff ' . 29 append 1t sorted by sa les .
30 31 loop at f t. 32 write: lit-sales , it-name. 33 endloop.
o c6digo na Listagem 12.10 produz esta saida: SAiDA~
linho de ecbecclhc
Intemo, enll50 0
append it so rted by sales .
15 tt-setes • 150. 16 1t-nillll!: • 'Jane'. 17 append it s orted by sales . 18
19 20 21 22 23 24 25
As Iinhas de 2 a 5 definem uma tabeh. intema com um valor occurs de
3. Se essa tabela interna for preenchida ucilizando append sorted by, o mimero mhimo de linhas nessa tahela intema sera Iimitado a tres.
Listagem 12.10 Utilizando append sorted by para localizer as tres melhores representcnt es de vendo
3
415
200.00 Gina 150. 00 Jane 100.00 J ack
•
150 vem antes de 100, entao a linha 15 inse re a nova linha ant es da primeira linh.a. A tabela int ema agora contem a mimerc maximo de linhas : treS linhas (veja a Figura 12.3). append it sorted bysoles
Fig ura 12 3 Dessa vw. 0
linha de ccbecelhe
seqiifncio de
dossiliClJ'¢o dita que
tt
o novcr linho dfNe ser inserido ontes do primeiro.
150
Jcne
corpo
linho 1
150
Jone
2
100 - Jode
3
50
Jim
•
_............--_-..- -------
• • • ma.--_416
_ -- -
- -
-
-
-
D~ ILTABruSIII1UIlASAV"~Al, PARTE 1
"RENDA EM21 DIAS . " P/4
Nao misturar append sorted by com quaisquer outras ins truc;6es que adicionam dados em uma ubela interna (como insert ou append) . Se voce preencher ; t com append sorted by, esta deved sa a Unica. io.stru~o a .ser utilizada, Misturar essas instruC;6es resultard em comportamento imp revisfvel.
• 75 vern depois de 100, en tao a linha 21 insere a nova linha depois da segunda Iinha, fazendo assim com que a nova linha se torne a terceira linha. A t erceira linha deveria se tamar a qUafta, mas it somente pa de armazenar tres linhas, enesc a quart. sera descartad..a (veja a Figura 12.4). • 200 vern antes de 150, entio a linha 25 a insere antes da primeira linha. o restante das lin.has edisposto abaixo e a Ultima linha e descartada (veja a Figura 12.5). Fi gu r a
append sorted by sera mcls ehctente quand o voce estiver ccrescentondo uma linhc per ....ez em umo tabe lo intemo. Se voce j6 fiver os dodos em uma tabela de banco de dodos e simplesmente quiser localizer as 10 vclcres superiores sere mais efiden te inserir as linhos utilizondo uma opera¢o de array e, em segu ida, a d ossificot;oa. (Para abter jnformo¢es sobre as cperccoes de arrey, ca nsulte a Dio 13, "Icbelcs intemos ev encodes, Porte 2· .)
append it sorted by sales
12 4
Esso lin"o se eeeeee
dapoi5 do segundo. ent60 ala, inserida 16. Atobe/a inferno pode onnazenor um m6Kimode 1r& linhos. ent60 0 quam linno Ii desccrtodo.
linno de cebec;olho
it
I I 75
~
George
\
Jinho 1 150
Jane
2 100
Jaa
3
50
5
Dena vez, 0
nOva
nOoocrescentado \ porql.Je~63 I e it ja contem
I 3 linhas
Jjm
,
--<F la" rn 1 2
,
,
..,
append it sorted bysoles
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 en A seguir, veja a sintaxe da instnlc;ao co11 ect.
Z
~ m
exis1enfes 560
desccrlodo.
collect
I
I;nho dtNev;r prim eiro. As };nhos disposlas o~ e a ultimo Iinha Ii
Preenchendo uma ta bela interna utilizando
linna t 200
Gino
2 150
Jane
3 100
Joclt
T
1..5£ t: :!iri£ J
col lect [wa '1nt o] it.
onde: •
i t ~ uma tabel .. intema.
• va eurna area de trab~o que tern a mesma estrutura de it.
Os seguintes pontos se aplicam:
• 100 ve:m depois de 150, mas ja existe 100la. A linha29. portaato, tenta icserir a nova Iiaha depois do valor existente de 100. 1550 a tornaria a linha 4, ent.ao a linha nio einseridaabsoiutamenre (veja a Figura 12.6).
• Se 11'0 ; nto for especificado, a linha a ser coletada sed obtida da area
Fl g u r n 12 6
ap pend it sorted bysales.
&so novo finho seguim todos as linhos eJristente5 que tern a
linoo de cab8l;0lho
• Se 'fiO into nao for especificadc, a tabela inrema deveri ter uma linba de cabecalho. A linha a ser coletada sed abtida da linha de cabec;alho para. it.
me.smovalor. IS50 0
Iomorioa linho 4, en160e/o noo e Inserido.
il~
...
, \
co<po
Iinho 1 200
Gino
2 150 3 100
Jane Ja, k
\
,
I t'IIio ocrescenlodo
I
-<-
,I
de trabaIho expljcica we. Nease case, a Iinha de csbecalhc da tabela . interna sed ignorada, se existir.
Quando collect for executada, 0 sistema formad. uma chave a partir dos campos de chave pad rgo na irea de trabalho. Os camp os de chave padcio sao as campos de can,ctere (tipos c, n, d. t ex) . PortantO, a chave sed composta des valores ,de codos as campos do tipo c, n, dJ t e x. Nio imp oru se estio urn . ao lado do outro, au se estaa separados urn do outro por outros campos.
417
sp-5 - 5· I
i
418 I APR'NDA ' M11
iI
DIAS ABAP/4
o
sistema eneso pesqu isari 0 corpo da tabela interna quanto a uma linha com a mesma chave daquela na area de trabalho. Se nao localizer uma, a linha sed acrescentada ao final da rebel a. Se localizar uma, os campos numericcs (tipos i, p e f) na area de trabalho serao adicionados nos campos corre spondentes da linha localizada. A Lisragem 12.11 ilustra esse conceito. Li sta g em 12.11 col le ct combina as linhas assim que s60 odicionedos em umo tobela intemo 1 report ztx1211. 2 data: begin of it occurs 10, 3 date type d, 4 tot_sahs t ype p decil11als 2, n!ll! (lO) , 5 nlf.lt_sahs type 1 val ue I , 6 end of i t . 7 8 9 f t -date . • ' 19980101'. io 1t~tot_sales • 100. • ' Jack'. 11 f t -neee 12 collect it. 13 14 i t - dat e • '19980101'. 15 it-tot sales · 200. 16 1t.na~ • ·J 1m' . 17 coll ect i t . 18 . ' ' 19980101'. 19 f t -dete 20 1t~tot_sales • 300. • 'Jack '. 21 it-name 22 ccl'lect it. 23
24 it-date 25 i t-tot _sal @s 26 tt -neee 27 collect it. 28 29 1 t ~da t e 30 1t ~ to t_sal es 31 it- name 32 collect i t. 33 34 ft ~date 35 1t - t ot _sahs 36 it-name 37 coll ect i t. 38 39 i t - dat e 40 it-tat_ules
'.
• ' 19980101'. • 400. • ' Jack' .
• ' 19980101 ' . • 500. • ' Jim '.
• ' 19980101' . • 600. • 'Ja ne' .
• '19980102' . .7110.
par te da chave padrlo -nao ! parte da cheve pa dr~ o pilrt@ da ehave pad r~ o -nao ! parte dl chave padra o
,
I
D ~ IUAB' lAS IffTERNAIAVAJlIADAS,PARTE I
41 tt-neee .2 eel teet it .
so
'Jack'.
"« loop at i t . . 45 46
wr ite: I it-date, endloop.
a
1t ~tot_s a l e s ,
tr-neee, tt- num_sales.
codigo n a Listag em 12.11 produ z est. saida:
19980101 19980101 19980101 19980102
800. 00 Jack 700.00 J im 600 . 00 .Jene 700.00 J ack
3 2 1 1
• As I.ioha.s de 2 a.7 definem urna ta bela interna com quatro componenres. Dois sao do ripe caractere (dat e e name) e dois sao do tipo numeri co (t ot_sal es e riurn_s ales ). A chave padrao ~J portanto, comp ost a dos comp onec tes date e name.
• As Iinhas de 9 a 11 atribuem valores aos componenees de linha de cabecalhc dat e, tot_sal es e name. nurn_sal es ainda tern urn valo r padrio de I, arrib utdc na Iinha 6.
• A linha 12 pesquisa 0 corpo de it q u anta a urna linha que tenha a s mesmos valores em date e name (campos de chave padrio) daqueles na linha de cabec;alho. A tabela interns esta vazia, entia nao ha correspondsncia de linhas. A linha de cabecalho e, portaotO, acrescentada a "bela intern. (veja a Figu ra 12.7) . f ig " r " J 2 7 $@oChov.podr6o tl60 for/ocolizodono corpo. 0 /inno sero oc:rescentodo. A chave podmo ecompostc d@ Iodos os compos
collect it. ~n ho de eebe celhe
nOo-numericos, @nt6o n@ss!& diogroma, elo
comi!SpOlldea c:ombino¢o de date (prim@lrc compoJ @ name (ten:eiro compo).
•
A linha 17 se comporta como a linha 12. A eabela intema te rn urna
linha, mas as valores nos campos date e name nao sao correspoodentes, entio a lioha de cabecalhc eacres centa da arabela interna (veja a Figura 12.8).
419
._~==----=-=-===-==-420 [ APRENDA EM 21
=
-
~=-.---~------
Ii
DIAS ARAP/.
a num_sales (veja a Figura 12.11). • Na linha 37. os valores em dat e e name (campos de chave pamo) cia linha de cabecalho nao correspondem a quaisquer linhas em it) en rso um~ n ova linha eacrescentada ao final ciatabela (veja a Figura 12.12).
entOo em /jnho tcmbem e
ocrescentcc/o.
W'M~ 'J~_ Wg\i;~ [!8~~I~
.'
200'
I) ;
F igura
~:<;"'~~ ;,::)~. "
• A linha 22 pesquisa a tabela intem a quanta a uma linha qu e tenha ' 19980101 ' no campo date e ' J ack ' no campo name. A linha 1 e a correspondente, eneso os campos nume ricos sao junt amente adicionados. 0 campo tot_sal es d.a linhade cabecalho contem 200. Esse 'valor eadicionado no campo t ot_sales na linha 1, dando urn total de 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 linha 1 e atualizada com esses valores. 0 conreudo da linha de ca-
a
becalhc permaneceinalterado (ve]a Figura 12.9).
correspondenles do ~rimejro
linho de cobei71lho
Iinh a.
odicionodos nos
compos correspondentes do
primeiro Jinho.
coiled it.
linno de cabeljOlho
compos' corresponc/entes do segundo linno.
Flgu rn 12 1 2
A cnave podroo n60 CCHTesponde com nenhumo "nho cle S5CI ent60 urno novo linna e ocrescentado.
coiled it.
linha de c:abel;olho
~ ~~mm
l?!.?J"~ ' 2
~ ; 2!lO~ ~'&t
l!SIl
~ ~~ • A linha 42 tambem faz com que uma nova linha seja acresce.otada a tabela internal jii que os valores em date e nameDaO correspondem com nenhuma linha de it (veja a Figura 12.13).
.y
aos campos numericcs da link localizada (veja a FigUJ:' 12.10). Novomente, a chcve podroo corresponc/e com a primeirolinho do lobe/a. Os compos numericC5 no area de troba/ho sec
Dessc vet, a chove pac/reoCOfTesponde com a segundo linho do tobe/o. Os campos numencos no area de trobolho s60 oc/idonadosnos .
+
+
• A linha 27 procura par uma linha com uma data 119980101 1 e urn nome ' Jack 1 • A Iinha 1 e a correspond ente, entao 0 conteudc dos campos numericos (tot_sales e num_sales) nalinha d e cabecalho sao adicionados
Fl g u r n 12 10
11
~ S~®:.J
\J9,9Jtl§jJ }oo'
compos
12
vez.
coiled it.
F ig urn 12 0
I
• A linha 32 e correspon dida na linha 2 e adiciona 1500 I a t ot _sa1es e 1
Na'lomente, 0 chave podrtion oo e focolizoc/o no tabelo,
Dessc vez, 0 chcve pac/r6o corresponde com 0 primeiro Iinho c/o lobe/a. Os compos numericos no 6reo de trobo/ho s60 odicionodos nos
- - - ~ ~- - -
DIA lHABELlSIKTlRNAS AYAH\ADAS, PARTE 1
:
collect it.
F igurn 12 8
- - ·i'
F lg urn 12
,~
collect it.
/J.5 chaves pac/roo nevemenre nee
corresponc/emcom nennumolinno, enroo oulm Iinho Ii
eellect it.
ccescencee.
,
+
,.
ccrpc
~@t<@
e§@
, · 8 00 ·~
~~
'200"
~ ~
3
,
=i
,__4~
~~'i~~Ff .'
~\~;::~ 't~{
~ 'i<i!t~
~>~,'~ ~ ,i,~.1~
421
E c c ... c .••.• • . • • • • • • • _ 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 tod e s as linhos deveriio set odidonodos com a usa de CD11ect. Voce
noo deve combiner coll ect com append au com quolquer outre
=
"i'
- ....
" "
II
D~ IHABEUS IHIDHAS AVAII(ADAS, PARTE 1 I
• U tilize append sorted by para criar Usus dos 10 melhores em vez de acrescentar linha par linha e, em seguida, classificar.
j
• Utilize coll ect pan samar contagens e totais dentro de uma tabela intema amedida queestiver sendo preenchida. Essa inStnleraOtambem pode ser utilizada para garantir a exclusividade de todas as entradas.
instrvC;60 que od icion o dodos em umc tabelo intem o. Os resultados 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
collect
e modify
.• . t ransportin g fl f 2 • . " onde 11 e f2 sdc
compo s rurrnericcs so mente (compos de chov e noo podre o).
Resumo • 0 operador de corpo de eabela proporciona UIIU maneira eficienre de eesnr quanto a. existencia de dados, comparar duas tab elas intemas pan igualdade au duplicar urna tabela int erna.
• 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 o tamanho cia clausula occurs em sy- t occu. •
Para cop iar uma pane de uma tabela interna de uma pan. outra, utilize append 1i nes of au i nsert 1i nes of .
• editor-cal l exibe 0 conteudc de uma tabela int erna em urn editor. Permite ao usuariomodificar as dados e etambemuma uti! ferramenta
- =- - ---- -'-
IFa~a
Utilize a instn.u;60 free 00 finol de seu prog romo porn todas as tob elas intemos. Essa instru~o ir6 llbemr explidtomente 0 mem6ria q ue noo sere mois vtilizado no mo menta em que 0 usuerio estiver visualizondo a sardo. Utilize 0 operador de corpo de tabelo perc tester 0 existence de dodos. Utilize a irutru c;c o oppend sorted by qua ndo crior listos dos 10 melbcres, a menos que a listo je existo e precise apenos se r d os5mcqdo .
Nao acrescente ou insiro a s linhas, umo par vez, se elcs podem ser processodos como urn grvpo com 0 usc de insert 11nes of ou append 11nes of.
de depura~ o. • in sert adiciona uma linha em qualquer posierao de uma tabela intema. 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 especificada util..izando urn Iodice ou pode operar na linha atual dentro de urn loop. Utilizando a chusula where, voce poderf modifica.r 0 ccneeado de muitas linhas . • defet e remove uma ou mais linhas. Quaado utilizada dentro de urn 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 cabec;alho, todas as linhas serio exclUldas. clear it[ ] sempre exclui todas as linhas de it. A mem6ria da tabela interna permanece aloca&. • r ef res h sempr e exclui todas as linb.as e dew a mem6ria alocacla. E eXatamente equivalente a c1 ear 1t [ ] . sera ut ilizada se a tabela interna tiver que ser novam ente preenchida com dados. • f ree i t exclui fodas as linhas de 1t e libera a me m6ria. Deve ser colocada no programa imediatamente ap6s 0 termino do processamento da tabeIa interna.
P&R
o
Nest e capitulo, aprendi vdrias maneiras de realizar tarefas semelhantes. No ABAP/4, parece que sempre existem muita s maneiras de fazer a m esma coisa, Estou apenas apre nd endo. C onsigo me lembrar somente cia. existcncia de muitas maneiras de se executar alga. Por que mio se mostra apenas a melbor maneira e simplesm ente se esquece 0 resto?
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 aqui : 1) eficiencia e 2) compreensao do c6digo existen te. Devido aquantidadede dados que reside em urn sistema R/3 J a eficicncia ea principal preocupa!rao em programas AB AP/ 4. Voce deve se esfon;a r em utilizar a fo r ma mais eficiente de cadainstru~ao em urna d eterm in ada situ a!rao. 1S50 pode resultar em melhoras drasticas de desempenho, nao some nte para seus programasJ mas tambem para a sistema in teir o. E comum ter que regravar o codigo depois que 0 mesmo alcan~ar a produ ~o, ji. que tera
423
424
APREN OA1M21 OIAS AUPI4
urn grande impa cro no desempenho do sistema. Quanta ao segundo ponte, as programadores freqa eceeccec ee gastam mais tempo Iendo a c6dig o existence do que criando urn novo ccdigo, 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
I
pode -se chegar a uma det ermina da salda.
Workshop o Workshop oferece dues maneiras de voce verificar 0
que aprende u neste capitulo. A se~o Teste:oferece pergunt as para ajudar a solidificar seu entendimente 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
13
e ao exercfcios no Apendice B, "Respostas as pergunus e aos exercfcics".
Teste
Tabelas internas avan~adas , Parte 2
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 operariam na linha da hea de trabalho ou na linha indicada po r sy-tab1 x? 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 ?
Exerdcio
Q bjetivos do capitulo Depais de coucluir este capitu lo, voce sera capaz de:
1
• P reencher uma t ahela intern a a partir de uma tabela de banco de dados utilizando as estru turas mais eficientes
Leia a coateadc de ztxlfal em uma tabela interna (utilize select i nt o t able). Em seguida, modifique a coluna 1andl, de modo que a terceira linh a cont enha ·US' (utiliz e modify transport ing where). AIem disso, modifique as regices, alcerandoMA para TX (utilize modi fy transporti ng Where).
• Executar 0 processamentc de inte rruPIia.o de controle ern tabelas intemas utilizando at e on change of
Preen che ndo uma tabela interna a parti r de uma tabela de banco de dodos
!I 'l
I
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 de clados se dividem em duas categorias:
• Selecionar mdltiplas liahas diretamence para inte rna
0
corpo de uma tabela
.1IlI. . . . . .lIIII. . . . . . .lIIII. . . . . .lIIII. . . . . . . ._ ...._ ..._ ....
426
. ._ ......
. ._ .....~~_ --..___ __ _
_
_
-
-
-
~
-
acrescentar (append)
Seleciona ndo multiples Iinhas diretamente para uma ta be la interna Para selecicnarmulciplas linhas diretamente pan 0 corpo de uma tabela intema, utilize aa di!fao in to tab l e da instrucfo sel ect. Eta obtem as linhas selecionadas e as coloca no co rp o d e urn a tabela intema com urna tini ca operacfc conhecida
como oper:a!fio de array. Nenhuma area de trabalho sera utilizada, nem mesmo sera necessaria.
NO YO..... Uma opertJ!;oo de arroy correspo nde a qualquer instruc;60 que executa ume TrulO " c cerccsc em multiploslinhas de ume tcbelc interne, em vezde ume unice linhc de coda VeL h ccerccses de arroy sao sempre mois eficentes que as operc~6es de umo unica llnhc.
~
A seguir, veja a sintaxe da adiliaO 1nt o tabl e da instruljao sel ect.
III
fa) select • (b) s~ll!!c't 11
Z
.
/2 . from dbtab 1nto [campos eor re spcndent es dl!!] t abI e t t .
on de:
,. dodos diretarnente pa ra umo tabe lo inferno
,
re port ztx 1301. ta bl es ztx l fa 1. 3 dab i t l1 ke ztxl fa l occurs 23 ""ith header- li ne . 4 -nllo cod1fica urra enesetect S se l ect'" f ran zt xl fa l i nt o tab le i t . 6 l oop at it. ""ri t e: / 1t-lifnr , it-nallll!!l. 1 endloop . a I 10 select • fJ'Olll zt xlfal into tabl e it 11 whl!!re 1i fnr between ' \12 ' and 'V5' . 12 s kip. 13 loop at i t . 14 ""Mte: /1t ~1i fnr. it- name1. 15 endloo p. 16 free It . I
o c6digo na ListagemId.I produz est> safda: IArDA ~
VI 1000 1010 1020 1030
1050 1060 1070 VIO V6
•
dbtab ~ a nome de uma tabela de banco de dados.
va
•
f1 e fZ sao campo~ dentro de dbt ab.
V12
•
it
e0 no me de uma t abe la interna.
Os seguinres pontes se aplicam:
V1l 1040
IOSO 1010 2000 VI
V,
•
it pede tee uma linha de cabecalho.
V3
•
O ut ras adilj6es, como where e order by, podem vir depois de ft .
VS
•
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.
A inStruljaO select into tabl e coloca to das as linbas selecionadas diretamente no coepo de ft. Em prim eiro lugar, a coareado da tabela intema existence edescanado. A Listagem 13.1 contem urn program a de exemplo que
utiliza sele ct i nt o tab le.
--
OORADA'" Ustagem 13.1 Este progromo l~ as [inhos de uma te bela de banco de
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 .
Sintaxe da adic;oo into t able da instruceo se ject
-
O~ IH ABELlS umR HAS AVAH\AIlA~ PARTE '
APREN OA EM 21 OI AS ABAP/4
• Selecicnar uma tini ca linha pan u rna area de trabalho e, em segui da,
_
V4
V1 V2 V3 V4
VS
Code Now, Specs l at er l t d. Parts Unlimited Industrial PUAlPS Inc . Chl!lllical Nation Lt d. Chic kenFe~d Ltd. The Bit Bucket Me:nory tane Ltd. Fl ip My Swit ch Inc . Duncan's Mouse Inc . Anna Banana Ltd. Smile When You Say That ltd. Wei ner Schnl ttsel Inc . Saur kroute n Mot herboards Inc. Sil icon Sandwich Lt d. Consune Inc. Moni to r s and Marl!! Ltd . Quanti ty First Ltd. Over Pri ced Goods Inc . Fl uffy Bunnies l t d. HoD 1ike a Cow Inc . Wolfman Sport Accessories Inc . Tile Breakfast Club Inc . Over Pri ced Goods Inc . Flu f fy Bunnies l t d. Moo like a Cow I nc. Wol fman Sport Acces sories Inc .
427
428
APlEMOA EM21 DIAl AUPH
• A linh. 5 recuperA todas AS Iiahas a partir da tabela de banco de dado, zt xlfal e as coloca diretamente no carpa cia tabela interna it.A linha de: cabecalh o nao
e utilizada e seu con teedo perman ece inalte rado.
• A linh; 10 e semelhante alinha 5, anao ser pelo fate de que elaapenas recupera a s mimercs dos fabricantes entre V2 e V5. a conreado existence de i t
e descartad o antes de ser preenchida.
Figu r a
13 1
A tebelade banco de dodosztx1302 contem Ires compos: f1,/2. f 3. f1 tem urn linico byte, f2 fem dois bytes e f3 /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 dos ciclcs a partir do servidor de banco de dados pua 0 servido r de aplicativo.
Figura 13 2
* faz com que todos cs compos ~;om
~.
Nco utilize order by com select into table. Em vez disso, utilize
sort no tobelc intemo.
Os campos que voce seleciona devem se ajustar na tabela interna Imagine este exemplo: • Uma linha
erecup erada de dbt ab.
• Urna linha e aloc ada em t e. • A linha de dbt ab 6 mo vida, byte por byte, para a nova lioha em it.
Cada Iinha de dbt ab e movida, byte par byte, pArA urn. novalinha de it, que e exatameate igual a atribuir uma St ring de campo para OUtra. H oi som ente uma diferenca entre esse procedimemo e uma atribui~.io de st ring de campo : dbtab pede ser mais curta (em bytes) que i t, mas cao pede ser mais longa que it. Se for mais longa, urn dump curto (erro SAPSQL_S ELECT_TAB_TOO_SMALL) ocorrera. Os tipos de dados e comp riment os de cada campo de envio em dbta b devem corresponder com 0 campo de recebimento em t t . Quaisquer campos remanescentes em it sao preenchidos com valores iniciais (espacos em branco ou zeros). As figuras de 13.1 a 13.4 ilustram esse ponto.
selecionod04 em m e,", do tobelo de banco de dodos ztx1302. f /es se aiustarn exatcmente em coda Iinho de
tt.
{6 que a estruluro de i
13
~WJirt.~? ~~~~?1~{;i~~ '~~.,,,,~: .<. :~..zr-LT2~~-"':~ ~'-"''''
t
3
Nesse exemplo, somente os dois primeiros compos sea seJecianodos do tebela de banco de dodosztx1302 pa re um totel de tr~s bytes. Eles 56 0 co/ceodos byte porbyte nos primeiros iris bytesde ceda linha de tt .
,iii COIpO
n
coda hnhc de :tx1302
cofTesponde com a estrvturo do tabala de banco da dodos.
Fig ura
tables ztxl302. . dati it l ik e ztx1302 occurs s .
d·. i t
12
13
12
f3
torno-se umo linhc no corpo de it
. .-
tab les ztxl302 . dati it l1te ztxl302 occurs 5.
~~2~~f2~'1iitjn~(t~ "-~'"t-i"'b"1_ ')·"!~1U~-~'"'1 ', .~~:r.-~~.;'~ ::..:;. !-'r.-~~.,.r.--»=~~~~~
corpo de i t
fl
f2
f3
2 compos de code linnade lotxl302 tcmem-se uma linha no cerpo de 1t
'"
,:>..:oIo~ ·i ni~~j~ pcIar6o-_-; -
i (~,s ~~~ em· ~.~. ~ ~~J
_L.._ _ _ 430
~
_~_
___
__
~
_
__
1 2 3 4 5
uma ordem diferente
doqvelo em que
report ztx1302. tables ztxlfal. data i ncl ude structure datil.:
6 I
oporecem no 1a~1o
intema. tssc fonS com que as dodos flquem donificodos
quando colocodos byt. por by1e em coda linhode t t. ft -!I recebe 0 prlmeiro byte de/2
ett-JZrecebeo
ultimo byte de f2 e um by1e de /I . \
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 descreve ~ restrir;oes com as quais voce ir.i se dep arar.
Quais campos Tcdos csccmpcs no tobela de
banco de dodos
Restrlsoes
/ 1 do tobelo de banco de dodos
pelo menos o mesma
A tobela Interne deve cc rneccr com urn compo semelhante a /1 cu ter ope nos tim compo e ele deve ser semelhon te 0/1.
As lisragens 13.2 e 13.3 ilustram esse conceito.
..
b!gin of i t occurs 2. ztxlfal. fnvoice_amt type p, end of ft .
VII VI'
DE_ ..97 OE
14
V8
DE
03
Vll DE V12 DE VB DE
A tcb elc intem o deve conter
quontidade de campos que 0 tobela de ba nco de dodos e eles devem ser seme lhontes 005 compos do tobelo de banco de dodos.
,.
431
o ccdigo n a Lista gem 13.2 produz est. saIda:
sao selecionados?
Sel ect / 1
.-.
~....-..
8 select ... from ztxlfal fnto tab1l!: it where hndl .. ' DE' . 9 l oop at it. 10 write : I it-lifnr, it-landI, it-regfo, ·ft-1 nvoice_ilJl't. 11 endloop. 12 13 skip. . 14 select lifnr land; regi0 frtllll zu:1fal into table it wheN! landl .. 'DE'. 15 loop at ft . 16 "rite: I ft-mandt , tt-I tfnr, it-landI, ft -rtg1o. 17 endloop. 18 free ft .
Tabela 13.1 Regros para a utiliza «;60 de select com i nto t able
Sel ect *
...-..
ENTUDA'" Lista g e m 13.2 a que acontecer6 sa as estruturos de tcbelc diferirem ,. quando da vtilizol,;oO do instruc;oo sel ect -tnto
FIgura ]3 4
Instruljao
-.J<_ ..
D~ lU AiElAS lllTERNASlYAH(AIlAS, PAm2
A/ REN DA EM 21 DIAl ABAP/4
Novomente. cs dais primeiros campos sao sefecionodos do Icbelo de banco de dodos ztx1302 mes,. eessc vez, em
.'
_
INluSE~
o o
o
07 . 14 03
• A linha 3 defin e i t como se tivesse todos os campos de zt xlfa l da estrutura do DDIC, mais urn campo adicional. • A Iinha 8 seleciona rodos os-campos de ztxlfal. Eles preenchem 0 ccmecc de cads linha em i t. Invoi ce_amt ! configurada como zero . • A linha 14 selecions Ii fn r land I e regt 0para a primeira. parte de cada 1inha de it. En rretanro, it comega com eandt, nao lifnr, porque 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 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 co loco r mois campos em umo tabe lo interne dos que j6 existern nessc
lobelo 1 report ztxl303. 2 tables ztxlfal. 3 dat a: begin of it occurs 23, 4 l1tnr l ike zt xlfal· l 1f nr . landl 11ke ztx l fa l - la ndl . 5
~
o c6digo na Listagem 13.3 produz a saida como
de uma unico atribui¢o pare 0 linho lntelrc , sendo ossim cd iciona overhead a instru¢ o sel ect. Voce dever6 utiliro·1a somente qua ndo necess6rio.
estreita dema1s.
O s seguintes pontos se aplicam: • A ordem des cam pos de envio e de recebimento ni o tern impcrdncia, a qu e pod e ser vista na
Figura n .s,
•
Os campos de envio que nso t~m urn campo de recebimento correspendente sao descartadcs.
• Os camp os de recebimenro que DaO tern um camp o de envio ccrrespendent e permanecem inalterados .
Fig"'" 13 5
Esm dump OJrto ocone quando vod t xectlttl' c ztx1303 de relot6rio. use e eeerece Qvondo voc~ seleoono mois compos do que a quontidode que SI! oiusto no Iobe-Ia interno.
A Listagem 13.4 mostra as utiliza~6es eficientes e ineficientes dessa adi~i.o.
fNTUOA.... Listagem 13:4 Utilizendo e edifice corresponding fi elds para ,. preencher tcbelcs internos e pcrtlr de ban co de dodos
• A linha 3 define uma tabela interna que tem dais compcaentes. 0 comprimento total de 1t
corresponding f iel ds executa uma otribu ic;oo por campo, em vea
"esse I Wll cainpo com 10 cerecteres "esse ~ UII campo COllI 3 cerecteres
6 end of it . 7 8 111. prtixilla ltnha causa. tJlI dtlnp curtc • A tahe14 interna 9 select · f ro. ztxl fal in t o table it .
IKiuSE ~
e comprimento, voce poderf utilizar a adic;io correspo ndi ng f iel ds. Essa. a.di~i.o tem 0 mesmo efeitc da instru cao move correspondi ng em um a string de 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.
e 13 bytes.
• Alin~a 9 selecion a t odo s as campo s dez t xl fa l em i t. 0 comp rimento total de todos esses campos tern mais de 13 bytes. Coase quen temente, urn dump curto o corrers.
Utilizanda a adi~cia corres pondi ng fi el ds Se os co mpo n ent es da tahela interna nio estiverem na mesma ordem dos componentes do banco de dados au se eles Daa tiverem a mesmo tipo de dado
1 report ztx1304 . 2 tables ztx lfal. 3 data: begi n of itt occur s 23. lifnr l1ke zt xlfaJ-lifnr • . 4 lifnr_l!xt like ztx lfal - l 1fnr. 5 landl like ztxlfal-landl. 6 end of t t l , 7 begi n of 1t2 occurs 23. 8 like zu lfa1-11f nr. l1 f nr 9 la ndl ltke zUlfaJ- Iandl . 1D end of tt2 . 11 12 13 + Esta ~ a uti1iz a~lo ett cte nte : 14 sel ect l1fnr landl from ztx lfd into corresponding fiel ds of t able 1t 1 15 16 where l i f nr between 'VlO' and ' Vl 2' • 17 loop at i t1 . 18 write : / ftl-lifnr, itt-Jandt. 19 endl oop. 20 21 + Esta ~ il t nettctente r Z2 select + f rom zulfat 23 i nto corresponding f i el ds of t able i t2
OIA 13, 'A'EIAS IHlmAS AVAH(AOAS, PAm , 24 where l ifnr between 'VIO' and ' VIZ' . 25 s kip. 26 loop at f t t , 27 write : / ttt -j ttm-, itl·landl. 28 endloop.
A Listagem 13.5 mostra alguns exeroplos da. utilizacjo de select para adicionar Iinhas, uma por vez, em um a tabela inter na.
ENTRADA'" Lista g em 13. 5 Utilizando sel ect com a lnstrucdo append para preencher
~
29
30 ... Em vez disso, escreva : 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 ' . 33 s kip . 34 l oop at ttz , 35 write: / it2-1ifm::, 1t2- 1andl. 36 endl oop. 37 free : ftl , 1t2 .
1 report ztx1305. 2 t ables ztxlfal. 3 dat a it like ztxlfal occ!lrs 2 wit h header line . 4 5 "'Fa"a desta f orma 6 set ect > fr om ztxlfal i nt o it "observe que ' t abl e ' ~ OIlIiti do, dessa forma a where l andl • ' DE'. "lt nhe vet para a l tnhe de caber;alh o de it 7 append it . 8 endsel ect. 9
o c6digo na Listagem 13.4- ptoduz esta salda: SAloA ~
ANALISE~
'0
cc
VIa Vll
. OE
vl 2
DE
VlO
CC
Vll V12
DE DE
. VI0 Vll Vl2
CC DE
11 loop at it. 12 write: I it-l1fnr , i t -landI , ft -regio . 13 endloop.
~
14 refr-esh it.
'5 16 "Ou desta f orma 17 select'" from ztxlfal 18 wher e 1andl .. 'DE' • 19 append ztx l f al t o it . 20 endsele ct.
DE
• A linha 14 faz a leitura dos campos lifnr e l and! a p artir da tabela zt xl fal para os campos 1i f nr e 1andl da t abela in tema t t i . A tabela interna tern 0 campo 1i f nr_ext entre 1ifn r el and!, dessa forma vces nao pcdera utilizar into tabl e. Se i t! exigir que os campos fiquem nessa ordem, a utiliza~a.o de cor r esponding f ie lds sera apropriada aqui.
• A linha 22 seleciona eodos os campos da tabela zt xlfal para apenas dois campos da tabel a i t 2. Isso eineficiente. Em vez dis so, a linha 31 mcstra que 01 0 seleciona r apenas os camp os necessarie s na ord em correta, sera passive! utiliza r i nt o t abl e.
tobelas internes
;
..
•
"nl!;o hot ' in to ' , dessa forma a li nha vai para a "i rea de t rabalho da tabela padrao "e, em seguid a, e ecrescented e a it
21 22 skip. 23 loop at i t . 24 write : I i t - l ifnr , tt- Iendi , it-regi0. 25 endl oop. 26. refresh 1t. 27 28 "Hio des ta f orma 29 sel ect > f rom ztxl fal "a l tnhe vai para a aree de t r abalh o da tabela padrlo 30 where l andl • ' DE ' . 31 it = ztxlfal. "em segufda, e atr1bufda a l tn ne de caber;alho 32 append ft . 33 endsel ect , 34
Adiciaoeoda liobes, limo pa r umo, util izoodo se] ect A utiliza~aa de select para adicionar Iinhas , uma pc r vez, req uer 0 usc de uma area de trabalho e de uma segunda instruclo, como append, ins ert ou col l ect. Omirir a adi~ao tabl efara com que a linha seja atribufda a uma area de trabalho. 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).
. 35 skip . 36 loop at it . 37 write : I it-lifnr, it-la ndI , it'-r egie. 38 endloep-. 39 fr-ee it.
o c6digo
na Listagem 13.5 prcduz esta salda:
43S
436
OIA lUABEUS IHTERHASAVAHIADAS. PARTE 2
APREHDA EM 21 DIH AIAI/4
SAioA ~
Vll
Yl2 V8
2D
DE D7 DE 14 DE D3
21 1I'Hao desta fonna: 22 sel ect " from ztlclfal 23 where 1andl • 'DE 24 move- corresponding ztx lfal t o it . 25 append it . 26 endselect. 27 28 ski p. . 29 l oop at it . 30 write : !. t t -I'l fnr, It .ro w_i d. it·1and l". I •
DE D7 DE DE D3
Vll
Yl2 V8
"
DE D7 DE DE D3
Vll
Yl2 V8
ANAliSE~
"
• N a linha 6l t abl e n ao aparece antes de it, sendo assim as campos de
31 endl oop. 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 area de trabalho da tabela padrao ztxlfal. A linha 19 acrescenta aarea de m balho zt xlta l atabela interne (a linhade cabecalho nilo eutilizada).
V11 VI Z V8
• A linha 29 coloca cada Iinha na areade trabalho ztxlfal . A linha 31
Yl1
move ztx l fal paraalinhade cabecalho de i t antes de acrescentar. Esse 0 metoda men os eficiente.
13.6 mastra como.
ENTRADA.... Listage.m 13.6 Como 0 adi<;co correspond ing fields 'pera a instru.;;ao ~ sel ect produz 0 mesmo efeito do instru.;;ao move-corresponding 1 report ztx1306. 2 ta bl es ztxlf al. 3 data: beq1.n of it occurs 2,
4 5 6
row_1d
l i f nr
like ztxlfal-lifnr. like sy-tnd ex,
landl
lik e zblfal·landl.
7 end of ft. 8 9 · Fa~a desta forma: 10 select l1fnr landl f rom zb:lfal 11 into correspondi ng fi el ds of it 12 13 14 15
"obser ve que 'table'
16 loop lit H. 17 write : / tt-l tfnr-, tt-rov 1d. it-landl. 18 endloop . 19 refresh ft .
V8
ANAUSE~
• N a linha 11,a adiliio table e omitida antes de i t , sendo assim, a linha vai par~"o cabecalho. 1i fnrvai para it. lifn r e land 1 vai pan t t- 1and l. 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 utiliza urna in5trutjao adicional - move-corresponding - a fun de 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 mesmo resuleadc da primeira instruljao select, mas envolve u~a instrllljao adicional e, portanto, e menos eficiente.
Resurnindo seJ ect tabelas internes e efici€m cie
I
where l andl " 'DE ' , append it. endseleet ,
D DE D DE o DE
Yl2
e
into corresponding fi el ds pede tambem serutilizado para colccar dados em uma area de trabalho em vez de no corpo cia tabela intema. 0 efeito e se me lhante ao ds inst'rur;3.0 eove-co rrespcnd tnc e emais eficiente. A Listagem
D DE D DE D DE
A Tabela 13.2 contem uma Iista das varies formas de sel ect quando utilizada . com as tabelas internas e sua. eficiencia pertinente. Sao apresentadas em ordem decrescente desde a melhor ate a menos eficiente. ~
om1ti do
Tabela 13.2 Varies formos de sele ct o ~ preencher urn o tebelo interno I nstfUljOo(oes)
Escrita 00(0)
sel ect select select sel ect
table i t corresponding f ie lds of table it
Corpo
it
Unho de ccbeccihc Unha de ccbecelbc
into into i nto i nt o
corresponding f ields of it
Corpo
437
438
D~ IJ,TIBEL\S Im RHAS IVI N(AOO, lAm 2
IIREN DI EM21 Dil l 1. 1// .
Utilizando as tabelas de exemp lo 1fa l , 1fb l, lfc l e lfe3 Antes de discutir 0 proximo tema, sera lltil se familiarizarmais com as nbelas de exemplo ztxl fal, ztxl fbI , ztxl fel e zt xl fc3j elas serge frequentemente utiliza das nos exemp los e exercfcios a seguir . Essas tabelas sao baseadas nas eabelas de Rl3, que sao 1fal, 1fb I , 1fel e 1fc3. Favor reviser estruturas dessas tabelas 'dentrc do DDIC, assim que ler as descricoes abaixo. A SAP desenvclveu 0 &/3 a fim de sec utilitivel por urn conglomerado que consiste em md lriplas empresas. Durante a configura~:io inicial do R/3, um ccdigc de empresa earribufdo a. cada empress no conglomerado. 0 c6digo de em~re~a forma parte cia chave primaria em muitas t abelas de dados-mestres, qu e permreeac con glo mera.do manter as inform~5es de codas as suas empresas em urn Unico banco de dados. 0 gerenciamento pede executar rela.t6rios para. urn c6dig o de empress individual, assim como relate rios consolidados 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 apenas em 1i f nr, que representa 0 mimero do fabricanre. Os campos de 1fal, par exemplo, apresentam a nome do fabricante e endereco, nemeros de telefone, idiom. falado e atividade (definida pd o tipo de produto comerciaIizado'p ela empress, como produtos qutmicos, agrfcolas e assim por diante). A tabela 1fbI contem 2S iaformacoes-mestres sobre fabricantes, que SaO especrficas de uma empress. Sua cbave primfria consiste em 1i fnr e bukrs : 0 campo de ccdigc de empresa (ve;aa Figura f3.6).Armazenados.dentro de 1fbl, estao 0 numero da conta d.a emprcsa com 0 fabricante, 0 numero cia conta de reconcilia~o, as ioforma~6es sobre.impost os retidos, urn indicador de caIculo de taxa de ;uros e assim por diante.
as
F igura 13 6
campos de cnove prim6rio , -_ _.A-_ _,\ A
Re/ofiOo ~ tre os
cnoves primarios.
lab elos-mestres de comerciolizo¢o
A Figura.13.6 representa a rel a~ o entre as chaves primdrias das eabelas de Hal a lfc3. Tom elas ccmecam com lifnr, e lfal 0 utiliza como a chave primiria iateira. lfb i utiliza a mimero do fabricante e 0 c6digo d.a emp ress, 1fcl utiliza 0 mimerc do fabricante, 0 c6digo da empresa e 0 ano fiscal. 1fc3 utiliza esses mesmos campos, alem de urn indicador de GIL especial. A tabela 1fc I contem os resultados das tnIls',oes do GIL (livro-razgo) . Cada Iinha armazena 0 valor de um ano fiscal dos resultados <Us rransacoesde um fabric.a.nte dentro de uma empresa. A chave primaria consiste em 1i f nr, bu1cr s e gjahr, no ana fiscal. . o conjunto de campos denominados umNNs, umNNh e umHNu erepecido 16 veees dentro de uma linha 1fcl. Cada urn dos primeiros 12 conjunto s concern os Iancamentos de debito, Iancamentos de credito e vendas de um pertodo de Iancamento (normalmente urn mes) do ano fiscal. Os ultirnos quaere conjuntos correspondem em periodos de fechamento adicionais utilizados para. conter ajustes de contabilidade do final do ano .
Podehover12 au 13 perfodos de lcnccmerrtc em um ana fiscal. lsso
edeterminado quando 0 sistema einiciolmente configurado. Se hoover 13, entao somente trfls periodos de fl!chom ento odicio nois existirtio .
A rabela lfcl contem resultados de trans.<;oes do GIL especial. G/Ls especiais ut ilizam uma ccnta alternativa de reconciliacac no Iivro-razac. Cads linha de 1fc3 armazena urn resume dos G/ Ls especiais de urn ano fiscal inteiro em tres campos: sald v, 50 111 e habn1. Esses campos contern 0 balanlSo obtido e encaminhado e 0 total de la.nljamentos de debito e credito durante 0 ano fiscal. A ch.ve primm . eâ&#x20AC;˘ mesm. de 1tel, alcm de um indic.dor de GIL especi.l : shbkz. 0 valor nesse campo indica qual conta de reconcilialiio alternativa e utilizada. A maioria das tabelas de clados-mestres utiliza urn mo delo semelhante para suas estru turas de chave primi ria. 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.
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.
439
-
"'!--~
440
-
-
-
-
DIA 1',TABEUSINmNASAVAN\.lDAS,Pl m l
APIEHDA EM21 DIAS ABAP/4
Para isso, voce pede ler as dados em urna tabela int erna e. em seguida, dectro de l oop at, utili ze as seguint es ins tru~6es :
• at fir st nio precisa vir antes de at last. A ordem dessas instrueroes pede ser tr ocada.
• Essas ins tru~6es podem aparecer multiples vezes dentro do mesmo 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 qualquer orde~.
• at f i rst / endat • at 1ast / endat
• at new / endat •
at end of / endat
•
sum
• Esses instrucces nio devem ser aninhadas um a dent ro cia outra (ou seja, at 1ast njic deve ser colocada dentro de at f i rst e endat ).
• on change of I endon NOYO lilt...
lERMO "
• N so existem adic;6es pan essas instrucoes.
A primeiro instru¢o de coda urn desses poresde instruc;oo - exceto sum -
co ntrola quando sera exeanodo 0 c6d igo que reside entre e les. Esse tipo de con tro le de ncml nc-se uma interrvp¢o de confrole. Seu prop6sito e execute- 0 c6digo
entre eles, sempre que uma condil;oo espedfico nos dodos , detedodo, durante
0
process omento do loop.
Utilizando as instruc;6es at fj rst e at 1ast
Na primeira vez que ocorre r 0 loop, as Iicbas de e6digo entre at f i r-s t e endat serso executadas. Na ultima vez que ocorrer a loop. as linhas de e6digo entre at 1ast e endat serio executadas. Se existirem mulriplas ocorrencias de at first, todas e1as serso executadas. at l ast se comp orts de uma forma semelhante. Utiliz e at fi rst para: • Executar
Utilize as insrru coes at f i rst e at 1ast para executaro processamento durante a primeira au a. Ultima passagem do loop por uma tabela interna.
0
loop do prccessamenrc de inicializacio
• Escrever as [obis no ini'cio de um relat6rio • Escrever cabecalhos
Sinlexe des III
Z
i nslru~oes
at f i rst e at 1ast
Utilize at last para:
A seguir, veja a sintaxe das instru;oes at fi r st e at 1ast.
S
• Execuiu
l oop at ft .
at f i rst .
... m
endat • at last . endat.
a loop do prc cessamento de tertninacio
• Escrever os totals ao eermlnc de urn relat6rio • Escrever rc dapes A Listagem 13.7 mostra um programa de exemplo que utiliza essas estrutu ras. EHTRlDI" Llsta ge m 13.7 Utilizanda at fi rst para escrevercabe<;alhas e at l ast ,. para sublinhar a ultima linha
. endloop.
onde: •
it
euma rabela interna.
• - -- represents qualquer numero de linhas de c6digo (ate mesmo zero).
O s segcictes pontos se aplicam: •
instrUl,joes s6 podem ser utilizadas dentro de l oop at ; elas nao podem ser uti¥zadas dentr c de sel eet.
Es5:lS
1 2 J 4 S
report zt x1307. tables zt xlfc3. data it l1ke ztxlfc3 occurs 2S with header line . s elect" from ztxlfc3 into ta bl e it where stlbkz • 'Z' . loop at it. 6 at f i rs t. 7 wr1te: I ' Vendor' .
8 . 9 10 11 12 13
12 ' Cpny '. 17 ' Year ' . 22 'Bal
c/F' .
ul1ne .
encat, wri t e :
I
t t - It f nr,
441
-
------442
DIA 1>. TABElASIJITERHASAVAH\ADA5,PArTE2
AP.REHDA EM 21 DIAl AW l'
16 17 18
OOWlA~ Listagem 13.8 Co nteudo dos compos do tebelo intemo e ntre at e endat
12 it-bukn. 17 it- gj ahr, 2Z i t - sal dv.
"15
at las t .
20
write : / 12 17
21
11
19
'
..
----, '
22
eneet , 23 endloop. 24 free it.
o c6digo na Listagem 13.7 produz esta safda: Cpny Year
Ba l
1000
1000 1995 1000 1996 lOCO 199B 4000 1997
0. 00 5,000.00 4.000 .00 0. 00 1.000. 00
1000
1000 1040 1070 1090 VI VI VI
2000 2000 1000 3000 3000 4000 2000 4000
V.
V6 V6
IHiu5E ~
elF
Vendor
1997 1997 1991 1990 1994 1997 1997 1997
250 .5 0
1.00 0. 00 1.000.00
1.000 .00 100.00 1.000.00
D.DO
• As linhas de 6 a 11 sao apenas executadas na prirneira ocorrencia do loop. Esse exemplo escreve cabecalhos seguidos por um sublinhado
1 report ztx1308. 2 t ables zu lfc3. 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. 6 wr ite: I 'Before " at f irst ": ', 7 I t t- Htnr , tt-bukrs , tt- gj ahr , it-shbkz. it-saldv, 8 tt- sclll , 9 at ff r st . 10 write : I ' Inside "at first ":', I i t - l itn!" , 1t - bukrs. 1t - gj ahr . it-shbkz. 1t-saldv, 11 i t - sol n. 12 it- litnr · ' XXXX ' . 13 endat . 14 write:· I ' Between " at fi rst" and " at la st ": ' , IS I i t-H f nr , f t-bukrs. It-gjahr, it-shbkz, t t -saldv, 16 1t-sol11. 17 at las t . 18 write : I ' Inside "at last " :' , 19 I i t -l1fnr . it- bukrs, 1t -9jahr, it- shbkz. 1t - saldv , 21l i t - solll. 11 i t-l1fnr • ' XXXX' . 11 endat . 23 write: / ' Afte r "at last" :', 14 I it~l'tfnr , 1t-bukrs, i t . gja hr . it- shbkz. it -saldv, 15 it-soll l. 16 27 endl oop. 28 fre e ft .
(linha 11). • As linhas de 13 a 16 escrevem executadas para cada linha.
0
• A5 linhas de 17 a 22 sao executadas apenas n.aUltimaocorrencia do loop. Esse exernplo escreve urn sublinhado ao final de cada uma das colunas.
Utilizando
0
o c6 digo na Listagem
conteadc de uma linha. Elas sao
UiDl ~
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 da linha da irea de rrabalho nie con terso quaisquer dado s. O s campos-cbave padrjo serac preenchidos ccm " (ast eriscos) e os campos numericos serso configurados como zeros. A instruljao endat restaura 0 conteudo para os valores iniciais que 0 rnesrno tinha antes de entrar em at. As alteracoes na area de trabalho denrro de at e endat serio perdi das. A Lisragem 13.8 demonstra que os componentes dos campos-chave padria serso preenchidos com asteriscos e que a s campos nao-chave serso preenchidos com zeros, dentro de urna instruljao at ou endat .
IHillS~ ~
Bef ore ' at f irst ': 1000 1990 A 1000 Insi de ' at fi rs t':
.......-..........
13.8 produz esta ,aida: 1, 000.00
soe.oo
0.00
0.00
Between ' at first' and 'at last' : 1,000.00 1000 1990 A lDOD Ins1df! ' at last' :
._..__..... .....
500.00
0.00
0.00
Aft er ' at last ': 1000 1990 A l DOO
1, 000.00
500.00
• A lin.ha 4 seleciona urn registro de ztxl1c3 para it. • Denno do loop que ccmeca na linha. 5, a comeede da linha e escrito primeiro. E1e e en tao escrieo novamente dentro de um.a at fi:st e endat . A salda mostra que os campos-c have padno cc ntem astenscos e as demais ccntem zeros.
443
-~--
444
--...--.
--
-
_
...... -_ . DIA13: TABB.AS I NmN AS AYAN~DAS, PAiTE 2
AmMoA EM 11 DlAS ABAPH
Essas instrulioes Ilia devem ser aninbadas uma denrro cia outra (ou seja, at end of IUO deve ser eolocada dentro de at new / endat ).
• A linha 13 atribui urn novo valor para t t - l i f nr.
•
• 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 feitas deatro de at / endat sers o perdidas.
• N io existem adi~oes para essas ins troCjoes .
linha. 18 mostra que at l ast exibe 0 mesmo compo rt am ento . • A linha. 27 sai do loo p na prim eira passagem para man ter a. salda
• A
simples.
Utiljzao d o a s i nstruC;6 es at newe at end of Utilize as instru~oes at new e at end of para deeecear um a a1teraliao em uma coluna. de uma passagem de loop para a pr6xima. Essas instrulioes permitem que voce execute 0 ccdigc no inicio e fmal de urn gropo de regis tros.
Sinlaxe dos inslru~6es at new e at end of .A seguir, veja a sintaxe das instnl~6es at new e at end of . sort by c.
loop at f t . at n@w c.
endat , at end of c.
endat. endloop.
onde:
•
eum a tab ela intema. c eurn comp onente de it.
•
- - - representa qualquer mimero de linhas de c6digo (ate mesmo zero).
• tt
Os seguintes pontos se aplicam: • Essas instrUCjoes podem apen a.s: ser utiliz.adas dentro de loo p at j elas 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.
445
Ulilizondo at new Cada vez que 0 valor de c for alteradc, as linhas de c6digo entre at new e endat serio executadas. Esse blo co sera tambem executado durante a primeira pas· 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. Os campos Dio numericos serso preenchidos com asteriscos (*). Se houver mUltiplas ocorrencias de at new, codas elas serac executadas. at end of se compo rta d~ uma forma semelha.nte. Urn nfve/de contro /e co rresponde 0 0 cornponente identificodo em umc in~c5o 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
.oYO lrrrl... TEDO
r
at new. loop at it . at new f2. "( deve extsct r alg l,lll cOd1go aqui ) endat. endl oop.
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 for alterado, 0 c6digo entre at e endat sera executadc . 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 deve definir a estrutura cia tabela interna para cornelia! com as campos que formam seus nlveis de controle. VatS tam bem deve clas sificar por todo s os campos antericres a c, incluindo c. Entre at e endet, as campos nurnericcs dir eita do nfvel de cont rol e serio zero e os camp os nao numericcs serso preenehidos com asterisco s. 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 a mvel de controle for alterado au qualquer campo antes d o nfvel de contra Ie
a
for alterado.
1ll.l 13.TABlUS 1N1BHA5 lV"'~ PART! 1
,7;<~lg"rA
J3 I
&to figure mostra que o n!velde controle ~ od onodo quando 0
va/orde II e alteredo. AJ~m elisso. eta mostro que 12 contem um osterisc:o dentro do inle l11Jp¢o de contrele (entre at e endat).
Figura J 3
f2
~m ~~ ~~ ~~
Scrdc 1 •
2 •
3 • _ -:..
; '~'
..
f2 contern urn cstertscc,
porque it se enccmrc c direito do nivel de ccntrcle ~1 1
a
Esto figure mostro que o nrvel de centro/e ~ o do node quando1 2 o u 11 Ii a /teredo. 'sse ceenrec e porque 11 vem antes de /2 no
eslruturo de it.
conteVdo de it
fl
o codigc na Listagem 13.9 produz esta safda: .
12
~~ ~ ~.0; ~~ :W
--
@B ~
SAIDI Sardo: 1 A
3 A I B
2 B
EN1lADllli. · Lisla gem 13. 9 0 c6digo nos figures 13.7 e 13.8 e reproduzido em um exemplo pr6tico
~
1•
2• 3 • 1 A
3 A
18 I 8
A B
1 re port ztx1309. 2 dat a: begin of it occurs 4, 3 fl. 4 f2, 5 end of t t, 6 7 i t.. ' lA' . append i t . "Preenc he i t com dados 8 it .. '3A' . appendit. 9 ft s '18 '. append it. 10 it.. '2B' . append it. 11 12 sort it by fl. "t t agora se earece eee a Figura 13.7 13 loop at i t . 14 at new fl . write: / it- fl, 15 16 endat . 17 endl oop. 18 skip.
8
19 sort it by f 2. 20 loop et it. 21 at new f2.
I
~
r
u-rz .
i
22 write : /it·n. a-fl. 23 endat . 24 endlecp , 25 skip. 26 sort it by fl f2. "i t agora s e perece com a Figura 13.8 27 loop at it. 28 at new fl. 29 write: /it-fl. 30 endat . 31 at new f2 . write: /4 it -f2. 32 33 endat . 34 endl oop. 35 f ree i t .
eentecde de it
11
447
A
• A linha 12 c1assifica it por f1. Na liaha 14, at new e acionada na primeira ocorrencia do loop e sempre que f1 e alte rado. • A linha 19 classifies it per f2. N a liaha 20, at new e acionada na primeira ocorrencia do loop, ou sempre que 0 valor de f1 ou f2 seja a1t~rado. 1550 acontece porque um nfvel de coa tro le sera acionado sempre que f2 for alte rado ou qualquer campo antes de f2 tambem tenha sido alteradc. • A linha 26 classifica it por fl e f2. Na linha 28, at newe acionada sem pre que 0 valor de fl e alterado e na linha 31, at newe acionada sempre que fl ou f2 ealrerado.
"it agora se perece cocn a Figura 13.8
..
..-
.
~
.~
.
~~
,'. "1'.
;;".:
448
AmM OA E. 21 OIAS AlAP/4
DllIH\IIEUS IIrnWSA'IJIIADAS,PAI1l7
Utilizende at end of As linhas de c6digo e~[re at
• A Iinha 12 classifies i t por f l. end
of e endat sersc executadas:
• Na linh a 14, at newe acicna da sempre que f1
• Se 0 nivel de contro le for alrerado.
ealterado.
• Na linha 1B, at end of sed acionadase 0 nfvel de controle for alterado, quando a pr6xima linha for Iida ou se essa for a ultima linha.
• Se qualquer campo antes do nfvel de cont role for alteradc .
• Se essafor a Ultima linha cia eabela. A Listagem 13.10 iIustra essa instrucao.
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 report ztx1310. I data: begin of it occurs 4, 3 fl. 4 fl. 5 end of i t. 6 I
7 8 g 10 11 12
~
17 18 19 20 21
05
efeitos
~l!rCo imprevisiveis.
in stru ~ci o sum Utilize a insuu!rao sum para calcular os totaisdas linhasde um nivelde controle.
Sintexe de
instru~ao sum
A seguir,veja a sincaxe da instrucao sum. at f1 rstf1 ast/nl!w/I!nd of .
i t · ' lA' . append t t . "Preen che it com dado! it .. 'JA' . append ft . it .. 'lB' . append 1t . it • '28' . append it.
wri t e:
estrvturo l oop at i t where • • • j
Utilizando a
,.... endat.
onde:
sort it by fl . 13 l oop 'at it. 14 at new fl.
15 16
Noo utilize as instrur;6 es de interrup¢ o de controle dentro de umc
\..CUldado
• -- - represe~ta qualquer mimero de liohas de c6digo.
I ' st art of:' ,
it-flo
endat. wri te : / 4 f t af l. at end of fl .
wri te : f ' end
Sum calcula urn total do valor arualdo ntvel de conerole que a contem. Isso ficm mais clare se YOCe considerar que essa instrul$io faz a seguinte: of: ' . it-f lo
• Localiza codas as linhas que tem os mesmos valores dentro do campo de nfvel de conrrole e toda s as campos aesquerda dele.
endet • endl oop. 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.:
5J.iDi ~
A Listagem 13.11 ilustra essa iostru~o.
start of: 1 I 1 end of : 1
st ar t of ; 2 I
I!nd
of: 2
st art of: 3 3
end
of: 3
Usta g e m 13.11 Utilizcndo a instruc;oo sum porc cclculcr as tatais de urn
EN1UDl~ ~.".:.::~=--nivel de- contrale
1 report ztx 1311. 2 dati: begi n of it occur s 4 ,
3 4 S 6
fl. 12 type t , 13- typl!: 1. 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 .
_
449
450
DlA 13: TABEUS INTERNASAYAHVo0AS, PARTE 2
APRENDA EM 21 D1AS ABAP/4
Esto figure i/ustrtr
sliol ~
3 1 2
total:B
IHlJ.ISE~
7
Listogem J3.1 J. Na primeiro ocorrencia do
loop, a infelTU(Jf;oo de controle e odonodo e o instrv¢o sum e execvtodo. Todos os linhas que h!m 0 mesmo valor do ntvel de centro/e sao locolizados e cs compos numericos Q direito do n(vel de controlesao somodos no
30 10 70 30
4
40
area de trcbolho. conteudos do linho
Fi gura 13 10
20
3
0
que occrre no
a c6digo na Lisragem 13.11 produz est a saida: total: A
ccntecdcs do ltnhc de cobec;alho
Flg u rg 13 9
10 1t-fl .. 'A' . 1t-f2 .. 2. it-f3 " 20. append i t. 11 it~fl .. ' 8' . it-f2 s 4. it-f3 .. 40. append i t. 12 13 sort it by flo Mit agora se pare ce com a Figura 13.9 14 loop at it. 15 at new fl . 16 SlII1 . 17 write: I ' total:' . it-fl, it- fl. it- f) . 18 endat . 19 write: / 11 it- f2, it-f3 . 20 endloop. 21 free it .
• 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.
• Na primeira ocorrencia do loop, a c6digo entre as linhas 15 e 18 e executado. 0 nfvel de controle contem
0
valor
Esta figure mom 0 que cccrre no segundo vee que a intelTUp¢o d~ centrale e odonodo e o ins1nl¢o sum e ex.ewtodo.
sort i t by· flo loop at it. at neW' f L
sum . wri te
de ccbecclhc ANTES de sum DEPOIS de SUIl
I
endat • endl oop,
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 f1 12 13 centecdes de 1t
todas as linhas adjacentes que tern urn 'A I em fl. E1a soma as colunas 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,
Utiliza nd o a inst ru<;60 on c hange of
at newnao e acionada.
• Na terceira iterali2.0 do loop, f1 contern IB I e at new (linha 15)
U ma outra in strucio que voce pode utilizar para executar 0 pro cessamento de a on change of , Tal instru; ao se comp ort a de uma maneira seme lha nte a at . new.
e
icterrupcso de controle
acionada. • 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 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).
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 dump curto oco rra com 0 erro SUM OVERFLOW. Ao util izor sum, evite 0 prob lema aume ntando 0 comprim; nto dos campos nurnerlccs ontes de preencher a tobela intemo.
-
e
Sintcxe de instru~Cie on change of
III A seguir, veia a sintaxe da instrucf o on change of.
Z
on change of v1 [or v2 • • •] .
S
[e lse,
m
T
---) endcn.
o nde:
• vl, e v2 sao no mes de st ring de cam po ou variavel.
451
452
D1A 13,TABELAS INTERNAl AVAN\ADlS, PArn2
APRENDA EM 21 DIAS AWl!
•
. . . indica que qualqu er mime ro de condicees or poderf vir em seguida.
•
- -~ represen ta qualquer ntimero de linhas de c6digo.
. J6 que os compos e udllc res globeis nco existem fo ra de urn loop, voce nco pode utilizer on change of fore de urn loo p.
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, on change of ser a acio nada e as campos auxiliares serio atualizados com .05 novas wares. Se forem as mesmos, 0 c6 digo denrrc de on change of nio sera.
O s seguintes pontes se aplicam:
• S~ 0 V2.1o r de qualquer uma das variaveis (vI, v2 e assim p a r diante) for alt erado de urn teste p ara a outre, as instrucdes depois de on change of sersc execu tadas.
executado. Esse conceito
• Se nenhuma alteracio fo r detect ada e el se for especificada, as instru~6es depois de el se serso execu tadas.
e graficamenre ilu str ado nas figuras de 13.11 a 13.16. Compo ol,lXiIlor globel porc n·f2
Figura 13 11 Esse ea primeira a~ncia de um loop com a utilizo¢o de
on change of difere de at newnos seguinces aspectos: •
Eta pode ser utilizada em qualquer estrutura de lo op, nao apenas em 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 .
_ . •t. '·
on change of.
• 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 . Esses campo s podem ser camp os elementares ou strings de campo . Se voce estiver dentro de urn lo op, esses campos nao precisarao pertencer ao loop. •
•
No primeiro possogem pelo loop, it·f2 diferedes conte(idos de comp05. o ux.iliores, en!l3o on change of 6 aclonado.
Quando utilizada de ntro de urn loop, uma a1tera~ao em urn campo a. esquerda do nivel de co ntrole nao acionara um a interrupcfo de cont ro le.
FlgurR 13 '2 Quando on change oj eacionado. 0 compo auxiliar e atvolizado.
Quando utilizad a de ntro de urn lo op, as campos a direita ainda irao conte r seus valores originais; eles nao sao alte rados pa ra zeros au
• Voce pede utillzar sumcom on change of. 1550 soma tcdos os campos numericos, exceeo o (s) identi ficad o(s) depois de of.
!2
as 'conlll(idos de it·f2 soo copiodos perc 0 compo ouxilior, e os inJiru¢lls dentro s60 executodos.
Compo ouxilior
globel poro a·f2
Figura 13 13 Esser e 0 segundo possogem de loop. 0 confeudodo campo
Q uaisquer valores aleerados dentro de on change of permanec erf o
alterados depo is de endon. 0 ccnteudo da linha de cabecalho nao sera restaurado ja que pertence a at e endat.
c per Ires de on change of
U
11
~~ ~~
• Voce pode ueilizd-la com l oop at it where. . ..
Q uando urn loop comeCja a execu cao, 0 sistema cria urn campo auxiliar global 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 au zeros). Ele s Sao esvaziados quan do do termino do loop.
· . q;;;;;Ii-~ 7
SiHI
• Voce pede ucilizar el se entre on change of e endon.
o que he
Compo avxilior global perc jf·f2
~0
asteriscos,
•
453
auxilior
e
correspoodido e on
change of nco ~ acionode..
- ..
.. '
!., . ;: :~
lt
11
!2
~~ ~0 WI! " ~~
m
.\ , · ~ 1
Ne segundo passegem pelc lo?~,. it·f2
e es conteudos dos compos au xtho res sao os mesmcs, ent60 on cha nge of . nco e ocionodo.
.J ·v
li;';~~
r:
454
DlA 13~ TABELl51HT£RHAS AYAH~ PAm. 2
AP IENOA EM21 DIAS ABAP!4
- -~~~ -
possogem de loop.
Usta gem 13.12 Utilizcndo on change of de duos mcneiros diferentes: dentro de loo p at e dentro de sel ect
EN1iADI~
Compo ouxiliar global porn if·f2
Eig u rp 13 14
Esse e 0 lerceiro On change of e odonodo.
1 report ztx1312. 2 tables zo.lfal.
3 data : begin of 1t occurs 4, f1 type i • 12. 5 f3 type i, 6
• No.Ierceiro possogem pelo loop, it-f2 ~~~~
dlle re dos cc raecdcs dos compos
ouxiliores, enlfio an change, of , ocionodo .
,4qui, 0 cam po olJrilior e atUolizodo.
1t -f2 .. ' A' . it-f3 1t-f2 .. 'A'. it-f3 1t·f2 .. 'A'. it.f3 tt-f2 .. 'A' . it-f3
.. 11. .. 22. .. 33. .. 44.
it·f4 i t -f4 it-f4 it-f4
18 enecn. endloop. 19 20 write: I 'End of 100~'. 21 22. executando 0 IIll!SlI'IO c6digo noulllente -
pa ra
0
ca mpo ouxilior,e
OJ
instnJ¢es demn;l s60 executcdcs.
Compo ouxilior global pera it·f2
f lu u ra 13 16
ea quorlo
possogem peto loop.
end of it . .. .. .. ..
''11 '. append it. 'X' . append it . 'y' . apllend it. ' Z' . append it.
14 15 loop It it. 16 on change of it-f2 . 17 write: lit-fl, 1t-f2, it·f3, it-f4 .
o cent.Ucla d. jf.1'2 ecopioclos
On change of nee
14.
10 it-fl .. 1. 11 u·n." 3. 12 1t.fl .. 1. 13 tt.f1 .. 2.
F i gura 13 1 5
Esta
7 8 9
~7
e
I I
ociona do.
No l1/timo pOssogem pelo loop, it·f2 c:::omeUdos de camposauxiliares ~S;~~ 160 os mesmcs, enIOo on challge of • O!
n60
e odonodo.
Utilizando on change of A Lis tagem 13.12 ilus t ra a utilizaC;i o "d e on change of.
0
CaJqJO aux ainda cont~ ' A'
23 loop at tt. 24 at first. 25 mte: I 'looping without a reset ••• '. 26 'endet , 27 on change of i t·fZ. 28 wr1te: I i t .fl, 1t.f2, i t · f3 , it-f4. 29 30
else.
write :
I
' en changl! "of not t rigge r ed for row', sy-t1bix.
31 endcn, 32 endloop. 33 wrtte: I 'End of loop' •
3'
35 .reconf1g\,lra
0
campo aux para espal;os em ereecc
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 ••• ". 42 endat . 43 on change of it-f2. 44 write: lit-fl, it-f2, it-f3, it·f4. 4S
endcn ,
endloop. 47 write: I 'End of loop'. 46
456
""'\AD'" PARTE 2
• A tabela intern a nio e utilizada depois da linha 31, en ta.a aqui it esvaziada. Isso exclui todas as linhas e libera a mem 6ri.a.
48 f ree it.
4'
50 sel ect" fnn zb:l f l1 where land! .. 'US'. Si an change of zt xlfal·1andl. 52 write: I ' l andl"' . zt xl f al - la ndl. 53
54 eees et eet , 55 write : I ' End of sel ect ' , 56 57 "executa r I IM!!sma tn stru ~&o sel ect novamente sen 58 select .. fran , t x1fa l wheN! landt .. 'US' , 59 on chang! of ztxlfal - landl. 60 write : I 'landl-'. ztx lfa l - l and!. 61 endcn, 62 endsel ect. 63 ...r ite: I ' End of sel ect.".
Em um ambience 3.0F e posteriori esta safch: 1 All " End of loop l oopi ng wit hout a reset • •• on change of not t ri ggere d for row on c:hange of not t ri 9gered f or row on change of not tri ggered f or row End of ' 09P Loop1ng after reset . ..
• Embora essa ins tru!jio sel ect retorne 23linha.s, como pode ser vista pela ultima linha de safda, somente cinco valores exclusive s de 1andl existirio e serso escritos.
0
lima re cQn f i 9' urar;~O
f unciona be'll
c6digo na Listagem 13.12 produz
2 3 4
11 W
End of loop l andl - US. End of sele ct landt- US
End of select
AlillSE ~
e
• A linha 33 selecicna todas as linhas de zt xl fal na ordem de 1andl.
endon.
1 "A
457
OIA lU'BELlS INTIl<NAS
' mNO' EM21 DiAl ,",P/ 4
• 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.
• 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 . Issc acontece porque os campos auxiliares con rem zeros ou espacos em branco, entac diferem dos valoresna primeiralinha. O s valores cia primeira linha sao co piados para as campos auxiliares e as valores sao escrit os pew ins t ru co es wri teo • A linha 20 nao e acionada novamen te porque em todas as passagens 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.
Utilizando
0
pe rigo ocu lto em on change of
e criado com valores iniciais {espacos em braccc ou zeros). Se a primeiro valor em urn loop for am espa!i0 em bran co au zero. on change of aia sera acionada. A Lisragem 13.13 ilustra esse problema e oferece urna solulj-a.o.
Na primeira ocorrencia de urn loop, a campo auxiliar global
OOiADA~ Ustag em 13 .13 linha do loop #1 noo ad ona on cha nge of 1 re port ztxl313. Z data: begin of i t occurs 4 , 3 f1 typl!!! i , 4 end of i t. 5 6 it.fl - O. append
it:
7 1t-f 1 - 3. apPl!!!nd it. 8 1t-fl - 1. append t.t.. 9 1t ·f1 · 2. append it. 10 11 l oop at it . 12 ert t e: I 'aanew row aa ' , 12 i t ~fl . 13 on change of i t - fl . 14 write : I 'fl changl!!d: " lZ it-fl. 15 endcn. 16
"loop 11
end'lccp .
17 18 skip . 19 l oop at it . ZO wt-t te : I 'a- new rown ' 12 i t - fl. Z1 on changl!! of it-flo . 22 write : I 'fl changed: lZ u - rr.
"l oop 12
I
I.
Z3 24 zs
26
el se, if sy-tabix a 1. write: I ' fl changl!d:' . 12 it-flo endif.
27
Z8
endcn.
endl oop.
Zg f ree it.
o c6digo na Lisragem 13.13 produz est> safda:
458
APR EMO A EM21 DIAS ABAPl4
SAiDA ~
· -new row.... ··new row".
0
fl c ~anged: ··new row"''' fl changed:
3 3 I I
....new row=" fl changed :
2
....new row.... f1 changed ;
....new row""
Para ser precise, a largura de uma linha da eabela interna em bytes deve ser maier que au igual ao ndmero total de bytes de todas as colun as selecionadas a partir d.a tabela de banc o de dados para a tabela ineema, Se a Iinha da tabela interna for mais larga, as cclunas selecion adas d:a tabela de banco de dado s serso preenchidas com os byte s mais a esquerda de cadalinhada tabela intema, Os bytes remanescentes serso configurados com os valores iniciais padrao.
2
0 0
•
"·new row•• fl changed:
3 3 I I
·"new roW""'" fl changed:
2 Z
• Utilize at e endat para acionar 0 processamen to "baseado em um a aIteraljio na coluna de urna tabela inrern a ou qualquer coluna a sua esquerda.
f1 changed:
AHluSE ~
O~ !3,TABElAS IMTIRMAS AV~Yl0AS, PAm2
• As linhas de 6 a 9 preencbem a tabela interna com qu atro linhas. 0 valor de i t -fl na primeira linha e zero.
U tilize a adiljao i nt o corresponding f iel ds se as camp os da tabela interne estiverem em uma ordem diferente ou estiverem separ ados urn do outre par campos nao selecionados da tabela de banc o de dados.
• Utilize sum dentro de at e endat au on change of para caIcular totais e 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 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 vclc res iniciois. Utlllre-c para preenche r as ccmposcuxlllores cam quolque r valor de f l.
Resumo • Uma oper acao de array e a mane ira mais eficienre de preencher uma tabela intema a partir de uma tabela de banco de dados. Ela Ie as linhas da tabela de banco de clados diretamenre para 0 corp o ciatabela interna sem utiliz ar quaisquer areas de trabalho. E implementada atraves da adiljao i nt o tabl e na instru ljao select. • A tabela intern e deve ser suficientemente grande para acomodar as colunas po r .voce selecionadas a partir cia tabela de banco de dados .
P&R
o
o
A primeira parte deste capitulo parece colocar muita enfase na eficiencia, Estou apenas aprendendo e con sid ero todos esses metodos confusos. Issc realmente faz muita di ferenca, ou voce esci se prcocupando com minucias! A experiencia ensinou-me que os alu nos que aprendem corretamente pela primeira vez ganham muito. Em geral, os pro· gramas em ABA P/4 processam uma enorm e quan ticlade de dadcs, portanto, par infelicidade, urn a c6digo facit " frequen remente results em "overhead over head overhead". Se voce aprender apenas os merodos facei s no in fcio, eles se tornarjio hsbiros e serac diftceis de se descartar. Urn c6di go p obre afeta o desempenho de seus program as e do sistema.
459
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 entendimen te do conteu do abordado e a. sc)3.0 Exercicio permite que voce pratique 0 qu e aprendeu. Voce pede enconerar as respostas perguntas do Testee aos exercicios no ApecdiceB, "R espcstas is perguntas e aos exercfcics".
as
Teste 1. Quais sao as mores dos campos as instrucdes at e endet!
adireiea do nivel de controle entre
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: 10 . 20
1 XX 2XX
n
~
3
40 50
4XX 5 XX
1 2
3
Dia 14 A instru~ao wr; te
4 5
Dica: Utilize a adi~ao comparing na instru~ao rea d tabl e.
Exercicio 2 o pr ogra ma a seguir preduz urn dump CUrto. Descreva c pr ob lema. copie (, pro gram s para · •• e1302 e so lucione esse problema. M!port zt y1302 tab le s: zb. l h l. dilta: begtn of it occurs la, lHnr li ke zt xl f al -l1 fnr . la ndl li ke zt xlfal .1andl . end of it. sel ect * frca ztxlfal in t o tab le it. lo op at it . write: / tt -If rnr-, t t -I endt . endl oop.
D epois de concluir est~ capitulo. voce sera capaz de: • Enrender
0
efeito dos tipos de clades na safda
• Utilizer as ops:oes de formata!jio, da ins trU~io wri te • U tilizar as safdas de conversio e deeecrar sua presen!ji dentro de dominies
Eormoto\;fi o e com primentos podrOo formata~ia au comprimenro quando utilizar a instru!jaa write, 0 sistem a adocad. urn comprimento e formate padria baseados no tipo de dado de cada variavel escrita. As seguintes sece es
Se voce nao especificar quaisqu er 0Pfioes de descrevem esses padroes.
.
Comprimentos padrijo MOYO .... TEUO r
a comprimento de sa ido de um campo corresponde 00 n(imero de cc rccteres 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
Tabela 14.1
o tipo de dodo do ABAP/ 4 determino 0
formata e
0
co mprime nto de
sofdo podr6 o Dado
Alinhamento
Fonnato
Sinai
Comprlmento de tipo de seida padrilo
Adireito Adireita
1 p
Fig u r a 1 4 1
Os campos Decimal Places., Output
Zeros sup rimidos
Finol
11
Zeros suprim idos
Final
lniclcl Nenhum
2¡~ d le n ou (2'fldlenl+ 1 22 fldlen
f
Nenhum
Noto~oo cientffica
n
Adireito
Zero s inidois
c
A esquerda
mostrodos EspoÂŤ;os em bronco
length onufom
0
padroo herdodo dos IipO$ de dodos do
/>YPi<.
fldlen
iniciois suprimidos
d
A esque rdo
Determinado pelc
8
pcdrec do usu6rio t
A esq uerdo
x
Aesq uerdo
HH,MM,SS
6 2'fldlen
a s campos do Data Dictionary tern tipos de dados do ODIC, como DEC, 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 ABAJ'/4 . Para determinar 0 tipo de dado do ABAJ'/4 e, por conseguin te, 0 formate de safda padrao, consulte a documentacao de palavra-chave do 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. Alem disso, as campos do DDIC tern seu comprimemc de safda e mimero de decimais definidos no dominic. Esses campos anulam 0 padrfo e sao mostrados na Figura 14.1. comprimento de safda e as casas decimals si o herdados por todos os campos criados a partir de :LIm dominic. P or exemplo, na Figura 14.1. 0 comprimento do campo e15, indicando que 15 digitos podem serarmazenados em qualquer campo utilizando esse dominic. 0 comp rimento de saida e 20. entia a safda permite espacc suficiente para urn ponto decimal, urn sinal e treS separado res de milhar.
o
Compos cornpododos
o
e
comprimento de saida padrjo de urn campo do tipo p du as vezes 0 comp rim ento de campo definido. Se casas decimais forem definidas, 0 cornprimento de safda padrio sera aum entado em 1, equivalend a entac a 2 * comprimemc do campo + 1. A T abela 14.2 mostra os comprime ntos de saida padrio de exemplo para os cam pos do tipo p.
Ta bel a 14.2 Comprim ento de scrdo podrao pa ra os campos deci mals ccmpoctodcs Defini~60
d.t. d.t. d. ta data
de dados
TAB TEXTD(4) t ype p. f 2(4 ) type p declm. ls 2. f 3(5) t ype p. f4{S) type p decimals 3.
Comprimenta de saida padriio 8 9 10 11
Eo rrnatOl; c o pad ni o a formato padrjo â&#x20AC;˘ derivado do tip c de dado da variavel. A Tabela 14.1 descreve co mo a saida sera. fonnatada para cad a tipo de dado do ABAP / 4. A saida de cam pos numericos (ripos p, f e f) ealinha da adireita com zero s inici ais suprimidos e para 0 restante e alinhada a esquerda. Formata~ao adicional especffica ao tipo tambern se aplica, Form oto ~a o de dota pcdreo Os vaIores de data irao gerar uma safda de acordo com a configura~o de Date Format em U ser D efaults , contan to que e comprimento de saida seja 10 a u maior. 0 comprimentc de sa!da pad rio cS, entao voce devers aume nti -lo para pelc menos 10 ante s que a s separa de res possam servistos. A defmilii o de uma variavel utilizando 1i ke (por exemplo, 11 ke sy-dat um) fari co m que a ccmp rimenta de sai'da seja retirad o do dominio.
463
-
~
_ _464
- _..
~
....
_~
APR ENOA EM21 DIAl ABAP"
OIA IH .11ilJyi0WRITE
Formc tccco de hora pcdreo
Program a de exemplo demonstra ndo a form c t ocd o padrti o
O s valo res de bora irac gent uma safda no formato HH:MM::SS,contant o que 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 possam ser vistcs. A defmi~ao de uma variavel utilizando 1ike (por exemplo, 1; ke sy- uzet t .) fm com que 0 comprimen to de safda seja retiradc do domlnio. Fo rm ata~ao
A Listagem 14.1 ilust ra a formatac;ao e 0 comprimento padrao. Tambem ilustra o tratamento de nUm.eros pr6ximos ao estouro do campo de saida.
OORADI~ Listagem 14.1
nurnericc pcdrco
I
N e America do Ncrte escreve-se um mimerc como 1,234.56. Em outros pafses,
3
• 5 6 7
8 9 10 II 12
Vod de ve efewcr sign off e efetuor ncvc mente sign on no sistema Rf3,
'-.\UlaaaO pore que as a ltere¢cs para
0
13
podriio do usu6rio tomem-se efetivos.
"IS A Tabela14.3 mostra 0 efeito da ccofiguracac Decimal N otat ionna saida
16 write :
numerica.
17
18 19
Tabela 14.3 A configuror;;60 De cimal Notation no podroo do usu6rio meta a s
20 21
Ic rmcto s de seide num erlcc Conflgura~ao
Saida de exe mplo
Virgula Ponto
, ,234.56 1.234,56
o formate
de safda padrio pan variaveis de ponto fluruante [tipo f) e atraves de nat.rra o cientifi ca. Ele pode ser modificado utilizando uma mascara de edic;ao au safda de ccnversso. Formata ~a o de estouro (overflow) Ao lidar com ntimeros qu e sao grandes demais p ara a camp o de safda,
0
sistema
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 existir espacc suficiente n o campo de safda. Se Dao exi sr ir espacc suficiente, eles sersc removidos, urn de cada vez, come cand c cia esque rda do campo e seguindo para a direira. Se a ndmero for positivo e se ajustar a safda com a utilizaliao do cam po de sinal, 0 sistema 0 utilizaIi.
report ztx1401. t ype t val ue 11ke sy- uzet t t2 value dl t ype d val ue val ue like sy·datum d2 value f1 type f 11 type 1 value 12 type i va I ue value typ ei 13 val ue i4 type i nl(5} t ype n value pl(S} type p val ue c1(S) type c val ue d(2) type x val ue 'AOBO' .
2 data: t1
como a s da Europa e aqui n o Brasil, 0 mes mo mime rc eescrit o como 1.234,56 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 desses fo rmatos atraves da configura~io de perfil do usudrio Dec imal N otation (a partir de qualquer tela, selecione a caminho de menu System-> U ser Pr ofile- > User Defaults).
~c 'd d-
Comprime ntos e formato,co podrao
I i
22 . 23
2. 25 26
I
27
I
28
,i
29 30 31 32 33 34
U . 26 / /(8) tl ,- '- 26 / (12) t l , 26 / t2 , 26 / dl, 26 /(10) dl, 26 / d2, 26 / n , 26 / 11, 26 / 12, 26 / 13, 26 / (10) 13, 26 /(10) 14. 26
I
nl ,
26 26 26 Il lS) pl . 26 / et , 26 / xi, 26 / pi, / (12) pi ,
'type ' ty pe ' type ' t ype ' t ype 'type 'type 'type 'type ' t ype ' t ype 'type ' t ype ' t ype 'type ' t ype ' t ype ' t ype ' t ype
' 123456' . ' 123456'. ' 19980201' , ' 19980201' , ' -1234', '12345678-'. '123456789-'. ' 1123456789-' . ' 1123456789' , 123.
' 123456789·' . ' ABC' .
t: defa ult output ll!ngth • 6', t: inc reas ed output length to 8',
t: t: d: d: d: f: 1: i: 1: i: 1: n: p: p: p: c: x:
1ncreesee output 1ength to 12' , defaul t output le ngth · 8 (from domain) ' . defau1t out put l ength· 8 '. in creased output 1engt h t o 10'. def ault output l ength· 10 (from domai n) ' . default out put l ength · 22', def ault out put length. 11'. same output 1ensth, more d1gi ts ' • S!Jll! output l ength, even IIICIre dig i ts ', smal le r ootput l engt h, negative nLlllber ' , smaller output l engt h. pcsf tt ve nllllber ' , default output l ength· fie l d len gt h' , default output l ength . 2 • leng th· 10', output l ength i ncreased to 12'. out put len gth inc re ased to IS'. out put l engt h · f ie l d l enqth (l eft ju st) '. default output l ength · 2 • l ength"" 4' .
o c6digo na Lisu gem 14.1 produz esta safda: siiDI ~
123456 12:34:56 12:34: 56 12:34: 56
type ty pe ty pe ty pe
t: t: t: t:
default out put length · inc reased output leng t h i ncreased output length default out put length ·
6 to 8 to 12 8 (from domain)
465
466
19980201 199B/D2/01 199B/02/01 -1.234000oo000oo00E+03
12,345,678123456,789 1123456789*23456789-
1123456789 00123 123456789123 .456 .789~
123. 456, 789- . ABC ACSO
lHALISE~
type t ype type type type ty pe type type type type type type type type
d: default output length· 8 d: increased output l engt h to 10 d: default output length .. 10 (frCll1 d0ll\41n)
• A li.nha 26 aumenta novamente 0 mimero em urn dfgito, fazendo com que a segundo separador seja remcvido.
default output length · 22 default olltput length " 11 _same output l engt h, more dig its sill:e output l engt h. even ecre dig its slMl ler outpu~ length, negati ve number smaller output. length, positive nllliler default output l engt h " field 1I!ngth default output length · 2 • length · 10 output length increased to iz output length tncreesed to 15 output 1ength .. field length (left jus t) default output length · Z • length· 4
• A 1i.n.ha 27 escreve 0 mesmo namero, dessavez diminuiodo 0 ccmprimente de safda em 1 e 0 indicador de estouro e vista no primeiro caractere do campo de saida.
f: 1: 1: 1: 1: 1: n: p: p: p: c: type x:
• A linha 28 escreve 0 mesmo nUmero utilizando a mesmo com primente, mas dessa vex 0 mimero e positive. 0 sistema altera corretamente 0 ndmerc e utiliza a campo de sinal para impedir estouro.
• Alinha 16 escreve uma variavel do tipo t utilizando seu comprimento padcio de 6. Nrc hi espacc para as separadcres, de modo que eles113.0 sao escricos,
• A linha 18 mostra que se 0 campo de saida for maior que 8 caracteres, a campo de hera ira gel":lI' uma safdaalinhada a esquerda decerc desse campo por padrso. • A linha 19 escreve urn campo defmido como sy-uzett. Dentro do dominio para sy- uzeit, 0 campo Output Length econfigurado como 8.Portant o, 0 comprimento de saidapara a.campo t 2 etambem 8) que famece espaco suficienre para escrever eambem cs sepa.radores. • A linha 20 escreve urn campo do tipa d que tern urn ccmprimento de safdapadrio de B. Nr c hi espaljo suficieme pan as separadores, entao ocampo Ilio contem separadores. Entretanro, a ordem ano/mes/dia ainda e dererminada pelo padrdo do usudrio. • A linha 21 escreve a mesmo campo de data, dessa vez aumentando compriment o de salda para 10 a fim de permitir os separadores. • A linha 22 escreve a campo d2. 0 comprimento de d2 dominio para sy-dat um.
• A linha 29 escreve urn campo numerico mostraod o que 0 mesmo alinhado adireita e preenchido a esquerda com zeros iniciais.
e
• A linha 30 escreve urn campo decimal compactado mostrando
0
comprimentc de saidapadrio e a remo~o dos separadores. • As linhas 31 e 32 aumentam 0 comprimento de safda para 12 e para 15, mostrando os separadcres e 0 alinhamento i direiea. • A linha 33 mostra urn campo de caractere alinhado
• A "linha 17 escreve a mesma varidvel utilizando urn comprimearo de saida de 8, que foi especificado na instruljaowriteoEsse comprimento de saida anula 0 comprimento de saida padrio e fomece esp~o suficience na saidapara incluir os separadores.
';:
467
D~ 14>4 llISTRU(i.o WRITE
APlEMDA EM 21 DIAS AUP/'
• .A linha 34 mcstra a saId2. a. partir de u,m campo hexadecimal.
8di~6es
para a
• A linha 25 escreve urn inteiro maior utilizando 0 mesmo cornprimento. 0 primeiro separador de milhar erernovido para pe.nnitir que o digito extra seja escrito.
write
ser utilizadas com a instIU~ao writeo
!!!
z·
-e
:J>
><
m
...
Sintaxe da
instru~oo
wri te
A seguir, veja a sintaxe da inStruljaO writeo wrfte ret] (I ) (2) (3) (4) (5)
Up(l)) "['0(,1))
under '12 : no-gap using edit mask _ : usi ng no edit lMsk m/'d/yy ' ' '/",,/yy mf'd/yyyy' " /m/yyyy """yy , '_y , yymd' (6) no-zero (7) no-sign (8) decimals n (9) , round n (10) currency c J unit u (11) left-justified: centered : ri ght-Just i f ie d
e obeidc do
• A linha 24 escreveurn inteiro utilizando 0 comprimento padrio de 1I.
instru~cio
Est. ,e~o detalha algumas das especificacoes especfficas de said. que po dem
0
• A linha23 escreve urn campo de ponto flutuante mostrando a nOtaljaO cientifia e um sinal inici&!.
a esquerda no
campo de safda.
onde: •
'11
eurn nome de string de campo. variivel ou literal.
• P, l e n sao literais numericos ou variavc:is.
• pea especifica~ao de posi\Sao. Ident ifica a coluna de saleta na qual campo de salda cleve comeljar.
0
-
468
-.-
-
- .-
-
- - - -
-
.,.--
-
-
- -.-
-
_. _
...
D~ lH IN5Tl<U(i.o WRITE
APRE NDAEM 21 DI Al AWl'
•
1
e a especificaclc
de comp rimento . Identifi ca
0
comp rim ent o do
campo de safda no qual 0 valor deve ser escrito. •
0
eurn. especificacac de deslccamenec de subcampo qu e pe de conter
somente literals numericos. •
ENTUDA..... U.st a g e m 14.2 Umo sen e de instruc;oe s write pora ilustrar 0 efeito do escecth cc cec de colune de sctdc
r
1 r eport ztx 1402.
2 data f1(4} t ype p val ue 1234.
sl eurn. especificacso de comp riment o de subcampc que pede center somente literal s numeric os.
• me uma mascara de edi~o. • c e uma chave monetdria (da tsbela tcurc).
· u.
uma unidade de medida (cia eabela t006).
• n e urn literal numericc a u variavel.
3 4 5 6 7 8
write:
' 12345678901234567'.
/ 1 ' X'. 'll' •
2 'll ' . 3 ' ABC '. 4- fl.
7 fl . 'Z · .
o c6digo na Listagem 14.2 produz esta safda:
• Se p au I for uma varifvel, a palavra at sera requeri da. U rna barn. (I) ccmeca um a nova linha antes de se escrever
I '... -+- -- -1-- -·+ - -'.
.I
skip . writ e write write 9 wri te 10 write 11 writ'e 12 writ e
Os seguintespontos se aplicam: •
469
____+_w__ l 0
valor da
+__
12345678901234567
variavel. Se nenhuma adic;ao for especificada e du as inst ruC;6es wri t e forem executadas (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 linh a"arual, ele apare cera na pr6xima Iinhs. Se a comprimento de saida de v2
for maier que a cornprimento cia Iinba,a saida sera truncada adireite. Se 0 valor 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 existam espafJos em branco iniciais para impedir que ele seja truncado. Os separadores serac rambsrc removidos, se necessaria, a fim de impedir a truncamento. 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,
Compreen de nd o
° e specificoljiio de posiljiio
Referindc-se asintaxe apresectada acima.c especificaa coluna de saida. 0 valor de said a pede sobrescrever to da a u parte de uma instrUfJao wri te anterior. 0 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..
XYA 1 1. 234 Z
IMluSE ~
• As linh as 3 e 4 escrevem uma regua, de mod o que voce possa ver as colunas de safda. • A 1inha 6-iscreve urn x' comegando na coluna 1. I
•
A linha 7 escreve I VZ ' comecandc urn esp~o dep ois de ' XI.
• A linha 8 escreve ' VZ comecando na coluna 2. Isso sobrescreve espa~a e 0 ' Y' que havia side escrito. I
0
• A linba 9 escreve I ABCI cornecando na colun a 3. Isso sc brescreve os 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 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. • A Iinha 12 escreve 'Z' urn especc d epois de fl. N a salda, parecem existir dais espacos. 0 primeiro espacc depcis de 4 e a campo de sinal para fl . Entia , urn espaco ~ escrito e, depois, ' Z' na coluna.16.
...........................
~--_...-- _~-.. . - - -
470
D~ lU IHSTIlIJIiDWlltTE
APlEHDA EM 21 DIAS ABAP/'
Instruljoes
Sa ida cumulativa
wr ite 1 ' X' .
x
write
S.liDI~
----+---1--+--
12345678901234567
' YZ'.
X YZ
wri t e 2 'YZ'.
XYZZ
write 3 'ABC'. write 4 fl. write 7 fl. wri te ' Z' .
XYABC XYA
1, 234
XYA
1 1,234
XYA
1 1, 134 Z
Correspo nd e ao ndmerc de caracteres na Iinha de safda utili.zado para rerer 0
valor de salda. As especificacoes de posiC;a.o e comprimento sao sempre opcionais. A pcsicao e 0 comprimeoto podem sec especificados utilizaadc-se tanto urn
literal quanta umavariavel, Sc um dos dais faruma varifvel, deveserprecedido pela palavn at. at sera op cional se a posifiao e
0
compri ment o forem ambo s
Iiterais, mas secl exigida se urn dos dais for uma varidvel. 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.
EHTU~~ Lista~em 14.3 II.ustrondo o· utilizoc;ao dos especlflcccees de ' co mpnmento e POSIC;CO
I r epor t ztx1403. 2 data : n (4) t ype p value 1234, p type 1 value 5, 3 1 type 1 val ue B. 4 5
7 B s kip. 9 write 10 write 11 write 12 write 13 write
XY XlZ ABC 1234 1, 234
• A linha 7 escreve I XYZ I utilizandc quatre caractere s de salda. A formata~o padcio e utilizada, entio a valor e alinh ado a esquerda e preenchido l direi ta com espaeos em branco.
Na desc ri~o desintaxe da inst ruliao writ e, 0 especifica 0 comprimento de satda.
6 write : 1 '
12345678901234567
• A linha 6 escreve os primeiros dois caracteres de •XYZ I.
Cornpreendendo a especifica~ao de cornp rirnento
r
••--+---·1··--.. ·-
1•• • • +__ 1 ,
1 ' 1Z34567B901234567'. 1 (2) 'XYZ' . 1(4) 'Xl Z' • . 'ABC'. 15{4) 11. at I p(l) f 1.
o codigc na Listagem 14.3 p roduz esta safda:
• 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. • A linha 9 escreve fl em urn campo que tern quatro caracteres de comprimento comegand o na coluna 5. 0 sistema rem ove as separadores para fazer com que a valor se ajusce em quarro caractere s, • A liaha 10 escreve fl em urn campo que tern eire caracteres de comprimento ccm ecaad c na coluna 5. VaIjav eis sio utilizadas, entjic a palavta at e exigida. A formata~o padrto se aplica, entao 0 valor e alinhado ~ dire ita com zero s iniciais suprimidos e. ji que exisre espalio suficiente, separadores tambem sac escritos.
Trobolb a ndo com slJbcarnpos Voce pode especificar urn subcampo na instru~ao wri t e utilizando as especificalioes de deslocamento e comprimento imediatamente depo is do valor sem "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 literal au um campo num ericc (tip os p, i e f ). A List agem 14.4 fornece exemplos . .
EIl111DI~ Lista ge m 14.4 Utilizondo subco mpos 1 r eport zt x1404. 2 data 11(4) t ype c value 'ABCO'. 3 4 writ e:
/' .·.·+
· 1··__ +_· ' ,
5 / ' 12345678901234567' . 6 ski p. 1 I fl (2) • 8 write 1 n-ita) . 9 write: 1( 2)
wr",
n-au), n.
471
DI. ,HlMmU\ADWRlTE I
o c6d.igo na Listagem 14.4 produz est a saida: SAiOA ~ .
;{[f; ~:,~
12345678901234567
ANlllSE~
• A linha 7 escrev e a primeiro e 0 segundo cara ct ere de flo
US
Moth erboards Inc . 64 BitBus Blvd.
a
0
adi"ao under
1 rt!!port zt x1406. Z data f l(4) ~ al u l!: 'ABCD' . 3 4 write: I fl. fl, 5 I fl no-g ap. n , I "", fl, " ", 7 / "", 2 fl . 6 " " . I " " no- gap, fl no~gap . B
,
s ki p.
endsetect .
a ccdigc n~ Listagem 14.5 prod uz esta satda: 1000
CA E
Parts Unl imlted 111 Queen St.
10lD
CA E
Industri al Pumps I nc . 1520 Avenue Rd .
CA E
Chemi cal Nation Ltd. 123 R1 ver Ave.
1020
.!
,' ,'
o c6digo na Listagem 14.6 produz esta safda:
25 ztx l fal-name1, I ztxlfal-spras under zt ll,lfa1-land1, zt xlfa1-st r as under zb lfal -namel.
10
.
,
1 report ztx1405.
11
odi"a o no- gap
EH1RAOA~ Listag em 14.6 Utilizondo no-ga p
2 hbll!:s: zt xlfal. 3 4 select * up to 5 rows from ztll,lfal order by 1f fnr. S write : 11 ztxlfal-11fnr, IS ztll,lfal~1andl,
9
0
A utili za.~ao de no-g ap ira. sup rimir a espacc intermediirio, colocado automaticamen te depois de urn campo, se 0 campo se guint e nao river nenhuma especificacac de coluna. A Lisragem 14.6 ilustra 0 usa de no-gap .
L1stagem 14.5 Utilizondo a od1iYoO under
8
• A linha. 7 escreve 0 campo namel cc mecacdc na colona 25.
Utiliza ndo
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 nio podera utilizar under com urna especificaclo explrcita de p osi~3.o . A Listagem 14.5 mostra exemplos.
7
• A linha 6 escreve 0 campo 1and1 comecandc na coluna 15.
• A linha 9 escr eve a camp o s t ras comecando na m esm a coluna de name l . Portanto, e escri eo comecando na col una 25.
A linha 9 escreve a terceiro cara ct ere de f1 comecando em u m a nova linha em urn. campo q ue tern dois caracteres de comprimento . 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 com urn espa'i0 em brancc inicial intermediario.
Utilizando
SAloA~
1040
t
• A linh a 8 escreve 0 campo spr as comecandc namesma coluna de 1 andl . C on sequenteme nte, e escrito ccmecac dc na coluna 15.
• A linha 8 escrev e 0 segundo e 0 ter ceiro caractere de fl. •
ENlRAOA~
Ch1 ckenFeed ltd . a71B Wishbone t ene
E
C ABCD
ANlUSE~
CA E
~---+---- l----+· ~
AS BC
",
1030
473
.,
SAloA~
ABCD ABCD ABCDABCO , ABCD ' ' ABCD ' •ABCD,
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 intermediirio sera.escrieo antes dele. • A linha 5 tambem escreve f l duas vezes. A ut ilizacao de no-gap depois do prim eiro fara com que as da is valores aparecam na saida sem urn
espaco-intermediario.
-SJ " y ;".s.'1!" .•:' .
·_-_··_ - ~ -1
o.
.,, _~1' '
~ _ ~~ ; 4" APRE HDA EM21 e rAS U IP/4
f?~""
Dll IH INmtJi.\OWR ITE I
. Ies nos dcis • A linh a 6 escreve fl co m aspas SlIIlp OIS ladas. 0 5 espacos
"f:"" "
interme diari e s apacecern scm
.
0
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 direita a valor (veja Lista gem 14.7 para obte r urn exemplo). 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 corneliO. Se aplicada a urn campo de caractere, urn V ser f a pr 6pria satda,
usa de no-qap.
a
• A linha 7 escre ve f1 entre aspa s simples. As especificacce s de posicio fazem com que as aspas aparcCiOlm scm esp_liDS inrermedidrios.
'.
• A linha 8 utiliza no-gap p:a.ra gerar a mesm a safda.
Utilizando mascaras de edi,.oo
475
I
I !
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.
• Mover
0
2 data: n(4) nlul! IABCO '. 3 f2 t ype i val ue 11234·'. 4 5 writ e: I ' 5. ' . fl, 5 I ' 5, I, (6) 11 using edit mask 1_=_:_' , I ' 7. ", fl using edit maslc ILL_:_' . 7 8 I ' B. I , f1 usin g edit mas k 'RR_:_' . " f2 usi ng edit mas k 'lLV_ _ ", / I 9. 9 10 I ' 10. ' . f2 using ed1t mlsk 'RRV_ _ ", 11 I '11. " f2 using edit maslc ' RRV_ , _ ' . 1Z I 'IZ . ", f2 using edit Nsk 'LlV_, _', I 113. " fl using edit mas lc IV_I . 13
sinal p~ 0 inicio de um campo numerico
• Inserir ou mane ardficialmence urn ponto decimal
• Exihir urn nrimero de ponto flutu ante scm a utilizac;ao de no taljao cientffica Em qualquer lugar denuo de uma mascara de edilijio, a caractere de sublinhado U possui urn significado especial. No comecc de uma mucan de edi ljao, v, LL. RRe:: tern urn significado espec ial. T oda s a s ou tros caracteres sao transferidos para a safda scm qualquer alterac?0' 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). mi mero de caracteres reti rad o do campo de origem seri igual ao mirnero de sublinhado s na mas cara de edi ~ao. Par exemplo , se existirem tres caracteres na mascara de edi~ao, no maximo tr~s cara cteres do campo de ori gem irs o gerar u ma saida. Todos os outros caracteres na mascara de edi~o sers o inseridos na safda. Ncrmalmente, voce tambem pr ecisarf aumentar 0 comprimento do camp o de safda para acomcdar os caracteres extras.ins eridos p e1a mascara. Por exemp lo , a instru~ao write {6} IABCDI usin g edi t ma sk 1_: _ :_1 escreve A:BC:D. OS caracteres sao re cirsdos, urn porvez, do campo de origem 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:BC po rque 0 comprimento de saldapadrsc eigual ao ~omp-rimento do campo de origem (4). Se existissem meno s sublinhados na mascara em rela~ao aos que estao no cam p o de orig em, 0 padrac seriaobeer os caracteres n mais aesqu erda do campo de orig em. onde n e igual ao mimerc de sub linhados na mascara de edi~ao. Isso p ede tarnbem ser explicitarne nre espec ificado ao preceder a mascara de edi~ao com LL. Porexemplo, write IABCD I using edit mask ILL : ' ob tem as tr es caracteres rnais a. esquerda e escreve AB :C. Utilizar RR, po~";;' vez, obter.i os tres caracte res mais a direita , entao write IABCD ' using edit mask IRR_:_ I escrevera BC :D.
o c6digo na Listagem
o
IAfDA ~
s.
ABeD
6. 7.
A:BC :D A:BC
8.
9. 10. 11.
14.7 produz esea so.lda:
B:CD
·1234 • 1234 • 1.23 4
12.
·123,4
13.
VASe
• A linha 5 gera a safda de f l sem quaisquer mascaras de edicao. • A linha 6 gera a sucia de todos as quatro caracteres de f1 utilizando doi s pontos pan separi-Ios . • Existem t res sublinhados na mascara de edi~ao na linha 7. mas quatro caract eres em flo Po rtan to, os tres primeiro s caracteres de f1 sao utilizados na mascara de edi~ao.
..
• A linha 8 obtem os tres ultimos caracteres de f1 e os apJica amascara de edi,.o. •
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 ·
I I
!
1
1
II
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 Figura 14.2 mostra que a dominio zt x1 i fnr utiliza a retina de co eversac ALPHA.
simi icicial. • As linhas 11 e 12 mostram. 0 efeitc da combina~o dos caracteres inseridos com alinhamento. as caracteres inseridos Ilia sao movidos em rela~o
010
Figura 14 2
Observe 0 conteVdo c/o camp o Convers. Routine.
campo de safda.
• A linha 13 mosrra 0 efeiro da utilizacfo de urn V com urn campo de caractere. 0 pr6prio V ea safda,
Utjljzo ndo os sordos de cooverso o HOYO ... TElltO "
Uma saf da de conver-s j o 6 umo retina cha modo que formato a sc ldc. Umo
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 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. Depois do CopfhJlo 19, sobre as m6du los de fun¢ o, voce sober6 0 suficiente perc ser capez de crior suos pre pr icsscldcs de ccrwersec .
As safdas de conversao sao particularmente ateis para tarefas complexas de fcrmancac que sao necessari es em mals de um programa.. Para ilustrar, a saida de conversjo CUNIT convene automaticamente 0 c6digo que representa 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. (KI ~ um a ah reviarura de Kiste, pal avra alema para "caixa"".) Earretanrc, CUNIT converte KI no mn em e nicc ing les CR. Portan t o, quando co nect ado ern ingles, write : 'I' . ' KI ' using edi t mask '==CUNIT' . escreveraI crt.Para umususrio coneceadc em alemao, a safda seria 1 KI. U rilizar tal safda de conversao permicinique um ccnjunto padrso de c6digos armazenado no banco de clados sejaauromaticamente convertido para que sejasignificativo no idioma de logon arual sempre que gerar uma saida para urn relat6rio.
Rotinas de converseo dentro de um domlnio Uma saida de conversio pode tambcm ser colocada em Converso0 campo de rotina em urn dominic. A safda sera herdada por todos as campos que utilizam
Portaneo , secipre que ztxlfal- lifnr for escrit o, a valor passara, em primeiro lu gar, pelo m6dulo de funo;ao CONVERS ION_EXI T_ALPHA_OUTPUT, 0 qual
remove os zeros iniciais dos wares numericos . 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. A Liscagem 14.8 ilustra 0 uso das safdas de conversao. EHll.lIlA~ Ust agem 14.8 Uti lizanda scldos de converse o 1 report ItxH 08. 2 ta bles : ztltlfal , ztxmara. 3 data : fl(lO) value '0000001000' . 4
5 write: / fl,
6
/ fl usi ng edi t mask ' ''-ALPKA'.
7
•
8 ski p• g set ect " f ran zt xlfa l \lfhere lifnr • '00000010000 ' 10 or l ifnr · 'Vl' 11 order by 1i fnr . 12 write: / zt xlfal-l1 f nr , "0 domi ni0 contl!m conver so Saia de ALPHA 13 / ztx lh.l - 1ifnr using no edi t mask. 14 endse1ect. IS
I
478
r 'PREiD. EN 21 DIAl '''PH
DIA lH INSTRlI(iD WRITE
Hi skip.
SCiEENOM~ Inicie agora
17 select single· from ztxmara wher-e matnr · ' MI03', 18 write:: I ztxmara-matnr , 19
(10) ztxrr.a ra- brgew.
20 ztxmara-gl!:we i . ·o dCJllfnio cont&n converso Saia cle CUNIT 21 set locale la nguage ' D'. 22 wrHe: / ztXlldra-matnr, 23 (10) ztXllara-brg ew, 24 Ztxlllara-gewe1 . ·o domfni o cont~ convers o Saia ee CUNIT
lDOD
1000 0000001000
VI VI
1lI1USE ~
H103
50.000
1. N a tela Development Workbench, selecione 0 caminho de menu Overview-> Repository Infosys. A tela Repository Information System do AJ3AP/4 sen exibida. 2. De urn cliqueno sinal de mais (+) ao lado de Programming. A more sen expandida. 3. De urn clique no sinal de mais (+) ao lado de Fun ction Library. A
4. De urn clique duplo na linha Functi on Modul es. A tela Re.p~sitory Information System: Func tion Module do AJ3AP/ 4 sed exibida. S. No campo Function Module, digit e CONVERSION_EXIT_· _ OUTPUT (0 campo ede rolagem; voce pe de digitar urna quantidade maior de caracteres do que de pede exibir). 6. Pressione 0 botac Execute na barn de ferrame neas Application. A
0000001000
50.000 CR
ScreenCom "How to Display Existing Conversion Exits".
m ore ser::i. expandida,
o codigc na Listagem 14.8 produz est. saida;
H1D3
0
tela Function Modules sed exibida, Tow as saIdas de conversao que podem ser utilizadas na instrU~io wri te serio listadas aqui.
KI
Trabalhando com a fo rmataljCio de data
• A linha 5 escr eve 0 valor de fl.
• . A Iinha 6 escreve 0 mesmo valor, mas aplicaa safda de coaversac ALPHA. Antes de ser escrito, fl e passado para 0 m6dulo de fun~io CONVER-
SION_EXI.T_ALPHA_OUTPUT, 0 qual detects que 0 valor e inteiramente numerico, remavend o os zeros Iniciais e alinhan do -o aesquerda.
As especificacces d~ .formata!jio de data, na maiori a da.s vezes, n40 faz;e~ 0 que vqcC imagina que elasdevemfazer. A maioria tira seu formato da especificacso Date Format no padrac do usuario (caminho .de menu Sys eem- > User Profile-> User Defaults). . 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 a linha 12 escreve 1i f nr utilizando tal safda de conversac, • A linha 13 escreve 1ifnr, mas desativa a saida de coovers jo. Isso faz com que 0 valor real na tabela seja escrito . • A linha 17 seleciona um tinico registro de zt xmara.
g,.,j
• A linha 20 escreve (unidade de peso) utilizando a safda de cocversfo CUNIT no dominic. • A linha 21 altera 0 ambience de textc para alemao. Isso a se coaectar em alemao. .
eequivalenre
• A linha 24 escreve 0 mesmo valor gewe i, mas dessa vez CUNIT exibe 0 mnemonico alemao.
Exibindo os sordes de conve rsno existentes Para exibir as saldas de conversao exisrentes, utilize 0 seguin re procedimen to.
Formato
Efeito
Ilffl/dd/yyyy
Escreve 0 data vtilizando 0 formata especficcdc no pe rfil do usucrio.
dd/Ilffl/ YYYY
Esse e 0 podreo, sendo ossim esses formotas rea lmente n60 Iozern
ncdo. rrm/dd/yy dd/Ilffl/YY
Escreve a data odotondo um ona com dais coroderes u1ilizondo 0 formoto espec ificodo no perfil do usv6rio. Os dais fczem 0 mesmo
cotsc. nmddyy ddnmyy yynrndd
Escreve 0 data odotondo um ono com dais corocteres u1ilizondo a formoto Especificodo no perfil do usvorio, sem seporodores. Os dais fozern 0 mesmo coisc. Escreve a da ta no formata yym mdd se m sepc rod ores.
479
480
DIA lH INSTRU(ADNRITE
APREND AEN 21 DIAl ABA PIl
o co digc na Listagem 14.9 produz esta saida:
As sofdos de conversec IOATE e SDAlE prod uzem fe rmata s de data diferentes. Alem disso, 0 m6dulo de fum;oo RH GET DATE DAYNAME retorno 0 nome do die do semana relative a ~mo -data -; idiomo especificos. C omo alternative, DATE_COMPUTE_DAYretorn o urn ncmerc que representa
0
SAiD! ~
1998/11/23 1998/11/23 1998/11 / 23 98/ 11/23 98/ 11/23 981123 981123 981123 1998NoV23 1998/ NOV/ 23 23/11 /1998 11/23/1998
die do semono.
A Lisragem 14.9 ilustra. 0 usc das especificacoes de formate de data. fHTRADA~ Listcgem 14.9 Utilizondo as especificac;6es de formate de data 1 report ztx1409. 2 dlltll: fl 11ke sy-datum val ue ' 19981123' , begin of f2, 3
4 5 6
!HilIS~ ~
y(4). m(2J. d(2) • end of f2, begi n of f3. d(2) ,
21
I I
"perfil do usu!r10 fmt
~
ex1 bido adot ando um enc com 2
df g1t os - perfil do usui r i o fmt, ! exfb fdo adot ando um ano cce 2 23 / fl dd/",/yy . dfgi t os "perfil do usuar -t c fmt, anc corn 2 dlg i t os, s en 24 / fl omld" . separadores "perfi l do usuar t c fmt, ana com 2 dl gitos. sem 25 / f1 dcmnyy. separador es 26 / fl yynmdd . "f ormat o yyrrrndd, sern separ edcres 27 / fl using edi t mllsk I·-!DATE', 28 / ( 1) f1 using edit mas k I u SoATE , • 29 30 f2 - 11. 31 II'IOve·correspond;ng f2 t o: t a. f4 . 32 wri te : / (10) f3 ust ng edit mask ' - '.J_ ', - f onnat o dd/nrn/yyyy 33 / (10) f4 usin g edit lIlask '-.J-.J ". - f oma t o nn/d d/yyyy
~.
~\, ~
• As linhas 22 e 23 fazem ambas a mesma coisa: escrevem fl utilizando a fo rm ate especificado no perfil do usufrio, mas utiliz am um ano com dois dfgitos. • As linhas 24 e 25 fazem ambas a mesma coisa: escrevem fl utilizando o formate especificado no perfil do usudrioadotando um anocom dais djgitos, mas sem separadores. • A linha 27 formataa data utilizando a safdade conversso IDATE. A saida de IDATE tern 0 formato yyyymmmdd. • A linha 28 formata a datautilizando a safda de conversao SDATE. A safda de SDATE tem 0 formato yyyy/mm m/ dd. • As linha.s de 30 a 33 mostram como criar seu proprio formate de safda, Se voce mesmo tivesse de fazerisso,seriamelhor coloca.r esse c6digo em uma saida de conversdo e)entjo, atribuir urn nome asafda de conversao na instru~ao write. Voce nao apenas simplificaria seu codigo , como tam bem de ficarla disponfvel para voce e para codas as outros programadores para uma aplicacto imediaca em qualquer programa.
f1 dd/rrrn/yyyy, -e perfil do usuAri o conf i gura 0 f OrN t o
fl rrm/dd/yy,
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 o valor de fl for escrito .
• A
• As linhas 19, 20 e 21 fazem todas a mesma coisa: escrevem fl utilizando o fo rmate espec ificadc no perfil do usufrio.
7 8 9 10 m(2) . y(4) • II 12 end of fJ. 13 begfn of f4, m(2). 14 d(2) • 15 y( 4) , 16 17 end of f4. 18 19 write : I fl. · 0 perfil do usulri o confi gura 0 formata 20 I f l rtmjdd/yyyy, ·0 perfil do usulr10 conf igu ra 0 f ormat a 22
481
.,.
odi~6es no-zero e no- s i gn A adiiao no-zero suprime os zeros iniciais quando utilizada com variaveis do tipo c ou do tipo n. No case de urn valor zero, a salda sera t otalmente gerada com espaios em branco. Aadi<;ao 00 - 5; qn,quando utilizada com varidveisdo tipa t, pau f , suprime a saida do caractere de sinal. Em outras palavras, numero s negatives nao terac urn sinal e apare~erio como se fossem positives.
Utilizondo os
>..:::.::::=::.:. .==-=::..:..' --- - -- - - -- - - -t A Listagem 14.10 ilustra 0 usa dessas duas adi~6es .
ENTRADA~
i
Listagem 14.10 Utilizondo no- zero e no-si gn
1 r eport ztx 1410. 2 data: cl( lO) type c 3 nl(10) type n 4 n2(10) type n fl type 1 5 6 i2 type 1
value value value value value
'000123' . 123. D. '123-' . 123.
7 write : I er , 20 "type c", 8 / cl nc-eere, 20 ' t ype c us Ing 9 / nl . 20 ' t ype n", 10 / nl no-zero, 20 "t ype n usi ng 11 / nz, 20 ' t ype n: eere 12 I n2 no-zero , 20 ' type n: zerc 13 / 11. 20 'type 1' . 14 / 12 no-sign. 20 l type 1 using
a
rc -zerc - ,
no-zero ' . value ' . value using no-zero ', no-sign' .
ENrnDA.~ List a g em 14.11 Utilizando as odi<;6es deci mal s e round c6digo na Listagem 14.10 produ z esta , aida:
000123 123
0000000123 123
000000000o
t ype t ype t ype t ype type
1 report ztx1411.
c c usi ng no-zero n n using no-zero n: zero val ue
2 data f l type p decimals 3 val ue 3 wr ite : I fl , 4 / fl dec1ilals 4, 5 I fl d~i lla1s 3, s I fl dec;lnals 2, 7 I 11 eectnal s 1. 8 I fl decimals O. g If1 d e c i ma1s~l , 10 I fl round 4. 11 I fl round 3. 12 I 11 round 2, 13 / 11 round 1, 14 /11 round 0, 15 I 11 round - I , 16 I fl round ~ 2. 17 1 11 round 3 dec1mals I, 18 I fl round 3 deci mals 3.
type n: zero value using no-zero 123123
t ype 1 type 1 using no-s i gn
Especificando decima is e a rredo nda me nta Duas instrucces executam
0
arredonda mentc e
• decima l s •
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 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 ant es da exibicso. A adi~io r ound n faz com que a safda seja multiplicada por fatores de 10 e, entaO, arredondada antes cia exibicao. Esse procedimenrc tern 0 mesme efeito de multiplicar por l O"'*n. Valores n positives movem 0 decimal para a esquerda 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. A diferen~a en tre de cimals e round e que decimals alters 0 numerc de digitos depois do p ooto de cimal p ara n c) enu a ) executa 0 arredon damento. round move a ponto decimal para a esquerda ou para a direita pa r n, manten do o ofunero de di gitos depo is do decimal e, entao, execu ta. 0 arr edondamento . para 0 rnime ro de digitos de cimais exibidos. A Listagem 14.11 ilu st ra 0 us a de deci mal s e round:
round
T res instrucdes sao ut ilizadas para especificar 0 mimero de casas decimais na safda:
' 1575.456 '. 20 "ea-ts ", 20 'd ~ c 1 ma ls 4', 20 'decimals 3' . 20 'decillllh 2', 20 ' decimals 1', 20 ' deci mal s a', 20'decimal s-1 ', 20 ' ro und 4' . 20 'round 3' . 20 'round Z' . 20 'round 1', 20 'round 0' , 20 'round ·1 ', 20 'round -2 ' , 20 ' ro und 3 dec1mals 1'. 20 'round 3 dl!c1lnals 3 ' .
• decima l s •
currency
•
unit
Utilizanda a s ad i~6es deci rna15 e round A adic;ao deci mal s n pede ser ueilizads para aum entar ou diminuir 0 ndmero de casas decimais exibidas na lisa de safda. Se voce diminuir 0 ntimerc de casas decimais, 0 valor seri arredondado ant es de ser escritc na lists, a valor cia
...
a
c6digo na Listag em 14.11 produz esta saida:
1.575 .456 as-i s 1.575 .4560 1,575.4 56 1, 575.46 1,575.5 1,575 158
decimals dl!c illals decll:1.a1s dec illlah decimals deci mals
4
3 Z 1 0 -1
484
CIA lH IHSTltU\iOWRITE
l PR EN DAEM 21 DIA5 AB AP /4
0. 158 1. 575 15.755 157.546
round ro und round round
1.575.456
round round round round round
15. 754.560
157 .545.600 1.6 1.575
ztxlf c3 ~ armazenada no campo ztxt001-waers. Voce pode descobrir isso clando urn. clique duplo em qualquer urn desses campos. Por exemplo, se der um clique duplo em zt xlfc3-sal dv, veri a tela Display Field ZTXLFC3SALDV.mostrada na Figura 14.3. A ubela de referencia e a campo de referenciaindicamque ztxt001-waers con tfm a chavemoneciri.a..
4
3 2 1
0 -1 -2 3 dl!cillal s 1 3 decteets 3
F igu ra 14
3
Umdique duple no compo $OIdv do Iobela ztxHc3 exibin5 em tela_
No linha S, 0 od ic;codecimal s a nOo eorre dondoda para clmc porque a pa rte frocion6ria do ncrnerc e menor que .5.
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; sua chave primaria e bukrs. Se voce recirar 0 valorde ztxl fc3- bukrs e pesquisar a Unica 1inha em zt xt001 que corresponder, waers ira center a cha:ve monetaria. A Listagem 14.12 ilustra esse conceito.
Os tipos do ODIC. CURR e QUAM, sOo boseodos no ti po de dodo p do ABAP/ 4 (decima l com poe:tedo).
Util izando as adi~6es curre ncy e unit As adic;oes currency e unt t correspondem a uma maneira alternative de indicar a posicsc do ponte decimal para urn campo do tipo p. Elas nao podem ser utilizadas com a adiliao dec"imal s. Utilizando a adi~ao cur r ency Q uando escreve uma quan tia mon erdria, voce tambem deve u tilizar a adiC;2o currency. N ormalmenre, tais quantias sao recuperadas de u rn campo do tipo CURR em uma ..bela de banco de dados. Utilize currency em vez de decimals a fim de especificar a mimero de casas decimais para os campos de quantia monetiria. Diferent emente de decimal s, em que voce especifica a numero de casas decimais, com currency voce especi£ica urn c6digo monetfrio, como usn (dclares nort e-americanos}, ITL (lira italiana] au JPY (iene japcnes). 0 sistemaentia pesquisa esse c6digo 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 em TCURX, um padcio de duas casas decimals sed utili:z.ado. 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
EIiIDDI~ Usta g e m 14.12 Ulilizondo 0 adi<;oo currency 1 rl!port zt xl 412. 2 tabll! s: ztx1fc3.
3 data: fl type p deci mals 1 value '12345. 6' . 4
5 write : / fl , I 11 cur-rency 'USD'. 'USC' • 6 7 8
.i
I
11 currency' IlL'.
~
ITL'•
·D6la~s
eee- tcancs
·Lira 1t aliana
9 ski p. 10 select· f rom zblfc3 whl!re gja hr • '1 997' 11 and u ldv • 100 12 order by bukrs . 13 on changI! of ztxlfc3 ~bukrs • 14 sel ect single * f rom ztxtOOl where bukrs • ztxlfc3 -bukr s. 15 endon. 16 writ e: / ztxlfc3-saldv currency zt xt OOl·waers, zt xt OOl-wal!r5 . 17 endselect ,
o c6digo na Listagem 14.lZ produz esta safda:
485
a
1
486 I IPREH OI EM71 nus lBAP/4 SAiDA~
!I
123,456
1. 234.56
usa
123 . 456
ITL
100.00 100.00 100.00 100 . 00
,
usa usa usa usa
100,000 ITl
25,050 III 100,000
ITl
100, 000 J py 300,000 J PY . 250. 50
CAD
200. 00 CAD
1.000.00 CAD 100.00 CAD
AMluSE ~
D1I IH INSTRU~O WRITE
487
decimalsque nao tenham zero. AMmdisso, nunca aumentara 0 numero exibido 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. andec acrescenrara zeros depois que decan river sido aplicado. 0 namerc exibido de drgitcs decimais deve ser multiple de endec. Se necessdrio, andec preenchers 0 valor a direita com zeros, Se andec for zero, nenhum zero sera. acrescen tad o. Por exemplo, se 0 valor for 12.34 depois que decan river sido aplicado e 0 valor de andec for 3, deverao existir 0, 3,.6 ou 9 (au qualquer outre numero multiple de 3) digitos decirn.ais. 0 valor de saida, .partanto, sen preenchido com zeros para se tamar 12.340. Se 0 valor depois de decan for 12.3456, a safda secl 12.345600. Se 0 valor depois de decan for 12.30 e andec for 2, a safda sera. 12.30. A Tabela 14.6 contem mais exemplos dos efeieos de decan e andec no formato de safda,
• . A linha 5 escreve 0 valo r de flo
Tabela 14.6 Como as campos decan e andec do tobela t 006 ofetam a fc rmctoc oo de scfdc de urn campo
• A linha 6 escreve 0 mesmo valor,masprimeiro pesquisa ' usn na tabela TCURX a fim de dererminar 0 mimero de casas decimals. 0 valor USC' I
I
DaDesta na tabela, entao a saida eformatada utiliz.a.ndo0 padrdo (duas
casas decimals). •
Quando a linha 7 e executa da, a tab ela TCURXindica que III caa tern
casas decimais e, entio, formata
0
decan
andec
Resultado ·
30. 1
o
30. 1 30.10
30. 11 30.11
1 1 1 1 1 2 2 2 2
2
30.11 30.11
30. 11
2
4
30.1100
30.1
valor sem quaisquer decimais.
30.1 30. 1234
• A linha 10 seleciona as registros cia tabela zt xlfc3 em ordem de c6digo d. empre,. (bukr s) .
3D 30 30.1
• A linha 13 eacionada sempre que 0 c6digo da emp.resa e alterado. • A linha 14 pesquisa 0 c6digo da empresa na tabela ztxtOOl a fim de [ocalizar 0 valor monetdric daquela empresa. A chave monetaria esta disponfvel no campo ztxtOO l-waers. • A linha 16 escreve 0 balance obtido utilizando 0 mimero de casas decirn ais indicado pela chave monetaria no campo ztxtOOl-waers.
2 3 3 3
o o
o
30.100 30.123400 30 3D 30.1
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 referenda do tipo UNIT; A unidade de medida para 0 valor no carD;pa QUANestara armazenada Iii. A Figura 14.4 mostra que 0 campo de referencia de ztxmarabrgewe ztxmara-gewei.
Utilizanda a ad i~ao un it A adi~ao un i t e utilizada para especificar a numero de decimais exibido para urn campo de quantidade. As unidades, como cm (centfmetros) ou l b (libras), 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 automaticamente pesquisada na tabela t006. Em seguida, as campos decan e andec determinam quantas casas decimais serjo exibidas. Os dais eoni sm urn valor numerico. decan especifica 0 mimero de valores decimais estimados em zero que devem ser truncados. Ele remove os zeros fmais e nunca truncard as casas
Entrada
i
,
J
488
D~ lH INSlRU\lO
A'RENDA EM 21 DIA' ASAP" Figura] 4 4
ztxmara- brg ew unit ztxmara-gewei,
33 34 3S 36
Se vod der um clique duplo no compo
ztxmara-brgew, ven5umo tela indicondo a tobelo d e referfndo e 0 compo.
zt xmara-ntqew, ztxmara-ntgew unit ztxma.ra-ql!wef, . ztXlllara-gewei, 85 tOO6-decan.
37
38 39
.,m
91 tOO6-andec. endse'lect ,
o c6digo na Listagem 14.13 praduz esta salda: 99 .ססOO
A Lisugem 14.13 ilu stra 0 uso dessa adi>ia .
99.1234 99. 1234 99.1200 99.1 2 99.1 99.1
EN1iAnJ.~ L1slagem 14.13 Ulilizendo e ed iC;ao un!t 1 re port ztxl(1) . 2 tabll!s : ztxlMra . t OO6. 1 data : f1 type p dec1M.1s .. vetue '99 .ססoo'. f 2 type p deci mals 4 ¥i lul! '9 9.1234' . 5 13 type p deci mals 4 value ' 99.1 200',
• 6 7
, 9
(4 type p decimals 1 value ' 99. 1', ",rH.!!:
I n,
MI00 HI0l M102 M103
'as-i s' ,
/ fl unit 'Hl', 'ml - ml1 l il iters eecen 3 andec 3'. / 11 uni t '%' . '% • percent eecen 2 andec 0' / n 'unit , - i nches decan 0 endec ) ' :
..
10 II 12 /. 13 / f2, 'as-1s' , 14 I tz unit '%' , '% ', IS '15-15 ' • / fl. 16 / 13 unit ' %' , ''1;' , 17 / fI, ' es-t s ' , 18 f4 unit '% '. 19 20 skip . 21 wr1te: /1 2 ' br gew as-is ', 22 31 ' -nth units' , 23 48 ' ntgewas-is ', 24 67 'with units ' 2S 79 'unit s' . • 26 85 ' decan', . 27 91 'andec· . 28 ul tn e , . 29 select · frtlCll ztxma l"'l . 30 sel ect s i ngle· t r Oll t 006 whe r e llIS ehi 31 write : /(5) ztxmara-mat nr 32 ztxma ra -bi'Ql!w. •
t
es-ts
99.000 .1 ~ 1I111 111ters eecan 3 eneec 3 99 .00 , - percent eecan 2 andec 0 decen 0 andec 3 99 - 1nch!!5
AHlllS! ~
as-Is %
as- is %
as-is %
brg ew I s- is
w/un1ts
102. 560 10.100
1. 000
102. 560 10. 100 I
50. 000
SO
nt gI!W
as-is w/units units decan eneec
100.000
10.000 0.000 0.000
100 M3 10 PAL o ROl o CR
0
a 0 0
3
o
o o
• A linha 8 escreve fl sem utilizar a acllljaO unt ts. • A linha. 9 utiliza a un idade ML (mililitr os). Uma. pesquisa e automati camen te realizada na tabela t006 quanta a ML. Essa liaha conrem decan 3 e andec 3. decan 3 faz com que os zeros depois da terceira casa decimal sejam remcvidos. andec 3 faz com que a ndmero de -decimais seja um na me ro multiple de tres. Nesse ponto, ele ja ~ entac a saida.eexibida utilizanda tres decimals.
• A llnha 10 farmata f l utilizando a unidade %(por cento), que tern decan 2 e andec O. decan 2 essabelece que as zeros finais depais do segundo deci mal devem ser remo vidos. andec 0 indica que naa hi mais nenhuma medificalji o e, entia, a saida sen de duas casas decimais. • A linha 11 uriliza a unidade • [polegadas}. decan 0 indica que todes as zeros de cim ais devem ser truncados. andec 3 indica. que 0 ncm erc de decimais deve ser p reenchidc com zeros para tres casas decimais.
• ztxmara-gewI!1.
•
N; linhas de 13 a 18 [o rmatam de
t2. t. utilizando a unidade %•
• Na linh a 14, decan 2indica que as zer os finais depois do segund o dlg iro decimal devem ser rru ncsdos . Nrc existe nenhum, entia nada sera
489
490
D~ lUINSTRU(iO NRlTE
APRENDA EM 21 DIAS AUP/!
t runca do. andec 0 indica que me haven ma.is nenhum preenchirnento, pcrtanto, a saida sed jcrmatada utilizandc qu arrc dtgirc s decimals. • Na linha 16, decan 2 fu. 0 truncamento dos zerosfinais.
49\
AB •• .• +• ••• 1. • • •+ • •• . 2• •• •+.•••3. .. . +. . ••4 1234567890123456789012345678901234567890 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. • Paraada, a linha 30 seleciona 0 registro de tOO6 que contem a unidade em zt xmara -gewei. Observe que issa nie ! normalmente feito. E apenas fcito aqui para mostrar as valoresde decan e andec.
• As linhas 3, 4. 9 e 10 escrevem UIIU. regua, de mod o que p ossa ver os mim eros cia colun a D.2. saida.
• A linha 5 escreve f1 utiliz.anda a formata~o e a comprim ento padrao. A fOI1I1a.Uljio padrio para uma varisvel do tipo c espe cifica um alinhamento
• Nas linh as de 32 a 35. as valores gewei e nt gew sio escritcs de dUOlS
maneiras. Primeiro, sio escrieos como sio e, entao, sse reescritos utiliz and o-se a adi~io un1 t a fun de mostrar 0 antes e 0 depois.
• As linhas 37 e 38 escrev em as valores decan e andec que cram utilizados para form atar cads
Mudgndo
0
linha.
glinhamento
Com a ut.iliza~o de l eft -justifi ed, centered e right-justi fie d, voce! pede mudar a valor de saida denero d o espa ljo distribuIdo p ara 0 campo de suda.A Listagem 14.14 ilus tra esse conceito. ENTRADA'" Listagem 14.14 Utilizando as cdil; 6es de alinhamento para a instruc;co
a esquerda,
entao a. safda apareced alinhada i esquerda
dentro de seu comprimenro de saidapadrsc (6). • A linha 6 produz a mesma saida porque tambem especifica nhmlent.o a esquerda.
0
ali-
• A linha 7 centraliza 0 valor deat rc do com prim ento de saida pad.rio de 6. • A linha 8 alinha a direin 0 valor dentro do comprimento de safd..a. padrac de 6. • As linhas 11, 12 e 13 especificam urn comprimento de saida de 40. 0 valor e entao alinhado a esquerda, cenrralizadc e alinhado a direita dentro daquele co mp rimento.
,.. write
Resu ro o 1
rep ort ztx1 414.
2 data : 11(6) val ue ' AB'. ' .... +.... 1' .
3 write : / 4 /
' 1234567890 I • fl. f1 left-justified,
5 6 7
/ / /
8 9 10
/ f1 r1ght .j usti f 1ed. / ' .. .. +.. •. 1. • . . +. •• . 2• ••• +. . .. 3. • •• + .. .. 4', / ' 1234567890123456789012345678901234567890 ' , /(40) f1 left -just i f i ed. / (40) 11 centered. /(40) fl r19ht·ju s t i f i~ .
11 12"
13
de dados do AEAP/4. O s campos do DOle s.o baseados nos tipos de dado s do AJ3A P/4 e, assim sendo , herdam
fl cent ered ,
o c6digo na Listagem 14.14 produz esta saida: •• ••+.. . . 1 1234567890 AS
A. A.
• Se voce nio estabele cer qualquer especificacac de formato ou de comprimento na instru~ao wr1 te l 0 formato e 0 comprimento padrao do campo seraoutilizadas. Es ses padroes sao originados a partirdos tipos 0
formato e a cc mprimenro
padrac. Alem disso, as especificacces de formate, como ntim ero de casas decimais e comprime nto de saIda eambem podem ser especificades no domfnic; estes anul am os vaIore s herdad os. •
Os cam pos de dat a e hera serac exibi dos com separadores, se exiscir espacc suficiente para eles no campo de sa.!da. Se nao existir, os separadores serio completamente removidos . Em um campo numerico, os separadcres de milhar sio removi dos, urn par vez, comecandc cia esquerda do campo em direljaO a direita a fim de exibir mais djgit os. A te mesmo 0 campo de sinal sen utilizado se 0 mesmo estiver em branco.
• Para a maioria cbs especificaljoes de form a.t o de data, 0 pad.rio do 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
deversc ser formatados. De tcdas as especificacces de formato de data, somenre yyrrmdd anulari ccmpletamente 0 padrao do usudrio. •
P&R
o
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 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 especifique uma sarda de conversto. A safda de cocversso INPUT conven e a ent rada do ususrio para um novo formate antes que 0 programa a receba. Eurilizada pan reduzir a quantidade de c6digo repetitive necessaric para farm atar novament e urn valor de entrada, de modo que a prognma que 0 utiliza nao tenha que fazer
• Utilize no-zeropara suprimir zeros iaiciais nos campos do ripe n e tipo c.
• Utilize no-sign para remover 0 campo de sinal final "da exibi~ o. • Utilize decimals para especificar devem ser exibidas.
0
mimerc de casas decimals que
isso.
• Utilize round para. indicar a posifiao do ponto decimal no valor.
o o
• Utilize currency para especificar 0 numero de casas d.ecimais para os campos de quantia moneciria. currency pesquisa 0 c6digo monetaric 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. • Utilize un i t para [ormatar as campos de quantidade. A uaidade e pesquisadana rabela t006.decan determina 0 ndmerc de zeros decimais a ser remcvido e andec determina 0 namerc de zeros a ser adicionado. I?fgitos decimals diferentes de zero nunca serao removidos. • Utilize left -just ified, centered e right-justified para alinhar valor dentro do comprimento do campo de salda,
0
---=-------
I Fa~a
Permitc que cs usudrics es pec fi quern sevs pr6prios fonnotos de ~oto. Utilize as scldcs de ccrwersec para executor torefos de formotec;oo repefitivcs, especiolmente se forem com plexes.
Nao ccdlfiqve demcis decimals 2 perc
quon tios em d6la r. Por suo vez, utilize a odic;oo currency, Nao ccdrhq ue demais duos casas declmcts para % ou parc quo lquer outro unidade de medidc . Por suo vez, utilize a odiC;ao unit.
Observei que existem tambem modules de fun~o com os nomes CONVERSION_EXIT_XXXJO(_INPUT . Para que servem?
Como criar um a salth de conv ersio? 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 souber como criar urn m6dulo de fun fiao, erie urn com a nome CONVERSION_EXIT_XXXXX_OUTPUT cede XXXXx ccrrespocde a urn Dome-com cinco caracteres por voce definido. Deve haver urn parlmetro de iraporracac denominado INPUT e um pargmetro de exponac;aodenominado OUTPUT. 0 valor original passado da instnlfiaO write erecebido arraves do parnneer o INPUT. Voce pc dera 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.
Workshop o Workshop cferece duas maneiras de voce verificar 0
que aprendeu neste capjtulo. A seljaoTeste oferece perguntas pan ajudar a solidificar seu entendimento do coneeedo abcrdadc e a se~o Exercicio permite que voce pratique 0 que aprendeu. Voce pode encontrar as respostas as perguntas do teste e aos 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?
493
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 internas
0
processamento de quebra de controle em tabelas
• 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, endof -sel ect ion, top-of-page e end-of-page. Voce tambem codificars subrotinas 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, newpage, 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 referaacia, par valor e par valor e resultado; e pass ard strings de campo e tabeles internas uma sub-rotina.
para
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 exporta~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 as icon as 11 ne
hllpJ l www.corTlPus.com.bl.
Exibe urn simbolo em pretc-e-brcncc Exibe um ko ne"decor Exibe urnccrcctere de desenho de linho
........
-FFFFFee ~
_~
500
•
enmnnn
-~~
nn
n
APREHDA EM 21 DIAS ABAP/4
' t axe p a ra as a d'u;oes ' - wrJl t e S 10 g ra' f leaS pa ra a ,lOSt rU~ao ~
write n1 (a)
~
(b)
IS
icon.
~
(e)
IS
line .
illS
•
/4 sYD'_ fi1led_squaT"l!
11
iymbol.
iI.S
s)'lllbol, ' KHAl ' , 'KHBl',
/4 sym_fill ed_square as symbol. / 4 s)'lLfilled_square as symbol.
10
'KNCl' •
lZ skip.
13 ul tne . 14 se lect · liP to 5 rows f rom ztxlfal. 15
m
onde:
T
• As adic;oes (a) , (b) e (e) sao mu ruamente exclusives. •
nl
e 0 no me de urn sfrnbolo, {cone au caractere 11ne-dres.
write : / ztxlfal - l1 f nr ,
16 17 18 19
ztxl f al-namel , sytl.Jlhon e as symbol, ztxlfal- t elfl.
endset ect .
o ccdigo D' Listagem 15.1 produ z a sald. mcs trada D' Figura 15.!. Utiliza od o a lOyD ....
m.o ,.
Urn
adi~ao s{mbolo
as symbol
e urno figure
blcclcr simples
de
• As linhas 4 • 11 escrevem urn. lista de Domes de rabela dificil de codificar na forma de marcadores.
urn simbolo comum como urn
quoclrcdo, urn d rculo, urno po sta ou urn documento. A moiorio dos sfmbolos 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 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 seguintes na parte su perior de seu program a: inc:lud. <syrd,lol:> .
• As linhas 14 a 19 escrevem codigcs, nomes e c ame ros telefcnes de fabricantes precedidos pelo simbolo de telefone.
Utjlizaodo a
ad i~aQ
as i con
Um fcon e_tsemelhonte 0 um sfmbclc , excetc pelo fato de que e umo nguru 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 instrv¢o write que escreve urn leone serio write 1con_l ed_red as 1con.
IOVO .... lEUO "
ou i ncl ude <list> .
Tcdos as s!mbolos sao imprimfveis. Isso significa que se voce enviar sua safda p ara a impresscra, eles aparecerio no papel exatamen te com o voce os ve online .
M OYO.... TEi.ll:O"
5 6 7 B
ou t nclll de <l1st>.
ccntem um
ENTRADI ~ ListCl gem 15,1 Sfmbolos porc exibi~iio 2 3 4
include <icon>,
0 nome entre slncis de maior e menor e urn progroma ind ude. Esse progromo
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> co ntem sfmbolos, leones, ccrccteres de desenho de linhc e definit;Oes de cor. A llstcqern 15.1 contem um progromo de exemplo que utilize simbolos .
1
Para escrever u m leone, voce deve incluir uma das duas insrrucoes seguintes na parte superior de seu programa:
re por t ztx1501 . include <syrrtlol>. t ables ztxlfll. wri te : I sy:nJllus_box as symbol , ' Vendor Ma ster Tables', /4 sym fi ll ed circl e as symbol , ' LFAl' , / 4 sym)111e(cin::le as symbol, ' LFBl' , / 4 syrn f i ll ed ci r cle as symbol , ' LFCl ' , / sym~l us_b~x as symbol , 'Customer Ma st er Tabl es ',
N em todos os leones sio imprimfveis. 0 procediment o para determinar quais podem ser impress os segue mais adiante oeste capitulo. A Listagem 15.2 escreve alguns Icones de exemplo.
EKTUD.l~ Lista gem 15.2 Como escrever kones em uma listc 1 rtport zo.1502. . 2 in cl ude <icon> . 3 tables: ztxmara, ztXllgef . 4 data f co 1i ke i con_generate .
5 6 write : / 'checkmark '. 7 / ' r ed x" ,
15 ico n_checked es icon , 15 ico n_tncOJlPl ete as icon,
,...-, 77
502
euIS.TtCNICASDE FORMATA\lD,PAlm1 503
APRENDA EM !1 DIASABAP/4 8
9 10 s kip . 11 ul tne. 12 skip . 13 wr1te : 14 ul1ne .
I I
' o'll!!!n 1@w '. 15 icon_overview as .1con, ' t i lDe peMod'. 15 ic onJll!Mod as teen.
F i g u r a 15 2
Este e IHTl exemplo de sardo de listo ccn1endo fccnes.
I
' U st of Materi a15 wi th Rad;cect t ve Jndi cat or -s ' •
15 select * f l"Olll l txmara . 16 clear tee. 17 18 19 20 21 22 23 24 25 26 27
1f not ztxmara·stoff 15 initia l. select sing le * from ztxmgef where stoff " ztxmara·stoff . if ztxmgef-lagkl .. 7 . 1co .. ico"_!ll!neratl!. end;f. endi f . wrfte : lieD as teen , ztxmara-matnr. zt xmaraellt art , ztxlIIara.matkl. Itxmara -brg!'W.
ztxmaraentg!W.
28 29
30
SiiDI ~
ztXll\ilri!l·9~i .
• As fuLhas 6 a 9 escrevem um exemplo de quatro leones diferentes.
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 like.
o c6digo na Listagem 15.2 produz a safda mostrada na F igura 15.2.
• 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
• A linha 19 deeermina se 0 material e radioativo. Se for, endo id entificado como i con_gener at e e at ribu ldo avaridvel tcc.
Este e um l!xomplo de sardode listo COllftondo
sfmbolos.
0
Iccne
• 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
Um coradere de desenho de linho e um ccrcctere que pod e ser utilizodo para 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.
NOYO '" TElMO r
>
:
.,"~" ;;-, _,., ",;_ ._~ _,, ~,:,; ,; , ; ; .;. cjili>!!~ c •••
. .. ."
.
Em geral, para criar uma linha horizontal, voce utilizaria sy-ul i ne. Simplesm 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 comprimenta 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 escreveria uma linha vert ical em qualquer lado de urn X. Se houver uma interse~ao I
I ,
_ _ aa 504
!
A,m DA EM 21 DIAl ABAP/4
de linhas na salda, 0 sistema. inseriri 0 caractere apropriado de conedo. Per exemplo, onde a borda de uma lioha horizontal e vertical se encontrarn, urn canto de caixasera desenhado . Para proporcionarcontrole absolute de: desenho de linha ha caracte res 1t ne-draw adicionais disponfveis .
•
j
mm·
_
-
D~ 15,OOIGlS IlE FORMA14>,O,' Arn 1
o c6di ga na Listag em 15.3 praduz a safda mostrada na F igura
15.3.
• A linha 2 inclui as defini~6es para to dos as s!mb olos e caracteres de: 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 1 report ztx1S 03. 2 i ncl ude <list> . 3 tables : Ztll fal, ztxlfhl . ztltlfc3. 4 dat a: l 1nel l1ke I 1ne_hor izontal_line , 5 l1ne2 11k1! li ne_horizontalJine. 6
7 select 'It fl"Olll ztxlfal. select singl e " fl"OOl zulfbl where l H nr • ztxl f al· l1fn r. 8 if sy-subrc " O. 9 10
11 12
13 14
15 16 17
18 19
20 21
22 23 24
25 26 27
28 29 30
31 32
33 34
35 36 37
38 39 AD 41
42 43
wrtte: I sr - vl f ne , s)'Ill_ope"_fold er as s~o1. else. write: I sy-vltne , sY"Lfolder as symbol. endif. writ e: ztxlftl -l1 fnr. 30 sy- vl tee . select" from ztAlfbl where 11t nr • ztxltal·11tnr . select single li fnr f1"Olll ztxlfbl i nt o (ztxlfbl -lf fnr) where 11 fnr • ztxl fbl -lt fnr and bukrs > ztxlfbl-bukrs . i f sy-subrc • O. Hnd • line_1eft _nri ddle_corner. l1neZ • l1ne_vertiea l_l1 ne. else; li ne! • l tne..bottclIUeft_corner. cle ar l tnez, endif. write : / sy-vBn e. 4 li nd as lt ae, zt xl1bl-bukrs, 30 sy- vj tn e, select * from zt xl fc3 wher e 11fn1' '" ztxl f bl · l1 f nr and bukrs • ztx1fbl-b uk1's . write: I sy-vttne, 4 l1ne2 as l i ne, 8 li neJ eft_lli ddl e_comer as line, ztx l fc3-gj ehr, ztxl fc3-shbkz. 30 sy~vl fne. endsetect , if sy-s ubre • O. write 8(Z) line_b ott cm) eft_corner as li ne. end1f. endselect. write: /(30) sy-ult ne. endseleet ,
desenho deliaha,
• A linha 7le todas as linhas de zt xlfal. • A linha 8 Ie zt xlfbi para ver se ha qualquer registro-filho para a registro ztxlfal atua]. Figura 15 3 EsIe Ii urnexemplo de safda de listo
contendo corocteres de desenho de linha.
• Se existirem registros-filhcs, a linha 10 escrev era uma linha vertical e urn slmbolo de pasta aberta. Se nc nhum fa r lo calizadc, serio escriras urna linha vertical e pasta fechada. • A linha 14 escre ve 0 ntimerc de fab ricant e na mesma linhae entaa uma linha vertical. na posi~ao 30.
• A linha 15 11 as regisrros-filho s de zt xlfbl. • A linha 16 olha na fre nte para determiner se este ~ filho au se hi rnais.
0
_
rr
ultimo registro-
• Se h ouver mais regisoos-filhos, a linha 19 configu ra a variavel 1; nel para armazenar urn caractere de desenho de linha de canto esquerdo de meio, e l i ne2 para armazenar uma linh.a vertical. Sy-v1tne poderia ter side utilizade aqui em vez de 11ne_vert1ca1_1t ne.
505
--------4-----------------.f 506
DIl lS,ITCNIClS DEFO....Tl(lO,p'mI
I 'PRE NO' EM 21 nus "'P"
!l
I.
~I:
1 re port zo 1504.
• As linhas 30 a 37 escrevem as filhos do registrc ztx lfbl atu al utilizando caracteres de desenh o de linha aprop riaclos.
2 include el tst>. -def1n1t;lles para {cones , sflllbolo s + desenl'lo de linha
3 t abl es: zUlfi l. ztx lfc3 . 4 data : it 11ke ztxlfc3 occur s 100 wit h header line . S ;co_' 11ke 1con..9ree n_' ight.
• A linha. 42 escreve urn subliohado com urn comprimento de 30 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 disponiye;s
8 l oop at it . g
1f tt - se'lev
Utilize os pass os 1 a. 8 do procedim ento a seguir para exibir os sfmbolos, leones e caraceeres de desenho de linha disponfveis. Seguindo to dos os pass os, voce ira gerar uma instruCJao write que escreve 0 item selecionado na lists .
10 11 12 13 14
1. . C omece edinndc qu alquer program. no ABAP/4 Editor. Vace deve
15
1coJ • 1co"_gre en_li ght . el set f 1t~sa ld v betwffi' 1000 and 3000-. fcoJ .. 1conyellow_l1ght. else. 1coJ • i co!,!_red_l1ght. end1f . at new 11 fn r. ff sy-tab1X ~ 1. write: / 5(82) sy-ul1ne . 19 lfne_bottOlll_m1ddle _corner as li ne. 21 l1ne_bottlJll_middle_corner as li ne. s lt:1p• endt f , write: /S{lS ) sy-ul t ne, / S-sY- vl1ne . sYIK_docurr.ent s IS symbol . ft. ltfnr. 19 s1-vt.ine. / 5(82) sy-uli ne. 19 line cross as Jtne , 21 l1ne=top_middh_corner as line . endat . write: / i co_l as icon. 5 sy-vt t ne, ft ·bukrs. sy-vltne. it-gjahr. U mU ef tJ l iddl e_comer as line no-gap. 1t - shbkz no-gap, l1 neJ1 ght _1I1ddle_coTner as li ne. t t -saldv,
1.6
estar na tela ABAP/ 4 Edi tor: Edit Program XXXXX. 2. C oloque seu curs or em u ma linha em bracco.
3. De um clique no boeso Pattern au escclba 0 caminho de menu Edit-> Insert Statement. 0 sistema exibe a tela In sert State ment.. 4. Selecione 0 botao de opCJio Write.
5. De urn clique n o bc tac C on tinue. 0 sistem a exibe a tela Assemble a Write Statem ent. 6, Escolha Symbol. Ico n ou Line. 0 cursor no campo de entrada a direirado batao de op~ao que voce eseolheu.
7. Coloque
8. Pressione a reels F4. 0 sistema exibe urna lista dos itens disponfveis. 0
lev.
de volta atela. Assemble a Write Statement.
10. De urn cliqueno borao Copy.Voceeaeac volta a tela ABAP/ 4 Editor: Edit Program XXXXX, e uma instru~o wri t e einserida qu e escreve o item .
~o
1
507
EHTiA DA ~ Listagem 15.4 Simbolos, leones e caraderes li ne-draw
• 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.
9. D c urn clique duplo em urn para escolhe-lo. 0 sistema entjio
!
Nem todos os leones podem ser impresses. Q uando voce as edbe utililondo as possos cntericres, voce pede ve r que as imprimiveis estOO mercedes no llstc.
•
11 18 19 20 21 22 23 2~
25 26 27 28 29 _.30
31 32 33 34 35 36 37 38 39 40
SliDA ~
<
1000.
it-son 1, 1t -hebnt , sy-vl t ne. at last . write / 5(84) sy-u 'l t ne. endat. end1 oop.
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 [
•
• Controlar 0 tamanho de pagina • Titulo! de relatorios, cabecalbcs e rodapes
k especifica 0 mlmero de linhas reservado para urn rodap e na pa.rte inferior de ca.da pagina.
• Nao ccloqce t , j ou k entre aspas.
• Posi~o comum e ic.stru~6es de formata~io Fiou r a 1 5 4 Este iii um exemplo de sardo de listc contendo sjmbolos.
Utilizando 1; ne- s t ze e 1; ne-count Por padrso, a largura cia lista de safda ~ iguall. Iargura maximizacla cia jaaela, 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 .
fconrs e eereeees
de desenho de /inno.
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.
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! pode utilizar 1i ne-count para anular esse ndmero. Por exemplo, peraesp eciflcar 55 liahas por pdgina, digite re por t line- count 55. Especificar 1i ne-count 0 . significa utilizar 0 maximo (60.000). usu dric pode esp eciflcar 0 ntime ro de linhas por pfgina que apropriado p ara a imp ressora qu ando imprimir 0 relat6rio.
Controlondo a tomonbo de p6g ino Para contr olar instru~ao
0
tamanho da p f gina de safda, utilize as seguintes adifioes na
report:
•
line-si ze
•
11 ne-cou nt
a
A adifiio , i ne- s1ze con trola a largu ra da lista de saida; 1i ne-c cunt ca ntro la 0 mimero de linhas por pagina.
Sintaxe das report
adi~6es
1i ne- s t ze e 1; ne-count para a
Vocetcrnbem pede configurar 11 ne-count no meio do relat6rio, assim
i nstru ~60
A sintaxe das adifioes l i ne-s ize e li ne-count para a instrucic r eport segue :
p6ginas diferentes podem fer numercs diferentes de linhas de sclde .
Para fozer isse, utilizec instnJ¢ o new-page (obordada mais cdlcnte). Esta tcmbem pede ser utilizada para configurcra numerc de llnhcs per pcgina a ntes de quolquer scldc ser gerodo.
e como
r eport ltne-st ze 1 l1ne-count j(t) .
e
onde:
• • •
t ,J e k sao con stan tes num ericas. Variaveis nio sio permitidas. i especifica a largura cia lista de saida (em caracteres). j
especifica 0 numero de linhas por pagina na lista de saida.
e
"
1t ne-count mo ncrmalmente ueilizadc com rela t6rio s que sio visualizados online. Por exemplo, suponha que a R/3 incrementasse a numera~a.o de pagina cada vez que voce pressionasse a tecla Page Do'NIl. Se 0 ususrio gerar 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 dificil fazer regras sabre Dumeros de pigina online. vocep oderia tentar deixar
509
._ .;. ~:.
.
~p'rR£~D-A. EM 21 DIASABAP/4
~.::~~'-'
~ ~, .
DIA 15, TtoHCAS DE FllRliATAIiD, PAm 1
INluSE ~
wnanho de paginaiguala altura de janela quando 0 relat6rio for execuradc. Mas se 0 usudric redimensionar a janela depois que a relatorio foi gerado , as quebras de pdgina eao mais correspoaderao com a altura da janela, 0 usu drio 0
~7,-:" }'
veri lacunas na salda e no inicio de paginas no meic da janela, Pan evitar esses
visao a direita,
problemas em relat6rios online, utilize a valor pad rsc para 1tn e- count. A Listagem 15.5 mostra urn programa de exemplo que ilus tra 0 usc de li ne-count el ine-size.
EHTU.OA~ LLstagem 15.5
• Na linha 1, 1i ne-cou nt configura 0 numerc de linhas par pigina como 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. 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 de pdgina sairao iaccrretas. N cvamente, uti.l.iundo 0 padrac 1inecount , esse problema pode ser evirado, porque 0 usuario especifica. 0 mimero de linhas por pigim quan do selecionar uma impressora.
li ne~ co unt eline-s ize
1 report ltx150S line- si ze 132 li ne-count 55. 2 tables ztx lfc3. 3 select· 1I'"0Il ztxlfc3 order by l t t nr bukrs gjahr shbkz. 4 on change of ztxlfc3-1ifnr. 5 write I ztxlfc3-1ifnr. 6
7 8
.
eoecn.
write: / 20 ztxlfc3-gjahr. ztxlfc3-shbtz.
12
ztxlfc3~saldv .
13
ztx1fc3~sol11.
14
sllDI ~
ztxl fc3-habnl. endsetect ,
o c6digo na Listagem 15.5 produz a ,aida mc strada na Figura 15.5.
5 Este l! 0 efe/todo FIgura 15
odi)60
l me-count,
0
saida de lisla
Inicie a ScreenCam "How to Print list Output - agora, P ara imprimir a. saf&t da Listagem' 15.5, prime iro execute a relat6rio e entio siga este procedimento:
endon.
10 11
15
Imprimindo
on chanYI! of ztx1fcJ-gja hr . wri te / 10 ztx l fc3-bukrs .
9
• N a linha 1, li ne-size configura 0 mlmero de cclucas de safda co mo 132. Isso configura urn mimero fixe de colunas de safda in dependentemente da largura da. janela de saida.. 0 usudrio pode urilizar a barn de rolagem na parte inferior cia. janela pan ver a sarda fora de
•
1. Da.lista de safda, de urn cliqu e no batao Print ria barrade ferra mencas Application. Se nao estiver disponfvel, escolha 0 caminho de menu System->JJst->Print. A tela Print Scre en List sera exibida. 2. No campo Output Device, digite a dOl sua impress ora. Voc! pode obter uma lisa de codas as impressoras defini das para seu sistema colocando seu cursor nesse campo e enta~ pression an do F4.
m
3. Coloque urn rnarca de sele~ao na caixa de selecao Print Immed. 4. De urn clique no batao Print na barre de ferrament as Application . Voc! volta para. a lista, e a mensagem Spool r equest (number nnnnn) 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.
511
512
D~ 15,OOICAl DE FOWnl.io.PAJrrE 1
APlENDA EM 1I DIA' ABAPI4
Se voce Ilio co locou a mara de seleCjao D elete After Print na tela Print Screen List, a saida permanecerd no spool. Isso permite a voce reimprimir mais tar de. Isso ~ l1w se sua impressora ~ m.wta personalizada,
Pore envier urn rel0t6rio para multiples impressoros 00 mesmo tempo, pecc para a seu consuher de Basis instclcr um poo l de impressorcs
(ere deve executer 0 rel0t6rio RSPOOO51 primeiro,e entao definir umc 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.
Tra ba lha ndo com
0
513
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:
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 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 a. excluir au imprimircom a opc;ao de exclusao ativada (acaixade selecac Delete After Print na tela Print Screen List), ou iite que envelheca a suficiente pan
• Evento top-of -page
Criando ccb ecclh os de p6gina pad roo Uti!izar cabecalhosde paginapadrao E a maneira mais facil de criar cabecalbcs 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 com seu consultor de Basis. Para. ver a safda no spool. utilize 0 seguinte procedimento. SCiEEHo.M~ Inide 0 ScreenCam -Worlcing with the Spool- og~ra.
1. A part ir de qualque r tela, escolha 0 caminho de menu System- > Services-> 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
no campo User N ame), e as campos Client e From Date em geral
.•
Esse procedimento rico funcionorO ~ voce chercr seu progremo e tentor esse procedimento sem sa lvor suos o lte ~Oes primeiro. Quando 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 sa lvo SUO$ olteroCioes, porque dessa forma no reclldc de est6 executendo 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 noo 0 deixor6 eltere-le. ... lnicie a ScreenCom "How to Cre ate Standard Report Heo de rs from the Us!" .
SCRE!HClM,. ogo"' .
sao suficien tes .
3. Pre ssion e Enter; A tela Spool: Requests e exibida. Ela contem uma Iisu das ent radas que correspondem com 0 spool. 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. 5. Para exibir a. safda para miiltiplas entradas, coloque urna mara de selec;io ao lado de Multiple Entries ou utilize 0 caminho de menu
Edit-> Cboose All. Entio de um cliqueno botio Display. A primeira entrada e ex.ibida.Para ver 11 pr6xima entrada, de um clique no botao Next Spool Request na barra de ferramenus Application. Para ver a entrada de visualizac;rao, de urn clique no botao PrevoSpool Request. 6. Para imprimir uma entrada. de um clique no b otio Print.
I . lnicie a partir da tela AJ3AP/4 Editor: Edit Pro gram. 2. Se voce mer qua.lquer alterac;ao, salve seu relat6rio . Como mencic nado DO Ultimo quadro de Cuidado, voc e tkve fazer isso para as passes seguintes funeionarem. 3. Execute a relatorio. Vo ce entio ve a sa!da de lista. 4. Escolha a caminho de menu System- > List-> List Header. Os campo s de en trada aparecem na parte supe rior do relat6rio - om para a
cabe?1ho e quatro pan cabe<;alho. de cohm.a. 5. Digite uma lista e as cabec;alhos de coluna n os campos de entrada em branco. 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
1 anguage E apuece. Isso signifies que voce veri as novos cabecalhos cia pr6xima vez que execurar esse programa.
7. De urn clique no botio Back duas vezes. Voce volta a tela ABAP/ 4 Editor: Edit Program. 8. Execute 0 relat6 rio acvamenee. Voce vera seus novas csbecalbcs na parte superior da said a, Voce po de estar se perguntando: afinal, onde esses cabecalhcs sao armazenados ? E mesma se nao estiver, voce descob~iri isso de qualquer jeito a segurr.
NOVO....
Os ccbecclhce qu e voce cccbou de fnsertr see ormozenodos com seu progromo
r
como elementos de texto. Um e lemento de teste e quolquer string de ccrectere 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 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 exemplc, ccbecelhcs de relot6rio) sl!!lio crmceeocdc seporodo men te do c6dige>-fonte como elementos de texto. Esses elementos podem ser traduzidos sem o ltercr 0 c6d igofonte . Neste s~60, estamos trotondo especiftcerrerrte dos elemen tos de texto de relctoric e ccbeccthcs de cclu nc , mos tombem he outros que serna trotcdos mc ls odlcnte.
lEUO
e
!
I
I !
I I i,
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 exibida. 6. Execute seu program a. Seu tftulo e os cabecalhos novos aparecem na parte superior do seu relat6rio. Os elementos de texro tambem podem ser acessados a partir cia ABAP / 4 Editor: Initial Screen escolhendo 0 bcuo T ext Eleme nts, e en tia dacdc um clique no bou"o Change. Voc! pede achar util revisera se~ao nos componentes de um programs de ABAP/4 neste ponto (veja a Figura 2.1 no Die 2, "Seu primeiro programs em AJJAP/4") . FigurA 15 6
&to tela c:ontem OJ elemenlos de IeldO
idles eo Headers podr60.
i
!
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 Goto->Text Elements. A tela ABAP/ 4 Text Elements 6 exibida. 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 do titulo que voce digit ou na tela ABAP/4: Program xxxxx A n ributes. Se a campo List Header estiver em branco, 0 campo Ti tle e exibido na p u te superior cia lisra. a campo List Header permite anular 0 campo Title e especificar um cabecalho diferente do titulo 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. 0
Para reviser, na tela AJJAP/4 Text Elements: Change Title An d Heading, 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.
Traduzindo as elementos de teldo C riar d tu los e cabecalhcs como elementos de tex to permite que des sejam tnduzidos em idiomas estrangeiros, norma.lmente po r alguem especializado na tradu~ao de termos tecnicos au especlficos d.a. indus tria. Nesca secio , voce pede experim entar isso se tiver uma ideia do pr ocesso.
515
I ;1
il t,
j! 1
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.
DIA 15, TtOlICASOHORlllTAIio. ' AIUE 1
r
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-> Translotlcn-c-Shcrt/Lcnq Texts.
S(mNCAM~ Inicie a ScreenCom "Tronsloting Titles and Headers- agora.
1. A partir da tela ABAl'/4 Text Elements: Change Title and Heading,
517
Utilizando v~riaveis em ccbecolhos de pagina padnio
escolha 0 caminho de me nu Gorc-e-Translation. A tela Target Language For Translati on e mostrada.
4. N os campo s que con tem urn caractere de sublinhado, digite a textc da sua tr aduljao para. 0 alemso. Se voce nao souber a idioms, simples mente substirua to dos as.Ietras C par K e utilize diversas frases que terminem com Strudel ou que contenham a nome Wolfgang.
Voce pode utilizar a.te 10 variaveis nos tftulos de pdgina padrac para urn programa. Em seu programa, atribua valores as variaveis identificadas como sy-tvarO ate sy-tvar9. Nos tirulos, utilize os nomes de varisveis &0 a' &9 correspondentes as varaveis sy dentro do seu programa. Por exemplo, se no programa voce codifica sy-tvarO = I M I e sy-tvarl = I BB I , &Oseclsubsu tu ido par AA e &l sera substiruido por BB no cabecalho. Embora. cada varavel sy-tvar possa armazenar urn valor com ate 20 caracteres, 0 comprimento de salda da varidvel e 2 por padrio. Isso signifies que, por exemplo, onde quer que &0 apareca no cabecalbo, exatam,en,te dois espacos sao reservados para. ~ valor de sy-tvarO. Se 0 valo r em sy·tvar O~ I A'•. aparece I A'. Se 0 valor e I AA I , aparecerd 'AAI • Se 0 valor e I AM I J aparece ~ AA I • a comprimemo de saida pe de ser aumentado acrescentando- se pontos no fim. da variavel de safda. Par exemplo, para aumentar de 2 pa ra 4 0 comprimento da sarda de &0; codiflque &0 .. (dois pontos foram acrescentados). Para aumentar 0 comprimento da salda para 7 acrescenee 5 pontes ( &o • • ••• ) . Allstagem 15.6 contem um programa queutiliza ti'tulos de pagina p;.drio 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.
2. No campo Target Lan gua ge, escolha 0 idioma para
0 qual voce quer tr aduzir seus elementos de rexto. a idioma escolhido anteriormente pre cise ter sido ins talad o em sell sistema peIo seu consultor de Basis. Deutsch (alemao) ~ instalado em cada sistema, porque e a linguag em Mestre para to dos os sistemas R/3. Portanto, escolha D (Delf.tsch).
3. DS urn clique no bcu c Translate. A tela Translate Title And Headers Fo r Program xxxxx ~ exibida..Nessa tela esca, 0 nome do campo, urn campo Remark em.que a tradut or pode inserir comentarics, seguidos pelo texto original e urn campo de entrada. para a traducio. Quando em branco, esse campo de entrada contem urn caracte re de subli-
L
nhado.
mais traducoes a faze r, vccs permanecera na mesma tela. De urn clique no bosao Back para v.er a proximo conjunro. Quando nao houver mais texto a ser tradu zidc, 0 sistema 0 levari de volta a tela
ABAP/4 Text Elements: Change Title and Heading. 6. Agora efetue logon novamente, mas dessa vez digite 0 no campo Language na tela de logon. 7. Execute seu programa. as tftulos traduzidos aparecerao. Se exibir os arriburos de programa, voce vera 0 titulo traduzido na tela ABAP/4: Program attribute xxxxx. Todas as tra ducoes sao armazenadas em urn pool de propostas, do qual 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 automaticarnente lhe oferecera as tradufioes anteriores. Voce entaa deve salvar a nova au selecionar uma anterior.
EHTRADA~ Listagem 15.6 Voriove;, em cobe,olho, de peg;no podr60
i
,I i, ,i .
1 report ztx1506. Z tables ztxlfal. 3 parameters: p)andl like ztxlfal-lanal default ' US1 • 4 sy-tvarO· sy-uname . 5 write: sy-datum to sy-tvarl. 6 sy-uzeit to sy-t varZ. 7 sy-tvar3· pJandl. a select * from ztxlfal where 1andl • p_landl. 9 write: I ztxlfa.l·l1fnr. ztxlfal-namel. 10
endselect ,
OL\ I~ rtCHlClS OEFORlIATl\AO, PARTE 1
portJ 0 progroma
ztxJ506.
i
il ,
o c6digo na Listagem 15.6 produz esta safda: sliol ~
KEHGREENWOOO
' 1998/ 05/ 05 19,40,Ja
Country Code: US
1040 1080 1090 ZOOO VI V2
Mot her baarns Inc. Si li con Sandwich ltd. ConSlIlle Inc. Moni tors and More ltd . Quanti t y First Ltd . OverPriced Goods Inc.
V3
Fl uf f)' Bunni es Lt d. Moo l 1ke a Cow Inc.
V4 VS V7
.
WolfJnan Sport Accessories Inc. The Breakf ast C1 ub Inc .
• A linha 3 define p_1andl e solicits ao usudrio urn valor. •
519
• Na Figura 15.7, &0 . . . •. •.. .. indica o nde 0 valo r de sy-tvarO apare.cera. Os pontos aumentam 0 comprimento cia safda da variavel de 2 para 12. &1 • ••• • • •• indica onde 0 valor-de sy-tvarl aparecera, &2 •••••• indica onde 0 valor de sy-tvar2 aparecera e &3. 0 valor de sy-tvar-S . Os pontos .aument am os comprimentos de safda para 10, 8 e 3, respecrivamente.
Flgnrn 1 5 7 A leTa N3N'/4 T~ EletTWMIs: Otonge Til/I! andHeading "
I
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 rmatado co m separadores de acordo com 0 perfil do usuaric.
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 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. Tteulos manuais, entretanto, nao tern essas limita~5es.
I
Pa.ra ~.titulos manuais,voce precise
i•
•
I i
1
I
• Utilizar 0 -eveaeo top-af-page para criar ueulc s personalizados. Para desa:tivar as atulos padrio de pdgiaa, voce adic ion a no standa rd page headi ng ao fim cia instnl~ao de relat6rio. Um evento no ABAP/4 ~ como uma sub-retina em o utros linguogens. Trctc-se 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 chomodo pora um eveotc. Em vez disso, 0 sistema adono 0 evento po re vocA quondo umo condi«;ao espedfi co surge.
NOVO ltrr...
lUIO
t
I
I i!
Desativar cabecalhcs de pagina padrio.
r
o evento t op-of - peqe e acion ado quan do a primeira ins truliao write 6 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
esse processo.
EHIDOA~ Ust agem 15.7 0 evento top-at -page 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' . 5
• A linha 6 fermata a data/hera atual e mov e pan sy- tvar2.
, top-of.page.
•
7
wnte :
8
u11ne .
A linb a 7 atribui
0
valor que foi inserido pelc usuario a sy-tvar3.
I
' My ', f1.
• A s linhas 8 a 10 escrevem urn relat6rio simp les de fabricantes.
"j. c.....
r7ti:
.A-
,.0.
---:.~
520
IlIA ,s,r!a<IClS DE FOiMATA(lD. PAm1
APIEHDA EM21 DIASAWl<
!
SAiD.l~
A Figura 15.8 mostra a. safda para a Listagem 15.7.
ANiusE ~
• Na I.i.o.ha I , a instru~io repor t contem a adic;io no standard page
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
I
As linhas 7 e 8 enti a SiD executadas, fazendo com que My Tit l e seja escrito na primeira linha da lists, seguido por urn sub linha do (escrito pela ins trulii o 1I1i ne n.a Iinha 8) . 0 processamento entia reto rna para a instrur;io wr t te na linha 4 e Hi ~ escrito para a linha 3 da lista de safda. 0
progr:una termina e a saida
• 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. • A instru~:io write na linha 4 aciona 0 evento top- cf-peae na linha 6.
• D epcis que linha -4 foi executada, moscrada.
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, dessa forma. ecrac des po dem ter rodapes de pagina. Para. eriar os rodapes de pdgina voce precisa:
e
Figura 15 8
A solda do l.istcgem 15.7.
1
Para reservar espa~o paraseu rodape, voce pode codific ar 1i ne-c cunt n (m) na instru~ao rep ort. onde n ea mimerc de linhas par pagina e me 0 namerc de linhas reservadas para 0 rodape, Voce nio vai querer codificar muito n. porque o usufric deve ser capaz de especificar 0 numero de linhas po r pagina quando imprimir 0 relat6rio. Portanto simplesmence ignore-o e digit e report zxx l ine- count (m) . · . D urante 0 processamento de relatorio, sy-pagna coneem 0 mimero arual 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 mostrado na Lista gem 12.8. As instrucdes qu e se 5eguem a end-of- page sio executadas ant es de cada nova pagina ser iniciada. Uma nova pagm a e abena 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 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 ccdlncar eventcs .
EMTiADA ~ Lista g e m 15.8
Note que 0 valor de f1 escrito na pane supe rior cia psgioa e 0 valor no memento em que a primei ra inStfUljaO writ e foi dada, nio 0 valor n o come~o
do program..
Criando roda pes de p6gina C omo discutida am erionnent e, depois que urn relat6rio online foi gendo, 0 usu ario pode alterar 0 tamanho da sua janela. Para eviur quebras no melo cia pagina, os relat6n os online sempre consistem em uma unica pagina virtualmuito longa, de modo que ter radapes nao faz muito sentido porque haven a s6 urn.
as eventos tap -of -page e end-of-page
1 report ztx1508 line-count 20{3) no st andard page heading. 2 do 80 t i mes .
J
3
write: / 'Please kid me ' , sy- i ndex, 'ti mes ' .
enddo. 5 6 t op-af-p age. write : / ' CONFIOOOIAL' , 7 / ' Thi s page begins wi t h number' . sy-1ndex. 8 9 uli ne. 4
10
521
O~ l s,r!CNIC.lS DE RJRMATA(Ao, PARTE 1
-APRE HDA EM 21 DIAS ABAPH
escritas no rodape. A inst rucao top-of -pace na linha 6 eneso
11 end-ef- paae. 12
13 14 15
write:
I I
5Y-II1 tne, 'The nl.ll1ber of kicks at the t op of the next page will be ",
I
' Copyr i ght 1998 by t he ALA (Abus e lovers Of America)'.
e execu-
tada, e as linhas 7 a 9 escrevem 0 ttrulc da pagina na parte superior da proxima pagina. Entao ela retoma 0 controle para a linha 3 e a instrul$ao wr; te escrevea quarta linha na pagina 2 .
sy- t ndex,
• 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:
SliDA ~
This page begi ns with nunber ~- - -- - - - - - - - - - - - - - - _ . - . _ - -- -_
P1 ease k1ck me Pl ease [(1 ck me Pl ease k1 ck me P1 ease ki ck me Ple ase kick me P1 ease k1 ck me Ple ase kick me Pl ease k1ck me Pleas e kfek me P1 ease k1 ck me P1ease k1 ck me P1ease k1ck me P1u se k1 ck me P1ease k1ck me
---_..-----_
..---------------_..-----------_..---
times ti mes times t imes t imes 7 times
2 3 4 5 6
8 9 10 11
Please Ple ase Pl ease Please
kick me k.ick me ki ck me kick me
t11OO5 times
t imes
14 ' t imes
--- --.------------_
~%£.~~-
agrup ada informacoes re-
proxima linba, e as ndmeros de telefone na linha seguinte. F aria sentido manter
-
Sintaxe para a iristruC;60 r eser ve
CII
-
_-.----15
15 times 16 t imes 17 times 18 tfmes
• A linha 1 suprime a u sa de cabecalhcs de pdginapadrso porque n6s s6 queremos que os cabecalhos manuais de pdgina sejam mostrados. Elatambem configura 0 mimero de linhas na area de rodape como 3. o mimerc de linhas por pagina 6 configurado como 20 para que possamos rester 0 rodape de pagina para exibicsc online. Normalmente urn relaeorio online nao especifica 0 mimero de linhas por pagina. • Na prirneirapassagem peloloop, alinha2 acicna 0 evento top-of-pace na linha 6, fazendo com que as linhas 7 a 9 escrevam duas linhas de cabecalhoseguidas por urnsublinhado. 0 contrcle retcrna paraalinha 3 e a instruc;:ao wr; te escreve a quarta linha na lista de saIda. • Depois de fazer 0 loop 14 vezes, a 15L instruc;:aa write aciona a instruc;:ao end-cf-paqe na linha 11. As linhas 12 a 15 sao executadas,
"i :
reserve
essas linhas juntas como urn grupo na saida,e impedir qu e elas sejam.divididas em duas paginas. U tilize a instrucfo reserve para manterum gropo de linhas juntas na lista de saida.
t1.Jnes 12 t imes 13 times
--_
instru~cio
Iacionadas que se distribuempor vdrias linhas.Par exemplo, vocepede escrever o mimero e 0 nome de fabricante em uma linha., seguidos pelo endereco na
1 times
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 This page begi ns with number 15
INllIIE~
Utiliza ndo a
As vezes, voce pede precisar escrever de maneira
CONFIOEKTIAl
Z
S
rese rve n 1 tnes .
onde :
• n eum literal numericc ou variavel.
m
T
Quando a. instrucfo reserve e executada, 0 sistema verifica se ha n linhas disponfveis na pfgina atual. Se houver menos qu e n linhas sobrando na pdgina atual, uma quebra de pagina e gerada. Isso aciona 0 eventc end-of-page (se 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 for executada, a c6digo 113.0 faz na da. A Listagem 15.9 mostra urnprograma de exemplc que util iza a instru~a.o r eserve.
ENIRADI~ Listagem 15,9 Ainstru<;oo reserye 1 report ztxl509 line-count 18(2) no standard page headfng. Z tab l es ztxlfal. 3 4 sel ect .. from. ztxlfal. reserv e 3 1; nes . 5 wrft e: / ztxlfat-lifnr , ztxlfal-name l. 6 / 2t xlfal -stras . ztxlfal -reg1D, ztx l f al-l andl . 7 / ltxlfal-tel f l. 8
523
524
D~ lHECHICAS DE FOiMATA\AD. PAm1
APREKDA EM 21 DIAS ASAP" 9 10
skip . endsel ect ,
Resumo • Voce pode criar said: gdfica simples na lisa utilizando as a.di~6es as symbol, as i con e as line na instnlc;:ao write. Quando utilizar estas
11
12 top-at-page. 13 wri te I Vendor Report '. 14 ul 1ne. 15 16 end-af-page. 17 uf tne, 18 write: I 'Report'. sy-rep1d. ' Created by '. sy-uname .
adic;:oes. voce deve utiliza.r a instruc;ao include pa.r.a trazer defini~oes de sfmbolo,{conee caractere de desenho de 1inha. para seu programa,
I
o siiDI ~
• Utilize aadiliao 1i ne-s1 ze na instrucio report para configurar a largura 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 pede utilizar variaveis na iostnl~o report, entdo utilize a instruc;ao new-page para essas adic;:6es se quiser configurar esses atributos em tempo de execucgo.
c6d.igo IU Listagem 15.9 produz a seguiote saida:
Vendor Report 1000
Par t s Unlimited
111 Queen St .
O' "
• Para. mar cabecalhos de pfgina,vocepode utilizar tanto urncabecalho de pa.gina padrac como a instrUc;ao top-af-page. .
ON CA
• Ate 10 variiveis podem ser utilizadas em cabecalhos de pigina padrgo. Os valores atribufdos is variweis sy-tvarO a sy- t var 9 substituem &0 por &9 na lista. Utilize pontos para estender 0 cc mprime nto cia safcia
416-255-1212
1010 Industrial Punps I nc. 1520 Avenue Rd. 416-535 -2341
1020
dessas variaveis de substituicio.
Chemical Nation ltd.
123 River Ave.
ON CA
• Para suprimir a safdado cabecalhc padrao de pagina, utilize a adi,iio no standard page headi ng na msrruc;:ao report.
416"'51-7787
• 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 instrulioes seguintes sio executadas, e enta~ a controle retorna para a mstrU/iao wri teo
---_....-._. ------------_._.----_.-.. -..------Report ZTX1209
Created by KEHGREENWOOO
Vendor Report
1030 ChickenFeed Ltd . 8718 Wishbone lane
• Utilize
0 eventc end-of- page para criar rodapes. Voce tambem deve utilizar 1i ne-ceuet na instrU~o report ou new-page para especificar 0 admero de linhas e reservar espac;:o na pagina para 0 rodape.
AB"
393-565-2340 1040
525
• Utilize a instruc;ao reserve para manter um gropo de linhas juntas na
Motherboards Inc .
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 AMAUSf hewer, 0 c6digo noo feznadoe a linho 6 escreve as Informo i70es defobnconte nas proximos linhos. Se nao hoover, 0 c6digo ad ona 0 eventc end-of-pace Oinhas 15 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.
r
o o
Qual e 0 metode preferido para erial' titulo, de clientes utilizar vmaveis sy-tvar au 0 evento toP.-of-plge? 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 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?
16
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
D~ 16,OOICAS DE fORMATA(Ao. PARTE 2
APlEHDA EM 21 DIAl ABAP/4
Utiliza nd o a
i n stru~a o new-J j ne
Utilize a instru<;ao new-l i ne para [azer com que a safda cia proxima inStru~o write cornea: em uma no va linha. Diferentemente de sktp au wr ite l. instru~6es consecutivas new..1ine nao fazem com que urna linha em branc o apareca na Iista de saida.
Sintaxe pa ra a
'!!!
instru~a o
1020
1030 1040
new- J i ne
new-line [no-scroll ing].
Z
S
...
Utilizondo a
O.DO
2.000. 00 0.00
0 .00
Chi ctenreec ltd . Mot her boards Inc . 1000 1990 A 1000 1997 A 2000 1997 A 2000 1998 A 3000 1998 A
100.00 100.00 0 .00 1.000 .00
D.DO
3 , 000 .00 1,5 00. 00 500.00 300.00 2 , 400.00
• C aus ar a sU'da cia seguinte instrU'iiO write para comec;ar em uma nova. pigina. Instruc;o es new-page consecutivas nao geram em paginas de branco.
report :tx1601 Hn e- s1ze 255.
9
endsel ect ,
• Ativar e desarivar a impressio.
-
1000 1996 Z 1000 1998 Z 3000 1998 A Indust ri al PI.IftPS Inc.
Sintcxe para a
S
... m
Parts UnHllibd 1000 1990 A 1000 1991 A 1000 1992 A 1000 1993 A 1000 1994 A 1000 1995 A 1000 1995 Z 1000 1996 A
1010
seguiate.
Z
o c6d.igo na Listagem 16.1 produz a seguinte saida : 1000
• Aciva.r e.desativar tirulos e cabecslbcs. • Variac a contagem de linha au tamanhc de linha de uma pf gina para a
III
t ndstl ect.
1,000 .00 0.00 1.000.00 0.00 0 .00 1,000 .00 0 .00 1,000.00 5.000.00 4.00 0 .00 0.00
500.00 5 .000 .00 11.000.00 10 ,000 .00 1. 000 . 00 1. 150.00 9,000 .0 0 ' 50.00 0.00 0. 00 0 .00 10,000 .00
instru~Qo new-page
Utilize a instnujio new-page para
Lis'C1gem 16.1 A instru¢o new-line
2 tables: ztxlfal . ztxlfc3 . 3 select 'It fran ztxlf4l. 4 nev-l tne na-scroll ing. writ! : ztxlfal..l1fnr, ztxlfal -namel. -t h1s l i ne won't scroll right 5 6 select'" f rom zt xl fc3 where lifnr • ztx1fal-l1fnr. 7 write : / 14 ztxlfc3-bukrs. ztxlfe3-gjahr . zt xlfc3.s hbkz, 8 40 ztxlfc3.saldv, ztx lfc3-so 1n . ztxlfc3.h abnl . 10
1, 000.0 0 1. 500.0 0 0.0 0
, . 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.
A adic;ao no-sc rol l i n9 blo queia a proxima linha naquele lugar. A rolagem horiz?oi2.l DaO tem nenhum efeitc nas linhas que Ioram bloqueadas des sa manetra, A Listagem 16.1 ilustra 0 usa cia instrucao new-Iine.
1
0 .00 0 .00 1, 500.00
AIliuSE'" AS linhos 7 e 8 cpresentom defclhes de fcbricontes e seo mais largos que a tela.
m
EH11101~
1000 1994 A 1000 1995 A 1000 1996 A Chenical Nati on Ltd . 1000 1995 A 1000 1996 A
inslru~Cio
new-p age
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)] [line- s iz e k] pr i nt
[pri nt on :
off]
ande:
• n,me k sao vanaveis num ericas ou Iieerais. Os seguintes ponte s se aplicam: • new- page pode serutilizad a em qualquer lu gar no programa. Voce:pede utilizi-l a mes mc ante s da primeira instru'i3.0 write para ca nfigurar as caracterlsticas da said a de lisea. Com6 aceita variaveis, ela ~ mais £lexIvel que adic;oe s semelhantes na instnl'iio repo rt .
529
APIElfDA HI 21 DIAS ABAP/4
• no-t itle desativa 0 titulo padrsc nas p:iginas seguintes. (0 titulo e a primeira linha dos cabecalbcs padrac de p:igina.) with:"title ativa-a. • nc-he adt n9' desativa os cabecalhos-padrjo de ccluna para. as p:iginas seguintes. wi t h-headi ng os ativa..
DlA lH EcHICAS OfroRJIATA\!O, PARTE 2 Figura 16 1 A tela Prim Parameters.
• 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 instru ~ao new-page.
-
til Se V'Cld quiser fazer uma quebrc de p6ginc e adonar 0 evemc end-ofpage, c:odifique linhas sy-lind reseoes. sy-I i net ceotem 0 numero atuol
de linhos per p6gino. A scldc do pr6:.cime write cporecero no porte superiorde uma novo p6ginc e 0 eventoend-cf-peqe sere odonodo de cntemec, fozendo com que urn rodope de p6gino sejo c:riodo.
Utilizando new-page pri nt A.s vezes, pre cisa-se de urn relat6rio que tanto escreva para a.lista de safda e ao mesmo tempo enviea salda para a impressora. Por exemplo, voce pede desejar escrever urn re1at6rio que mostre urn resume para a usudrio online enquanto envia um relat6rio de detalhe pan a impressora. Utilize new-p eqe pri nt on para 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 new-page pr i nt off elimina esse efeito. A safda de todas as inst rucoes wri te seguintes serao n ovam ente vistas na Iisra, 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 impressora e 0 formate de saida (Output Format). •
Se, na tela Print Parameters, houver uma marca de sele'Sao no campo N ew Spool Request) ela eria urna nova solicita~ao de spool. Isso significa uma nova lista separada no spool.
~
m
T
Sintaxe para a
instru~ao
new- page print on [no dialog] [new section] (1nned1atelr (destination [copies [la yout [1ht name [sap cover page [cover text (departlll!nt [receiver [keep i n spool [dataset expi ration [11ne-ccunt
[l1ne- siz e
new-page print on
tmtdflog] destfd] nt.llJCopfes ] layout~d]
lt stnane] caverpagejlag] ·tttle] do!'p't] n c ievernGl'llt] ktepfIag] ntmfoys] l tnes~rpage]
nJ.IllCo ltmu]
onde: • Quaisquer names em itllico no c6digo de pro cedimenro podem ser urn literal ou uma variavel.
O s seguintes pontes se aplicam: • Utilize no di alog para suprimira exibi~io da tela Print Parameters que soliciea ao usudrio parametres de impressao. O s padroes do usuario Sao utilizados em vez disso. Se 0 usuario nao civer preenchido urn ID
531
D~ lU!OiICAS DE FeRMATA"', PAm,
APREMD A EM 21 DIASABAPI4
de impressora.em seus padrc es, a tela Print Parameters sed mosrrada mesmo qu ando voce esp ecifi car no di alog . •
Utilize new se cti on para reiniciar a numeracio de pf gin a, co meqando novamente em 1.
•
Utiliz.e hrmediate ly ' x' para fazer com que a liSta seja Impressa imediatam ente. 0 padrio e 1mned1ately , ', que armazena a Iisra no
Parametres a.dicionais sic documentadas na documentaci o de palavra-
chave de ABAP/4.
Qua ndo envlc a scfdc diretomente para 0 spool lJfilizando new-page pri nt on, voce tombem pede utilizer duos instru¢es odicionois. A instrvt;oo set margins permite que voce controle a s morgens durante .a impresseo. A instru¢ o print-control possibilito 0 envio de c6digos de controle de impressdc diretomente pora a impressora. Utilizando print -cont rol, voce pode controlor qvclsquer caroderisticas do impressora, como CPI (carodere par polegoda), l PI [linhos por polegada) ou fonte. Essos instn.u;5es n50 tem nenhum efeito em listos impressos via a batao Print ou via a ap¢o de menu List Printj elcs s6 ofetom Ilstcs impressosvia new-page pr1nt on. Eles nao inte~m no moneira como a listo Ii exibido no tela. Veja 0 dacumenta¢ o de pclc vrc-chcve de ABAP/4 pa ra mois detclhes .
spool. .• •
Utilize dest1 nati on para especificar um ID de impressora. Utilize copies para especificar a mimero de copias a imprimir.
•
U tilize 1ayout para especificar um layout de im presson . 0 layout de impressora determineas caracterfsricas de impressora como a mimerc de linh as per pagina e 0 mimer o de co lunas p or linha. Vace pe de ver . 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.
•
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. (Digite esse valor no terceir c cam po ao lado de Spool Request Name
on the Spool: Request Screen) •
•
.
U tilize sap cover page para. controlar a impressao de uma pagina de 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 co nfigur.u;6 es de impresso ra devem determinar se um a pa-gina de capa sera ou nao impressa. Utilize cover text para especificar a titulo a ser imp res so na pagina
de capa. •
U tilize department para especificar uro ID de depanamento a ser impressa na pagin. de capa..
•
Utilize recet ver para especificar 0 nome da pessoa que deve receber o relat 6rio. E~e ~ im pressa na pdgina de capa.
•
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 p ermite ao ususri o reimprimir a lista sem executa r novamente a rela.t 6rio.
•
U tilize data set expi ra t i on para especifica.r quantos dias a sclicitscac de spo ol deve pe rm anecer no spool. Quando a solicita~o expirar, ela
sen exclulda do spool. •
U tilize 1i ne-cou nt e l i ne s1ze para espec ificar 0 numero de linhas por pagina e 0 numer o de colunas par linha. 4
A Listagem 16.2 ilustra a usa cia inStruliio new- page pr i nt.
!HIDIl,\~ Usl a g em 16.2 A instru¢o ne.-page pr int 1 report ztx1602. 2 ta bl es zt xlfal. 3 pari5n!ters: prt_1d --l1ke estwo·spooldest obligatory. ~
5 new-page pr1nt on no dialog 6 i Jmll!dia t el y ' X' 7 8 destinatfon prt_1 d.
,
i.o uhct • from zulfd . 11 write: I ztx1f1.l· 11fnr. 12 Mdse1ect . 13 14 new·llage pr int off . 15 wri te: I sy- dbcnt , 'li nes sent t o printer'.
o ccdigc na Listagem 16.2 produz a seguinte saida: 23 lines sent to pri nter BOS4
• A linha 3 solicit a ao usuario urn ID de impresscra. 0 campo estwospooldest tern urn relacionamento de chave estrangeira com a eabela que contem os IDs de impressora, endc uma seta p ara baixo e exi bida no campo de en trada. 1550 permire ao usuano exibir uma lista dos IDs de impressora disponiveis.
533
534
IllI. 1~ OOIC.l5 OfFOiMATA(lD. PAm 1 I
A/ i ENDA EM21 DIA l Am/4
• A linha 5 redireciona a safda para as ins truco es wri te subseqUentes. no dialog suprime a. exibiljao cia tela P rint Param eters. Em vez disso 0 5 parimetros sao torn ados do perfil de usuario e des parimetros espeeificados nas linhas 6 a 8. tnmedt at ef y ' X' faz com que a safda seja
Sem quaisque r a.di'io es, s ki p geea umalinha em branco. Slci pn gera n linhas em branco . Se n for men or que 1, n enhuma linh a em branco sera geuda. ski p no fim da pdgina atual causari uma quebra de p~ ski p gerari .l.i.nhas em 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 pelo ususric na tela de sele~o.
pagina e na parte superior de qualquer pfgina comecada pela instru~ao newpage. Ela nio gerardlinh.as em branco no cornelia de qualquer au tra nova pagina, nem no fim da Ultimapagina da lisra, Por exemplo, se houver espaliopara mais 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 pfgina, Isso acontece porque a n<;JV3. pfgina nid era a primeira e nao foi gerada por uma instruliao new-page.
• A safda das linhas 10 a 12 eenviada diretamente para a impressora. Ela naa
evista na lisra de saida.
• A linha 14 remove a indire/iao EF, e a sa1d~ das instrucoes writ e subseqiient es aparece M Iista.
Exibindo a documentcccc de pa lavra-chave de ABAP/4 para
new- page Ppint Norm almente, a ajuda Fl
naomc srrard a do cumen tacio
Se voe! quiser um rcdcpe no ultime p6g ino de seu relot6rio, codifique ski p sy- 11 net como a ultimo instruljoo em se u progrcma. Esso 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 sy-I i net em vel de new page.
new-page print. Para
exibi-la, utilize 0 seguinte procedimento: 1. Comece no ABM / 4 Edit or: Ini tial Screen. 2. Escolha 0 caminho de menu Utilities-> ABAP/4 Key Word Doc. Voce eneac vera a tela Display Strucrure: ABAP/4-SAP's 4GL Programming Language. 3. De om clique no bctao Find na barn de ferramentas Stan dard. A tela Search Chap ter Titles sera exibida.. 4. No campo Find , digire new· page print . 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 . 6. De urn clique duplo n essa linha. A documenracfo para new-page pri nt sed exihida.
Utilizando
Q
insfrw.Co ski p
A iostru/iao ski p permite que voce
• Gere linhas em branco. • Movaa posis:io arual de said. para eima ou para baixo dent ro da pagina atual de saida.
-
Sintaxe para a instrucdo ski p
III
Z
S
• m
ski p [n : t o 11n!! n] .
c nde: • n eum literal numerico ou uma vanavel.
ski P to 11ne n faz com que a posicac atu al de saida seja configurada no ccmeco de 1in.ha n d.a paginaatual A safda da seguinre instruc;rao wri te comecara nessa posic;rao. Por exemplo , skip to 1i ne 3 faz com que a saida da instrUc;rio write seguinte comece na coluna 1 dalin ha 3. Uma instnlc;rao skip to lin e que coatenha um mimero de Iinha maior qu.c 0 mimero areal de liohas pa r pagina sera ignorada.
A Listagem 16.3 ilustra 0 usa cia ins truc;r~o skip.
EHTIlD.\~ Listagem 16 .3 A inslru,ao skip report ztx1603 . tabl es ztxl fal . datil n t ype 1. setect " frDlll ztxlfal order by land1. on change of ztxlfal- landl. 6 if sy·dbcnt > 1. 7 n • sy-l 1nno ~ l. S skip t o f tne n, 9 write 35 ' ' '· l ast Vendor With This Country Code ."' . 10 end1f. write / z t x l fa l ~1a n d l. 11 12 enden. 13 wri t e: / 4 ztxlfal-l1fnr. ztxl fal-namel. 14 endselett.
1 2 3 4 5
o cadigo na List.gem 16.3 produz a seguinte said.:
535
536
HR END'" EM 21 OIlS AIAP/4
SAiDA~
ANILlS!~
CA 1000 Parts unl tntted 1010 I ndust ri al P\II1PS Inc . Chemi cal Hatio n ltd. 1020 1030 ChickenFeed ltd. 1050 The Bit Bucket 1060 Henery Lane Lt d. 1070 Fl i p M1 Switch I nc. . ... Last Vendor With Thts -Count ry Code ••• CC V9 Code Now, Specs Lat er- l td. no Duncan 's Mouse Inc • • •• Last Vendor With This -.country Code ....." DE Vfi Anna Banana Ltd. Vll Wiener Schnitzl!l I nc. V12 Sauer kraut AG ••• Last vender- Wi th Thi s -Count ry Code ..US va Smile When You Say ~ha t ltd . Motherboards Inc . 1040 l OBO Si ltcon Sandwi ch ltd. 1090 Consume Ltd . 2000 JlIon1t ors and Mor e Lt d. Vl Quality First Ltd. V2 cverprtced Goods Inc . V3 Fl uffy Bunnies Ltd. V4 /11.00 11lce a Cow Inc. V5 Wol fman Sport Accesso r ie s Inc. V7 The Breakfas t Clu b In c.
Toda vez que 0 valor de ztxl f al -l andl se drerar
linha 5 eacionadaroda vez que 0 valor de 1and! for mudado. • Na linha6, sy...dbcnt e 0 cantader de passagemde loop atual. Quando • A
o primeiro registro escl. sendo processado, d e t ern urn valor de uma unidade,e entia 0 c6digodentro de i f IUO eexeeuradc pa ra 0 primeiro registro, mas para cada registro sucessivo. •
Pa ra registros sucessivos, m linha 7 5y·1 i nno contem 0 mimerc da linh a de lista are al. Istc e, ele e 0 mimero de linha. que a pr6xima instrUljio write escreverd. Uma unid ade e subuafda dele e isso e
atribuido a n.
• A primeira saida de linha depcis de uma instru~ao rese rve fei emirids.
-
Sintaxe para a
A llnha 9 escreve nessa linha, colocando flagno Ultimo fabricanee de cada grupo.
Utilizando a
instru~ijo
back
Utilize backpara rerornar a posic;:ao areal de safda para: • A primeira Iinba da pagina atual (a primeira linba depois de t op-ofpage foi processada).
back
UI
Z
back. onde:
~
• back: emirida de dentro do evemo t op-of-page retorna aprimeiralinha escrita dentrc de t cp-cf-p ece.
T-- - - - - - - - - - --
Explicando ainda mais, sevoce especificou no standard page headi ng na instruc;:i o report , ela retoma para a primeira li.nha. dapdgina. Se voce tiver urn tltulo-padrio de pfgina, a po,ic;io de safda e configurada como a linha da primeira l.inh.a que segue 0 csbecalhc-padrac. Urn programa de exemplo e mostrado na Listagem 16.4.
EN1lADA~ Listagem 16.4 A instru<;co back 1 report ztx1604 no standar d page headin g. 2 data n type 1. 3 do 4 t imes. write: /(4) sy_-1ndl!!x. 4 5 enddo. 6 back.
7 do 4 times . 8 n • 51- i ndex; • 10. g write: j 10(4) n. 10 enddo. 11
12 top-of-page. l3 write : I 'This was lily t itle' . 14 ul tne. 15 back. 16 write 6 '15 17 skip.
• A linha 8 move a posic;:ao de safdapara 0 comeco de linha n, que e a Iinha previamenre escrita, •
i nstru~a o
o seguinte ea sinuxe para a mstruc;:io back:
o c6d.igo na Listagem 16.4 produz a seguinte saida:
SAiDA ~
This 15 r.y title
I 2 3 4
10 20
30 40
I
AP lfflD A E1iI 21 DIAS AIAP/4
IHillIE ~
9
• A primeira execucgc da linha 4 aciona a linha 12 (0 even to top- ofpage).
enddo.
10 11 skip .
• A linha 13 escreve um titulo e a linb a 14 a sublinha.
12 do 4 ttees .
• A linha 15 configura a posi~io atual de safdapara a primeira linha na lista de safda,
13
do 4
14
15 16 17
position sy- t ndex. write ' A' . endcc, sk1p.
18
enddo.
• A linha 16 sobrescreve 'was I com li s I. •
A linha 17 move a posi~io de saida areal para. baixo de uma linha. A 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 valores restantes sao a saieianas l.i.nhas suc essivas.
ttees ,
o c6digo na Listagern 16.5 produz a seguinte saida: WA WA WA WA
• A linha 6retorna a pcsicao de saIdaatualpara que ela fosse a primeira "1 escrever depois do processamento t op-af - page (linh a de [ist a de 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 Iinha 2 , comecaadc na coluna 3.
-Z
Sintaxe para a
III
lHilIsE ~
instru~ao positi on
position r1.
onde:
~
•
...
A Listagem 16.5 ilus tra a usa cia ins rruc io position. Lis1agem 16 .5 A instruc;oa positi on
I re port zb1605. 2 data n t ype t ,
,
3 do 4 t1mes . do 4 t imes. 5 posi ti on sy- tedex. 6 writ e ' A'.
7 8
eeeee. new- li ne.
• 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 lugar, a posi~ao arual de saida e configurada como 1. Depois, e 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 na safda sendo escrita nas linhas suc essivas, comecando na linha seguinte nos cabecalhos-padrac .
vI ~ uma varifvel numerics au lite ral.
m
EH1RADI~
• A linha 3 comeca um loop do.
•
• 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 vez de new-I i ne, ski p eutilizada na linha 17. Isso tern o efeitc deinserir linhas em branca entre as linhas sucessivas de safda.
Utilizer e instrw;co positi on seguido imediotomente per umo write at (obordodo no capitulo anterior).
e equivelente 0 emiti r umo instru~co write
540
I
0016, lliHKASDEFORllATA(lo,PARTE 2 r
APRENOA EM 21 DIA5 AUP/4
Utilizo ndo
Q
Text 1 Text 2
inst rui;oo set bl ank 1i nes
Nc rmalmente, se seu programa emit e uma instro~ao wr i te qu e resul ts na safda 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 3
,
comp crtamento.
-Z ~
Sintaxe para a instru,cio set bla nk 1; nes
\
Text 4 Text 5 Text 6
set bla nk li nes on : off.
CIl
I I
Os seguintes p ontos se aplicam:
T
• A cocfiguracao padrdo escl desativada,
• As linhas em branco geradas pel. instru~ao skip Dio
SaO
suprimidas.
• As linhas em branco geradas por write I sem uma variavel nao sao 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 on river sido executada de antemdo.
I
I !
• A instru~io ski p sempre escreve linhas em brancc e dessa forma., a linha 6 gen uma 1inha em branco. • A linha 8 permite que a. in stru ~ao write escreva linhas inteiramente em brane o na lista. • A linha ffconfigura li.nhas em braneo novamente.
EH1RAOI~ Lista g e m 16.6 A instru, oo set blank l ines report zt x1606. datil: fl . ra , n . write: I 'Text 1' . write: I fl. I f2, write : I 'Text 2'. sk.ip.
• Por padr ac, linhas em braneo que resultariam da tentativa de escr ever espacos em bran eo sao suprimi das. Port anto, a linha 4 nao fn com que quaisquer linhas em braneo sejam escritas.
• A linha 10 escreve treS linhas em branco.
A Lista gem 16.6 ilustra a mstruliao set blank lines.
1 2 3 4 S 6 7 B
• A linha '2 define tres varidveis. Todas tern 1 como comprimento de caractere e um valor inicial padrio de espacos em braneo.
• A linha 14 gera uma linh. em branco. •
I
A linha 16 nao gera linhas em bran co.
Resum o
fJ .
• Utilize new..line para cornecar uma nov a linha au blo quear urna linha especjfica no Iugar. Ela pede prevenir ro lagem horizontal de qualquer
linhaindividual.
set blank l i nes on. s wr i t e : I ' Text 3' . 10 write : I fl . I f 2. I f3. 11 wr-tte : I 'Text 4 ' . 12 13 set b1.llnk. l i nes off .
• Utilize new·page para gene uma quebra de pagina, acme au desarivar d tu los e cabecalho s, alterar a contagem de linha ou tamanho de linha entre paginas ou enviar saida para 0 spool.
i
14 skip.
15 write: 16 wri t e: 17 write:
I I I
' Text S' . fl , I f2, 'Text 6'.
I
•
f3 .
• 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. • Utilize back:: para retomar pan a parte supe rior d e urna pagina au para o corneco de urn gropo de linhas. • Utilize pos i ti on para especificar a proxima ccluna de saida.
o e6digo na Listagem
16.6 produz a seguin te saida:
•
I
• Utilize set bla nk lines para permitir que linhas em branco sejam criadas escrevendc varhveis q~e contenham esp aco s em branc c.
541
542
APIEH DA EM21 DIAS ABAP/4
IL...-:...Fa~a
OORlOI~ List a gem
- - - - ' _
Utilize sfmbo los e kones e m seu relc tcric
Nao codflque excessiyomente um
perc cementer a reodopta bilidade.
tomonho de p6gina. Permitc a os usucr ics
16.7 top-of- page, position e skip
report zty1607. data n type t , do 4 times. do 4 times . positi on sy-tncex. write 'A' . enddo. add 1 to n. s kip to line n.
espe d fic6-lo quando jorem im primir 0 relot6rio.
Nao erie relot6rios mois lorgos que 132 coroderes no coso de 0 usu6 rio querer imprimi-Io . A moloria dos impressoro s 000 pode imprimir p6g inas mcls largos que 1"32 ccrccteres.
enddo .
t op-of-page. n â&#x20AC;˘ sy-11nno.
P&R
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?
o
o
o c6digo na Listagem 16.7 produz a seguince safda:
sllol ~
prop6sito de ski p ~ gene uma Iinha. em branco na. saida. new..l1 ne faz com que apr6xima linhade safdasejaescrita parauma 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 entecdimento 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 Explique a fluencia de ccntrole no seguinte programll. e como d e funciona.
I ;
i,
I
AMA AMA AMA AMA
e
17
I
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 Umo unidcde de moduJc rizo~a o e como urn shell em que voce pode colocor 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
IDVO... TEiKO"
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
/t
• Even tos
• A linha 2 identifica 0 come cc do evento initial i n t i on.
•
• A linha 3 escl associada com
Sub-retinas
• M6dulos de fun,ao Esre capfrulo explica eventos e sub-retinas. 0 proximo capftulo trata de
m6dulos de £Unljaa. Utilize asunidades de modularizacao para eliminar 0 c6digo redpndante dentrc de seu prognma e para toma-lo mais facil de ler. Per exemplo, suponha que voce eenba uma sene de instrucdes que formatam urn endereco e precise farmatar enderecos em mas lugares diferentes em seu programa. Em vez de duplicar 0 c6digo dentrc de seu p rcgrama, euma boa ideia cclccar esse c6digo em uma unidade de modularizacao e chamd-lo sempre que voce precisar farmatar urn endereco. . r
Defin indo eyentos Um eveote ~ um tog que identifica umo se¢o de c6d igo. A se¢o de e6digo
NOVO '"
TWtO II"""
ossociodo com um eventc comee;o com urn nome de eventc e tenn ino quando
e
a prOximo nome encontrcdo. No listegem -17.1, as nomes de evento s60 1n1tialira t ten, start -of-s election e end-of-sel ection . names de eventc sao pclevrcs reservc dos. Voce nco pe de crie r novas eventos - somente pede utilizor a s edstentes.
as
EKTRAD.\~ Listagem 17.1 Tres evenlos b6sicos
• A 1.inha 9 perte.nce ao evento end-of-selection.
• a
limite inferior do c6digo que pertence a end-of- select i on esti marcado pelc fun do program•.
•. Quando voce executa esse programa, esses even tos sao acionados por urn prognma de driver. as seguintes pmgrafos explicam 05-detalhes desse conceitc.
e
IIDVO.... TIijO"
Urn progroma de driver um progromo que contro lo outro progromo {driven, que que r dizl!!r controlodo}. ASAP, fcmece programos de driver co m a sistema 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 em seu prograrno: Para reltercr, urn progromo de drivl!!r inicio rC primeiro e enmo contro lar6 quando se u progromo obtiver a co ntrole. Esse sempre foi 0 coso de todos as progromos que voce escreveu ote ogara; openos n50 esteve ciente disso ofe agora. Cerflflque-se de ler este porngrofo ccidcdcscrnente. Repetindo, quan do voc~ Inlclc seu software, um progromo de driver terO iniciodo primeira e contro lor6 seu progroma, chomondo eventcs dentro dele. Seu p~rc mo
o progromo de driver eos IlYentos que ere 2.
3.
7
Sliol ~
Z 3
c6dig o na Listagem 17.~ produz a seguinte saida:
'~ -'ita rt:~o{ . se1~~i'{~n'~
~i.:.:~ ~h# r~.t"i
4.
8 end-ot -select ion. 9 write I '] '.
1
~~4~;J~~;~~~1~r-fi~~-~C
1.
' 2' .
\ :=.~~ ::
i:,;~~:.~:e~~e,~~~,~':.:~~~': ;...
5.
o
lc:6cl.go otuaQ
report ztxl70 1.
pode adonar.
I
o
~~ ...,
Progrcmode driver -,:":;:. (PSe~d0c6djgol
5 sta rt -c f-select t cn. write
0
• A linha 6 pertence ao evento star-t-cf-sel ect icn.
4
6
evemc
• A linha 8 marca 0 limite inferior do c6digo qu e penence ao evento start-of-selection e 0 limite superior do event o end- ct-se t ect tcn .
FigurA 17 1
1 report ztx1701. 2 fnitial1zation. a write I 'I'.
400
• A linha -4 marca 0 fim do c6digo que pertence a in it ial iza t i on e ccmecc do eventc start-of-selection.
Eventos Ao contririo da prim eira impressao, as programas de Al3AP/4 sao baseados em eventos. Urn born entendimento sabre eles e a chave para. um bom eatendimento de ABAP/4.
rom linhas
0 evectc initialization. Se de ccdigo seguirem essa primeira, eodas elss pertencerac infti ali zatten.
e
c6digo associado com urn evento acionado por uma instI1l<jio em urn programa de driver. Os eventos sao acionades pele programa de driver em urna sequencia predefmida e previslvel. A Figura 17.1 ilustra es~e ponto. . 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
.~ execueadc, 0 driver a esquerda ten iciciado primeiro. 0 prognma entia segue esta sequencia de passes :
• 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 urn evento in i t ia l i z ation em seu programs, 0 programa de dnver pulari esse passe .
• 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. • 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 . 0 c6digo que pe rt ence a ele. Se vo ce nao tiver codificado urn end-ofsel ect ten, d e pularf esse passo .
• Mosua a lista de safda para
0
usudrio.
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 pro grama ni o importa; des sempre serio acionados na mesm~ seqiiencia pela programs, de driver. A Listagem 17.2 ilustra esse ponto.
1. fl · 2. fl · 3. f l .
l
549
1 Z 99
. lItiUSE ~ • Quando voce inicia ztx1702, 0 programa de driveriaiciars primeiro. • Ele aciona
I I
0
evento i nitial iza tian.
• 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.
• 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 - selection. 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 programa de driver eneso procurar.i um evenec end-af - sel ect i on. 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,
I i
entaa ela sen. executada e 0 controle entia iIi reto rn ar para
0
driver.
• 0 driver entio exibiIi a lisa para. 0 usuaric.
. Esse ezemplo ilustra que voce! pode colocar os evento s em uma ordem
diferente, mas a seCJ.iiencia de execu~ao naa sed alterada. A sequencia de 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 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 eles sao acionados para deixarem seus programas mais faceis de entender. Hi onze event os d.iferentes no ABAP/4-, caregorizados na Tabela 17.1 de acordo como eles sao acionados. .
.... Listagem 17.2 "Eventos ccion odos no ordem ditodo pelo programa de
ENTiADI,. driver
·
.
1 report ztd702 . 2 data fl type 1 val ue 1. 3
4 end-ct- selecrt cn. 5 write : I '3 . fl·'. fl .
Tabera 17.1 Eventos de ABAP/4
6 7 start-of- se1eet1on. 8 write:: I ' 2. fl . '. fl . fl • 99. 9
Co1egoria
Event os
Driver
initiali zati on at selection-screen start -af -select ion get end-af-s election at line- selection at pfn at user-conmand top-af -page end-of-pag.e
10 11 initialization. Ii! write : I '1. fl·' . fl . 13 add 1 to fl .
Usu6rio
o c6digo na Listagem 17.2 produz a seguinte safda: ,.
Progromo
,
.Ir I
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 evenros de programs sao as acionadcs de dentro de seu programa. Este capitulo detalhs a usa de i ni ti al i zat ton, start-cf -se1ect i on e end-af-se-
programs ou com sua safda, porque • Voce nao pode ver a saiclade writes emitida. ant es de uma s ele~o ser mostrada, entia normalmente nie as codifique ar.
lection. Note que alguns desses eveneos ocorrem entre stert-ct-selecttcn e end-a f-s election. No capitul o anterior, "Tecnicas de formatacao, Parte 2/' voce aprendeu sabre os eveetos top -at-page e bottom-af-page. As informafioes nesre capitulo tambem se aplicam a eles, mas esses sao aciceados par inStnlfiOeS dentro de seu prognma, e nao do driver.
Considerccoes espeCiois
00
• 0 evento top-cf-paqe cc sruma somene conter insrrucoes write e a safda do primeiro acicnamento e descartada, de modo qu e nenhum dane e caus ado quando de e aciocado duas vezes.
~
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 write em um eventc acionado antes de start-of-sel ectton, voce nao vera a saida dele. Por exemplc, se river uma instrU~o parameters em seu programs, uma tela de selefiao sen criada para. seu programa permitir que a usudrio digite 0 valor de parl.metro. Set nesse programa, voce emitir urn wri t e em [ oi ti al i r et t on, nao veri a saida da instrulfao wri t eo •
A varia¢<> write to de instru¢ o ."ri te nCio ad ona top-of-page.
Um' novo evento sempre come)il em uma nova linha na saida. Por 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 pode utilizar skip ta line se for necesssrio continuar escrevendo na mesma linha.
I I
Se a primeira instrur;ao execurwel em seu programa nao for precedida par um nome de evento, em tempo de execur;ao 0 sistema. aut cm aticamente insere sta rt-af-selection antes cia primeiralinha de c6digo executavel, Pott ant o, se voce nao civer quaisquer eveatcs codificados, au se nao river colocadc c6digo 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 programs que contern tanto uma tela de selefi30 como evecros. Ele tam-bern '. contern urn. eveaeobaseadc em programs - top-of-page. ENTlADAt.. U~ta~e~ 17.3 "sh .rt -af - sel ect ion outomaticoment~ inserido antes de pnrnerro linho de c6dlgO
r
1 report ztx1703 no standard page headfng'. 2 parameters pI(8) .
Acion ondo top-af -page Esu ser;ao descreve quando top-at-page e acionada em rela~o aos eventos de programa de driver. Se seu programa nao tiver uma tela. de selefiao, a primeira instrUt;aO wri te executadascions top -af-page. Se seu programa riveruma tela de selecao, e passive! que top-of-page seja acionada duas vezes: •
Pela primein. instru~ao write executada antes de a tela de sele~ao ser mo stra da
•
Pela primeira instru~ao wr i t e executada depois que a tela de se1efiao mostrada
e
Somente se estiver fazendo algo incomum em top-of-page, como abrir arquivos ou inicializar clados, voce precisari ter cuidado com 0 efeito de 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 .
3 4 wrtt e: 5
I
'p1 .'. pI.
6 ini t iali zati on. pl · 'I nit'. S 9 end-of-se l ect1on. 10 write: J(14} sy-uline. 11 I ' End of program'. 7
lZ 13 top-of . page. 14 write: I ' Thi s is My Title ' . IS skip .
o c6digo na Listagem 17.3 produz a seguinte safda:
I I
.J "
D~ 17.MDDUURllAlAo,[VENTOS E5U...onNAS
UlENDA EM 21 DIU ABAP!4
( st ert-et- selectt cn.
This i s My Titl e pl - IIHT
,
End of · progr am
.;.'
ANlusE~
•
Q uando voce exec uta
fl - 'A'.
5
7 1fn- 'A'.
pro grama ztx1703, urn p rogr.una de driver inicia primeiro. Desde qu e haja c6digo no ccmecc do programa que m o pertenca a quaisquer evenros, uraa start -of-select ion auto maticamente e inserida na linha 3. 0
• 0 programa de driver aciona a eventc initialization. A linha 7 exe cuta e attibui 0 valor' Ini t' para pl. 0 cone-ole reroma ao prognm a de driver.
8
ene-et-selecttcn .
9 10
write: endtf .
Flg urg
I
fl.
1Z 2
A tela de sele¢o porc 0 progromo
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. 'controle rerorna pua linha 4.
o
• A linha 4 escreve a valor de pI. • 0 driver entao aciona para a linha 10.
0
eventc eec-ot-setect t en. 0 controle passa
o A linha 10 escreve uma linha horizontal de 14 bytes. • A linha 11 escreve End of pro gr am. 0 controle retoma para a programa de driver.
• 0 driver exibea lista para 0 usudrio. V o ce nao pode colocar uma condiljio em volta de urn even to ne m colocar urn even t o dentra d e urn loo p. Fazer isso caus a urn eITO d e sintaxe. P or exemplc ; c codigo na Listagem 17.4 causa u rn eITO d e sintaxe.
ENlli.DA..... Listagem 17.4 Nco cclo que um eve ntc dent ro de umo condit;ao ou de ,. um loop 1 report ztx1704. 2 data fl . 3
siiDI ~
o c:6digo no Ustogem 17.4 produz este erro de sinfoxe: Incorr ect
nesti ng: bef ore the statement ' EN D -O F ~S ElECTION' 1 the structu re introduced by ' IF' mus t be concl uded by ' ENDI F'. •
..... Os nomes de evento tem prioridodemclsa ltaque outrnsinsfT'u(;6es de AWN.
ANALISE ,.. A instnu;:oo ; f no linha 7 pertence 0 0 eventc st ar t · of - sel ect1on. A instrue;oo 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 deve ter uma end1f ontes do eventc ene-e t -setecet en. Como he tombem umo endif dentro de end-of- sel ection no linho 10, oquela endi f feria de ser remavido ontes de o progrnmo ser executodo. . 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.
Tow as defini~6es de dados seriam feitas na parte superior do programa.. Cada evecec tern um prop 6sit o especfficc e e a ece sssric realizar uma tarefa de programacac especifica.. Quando surgir a necessidade, irei refereacialos no m ate rial que se segue. Se voce nao vir quaisquer eventos em um pro grama, sempre lembre-se de que ainda exis t e u m - start-of-set ection.
553
DlA 17: MODU~O: EVEHTDS ESUB-ROllNAS 555 APRlNDA lM 21 DIAS ABAP/4 554 ~=..::::...o:"'::'::=-"------------------.jl------ ---- ----==== ==~
Sgjnd o d e urn eyento
Nco utilize stop nos seguintes eventos: i niti ali zation, em selec t io n-screen output, top-of-page , and end-at- page. Tecnicemente, stop pode fundonor com top-of-page e end- at - page, se 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 dump curto; no coso de end-of-peae, voC!! pede perder a scldc. E mois segura evlto-lc 00 fodc dentro desses eventos.
Voce pede sair de urn evento a qualquer hora utilizan do as seguintes instrucdes:
•
exit
•
check
•
stop
Nesse me mento, p or favor revise a fun!jao da insrrucio check (apresentada no Ca pitulo l Ol "lns trucoes de controle comuns"). O s paragrafos a segui r descrevem 0 efeit o de check. e ex; t quando elas sjo codificadas foradeurn loop. 0 efeito de stop e0 mesmo,independentemente de ela ter sido codificada ou nao denrro de urn loop.
o
relat6rio mostrado na Listagem 17.5 permire a voce experimenter as efeitos dessas instrucdes dentro de varies even eos. Co pie-a e remova a s comendrios de uma. vez para experimenter as poasfveis variacoes.
ENmDA~ Lisfagem 17.5 Os ~feitos de exit, chec k e sto p dentro de evenios 1 r eport ztx1705 no standard page heading l ine-count 6( 2).
Emborc nesse ponto somente tr&s eventos tenham sido opresentados 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
* 5 *
- stop vai diretamente ec eventc end-ct- select t cn
05
even tos.
4
e
0
processenentc contfnua com
0
prOx1mo evento ou al :l.o.
Em tod os as eventos:
6 * 7
• checkimediatamente deixa 0 evento arual e 0 processameotc continua com 0 pr6ximo evento ( 0 1,1 aliao, como exibir a tela de selecac ou lista de safda).
8 *em ste rt-cf-selecttcn e eventcs sUb seqllentes : 9 * - exit termina 0 relatOrio e IIlOstra a lfsta de salda 10 * excec;!o : top:'of-page: exit detx e 0 evento 11 * • check. detxa 0 evente e 0 processamento continu a com 0 prOximo . 12 * • stop vet diretamente para 0 evento end-ct- setectt cn
•
stop imediatam ente deixa 0 evento atual e vai dir etamente para 0 evento end-at-s election. Executar stop dentro de end-at-s election deixa 0 evento . N so causa urn loop infinito.
Em even tcs que ocorrem antes de start-ot-sel ection , • exi t e check tern 0 mesmo compcrtamento. Eles deixam 0 evento imediatamente e 0 processamento continua com 0 proximo evento (au 01.<;3.0 , como exibicio da tela de selecac). Em start-ot-sel ect i on e evencos que ocorrem depois dele: • exi t te rmina a relat6rio e mostra a lista de saIda. Existe uma unica exce<;aoj dentro de tcp-of -paqe, exit ccmpcrta-se como check. • check deixa 0 evento e 0 processamento continua com a pr6x.imo eventc (au alJao l como exibi<;ao da lista de saIda). check, exit e st op nso configuram a valor de sy-sub rc, Se quiser configura-la, voce pode atribuir urn valor numerico a ela antes de partir.
(nao utllize stop em tnt tf al taetton ou na sal da de se lect t cn- screen)
13
"execut a
14
lIIl:
15 parameters: eXit_sos r-adtubut'tcn group gl, "exit em st art-of-sel ect ion eXit_eos radiobutton group gl . "exit em end-cf- select fon 16 17 18
chck_sos radiobutton group gl. "check em sta rt-of- sel ect i on chck_eos radlabutton group 91, "cheek em end-cf- setec t t on stop_sos radiobutton group gl, "stop em st art-es-se 1ect i on st op_eos radiobutton group gl, "stop em end-of-sel ecti on none radiobutton group 91. "sem stop, exit ou check
19 20 21 22 23 initiali zat i on. 24 * exit . 25*
check l ·Z . stop. eher_sos .. ' X' .
"h6 evento "h6 evento
"nlio taz 1550 26 * 27 Z8 29 at selecti on-screen output. "M evento 30 " exit . "h4 evento 31 * check 1 '". 2. "nio taz 1sso 32 * stop. message s789{zk) wi th 'at set ectton-sereen output ' . 33 34
557
APR ENDA EM21 DIAS UAP/4
• A linha15 defineurn gropo de boeees de op~o. A escolha de um dele, fm com que a instru~o mencionada no comentdric seja executada como indicado. Por ezemplo, escolher exit_50S faz com que a instru~ao exit seja executada no evento start-at-s ele ct i on.
35 at sel ectten-se-een on radiohutton group gl. 36 '"' exit. - hi evente 37· check 1 .. 2. - hoi evento 38. stop. -vai pari end-of -select i on 39 message i 789(zk) with ' at select ion-sc reen on rbg'.
• check 1 '"' 2 e muito codificado entao sempre reto ma urn resultado negativo.
40 41 at set ect f cn-screen. "M evento 42· exit. "M eventc 43· check 1·2 . "vai para end-cf-selecttcn 44'" st op. 45 message 1789(zk) wi th ' at sel ect i on- scr een'.
• Voce pode querer incrementar a contagem de linha para tornar a saida mais Iegfvel. isso e configurado para que 0 evento bottom-at- page seja acionado.
46 47 s tart-ot· sele ct fon. 48 wri t e: / 'Top of SOS' .
49 50
51 52 53 54 55
Retornondo do liste
exit_50S " ' X' . exit . elseif chck_50S.o ' X' ~ check 1 • 2. elsei f StOP_50S " ' X'. stop . endif. write: / ' Bot t om of 50S'. if
56 57 58 end-of- sel ect i on. 59 ~1te: / ' Top of EOS' . 60 11 nit_t!05 • 'X' . 61 exit . 62 el seif chck ees • ' X'. 63 check 1 : 2. 64 el setf · stoP_eDs .o 'X' . 65 sto p. 66 endif . 67 wr1t e: / ' Bottom of EOS ' . 68 write : / '1' , 69 / '2 ', 70 / ' 3' .
"hi
rehtOrio
- hi evento "vai para end- of-se lect i on
-I'll rel atOr10 ~h!
relatOrl0
-h&reletet tc
71
7Z top-of-pag e. 73 write : / 'Title' . 74'" exit . 75'"' check ' X' • ' 1' . 76'" st op. 77
instru~ ao
writ e
" tom. para a 1n.strul;.lio write -!lot o end-of- sele ct ion - ni o escreve depois dina
-ha event e
II!
ultne .
78 79 end-at-page. 80 ul1ne. 81· exit . 82· check 'X' • 'y'. S3'" stop. 84
"M evento e retcme para a
write: / ' Footer'.
-M relat6ri o -hI event o e retorna para a i nst r,ul;! o write "goto end-of -selection - naQ escreve depois dis so
Vejamcs row de perto os evenros no contexte de urn relat6rio que tern uma tela de sele ~ao. (Lembre-se de que a instruc;:ao parameters gera uma eels de ,e1e>10.) Quando 0 usuirio executa 0 relatorio, 0 driver aciona i nit; al i zati on e entio mcstra a tela de sele~o. Depois de pressionar 0 botio Execute. 0 driver acionaos evenecs restantes, 0 programa termina e 0 uscsrio ve a lista. 0 usudric pressiona 0 botao Back para retomar. 0 driver entio reiaicia 0 processamearc comecando na parte superior da lista de evento . Ele ad ona 0 evenro initial izati on e entio todos cs eventos subseqaectes seguem novamente em sua seqiiencia normal. 0 -resultado e que 0 usudrio ve a tela de sele~iio depois de pressionar 0 bone Back. Ha uma diferenca no processamento, porem, quando ocorre urna reiaicializacio. A tela de se1e~ao tern sua pr6pria c6pia de todas as variaveis que sio exibidas nela. N a primeira vez que 0 re1at6rio executa e 0 programa de driver recupera 0 controle depois que 0 evento i ni t i al i zat i on terminou, ele copia as valcres das varidveis do programa. para as varidveis corre spoodentes Il2 tela de sele~io e as exibe. 0 usuaric pede modificar os campos de entrada. Quando o usuaric pressiona 0 botio Execute. 0 driver armazena as valores cia tela de se le~io em duas areas de dados: uma penencente i tela de s ele~ao e entio em suas variiveis do programa.. Entretanto, essa aljao dual somente ocorre na primeira vez que voce. executa 0 programa. Quando 0 ususrio pressiona.Back na lista, ini ti al ; zation eacionado novamente. Quando a controle rercrna para 0 driver, ele nao copia suas variaveis de programa para a area de dados cia tela. Em vez disso,ele exibe os valores exisrentes da area de dados da tela; ele aincia contem os valores que o usuario digitou. 0 resultado e que 0 usui rio ve. os valores que insenu por ultimo. independentemente do que fai alterado em seu pr ograma. Entia, depois que 0 usuino pressiona 0 botao Execute, os valores na tela sio copiados para a area de clados da teta e entaO para seu program a. sobrescrevendo quaisquer diferen~as. Por exemplo, se voce configura valores durante a 1nHi al i zati on, esses valores serao vistas na tela de se1eCjao quando iniciar a
S58
-I---
!PREMDA EM 21 DIASABA P!4 ~=~:"':::::"::::':':"-
---====== ~~
p rograma. Quand o voce pre ssiona 0 be tte Back na tela de sele~aol initial; · zat ion executarf, mas as valores configurad os dea tro dele nao sen e mosrrados. 0 usuaric em vez dissoverd as valcres que ele digirou.
• A linha 10 executa. • A Iinha 11 retorna controle para a linha 6.
• A linha 7 executa. Hi dais tipos de sub-retinas:
Sub-rotinas MOYO .... TWKI ~
Uma
sub-retina e umo se~ao de
c6d igo reuti liz6vel.
• Sub-retinas intemas
Ecomo urn miniprogramo
que pode ser choma do de cvtrc ponto em sev progroma . Derrtrc dele voce pede defioir vcrlcveis, execvtcr instrv¢e.s, compute r resultados e escrever soido. Pore 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. .
• Sub-retinas externas A List agem 17.6 ilustrou urna chamada para um a sub -retina interna.
Definindo e ,harnando s ub- re tinas internas As defini~5es de sub-rotina normalmente sao colocadas no fun do programa, depcis de to dos os even ros. A instru~ao fonn define 0 fim do evento p recedente e 0 ccmecc de uma sub-retina. As sub-retinas nio podem ser aninhadas no interior de eventos.
Pan chamar um a sub-retina, utilize a instnu;ao per f onn. ~ Listagem 17.6 oferec e urn programa de exemp lo qu e define e chama uma sub-retina.
EN'WDl~ Ustagem 17.6 Definindo e chornando umo sub·rotino 1 I"tpo.rt ztx1106. 2 3 write: j ' BefoT"@ call 1' . 4 perlonn subl . 5 writ e: j '·Before call 2' . 6 perfonn sub1. 7 writ e: j •After cal ls", 8 9 form sual.. 10 write : j ' I nsi de subl' . 11 endfonll.
o c6digo na Listagem 17.6 pr oduz a seguinte saida: SAiDA ~
AHiuSE ~
Before call 1 Insi de sub! Before ca11 2 Ins ide sub! After calls
559
en
Sintaxe para a
instru~aa
form
f orn s [tables tl t2 . . . ]
Z
[using ul 'falue (u2) .. . J
~
[changing c1 'falue (c2) •• •].
1ft
T
endfonll.
code: •
5
e 0 nome da sub-retina,
• tl, u, ul, cz, c1 e c2 sao parametres. • tables pertnire que as eabelas internas sejam passadas como metros.
para-
• A adi~ao value cao pede serutilizada depcis de t abl es .
• A adi!j3.o val ue pede ser aplicada a quaisquer variiveis passadas via us ing ou chang ing .
• ~ -- representa qualquer ntimerc de linhas de c6digo.
• 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. .• A
linha 6 transfere con trole pan a linha 9.
using e cha nging .
.s
560
oa 17, MOOUURlll\AHIETfTOS ESU~Ron"AS 561
A'REM OA EM 21 DIAl ABAP/4
• Cada a~~o somen te pede ser especificada urna vez. Per exemplo, a adi~ao tab les somente pede aparecer uma vez. En ereranto, tabelas mriltiplas podem aparecer depois dela,
• Nao utilize virgulas pan separar pargmetros. • tabl es somente permi te qu e tabelas internas sejam passadas -
Die
tabelas de banco de dados. • Uma sub-retin a pode chamar Dutra sub-retina. • A recursio e supcrtada, Um a sub-retina pede chamar a si mesma au uma sub-re tina que a chama de volta.
• As definicoes de sub- rorina nao podem ser aninh;cias. (Vae!:oio pode definir uma sub-retina dentrc de ourra.)
-
Sintaxe para a instru,Cio perform
CIl
Z
perfol"ll a) s b) n of sl 52 53 •••
S m
T
(tables tl tZ• • •] [us i ng ul u2• • •J (chltlg1ng: c1 I:'Z• •• ] .
on de:
• s. 51. 52. 53, sao nomes de sub-re tina. • n eurna variavel numerica. • a) e b) sao mutuamente exclusives. •
tables, using e changi ng podem aparecer com a} au b}.
• A adi~ao value( } nao pode ser utilizada com perform.
10 form 52. 11 write : I 'Hi from 52' . 12 endfoT"lll. 13 14 for'll 53. 15 writ e: I ' Hi from 53'. 16 endfortll.
o ccdigo na Listagem 17.7 produz a seguinre ,aida: Hi from 51 Hi f rocn 52 Hi f rom 53
• 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. • Na primeira vez que 4linlu 3 eexecutada, sy- index tern Portanto, a primeira sub-retina (s 1) e executa-cia.
0
valor de 1.
e
• Na segunda vez que a linha 3 executada, sy- t ndex tern 0 valor de 2. Portanro, a segunda sub-retina (52) e executada, • Na te rceira vez que a linha 3 e executada, sy- Index tern Pcrtanto, a terceira sub-rotina (s3) executad a.
e
0
valor de 3.
Deixa ndo umg sub-rating Voce pode sair de uma sub-re tina a qualquer bora utilizando as seguintes instruc;5es: • exit • check
Utilizando a sintaxe b) voce pode especificar que uma sub-re tina de uma lista de sub-retinas seja executada. A n-es ima sub-retina na Iista de names seguindo of eexecutada. Par exempl o, se n for 2, a segunda sub-rotina na Iist a, ela sera execunda. A Listagem 17.7 ilustra esse sintaxe.
EHTlI.DA~ Listagem 17.7 Chcmondo uma serie de sub-retinas 1 report ztx 1707. 2 do 3 t imes. 3 perfornl sy.fndex of 51 52 53. 4 enddo. 5 6 fonn d . 7 write: I 'Hi from 51' . 8 endfonn. 9
• stop Os panigrafos a seguir descrevem 0 efeito de check e exit quando elas sao codificadas denero de uma sub-re tina, mas fora de urn loop. 0 efeito de . stop dentr o de uma sub-retin a e 0 mesmo, independent emente se ela for ou aac codificada dentro de um loop. Em sub-retinas: • check e exi t imediatamente deixam a sub-retina e 0 processamento contin ua com a. pr6xima instru~ao execuuvel depois de perfonn. • stop imediatamente deixa a sub-rotina e vai direrarnente para 0 evento end-of-se'lection. check, exit estop nao configuram 0 valor de sy- subrc. Se voce quiser configuri-Io, atribua urn valor numerico para ele antes de deixar. . A Listagem 17.8ilustra os efeires dessas instrU~6es dentro de sub-retinas.
562
APiEHOA EM 1I DIAS ABAPH
EHTRADA~
r
Lista ge m 17.8 sub-retina
as efeitos de exit,
o c6digo na Liscagem 17.8 produz a seguinte s:lfda:
check estop dentro de umc
In sl sy-s ubl"'C • In sZ
1 N!!!port ztx17OB . 2 data fl value 'X'.
sy-subre •
3 4 clear sy -subrc . 5 perfoT'll s1. write : / ' sy-subr c 6 perfonll 52. write : I'sy-subrc - ", 7 perform 53. write : / 'sy-subrc -'. 8 perform 54. write : I ' sy ~s ubrc -" ,
.t.
,
o
St opped. sy-subrc -
sy-subrc. sy-subrc . sy-subrc . sy-subrc .
10 end-cr -seleettcn . 11 write: 'Stopped; sy-subrc .'. sy-subrc . 12 1 f sy-suarc • 7. 13 stop. 14 " endt f , 15 write: I 'After Stop'. 16 17 form sl. 18 do 4 times .
D
AlliUS! ~
7
• A 1mb.5 traasfere 0 controle pan linha 17. • A linha 18 comelja urn loop. A linha 19 sai d o loop, m as Dio da sub-retina.
• A linha 22 ~ai da sub-retina, 0 controle retorna para Iiaha 6. • A linha 6 transfere a contrcle para linba 26. • A linha 28 trans'[ere
0
controle para linha 274 vea es.
• A linha 32 dew a sub-retina, 0 contrale retoma para a linha 7. • A linha 7 transfere a controle para a linha 36.
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 comeccu.
21 lZ
write ! 'In 51'. exit .
23 24
wMte I 'After Exi t endfonn .
I •
25 26 form 52. 27
28
31 3Z 33 34
Definindo yari6veis locois e g lo bois
do 4 times .
check II .. ' Y'. write / sy-fndex.
29 30
enddo.
write I'ln 52' , check fl .. 'y' . write / l After Check'. end form.
Umo vari6vel g/ob~1 e cqueic que e definidc foro de umo sub-rotlnc vti1izondo a instruc;oo tabl es ou data . Elc pode ser ocessodo de quolquer ponto no . progromo, se je dentro de um eventc ou dentro de uma sub- retina. ~ boo prcticc de ·prog romoc;Oo colccor definic;6es de vori6veis globo is no porte superior do progromo, em olgum lugar an tes da primeiro llnho de c6d igo executevel.
MOYO'"
ID.MO,.
Umo vcri6vel 'ocal e definidc dentro de ume sub-rotinc vtilizondo 0 in~ruc;60 lecal, data au statics . Dizemos que elc e locol ~ sub- rotina . As vori6veis definidos ufi~zondo local sOO ccessfvets de foro do sub-retina: os vari6veis definidos utilizondo data ou statics n60 eec. Assim, se a sub-retina cha ma out ro sub-retina, vc rievels deflnldcs utilizonda 1oca 1 s60 vislveis de dentra do sub-retina chomada vari6veis definidos utilizondo data ov statics n60 sdc.
NOYO til...
TWO"
35 36 fonn 53. 37 do 4 times.
38 39
sy-subrc .. 7. stop. write I sy-index .
40 41
42
• A linha 13-sai do evemo e a lista e mostrada.
enddo .
endfonn.
43 44 forti 54 .
45
write: l'In 54'.
46
endfol"'lll.
Para variaveis
locais definidas
utilizando
local
ou
da ta,
a memoria C
alocada toda vez que a sub-retina echamada. Essa memoria eliberada quando
asub-retina termina, e entia os valores dentro dele sao perdido s. Para stati cs, a mem6ria ~ rerida, Esses caracteristicas serio descritas pr ofun damente neste capitulo .
,A"PRtHOA EM 21 DIAS ABAPI4
O~ 17, .OOUURI~O, EVENTOI EStJS.ROTINAS I
Definindo uma area de trabalho tab l es As var isveis definidas que utiliz am a instrucio tables sao sempre globais. C olocar ainstrUliao tables na parte superior de urn programa define uma string 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 glo bal; essas definicoes globais devem ser colocadas na parte superior do programa. Para definiruma :irea de trabalho de tabela local den tro de urna sub-retina, utiliz e 1oca1 em vez da instrucao t abl es: A sintaxe 6. a mesm a que t abl es, mas ela define uma string local de campo, em vez de u ma glob al. As vsrisveis definidas por utilizer local sao visfveis den tro cia sub -retina e tadas as sub-rotin as que a chamam.
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 definisse ume vc ricve l no Jinho 10, yoct! eer ie capa z de ocessc -lc da Jinho 11 em d ionte, mas noo an tes da linho 10 . No coso de umo definic;oo loccl, voce pode cc esscr a versec gro bal do va riovel em quaJquer ponfo ant es do defini¢o local.
write: I ' 52-A' , zt xlfa l-l 1fnr. sel ect si ngl e'" f rom ztxlfal whe re li fn r . 'V2' . writ!!: I' 52- B', ztx lfal-l ifnr .
21 22
23 24
endform .
o c6d.igo na Lista gem 17.9 produz a seguinte saida: \AiOA~
*~----V9
Sl -A V9 51- 8 VI 52-A VI 52-B V2 Sl~C
V2 .
·Sl~~~V9
S2-A V9 52-B V2 *S2- --V2
IHlllSE~
• A Iinha 2 define uma area de tra balha global identi ficada ztxl fal .
• A linha 4 seleciona urn unicc regist ro de tabela zt xl fal eo caloca na area de trabalho global zt xl f al. •
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. EN1RADA~ Listagem 17.9 A ;nslru<;co l ocal 1 r eport ztx1709. 2 tables zt xlfal. 3 4 se lect si ngle· from ztx1fal whe re lifnr • ' V9' .
5 6 7 8 9
write : /
' ''-~ - - ~ '.
zt xlfal-li fn r.
pertann sl. wr1te : /
'''Sl ~--' .
ztxlfal-l1fnr.
perform s2.
wri te :
I
'·S2-- ~ '.
ztxlfal·li fnr .
10
11 fc rm 51. 12 write: / ' 51- A'. zt xlfal-lifnr .
13 14 15
local ztxlfal. select si ngle· f rom zblfal where 1Hnr. ' VI'. write: I ' 51-8' . ztxlfal·l1fnr.
16
perform 52.
17
write:
18
endf onn.
19 20 f orm 52.
I .
.
51-C'. ztxlfal -l ifnr .
• A linha 12 escreve a valor de 1ifnr da area de trabalhc global ztxl fa 1.
• 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. Para as p rop6sitos desse exemplo, ela ecolocedadepois de wri te para demonstrar completame nt e 0 efeito de 1ccal .) Uma nova posi<.r ao de mem6ria ealocada tendo 0 nome ztx l fa l . As referen cias para ztxl fal depois desse ponto na sub-re tina e em eodas as ourras chamadas faria referencia a essa defini'iao local de ztxl fal, nao a global. A global estd agora ina cessfveL • A linha 14 selecion a urn anicc regist ro e coloca-o na area de trabalho localztxl fal.
o A linha 15 escreve um valor apartir da area de trabalho local.Ele e Vl. • A linha 16 trans fere ocontrole para a linha 20. A m emoria local fica aloceda e ainda sera visfvel den tro de 52.
• A linha 21 escreve a partir da area local de mem6ria definida em s1.
• A linha 22 seleciona urn novo valor na local ztxl f al . • A linha 23 escreve a partir cia local ztxl fal. • A lin ha 24 retorna a controle para a linha 17. A m emoria local fica alocada e inalterada.
56S
566
"RENDA EM 21 OIA' ABAP"
~
• A linha 17 escreve 0 valor colocado na local ztxlfa l por 52. • A linha 18 retorna 0 controle pan a Iinha 6. A memo ria local eliberada
e 0 valor V2 e descartado.
0 valor de l t fnr. Ela e agora V9 que teve quando sl fei chamado. '
• A linha 7 escreve
• A linha 8 transfere
0
0
mesmo valor
controle para.a linha 20.
• Antes de executar a linha 21, urna defini~o local de ztxl f al cia foi . criada.. Portanto, a glob al ztxl fal -l i fnr e escrita, • A linha 22 selecion a urn r egisrro na area de trahalho glob al ztxl f al.
o A linha 23 escreve V2 a partir da area de traballio global. • A linha 24 reroma 0 co ntrole para a linha 8.
o A linha 9 escreve V2 a partir da area de traballio global. Se voce defmir uma variivel local tendo 0 mesmo nome que uma variwel global. a va.riivel local assumira a precedencia dentro d.a. sub-re tina, Conseqfient emente, voce mo sera, capaz de acessar a varifvel global do mesmo no me dentre dessa sub-retina. Tcdas as referencias serso para. a varisvel lccal.
Definindo dodos As varidveis definidas pela instrU~o data na parte superior do progr ama sao globais. As definiljoes de data denrro de uma sub-rotina sao locai.s para a sub-re tina, A mem6ria e aloca da para essas variaveis quan do a sub-retina e
chamada e e Iiberada quaodo ela retorna. Com variaveis definidas utilizaodo 1ccal , os valores nessas variaveis dat a serso perdidos quando a sub-retina
retornar, Utilize a instruliao statics p ara CM variaveis locais qu e Ili o sejam libertadas quando a sub-retina termina, A sintaxe para sta t i cs ea mesma que 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 rermina . Entretanro, uma varia-vel esti tica e visivel somente d e dentre da propria sub-retina, e nio de dentro de sub-retinas iniciadas par ela. Da pr6xima vez que a sub-retina far chamada, a rnern6ria para essa variavel torna-se visivel nov amente. 0 valor dentro dela sera 0 mesmo de quan do voce river retom ado dessa sub ·rorlna da ultima vez. A memo ria de um a vwvel estinea p ertence i sub·rotina qu e a alocou; essa variivel nio e visivel a panir de outr-.s sub-ratinas. Se voce alocar uma variavel estitica do rnesmo nome em mu ltiplas sub-rotinas,'essas serio variaveis separadas com sua propria mem6 ria e seus pr6prias w la res. A Lista gem 17.10 ilus tra variaveis dd inid-.s utilizando dat a e s tatic s.
EKTiADAr
Listagem 17.10
data e stat i cs
1 M!port zt xl710. Z data: 11 type 1 value 8, 3 f2 type 1 vatue 9•
•5 write: I 'before
51:' , fl . rz. 6 do 3 times. 1 pl!rfol'1ll 51. 8 enddo. 9 wM t l!: I ' af t l!r 51:', n , f2 • 10 11 101"1I 51.
12 13 14 15 16 11
data fl type i val ue 1. stati cs f2 typl! 1 v~lue 1. write: I ' insi de 51: 1 , fl, f2. perfona 52. fl -. f2 • 12 '" 2. ertdfona.
18 19 f ol"ll 52. 20 wnte: ' 52·', fl,
21
ra.
endfonn.
o c6digo na..ustagem 17.10 produz a seguinte sarda: 51: 51: 51: 51: after 51:
before insi de ins ide inside
6 .1 1 1 8
9 1 2 4 9
'2-
'52-2-
8 8 8
9 9 9
o As linhas 2 e 3 definem as varisveis globais fl e f2. • A linha 7 transfere 0 contro le pan a linba 11. • A linha 12 aloes nova memoria para a. variivellocal fl e atrib ui a ela.
urn valor de 1. • A linha 13 aloca nova memoria para a vanavel escl.tica f2 e atribui a ela urn valor de 1. o A linba 15 mnsfere
0
controle para a linha 19.
• A linha 20 escreve a partir das varifveis glo~ais f1 e f2.
• A linha 21 retoma 0 controle para a linha 15.
o A linha 16 ntultiplica f2 por 2 e atribui 0 valor para fl e f2. linha 6. A ~~m 6r iade fl eliberada, • A linha 17 ret orna 0 controle para a e
mas a de f2 eretida. Entretan to, ela nio sera Vlslvel novamen te at a pr6xima vez que a sub-rotina. for chamada .
DIA 1HODULWl.I\AlHVEHTOSESlJ8.ROTlfW r
voce deve memorizer sew nomes, assim como guardar as palavrascbave em instru~5es.
• 0 loop inicia e a linha 7 novament e traas fere a ccntrcle para a linha 11.
• A linh a 12 aloca nova m em oria para fl e atribui urn valor de l.
o
• A linha 13 faz com que a memoria antericrmente alocada para f2 tcme-se novamen te vistvel com essa sub- rotina. 0 valor em fZ ~ Z,
Posso ver 0 programa de driver? E possivel escolher 0 driver? Posse criar u rn driver? Quais sao as diferengas en tre as programas de driver disponiveis?
como era quando a sub -retina terminou da ultima vez.
1010 ~ 1!I.iO ,.
Resumo
o
• 0 ABAF/4: tern tres ripos de unidades de modularizacio: evectcs, sub-re tinas e m6d ulos de fun~ao. • Existem eventos em todos os programas, Se nenhum for codificado, o evento padr jo sta rt-of- s el ect ion sed automaricamenre iaserido. . in itial izati on e frequenremence utilizado para atribuir vaIores a parfmetrcs que aparecem em urna tela de sele~aa. end-of-selection e usado pua limpeza do programa, resumes ou rorinas de rerminacao ano rmal. O s event os sao acionadcs pelo programa de driver. 0 driver semp re inicia antes de seu programa e controls quando os evenros sao execundos. Voce Dio pode colocar urna condicac em volta de urn nome de evento . Toda s as eventos sao acionados no vamente quando a usuirio retcma da lista. En tr etanto, as variaveis de tela de sele~o .cia sao pre enchidas de novo a partir da irea de dados do programa. •
Util ize.ext t, check e stop para deixar urn evento.
P&R
o o o o
o que acontece se eu river dais eventos de mesmo nome denerc do m esm o programa?
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 banc o de dados l6gicos na tela de atributos de programa. Se' voce 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 Ier as dados a partir do ban co de dad os e Iorcecs-los para seu programa auromaticamente. Os bancos de dados 16gicos padrjo nao leem a partir de b anco de dados - eles apenas acionam as eventcs. Independentemente do driver que voce escolher, os eveneos sempre serao acionados na me sma crdem relativa. Mesmo Sf voce criar seu pr6prio programa de ban co de dados 16gico , nao poderf alrerar a sequencia relativa de eventos, nem seus names. nem poded criar novas. Pan ver um p rograma de driver , inicie de dentrc do edieor de codigo-fonte, Escolha 0 caminho de men u Utilities-Help On. Selecione a bod e de op~o Logical Database e digite um id de banco de dado s 16gico (KDF, par exemplo). Vo ce entao veri a estrutura da banco de dado s 16gico. Escolha a caminbo de menu Gor o-Daesbase Program para ver a pro gnma de driver . Lembre-se, 0 codigc mestrado denero do driver n este capitulo era urn pseu doccdigo, entia voce nao vera as instrucoes 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.
Se voce river du as instru gdes codi ficad as de mesm o nome den do m esmo programa, qUa.D.do 0 ev ento for acionado a sistema executara os dais na ordem em qu e eles aparecem em seu programa.
o
Se coloco uma instru~o write em urn evento que vern an t es .d e start-of-selec:tion) eIa func:iona somente quando nao h oi um a tela de sele~o. Se houver uma tela de sele~o, mo vejo a saida. Par que?
Co mo passa saber a diferens:a entr e urn nome de evento e uma
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 fases: a fase de dialogo e a fase de lista. A fase de dialogo semp re ocorr' primeiro. seguida pela lista. A fase de dialogo e utiJizada para exihir campos de entrada para a usumo, como aqueles gera-
teO
instro~io?
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 quaisquer ou tras caracter£sticas identificaveis que seus n ames. Eles sio simplesmente palavr.as rese rva das e p ara re con hecer u rn
o
569
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 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 que ocorrem em in itial i zati on ainda poderac ser vistas.
,
f
Oi 18
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 entendimente 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
paramelros para sub-rotinas
Teste 1. A varia~o write to cia instru~ao write acicna top-of-page?
D epois de completar esse capitulo, voce sed capaz de
2. Que eventcs voce nao utilizaria.em stop ? 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 valor e resultado
Exercicio 1 erie u rn rela.t6rio que aceita urn parimeteo de entrada chamado p-landl. Defioa-c como ztxl fal~1andl. Preencha esse campo com a valor padrio US em tempo de execu~o, utilizando 0 even to Init ia l i zat io n. Seu programa principaldeve tee uma Unica instru~ao para. chamar uma sub-retina que selecioca 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 tcp-of-pape para criar 0 titulo do eelat6rio . Escreva 0 valor do campo p_landl no titulo.
e
•
Pass u strings de campo e ubelas internas para. uma sub-retina
•
En t end er como as variaveis sao compartilhadas entre sub- ro tin as externas e int ernas
Passando para m et ros Alem de definir variaveis utilizando t abl es , local, data e stati cs, tambem 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
• A linha 14 define tres variiveis: fl, f2 e f3. Ela atribui 0 valor de fl a fl, 0 valor de f2 a f2 e 0 valor de f3 a f 3.
Os nomes de pcremetrc que oporecem no instrv~co form seo chcmodcs por6metrcs formais . Esse termc e IOcil de lembror, porque "former possu i 0 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 .
NOVO ....
tRiO
r
• A linha 16 escreve as valares das vuiiveis defmi das na linha 14 na instrulSao form; fl, f2 e f3.
• A linha 17 retorna a controle para a lin.ha 7. Revise a sintaxe das IDstIlllSoes form e perform antes de continu ar. Con-
NOYO ...
Os nomes de pordmetros que oporecem no instru¢o perfonn soo chcm cdos porOmefros recrs. Par exemplo, no instruc;co perform 51 using fl changing f 2 f3, as parametres fl, f2 e f3 soo chomodos pcrametros reels.
TWO
r
U rna maneira de definir varidveis como parfmetros
suite a sC!jaa "Definindo e chamanda sub-retinas Ineemas", no Capitulo 19.
e ilustrada na Lis-
tagem 18.1.
~-----
IFa~a
EHTRADA~ Listage~ 18.1 Passcndo pa ra metros pora uma sub-ratine 1 report ztx l BOl . Z data: fl value ' A' .
3 4 5
12 val ue 'B', fJ value ·C' .
6 perfom: 51 using fl 12 ra , 52 using fl 12 13 . 8 9 tOrrt 51 using pI p2 p3. 10 vrtte : I fl. f2. 13. 11 / pl. pl. p3. 12 endform. 13 14 torn 52 usi ng fl 12 f3 . 15 skip. 16 write: / f l . f2 . rs. 17 endform.
Utilize pcremetrcs formais digitodos,
Nao passe tabelas inte mos par val or, nem
eles sOo mo is eficientes do que as
per volar e resultado, a me nos que voce
parflmetros noo digitodos.
reolmen te precise de uma nova c6p io do tcbelo intemo. Posse pa r6metros par referencia sempre que pc ssfvel.
7
Criondo pommetros digitod os MOVO.... TEUO ,.
as pardmetros formais nao digitados permitem que voce passe uma
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 inteirc de quatro bytes. Se voce passa uma string de caractere de comprimento igual a 3 pan 0 me~mo parimetro, ele se tamara a earactere 3.
a c6d.iga na Listagem 18.1 produz a seguinresatda:
A 8C
• 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 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.
• A linha 12 retorna
e
Um pa~metro ndo digitcdo um po~metro formal que nciotem um tipo de dodo seguindo suo defini¢o no i~oo fonn. Na Ustcgem 18.1, todos as parametres ercm nao digllada s.
A 8C A8 C
AN.iUSE~
Os porern_~s formats podem ser digitcdos au nOo. Urn porbmetro O'9itcdo e um por6metroformal que tem urn tipo de dodo seguindo seu nome no instrv¢o fonn.
0
contrcle para a linha 6.
• A linha 7 transfere a controle para a linha 14.
I I
I
-
Sintaxe para pcrdmetros digitad os
CI'
Z
fom sl using u1 type t value(u2) type t ch""gi ng cl type t value (e2l t)'lle t .
S
cede:
T
• ul, u2, c1 e cz sao parametros formais. • t~. tantoum tipo de dado de ABAP/4, como um tipo de dadodefinido pelc usutrio.
m
•
51
e urn nome de sub-retina,
r
574
DlA lUODUU~lAlio , PASSAHDO PARiMmOS PARA SUS-R1lll'AS
APRE,,, EM 21 DIAS ASAP/'
IHiUlE~
Os seguintes pontos se aplicamr
• Somente urn tipo de dado pede ser especificado na instnu;ao form. Urn
linhas 2 a. 5 definem qua.trO va.riivei s tendo varios tip os de dados. F3 edo tipo c e ccmprimeatc iguala. 8, com um comprimento de safda igual a 10 (definido no domfnio de syst-datum). Fa e do ripe c e comprimento 6 com urn comprimento de saida. de 8 (definido no domlnio para. sy-uzef t }.
• As
co mprim ento Ilia pede ser especificadc..
• Se voce define urn pargmerrc forma.! urilizsndo urn tipo de dado de comprimento fixo (esses sio tipos d, t, i e f). 0 comprimento do parametro real deve corresponder ao tipo de dado do parimeuo formal Esse enormalmente 0 case,
• A linha 10 rransfere 0 conerole pan. a linha 12. • Na 1inh.a. 12, pI aceita somente parsmet rc s reais do tipo c. fl edo tip o 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 ocorrido. p2 eum tipo de dado de comprimentc fixo ; 0 tipo i esempre de comprimento iguaI a 4; f2 tambem e, eerao as parimetros corr espondem-se complewnente. p3 e p4 tambem sao tipos de dados de comprimento Iixc, come sao seus parimetros reais.
ja que voce normalmente prcjecara
seu p~ogram~ de tal forma que as tipos de clades dos parametres form~5 e rears conesponderio entre si, Voce normalmente mo passa. . urn txpo de dado.para um outre ripe de dado diferente.
.. Passar ~~a variavel com 0 ~po de dado au comprimento errado para urn pa::metro digitado causa urn erro de sinnxe. A Listagem 18.2 mostra como
.
utilizar padmetros digit ados.
• As linhas .16 a 19 escrevem os valores de pI a p4. N ote que
0 comprimento de safda DaO e· passado do parimetro real para. 0 form al 0 comprimento de safda. dos pardmerros formais e confi gurado como 0 padrao para. cads tipo de dado. Issc faz com que a safda de data. e a hera nao tenha separadores.
!HlliDI~ Listagem 18 .2 IJnlizondo porOmetros digitodos 1 r~ort ztxlOO2 . 2 data: f1 value 'A'. 3 f2 type 1 value 4, 4 f3 l tke sy~datUli. 5 f4 like sy- uzef t. 6 7 f3. 5y·datum. 8 f4 · 5y- uzef t . 9 10 perfonn sl using fl f2 f3 f 4.
Os pardmetros digita.dos tem treS vantagens: •
'.
11 1Z fo rm 51 usi ng pI ty pe c pZ t ype f 13 14 15 16 11
wr1te:
18 19
ZO
p3 type d p4 type t. pI, p2. p3.
I I I I ...
164836
• Ajudam a. prevenir erros de codifica.l;jao. Ji que voce MOpod e passar urn parlmetro de tipo incompatfvel, 0 verificador de sintaxe indicari. o eITO para voce se ten tar passar urn parametr o incompatfvel.
Possondo strings de campo
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 para. a sub~rotina, por meio de urna. desw duas a.di~6es ainStruliao .f orm:
a c6digo n' Listagem 18.2 produz, seguin" , aida: 19960510
fun
Sao mais eficientes. Enecessaria mencs CPU a de alocar memoria para. urn parimetro digindo, que pan. um nio digitado.
• Ajudam a. prevenir erros de tempo de execul;jao. Par exemplo, se seu programa aceitar uma variavel nao digitada e executar nele um a operal;jaO aritmecica, e posslvel passar dados de caractere pa.ra essa subretina, Se isso acontecer em tempe de execu~ao, um dump curto a.contecera.
endform.
MA.
575
•
•
•
like x
• structure x 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
D. lU DDUURIlA\AD, /ASSAIl" pARiMETlDSPARA SU6·R011N.4S
AP RENDA EM 21 DIAS ABAP/4
Co nt rol a ndo como as pardmetros sao passados H i eres maneiras de passar as p arimetros pan. uma sub-retina:
18
19 2D
577
changing p3 val ue(p.) . write: I pI, pZ. p3, p4. 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 • Passarpor valor e resultadc A sintaxe na instruc;ao form determine como as varidveis slo passadas. A sint axe em perf orm mo faz isso. 0 seu significado sen explicado na proxima Seli3.a. A primeira coisa ne cessaria e aprender a. codificar each metoda. A Tabela 18.1 mostra a relacionamento entre sintaxe e meeodcs de passagem.
24 wri te: I pI , p2. p3. p4. p5, p6. 2S endfc re. 26 27 t om s3 using value{pl} 28 30
endfol'1ll.
o c6digo na Listagem 18.3 produz a seguince safda: A BC 0 A, 8 C D E F A BC
Meto da chang ing
Passe por
vt
refe~ncic
using val ue (vl)
Posse por refer!ncio Posse por valor
changing val ue(vl)
Posse por valor e resultado
Embora a sintaxe em form e perform possa diferir, por causa da clareza de programa elas devem sec as mesmas. A Listagem 18.3 ilustra como codificar essas adi<;6es.
ENTRAOI~
Lislagem 18.3 Como codifica r adi, ,,e, de parOmetra
1 report zt xl80J. 2 data : fl value 'A' . 3 4
5 6
7 8 9
10
f2 13 14 f5 16
value 'B' . val ue value value value
IMlUSE ~
• A lichs 9 passa quatrc parametres para a.sub-retina s1. A sintaxe na linha 17 det ermina como des sao passados. f1 e f3 sio passadcs por referenda; f 2 e passado por valor; f4 e passado per 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 par valor e resulrado.
• A linha 12 passa tr es parametres para a sub -retina 52. f 3 epassado par 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 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 parirnetros sao passados.
Lembre-se do seguint e:
' C' . · ' 0' , ' E'. ' F' .
• perfonn e form devem cant er 0 mesmo niimero de parametres. • A sintaxe nas instrucoes perform e form podem diferir.
perform 51 using f1 f2 thanging
p2 val ue(p3 ).
write: I pl . p2. p3.
Ta bela 18.1 As cdlcoes de instruc;60 form e 0 metodo resultcnte de possogem de panlmetro
usi ng vI
cha nging
Z9
13 f4.
11 12 perform s2 using f1 12 fJ 14 13 cllanging 15 f 6.
l' 15 perforlll s3 using fl f2 fl . 16 17 tom 51 usi ng pI val ue (p2)
• A sint axe na instru~io f orm determina apenas 0 meto da pelc qual urn paramerro epassado. • A adic;ao ve1ue ( )nio pede ser utilizada na instru c;io perfo rm. • using deve vir antes de changing. • A adi~a ust ngs6 pede ocorrer uma vez em uma instruc;ao. A mesma regra se aplica a changing.
578
APIEi DA EM 21 DIAl AUP/4
Utilizando
OS
DIA 11, IIOD1JUR1ZA(AO, PillIJIOO PW.mOS PARA51Ja.R1J11NAS
metodos de possagem de pardmetms
A Tabela 18.2 resumidam ente descreve as [reS metodos de pa.ssagem de parametres.
7 f oT'll s l using pI. 8 pI - 'X'. 9 endf orm.
o ccdigc na Listagem 18.4 produz a seguinte saida:
Tcbela 18.2 Metodos de passogem de parametres Metodo Por referenda
X
Descri~ao
Vantag ens
Posse um po nteiro po re a
Muito eficiente
posit;oo de mem6ria o riginal
Alcco umo novo posic;oo de mem6rio pa ra utiliza~co dentm
Pcr vclcr
do sub-retina. A memoria
ANluSE ~ . • A linha 2 aloca mem6ria para a variavel flo Por esse exemplo, vamos partir do pressuposto que a posiliaOde.mem6ri a e 1000.
Impede olte rac;oes no
• A linha -1- trans fere ? contro le para a linha 7. • A linha. 7. faz com que fl seja passada par refergncia. Portanto, ,,1 e urn ponreirc para posiliao de mem6ria. 1000.
variey!!!" possodo
e
liberndo quando a sub-refine termina.
Porvalore resultodo
Similar 0 po ssor por vclcr, mas o conteUdo do nova membria 6 cop iodo de volta para a mem6rio original antes d e retornor.
Passanda para metros por referenda Quando voce passa um parimetro po r referenda, a nova mem6ria nae ealccada para a valor. Em vez disso, urn pont eiro para a posi~ao original cia mem6ria e
passado. Todas as referencias para 0 parimetro sao referencias para posi~ao original cia memoria, Altera~6es na varidvel dentro cia sub-rotina anializam a. posi'iaa original da memoria im ediatam ente, A F igura 18.1 e a Listagem 18.4 ilustram como isso funciona. Figura
possocJopor refer~ndo ofela a posi¢o original do mem6ria.
eoderecede mem6rio 1000
18 1
Como um pon5ml!trO
report zt x1804. ~, ~ ntes de c:homodo de 51 data f1 valu e 'A' . . _ ,Q
~t ~~bUiC;OO 11m 51
perfonn 51 us i ng f1 I f1 sc ldc : X
wr1t e
..- ..- . , .
~
- ..: . • ;.'-'. ~' , .,
linha. 8 modifica a posicfc de memoria 1000, fazendo com que a mem6ria para f1 se altere para X.
• A
Permite oltero<;6es e
permite umo reversec (rollbock)
1
-.-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 . . - .•--_.
EIlTU.DA ~ Listagem 18.4 a efeito do possogem par refen! ncio
• A linha. 9 retoma 0 ccctrole para a. ~ 5.
• A 1inha. 5 escreve 0 valor X. Com sub-rotinas ineemas, In pouca diferenca ent re passar parametr e s por referencis, e acessar varU.veis globais de dentro cia sub-rotina. Ambos permitem que voce altere 0 valor de uma variavel global direeamec re. Nas sub-retinas externas e m6dulos de fun,ao (veja 0 CapItulo 19, "Modulariza,ao: m6dulos de fun~o. parte 1"), a passagem por referencia. e mais ut i!. Mesmo assim, passar pargmerros para uma sub-retina - seja ela interna ou externa~ urn born estilo de prcgramacio, que tcrna a. manutencdo mais facil e melho ra o readaptabilidade de seu progrema. As duas adi'ioes us; n9 f l e chang; n9 fl passam fl por referenda - elas sao identicas na fun,ao. A =io paraque asduas exisram e que- utilizadas adequadamente_ podem documentar quando a. sub-retina. mudara. urn. pardmetro ou nac. Ao codificar changi ng com parimetros, a sub-ratina se alt er a, Voce deve mer a codifica.c;::io us; n9com parimetros que Dio sejam aleersd os pela sub-rotina. A Listagem 18.5 ilusua esse ponto. .
EllflADI~
Lista gem
18.5
using e changing seo id€l nticos no func;eo
1 re port ztxI805 . Z dat a: fl val ue 'A'. 3 f2 value 'a' .
2 data fl value 'A' .
•5 wri te : I fl.
3 4 perfonn sl usi ng fl . S 'IIrae I 11.
6 perform sl using 11 changing f2. 7 8 write : I fl . f Z.
1
6
report ztx 1804.
,
f2 .
579
580
A"ENDA EM 11 DIAS Am/4
o c6digo na Listagem 18.6 produz a seguinte " ida:
10 fo m 51 using pI changi nri p2.
11 12 13
X A
pl ·pZ - 'X' . endforlll.
• A linha2 alOC2. mem6ria para a varisvel f l. . • A linha. 4 transfere
o c6digo na Lisragem 18.5 p roduz.a seguinte saida: SAillA ~
ANiliSE ~
AB XX
fl automaticamente
por refer!nci.a. Voce deve codificarseus pardmetros de modo que usi ng e c~angi n9 documentemapropriadamente sua ucilizaliio desses paclmetros.
• A linha 10 retorna a controle para a linha 5.
• A linha 9 escreve
Fi g ur a 1 8 2
Com o urn porfrmetrc .
pos sa do per valor a/ceo umo novo
posi¢o de
report ztx1 806. dat a: fl val ue ' A' .
m
en tes do chomoda a 51 ~ op6s a otribui~50 em s1
perform 51 using f lo I f1. soldo: A
writ e
ormazenomeTJto
Independente do
original.
Lisla g e m 18.6 0 efeito de possegem por volor
1 report zt:d8 06. 2 data: fl vat ue ' A'. 3
perlol"lll 51 IIsi ng fl . I fl .
5 writ!! 6
7 fonn sl using val ue{pl) .
~i~;
B 9
write / pI.
lD
endfonn.
pI • ' X' .
0
einalterado.
valor X.
• A linha 5 escreve a valor A. U tiliz.e a passagem por valor, quando voce precisar de uma c6pia local de uma varavel que possa ser alrerada sem afetar a original. A passagem por referencia ~ eficienee que a passagem por valor. Utilize 0 metoda por referencis, a mencs que voce precise de -um a c6pia local independente cia variivel
rom
Passando as para metros par valor e resultado
ilusuam como isso func iona.
~~i~
e copiadc na mem6ria para pI.
• A linha 8 modifies a mem6ria para pl. fl
Quando vcea passa um parimetro per valor, uma no va mem6ria ealccadapan. esse valor. Essa memoria e alocada quando a sub-retina e chamada e liberada quando a sub-ratina retoma. Porranto, as refereacias para. 0 parimetro sao voltadas para uma Unica area cia mem6ria que e conhecida apen.a.s dentr o cia 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
•
contrale para linha 7.
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 fl. Esse exemplc 56 ilust ra qu e epcssfvel alterar qualquer parimetro passado
Passando pa rametros par valor
EIlTlADA~
0
• A linha 7 faz com que fl seja passsdc por valor. Portanto.jn se refere a uma nova posilj2.o de mem6ria que ~ independente de fl. 0 valor de:
·1
A passagem par valor e resultado e muito similar apassagem par valor. Como no caso da passagem por valor, uma nova area de memoria e alocada e ela armazena uma c6pia independente da variavel. Eliberada quando a sub-retina termini. e isso accctece tambem quando a diferen~a ocorre. Quando a instruliaa endfonn e executada, ela copia 0 valor da area de mem6ria local de volta para a area original de mem6ria. As altera;oes do parimetro dentro d.a sub-retina sao refletidas na original, mas nio at! a 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 uma de duas instrUlioes: • stop • message ennn 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 serio descartadas antes de end-of-sel ecti onser acionado. Num sentido; stop compona-se como urn mini-rollback para parametro s de valor e resultado. Quando eiltilizada dentro de urna sub-rotina, a instnJ'iao stop enormalmente precedida par urn teste de urna condiliio ~orma1 dentro do programa. Se a
582
ccndicac manna! su rge, stop. e executads. Esta descarca as alterac;oes para variaveis de valor e de resulradc e adona end-of-sel ect ton, onde as procedimentes de limp eza sa.o errdo executados. Utilize a passagem por valor e resultado para pargmetros que voce quer 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 instru¢o message e seu efeito sab re a s sub-rctincs sOo obordados
no Capftulo 21, 'Telos de sele¢o·.
e resultado.
Como urn par6metro possadof'Ol' valor ~ resultado olocc urno nova posi¢o de
report ztxl807 . dati: fl value ' A' .
o
c6digo na Listagem 18.7 produz a seguinte sai'd a:
St opped. 11 :' B
• A linha 2 aloes mem6riapan a variavel f l. • 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. 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
Fig u r a 1 8 3 ·
enderer;o de memoria 1000 antes do chcmcdo a s1 s de retcmcr de 51
perfonl: 51 "using f1 writl!: I fl. safda: X
• A linha 12 copia 0 valor de pI de volta em fl , Libera pl e transfere controle para a linha 5. • A Iinhe 5 passa 0 controle para. a linha 14.
• A linha 15 alters
0
valor de pI para B.
indepe ndente do original e copio 0
valor de vol'"
• A linha 8 escreve 0 valor B.
novam~e.
Possando tobelos internos como porcimetros OORADA~ Listagem 18.7 0 efeito de passagem por valore resultodo 1 report ztdB07 . 2 data: 11 value ' .... ". J 4 perform: 51 changing fl . 5 s2 changing 11. 6
7 end-ct -selecttcn. 8
wri t e: / 'Stopped . 11 "", fl.
s 10 form sl changing value(pl).
11
pl· 'B'.
12 endfonn. IJ 14 form s2 changing value(pl) . 15 pl· ' X' .
16 17
stop . el'ldform.
0
• A linha 14 faz com que f1 seja passado por valor e resu ltado. Uma no va area de memoria ~ alocadapara pI e 0 valor de 11 ~ copiado nela. • A linha 16 emite a instru)ao stop . Ela Iibera a mem6ria para pI e valor alte"cado ~ perdido. 0 centrale ~ transferido para a linha 7.
ormozenoml!!nto
sa3
DIA 18:MODWRlZA~O: rASSANOO pARlMm:os PARA SUB-Rn1lNAS
APRENDA EN 2t DtAS ABAP/4
0
.
Talvez sejauma boa ideia revisar tabelas internas agora,especialmente a sintaxe de tt[ ] . Voce pede utilizar urn des dais metodos para passar uma tabela interna para uma sub-retina: .
I. Passar com a linha de cabecalho 2. Passar apenas 0 cerpo
Sea tabela interna riverumalinha de cabecalho, a merodo 1passa as dais para a linha de cabecalhc eo corpo para a sub-retina. 0 metoda 2 passa 56 0 corpo para a sub-retina. Se a tabels intema me tiver urna linha de cabegalho, voce pode tambem utiliza r as dois merodos, Entretanto, 0 rceecdc 1 se comporears urn pouea diferenee - ele automaticamente criara uma linha de cabecalhc para a tabe la inrerna dentro da sub -retina. Nesse pccto, voce pede estar se perguntando, "Per que eu iria querer passar uma tabela interna sem uma linha de cabecalho?" Na mai oria das vezes, 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
D ~ 11, MDDUWlZA>'Do PASSAHDO PARAMrnDS PARA SIJ8.R011NAS
APRf HDA EM21 DIAS ABAP/4
- uma tabela interna aninhada DiD pede ter uma l.i.nlu de cabecalho. Tabelas intemas aninhadas sao util.izadas rom freqiientementc Il2. vers ac 4, entia essa tecnica sera necessaria com mais freqiiencia em sistemas mais novos. A Tabela 18.3 resume a efeiec de cada Urn destes meeodos em tabelas
tabela in terna serjo desconhe cidos dentro da sub-retina. Acessar qualquer componente dentro cia. sub-retina entia resultari em um erro de sintaxe. A sintaxe de que voce pr ecisa depende do metodo que utiliza para. passar 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 sub-retina
Metodo
Com Iinhc de
Se a ta bela Inte ma tiver uma linha de cabesalho
Se a tabela inte rno nao fiver uma linha de cab~alho
Possa ambos
eric umo linha de ccbeccthc dentro do sub-re tina
cc becclhc
Sem t.nho de ccbecclbc
Posse 56
0
ccepc
Posse
0
Metoda
Sintaxe
Valores v6lidos para x
Com linho de
tables it stru cture x
Uma string de compo
ccbecclhc Umo estrutura de ODIC Uma tab ela de DDIC Uma tabelo interne com umc
tables it li ke x
corpo
llnhc de ccbecolhc Umc tcbelc inferno sem uma linha de ccbecclhc Um corpo inferno de tobe la
(i t [ ]1
A TabeIa 18.4 mos rra a sintaxe pua cada metoda de passagem em uma tabela intema para uma sub-rotin a,
Sem linhe de ccbecelhc
using it [
111ke
X
Uma tabel a interne sem linho
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
Com linhode ccbecclhc Corpo openes
form sl form '1 form ,1 fo rm ,1 form ,1
Como passodo
t ables tt using tt[ ] changing ut ] u'i ng valu.(lt[ ]J changing value (ft [ 1J
Pe r referende Per referAnde Per referend e
Pcr vclcr Po!" valor e resvltcdo
Se a tabela iaterna tiver uma linha de cabecallic, 0 primeiro metodc na T abela 18.3 passa tanto 0 cabecalhc como 0 corpo pan a sub-retina. 0 resto dos mercdos passa somen t e a corp o. Se a ubela intema nio civer uma linha de cabe~a1ho, 0 prim eiro metoda naTabela 18.3passa 0 corpo e cria uma linha de cabe~a.lho cleotra cia sub-rotina. o resta passa somente a carpa.
Tornando os componentes de uma ta bela intern a conhecidos dentro da sub-retina Mer amente passar uma tabela interoa Ilio e normalmente suficiente - voce tambem deve descrever a estrutura cia tabela interna para a sub-ratina. Se nao descrever a estnl tura cia tabela intema na instru~io f o"", as componentes da
A adi~a.o structure esperaurn nome de strin g de campo depoisdela. Aqui, coclifique 0 nome de qualquer string de campo, estrutura DDIC, rabela ou 0 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 refersncia para 0 corpo de um a eabeb inte rna. Se a tabela int ema que vocf deseja atribuir names aqui nio tiveruma linha de cabecalho , tanto it au it[ ] 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 voce passa soment e 0 ccrpo, nc rmalm ent e preeisar.i de uma area de trabalho dentto da sub-rotina para edicionar e recuperar registros da tabela interns, P ara defmir isso, voce pede utilizar local, data au stat ; cs, Se uma area de trabalho global ja estiver disponivel, voce pode utiliza-la, embora seja menos deseji.vel. porqu e acessar variaveis globais de dentro de urn. sub-rotina toma 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 disponiveL Etadefine umastring de campo utilizando somente 0 corpo .de uma tahela intem a. A strin g de campo resultante ~ exatunente como urna linha do corpo cia. tabela interna i. t abbody . Par exemplo, data fs l ike lin e of it[ J define uma string de campo chamada 1s. Ela tem a mesma estrotura que uma Unica linha de ; t . .
585
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 de cabecalhc como a corpo pan uma sub-rotins, utilize a sintaxe mostrada na primeira linha da Tabela 18.4. Isso passari ambos, Iinha de cabecalho e ccrpc, que serso passados por referencia, Portaorc, altenC;6es Ieieas em uma linha de cabecalho au no corpo da tabela intema dentro cia
• A linha 7 preenche a rebels intema com Slinhas da tabela zt xlfal. • A linha 8 transfere a contrcle para a linha 13.
• A linha 13 faz com que a eabela interns seja passada junto com sua linha. de cabecalho.Ela epassadapor refe rencia, encao pt eurn ponceirc pan a original, structure enecessaria para tornar a esrrurura da tabela
sub-retina imediatamenre serio refletidas na original A Lisugem 18.8 ilustra essa sintaxe.
ENTUDA~
interua conhecida para a sub-retina. Sem ela, qu alque r acesso a urn
componente da tabela interne causaria urn erro de sintaxe.
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 it conhecida deaero da sub-retina.
ccbecclhc com sua Iinho de ccbecclhc
• A linba 20 Ie a linha 3 de pt e a eoloca na linha de eabec;alho. Sern a adiliaO structure na Iinlu 13. essa linha teria causado urn errc de
l report ztdBOS . 2 • Aqu1, IT E IIIIla tabela. tnterna que tern uma l 1nha de cabet;alh o 3 • Este programa IlOstr a CQIl'lQ passar a l1nha de cabecathc e a ccrpo. 4 tables ztxl fal. 5 data it l tke ztxlfal occurs 5 with header Jtne.
sineaxe. • A linha21 altera c valor de 1i fnr nalinha de cabecalho. Cemo a ubela int erna foi passada com a linha de cabecalhc por referencia, isso modifica. 0 ccnteudc da linha original de cabecalho.
s 7 select * up to 5 rows from ztxlfal fnto table it order by l ifnr . . 8 pl!!rfonn 51 tables it. 9 loop at i t . 10 write I 1t·1ffnr. 11 end1oop.
• A linha 22 scbrescreve a linha 3 da linha de eabec;alho. Como a tabela
ineema fai passadapor refersacia, isso modifica 0 conteu do cia tabela interna original.
lZ
13 forti 51 tables pt structure zulfal. · ut l1iz e a st ring de campo ztxl la l 14 "ecut , vod pode ut iltzar: 15 'l!!strutura fs l uma str1ng de campo 16 "estrutura dd1cst -una estrutura ou tabela. ddic 17 "est r utu r e it -qualquer tabela 1nte rna com l1nha de cabe~al ho -like 1t . 18 -OK se ttab nlo t1ver l1nha dl! cabl!~alho '11k. 1l[ ] . -qualqul!r ta bel a 1ntl!rna . 19 20 read table pt 1ndex 3. 21 Jlt-lifnr • 'XXX' . lIOd1fy pt t ndex 3. '2 23 endfonn.
o e6digo na Listagem 18.8 produz a scguinte salda: IliDI ~
1030 1040
' ..
• As linhas 9 a 11escrevem 0 cccteedc databela interna. A saidamostra que 0 conteddo se aleerou.
Se urna tabela interns nao riverumalinha de cabecalho e voce quiser passer a carpa. criando uma linha de cabecalbc na sub-retina, pede tambem utilizar i sintaxe mostrada na prirneira linha da Tabela 18.3. Issa passa 0 corpo por referencia e cria um.a linha de caber;alha localmente na sub-rotina. Alteralioes feitas no corpo da ube:la iocerna dentro d2. sub¥rotina sao imediacamente refletidas na original. A Ilstagem 18.9 iluscn essa sintaxe.
EN1lADA~
' ; 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 .
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
eobe<;olho
1000 1010
XXX
INluse ~
• A linha 23 -retOrna 0 concole para a linha 8.
1 re port ztx1809. 2 .. Aqui, uma tabela i nt erna que nao t ell Imi 1i nha de ca belil l ho 3 • l pasuda com l1nha de cab~alho 4 tables ztx1fal. 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.
8 perform sl tables it . 9 loop at it into ztxlfal.
• A linha 18 sobrescreve a linha 3 da linba de cabecalho local, Como. tabela intema foi passada por referencia, isso modifica 0 conteddo da eabela .intema original .
"prectse utf1i zar a Area de trablllho per-que
eli ·n lo tee lIna linha de cabelial ho wr1te I ztx 1fal ~ l ifnr . 10 endloop. 11 12 13 form sl t abl es llt st ructure ztxlfal . · 00 vocf pode utillzar: l' IS 16 17
18 19
11ke it • 11ke U[
o c6digo na Liscagem 18.9 produz a seguinte salda: 1000
1010 XXX
1030 1040
• A linh. 4 define uma irea de trabalho global ztx'lfa l. Essa irea euma suing de campo que tern 2. mesma estrutura que a tabela de DDIC ztxlfal.
• A linha 5 define tabela interna it sem uma linha de cabecalho. • A ~ 7 preenche a tabela interna com 5 linhas de tabela ztxl f al. • A linha 8 tnnsf:re
0
• A linha 19 retorna
controle para a linha 13.
• 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 passado par referzncia, 'entio pt se toma um ponteiro para 0 corpo original e para a linha de cabecalhc local. structure . utilizada para tomar a estrutura da tabela interna conhecida para OJ. sub-retina. Sem ela, qualquer acesso pua urn componente cia tabela interoa causaria urn erro de sintue. • As linhas 14 e 15 mostram as outras escolhas disponIveis para fazer a estrutura 1t conhecida dentro da sub· rotina. • A linh. 161hlinh. 3 de pt e a co10ca n. linh. de cabe..,lh o 10c:U. Sem a adi'iao structure na linha 13, essa linha tena causado urn erro de sintaxe. • A linha 17'!tera 0 v.!or de 1i fnr na linha de cabe,alho. Com o . tabela intema ori~al nao tern urn;a, linha. de cabe'ialho, isso nao rnodifica nada fora da sub-rotin a.
0
controle para a linha 8. A memoria para a linha
de csbecalho local eIiberada.
• As linhas 9 a 11 escrevern 0 conterido dol tabela Interne, Como i t nao t em uma linha de cabecalho , a string de campo ztxlfal e utili zada como uma area de erabalho explfcita, A saida mostra que 0 conteedc se alterou.
1
read tab le pt 1ndell. 3. pt-li f nr • 'XXX' . modify pt index 3. endfonn.
l UOO~O, PASSAHOO PAR.lMmOS PARA sua-iunH.4S 1
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 -rotina, 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 por valor e resultado . Se voce passar 1t por referenda, as alteracoes feius no corpo da tabela int eraa dentro da sub-retina imediatamente serio refletidas na original. Se voce passar it por valor, uma c6pia local de it sera criada - as alte~oes serac descartadas no final da sub-retina quando a mem6ria local de it for liberada. Se YOCe passar 1 t par valor e resultado, as alteralioes serso copiadas: de volta para a originalquando endf onn for executada, Uma instru~o stop dentro da sub-retina descartars todas as aItera'i0es para it e tra.nsferiri 0 conerole diretamen te para end-of-sal ecti on. A Listagem 18.10 ilustra esses merodo s.
EIITI.\OA~
Listagem 18.10 Como posser umo teb elo interne sem ume linhc de ccbecolhc para uma sub-retine .
.1 report ztx 1810. 2 .. Aqui. uma tabela Int erne que nl o tee III'Ia 11-nha de cab~alho 3 .. ! passada Sell! criar lJl'Ia lfnha de ca bt! ~al ho automaticamente t ables ztxlfa1 • S data : 1t li lee ztxlfal occurs 5. "nlo t em ilna l1 nha de cabe~alho 6 7 select " up to 5 rows from ztxl fa1 into t able it order by l1fnr . 8 perlonll: 51 usin g i t , 9 s2 usi ng it. s3 using it, . 10 11 "ntei tout tab les it . 12 13 end-of-se le ction. 14 write : I 'In End-Of-Select ion'. 15 perfonn write1to ut tables i t. 16 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.
•
589
590
20 • 21 • 22 •
you can also use: data wa like ztxlfal. data 'Il'a 11ke li ne of pt[ ] . l ocal ztxlfal.
73 •
2' • 25 76 27
28 2.
vod: ut1 11za fs so,
0
· sera zt xlfal. n,so
Will.
· SI!
ncrne da aree de t r abalho
read t able pt i nto wa ind ex l.
30 form s2 using pt li ke i t. · passa por 31 data Wi like. line of pt . 32 read table pt in to Ill! in dex 2. 33 wa-lifnr • "tyr o
nfer~n ch
34 m di fy pt from Wi i ndex 2. 3S endfona. 36 37 form s3 changing value(pt}" like it. ·passa por valcr e res ultado
38
data "a 11ke line of pt .
39 40 41
read tabl e pt i nto Wi i ndex 3. wa-l 1fn r • 'ZZZ'. modify pt from Wi index 3.
42
.
stop .
43
endform.
45 form wr1tel t out tab tee 1t structure ztxl fal. leop at i t . wrfte / 1t - l 1f nr . 48 endloop . 49 endfam.
46 47
o c6digo na List agem 18.10 produz a seguinte safda: siiDI ~
End ·Of·S~1 l!ct1on
1000 yyy 1020
1030 1040
AlAUSE ~
com qu e uma e6pia separada cia eabela interna seja criada, enta o pt se refere a uma c6pia local cia tabela interns, 1i Ice enecessaria para dcfinir pt como uma tabela in tern a. Scm 1i ke, pt seria u ma varidvel simples e um errc de sintaxe ocorreria. • A Iinha 18 mo stra a cutra escolha dispc afvel para definir pt como uma tab ela interna.
wa-11 f nr • 'XXX' . modify pt frOll Wi i ndex l. endfoT'lD.
tn
591
O~ l B, MOOULARIZAIAO, P",,"OO PAlAMETlOS P.... SU'-ROTINAS
lPRENO. EM 71 OIAS ABAP/4
• A linba 4 define uma are> de trabalbo global ztxlfal. Essa area de tnbalho euma String de cam po tendo a mesma est rurura que a tabela
de DDIC ztxHal. • A linha 5 de fine a tabela intern a i t sem uma linha de cabecalho. • A linha 7 reside na tabela interm com 5 linhas de tabela zt xlfal.
• A linha 8 transfere 0 controle para a ~ 17. • A linha 17 faz com que 0 eorpo dOl u bela inte rn a seja pass ado por valor c nao em. urna linha de caber;alho para ele. A p assagem par valor faz
• A linha 19 defin e uma area de trabalh o local wa que tern a rnesma estrutura que uma linha de pt. As linhas 20 a 24 mostram as ou tras escolhas disponiveis para de finir urna arca de trabalho local par a pt .
• A linha 25 Ie a linh a 1 de pt e a coloca em wa. • A linba 26 altera 0 valor de 1i fnr 03 area de trabalho wa. • A linha 27 sobrescreve a linha 1 de ee. Como a tabela intema foi pass ada por valor, isso modifica 0 cc n eeud c cia c6pia local. A original pe rmanece inalterada. • A linha 28 retorna a cc ntr ole para a linha 8. A mem6ria para pt liberada e a alterac;io eperdida.
e
• A linha cj traasfere a controle para a linha 30.
• 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 aoriginal 1i ke enecessario para definir pt como uma tabela intema. Sem 1ike, pt seria uma variavel simples e urn erro de sintaxe ocorreria.
• A linha 31 define uma area de trabalba local wa qu e te rn a mesma estrutura que uma linha em pt .
• A linba 321. a linba2 de pt e a coloca em wa.
• A linha 33 altera 0 valor de 1i fnr na area de trabalho wa. • A linha 34 sabrescreve a linha 2 de w!. Como a eabela interna fo i passada por referencia, isso modifica 0 con tea do cia original. A original agora esta alterada.
• A linha 35 reto:na.
0
controle para a lin ha 9.
• A linha 10 transfere 0 controle para a linha 37.
• A linha 37 faz com que 0 corpo da rabela intema seja pass ado per valor e resultado, mo criando uma linha de cabecalbc para ele. pt agora se 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 de sintaXe ocorre na .
• A linha 38 defin e urna area de trabalh o loal wa que tem a mesma estrutura que uma 1inha em pt.
592
D~ lU DIlIJURI2A,.i<" PIll'HOO PlIl.iMETRDSP.... SU~HAS
APREN DA EM 21 DIAS ABAP/!
• 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 sub-retina extema. .
• A linh.a 39 1• • Iinha 3 de pt e a ccloca em wa. • A linha 40 altera 0 valor de lifnr na irea de trabalho wa. • A linha 41 sobrescreve a linha 3 de wa. C omo a ta bela interna foi passadapor valor e resultado, isso modifies 0 coneeedo da c6pialoC2.1.
A original ainda nao foi alterada.
As sub-rotinas externas sao mui to semelhantes a sub-ra tin as internes: • As duas permitem que as parlmet ros sejam passados .
.
• As duas permitem parimetros formais digitados.
• A linha 42 desvia da instru~ao endfonn - ela tr ansfere 0 controle 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 c6pia local sobrescr eva a original e a altera~o seja mantida, • A linha 15 rraasfere
0
valor e resultadc e par referencia, • As duas permitem defmic;6es de variaveis locais.
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.
• As linhas 46 a 48 escrevem 0 conreudc da tsbela interna, A anica altera~o esti: na linha 2 e foi executada em 52.
Fig ur a
18 :'jj
As d~re~ enln! svb-n:JIinos eJdemos e
mesmc area
reportttx1811 . tcbles zlxllo1 dota 11 .
CJ
in1emos ,
lEUO "
Umo sub-retina extemo
FigurA 18 4
~ po rt
zt x1811. perfonn sl (ztxl812) .
=r ~
? endf onn.
• Uma vwveI global que tern' 0 mesma nome nos dais programa.s e ~ 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 afeta 0 ou tre, Na Fi gura 18.5, a uea de memoria chamada ztxl fal e compartilhada entre as dais programas. Qualquer alteralja.a nessa uea de tnbalho evista imediatameme pdas dois program..s.
Quando urn perf orm ch ama um a sub-rotina enema • 0 pragrama en ema que con tem a sub-retina e carregado.
• 0 pragrama exeem c int eiro everificado quan ta asintaxe .
• a controle etransferido par a 0 fonn no programa exte rno . • As instruc; 6es deotra da sub~rotina extema sao execu tadas. • A endfonn tran sfere a co ntrole de volta para a insuuc;ao que s~ segue a perform. .
o
fato de a verificaC;ao de sin taxe ocorrer em tempo de cxecutj2.o imp ortante, pebs duas razee s seguintes:
c:::J
• Uma varifvel glob al definida utilizando data ~ conhecida somente dentro do prcgrama que a defin e. Par exemplo, na Figura 18.5 a instru~a data f1 apar ece nos dais pro gramas. Ess a ins truljao define 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 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.
report ztx1812. fom 51. -
d;fe..nte
repartzix1812. tabl., zlxllo1. dote 11 .
As seguint es sao diferencas en tre sub-retinas intemas e externas:
e oquelc que reside em um.prog romo dlferente que a
insny¢o perfom que a che rne . A Figura 18.4 ilustro ume sub-rotina enema.
Umo ilustro¢ o de umo sub-lOfino~, .
demem6ria
- I -... CJ+--lareas de mem6rio
Definindo e ,hernando sub-rotinas externas HOYO ...
593;
e
• Se 0 parametr o formal for digitado, urn parametro real oao corresp90~ dente causm urn erro de tempo de executjao em vez de urn erro de sint axe.
As listagens 18.11 e 18.12 ilustram uma cbam ada a um a sub·rotina
externa.
EHliADI~ Listagem 18. 11 (homondo a sub-rolino mostrodo no Uslogem 18 .12 1 report ztx1811. 2 tables ztx1fal. 3 dat a f1(3) value 'W ' .
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 . B / 'l ifnr II', ztxlfal-lifnr.
!NlRADI~
Resu m o • 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-
mina qual meeodo e utilizado. • 0 coepo deuma tabela interna pode ser passadovia usi ng au chang; ng.
List ag em 18.1 2 A sub-rotina <hamoda do programo no listogem 18.11
1 r eport ztx 1812 . 2 tabl es ztx lfal. 3 data fl(3). 4 5 fonn 516 fl .. 'ZU' , 7 ztxlfal- l1fn r • '9999', 8 endform.
o
corpo (e a linha de cabecalho, se pre sence} pade ser passado via tables . Se a tabela intema nao tiver uma linha de cabecalho, tables cria uma dentro da sub-retina.
• Para acessar os ccmpcnectes de um a stri ng de camp o ou sub-retina conhecida dentro da sub-retina, a estrutura deve ser declarada na instru~io form. • A s sub -rotiD.as extemas sao muito semelhantes is inremas. Com as sub-retinas externas, as variaveis definidas utilizand o dat a sao conhecidas somente dentro do programa que as define. As varidveis tendo 0 mesmo nome definidas utilizando ta b1es sao comuns aos dais programas.
·0 c6di go na Listagem 18.11 produz a seguinte-safda:
SAlol ~
fl· AM l 1f nr .. 9999
INllIS~ ~
• N 05 dais programas, a linha 2 define uma area de trabalho global ztxlfal. Essa area
e com partilhada entre as dois programas.
• 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.. • Em zt . ISll, a linh a 5 atribui urn valor de 1000 a zt.1fal-' ifnr.
P&R
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 sao ahrangidos por apenas algumas dessas varia~o es ?
• Em ztx1811. a linha 6 pa ssa 0 controle para a linha 5 em ztxlB12. • Em ztx1812, a linha 6 atribui ZZZ em zt x1811 MO e afetada.
avariavel global" fl para ztx1 812. fl
• Em ztx lB12, a linha 7 atribui 9999 a ztxlfal . programas.
1550
afeta as dais
• Em ztx1B12, a linh a 8 retorna 0 controle para a linha 6 em ztx1811. • Em ztxIBll, as linhas 7 e 8 escrevem as valores de fl e ztxl fal- 1ifnr. f1 permaneceu inalterada, enquan to 1i fnr foi alterada.
Utilize a instrulioo local dentro de svb-rctincs extemcs perc evitcr comportilhomento de areas de trobolho de tobelos .
Se voce eseivesse meramente eriando pr ogram as em ABAP/4, nao precisaria conheeer todas essas variac;6es . Voce poderia eodificar a maioria de seus programas com ap enas algumas variacdes simples. Entretanto, a m aior parte do tempo de urn programador em ABAP/4 norm alrnente n ao e gasta na criac;ao 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 seu tempo serao gastos len do 0 codigo qu e faz essas coisas complicadas, enquanto menos de 20% de seu t emp o serao gastos .crian do seu pr6prio ccdigo. Esse triste desequ iHbrio determine que voce deve aprender as varia~6es utilizadas pela SAP, para 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 entendimenta 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-
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-
ramet ers e execute-a novamen te. Descreva a sequencia de eventos que ocorre em cada case .
ENlliDA~ Lista ge.m 18.13 Expllque a seqllenclo de eventos que ocorre neste prcqrcmc report ztxl813 no standard page headfng . ztx18 13 data: flag, ctr type 1. parameters pl. i nf t ia11 zat ion. flag · '1'. write : I 'in !nitialization'.
stert-cf-se 1ect 1on. flag .. '5'. write : I 'i n Start-Of-Selection'. I 'pt >', pt.
Ii 19 Modularizalao: modulos de funlao,.Parte 1· Depois de conduir eseecapfrulo, voce sera. capaz de: • Entender e utilizar a instru~ao i ncl ude • Criar grupos de fun~.o e m6dulos de fun~.o • D efln lr parame tres de importacao, expo rta/iao e altera/iao
Utiliza nd o a instruc;;Cio j Dcl ude
Urn progromo que indui o utro
milO ,..
ul t ne.
;'
.:.
~?·~V;.~.
e
Um programa include urn ap licotivoem que 0 ccnteedc projetodo pore ser utilizede per eutro pregrerna. Norrnalme nte, ele ndc e completo sozinho. Em 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 de execu~a o vic lnstruce c i ncl ude. Urn progrcm o include tombem e con hecido como um progroma indu/do (induded program).
NOVO ...
tcp-ot-peae . add 1 to ct r. write: I 'Top of page, fla g . ', f l ag. 'ctr .' , ctr.
e
KOVO.... TERMO"
h"p://www.compus.com.br
e conheddo como um programc de inc/usco.
598
D~ 19, MDDUl.\R~o, MODUlOS DE FUM\AO, PAmI
, PREMD, EM 21 DI,S ABA P/4
OOIAOI~ Lisla g e m 19.1 Um progromo de inclusoo
Sinlqxe para q inslrw;Co j Del ude ~ 0 seguinte ea sintaxe panla insrruci o include.
Z
~
m
T
1 repo rt zn1901 no st a ndard page heading . Z tables: ztxlfal. ztxlfbl. 3 par ameters p_li fnr like zt xlfl1-l 1f nr obl1 gat ory defa ul t '1000' •
include ipgm.
•5
onde: tpgm e um program . do tipc 1.
include: ztx19 02.
6
ztxI903 .
1
o seguin tes POntOS se aplicam: • 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. • Urn programa include pede estar incluido em urn au mais programas de iaclcsjc (including programs).
• Urn programs do ripe i nio pede cen ter insrruc ces parciais nem ia completas. A inStru~o 1ncl ude copia 0 conteadc do programa include no p rogram a de inclusao. 0 ccdigc do program a include copiado como esti e substitui a instruc;ao in cl ude no tempo da gera~ao de programs. A Figura 19.1 ilustra a ins t~c;ao 1ncluee.
e
. F Igura 19 1
Indude ZB. +f---~" Write 'Hr. lnclude Zc. l_
insfru¢ o i ncl ude.
i
Q uando 0 progroma gero do, este Ii ) resulta do do
EH1UOI~ Lista gem 19.2
Este progromo ~ incluldo em zt xl 901
1 .... INCLUDE ZTX190Z. * f r'Olll zt xlfal where l1fnr • p_l1fnr .
Z sel ect s i ngle
EHTliDA ~ Lista g e m 19.3 Este progromo ta mbem est6 ineluido em ztx1901 1 -·INCLUDE ZTX1903 . Z select .. from ztxlfbl where l1 f nr • ztxlf&1- 11fn r. 3 write: I ztx l f bl- bukrs . 4 enesetect •
Programo ZS
Report lA.
Umc ilustrofiOo cio
8 top-of - page. 9 write : I ' Company Codes for Vendor ' . p_l 1f nr . 10 ul tn e.
Progrbma
ze
o c6digo nas Listagens 19.1 a 19.3 produz esta safda: SliOI ~
Write 'There'.
e
°
c6digo-fonte. Report lA write 'Hr. Write 'There '.
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 em za, f:a.z.endo a programa ser mastrada na part e inferior d.a figura. As lisragens 19.1 .19.3 ilustram prognm as include.
COIl'+Jany
Cod ~ s
f or Vendor 1000
1000 3000
. INluSE lI.. ,.
•
No moment o cia ge",ao de zt xl 901, a linha 5 copia 0 ccdigc do program. ztxl902 pas. zt xl 901. 0 codig c inserido substitui a linha 5.
• Ainda dur ante a gera~ao de programa de ztx1901, a linha 6 copia 0 c6digo do program> ztx l903 par. ztx l9 01. 0 c6di go inserido substitui a linha 6. • 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.
A SAP utiliza includes para reduzir a redundincia de c6digo e dividir prognmas muito gnndes em unidades men ores.
599
OIA 19.MODUlARIZA(.io, .6 00'05DE FUN(.iO, PAm, ,
Enquonto visuolilO um progroma de inclusOo, voce pede observer a ccntecdc de um progromo inclufdo, simplesmente dondo um clique duplo em seu name . Per exernplo, enquonto edito ztx1901 no tela ABAP/4 Editor: Edit Program, de um clique duplo no no me ztx1902 au em ztx 1903. 0 pragro ma incluldo ser6 exibida imediota mente.
101
Entende nd o grupos de fun!;oo Como declarado anteriormente, urn grop o de fun!tao ~ urn programa que contem m6dulos de funCJao. Com cads sistema de R/3, a SAP fornece mais de 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 expondidos, execute a programa RSINCLOO, No te lo de selecoc para RSINCLOO, no campo Program, digite a nome de um progromo que inclui outros progromos. Coloque urn X nos compos Program Source Code e Expand Include lines e pressione Execute. Umo listo do c6digo-fo nte resultonfe sem exibido na proximotela .
pr6prios grupos de funC;iio e m6dulos de func;iio.
NOYO.... Code grupa de ,fvnl;oo e ca nhecido pe r urn ;~entificodor ~e quotro corode~s lWiO" chomodo 10 de -gropo de fun~60 . Se voce cno seu pr6pno grupo de fun<; oo, deve escclher um ID de grupo de fvn~oo qu e ccmecc com Y ou Z. 0 ID deve ser 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 NOVO....
r
lruIO aspectos :
Um module de fu n~o o e a ultimo des quctro vnldc des principe is de rncdulcriza~oe do ABAP/4 . Ele e multo semelhante a uma sub-refina extema sab esses
~o
• Ambos existem dentro de urn programa extern o. • Ambos ativam os pardmetr os a serem passados e r etornados. • Os parametres podem ser passados par valor, par valor e resultado, au por referencia. As diferencas importantes entre m6dulos de fun/iao e sub-retinas externas sao as seguintes: •
Os m6 dulos de fum;ao tern uma tela especial utilizada para definir parametres - os parametres nao sao definidas via ins tru~6e s de AJ3AP/4. · .
• As areas de trabalho tab l es nao sao compartilhadas entre 0 modulo de fun~ao e 0 programa de chamada. • Para chamar urn m6dulo de fun~ao, e utilizada um a sin taxe diferente da empregada para chamar urna sub -retina. • Para sair de urn m6dulo de fun CJao, eueilizada a instrucio raise ern vez de check, exi t au stop. Urn nome de module de funCJao tern um comprimento minim a pra rico de tres caract eres e urn comprimento maximo de 30 caract eres. Os m6dulos de fun~ao de cliente devem com eliar com Y_ ou Z_. 0 no me de cada m6dulo de fun/iao eunico den tro 40 sistema de R/3 int eiro.
Nos ve rsc es onferiores a 3. 0F, 0 sistema de R/3 permite que voce es pec ftqoe um ID de grupe de fum;ao menor que qoctrc carocteres, au utilizer espccos denfro de le. Enfretonfo, 'loci n50 deve fozer lase, porque as ferrcmemcs que monipulam m6d ulos de funlioo se ccrnpcrtcrec irregulormenfe co m esse gru po de func;o o. '
Para ilustraros gropos de fun~ao) descr everei resumidam ente a processo
de cri' c;iio de um grupo de func;iio e de um modulo de func;iio dentro ~ele.
Vamos partir do pressuposto que nenhum gropo nem m6dulo de fun~:ia ainda existam. 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 sist ema onde armazenar 0 modulo de fun~ao. Quando voce fomecer olD, e se ainda ele.nao existir, 0 sistema criardi
°
• Urn programa principal • Urn include superior • Um inc lude
ux:x
• Um m6dulo de func;iio include Coletivamente, esses componentes sao conhecidos como grupo de fun ~ao . Seus relacion amentos sao ilustrados na Fi gura 19.2. nome do programa principal sera sa plfgi d, on defgid
o
e
seu ill de gropo de fun~o de quatro caracteres. 0 sistem a automaticamente colo.ca duas ins truCJoes ; ncl ude nele:
•
incl ude ljgidtop.
•
incl ude ljg iduxx.
602
I A'RENDA EM II DIAS AWI4 Flg u r Q 1 9
Top Ind vde
2
Figuro 19 3
A fundion Ubrcry
Esse 4 0
Injfjol~ .
re/oclonomento
hier6rquico dos
Proqmmg Principa!
componMmsde urn grupo de lun¢o.
.
function . pool fgid.
SAPLfgid r-----..",/ lnd ude lfgidTOP. Indude UgidUXX.
~
lfg;dUXX 'NCLUDE lfg ldUOl ' NClUDElfg;dU02.
MQclulQ$ de func¢o
lfg ldU01 functionz tx1901. write: I tir. endfunction.
lfg ldU02 fun ction :r. ~
tx1902.
-
endfunction .
NOYO'"
TEllO r
ljg tdtop - eccnhecdc como 0 fop indude. Dentro dele voel!pode cclcc cr defin i1jOes globaisde dodos. Estossao definic;6es
0 primeiro progromo include -
de dcdcs que seo globois pe rc tcdos as m6dulos de funJ;oo dentro do grupo. 0 segundo progromo inc:lude - lfgtduxx - econheddc como UXX.A voce 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 fvnljoo. Para 0 primeiro m6dulo de fvn~oo, a instruc;6o 1nelude lfgiduOl ser6 inserido no uxx. Quondo ....oce crior um seg undo m6du lo de fun~co nesse grupo, 0 sistema od idonor6 umc segundo instru<;Cio: i ncl ude lfgidu02. Todo vez que voc~ cdlcioncr urn 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 .
KOYO .....
ltUO
r.
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 program' principal de grupo de fun'iao ztxa emostrado llll Figura 19.4. F igura 19 4
Oprogromo principal de grupo
de futHj:Oc ztXQ.
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 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
TWO ,.
e
5E37.
Cada um des compon enres de urn grope de func;ao pede ser acessado a partir da Function Library Initial Screen mostrada na Figura 19.3.
A Figura 19.5 mostra 0 UXX p.n
0
grupo de fun'iao ztxa.
604
OIA 19,MOOUlA'lZA(.io, MOOUlOS O!fUNlio.PAm1
APRE NDA EM 21 DIAS AB AP!4
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
Na Figura 19.5, voce p ade ver esse grupo de fun~o zt xa que contem dois modules de fun~ao: z_t x_1901 e z_tx_1902. a primeiro esta ativo, 0 segun do nao (seu nome e comentado).
Atjva ndo urn modulo de
fun~a o
Urn m 6dulo de fun~o deve ser ati'lJado antes de ser iriiciado. H:i um. batao Activate na tela Fun ction Library Initial Screen. Pres sionando-o se ariva 0 modulo de fun, aa . Q uando 0 modul o de fun~ao river sido criado pela primeira vez., a instru~o i nc1ude para de dentro do UXX sera comentada. Acivar 0 m6dulo de fun~ao faz com que 0 sistema remova a comennric da instruci c i ncl ude. a m6 dulo de fu.n~ao estara entao disponfvel para ser chama do de outre 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 dane. Se quiser, voce pede desativar urn m6dula de fun,aa. De ABA:F{4 Function Library: In itial Screen, escalha 0 caminho de menu F un ction Medul 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. Todos os m6dulos de fun~ao que pert encem a urn de ice grupo existem dentrc do programa prin cipal : sapl! gid. Por causa disso, urn erro de sintaxe 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
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 retcrnadas dele (vejaa pr6ximase,aa). Vace nao pade utilizar a instI11c;ao 1oca1 dentro de urn m6dulo de func;:ao. Em vez disso, parimetros de int erface glab alizados servem para 0 mesma prap6sita. Veja a seguin te seliaa sa bre definic;ao de dados globais para aprender sabre parimetros de interface globais e lccais.
Definjndo a inte rface de mo dulo de
fu n ~a o
MaYO....
Pore passor pcrerretres pore urn m6dulo de fun¢o, voce deve definir umo TElMO interface de m6dulode fun~o . Esse interface e c desc~oo dos porometros que sao pcssados e recebidos do m6dulo de func;oo. Ela e tcmbem simplesmente ccnhecidc como interface . No restante deste cap/tvlo, n6s vamos nos referir a interface do m6dulo . de fun~ao simp!esmente como interface.
r
Para defmir parjmetros, voce deve ir para uma de duas telas de defi.ni~o de parlmetro: • Import/Exp ort Parameter Interface • Table Paramet ers/ Except ion s Interfa ce A tela Impa rt/Exp ort Param eter Interface . mostrada na Figura 19.6. Nes sa tela voce pede definir 0 seguinte: • Os parimetros de importacac • O s parfmetros de exportacic • as parimetros de altera/Sao
605
606
D~ lU ODUURIl.l(.io, M6DUlOSDE FUH ~.PAm l
AmMDA EM 21 DIAS lBAPH Fi gurq 19 6
A tela Imporl/Expott
Porometer Interfoce.
NOlO...
1Bl!O ~
passodos no m6dulo de fv ~oo do progra mo de chamodo . Esses vclcre s originom foro do m6d ulo de func;oo e se o importodos pare cleo
58
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. Pcnimetros de tabe/a sOc tc belcs internes que sOo passcdos pore 0 m6d ulo de fun~co, a lterados dentro de le e retomodos. As tobe/os infernos devem see definidos no progromo qu e cha ma .
NOlO ... TrulO ~
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: • Definir parimetros internes de tabela • Docurnentar as excecees
Passando pardmetros as metodcs pan passar psrjmetros para modules de funliao sao maito semelhante s aquel es para passu parfmetros para sub-retin as enemas . 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 verifica~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 rai se ), 0 volor noo co piado e Q vcrievel do chomodor permc nece lociterodc.
e
Voce digiu 0 nome do parimetro na primeira coluna e os aeriburos do parimet ro nas colunas restantes. Digit e urn parimetro por linha.
607
Oil19, MDDUUlUZA(AO,M6DUlOS DE fUN~ D, PAm1 "_"".,r,.--'1'"~"I:,~Id' :,;~.:;ijt:."H:::D~A.:cE~M~11:.D:::r:AS:;::A::'~AP,,'",-4----------------------~--l_--------------------=:::.:::::=~:::::==:::'::3:=='-' 609
.~1r-r'
. -"', ;;",t' ~¥~,.
'F
d dos Utiljzondo porometrosigito as se noo d llgito d as Como as sub-retinas, os parametres dem6dulo de fun!ja.o podem ser digitados au nio digitados. A digita!?o funciona para m6dulos de fun!jio da mesma rnaneira como fun ciona.para sub-retinas . Os parametres Ilia digitados adotam 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
parimmo de m6dulo de fun <;,o nao digitado, 0 parimetro de m6dulo de fun~o toma-se tipo c com comprimento 12. Parametres digitados para m6dulos de fun!jio seguem as mesmas regras que parimetros digitados para sub -retinas. Hi duas maneiras de especificar parametres digiudos na tela Impo rt/Export Parameters: •
Especificar um tipo de dado de ABAP/4 na coluca Reference Type
•
Especificar 0 nome de uma estrutura de DDIC au componente deuma .estrutura de DDIC na coluna Reference Field
Voce nao pod e ut ilizar as dois meeodos ao mesmo tempo para um Unico parimetr o . Voce deve utilizar ou urn ou outre. A o utiIizar 0 prime iro me todo, simplesmente especifiqueum tipo de dado de ABAP/4 n a cc luna Referen ce Typ e na tela Import/Export Parameter,"Po r exemplo, na Figura 19.8, pl e p2 sao paramet res digirados que tern urn tipo de 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 fomecidos 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 imp ort ac;ao de parimetro c pciccal, voce nao ted de atribuir names a de na instruc;ao cal l funct i on quando cham ar 0 module de func;ao. as parametres 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 function. Por exemplo. se 0 modulo de fun~o z_xyz retoma ues parimetros 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 . Para atribuir urn valor padrao para urn parimetro de imPOrta~ao, digite . um valor na caluna Proposal, cenifique-se de colo c.r as valores de caract ere entre ispas simples. a s names de variavel sy tambem sio permitidos. Se voce
especificar uma propcsta, 0 sistema automaticarnente colocard urna marca de verificac;i o na coluea Optional. .T odos os parlmetros que voce define na interface eambem aparecem na pan e superior do c6digo-fonte dentro de comentirios especiais. Cada linha especial de comentirio comeca com os caraceer es "", Toda vez que voce altera a in terface a sistema automaticamente atu aliza esses comentarios especiais para. refletir suas alteracoes.
~
Nco a ltere nem exduo .esses co mentOrios; eles sOo gerod os palo sistemo. Se voce os alteror, 0 m6d ulo de fun¢o pode nco funcicno r.
~ CUI dado
Na Figura 19.8, voce pode ver que pt, p2 e p3 sao pass adcs por valor. Figura '9
8
Os comenl6rios ge rados pefo sisl'ema no parte
~
~
...
",-
.
......,...~
.
_t1.. z tllf1oo.
JUperiot do
c6digo-fonle.
.,
or, .........,u1
ut",.h... ,
1_.1I1C-
.IIlUm1J....!rrE
Ch o rna odo
I
"niLT
1
m6cUJJJIj;io!:>s.J:d;ue::Jl fuJJo wr;~a.llO .L-
_
Para chamar urn m6dulo de func;ao, voce codifies a instru~io call function . a £lux o de contrcle esta dentro cia Listagem 19.4. ... Ustagem 1 9.4 Este pregrcma executa uma chomodo simples pare urn m6dulo de fun<;c o
OOilDA,.
1 report
2
zt xl904.
3 write: I ' Bef ore Call' . 4 call funct i on ' Z_TX_1901' . 5 wri t e : I ' After Call' .
I
610
O~ l,,"OOUlARllA(l o,MOOULOS DE FUH\IO. PAITE 1
611
AP' EH OA EM . l 0lA5 ABAP/'
Utilize a ins tru Cjio call f uncti on para transferir controle para urn m6dulo de £unCjao e especific ar puimetr os. A Figura 19.9 ilustra como as pao. rimetros sao passados e recebido s do m6dulo de
o c6digo na Listagem 19.4 produz est>. su da:
funcsa
B ~fal'1! Call Hi f rom Z TX 1901
After Call
IlI.luSl ~
-
• A Iinha 4 transfere controle para. 0 ccmecc de modulo de funlSi a 2_ tx _1901 . Nesse exemplo, 0 m6dulo de funljia exine dentrc do grupc de run"o ztxe, sap! atxe e0 program. principal desse grupo de fun" o e age como container para z_t x_1901.
Figura 10 9 Esta figure ilU5fJ'(J CCIT10 05
data : v1, , 2, ,3.
par6metrDs
possodos e recebidos do m6dulo de fun;oo.
sOc
para valores exportodos pa re 0 mOdulo de func;60' 0 atribuiQio e do dlreito pore o esquerda. para valores importodos pora 0 m6d ulo de fun¢ o, a otribui¢o Ado esquerdo poro o direi'o.
• 0 ccdigc dentro do m6dulo de fun"o executa. • A Ultimalinha do m6dulo de fun~o reto rna 0 conerole pan a instnl~o call function. 0 processam ento continua com a pr6xima instru/iao depcis call function. .
Siotaxe para a iostrUl;QO call f unct j On en Esta e a sintaxe para a in stru~o cal l functi on:
Z :a::-
,...
><
call f unct ion 'F' [exporting pl '" , 1 . . . ] [1mport t ng pZ· .,Z •. • ] [changing
m
[tables
T
p3· r3 •• • ] p4 • it .. . ]
[excepti ons xl · n [other s · n] ] .
onde:
• F e 0 no~e de modulo de funljao. • pI a p4 sio as nomes de parfmetros definidos na int erface de modulo
de fun,ao. • •
• •
.'
vI a v3 sao as variaveis au nomes de strin g de campo definido~ dentro do programa que chama. .
euma tabela interna definida dentro do programa que chama. n e qualquer inteiro literal; n nio pede ser urna variwel. xl eurn nome de excecso levann dc dentro do m6dulo de funtSao. tt
names de par6metro
o esq uerda de _
vari6veis 0 direita
Na instru~o call functi O"J exportatS0es e importacoes existem do ponto 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 esquerda do operad or de atribui t;ao (-)J esta.uma lista dos nomes de paramet ros defmid os na int erface do m6 dulo de funt;io . A dir eita, esti o as variiveis definidas den tro do programa de chamada. A atribui~ao depois de: 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 bidirecionais. Antes da chamada, a atribui~ao 6 da direita para a esquerda. No retorno, 0 valor de retorno e aeribuldo cia esquerda para a direita. Vamos utilizer a Figura 19.9 como urn exemplo. Quando voce chama 0 m6dulo de funtSao Z_XXX, a valor de varidvel v1 eatribuldc ao parametr o p1 e 0 valor de varii vel v2 e atribuid o a p2. 0 ccntrcle entao 6 rransferidc para 0 m6dulo de run , ao. N o retorno, 0 valor de p3 e atribufdo a v3.
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. termo "parametros de exportol1co· se m uma referenda refere~se a parometros exportodos do m6d ulo de fun¢ o.
a
Os seguinte s' pontos se aplicam: • T odas as aditSoes sao opcionais. • call f unct i on e uma instru tSao especrfica. Nao coloque pontos ou virgulas depois de parimetro s ou Domes de excetSao.
• 0 nom e do m6du lo de funtSao deve ser codificado em tetras maru.sculas. Se for codificado em minusculas J a fuot;aonao sera localizada e urn dump curt o acont eceri.
Exec uta o d o urn modulo de fuol;QO de exem p lo Nesta se.l:?o, ilustrarei uma chamada para urn m6dulo de fun tS ao de exemplo z_t x_di Y, que simpl esmente divide dais numeros e retorna 0 resultado d.a divisio.
612
APREMOA EM 21 DIAl AUPH
o
A Listagem 19.5 cham. z_tx_di' e pass. parametres. A Figura 19.7 mosera a tela ImportlExport Param eters pan. esse modulo de fun~ao e a. Listage m 19.6 mostra 0 codigo-fonee para ele. .
EHTRADA~ Listagem 19.5 Utilizondo' a instru'¥oo call function com parametres 1 2 3 • .I 6 7 8 9 10 11
report ztxl905. parameters: apt type 1 defa ult 2. . op2 type 1 default 3. . data rslt ~y;J1! p dec1llllls 2.
,t
· oper and 1 · oper and 2 art"sult
e
call function 'Z_n_DIV' exporting
pI p2
- opl ·op2
• Na Lisragem 19.6, a linha 10 executa uma divisfc simples.
importing
p3
• 0 modulo de funl;jao "reeom e a con trole para a lic.ha 6 da listagem 19.5.0 valor de p3 eatribufdc il. varidvel rsll .
· r sl t ,
12
13 write : / opl.
'I' . opl. I.' .
• A linh. 6 transfere controlepara 0 m6dulo de fun"o Z_TX_D I Y. valor cia vaxUvel opl ~ arribuldc ao parimetro de importacgc pl e 0 valor de op2 ~ arribuldo ao pardmetro de impcreacac p2. Na tela Export/Import ' Parameters, urn Reference Type eespecificado para. esses pargmetros, o que as terns parfmetros digitados. Como esses parametr es sao digitados, eles nao obtem seus atributos tecnicos de pI e p2. Em vez . disso.os tipos de clados de opl e op2 devem corresponder aos tipos de dados de pl e p2. opi e op2 sao definidos como inteiros, po n ant o os tipos de dados correspondem. P3 ~ tipo Pieurn parimetro parcialmence digitado. Ele obtem seu comprimento e ruimer c de de cimais de rs lt. 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.
rslt .
• A liaha 13 escreve
fKIDDA ~ UstClgem 19.6 0 c6digo.!onte pora 0 m6dulo de run,co z_tx_di'
l ····Local i nterlace: •• •• •• ."'-
IMPORTING . VALUE(Pl) TYPE I DEFAULT 1 VALUE(P2) TYPE I EXPORTING
8
9
C[jendo um modulo de. fu nc;a o
VALUE(?3) TYPE P fr· •
• •
• __ ••__ •
• • • • • __
t
•
10 ,3 • ,1 / ,2 . 11 endfunction.
o c6digo na Lisragem 19.6 echamado da linha 6 da Listagem 19.5. o c6digo na Listagem 19.5 produz esta saida: 2 /
3 •
result adc da divisio.
Pressione 0 botoo Pattern no tela AW/4 Editor. ·Edit Progrcm para inserir automaticomente 0 instru¢o _cal1 f unct io n em seu c6digo. Voce sera perguntcdo sobre 0 nome de m6dulo de func;6o e ovtomaticci"niente ele coclificora 0 lodo esqverdo de todos as atribui¢es de porometrode inte~ce pore voc6.
1 function z_tx_dh . 2 . ... ••-- ------•• ••••••• ••••--.-----•• ••-----.-.-. ----••••••_•••_. 4 5 6 7
0
Utilize
SCRHHo.M~ Inide a Scree~CC!m "Howto Creote·.o Function Module- cgorc.
i
i
,
D. tel. de ABAP/4
Developm ent Workbench, pre ssion. 0 bode Function Library na barra de fem..menus Application. A Fun ction Library Initial Screen emostrada (veja a Figura 19.3) . 2. Digite 0 nome de seu modulo de funl;jao no campo Fu ncti on Module. nome deve comeear com Y_ ou Z_. 3. Pres~ione 0 batao Create. A tela. Function Mo dule Cre a.te: Administration e mostrada (vej•• Figura 19.10).
1.
• A linha' -4- define uma varidvel nomeada rs lt ripo p com duas casas decimais. .
seguinte procedimento para criar um m6dulo de fun~ao. Para um
z_tx_di Y. Inicie 0 sen z_· - dt v e coloque-o em gropo de fun~o z·· a Qembrese de subscituir 0 •• com as dois caracteres que voce escl utilizando p~ identificar seus programas).
0.67
• Na Lisragem 19.5, as linh as 2 e 3 defiriem duas varifveis, op1 e op2. C om o essas varidveis sao definidas. utilizandc a instru~ao par amet ers, o ususrio ~ solicitado a digiur valores para. elas quando 0 programa e executado. " .
0
exercfcic, siga este procedimento e erieurn m6dulo de funl;jio exatamente como
o
~.
614
DIA 19, MODU1.4RI1A~ O, MaOUlOSDEFUH~D. PAm 1
APREMDA EM 21 DIAS A8A P/4
a
615
II
Figu rn 19 10 Esso ea tela Function Module Crecre:
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 comprime n ta e deve comecar com You Z. 5. .D igite urn 5 no campo Application. Esse campo e utilizado para 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 .
Administration.
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 aparecera, Digite uma descricl o no campo Short Text e pressione a bono Save. A tela C reate O bject Catalog Entry aparecerf. Pressione 0 botac Local Object. Voce voltara para a tela Function Module Chango: Administration.
Agora stria urn boa hora para criar u:". pro~a de AJ3AP/4 a fim de
chamar seu m6dulo de fun~ao e tentar exibi-lo. Cne um progr ama como 0 mostrado na Lisragem19.5. Dentro de seu programa, certifique-se de c?difica.: o nome do m6dulo de fun~ao em letras maiusculas. Caso contrano, voce obtera urn dump curto, porque 0 sistema nio sera capaz de loealizar 0 m6dulo de
9. P ressicne a batao Source Code na bam. de ferram entas Applicati on. A tela Functio n Module Edit sera exibida (veja a Figura 19.8). 10. Digite a c6digo-font e para seu m6dulo de funliaO. Nso altere as linhas de comennrio geradas pelo sistema sob qualquer circuastjlncias! Seu m6dulo de fun ljao pede ter urn erra de operacao se voce fizer isso. 11. Pressione a ba tao Save na barra de [erramentas Application. A mensagem 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 volt ara para a tela Function Library Initial. 13 . Se voce quiser definir parametres de exportacio ou de impcrtacio, s elecicne a batao de op~ao Import/Export Parameter Interface. P ressione a batao Change. Aparecers a tela Import/Export Paramet ers (veja a Figura 19.6). Digite os nomes de seus parametres na prim eira coluna e insira quaisqueroutras caracterfsticas desejadas para cada pargmetr o. Quando voce estiver terminado, pressione 0 bene Save e depois 0 bono Back.
14. Por fim, para ativar seu m6dulo de fun~ao: pressione 0 bono Activate na barra de ferrarnentas Application d.a. Fun ction Library Init ial Screen.
fun, ao.
. Utilize 0 Object Browser perc lister as modules de fonr;60 que \ICC! locol Pdv. ObjBd s e pressione 0 botec Display.
criou. A partir do Obj ect Browser, escolha
Re_5umo
I
I
• 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 do ripe t , Seu codigc ecopiado para 0 programa de mclusao no ponto cia. instrucao i nclude e a substitui completament e.
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
1
mais de urn programa . • Urn gropo de funlSao euma colecao de prograrnas e tern uma est~tura predefinida. Todos os n0I11:es de progr.ama dentrc do g~po contem 0 ID do gropo do funljao de quatro caracte res.
\
1
I
616
DIA lUDDUlARIZA(iD, MODUInS DE FUN(iD,PARlE 1
APR EN DAEM21 DIA S ABA P/~
ainda muitas em utilizaclc no sistema de R/3. Tamb em e mais facil ent ender modulo de fumiao se voce soub er como as sub-retinas extemas funcionam. Em vez de sub-retinas externas, utilize medulos de funt;io. include deve ser utilizado para simplificar a estrutura do Sell programa e agrupar componen tes sem elhant es. Eles nac devem ser utilizados como conteineres para c6digo 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 e suas chamadas para modules de fun~ao em urn quarto.
â&#x20AC;˘ A interfa ce de urn m6dulo de funfjao contem as definicoes para . parametres de impcrtacao, expcreacso e alceracao, assim como a documentacao para excecoes configuradas dentro do module de fun~ao.
â&#x20AC;˘ Parametres digitados e njio digitados pcdem ser especificados e passados por refersncia, p er valor au por valor e resultado.
I Fa~a Utilize possoge m pa r refe ~ ncjo pore pardmetros de importOl;fic . Emois efidente . Ten ho cuidado quando uti Jiz6~ lo co m param etre s de exportocdo. Os volores de pordmetros po r referend a seo cltercdce imediotomente no cham ada. Se voce alteror parametres de exportccec antes de emitir 0
instruc;oo
configurcdo, voce retc rncre , mas as vclc res j6 tere c side olterad os no progrc mo de chama da .
Oocumerite todos os excecees no interface de m6dulo de func;oo e documente todos os pon5metros no componente Documentotion do m6dulo de funJioo.
Nao a ltere as coment6rios gerodos pelc sistema no.porte superior do c6digo.fonte do m6dulo de func;oo.
o
reutilizar urn existente?
Nao importe vclcree de que voce n60 precise de urn m6dulo de func;oo. Simplesmente cmitc importoc;6es noo necess6rios do instruc;oo cal l functi on.
Nao utilize stop, ext t ou check dentro de um m6dulo de func;oo. (check e ext t nee re presentom problema se estiverem dentro de um de loop no interior do m6dulo de func;oo.)
Solve seus dodos de teste, de 'modo que voce posse testor novomente seu m6dulo de fvnc;oo depois de modificoc;6es que utilizom os mesmos dodos.
Como decide em qual gropo de fun~ao colocar urn novo m6dulo de fun~aa? Quando dev o criar um nov o e quando
o
Coloque m6dulos de funt;io que tem fun cionalid ade semeIhan te no mesmo grupo de fun4j:ao. Par exemp lo, vo ce pede colocar todos os m 6d ulos de funli3.0 que calcularn depre ciacac em urn grupo de fun<;ao, todos os qu e executam fu n4j:oes de calendaric em outro gro p o de fun4j:ao e aquel es qu e ofere cern interfaces de comunicacao externas em urn terceirc.
Wo rkshJ./. oj.L p
...,----_-'--
_
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 enrendimento do con eea do abordado e a se4j:ao Exercfcio permit e que vo!=c prat iqu e 0 que sprendeu. Voce pede encontrar as respostas as perguntas do teste e aos exerclcios no Apendice B, "Respostas as pe rguntas e aas exercfcios".
Teste
P&R
o
o
Co mo decido se utilizo urn include, uma sub-r~tina interna uma sub-rotina extema OU u~ modulo de fun~o para implementar meu c6digo? 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 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
1. Verdadeir o au Falso : Urn pargmetrc de imporracao qu e tern uma proposta e semp re opcional. 2. Ve.rdadeira au ~a1so: Tados as parametre s de exportaca c sao opcionars.
Exercfcio 1 U tilize a fun<;ao T est dentro da Function Library para testar 0 m6dulo de 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.
617
.........•..•
-
~
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
uporti ng ctctse tl.bles valuetab endfonn .
.. ' Look Ha, a Wi ndow'
.. resul t .. i t .
Modularizaicio: modulos 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
~~~
620
~~~
.
.a_
•••••••• • •
• • • • • • • •
A'IE",A E' 21 DIA S ABAP/'
Os dados globais definidos dentrc da parte superior de i nc1 ude sao acessfveis a partir de todos as modules de fun~ao dentro do grupo. Eles sao
analogos as definil$oes de dadcs globais na parte superior de urn programa em ABAP/4. Os parimetros definid os dentro de uma interface global sao acesslveis a partir de codas assub-retinas chamadas do modulo de fun~ao . Elessao anilagos is varifveis definidas dentro de uma sub-re tina que uriliza a instru~ao lo cals. Os pa.clmetros defmidos dentro de uma interface local sao inacessiveis a partir de sub-retinas chamadas do m6dulo de funCiaa. Eles sao analogos as· varisveis definidas dentro de uma sub-re tina que utiliza a instruc;:ao data . Por padrao, as interfaces sao locais. Para tornar global um a inte rface, a partir da tela Function Mo dule Ch ange: Import/Export Parameters, escolha 0 caminho de menu Edit-Globalize Parameters . Para toma-la local ncvamente , escclha 0 caminho de menu
Edit-Locilize Parameters.
~o
Se um pcreme trc com 0 mesmo nome existe em dois m6d ulos de func;oo dentro de um grupo e as d uos interfaces sao globois, as definic;6es de dodos desses pa rametres devem ser identicos.
D~ 2UDDUURIZA(.iD, .ODULOS DE FUH(AD. PARTE 2
,.
10 f'~o... ~c;;.~111• •f11I;;;I;2-. - -- - - - - - - - - -- - - - - -cal l functfon 'z TX 2002' expcrtt ng p_i n . parvU n exceptions oth er s • 1. endform.
11 12 13 14 15 16 17
18 •
is f';orm ;;;-:c;;.:l111_'fm:;I~3-.- - - - - - - - - -- - - - - --
20 21 l2 23 24 25
irport1ng - p_out • fl excepti ons oth ers • 1. endform.
ENIllDI"'. Ustagem 20.2 Este
r
t errmnar.
Os dados globais definidos fazendo a interface global s' o reinicializados 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.
EHTlADA~ Listagem 20.1
Este prog romo ilustrc a persisfencio de do dos globois
•
5 per fom: cal l _flIlIl , 6 call _fml3. 7 write: I' tl . ', fl. 8
e0
codigo-fonte do primeiro modulo de fun<;oo
cha modo do listogem 20.1
1 function z_t x_2002. 2 •• _-
~
•
~
• __
~
.~
•
_
3 · ·*·Local i nt er face : •• IMPORTl NG_ ". 5 •• VALUE(P_I N) 6 7 gl • IUn. 8 endf unct fon.
•
mRADA.... Listagem 20.3 Este e 0 codlqo-fc nte do segundo m6d ulo de func;oo
'" chomodo de Ustogem 20.1
..---_.
1 f uncti on z_tx_ 2003. 2 --~ - -- ------ - ~-3 · ···local in t erface: EXPORTING 5 •• VALUE(' .OUT) 6 •• • •
-----
--------.-- ------------ ---.-------
•
- - - - ~
1 report zh2001. 2 par ameters pann_1n(l0) defaul t 'XYZ' oblig ato ry. 3 data fl( 10) val ue ' HUT' •
- -
eau function 'Z TX 2003'
-- - ~-- --- ~
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 fun~ao de urn grupo . Ele permanece alocado, contant o que 0 programa de chamada permane~a ativo. Cada chamada subseqa ente para um m6dul o de 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
. .....
7 p_out • g1. 8 endf unct1on.
~
_
~
621
-.
~. .. .. .. .. .. .. ~ .. "!II' .. .. .. ..
~
.. __
.-.~
APRE NDA EM 21 nus lBAPH 622 L:;..::.:.=:.:::.:::..:.::::..:.:::::..:.:..
!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 20 .3
1 f uncti on-pool ztxb. 2 dat a gl (10) .
SAiDA ~ AHAliSE ~
o c6digo nas lista gens 20.1 a 20.4 produzem esta saida: 11 • XYZ
• Na Listagem 20.1, a linha 5 transfere contrale pan alinha 10, e a linha 11 chama 0 modulo de fun~ao z_t x_2002, que existe no grup o de fun~ao ztxb . 0 valor de pann_in ~ pass ado para p_in . 0 contra le e
transferido para a linha 1 da Listagem20.2. • Na Lisragem20.2, a linha 7 move a valor de p_in para a varifvel global gl. 91 e defmida na p arte superior de i ncl ude na linha 2 na Lisragem 20. 14. 1S50 a coma visfvel para todos as modules de fun\=ao, e 0 valor epers istente entre chamadas para mod ules de fun~io desse grupo. 0 contro le retoma para a linha 11 da Listagem 20.1. •
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 fun~ao de z_tx _2003, qu e tambem existem no gropo de fun~ao ztxb. o controle etransferido para a linha 1 cia Listagem 20.3.
• Na-Listagem 20.3,a Iinha 7 move o valor cia variwel globalgl para o_out. 91 ainda contem 0 valor colocado nela pelc m6dulo de fun~o anterior. o controle rerorna para 0 programa de chamada e 0 valor eescrito.
Passando uma tabela interna para um modulo de fu n ~ao Passar u ma tabela interne para u rn m6dulo de funiiao segue as mesmas regras que passar uma tabela intema para uma sub -re tina . Hoi dois meeodos. • Via a parte tabl es da interface. Isso eequivalence a passa-la via adi~ao tables para a mstrut;ao perform. • Via a parte da interface i mporti ng ou changing. A primeira e equivalente a using na instruliao per f orm e a ultim a e equivalen te a changing em perform. Para retornar uma tab ela interna que se origina de dentr o de urn m6 dulo de funt;io, utilize urn dos seguintes :
. - . -- - - - - - - - - -
--/
D~ 2UOOUWJZA>\UODUlOS DE FUN>\D, PAm I
I
Passando lima ta be la interna via tab] es 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, automaticamente adquiriri uma dentrc do mo dule de fun~ao . as parametres tabl es sempre sao passados por referencia. Para utili zar esse metodo, a panic de F unctio n Library Initial Screen, esco lha 0 batao de op~ao Table Parameters/Exceptions In terface e enno pr essione 0 botao Change. Voc~ ven a tela Paramet ers/ Excepti ons. Na metade superior cia tela sob a coluna T able Parameters, digite os names de para met re s int ernos da tabela. Se a tabela interna eurn tipo est ru tu rado , na coluna Ref. Structure, voce pode opcionalmen te digitar 0 nome de um a estrutura DDIC. Somen te os no mes de estrutura DDIC podem ser inseride s aqui. Se voce nao especificar um a estrutura DD1C ness e ponte, nao sera capaz de acessar nenhum dos compon entes da tabela intema den tro do m6dulo de funliao. Fazer isso caus ard urn erro de sintaxe. Se a esbela interna nao for urn tipo estruturado, voce pode inserir um ripe
de dado do ABAP/4 na colnna Reference Type.
Passa ndo uma tob ela interno via export; ng/i mpor t t ng e changi ng Se voce utiliza a parte da interface export ing / impor t i ng ou changi ng, voce s6 pede passu 0 corpo de urna tabela intema, Entretanto, essas partes da interface permitem qu e voce escolha se pass a 0 corpo interne de tab ela par valor (0 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 passagem tab elas intemas p~a urn m6dulo de fun~aC?
£tmADA..... Ustag~m 20.5 Esse prog ramo passe tob elcs internos pore urn m6dulo de fun~oo
r
1 report ztx2 005. 2 tabl es ztxlfal. 3 data: it_a li ke ztxlfal occurs 3. -nao t em uma 'ltnhe de 4 it_b like ztxlfal occurs 3. - nao tem uma linha dt 5 select fI up to 3 r ows froo ztxlfal in to t able ft _a.
,
7 call f unction ' Z_TX3 006 ' export i ng 8 9
i t!
• A parte da in terface tables
10
importing
• A parte da in terface exporting
11 12
tab le s
1t2
c a be~ J.lho
cabt~al ho
623
~
t':,"_ 0- • •
AAa~.A . a . . .
A. •
•
•
A
• • • • • _-.....,-
..,'t:' ........
. . . . . . . -- - - - - - -
,-
624
D~ 20,MDDULlRlZAyiD, llliOUlO5 DE FU.yiD, PARTE 2
"RE'DA EI 21 DIA' ABAP/4 l t4 changing 1<3 excepti ons others
13 14 15 16 17
9 ." 10 It11 ... 12 It.
• it_a it_a[ ]
.~
•• --- --- -- -_. _.----- -- -- -. -. -••• -- -- -- -----
13 data wa like lfd. 14 write I ' In :' . 15 loop at itl in to wa. 16 wri te I ve-t ifnr. 17 endl ccp, 18 loop at it3 into wa . 19 wa-l1f nr • sy - t ebtx . modify it3 fl"Olll wa. 20 21 endloop. 22 uj tne . 23 write: I ' IT4: '. 24 loop at 1t4. 25 write I it4-11f nr . endl oop. 26 27 ult ne. 28 1t2[ 1 • ,t1[ 1. 29 endfunctio n.
i.
18 19 write: I 'AFTER CAll ', 20 / ' IT_A:' .
21 loop at ft_a into ztxlfal. 22 write I ztx lfa l-l1fnr. 23 endlo op. 24 ultne. 25 write / ' IT_B:' . 26 loop at it_b into ztxlfal. 27 write I zt xl fal -l 1fnr. 28
IT4 STRUCTURE LFAI CHANGING. VAlUE(IT3) TYPE TABlE
endl oop.
Porcmelefs mostro como pa ssor 0 Corpo do tobelo inlemo.
Fi g u r A 20
2
Parameters/ Exceptions mastro
~ ;0~ '
g;-;
;- x ;,_ ·
~' .
. ~f?:.";'>r.-~ .._~,,":."'~ -::o::.-' 'G: ~~' ~'"
,,-
~~~i
" .....g)':riI;:~,""eu; •.... "..- . ~ .-....
i;"
-' " . . - ~d"'IIC.,~ - · · · - ·
com $UO Iinhe de cabe~olho.
m ; "! ......"'~ ....,~."'.
,
EMTRIDI.... List agem 20.6 Esse. 0 codlqo-ionte para chomodo 0 partir do Ustogem 20.5
r
1 2
It"
•
•
•
• _.
3 ..•..·Local t nterface : 4 IMPORTING YALUE {ITl ) TYPE TABLE 5 6 EXPORTING 7 YAlUE(lT2) TYPE TABLE 8 TABLES
.. ..
"
<.
l-
•
0
modulo de func;oo
. _ . _.
. _
"
-s
::r~~;~",",,~""
~
~.
1o~/a in/eme junlo
,n
~
~ ;- :
como cesser tlma
'lo-"..... '....,t.~...-it
.
~~::tjt'_'S*'.III'lo"-~~~
- L __
A telaTobIe
o c6digo nas lisragens 20.5 e 20.5 produz esta saida:
625
... . . . .... ""'""'
626
• • •
D~
APR EN DA EM 21 DIAS AWl'
SAioA ~
• As linhas 26 a 28 mostram que it_ b pelo modulo de fun,ao.
1020
AFTER CALL IT_A: 1
,a, MDDUURI2A(lo, M6DUl OS DE fUN(lO. PARTE2 627
0
contecdc de i t_a foi copiado par a
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 m esmas que para relat6rios.As sub-rotinas internas devem ser definidas dentro de urn include especial. 0 F 01. FOl ~ incluldo no grupo de fun,ao editando 0 programa pri ncipal e inserindo a instrucac i ncl ude L!gid FOl. Assirn, a aljaO de dar urn clique duplo no nome do i ncl ude 0 cria automaticamente. Dentro dele, voce pede colocar sub-retinas acessfveis par todos m6dulos de fun(jao dentr o do grup o. Ha, entretanto, uma maneira mais facil. 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 perfo nn. 0 procedimento a seguir ilustra esse processo .
o
2 3 IT_B: 1000 1010 1020
• Na Lisragem 20.5, it_a e it_b sao tabelas intemas sem linhas de
cabecalho. • A linha 5 coloca tres linhas em it_a. • 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 adquirira um a linha de cabecalho dentro do module de fun,ao).
• ~a Listagem 20.6 e dentro do modulode fun~ao, ; t1 e ; t 3 sao c6pias 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.
• As linhas 15 a 17 escrevem
0
conteudo de it! urilizando a area de
t rab alho wa .
• As linhas 18 a 21 modificam 0 conteudo de i t 3. Essa ta be1afoi passada por valor e resulta do, entao 0 conteudo do original sera alterado quando a instru cao endfuncti for executada.
on
• As linbas 24 a 26 escrevem 0 conteudo de it4. Note que a linha 25 acessa urn componente de it. Isso s6 epo ssivel porque a coluna Ref. Structure na tela Param eters/ Excep tio ns contem 0 nome da estrutu ra D D IC 1fal. IS50define a estrutura de it dentro do m6dulo de fUnlfaO . Se acoluna Ref. Structure esnvesse em branco, urn erro de sintaxe teria ocorrido na linha 25. A linha 28 copia
-• .-
D efin ind o as sub-rotinas em urn grupo de f u n<jo o
1010
•
• • •
• Na Listagem 20.5, as linhas 21 a 23 mostram qu e 0 conteudo de ita foi alterado pelo m6dulo de fun,ao. -
Ill: 1000 1010 1020 IT4: 1000
ANALISE ~
. --.
0
conteudc de itl para i t 2.
• A linha 29 copia 0 conteudo de it3 de volta para i t _a no programs de cham ada e 0 controle retorna para a chamada.
s(REEMCAM~ lnlcie c ScreenCom " How to Create Subro vtines with in a Function G roup" agora .
1. Inicie a partir da Function Library: Initial Screen.
2. Selecione 0 bono de 0piSao Source Code. 3. Pressioae a botao Change. A tela Function Module: Edi t emostrada.
4. Digire uma insrrucao perf orm no c6digo-fonte do modulo de fun~ao. Por exernplo, perform subl. 5. De urn clique dup lo no nome da sub-retina. Nesse exemplo, voce daria urn clique duplo em subl. A caixa de dialc go Create Object aparece, perguntando se voce quer criar a su b-retina. 6. Pressione a botao Yes . A caixa de dialogo C reat e Subroutine aparece. o nome de sub-rotina aparece no campo de Subroutine. 0 nome do include l!gtdfOl aparece na caixa Inclu de Choice, e 0 b otso de 0Pljao a esquerda dele automaticam enre ~ selecionado. . 7. Pressione 0 bono Co ntinue (a maroa de verificacao em ver de) . Uma caixa de dialogo Warning aparece, in dicando qu e 0 pro grama principal sera modificado e uma instruiSao i ncl ude l! gi df Ol sera inserida nele. 8. Pressione 0 botao Continue (a marca de verifica(jao em verde) . Vo~e ve a caixa de dialogo Exit Editor indicando qu e seu codigo-fonte alterou e perguntando se voce quer salver as aheracoes.
~&A " A A A A" a a~a 628
.".a..-.. . . . .
a .I I_ X.,,~,--; w -a ....... I I a • • • • • • • • • • • • • • • • ~.~
••
HRENDA EM, 1 DIAS ABAP /4
DIA ' U DDtllARllA\AU ODlJlOS DE flJN\AD, /AiTE, ,
9. P ressione 0 batao Yes . A tela Function Module Editor e mcstrada. Voce agora esta.editando 0 FOl . Codifique a sub-retina aqui. 10. Quando tenninar a co dificacsc de sua sub-re tina, pressione Save e depois Back. Voce vol ta para 0 c6digo-fonte do m6dulo de fun )ao
code comegou. Para ver 0 include que acabou de criar, rerome para a tela Function Library
mensagem Function module has been r el eased tambe m aparecera n a part e inferior da jan ela. Entretanro, se quise r alterar a interface, voc e s6 precisara pressio n ar a bo rac Display C hange e ter a. permissac para alcera-lc de qualquer maneira que quiser, Lembre -se, ent retanto, que voce nao deve fazer alteracoes que po dem fazer com que programas existences termin em an ormalmente ou resulte m em resu ltados diferen tes.
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 i ncl ude ljgidfOl. Essa instru/iao foi inserida pelo passo 7 do procediment o aeima. Se voce dec u rn clique duplo nessa linha, veri sua sub -re tina,
Se voce a ddento lmente liberor um m6dulo de fun.;ao e quiser cancelar a libe rot;60, v6 pam 0 tela Fundi o n Module Display: Administration, 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 de cance!omento.
Liberandc urn modulo de fun\;oo A fum;60 releas e od iciono um nlvel de profec;60 a interface de um m6dulo de fun.;co protegen do-o de modifico~oo. Se tiverc ompletado o teste de seu m6du lo 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 os parametres edstentes do interface de nenhu.mo moneira que posso causer problemas pora q uelquer progromo q ue che me seu m6dulo de fvn¢ o. vccs est6 prometend o estobilidede de interfoce.
MOVO
JEiMO
i.:.
r
Po r exemp lo, depois de liberar urn modulo de fuD~aO, voce nao adicioDaria 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 de fum;ao poderiam falhar ou funcio nar de maneira diferente. Depois de liberar, voce ainda po de alterar a interface, mas precisa dar urn passo extra para faze· lo. Para libera r urn rn6dulo de fU1?'~ao, utilize 0 seguinte procedimento. scmNCAM~ lnicle a Sc~eenCom "How to Releose a Functio n Module- ogoro .
1. Comece na Function Library Initial Screen. 2. Esco lha
0
bono de op~ao Administration.
3. Pressione 0 borso Change. A tela Function Module Change: Administration ~ mostrada. No canto inferior direita cia tela, na part e inferior da caixa Ge neral Da ta, voce veri Not Rel eased. 4. Escolha 0 caminho de men u Function M odul e·Release-Release. A mensa gem Released aparece na parte inferior da jan ela na barra de status. Na extremidade inferior direita da janela, Not Released muda para Customer Release On e ~ seguida pela data atual. Se voce tentar alterar a interface depo is que 0 m6 duJo de fun ljao foi liberado, as campos de entrada. na tela de interface est ario acinzentados. A
Testando urn mOdulo de fu n\;oo Se voce quiser testar urn m6dulo de fun~ao sem escrever urn programa ABAP/4. vo ce pe de faz e-Ic utilizando 0 amb iente de teste den tr o daFunccion Library. Utilize 0 seguinte pr ocedimento para acessar 0 amb ience de teste. SCiHNWI.... Inid e 0 ScreenCom "How to Use the Test Enviro nmenf for Function Modules" ,. a go ra. - --.
1. Comece na Function Library: Initial Screen. D igire
0 nome do m6 dulo de fun~ao que voce quer te stae n o campo Fun ction Module.
2
Pressione
0
bo rao T est, Yoce veri a tela Test Environment For
Function Mo dules (mom ada na Figura 20,3). 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 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 a ta bela intema, as colunas da. est ru tura serro mostradas.} Di gite seus dad os e pres sione a teela Enter. Voc e voltara para a t ela Test Environment F or Function Modules. 4. Pressione 0 batao Execu t e na barra de ferram entas Application para exectitar a m6dulo de fun~ao. Vo ce veti Tes t Function Module: Result Scr een (veja a Figura 20.4) . A safda de instru~oes write dentro do m6 dulo de func;ao aparece prim eiro. Na Figura 2004. You passed A e a resultado de uma inStrUl;ao wri t e denn o do m6d ulo de fun~io. Entao, a tempo gasto para executar a m6dulo de fun~ao (em micross egun dos ) e mostra do. Em seguicia, os valor es dos parametros sao mostrados e tern do is valores : a de an tes e dep ois. Para parametrOS changi ng, a valor "'antes" ~ mos trado primeiro e 0 valor "'depois·
629
.............. 630
_~~--
-- -
=
-
APiEM DA EM21 DIA5 ABAP"
DIJ. 2UDDUWIll>'. d'ODIlOSDE FUM>" , '.uTE 2
aparece embaixo dele. P ara parametres tabl es, as conreedos "depois" ap arecem acima dos cccteudos "antes" (original). Na Figu ra 20.4, a tabela inte rna i t cootinha duas linhas depois do pro tessamento e trSs linhas antes . Para ver as conteudcs ant es ou depois cia tabe la intema,
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 lnfcrmccces salvos, pressione 0 bctec Test Data Directory em quolquer
tela . As seqaenc lcs de teste tcmbem podem se r ccos trurdc s utilizondo o bctoc Test Sequence. .
de urn clique duplo em qualquer linha, Figura 20
3
A tela Test
Environment lor Function Module s.
Localiza nd o m6dulos de fun<;Cio ex istent es 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. Frequentemente, 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
Figura 20 4
A kla Test FundiOfl
Module: Result
A te/o 1VJ.4P/4 Repository Infetrnotion System como oporece
in;ciolmente.
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.
631
632
I APRE MOAEM21 DIAl A'AP!' Figura 20 6
A tela ABN'/4 Reposjtoly Info rmation System:
Function Module com os m6dulos de ÂŁUnCiao expostos.
DlA211: MOOULARIZAtA0: MOOUlOS DEfUHtAO, PARTt z
~
l,
I
Digite m ultiples criterics de selecac aqui. Esses valor es sao conh ecidos com o os valor es inclufdos, au simp lesmente "includes". (Esse e urn usa difer ente do. term o quando nos referimos a programas include.)
I
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
exibir todos as possfveis campos de selecao. Sua tela agora deve aparecer como mostrado na Figura 20.7. Essa e uma tela de selecac em que voce pede inserir criteri os de pesquisa para localizar modules de fun;ao. Todos as campos ndc diferenciam maiasculas e minris culas, com a excecic do campo Short De scription , que diferencia caixas altas e baixas! 5. Para pesquisar urn m6dulo de fun<;ao, tan to palavras com o string s de caracteres podem ser inseridas nos campos de p esquisa. Utilize + e Ie como caracteres curin ga. + corresponded a qualqu er caract er e uni co, e I;' correspondera a qualquer sequencia de caracteres. P a r exemplo, digite *DATE* no campo Function Module. Isso Iocalizara todos os m6 dulos de fun<;ao qu e contem os caracreres DATE em qualqu er lugar em seu n0!TIe. Ou, voc e pode tanto digirar "Dare" como "dare" no 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.
7. P re ssion e a batao Options para espec ificar operadores de sele<;ao como igual, difer ente, maior que, menor que e assim par diante. Voce vera a te la Main tain Selection Optio ns, como mo strado na Figura 20.9. P ara ser capaz de espe cificar P att ern or Exclude Pattern , seu valor deve canter urn caracte re coinci dence com 0 padrao: tanto + como ". Pressione 0 ba ta o Copy para retomar pa ra a tela Multiple Selection.
8. Na tela Mult iple Selection, pr essione 0 botao Comple x Selection. A tel a M ult iple Selection e mostrada n ovam en te, mas dessa vez ha uma barra de ro lagem n o lado direito e as campos Ranges aparecem (veja a Figura 20.10) . Para especificar valores que deverac ser exclufdos cia pesquisa, rol e para baixo e as digire dentro da caixa in titulada ...But N ot (veja a Figura 20.11) . Esses valo res sao conhecid os como valores excluldos ou , simpl esmente, excludes.
633
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 Selection.
A ceee ...&11Not.
."
Fig u r g 20 9
9. Pressione 0 batao Copy para capiar seus criterios de selctjao de volta para a tela de sele>io. Voce volt•• t el. ABAP/4 Repository In form stion System e, se voce inseriu mdlripl cs criterios de sele~ao. a seta no
A ~Jo Maintoin Selection Options.
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
Atela Multiple Selection com umo barre de roJogem no Iodo direffo e camposRanges.
do linha m05tro que mais de urn criteria
de seJe¢ o existe.
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.
~
~
~
636
• AA
.~.A
a
A A ... &
~
DIA 20, MOOUlAlJ2A(.iO, MODUl.Ol DE ru""D, PArTE I
APlENDA EM11 DIAl ASAP"
as resultad os OR. Emao, se a exclusac for especificada, eles serfo aplicados em uma entrada depois da outra. Por exemplo, no campo Short Desc ription. sup6e-se que voce tenha especificado as inclusoes "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. 12. Para testar urn rn6dulo de funliao, coloque seu cursor nele e pressione o batao Test/Execute. Voce vera a Test Environment Screen para esse m6duIo de fun,;:n.
'.
- 'l4!l & . A & a & • • ~ • • • • • • • • • • • •
F i gura 20 1 4
A tela Function
Module Display: Documentation.
Nem tcdcs cs porametros tern doccmentocoo odicionol. Se 0 pcremetrc em que voc! deu um clique duplo 000 fiver mois doccmenta¢o, nodo ocontecer6 quondo voca der um clique duplo nele. Figu ra 20 1 ,
Figura 20 13
A docvm emo~Qo
A ~fa Fundion Modules.
pa nimetro.
od id onol para urn
III!- •
I
637
• • • • • • • • •• • • • • • • • • • • • • • 638
APREN" EM 21
eus ABAP /~
PIA 2UDDULlRIlA(AD,MODUlDS DEfUN\iO. PARTE 2 I
Se, quando voce olhc r no barre de titulo no tela Function Modules, 0 ncrnerc de m6dulos de fvnc;oo encontrodo for exotomente 500, enta~ prcvcvelmente tera ccesscdo 0 tomanho m6ximode listc. Retome pam a tela de seler;ao e procure no compo Maximum No. of Hits. Se ele for fombem de 500, voce estero acesso ndo 0 m6ximo. Voce pode ester tenfondo oumentar 0 numerc maximo de ccessc, mas ;550 roromente sem produtivo , porque
voce provo velmente noo !ere urno
listc inteiro
~~~~~!§!1~~~;);!;~~!;!!!;!@~~
Figura 2° 16 Esse e 0 modo como B~=== tela Function Module Creote:
(:I
Adm inistration
oporece depais que o m6du/o de fvn¢o foj criodo.
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 procedimento 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.
1. Comece na Function Library Initial Screen. Se jaeac estiver af digire o nome de seu m6dulo de fun~ao no campo Function Module. 2. Escolha 0 botao de op ~ao Administration e entao pressione a batao Change. A tela Function Module Change: Administration e exibida (veja a Figura 20.16). N a parte superior da tela, no C:iUIlpO Function Group, voce pede ver 0 ID do grupo de funr;ao a que esse m6dulo de fun~ao pertence. N a extremidade inferior direita no campo P rogram, voce pode ver 0 nome do programa principal para 0 grupo de fun r;ao. No campo Include esta 0 nome do incl ude que conrem 0 codigcfonte para a m6dulo de fun~ao. 0 ultimo campo mosrra 0 status do m6dulo de fun~ao: Active au Inactive. Pressione 0 botao Back para retornar para a tela Function Library Initial. 3. Escolha 0 bono de op ~ao Import/Export Parameter Interface e entac pressione a ba tao Change. A tela Import/Export Paramete rs e mostrada . Pression e a bone Back para retorn ar a tela Function Library Initi al. 4. Escalha a batao de op~ao Table Parameters/Exceptions Interface e entaD pressione 0 batao Chang e. A tela Function Modu le Chan ge: Parameters/ Exceptions emcstrada. Aqui voce pode inserir au alterar parametres internes de tabela e na mes de exce~ao. Pre ssione 0 bono Back para retomar.
5. Escolha 0 borso de op~ao Documentation e eneac pressione a ba tao Change. A tela Function Module Change: D ocumentation e mosrrada. Aqui voce pode inserir uma descricac curta para cada parfmetro e excec;ao na interface. Pre ssione 0 batao Back para retornar. 6. Escolha a botao de op~ao Source Code e entia pressione 0 botao Change. A tela Function Module : Edit emosrrada. Pressione 0 botao Back para retom ar. 7. Escolha 0 batao de op~ao Globa l Data e entac pressione 0 batao Change. A t ela Functi on Module: Edit e mosrrada. D essa vez, entretanto, voce estara editando i nclude superior. Ob serve 0 nome do i ncl ude superior na berra de tfrulc. Ele se adapts aconvencfo de nomeacao 1fgid top, on defgide 0 nome de seu grup o de func;ao. Aqui voce pode definir varisveis globais e areas de trabalbo tables que sao comuns a todos as m6duJos de fun~ao dentro do gropo de funr;ao. Se seus modules de fun~ao utilizam a instrucdo message. voce tambem pode definir a classe pednc de men sagem [na instrucao f unctf onpool). Pressione 0 batao Back para rerornar. 8. Escolha 0 bors o de opcso Main Program e pressione 0 botso Change. A tela Function Module: Edit e mostra da. Dessa vez, voce estara editando 0 program. principal (veja a Figura 20.17). Observe que a nome dentro da barra de nrulo comec a com sap1 seguido par seu ID de grupo de fun~o. As duas ins truc;6es i nclude incorp~ram 0 incl 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
639
_
640
.......L..A......._
I
..&...JL
I
a~
I
APR ENDA EM21 DIAl ABAP"
DlA2UDDU,","UIAD, MODULOI DE FUNIAD. PARTE 2
bcuo Back para retomar ao programaprincipal. Dar um clique duplo em UXX exibiri 0 ccdigo-fcme de programa include - ele contem as instrucoes que incluem as m6d ulos de funCiaO no grupo. Seus no mes sao indicados dentro de comenedrics no fim de cada instrucio
641
Fig u r a 20 1 B
Um erro de sinloxe detedocJ em tempode ellKU¢o dentrode 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 codigcfoote para urn module de fun~o dentro do grupo. Pressione 0 botio Back para reto rnar. . Flgurq 20 1 7 Ess~ 4 a progromo principal pore 0 m6dvlo de fun¢" z_ tx_dfv.
ttl!
,pc
11 BriE
'«''''
"'iflil
~_' . H. :~-:-o;.~~~_ .~_ ;,1',. '~~:~
V
~- :;- 4 x "
"J 11 .); .. if .
..
;~
~.
II
;..~~~~-'_
··!i-~d·~~..¥~,",
'9i.1Iti;o ,~, . ~.... ..........
:w-... '.~_";;"
Denerc dessa caixa de diilogo SAP R/3 estio as informacoes sufi~ien~es para descobrir a posi 'iao exata e a causa do erro. N a Figura 20.18, 0 pnmclro campo concern 0 no me de programa 1ztxau02. Esse e 0 programa incl~de que contem 0 erro. 0 segundo campo diz a voce que 0 errc oco rreu na linha 10. 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. t ion,,Vodee 4. Pressione 0 bone Check na berra de ferramentas APplicad deve ver a mesmo erro qu e foi most rado na parte inferior a caixa e Pora copter, renomear au excluir urn m6dulo de fu n~oo, utilize as bot6es Copy, Re name, a u Delete no Fundion li brary: lnltlcl Screen.
Lo caliza ndo e corrigind o erro s em modu les de f u n!;o o
e
A ma neira mais faeil de corrigir en-os ern urn m6dulo de fun~ao execu tar uma ve['ifica~ao de sintaxe quando voce estiver dentro do m6dulo de func;aa. Voce
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 funlji o, entac voce sabe por onde procurar se ele nia funcionar. 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 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 SAP R/ 3 como a mcstrada na Figura 20.18.
dialogc SAP R13.
.
5. Corrija 0 erro . Fr equen temenre, voce pe de simples~e.n~e presslOnar a borac C or rect e a sistema aut omaticamente corrigtra 0 err o para voce.
Confi gu ran do
0
valo r de sy-subrc no retorno
Normalmen re depois de retornar de urn m6dulo de fuoiSaO, 0 SIstema. automaticamente configura a valor de sy-s ubrc como zero. Utilize uma das duas seguintes instrucoes para configurar sy-subrc para urn valor nao zero: •
rai se
• mess age
raising
Utilizando a instru(;fi o r aj se _rat . se para sair .... do m6dulo de fun,ao e configure 0 valor de U t ili ze a .mstrucac sy-s ubrc no retorno.
•A. 642
A
•
.- • • • .
..
.
.
.
. ..
.
_ ... . . . . . .-........~
. .. ... . . . . . . . . . . . . . - . . D~ 2'1. MODUWlL\(.i D,M6~ DE FUNIAD. 'AilE 2
APRENDA EM 21 DIAl ABUII
Sintaxe para a
S
instru~ao
9
r a'i se
CIl
A seguinte e a sintaxe para a instruc;ao raise.
Z
raise xname .
10 11
12 13 14 15
onde:
• xnume e 0 nome cia excecso a ser·configurada.
m
T
643
exceptions er ror_a - 1 error_b • 4 eTTOr_c - 4 othe rs • 99. write: I ' sy-subrt - ", sy-su brc, I I vout - ", vout.
EMmDI~ U.lagem 20.8 Isla e a m6dula de lun~1ia chomoda do Listogem 20.7 Os seguintes po nte s se aplicam : de ser pr eviam ente de finida em qualquer lug ar. Ela pede ter ate 30 caracter es de co mp rimen to . Todos as caracteres sao permitidos, ex-
1 function z_tx_2.0oa . 2 • •- --•• •• -- --- ----- . ----- -------•••• ----- .--- -- -- ••-- -- -- -- -,-3 " ·" lo cal i nt er f ace : 4 •• IMPORTING
ceeo " ". e :.
5
• xname ped e ser qu alquer nome que voce tenha composto, Ela DaD [em
• -N ao coloque xnane dentro de aspas. Q uando a.instru~o r at se eexecutada, 0 contrale retorna imediatamente para a instIU~O ce11 function e urn valor e atribuido a sy-subrc baseado nas excecoes que voce listou af. Os valo res atribuidos a parametres de exportacio nao sse copiados de volta para 0 prognma de chamada. As list agens 20.7 e 20.8 e a F igu ra 20.19 ilustram co m o isso acontece.
9 c6d igo no m6dulo de fun~c o mostrodo no listogem 20.8 e meremente po ra fins de exemplo; normolmente tc rnbern haveria um c6digo que Haesse olgum process omento real of tcrnbem. F igura 20 19
;ns1ru~6o
raise .
coli function I Z ~ XXX: l fundion Z_XlOI.. exceptions raise error_b. error_A ~ 1 = 2+- este valor e ~ . error_B other ... 3 otribuldo a endfundron.
sy-svbrc
EHTUDA lrItrr.. U st ag em 20.7 Como config ura r 0 vclc r de sy- subr-c ". de urn m6 d ulo de fum;co . 1 2. 3 4 5 6 7 a
i§t..,
.
"''' '','''' .....'" ~~
rep ort ztx 2.007. parameten panrL1n defa ult 'A'. data vout(4) value ' I NIT' . call funct ion 'Z_TX_ZOOB ' exporting exname • pann in importing pout. vout
VAlUE(EXNAME)
EXPORTI NG
7 ••
• xname DaO pade ser uma variavel,
Iste ilustro 0 processomento do
.a
6 ••
0
partir do interi or
8 •• 9 ••
VAl UE (POUT)
EXCEPTIONS ERROR_A
10 ."
ERROR_B
11 •• ERROR_C 12 •• ERROft X 13 •• -- -.- - - - - . - - - - --------- ------• • - --- - ---- - - -- ----- - --. ------. 14 pout · 'XXX'. 15 cas e exname. 16 when ' A' . r ai se error_a . 17 when 'B'. ra ise error_b. lB when .' C'. r aise error_c. 19 when 'X'. ra ise error_x .
20 enecese. 21 endfunction.
o c6d.igo nas lisrageas 20.7 e 20.8 produzirf esta salda, se voce especificar urn valor de A para pann_in: sy-s ubrc • vout • INIT
1
• Na Listagem 20.7, a linha -4 pega 0 valor de parm_i n e 0 passa para 0 rn6dulo de fun~ao z_t x_2007. 0 controle e transferido pua a linha 1 da Lisragem 20.8. • Na Listagem 20.8. a linh a 14 atribui urn valo r para 0 paramerro pout . Esse parimetro e passado por valor. entao a altera~ao e apenas para a defini~'o local de pout. 0 original ainda n' o loi modificado. • N a Listagem 20.8, a linha 15 examine 0 valor passadc via a parametro exname. 0 valor e B, entao a linha 17 - raise e rror_b - eexecutada. controle transferido para a linha 9 da List agem 20.7. Como a
o
e
. . -644
~
~
---
- -
- -
APiEHDA EM 21 DIAS ABAP'1
• Se a excec;ao identificada depois de r-atsing for tratada pela instroc;ao 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 tratada da mesma maneira que a instruc?0 rai se .
instruc io ra i se foi exe cutada, 0 valor de pout nio foi copiado de volta para 0 pro grams de chamada, assim 0 valor de vout nio sera alterado.
• Na Lisragem 20.7, 0 sistema varre as linhas 10a 13 :lte ele localizaruma correspondencia para. a excer;ao identificada pela instrucio ra i se recem-executada. Nesse case, ele esti procurando error b. A linha 11
corresponde ao erro.
-
• 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.
o nome especial ot hers
na linha 13 cia Listagem 20.7 corresponded. a
todas as excecoes ni o explicitamente identificadas na adir;iO exceptions. Por exemplo, se a linha 7 cia Lis tagem 20.8 foi executada, a cxcer;ao error_x seria configurada. Essa exce!rao nio foi identificada na Listagem 20.7. entia others correspondera e 0 valor de sy -subrc sen configurado como 99. Voce pede codificar quaisquer cameros que quiser para c6digos de retorno de excecao.
Sinlaxe para a
-
Ul
Z
§
.
. Se urn parimetro de exponac?o fai passadc p ar valor, depois de urn rai se seu valor permanece inalterado no programa de chamada, mesmo se urn valor river sido atribuldo dentrc do m6dulo de func;io antes de a instrucao rai se ter sido executada. Se 0 p arfmerrc foi passadc por referencia, ele sera alteradc no cha mador (ele tern 0 flag Referenc e ativado na tela Export/Import Paramet ers}. Esse efeiro emost rado na List agem 20.7. 0 valor de pout eaherado no m6dulo de fun~ae e, se uma ins trucac rai se for executada, 0 valor alt era do me e copiado de volta para 0 programa de chamada.
onde: teo tipo da mensagem (e, w, 1, s, a au x).
•
•
e0 nutnero da mensagem. (ee) e a c1asse da mensagem.
•
'11 e '/2 sao o s valores a serem digitados no texto cia me nsagem.
• nnn
Utiliza nd o a instru IYiia me ss age ... rai si ng ~ instt11C;io message. . . raisi ng t ern dois modos de operaliao:
• Se a exceliaOnomeada depois de r a i si ng nao for tratada pela instruc;ao call f unct i on e others nae ecodificada, umamensagem eemitida para o usuari o.
e0
nome
cia excec;ao a ser configurada.
o seguintes pontes se aplicam: • 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 especificada na inStnl'ii0 functi on-poo l no i ncl ude su perio r pan 0 grupo de func;io via a aeli~io message-id. • As seguintes varidveis sy sao confi guradas:" sy-msqf d, sy- msgt y, sy-msqno e sy-msgvl par sy~msgv4. Estas podem ser examinadas dentrc do programa de chamada (depois do retorno). Quando a instrugao message . . • rai sing e executada, 0 £luxo do con t role depende do tipo da mensagem e de a condicac ter sido ou ni o tratada pelo chamador (0 que eespecificado na lista de excecoes do programa de chamada ). •
check, exit e stop tern 0 rnesrno efeito que m6dulos de fun~Oo em sub-retinos extemos. Entretanto, eles nao devem ser utilizodos dentro 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 retomo.
message •.. raising
message tnnn{cc) [with vl '/2 •• . J raising xncne
• xname 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 progromo ser6 obortodo e cccntecere um dump curto que tern 0 errc de tempo de execu<;oo RAISE_EXCEPTION.
inslrv~ao
A sintaxe para a instru~ao message . . . rais ing e a seguinte:
Se a condicao for tratada pelo chamador, 0 controle retomani para 0 chamador. Os valores das vsriaveis sy-Ilsg sao co nfi gura dos. a s valeres de exportac;6es pass ados por ~alor nao serio ret omad os.
• Se a candi<;ao naa far t ratad a pelo chamador, e para tipos de m ensagem 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 em branco eremovida e 0 usumo eret omado i tela da qu al 0 programa
foi chamado. • Se a condi~ao nao foi tratada pelo chamado!, nem para 0 t ipo de mensagem i , a mensagem sera exibida para 0 usuario em uma eaixa de
D~ 20, MDDUURlU"D, M6DUlDS DEFUN" D, pure 2
APRENDA EM21 DIAS ABA P/4
dialogo . Quando a usu dric pressiona a tecla E nter, 0 controle ret om a para 0 m6dulo de fun~ao na instrufj3.0 seguindo a instrufjaq message. o m6dulo de fuD~O con tin ua processando e, na inStru~o endf unct fcn, 0 cont role reto m a para 0 programa de chamada. Os valores ells variaveis sy-msg SaOconfigurados e os valores de expc rt acoes pass ados por valor sao reto rn ad os.
i~ o rti n9
23
pout
2'
l!!!rror_e error_w ., error_i er ror_s error_a er ror_x = oth ers -
26 27 28
29 3D
• S7 a condicao Ilio for tratada pelo chamador, e para ripe de mensagem s, a mensagem sed armazenada em uma are a de sistema. 0 controle continua dentrc do m6dulo de fun~o na instrU~o seguin te ainstrucac message. 0 modulo de func;ao continua processando e, na instrucio endfunct tcn;o centrale retoma para 0 programa de chamada. valores das variiveis sy-msg sao configurados e os valores de exportacoes passados por valor sao retomados. Quando a lista e exibida, a mensagem aparece na barra de Status na parte inferior da lista,
as
• Sea condicaonjiofoi tratada pelo chamador, e para 0 ripo de mensagem x, 0 m6dul o de fun~o sofrera safda e 0 programa de chamada e terminado imediatamente. Urn dump CUrto o usudrio.
e gerado e e exibido para
As listagens 20.9 e 20.10 ilustram 0 efeieo cia instrufj3.0 message • . . raising.
~NTRADA~ L1stagem 20.9 Utilizando a i nstru~o o message .. . ra ising 1 repor-t ztx2009. 2 ·par amet!rs : P_!tyP! default 'E ' . " t nsf re os t 1pos de mensagem E WI S A X 3 p_handl e default 'Y ' . "se Y. trate a excet;lo 4 data vout(4) value ' I Nn' . 5 6 if p_hand1e - 'Y ·. 7 perform call _and_handle_except fon. 8 el se . 9 perform call_and_dont_handl e_except fon. 10 endif .. 11 wr1te: / 'sy-subrc - ", sy-scbrc, 12 / ' veut -" , vcut , 13 / ' sy ~ ms g ty' , sy-msgty. 14 / ' sy-ms9i d'. sy ~msgid. 15 / ' sy-msgno' . sY-lllSgno . 16 / ' sy-msgvl' . sy-msgv l. 17
18 . _ ---..,: --,-,---::_ _,..,19 form call_and_hand1l!!!_except 10n. . 20 call function ' Z_TX_20IO' 21 export ing 22 msgtype - p_l!!!t ype.
_
31 32 33
34 35 36 37
38 39 40 41 42
z
vcut
exceptt ens
25
1 2 3
4 5· 6 7.
endfonn.
.:_---..,.,.----,--,....,-.,.--==== ca1l_and_dont _hand1e_excepti on.
_
tOT"lll
call funct ion ' Z_TX_2010' expert! ng msgtype z p_et ype importi ng .. vcut , pout endfol"ll.
ENIRADI" L.ista g em 20.10 o c6digo-fonte perc 0 m6dulo de funlioo chomodo "do ,. Llstc qem 1 2 3 4 5 6 7
20 .9
f unct10n z_tx_2010:-· • •• - - - . ~ - -~-~~. --- ---_. -------- -- -------- - - ._-. -- ~- - -- ---- - --""·-lo cal interface:
.... "" •• ." ~ •• 9 ." 10 ••
IMPORTING VALUE(MSGTYPE) EXPORTING VALUE(POUT) EXCEPTIOtiS ERROR_E ERROR_W 11 •• ERROR_I 12 •• ERROR_S 13 .. ERROR_A 14 .ERROR_X 15 • •--- -- ---- -- -- -- ------.- ---- ----------- --. -- --- -- - -.--- - -----16 pout .. ' XXX' . 17 case msgt ype. 18 whl! ! n 'E '. message e991(zz) with ' Error E' rai sing er ror_e . 19 when 'W ' . message e992(zz) with ' Error W' raisi ng error_w. 20 when '1 '. message e993(zz) wit h ' Erro r I' rats i ng l!!!rror_i . 21 when'S'. message e994(zz) wi t h 'Error S' r ai sing error_s o 22 when ' A'. message e995(zz) with ' Error A' rais i ng l!!!rror_a . 23 when 'X'. message e996(zz) with 'Error X' raising l!!!rrOT_x. 24 eeeeese , 25 l! ! ndf unct 1on.
647
A · A ••••••• A •••• •••••••• 648
. .. . . . . -- - - - - - - - - - OL\ 21> MOOUl.lRlll(.io, .60ULO' DE FU'\AO. PAm2
AmHOA EM21 OIA' ABAP"
Utilizando as vslo res de parfrnetro padrao, 0 c6digo nas listagens 20.9 e 20.10 pro duz esta saida:
SAiDA ~
sy- subrc •
1
you! • INlT
sy· ms gt y E sy-msgid ZZ
649
4. Pressione 0 botio Change. A tela Function Module Change: Table Parameters /Exceptions ~ exibida. 5. Na metade inferior cia tela, na seljio Exceptions , digiee os names das excecoes que aparecem no codi go-fonre do m6dulo de fu oljao. 6. Pressione
0
bota c Save e
0
bot ao Back. Vo ce volta
a te la
inicial
Function Library.
sy-msgno 991
sy-msgvl Er r or E
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. • A linha 20 transfer e co ntrole para a linha 1 da Listagem 20.10. • Na Lista gem 20.10, a linha 16 atribui urn valor para 0 pardmetrc local pout . Esse valor e definido como passado por valor, enr j c 0 valor de vout no chamador ainda nao foi alter ado. • A linha 18 cia inst rucao case e verdadeira e a inst rucac mes sage .. . ra i 5 i n9 e execu tada. Is50 aciona a excefjao error_e.
• A excefjao er r or_e
e tratada
pelo programa de chamada, entaa a
mensagem ndo eexibida pan. 0 usuario. 0 controle retorna para a linha 25 cia List agem 20.9. 0 valor de vout nao ~ alteradc; as variweis sy- msq sao atrib ufdas a vaIores. • Na Listagem 20.9, a linha 26 atribui 1 para sy- subrc. • A linha 33 ret o rna
0
controls para a linha 11 e os valores sao escritos.
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.
Definindo excec;6es no interface Sempre qu e voc e configura uma exce~ao em urn m6dulo de funljao, voc e deve docu ment ar esse nom e na interface do m6dulo de fuotjao. Os nomes de eXCeljao tambem aparecerao aurom aticament e na parte superior do fonte do m6dulo de fun ljio dentro dos comentdrios gerados pelo sistem a. 0 seguinre procedimento des creve como documentar suas excecees.
SCRHHOMltrr.. lnicie a ;creenCam "How to Docu ment Exceptions in the Function Module ~ Interface agora .
1. Come ce na Function Library : I nitial Screen. Z. Digite seu nome de m6dulo de fu oljao no campo Function Module se ele ja nao est iver af. 3. Esc olh a 0 batao de 0pljao Table Parameters/Exceptions Interface.
Inserindo automaticamente a insrrucco ca11
functjon Em vez de digital a insrrucio call f unct ion em
Sell c6 digo -fo nte, 0 sistema aut omat icam en te pode gera -la para voce . Quando voce faz dessa maneira, os nome s de exce~ao qu e voce docum ent ou na interface serso automaticamente inseridos em seu c6digo tambem. IIlrrr...
SCREENCAU"
lnkle
0
ScreenC om "How to Insert a call fund ion Statement into Your ABAP/4
Progrom" cqcrc .
Para ver os efei tos de sua documentacio de excetjao l erie UJ;11 pro gram a de ABAP/4. E m vez de codificar da pr6pria in strucao cal l fu nct i on, util iz e o seguinte procedimeoto para genr automaticamente a instrucao call fu nct f on :
1. C omece na tela AEAP/ 4 Editor: Edit Program. 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. 3. P ressione 0 botao Pattern na barre de [erramentas Applic ation. A caixa de diilogo Insert Statem ent aparece . 4. 0 batao de 0pljao Ca ll F unc tion ja estaria escolhido. Se n jio estiver,
selecione-o. 5. Digite 0 nome de seu m6dulo de funr;ao no campo de entrada adireita de Call Function. 6. Pressione 0 batao Continue (a marca de verificaljio verde). Voce 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 cursor. A ins t ruf:iao comecar a na mesma coluna em que seu cursor 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 interface, ele sera com entad o e 0 valor padrac ap arecera adireita dele . 7. Preencha os valores a dire ita do s sinais de igu al. Sinea-se livre para alterar 0 codigo a u remover quaisquer linhas qu e se seguem aadi~ao 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 ,
Umo d6usulo importi ngvazio ccusc um errc de sintoxe . Se nOohewer nenhu m nome de pordmetro seguindo a po lovro importing, ou se tod os e lesfor em ccmen tcdcs.vcce deve remover a po lovrn importi ng. mesmo tcmbern verdode iro para 0 exporto~oo .
o
e
Resumo • 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 de fun'iao dentro do gropo e Iembram de seus valores entre chamadas a m6dulos de fun'iao dentro do grupo, contanto que 0 programa de chamada continue a executar. Globalizando a inte rface, os parametres sao visfvels dent ro de sub-re tinas chamadas a partir do modulo de fun,an. • As sub-r et inas definidas dent rc deum gropo de funi?o sao codificadas DO include Fo I. • O s m6dulas de fun'iio podem ser Iiberados pan. denotar que a interface 6 eseavel e nenhuma altera'iio significativa sed feita para ela, P Ort"" O, ela ~ Iiberada pan dispooibilidade geral e ~ "segura" para ser, utilizada em c6di go de prodc cao. • 0 ambience de teste oferece uma maneira convenie nre de executar modules de fuo'iiOsem escrever qualquer ccdigc de ABAP/4 . • M6dulos de fun'iao existen tes podem ser localizados com a ajuda de Repository Information System.
P&R
o o
Par que voce passaria urn panim etro de im portacdo par referencia? 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? Vma passagem por refe rencia e mais eficiente que um a passagem por valor. Voce deve util iza-la para eficienc ia. Entretanto, 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.
Work.:>J sh wo ~p.L-
_
o Workshop
oferece duas maneiras de voce verifica.r 0 que aprendeu oeste capitulo. A se!jio Teste ofereee perguntas para. ajudar a salidifica.rseu entendimemo 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 exercfcios no Apendice B, "Respostas as pergun tas e aos exercfcios".
Teste 1. Se urn pargmetro de mesmo nom e exisee em dois m6dulos de funC;io dentro de um grop o e as duas interfa ces sio globais, as definicoes de dados de dois desses pargmetro s devem ser identica s? 2. Sevoce acidencalmenre liberar urn modulo de fun'iao e quiser cancelar a Iiberacac, qual caminho de menu voce pede utili z.ar? 3. Se voce DaO codifica others e uma excectc e configurada dentro do m6dulo de fun'iao que nao foi nomeada na adi~ia except i ons, 0 que acontece? 4. CheCK, exi t e stop tern 0 mesmo efeito com m6d ulos de func;ao que tern nas sub-retinas externas. Eles devem ser utilizados denrr o de m6dulos de fun,aol
Exercicio 1 Copie 0 m6dulo de fun'iao z_tx_div eo modifique para configurar a 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.)
651
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 ilizados 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:- • . • • • • 654
I
I
I
•• II ••••••••••• •
•
•
•
•
•
•• •••• _
•
_
APR END' EM 11 DIA S ' U P/4
'IAIU ElAS DE smll'
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 evento at selection-screen 0 evento at user-corrmand
Utilizando
0
0 seguint e c6digo most ra a sintaxe para
Z
report ywhatyr. tab les : marc, mvke.
~
m
T
e
Utilizando 0
0
eye nto at use r -command
Os botoes, assim co mo muitas outras opcees de tela de seleljao baseadas em evento, podem ser muitc uteis na manutencio da interacac com usuario e na validaljaOde entrada do usuario. Na pr6xima se~o, voce ira explorar a utilizacao de bo toes para chamar 0 eveneo at user-cceand e estu dar urn exemplo de com o os b otoes podem ser utilizados para processar a entrada de usuario.
eyento ; n; t; al ; zat ; on
!a
eye nto at sel ec t; on- s cr een
a
• a evento t ntt f et taat t cn •
0
655
evectc at se lect ion-screen processado dep ois cia entrada do usuario na tela de seleljao ativa. Isso pede ocorrer quan do a usu i rio pressiona uma teela de fuoljao ou da urn clique em urn bono, bern como no caso de mui tos outros elementos que podem interagir com a usudrio. Alem da verificacao de validaljoes de dadcs, mensagens de aviso, alteraca o do sta tus GUI e ate rnesmo janelas pop-up podem ser abertas utilizandc 0 evento at sel ection -screen. Voce vera mais dest es exemplos mais adiante neste capitulo. quando estudar ~ telas de seleljao de [ormatacio e os eventOS envolvidos co m elementos de {ormatacao de tela. Par enquanto, entretanto, vamos examinar urn botao em 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 .
Por padrao, 0 evenro sta r t -of - sel ecti on e anexado a todos as eventos no ABA P/ 4. Em seus pro gramas, voce pede definir urn bloea de processamen to e anexar esse bloco a uma palavra-chave de evento. Par a 0 c6digo genericameate facit de ler, euma boa pratica definir blocos sequenciais de processamento na ordem em que d es mais provavelmente serdo acionados durante execucic cia tela de selecao. Eo fundamen tal tambem ut ilizar as eventos mais imp orrantes para programacdc cia tela d selecao. Esses eventos 7 sao: •
•••••••
eventc init i al ization:
data: p_year for sy-datum. 1n1tia 11 zati on.
Sintaxe pa ra oevento se1ect i on-s cr een pushbutton
o seguinte c6digo mcstra a sintaxe para a event o sel ect i on-screen
if sy-datUIII ge '01012000'
pyear .. ' 2000' . else . .
pushbut-
t on:
p"year· ' Yest eryear ' .
sef ect t cn-screen pushbutt on
e Xil~ l @l
user-comnand 1234.
endif .
Nesse exemplo, quando ~ execuudc 0 programa pa..ra 0 qual uma tela de sele~ao estol definida, esse bloea de processamento i n; ti a 1fzat ; on executado,
e
configunndo 0 campo de parametro p_year como igual a urn valor dependendo da data de sistema no momenta de execuci o. E esse blocc no qual voce
especifica as valores-padrjioiniciais de sua tela de selecao, com base no fate de as criterios serem au ndo necessaries para manter a integridade de clados digitados pela usuano. Alguns exempl os inclue m a configura~ao de barras de 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 chegar mais proximo e obs ervar algumas utilizaljoes do s eventos at se1ecti 00screen eat user-cOIlVMnd.
Essa instrucao, quando utilizada junto com 0 comando at sel ect i onscreen, e uma excelenre maneira de interagir corn 0 usuario quand o este digita dados. A sintaxe esemelhante i de urn sel ect i on- screen corrment, exceto pelc fatO de qu e os dad os sao passados quando 0 usuario pre ssiona 0 bono. A aljao de pre ssionar 0 batao aciona sccrfi el ds -ucomn n o evento at sel ect ton-screen e os cam pos de entrada sao importados. Esses dada s entao p odem ser validados e uma mensagem pode ser exibida para 0 usudrio dependendo do prop6sito do bo tao. Ess e e urn exemplo de como voce pode utilizar do is borees para determiner quallinguagem informari os dad os selecionados. III o seguinte c6digo mostra a sintaxe para dois botoes que sao utiliudos Z para escolher urna linguagem:
~m
T
se1ec t 1on·screen pushbutton lO(20} text-D03 user-ccxrmand eng1. sel ect ion- scr een pushbutton SO(20} text-004 us er- carmand germ.
at se lection -s cree n. at us er- COllll'.and. cas e sy- ucOlllll. when ' engl'. /. -~
-J ~"
~ .~
656
••..••....... --.-.. -
~
.. --
-----.
"mo. EM,I DIAS AB." . lang·e nglis h • ' Y'. when 'genii' .
1ang·german • 'Y'. endcase ,
Nesse exemplo, voce pede verificar qual dos dois boroes foi pressicnado pelo usuario utilizando urna instru cio case (veja a Figu ra 21.1). Quando 0 usu drio aciona 0 evento at user- ccrmand, 0 campo sY-UCOIllTl armazen a 0 no me unico de quatr o byt es do item que 0 usuario selecionou. D essa manei rs, voce pede codificardiversas validaljoes de dados au comandos de entrada do usuario com base na combinac ic de dad os inseridos enos irens, nesse caso os botoes, selecion ados pelo usuario. Fig urA 21 1
Umo jmpreu60
dos
botOes.
D~ 'UillS D< SRf\.iD
Valida c;a o de dodos utilizando chaves 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 pcde-se dizer, define m esses relacionamentos entre rmiltiplas tab elas. As funljoes qu e as chaves estran geiras executam incluem fomecim ento de dados de ajuda e criacac de ob jetos de diciondrio, mas essa funljao que vo ce focalizara estara na area de valida~ao de clado s. Afinal de comas} 3. m anut enlj.ao de integridade de dados eurn do s principais objetivos quando se definem telas de seleliio e a utilizacic mais importante des chaves estran geiras. 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 ent rada. Iss o eco mo fazer urn vinculo entr e duas tabelas. Uma tabela, FORKEYl} poder ser entendida com o a tabeIa de chave estrangeira (ou dependente), 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 Voce pode tc rnbe m crior ate cinco bctces no ba rre de ferromentos Application. Esses bat6es no barra de ferromentos Selection Screen 50 0 ossociados a teclos de func;oo espedficas e 500 limitod os a teclas de fum; ao de 1 a 5.
serio urn fator ao se validarem valores aceitaveis para entradas no campo de chave estrangeira. Certos campos sao marca dos como genericos nesse caso e assim ignora dos peIa siste ma na valida~ao.
• Utilizer urna ch~'Ue estrangeira constants. A fim de a entrada de campo ser vdlida, 0 valor deve co rresponder ao cia constance na tabela de verificacio.
NOYO.... ltiM:O "
Agora que vod op rendeu um pouco sabre vcldccec de dodos utilizondo 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 estrangeiros. Umo chave estronge iro significo um ou mois compos que representom a cbove prim6rio de urna segundo to belo.
657
• Criar uma atribuirao campo a campo. Essa e a mais complete das tres escolhas . Cada camp o de chave prim:iria na tabela de verificacao corresponde a urn campo na tabela de chave estrangeira e todos os campos-chave sao endc utilizado s para determiner entradas validas na tabela de chave estrangeira.
1,
...
658
~ ~ -~
!I • • • • •
•
••• I
•• • • •• •• • •
........... . . . -""'D~ 2UElAS DE SElf\.lD I
APmnA EM 21 DIAS ASAP"
Basicamente, 0 modo como uma chave estrangeira £Unciona se parcee com uma instru~ao select em cpc sicac a ube la de verificacac d o campo com a chave esrrangeira, Mais especificamente, quand o urn campo de ve rifi ca.~o de chave esrrangeira e preenchido, a insuur;ao select que foi gerada pelo sistema
daSAP)quandodefiniua chaveesrrangeira, eenviada peloprograma.Seatabela . retorna um valor dessa selecac, a entrad a sera vdida. Se localizado, a entrada de campo se torna invalids.
0
registro nao for
o c6digo a seguirmostra a sintaxe para uma instrucao sel ect geradapelo
campo de entrada contem urn valor especffico no campo chave cia tabela de cia insrruca o se l ect , o campo constante e verificado em conrraposicao ao campo de ch ave primdria que contem 0 valor fixe. verifica~ao citada . Na consulu
(Dj;..
sistema: set ect
11
from table 1 where table 1-exam! • f lc examl and table).exam2 • fk::exarn2 .
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 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 tk_examl e fk_exam2 como chaves.
Uma COISO de q ue vod deve se lembror 0 0 cnor relodcncmentcs de chcve estm nge irc e a cordinolidade . A card ino lidode de umo chc ve estrcnge iro, junto com seu tipo, ereferida como os otributos sern6nticos do chove estrcnqelrc. Coda cordinalidode de umo chove estrongeira dessos entradas e op d onal. Entretonto, a cordinolidade ndo deve ser supervisionodo, porque a entrada e boo prefico e tomo -se necess6rio qua ndo voce quisercriar certos tipos de og regodos como visvcllzccoes de c judc , por exernplo.
NOVO ....
e
Cordinolidode umo descrtcec do relodonamento entre um a u mois elementos de dodos para um a u mo is elementos de dodos . Se ume chove estra ngeira vinculo duos tobelos que foram definidos, a registro do to belo de chove estrongeira se 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 do outro tobe lo e 0 tobelo de verifica rydo.
mo "
o relacionamento s6 exine se os campos de chave estrangeira forem do rnesmo tip o de dado e comprimento que as campos de chave p rim m a correspondentes. Urna v erifica~ao - au tabela - pai e referenciada pela pr6pria chave est rangeira. Esta e normalmente urna u bela de valoT) mas tam bem pode cons istir em urn subconjuDta do conteudo de uma tabela de valor. Uma tabela de valor governa as valores validos que sao atribu i'dos ao dominio do elemento de dados . Em alguns casos, uma chave estrangeira constante pod e ad aptar~se melhor as suas necessidades. Esse e 0 caso quando toda s as ent radas validas no
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 desenvolvimento com as letrcs Z a u Y. Se voc! cr ier todos seus objetos com nomes q ue comecem com umc desscs duo s letros, 'lac! se certificor6de neo ter nenhum prob lema co m co nflitos de nome quan do otuo lizor seu sistema SAP.
Yolidoc;a o de dodos utilizondo motchcodes KaYO .... TaMO r
Outro ma neirc Util de manter a integridode de dodos dura nte 0 entrada do 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 todos os cam pos-chove nCo sao necess6rios, mas diferem dos Indices no senfido de que as mptchcod es podem conter mois de umo tcbelc no intervolo de se lecec .
Veja comcele funciona: primeiro urn objeto match code e definid o com as tabelas secundarias e prim frias pertinenres e campo s significativos designados. Ess e objeto enno identifica tcdos os pcssfveis caminhos para .os registros de dadcs exigidos . Em seguida, os ID s de matchcode sao criad os 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 matchcode. Pelo menos urn ill deve ser declarad o para cada objeto matchcode. Os ·ohjetos matchcode sao armaze nados como urn pool de ube1as, que auto~ maticamente e gerado para cada ID de matchcod e que voce declara. Um pool de dodos e uma tabe lo l6g ico de pool que e utilizodo pelo SAP pore 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 tobe lo do SAP.
NOYO ....
mMOr
Urn matcbcode pode ser configurad o (assembled) de doi, modos diferentes:
• Fisicamente. N essa configura~aoJ os dados sao armazenados em urna tabela separada no sistema SAP. Os tipos de atualiza~ao A, P eS sio rnantidos em tabelas ffsicas. • Logicamente. Essa op~ao configura dados de matchcode temp oraria~ mente durante 0 acesso ao matchcode. Esse acesso ~ gerenciado por
659
..
660
~.
. .. . . . . . - - - - - D~ 2J,1HASDE SELE\lO
'PREHO' EM21 OIAS "AP"
5. 0 pr6ximo passo no processo de cria~ao eativar 0 obje to matchcode. status do objeto New e Saved (veja a Figura 21.6).
uma visualizaeio do banco de dados. Nesse casa, a metoda logicce 0 mes mo que
0
arm azena mento transparence.
1550
o
inclu i apenas tipos
de atualizacao I e K. Fi g u r A 2 1
2
A tela iniciol do Dote Dictiona ry.
Figura 21 3
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 0Plii o Mat chcode e pression e 0 bon e Create. 2. Digite 0 texto descri tivo , quando for inserir sua tabela primdria na 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 pressionando 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.
e
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 (veja a Figura21.7). Parafazer isso, dS: urn clique no batao Matchcode IDs.
Figura
21
4
A tela Creo~ Obied
CatalogEntry.
路"""",~<~;''';'i'.JI_,:=: .'J:- -'''路''' L.ol;
.
;r.."
661
~~
••••••••
662
~.II
•••••••• I
APREMDA EM I I DI AS Am"
D1A IU,USDESEll\lD I 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
Os otributos de matchcodeanles do
DO
bo tao Yes.
Figu rA 21 8
Qtivo¢o.
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.
I ·
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 clique na seta verde .
663
A •• -a 664
.A"'~ I...I~ • • • • • • • • • • • • •
• • •
. - - • -- 01. 2UnAS DE sa£(.lO
.PRENO. EM 21 01.1 ASAP/. Figura 21 10
Figurg 21 1 2
Umo listo ele cc essc
A caixo de di6/09o Maintenance
Motchcode.
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 novo objeto esta pronto para utilizar (veja a Figura 21.13).
F igurp 2 1 J 1
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
que 0 valor de 8888 (veja a Figura 21.12). Quando terminar, de urn clique em Save e na seta verde para voltar.
A subtelo Index noo precise ser man tido, porque essas c:eraderfsticos sao meromente para fins de documenta~oo no versec atua l do sistema SAP. Simplesmente debe esse lacuna e ignore 0 a viso subseqOente que cpcrece no log de otiva¢o do seu ob jeto.
665
666
I
D~ 2UElAS DE sElf\.iD
APREHDI EM21 DIAS I 'I P/.
N esses 12 passos Hceis , voce criou urn matchcode qu e ago ra pede utilizar para m an ter a integridade dos dados, Vace aprendeu como as cbaves prim arias ajudam a verificar possiveis valores de tabelas vinculadas e 0 conceito de urn pool de campos de dados. Lembre-se, a m aneira com o a s dad os de m aechco de sao organiz ados varia de acordo com que tipo de arualizacao foi selecionado
as relot6rios que tAm logical Database anexodos a eles s60 otribuldos
a telas de selecoc pre-projetodos. Esses crttenos de selecec podem ser modificodos para melber se odoptorem as sues necessidades. as relot6rios que ndc tlverem as telos predefinidos devem ser rncnfidoa pelo programador do relat6rio. Essas interfaces do usucrlc personali · zodos podem ossumir qualquerforma e combinerquoisq uere lementos que voce, 0 programodor, quiser.
durante a crialJao inicial. Eis uma descricio de cada urn desses cinco ripos: •
1- Organizado pelo banco de dados arribufdo.
•
5-
Organizado pela inte rface do banco de dados.
• A - Aut o-o rganizado pelo pro grarna de sistema SAPM ACO. •
P-
•
K - Tambem organizado por urn pro gram a aplicativo.
Utilizando instrw;;6es sel ecti on- scr een NOVB'" as elementos de tete de seeceo podem ser combinadas em unidades cceslvos lHW ~ chomodas bleeos. Esses blocos 16gicos s60, em essendo, um recursocosmetico 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 seleceo mois f6ceis de entender e ufillzor.
Organizado por urn programa aplicarivo.
Sintaxe para utilizar urn matcbcode
!:!! Z
A seguir esta a sintaxe para utilizar matchc od es para valid acso de entrada de parameero de tela de selecso:
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.
In
T
Esse exemplo utilize 0 exame de ob jeto m atchcode, que ja foi definido 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 necessaries para manter a integridade da entrada de usu ario.
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 selection-screen begin of block bl ockO with f rame title text-DOO .
-
S In
T INilll!~
Alem do instruc;co blo ck, os telos de seleccc podem ser personolizodas utilizondo elementos de formotcl;co como os seguintesinstrvcces sel ect i on-
screen:
Eormatando telas de sele<;Cio A gora que voce explorou algumas ferramentas para validar clados de entrada no ABAP /4, vamos dedicar algum temp o para aprender mais sobre com o projetar formatos efetivos de tela de selecjo. Ao definir telas de entrada par a utilizacao na informacdo de dados, vari e s elem entos de selecao podem ser combinados para manter a integrid ade d os dad os e ainda cont in uarem faceis de se utilizer. Esses elementos in c1uem campos de entrada padrac como 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 um desses individualmente e dara alguns exemplos de onde eles sao me lb e r util izados. Voce ted uma oportunidade para combine-los no Exercicio 1 no
final do capitulo.
• •
sel ection-scr een com:nent leliao. sel ect i on- screen uline -
C olo ca urn cornentario na tela
de se -
C oloca urn sublinhado na tela em uma
posi~ao especificada para urn comprimento especificado.
•
se l ec tion- screen posi ti on - U ma ferram enta muitc util qu e especifica urn come ntario para a pr 6ximo parametro de campo na t ela. E util par:a se lect i on- opt ion s assim como para parameters .
•
se1ecti on-sc reen begi n-of - l i ne e se l ecti on-screen end-e f- t i ne Todos os cam pos de entrada definido s entre essas du as instruce es sao colocados urn do lado do ou tre na mesma linha.
•
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.
667
~ ~_A & .I _A _ _A .~ 668
.
••• • •
-- -- -
APIEHDA EM 21 DIAl A1AP" Figura
Parametres de t ela de sele<;60
21
14
A tela inidol
A instrU~o parameter nas telae d e selecac cria uma esrrurura de dados no 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.
Domains.
Um domlnio descreve a s propriedodes dos compos de umo tobe lo. He define lntervolc de vclo res velidos de dodos pore urn compo e caraderisticos de compo especfficos.
NOVO
IItrr...
mWO ,.
0
Os dominios det ermtncm otributos como tipo de compo, comprimento e posslveis relocionomentos de chcve estrange ira. A modifico ~oo de um dominio outomoticomente o lterar6 as otributos detodos os elementos 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.
Figura 21 15
A tela Domains
Display.
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 seguintes: •
lower case - C om isso inclufdc na instrucio de selecao, 0 valor em letras min usculas inserido no c~po de entrada nao e automaticamente convertidc para letras maiasculas, ao contrario do que aeontece para to dos campos de entrada no ABAP /4 em tempo de execucao.
• obl igatory - Prolbe campos de entrada em branco. •
defaul t -
Mantem urn valor padrao inicial para
0
parametro.
Os elemen tos de teste devem ser montidos pa ra elementos de tela como Para meters a fim de oferecer a o usu6rio umo boo explicac;o o do 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 670
..
]I • • • • • - • • •- • • • • •
•
•
-
•
•
-
-
-
-
--- - - --
-
DIA 2UEUS DE sru\iO
I "RENDA E. 11 DIAS ABAP/4
Par a manter elemen tos de texto em suas telas de selecao, escolha 0 caminh o de menu Gorc-e-Text Elements do ABAP/4 Editor. Voce pede 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!.
Figura 2 1 1 7
Mantendo sfmboJos
Mf' f ?!i ffl ii
Hie life
1:"'~[jf."tii*; lM'Or.JI."""""'",~iWJI.~.?"<t",,~:7'..,
Iii,.! ~~, :""4"'::. i-~~ "': ' ,:':';~.~ .;':"".""='.~
de fexto.
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 verificades 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 tela inicial
Z
Symbols.
Text
~
A seguir esta a sintaxe para urn pa.r.imetr o que aparec e co mo urn checkbox: parameters : te st parm as checkbox default ' X':
m
T
Nesse exemplo, 0 valor inicial e configurado como verific ado, ou configura 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 representada em urn intervale de valores, a instruqao sele ct- opt i ons e.um campo mais eficiente para se utilizar.
10YO ..
1Ib0 ,.
A instru ~o select-options gem umo tobelo inferno de setecec que ccnte m 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
671
672
APiENOA EM 21 DIAS " ../4
cria dais campos de ent rada qu e contem tanto urn campo FR()II com o um campo TO. em oposi~io a somente uma Unica entra da de campo.
A sintaxe para se l ect -o pt i OOS !!! A sintaxe para essa instrucio e aseguin te: ~
select-opt i ons ex sel l! for tabl e-fie ld default ' VAl UELOW ' to 'VALUEHI ' .
~
•
,
... A inslruc;oo select -optfo ns exlbe umo linho que normo lmente tem dots
r
ANALISE 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 progromo nao requer um compo TO perc entrada no linho de instruc;oo sel ec t - cpt t ons, 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
no exemploque cpcrece no fmc l destc set;60. Por enquonto, entretcnto, nos voltcremos pore umo dlscussdc sobre 0 formata do tobelo de seleccc interne sele ct -opt ; ons. Essa tabela intema e mantida com a seguinte form ate de campo, se 0 usuario clicar na seta para a direita do campo TO da sel ect -opt t ons. Clicando nessa seta. voce abre uma tela de entrada Multiple Selections que preenche a 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:
• SIGN - Pode significar INCLUSIVE, que e a padrao, au EXC LUSIVE, que p ode ser mar cada na jane la Complex Selections. • OPTION- P ede armazenar valores 6T (entre), CP (contem padrac), EQ (igual para) e GE (maior que au igual a). •
lOW -
Arrnazena a entrada de valor no cam po FROM.
•
HIGH -
Armazena a entrada de valor n o campo TO.
Esse multiple select- opt ionpocle ser excluldc ufilizcndo-se 0 d6usulo no-ext enst cn como dedorado onteriormente neste ccpuvlc.
BotPes de tela de
sele~ao
Alem do campo parameters e select-opti ons, a ins trucio de tela de sele~3.o radi obutton e uma excel enee maneira de manter a integridade dos dad os durante 0 processamento da en trada do usuario em tempo de execuclo. A fim de criar Parameters como bot oes de 0p c;30, voce deve declare -los urilizando a cliusula r-ed tcb ut tcn gro up.
A sintaxe pora urn radi obuttoo group
Ul
Z
~m
.
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 . parameter s: red ext radiobut to n group one, ra(exZ rad iobutton grouP. one, rad ex3 radiobutt on group one . selection - scree; end of bl ock rad_bl k•
- - - - -- - - - - -- 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 configu ralj3.o de varias opcces e devem center p elo menos do is bo toe s par
grupo. 56 um desses tres botoes de exemplo pode.ser selecionado em tempo de 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 exclusiva ao usudrio. Isso sed demonstrado mais ainda na se~o a seguir, em que hi urn exemplo de um a tela simples de selec;.ao que utiliza muitos elem entos de tela de selec;ao qJJ~ voce apren deu.
Exemplo de prog rama d e tela de sele~ao A seguir est a 0 c6digo de exemplo para uma tela d e selec;ao envolve a maioria dos elementos b:isicos: report YJACOBJX message-id Y6.
* Database Table Def in it i ons tabl es : mara. select ion-s creen skip 1. sel ect i on- s cr een begi n of bl ock blockO with f rame t it l e t ext -GOO. 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. selettion- streen end of line. set ect f on-sc reen end of blo ck blockO. * Sele ction par ameters selection- screen s ki p 2. sele ct ion-s creen begin of block blockl with f rame t 1tle t ext -OCI no in t erval s . selection-s cr een begin of line. parameter s : p ex! radi obutton group radl .sel ect i on- scr; en conment 5 (30) text-ext . selecti on- scr een end of li ne. par ameters: p_jdatel t ype d default sy-datum. . selecti on-sc reen skip 1.
~
_
674
L..IL...I
~
I
-
- - 0\l2HELlSDE Sllf\AD
APRE NDAEM 21 DIAl ABA f( ' selec tion-s cree n begin of line . par aJleters: p ex2 rad 1ob;Jtto n group ra dl se lection-sc reen COIlIIlent 5(30} t ext -exz . se tecttcn-sereen end of line. select -opt ions: s_jdate2 for mara- la eda. selection-screen skip 1. selection-screen begin of l1ne . par arr.et ers: p ex3 ra d1obutto n group radl. selection-screen carment 5(20) te xt -exa . sel ecti on-screen end of line. paramet ers : p jdat!3 li ke eere -teeda . selecti on-screen ski p 1. 51!1ecti on-screen begi n of 11ne. parameters : p ex4 rad1obutton group radl se l e c ti on-sc ~en conrnent 5(30) t ext-exa. selection-scree n end of line. sel ect-opt ions: 5 jdate4 for Illata-lieda no-extension no i nt ervals. se lecti on-screen end of block blockl. selecti on-screen skip . s el ect i on- screen begfn of bl ock bl ock2 with f rame t itl e t ext-CO2 no i nterval s . set ectt on-screen begin of line. parametl!!rs : P I!!x5 IS checkbox. se1ecti on-s c~l!!n Camll!nt 5(30) text-exs , sel ectt en- screen end of l tne, se tecttcn-s creen skip . setectt cn-s creen begin of l i ne. parameters: P ex6 as checkbox. selection .s creen corrrnent 5(30) tex t-exs. setecttca-screen end of tt ne. se lection-screen s kip. sel ecti on-s creen begi n of line. paramet ers: P ex] as checkbox. se le ction -screen corrment 5(30) te xt -e x7. s el ect i on-s creen end of l i ne. selection-screen end of block blo ck2. • AT sele ct i on-screen. AT se lec t i on-s creen. 1f ( P exl - 'X' ) and ( ( 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 not ( ( p j"datel - ' l EO?' ) or (p jd at el is initial message- tOp with ' We are now using Exampl e 1' . endif. 1f ( p_ex2 - ' X' ) and ( ( s_JdateZ · ' lEO? ' ) or ( s_Jdat e2 is 1nit141 message E017 with ' Sel ecti on Option using f or f i eld has no valu e'. else1f ( p ex2 .. 'X' ) and not { ( s JdateZ - ' l EO? ' ) or (s j dat eZ i s 1nitial message-1017 with ' And now ExarJllle Z i s selected'. endi f. if ( P ex3 - ' X' ) and ( ( pj date 3. ' IEQ1' ) or (p_Jdate3 t s init1al mess age EOI1 wi t h ' Parameter w/ l1 ke sta t ement field has no val ue' . elseif ( p_ex3 - ' X' ) and
».
»).
».
»).
».
not ( ( p_Jdat e3 - ' l E01' ) or (p_Jd at e3 i s init ial JIlessagl!! 1017 with ' We are now usi ng Ex~le 3'. endt f , i f ( P ex4 - ' X' ) and ( ( s jdate4 - 'lE01' ) or ( s Jdate4 is initial mess age E017 with ' Sel ect io n- Opt i on wi th no in t erval has no valu e' . ets et f ( p ex4 • ' X' ) and not ( ( sj dat e4 - 'lEO?' ) or ( s_Jdat e4 15 i nitial IM!!ssage J017 with 'We are now usin g Ex~ le 4'. endi f . . 1f p_ex5 - · X'. per f onn getJlrice _data . else . message 1017 with 'No Pri cing Data sel ect ed ' .• endi f. if p ex6 - ' X' . perfortll get _cost_d ata. else . message 1017 with '/'(0 Costing Dat a selected ' : endif . 1f p ex7 - ' X'. perfonn getJevenue_data . else . mes sage 1017 with ' No Revenue Data selected' . end1f. form get _cost_data.
».
».
endf ol'1ll . fonn get Jevenue_qata . endfonn. fonn getJlr1ce_dat a. endfonn.
... Com o os botoes de op¢o soc mutua me nte exclusives, e uma bo o Idelc mente-los toclos no mesmo bloco de processomento no tela de selec cc. Note, no Figure 21 .18 , com o coda g rupo de ele mentos de compo foi isolodo pore canter 56 as compos que s60 relevontes 0 esse blocc de decislio . .
mUSE,.
Como voce pede ver na Figura 21.19, e rnais dificil seguir os campos de dados exigidos quando eles n j .c esno agrupados em blocos de tela de selecso. Os pardmetros que sao definid os com a clausula 1i ke aparecerao com urna seta para baixo , na qual voce pede dar urn cliqu e para ver uma janela com uma Iista des valores validos (veja a Figura 21.20). Ago ra, podemos dar um clique em cosso batao de selecao. (Veja a Figura 21.21). Ele pr eencher s 0 camp o daque le parametro com 0 valor que voce river selecionado. Isso pod e ser mui to uti! para ajudar a ususrio a se [amiliarizar mais com as exigeccias de sele~ao que voce impes. Ao criar urn sel ect-option sem utilizar a c1iusula no- ext ension, voce disp6e da capacidade de inserir mdlriplas sele~6es au urn intervalo delas. Para
675
~.~~.~ 676
APRE NOAEM21 OIAS AUP/4
O.2UWSDÂŁ SBfI,io
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
F igura 21 18
~
pore baixo.
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.
677
•• ww 678
ww
------- - D~ , \,TILlS DE " l£IlD I
APIEHDA EM ' 1 DIAl AB AP/4
Nesse ponte, voce pede inseri r todos as seus criterios de sele~ao e dar urn clique no bon e Copy (veja a Figura 21.23). 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 ectoptions, 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). "
679
Flgur9 21 24
A tela $@o/edion com o mo verdeativodo.
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
Insiro seus exig~ncias
de sele¢o.
Figura 21 2 5
A tela Selection sern 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
D~ 2UEUS DE SElf(.lD
APREHDA EM 21 DIAl ABAPH FigurQ 21 26
select -option comvalor podr6o.
Esse exemplo mo stra muitos element os de telas de SeICIi2.0 combinada s em urn forma te simp les e eficiente . Examin e ocodigc que criou essa tela de
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. Projete sues te las de selecec o justondo seus requisitos de entrcdo de dodos de uma maneiro que sejo
Nco se esqvecc de ind uir bem-eloborodos retinas de volidoc;60 de dodos que vtiJizem as co pocidodes de evento do ABM'/ 4.
f6cil de ser
entendido pelo vsucric.
Como mencio nado nesse ultimo exemplo, e boa pratica utilizar instrU~5es de mensagem como avisos de valida~o de entrada em tempo de execut;ao. Figura 21 27 M ensogem pop-u p
vfjlizoda pore vofjdo¢ o de dodos.
Fig ura
21 28
h mensogens de erro no borre de status.
Utilizando a
instru~cSo
message
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 tern diversos efeitos no resultad o do programa.
• S-
Success, essa mensagem seguinte.
e exibida
na linha de status da tela
• A - Abend, a tranSa'iaO atual e interrompida e uma mensagem exibida ate que 0 usuario confirme-a. • E - Error,
0
e
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.
681
~
.... .... . .. . . ... .. . . ~.
682
D~ , I, 1WS DE s<lE\-iD
APREHDA EM 21 DIAl AB AP/4
Sintaxe para a instrUl;tio me s sage -i d
!:!!
A sin taxe para uma instrucio message路 id em UJ'J} relat6rio e a seguinte:
~
re port ",,,,1. f tne-ccunt 65 Itn e-st ze 13' .....,.-id rs .
FigurA
21
. ~.
683
30
A tela Oth~r Development Ob;eds.
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
I
Individual Messages clando urn clique duplo no numero de ill cia niensagem 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 (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 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 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
T~Ia jnicial ObjKt Browser.
F igurA 2 1 3 1 A tela Mointcin M essage Doss.
;...........~:.-~~"'"""_M~~~_~I:0~ ~ ......
I
I I I
I
II ,I
I I
~~
684
I I I • I I J,.-:I-. I I I I - I I I .I I • •
. ..• .. ... .. .......... ~
"FIEND. Ell 21 DIU ABA PI4
D~
Figura 21 3 2
,"'".15
Of SRI\AD
~
685
• As mensagens podem ser utilizadas para comunicar 0 st atus do programa e a validade dos dados inseri dos, bern como para inreragir com o usudric de uma maneira que permira processar os dados mais eficientemente.
A tela Moinloin
Individual Messages.
• 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
ddinida?
--'----------'-
IFasa
Lembre-se de utili zer mensog ens de uma mcneiro que ajude a u$u6rio a Iraerir as
Nao se esquecc de especificor a message -id ccrretc no Inklc de seu
dodos de modo mois eficiente. FOl;O born usa dos classes existentes de mens ogem de sistema a ntes de crier as
rel0t6rio.
suos pr6prias.
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.
o
E. pcssfvel inserir vanaveis como mensagens de erro de sist ema au
o Resumo • 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 se1ecti on-screen e i n; t i al i zati on, assim como 0 evento at user-conmand, para vaLidarentrada do usuaeio utiliz.ando urn namero de tecnicas. • As chaves estrangeiras podem set utiliz.adas para verificar a integridade de dados de entrada urilizando os campos de chave primaria de uma tabela de verificaclo.
• Os matchcodes u tilizam dados de pccl logicc para validar entrada de usuaric baseados em criterios especificados de sele~ao quando utilizados em conjuncac com pardmetros de tela de selecac e opcoes de sele~ao.
o que acontece se u rn campo de chave primdria eadic ionadc a uma tabela de verifica~o depois que uma chave estrangeira foi
c6digo s de retorno em uma mensagem de texta? 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 a mensagem passan do pela variavel, de maneira semelhaaee a uma instrucdo perform.
Workshop o
Workshop oferece duas maneiras de voce verific ar 0 que aprendeu oeste capitulo. A se~ao Teste oferece pergunus para ajudar a so lidificar seu entendimento do ccnteddc abo rdado e a se~ao Exercfcio permite que voc e pratique 0 que aprendeu. Voce pede encontrar as respostas as perguntas do Teste e aos exerclcios no Apendice B, "Respostas is perguntas e aos exercfcios".
Teste 1. Como os dais tipos de matchcode trabalham juntos com armazenamento de dados de matchcode?
rela~ao ao
-,
................ -. --. . . ----. - -. ---- ~
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 pr int
0
spool de Impressao utilizan do new-pase
• familiarizou-se com as evenros in iti al izat i on, start -at-sel 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: â&#x20AC;˘ Relat6rios
â&#x20AC;˘ 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
l
de program', Tabel a A.l Corocteres inv6lidos para names de progromo Cara ctere
Descri~60
Ponto Vlrgulo
r,
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 . 690
I
•• • •
--
i
.
'PRE'" E. 21 DIAS ABAP/4
Conyen..6es para atribu i..60 de nomes a relot6 rios as n om es de relato rio d e clien re segue a convencio •
Yaxn:xxx au Zcccecce, onde:
N a mes de pragrarna de dialogo de c1iente segu e a convencfo
0 primeiro cara crere deve sec urn Yau Z.
0 compr:imento maximo de programa
•
e 10.
o segundo caractere ea fonna curta para a irea de aplicativo (vejaTabe1a
tern duas formas comumente utilizadas, a forma curta e a longa. H i tambem urn c6digo utilizad o sa mente para nomes 16gicos de banco de dados. Esses
.
Ccntobllldcde finance ira (Finan cial Accounting) Ge renciome nto de materia is (Materia ls Management)
curta
FI MM
2
Vendos e Distribui¢o (Sales a nd Distribution)
SO
Plcnejcmentc de produt;oo e centrole (Produdian Plonning a nd Ccntrcf
PP
Tesou roria (Trea sury)
TR
Ge renciame nta de qua lidade (Q ua~jty Mona gement)
OM
Sistema de proietc {Proiect System)
PS PM WM
Monutene;oo de planla (Plant Ma intenance) Gerenciamento de estoqve ('Na rehouse Management)
Fonna
Forma longo
1
•
e
O s dlcimos tres caract eres podern ser qu aisquer caracteres validos.
Programas escrieos p a r SAP devem seguir a convencao SAPMaxxx, onde a a forma curta para uma area de aplicat ivo .
Intervalos d e nomes de c1ientes
Forma LDB F M
mesm o quiser criar urn ob jero de desenvolvimentc, deve cris-lc no interualo de nom e de cliente. As convencces para intervalos d e Domes de clientes sao mostradas na Tabela A.3. Tabela A.3 Intervclos de nomes de cllen te s pora todos o s o bjetos de desenvolvimento do R/3
3 4
npo de objeto
5 6
ABAP/4 Query Q uery
Appe nd Structure
10
Y* Z·
10
YY·ZZ·
i,
8
Appen d Structures
11
Contabilidade de ativa (.Asset Accounting)
M
Control ling 12
Atividod es de processo (Process Industries)
PI 1M
13
Area Menus
14
Avthorizotion s
LO IN
21
CA
23
Desenvclvlmento Intemociona l (Internationa l
22
Development) Funcionalidade ctroves de op licotivo (C ross Application Functionality)
Object
4
Y· or Z·
Sub-Object
10
Y· o r Z·
4
Y' Z·
Avthorization
12
ony
Authorization Closs
4
Authorization G roup
30 10
y' Z· y' Zy' Z· y. Z'
Authorization O bject CATT Flows
"
I
Application l ag s
Co ntrole (CO)
loglstico (Ge raij {logistics (Ge ne ra l))
I I
Append Structure Fields
3
10
Notas
i
I I
4
Fundion Gro up
HR
ConYen~ao
d e atribui'ioo de nome
i
2
7
Recursos hvmcncs (Humon Resources)
G erenciamento de investimento (Investment Manogement)
Comp rim.
Max.
Functional Area
9
SAPM.
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 Area de a plica~ao
O s p rimeircs quatro caracteres devem ser
• 0 quinto caractere deve ser u rn Y ou Z.
A.2). Por exemplo, urn relat 6rio de cliente para a Tesouraria seguiria a conv en c;ao Z5.:a:x.o:x, enquanto u rn relat 6 rio logfstico seria nomeado Z21xxxxx. C ada area de aplicati vo pede ser representada po rum c6digo. Cada c6digo
c6d.igos.sao mostrados ~a T abela A.2.
SAPMYxxx au
SAPM2=, oDde:
• 0 segundo caractere represents a area de aplicativo. •
Convencoes para otribuicco de nomes a programas de di61ogo .
8
,
I
I
NOo permitido no 2Q pos it;60
!
I
.I • 692
~
•
~I-I
_I . - ..-. . . .- .-... - • • _ ~• • _ --..-_
--- - -- - - - - - - - -
" PIENDA EM 21 DIAS ABAPH
APt,DIU A, CO'VE'IOB 0' ATRIBUI>\ODE 'OM'
Tabela A.3 Ccnft nucceo
Tabela A..3 Conti nuot;oo
Tipo de eblete
Comprim. M6x.
Conven!roo de atribul!rCio de nome
C hange Docu ment Objects
10
Codepoges
4
Y· or Z· 9'
Notas
Data Elements Dot e Element
10
Data Elemenf Supplement
4
y. Z·
4
9'
Se 0 SAP criou 0 ele mente de dodos
Data Models Doto Model Enfity
10 10
Develo pment Closses
4
DialogModull!s
30
y. zy. t: y. Z· Y· ZtRP_*
M6x.
ConvenCjQO de atribuiCjQo de nome
Field Exit Func Module
30
FIELD_EXIT.:
User Exit Func Module
30 30
Conversion Exits Se 0 diente crlou o elemente de
"dodos
SAP Supplement
Tip o de ob (eto
Comprim.
GUI Status
8
IDOCs Segment Type Basis IDOC Type Enhancement Type IDOC Type Includes (DDlq Customizing Includes
8 8 8
FIELD_EXIT_' y EXIT"'pppppppp_nnn CONVERSION_EXIT_""""JNPUT CONVERSIO N_EXIT_""",,_OUTPUT
7
10
Apenas vtilizado em uma tobela criado pelo SAP
RHJNFOTYP_9'
Dccurre ntction Modules
General,Text (TX) Test Run Description
Mo;n Chopter(BOOK) Chapter of lMG Chcpter (CHAP)
Chopter Note (NOTE) Release Information
Structure O nline Text Domains
Includes (Programo)
28 20 20 20 20 26 20 12 28 10
y. Z·
y. zy' Z' y. Z· y. t :
y. z· y. z:
Enhancement Fund ion
Menu Exit
8 8
y. Z·
4
y' Z'
4
Y· z· ZffffUnn
Info Types
4
lock Object
10
logical Data bases
3
9' EY. EZ· Y· o Z·o
2 2 10
y. Z· y. z: y. z·
logisticsInfoSystem Event Unit Maint. & Transport Obje cts Motehcodes Matchcode 10 Motchcode Objed
+'
1
0-9
4
y.
z:
2 3
y.
z:
Messoges
Function Ubrary
z:
4
y.
User Exit Function Grp
4
XZ'
Function Module
30
Functio n Group
8 8
z:
y. Z·
Codes
Functi on Code
Include Include for User Exits (m6dulos de fun¢o)
y. Z·
y.
Enha nce me nts Enhancement Project
Nota s
Y_· Z_·
Message Classes Message Numbers Module Pools
ffH
= func group
Q = 6reo do op licotivo (forma LOB, vejo Tobelc A.2)
693
-.•.. • • 694
II!' !!!! II!',
-- - - - - - - - -
• • •• • • • •
-
-
-
~
AP ~NOICE A; COHVENtOES DE ATRIBUJ9,O DE NOME
" 'REHOA EM 21 OIAS AUPI4
Dialog Module Pools Screen Module Pools Info Type Module Pools Subroutine Module Pools Update PgmModule Pools Number Range Objects Parameter Ids
Comprim.
Conven~ao
Max.
de atribuiCjoo de nome
8 8 8 8 8
SAPDY' SAPDZ' SAPMY' SAPMZ' MP9' SAPFY' SAPFZ' SAPUY' SAPUZ'
10 3
Printer Ma cro s
Relation Ids R/3 Analyzer Identifier
2 20
Reports
y. zy. z·
Report Cat egory
4
y. z: y. z-
14 14 14
X· CUS&· Y' Z'
4 3 7
8
y. zy. z· y. t: y. Z·
4
9'
>0
16 8 8 8
Y·
z-
y. z· Y· z· Y· Z·
Comprim.
Max. 8 8 8
10 2
ConvenCjQo
v z: 9' 9'
y. z· y" Z·
10
3 10
Notos
de atribu lCjao de nome
Emestruturcs appe nd: YY- U·
y. z·
apenos
y. z·
Cluster Nome
T9'
PoolNome
1a corodere ndc 0-9
Pora tobelcs de pool no pool ATAB paro tipos de informc¢o de cllente
P9' PA9' PB9' PS9' HRT9' HRP9' HRl9'
Tobie Pool Nome Table Cluster Name Titlebcrs Tronsad ion Codes Type Group User Profiles
10
10 3 4
I
II I'
y. t: y. z·
5
y. z· y. z·
12
c ny
Pare soido de telc pora progromos de di61ogo
Views View Cluster View Name
HelpView View Maintenance Data View Content Table Content Worlcflow O bjed Type
10 10 10
:I I' ,I I I
_ nee permitido
y. z· H_Y· H_Z· reservodo no TRESC reservoda no TRESC
10
Y' Z'
i
I,
na 211 pasiC;ao
do cllente
Spaol Layout Type Fonl Group Device Type Page Former
System Barcode Standard Task Stondard Roll Structure (DDIQ SYSlOG Message fO
Index Nome Trcnsporent, Pool,
1a carodere noo ~9 111 carod ere noo 0-9 1a ccrcctere noo 0-9 111 coroctere noo 0-9
8
Tipo d e obieto
Tables Field Nome
Y' Z' Y· Z· 9'"
8
12 16 4 32
Notas
y. z·
Report Nome
Report Variant Tronsportable, G labal Transportable, Local Not Tronsportable Report Writer Report Report G roup Library Standard Layout SAPScri pl Layout Set Farm Standard TextlD Standard Text Nome Style Screens
695
Tabela A.3 Contlnuocuo
Tabela A.3 Conftn uocoo Tipo de objeto
-
~ .- .- 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 dos , testes e exerclclos 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 de banco de dados.
0
servidor
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
•••••••
• • • • •
- -- - - - - -
- --
APEHDlCE 8. RESPOSTAS IsPER_ASDOS 1ISTES Emooos
APREH DA EM 21 DIAS Am"
rolagem con tern as valores das variweis para esse programa e 0 ponteiro atual do pr ograma. 10. Urn context e de usudrio e aloeado toda vez que urn usuario eferua lo gon, e desalocado quand o esre eferua 0 logoff. Ele comem as informacces sobre 0 usuario, co mo autorizacoes, con figura coes de perfil e endereco de TCP/JP. 11. 0 roll-out ocorre no fim de urn passo do dislcgo . Ele libera 0 pr ocesso de trabalho para prepara-lo para Dutra sclicieacso, de mo do que 0 pr ograms nao utilize a CPU enquanto espera pela entrada de usuario.
diferenca na safda para esse programa, especificandc ou Ilia as aspas. Entretantc, para evirar conversoes e uma boa prari ca de programacfo e toma 0 programa mais eficienre. 1 report zt z020l. 2 tables ztxlfbl. 3 select * from zt xlfb1 where bukrs >- '3000' 4 order by bukrs lifnr descending. 5wr i t e : / zt xl f bl- bukrs , ztxlfb1 -1ifnr. 6 endset ect , 7 If sy-sub rc <> O. B wri t e / ' no recor ds f ound' . 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. 2 ta bles ztxlfal. 3 se le ct * from. ztx l fal where lifnr l tke ' IA' . 4 write / ztxlfal·l1fnr. 5 endse 1ect , 6 if sy-subrc <> O. 7 wr1 t e / •no records found' . 8 endif.
N as figu ras 1.28 e 1.31, 0 primeir o cam po nie tern 0 ripe CLNT;ponanto, a tabela eindepe ndence de clien te. As instru\roes Open SQ Lopenrio em todas as linhas dentro dessas ta belas. Nas figuras 1.29 e 1.30, 0 primeiro c:unpo na tabela e do tipo CLNT; portanto. a tabela e dependence do clienee. As instrulioes Open SQL s6 operarao nas linhas que tem 0 mesmo numero de cIiente que seu ndmero de cliente de logon arual,
Die 2 , "Sew primeiro programe em ABAP/4" Respostes do teste 1. Al oca um a are a de tra b alho padra o para a tabela e da para acessc a tabela de ban co de dados do mesmo Dome.
0
programa
2. A area de trabalho de tab ela padrac ea area de mem6 ria alocada por uma insrrucac tabl es . Essaarea de mem6ria ternome smo nome e a mesma estrutura que a tabela ide nti ficada na instruci o ta bl es. A instru cj c sel ect utiliza-a par padrao se nao h ouver a clausula into.
3. N a area de tra balb o de tabela padrao. 4. P ara a mesma Iinha que a saida da instru~ao write anterior.
5. sy-subrc 6. sy-dbcnr 7. A linha 4 sera executada 30 vezes, uma vez para cada linha recuperada. 8. N enhuma vez. A linha 4 nao ser.i executada se a tab ela estiver vazia,
Respostos do e xerd cio de
programa~ao
1. Este relatorio exibe todos as nu meros e ccdigcs de emp resa do fabricante da ta bela ztx l fb l , on de a c6digo de empresa e maier que a u igual a 3000. N ote que bukrs e urn campo de caractere. Se voce DaO cclccsr 0 valor 5000 entre aspas simples, a sistema automaricamente a converted em caracrere paD a-comparacao. Nao hi nenhuma
..f: . .-
-
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 campo de .caractere no banco de dados. (Esse componamento e inteiramente explicado no capitulo sabre con vers oes.) 1 report ztz 0203. 2 table s zt xl fa l. 3 sel ect * f rom ztxlfal where ll f nr 4 wt-tte / ztx l fa l - 11f nr . 5 endsel ect.
>
'0000001050 '.
4. A ultima linha da said. sera no r ecords found, mesmo se as registros forem loc alizados . 0 problema esti na linha 6. 0 test e deve ser para igualdade, n'o desigualdade . 1 2 3 4 5 6 7 8
report ztz0204. tables zt xlfal. select - fl"Olllltx lfal where l ifnr wrf te / ztxlfal -l1fnr . endse\ ect . i f sy-dbcnt - O. wri te / 'no records found' . endif.
> 'ססOO0010 50'.
5. A instrucao write deve estar dentro do loop select . 1 r eport zt z0205. 2 tab les zt xlfal. 3 sel ect * f rom ztxlfa1 where lHnr 4 write / ztxlfal- lifnr .
>
' 0000001050' .
699
ri I
.......................Aua.....--.JII.-A-~ • • •700
. -• • • - • • • •
• •
•
•
•
• • - • •- . -• • • • • •
-
-
-
-
-
-
,P!!lOlU HBPOOAS IsPERGUHTAS DOS 1ISTI5 EElIRdoos
' PiE' O' EM2101' S " ""
Dia 3, "0 Data Dictionary,. Porte ) "
5 endse lect. 6 1f sy-subrc <> O.
7
write I no records found
8
end if.
I
I •
6. Veja 0 program. original , .atab ela zt xl f c3 ndo ~ utilizada: a d efini~o para eta pod e ser removida da linha 2. 0 into ztxl fal na linha 4 naa e necessaria , uma vez qu e zt xlfal e. a ,an a de trab alho padrao. As linhas 5 e 6 podem ser encadeadas juntas. A segunda exp ress sc que utiliza sy-dbcnt na linha 8 e redu ndante e po de ser re movida. A linha 12 nao precisa de uma area de trabalho explfcit a, enrao pode ser removida. Consequentemente, as linhas 13 e 14 devem ser alterada s para escrever ztxl fb l, e a linha 3 DaO e mais necessaria. As linhas 13 e 14 podem ser encadeadas junta s. 0 pro grama simplificado segue: 1 report ztz0206. 2 ta bl es: ztx lfa l . ztx lfb l. 3
4 S!1ect * f rom ztx lh l . 5 write : I ztx lfal- l1f nr, 6 ztx lfa l-namtl . 7 eedse 1ect • 8 i f sy-subrc <0 O. 9 wr;te I ' no records found in ztx l fa l ' . 10 endif . 11 uj t ne. 12 sele ct * from ztx lfbl. 13 write: I ztxl fbl- l1fnr . 14 ztx lfbl- bukrs . IS . eneselect • 16 11 sy-subrc <0 O. 17 write / ' no records found' . 18 end; f.
7. 0 erro de sintaxe e causado pela endsel ect na linh a 5. Ele deve ser removido. Vo ce tam bem pode corrigi r 0 erro de sintaxe removendo a palavra s i n91e cia in struqao se 1ect na linha 3. Enrr etant o, essa e uma solul;ao menos eficiente, uma vez que apenas uma linha sera lida. 0 operador de comparaclo na linha 3 tam bem esta incorreto. Ele deve ser . report zt zOZ07. tables ztx lfal. select sing le * fro m ztxlfal where lHnr • '0000001000'. wri t e I zt xlfal- lifn r . if sy-s uerc <0 O. write I 'no records found ' . endi f.
Respostos do teste 1. 0 do minic d.a a urn camp o suas caracterlsticas recnic as, como tipo de dado e comprimento.
2. 0 elemento de dados con tern um nome de dominio, r6tulos de campo para telas e listas, e a dccurnentacac de ajuda Fl. 3. Os dados de aplica tivo se refere m a da dos utilizados pelos aplicativos de R/3 co mo SD (Sales e Distribution ) ou MM (Materials Manag eme n t) . Hi dois tipos: dado s de transacio e dad os-mest res. Exemplos de dados de aplicativo sao ordens de compra (urn exemplo de da dos de rran sacao) ou as inform a~ 6e s de fabricante (urn exemplo de dadosmestres). H i tam bem clado s de sistema, como dad os de configuracio ou meradados de D D IC, alem de dados de aplicariv o. 4.
Nso, a posi~ao do ponto decimal e pane da descricao do campo. Ele esta co ntido no domlnio, nao arm azenadc com 0 valor.
S. SE 16, SE17, SM30 e SM3l. SE16 i mais comumente utilizado, e SE17 nao pode ser utilizado pa ra arualizar dados. 6. Uma tabel a transparente tern urn relacionamen to urn para urn com uma tabela no banc o de da dos. Tab elas de pool e de cluster tern relaciona mentos muitos para urn com tabelas de banco de dados.
Resposto do exerddo 1 Para essa solucao, veja a tabe la ztz l f al do sistema R/3.
Re sposto do exerdcio 2 Para ver a solucao para a tabel a .•. knal , veja a tabela zt zknal do siste ma R/3 . A solu r;ao para 0 reLat6rio e a seguin te: 1 2 3
4 5 6 7 8 9
10
report zt z0302. tables ztz knal. select ... from ztz knal. write: / ztaknet- kunnr , zt Zknal-namel , ztzknal-cityc , zt zknal-regi o, ztzknal-1andl. endsel ect . 1f sy- subrc <0 O. wrl te / ' No rows found' . endif .
-
701
-
-
~LA~.I_. _.I
I
I I I •••••••• • • • • • • • • • -••••• • • • • • • • • I ,
.&.PENDICE B: RESPOSTAS As PERGUNT.lS oos TESTES EEXERdclOS , 703 -;,- ---------------"'==::::..::=:.:.:::===~=~
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. 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 a est rut ura deve ser incluida. 3. Urna tabelade text o ofere ce descricoes para c6digos contidcs em uma tabela de verificacsc em multiplas linguagens. 4. mandt, spras, fl e f2. 5. Cada camp o de tip o CURR deve fazer referencia a urn campo de chave monetaria (tipo CUKY).
Respostos d o teste 1. N so. Voce njo pede "unir" urn Indice a uma insrrucac select. 0 otim izado r semp re escc lherd urn Indice em tempo de execuclo. 2. Sim, mas voce deve aplicar a um a tecla de modificacao da SAP para fazer isso. Pode ser feit o pelo ass. 0 Online Service System. 3. Sim, voce pode ut ilizar a ferramenta de analise de temp o de execucac para me dir a difere nca.
Re sposto do exerd cio 1
Resposto do exercfcio 1 Para a sc lucic desse exerctcio, visualize a tabela ztzt005 online do sistem a R/3.
Resposto do exerclcic.Z;
Dia 5. 110 D ata Dictiona ry . Part e 3"
_
Para a sclucso desse exercfcio, visualize a tabela online ztzt005s do sistema R/3. Nao se esqueca de comparar a cardin alidade e 0 cipo de campo de chave estrangeira do relacionamentc de chave estra ngeira com aqueles especificados online.
Resposto do exerdcio 3 Para a solucso desse exercfcio, visualize a tabela online zt zlfa l do sistem a R/3 . 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.
Resposto do exerdcio 4 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 estrang eira de cada relacionamen to com aqueles online.
Resposto do exerdcio 5 Par a a solucao desse exerclcio , visu alize as tab elas online ztzt005h e zt zt005g do sistema R/3. Nee se esqueca de comparar a cardinalidade e 0 ripe de campo de chave estrangeira de suas chaves est rangeiras com aqu eles on line.
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 .
Va para a transacao Data Di ctionary (c6digo de transacao SE12) e exibaastabelas. Examineas configuracoes tecnicas. A classe de dados qua nt o ao seguinte: MARA: APP LOdados-mestres, tabelas transparentes (veja a Figura 5.21) LFAI: APPLOdados-mestres, tabelas transpar entes (veja a Figura 5,22) KNA 1: APPLOdados -rne srres, tabelas transparentes (veja a Figura 5.23) A caregoria de tarnanho quanta ac seguinte: MARA: a.regist ros de dad os esperados: 57.000 a 4.600.000 (veja a Figura 05,21) 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 05.23) As figuras a seguir ajudam a explicar: 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 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 ser, por exemplo, uma reo rganizacao que toma-se nec essaria po rque 0 espaljo maximo a ser reservadc para a tabela foi ex cedido, devid o a caregoria de tamanho ma ntida.
I~
- • . • • .-. • .--."""". - -- - - 704
- ~ - - - .-"
'P~D1CE U ESPOSTAS ISPER.DNEM DOSTESTES EEXERdoos
'P REN D' EM 2101'S ,",PI'
1_. B'
h ~ ~ '~ '-l*w ."" llOo"i.· ~ "' ';''; '''' ·';; II
'
Ax
·....·~_·::i:irW-'-·.:
-H::I.t'JnO
- ".: :;': - ~'-"
~~....
.Id '"
-~"- "" .~ .......~
I
Dio 6. "0 Data Dictionary, Porte 4 " 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 cautelcsc 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.
705
L&
.......II!!!!!!!Iool
706
L
-.....,L~
•• • •-.-.-.-•••- .~
.lPEHDlCI B: RESPOSTAS As PERGUHTAS DOS nsns EEX£RClCIOS
APiE NDA EM 11 DIU AU r /4
3. A definicac esd correta. 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 maitisculas.
5. A definic;ao correta e ' - 9. 9' . Lite rais numericos que con tem d ecim ais devem sec envolvidos em aspas simples e 0 sell sinal deve predo minar.
6. Valo res de POntO flutuante ni o pode m exceder 1£+308.
7. Hnio eurn caractere hexadecimalvdlido. Os caracteres vdlidos sao A-F e 0-9. 8. A defiaicic esta correta. V ma aspa simpl es e representada, Se escrita, a saida se ria
.,. _
I.
9. A defwc;ao esti correta. V ma aspa dupla denrrc de aspas simples e representada. Se escrita, a saida seria
I . I •
As sclccoes sao as seguintes:
1. A defini,:;io correta e dat a st_f1(S)type c. Urn hife o Dio deve aparecer na definiljio de urn nome de varidvel. a caractere sublinhado deve ser utilizado no lugar dele. 2. A defini ~o correta
edata
fl type c. a tipo de dado para. cara crere
eC. 3. A definiliio correta e data f l (20) t ype c. N ac deve haver urn espalio 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 comprimentc nso epermicido com 0 tipo 1.A definic;ao co rreta ~ data al t ype t •
5. A definict o corr eta e date
cent type p decimals 1 val ue ' 55. 51 • 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 con tern urn decim al, mas nia esd. colocado entre aspas . per
6. A definiljao escl correta. fl pede armazenar tres digit os porque (L'Z)-1 • (Z'Z ) -1 • 3.
Resposta do exercicio 1 re port ztz0707. par amet er s: p dat e li ke sy- dat um def ault sy-derem, p-fie ldl ty pe c. chckboxl as checkbox. chckbox2 as checkbox. radbutl radt obut t on group 91 dl!faul t ' X', radbut2 radt obut t on group g1.
Dio 8 . "Definindo dodos no ABAP/4.. Parte 2" Resposta s do teste 1. A primeira constante predefinida e SPACE e 0 format e literal equivalen re e I " ,
2. Os tipos de insrruco es que podem ser u tilizados sac dados e tipo de estrutura. O s definidos pelo usudrio sao definid os no Data Dictionary para facilitar a manu tencao e aju d ar a reduzir redundan cia.
Re sposta do exercicio 1 t ypes : dollar (16) p01nt(16)
t ype p deci mal s 2, type p decimals O.
"pontes de carUo de
c r~ d i
to
dat a: begi n of usd amount. hotel type dollar, rent car type dollar , plane t ype doll ar , food t ype dol la r . end of usd_amount . begt n of arnex pt , hotel - type p decimals 2, rent _car type point . plane type point. food type poi nt, end of arnex_pt.
Re sposta do exerdcio 2 Out put: 1 3 4 5 9 8 7 6
Diq 9 , "Atribuil,;6es, convers6es e c6 Icu l...o"'sL"
_
Re spo sta s do teste 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. 2. Os operadores e operan dos devem ser separados por espacos para que as variaveis possam ser compu tad as.
Respostg do exerdcio 1 1.
sperz
2.
konzs
3. fdpos
707
..... .... -
!
..-.-.-.... ...... •••-.-,
-.-.-. -. -
-
lPENDla B: RESPOSTAS is PERGUNTAS DOS rum EEXERdoos
"PREMOA EM21 DIAS ABAP/.
4.
-~~
709
Dia 11. "Ta be la s inte rn a s"
msgid
5 . matkl As duas coisas erradas no programa sio a declaracac de ubela de ztxt 005t e as aspas simples an tes cia variavel, 1and!. Declare a. tabela ztxt005t e remova as asp as simples antes cia variav el 1andl .
Dia la, "lnstruC;6es de co ntro le comuns" Respostos do teste 1. A resp osta ea seguinte: case vi . write 'The numbl!!r is five . ". wr; t e ' The number 15 ten.'. when ot hers. wri te 'The number 15 not f i ve or t en. ". endcese. when 5.
when 10.
2. Os operado res de strin g sao CP [ccntem padrao] e NP (nao contem padrao). 3. As [ r e S instrucees de contrale de p rcgrama SiD exit, continue e check:
• A instrur;io ex; t eutilizada para prevenir que mais p rocessament OS ocorram nas instruljoes loop, select, do e while e nas subretinas 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.
Resp ostos do teste 1. N a realidade, seu consultor de Basis configura urn limite para a quantidade maxima de mem6ria estendida que uma tabela interna pede alocar. Se voce exceder esse quantidade, seu pTograma alo cara mem6ria privada do pr ocesso de trabalho e nao ma is sera capaz de fazer roll out do seu programa.
2. Se voce fizer isso, 0 sistema alocara 8 KB da area de paginacao. A mem6ria sera desperdicada e a paginao;:ao pod erf aumentar , resultando em baixo desempenho. 3. A insrrucao read ta bl e pede ser utilizada apenas para ler tabelas int em as. Ela nao funciona com tabelas de banco de clados. Utilize select single em vez dela.
Resposto do exerdcio 1 N os sistemas anteriores, as convers6es cram executadas convertendo a partir do valor i direita do tipo de dado e 0 comp rimento do compone nte i esquerda.
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: I
- ->
C ZTXIOOI 000060
Ll • SY-INDEX.
Nas linhas 9 e 10, havia uma conversao de c para n (de caractere para 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
710
.3 ~.
I _ .. I
I
. . . 11 .. I
•••• I
•• •
•
•
~.
•
. ~. ~. -.
.. •
I APRENDA E. " DIAS ASAP/'
Dio 12. 'Tobelos internos
•
• -.
•
•
•
• -.
APblDICIUESl'OSTASAs PlRGUNlAS DOSTES1I5EE1Etd aos I
oyon~odas.
Parte 1"
Respostos do teste 1. Sua alteralja o para sy- tab ix seria ignorada e as instruc;6es operariam nalinha na area de trabalba . sy-tebt x ecomo sy-t ndex- modificando qualquer urn naa iria afetar as operacoes de loop. Alem disso, 0 valor de sy-tabt x ereinicializado no endloop, e a pr6xima passagem do loop prossegue como se 0 valor nunca tivesse sido alterado. 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. Se for zero. ela esrara inteiramente na area de paginaclo . Isso oaa tern nenhuma utiliz:lc;ao em urn sistema de producao, mas voce pede acha-lc uti! durant e 0 desenvolvimento para confirmar sua expecta, tiva de como a memoria e alocada para uma tabela inrerna. Se, par exemplo, voce espera que a tabela interne este ja na area de rolagem, mas sy-toccu contem zero (indicando que esd, na area de paginacao), voce pode precisar dar ma.is uma o1hada em sua clsuscla occurs para determinar se ela esti. correta.
Resposta do exerdcio 1
report ztz1301data: begin of it occurs 3. n(2) type n, ty pe t , f2 f 3(2) type c, f4 type P. end of it. 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 .
sort 1t by f1. do 5 t imes. 1t -fl a sy-tneex • 10. 1t-f3 a ' XX' . 1t -f2 a It -f4 .. sy-tnde x. read table 1t wit h key fl .. it-fl binary s earc h compa ri ng f 2 f3 14 transporti ng no fields . if sy- sucrc • 2. modify it i ndex sy-tabix. e1seif sy-subrc <> O. in s ert it index sy-tab1x . enddo.
s ele ct· f rom zt xlfal i nto t abl e it. ·n~o codif1que urn endselect l oop at it. write : I sy-t ebtx, ft - l andl , i t - regi a. endloop. ul t ne .
it- la ndl .. ' US '. modify tt in dex 3 t ra nsporti ng land1. 'it - regi o · ' TX' . IIIOdify it transporti ng regio where regia " 'MA ' . l oop at i t . write: I sy-t abl x. t t -t andt , tt -reate. endl oop. free 1t.
ayan~odos,
Resp osta do exerdcio 1
endt f ,
r eport ztz 1201. t abl es ztx l fa l. data it 11ke ztxlfal occurs 23 with header li ne.
Dio 13, "Tobelas infernos
•
Parte 2"
Respostas do teste 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.
loo p at it . write : I it -fl , 1t -f2, 1t -13 , it-14. endloop.
Re sposto do exerdcio 2 Eis uma maneira eficiente de corrigir 0 problema: report ztz1302 . tables : ztx lfa1. data: begin of it occurs 10 , lifnr 'lf ke ztxlfal -1ifnr, landl Hke zt xlfal-landl. end of i t . sele ct l 1fnr l andl from zt xlfal into table i t. loop at it. write: I i t-Hfnr-,
tt- tendl. endloop .
.~.~
711
... . . .-• • •-.-.-• • • • - a .. a a ........... a -a 712 , m HO'
W OlCEHESPDnASls PERGUHT,S DDSTESTEl EEXERdaos
EM21 01'5 " ""
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
5
/ 16
6
/30
'beceeee r-", 'January'. ' Fi rst '.
Di e 15. IITecnices de formete!;o o, Perte ]" Respostos do teste 1. As erss adi~6es graficas sao symbol s, ic on e 1i ne. 0 pro grams deveter uma instrucl o i nclu de, i ncl ude <• • •>. par a cada urna das adicoes graficas a fim de utiliza-la. P a r exemplo: i ncl ude <symbol> for symbols , 1nclude <1 con> for ico ns . i nclude <line> for li nes .
2. As duas adic;6es ut ilizadas com a instruc;ao re port sao tamanh o de linha e contagem de linha. As varifveis utillzadas para as adic;6es devem ser numericas, po rqu e ccntrolam 0 tamanho da pagina.
Die 16. IITecnices de formote~oo , Perte 2" Re sposta s do teste 1. A inscrucl c back pode ser uti lizada para reeornar a posicsc de saida atu al. 2. U tilize 0 ski p sy- 1i net em vez de new- page quando quiser configu rar uma n ova pagina e quis er urn rodape n a parte inferior dess s psgina atual.
Resposta do exerdcio 1 •
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 pagina. A linha 13arribui esse valo r avarifvel. 0 ccntrole retom.a para a linha 6 e Aeescrito. Em cada sucessiva passagem p elo loop, a hnha 8 incrementa a valor de e a linha 9 co nfigu ra a linha de saida atual. Isso resulta nas linh as escritas sucessivamente na safda,comecando na linha segu in do as titulos padrao.
Re sposta do exercfcio 1 report zt:1501. i ncl ude <symbol> . write : / 4 sym f i ll ed square as symbol . ' square' , / 4 s)'lll) i ll e(dla mond as symbol , ' di amond' , /4 S)'lll f1ll ed ci rc l e as symbol , "ct rct e ", / 4 syr'I-gl assei as symbol, ' gla sses' , / 4 SyrI- penci1 as symbol , 'p enci 1' , / 4 S)'1llyhone as syrnol , 'phone', / 4 S)'II note as syrrbol, ' not e'. / 4 S)'lIl)older as symbol . ' fol der' .
A linha 3 comeca em urn loop do. Na primeira passagem par ele, a instru~o write na linha 6 aciona 0 evento top-of-page. 0 valor de
•
A linha 4 comera em urn loop aninhado do. A ca.da pass agem par ele, a linha 5 configura a posi~ao de salda atual como igual a iteracao do loop atual . A posicac atual de salda e co nfigurada como 1 na primeira
713
714
APREHDA EM 21 DIAl ABAPI4
AP!NDlCE UESPO\TAS 'SPER'UHTAS DIB1IITES HXERdolB
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 17,. "Modulariza~oo ; eyentos e sub-rotinas" Respostos do teste I. Nao. 2. Nao utilize stop nos seguintes eventos: i nit i ali zat1 on, at sel ect i onscre ~ n output, top -of- page e end-af-page. Tecnicamente, ele pede funcionar com tnp -cf-paqe e end- cf-paqe se voce nao utilizar as insrrucoes wri te dentro de end- af - sel ecti on, posteriormente.
3. Para ser preciso, urna variavel somente e conhecida dentro de urn 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 11 e mais tarde, mas nae nas linhas 1-9. No case de urna definiciof ocal , voce po.d: acessar a vers ia global da variavel em qualquer ponte antes da definicgolocal,
Dia 18, "Modulariza c;oo: passa ndo pornrnetros para sub-roti na s" Respostas do teste 1. Os names de pardmetro que aparecem na instrucic fonn sao ch.amados parJm etrosftmnaiJ. Esse termo eficil de lembrar porque formalpossui 0 radical form . Por exemp lo, na instrucao form s l using pt changing p2 p3, a s parametres p l, p2 e p3 sao chamados param etre s formais. 2. Pas sar uma varia vel do tip o de dado errado ou comprimento para urn pargmetro digitado causa urn erro de sintaxe.
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 o parimetro sao referecciasa posic;:ao original cia memoria. As atterac;:6es na varia-vel dentro cia sub-retina atualizam a posic;:ao original da m em6ria imediatamente. 4. As duas adic;:6es usi ng f1 e changing fl passaro fl par referencia
c-,
elas
Resposta do exerdcio 1
utilizadas adequadamente, elas podem dccumentar se a sub-retina alterari urn pargmetro ou na o.
. REPORT ZTZ1701 NO STANOARD PAGE HEAD I NG .
TABLES ZTXLFAI . PARAMETERS P_LANOl LI KE ZTXLf Al- LANOl.
Resposto d o e xercicio 1
INITIALIZATION. P_lANDl · 'US'.
A seguinte saida
e gerada:
Top of page, f la g · S ct r
START-OF-SELECTION. PERfORM CREATE_REPORT.
=
1
i n Start -Of-Sele ction pi :::
FORM CREATE REPORT. SELECT * FROM ZTXLfAl WHERE WDI • P lAMD!. PERFORM WRITE REC . EHDSELECT. EHDFORM. f ORM WRITE_REt. WRITE: I ZTXLFAl-LIFHR. ZTXLFAI-NWI. ZTXLFAl -lAMOl. ENDFORH.
TOP-Of- PAGE. FORMAT COLOR COL HEADING . WRITE: I 'Vendors wit h Country Code ' . P lANDI.
Ull NE.
SaO identicas na func;:ao. A ratio pela qu al as du as existem eque,
-
A se'ia-o de inicializacfc Ilio e executada porque nenhurn criterio de seleliao esta pr esence no programa. 0 evenrc Sta rt-Of-Sel ect i on eexecutadc. Quando 0 programa obtem a primeira instrucao wri te, 0 controle no programa e passado com a evento Top-of-p age . Quando 0 evento Top- of -p age esd. complete, 0 controle e passadc de volta para 0 event o Start-Of-Select ion.
Dia 19, "Mod ula rizac;oo: mod ules de funcco, Parte 1" 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 exporcade s do m6dulo de fun~ao.
715
A.-I""'" .... -._....
::A' ..... 716
-I
. - .- • • • •-..~ •
•
• • • • •- . -. -• • • • •
APt'D'" So RESPOOAS IsPrn;uHTAS DOS 15TES'ElERCiaDS
APRE'D' E. 21 01'5 ABAP/4
Rasp.osta do exercfcio 1 programa executa, a tabela interna e pre enchida e 0 modulo de com 0 coareudo cia tabela intema apar ecerd. D ep ende ndo cia entrada escolhida pelc usuario , eta entao imprimira utilizando a insrrucic writ e. Q uando £un~ao
0
e chamado. Urna janela pop-up
Dia 20, "Modulariza ~co: modules de funcco, Parte 2" Respostas do te ste 1. As definiJ;oes de clades de dais dos parametres devem ser idecticas. 2. Utilize 0 ca.rninho de menu Function Module-Release-Cancel Release. 3. . 0 programa sera. abortado e resultard urn dump curto que tern 0 eITO de tempo de execucto RAISE_EXC EPTION. 4. Elas DaO devem ser utilizadas dentro de m6dulos de fun93.0. Em vez disso, a insrrucio rai se deve ser utilizada porque eta ativa 0 charnaclor 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 VAlUE(P2) TYPE I 6 •• 7·· EXPORTING VAlUE (P3) TYPE P 8 •• 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.
. . . - - - - - --
2. Sim, as caracterfsticas de urn dominic vinculado com elementos de dados tambem sersc alteradas, porque as elementos de dados em urn dominic herdam todas as propried ades de urn dominio que sao referenciadas. 3. A regra primaria para eseabelecer urn relacionamento de chave estrangeira e definir e vincular urn relacionamento entre multiplas
tabelas.
Resposta do exercfcio 1 report ztz2101. tables : mara , tOOlw . • Selection parameters for BC»ls select ion -screen begin of li ne. se lection-screen CCllTITlent (33) text-beer . parameters : bom like mara-matnr. spras l 1ke tOO2-spras . selectten-screen end of line. selection-screen skip 1. Setect-epttens : matnr for mara-matnr, werks for tOOIw-werks.
~
717
· I • •·• •
····.··········-· . w...
--- - - - - . ---- - ~ - - -
indice A_ _ ABAP/4 lisn gem de sintaxe basica, 230 primeira listagem de pmgram~
49
segundo prcgrama listagem, 72 listagcm revisirada, 263 lisu gem simplificada, 76 ABAP/ 4 Dictio nary: Maintain Technical Setti ngs Screen, 189 ABAP/4 Editor conerole Help (barra de [erramentas
Application),.58 tela Edit Program, 51 2juda durant e edi ~a o de cc digos-fc nte, 65
ajuda Fl, 64
ajudaR/3 Library, 64buffers Cut and Paste; 59-60
cont rcles de barra de ferramenw Application, 57-58 contrcles de b21T2 de ferramenw . Standard, 52-56 fun~6es, 61-63
hllpJt-.cumpus.com.br
tutorial ,63 tela inicial ajuda, obtendo, 6S prcgramas, p rocu ran dc, 66 u tiliza~es,
50 ABAP/ 4 Key Wor d Doc, ccm and o (men u U til ities). 520 ABAP/ 4 T ext Elements: Change Ti tle and Heading. tela, 503 abordagem bottom-up dominios, criando, 110- 111
elementos de dadcs, criando, 11 3~ 11 6 tabelas, criando, 107 eabelas transparenres, criando, 117-122 abordagem top-d own, tabelas adicionando campo a, 122-113 crian do, 107 Accou nting, menu, comando Accounts Payable, 13 acessand o biblioteca de fun~o. 586 Ierramenta urilitaria de banco de dados, 218-2[9
now de versac, 96
acrescentando campos a tabelas, 126
Active, versoes de tabelas comparan do com Raised,2 17 comparando com tabelas de: banco de dados, 2 19-220 descri ct o, 2 16
adapt2!roc:s automaticas e iostru'iao move. 285-287 ad2 pta~oes de comprimento e tipos de dado. instru'.?o move, 285 ada pta~6es de tipo e tipos de dados, instru~o move, 286-287 adi~ao arre don dada, instru~o write, 470-471 a di~ao bina ria de pesquisa, instru~o read table, 359 adi,?o de campos correspondentes, 421-422 adi~ao decimal, instru'.?o wri te, 470-471 adi~ao e correspondences, instrucoes, sintax e, 299 adi~o monetiria, instru~ o wri te, 471-473 adi~ao. subtr.l,?o, multipllcaeio, divisao e ccrrespondentes, instru~6es, listagem, 299 adi~Oes graflcas, tipos, 697
720
!
AP REND A EM 21 nus ABAP/4
a d i ~oes, descricfo, 236 Adm inistration, ccmandc (m enu Tools), 21
aju da Fl campos. adiciorando a, 135-13 6 docu m enta~ io de
elementc de dados, 113
elemen tos de dados e, 102 inserindc linh as em u belas, 130 links de hiperrexto, adicionando.1 36-138 tela ABAF/4 Ed itor. Edit Program, 64 tesrandc , 136 a juda, po ssiveis entradas, 150 ajuda, sistema de ABAP/4 Edito r ajucUF l , 64 eodigcs-fonte, ajuda ao editar, 65-66 Initial Screen, 65 Rl3 Library, 65-66 tut orial,64 ajuda Fl campos, adicionando, 135- 136 elementos de dados e, 102 inserindo Iinhas em eabelas, 130 links de hiperte xrc, 136-13 8 testa ndc, 136 ajuda F4, chaves estran geiras e, 150..1 51 ireas fun cionais, 10 diilogos de manuten';i o. 134 dominios, 111 alinb3m ent os, 30J
INDICE alccandc dados glcbais, 620
alter.tndo
fl. ucilizalj6es, 715 nomes em eabelas, 125 padrces do usuf ric , 712 parametres, descricrc, 607 pane de interface. 623-627 ambiente de texto, defini~o, 380
analise de programa. realizando, 319 aninhandc estrutu ras, 172 ani nhando loop s do, 713 ano s fiscai s, pertodos de publica;ao, 439 aplicarivo, areas, c6digos para , 690 ap licativo.dadosde defmi~o, 97 tipos , 701 apl icativos , conjuoto padrio, 7 ap pen d lines , inst.ru'iao, 392 app end sorted by, instrUc;ao, 413-417 A ppen d Structu res, tipo de obj eto, 691 append. ins tru cio, e tabelas
int ern as adic;:io de ocorre ncias, 357-359 sin taxe, 354 APP Ll, classe de dados, desc ricio, 194 APPL2, classe de dados, descri cac , 194 Appl ication Logs, ti po de obj eto ,691 applicatio n, barn de ferrame ntas (ABAP/ 4 Editor ). 57-59
A pplicatio n, berra d e ferramentas, 16 batao Foreign Keys,.liS bo de O bject Log. 230
botio Technical Settings, 193 criandc bcroes em, 656 Applications, area do menu
principal , 10 APPLO, classe de dados , descri~o , 194 ar ea de tela de m enu principal . 17 Command Field, 19-20 In terface Menu , 17-19 ar ea de ~balho de tabela padrio,descrlc;ao,698 area funcional , conhecimento, 9 Area Menus. tipo de objeto, &91 areas de pagina;ao. sy-toccu e, 710 areas de trabalho expl fcitas, 77,354 areas de trabalhc imp licitas, 354 areas de trabalhc, exp llcitas versus im plfcitas, 354 areas fu ncionais (m6 dulos ) Ionres de inf or m2'ioes em, 10 visio geral, 8 areas trahalho de tabela, 76-78, 354, 564-566. 698 arredon da m en to, especific ando, instru 'i:\o wri te, 482-490 at end of, instru'iio, 440-441, 448-449 at firs t, insttuc;:ao, 440-444 at last, i ns tru ~o, 440-444 at new, ins truc;io. 444-447
at selection-screen, even to, &55 at user-com mand, evenro,
buffer em dados no servidcr de aplicativc
655-65& ativando
definindo 0 sistema Rl3
m6dulos de funlSio, &04-605 .objeros, descri~o, 107 atribuip,o di.n.amica, simbolos de campo, 309-310 atribuip,o. ins tru;6es
clear corn adic;ao, 289-290 sintaxe, 287 codificando.291 descri~. 286 move, 291-303 adaptac;oes automancas.292 regras de cc nversjo, exibindo, 295 strings de campo, 297-303 subcampos, 296-297 move-corresponding, sintaxe, 303 arua lizando tabelas com buffer. 201-204 AVI select, in s tru~a o, proc essamen to, 74
B Back, controle (barn de [erramentas Standard). ABAP/4 Editor, 53 back, ins tru ;io sinraxe, 537 utiliuc;oes,713 Back, tech. pression.ando, 75 banccs de dados
â&#x20AC;˘ no Open SQ L, 36-37 com o, 26
portabilidade de ecdigc, 36 prcjeeandc e desenvolvendc, campos Valu. Tobie, 165 suporudos pelc R/3, 21 barra de sta tus , 17 barns de ferra m entas Ap plication (ABAP /4) , 57-59 Application, 16 bode de Log de c bjetc, 230 bot i o Foreign Keys,
148
bcu c T echnical Setting s, 193 criando botbes em, 656 Standard (ABAP/4 Di ctionary),67 Standard (ABAP /4 Editor) cont roles, 52-53 recu rso Find and Replace', 54-57 Standard, 16 Co mmand Field, 19 Fin d button, 280 barns de menu, 16 barras de tfrulo, 16 Basis, area.do menu principal, 10.20-22 Batch Data Com mun ications (BDC) , chaves estrangeiras e, 152 bibl ioteca de fu n~o , d es cri ~o. 602
bl occs (elementos de se le~io de tela), dcscric;,io, 667 botoes de 0 P~oJ efeieos em caix2s de grope, 51 buffer em registro unicc,
208-209 buffer em tabelas, u ti lizando, 196-213 atual izandc Infc rrm cees, 201-204 buffer em sincron izacsc, 197-201 bypass de buffer, 204 eecsrics, 211-212 deslocamencc de buffer, 210 resumo.212-213 resumo das ccnfiguracees tecniC2.!,221-222 tecnicas .204-205 tipcs de uso de buffer cheios, 206-207 genericcs, 207-208 registrc unico, 208-209 resurno, 209-210 buffer, slncronizacio descricsc, 197 intervale, configurando, 200 buffer. urilizaljao completa, 20&-207 buff er, uriliZ2~o generics , 207-208 bu ffers Cut and Paste (ABAP/4 Editor), 59-60
buffers de programs, descri;ao, 236 bypass de buffer para tabelas, 204 bytes de preenchimeato, 301,303
721
..... I
722
I _I I
mensagen s de erro,
psg ina
centr.dizando,516 format ando c imprimindo cabecalhos manuais de pagina, criando, 519-52 0
cabecalhc s padrio de
pagina, arm azenandc , 514
cabecalhcs padrio de psgina, criando, 513- 515
cabecalhos padrao de
pagina,tradualadc, 515-517
cabecalhcs padrio de pagina., utiliundo varifveis em, 517-519 csb ecelhos padri o de pagim, visualizando e
modificando, 514-515 rcdapes de pagina, criand o, 520-523 cebecalhos e rodapes, formatando e imprimindo cabecalhos manuaisde pigina,criando, 519-520 eabecalhos padrio de pagim ~azenando,5 14
criando, 513-5 J5 m.duundo, 515-517 utili zando variaveis em, 517-519 visualizan do e modi ficando, 514-515
i!a
• - . -. -. -• • • ~ • • • • I I
... INOlO'
cain de didlogc SAP Rll,
cabecalbos e rodapes de
~'
• •~ .~ .- .- •
APlEN DA EM21 DIAS AUP/4
C
:0;
- .~.-
I
640-6 41 caixa de se!e;:io, parametr o, 670- 671 cains de gro po, efeitc s de
bctoes de o p~ o. 51 calcu lando datas, 308-309 calculos, execu ta odc instru~o
compute opera dores para, 305 sirnaxe, 305
inStfUliOes add e
corr espond ences, sin taxe, 306-307 calculos , reallzandc adicione e adicicne instru ~6es
correspondences, sia taxe, 306-307 data, 308-309 insrru~o
compute. op eradores para, 305
ins tru~o
compute," sineaxe, 305 call function, instnl~a o , 609-611
inserin do auromaricamente, 613, 649-650 Iiseagem de parimetros, 6 12
sineaxe, 610-611 camadas (tien), dd uu(io, 23 cam pos ajuch Fl .2.dicionando, 135- 136 links de hipenexto , adicionando, . l3 6-m links de hiperte:l.:to, solucionando
p roblemas, 138
reseandc, 136 alterandc 0 comprimento de, 10<, 127-128 campos de quaneidade, requis ites, 170 campos mcneurios, 168-169
chaves estrangeiras, detennina~o
auro mdrica de. 149-150
controlan do a ex ib i~o de, 71 convencees par:l. auibu i~o de nome, 105 criando dom in ies, 103 elementos de dados, 102 instru~i o select. em adi~o de eabela, 430 pcntos decima is, 701
ca.m.pos-chave
descricac, 156
I:
padri o, instrU;io read tab le, 370 tabelas de textc, 157-160 Cancel, ccntrole (barra. d~
ferrame ntas Standard), ABAP/4 Editor, 53
ScreenCams, instalando , 44 utilitirio C opylt, J24- 125 centralizando cabe;al.bos de pagina, 516 chamandc m6dul os de
luD(io, 609-6 13 dado. glob';', 619 -622
cancelando a versao do m6 dulo de fun~o, 629
execu tandc urn exemplo, 611-6 13
cand idatos chave, des cri~ao, 156 cara ctere, literals de string de, 239 caractere, operadores de
instru ~o
string de. instrU~o if, 321-326 caractere, tipcs de dado descri~,2#
call function , 609-611,613
Change Document Objects, eipo de objeto, 692 Change Vendor. In itial, te la, 12 change. documentos, 21 8-220 change, m od o, defini~o, 5 J cbaves estrangeiras
vaU~ de dados,
vertl5~d o, 144-145 cbaves estrangeiras
adaptadas, defini~o, 163 chaves estrangeiras compostas, 152·1504 chaves esrrangeiras constantes, defini ~o, 163 chaves estrangeiras
Value Table chaves estrangeiras e, 164-165 como proposta Check Table , 166-167 prcposito, 165-166 sem chaves esrran geiras, 168
Search/Replace, 55 caracteres especials, t ela
cardinalidade de. 154, 658
siataxe, 340-341
Search/Repla ce, 55 caracteres hexadecimais, 706 caracteres inv aIidos em no mes de programa, 689
colun a CheckT able, 149 cornpos~, 152-15-4 constance, defmi~o , 163 criando, 1-46, 1049
ueilizacces, 708
cardiaalidade
descri~o, 144, 656
cam pos de referenda.,
defiD.i~o. 169 cam pos d e sist ema. data areal e tem po . 244 cam pos empacota dos, comp ri me n tos de saida. 463
cam pos m on ecl n os. 168 campos numericos, 299, 710
chaves escaogeiras, 15-4, 658 descri~,
658
nlores de X, 155 valores de Y, 155
case, instru~o. sintaxe. 326-327
CA17 F lows, tipo de objeto , 691
CD-ROM
achpada, d efini~o, 163 campo Value T able. 164- 165 como prcpcsta Check Table , 166· 167 pr opcsitc, 165-166
determina~o aurcmatica
de camp os, 149-150 genericas, d efini~ao, 161-163 programas em lote e. 152 testando, 149 tipos de campo, 156-160 carnpos-chave, 156, 157-160
1 61
chaves pri.marias . indi ces, 184 Check. Table, proposta, campo Value Table como, 166-167 Check, controle (barn de [erramentas
movendo de um.astring de campo para outre, 300-3 01 caracteres eceueuado s, classifiando, Iistagem, 380- 381 caracteres cu.ringa, tela
Application), ABAP/ 4 Editor, 58 check, instru~o comparando instru ¢ es exit e continue, 341 instru~ao loop at e, 364
Check.Table, coluna (tela Dictionary:
Table/Structure ] chaves estrangeiras e. 149 fun c;6es de. 167-168
CIA, CN, CA e NA, lisbgem 322 classes de dados, 194 cJassificando instnJ~o select em adi;a o de
"'bela, 428 clear. instru~ao com adi~o, 289-290 sintaxe, 287, 0407
1
I
util i.zand.o para, 657-659
genericas, defmi~o,
723
I
candidatos-chave. 156-157
refereaci a, defini~o, 169 rabelas, adicionando a abordagem top-down, 122-124 acrescent ando , 126 inserin do , 126 tabelas, excluindc de, 127
ajuda F4 .. 150-15 1
I
~
I
••••• A A A A 724
I
A.a a a • A • • • ~ • • • ~ • •- , . -. -• •-.-. • . -.- • • • • • • • • • - - - - i
APRE II DAEM21 DllS HAPH
cliente de logon, defini£io, 32
clien te/servi dor de duas eatnad2s,descri~o,23
cliente/servidor em tres eamadas des cri~,23
RJ3 arquieetura de sistema servidor de aplicativc, 24-25 servidcr de apresenta~o, 24 servidor de banco de dados.25 servidcres, configunndo, 25-26 clieare/servidor single-tier, dcscricrao,.23 Cl iente/Servid or, 22·2 3 clientes, sistemas de inrtaIac;:ao R./3 c~ 36 Clipboards, AJ3AP/4 Editor, 59-60 Codepages. tipo de objeco, 692 codificando express6cs matem:i.ticas, 306 ins~ao write,
342 instrUc;oes de ·a ttibui~o, 291
c6digo areas de eplicaeivo, 690 colocando comentirios em, 85 exemplcs, cortando e colando do sistema de ajuda, 65 pcreabilidad e de, 36 c6digos de tranSayao, definicrao, 19 ccdigos-fonte
AJ3AP/ 1, Editor; Edit Program. tela. sjcda enquanrc editando , 65-66 corcendrics, parirnetros 1:, 609
pesquisando e robstiruindo em, 56 collect, instru~o combinando linbas confonne elas sao adicionadas a tabclas intem as,lisugem, 418-419 sintax e, 04 17-0422 commdos menu A ccountin g, Accounts Payable, 12 menu Gore, Text Elements from th e AJ3AP/4 Edit or, 670 mcnu Program C npy, 77 Save As, n menu System Create N ew Session, 76 Status , 20, 95 menu Tools Adminism tion, 22 D evelopment Workben ch, 12 menu U tilities ABAP /4Key Word Do c, 534 Help on, 65 comentarios c6di go, substituindo em, 85 codigo- fome, parimetros e, 609 Command Field, 16, 19-20
Com mand Field, con trole (barn de Ierramentas Standard), A:BAP/4 Editor, 53
como adi~o de leon e. instru ~o write, 501·5 03 como adi~o de linha, instru~o write. 5 03~506 como adi~o de simbolo, instrU!;ao write, 500-501 como adi~o de tcxto, instrocrao sort, 379·3 82 comparaliOcs instrUc;ioif, conversces de dado s de lieerais durante, 317-319 crdem de precedecciapan eipcs de dados, 317 comparac;Ocs e suas formas altemativas, 316-317 comparando adic;:ao, instru-ra o read table, 373. 375 componcntes, grupos de fun,.o, 638-640 comprimento fixes, ripos de dado, descri~o, 244 comprimentos de saida campos de DDIC, 462 campos empacotados, 462-463 desaic;ao, 461 compute. instnl~O operadores pan, 305 sintaxe, 305 Concatenate, co ntrole (barn de [erramentas Applica tion) , ABAP/ 4 Editor, 58-59 confi guracoes tecnicas exibindo, 193-213 . bufferiz.ando resumo de tabelas, 212-213
IHDlCI
bufferizando tabelas, 196-213 campo Size C ategory. 195
ceaarios com rabelas de usn de buffer, 211-212 classes de dadcs, 193-195 deslocamentc de buffe r, 210 ntimerc de exteas ces, 195-196 tlenicas de usc de buffer, 20+206 tipos de usc de buffer, 205-209 resume, 221-222 confi gurando matchcodes lo gicam en te, 659-660 confi gur.mdo padrOes do usuario, 280 consistincia, v erifi~6es. utilizando a fcnamcnta u tilittria de banco de dados, 226-230 em nametab, 228-230 papel de nsmeeab, 227-22 8 constantes. 261·262 CONSTANfS, instruc;:ao, sintaxe, 262 consu ltorcs, conhecimento fun cional da :irea e, 10 ccatag em de Iinha, adicrao e lisugem de umanho de 1inha, 510 instrul;io rcpon, 508-513 rodapes,criandc, 520-523 sintaxe, 508·5 09 utili.ando,509-511 contextos do usuUio alocando, 698
d efini~o.
27
c ontU1ue) tns tru ~io
companndo com
instrUl;oes exit e check, 341 instru~o
loop at e, 364
Iistagem, 338-339
sintaxe, 338-339 utiliza!;Oes, 708 controlando a sequen cia do programa comparando com as instrUC;Ocs exit, continue e check. 304-1 instru~o check, 339-3041 insauc;ao continue, 337-339 instroc;io exit. 327-328 controle Help (barn. de ferramentas Standard), ABAP/4 Editor, S3 controle, instruc;oes case, sintaxe, 326-32 7 do sintaxe, 328-330 . terminan dc loops infinitos, 330-332 varying addition, 332-334 vuying/enddo additi on, 334-335 elseif,320 if. 315-326 ccnversj c de dados de literal durante comp aracees, 317-319
conversees, exibindc, 319 opcndores de string de caractere, 321 ~3 2 6 operado res logiccs para c peraados, 316-317
crdem de precedencia
para tipos de dado, 317 sin taxe, 316-317 while. sintaxe, 336-337
contrcle, iaterrupci o, prccessamento in stru~o on change of, 451-458 loops e, 452-0454 utiliz.a.ndo, 454-458 instru!;io sum, 4049-0451 insuuC;6e:s at first e at last, 44Q....«4 instruc;oes at new e at end, 444-449 controle, ineerrupcces, descri~o, 440 con trole, nIveis de, descri \;io. 445 conversees de dado s insuucrio if exibindo. 319 Iiterais duran te co mpancr6es, 317-319 instrucrao move adapta¢es autom:i.ticas, 293-294 regras de convers j c , exibindo, 295 copiando dados em tabelas intcrnas , 391-395 m6dulos de fun ~io, 640 tabe las, 124-125 Copy To Buffer, con trc le (barn de ferramentas A pplication), ABAP/4 Editor,S8 Copy, co man do (menu Jlrogram), 77
J
725
I
A A
726
I
I I " I .. I
I .-a
a-. a-.-.-••-.-.-••••••••• IHDICE
I "PIEND'" EM 21 DllS AUP/4
Copylt, utilitirio, CD-ROM, 124-125 carpa (tabela internal, 350 Create Foreign Key, tela, 148,163 Create: New Session, comando (menu System). 76 criando
ubeI",,106-107
tabelas eraasparentes abordagem bonom·up.1t7-122 solucionando problemas. 119-122 tela Dictionary:
Table/Structure:
Data Browser: Table:: Selection. tela, 70 Data Dictionary (RIj Data D icti onary)
=npos comprimeneos de ,arch, 462
ccntrolandc a
botoes na barn de ferramen tas Appli cation, 656
Change Fields, 117 curses de treinamen to, sites
exibi~o, 71 defuli90es,exibUldo,70
d. Web, 10 C ut and P aste, bu ffers
descricac, 67 estrururas, 68
campos, dominios, 103 chaves eseangeiras, 146,
(ABAF/4 Edi tor), 59-60 C ut, controle (barra de
H9 domfnios abordsgem bottom-up , 110.111 tela Dictionary: M:ain~ Domain, 108 ieutiliz.ando, 104-105 elementos de dados aboedagcm bcrtcm-up, 113-116 solucionando probl emas, 115-116 WTSJ4S
tela Di ctionary: Change Data Element, 112 grupo s de ripe, 274-275 indices , 187-189 indices secundsrics, diretrizes para, 189-190 m6dulos de func;ao, 601,
613-615 objeeos raatchcode, 660-665 programas processo para, 48-50 solucionando problemas, 50
[erramen tas Applicati on ), ABAP/4 Editor, 58
0 da dos de tabelas, copiando, 124-125
defiaiado, 566-568
exibiadc modificando e, 127-128 ucilizando seu pr6prio prognma. 135 globais, cipos, 619 linhas inserindc em
tabelas navegadores de dados , utiliz.ando, 128-131 solucionando problemas, 129-130 validandc com a interface do ususrio, 145 dados e estattstica, lis tag em,
567 dados globais alocando, 620 tipos .619
objetos ativando, 107 impcrdncia de, 96 posi~o de. 67 tabelas , 68, 70 rabelas e'estrutu ras, incluindo na Listagem de string de.campo,265 ripos de dados , mapeando pan ti pos de dado ABAP/4 ,246-247 utiliz.a¢es,67 Data Elements, ti po de objetc, 692 Data Mo dels, tipo de cb jeto, 692 Data Type . cam po (tela Di cti on ary: Maintain Domain),108.109 data, cilculos, reallzando, 308-309 data, campo sistema sy-datum, 244
de
data, formatando, instroc;ao write, 479--481 DB Utility: Transparent Tables: Database Para m et ers , tela, 231-232 deci din do quando urilizar navegadores de dados,
134-135
Decimal Places , campo (tela
Dictionary; Maintain Domain). 109 defini~6es de dadcs dentro
Delivery CW~ campo {tela Dictionary: Table /Sttucture: Change Fields),l1('-117
de m6duJos de fun~o, 605 definindo constant es, 261-262 puametros pan. interfaces, 605 strings de camp o instru~o de dados, 263-266 instro~o tables, 268-269 instru~o tables, int en gin do co m select, 269-270 insuu;ao tables, visibilidadc, 270 utilizando como vu1aveis do ripe -__
desativandom6dulos de:
char, 267-268 sub-retinas definindo e listagem de chamada, 558 em grupos de funCiaO, 627-628 tipos com a instr:u~ao . type, 270-272 varii veis, 714 inStru~o de dado s, u""""",do,241-243 ins trU~o parameters, utilizan do, < 247-254 tipos de dado s, 243-247 deixaadc eventc s, 55-4-557 sub-retinas, 561-563 delete, instn1~o, slntaxe, 408-409
204 -205 tipos de us o buffer, 205-209 desenbo de Iinha, care cte res defini~ao, 503 exibindo, 506-507
fun~o. 604
descartaadc versoes Revised de tabe las, 22)-224 describe able, instru~ao, sintaxe, 389 descritioes de campo, pesquisando, 82 desempecbo, aprimorando buffer em resume de ubclas,212-213 buffer em tabelas, 196 ~2 04 cerWios com ubelas de usa de buffer, 211-2 12 deslocamento de buffer, 210 t~cnicas de usa buffer,
desenvclvedcres, conhecimento funcional de area e, 9 deslocamento de buffer, descri~o, 210 Development Classes, tipo de objeto, 692 Development Workbench
area de menu principal, 10 compon entes , 44 cbjeecs de desenvolvimento, exibindc , 66 Dialog Modu les, tipo de objeto, 692
d ialog o com 0 ciien te, programa, _conven~6c:s
pan atribui~o de: nome, 691
diaIogo, passos defini~o.28
iniciando, 29 d idlogo , pro gramas, 46,691 Di ctionary : Chan ge Data Element, tel a, 112 Dictionary: Initial, tela, 67 Dictionary: Maintain Domain, tel a campo Data Type, 108-109 campo Decimal Places, 109-110 campo lowercase Letters, 109-110 campo Output Length, 109-110 campo Shon Tex t, 108 crian do dominios, 107 Dictionary: Table/Structure, tela, . coluna CheckTable, 149, 167 Dictionary: Table/Structu re : Change F ields, tela, 117 Display Symbols. Hsta gem, 500·501 Display: C hange, ccnercle (barn. de ferramentas
Application), ABAP/4 Editor, 58 distin ~ o entre maiusculas e m inesculas. Iirerais de string de cara ctere, 239 do , instnJ ~ o sintsxe, 328-329 rerminando loop s sem fim, 330-332
727
• 728
INelCE
APRENDA EM 21 DIAS lBAPI4
varying, adi'iao, 332-334 varyinglenddo, adi<;io, 334-335 do, loops, 713 documentando excecses na interface do m6dulo de funl'jio,648 Documentation Mo dules, tipo de objeto, 692 Domains Display, tela, 669 Domains, ripe de objeto, . 692 domfnios p649
altera~es n~
earaceerjsticas, 717 campos alteraado
0
ccmprimentc, 104 criando, 103 convencees para atribuiliio de nome,
105 criando
abordagem bottom-up, 110-111 tela Dictionary: Maintain Domain,
108 descri~ao, 102, 668 obrecdo a documentacso
do SAP,l11-112 prop6sito, 701 reativando, 705
reurilizandc versus criando, 104-105 driver, programas descricac, 547
eventos acionando 0 tOpO de pagina, 550·551 deixando, 554-557 ordem de execu!jao, 548
-
relaeorios com telas de selcljio,557-558 rornando padrio para inicio cia selecfo, 551-553 Dup licate Line, contrcle (berra de ferramentas Application), ABAP/4 Editor, 59
E edit or- call, instru!jao, sintaxe, 395·397 elementos de dados alt~ra~oes para caraceerfstico de modificando vinculou com, 717 cardinalidade, descdcac,
658 contecdc de, 701 convencoes p:ua atribui!jao de nome,
105 criando abordagem bottom-up,I13~116
solucionando problemas, 115-116 tela Dic tionary:. ChangeDau Element, 112 descricao, 102
documeneacio ao salver, 113 dominios, 102 elementos de tela, elementos de texto e, 669 elementos de textc cabe~alhos padrio de pagina, utilizando para eriac, 514
defini~o, 514 elementos de tela e, 669 ~uzindo,
515-517
elementos de texto, annazenando, 514
elseif in$tnl~o. 320 enddo, listagem 334-335 eadform, instJut?o, utiJiu~o de, 558 end-of-page, evento, 521-522,530 Enter, contrcle (barn de ferramentas Standard), ARAP/4 Editor, 53 erros em m6dulos de fun!jio, corrigindo,
640-641 escopo da pesquisa, configurando, 55 escrevendo Icones na HSb, Iistagem, 501-502 especificg!jao de comprimentc, instru!j<io write, 470-471 especiflcando posi~o e comprimento com a instru~o write, 341·344 estouro, instru~o sum,
450 estruturas aninhando, 172 criando, 171-172
DOle exibindo, 70 versss eabelas, 70 includ e chain, defmi;ao, 173 inc1uindo mnltiplas vezes em tabelas, 174-175 pesquisandc variaveis de sistema, 283-286 syst,82 versus tabd as, 171
estru turas, testando e modificando conteudc interne de tabela, 388 estru turadcs, tipos, utilizando, 272-273 evento de inicialiZ2~o, sintaxe, 654 eventos des cri~o, 519 efeitos da safda, verifica~o e parada dentro cia listag em, 555-556 efeitos na instru!jw writ e, 550 envolvendo condi.liio ou loops denrrc de I istagem, 552-553 Iistagem do Basis, 546 programas de driver e, 547 acionando em ordem ditada pela listagem do programa de driver, 548 acionando tapa de pagin>,550-551 deixando.554·557 ordem de execc cac de eveneos, 548 relat6ri os com eelas de sele;ao, 557-558 tor nando padrio par.l infcio da se1e~o, 551-553 exce~6es
documenta~o em interface do modulo
de fun~o, 648-649 visac geral, 607 excluindo campos em tabe1as, 127 comendo interno de uma tabela, 403-412
indices secundsrios,
190-191 linhas em tabelas intemas, 408-412 m6dulos de fun~o, 640 tabe1as,125,232-233,705 exemplos de tabela relacionemeneos de chave primaria, 439 visio geral, 438-439 exibindo caracteres de stmbolos, leones e desenho de Iinha,506-507 confi.gura~oes de teda de fuo!jao, 19 configura¢es tecnicas pan tabelas, 193 buffer, usa de, 196-204 buffer em resumo de tabelas, 212-213 campo Size Category, 195 cendrios com tabelas de usos de buffer, 211-212 classes de dados, 193-195 deslocamenro de buffer, 210 namerc de extensoes, 195-196 tecnicas de uso de buff", 204-206 tipos de usa de buffer, 205-209 converse es de dados, in stru~o if, 319 dados, utilizando os seu s pr6prios programas, 135 documenta,?o de palavra-cbave, 534
indices, 187 Indices secondaries, 186 nameeab da ferrsmenta utilicl.ria de banco de dad05,227 o log de ativa~o II. partir de dentro do utili tario de banco de dados, 230-231 objetos de desenv olvimenco, 66 parametres de arma zenamento dentrc do uciIit:irio de banco de dados, 231-232 regras de ccaversac na documenracsc de palavra-chave do ABAP/4 ,29 5 tabelas ou esrruturas (DOlC), 70 variaveis de sistem a, 281 Exi t, contrcl e (barra de ferramentas Standar d). ABAF/ 4 Editor, 53 exit, instru!j<io comparando com ins tru~() es continue e check, 341 instr'U!jao loop at e, 364 sin taxe, 327·328 u tiliz.a~oes , 708 exportacac, parametres, descricao, 607 exportando/importando parte da interface. 623-627 exp ressoes chave, utiJizando, 367-369 expressoes matem .iticas codificando, 306
729
A •••• 730
I I I I .II • •• • • • • • •-• • •
variav~
tipo d. 308
definil'o, 195 exibindo numerc alocadc para tabelas,195-196 resumo tecnico cbs
configuracoes, 221 -222
E FO I, include, deflnindc sub-retin as em gropos de fun~o com , 627-628 F4, ajucb, chaves estrangeiras e, 15C-151,154 fax, envi an do rebt6 rios par, 511
Ierrsmenta de rastrelc de SQL, determlnandc qual Indice e uti1izado, 191-193 Ierram eata utili tUia de ban co d e da dos acessando, 225 excluindo e recriaadc tabelss, 232-233 fun¢ es, 225-226 log de ativali1o, exibindo, 230-231 parfmetros de armazenamento,
exibindo e modificando, 231-232
ueilizando, 225-226 verificacces de cca siseenc is, 226-227 em aameeab, 228-230 papel do nameeab, 227-228 Fiel d Label and H eader, cam pos (tela D icti onary: Change Data Elemen t), 113
. - . - . -.-.-.-.-.- . -.- . - . - . -.-.
•
- ~-
-i.DlG , 731
-
, APlENDA EM.!1 DIAS AU P/4
extensOes ·
~
Field Name, coluna (tela
Di ctionary: TobI, /SttUctur" Change Fiolds),11 7 Find Next, contro le (barn de Ierramen tas Standard), ABAP/4 Editor, 53 Find, bou o (barn de ferram entas Standard ) ABAP/ 4 Edit or, 53 campo s de variiveis de sistema, loca1iz.ado, 280 £1, listage m, 715 form, instru~ o definicdo variiv eis em, 571 nome s de parimetra , 715 sinuxe, 559 utilizal'o de 558 fo rma gerada de programas, 47 fOnIl2b~O de Iista, instru ~6es , 527-541 marg ens configuradas, 5~3 new-line, 528-529 new-page, 529-530 new-page print. exibindo do cumenta~io de palavra-cbave pan. 53-4 new-page print on , 530-534 position, siceaxe, 538 set blanklines, sincaxe, 540 skip, sintexe, 534 forma ta~ o grifica e in stro ~ o write, 499-507 como a di~o de leone, 501-503 como adirri o de linha, 503-506
como adi~o de stmbclo, 500-501 exibindo stmbolcs, leones e caracteres de
desenho de linha disponiv eis, 506-507 sineaxe pu:l adi~oes, 500
formatando
cebecalhose rodapes de pagina csbecalhos manuais de pagina, criando varidveis em,
519-520
ccpiand o, renomeando e
set blank lines, 5~5" 1 set margins, 533
skip, 534-536 U.DUnhO de pi gIDa; contrclaadc, 508-511
eecnicas, 507-508 eelas de sele~a instru~io de bctoes de oPl'o, 672-673 instruli10 param eters,
668-670 instnl~o
cabecalhcs padra o de pl gitu, armazenandc , 514 cabecalhos padrio de pagina; criando, 513-515 ,,",.~os padrio de p:5.gina. traduzindo, 515-517 cabecalhos padrio de p:5.gina. utiliundo variiveis em, 517-519 cabecalhcs padrsc de plgin a, visualizando e mo dificando, 514-515 rodapes de plgitu, crian do, 520-523 instru~io reserve. 523-524 ins uuCioesde formata~o de lis", 527 back, 536-538 new-line, 528-529 new-pa ge, 529-530 new-page prin t. 530-53. new-page print on, 531
m6dulos de fun ~o.
pos ition, 538-539 print-control, 533
selection-screen
block with frame, 667 insuuljio select-options, 671-672 instru¢es selection-screen, 667
parimeno de cain de sel e ~o, 670-671 parimetro de cain de sele ~o de sele~o de tela, 671 programs de exemp lo,
673-681 visl o geral, 666-667 free, instru~ o, sintaxe,
403 from, adi ~o, i nstru~o loop at, 362-363 fun~Ocs,
ABAP/J, Editcn tela Edit Program, 61-63
Functio n Ce des, ti po de objeto, 692 Functi on Library, tipo de objeto, 692·693 Func tion Library. Initial,
" La, 602 aipbiente de teste , 629-631
d!'cumentos alterados,
218-219 utilizando,221
excluindo, 6-«) Function Module Change: Administration Scre en,
639 Function Mo dule Create: Administration, tela, 613 Function Mo dule Displays Documentation, tela, 636 Function Modu le Edit, tela, 609 Function Mo dules , tela, 636
G Goto, comandos do menu, Text Elem ents from the ABAj)/4 Editor, 670 gropos de fun~o componentes,638-64O definindo em sub-retinas,
627-628
listagem de zexb, 622 visi o geral, 601-602 " grupos de tipos criando, 274-275 dermi~o, 273 GUJ Status, tipo de objeto,
693
{con es defini~o, 501-503 exibindo , 506-507 IDs de gropo de fun~o, descri~io, 601 if, instru~ao, 315·326 conversces de dados
exibindd,319 literais durance compararr oes, 317-319 operadores de string de caractere , 321-326 cperadcres Iogicospan operandos, 316-317 ordem de preferencia para tipos de dados, 317 sintaxe, 316-317 utilizando na listagem de programa, 318
If-equal, in Stn1 ~O igual, compar.mdo conteddo de
duas tabe1as internes, 395 . Import/Export Parameter Interface, tela, 605-606 importa~o, parimetros com propostas, 715 des cn~o,607, 6 1 1
H handles, defini~o, 47 Help on , comando {m enu Utilities), 65 Help system, oer ajuda, sistema de hist6ria de tabela automatica descrirrio, 217
toraandc opeionais, 608 valores padrio, fcmecec do, 608-609
impressao, t ecnicas de eabecdhos e rodapes de
plgina
cabecalhos padrao de pagina, ~azenan d o, 5 1 4
-~
~ ~-'~.I.,",.-. J...A:..a.-.....II
m
I X . I -.....- I I
.-L":::":-".-"-.l~'-.l-'~"-I~' -'~'C"" ~"-'-" I
I
APREH DA EM 21 OIlS AUP/4
Iodice, adi~o, instru~o read table, 365
insert lines. instru~o. 392-393
interfaces glob ais,
links de hipertexto, 136- 138
insert, instnl)io. sintaxe,
513-515
in dices criando.l87-189 defuU<;io,183
398-400 instalandc
ddinindo parametres, 620 in terfaces Iocais, definindc parimetros, 620
Hstagem de fonnata~ e comprimentos padrao, 465 listag ens
cabecalhos pamo de pagina, traduzindo, 515-51 7
csbecalhos padrac de pagina, ueilizandc varidveis
em,
517-5 19
cabecalhos padrao de
pagina, visualizandce
descricac, 183-186 determinandoqual e utilizadc (Ierram enta de rastreic de SQL), 191-193
ex ibindc tcdos, 187 ligando, 703
secunddric
mcdificaado,
defini~io. 185
514-51 5
diretrizes para cria/iao,
multiplas impressoras de uma vee, 512 safda de Iista, 511-5 12 'pool, 512-513 ununho de pigina. cc c rrolan dc em instru~o report, 508-511 impressora, con£igura~6es padrao, alterando, 511 .INCl UDE, 172 inclu de, cadeia, defmi;5o, 173 in clude , instru~o. sintue, 598-600 include, progr~mlS defini<;io, 597 segundo (UXX), descnlii o, 602 top o,des cn~0, 602
loclud.. (DOIC), lipo de objeto,693 Includes (p rognm), tipo de objtto,693 incl uindo prognmas, defmiliio, 597
189-190
excluindo.1 9O-191 exibindo, 186-187 selerivos, 188-189 'nIltagens.185 Info Types, ripe de objeto, 693 in forma~6es ripidas
{dicas de ferramen ta), 17
°
in ician dc Rl3, 10 ins erindo a instru~io call functi on autcmaticarneure, 613, 649-650 campos em nbebs , 126 Iinhas em eabelas, 397-400 navegadores de dados, utiliz ando, 128- 130 solucionand o problema.s, 130-131 Insert From Buffe r, controle, (harra de ferramentas Application), U~/4 Edi tor, 58 Insert Line, controle (b2rra
.INCl U-XXX, 174
de ferramenus
Indice (tabe las internal ), def iniliio, 365
AppH"lion), ABAP/4 Editor, 58
Basis. 21 ScreecCams, ...... instdncia central, defini cao, 26
instincia, defini~ao. 26 instnu;ao de contr ole de imprcssao,533 inStn1~O
de dados definindo varifveiscom.
241-243 sictaxe, 77, 263· 264
instru; ao local, 564· 565 instru;oes, descri~o. 236 interatividade e
programacic baseada em even eo, 653·65 4 eventc at selection-screen, 655 eventc at user-command, 655-656 event c initializa tion , 65<4evento selection-screen push-burton, 65 5~656 interceptando eventos command Windows, 31 interface d o usuaric
cbaves estrangeiras, verifican do, 1++145 persccalizacdc, 17 tew, familiariundo-se com, 52 validando dados com, 145 Interfa ce, m enu., 17-1 9 in terfa ces defmindo pa.rimetrOs, 605,607 d es cri ~io,
605 servidores de apresenu liio e, 24
. . ... .. IHDleI I
padrio de pagina. criando,
cabe~ o s
•••
in tervalos de no m e de clien te convenliOes pan atribuiljio de nom e. 691-696 descricao, 47 janelas, abrindo, 76
J-L justificativa, deslocando com a instru~o statement, 4 90~9 1 Lamb to n Co ll ege Web , site , curses de treinamento, 10 lendo
listagem de algumas linhas,362-3 63 para arualizar (tabelas bufferizadas) , descriliia, 203 Ua1, tabela, visio geral, 43·8
lfbt , tabel a, vi sio geral, 438 Ifcl, tabela, visio geral, 438-439 like tln-sJlS in clud e, listlgem, 266 lingmgem de logon e tabew de texto, efeitos de, 159-160
linha de eabe~lh o (..beb interna), defini ndo, 350 linhas, m ovendo p2ta 0 to po da jan ela do editor, 59
a ins ou~o back, 537 ABAP/4 pro grama, 50 sinw:e basica, 236 adi~ comparando
configura valor de sy-subrc pan 373 ad.i~ mone dria, 485 , di<;io uni~ 488-489 adilioes arr edc ndadas e decimais, 483 adi~Oe s de parimetro, eodific.ndo, 576-577 agrupando por eipo p ara reduzir a duplica~o de codigo e tomar a manut en<;io mais f:i.ciI, 274 append sorted by pan localizer a s tres relatorios de vendas principals, 414 area de rrabalhc da tabela, 77 at first para escrever dru lcs e at last para sublinhar a Ultima 1inh.. 441-442 at new e at end, aciorudas par ah era¢es em campo s e alten¢es no myel de contrale, 448 bytes de p reenchimeoto ao mov er dados en tre St rings de campo , 302 dlculos de data, 308 campos , movendo parte d, ,296-297
camp os numericos, movend o pan strings de campo de caracte re, 299 char defmido pelc usuirio de tipo de dado, 271
classificando caracteres acen cuados, como adi~o de rexec , 380-381 CO , cs, CA e NA, exercirand o, 322 cc n staa tes, defmi¢ es de, 262 contagem de linha e eamanhc de 1inha, 510 ccnversee s de dados, 294-295 dadas e estatistica,567 dadcs globais persistentes, 620-621 elseif ~ mais clare que urilizar ifs anin..bados, 320 especificacees de formate de data, <4- 80 eventc top-of-page, 519 eventos acionand o em ordem ditada por prognma de driver, 548 Dio incluindo dentro de condili5es a u loops , 552-553 tres eventos de base, 546 eventos top-of-page e end ~of-pa.ge, 521-522 expre ssao- chave, 368-369 fl, valor atu al de quando enddo ~ execur:ada, 334- 335
733
•• •
.-
- --iNCKE I
, APR ENOA EM 21 DIAS ABA P/4 formau~o e
comprimentos padrao. 465 gravandc icones na !ina, 501-502
if, utilizando no prc grama, 318
incluindo prograrna, 599 inlcic da selcc?o automatica.mentt
inserido antes da primeira lich a do c6digo execuctvel, 551 ins tru~ao call fun ceion,
udlizsndo com parimetros, 612 inst~O case. realiundo urna serie de compan.~oes.
327 instru ~io check. 340 instrU~o cleat. utiliundo para limp er a linha de eab~o, 407-408 instru~o collect,
combinando linhas
conforme sdicionadas as eabelas intemas, 418-419 instro~o continue, 338-339 instro~o describe table, utiliundo vamveis de sistema para quan tificar conteudo de tabela de, 390 instruyao do, adi~ variivd , 333-334 ins tru~io editor -call para
visualizar, editar e estreat a conteudo de uma ubela interna, 396-397 instru~o locI. 564-565
instru~o
move, 298
. com duas strings de
mstI'Utjoes write :adi¢es
de justificati...",
490
cunpo.300 instrut;io move-corresponding,
especificatjOes de po si~o e comprimentc em,
304 ins tru~o
new-line, 528 instru~o new-page print, 533
insuu;io parameters prcgramas que sceitam parimetros de en trada udlizando, 24 8 ~2 4 9 ins~ position.
538·539
instrU~o read table, adi~
de In dice, 365-366 instru~o
reserve, 523-524 instruc;ao select adi ~o de campos correspoadentes, 436-437 com a instrulj-io
appendpara preencher eabelas ineemas, 435
instru~o select- into, 431 ins truc;ao sum pan calcu1ar rctais de myel de concrcle, +49-550 instrU~o type -poo l
342-343 ilusrrandc efeitos da espec ificacio da
coluna de saicb, 469 operadcr de cadeia para reduzir redundsncia em, 83 lendo apenas algumas linIus,362-363 like 'fImUS include, 266
linhas de cabecalho,
mensagem, insuucrio raising. 646-647 m6dulos de funljio, 615 chamada simpl es para, 609 chamados .da Lisugem 20.1, primeiro, 621 chunados da Listagem 20.1, segundo, 621
chamados da Li.stagem
562
ou estrururas, 265
diferentes, 455-+56 para exihir simbolos, 500-501 partmeercs, defmindo
com a instru~o parameters, 248 parimeuos digitados, 5704 passando panimett'os p ara sub·rocinas, 572 passando por referencia, 578-579 passando por valor, 580 passando por valor e resulradc, 582 de comprimenec, 470 restringindo os
multiply, divide • corr espondent es, 307
555-556 dentro de sub- rotinas ,
dDUmaneiras
posj~o e especifica~6es
chamados cia Listi.gem 20.5, c6digo~fonte
stop dentro de evemos.
ts belas d. DDIC
valores que campos-chsve p adri o em, 371 loops sem fim, 330-331 misc:an.s de edi~o, efeitos de 475
pan, 624-625 643 cham2dos da Listagem 20.9, c6digo~fonte para , 647 no -gap, 473 nG-zero e no- sign, 482
definindo como
acioaando, "457
linhas com mesmos
contendo tipos e constantes, 274 inStnl ljio while, 337 instrU~6es add, subtract,
instrU~oes exit, check e
on change of
fabricantes selecicea dos, 78 saida panr processamen to de prognrna morto em suas trilhas, 328 s:udas de coaversao, 477-478 seu segundo prognma,
72 revisitad c, 269 simplificado.76 sfrnbolos e caracteres de desenho de linha, 504 strings de campo
''',;0 varymg,
retornando componen tes em
sequencia, 332 atribui ~o envolvendo duas, 268 conten do cutra string de campo . 265
instru~o
dau.,
definindo com, 264 inSttlly2.0 tables, defmindo com, 269 referenciandc outre
campo,309 ..riiveis do tipoch2r, 267 subcampcs, ~7 1
sub-roeicas chamando a sub -retina mostrada na Listagem 593-594 clwna.ndo uma seri e de, 560-561 defmindo e chamando, 558 sy-db cnt para con rar linlus reeornadas da instruliio select, 81 syfdpos pan visualizar deslocamenrc do
primeirc caraceere coincidente ou !lio coincide nte,324-325 sy-index ccntendc namerc arual de itera~io, 329 sy-subrc determinando se
qualquer linbas fonm selecionadas, 80 valor configunndo de por dentro m6dulos d. Iun\io, 642- 643 tabela ztxIfal, exibindo dados em,135 ubelas e estruturas ODIC. incluindo em strings ,de campo, 266
rabelasinremas adi~ de campo s
correspcadentes para p reeac her a partir de urn banco
de dadcs, 433-4304 adicion and o tres linhas a partir da linhado caberUbo. 355 a.dicionando tr & linhas a parti r cia linh a do cabecalho, e gravaado -as de volta novamente, 361 colocando mais camp os do que existem em uma ubela,432 cc nteado de campo s entre at e eode, +43 copiaa dc dados de uma para cutra utilizan do as instru~oes append lines e insert lines, 393-394 criando com e sem . IWw d. cabecalbo, 352 definindo com e sem urna linha de eabe<;>lho, 351 excluindo linhas de, 409-410 inserindo linhas em listagens dassificadas, enquanto mantendo a ordem de c1as si fi~oJ 375-376
735
-:--~DI"
.I
Maintain of Matchcode Ob ject Fields, tel a, 662 Maintain Select ion Conditions, tela, 664 Maint:l.mSelection Options. tela. 633 mendt, campo, indices e, 188 manuten~o
diaIogo
padrao, dC5crir;rao, 134 mapeando tipo~ de dado ODIC para tip os de dado ABAP/4, 246-247 Mark Line, controle (barra de ferramentaa Application), ABAP/4 Editor. 59
mascaras de edi~o ccmecacdc com V. 712 instru~ao write, 474-476 masC2ttS de cdi~o em V, 712 matchcodcs sabores de, 716
nlidaliiode dsdos, utiliundo pan, 659-666
configurando,659-660 criandc e mantendo cb jetcs matchcode,
660-665 organizando pOI' tipcs d••tualiza<;20, 666
sineaxe, 666 matchcodes Bsicamente configurados, 659-660 m cm6ria em tabelas Intemas, alccando, 709 mcnsagens de erro, caw de diilogo SAP Rl3, 641 menu principal iI'~ coaceiruais, 10-15
area Applications. 12 area Basis,20-22
areas de tela, 15-17
Command Field, 19-20 Interface Menu, 17~19
message, in.s tru~o raising , configurando 0 valor de sy-subre com. 644-648 message, instrosoes, tipos, 681 message-Id, i.nstro~o, sin taxe, 682-683 m estre de fabricante re gistra, arual izando, 13
modiflcandc csbecalhcs d.
p;gin ~
514-515 fonna dos parimetros de armazenameato dentro do udlietric de banco de dados,
231-232
Iinhas em tabelas, 400-403 modify, instrusio, sintaXe,
4CO Module Pools, tlpo de objeto, 693-694 mo dulo d e fu n~o , in terfaces . 'f)eja interfaces modules de aplicativo, visdc gera l, 8
m6dulos de fun~ acivando, 604-605 cancelando a versi o de, 629 chamando , 609-613, 624-625,643,647 dado! globais, 619-622
execueando urn exemplc, 611·613 instrusio call function, 609-611,
613
primeirc e segundo, 621 copiando, renomeandc ou excluindc, 640
cri~do ,60 1 , 6 1 3 - 6 1 5
definic;ao, 600 defini~6 es de dados dentro de. 605 dcsativando, 604 documcnundo excecoes, 648-649 e lTDS,
corriginda, 640-641
excecoes, vida geral, 607 . Iiberando, 628-629 listagem para, 615 localizado existenee,
63H38 parimetfos digitados e cia digiesdos, 608-609 expcresdc de, 715 passandc para, 607 passando rabelas internas
para metodos, 622
viaexporu~o/ importa~a e alterandc, 623-627
via u belss, 623 sy-subrc, valor configurando de inst ru~o raise, 64t -644 measagem, instrolilo raising, 644-648 testandc, 629-63 1 M ove Line, contrale [barra de ferramentas App licati on ), ABAP/4 Editor, 59
move, instru~o adapta~6es aut cm aricas,
293-294 lisugen, 298 regras de ccnversac ,
exibindo, 295 sinraxe,291
737
INDICI I strings de campo, 297-303 campo s numericcs de, 299-300 tipoa de dado de caractere, utilizando, 300-301 tipos de dado
nemericcs, utilizando,301-303 subcatnpos,296-297
move-ccrrespca ding, ins tru;oe.s sinuxc,303 utiliza¢e.s, 302 Multiple Selection, tela, 632
new-page print on , jnstru ~o) sintaxe, 531
new-page print, instru!?O, exib in do a docume ntl;io de palavra-chave para, 534 new-page, instru~o, sintaxe.529 no-gap , adi;io, inst:ro;io ~ te,287, 473-474
n om e, ecoveucees pan. atrib ui!?o de caracteres invaIidos, 689 iaeervalos de nome de cliente, 691-696
objeeos de
N nametab descri~o, 227
papel em progrunas ABA P/4, 227-228 vc:rifica;oes de
ccnsistenciaem, 228-230 natureza ineegrada do ambiente Rl3, 8-9 n avegadcr de dados, utilitirios decidindc quando ut ilizar,13 4-135 fun;oes de, 132-134 inserindo linhas em tab elas, 128-131 SE16,'dados de tabda exibindo com, 131-132 SE17, comparando com -SE16, 134 SM31 0 SM30. 134
cpos, 131 utiliza;6c:s, ]28 new-line. instru~o, sin taxe , 528
desenvohnrnnento,47 paranetros, 247 p ro gramas de dii1ogo, 691 relatorios, 690 tabelas ~ componentes, 105 variaveis.242 vari fveis de sistema, 79 vida geral, 659 nomes de dominios, chaves estrangeiras compostas, 153 nomes de progra m a e caracteres invalidos, 689 nomes de re lat6ri o de cliente, conven ; oes para at:ribui~o de n om e, 690 n o- scrolling, adi; ao, instru~o new-line, 528 no-sign, adi ;ao instru~o write, 481-482 utiliza~6es , 712 n o-zero, adi~o, instru~o write, 481-482 Number Range Ob jects,
ti p o d e objeto, 694
ndmercs. fJU campos numericos; literals numericos; tipos de dado numericos Object Browser Initial, tela, instru;6e.s message, 682 Object Log, baCio (berra do ferramenta.s Application),230 Object xxxn:: Dupuy Active Runtime Object, tela, 227 ohjetos agregados, defini~o, 156 ODIC, arivando, 107 desenvolvimento, exemplcs de,-96 ohjetos agregados, defm.i~ o, 156 objetos de dados descri~o e tipos, 237 literal de ponto fluruanre, 240 bexadecimais, 240-241 numericos.239· 240 -, . String de caractere, 239 visibilidade de, 237 cbjeeos de dadcs extemame nte visiveis, desc ri ~o, 237 ohjetos de dados glohalmente vis!veis. descrkac, 237 objetos de dados lc calmen ee visfveis, descri~ao. 237 objetcs de dados modificiveis, descri~o, 237 cbjetos de dados nao modificlveis descri~o, 237 literais de po nto flutu ante, 240
hexadecUn~,240-241
Oracle, ban cos de dadcs e espa~o de tabela,
adi~o de grupc
de hordes
defm iljio, 193 organizando objetos
de op~o,251 adi¢es para, 249 campo de entrada rorule,
matchcode, 666 oti miudores, 187 Output Length, campo
251. campo de entrada rcrula, alt erando, 251-253
exemplos de, 96
(t ela D icti onary:
umindo, 66 int ervalos de no me de
Maintain Domain),
como adi~o de cain de selecao, 250-251 efeicc de verificando
num ericos, 239-2+0 .string de caractere, 239 objetos de desenvolvimento conven¢es para ambui~o de nome, .(7 defini~o, 44
109-110
tabela om, 253-25~
clien te, 691-696
pc rtabilida de, 45 ohjetos de tempo de execusio,d~~o,47
obtendo a documenta~o do
SAP em dominios, 111-112 occu rs, adi~o, instnJljio append, 357-l59 on change of, instru~o, 451-458 loops e, 452-454 perigc oculto em, 457-458 utilizando, 454-457 Open SQL, 36-l7 descricao, 697 tabelss, operando sobre, 698 vantagens buffer em dados em servidor de
aplicativo.36-37 p onabilidade, 36 tra tamentc automaticc de clien t e, 37 operador de encadeamentc,
utilizando, 82-83 op endor es 16gicos, instru~o if, 316-317 op en dores, instru~o compute, 305
P
sintaxe, 247-248
padrees alterando, 712 Ueas de trabaIho de rabela, 76 ativando altera;6es para, 464 impressora, aleerandc, 511 instru~o write ccmprimentcs, 461-462 for matando, 463-467 listagem de campos chave, 371 pad rOes do usu ari o, . configurando, 280 Page Do wn, pr ession and o, 74-75 palavn-ch ave, docum entacdo, instruljio new -page prin t, 534 paJaV1'2S cbav e de even to, de5cri~o, 654 Parameter Id s, tipo de objero, 694 para m eter, ins trulji o, 668-670 parameters, instru~o, definindo vari,heis com , 247 adi~o de cain baixa, 250
type """" like,~ 253
parimetros
alterando, 607 de expOrta~O, descricsc, 607 de impo naliio defini;io,611 descri~o, 607 tomando opcionais, 608
valores padrio, fomeceado, 608-609 de tabela,descricsc, 607 defini~io. 247, 571
definindo em interfaces globais, 620 em interfaces lccais, 620
varifveis como, 572 digita dos e nao digitadcs, 608-609 exportando a partir do m6dulo do fun"o, 715 form~,572
digitados, sinesxe, 573 digitados, vantagens, 575 digitados 'lJtTIJI.S nao digitados, 573-575
739
-~~~JL-IJK-I~.- .-.-.-.-.-.-.-.~.- .~_~_-_ '--_- _-_740
I
I
,PREND, EM 21 DIAI'SAP/' interfaces, definindo pan, 605-607 passandc pan m6dulos
pass by value and re sult. Iistagcm, 582
de fu n~o. 607 p assandc pan sub -retinas. 576-Sn
passandc
reerodos, 578-583 por referenda, 578-580 per valor, 5S()..S81 p or valo r e resultado, 581-5 83
reais, 572 parametros de armazenamento c ferramenta utilitaria de banco de dados, 231-232 parametres de grupo, instru~ao de bctoes de op~o. 673
parimctros de tabela, dcscri~oj
607
parametros digitados, 608-609
. descri~ao. 573 sinaxl:, 573 vantagcns, 575
parametres fonnais descricso, 573, 715
digitadcs sintaxc, 573 vanu gcns, 575 f)trSUS naD digirados, 573 parametres naa digitados, 608-609 descricao , 573 parametr es reels, dcscri;ao,
5n parametres, adic;Oes, codifican do, 576-577 parametros, nomes, instru~o form, 715 pass by refcrencc,lisagcm,
578-579
pass by value, Iistsgem, 580 padmetros pan modules d. fun,.o. 607 param etres pan sub-retinas. 576-577
listagem, 572 metodos, 578-5 83 por refersneia, 578路58 0 po r valor. 580-581 por valor e resultado, 581-583 strings de campo pan sub-retinas, 575 tabelas int emas para m6dul os de fun~ao, 622-627
eabelas ia remas para sub- retinas, 583 com linlw de cabe~ o, 586 corpo por referencia, 587-588 corpo por referencia, valor, ou valo r e resulcdc, 589-590 descrevendc den trc de sub- rotina. 584-585 m etcdcs, 584 smt axe.584 variaveis.71 5 Pattern, centra le (baIT2 de ferramentas Application), ABAP/4 Editor, 58 perfil de servi dor de apli cativo, 24 perform, instrur; 20 sintaxe, 560 utiliza ~o de, 558
personaliZ2odo
interface do usuario, 17 ubelas,98 pesquisa descri;6es d e camp o, 82 prognmas,67
.oj< 14mbfm lccalizadc
531
tipo s de programas de dalcgo, 46 relatorios, 45-46
-
eveneo at user-command, 655-656 evento de inicializa~, sinuxe, 654 pushbutton, sintaxe, 655-656 interatividade de, 653-654 programado res, conhe cime n to da ar ea fun cional e, 9 " prognmas convenliOes para atribuic;:ao de nome, 47-48 criando processo pan, 48-50 solucionaodo problemas, 50
em lore, chaves estrangeiras e. 152 include defmi~o, 597 ~e
superior,
descrir;ao. 602 segundo (UXX). des ai~, 602
prop6sito, 8 visio geral, 7-8 RJ3 Analyzer Identifier , tipo de objeto, 694 RJ3 Data Dictionary
(ODIC) campo s. controlando a
47
programas em late, chaves estrangelras e, 152 publica~o. perfodos d e,
eventc at selection-screen, 655
evenrc selection-screen
-
descri ~o,
C ommand F ield, 19-20 Interface Menu, 17-19 platafonnas e bancos de dadossupo~dos, 2 1
salvando altera垄es, 54
programas de cliente,
eventc
pools de tipos cons tant es e, 262 d.fini,.o. 273 pcrta bilidad e do codigo, 36 objetos de desenvolvimento.45 posi~o e comprirnento, especifica;oe.s, li stag em , 470 posi;io, especifica~o, instnJ;io write, 468-470
ABAP/4 , listagem, 50 Pri nt Param et ers , t ela,
execu~o, 47 procurando, 67
c opy, n Save As, 77 programa~o baseada em
659 po ols d e ta bela, descri;io, 98
eveneos, 74.-75 primeiro program;
ABAP/4 Editor, 53 Printer Macros, ti p o de objeto, 694 processamento de blo cos,
meou
(dicas de ferramenta), 17 ponto Iluruante.fiterais, 240
eventc s, 75 Page Down, seque ncia de
induindo, defmi;io, 597 cbjetcs de tempo de
6S4 processos de trabalho, 31-32 Program, comandos do
informa~6es ripidas
posi ti on, in stru;io, sin tax e, 538 pre ssion ando Back, sequencia de
Print, ccntrcle (barra de ferramentas Standard),
de.scri~o ,
plataformas suportadas pelc R/3 ,21 ponteiros d e m ouse,
pontos decimals, campos, 701 po ol de tabelas descricao, 98 resericees, 101-102 poo ls de dados , desc:ri;2o ,
~, m
ano s fiscais, 439
Q-R
exibi~o de, 71 defmilioes, exibindo, 70 descri; io,67 estrururas, 68 objetos, imporUncia de,
96 paisagem de sistema .
quantidade, campos, definj~o, 170 quebras de pagina, causando, 530
d.fini,.o, 26 de, 67 eabelas, 68. 70
po si~o
R/3
ambience, natureza integrada, 8-9 arquite rc ra de siste ma definindo, 27 servidor de aplicadvo, 24-25
servidor de apres enta~io,
24-
servidor de ban co de dados,25
servidores, configurmdo, 25-26 clienees do sistema de instala;ao, 36 iniciando, 10 menu principal , 10 area Bas"is, 20-22
areas conceituais, 10-15 areas de tela, 15-17
utiliz.ac;:6es, 68 R/3 Library help. ABA P/ 4 Editor: Edit Program, te la, 65 rad iobuttons, instru;io, parimetro de grupo, 672-673 raise, instnJ~ configurando 0 valor de sy-subrc co~, 641-644 utilizac;:oes. 716 read table, instruliio
tabelas ineemas, urilizando com adi ~o de comparaliio,
372-374 adi;ao de Indice, 365-366 adi c?o de pesquisa binaria, 370 com a di~ o de chave, 367-370
742
INDICE
APRENDA EM 21 DlAS ABAP" nenhuma adic;io, 370-372 sintaxe, 364-36 5 eransportandc a .eli,.o, 374-376 utiliUtjoes. 709
r eativandc domfnios, 705 re cri ando tabelas, 232-233 , 705
r ecursos de referencia online, 10 refresh, instrucao, sintaxe, 405 registros Mestre do usuario, status dependence do clientc.35 regras de conversso, exi bindo com a instru~o move, 295 reindexando, in serindo
linhas e, 399-400 relacionamentos de chave
estrangeiras,
esrsbelecendo, 717 r eIacio na m en to s de chave
primdria, tabelas de exemplo,438 Relation IDs, ripe de obj eto, 694
relat6rios componentes, 46 convencoes para
arribuicic de nome, 690
dez liscas principais, criando,412-417 envian do por fax, 511
impressio em multiplas imp ressons de urna vez, 512 in strUljaO appendsorted
by, 412-413
telas,45
release, fun~o cance kndo.629 procedim en to para, 628
renomeando m6dulos de 拢Un~o, 640 Report Writer, tipc de ob jcto,694 report, instru~o adi~ line-count, 521 adic;oes, 712 tamanh o de pagim., formatando, 508-511 Repository Information System, tela, 631 Repository Information System: Function Module, tela, 632 reserve instru~o, sintax e, 523 Restricting the Vendors Selected listing. 78 reutilizandc domfnios oersus criando, 104路1 05 Revised, versoes de tabelas companndo com Active, 222-223 descarundo,223-224 descricso, 222
rodapes e cabegalhos, 513-524 rcdapes, utilizando a instru~o
skip, 535
rolagem, areas alocando, 697-698
descricao, 28, 236 objetos de dados e, 237 roll-in/roll-out processamento, defini~o , 30-31
roll-outs, proposit o, 698 . r6rnlos, instnlc;ao parameters, 251-253
s
listagem simplificada, 76 segundo prognma in clude
sa fda de Iista, impressao, 511-512 safdas de ccnversac e instru ~o
write, 476-479
exibindo as existentes, 478-479 lista gem, 477-478 re tinas de cc nversao dentro de domfnios, 476-4 78
salvan do a1t era~oes de programs,
54
dados, restandc mcdulos de fuo,.o, 631 elementos de dados, documeeeacao, 113 SAP. documenta cic sobre domin ies, obtendo, 111-112 SAP, sit e da Web, curses de
treinamentc , 10 sapgui.exe,24 Save As, comando (men u Program), 77 Save. botao, 12 Scr een Cams, 44 Scr een s, tipo de obje to, 694 SE16, nave gad cr de dad cs exibiado dados de eabela com 0,131-132 fun,oe, do , 132- 134 SE17, navega dor de dad os, comparando co m 0 SE16,134 SE63, transa ~o , tra duzi ndo
elem en tos de text o, 517 Sear c:h/R.eplace, tc:la, 54-56 segu n do programa listag em, 72 Iistagem revisitada, 269
'.
(UXX). descri~o, 602 select single. instru~o, sintaxe, 83-84
Select, controle (barra d e
ferra mentas Application), A BAP/4 Editor, 58 select, ins tru~ o, 72-76 adi~o de campos ccrrespcndentes, 432-434 area de trabalho expllcita, 77-78 areas de trabalhc de tabela, 76-77 chaves estrangeiras e, 658 cl:iusuhwhere, 78-79
codificando pan indices,
eabelas in tenus adicionando linhas uma a uma, ~34-437 preenchimento,
opcoes, 437 select- toto, in strufiio. ~31 select-o ptio ns, instrufi3o. 672 sequencia de clas:stfica~s'o bindria, definifiao, 379 seqde ncia do pr ogra ma, con trolan do ccmparando com as instru~oes exit, contin ue e che ck, 341
inst royio check, 339-34 1 instru~o
continue, 337-339 instro~o exit, 327-328 servido r de banco de da dos, des cri~o. Z5
188
detertninando qual Indice ~ utilizado para, 191-193 em adi~ao de eabela classificando , 428
regras para ur iliaar, 430
sintaxe, 426 estrutura 51St, exibindo, 82 instrU~o tables ,
interagindc com , 269-2 70
processamento cia inStru~ o
sy-subrc, 79-80
AVI select,
74
proce ssamento de Back, 75
processamento de Page
Down, 74-75 sintaxe,72 sy-dbc nt, 80-81
servidores
aplicativo, 2-4-25 irea de rolagem, 28 arquite rura de, 27-36 buffer em dados e O pen SQL, 36-37 cliente de logon, 32
compo nentes do processo de , raballio,31-32 con texte de usuario, 27-28 passos do diilogo, 28-29
passos do dialogo , iaiciando, 29 prccessamento roll-W ra ll-out, 30-31
tabclas. tipos, 32~36
apresentac?o, 24 banco de da.dos, 25 confi gurando, 25-26 servidores de ap licativo arquitetura de, 27 area de rolagem, 28 cliea ee de lo go n, 32
componentes do processo de trabalhc, 31-32 cont exte de ususrio, 27-28 passos do dialogc, 28-29 passos d? dialcgc, inicia.ndo,29 processamento roll -in/roll-out, 30-31 cbelas, tipos, 32-36 trocando dados com servid c res de apres enta~ o , 31 descrici o, 24 urilizando buffer em dados e Open SQL, 36-37 servidores de apresentaclc descri ci c, 24 tr ocand o dados com servidc res de aplicativo, 31 servidcres, configurando, 25-26 sessses, abrindo, 76 set blank lin es, instru~o, sintaxe, 540 set margins, instru ~ o , 533 seta para baixo , te cla, ajuda F4 e, 150-15 1
servidores de
seu primeiro programa ABAP/4,li,tagem , 50
apresentac;s'o, J 1
seu segundo programa
trocando dados com
743
r
r .; ~
'744
r'
r> r>;
r-
r-
~
r>; I
~
r:
~
r>
r-.
~
~
»<:
r>
»<.
r
r
.....,~. , .
~
~
'""'
r
"
"
~
" " '"
~
"
~
-e-,
-
"'
-r-,
~
--..,
''Ii'
iNOICE
.lPREND.l EM 21 DIAS ABA P/4
Iiseagem, n liscagem revisicada, 2 69 Iiseagem simplificada, 76 Short Text, campo eela Dictionary: Change Data Elements, 112
inscruc;ao case, 326--327 check, 340-Hl .
inscrucac new-line , .52 8 instrucic new-page. 529
instrU'?o clear, 287, 407 com adifjio, 289-290
instruc;io new-page print
instru~o
instrur;:ao on changeof,
instru~o
inStru~ o
collect, ..17-422 compute, 305
tela Dictionary; Maintain Domain, 108
instru<?o C ONSTANTS, 262
tela Di ctionary: Table/Structure:
instn1~o continue, 338-339
Chang. Fields, 116 sim bo los deficicao, 500 exibindo, 506-50 7 sim bolos de campo Iiseagem, 309 u tiliza¢es, 310 sim bo los e caracteres de desenho de linha Iistagem, 504
aintax e
instru<;ao do, 328-329 varyin g, ad.i~o, 332-3 34 v:uyinglenddo, adi~o, 334-335 instru~o editor-call,
395-39 7
ABAP/4,236-23 7 event o de inicializacao,
instru~o, 560
instru<;ao exit, 327-328
654 evento selection-screen
insrrucao form , 559
pushbutton, 655-656 ins rrucac add, 306-307
instI1:t~·o if, 316 instruljao include, 598-600
inStru<;20 add-corresponding, 307
instru~o free, 403
instru~o inse rt, 398
ins trucio insert lines, 393 inStruljio lo op at, 359-3 60
in strulfio appen d, 354 occurs addition,
adi<;5es from, eo, whe re, 3 62~3 63
357: 3,9
instrucao que pede aleerar 0
inStruc;ao appen d lines, 392 instru<;3a append so rte d by, 413-417 inStruyao at end of, 444
processamento do lo op, 364 instrucio m essage-id, 682-683
instru<;ioat fIrst, 440
ins cru~o m odify, 400
instru<;io at new, 444 in Stru<;2o back, 537
instru~o mo ve, 291
instruljao call functi oo , 610-611
inStnlt;aO move -corres ponding, 303
instru~o
ins tru~o param eters,
247-248
liaha,
especificacoes de po si~o
e cc mprimenco, 341-344
area de rrabalho explfcita, 77
306'307 matc hco de , 666
Stan dard Task, rip e de
areas de rra balho de tabela, 76-77
mes sage, raising, in scru<;ao, 645
Standard, barr. d. ferramentas, 16
clausula wh ere, 78-79 em ad.i<;3.o de tabela,
selection-screen blo ck with frame, 667
ABAP/4 Dictio nary butto n, 67
tabelas int ernas , 388
ABAP/4 Editor conero les, 52 -53 recu rso Find and Rep lace, 54-57
estrurura 51St, exibindc, 82
sites da Web para curses d e trcinamento,10
adi<;ao type tJtnus like,
proce ssamc nto da
Size Ca tego ry, campo, descricao, 195 ski p sy-Iin ct, utilizac;5es, 713 skip , instru~o, sintaxe, 534 SM31 e SM3 0, navegadcres
426
inscru~o AVI
select, 74 processamento de Back, 75 processamenco de
efeiec cia tabela de
Page Down, 7+.7 5 sy-dbcnt, 80-81
verifica <;3.o em, 253-254 ins tru<;ao positio n. 538
sy-subrc, 79-80 instru<;2a selec t single.
instru<;ao ra dio bu ttons, parimetro de grupo,
83-84 inStrulf20 selection-screen,
673 inStrulfao raise. 642 ins rrucio read table,
pardmeerc de cain d e seleljia,671
364-36 5 adi<;ao de Indice,
instru<;ao select-options, 672
365-366
instru~20 set blank line s,
adi<;ao de pesquisa
540
binaria, 370 com adi<;iio de chave,
ins ttu <;ao skip, 534 instru<;ao SOrt, 376
367-370
como adit;i.a de textc,
comparando adi<;ao,
379-382
372-374
ins truljio sum, 449
sem adi<;5es,
instru<;20 tab les, 268· 269
370-372 tran spartanda adi<;io, 374-376 ins tru ljio refresh. 405
"
Application), ABAP/4 Ed itor, 58
Standard Roll, ripe de
bc ee es de op~o, 25 1 adi <;ao de lecras minusculas,250 253 adi¢es a, 249 com o adi~o de caixa de sel~o, 250-25 1
Stack. controle {barra de ferramentas
mstruljOes add and add-correspondin g,
reserve, 523
lnstculjio select, 72
perigo oculto ern, 457- 458
adi<;ao d e gropo de
389
contagem de
508-5 09
451-452
241-242,263-264 inserucsc dele te, 408-409
report, tamanho
de linha e adir;:Ocs de
on, 531
instru~o data , 77,
instru~o describe cable,
instru~o
de dadcs, 134 solucionandc problemas do~os,criando, 111
objeto, 695
Command Field, 19-20 Find bu tto n, 28 0
start-of-selection, automaticamen te inscrindo Iistagem , 551 Status, comando (m en u System), 20, 95
elementos de dados , criando , 115-116
stop, instruc;ao inStruc;ao loop at e, 364
in ser indo linhas em tabelas, 130-131 links d'e hipe rtexeo e
strings de ca mpo atribuicac envolvendo
ajuda Fl , adicionando ,
ucilizacoes, 714
138 navega dor de dados SE 16,
duas listage ns, 268 con rendo ou tra listage rn d e String de campo,
132 programas, processo de
265 defmi lj2o, 263
cria~o, 50 tabelas rransparentes,
defmindo
criando, 119· 122 sort, ins trut;i.o, utilizando com tahelas internas, 376-382 SPACE, constante, 262
inscru<;aotyp e, 270-272
spaol, irnp ressaa, 512-5 13
instruljio while, 336-337
Spool, tipo de objeto,
instru<;ao write, 46 7-468
ohjeto, 695
694- 695
como tabe la ODIC ou lista gem d e eserueura, 265 lnstruljaO de dadcs, 263-2 66 ins tnl~o tables, 268-269
instru~ao move, 297·303
camp os numericos de, 299-300
745
'"'
~
r> r-
~~~~0rr~rr~0rrrrr~~~r~~~~~~~~~~~~~~~
746
~
"REND A EM 21 DIAS ABAP/4
cipos de dados de caractere, utilizando.300-301
tipos de dados numericos, u tilizan do, 301 -303 Iistagem da adi~ao
variavel,332 p assando para su b-retinas, 575 utilizando como varidveis do tipo char, 267-268 strings,localizado todas ocorrencias de, 56 Structure (DDIC), tipo de o bjeto, 695
subcampos instru~ao
por valor e resultadc,
syststnu~ture,instru ~ao
58 1-583 passando st rin gs de
select, 82 System, comandos do menu
campo pan, 575
Crea-te New Session, 76
passando tab elas internes para, 583
Status, 20, 95
sy-subrc
configurando 0 valor de
corp o por referencia,
de dentrc de s
587 corpo por referencia,
m6dulos de
valor, ou valor e
funliao, Iistag em,
resu lta do, 589,
642- 643
590-591
instrucio raise,
des crevendo dentro da
641-644
sub-retina, 584-5 85
m essage, instrucao
sintaxe, 584
raising, 644-64 8
tabelas com linhas de
ins trucic select, 79-80
cabe"lho, 586-5 92 move, 296 -297
inserucaowrire, 471-472
sub-retinas chamada urn mostradc na Listagem 18.12, 594 chamando uma sene de listagens, 560~561 definindo em grupos de fun c;aovia F Ol , 627-628 deixando, 561-563 descricao, 558 efeitos de exit, check e
tipcs, 559 comparando com comparando com m6dulos
charnando, 559-561 passando parametres p ara , 576-577 rnetodcs, 578-5 83 p or referencis, 57 8-580 par valor, 580-581
sy- to ccu , areas d e pagina~ao e, 710 sy- uzeit, campo 245
comparando co m ext ernos, 593 definindo e cham ando , 559-561 deixando, 56 1-563
adi cionando lisragem, 2 86 list agem, 283 sy -daturn, campo, 245 sy-dbcnt, selecion an do
instrucao, 81 sy-fdpos, 324- 326
sy-index content namero atual d e itera~oes , listagem, 329
svstoc Message ID, tipo de objero, 695
campos,adicionando abordagem top-down, 122- 124 acresc entan do , 126
inserindo, 126 campos, excluindc, 127
campo (Dictionary: Table/Structu r e: Change Fields, te la) , 117 tabela, campos campos de quanridade, 170-171 campos monetarios, 168-169 tabela, dusters, descricio, 99
tabelas Active, versoes ativas, comparan do com tabelas d e banco de
dados, 226-22 7 alt erand o a nom e de, 124
0
namero de linhas, 389-390
excluindo, 125, 705 exibindo, 70
determinando se vazia,
[erramen ta ur ilitdria de
esrrururas para
389
banco de dados,
testando e para
excluindo e re criando
m odificando
cccveocses p ara atri builiao de nome, 105 eleme ntos de dados, 102
configuracoes tecnicas buffer, utilizando , 196-213 buffer em re sume de
por dentro, 232 -233 hi st6ri co de tabela au tormcicc descriliw . 217 u tilizaado, 221 in dices criandc, 187-189 descricso, 183-186
dererminando qual e
tabe las, 212-213
u cilizada com a
campo Size Cate gory,
ferramenta de
195
cemrios com tab elas
195-196 res ume, 221-222 tecnicas de u sa de buffer, 204-2 05 cipos de u sa de buffer, 205-209 cop iandc, 124- 125 criandc, 106-107
ins u uliao append, u tiliz wdo, 353- 359 instru~a o loop at,
utiliz and o, 359-364
instrucac sort,
vantagens, 185
exibindo, 193
403-406 indice, defull~o,3 65
191-193
211-212
ndmero d e exte ns oes,
408-412
excluindo 0 conteudo,
rastr.eio de SQL,
exibindo codas, 186-187
classes de dados,
ccne ea do, 388 excluin do linhas, 406,
instrUc;ao read table, utilizando, 364- 376
de u so de buffer,
bu ffer, 210
Tab. Maint. Allowed,
21 8-220
dete rm inand o
cornponent es de
deslocamen eo de
T
defini~o . 68 documentos alcerados,
chave estrangeira.143
193-1 95
sub-retinas in ternes
sy, variavel
internes, definindo e
e,710
de fun,ao, 600 descricio, 592
Iistagem, 562 com in rernas ,
396 sy-tabix, cperacses de loop
in temas, 593
sum, instrucao, 449-451
593
in st ru cdc editor- call,
sub-retinas extemas
stop dentro de extemas, comparando
variavel, depois da
--::iH::DI::::.J CE
indi ces secundarios criando, 189-190 d eflnics o, 185 excluin do, 190-191 exibindc, 186 m tem as
conteudo classificando de, 376-382 con teudo comparando de do is, 395 cop iandc dados entre, 393-394 copiando p art es de, 392-393
urilizando, 376-382 lend o dados de, 359-376 linh as inserindc em, 397-400 modificand o Iinhas em, 400-403 passando m6dulos de fun.,.o, 622-627 preenchend c a partir de tabelas de banco de
dadcs, 425-437
preenchendo utilizando a insrrucio collect, 417-422 processamento de
DDIC,67-68
definii;ao, 350 -353
iccenupcso de
de duster
definind o, 349
controle, 440-444,
descricso, 99- 101 restricoes em, 101-102 vantagens, 100 de verifica~o , 143
definindo a Iinha de cabecalho, 350 definin dc 0 corpo, 350
445,449,451-458 programa para obter informecces sabre, 390 -391
747
testando chaves estrangeiras, 149 modules de fun~o, 629-631
Text Elements from the ABAP/4 Editor, comando (menu Goto), 670
tipo de dado char definido pelousuario,listagem,271 tipos de campos e chaves estrangeiras, 156-160 campos-chave, 156-160 candidatos-chave, 156- 157
tipos de dado numericos descri!rae, 245-246 instru<j3.0 move, utilizando, 301-303 tipos de dados definindovariaveis com mapeando tipos de dados DDIC para tipos de dado ABAP/ 4,246-247
tipos de clados de caractere, 244 tipos de dados de comprimenrc fixe, 244
tipos de dados numericos, 245-246 instrusao if, ordem de preferenca, 317 rabelas, alrerandc em, 127-128
<
Titlebars, tipo de objeto, 695 to addition, instru ~o loop at, 362-363 Tools, comandos do menu Administration, 22 Development Wotkbench, 12
top include, programa, descricdo,602 top-of-page, eventcs acionando, 550-551 . f eventos end-of-page, 521-522
insrrucio write, 519 traduzindo elementos de rexto, 515-51 7 transacoes, definicao, 19 Transaction Codes, tipo de objeto, 695 transportando adi~o, instru~o read table, 375 tratamento automaticc de cliente, Open SQL e, 37 tutorial on ABAP/4 Editor: Edit Program, tela, 64 Type Group, objeto de Grupo, 695 type, instru~;io, sintaxe, 2 70-272
type-pool, instrugac, contendo tipos e constantes, Iistagem, 274
U under addition, instru~a o write, 472-473 Undo, conrrole (barra de ferramentas Application), ABAP/ 4 Editor, 58 unidades de modularizacao descricso, 545-546 utilizacoes, 546 unit addition , instrucao write, 484,486-490 User Defaults, comandos (menu System), 511 User Profiles, tipo de ohjeto,695
Utilities , comandos do menu A BAP / 4 Key Word Doc, 534
Help on, 65 utilizando e alterando sao identicos em fun~o, llstagem,579-580 UXX (segundo programa include), descricac, 602
V validando dados, 145 valores de componente gone, 442-444 valores de X, cardinalidade, 155
valores de Y, cardinalidade, 155
valores excluidos (excludes),633 valores iniciais padrao, deÂŁini~o, 286 valores, excluidos, 633 Value Table, campo chaves estra ngeiras e, 165-166
como proposu Check Table , 166- 167 sem chaves estrangeiras, . 168 variaveis
acessando incorretamente antes de definir, listagem, 243 cabecalhos padraode pdgina, lisragem, 517 compuuundo, 707 convencoes para atribuicao de nome, 242
'
-
de sistema, Iistagem, 28'
rrrrr0~n0~n~~nn~n~n~
i'
I definindo, 714
como pargmetros, 572 insrructo de dados, utilizando,241 -243
instru<;io form, 571 -573 inStru~o
param.eters,
utilizando, 247-251
tipos de dados, 243 -247
definindo dados, 566-568 globais, descricio , 563 insrrucrc dear e, 287-288, 2 89-290
local, descri~ao, 563 passando, 715
tabelas definindc areas de trabalhc, 564- 566 vari dvels de sistema comumen te utilizadas , 280
descricao, 79 exiblndo, zso instru<;io describe table, 389 localizado, 283-286
nomes de, 79 sy-dbcnt, 80-81
sy-fdposvoperadores para, 324 sy-index, 329 sy-subrc, 79-80
variaveis globais, descricdo, 563
varisveislocals, descricto, 563
variaveis t ipo c, move ndo para ou de strings de
campo contend o tip os n umericcs, 300 variaveis tipc d, expressoes matema ti cas e, 308 variaveis, com putando, 707 variavel, nomes, 706
varredura de intervale de fndice, definicio, 188
varying addition, instrucdo, 332-3 34
Ven dor Master Update Transaction Address, tela, 12 Vendor Master Update T ransaction: Initial, tela, 12
verificacac, campos de, ch aves estrangeiras compostas e, 152 verificacio, tabelas de, defini~o, 143
verifi cando chaves estrangeiras,144-145 versdo, nfveis de, visao genl,95-96
versao, notes de, acessan do,
adi~oes
no-zero e no-sign, 481~482 :ldi<;6es redondas decimais, 482-484-
w where, adicio, instrucio loop at, 362-363
where, clausula
comprimentos padrao,
instruljaoselect, 78 suportada par indices, 185
461-462
desloeando a justificativa,
Where-Used List, controle (barn de ferramentas Application), ABAP/4 Editor, 58 while, instru~o, sintaxe ,
490-491
especificact o de comprimento, 470-4 71 especificacao de posicao, 468-470
336-33 7
especificacoes de posi<;ao
Windows, ambiente,
e comprimentc,
iniciando 0 R/3, 10 Windows, eventos,
341-344
interceptando, 31
367路370
,\
695
96
versc es de mo dules de fun ~a o , Ian cando, 62 8-629
versoes d e tabelas eomp arando Revised e Active, 223
descanando Revised, 223- 224
ternporfrios, 223 versoes te mporaries de tabelas, 223
visibilidade
objecos de dados, nIveis de, 237
strings de campo , 270 vis ualizando
paginando cabecalboe, 514
programas de inclusao e incluldos, 600 safda no spoo l, 512
write, instru!;ao
adi<;ao de nenhuma lacuna, 287, 473-474 adiljao de unidade, 486-490
adiljoes de formaeacsc
grafica como Icone, 501-5 03 como linha, 503-506 como simbolo, 500-501
exibin do simbolos disponfvel, Icones e
caracteres de
desenho de linha, 506 -507
sintaxe, 500
adi<;oes monetaries, 4 84-486
adicoes monetarias e de unidade, 484
.'
I,"
!
exibindo exisrenres,
521-522
478-479
retinas de conversao
evento top-of-page, 519
eventos, efeitos em,
dentro de
domfnios, 476-478 sintaxe, 467-468
550
Iormatacio padrao, 465-467
subcampos, 471-472
dOlUS, 463
tabelas intemas e, 716
estouro, 464
u nderaddicioD,472-473
numeros, 464
vezes,4 64 formatando da ta, 479 -481
mascaras de ediljao, 474-476
saidas de ccnversao, 476-479
with key addition, instrucao read table, Workflow, tipc de objeto,
evento end-o f-pa ge,
z ztxa, grupo de fun~o, listagem, 622 ztxlfal, tabela, exibindo
dado s na, Iistagem, 135 zxtl 901listing, 599