Vous êtes sur la page 1sur 386

KEN GRtENWPOD e o'president" da ernpresa de

.\

.recenternente lecionou curso~ <!eABf\P/4naSAP . Americaem Foster City. -

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 ~

. ....

.~

. ,: dados e dorntn ios

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


. .
t...... ". ..' . '.

. , .~,

_~" . De~e!J'vol~ e. uti U~~~fetjvap:!~oterel.atqrio~ , .. . iru:luiiidG a sua fo'rlnata<;ao"com 'sfmbolos :." ' . . , ' ".... ~...... .grM. e .fc_oneS':~ . ;' ,; ., icos : "-:'.'" . .
~,

~ . . .,~.. ; .~. . ., UtilJ7e.o Data Di~ioriary p-;;';a-exibir tabelas, .~' . chaves estrangeir~:e'indiCes secundarios . .; . ~ . ' ',i ," , ~:.~

6/'
'J
. ~

:" ?~; ~ : :: ' ~~~

!il,

j -'7

...."

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! C6digofonteli>m ABAP/4 testado para os prog~as de exemplo, e~:~.t~ibS e solucoes lnciuldos ~o Iiv o.

'50'

'-

Utillta rfos originai s,


....cC

. '
\IV\IV\N. ..

.... . "", c .ampu,<;.car.-: ' " "' -'--k


-'-~__1__:;_--'

..J

)
1 ,,;~};i:.;D~~ :>,;;l~l:{~ .',.,~.\t\'i;:1 "'_~ ~ ~i~r~).f ,~ it.':~W ;i ;~~ .:~.~.{.~~1:; ~ ' :: \1:.'~;,, .f/. . ,1 2 ; .'I,,! I~n " .it-."\ ;o;.;~, pla .3:q:,:~r' ~ ~ ,JI,~~,~:, Dia 4:\:!11_" ~'1~' , 3 . -, "" 1\0 , ;- .:,'. . .I< L ~'. .. . ... III!,I'. ~ ", ' ..,-' ,'.-,. ,-,' 1" , .1 .<..iM.-: ...';'. ,,,,,.... "' .(, ~". " .
"

. ,.;) ;".;,Dla 6.
Coo e utilI Indices
seQ.Jrxlar!os aproprieda menle;config ure osalriltJlos16cnlcos para labolas Iransparenles: configure 0 usadebuller para tabela s, Ap llqul 0 ulW1aria de banco ee dados para newtar I vo rUlcllt;ao decoer l!nd:l; atesteInlormaes de banco dedades espadlicas de labela; Insira a rec ra labelas nobanco dedados.
Enlendaos eLemenlOi de $lntaxe do ABAPI":

;i;f.{~:: :,:~,.,

";

" 'ill ) ".;


cescreva0 conce~o de obielosde lidos . sua visibilidade; ulihe Il!lBis e
entendacomo codi~ce r

Enlellda a que' um sls lema 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


tabela e !lC1J CMlelldo

ulilizando 0 Dala Dictionary; adldone comenl4rio1e documen t~o. eeus prog llmas.

Descreva asdlIerent;aS 8l'ltrt labelas transparentes, labolat de poole de du slp. r, erie domlnlos. elementos de dadose \abelas transparentesno Data O!cllonary .

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.

cada lipo delifUI e utilize ; constantes,


"

')
')

':' i

D!~.;~ ,~ ;:',~~~i:,,:i:I,~E~,': ':_-~'?Rf~ ',~,~~,fi~,:~}:~


Ulillze VlIIilI.velsde sis tema comuns8 se]o CIlPaz de exibir oukx:aIiZOf qualquer vari<lvel de lllslem.; pl'eveja e exeaJle convolS6es de oaocs utiliz enda InSllUl(6es deatribulrrllo; codillque ellpl'ossOes malematk:as,

'j ; .Pt ".;!" :~}.1 ',,'; , ;') ~ :':;':'~'-:~, : l1:t~~~:" ~.'~~~ 9, ~ >"' !~ ; ~ ,J.l'!i..,:i.:P(~ 1~.:~\\;t:, .',
ISlnSIrues comunsdlt conlrole i f.
Cod~e

I'

UIiIlzoa nstM;Aotab 1e s para dellnlf strings de campo ontenda a Inst J;fto ; n types eutilize-ap8fa delinlr seIlSPJ6prios tipe s dedados.

!0:tt~" ~,i~\2.(: ~ ~ ;~ ~(

v,

Dla13

Dla14
En lerda0 ele~o do! \IpOs de dados nasalda: utlllza as oP95es de)Ofma la~o

case. do ewhtl e:
cootrol& I seqiillnclado progrlm au!iIIzando ex i t , conti nuee chec k: codique especficllt;ees simples dlt pos~o 0 decomprmento nl Ins trOlfAo wri te o

Defina umalabE IaIntema Reconh~ 0 opefalb de com ousom umallnhade corpo delabltla It umze-e para tester a oxlstllnclade ca bSl;alho;preencl\a essa labelautilzaooo append dados emuma labela ehave uma irmade s Inlemae compauuo a cab~lt1o Otl um e dr eade . conteudo deduas label s . Intemas quanta! Iguaklade. Ifabalho explidla; c:lasslnque labeln! kltlt as ' m autilize a ad~!o as text.

Pre&flCha umalabela Jnlama apar1ir deuma labela debanco dedado. u~lizando aseSlruturas (consll1lcl ~ ma tser lcienles ; relllillt processamento de ln lll"u~1o decontmleem lab s Inlernes utI~zando ela at e cn c hange of.

da ~o i,fr 1te;

utilze seeasdecoovorstio e deiecteSOlI preseo", de ntrodedomlnios.

,
:t"

\.'1; :l . ~

, D" ' 15. If,.''.," '. '::':'!D . 1 ~/:!;',;I:: j~;:;~. o E\ " la.. '1 la l;{1

,{,

,~ :

': .~ ". . :. '":' , -,':\-\,ii; .1 ; .. ; "

I: !;;: ' Cia18:~ :'{:'~:~:


Passe pa ffimetros dlgiledo! II nAo lIigilados para sub-rolinas; passa paril etros 116lr ~S m Il'lllIl ltas: pol' re'orAnda, e parvalore porvaklrIt rosullado; pas~6 slrlngs de campo e labelas tnlemas para umasuIHotlnl.

,Dla 19 .f

',\ ':'

,:.

"

Dla 20

Dia21
Cod lfiquelela. dnse lel;lo que interagem com 0 osuarb; utilize elementos de !orma!a~o para crlar lelas desel iO!o bem e pl'ojeladas eellcienles: utilize lelesde snl~o para manter aintagrk1ade dos

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.

UtilizeasIns lrues comuns delormalao 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.

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.

Entonda e utilizea Instr~o in c 1ude; crIo grupes de funyao e I'llOOJos de fun ~D; dannapa!lmellos l deimponaljio, eXpDrlao
e alle ~o .

En tenda 05componenles I a eslrulull de urn grupo de tunr;l o;definadados glDbals 0 sUb-rotinas denlro de umgru de Iunc?o. po

d_.

~--- ~_-...

...... ,,~

" .''''Ko >i>i

- ;1: .-<

rI:!'~~""",.~",,",""-:;"

'''~';'

_ _ 'n'_.,....

~.-

.,.. . .. h
~

'

lido
-n

f~j ~'

r--: h ~c ~
..

CJ

~.

!< o
Z

;lfl l; itr h i
I

P" ~ <

"

Jl

fT1 ;U

J>
CJ

~ ~
o
<1l

~ J>
()

;U

J>

"H o

OJ

J>

CJ

:s

J>

I
I I

, \S

- " : . . . - - -. ._

.1'.

v_ ,.......

_ _

-:....---.1-.........:.... :-;...............-::.:..

~:

.. J.. "-- . .. ,,;. A_ : 4I'4a. ~ ......

~.

...: ..- -_ . - - --

._-----~

-_ ..,- - - -- - .--/

~~

...

Ken Greenwood
Consultor Editorial
Ferna ndo Barcellos Ximenes

~Y

KPMG Pea t Morw;c;k


Tradu'iao
Edson Furma nkiewicz

"Docware Trodu~6es recnrcos

;:;-~ ~ :s SEU CONHECIMENTO '" ACELERE tfl ,f;


o
N OVIDAOE S. CAOA ST IIIO , I.A Nlf'AM ENTOS . C.OMI"ItAS

'lle"o Site

et"

Aprenda
---==.m.: . e.. .: .

~. <"

i!b

Comp leto e

,<>"

ef!'

21 dias.

SAMS

(2
C M'PUS 'A
;

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

s.ns

Dedicatoria
Este liuro ededicado a meus pais. Marian e Vern Greenw ood Obrigado por tudo.

C 1999 , EdilQIlI Camp llS

uea.

lodes os dlrello, reseIVedos e protegid05 pilla Lei 5.988 de 14/12/73,


NlInhuma parte dUI II IJ ro, Sllfll 8utoriz ao;Jo pn~via por 8 $eritD da e dlto ra, pod e ra V

SIr reproduz idaou transmitida sejamquals rOt m os meles emprllgado5: e

. eilltr6nicos. meclrleos, lotogri llcos, grava9!o au quaisque r Qui os. r 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
~Ionts

resultados . US(! da. Inronna~ Iomecida. Reeomendamo. aos Inlar. 'I11ormat;:4o antn de sua UIiIIZ a<,;:iO.

"d".

Paoo Vrtmlel10

""" ee.-_

MatiziII df, AnO'adl Flores E_ _ Rio TBXtQ


Reyjsa o G~b

Adriana Kramer Deborah AOdIg er 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{0211507t99,

E-maU: ....o .~oom.br '


1 S8N 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

;IBLIO TECAS OA PUCMINAS ~ELO HORIZONTE ,

r
I

f GlSTRO 22~.f2-~
IATA:2 / . / ?'L ICERVO;Z3 0 2 9 /
'p , l .. .. __

Q' ,3.....;

Dia 20 D ia 21
SEMA NA

M odu larizacao: m 6dulos de fun,ao, P arte 2

619 653
. 68 7

T elas de selecao

Sumario geral
Introducao
Convencoes utilizadas neste livro

3 Revisao

....... 1
2

Apen dice A Convencoes de atribuicao de nome .


Apen dice B Re sposta s as per guntas dos testes e exercfcios Ind ice . . . . . .. . . . . .. . . . . . . . . .

689 697
719
l

SEMANA 1

Visao geral. . . . . . .
0 ambiente de desenvolvimento
.
. .

. 5 7
7 7

Dia 1

Objetivos do capitulo que R!3 ?

Qual ea fun<;ao do R!3?

8
9

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 . . .

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

Workshop Teste . Exercfcio 1

39

.. , ..
XII
"RENDA EM 21 DI AS ABAp/' SU"'''DGERAl

XIII

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 w here . 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

. 43 43
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 96

. 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 . .

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

Dia4

Data Dictionary, Parte 2 .

. . . . . . . .

. 143
.143 . 143 . 144 .145 . 146 .149 . 149
.150 151

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.

. . 95

97 97 98 99
. 101

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 . . . . . . .

. 152
154

. 156
161

. 163

XIV

I APRENDA EM 21 DIAS ABAP"

SU MARIO G ERAl

XV

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 . . .

as

Workshop Teste .
Exercfcio Exerclcio Exercfcio Exercfcio Exercicio Exercicio Exercicic 1 2 3 4 5 6 7 .

164 168 168 . 170 171 .1 72 174 . 175 . 176 . 177 . 177 .177 178 . 178 178 179 .180 .180 183 . 183 . 183 186 187 189 .190 191 193 . 193 195 . 195 . 196 .213 . 214 .214 .215 .2 15

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 . . .

.. 225 .226
.230

Workshop
Te ste . Exercfcios 1 .\ .

. 231 .232 .233 .233 .234 . 234 .234 235 . 235 . 236 . 236 . 237 .238 . 241 .254 . 255 .255 .256 . 256

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 . . .

Dia5

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 . Exerctcio 1
SEMANA 1 SEMANA 2

Revisao Visao geral ... .... ..

. 2 57 .259
261

Dia 8

Definindo dados no ABAP/4, Parte 2 . .

Workshop
Teste . . Exerd cio 1

Dia 6

o Data Dictionary, Parte 4..

. 217
. 217 .217 . 218 .221 . 221 .222 .223 .223

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

. 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 TA BLES .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 .

XVI

I 'PIE NO' EM2101'S "'PI'

SUMARID GERAl I

XV"

Workshop . . Teste . . . Exercfcic 1 Exercfcic 2

. 277 . 277 . 277 . 277

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
Resumo . .

Dia 9

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

279 .279 . 279 .280 .283 .286 .286 . 291 . 303 . 304 .309 . 310 . 311 . 312 .312 . 312

P&R .. .
Workshop Teste . Exercfcio 1

. 344 . 345 . 346 . 347 . 347

Dia 11

Tabelas in ternas . . . . . ..
Obierivos do capitulo . Princfpios da tabela interna . Definicao de urna tabela interna

349 .349 .349 .350 .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

Utilizando a instrucdc move -correspondi ng


Executando cilculos . Atribuis;ao dinamica
Resumo . .

P&R .. .
Workshop Teste . Exercfcio 1

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

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

.. 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

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

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 . .

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 .

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

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

{VIII , APREHD A EM 21 DIAS ABAP / ~


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 .

S MARlOG U ERAl t

k.IX

Workshop . .
Teste . . . . Exercic io 1 .

. . 412 . . 413 . 417 . 417 . 422 . 423 . 424 . 424 .424

Esp ecificando decimals e arr edondamento Mudando 0 alinhame nto . Resu mo . . P&R ."..

Workshop
Teste . E xer clcio 1

. 482 " 490 .491 . 493 . 493 .493 .494

SEMANA 2 Revisao SEMANA 3 Visao geral


D ia 15

".

. 4 95 .497
499

Dia 13

. 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 .

Tabelas internas avancadas, Parte 2 . . . Objetivc s do capitulo

. 425 . 425
. 425 . 426 .434 .437 . 438 .439 " 440 . . 444 .449 .451 .45 8 . 459 . 460 . 460 .460 .460

T ecnicas de Iormaracao, Parte 1

Objetivos do capitulo . . 499 Fo rmatacic grafica com a inscructo write . .499 Sint axe paraas adiljoes graficas par a inscrucao write a .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 . . .

Workshop . Teste . . Exercfcio 1


Exercfcio 2

Workshop Teste .
Exe rdcio 1 . .

. 507 . 508 .513 . 525 .525 . 526 .526 .526

Dia 14

A instrucao write . . . . . . . . . . . . . . . .

. 461
.461 . 461 . 461 . 462 .463 .465 .467 . 468 . 470 .471 .472 . 473 . 474 . 476 . 479 . 481

D ia 16

Tecnicas de formatacao, Parte 2


O bje tivos do capi ulo t . Ins rrucoes de fcrmaracio de lista .. U tilizando a instrucao new-l ; ne . . . Utilizando a instrufjao newpage . 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 . ..

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 'noM gap . . . Utilizando mascara s de edicac . Utiliza..ndo as safdas de conv ersao Trabalhand o com a formatacf c de data

Workshop Teste .
Exercfcic 1 . . .

527 .527 .527 . 528 . 529 . 530 . 534 .536 . 538 .540 . 541 .542 . 542 .542 . 542

Utiliza..ndo as adifjoes no-zero e no-sign

...
.. 559
ng

9 .622 .623
ng .

Deixando uma sub-retina . Dermmdo variaveis Resumo .. P&R . . . Workshop Teste .


Exercicio 1 .

. . . 561 .563 .568


.568

.570 .570 .570

18

Mc)duLlaI'lzalGajO:

nassanuo

oal~anletroS para

571
.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

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 .

.628 .629 1 .638 .640 .641

.641 .644 .648


,649 .650 .650 .651 ,651 .651

.583
.592

P&R

.595 .595 .596 .596

Workshop . Teste .. Exercicio 1

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 .

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. .. . . .
.597 .598 .600 .601 .602 .604 .605 .605 .607 .608 .. 609

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

610

eo'

.611 .613

.673 .673

-.,.,
,~t..

;il~\
v

IXXII

'------ - - -----'-- - -- - -- - -- - - - - -- - -- - - -- - - ----1


Utilizando a insrrucac message . . . . . Sinraxe para a inst ruci o message-i d Resumo ' .'
P&R ...

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

Workshop Teste .
Exercfcio 1

.681 .682 .684 . 685 . 685 . 685 .686

Introdu~ao
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.

SEMANA 3 Revisao

687
689 . 689 . 690 .691 . 691 697

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 .

719

"

IIIll<OOU(AC

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!

UI 0 leon e Sintaxe alerta para a usa adequado da sintaxe de urn codigo.

Z
~ m

k oove n<;6 e s ut ilizadas oeste lJeiVu[-"o'parect da com est a

o texro que voce digita e a texto qu e voce ve na tela aparecem em fon te monoespacada
para sirnular a forma que 0 texto assume na sua tela. Variaveis e placeholders (palavras que espelham 0 que voc e realmente onoespacoda e em ttouco. digitara ) aparecem em fonre m 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.

V
ENlllOI~
Iliol ~
INAtIIE ~

o kane Entrada destoco 0 c6digo a ser digifod o .

a leone Soido destoco a SOldo produzido pe lo execucoo do ccdiqo.


o leone Analise de signo 0
an alise do oute r, linha por linho.

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

~o
I Fa~a

"-- - - - - - -- - - -- ------'

Um oviso de cvldodc clertc poro urn possfvel problema e oferece conselbos sobre como evlto-lo.

Esses quodros-de FO/iolN eo fOlio oferecem dices perc a que fozer e nco fozer com 0 ASAP/ 4.

que

s cmNUMlIltr...

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. Termos novas s60 introduzidos utilizcndo a kane Novo Terma .

.,

milo ,.

NOYO ...

'.

Sumcirio
Inrroducao
SEMANA 1

.. . . . . .

. . . 1

Visco geral . . . . . .
0 ambiente de desenvolvimento .. Seu primeiro programa em ABAP/4

..

5
. 7 43 95

Dia 1 D ia2 Dia 3 Dia4 Dia5 Dia 6 Dia 7


SEMANA SEMANA

o Data Dictionary, Parte 1 . o Data Dictionary, Parte 2 . o Data Dictionary, Parte 3 .


o Data Dictionary, Parte 4 .
Definindo dados no ABAP/4, Parte 1 .

143 183 217 235

1 Reviseo 2 Visco geral


Definindo dados no ABAP/4, Parte 2 . Atribuicoes, conversoes e cilculos
Instrucoes de controle comuns

.257 .259
261 279 315 . 349 387 425 461

Dia 8 Dia 9
Dia 10

Dia 11 Dia 12 Dia 13 Dia 14


SEMANA SEMANA

Tabelas internas

Tabelas internas avancadas, Parte 1 Tabelas internas avancadas , Parte 2 A instrucao write . .. .

2 Reviseo 3 Visco geral .


Tecnicas de formatacao, Parte 1 Tecnicas de Iormatacao, Parte 2 Modularizacao: everitos e sub-rotinas . Modularizacao: passando pariimetros para sub-rotinas Modularizacao: modules de fun,ao, Parte 1 . . . . . .

. 495 .499
499 527 545 571 597

Di a 15 D ia 16 D ia 17 Di a 18 Dia 19

SEMANA

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,

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:

I I
o
1

0 que e u rn sistema R/3?

0 que
0

e uma inst dncia R/3? que e 0 Basis?

Que plataformas 0 R/3 suporra? Q uais sao as possfveis configuracces do sist ema R/3? 0 que e a arq uitetura de servidor do R/3 ? 0 que

e clienre d,elogon ?

que

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). .

e R/3?
e

'"

lA, .NT. .D l

VOl

EN'

APRENDA EM21 DIAl ABAP/4

WF
Quando voce ve a pclovro SAP por si mesma, ela e pronunciodo "es -ei-pl". Quando e combinodo com Dutro pclovro, e pronunciodo

r:w orkflow -

[luxe de trabalho) solucoes de industria)

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".

HR (Human Resources - recursos humanos) . PM (Plant Maintenance - rnanutencao das insta~a~6es). QM (Quality Management gereneiamento da qualidade) 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 1 6gica disso.
Fig ur a
1 1

Todos os m6dulos de
oplicotivo s60 escritos em ABNJ/4, que e

pp

inlerpretodo por
executovets Basis, que

por suo vez, s60 execurcccs no sistema


operocionol.

BAS IS

SISTEMA OPERACIONAl

, . por que voce preCIse

S al.l:H~rU:ISil '-lO= e :S

'

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 FI (Financial Accounting CO (Controlling PS (Projec t System gerenciamentc de materiais) SD (Sales and Distribution - vendas e disrr ibuicao) comabilidade financeira) controladoria) sistema de projetc)

I I

AM (Fixed Assets Management - gerenciamento de ativos fixos)

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 fiscal 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= ~ M.

o kane do R/3 no
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 a da " rea.

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-

EJgurp

1 3 A lela de logon do R/3 solicifa 0 voce urnc senho.

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.

\
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: a area Applications a area Basis
0
!

-j

J
.~.

Development Workbench

._ - -'--

,.. r
12
APIENDA EM21 DIAS ASAP,.
Fig ura J 4
1~ R' 9 It . . . .lcVo'c< - - - ., _ - . , _ _ 1_

~1

.lit

,EI

ESE

LV

ITC

~tIolJ :..,., .i ~ ').;

;: _. -~r_

o menu princi pal


do R/3.

..... '. " '. ........ t -' .,;.;

1,1,,1
~

-'e'.. .1
Figura] 5

:" 1

~.::r~-:+- ~

~ iHl;ri n ~ ~i~ :: ";::-.'_~ ;. ~

.'- ; " ' ".

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).

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

Fig ura 1 9

@ sr '.:
;_ [Ill

f! -'

G.- ' _-

A lela Vendor Mosler Update Trcnsocti on: Initial.

Solvondo oltero~6e s
no eneJerer;o do fobriconte.

I __._ d o:" . D, x -~ M : i:l ~ o ~ ,:rq . . '. , ~~;i.;i;;'I~I~"ldl lio~;t ,_'\1 ~" " ;~.;-' f':'~'~/~" ... " .> _.
II"

~ .s,.o..: llifIl : . , -, :'

. -" . -.- -' ~' -' ... -

.,::,. _.',.

.. ' .. "

.1.".. ,1

'.-~','~ - .~ ':-'",:

.-.~ ~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 :, ~ :.' -. :. "
.

tf~~~~~}~~~~~~~;;{t:~}tii~~ f
E..i..Q..ura 1 8 A tela Vendor Moster Update Tronsodion;'
Address .

TI1"h....

I"]

~, ..ht..

Io/fIlI';1

.-

.-,'

~.

figur "
con ~rmo

1 10

, ,"

~':

' ~ ,.,.. ...

.1<,, ' >< '

A Initi l Screen o
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

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 ele.

Cada t ela do R/3 contem estes elementos :

A barra de titulo: contern

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.

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.

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 . .
Figura " 1 1 ]

Traba lhando com


Barra de

titulo

Compo Command

o leone corn tres cfrculos coloridos no canto superi or direit o da janela do R/3

menu de interface

El mentos imporfon tes e de emu tela do R/3.

e chamado menu de interface. Com ele, voce pode pe rsonalizar a interface com
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

AI/EHDA EM 21 DIAl ABAP/.

01.

JA Jll

:D r

VD'

IEN- .J ~ ..-

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.

Figura 1 14

Calocondo marcas de selelOoo no caixa de selelOoa Co lors In

Lists.

~!i~i~J,
.~"",~ ~~ .. ,,, . ~?,

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.

. 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.
F ig u ra 1 13

tt.'tk~... :;:f;;(e~J",? J '"-,,,- ..


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

As opes de Gen eral Inte rfa ce .

num erico.

Utiliza ndo

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


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 .

rran sacao.
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 .

milo"

NOYO ....

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. 1 para lnlcic r 0 tronsccoc sem unlucr um ca minho de men u. Ca do trc nsc coo te m o um c6 digo de tronsOf; do (tam bem den orninodo tcode).

20

AP' ENDA E 21 DIAS ABAPI4 M

--~-

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.

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
lUMO "
N ~ OVO

Basis

Basis e como um sistemo operocional para R/3. Ele fico entre 0 c6digoAB AP/4 eo sistema cperoooncl da computodcr. ASAPgosta de chcmc-lo middlewore porque ele fico no mete, entre 0 ABAP/4 e 0 sistema operacionel.

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.

Ta b el a 1.1 Plotoformas e bancos de dodos suporto dos pa r R/3


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 . 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.

o antecessor do R/3 e RI2 . 0

Sistema operational
AIX SINIX SOLARIS HPUX
D ;g~ol .UN IX

Hardwa re suportado
IBMSNISUN

Fro ntaEnd s suportados


W;n 3.1 /95 / NT OSF/ Mol;f OS 2 /

Ban cos d e dados suportados


DB2 for AIX
Inform lx-Online

Di gital HP
Bull AT&TCompoq BulllZen;lh HP (Inlel) SNI IBM(Intel) Diqltcl (Intel)
Dcto-Geoerc l

O rccle 7.1
ADABAS D

Macintosh Windows NT
W;n 3. 1/ 95/NT OSF/ Mot;f OS/2

Orode 7.1 SQl Server 6.0


ADABAS D

o Basis, sob certo aspecto, e como 0

Macintosh

OS/400

AS/400

W;n95 OS/2

DB2/4 00

22

... <

"R END A EM 2\ DIA l ABIP/4

DlH.O....BIEHlE D EDESENVDLVIMENTD

23

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

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

Time).

o Basis foi p rcj etado para ser executadc em uma configuracac cliente/servido r.

ConfjgLlro~6es
~

dienle/servidor em

Limo.

dLios e Ir comodos. es

... _e-acIo

s..:.dot ... d.... CI>IftC>do> DDis , ompvIOllo ,u

Entenderidc.c.cliente/serxidcr
NOVO .... llRIIO

_
0

C1iente/servidor soo dai s progremo s que conversam um com


Figure 1.15).

outre [ve]o

flgu rg 1 1 5

Solicitocc c de
inform oc; 0 6

....... .....
Progro mo 2
Progromo servidor

AeSSEmOo do sistema

c1iente/servi or. d
Progromo 1
Progrom o

Resposto

..f=fl-I-- -} -

._. ......""",

die nte

Aqui vemos 0 Programa 1 solicitando algumas informacoes ao Programa 2. 0 Pro grama 1 e 0 ciiente e 0 Programa 2 e 0 seruidor. 0 Programa 2 oferece ao Programa 1 as inf ormacoes que ele solicitou. I sso e diferen re de urn pre grarna prin cipal que chama uma sub -retina e retorna. Urn pr ograma que

24

APlEHOA EM 21 DiAl ABA'"

D1A1:0 AMBI'tHTE lit DEStft10lV I/IIl::NTL

1..

Arqu itetura dQ sistema R/3


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.

0 mimero de process os e seus tipos

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
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.

~rvidor

de opresentoc;60

TEmO "

NOVO ...

servidor de opresento~ oo reo lmente um progroma identificodo como sapgui . exe. Normolmente, elee inst lodoem umoestccsc de trobolhode uscorio. o 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, interfa ce). 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.

Descobrindo

servido r d e ponco de dodos

F i g u ra] 17

A orquiteturo do'

sistema R/3.

Serwdor de
gptl!5 entgO

mwo ,.

KOVO....

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.

Se rviOo de beeee de dodc r

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

o servidor de oplicotjvo
milD r
NOYO '"
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.

Passlve;s configurot;6es do sistema R/3.

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
I "RENDA EM 21 nus ABAP/4

--

-- - DIAL 0 AMBIENTt D EDESEHV VIMENTO Ol


I

27

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

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.

Arquitetura do servidor de.npllcntiza.;

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.
Figura 1 19

local.
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 .

A ofquiteturo do
servidorde opJi otivo. c

~e~d~ ~e ~l!::a~ vo_ _

Do servidor de cplicotivo _

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.

I
I

I
I I

I I

Area de rolagem Mem6rio estel'1dido


_

-- ---- - -- - - -

Perc a servldor de banco de dodos

NOVO....
URMO

sistemas dentro de umo Instclccoo de SAPe a forma como eles s60 designados, tois como desenvclvirnentc, teste ou prodocec.

0 fermo poisogem do sistema R/3 signific o uma descrtcec do ncme rc de

Definlndc
NOYO ~

uma instfmcia R/3

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. .

TtRMO ~

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 .

Entendendo um contexto do \lSl!orio


NOYO

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.

o termo instdnciacentral refere-se ao servidor de banco de dados. Se urn

URMO ~

r...

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 :

~r
I ,

,..,

r-=--~~~~~------- --~~

,
28
I

-- - --- __ - ~~ ~~

...

~-- ~~~

APIEHDA E 21 DIAS ABAP/4 M

J-----.-:-----~==:::=.Fjgurg 1 20

D I: 0AMBIflffi. DE OEStNVOlYIMENTO IA

29

Um posse de di61ogo

As configuracoes atuais do usudrio As autorizacces do usu aric 0 no me dos programas que


0

Pcsscr do Initi l o

Screen parc 0 Address

FK02
lnif. IScree n o

Address Screen
ADO

usuario esti atualmente utilizando

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.

Screen pode ser . con siderodo um posso de die/ogo.

Foboccnte 0

Enderecc

c1 Endereco

-, lnklo do po sso de , di6lo go

= = = ==
c:::l

Entendendo uma area de rolagem


ftRl!O ~
pare 0
~yo ....

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;

,
Dispatcher

O s valor es das varieveis


Processo de Iroholho

As alocacoes de m emoria dina-mica 0 pon teiro d o programa arual 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.

-+--+~

\..
\

'1..05 I
, \
i
!

'

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

05 consultores de Basis costuma m vscr

tel utlllzodo.

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

Tanto a area de ro lage m como 0 contexte do usuario representam urn papel importance no processamento de passos de urn dialogo.

usuario poder iniciar urn passo de d ialcgo. A

partir do SAPGUI: Pressionar Enter.


Pressionar uma te cla de funr;ao .

Entendendo os passos de dialogo


lEma r
NOVO ..

Um posso de die /ogo

e quolque r clterocc o de tela [vejc 0

Figura 1.20) .

Dar urn clique em urn bono na te la. 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

Um posse de di61 0ga utilizodc pelcs ccnsultores de Basis como umo vnidode de medida pa ra 0 tempo de respcstc do sistema.

programa ABAP/4.

'-T'..{ ' . .r:

f
I

--0

II
30
I 'PREND' EM 21 DIAS 'UPI'

OIA 1: 0AMBIEHTE DE D S N O V E E E V L IMNTO

31

Entendendo
NOYO Ilrrr..
lERMO

processamento roll in/roll out


0

Urn programa ABAP/4 ocupo openos urn process o de trobolho pora urn passo

de di6!ogo. No ccmeco do posso, a 6rea de rologem e

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.

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.

Descobrindo co mo os do do s sco enviados ao servidor de aprese nto ~o o

~~

.,.

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.

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

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

Interprefodor do ABAP/4 Handler de to refo Interpretodor de telo Interface de bonco de dodos

trabo/ho.

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------------~--

__.. . .__.. ._. -__.. ._ _. .-. __.. ._... _ . ........ . .

'W .....--

~ ~ ~.., _ -_ ...... -.~--~------...._

-- .... 1
D~ h 0U BiEIffi DEDESENVDl~M", O

I .

32

APRENDA EM 71 DIAS ABAP/4

33

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.

Fjgura 1 23

a usu6ria digifo a
d iente de logon no tela de logon no compo Client.

l' -'

b"!P

g-"

~ _ ,", - . ~

,: ~. ~ _~ , ....

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.

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


trotom

Tipo de processo

Tipo de solicitooo de trabalho

o IDio log)
V (Update)
B (Background)

Scllcltccoes de di6!ogo
Sclicltccoes para ctuclucr dados no ban co de dodos Trobolho s de segundo plano Imprime so licitac;ees de spool Solicitoc;5es de bloqueio 1 6gico
Roteio as men sagens entre os servidores de op licotivo den tro
Fjg ura 1 2 4

S (Spool)
E (Enqueue)
M (Message)

E lobelo ~ sto
depen dente de di ente porque 0
primejro ccmpc
~

de urn sistema R/3 G (Ga teway) Afunila a s me nsagens dentro e fora do sistema R/3

do tipo COO.

Entendendo

c1iente de logon

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 T. do tip o Cl N 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.

34

"'-'~'-r ----" .-r- _..".....

":"\

r>

-r> r ~-;-,-...,.---~~ -

--- _ --

;W _

-w

.,....

__

..

APRENOA EM 21 D ABAP" IAl

OIA1:0 A MBJENTE D ESENVOlVIMHHO ED

35

laura 1 25 Esto tobe/o e


independ ente de elien/e, porque 0 prime iro compo n60

e do tipo

CLNT.

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.

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.

l ela Rl3 log on Clienle

elelllO logon e

o ulv6rio

[]QQ]

f---...,.-~ ~ e;:~:e

Jcbe lc lFAt

MANDT
700

lIFNR
I 11

700 80 800

12

100

1 1

' @]
Sardo

: :

100 : 101 :

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. odi As ins trucoes i nse rt, update, m 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

r
36

-r-

r r

--- -,.-.;- r . t">:

~"

I 'PRE"" EM 2\ DI'S 'BAP/~

DIA 1:0AMB\Uffi DE DESEHVOlVIMENTO

37

efetuarem logon 'com diferentes clientes de logon. As atualizacoes feitas pa r 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.
F; gllrg 1 27

Servidor de ccltccnvo Processo de frobolho


..2 E
-0

o ccmponenle de
interfac e d e bonco de

dodos do processo de

( N ota

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.

trobe/he"

'U c

~D B

1=\

IIF

Ope n SQl

Uti Iizoad 0

Open SQu ......... L....,d...,o S""A:\LP

_
Buffer de dodos

SQL nativ e

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 .

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.

f-OJiahilidad=----- - -e

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.

- - - - - -- -

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.

--- 38

W'

'W" _

.w
DIA 1, DAMBIEHTIDE DEIENY lY D IMENTD

APIl:ENDA fM 21 ens ABA P/4

39

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.

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?

P&R

o o

Po sse copiar urn clienr e existente para um novo cliente? 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

o o

* from tb l cl ient specified whe re mandt = '900' .

Exerd cio 1
As tabelas na figuras de 1.28 a 1.31 sao depe ndentes

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 .

OU

indepe nden tes de

clienre?

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".

"""""-~---40
'PREHD' E." DiAl AB "/4

- ...

0\,1. 1: 0 AMBINTE DE DE5HVOLV E TO IM N

41

Figura 1 30

': , . l ,

:l""".[ill-1i"' -~ '~'tro ...... ~M " '

Sf

J,ftj

fIf

Estc lobe/a e dependente o u independente de d iente?

~".,

1.

g, ,:.i;"'4o .Ii

x"'-Q Mn"c -0 "0 e li

, ;; -

":~. <

Fig ura 1 29
Esto lobe/a e dependentt! au independente de
cliente?

Figura 1 31

, Estctobe/o e dependente ou independente de


clienle?

~ -- - -.- _

.. . -._.

- -_ .

~~~-----------

Seu primeiro programa emABAP/4


Depois de completar este capitulo, voce deverd ser capaz de:

e Crier e modificar programas ABAP/4 simples.


Utilizar funlioes padcio n o edito r ABAP/4.

Utilizar fun,6es de ajuda FI e R/3 Library.


Encontrar seus programas utilizando
0

Object Browser eo editor.

Exibir uma tabela e seus conreados utili zando 0 Data Dictionary. Utilizar as instrucoes t ables e select. Encadear instrucoes urilizando
0

opera dor de encadeamento.

Adic ionar com entarios e documentacdo a seus programas.

Antes de-Prosseg"uLli.Lr
Antes de prosseguir, voce dev e:

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

hllp:/Iwww.comput.eom. bt

....

s_~

_. ~-

..........

'W _

.....--....,.. -....- ............. ""W"

-~~' --.r

--

--

44

APRENDA EM 2.1 DIAS AB APH

DIA 2: Sl:U PR UWROPROGWlAEM ABAP/4

45

Configurar sua interface como recomendado no Dia I, na Se~ao "0 Inte rface Menu", se voce nao river feit o isso ate agora. 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 [erramenta de teste auxiliada por comp utador para regressgo de teste uma ferramenta de pesquisa de repositorio p ara encontrar objeros de desenvolvimento
0 Workbench Organi zer para registrar alteracoes em obj ecc s e promove -las na produclo

ltiMO r"

HOVO ...

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 CDROM que vern com este llvro . Vejo 0 orquivo readme. txt loca lizodo no diret6rio rulz do CO-ROM para mois Infcrrn ocoes.

I
/ ,

fxplora ndo
MOYO lit.. H~O

ombiente de desenvolvimento
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 .

Um ob jeto de desenvofvimento

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:QLLm O I..lJ.l


Hi. dais tipos de programas ABAP/4 principais:
relat6rios programas de dialogo

NY OO.... 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

Definind o relat6rios

ce digo -fonre do ABAP/ 4 e outros componenres de prcgrama 0 D ata D ict ionary onde voc e pede criar tabelas, est ruturas e visualiza~6 e s

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) .
NOVO lrl.r.. TE~O "

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

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,
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.

doABAP/4
A tela e menu pintores onde voce pode criar uma interface com usus ric para seus programas
0

TERO"

NOVO

h..

As seguin res [erramentas de test e e pesquisa tambem eseac disponfveis:


0

ABAP/4 Debugger

a [erramenra de rastreio de SQL utilizada par a refina r instru~6es de

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.

SQL
0 analisado r de tempo de execu~ao para otimiza~ao de desempenho do seu programa

uma ferramenta circunstancial para analise de impacto

.... 46
DlA 2,S UPR E IMEIRO PR G O RAMA EM A MP/.
AP"NDA EM21 DIAl ABAP/4
EW=>..-2L..Ll_ _ A tela de setecoc e a lela de soldo . Tela de selecee (pcnimetros de e ntra da )
liste [soldo do re lot6 rio) Soles Per Period '

r-

47

Descobrindo 0 obj eto de tem po de execucoo de-programo


MOV O.... TIRM ~ O
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 objer o 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.

251 .25"Edna Everedge ..


131 .50 Wendy Rose.: .. . '

I1efin.inrlu..p.rrnli.l.\aJ-'sLd e J,.u"'-'l~l"L-_------- m ...... d i q o g o


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.

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 .

D~-SCQbrim:lQ~ornpon.entes

de relat6rio

Introduzindo as convencoes de orrlbulcco de Dome de programa


NY l.. OO nmO,.
NV lrrrrr... OO
n~o ~

Os relat6rios do ABAP/4 con sisrem em cinco componentes (mostrados na Figura 2.2) ; 0 codlgc-Ionee

A ernpresa em que voce trobo lha e cliente do S . Portonto, os progromo s que AP

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, E sses convencees SOO

Os atributo s as elementos de texto


A documentacao
As variantes
Fi gu r a 2 2
urn

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.

Um progromo ABAPj4 consiste em

Os componentesde progromo ,4BI>Pj4.

NOVO.... URMO'-

Atributos

Dedique urn memento para esco lher urn identificador de tres co roderes especffic pa ro seus progromos. Deotro deste livre, farei refere ncio 0 esse o 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 H Digite 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.

'** c,

48

APiEN DA EM 21 Dl AS ABAP/ .

01" 2: SEUPRlMEIRO PROGRAMA EMABAPj4

49

Programas utilirarios oferecidos no C D -ROM seguem a convencao de atribuicgo de nome y -xxxxxx, onde xn:xxx e 0 nome do utilitario.
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 CDROM para mais informacoes.

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.

Cria ndo seu primeiro pro-Q.LCa m ........ r.........J.JO

----'-

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

eexibida.

cami nho de m en u titulo ABAP/4 De -

2. Press ione

botao do ABAP/4 Editor na barr a de ferrame ntas do aplicativo. 0 ABAP/4 Edi tor: Initial Screen e exibido.
0

I
I

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 .

--r"- --~~_;. .

--DIA 2:SEU PR HR IM OPROGRAlIA EM ARAP/~

50

APREND' EM21 DIAl AS AP"

51

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.

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.

miAOA ~ Lislagem 2.1 Seu primeire pregrome


1 report z h 020l. 2 write ' Hell o SAP World' .

em ABAP/4

NOVO ... TflMO"

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) locolizor (find) locoFizor 0 pr6lcimo(find Null Prtmelrc p6gino (fin.1 Page) P6gino onte rior (Previou Pagel s PrOximo p6gino (Next Pagel

a c6digo na List agem 2.1 p roduz esta safda:


SIIDI ~
Hello SAP World

Canceler (ConO!Q
Scir (Exit)
Vollar (Bode )

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 ) .

Salvor (Sevel
Compo de comclF'ldo

Ultimo p6gino (lost Pose)

(Commond field) lnserir (Enter)


Fjgu r a 2 3

S Cl z o Problema ~ n
0

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
Sol u!;oo
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 . 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. No Tela Create Object Catalog Entry, noo digite um vola r no compo de clcsse. Em vez dtsso , press ione 0 botoo local Object.

A partir do N3AP/4 Ed Initial Saeen itor: voce pode exibirau


olterer os camponenles de progromo.

0 ...
C

'"
l>'

AD pressionor a batao Create, voce cbtem umo coixo de di610ga duende De Not Oecte Objects SAP Nom e Ronge.
Quonda voce pressiono 0 botcc C reol e, voce cbtem umo caixa de di610ga com urn ca mpo de enfrada que pede uma teclo.

j
1 1 I

.n

.'" ....
0

'"
0

Explo ra odo

"

'"

'" ~

Voce esto c btendo vmc tela Change Request Query pedinda um Request Number.

editor d.l:Lc.6dig,.. o-fonte...


0

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.

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

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

APRE NOA EM 21 OIAS AS APj .


r l ,_

CIA 2,SEU PRIMEIRO PR OGRAIM E ABAPj. M


!.. ~

53

1 ,
' J

, '-

Exibi, < -> Alterer (Display <. > C Verificer (Check) Llstc circunstonciol (Where-used lisI) Pilhe (Stock) Linhe de inse n;oo (Insert line) Cortor (CUi)

Figura 2 5

tit r.oo h l olI 'I

II

....

Estes s60 os conlrole s


no barre de ferromentcs Standard dentro do editor do

... --. .: _ ...

. --'~""- ,

NW/4_
Os ccotrcles do barre de
ferrcmentos Standard

~'-do buffer pnsen" ' , bvf{e ~ porc o "~' ", Imerir From

EJgllra 2 4

.
'!. . 4

Uti ize a tela l ABAP/4 Ed itor: Edit Progrom para olterar Ivncionolidade de componenle.

..

'-_~r.llfJlx Q,1,a!:.

- -: .. ..- . ...... -- "....,.


~

Se lecioncr (S elect) Desfozer(Undo) , - Ajudo do ABAP/4 (ABAP/4 help) . ...


'C C l C

it]:f" ." ;'" .....-::-:'~-:

-- -- ,

.'

..:: .~,'

""'

"

~~. , .,~~',~~,.~ ~ " ""-,-;c.,~l-y. :r"iJ .'1., "!~-....a:-.l"i) .- w.~~> ,i~~""". -,-t";-"'-iff.<'5,Y' . ~1~-1;(~ ~4i-" "."'~""~ W~;;:;,.... . ~. -;;-.~;_::' '' :: ., ": .;;,< ,....~.....:-: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; e s dtspcofvets. 6

Enter: Pression ar 0 bon o Enter tern 0 mesmo efeito que pre ssionar a t ecla Enter. E tambem a funS-ao de divisao de lin ha. P ara dividir uma linha de c6digo, posicione a cursor no ponto on devoce quer dividir a linha e pre ssione Enter. C om man d Fi eld: Esse campo aceita codigos de tr ansaci o e vari es outros comandos . 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.

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.

Explorondo a borra de ferro mentas Stand ard


smEHCAM ~ lrncie
0

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 :

54

"RENDA EM21 DI A "API' S

OlA 2, 5EU P IM OPROGRAMA E R EIR MABAP/4

55

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. 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.

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 w ord 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
# que ocoere na string. Por exemplo , para localizar a string alb, utilize a string-de pesqui sa all b .
IIrrrrrr..

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
progromo.

S(lEN JI"" EWl

lnide

ScreenC om "Setting the Scope of a Search or Replace Functio n" ogora .

Para configurar

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

processo de localizacjo:

campo Find.

A s a String fad. com que sua string seja localizada em qualquer lu gar no program a. 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 . U pp er/Lower C ase fara a pesquisa dif erenciar letras mai usculas de min usculas.

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
de opcao Fro m Line e digitar pa ra a p esqm sa.
05

ruim ero s de linha de infcio e de fim

4. P ressione

o campo Find tern algu mas qualidades incomuns:

I !

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.

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.
IIrrrrrr..

\CRENCAM E JI""

Inide a Scree nCom "How to Find NI Occurrences of 0 String" ogora.

,I

56
APRENDA EM 21 DIAl ABAP/4

'W'

- . -- ..

DIA 2:SEU PRIMEIROPRO RAMA EMABAP/~ I G

57

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

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.

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
grams.

bot ao Back para retornar a tela Global Search In Pro-

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 .

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.

Para pesq uisar e substituir via uma tela de resume: 1. Na tela Search/Replace. digite a string que voce quer localizar no campo F ind. 2. Faca ~~a marca de selecsc em Replace By e digite uma string de substituicac no campo Replace by.

~ ~

---~www_

_.

........ ....- _

................. .... ....- ... ....,.---.-.- - - --- - - -

58

APRE NDA E 21 DIA S AB AP/4 M

DIA 2:StuPRIMfiROPROGRAMA EM ABAP/4

59

as controles de barra de ferramentas Application. na ordem em que eles


aparecem n a barra de ferrame ntas, sao as seguinres:

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. 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}.

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
0

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.

cursor e a coloca no buffer.


0

;I I , I

Co py To Buffer: Copia 0 conteudo cia linha que concern

cursor para

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]. 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
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.

I ,

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.

Utilizan do Cut e Pa ste

Tabela 2.1 Buffers de Cut e Poste


Chamado Utili:r:ado pa ra
Carta e colo de ntro de um progra mo Corte e co la e ntre da is progromos Carta e colo en tre: - duos sess6e s

disponfvel.
ABAP /4 He lp: Oferece ajuda sabre geral.
0

Como Copia r pa ra ele


Pressione as botc es Cut ou Co py no editor Ccmi nho d e menu : Block/Buffer- > Copy to X Buffer Cominh o de menu: Block/Buffer-> Copy to Clipboard

Como Colar a partir dele


Pressicne 0 batao Insert From Buffer Caminho de menu: Block/Buffer-> Insert X Buffer

editor e sobre

ABAP/4 em

o Buffer
as Buffers X ,Y,Z

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

Area de
trcnslerenoc

R/3

-:

_
60 ,
AP RENDA EM 21 ClASAB AP/ 4

- R/3 e outro
opllc oftvos

'!='

'!'!'

-D 2:SEU PRIMEIROPR IA OGRAMA EM ABAi'/4


1

61

Tabela 2 .1 Confinuoc;60
Chama d o Como Copia r para e re 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
ofvcl. - coplc e c6d igo do c jv dc F1

Windows (p. ex., Bloco de Notes)

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.

1,

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.

d
I

Tab el a 2.2 O utros prog romos convenienfes e fun~oes do ed itor


Para..
Obter cjodo no ed it,or Obter ciu do de qualquer pclo vrc-chcve do AW/4 Salvor seu programo Executor seu programa
s.
F o~a ..

I!
I
I
I

Escolha a caminho de me nu Help- >Exte nde d He lp. Coloqoe 0 cursor em umc pc lovro-chcve dentro da c6digo e pressione Fl .

1- De um clique

pora

ed itor

- copia mcls de umo linho do c6digo

2 - Ctrl+Y 3- Arroste e marque 4- Ctrl+C

Presslone F11. Presstone Fa.


De urn cliq ue com 0 bcfeo d jrelto do mou se em quolquer lugor no 6reo de tela de urno [cnelo.

Exibiras teclo s de fun ~oo Mover a cu rsor perc" 0 co mpo de comondo

Pressione Ctrl + Tab.


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. Coloqu e
0

I I

. 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 D Utro . 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

Troaer quolquer linha pore


a porte superior do tela lnserir umo Hnhc
Excluir umo linho Marco r um blocc de c6digo

cursor no prime ira linho do bloco e pressione

Ex cluir urn bloea de tlnhcs Repetir umo ltnho c u blccc

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.
Pressicn e
0

botoo Duplicate line .

Dividir umn linha


Unir duas linha s Cop ior os linha s de ntro do programe otuol

( ,-

r
I: i I,

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.

.'

7Z

:IrrrrrrY t: _1' ww w w w.v


62
"RENO' EM 21 OIAS ABAPH

.. - 011. 2:SEll PRJMElRO1'10GR.UlA. EM ABAPJ4

63

Tabela 2 .2 Ccnnnoccec
Para...
Copter as Iinhas perc o utro programo
FOlj o

Tabela 2.2 Continuo<;oo


Para...
Exduir urn progroma Salvor sues olteroc;6es com um novo nom e de progro ma Exibir dais progromas ao mesmo te mpo
0

FOlja...

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.) 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. Marque um bloco e escol ho 0 comi nho de menu BlocklBuffer->lnsert com me nt. Ma rque um bloc o e escolho 0 caminho de menu Block/Buffer->Delete comment. Pressione
0

Do ABN'/4 Editor: lnifiol Screen , escclhc


menu Prcqrcm-o-Delete.

cominho de

Enquonto ed itor urn programc, escolho a cominho de

menu Proqrcrn-c-SoveAs.
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,
insirc
0

C opier pora au do 6reo de trcnsferendo do Windows


Feser um comentc rio

no me do segund o progromo e pressicne a

bc tco Display or Chonge. Compara r dois progromos diferentes 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

sabre um blccc de linhos Remover 0 coment6rio de um blccc de linhcs Imprimir seu progromo Imprimir sua scldc do progromo

botco Print.
0

Enquonto visvcliac 0 soido , escol ha Systern-> Llst->Print.

cominho de me nu Compa re r dais pro gro mos em sistemas dderentes

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. 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. 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 . 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. 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.

lccchrcr e repetir a
loeo lizoo Mudor 0 c6digo poro a esquerde e perc a direita

Presslcne as bo f6es Find e Find Next. 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. Pressione Escolha Escolha
0 0

Salvor umo versec de urn programa Recupero r uma versoc do progromo

Desfazer a ultimo vcricvel Formotor automotieamente o c6d igo -fonte Fazer download de um progromo poro urn arquivo em seu PC Fazer upload de urn progromo de urn arquivo em seu PC Solver umo e6pia ternpcrcric de seu programo Recuperor 0 c6p ia tempor6rio de seu progroma Puler diretomente paro editor Copiar um progroma Renomeor um programo
0

bctcc Undo . He apenas um nlvel de Undo.

caminho de me nu Progrom->Pre!ty Printer. co minho de men u Utilities->Download .

Escolhc

eaminho de men u Utilities-> Upload . . Comparar versoes do progromo

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 . 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. De qualquer tela , digite / nse38 no compo de eomando e pressione Enter. Do ABAP/4 Editor: Initiol Screen, esc o lha menu Progrom->Copy. Do ABAP/4 Editor: Initia l Scree n, esc olho men u Prog rom->Renome.
0

lmprimir seu progroma

cominho de caminho de

64

APIl:EHOA EM 21 OIAS ABAP/~

orA2:sru PRIMEIRO PROGRAMA E MABAf'/4

65

Qbie.ndo~--" d a a4-'iu",-,.....",-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.

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.

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.

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:

Obtendo a a il/do El A ajuda F I e u tiJ pa ra pes quisa r sintaxe e frequentern enre


uteis de c6digo.
Para ob rer ajuda F I:

co ntem exemplos

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.

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:

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.

66

APReHDA EM21 DIA AS A S PH

OIAtlEU P'IEI' OP'O RA.. EM ABAPi< G

67

Aj uda do editor Visso geral do ABAP/4 Pa!avra-chave do ABAP/4 Novas recu rsos da linguagem ABAP/4 Exibir modules de funlSao Exibir estruturas de rabela

Se voce estiver procurando urn programa e souber os primeiros caracreres de seunome, poderalocalizs-lo a partirdeABAP/4 Editor. Initial Screen. Parafazer isso:

1. Va para a AJ3AP/4 Editor: Initial Screen. 2. N o campo Program, digite os primeiros caracreres de seu nome de
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.

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.

Introduzind o

R/3 Data Dictiona ry

Para exibir todos as objero s de desenvolvimento que voce criou no sis tema RJ3 :

mllo r

NOYO""""

.de dodos. Pore utilizer 0 ODIC, voce ped e crier e annozenor cb jetcs como tcbelcs .

a RJ3 Doto Dictionary lou ODIC pera obrevcf eum utilitOrio para definirobjetos

i, DOl tela ABAP/4 Development Workbench, pressione 0 bono Object Browser. A Object Browser: Ini tial Screen

estruturos e visuolizo<;6es. Pore chomor a Oato Dictionary, execute estes posses:

e exibida.

2. Escolha

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.

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.
H lll... OYO fiRMO
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 finio 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.

Fa~a

Utiliz a ODIC para crier e modifkcr e 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.

~~...~. ~ .~:...:.:.:.< ,~ .. ..;,.,..

....... .-c_ ;,c' =;;:;-""":---::::--:":--"

"..- .,,, "'- ... ~_..__.._ ..._ .... .... ..._ ....... '"..._ _ _ P

:w:o

... , . _

...-~----------------------------~-

68

APRE NDA EM 21 DIAS ABAPH


I~ " ~_1 .. .i. l/lIIioo ~ """" iflIl> -. _

D 2: SEUPRIMEIR ROGRAMA EM ABAPt. IA OP -rarn .""

69

fig ur e 2 8

.':' 4'

A Dictionary:Initiol

. ~'"

. ..-'.

Screen.

i,.o

-. I

.::J '~ .: A )( :. ~ 10U

~ 0

. .c,,,,

,,,.I'- r-." : :< : ~~;:d. " " :':;,. .'

F i g ur a 2 9

.> }.

A defjnis:oo de ODIC pore tabe/o Zfal .

Exp lorondo as tabelas e as estrutllros


NOVO lilt.. TiRMO,.
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.

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

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.

A defjnit;dode ODIC
para 00 eslrvturo

emora.

NOYO ....

lIiMO"

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.

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.

4az::;:

cc;:_~

."' -

70

APRENOA EM 21 DiAl ABAPH

D1AU W PRIMEIR R G DP O RAM> EM A BAPi<

71

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.
E.ig ll r g 2 1 1

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.
r-ra II-!
1_ _

!
[ olt

f tj it!'''PTJ 'tTm'' ''


1iolo . 5ol1jroo "lJ"Iiot

Exib inQQ umo to bela ou defin ili:io de estruturo


Para exibir uma tabela au definicao de estrutura n~ DnIC: 1. 2. 3. 4. 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.

""' _ ~ .$""'"

1IftI " , -

.-

<.

-: :,;,

A tela Data Browser: Table Select E ntries.

.. . . .._I<!Oj"l "
'

,
"

'.
1~

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.

o que voce ve na Figura 2.9 e a estrutura de tabela Hal no R/3

l~ .,

Exibindo o s dodos no tabel 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).

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.

o numerc de registros 'exibido eIirnitado peIo valor no campo Maximum No. Of H its na Data Browser: Tab le: Selection Screen.

72 APR ~NOA ~M
I

21 DIAS

ABAP/~
DIA7: seuPRIMflR R G OP O RAMA ~M ABAP/4 ,

73

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.

1060 1070 1080 1090 2000 V1


Vl0

lntrcduzindo a instru~ao s el e;_,cJ t~

Vll

---,---,

V12
V2 VJ

A instrucao sel ect recupera registros do banco de dados.

V4

tn

Sintaxe para a instru,fio sel ect

VI

a seguinre c6d igo mostra a sintaxe simplificada para a insrru cdo se l ect:
select .. from tl (i nt o 11'0] (w here f l op vI and/or 12 op v2 .. .J [order by f l] . (other abap/4 s t at em s) ent endselect.

YO

V7

va
V9

onde:

"
ENTRAOA~

* 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.

wo e 0 nom e da area de trabalh o que coincide com a estrutura da tabela


.
<> > >= < <=.

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 .

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.

Na Iinha 1, a instrucao report esolicitada como a primeira linha de urn relar6rio. 0202. Digite 0 c6diga como 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. 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. 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. 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.

Crie urn novo p rograma e atribua a nome mostrado na Listagem 2.2.


Lista ge m 2. 2 Seu segundo prog roma

,,

, ;!

i!
I

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~

a codigo na Lisragem 2.2 deve produzir esta safda:


1000 1010

I
E "
I

1020
1030

1040
1050

I ,
_ .J.;,

74

DlH lEU PRIMEIBDPB OGRAMA EM ASAP/' APRENDA EM 21 DIAl ABAP/4

75

lVI

lnlcie a NAYI Select Statement Processing'" ogora .

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.

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 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.

2. A solicicacao

e despachada

para

primeiro processo de trabalho

4. 0 processo de trabalho envia a pr6xima pagina para

disponfvel.
3.

a contexte de usuaric edeslocado no processo de trabalha.


e recuperado do banco de clados.

4. 0 prog rama

0 servidor de apresentacao. 5. A area de rolagem t: 0 contexte de usuario sao deslcca dc s para fora do processo de trabalho .

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.

Figura 2 12

Esto e 0 moneiro
como a ins/rus:oo se lect fundono.

SAPGUI (Servidor de cpresel1tol;oo) Mem6riaestendldo

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.

DBS

':~~i ;
};

~'4~~~.~{t~;:.;,~ ,
. .. L

~ ' ~i.:~:';"~~

17

_, .~ """ , . 7 ' .... ' r:ita~Ji'!'.

Se 0 usuario entao pressionar Back,

processamento continua assim:

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.

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

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

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

processamento prossegue

edeslocado para fora da tela.

-.;

-"".~ --=-----=--=-=-,,,""""""'------------~---~~--~-------------~
D 2, l EU P'W.EliU P' 06RAJI,A EM ABAP/~ IA

76

APR EN OA EM 21 O IAS AB.lP/4

77

F jgura 2 13

Esso e 0 seqiiencia de eveorcs ocionoda quando 0 usu6rio pressiona Poge Down.

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.

Para cop iar urn p ragrama , esc o lhc

cominh o d e men u Pro-

qrcm -o-C cpy do telo iniciol do ed ito r. Alternotivo mente, enqoontc editc

um progroma , voce pede escolher c com inho de menu Proqrcm -c-Sove

As.

Uti lizando uma area de traba lho explfcita


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

L-

- - - - - - - ---I- - HI va V9
. _

.1..0
de

:oglhO :"'irtUQl:.~._ . rologem


~

Sintaxe simplifica da para a instrucco data


Abaixo eSta a sintaxe simplificada para a insrrucio data .
Pare abrir umo novo ione lo do R/3 (cho modo sessec), de quo lque rt e la escclho 0 com inho de menu Svstem-c-Cr ecte New Session. Voce pede c brir urn maximo de seis sessces. Se voce qctser chrlr mois de sels, simples ment e efetue 0 logon umo segundo vez.

data

ItO

like tl.

onde:

Entendend o os areas d e tro bo lhos da tabela


NOVO

'f

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

TfRMO~

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.

il...

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 w order by l t fnt-, a 5 w ite / ee - j tfnr, r 6 endsetect .

[NTiAOA~

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 ,

--- 78
APREN" EM 21 DIAS ABAP/4 DlA 2:SEU PRIMEIRO PROGRAMA EM A BAPf4

79

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 .

ANALISE....

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

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.

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.

wa em vea cia area de trabalho cia tabela padrao.


A linha 5 emi te a linha para wa em vel. de ztxl fal.
Quando voc e explicitcmente atribui names a umo 6rea de trobclho

Ira bo Ib ad Q co rn veri uxeis,-,d..,e"--,,s,;iut"'eJjrnLLO"'s e chomodo area de


no instru<;6a
HRMO'HDVO ...

NOVO....

rrRMO "

se 1ect {como; nto wa no ltnhc 5j, esse crec de trobolho

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.

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'").

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


1 report ztx0205.

I'

2 tables ztx.lfa1. 3 select * from ztxlfa1 where lifnr 4 write / zt xlfal l ifnr .

<

' 0000002000' order by lifnr.

endsetect .

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.

I
I
![
of
or

o
SAiDA ~

c6digo na Listagem 2.5 deve produzir esta saida:

1000
1010

Duas verieveis de sistema sao muito tite is para saber qu and o co dificar a inscrucao se 1ect :

II

1020
1030

sy-subt-c

1040
1050

sy -dbcnt

1060 1070
1080 1090

Deseobrindo sy-subre
HRMO"
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
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.)

.f

:f d

---~~~~~~~~~~~~~~----------'--~---------------~
80
APRENDA EM 21 DlAS ABAP/4 DIA 2:StU PRIMEIROPROG AAMA EM ABAP/4

81

ENTRADA'" lista gem ~ .6 Utilizando sy-subrc para determinar se quoisquer llnhos


,.. fora m selecionodos
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. 1 2 3 4 5 6

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.

ETRAA Listagem 2.7 Utilizando 0 sy-dbcnt para co ntor lmhc s retomados do N DlItr..
" 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 w ite ztx lfa1-1ifnr. r 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

No records found

ANALISE..... A instru<;oo se lecionodo no linha 3 estc restringido par umo cl6usu la where.
~epois do

Nesse coso, nenhumo linho coincide com a criteria no d6usulo where , entoo

o codigo na Listagem 2.7 produz esta saida:


S iD AA

endselect,

valor de sy -subrc

e configurodo como 4.

1 2 3

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.

1000 1010 1020 4 1030 5 1040 6 1050 7 1060 8 1070 9 1080 10 1090. 11 2000 12 VI 14 15 16 17 18 19 20
21

I I
I
I

13 VlO VlI

VI2 V2
V3
V4

V5 V6
V7

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.

22 VB 23 V9 1-3 registros encontrados

Des cobrindo sy-dbc nt

A A E~ NliS

HRMO"

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 1 00Pi 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 .

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. A linha 5 escreve
sy-dbcnt.
0

valor de ztxlfal- l ifnr na mesma linha que

-,;.;.:,

82

APRENDA EM 21 DIA l ABAP/'

DIA 2:SEU PRIMEJRO PR G O RAM.&. EM ABAP{4

83

Exi bindo

es trutura sys t

Por exemplo, para definir duas tabelas, voce poderia codificar isro:
tables ztxlfal. tables ztxlfbl.

Hoi duas rnane iras de exibir os cornponentes de estrurura syst:

Da tela ABAP/4 Editor: Edit Program, de urn clique duplo no nome


de qualquer campo sy dentro de seu codigo

au, voce poderia utilizar


tables: ztxlfal. ztxlfbl.

operador de encadeament o, com o esse:

Va para

Data D ictionary , insira syst, se1ecione a bctao de 0pljao Structure e pressione a batao Display
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.

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.

Para pesquisar par descricoes de campo, utilize este procedimento: 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.

ENTRADA.... Listagem 2.8 Utilizondo a operador de encadeo mento pa ra reduzir a

redundcnclc no instru<;:oo write

. 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.

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'.

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.

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.

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 a

jnst[lJ~ao

sel eet si agl e

Utilizondo

ope rodor de encodeomento

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.

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.

Nova... a

Sintaxe para a lnstrucco select single


A seguir esta a sintaxe simplificada para a insrrucao se 1ect si ogl e.

.-';,.~ "",- ""~ :~--", ;';;;"'::-="",=:"'"":=:-=~~_""'!!!""'!!I"'"_""",,",,, :

."""".

- - - ._- - - - - - - - - - - _ _......._ ...,....,..._ ........_ .......

_ 'W ........_ _...._ _........_ _.....

- - - - - - - - - - - - ..,
.....r-"_ _....
D : SEU P IA2 RIMEIROPR G O RAMA EM A8AP/~

...._ _ .

84

A PREH D EM 21 D AB AP/4 " IAS

85

III

s el ect

from tl [into wa] [w here fl op vI and/or f2 op v2 . . ].

Co me nta nd o

c6 d igo e a

d ocumenta~ao

fo rm al

~ m
T

onde:

Ha duas maneiras de colocar comentarios em seu c6dig o: 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.

* 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

e0 nome de urn campo n a tabela tl.


logicos: '" <> > > = -c <=,

e0 e

no me: cia area de trabalha que coincide com a estrutura da tabela.

op e urn dos seguintes ope radores vl um literal ou uma variavel.

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.

ta b' es ztxlfal.

" Isto t am bem e vm cement ar t 0

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.

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

fHTRADA~

Lisfa g em 2 .9 A instru;ao sel ect si ngle

I repor t zt x020 9. 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 - nam el. 6 el se . 7 wri t e 'record not found" . 8 endif.

SAiD! ~

o
VI

c6d igo na Listagem 2.9 produz esta saida:


Q uantity 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 .

!NjllSE~

.,..
86
"RENDA EM 1\ DIAl ABAP/4

- .....

'W' W

_ -w
D 2: S PRIME DPROGRAMA E A P!. IA EU IR M SA

87

aumentado sempre uma vez p elo loop e dep ois do endsel ect ele con tem 0 mimero de linh as recuperadas. 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

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.

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.

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

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.
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~ 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.

0-

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

e o

o
o o
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" .

"::'!!!'-------------~-88
APREHDA EM 21 DIAS AWl' D1A 2,SEU PRIMEIRO P RDGRAMA EM AMP/4

",.

.. ,

89

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 w rite 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?

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.)

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.)

i ,i'" , 90
};."': ;or'

....~""r-"--.... e-"="....,=-....",......,.....
~I APRENDA EM 21 OJAS ABAP/~

-~~~~---~

-!'"""I-_......._.. . . .- . . ...--_.. . . . _.. . . . . . . . .


w . w ~ ~

r -. .-...........- .......... ....,.......,..-.............---.,......,.......,......,.......,......,.................._ ........ w w _ ._ _ w w _ _

..

.w _

DIA UEUPRiMEIRDPRDGRAlIA EM ABAP/4

91

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.
if sy-dbcnt > O.

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.) 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.) 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

write : endif.

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

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

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 em 0200b. tx t n o campo File p\ 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 nom e.) 41. Digite 0 segu inte comentario no final da primeira ins truc io sel ect:
II

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.) ,

read all records from table ztxl fal.


42 . No Bloco de Netas, salve seu program a modificado em disco. Ob. 43. Carregue-o, substituindo 0 programa 02Q (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 em 0200b. txt . Pressione 0 botao p\

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.)

92
APRENOA EM21 DIAS ABA P/4

- -D1A 7:SEU PRIMEIRO PR GRAMA EM AIIAP/4 O

93

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.)

55. Remova os com entarios utilizando Buffer-c-Delete Comment ::-.

caminh o de menu Block!

fxerdcios de

pro-9 u ,j.r a.umLJ.lla.l.l~6.l.1",... o

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.) 49 . Salve suas alreracoes. (Pressione
0

S ioA A ~

1000 1000 1000 2000

Y9

YB
Y6

V9

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) .

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

if sy -subrc <> O.

5
6

write / ' no records found '.


endt f.

write / ztxlfal-1ifnr.

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 E ND> 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 .
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 -nam el. 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 w rite / ee- Itfnr- . 14 write wa-bukr s .
15 encsete ct , 16 if sy-subrc <> O. 17 write I 'no record s found'. 18 endi f .

oData Didionary, Parte 1


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

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 w re lifnr > ' 0000001000 ' . he 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


TEUD '"
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.

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 M EM 21 DIAl ABAP/~ DA
DlA3:0DATA DlaJONAR ,P R EI Y AT

97

macoes neste livre como incorretas. P or exemplo, caminhos de me nu po dem ser alterados ent re os nfveis de versao. Sempre que possfvel, as di ferencas que 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:
S(RHH(AM ~ lnicie a ScreenCom "How to Display R/3 Release Notes" ogara .

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.

To b./o ~'p<l,.ft"

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

borao de opca o RELN.


0

3. Pressione

botao Choose na bar ra de ferramemas A pplic atio n. A tela

A ", bolo <lcbonco d. dodo, ,.",.

Find Release Notes

eexibida.
eexibida.

''''' '''''''''''''''0 de c<l/'I'P<>1 ",.""0 _


.o<""""",ltmo,"...".o ~o<nl!

4. Pressione 0 botso Complete List. A tela D isplay St ruc tu re: Complete


List of Release NOtes

~,

0 "' belc> DOICIVJ

"'''' "" R/3, m<>' "p' u"'" '" be'a "" DOIC. At. Ichb. "" IVJpode m "" hila I., ",,"'pc" d. e..... . p<imO';"
.", 0GnI"",

Moo"", ..bel",

ITlJ """"-A

",b.le>T9

",b."'T9

do dod<l. t,,,,' """' . d;I <. nl. G nii me... d. C<lmp<>< d,I,,.,,,.. a' <''''PG .lim .,.,.,. d,I., ,.. <!G IO bela ODIC do IVJ

"'belode

bo",,"----

ITT]
.o.q....... "'llelcl.> "" R/3. """.0 Iab.le> ""
At. ",bel", I'", pole>

booc:"d. dod... .

" ' "'V <6<> ....... "c1.


..""' hon..........I.

""""" ... '" e""" " ",;",oM ,m """''''''

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.

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.

Aproundando-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.

NV O O...
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

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.

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 .

98

"RE NDA E 21 DIAl ABAP/4 M

D DD D IU ATA ICTIDNARY, PAR" 1

99

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.

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.
Fig ur a 3 2

Poo ls de to bela e labelaLd",e,-,p""o ",-,",-o '


lOYD Il.. illitO "

As lobe/os de pool
femum

re/ocionome"to

Umo tobe/o de pool no R/3 tem um relociono mento muitos- poro- um com umo

mvitos-poro-um com

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

pools d" tcbelo. .

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.

-:
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.

.,
ri

I'

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.
NOYD ....
Quando umo empresa lnstclc quo lquer sistema grande, ele normo lmente e JrutO ~ perso nolizodo de o lgumo moneirn perc encontror 05 necess idades c niccs do empreso . No R/3, esso perscncluccec e feila via tobelos de personolizoo. 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.
;

Cluste rs de to bel a e tobe los de cluster


H .... OYO mM.O "
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. 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.

I
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.

100

APREIiDA EM 21 OIAS ABAP/4.

OIA 3:0D TA DlGlONARV, PARTE 1 A


Fi g u r a 3 4

101

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.
Figurg 3 3

As fob e/os cdhdr e

cdpos

fern os

I I

CDHDR

Cluster !able

Change document header Field nama

I I

COpa s

Cluster table

Change document Items Field name

primeiros quatro campos de creve primaria em comum e sempre sao ccesscoos iuntos e enlao s60 ormozenodos no cdcls de duslerde lobe/os .

Key Typa

l engtll

Os clusters de lobe/a
orm ozenom

dodos de

Ccbeco lhc do pedido


do tobelo PK
1000 2000 3000
'-

Detolhe do pedldo do tobelc PK


01 02 01 03 01
ITEMl DATA ITEM2DATA ITEM 1DATA ITEM20ATA ITEM30ATA ITEM 1DATA

I I I I I ITA'KEY IFNAME I I IUNIT.OLO


MANDANT OBJECTID TABNAME CHNGIND

171 CLNT

OBJECTCLAS

CHANGENR

T EXT_CASE

vc rtes lobe/os bcseocos nos compos de chove prim6rio que e/os fern em comum.
0. c/adm0P'l"'''''''
no R{.!"""", so

Heade Data r Hec er Data Heade Dolo r

IObolo, .. ~,.do,.

,",I~ ....

1000 1000 2000 2 2000 3000


j

I
I
Tabla Cluster CDClS

ICUKY_NEW [71 CUKY 15


VALUE..NEW
VALUE_OLD

~:~;~~: ~ I R ~:~
[II
171 CHAR
CHAR

171 CHAR 171 CHAR 171 CHAR 171 CHAR 170 171 CHAR 110 171 CHAR J1 171 CHAR 11" 17

[7 1

13

CHAR

r-wr--.w r-wr-w-

fUNiTrs

. ", ."..

~ - - --- - --~ - - - -- - - - -- ---- -- -- -~--- --_ . _----- - -~~,.


o
Variable lenght row....... r 1000 Order Heoder Dote 0 1 ITE 1DATA M 2000 Order Heeeer Dote 0 1 ITEM10ATA 3000 Order Header Data 0 1 ITEM10ATA
I
~

0"""'.""'"
M"

O, do<Io> ..,.I o

-'-

Change document header

:-:::~~ --~~
clII1lor: ~

....

02 02

ITEM20ATA fTE M20ATA

03

I I

Fieldname.

.:

J2i4 J2i4

MANDANT

OBJECTCLAS

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
PAGElG

IOBJECTlO CHANGENR

I IVARDATA

ITI MESTMP

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 ,

~~J


102
" m DA EM 21 DlAS AWl'

-.v
Da D

v v.v

w. w

--

w.tW. w:ww _ _

'W ' & _

-~103

DlA 3:0 OATA OIITIONA P T RY, AR E1

Os indic es secundarios

podem ser criad os.

F igura 3 5

HI 0"

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.

Voce: DaD pede utilizar as estrururas (constructs) do ABA P/4 sel ect dt sti net ou grou p by. V oce DaD pede ut ilizar SQ L nativo.
Voce nac pode especifi car no mes de campo depois cia cldus ula or der ary key. by. A unica variacao permitida e orde r by pr i m

Compo

I"

Eo

cc mcostc de um

"
Elemento de dod os

co ntem r6tulos de com po

e docum entocc o o nline {ejude Fl)

-,

preci ~e

de urn

des creve ccrcct ertsuccs

(Cuicfudo

a usa de tobelcs de poo l e de cluster pode impedir que suo empreso


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 utili er ferrome ntos indepe nde ntes desse ttpo, voce pe de querer z buseor olternotlvos an les de crier tobelas de po ol au de du ster.

tecnkc s. (p. ex.,


Do mlnio lipo e com primen!o dos do dos)

'~
F jgurg 3 6

Um exemplo de
praiela utili ondo z tobelos, ele mentos de dodos e dom lnios.

Compos de Cu stom e r Tobie

Ele me nto s d e do dos

Domfn io

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 .

~
Zphonew ROtu\o: numern comerci ol
Zphon.

Explorando co mponentes de tabeloL-

phonew

Zpho nel

phonef phoneh

R6tulo: lo~ Zphoneh RO fulo: telelone ridenciol

loxlipo: cnor comp.: 12

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.
NOVO....

I'

ifRMO"

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 . 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.

NOYO ~

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) .

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

final.

---- w_ - -----
104
APiENOA EM 21 OIAI ABAP"

w _

-~

----- - -- --- - ...,


~

OIuoomOlmOHARY,PARTE l

105

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

domini c deruro do elemeneo de dadcs .

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.

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 snam En rao voce pode criar urn eleme nto e. 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.

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
Tipo de objeto Comprimento max. d e nome
10 10 10 10

Prlmeiro eereete re permitido

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.

Tobelo
clemente de dodos Domlnio

s, z
v, z
r, z
Quolquer ccrcctere

Compo

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.

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;; e.:.s elLnutJ;;:

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' " ODA DICTIONARY,P T TA AR 1

...
107

",," 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.)

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.

Tabela 3.2 Os compos e suos coroeteristicos para a tabela - - -Ha l


Nome de ca mpo

~o

PK

Nome
de DE

Nome
de OM

Tipo de dado

Comprimen10

mandt
1ifnr namel regio 1andl x

mandt
- 1 i fnr -- - namel regi 0 landl " lifnr - -name - reg i 0 -land!

L ernbre-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.

CHAR CHAR
CHAR

10
35 3 3

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.

CHAR

Esses names de campo e suas carac terlsticas tecnicas sao beseadcs em campos reais da tabela Hal.

N60 altere as na mes mostrodos oclmo. Os exerclclcs mois adian te neste liv contcrn com esses names de compo como mostrodo. Se re 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.)

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

Ab..~pa ra
bottom-up top-down

cria r tobelas

Hi duas abordagens que voce pode utilizar quan do criar tabelas:

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 w W o o_

W Yo W W W o o

w.

W W WWW.WWWi

--~

--- -

--

--- -

, --------- - _ --..- -- --- -=- ""="'" ~


DIU D"T' DiCTlONARY, PARm

108

' ' ' EN D' EM 21 DIAl ,SAP/. f.i.g..u.r.a 3 7

109

Tabela 3.3 Tipos de dados comumente uflllzodos


Tipo
CHAR

A tela DidionOlY:

Maintain Doma in e

Descr isa o
Strings de cc roctere (maximo de 255 ccroctere s] Vclores decimais (cornprtmento maximo de 31) Compo Dote Compo Time Volores inteiros Compo de coroctere que pa de canter epenes nurnencos

uti/Jzoda pora error um domfnic.

D EC
O ATS TIMS INTI, INT1 , INT4 N UMC

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".

Os campos O utput L ngth, Decimal Places e Lowercase e Letters


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.

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.

~.~ll<~ O .

_,~~t2}~'
APREND A

E"~lf;:~:B~:~4

01. 3: 0 DATA OlalONARY, PARTE 1 .&

111

campo seja adequadamente exibido, voce deve especificar

Problema
Nee posso criar

Possivei s sint omas


Qu and o voce pressiona Creole, nodo ocontece .
0

SolUliCO

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. .

botco

o dominio

Olhe no barro de status no porte inferior do janelo e pressione 0 balao novomente. Epr cvc vel que voce vera umo mensogem

cl.

I,
:~

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 .

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". Q ua ndo pressiono 0 batao Cre ate , voce ve a me nsa ge m " Enter occess key". Q uan do presslonc a bctoc Create, voc~ ve a mensoge m " You are not authorized to moke cha nges". Q uonda pressiono a botcc Creole, vo ce ve a mens agem "a lrea dy exists". O btendo mensa gem "W: {calculate d output length is sma ller tha n specified)." "E: Value table doe s not exist."

Altere a name de dominio pa ra y au z.

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.)

Altere 0 name de domrnlo pora inicior co m y a u z.


Soltcito outcrizoccc de

de senvolvimento do sev odm inistrodor de seguron<;a

o nome que voce digitou j6


existe no Data Did iona ry. Escalho urn nome de domfnio diferente. Deixe em bronco a ca mpo Output L ength e pressio ne Enter e depois Activate, Delxe em bronco a ca mpo Vclve Table, presslone Ente r e depois Activate.

2. Digire

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.
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 ,

.Obtendo dccumentocco de SAP nos dom inios


H i muitos lugares para obter documentacao de SAP sobre as recursos de s

domfnios.
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

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.

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.)

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.

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 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.

A lela Dictionary: Chonge Dolo

El ment, e

A docornen tcceo de elemento de dodos

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.
para
0

I
l
t
/

Crianda um elemento de dodos


N esta seCjao, voce aprendera a abordagem bottom-up para criar urn elemento

o cam po Shari Text


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 .

de dados.
S(RHNCAM~ Inicie a Screen Co m "How to Creote a Data Element" ogo ra .

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

114

AP ' EN DA E " DiAl " ,P/4 M

DlA3, ODATAOlCTIOH R , PARTE 1 AY

115

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 A . e a mensagem "was ct activated" aparece na barra de status.

14. Pressione Screen.

botao Back. Voce

e levado de volta aDictionary : Initial

Problema

Possive is

SoluCjoo

stntem es
Nsc posso
crier elementos

Q uando voce pressiono a botcc

Crecte, nade acontece.

de dodos

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. Altere 0 nome do elemento de dod os pa ra inicior com y ou z.

Quando pressiono 0 botoo Create, voce ve 0 mensagem "System change option does not a llow changes to SAPobjects". Quando presslono 0 botcc Create, voce ve a me nsoge m "Enter access key". Quando pressiona 0 botoo Create, voce ve a mensa gem "You o re not authorized to make changes" . Quando pressio no 0 batao Cre ate, voce ve a mensogem "'olreodyexists".
Nne posso otivcr elementos de dados

Altere 0 nome do elemento de da dos per c inicior com y ou z .

Soliclte a autori zOl:;oo de


desenvolvtmento do seu od minislrodor de sequronco.

o no me q ue voce inseriu i6
existe no Dota Dictiona ry.

Escotho um nome de dominio difere nte.


V6 a te la Dictionary: Change Dolo Eleme nt e de um clique duplo no nome de domlnio. Voce enteo vera uma coixo de di610 o u a tela Dictionary: go Display Domain. 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".)

Aporece a mensog em "No act ive domoin exists with nome". nome de dominio que voce d igitou no lela an terior n60 exlste ou ':l0oestc ctlvo.

I
I
\

I
I

I ~,J

!!

&

Soluljao
Se, de pais de da r urn clique duplo , voce vir a tela
Dicti on ary: Display Domain,

DlA 3:0D TA ormoNARY P A , ARTE 1 )

116

APRE NDA EM 21 DIAS ABAP /4


Fig u r a 3 9
A tela Dictiona ry:

117

Problema

Possiveis

sintomas

Toble/ Structure:
Chonge Fie lds cnvc fexto curta, otribu los e nam es de compo 0 serem inse ridos.

.~ : iFol.

:,, 1

~"' nild. 'f\;i.': ;j".~:~,~. . ;/,->:;,~:';>c .,.: .; ;.;>.,;

";;.~~ ~}';' ~~f~

TYIn1

~':'':T;ln~p;;;:~~i:'' t~81~''' ~. ''''''}'''::':''~;:' ''''; :-~<~~''::'';{~.:c' ./_

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

"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
mensa ge ns

"Mainta in field lobel."

Insiro a s rctclos de campo


sho rt, me d ium , lon g e depois olive.

IIW: Length was inc rea sed to th e

o texto de cc becolhc que


voce digitou era mais long o que a comprime nto do compo . Esse n60 urn"erro serlo. Para

adual text lenqth."

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.

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.

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

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.

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 Short Text e utilizado para

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.

o campo Delivery Class

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.

===
118 I
APRE!fDA EM 21 DIAS ABAP /~

==.--=====--

-DIA 3: 0 DATADICTIONARY, PARTE1

"
119

.... Inide a Screent.crn "Hew to Create a Tra nspa re nt Table Using Preexisting

SRECAM Domains and DOlO Eleme nts" a gora. CEN ,.


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.

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.

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

!i I,
'I

3. Escolha 0 batao de 0Pl1ao Table s. 4. Press ione 0 bots o Create (pushbutton) . V oce vera

atela Dictionary:

I;

Il

"

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

Ii

letra 0 ).
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 .

I,
I
i
L

i!

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

Pro ble ma

Possivei s sintomas
Qu a ndo voce presslonc Create, nada oco ntece.
0

Sol ufjao

elemento de

Nco posse
crier a tobela

batao

0 nome de elementc de dados esti erra do na tela atual.

a elemento de dados exist e e 0 nome esra escrieo corretamente,


mas nao esta ativ o. 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 .
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.

w.w --~~---~-~~~-~-~~--120
"RENDA EM 21 DIAS ABAP/4
Solu~60

DIA 3,0DATA D ICTION Y, PAR " TEl

121

Problema

Possiveis sintomas
Quando presslo no 0 bata o Create, voce ve a me nsagem "Syste m change option does not allow changes to SAP o bjects". Quanda press iona a batao Create, voce ve c me nsoge m "You are not au thorized to ma ke changes". Quando pressio na a ba tao Create, voce ve a mensag e m "already exists".

Problema

Posslveis sintomas
"E- Field (Data eleme nt or domai n
is not act ive or does nat exist} ."

SoluCjoo

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

Ve ja a linha "Nco poss e otivo r a tobelc", cnterlcrrnente . Procure mais e mboixo umo men sagem (em vermelho) scbre 0 Data Closs au a categorio Size. Proc ure odio nte umo mensogem (em vermelhoJ sa bre Data C loss ou cotegorio Size. Procure adiante uma me nsogem (em ve rmelho) sobre Da ta Closs a u categor ia Size.

"E- Entry in ta ble TAO RA missing. "


Solicite a outcrlzocec de de senvolvimentc de se u administrador de seq uronco.

"E Error in co de ge neratio n for

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 ogo com 0 titulo Creote d i61 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 .

creating ta ble in the DB" "E- Ta ble (Sta teme nts coul d not be ge ne rated)."

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)".

"E- Field Size cat egory (Va lue


no t permitted)."

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}.
Oe campos de chove prim6 rio

"E- Field Data clcss (V olue not


perm itted}."

"E- Key is a lready de fined ; field


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 .)

Venda

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.

DIA 3, 0OATAOICTIOHARY, PA T R E1

123

122

" mOA EM21 D S A IA 'AP/4

Problema
Vendo a cclxc de di6loga Adjust Table cam a texto Table must

Possiveis sintomas
A tobelc preciso ser convertido.

Solu~ao

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


,. Dornotns and Data Elements ogoro .

be adjusted
in the

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..

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,

datab as e.
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

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.

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.

I'

I,
I

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.

i
I

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.

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.

--t. .

<:...:~.. .

;xxn I!. !:J I


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

~. _'I .

. .. . . . .

* w

'W

w w w w w . it . :5 -;;
DIU aDATA DICTIONARY, PART< 1

125

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 A . ct 27. Pressione a botao Back para retomar a. D ictionary: Initial Screen.

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.

Modificondo tabelos
D ep ois que voce criou uma tab ela, voce pede:

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 .. onheci da para voce. c Para excluir uma tabela, siga este pr ocedimento:

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-

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

..r-...........,....,r...r-..r ..........,r.,r...r ...I""".....,r..,!!"'""'!!r

W._ WW W 9&* _
"'!!!!""""'!!!!.... !!!'~~""l;!i! I
DIA3,DDATADICT1DN' R, P, RTE I Y

,P REN" EM 21 DI,S 'BAP /4

127

Adicionando

camp~Ol:>S

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.

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.

~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.

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.

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.

128
"RENDA EM,l DIAS A BA'" Din 0 D TA DICTIONARY, PARTEI A

129

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.

fun cionalidade

e a partir

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: 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

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.

Fozer clterocoes em urn do minio ofeto todos os ca mpos que


0

navegador de dados que. por sua vez, chama

programa de

utlllzcm.

ABAP /4 recentemente gerado.


Mostra urna tela que permire que vo ce erie linhas na tabela.

Tro bo lho ndp com dodos


Se voce ja nao fez isso, erie sua tabela agora e ative-a antes de prosseguir.
Dentro do R/3 estec 05 ufilit6rios fornecidos pe lo SAP chomodos nov.I?90dores T ERMO ~ 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.

S(mH(AM~ Inicie a ScreerrCorn "Ho w to Add Doto to

Table" agora .

NOVO...

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

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.

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

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

._., ~

'J:fr

'. oil

"~::-....""-""-:,,,,"""''''""""'!!,,..-"'''!!r:-''!!!!~'!!!!!''''''!!'"""''!!!!''""""''!!''''-'''II!!r'!!!!''''''!!!!'''''' ,...-,r'''ll!!''''''''''''''''''''''''P-..r-'''''' ' IIII'"

,....,.....

r- ,..

...,

r-..,.....
'131

130

APRENDA EM 21 DIAS ABA P"

DlA3: 0 D ATAD ICTIONARY, PARTE I

caminho de menu System -c-Status. 0 nome de programa aparece no campo Program (Screen).

Problema

Possiveis sintom as
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.

SoluljOO
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 .

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.

Fl '~

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.

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

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:

Problema
Nso posso adicianar dodos

Po ssive is sintomas

o item de menu Create Entries


est6 ocinzentado e noda cccntece quando voce da um clique nele.

A ca ixa de seleceo Tob.Moint.Allowed nee estc otivada. Va para a tela Dtctlcncry: Table/Structure: Change Fields (para chegar ate 1 exiba a tobelo e clique 6 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.

D a tela Di ctionary: Table/Structure: C hang e Fields, escolha minho de menu U tilitie s-c-Table Contents. Digire /nse16 no campo Command.

ca-

S(mHCAM~ lnlcte a ScreenCam "How to Display Tc ble Da ta Using the Doto Browser" agora.

iI

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
'P RE Ho , EM 2J DiAl ' ' ' PI' , TE DIU 0OAT' olmoNARYP' R I

133

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.

Ro le para cim a e par a baixo. Role

a esquerda e a direita.
0

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


Enrry-> Create.

caminh o de me nu Tabl e
0

Altere uma linha existe n te ativando-a e entao escolhendo de menu Table Entry -c-Change.

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.
0

caminho

Problema
Node c contece quan do voce pressiono 0 botdo Exec ute.

Solusao
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.

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.

Nc o h6 dodos no tooele. Vocl! pressionou Save depois de coda registro ?

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

He menos registros no lista de


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.

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

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.

caminho

S(RHNCAM ~ Inicie

Screen Cam "Dote Browser Functionolitl ogara.

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

Na tela de naveg ador de dad os voce pede fazer

seguinte:

DtAJ: oD DlOi NAR , PARTE 1 ATA O Y

135

,1 t l

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 516 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.

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.

niMO r

NOVO lrl...

Um di6/ogo de monuteno 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.

ENTRAOA~

Lista ge m 3.1 Programo simples para exibir os dodos no ta belo ztxlfal

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.

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. 516 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.

Comparanda

SEl 7 cam a5El 6

1 report ztx0301. 2 tables ztxlfaL 3 se je ct > from ztxlfal. 04 wr H e : I ztxlfal-11fnr, 5 zt xlfal-nam , el 6 ztx lfal-regi o, 7 ztxlhl-landl. 8 endsete ct 9 if sy-subrc <> O. 10 write 'Table is empty.' . 11 end1f.

Utiliza ndo

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 .

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

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).

"'l!'"

",!!!!" --'!!!9 ~ .~ -

-es- -.~ -~ ~ ~""'="'" ~ ~--~~ ~-~-----

~'~i ~:C

O 3,0 DATA DICTIONARYPARTE 1 IA ,

"'
137

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.

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.
2. Escolha 0 caminho de menu Utilities- >Docu mentation. A Document Maintenance: Initial Screen e exibida. 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. 8. Pressione-o botec Save Active . A tela C reate Object Catalog Entry e

Testo rido a ajuda Fl


Para testar sua ajud a F l : 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.

exibida.
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

Ad icio na ndo vinculos d e hiperte xto pa ra aju da Fl


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.
S(RHN(AM~ Inicie
0

NOVO ~

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

ScreenCom "How to Create

Hypertext link in F1 Help" ogora.

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.

138

APmDA E 71 DlAS ABAP/4 M

DIA3: 0 DATADIGlONARV, PARTE 1

139

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. 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.

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 , 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 .

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.

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.

P&R

o E 'j;l, o
c

..

Problema
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.
H

Sol u ~ ao

R pore cirnc. ole

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

'" -e
~ III
~

'"

....

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. 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
o

Estou pressionando 0 botco Documentation no tela de elemente de dodes, mas nado cccntece.

dominic?

140
I APRENDA EM 21 DIAl ABAP/4

- - __ v

w-- . . . . = _ .
DIA 3, OD T A ADJCTlONAR , PARTE 1 Y
!

141

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

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 ,

6. Q ual ea diferenca entre uma tabela tra nsparenre e um a tabela de pool ou uma tabela de cluster ?

rabela.

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

o
o

E possive1 er iar um cam po de tabe1a sem utilizar urn eleme~to


de dad os au domin ic? Isso parece muito trabalhoso pa ra crrar para eada cam po. 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.

I !
!
!

I I

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.

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.

Q l Je stjo no ri o
1. Qual e 0 prop6siro do dominic ?
2 . 0 que
0

elemento de dados contern ?


0

3. A quese refere

termo dados de aplicativo?

4. Para campos do tipo DEC, 0 ponte decima l earmazenado com ovalor do campo?

~ ,--,,' '

142

I ' PPEN D' EM21 01'S 'B'P/4

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


D e sc ri ~a o

N ome

PK

No me
de DE

Nome
de OM

Tipo

Len

de ca mp o
Chente
mafldt Numero de c1iente

m andt
kunnr

kunnr

Nome de clente
name~

knamel
ci tyc

Ctdode
cityc
Regioo

regio
Pels

"r egi o
, and l

1andl

oData Dictionary, Parte 2


Objetjyos do capitulo
Depois de completar est e capitulo, voce sera cap az de: e Criar chaves estrangeiras.
U tilizar 0 campo Value Table no do minic.

Criar e utilizar tabelas de texto. Descrever a diferenqa ent re uma estrutura e uma tabela e criar 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"' i ra " eCLuoLs


NOVO -....

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.

nl1p:l/www.compU $.ccrn.br

-------------~~~~~~w~~~144
APREH DA EK 21 DIAl AB AP/ '
Figura 4 1

.. -....

YWWYW W .
145

DlA 4: QOATA OIcnONA Y PARTE 7 R.

Tabelode move
estronge.ro

Tobelo
de yermco<;Oo

A tcbetc de chcve estrongeiro e 0 tobelo


de verificor;60.

cbc ve ~ lan d l estrongeiro ~

rth lfo1

l MO OS land l

nome do tob ela

nome do compo
reloctonc mentc de chove eslrongeiro

Ii US
CA

cA
IT

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

Esto to belc contem umo lisle de c6digos

valids-los.

US U S
DE DE

de pcis v61 ido$.

JP -'-

US

"-

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 inserirexis no tcbelo de verifico<;60 (ztxO05). te

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.

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. .

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.
segundo requi sit o existe p ara garantir qu e os campos que ests c sendo comparados sejam compativeis quanto co tip o e comp rimen ro de dad o (veja a Figura 4.2) .

Acionando a verifi ca ~ao de chave estrongeii-a


A verificacjo de chave esrrangeira ~ executa da pelo usua rio cia in te rface do R/3 . Quand o voce digita urn valor em u rn campo e p ressiona a t ecla En ter, nos 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-

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.

......

- ...

- --Tobela de
verifico<;oo
,",,005

... .... .. -- --

.. C IAt 0 DAT ADlmONARI, PARTE 2

146

APRENDA EM 21 VIAS AB AP/4

147

Fig ur a 4 2

E e urn diogromo ste


do compo de chc ve
estrangeiro, do compo

Procedime nto de criccco de ta be lo de verificccuo


tcbelcs com pos

mlto 1

de tobelo de
verificoc;lio e

landl

land1

do dominiccomum que eles comportilhom.

"

"

I, pe:3chcr n:

"" /

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 ' . tO S" agora. O

Para criar sua tabela de verificacao :


Estes carocteristicos sao herdodo s do dominic elerne nto de dodos

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

type: chc r
len : 3

2. Digice

nome de tabela no campo O bje ct N ame .


0

ztxlcnd l
ztxlondl

3. Escolha

bo tao de opcao T able.

4. Pressione 0 bocao Create. A tela Di ction ary: Table/Structure: Change F ields e exibida.
_ dominic

TYPE : CHAR L EN,3

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. 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 "i" a--.Q"e r "

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

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)
0

no campo Size Category.

13. Pressione

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. . 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.

as campos e sues ca racterfsticas para a tabelo


PK
x

- --TOOS

Nome d e cam po

No me de DE

mandt l andl

m t and
- -1 andl

I ,
~..--.d

w ...
148
APRENDA EM 21 DIAl ABAP/4

........... w
Fi g u ra 4 3

wv

V.W!''I ..;

DJA4: 0 DATADlcnmUR , PARTE2 Y

149

Proced imento de criocc o de chave estrangeira


S(RHNCAM~ Inicie
0

ScreenCom "How to C reate a For eign Key" ag ora.

A tela Create Foreign Keyeobe compos de tobela de verificaqdo e seus compos de chove
esfrangeiro ossociodos.

Para criar uma chave estrangeira:

1." Comece na Dictionary: In itial Screen .


2. No campo Object N ame, digire a chave esrrange ira ( - - -1fal). 3. Escol ha
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.

Testa ndo

relacionamenta de chave estrangeira

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- ,
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 ct campos Status sao agora A . e Saved. V oce acaba de criar urn relacionamen tc de chave estrangeira entre as S. tab elas - H al e - tOO ---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. ment? Pressione
0

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) .

borso Yes.

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 .

. ..'-.

150

,PRENDA EM 21 DIAS "'P/4

DIA4;OOATADlaJONA Y P R , ARTE 2

151

Durante a cria~ao de uma chave estrangeira, voce colocou 0 cursor no campo de chave estrangeira e pressionou 0 botao de chave estrange ira e 0 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.

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.
plo, MY-V!.

6. Digire qualquer valor no campo de numero de fabricante, por exem-

7. Posicione
8. Digite
0

cursor no campo Country Code (landl)..Em bo ra uma seta para baixo apare~a no fim dele, nao a pressione ainda.
0

Rel aci o'na nd o as chaves estran geiras com a seta pa ra baixo e a ajlJdo F4
NOVO...
lERMO
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.

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 . 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.

I
I I

Quando voce cria uma chave estrangeira, a ajuda F4 ofe rec ida para esse campo.

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.
12. Pressione 0 botjc Save na barra de [erramentas Standard. A mensagem "Database record successfully created" apar ece na barra de status.

$CRHHCAM

lnlcie a scree nco m "Using

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.

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
!

~~j

152

AP RENDA EM 21 DIAl ASAP"


figmg 4 4

DlA 4: 0 DATA D ICTIONARY, PARTE 2

153

C h aves e strangeiras e p rogTIlLLmUL:l eWLlo t!e U Osc..!O m l W Os programas em late que leem arquivos sequenciais au outras

Iobelo de chcve
estrongeiro
ztxllal

Tobela d e
v e rifi ca ~60

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 :

Uma chove estrangeira compo sto


volidondo a . combino; oo de regioo

ztxt005

e de poisem relo<;Cio 6 lobelo de verificor;Cio.

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 .

LOOrr us FL CA
ON

LOrEr
CA CA US US US
DE DE
ON

relacionamento de chove estrongeira

US A US GA

NS AK
Fl

chcve estrongel r a " composto cc mcc de verflcocco. Umvalor nesse compo a d ona a verthcocec

DE DE

02 01

GA
01 02

Chaves es t ro ng e iro s compostas


NOVO 'rr....

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.
MOVO ~

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.
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 otuoliz6los para ter 0 mesmo tipo e comprimento de dodo. Umo falho nissoresuhor6 no operoc;co imprevislveldo chove estrongeiro.

I ,
,
f
t , ,

I I

URMO ~

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.

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).

154

" RE NDA EM 21 DIAl ABAP /~

DIU 0 DATA DICTIO NARY, PA 2 RTE


F igu ra 4 ....A....--

1:>5

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
o utre . A ajuda F4 escd apen as disponfvel no campo de verificacsc de uma chave

A definio do cho ve estrongeirc mostrodo

no Figure4.5.

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

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.

Umo cho ve
~strongeirc

Tobelo de chove estrongeiro


ztxIfa1

Tobelo de
verifico~oo

composto
0

",,1(105

envofvendo

compo

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

cutros

I I I I I I I I

US Fl US GA U GA S 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

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,

as valores de Y sign ificam :


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.

compos

Entenda a cardinalida de
NOVD ....

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 .

N H a sempre pelo menos uma linha na tabela de chave estrangeira para : cada linb a na tabela de verificacao ,
CN: Pede au nao haver Iinhas na tabela de chave esrrangeira para cada linha na tabela de verificacio.

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

44 . ....

156

APREH DA EM 21 DIASABAP/4

O OO'T'OICTIONARY P ' I IH , ARTE

157

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.

N lio.. OVO lElI',O "

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


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 .

Campas-chave de uma ta bela de lexla

Iipo de campo de chove estrangeira


o ripe de campo de chave estr angeira tambem deve ser especificado na mesma
tela que a cardinalidad e quando voc e cria a chave estrangeira (veja a Figura 4.3) . Ele pode ser urn dos segui ntes valor es:

Campos/candidaros-chave
Campos/candidates nac chave

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-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.

NOYO .....

rmlo "

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).

Candidalos-chave
NV O O'"
TERMO ""
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 .

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 O OSt- 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.

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

DlA ~:

0O DICTION P ATA ARY, ARTE 2

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


Tabela 4.2 Co nteud o do tabelo ztxOO5
F ig u r a 4 7

A tcbelo de fexto pore ztxt005 eo ztxt005t. flo eo comp osto de compos

landl

us
CA
DE

mandt, spros,

landl, landx e natio.

IT

JP AQ CC

Ta bel a 4.3 Conte udo do tobela ztxt OOSt


s pras
E D E

l andl

lan dx Canad a Kanada Germany Deutsch' and U nited States

CA C A
DE DE

Relocionando as tabe las de te xto com a ajuda F4


HOVO ... TIiMO "

D E D E D E D E D E D

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 propriedades esped ais:

US U S
IT IT

USA
Ita ly Italien Japan Japan Ant arcti ca Antarcti ca Coconut Islands Kobinseln

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 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.

JP JP AQ AQ C C C C

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

$Cl N,Ul,.... lnlcle ~ ScreenCom "Text Ta ble Demonstratio n: The Effect of the Logon LonEC
,. guage ogara.

1. Inicie a rransacao 5E16 (digite /nse16 no campo C ommand e pres2. Digite

ztxl f al.

a conreudo das tabelas ztxt005 e zt xt 005t emostrado nas Tabelas 4.2

sione 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. ' 4. Posicione a cursor no campo Country Code {l andl }.
_,I

e 4.3.

_______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 tOO sao exibidas. St

I
,

DIA 4:0DATA DICTIOHARY, P ARTE 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.

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.

Chaves estrangeiras genericas


NOVO llr.. ltRMO "

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.

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.

P or exemplo, dentro do ap licarivo M at erial s Management, a tabela m ara 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

Nome d e campo

PK
x x x

N ome de DE

Nome de DM

mandt spras 1andl 1 andx

m andt spras - - -1andl - - -1andx

semelho alobe/a nte mara de the R/3 MaterialMosler.

A tobeloztxmaro e

t ext1 5

;,
,

,
" "

'

Depois de ativar - - -t005t , digite os dados n ela utili zando 5E1 6. Utilize o s dados de exemplo mostrados na Tabela 4.3. Agora erie uma chave estrangeira em _. - t005t -1 andl. Siga 0 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.-"

.'

;,J,.

t, ... ,

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

.. .
162 ,pm" EM
" DIA S AB AP/ '

'W'W'W''W''W
/

.........

...
~

...

DIA ~ :

0 DATA D ICTIONARY, PARTE 2

163

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.

Figura 4 10

Umo ma rco de

verificor;oo no coixo
de selet;60 Generic

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

_1;,1",1

indicaque um compo deve ser ignorodo durante 0 verificor;oo

de chc ve eslrongeiro .

':M"; t. ~~~ ,
. .

~"

-.,"

'

,..

~l',, ; $t. j" '~' ~U5S ~ ,.-t ,,;; r,;.~: ~-_ : ~

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


-

'f';:',;~;;'':::;:::~;;~B~~~~~;'~~ .

.,
i

Quando essa chave estrangeira e verificada, somente a combinaci o d e m andt 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 xm a, ar 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.

HV OO.... 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


NV OO.... TtRM ~ O
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 [v a Figura e]c 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 H de ztxt 005cc. nha

'!' '!' '!' 11 !!f 'I' .. 'I' ... .. .. .. ... ... ... ... ... ... ...
164
APR!NDA! M21 OIlS A BA P / ~
Fi gu r a
4 11

"II!"

-- --- w w

'W

- -- -- - - - - - -

'165

D 0DATA DICTIONARY, PARTE 2 IH

pots como umo chove estrongeiro ccostonte.

o compo

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

campo Value Table

Fjg ura 4 12

Exemplo de

umo

chove eslrongeirc odoptodo .

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 " alue Table" de sua V mente e im agine que esse campo e chamado "Default C hec k T able". Para simplificar 0 exemplo, nossa tabela de verificacao tera urn umco campo de chave primaria, ilustrado na Figura 4.13. Para ilustrar esse conceito, descreverei 0 processo que voce iria erial' para essa tabela de verificacao e utilizar em urn relacionamento de chave estrangeira.
Fi g u r a 4 13 ztxtOOS

a compo Value Tobie

tcbelc de verifico~oo

Defini nd o um a tabel a de valor


11010

dentrodo dominio contern 0 nome de limo tabelo de verin colioo.


Elemento de dodos

URIIO"

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
Domlnio

0111 t 0 DIITA DICTIONARVPARTE 2 ,

167

166

'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 }. 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 . 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 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.

Check Table.

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

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 poderiamos 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. 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.

o campo Value Ta ble como proposta de Check Table

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
APRENDA EM21 DIAl AB A P,.

w w w

w ..
DlA~ : 0DATADICTIONA Y PARTE 2 R,

169

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.

O s campos m onetarios tern esses requisit e s: 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 estrangeira 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 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.

n~\O r

N ~ OVO

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.

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 w s) para indicar completarnente a qu an ridade e a chave m onetaria aer 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) .

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

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

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 especffic e pedi r "'1.000 dolores norie-omericnnos". Quontios monet6rias o 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

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.

I.J

., I ~~~~~~--------------f! lH
.os ca mp os de qu-oanoIlti.od.o eL...ou;dlf

O 0DAnOICT10NARY, PARTE 2 IH
Figura 4 16

17

milo r

N OYO....

Urn compo de quantidode

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 :

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

rl
~I
~

li

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

compo UNIT.

0 tipo de dado no do min ic dev e ser QUAN. Ele deve estar vinculado a urn campo do tip o UNIT.

t
.>

campo UNIT 0 campo de referencia para 0 campo Q AN. 0 camp~ UNIT U pode estar na mesma tabela ou em outra tabel~. 0 cam po U co ntern a unidade NIT 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 U IT. Se voce der urn clique duple em nt~ e~, ver~ que a tabela N de refe rencia e ztxmara e a campo de referencia e gewei (veja a Fi gura 4.16).

~
As estruturas no Data Dictionary
TWO '"
NDVD ....

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.

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

As diferencas entr e urna estru tura e uma tabela sao como segue: Uma estrutura nao tern uma tabe1a de banco de dados associada. Uma estrutura nao tern uma chave prima-ria. Uma estrutura nao tern atributos tecnicos. As estruturas seguem as mesrnas convenc;6es de atribuicao de nome que as tabelas transparentes e voce nao pode ter um a tabela e uma estru tu ra com 0 mesmo nome . Voce criaria uma estru tura no DDIC se quisesse definir a mesma area de trabalho em diversos programas. Por exemplo, se voce quiser escrever regist ros para urn arquivo sequenti al utilizando pro grama em ABAP/4 e depois Ie-los para utilizer outre, os dois programas precisam conhecer a layout desses registros. Voce criaria uma estru tura no D DIC que define 0 layout do registro e entdo atribuiria na mes a essa estrutura na instrucao t abl es nos dois pro gramas. Isso criaria uma area de trabalho identica para os dois prograrnas. o proc ediment o para criar uma estrurura ~ quase a mesmo para criar uma tabela tr ansparenre. [Co nsulre as pro cedimentos para criar uma tabela trans parenre.) As unicas diferens:as sao as seguintes: Em vez do borfo de op~ao Table, escolha 0 botao de 0plSao Structures. Os campos D elivery C lass e Tab.Maint.Allowed nao aparecem. As estruturas nao tern uma chave p rimaria.

APRENDA EM 21 DIAS ABAPI4

Nenhum atributo tecnico pode ser especificado, como classe de dados, caregoria de tamanho a u usa de buffer.

11-----~~~
DIA 4: 0 DAT AOlCTIO ARY, PAm2 H

17:

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 xem (tabele de empregado) inclu i a estrutura pl 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: pl zt xemp l -stra's; zt xem - ortOl. ztxempl reqt 0 e zt xemp1-1andl.

Para . . Jh visualizar a i ncl udes expandida dentro cia definiicao cia propna ta beIa, . ~ 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.

NOVO ...
TEi.UO

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 cricdo incluindo umo r b 1 codeic de .estrvturosprofundidode maximoestrvturo dentro deoutro e' c home d,0 codeio de indudesoA de oninhomento no od
e ve e sc me nte

A estrufuro z t xaddr contem as compos de enderel;o que sea induidos no tobefo

.'.,,><1

ztxemp l.

j
,
j
I

.~ :j,'

Eigur g 4 17

!~ "

It 'd 1: diE it '


~:bo. j/Moo ' ~ ~ ..... ~ ; ::" :' ''';~~;'''' '_,; ; __ <.1 -'".:t~. _.,:

A tcbelo de z t xemp l ccntem um I N D pora CLU E fazer com que os campos de ztxaddr seiom
odicionodo s a ela.

1... 'r.

'iI' j
~

::::::J ~t.ti : ~- x ~ a ~1i.0 0 "" -:'0 ;,:t;g~:t>-:::.~.$; :=;"_:jj ;-;~ ,;;p- :0- :~: ;:1 ~ ;..l' :"; io t ;'-d-'Si",:UCiQ,iil;': t:'riCiliii .licllll ril' :"lrille.<e.:; ~~~+t=;,;r":i;'~,",1~#~ ( ~.i_. c

. ;,

-(.~~.,.

.,,,,,., ... ?"-:: "

~~~~i~=~~i~II ~~!~:~~i1~;~~ 1t:flw t~~~~~tie;f2.t~~~~~::


. ... u.~ du~"f~~~"PU~l tn1lt.(~.";~.tr~u~tb" :
Nhl .'

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.

~ ~?>-<~':.J,

"!io''; . " ", _ ; :-.

il.... ; n .-.: ~~' : UU >,d'.".' .1n~ l-~,t~ ~~u"rnl l " '~"l;:.t ... t~ -'-',* \ :"': : _~ -O. , ".:..'\""'::'o'"'::r.:-!i,.:.,,: ~ ,t o;, k

I I

174

APRENDA EM 21 DIAS ABA P/4

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 .1N CLU- 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 m inclui a estrutura zt xaddr duas vez es. A primeira inclui , p12 . INClU-Ol , [az com que U01 " seja acrescen tadc a cada urn dos n a m es de campo cia estrutura. A segunda, . I N -0 2, acr escenta "02" a ca da u rn. 0 resulrado, CLU mostrado na Figura 4.21, pode ser visto escolhendo 0 caminho de me nu Extras- c-Substructures-> Expand All Subsrr. rsra
F i g u ra 4 2 0
, .,.. .-.'4- .. .... ;-- ......,, - . -. ;': : - -.-., .

FigurQ 4 21

'''I

;.1... l llt.li'" EJIo. LlI'io ~ ~ '

51

if &hi ei"lt4E

Escolhe r 0 caminhode menu

if L._.

. _'3 ; ~

c- --; " I-~,.~~';' >;.', ."\-":'t::"''''''-=.>l./:- -:>t:~,'';r:-...l''_ '' o 4: 'Xn M 'rt . t~l ~ E'-- -~ -{ {.;~<~~~._;--;;:~~: ,::.: ~
Ilolo 7 ~-:,:;r

"1, 1,,1

Ex/ro->
Substructures- >

Expond AllSubs!f.
fez os compos des estrutvros oporecerem no lisle.

Alobelo z tx em pl2
uti/izo
0

mrmu/6rio

.INCLU XXX do instru~O o incl ude


de modo q ue

ztxoddr po sso ser


inc/uldo duos vezes
sem dup/icor 05 nomes de. compo .

Resumo
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. A tabela de valor oferece u.ma proposta para a tabe la de ve rificac go e oferece ajud a H .

,i

'!

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. 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.

Ii
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 diferenci6las. 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.

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 . 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.

-y
176
" " ' D' E ' 1 DIA l " "" M

r...

_ !

P&R

o 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.

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.

As estruturas podem ter definicces de chave estrangeira? 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 estrutu r a.

o
Workshop

as

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

as seguintes exercicios darso a voce pratic a na cri acao de chaves estrangeiras, campos esp eciais e estr uturas.

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

Teste
1. P ara urn a chave estrangeira ser criada, 0 que 0 campo de chave estrangeira e a campo de tabela de verificacic devem ter ern eornum? 2. Qu al e a sintaxe para inclusao ci estrutura zs l dent ro cia tabela ztl? a 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 m andt , 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

referen cial.

Se quero garantir a integridade referendal de meu banco de


dados, posso ir para 0 nivel de DBMS e criar Iimitacoes de integridade? Como isso afetaria 0 Rt3?

o
o

Nao, nunea atua lize as definicoe s de RDBM S dir etamente. Voce


s6 deve utilizer 0 DDIC do R/3 para alter ar as defini coe s dentro 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. 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?

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.
Tabela 4 .5

o
o

Nso. Esse recurso e normalrnen te definido


clusao" e D aO esta disp onfvel no RJ3 .

"cascara em ex-

as ca mpos e sues corocterfsticas pera a tobela


PK
x
x

-tOO S

Descri~ao

o ti po de ch ave estrangeira Key Fields Of A Text Ta ble faz com


que 0 sistema se com porte diferentemente. Os outros tipos de campo de chave estrangeira tern qualquer funcionalidade par tras deles?

Nome de campo
Cliente

Nome de D E

m andt
Chove do pafs 1andl

mandt
-1 andl

178

"RENDA EM!1 DIAl ABAPI4

DIU 0 DATA rncnoNARI. PARTE!

179

Depois que voce ativou essa tabela, va ao domfni c - 1andl e digite - tOO no campo Value T able, entao ative-o. Utilize SE16 para adicionar s c6digos de parses asua tabela.

Ta bela 4. 1 O s ca mpos e sues corocter fsticos para 0 tobelo 0t 0059


Descri ~ a o

Exerdcio 2
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
Descriscio Nome de compo

N om e de camp o
Cliente

PK Nome
de DE
x
m andt

Nome
d e OM

Tipo

Len

Tabela de
verificD ljOO

mandt
Chove de-pels landl C6dig o de reg ioo

x
x
x

l andl

- - -tOOS
0

rect o
C6digo de cidod e

regi o ct t yc
- ci tyc

t OOSs

PK

Nome de DE

Ta bela de

v e r ifi ca ~a o

citye

CHAR

C liente

m andt
Cbcve de pais

,
x x

mandt
. 0 -Jendl
t005

Nao se esqueca de criar os relacion ament c s de chave estrangeira nos campos land1 e regie.

, andl
C6di go de regioo

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
Descri~ cio
0

regio

_. -regi o

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 516 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.

tDOSh

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.

N ome d e campo

PK

Nom e de DE

N om e d e OM

Tlpo

Len

Ta bela de
verifl co~ac

C1iente

man dt
Chcve de idiomo

m andt
spras

spras
Chcve de pols

tOO2
otOOS

l andl
C6digo de regioo

x
x

, andl

re qt o

.0.reg1 0

.00t005s

180

APRE NDA EM21 DIAS A P/4 BA

DlA ~ : O DA.TA Dl mONA RY, PARTE 2

181

Tabela 4.8 Connnuocdo


Descrit;ao
Nome

Exerdcio 7
Len
Tabela de
ve r i f i ca~a o

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

PK

de campo
C6digo de cidode cf tyc
Descrtcco

Nome de D E

Nome
de DM

Tipo

cityc
bezei 20 text20
CHAR 20

-t005g

Descrisao Nome de cempo


li mite de Credttc

bezei

.Nome de DE

Nom e
de DiY".

Tipo

Len

Decimal

Tahela de
verifi(a~ao

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.

cr editl
C hcve monet6rio

cred it creditl CURR waers

12

2 tcurc

waers

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


Primeiro nemerc de telelone

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.

N ome de DE

tel ft
Segundo nemero de telefone

te1fl
telf2 telfx telxl

telf2
Numero de fox

telfx
Ncmero de telex

te 1 xl

~I :J

Inclua essa estrutura no final de SUilS tabelas - - - knal e - - -1 fal. Utilize SE16 para atualizar alguns de seus registros existentes e adicion e mimeros de telefone a des .

www

w---~~~--

~ ---

-- ----- - -- - -

oData Dictionary, Parte 3


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

Entendendo os indices de tabela


Urn indice e urn mecanismo de eficiencia para localizar rapidamente .linhas dentro de uma tabela. Ele e necessaria porque os dados sao armazenados em lima tabela na ordem em que foram adicionados (a ordem de chegada ). Imagine voce rasgando tod as as paginas deste livre e enrao jogando-as para cima e misturando rude. Voce cneso as junta em uma pilha sem considerar qualquer ripe de ordem. Se voce fosse pr ocur ar urn uma pagina especffica dentro dessa pilha, como faria? Algumas pessoas poderiam apenas procurar aleato riament e na pilha 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

APUNDA EM 21 DUS ABAPI4

0" s,oD O ATA ICTIOHARYPARTE 3 I ,

185

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.)

examinar minuciosamente a tabela do inicio ao fim procur and o todas as linhas onde 1and1 ;: ' U . A tabela na Figura 5.1 e muito pequena, mas esse e urn S' processo que consumiria mu ito tempo em uma tab ela maior.
Figura 5 1

IndIce primoria
pe rc m Ho 1

Icbe'e mile I

Urn indice de lobe/a Ii


umo c6pio de umo au
mcis ca /unos

ormozenodos em ordem clossifj oda c com pan/eiros para as linhos originals.

I"/nr linho .1 .2 3 .3 1 7 .5 6 .6 2 .7 S

nOdo

.3
.6

2
3

.,

, .,
.2
.7
5

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 . .

MOYO

~ 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.

numero de linho infernomenle otribuido pelo bonco de dodos ; voce nunce 0 ve no ODIC. Ele e utili odo pe lo indice porc opon tor de z volta para a linno original, do qual as dodos vierom.

Quando a inStru)ao select * from ztxlfal where 1Hnr :. '0000001050'


I'

.,
"

eexecutada, 0 sistema reconhece que ha uma 1i fnr ja classificada em urn indice


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 . n dice e c1assificado por 1i fnr, nao por 1andl . A coluna i landl nao esta em qualquer ordem especffica na tabela. 0 sistema tera de

I ,

'I

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 w here 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. .

I .,
II

I L

. .,5 , ..'"
E1.gurQ 5 2
seclJnd6rio permite que voce
Indice prim6rio

.ne

(,F

"
. t"j xl

If '
l"'I,

Tobelom lfo1
n." do

Urn Indice

indice secvr.dcirio em lond l

Fig mQ 5 3

1=." W ,l i

, ay A H
S_ IWIl .,... ~

o in<!ice Z
ztxlfal e
londl .
co mpos la petos
campos

. ..... (. ' .... 1MOO

..-., "","

~ '

~':_'~'-""" " '''',~_':'!'''' ' ~ ~ ' '''' ~._ ,. ' "':'

pesquise ropidomente

nnr

n.O do

n." do
limr lond1 .3 US .6 CA
lendl linho

em outros co/uno!> o/@m dessos no chove


prim6rio.

., ,
.2
3 .3

linho

linna

secundorio no lobe/a .~ t-I '8t :".._ -,,~ ,~; :_'. ~:::.;.;.: -: . ~.,.. : <.

"1._

3.~ C.AIX : ~ H U n

.oC", :_:~-"~'~"":" :10:>-..:" _ '1.:""-.f'"7"" ~~ ' ",:.T. -, ,~.~.

.,

,
7

2
3

CA CA

.2 , .,
5 6 7 .7

US
DE DE
CA

DE DE

.5
.6

.7

2 5

.,

.5

U S

US US US

, ,
6

mandt

~~~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 .

___ "" ........_...... ... .


~

---:..;. ~

...,..

..

~ "'. -= .;;_ ~

. . _l

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

I
i
I'
" I

Para exibir os ind ices secun derios existentes em uma tabela de banco de dados, siga este pro cedimen ro:

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 .

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

Para exibir todos as indices, incluinde

primario, siga estes passes:

caminh o de menu Goro-> Indexes. ~.~..

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.

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.

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

D~

s.o DATA DlenOHAR, PARTE 3 J 189 Y

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 w here, 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.

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.

Codifique um Sel ect para utilizer urn dado indic e

H6 um maximo de 15 indices secundc rtos pe r tcbelc permltrdcs pelo

R/3.

NOVO ....
Tn.ll.O ~

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 conternm andt, 1and! e regia. 0 Indice ideal tcmbernas terio nesso mesmo ordem. Se ndc houver um Indice nessa ordem, mas hoover outro ccmecondc com m andt e 1andl, a otimizodor a utilizar6 para cc rrespcnder os primeircs doiscamposdo c16usulo where e entco execvtor umvorr eduro 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.

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:

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 comher p osto pelos campos Fl e F2e voc e codi fies w 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 .

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.

NV O O.... 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 especi ico (ou f se/etiva) e resultar em apenos a lgumas linhos correspondentes, a inclice i6 sere muifo eficcz. Adicionor F3 00 indic nesse coso pode 1"100 ser vontajoso pe r causa do overhead e 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

I AP RENO A EM 21

eus ABAP/4

D1AS, OOATA DlCTJONARY. P" IT3 I

191

8. Na coluna Fl d Name, digite os campos que 0 Indi ce deve abranger na 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 as banco de dados. Alem disso, e exib ida a mensagem Index xxxxx w 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.

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?

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.

~o

Somente uma pessoo pode execut or um rostrea mento de SQl de cede vea, lembre-se 'de deso tivor 0 rastreomento quando terminor. 0 rastreome nto de SQl 1omo lentc 0 sistemo.

Excluindo urn Ind ice secund6rio


S(mNUM~ Inide a ScreenCam "How to Delete
0

Para fazer isso, voc e pode utilizar a ferramenta de rasrreamento de SQL.


Secondory Index" ogoro .

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.

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

192

I APREHDA EM 21 DIAS AW l'

DIAs,oDATADlcnDHARY,PARTE ' I

193

2. Abra esse programa no modo de edicsc pan. que ele esreja promo e espe rando para ser execu tad o. 3. Abra uma nov a scssa o utilizando ate sessron.
0

15. D igite %s c no camp o Co mm and e pressione a tecla Ent er. A caixa de

dialcgc Find e exibida..

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

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.) , 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 exibida.
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 SQ is L 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 sw itched 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.

18. D e urn clique no primeiro nome destacado da tabela. Voce

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.
plan o de execucao. 0 Indice utilizado sera

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

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
TftO ~

N OVO'"

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 espoce e um orquivo fisico no disco que e uttlucdc para termo "'DBS spa ce"'.) Um tabJ 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.

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 .

.w ..
194

w.w.w

---~-----D1A5: 0 OATADIITIONARY,PA 3 RTE

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"~"

,. 195

\;. :,;..r_;"~:: .'-c-:. .:., ,',-.,> _ ' .

, -~. ;:' ,. ',

"" .' '''

_1 1>:1 "

No telo A.B.AP/4

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

.- ~-~.~~;~ .~.,~~.: .".<:~) ,~~~%~.~\,~,~,

*~""-'~~~::j;.~;r~~ ' "~"~~~i{~l: l~ . l


.....,. ~--"':.;.,.:..~~~
As classes de dados imporrantes sao:
APPLO au dados-mestres . Escolhendo APPLO (dados-m est res) , signifies

:I~ W-ID'; ~:;- l:, :)'~ :;" '; .:1:.-t(,9,~~ ~:;;:' f

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.

~o

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. 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.

APPLl ou dados de transaoio , Escolher APP LI (dados de traqsj.<;ao),

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

urn

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.

APPL2 OU

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 O ztxt005 e ztxt O St , sao bons exemplos de tabelas que devem ter uma
classede dados de APPL2.

smE .... lnicie NCAM


"

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 digofonte 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:DD ATADICTIONARY PAR E3 , T

197

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

batao OK.

e exibida. 0

Colocando os dados no buffer, voce aum enta maneiras significativas:

desempen ho de duas

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

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.

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

A trcnsoceo 5T02 exibe buffers e estctleflcc de usc. No tela Tune Summary, os buffers de dodos sao chcmodcs Generic K e Single ey 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. 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.

5
Progromo em

Os dodos podem ser colocodos no buHer


no

CD
sendo exeectcdc em um procl!SSO de trcbclbc

do oplicotivo.

WI. do servidor ABAf'l4

0 prccessc de trobolho verik o 0 buffer perc ver se es dodos eslo o ui. Se nco esuverem.

(2)

ele obtl!lm 05 dodos do banco


de dodos e

preenche

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.

Acesscs subseqiienles leem os dodos do buffer.

~ . Y W W W W W W W W

W . W W W . W . W

--

_:w:

__

__

-D l's,o DATADICllDN'RY PARm , I

1
199

198

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

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.
fig u r g 5 8

I
!
j

1 1

Posso A 0 usu6rio J Ie 0 registro J,

fozendo com que ele seio colocodo no buH no seNldor de er oplicolivo J"

l egendo: AS: Servidcrde oplico tivo DB5 : 5ervidorde banco.de dodos SP: Processo de sincronimco c

Posso C: 0 usucria J oluoli o 0 regislro de z J, fozendo com que ele seio otuolizodo no banco de dodos e no buffer do seNidor do oplicotivo 1.

I
. ..
SYNC lOG
Fi g u r a 5 9
-'

SYNC lOG

REC 1

Possa D:

usuorio2

Ie 0 registro I e obtem
os dodos possodos.

I I

L!o====...J I

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

Posso B: 0 usuorio 2 lombem /e 0 registro J, fozendo com que e/e seio co/acado no buH no servidorde er oplicotivo 2.

l..==LJ

SYNC lOG

REC 1


200
!

HREND" EM71 DIA ABAP/4 S

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

I f ,
! I

DIA 5: 0 DATAD10ION R , PARTE 3 AY

201

Para checar, uti lize a transaclo RZ10 como a segu ir: Inicie a transacao RZ10 (digite /nrzlO no campo Command e pressione a recla Enter). A tela Edit Profiles e exib ida. 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. D igite rdisp/buf no campo Search For e pressione a tecla Enter. as parametres de buffer sao exibidos e destacados. De urn clique na pa lavra destacada rdi sp/buf r-e f t fme .

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 ,
eles serao atualizados a partir do banco de dados . o consultor de Basis configura a medida do intervale de sincronizacao e. de buffer utilizando 0 pa rametro rdi sp/bufreft i m
Ei g ma 5 10

Passa E: 0 processo de sincronizo~do do


buHer involido 0 registro J no buHer oplicoijvo

0 tempo de atualizacao (em segundos) e exibid o no lado direito da


lista,

do servidor de 2.

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 entoo e atuolizodo do banco de dodos.

Posso A a usu6rio 2 Ie 0 regislro 1, fozend o com q ue eJe sejo colaco do no

buHer no seNidor ci a
oplicofivo 2.

buHer. 0

registro

DBS
Fl F2

[ATI]

_.
O~ 5.00ATAOlcnONARY. PAR1E '

203

202

APm" EM 21 01 AS ABAP I'

MOYO.....

a usuario 1, agora querendo atualizar 0

registro 1, bloqueia-o e 0

le (veja

UiMO"

Utilize bypassing buffer no insfru~oo se lect quando voce prectsor de

a Figura 5.13). . usudrio 1 altera Fl, escreve -o ao banco de dados (veja a Figura 5.14) e

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

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

bc nco de dados.
Figura 5

15

Posse D: a usuario 2 Ie 0 registroantigo I e o bloqueio.

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.

Usu6rio 2

AS2

Fl
A

F2
B
F1

DBS

w::u
F igura 5 16

F2

DBS

IA IB
F igu ra 5 14

Fl

F2

Posso E: a usu6rio 2 salvo 0 registro J no banco de dodos, grov ondo par cimo do o ltero~aa do us u6rio.

Posse C
otuorizo

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.
0

ler

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 ,

205

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,

Esses rres bcroes de opc;:ao ativarn e desativam a utilizacao de buffer: Buffering Not Allowed

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

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).

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. ~
." ",/

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.

Tipos de

utiliza~iio de buffer Como mostrado na tela Technical Settings na Figura 5.4. rres ripos de utilizaci o de buffer sao possiveis:

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

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

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.

uti liza~ii o

de buffer

o buffer de registrc generico echamado TABL (abrevia~ao para "tabela") . o buffer de registro enicc eTABl P ("pn significa "parcial-).

-=------206
lPHNOl EM 21 OIl S ABAPI4
DIAS, DDATA DICTIONARY, PARm

207

:1 .1 ,.

Ut il iza~ao

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
5 17

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 .

i .,:
!

" :' I

Utiliza~ao

ge nerica de buffer

TABL TBI REel


R C2 E R C3 E REC4

T P ABL

Todescs linhes de
ume lobelo com

ulilizor;60 comp le/o de buffer s60 corregod as


em

TABl

I~
Select ' from I'D1 where...

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.

T ABl
C I 1 C 2 C 3

TABlP

TB I
Technical Settin g5:
.-

/'

-,
TB I

"
RECl
REC2 REC3 REOI

./

rec4 ..05 re , 6

Full Buffering

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 TA select BL, 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

/
F2 1 2

TB 1 T echnica l SeMing5:

~i

A B C C C D D

I
1 2 3
1

reel ree2 re,3 ree4 fecS rece ree7 recS

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.

---

__ ...

' W ' ~ _ ~

__

208

"RENDA 1M 21 DIAS ABAp/'


FI g u r a 5 19

ous.o DATA maiDNAR!, PAm 3


T ABL T ABLP

209

Se voce especthccr vtilizOliOO complete perc ume fobelo dependente do cbente {tendo rna ndt no primeiro coluna}, 0 sistem a autome ticcrnente a utili e gen ericomente com n igua l 0 1. Isto e, quando um z 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 utiliz aliQO complete. lsse simplesmenle ocontece "nos bosndcres" .

Com c ulilizo o de buffer de regislro

unicooti'lodo,
selec.ione regish'os de corregomenlounico de ume vez porc 0 bufferTABLP.

I I1I
~

",3

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.

Select single < from tb1 where rJ = 'B'e f2.., '1'

r-;
TBl F1

~
F2
1

A A
C

2
1

reel ree2

,3 reca

./

TS1 Technicol Settings:

Single record Buffering

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.

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

. '

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.

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 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.

de dados.

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 TA e a ins tru~ao select BL single carrega TA8LP

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

DIAl, DlllTADlmDNARY,PARlIJ

211

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

I' ,
I

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

Como 05 instroC;6es seledonodos interogem com as

Bufferde reg istro:


generico

Buffer de registro unico

buHers.

Select Single

SOMENTE

lE

CARREGA E LE NAO lENEM CARREGA

Select

CARREGA E lE

de buffer e indices

Perc limper 0 conteudc de TA l e TABlP, digite I Sta b no ca mpo B 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 A os registros antigos nao sao desc art adcs qu ando os nffV sao Bl, os 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

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.

o obje tivo da utiliza~ao d o bu ffer ere duzir 0

e ne cessa rio utilizo r 0

buffer

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 l buffer, sel ect * from ztxlfal onde lifnr = ' V ' 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-

...

~~

-~

~-

--

212

AP REN DA EM 21 DIAS ABA PI4

O lAs,oOIT ADlcrJOHAR, P 3 Y ARTE

213

I'
i

tamente colocada no buffer. A primeira sel ect foi resolvida n o banco de dados utilizando urn indice secundario no campo pgmnaj a segu nda executou uma
varredura complera de tabela no buffer.

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.

~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 utiliz6lo 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 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.

Resu mo do utili za ~fio de buffe r

seguinte pontos devem ser lembrados em relacao buffer e indic es:

a tabelas colocadas no

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.

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.

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.

K_I ... I'" .. I .....


214
APR!"A EM21 DIA, 'ABAP/.

...-...:-.I_.._...... .
DIH DD ATArncrIDl<ARY, P RTE 3 A

~ -y

~ IFa~a
no fndice.

Coloque as compos no c16us ula where no mesmo ord em em que eles aporecem

----J_
Nao codifiqce umo 5e' ect que nao sejc
suportada per um fndice.

215

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 ?

Seja generoso quando escolher umo categoric de tomonho.


Utili ze bypcss de buff er quando ler um

Nao escolho umc categ o rio de tomonho que focc umo tabe la exigir umo extenseo secund6rio.

3. Posse diz er que meu programa e executado mais rapido com tabelas
colocadas no buffer do que fora dele?

registro para ctucluc r de ume tabe lo cclocodc no buffer.

Exe rd cio 1
Q ual e a classe de dados para as tabelas MARA, LFAI e KNA I? Qual categoria de tamanho para MARA , LFA I e KNA1?

ea

P&R

o o 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?
Peca aurorizacao a seu administrador de segurania. 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".

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 J og, marq ue a ccixe de seleo 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

-114.............- .- .. I

...... I

...... ..

]I

_~

218

AP R ENDA E 21 DIAS ABAP I' M

D~""DATlDlrnoNARY, PAR1H

219

Docu mentos olterados


MY til... OO

T llO'" U

reg istro e chomodo documenfo a /terado. Codo documento oltercdc ccnte m a da ta e a a he re do a lterCl; o, a userid do usucrio que fez a clterccco, 0 c6digo do transac;oo e 0 nome do progroma utilizodo poro fazer a olteroo, 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

hist6rico outom 6tico de tobelc, um registro e criodo no tobe la dbt abprt.

Pore coda jnse~o o, otua l izo~o o ou exd usOo de umo tcbelc ctivcdc pora

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). 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) . 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.

Coda

D se a registro foi exclufdo . EL

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.
F igu ra 6 1
.!!ix! ..........,..

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. 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).
;.
Fi g u r a 6

A tronSCI~60 Tehle History eJCibe

I:

, "

!,

documentos eltercdos de Iobelas


com hist6rico
elJ1omatico

de tohelo

otivo do.

A partir da tela Ta ble H istory as seguin tes funljoes:

C hoose Function, voc e p e de execurar

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 I

Ii
I

P ara exibir os documentos altera dos de dia atual , escolha 0 bo n o de op~ao Change Docs: Daily Analysis e press icne 0 batao List. Uma Iista e exibida contendo todas as alteracoes do dia atu al. Para pesquisar docum entc s alterados po r intervale de dat a eu no me de tabela, escolha C han ge D ocs: ba tao de apljao Selective e pr ession e o borao List . A tela An alysis of Table Log Database e exibida. Digire seu criterio de pes quisa e pressione 0 batao Execute. Uma lisea de docum ent os alrerados para 0 criteric especificado e exibida. Na parte sup erio r da lista esta urn resume das informacoes sabre a list a, depois

ww.ww.w .
220 , AP REM DAEM21
F igura 63

~~

_
DU DDATADICTlOIWY. PArTH

D AUPI4 'AS

221

Os documenfos ollerodes do 1o~lo HPR100loporecem depors do listo de compos. A chcve prim6rio de coda registro oporece
pri me;ro

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 -

(em hJrqueso) seguido pe/osdodos (em bronco),

m' c;6es sobre Change Document Objects, veja a R/3 Library (caminho de
men u Help->Rl3 Library, Basis Components, ABAP/4 D evelopment Workbench, Extended Applicatipns Function Library, Change D ocum en ts.}

~o
F igura 6 4

Se c chave prim6ria de sua ta bela for maior que 86 bytes

au se

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 .

)qui. cs dodos em dbt abpr t sOo comporodos cos conteudos otuois de

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.

coda reg isll'o.

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
EM 21 DIAS ABAP/4

ww w w w

W W T'Ir T T

W'

W'

"1J

01' 6, 0D'T DICTI~ARY, PAR1H I '

223

mente, menos acessosde banco de dados sao exigidos,porque as dados


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
Figurg 6

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.
5

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. .

Qu end o Limo tooele eve /em Lime versec

revisodo e exibido.
voc~ ~ 0

versec

revisodo por podr6o .

Yers6es ativas e revjsadas


NOVO...

YERMO"

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.

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:

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 Temporar verst on of act ; ve object y 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

1. De tela Dictionary: Table/Structure: Display Fields, escolha

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:

~I
224
' PREND' EM21 01" ,", PI'

WWWWWW_

-- O 6:0DATA D1mOMARY,PAiTE" IA

225

1. Da te", Dictionary: Table/Structure: Change Fields, escolha 0 caminho de menu Tebl e- c-Generaee Version. Uma caixa de dia.logo aparece
contendo a men sagem Version of act ive object stored.

Usond o
lERMO ,. dodos.

utjlitCirio de banco de d o d os
Dentro do ODIC extst umo ferromento de utilit6rio de bc ncc de dodos . e Utilizondo-o, voce ped e exa minor e modifieor tobelas no nivel de ba nco de

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
Database: line beside the highest version number.

IOU .

S(mNW ~ lnlcle a

ScreenCom "How to Access the Dctcbcse Utility- agora.


0

Para acessar

utilitaric de banco de dados:

1. Comece na D ictionary: Initial Screen.


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

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 (nonactive) version . Proceed?
7. Pressione a ba tao Yes. Voce ~ levadc de volta a tela Version s O f Object e a mensagem R estored 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.
8. Para verificar se a versao revisada coincide com a versac ariva, coloque

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 G enera1 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 A e a mensagemxxxxx wa s acti vat ed aparece ct. na parte inferior da janela.
Todos'os objetosDD 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.

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 .

I
I
i
I

.. -226
I

'PREHD' EM 21 DIAS "'Pi<

DIA6:0DATADICTlONARY,PARTE 4 I

227

Excluir urna tabela excIuindo-a temporariamente no banco de dados, ou esvazia-la excluindo-a e recriando-a no banco de dados.

iEUlO"

NOYO....

Umo tabela

de R/3 e, sob certcs aspectos, como

um progra mo trodidonol. Elo

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) .
Figura 6 7

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.

exlste em dois fcrrnulerics : na "fonfe" que vocA pode exibir e mcdificcr e no

Umo veriDcoode
coer!ncio com 0

banco de dodos
confirmo que 0 dennio DOIC R/ 3 do tobelo ztxl f al e 0 definit;60 do

bancode dodos s60 identicos.

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:cecuo pora umo

lobe/a. E/e cantem todasos


caroderisticos hkn icos do tobelo

comonamesde
compo. H de pos

dodose

As incoerencias podem surgir se: 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 .

compri~ntos.

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.

-~
228
I

w._--- D IHOIlAU DIGIOORY,PARTH


!

APIENDA EM 21 DIU ABAPI4

229

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.

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

tipo de dado de

echar

10 no nametab e i nt 4 no domfuio.

Para localizar todos a s progr arnas que utiliz arn uma da da ta bela:

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 .
Fig u r a 6 9

1. Comece na Dictionary : Initial Screen.


2. Di gite a no me da tabel a no camp o Object Name. 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
Nestatela, umo
lIerifiCIJlj6 0
coe~ncio

de indica umomensogem de

~rro ~m que 0 compritrn!!nto d~

r~gjstro,

comprim~nto

do

<hove. 0
olinhomenlo do tobelo s6 0 inroerentes.

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

230

APR EN DA EM 21 DIAS ABAPI'


Figura 6 1 0

"""1"0-

DIU DD ATAD1cnDlIA PAJ<l" RY,


FiGura 6 12

231

Rolor porabaixo no llsto mostraos campos do nomelob eo raz60 do


ineoerendo .

Este li 0 restonte do
log de affva~60

mostrodo na
Figufa 6.1J.

I I
I
!
Exibindo
0

log de otiva!foo

Para exibir asinformacoes em detalhe que descrevem qualquer mensagem no log, posicione 0 cursor na mensagem e pre ssione a reels F I.

A partir do utilieario de banco de dados, voce pode exibir 0 log de ativa/iao pressionando 0 boeio Object Log na barrade ferramentas Application. Esse 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

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 N E, M ext axE, Pf e Pu e os aplique imediatamente pr essionando a bono Apply Parameters N E, MaxE, Pf e Pu Inmedt atel y. Na maioria das vezes, as linhas ext 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.

o Jog de oHvoo
exibe
0 seq ~n cio

de possos reolizodos .
durante 0 otivo ~ao e

o e6digo SQL que foj gerado. E log sse mostro que durante o olivoo, 0 tohe/o fai exc:lufdo temporariomente no bonco de dodos e

reer/odo .

TII
232 ,p",o, EM21
F jgura 6
Pcrdm~tros

......-.-~

.............. -w w'W

...........

~ ---.-..

OI'S Ai'P /4

OlA 6; 0 DATA D lcnotWY,PAm"

233

'3

caixa de di:ilogo sen exibida para confi rmar sua solieita~o. A nbela e seu

coneeodo serac excluidos do banco de dadcs. Paracrid-lo novamente, pressione


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.

espedhco s de banco de dodos sOO mostrodos no tela DB Utility: Transparent Tobles

- Dat base a P orameters. Essa h!1c mostrc que cs


poro metros de
orm ozenomenlo

pore

tobe/o
{oram

. ztx lfal

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.

oherodos depois do
OMo, porq ue as

/inhos OBS e eM?


nee coincid 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.

As colunas InitExt e N extExt 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

Resum o
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. 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. 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

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
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 N extExt, 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 AppliBS cation. A linha que t~m D na coJuna Sr c conted. as valores atu aliu dos.

dados. 0 u tili tario de banco de clados tambem permire que voce visualize

log de ativa~ao para uma rabela, os pardmetros de armazenamento e drope e recrie uma tabela no banco de dados.

P&R

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

o o

Onde urn DBA in a alterar 0 pacam etro de armazen am en to de u ma tabela ativada de den tro do sistema de SAP R/3? V a para 0 utilitirio de banco de dados e p ressione Storage Pa rameters.
0

bo tao

234

APRENDA EM21 DIAl ABAP/'

Workshop
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.
0

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.

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 APR ENO" . 21 OIAS ABAPI4

I III

I .- I ........ ..-

w w w

~I

D~]'oEFIHIHDOOAOOSHOABAP I4,PAR1I1
ro lagem

237

o buffer de programa e a area de

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 D efeit a na mem6ria pa ra cada usua rio aO 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.

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, el, 5 ztx lfal-nam 6 ztxlfal -1andl. endsel ect.

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

Elementos de sintaxe do ABAP/4


Coda programa do AB AP/4 e compa sta de uma ou mois instrut;oes. Coda YERMO" instruo 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.

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"-

Os

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

de dodos IS ccess'vel.

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.

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

238

AP R ENOA EM21 OIAS A PI4 BA

O~ HEIlNINOO OAOOSNO A BAP/l.PA I RTE

239

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

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 JA I e urn literal de string de carac tere que contem som ente caracteres CK 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 H l o SAP worl d I el 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 C aesar 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

globais no progruna 2.
f lou r a 7 1
Ar eo de mem6ria extem o

A visibi/idodede um ob;eto de dodos


indi ca
SIlO

~: Dodos extemas ~",,:"i@ . Obietos

ocessibilidode. ~ lor loco/mente vislv ele e e!,


ocessivel openos de

Progroma 1
~J::i!i'.ts.1-"f:i!. Dedos globois

Progromo 2

dentroumo
svb-retina. Se
globalmen~

ele e oceu fvel de


quo/quer fugor dentro de um progromo. Se for

for wsNd.

r~ ; Dodos global

~~ Obiete!

~:M' .
Sub-retina 2A

O bjelos

Sub-retina lA

emmomltnte vislve/,

e ocesslvel de foto
do progrcmo par" .
DUtro

m~

Dodos laea is

~. Dodos locois

~iMl'~_, Ob jetos

!#ci#~

Ob ietos

progromo.

Sub-reline 1B

~. Dodos lcccrs

$~~

O bjetos

~o

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.

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 lif ral de string de ccredere serOo e 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

APUlDA EM21 DlAS AlAP/.

D1AloDEllNINDOlWlOSNOABAl'/VAlTE 1

241

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
99-

Explica sa o

-99
, ~ 12 ' ' 12. 3'

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 _ '].

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).

lZ.3
HP 'C t an'

Numericos con tendo um ponto decimal devem se r

lncluldcs entre os pos simples.


Aspos du pla s na o sdc perm itidos.
l

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.

'H I i ' C It' an' 'H i'


17E1 '

Para representor umo as pa simples, utiliz duos e ospo s simples consecctbcs.

'Hi
71

A ospo

a d ireito est6 fcltcndo.

'] e1'

Valores de ponto flutuonte devem ser ind uid os entre a spas . letras mlncsculcs se c perrnitidos para lltercis de ponto flutuonte. Le tros minusculos e m litera is hexcdeclmcls doo resultodos tnccrretcs. Um numere lmpor de drgitos hexadecimois d6 resulta dos lncorretcs . . Um ccroctere, sejo coloca do antes ou depois, ndo

Literais hexadecimais
Urn literalhexadecimal e especificado dentro de aspas simples como se fossem -F. um a string de caractere. Os valores permitidos sio 0-9 e A Dev e haver urn mesmo mimero de caracteres na String e todos as caracreres decem estar em

'O O A O' ' OAOO' 'O O A O'

' O O' aO 'AO O' X'OAOO'

letras maiNsculas.

e perm itido porn lite rois hexodecimcis.

~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.

Definindo yoricyeis
Duas instrucoes sao comumente utilizadas pa ra definir variiveis em urn pro. grama do ABAP/4 :
data parameters

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).

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,,].

vc lc res hexcde cimc ts soo roromente utiliz odos 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.

til
A Tab ela 7.1 desc reve maneiras erradas e cert as de codificar de literais hexadecimais e numericos.

Z
m

...

au

242

Hmo . EM 21 O ABA P/! I.S


data vl like tl2 [val ue 'xxx ' ] .

D 7,D FININDO D OOS NO ABAP/t PARTE 1 I IA E A

243

0 val or inicial padrjo


branco.

e 0. excero pa ra tipo

de dado c. que esu em

onde :
If 1

e0 nome da verievel. v2 e0 nome de uma variavel previamente definida no programa ou e0


(l )

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 .

nome de urn campo que perte'oce a uma tabela ou estrurura no Da ta Diction ary. .

ea especificacso int erna do com primento.


numerc de espacos de decimals (utilizado apenas com
0

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 . 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 ).

It! 0 tipo de d~do.

de 0
I

ripe p).

xxx I

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

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.

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' .

ENTRADA'" Listagem 7.4 Exe mplo de umo vori6vel que e inco rretomente acessoda

a ntes de ser definido

1 report zt I0704.
2 data fl(2) vej ce ' H ' . i 3 write: fl, f l . 4 data f2(5 ) val ue ' t here' .

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

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.

sublinhado

U.
Noo utilize U SING nem CHANGING como nomes de vori6veis. Emboro eles sejcmsintcticcm ente corretos, podem ccuscr prob lemos se voce tenter posse -los pore sub-refines.

~ 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.

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.

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).

244 I APRENDA EN 21

DIAl IBAP/'

DIA 7:DEANIHOO D OS N An OABAPl4, PARTE 1

245

Tipos de dodos de coroctere


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.

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
voce precisaracessora data e a he re mais cruel durante a iniciolizoc;:Cio de um progromo em execuo longo, utili e a instruc;:oo para obter a z . 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
c n
d

Descrifjoo

Interne
corocte re

Comprlmento inte rno padrao

Comprimento
int erno mclximo
65535 65535

Valores
validos
Q uo lquer

Valo r inicial padrao


Em bronco

coree .

texto
rwmerlcc

0-9 0-9 0-9

0 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.

dote horo
hexodecimal

8 (I;xo) 6 (I;xo )
]

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.

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.

Tabela 7.3 Tlpos de dodos


rlpo de dodo Descrh;:&o

numericos
Comprimenlo Comprimenlo Decimals Intemo miudmo miodmos padrao
4 (fixo)

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 .

Va loNs 'Icliidos
_231 a +2 31

Yalor Inldal padrao

i P
f

inteiro
decimal
empccctedc

0
16

0 0 0.0

8 8

"
15

09.
. 1E"'307 a lE308

ponte f1 ul1Jonle

. 8

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.

~I

II I_I I I"

w w ..

'W . . . . . w w

w _

_ .'W'

- -247

V d
II ,.
I

246

CIA 7:DEAHIHOO DADOS N OABAP/4, PARTE 1 "RENDA EM 2\ DIAS ABAP/'

Figurg 7 2 Va/ores decimais


empocotodos s60 armazenodos em dais drgilos par byte. 0

Elm"'tRl ~"'I
6~ ~~m

data fl(4) type p.

Ta b e la 7 .4 Ccntlnuccdo
Tipo de dodos
de DDIC
cuky curr Tecla de monetcnc Monet6r io Decimal Ponto flutuante Inteiro de 1 byte
lntelrc de 2 bytes
Descri~ao

Definiljao de dados do ABAP/ 4


c(s) p L+2) /2 ) p L +2)/2) f
(nenhum) (nenhum)

byte finol

e vmo

p decima ls 2.

un;CO d;gito eo sinal. a ponto decimal naa e


ormozenodo e
portonto n60 ocvoc

elrCeC;aOi ele ormozena urn

dec

flt p
i nU i nt 2 i nt4 lang num c prec quan uni t

espotjo no compo; ele e parle do definic;60.

Inteiro de 4 bytes Unguogem

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.

Texto nurnericc
Prectsec
Quontidode Unidodes

c(l ) n(L) x(2) pL+2) / 2) c (L)

~o

Tenha cuidodo quando voce especlflccvclcres iniciois no instruc;oo de dodos utilizondo a cdlcec de volar. Esses vclores nee soo volidodos
para vlsvcluc r se eles seo au nc o ccmpctlve ls com a tipo de dodo.

Utilizando a instru~aa parameters para definir vari6veis


Tn.110
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'instruo 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 param eters 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.

Mapeando lipos de dodos de ODIC para lipos de dodos do


ABAP/4
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. Tabela 7.4 Tipos de dados no Data Didionary e sews correspandentes no ABAP/4
Tipo de dodos
de DDIC
char clnt dats tims
Ccroctere

0 comprimento maximo e de 8 caracteres, em vez de 30.

Alem de litera is e constantes, voce tambem pode utilizar uma varavel


para definir urn valor padrao.

Descriljco

Definiljco de
dados do ABAP/4
c(L) c(3)

CII

Sintaxe para a instru<;ao parameters

o seguinte c6digo ea sintaxe para definir uma variavel que utiliza a instruc;ao
parameters.
parameters pl( (l)] [type t] [deci mals d] ...

Cliente Data

d
t

S '"

ou
parameters pl 1i ke vl ... [default 'xxx'] [obliga tory] [lower case] [as checkbox] [radiobutton group g].

Tempo

onde:

.. . . . .. . . ....
248
APRENDA EM 21 DlAS AUPI4
DIA 7:DEFlNINDO DAOOS HO ABAP/4 P 1 , ARTE 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 /

249

pl

e0 nome.de paramerro. 1'1 e 0 nome de uma variave l ou pardm etro previamente definidos au
(l)

eo nome de urn campo que per tence a uma tabe la a u estrutura no D ata Dictionary.

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.

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


parameters.

Tabela 7.5 Adir;6e s pa ra a instrur;o o para meters e suos utilizoc;6es


Utilizasao

ENTRADlllr. Listagem 7.5


,. parameters
1 2 3 4 5 par am e rs et parameters parameters parameters parameters

Exemp los de pordmetros definidos utilizo nd o a instrucd o

type decima ls

Mesmo que a instrut;50 data. Mesma que a instrvt;oo data . Mesma que a instru ~e o data . Mesma que a odic;.oo valu e no instruo data.

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.

11 ke
default obligatory lower case as chec kbox radiobu t ton group

o usucric deve inserir um volar no compo a ntes de 0


progroma se r executado. Impede que vclcres seja m troduzidos em tetras ma juscules.
Exibe
0

compo de entra da como umo coixo de selecec.

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 .

2.

Exibe a campo de entrad a como um bofec de opc;.60 pertencend o 00 grupo g.

Figura

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. Pa ro come'iOr 0 processamento, a usu6rio deve pressianor 0 batao Execute no borro de ferrom enfos Application.

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 am ers et
1 report zt x0706. 2 parameters: pl(lS) type c, 3 p2 l i ke pI obligatory l ow case, er 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',

250 [ APRENDA EM 21

DIAS AIAP/4

Da7,D EIlNIND 'OOS HO ABAP/I. PAml I DD

251

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.

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 .

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.

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.

Ulilizando a

ad i~ao:

radi obut ton group g

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.

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.

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.

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

Allerando rclulos de pa rametro


sctEEN CAM ~ Inide a ScreenCom"How to Change Input Field labels" agora.

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

T I . . . ... W _JI"I
252
APRENOA EM 21 OIAS ABAP!4
Par~.alterar urn r6rolo de campo de entrada do para-metr o:

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

253

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
inserir ma nualmente rotulos na coluna Text. 5 . Digite rotulos de campo na coluna Text.

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.

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 D OIe. Na parte inferior da janela, a mensa gem Oiction ary texts transferred f or select io n xxx aparece.

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

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 D ctionary .. i 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.

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 C aInPO

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.

10. P ressione

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.

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

';""'f-

tt:~~,-

a W. -" . aW
254 I

.. WI

_ _.

.WW

_
, 255

APRE ND A EM 21 DJAS ABAP/4

OIA7: DEANINDODAOOSMOAWH,PARTE l

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.

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. Voce pede alterar as r6tulos de campo de entrada de pardmerro por meio do caminho de menu Goto- >Text Elements.

Voc pede executor sumi pr6prios volidoC;6es de tela de setecec. Elos e deta lhados no Die 2 1, 'Telos de se l~co .

sOo

IFa~a L....:.-

- - " _

Resumo
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.

Utilize urn sublinhado pore to ma r seus nomes de vcrlevel mais mceis de ler.

Nco utilize hlfen em um nome de vari6vel; um hifen de limito os componentes de umo string de compo.

P&R

U rn programa do ABAP/ 4- e compasto de insrrucoes, cada uma das quais comeca com u ma palavra-chave e termina com urn pon to. As insrrucoes podem comegar em qualquer coluna e podem ocupar varias

o
o

Par que pre ciso codifi car em letras maiusculas entre aspas? Como saberei se precise codificar em letras minuscules? 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.
Posso defmir urn par.imetro que aceita mdltipios valores do usuano ? Sim , a in st ru ljaO de opcee s selecionada permite que a usuario digice multipl e s valores e criterio s complexos.

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.

exrema. A visibilidade d. urn objeto d. dados indica de onde 0 o bjeto de dados e acessfvel. .

as objeros de dad os tern tres nfveis de visibilidade: local , global e lugar a partir

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. 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.

o
W o rksh o p

o Works hop oferece duas man eiras de voce verificar 0

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-

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 Re exerdcios DO Apen dice B, G spostas as perguntas e aos exercIcios".

dr.i:o.

256
APREH OA EM21 D ABA PH IAl

Teste

o que hi de em-do com estes Iiterais, se eque algaesci errado? (Pede havermais
de urn erro em cadaurn e algunsnao tern erros.] Escreva as defini~6es corretas.
1. Literal de strin g de caractere: Don I t bi te , II

SEMANA

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
Literal numerico: 9.9-

ooaOf'
I

Literal de ponto [lutuante: ' 1. 1308 Literal hexadecimal: H A Literal de String de caractere: Literal de String de caractere: r
I I I I I I

Reviscio
N a semana passada, voce completou as seguintes tarefas: aprendeu sabre 0 ambience R/3, incluindo Basis, clientes de logon, o ABAP/4 D evelopm ent Wo rkbench e a Data Dictionary escreveu programas simples de ABAP/4 e fam iliarizou-se com
0

I I . I I I

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.

1. data firstname(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' .

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 criou indices secun darios e bu ffers para acelerar a acesso de dados

Exerdcio 1
Escr eva urn programa utilizan do parame tr e s par a a Figura 7.4.

.'

--- w

'W'

w:

SEMANA

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 E 21 DIASABA P M 14

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
APlENDA E' 21 DIAS ABAP"

'If

w . - -

.....--.-

- -

- ~ - -- ----- -- D~UEA"N DODADOS ND I.BAI'/4. PARTE I I

263

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 .

Definindo strings d e com po


mMO "
IlOYO ...
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 .

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.

! j

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
I
1

D uas icsrrucces sao geralmente utilizadas para definir Strings de cam po .

em um programa ABAP/4:
data t abl es

code:

cl
cv

e0 nome da con sta nte.


e a nom e de uma constante ou varisvel previament e definida ou e

Utilizc ndo a instrucdo DATA para defin ir urno string d e campo

o nome d e urn cam poque pertence a uma tab ela ou estrurura rio D ata Di ctionary.
{l}

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.


numero de casas decimais (utilizadas apenas com a tip o p).

teo ripe de dado .

de0
'xxx I

eum literal qu e fomeee 0 valor cia const ant s.

ENIRADA ~ Lislagem 8.1 Defini,6e s de consta nts


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 ' .

...

S
1 ft .

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.
data: begi n of /sl. jl [(l )] [t ype / 2[(1) ] [ty pe end of /sl .

el tJ

[decimals d] [value ' xxx '] . [deci mals d) [val ue ' xxx ' ] ,

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:
j51

e 0 nome da s~ring de campo.

f1 e j2 sao os camp os [tambem denominados componenres) da string

de campo.

264

.PREHO. EM 21 DI.S .BAP/4


! 52

D l : DEfININDO DAOOS NO ABJ.1/4, PA 2 IA m

265

nom e de uma string de 'campo previamente definida au nome de uma tabela ou estrutura no Data Dic tionary.
( I)

e0

ea

EmAOA"
"

Listagem 8.3 Umo string de campo pede conter umo o utro string de
compo

ea especificacac int erna de comprimento.


ndmero de casu decimais (utilizadas apenas com a tipo p).

t eo tipo de dado.
de 0

' xxx I

eurn literal que fornece urn valor padrio',

stl e 0 no me de urna estrutura au tabela no Data Dictionary.

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.
10

at xknat - neeet , ltxknal -nameZ,

n, names,

ccmc uma string de campo

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.

11 cU5t in fo- nlUllber .. 15. _ 12 cust _1nfo- nm- name l . '" 'Ja ck'. 13 cust_1nfo- nm- name2 '" ' Gordon'.
14

15 ....tte: 16
17

cust_in fo-number, cust_in fo -nm-namel. cust _1nfo-nm-nameZ .

lK.lJJSE ,.

ENTRADA'" Listagem 8.2 Um exernplo simples de umo string de compo definido ,. com a use do instruc;oe data
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.
B

.... A linho 2 inicio a definio 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. .

EIflRADA "

Listagem 8.4 Uma string de compo pode ser ,. um o tobela ou estruturo do DDIC
1 2 3 4 5 6 7
B

deftntdc exotamente como

r eport ztx0804. data: my_l fal l 1ke % l f al, tx my_addr like ztxa ddr . ll\Y_l fal-n amel'" ' Andrea Mille r'. my_lfal - t elf l .. ' 1-243- 2746'. my_addr -landl '" 'CA' .

como uma tabela no ODIC como uma estrutura no DOIC

9 totals_I -debits = 100. 10 totals_I -count .. 10. 11 t ota ls _2-debHs .. 200.


12

13 write : 14

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 .

9 write : I lly_ltal - namel , 10 l'Iy_lfa l - name2. 11 m y_addr-landl.

,lj1.lJ.IS~ ,.

.... A linho 2 inicio a definio 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 H ohc 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.

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 .

.... -_ ..... _--266


APRENOA E 21 0lA5 ASAP" M

------

- - - -

--

,01A I: DEFlNIND ODADOS N ABAP/~. PARTE 2 O

267

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


no nome dele no seu c6digo-fonte.

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 variav do tipo char. A Listagem 8.7 ilustra esse el conceito.
.... List ag em 8. 7 Urn exemp lo do ut ilizo~ao de umo string de compo como

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

EHTUOA,.

diversas vori6veis e como umo (mica vo ri6vel do tipo char

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; o termino com O ,. urn ponto, porque inc lude structure noo e porte do instrut;60 data; e umo instruo 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.

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.

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 .

o c6digo na Listagem 8.7 deve produzir esta saida:


SAlOl ~
ABC ABC XYZ XYZ
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 Oen temente, 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 .

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

AKA

.. As linhos de 2

USE ,.

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 .

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.

ANAS " UE

Alinho 2 inicic o defink cc dc stringdecompo 1fa1_with_extra_fi e1d.Ainstrut;60 ,. terrnlro com um ponte, porque i ncl ude structure nCoe porte do instrur;oo data; e urnc inst~60 independente. No llnhc 3, a estrvhJro do fcbelc ztxlfa1 e inclufdo no string de campo. No linho 4, um outro campo e induldo no string de compo depois dos campos do tobelo ztxl f al. Occlsqcer numeros de campos podem serind cldos, como tombem rncis estruturaspodem ser incluidas oqui au quolquer ccmbtnccoc dos dois.

268

.APREND A EK ! 1 DIASABAP/'

. DIAl DEANINDOD DDS ND ABA 4, PAm! , A P/

269

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 .

151

e 0 nome cia string de campo. Urna tabela ou estrutura com a mesmc nome deve existir no Data Dictiona ry.

ENTiADA'" Listagem 8 -, Exemplo simples de uma string 9 ,. usa do instru~co tables


1 report ztx0809.

de compo definida co m

a
9 152 z 151. 10 write: I tsz -cf, rsz-ea, 152-c3 .

o c6digo na Listagem 8.8 deve produzir esta saida:

2 3 4 5 6 7

tables ztxlfal. zt xlfal-namel 'Bugsy ' . zt xlfallandl ~ 'US '. write :

ztxlfal.namel , ztxlfal-landl.

sliol ~
I

ABC

ANWSf 1IIrrr... " A linho 2 define a string de compo ztxl f al. Suo definkc c e exotomente iguol
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.

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
SI!

fosse umo unicc vcrtcvel do tipo char. No linho 10, as componentes de f52 sao totclmente escritos.

String de compo definido utilizando TABLES inte rog indo com SELECT
A instrucao tables faz mais do que apenas definir uma string de campo. Ela realiza duas a~6es:
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

~ ..

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

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.

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

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 ,

endsel ect ,

ANALISE .....

onde:

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

~f -"' '' '' '' '''


'" 270
'IiEND' " M21 DIAS ABAPH E

....... w w

WW

-- CIA I, DfIN1NDO DADOS N w.Pf4, PARTE 2 O

271

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


TABLES
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" afaltera~6es quando recupe rar 0 controle.
F lgur n 8 1

nome de ~m camp o que pertence a uma tab ela ou estrutu ra no Data

Dictionary,
.

(l)

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 .

E NTRADA'" Listagem 8.11 Simples exemplo de um tipo de dodo definido pelo

~ usu6rio char2

/ve o de mem6rio

As cl fini jOes de e f tobe las id'nticos em

Progl'Clmo de chcmcdc T obelas m.lfo1.

c:omportilhodo

Progrcmo c:homodo T abelas ztxlfo 1.'

1 report ztx0811. 2 typ es char2 (2) t ype c . S' 3 dat a: 1,'1 t ype char2 val ue ' A . 4 v2 t ype char2 value 'CD '.

s
6 write: 'Ill. 1,'2. :' .

um programa de chomado e em um

programo chomado fat com qce 0


mem6rio sejo

o c6digo no Listagem 8.11 produz esta saida:


(choma outro progl'Cl mo)

compornlhodo por essos strings de


compo.

SiD! ~ A
,

AS CD

..... 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.

EIfTUDA ~ Listagem 8.12 A utilizac; o de tipos poder6 tomor seu c6digo mois a
clc ro e mcis f6cil de ler
1 re port ztx0812. Z t ypes : doll ar s( 16) t ype p deci m als 2. 3 lira(l6} t ype p decimals O.
4

Sintoxe para ci instr!J~ 60 TYPES

"e li r a 1ta 11ana nilo tern dectna t s

!!!
~

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 .

"'

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

end of ll'ller1can_sums.
begi n of i t ali an_sums,

10

272

mENO' EM 21 DIAS ,mH

OIA 8, O EANINOD O'OOS NO ' 8'P14. P'RTE2


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

273

11 12

petty_cash type li ra, pay_outs t ype l 1ra,


lump_sums type lira . end of 'ital ian_sums.

13

"5 1
_ con t~m

16 american_sums- pay_outs .. ' 9500. 03 I urn decimal 17 italf an_ sum -l ump_sums .. 514l. s 18 19 write : / amer1can_sums -pay_outs . 20 / i t ali an sums - l ump sums .

"espes necess ar-ies quando l iteral

o c6digo na Listagem 'S.12 produz esta saida:


siiD~ I
~NAlIS~""
9,500 .00 5,141

ANALISE,.

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

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 docl . Nos llnhcs o 16 e 17, urn volo r e otribuldo 0 urn compo nente de coda e, nos linhos 19 e 20, ell'S soc

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"

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
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 - < >.

as

as

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.

Tipos estruturodos
H " ilIO
NOVO ...

Fig ura 8 2

Urn gropo de tipo


;n$~6 es

e"

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 z como vo ce pede reduzir 0 tc mcn hc de um prog romo vtili onde um tipo estruturodo.

um cont~inar pore as

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 .

Progromo 1
type-peols ztxt . data fl t ype _ ztxLdoll ar-s .

Progromo 2
typ e-pools zt xt . . dat a fl type.z.txt:...dol1ar s .

,
3

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 .

274

. PRE '" EM71 D . U P/< IAS

D~ UEfiNINDO DADOS ND .wP/'. PARTE 2


m.HNCAM~

275

EMT ArrItr.. Listoge m 8.14 Urn exemplo do lnstrvcdc type -pool contendo tipos e RAD l ,. 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

lnicie a ScreenCom "'Howto Crea te 0

Type Group'" ogara .

Para criar urn gropo de tipo;


type p decimals

t ype p decimal s O. t ype 1 valu e 5000.


l1k e sy -d etue value ' 19970305' .

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).

2. Digi te a nome de seu grupo de ripe no campo Object N ame. 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

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

exibida.
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. 10. Pressione 0 botao Back na barn de ferrsmentas do aplicativo para retorn ar a D ictionary: Initial Screen. 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.

progromo .

ENTiADllio.. J.Istagem 8.15 A utiliza~lio do grupo de tipo reduz 0 dcpltcccec de ,. c6digo para tomc r mois f6cil a mcnutencco
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"_sum s-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 ' W i ng' . amer1can_slIIlIS -pay_out s . arn 13 ' exceeds th res hol d' . ztxl_warning_threshold . 14 end1f.

iHAUSf '"

de tipo .

linho 2 ,ind a s do o zt no prog roma .. As ltnhos r AAlinhodefinemuiumo string depara grup_outstipoessexlvalorxl _dol l ars do comde 3a 7 utllhcndc a zt grupo 9 ctribul um valor pay e e compcrndo
co mpo
tipo
0

defi~i~6es

~~

cc nstonte ztxl _warni n9_th r e sho l d do grvpo de tipo no linhc 1 1.

Resumo
As strings de campo sao com o as estrururas definidas dentro de seu 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.

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 .

".. . w _ _ ...

'W'

'W'

..

__

"!'!""

276

APRENDA 1M 21 DIA SABA'"

IFa~a

----'--------Utilize um sublinhodo para foci litcr c lelturc des names de vc riovels.

CIA I, OEAttlMOO OADOS N AS""',., PARTE 1 O

277

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".

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

Teste

o o

Por que preciso criar strings de campo? Por que n ao posso apenas utilizar simples variaveis?

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?

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
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.

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.

para

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 :

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 - os estru rur ados, tip 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.

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.

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 m ove-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://_ .compU J.com.br"

---- - 280
agora.

- - - -- DIA UTRIBUI(DES.CDHVERSOES Ec.ll!UlDS I

" RE NDA EM21 DIAS ABAr/4

281

Configure se~ padroes de usu ario agora, seguindo este procedimento:

Figura 9 1

1. Se voce estiver atualmente no sistema R/3, salve todo a seu t rabalho

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.
6. Selecione a caminho de menu System-c-Log Off. A cain de dialogo Log Off sen exibida,

Esto e a estruturo syst . f lo contem as definil;6es de lodas 05 vori veis de 6 sistem 0 boICo o. Column Right;
Next role ume

co/unopor vel patO o direita, fozendo com que 0 extensao


totof

deShott Text

sejo vislJOlizodo.

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.

Tab ela 9.1 Vori6veis de sistema co mume nte utilizodos


Nome
Des(ri ~ao

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.

sy-datum syuze1t sy- uname sysubrc sy-mandt sypagno sy-co1no

Data atuo l 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


Nu merc do linho de llstc de soldo atuol

sy-l tnno
sy-vline sy-ul i ne sy- rept d sy-cprog sy t code sy-dbcnt

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.

282

APRENOA EM 21 O A P'. IAS BA

OIA UTlIIBU1\'El,CONVERsOEl EcALCU lOS

283

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
17

report zb0901. ta bles ztx lhl. parameters "landl vr-tte : I 'Current / ' Cur ren t / ' Current / 'Vendors

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.
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).

li lce ztxlfal -l andl obl igatory def ault ' U . S'

date :' . sy-detum,


time : '. sy-uaet t ,

A linha 12 escre ve
~l ~nd l.

user: I . sy-uneme ,
having country code ' .

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. 0

t.
select * fr om ztxlfal
where landl .. "land] or der by 1f tm-. w ite : I sy-dbc nt , ztx lfal-l 1fnr. r endselect. lli rite : / 5y- dbcnt, 'records found', if sr-subrc <> O . write: / ' N vendors exist f or count ry" , o
endif.

A linha 13 marca

final do loo p sel ect / endsel ect .

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. 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.

o
siiDI ~

c6digo na Listagem 9.1 produz esta safda:


date: 1998/02 /22 time: 14:38 :24 user : KENGREEN'~OOD having country code U S 1 1040 2 1080 3 1090 4 2000 5 V I
6 V2 7 V3 8 V4'

' . d . La ca Iza o d a yanayelse sistem a " Consi deran do urn c6digo de entrada como urn pararnerro de entrada, suponha
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.

Current Current ' Cur r ent V endor s

9 V5 10 Y7 10 records found

ENTRADA ~

Lista ge m 9.2 Um program a 'd e exemplo com umo vari 6ve l sy faltando

INjllSE ~

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.

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 ? Y ioma de l ogon atu e l id 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.

..

.. - .....

~ ~

.... "!I" -

'"4!!!'" -

- -"'!W- OIA 9,ATRIBUI\OES, C N D YERSOES EcAlQJlDS

284

APR ENDA EM21 DIAS A Apt! B

285

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.

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.

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

13. Role, se necessario, para

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.

,. Table .

Structure o r
Pora referenda futuro, voce pcdero sa lvor a listc de Print Preview for
xxxx em um crqvivc de textc na sua unida de de disco ngido. Pora isso,

Para localizar as descricoes de um a estrutura a u ta bela: 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 .)

a pa rtir do tele Print Preview for lOOCX, selecicne 0 co minho de menu System-c-Llst-c-S -c-Lcccl File. Ne tela Seve Ust in File ... ,seledone cve 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 .

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.

Seguindo 0 procedimento anterior, voce pede p ercebe r que 0 idioma de logon atual estava armazenado em 5y1 angu. 0 programa complete apuece na Lisugem 9.3.

286

APR DA EM21 DIAS ABAPH EN

D~ 9,mIBUI\05,CONVElS05 EckrulDS
com. a

287

ENTRADA'" Listagem 9.3 A Ustage m 9.2 ,. foltondo no linha 5

cdtccc do vcne.. .el sy que estova

Sintoxe do instrucco cl ear

!!!
Z
S
1ft i di oma de l ogon atual

A seguir, veja a sintaxe cia ins tru~ao c1ear.


clear vI [with -e : wit h 'A' : with HUll]

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

onde:

vt

e v2 sao ac m es de strin g de campo au variaveis.

continua
6 wh ere spra s .. sy-langu and land! .. "lendt ,
7 1f sy- subrc .. O.

. 'A'

eum literal de qualquer comprimento.

8
9

write: 'Description :' , ztxt 005t - l andx.

O s seguintes pontos se aplicam:

else . "
write: '!'to desc ription e xists for', " l andl . endif .

10 11

S.\iOA ~

o ccdigo na Lista gem 9.3 p roduz esta salda:


Descript1on : U nited Sta t es

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.
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. 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.

JJ1.i.uS E'" 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
lERMO,.

N OVO...

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:

clear m ove m ove-corresponding


instru~ao

A listogem 9.4 utilizo umo novo odil;cO denominodo no- ga p no instrut;c o wr; teo N o-gap fez com que a proximo volar de sctdo sejo
escrito imedioto mente depois do otuol sem urn espccc interven'ente .

Utilizando a
N OVO... H ~ UD

c l ear

EII1UOA~

Listagem 9.4 Vari 6veis configurodcs para espccos em bronco o u zeros


pete lnstrucoo cl 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. '

1 repo r-t zt xD 4. 9D 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 ' A . B' valu e 12345. value 12345 . value 'lEl', valu e '7 89' . valu e ' 19980101' , villue'1201'. val ue ' M' .

__

- - - - - _- _

- _

.- _

- . - - =c--"-=--.

288

A EN PR DAEM21 D AWl' IAl


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 / ' slf2-'" 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,

D~ HTllIBUI\OES,C N D VERSO EtiLruLDS ES

289

17- ' 000000' fa -'OO' s l-fl-' s lfl-' 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.
I ll'

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. 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.

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'

EMTRAD'" Listagem 9.5 Vo ri6veis preen chidos com cora de res difere ntes de A

espOl; os em bronco o u zeros utilizondo a adi<;60 wi th do instrur;ao c1 ear

sr-rz-:

123 , 456

zt xl fa l- 1i f nr- ' XXX ztxl f al - 1andl - ' CA fl-' f2-' 0 ' f3' 0 ' f4-' O. O OOOOOOOOOOOOOOE+OO ' f5 -'000 ' f6 - ' 00000000 '

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 ' XY I , Z 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.

""

290
, m N" 17 EM 21 DIAl U'PI4 /.
D~ UTl<lBu~6ES, CONVEISOES EtllrulDS

291

18 cl ear: f1 with 'X'. 19 12 with fl .

Utiliza ndo a inst ru <;tio m ove


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.

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,

Ul

o c6digo na Listagem 9.5 produz esta salda:


SAiDA ~
fl 'AB'
f2'" ,

Sintaxe do i nstru~ii o m ove 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.

1ft

ou

vz "
ou

'Ill.

f3'" 12.345 ' sl-fl ' XYZ sl -f2. > 123,456 zt"l f a1- 11fn r- '

'112 'Ill "'vm 'lin

ztxl f al - linen-'
f Za lXX ' 13'50, 529,027
51-fla ' XXX'

ou
IIICIve rl[+N(L )] tov2[+N(L )] .

n 'xx'

ou
,2[+N(L)] , 1[+N(L)] .

51f2'1482184792 '

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


ztxl ta l - landl- '11#'

onde:
vI
v2

ANALISE

e a variavel ou string de campo de envio.

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.

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.

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 ,.

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
fl - f2 . fl -f2 -f3.

Incorreta

n-ra ,

n- ra-ra.

292

"mDA E. 21 DlAS A'AP/!

CIA 9,ATRIBUI\O ES,COHVERSOES EckcuLDS

293

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

Do tipo

Para
p

tipo

Regras de eeevereee

o compo de envic pode cante r openos ncme rcs, um cnicc


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.

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.

Se as tipos de dados dos camposde envio e de recebimentoforem as mesmos, mas as comprimentos nao, uma adaptaciode comprimentcseraexecutada, como
pade ser visto na Tabela 9.3.Nessa tabela,0 campo de envic e 0 campo "From".

Tipo

Quando atribu ir pa ra u m campo maior, 0 valor 'from' sera:


Preenchtdc em bronco Preenchldc Preenchido Preenchido

Quando otribuir para um campo menor, 0 valor ' from sera:


I

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
x

a direito com espc ccs


c direito com zeros

Truncodo a direita Tru'ncodo

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.

a direito

o compo de envlc e ono lisad o do esquerdc paro a direita e


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.

n p

c esque rdo com zeros


c esquerdo com zeros

Truncodo a esque rdo Atribuido se 0 valor numerico se odeq uor 00 compo I to I Se 0 va lor nurnericc for grande demois para 0 compo de recebimento, um curto dump ocorrer6 .

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. 0 usa de * para indicar estouro em CODversoes de p para c. Urn campo c completamente em braneo e converti do par a urn campo p com urn valor zero .
.

Os valores v6lidos poro 0 ca mpo de envio sao 0-9 e lefros moiusculcs A 0 valor e olinhodo c esquerdo e pree nchido -F. 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.

o valor ealinhodo (] dtreitc no co mpo de recebirnentc , co mo byte mois (] direilo reservcdo paro um sinal finol. a sina l
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 " campo de envlc noo se adoptor 0 0 no 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.

294

mE'" EM 21 DIAS " " "

DIA 9,,mBUI\05,CON I'R5ii5 EcALCUlOS

295

Tabela 9.4 Confinuccdo


Do tipo
p

Para
d

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

YYYYMMDD.

26 fe 27 fc 28 fe 29 fe 30 fe 31 fe 32 fp

.. fpl. fp2. .. fp3 . ;; fp4. .. fpS. .. fp6 . ;; , ".

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


meio-nolte, convertido em 24 heros e a rmazenado
intem omente no fcrmct o

HHM MSS.
numero de

ccdigc na Listagem 9.6 produz a seguinte said a:

p
t

A dote

e convertida em um valo r que repre sento 0

dlcs desde 000 1/01/01 .


p

silDi ~

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 .. ' A D . write : / f t , ' when you lo ad t hemwith junk' . BC E' 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 B . write: / ' M B4' , >, fx, 'i9nOr all after in valid char ' . 4' e 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' .

-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 s -1234 > 1,234- allow l eading sign 1234~ 1,234- al so allows trailing sign 123, 456, 789 > 12345 6789 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

SCRHNCAM,.

.... lnicle o~oro 0 ScreenCom "'How to Display the Conversion Rules in the ABAP/4 K ord Documentation"'. eyw

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.
ove. 4. No campo Fin d, digite m

S.

,
l

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 .

296

APR U DA EM21 DIAS AIAP/4

Subcampos

1IIlIO ,.

NOVO ...

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

' J' . fl . 12. fl . f1. 12(3). fl.

.f1 agora contern 'JOY

I n.
I

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 ' .

onde:

o c6digo na Listagem 9.7 produz esta safda:


TOT JO T OT B
BOY BOY BIG BOY

vl e v2 sao nomes de string de campo ou de varifvel.


0

eurn deslocamenro baseado em zero desde 0 inicio do campo. L e urn comprimento em bytes .

O seguinres pontos se aplicam: s


U rn subcampo po de ser especificado para recebimento ou para amb os. 0 deslocarnento au comprimento presentes. Se 0 deslocamento come cc do camp o.
IUO

IHiu!~ s
0

camp o de envio ou de .

e opcional , Ambos podem estar


0

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

for especificado,
0

subcampo iniciara no

Se 0 cornprime n to nao for especificado, final do campo.

subcampo se estendera ao

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.

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.
ET NlADAIilIrr.. Listagem 9.7 Movendo umo porte de um compo utilizondo umc " otribui~60 de subcompo
2 3 4 S 6 7
1 r epor t ztx0907. data : fl(7), f2(7).

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.

.. 'BOY '. f2 .. ' BIG' . fl+O(l) .. ' T' . '!trite / fl .

f1

-meSllO que: mover ' BOY ' para fI. -Ilesmo que: ee ver ' BIG' para f2 . fl agora c ont~m 'TOY

298

l PRENOl EM21 OilS ABl P/~

O~ 9, All"BUI~OE5. CONYRSOES EcllCUlOS


doto f1 (4) value 'ABeD'
f1

299

Figlltg 9 2 Util zor move em umo i string de compo, se m tJtj/izor um nome de: componente, farO corn q ue: a stringse;o tratodo como umo vori6v do tipo c. el

IlfA~ lr-: I;i<.~ I~" l -,y c-'"


.,,&_';) ';:'

Movimentos do string de campo envolve ndo campos nurner icos


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 caractere.

~ '.-.:".. ~.

oata begin of fs1,


eI O)

e2(2) .
e{ 3 } .

end of fs1.

,,
mo ve

f1 to fs l .

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 inv61 ido .
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.
10

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 ' A CD ' . B 3 begin of 51. 4 el(l). 5 e2{Z). 6 ' 3(1) , 7 end of s L,

su

n.

s w rite: / 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

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

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
0

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 ~
lIIiU ~ SE

B 75770, 417

0...
1234

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.

conreedo dos ccmponentes de

51.

~ .. -.- .

w - w w

---

.....-- -- -- -- - - - - - - - - - - --D~ Um BUI~OEs. C NVEISOES EcllaJLOS O

300

'PREND' EM21 DIAS "'PI'

301

Nalinha 6, f1 emovidopara 51. Nenbuma cc nversao eexecutada porque


s 1 euma String de campo, portanto

o c6digo na Listagem 9.10 produz esta saida:


S ~ imi
199802171234AB 199802171234AB 19980217 1234 A B 1998 02 17 12 34A8

erratadc como sendo do tipo c.

Na linha 7. st- et

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.

A linha 10 escreve f1 e, novame nte, as resultados sao lixo. Na liaha 11, para f1

i1itISE~

Na linha 12, f1

e atribuldo urn valor vilido de 1234. e at ribuidc a s1-c1. Pelc fato de a atribuicic ser pan

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.

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

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.

ou de uma string de compo contendo urn tipo ncrner ico . as resultados dependem do m6quino e, porto nto , soo indefinidos.

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.

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.

Movenda de uma string de campo para uma Dutra com tipos de dados num ericos

TaMO"

HO'O Ilr....

E AIlrrrrr.. Listagem 9.10 Ufilizondo move com duo s strings d e NTRAO


, . 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 .

compo compostos

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.

"

byt es byt es byte byte

TEtMO "

NOVO ....

bytes byt es bytes bytes bytes

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.

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:

... ... ..... - - - - - - I


-

- -- _.
DIA 9, A1iJBUI~OES, CONYERSOES EcAlCULOS

302

APR ENOA EM21 O AUP/4 IH

I
SAiD ~ I
A 1110 I A 1,234
B

303

As duas Strings de campo consistem inteiramente em campo s de caractere (ripos C, n, d. t e x). 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~
3 4 5 6

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.

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) .

2 data : begi.n of 51,


c1 value 'A', CZ type 1 value 1234, c3value 'B ', end of 51, begin of 52,
" \.Ill byte quat ro byte5, ern geral prectsa de ' preenchteenec urn byte

Utilizando a instru<;iio move-correspond ; ng


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.

7 8

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.

" \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 )

Sintoxe do
esquerda.

instru ~Ci o

move-correspondi ng

III A seguir, veja a sintaxe cia instruqao m ove. O s op eradores e operandos devem Z ser separados por espacos. MUltipIa atrib uicao ocorrera cia direita para a
nove- cc r r es pcndt nc .v1 t o vz,

on de:

vl
v2

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

ea variavel ou string de camp o de envio . ea varifvel ou st ring de campo de recebimen ro.

invalidas.

OIA 9,ATiIBUI\OES,<OHVEiSiiES EclliuLOS

305

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) ,

s ubtract au s ubtract -corres pondi ng mul t t pl y a u multi ply-corres pondi og divide au div ide-corre sponding

Utilizando a instrucco compute


Compute

ea insrrucfo u tilizada co m mais frequencia para execut ar ctlculos.

x2(3)

value ' XYZ'.

10 c3 t ype i. 11 end of 52. 12 w rite: / '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

S
In

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.
compute v3 vl op v2 [op vn ].

au

15 * move st- et to 52-c1. "execut a ccnversao 16 *" m ove sl- c3 t o 52-d . "execut a ccnversxc 17 write : 1 's2 after lOOve- corresponding: ' . 52. cl ; 52-x2, 52-c3.

v3

= v2 op v2
v3

[op vn ,..l,

onde

e a variavel de recebimento para a res~ltada do calculo. e urn ope rador matemarico.

a c6digo na Listag em 9.12 produz esta safda: .


51

vr, v2 e vn sao as ope ran dos.


op

1. 234.56 ABC 1234


1.23~

IliDI.
,

s2 before scv e-c crrespondt nc: XYZ s 2 after move- cor r es pondin g: 1234. 56 XYZ

A Tabela 9.5 contem uma lista dos operadores validos.


Tabela 9 .5 Operadores v6 lidos po rc a
. Opero dor
Opera ~ao

... 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.

instru ~aa compute

Adi;oo

Subtrocec

/
** DIV MOD

Multiplicac;eo Dlvtscc
Expcnencicccc

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.

Dlvisec de inteirc Restodo divisdc de inteiro

Execufondo c6lculos
V oce pode executar calculos utilizan do as seguintes instrucoes:
comput e add au adc- cor re spondt ng

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.

~~

...... ,...

-- - - ----. Il"'''''"'IDES,

,.",usO" "AlCULOS

307

v2
v1

ea varisvel sendo adicionada.


e a varifvel adicionada a v2. e semelhante.

A sintaxe de subtract, m t f pfy e div i de ul

Sintoxe do instrucco add-co rrespondi ng


add-cor respo ndi "g 51 to 52.

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

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, m ultlply-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 : w ite : r w 1t e: r

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.

308

HRENDA EM 21 DIAS ABAP/4

DIA9:A TRIBUltOES,C NVE O RSOES Eti.LfUlOS ,

309

c6digo na Listagem 9.13 produz esta saida:


5 3

6
3 110

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.
Na Iinha la, 1 e sub tr aido de d2, considerando a data do ultim o dia no mes an te rio r.

200

330

100
1,0 00

ZOO
200

300
9, 000

100

ZOO

300

Na linha 12, a diferenca em dias entre a data atual e a data de fusio


(almagamation)
pact a dc num ys e _da

Cclculos de dolo
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.

e. calculada. 0 resulrad o e atribuldo ao campo come. totalmente escrito na linha 13 .

Atribuic;ao dinamica
N OYO'" lUK ~ O
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 z quolquer luga r de seu programo em vez do nome real do campo. Utili e 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.

~NTlADA'" Listag em 9.14 Colculos de doto que util izam a vcr tcvel de data dentro
,. de um c61culo
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 .

sy-datUlll. dl, p.

ENTUDAtrrr.. Listagem 9.15 Um sfmbolo de campo I


,. compo
-data de ont ea -pr1meiro dia do ~s atual -Olti lllO dia do ~s anteri or
I

e uma referenda

para urn outro

wr ite / dl. write / ez . write / d2.


~

ztxl_amalgamation_dat e . "numer o de diu desde ztxl amalgamation_date

2 3 4 5 6 I

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 ' X Z'. Y write / fl.

No die 22 de fevereiro de 1998, saida:

c6digo na Listagem 9.14 pr oduziu esta

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


SAiDI ~
ABC
XY2

S.liDI~
IHius~ ~

1998/02 /21 1998/ 02/ 01 1998/ 01/31


354

IHilll~ ~

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

N a linh a 2, a ins rruc ao type -pool s faz com qu e a constante ztxl_am algamat ion_date seja inclufda no programs.

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
A linha 6 mo difies A linha 7 escreve
0 0

N a linha 6, a data arual

e atribufda a dl e d2.

conteudo de fl seja escrito.

Na linha 8, a data de ontem e. calculada subtraindo-s e 1 da data atu al. 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

conteudo de <f> , mas . na verdade, modifies fl.

co nteudo madificad o de fl.

-- ....... _... .
310 , API ENDA EM
21 OIlS ABAPH

DllH TRIBUI\OB, (OIffiRSOB Ec.ltrulOS

311

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 .

IFasa
Utilize compos do mesmo tipo de dodo, quando possivel, po re evitor cc nversees. 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.

_
Nao move vclores inv61idos para campos.

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. 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 N Ulls. 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. 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, m ipl y,di vide,add -c orrespondi ng, subt ract- cor re spondi ng, m t i ult ul ply -c or re spondt og e divi de- cor r espondi ng.

P&R

o o o 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.

312

APR EN DA EM 21 DIAS ABA PI4

D~U""U1(OES, [QNV"SIiE" c.\LCUlOS I

313

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? 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.

Duas coisas esrao erradas com elas?

programa na Listagem 9.16. Quais sao

ET A H RAD .... Listagem 9.16 Este c6digo ilustra a utillzoc do de algumas vcricveis b6sicas de sistema

o
o
Wo rkshop

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

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".

o .Workshop oferece duas maneiras de voce verificar 0

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

Exerdci o 1
U tilizando 0 proced imento denominado "Como localizar as descricoes de uma estrutura au tabela" para localizar:

1. 0 nome do campo de bloco Payment na tabela lfa l. 2. 0 nom e do campo chave Gro up na tabela knal.
3. 0 nome do campo de sistema que contem a localizacao de uma string . 4. 0 nome do campo de sistema que conrem a ID da mensagem . 5. 0 nome do campo de grupo de material na tabela mara.

10
Instru~oes

de controle comuns

O b jetivos do capitu lo
Depois de concluir este capitu lo. voce sera capaz de: Codificar as insrrucoes de con tro le comuns; f, case, do e whi 1e Controlar a sequencia do programa utilizando exit, conti nue e check Codificar especificacoes simples de comprimento e posicao na 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:// ,,,,,,,,,,,,,C Cmpus.ccm.br

316

APREN DA EM 21 DIAS ABAPH

D1Al UNSTRD~6" DE CDOTRD COMU LE NS

317

Sintoxe do instru..ao i f
'" A seguir, veja a sin taxe da instrucac if.

Tabela 10 .1 Ccnnnvcccc
Compara fjao Formas a lternativas Verdadeiro quan do

if [not] exp [ and [not] exp ] [ or [not] exp ] .

S
m

vl >'" v2 vI <: v2 vi between v2 and v3

GE, :> LE, :<

vl for moior que ou iguol a v2 vl for menor que ou iguol


0

[elsei f expo ]

[el se .

---

v2

vl estiver entre v2 e v3 (inclusive) vl ultrapossar a fa ixa de v2 a v3 - (inclusive)

---J
endif.

not vI between v2
and v3

onde:
exp

e um a expre ssao lo gica que avalia quanta a umacondicaoverdade ira au falsa.

--- 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.

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. Se urn camp o for do tipo P.
0
0

else e elseif sao opcionais.

outre sera convertido p ara 0 tipo f. outre sent convertido pa ra 0 tipo p.


0

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.

Se urn ca~po for do ripe t , 0 ou t re sera convertido para

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 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

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".

vI v2 vI <> v2 vI > v2 vl < v2

EQ
N >< E,
6T LT

vI for iguol a v2 vI nco for iguo l a v2 vl for moior qu e v2 vi for menor que v2

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.

318

' PRE '" EM21 OIlS

"API'
Tlpo de da do
p

O~ 10 INmlJ(OES DE ( OKTiOl COMUNS ,

319

Ta bela 10.2 Tipos de dodos de [itercis


Descri~ao

SAiDI ~
INiuSE ~

, .,

o c6d.igo na Lisugem 10.1 produz esta saida:


o ' ,
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

Todos os outros

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.

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 X I e 0 valor de 52 e Xl. Y 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 .

ENTiADA~ Listagem 10 .1 Urn exempl0 do utiliza<;60 de if no progromo


1 report ztxlO Ol. 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 52x. 13 wri te: / 51- x. '. ' , 52-x . 14 else . 15 .... ri t e: / 51-x, '0'. 52-x . 16 endt f.

Exibind o convers6es

TEUO "

IOYO '"
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

"H to Perform a Program Ana lysis". ow

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.

320 [ APR ENOA EM21 DJAS A BA P/ ~

O~ 10, INSTRIlI'" OECONTROlH O I MUN

321

Utilizando

fl Sf;

'Iltillzandc operodores de string de caroctere


O s operadores especiais para as strings de caractere sao mostrados na Tabela 10.3.

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
1 repo rt ztxl002. 2 parameters: fl def ault 'A', 3 f2 default 'B' , 4 f3 defau lt 'c.
I 6 if
fl f 2.

Ta bela 10.3 O peradores especiais pore strings de ccroctere


Ope~..

Sig nifl(o

V. ..dodelro
q ua nd o

Ha d lsti "iCJo entre


mahi.culas mi nUsculo.l
Sim

Os "pa~os e m branco finol. sbo Ign Ot'o dos?


Nco

vI CO v2

Co nl6m se rneree

V1 for com posto


sc mene de ce recte-es em '12

7 els e1f

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 w t e : / 'all fi elds are diff e rent ' . ri 24 endif . 25 endt f. 26 endif.

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 ntic 'st60 em '12

5im

Noo

'1 1 CA '12

Cont em q uolq uef

v1 pode ccorePIlle mlIOOs um


ccrecee em '12

'm
Sim

",,0

'11 NA '12

not '11 CA '12

.,1 nlio pod. conler nenhum torodere em '12

Nco

'11 CS '12

Contem stril'lg

... 1 pod. tonI .. 0


string de ee reeere
~ ,2

",,0

'm
Sim

'11 NS '12

not '11 CS '12

... n60 pode 1 co ni.. 0 string de corcceere em '12

NOo

'11 C '12 P '11 N '12 P

Cont6m podriio

v1 pede center o pad rtlo em '12

NOo

Sim

not '11 C '12 P

... ntio ped e 1 co nter 0 padrOo em Y 2

NOo

Sim

o
siiDI ~

c6digo na Lisragem 10.2 produz esta saida: Es ses operadores podem ser utilizado s em qualquer expressao de co mpara~ao. Os operadores CS, N CP e NP ignoram os espaCiOs em branco finais e S,

all f iel d$ are different al l fields are different

INitISE ~

Se fl

= 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.

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.

--~----

322

APREHDA EM 21 OIAS ABAP /4

DIA 1000Sl1U\OB DECDNTlOLl C NS OMU

323

fHIRADA~ Lislagem 10.3 Um pregreme dx.mple .mpregende co, CN , CA NA


1 report ztx IDD3 .

A linha 18 e falsa porque I ABCD' nao contem nenh um dos caracteres . 'XVI' . 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. 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.
Tabela 10.4 Op. roder.s C NP P.

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.

"

"A B''' .
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 .

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 . " XY , , . Z' write 'True ' . else . wri t e ' Fal s e' . end; f.

"

o c6digo na Listagem 10.3 produz esra saida:


SAiDA ~
co co en en ea ca ' AXCI ' na 'ABC ne D' ' AA BB' 'ABCD' ' AA BS ' ' ABCD' ' AXCl ' ' ASeD' 'AB' Tr ue ' ABC' Fa ls e 'AB' False ' ABC ' True ' AB ' True ' X I ' False Y ' ABC' False 'XY ' True I

# 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, N CP ou HP. Voce pod eci tambem 5, precisar do caractere de escape, se quiser executar uma pesquisa de padrao (CP ou NP) para uma string contendo ", + ou #.

Tabela 10.5 Utilizondo corccteres


Instrul!ioo

Ve rd a deira q ua ndo 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 O vclqver ca ractere pod e a pa recer no seg unda posic; o.

AHALISE ~

co e 0 operado r que contern exclusivamem e. A linha 4 porque 'AABB' contem apenas caracteres de ' AB'.

e verdadeira

vl CP ' A+C'

A linha 6 efalsa porque ' ABCD' contem urn D, que DaOesta em ' ABC' . 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. 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.

,,1 CP '* Ab*'

A string -ab- ped e occ rrer e m qua lquer lugar dentro de "1. Os dois
ca raderes pode m este r em letra rnciu sculc o u em letro mlnusculo .

,,1 CP ' *I Alb*' vl CP ' *" .'

111. pode conter uma letra A motusculc seguida por vmo letrc b minuscule.
v1 pod e conter urn ,.

324

APRENDA EM 21 DIAS ASAP/.

DIA 'UNSTRU\OES 0, CDNTROlE C MUNS O

325

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

15 if 'ABCD' en ' A C' . B


16

write 'True'. else. write ' Fal se '. endif . write: 'sy-fdpos"' . sy-fdpos.

17
18 * operador: ea 19 write / "'AXCZ" ce " A '. B" 20 if 'AXCZ' ce ' A . B' write 'True'. else. write 'False' . endif . write: "sy-f dpcs", sy-tepcs . 21 22 23 write / "'ABCD" ca "XYZ"'. 24 if 'ABCD' ea ' X Z' . Y write 'True'. else. write 'False'. endif .

25 26 27

write: 'sy-fdposz' . sy-fdpos .

if TRUE sy-fdpos
length (v1) 1"chor (vi) in v2 lslchor (vi) in v2 length (v11 P'c hcr (v2) in vi length (v1) 1"chcr (v2) in vi

if FALSE sy-fdpos :
1"chor (vi) not in v2

vi CO v2 vi CN v2 vi CA vz vi NA v2 vi CS v2 vi NS

length (v1) length (v1) P'chcr (vi ) in v2 length (v1) T'chcr (vi) in v2 length (v1)

28 * operador: na 29 write / " 'AXCZ" na " A " BC' 30 if 'AXCI' na 'ABC' , write ' Tr ue ' . else . write : 'sy-fdpos' . Jl 32 Y 33 write / "'ABCD" ne " X Z' " 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.

o c6digo na Listagern lOA produz esta safda:


'MBB' ' AB CD' 'MBB' 'ABCD' 'AXCl ' 'ABCD ' 'AXCl' 'ABCD'

vz

vi CP v2

co eo en en ea

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.

'AB' True sy-rdpcs'ABC' Fal se sy-fdpos . 'AB' False sy-fdpos" 'ABC' True sy-fdpos= ' A True sy-fdpo s" B' ce ' XY False sy~fdpos= Z' na ' A BC' False sy-fdpo sz na ' X Z' True sy-fdpos= Y

3
4

0
4

0
4

ENTRADA~ Lista gem 10.4 Utilizando sy-fd pos para ver a deslocamento do primeiro
cc roctere correspondente au do coroctere sem correspondenclc
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

INillS~ ~

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 .

"AB'"

write 'True '. else . write 'False '. endt t . write: ' sy- f dpos=' , sy-fdpos.
" A BC'"

write 'True' . else. write ' Fal se '. endif. write: "sy-fdpus", sy-fdpos.

"AB' ''.

vz, portanro

write ' Tr ue ' . else. write 'False' . endt f , write: "sy-fdpos>", sy-fdpcs .
"ABC'"

A linha 30 e a nega~ao 16gica de urn teste de ca. ' AXCZ' contern urn valor de 'ABC' e, portanto, urn teste de ca seria verd adeiro. Negar esse

326

APRENDA EM 21 DIAl A BAP/<

D 10, INITRU(OEI DE CO""O COMUNS IA LE

327

resultado dard falso. Sy-fdpos e configura da para 0 deslocamento com base em zero do primeiro caractere em ' A xez qu e tambem est a em ' ABC '.
I

EMTRADA~ Lista gem 10.5 A j nstru~a o case exe cuta uma serie
1 report ztxlO05. 2 paramet ers fl type i default 2.
3 4 case fl. when 1. 5 when 2. 6 when 3. 7 when others . 8 endcas e . 9

de

compara ~6es

A linha 34 e, novamente, uma negacao 16gica de urn teste de ca. ABeD nao con tern urn valor de ' X e. po rtanto , urn teste de ca seria false. VZ' Negar esse resultado dara verd adeiro. Sy- f dpos e configura da par a 0 comprimento de ABeD ' .
I I I

wri te / ' fl write I ' fl write I 'f! write / 'fl

.. 1'. '" 2' . " 3' .

is not 1. 2. or 3' .

Utilizando a instruc;a o case


A instrucao case executa uma serie de cornparacoes.

10

11 * 0 c6digo a seautr e equtvalente a instrlll;ao case aci ma


12 if
13 14

Sintoxe do instrU!;fio case


~

fl "'l. elseif fl .. 2.
elseif fl ,,3.

A seguir, veja a sintaxe da insrrucao cas e.


case vr , when ,,2 [ or vn ].
when 1'3 [ or vn . ] .

15
16

else.

w rite/ 'fl" 1' . write / 'fl 2'. write / 'fl z 3'. writ e / 'fl i s not 1, 2. or 3' .

S
m

end; f . a codigo na Listagem 10.5 pr oduz esta satda:

[ when ot hers.

endcase.

--- I

S io ~ AA
seruma variavel, literal, consrante ou string de campo.

fl = 2 fl .. 2

onde:
vl OU '12 podem

ANiuSE ~

A linha 2 defi ne fl como valor padrac 2.

pardme tro de urn unic o caractere com urn

--- representa qualquer mimerc de linhas de c6digo. Ate mes mo zero linhas sao permitidas.

N a linha 4, comeca a inscrucao case e fl ecomparado com 1, 2 e 3, ern seque nci a. A linha 6 faz a corr espo ndencia e executa a instrucao w -t te imer diatam ente depois dela. As insrrucoes when rema nes cen tes sao ignoradas. A proxima linha executada e a linha 12.

a s seguintes pontos se aplicam : Sornen te as instrucoes apes a prirneira corresponden cia wh en serso executadas. w hen others corre spondera se nenhurna when pre ced ente corr espo nder. hen Se when ot he rs nao estive r codificada e nenhuma w cor resp on der, o processamento continuard com a primeira instrucao apes endcase. As expr essoes nao sao permiti das. A s Str ings de campo sao tra tadas como sendo variaveis do tipo c. Case

Utiliza ndo a instruc;a o ex; t


A instrucao ex; t impe de que processamentos posteriores ocorram.

10

Sintoxe do instru\joo ex; t


CA

e mu ito

semelhante a if/ els eif. A un ica diferenca

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. .

S
m

exit.

...
328
I APRE ND EM 21 DIAS ABA PI4 A

O IA10: INSTRU~6B DE CONTIl:OLE COMU NS

329

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

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

EHTRAOI~

Listagem 10.6 Utilizondo ex; t para interromper a co ntlnuccco do


processomenfo

- - - representa qu alquer numero de lin has de ccdigo.

1 report ztx~006 . 2 write: / ' Hi' .


3 exit .
4

Os seguintes po nt os se aplicam: Os loops do podern ser aninhados por urn numero ilimitad o de vezes. 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. 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 . Modificar de loop.
0

write: / ' There' .

o
Sliol ~
Hi

c6 digo na Listagem 10.6 produz esta saida:

IHiuSE ~
.

Exit impede 0 processamento posterior, sendo ossim, exit no linho 3 impede que a linha 4 seja executado.

valo r de vl dentro do lo op nao afetard

pr o cessam ento

~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.

diverso~ efeiros, dependendo do loc al onde aparece no codigc. Entretanro, ela

ex; t ~ode ser ut ilizada em varies situacoes. Essa ins trucao p ode ter

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.

Utilizando a

instru~ao do

A insrrucao do corresponde a urn me canis m o de loop basico.

=' ,

sy- t ndex, / "

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 . .. ] ].

6 enddo. 7 write: / 'after

loop, sv- tndex . ', sy- f noex, / "

~
~

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.

8 9 do 4 times. w i t e: / 'out er r 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.

330

,HREN D'" EM 21 OIlS l U PI4

D~ Ie INmll\ EI DE CONTROl! CDMUNI O

331

o codigo na Listagem 10.7 produz esta saida:


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

6
7

endt f. enddo.

after . oute r inn er inner inne r outer

loop, l oop, l oop, loop, l oop, loop, fn ner l oop.

sy- i ndex "


sy - t ndex "

99 3 99

sy- i ndex =
sy-tndex = sy- t ndex =

, ,
1

1 1

~,

sy-index ;:
sy- t ndex ..
=

,
3 3 3
1

inner l oop, sy-t ndex outer


inne r loop . loop , inne r l oop, inner l oop. in ner l oop. out er l oop,

sy-i ndex ..

sv- tnoex =
sy-tncex ..
sy- tn dex

,
3
4 1

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
-,

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 .

,
I

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 :


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 .

1. Quando efetuar logon pela primeira vez, selecion e


menu System-s-Create Session .

caminho de

2. Minimize sua nova sessao e a deixe no fundo ate precisar dela. Voce
pede agoIil testar os programas com impunidade.

Term inando um loop sem f im


Existir jo oc asioes em que urn programa em execucto tera urn loop inte rminavel. A Listagem 10.8 mostra tal programa.

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
o foco fique no leone R3 representando sua out ra sessao .

ENTRADA ~ Lista g e m 10.8 Urn loop sem tim poder6 ser frustrcnte
so vber interrompe-lo
I r eport thIOQ8. 2 do. 3 'Ilrite sy-teeex . 4 if sy-1ndeK .. O. 5 exit .

se

voce n60

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.

-~

-~

-- - --- -

-DIA 10: INSTRU~OES D ECDHTROLE COMutiS

334

I " R ENDA EM 21 DIAl ABAP/4


7 8 9

335

10
11 12 13

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 ,

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

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:


IAA iD~
1 3 5 2 6
12

o c6digo na Lisragem 10.11 produz esta saida:


SAiDA ~
1 2 2 4 3 6 4 8 5 10 99 6

AHillSE~

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.

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.

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

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

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

I, 2, 3. 4, 5, 6,

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) .

336

APRENDA EM 21 DIAS AlAP/4

D~ lD,lN"'"IIiB DECDNTROlE (D .UNS

337

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.

ENTlADA ~ Listagem 10.12 Urn exemplo do usa do

instru<; 0 6

w 1e hi

Sintoxe do instruc;ao whi1e en A seguir, veja a sintaxe da insrru cao whi 1e.

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 ,

endwhl 1e.

onde:
exp

euma expressso logica.

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 ame er s p(25} default' t 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 .

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
o tipo de dado e comprimento de fl . . . . represent s qualquer numero de clausulas vary compleras.

14

endw e . hil

15 w rite: / p,

c6digo na Listagem 10.12 pr oduz esta safda.

-- - repre sent s qualquer numero de linhas de c6digo.

s ~ liol
AHiuSE ~

p-- - V endor Number

a s seguint es ponte s se aplicam: 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. exi t impede 0 processamento de loop posterior e sai imediatamente do loop atual. 0 processamento continua na pr6xima instrucao execaravel depo is de endw 1e. hi 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

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. A linha 5 define p como caractere 25 corn urn valor padrao. 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 . 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.

valor de 11 de volta para

cornp one nte de

0 loop whi le sera novamente repetido a part ir da linha 6, desde que 0


flag done esreja em branco .

Em urna inStrUCI3.0 wh i 1e contendo urna expresssc logica e uma adicao varyi ng, a expressao logica e avaliada primeiro. 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.

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.

338 I

APREHDA EM 21 D'A5 ASAP"


do 10 times.' if sy index between 3 and 8.'
continua,' - _

DIA 10 INSTRlIl;05 DE (QIlTROLE COMUNS :

339

(Igu ra 1 0 1
A instro~Oo

13

endtf ,

cont inue

pula pore 0 finol do loop, ignorondo todas as jn~6es depois delo pore 0 possogem do loop cwa l.

endif., write sy-index.' enddo.

"
IAiDA ~

enddo.

o c6digo na Lisragem 10.13 produz esta safda:


dupl1cate: duplicate \ duplicate \ duplicate \ found found found found at at at at posit ion position posi t ion
postttcn

2
4

o c6di go na Figura 10.1 produz esta saida: :


IAiDA ~
1 2 9 10

5 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

A ~ HiuSE

A linha 2 define urn pardmetro de entrada p com 20 caracteres de comprime nto e atribui a ele urn valo r padrao.

Z
-t

do, while, select ou l oop. (A instruciio l oop sera abrangida n o pr6ximo capirulo.)
[do/ whil e/ select/l oop]
conti nue .
[enddo/ endw h11eI endse1ect j end' oop)

A linha 6 inicia urn loop. Na prim eira passagem do loop,


caractere de p e at ribuldo ace
0

primeiro

caractere depois dele

eatribuid o a n.
loop

A linha 8 sera verdadeira quan do c contiver urn caracrere diferenre de

: ou I.
A linha 9 pula diretamente para a linha 14, faz.endo com que seja repetid c utilizando 0 proximo caractere.
0

c ode:
._ ~ representa qualq uer num ero de linhas de c6digo.

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.

erep etido 19

Os seguinres po ntos se aplicam:


cont i nue pode somente ser codificada dentro de urn loop . cant i nue nao tern adicoes.

Utilizando a

instru~a o

check

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 w i te : /'duplicat e ' , c , 'found', ' at position'. sv-tndex . r 11

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
umoin~60

do 10 times. check not sY -index between 3 and 8. _,


write sy-index.

continue
condition al. f lo soltor6 poro 0 final do loop se a expressoo l6gica lor Io/so.

enddo.

.~

... -;.""

o c6d igo na Figur a 10.2 produz a mesma safda daqu ela apr esenr ada na Figura 10.1:

340 I

' PREND' EM21 DIAl AB APf ~


1 2 9 10

OIA 10: tNSTR~6ES DE CONT O COMU R LE NS

341

SAioA~

Sintaxe do instruc,;Oo check

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.

S
III

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.}
[do/ w 1el se1ect/l oop] hi
check exp o

Compara ndo as instru c;6es exit, cant i nue e

check

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

Tabela 10.7 Comparando exi t , continue e chec k


Instru~ao

[enddo/endw l e/ endse1ectjendl oop] hi

onde:
exp

Efel to

euma expr essao Iogica.


representa qualquer num ero de linhas de c6digo.

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.

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 fa nada . ra
~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
1 re port zt xl014. par am ers p(20) defa ult 'e ::\ \ \ xxx\ \ yyy' . et "ceract ere atua l 3 dat a: c, "pr6xi mo cer act ere n, 4
2 5 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
6 7

Especificac;6es sim ples de co m primento e posi C;Cio da instruc;Cio wr i te


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.

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 . Z na mstrucao wr-r.t e-.

o c6 digo na Listagem 10.14 produz esta saida:


Sio ~ AA
dupl dupl dupl dupl 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

S
T

write [IJ [P][ (L)] vI.

1
numerc de bytes aloc ado na Iisra para a

onde:

vi

e uma variavel, literal ou eonstante .


0

P e urn num ero que in dica u ma po sicao na lin ha aru al de saida.

ie urn

, lrrrr.r.. As li nhos de 8 a 10 no Lisiogem 10.13 foram substituidos pelo lin ho 8 no A A ,. Lisiogem 10.14. 0 progromo trobolho exotomente do mesmo maneira. N LISE

numero que indica saida de vi .

342

'm HO' E 21 DIAS M

'BAPH
10 11 12
1J

OIA1 INSTRUtOES DE CONTRCLE COMUNS 0:

343

Os seguintes pontes se aplicam :


/ comeca uma nova linha,

/ 2(1) ' Hi' ' There' / 2(3) ' H ' i ' There ' ' Hi', 10(3) 'Ther e ' /2

I, PeL devem ser codificados sem quaisquer espaco s intervenientes.


A Tabela 10.8 mos tra as maneiras correta e inccrreta de codificar as
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
write /10 (2) ' Hi'.

/
/
/ (3)
/ (2)

14 15 16

fl. fl. fl. f l.

f 2. f2 .

o
. SAiDI ~

c6digo na Lista gem 10.15 prod uz est a saida:

IncorTeta
write / 10( 2) ' Hi ' . write / 10 (2) ' Hi'.

+ 1 + 2. + 3. . . . + 4

write / 10 e2} ' Hi ' .


write / 10( 2) ' Hi' . write / 10( 2 ) ' Hi' . write (2) ' H1'. write ( 2 ) ' Hi
I

Hi There HiThere HTher e There Hi There H There Hi There Hi The

write ' Hi' (2) .

123 123-

123-

123
3

write 10 ' Hi ' . write 10 'H1' .


write ' Hi' 10.

INlllSE ~

A linha 4 representa um a regua de modo que voce possa claram en te ver as colunas na lista de saida.
A linha 5 escreve Hi comecando na posic;:ao 1 e There comecacdo na posic;:ao 4~ A Iinha 6 escreve H com ecand o na pcsicao 1 e There comecando na i posicao 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 espec 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 'H . 1 i' ' Ther e ' . 9 /2 'Hi ' . "r her e" ,

A Iinha 7 escreve Hi comecando na pcsicsc 1 e There comecando na posic;:ao 2. There sobrescreve a ult im a posicio de H . i
A linha 8 escreve Hi comecando na posic;:ao 1 e Ther e cornecand o tambem na posicsc 1. There so brescreve H completamente e voce na o i p o de nem ao menos diz er se Hi foi escrito na lista. A linha 9 escreve H com ecan do na p osic;:i o 2 e There depois de la. Wri t e i deixara urn espaljo entre os valores se voce nao especificar uma pcsicsc de saida.

A lin ha 10 escreve H ccmecando na posicjo 2 para urn comprim ent o i . de 1. Isso escreve so m ente 0 prim eiro caractere: H

A lin ha 11 escre ve H comecando na pcsicac 2 para urn co mprimento i


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.

344

HRENDl EM 21 OilS lBlP/4

OMUNS O 10: I NSTR~bES DE (OHTROlE C il

345

A linh a 13 escreve as cam pos deci mais compactados f1 e fl , em sucess ao. 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. 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.

check exp sahara para 0 fin al do loop se exp for falsa. Quando exp for verdadeira, check nao fara nada. 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 intervenie nce deve aparece r en tre eacla especificacio.

IFa~a

----:.. .-_---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.

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.

Nao utilize check ou continue dentro de um loo p select para Hltrcr registros. Em vez disso, utilize a d6usula w here pora filtrc-los. Nao [eio op6s 0 final de uma voriovel ou string de compo corp a adir;Cio . . aryin g. E xcecces de proter;ooe comporto mento lmprevisfvel poclem cc orre r.

P&R

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?

A s insrrucoes de loop sao do e whi1e. 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

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".

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


m od ificado para 0 lo cal de onde veio. Utilize um a outra sessao e
0

o
o
o

Por que X e a tecla de espaco sa o u til izados para representar os valores binaries ativado e desativado ? Acho que 1/0. T /F o u Y I N deveria ser utilizado, como e 0 comum na area de pro-

comando /

para t ermin al' urn loop sem


0

gramacao.
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.

fim.
Utilize as ins rrucoes exit, continu e e check para modifiear same nto de lo op. 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

E reco rn endada

final do loop.

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 ?

346

"PREMDA EM 21 DIAS ABAP j4

DIA lG: 1NmutOEs DE COmOLE (OlliUNS

347

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.

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?

o o

Exercicio 1
Escreva urn programa que produza a safda da Figura.

"r" .."x "".


1

1:1111I1"" "

,,'n1il('o,

".,

""

1 ' t "
,t

.. 12' _5." ". ' ~ L.I


' : ' .561" ' .
'ZJ "~" tZ' .:;" I" '~

' 1 2'"

S 6 .L ' ;

j: 1 2 , . S ' ~ "

"

u U.

, I,,, S. , . ,.

11 11:'''S. ' .., _


11
1 . ' 2 S .. '

S 1Z ". ~'~ " " .... S. l ,


,~ '

''l . 'lr"'5 ' ' ' '.


n
.. 1.l"

U. ' ~'

. S.1

~ t, .

'1'11."'5 ' 1 ' 9 .

'5 'J''''''1' '-

'l, sl .J . ' l S 1".S"" ,. ,_ . '" ...

o o
Wo rksho p

Posso utilizar uma variavel para indicar posi!rao em uma instruci o writ e?

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.

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.

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


N V Ilrrrrrr.. OO Uma tobe/o interne umo tobelo tempo r6rio armozenoda no RAM do servtdor TIMO '" l do cplicotlvc. Ela criode e preenchido por urn progromo durante a execulj;oo e e descortodo quando a programa termina. Como umo tobela de banco de dodos, uma tobe lo interne co nsiste em umo ou mois linhos com uma estrutura identica, mas, diferentemente de uma tobelo de banco de dodos, ela noo pod e armazenor dodos opes a termlnc do prog rama. Utilize a tabelo lntemc como um ormozenomenfo tempor6 rio poro a rnc nlpulccc o de dodo s ou co mo um buffer privado tempo r6rio.

hllp:// www.compU $.com.br

350 I

APIENDA EM Zl DIAS ABAP/4

DO lU/JruS IHTERJiAS

351

Defini..ao de umo tobelo interno


Urna tabela inr ern a cons iste em urn ccrpo e urna linha op cio nal de cabecalhc (veja a Figura 11.1).

NOV O..... TUllO r


refe re-se

a corpo a rmazena os linha s de tcbelc tntemc. Todes 05 linhas dentro de le tem


00

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.

a mesmo estrutura . Geralme nte, corpo do tc belo Interne.

te rmo "tobelc interne", propriamente dito,

~NnADA'" Listagem 11 .1 Ma neiros bosiccs de definir tab e la s inte rnes com e sem
,.. umo linha de cc becclbc
1 2 3 4 5 6 7 8 9 10

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 .....

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.

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

A Figura 11.1 mo stra a defini cao de u ma tabela"in terna denorn inad a it.
Fi gura 11

o c6 digo n a Lisra gem

11.1 nao produz nenhuma safda.

A definif;oo d" vmo tobe/o int"ma denominoda t t e

data : begin of it occurs 3, fl(l) , 12(2). end of i t .

mostrodo no porle svperi ;d" sto ngvru. O A Iinho de co~olho e 0 corpo tombem sec mostrudos.

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. 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. 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.

it

it

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 dein 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'- ~- ~ ~-~~- ~ ,


DlA 11:TABalS IHTEiNAS
I

352 , APRENDA EM 11 Olio SABAP/4


Iinba de cabecalhcdenominada it. Ou em f3 it -fl, a linha de cabecalho it tambem refere-se 010 componente fl .

353

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.

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,

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
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
abordada pelc no D ia 5, '0 Data D icti onary, Parte 3' .)

"t en

UI1lI

l1nha de

cabe~a'ho

)
4 5
6 1

n,
f2 ,
f3 ,

end of

ru .

- n~ o t !lll uma l1nha de cab~ a lho 9 10 data it) like ztxlhl occur s 100 w ith 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

tern lIIIII l1nha de

cab ~ al ho

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 w ith header l ine.

"ten uma l1nha de

ca be~alho

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 row otal. Essa tabela inte rna tern uma linha de cabecalho t uma vez que voce pode ver begi n of na defmii i o.

,.
"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

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.

3.
31 data: begin of 1t 9 occur s 10, 32 f1 li ke sy~ i nde x . 33 end of 1t9 .

c6digo na Listagem 11.2 nao produz nenhuma saida.

354

,," PR ,," EM 21 Ol,,"S. ABAP/ ~ EMO

OIA l),J,,,UlIHTERNAS

355

!:!!
Z

Sintoxe do Instruceo append


A seguir, veja a sintaxe da instrucio append.
append [1m t o] [in i t ia l Tine to] it.

EHUADAlilrr.. Lista g em 11.3 Este progra ma adiciona tres linhas em umo tabe la

inte rne it a pa rtir do lmhc de cobecclho

~
In

on de:

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.

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 .

"ecrescente ali nha de cabece1he IT ao ccrsc IT

05 seguinte s pontos se aplic am :


w deve te r a mesma estrutura de uma linha do corpo. o 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.

9 write: / "sy- t ebf x - ': sy- t ebt x.

10 it-fl 'B'.
11
1t~f2

'YY'.

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. -, . 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.

12 append it . "0 13 write ~ / 'sy-tabix -" , 14 it-fl 'e' . 15 append it. "a 16 write: / "sy- tebtx ~',

m esmo que a li nha 8


sy-tebtx .

tebel e tnte me ccneen agora tres l i nhas . sy- t aet x.

O c6 d.igo na Lista gem 11.3 produz esta saida:

SAlOl ~

sy-tabix .. sy-tebtx
sy-tebtx

1 2
3

A instru/iao append it t o i t acrescenta a linha de cabecaiho den omin ada


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.

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
f2.

NOVO lrII... m.MO'"

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 odo. imp/kilo (0 linho de cobecclho) ser6 utiliz
ccnhecldc como umo a rea

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).

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.

Figura 11 2 Estoss60 os instrues 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

.........................-......-""'I I .-. -. ......


3S6
I

I I I

I I . . . . . .W . . ~ ~ .. - - w
D~ l),TASEUllrmRHAl I

",PR EMD" EM11 DIU ABA P/4

357

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) .
Fi gura 1 1 3

Fig lirA 11 . ,

append it.

A crec de trcbolho padrfJo i 0 Iinho de


co~rno. Aqui,

ltnhc de ccbecclbc

append 1t to i t.

impJicitomente ocrescerrtodo eo corpo.

it[l]~ 11 f2 ...
it

""'pend i t to t t copio 0 conteUdo de Iinha de ccb~lho it


port!
0

corpo

it .

tirl ~
Si ~
~~
A linha 15 acresceata urna terceira linha a partir d.a linha de cabecalhc . ; t ao corpo it (veja a Figura 11.7) .
Figura 11 6 o valorcJo componente do linho d. a>bo<olho It-Il ~ sobrescriio. 0 yo/or de it- f Z permonece inolterodo.
1t-fl
=

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,
Figura 11 4
Estos instru~6es de

' E",

linho de ccbecclbc
it . ,]

fl

f2

1t-fl ' 8'.


1t~ f2

'yy' .

cmbuio;oc sobrescrev 0 em conteUd existen do o te linho de cobeljOlho i t .

linha de ccbecclhc

1t~~1 fl f2
CO"",

it

.. .
A linha 14 altera F igura 11.6).
0

. . ~~ ~~ ~ ~2!

append i t .

Figura 11 7

Aqui,

conteVdo do

6reo de trobe/ho imp/fcifO ~


oaescerdodo 00

""PO.

valor de it-fl e a deixa apen as em itf2 (veja a

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

Utilizcndo c c di~Ci o occurs

D~ lUABlLlS INTERNAS I

359

tabela interns, teoricamente,

e apena.s limitado pela quan ti dade

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 .o pode olocor. Se voce exceder esso quontidode, seu progrnm 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.

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. Se
0

t ama nha caIculado da tabela interna for ma ier que 8 KB ,

sistem a ira

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

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

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".

Le nd o dados a partir de vma tabela interna


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.

de 1.000 linhas, configure;' valor occurs para 100.

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.

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. Sintexe de
instru~lio

loop at

D epend end o da clausula occurs e do camacho da ta bela intema. 0 sistema alo cari. a mem6ria da area d e rolagem do p ro grama ou cia area de pagin a~aa do 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

.!!!

E
m

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.

8.192 byte s).

.
0

onde: it e 0 nome de uma tab ela in terna. wa e 0 nome de uma irea de trabalha.

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

Ha dais m etodos que

,
I

360

APHM DA EM 21 DIAl ABAPH

D~ lUABEllS INTERM AS

361

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.

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.

~ _ M representa qualquer nrimero de linhas de codigo. Essas linhas sao execuradasuma dnicavez para cada linha recuperada cia tabela interna.

.... 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 mes mo 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.

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 : w deve ter a mesma esrrutura de uma linha do corpo. a 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

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.

o ccdigc na Listagem 11,4 produz esta said a:


S I~ AiD
1 AX X
2 B YY 3 C YY

done. 5y-tab; x .. sy-subrc .. .

99

IMius!~

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

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 sytabix 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

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.

amal.

. _- _...
362
I APRENDA E 21 DIAS ABAP/4 M

-~

..

--:-~~

DIA 1UA BEUSINTEWS

363

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

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
loop.

,
I'

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.

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.

o c6digo na Listagem 11.5 produz esta safda:


S ~ liDA
2 B YY 3 C YY
1 A XX 2 B YY

Restr ing indo as linhcs lidos do tabe la interne


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

2 B YY 3 C YY
3 C YY

e semelhante ao da Ltstoqern 11.4, mas

IMiuSE ~

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. A linha 18 pula uma linha na safda, na verdade escrevendo um a linh a em branco. 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.

,. openas algumas linhas sdo lidos


1 report ztxl105 . 2 data: begin of it occurs 3,
J 4
fI(l).

5
6 7 8 9 10 11 12 13
14

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 .

" c o nt ~

agora tres li nhas

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. "m esrno que: loop at it from 1 to 2. 21 write: / sy- t ebt x, it -fl . it-f2. 22 endl oop. 23 skip. 24

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.

~o

'---

Embora where retorne um subcc njuntc do cco teudc de tobelc, ume vcrreduro total de tcbelo ser6 sempre executodc .

--1

-.

-.. -T "
364
APR EHDA EM21 D ABAP /. IAS

-.-..-.-.
UtiJizando exit, cont i nue, sto p e check

I -I

I 'I-I " I I .. I I I. __ I

I .I"" . ~..._ .
DIA lUABELlSIHTERH<5

365

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.

Se ta nto comp ari ng com o tran sporting estiverem especificadas, compar i ng devers vir primeiro .

Tabe fa 11.1 lnstrucees que podem altero r a processa mento de loop pa ra tobelos
inter nes
Instru~ao

Os seguintes po nt os se aplicam :

wa deve ter a mesma est rutura de uma linha do corpo.


'flO pode

Efeito

ext t

Termino

0 loop imed iotomente. 0 proc essamento con tin uo no

ser a linha de cabecalho au pode ser qualquer string de campo corn a mesma estrutura de uma linha no corpo.

lnstruccc imed iatomente op6s endl oop.

continue

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
tobelo intemo e a processomento continue a pa rtir do inld o do

loop. Se na o existirem mois linhos a serem recuperado s,

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 .
a di~oo

processomento continuar6 no primeiro instruc;oo ap6s endl oop.

check exp

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.

Ulilizanda a

index

NOVO... m.MO r

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. 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] ] pexp] (transpor ting texp]. [comparing cm

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

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).

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.

on de:

it
'flO

e0

nome de uma tabela in t erna.

2 data: begin of it occurs 3. fl(2) ty pe n, 3


4 5 6 7
f2 ty pe f. f3(2) type c, f4 type p, end of it. wa like it.
it~fl = ' 10 ' . it-f3 'M'. it-f2 i t - f 4 1. append it. 1tfl ' 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 .

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.

e0 nome da area de tr abalho. e urn literal de in teiro, constant e ou

s
10 11 12 13 14 15 16 17 18

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.


texp um a expr essso que representa as campos a serem transportados

para a area de trabalho depois que urna linha elocalizada.

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 .

I
366
APiE' OA EM' 1 DIAl A BAPI4
19 read table it i nto w in dex 1. a

w__ w w w -
0lA 1UABEUS lh'1IIHAS

367

20 wr ite: I . 21 / 'sy-su bre -" , 22 I "sy- ta bt x - ", 23 / it-fl . it-f2 , 24 / w a-fl , w a-f2 .
21

sy- subrc , sy- ta bh.. ft - f 3. it f4 . ..a- f 3. wa-14.

. 26 re ad table i t i ndex 4. : '27 w t e: I . ri 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.

Utilizanda a adi<;aa w t h key i 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.

Expn:ssao ke y .

Efeito

c1

vi c2

v2 . .

o e6 digo na Listagem 11.6 produz esta safda:


S A~ AiO
sy -s ubrc
sy-t ebt x

0 2

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.

20

8B
0 2 8B 1 AA

sy-s ubrc sy- tll b1x


20 10

(tI) vi (12)

v2

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 . 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

. w.

sy-s ubrc sy- ta bt x


20

0 2 8B 1 AA 2 1

10

As linhas de 2 a 7 definem uma tab ela inre rna co m uma linha de

w.

cabecalho. A linha 8 define uma area de trahalho w igual a linha de cabecalho de a


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 w fiearn inalteradas. a

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 1 6gica 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

~. I I I I
368
"'PH

.. I I

..

"

"

'

_
O~ l UlSEUS INlIiNlS

HRENO' eM 21 01"

369

Tabela 11.3 Volores atribuidos a sy-subrc e sy-t abi x Resultodo


le ituro bem-svcedtdc (uma linho correspondente foi locolizado) Leitu ro molsucedido, mas
umo Iinho com umo key moior que

sy-s ubrc

sy-t abi x
Indice do
linha correspondente

o
4

Indice do linho com 0 pr6ximo


key meier

umo solicitodoexiste
Leitcrc molsucedido e nenhymo

ncmerc de linhos

linha foi lccchrc dc com umo key mo ior

em1t + l

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,

A Listagem 11.7 ilustra

usa de express6es key.

EHTRlDA~

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

o c6digo no Listagem 11.7 produz esta safda:


l.\iDA~
sy-subre .. sy-tab'l x ..
30

a 3
3ee 3

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).
14
II

.,

sy-suarc .. sy - tabix ..
30 20

0
2 3 CC Z 88 0

3 2

51-suhre .. sy-tabh ..
10

loA
0 2

sy-subrc .. sy-tabix ..
10

loA

15 it-fl .. ' 10'. it-O ' M ' . 1t-f2" it-f4 - 1. append it . 16 it-fl ' 20' . i t-f 3 " ' B B'. 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 II II

AHlllSE ~

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.

23

24 f .. ' F2' . 25 read table it into w2 with. key (f ) .. 2. rite: t , 26 w 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.
31

"deve ester em l etra maiiiscula

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.

JI' ~ 1J
APiEH DA EM11 D ABA P/! IAl

........

~ ~ - - - - - ~ - - ------ - DIA lU ABEUS IKTERNIS

370

371

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 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 .

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 .

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

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) .

"8 9 i t - fl '10' . it-f3 - 'M' . it-f2 - it-f4 l. append it. B' 10 it- fl ' 20' . 1t -13 ' B 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) ' ". itf3 ' B B'. 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 Def uh o 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 K faz com que todos 05 vclores noquelo cclunc sejcm ey 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.

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 - ' , itfl. 'f2-' . u-ra. 'f3- '.

u-ra,

'14. ', it-f4.

ccdigc na Listagem 11.8 produz esta safda:


0
2 2 f3- B8 f4-

(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[iz ondo um sfmbolo de compo (consulte a sec;oo onterior quanto a simbolos de co mpo pa ra abter mois info rmol;Oes).

sy-suhrc sy-tahi x fl 20 rasy-s'ubrc sy-tab1x fl 30 f2=

3
0 fl - M f4 "' 0

lIIillSf ~

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-:Jr-'" .
e do
tipo n e,
Cmpe.xp

..

.
D~ IUABEill INTERNA5

372

APIEHDA EM 21 DIAl ABAPI'

373

A linha14limpa 0 conteud o cialinhadecabecalho, configurando todos


as componentes como espacos em branco 'e zeros. f1 assim sendo, e configurado como zeros.
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. . Icdcs cs compos sdc compo rados , com o descritc para f1 f2 . . . . Nenhum compo

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

fI f2 . .

campo Default Key (f3) e configurado como ' B B'. ' A linha 16 executa uma pesquisa biniria quanta a uma linha que
contenha ' B 1 no componente ra 8 Depois da pesquisa, a safda mos trari que sy- subrc foi configurada
all f ields
no fi el ds

e compo rodo . Esse e 0 pcdreo.

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, A linha 21 limp a a linha de cabecalho.
0

A Listagem 11.9 fomece exernplos.

Listagem 11.9 A odit;co comp aring ir6 configuror como 2 sempre que: as ca mpos forem diferentes
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~

va lor de sy-subrc .

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.

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.

9 10 it-fl ... ' 10' . i t -f3 'M ' . t t -f2 it- f4 1. append it . 11 it- f l ' 20' . itf3 ' 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
14 read t abl e it i ndex 2 cOOlparing f 1. 15 write : I 'sy-subrc - ", sy-subrc , 16 / "sy-tebtx -". sy-tab1x ,

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

em seu luga r sel ect s ing le.

Utiliza ndo a

odi~ao

compa ri n9

/ 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 ... ite: I . r 21
22

17

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).

/ "sy-sucr c - ", sv- subr c,

"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 . w a-f4. 25 26it wa. 27 reed tabl e it with key f3 ' M' cOlIIpar ing all f1eld s.
28 write:

I,
/ ' sy- subrt: .'. sy- subrt , / ' sy- ta bi x . ' , sy- ta bilt , I it-fl . it-f2 , it-f3 . it-f4 .

29 30
31

32

/ wa-fl, wa-f2, wa-fl, wa-f4.

lI!!!r Y

..

1J!II'

I
314
I 'PREMD' EM21 DIAS ,UP/'

----Cmpexp
Descri ~ Ci o

!!'

!!!

--

D~IU"EUSlllmNA5

315

o c6d.igo na Listagem 11.9 produz esta saida:


sv -s ubrc .. sy-ta b1x .. 2
2
2 BB

Tabela 11.5 Formo s de expressao de tronsporte no instruc;oo read table

20
sy-subrt: ,.

f1 12 .. .

sy-hbix .. 2D. 2 BB 10 I M

2
1

sy-subrc ..
sy-tab1x .. 10 10

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. 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. Nenhum compo it tronsportodo. Ne nhum des co mpos no creo de t rc bclhc e cltercdc.

M M

all f i el ds
no f ields

IHillSE ~

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.

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.
MlADA Listagem 11 .1 0 A mo ne iro mo is ejlclente de lnserir linh c s em umo IItrr..
,. tcbelc interne clcssrhccdc ma ntendo a orde m de c1 ossificac;oa.

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

~p ort

ztxlllD. _. .

2 :

A linha 26 transfere

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 .

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" ' B B'. 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

Uliliza ndo a
transporti ng

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) .

376 I

"lENDA EM 21 DIAS A BAPH

D~ IhTABElAS lNTERltAS

377

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.


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.

o c6digo
SAiDA ~
10 20
30
~

DOl Listagem

11.10 produz esta safda:


1 2
3

IXX lBB
3 XX

4004
5XX 5

SO

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. 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 .

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).

"

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.

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.
0

of

Classificando

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
m

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:

11 e /2 sao os compcnentes de i t.

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.

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 .

378

APREND. E. 21 DIAS .8lPH


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.

DlA 11< TABELIS UCTElHAS

379

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
40 41 42 skip .
43

write: l i t -i. it- t o end loop.

ira conter urn a letra de al pha e 0 valo r de sy-t ndex quando a linha for acrescentada.
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.

sort it. 44 *mesmo que: sort i t by 45 l oop at 1t . 46 wri t e : I i t - t o


47 endlo op.

t.

o c6digo na List agem 11.11 produz esta saida:


SAIDI ~

,,
1 C
3 A

4 ,

S ,

,
3 A

, ,
A
C

.,, ,
S ,
1 C

, , ,
A

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.

.
, , ,
A

,, ,
1 C

Ordem de clcsslficcceo e a
IOYO Ill... rnMO ~

ad i~ci(j

as text

S ,

3 A

Dentro do sistema aperocio nol, cedo carodere que vod ve na tela e rep resentodo por um vclor numer ic . Duronfe umc clossificoc;oo, 0 valor ncmertcc c 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.

380

I APlEN DA EM 21 DIAl AUP"

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

9 tt-t ' N ubbl e ' .


10

append i t.

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'
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.

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.

NV O O... illMO "

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 execvo 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.

o c6digo na Listagem 11.12 produz est a safda:


sy- l angu- E
H19g1e

Hoffman Hubbl e HOl lilian


sy-l angu- 0 H 19!lle Hoffma n HOll m an 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. P ede ser especificado dep ois de urn nome de componente individual . Nesse case, se aplica somente aquele componente. A Listagem 11.12 fomeee urn exemplo.

IHiJ.ISE~

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. 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. 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.

NTlADI~

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.

.. .. ..- .... .- . . ...... ...... ----- - - - - - -

-.. -

382

" PUND.. EM21 OIAS A P/4 BA

~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 utili or a pesquiso bin6rio com b ito, consuhe a docomentccec de z pclc vrc-chove do ABAP/4 sabre 0 instru<;oo conv ert ; "to sortabl e

IFa, a

L--.:-

Utilize a odio bi nary search no instru o read table. Elo c vmentcrc muito 0 desempenho do pesquiso. Utilize a adit;aa index no instrut;oo read tab le , sempre que passive!. Eo maneira mois ropldc de localizer uma enicc linha .

---J_
DlA l1:T ABEUS lNID HAS
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.

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-

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

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
de trabalho impHcita da tabela interna.

.tribui.6es indesejadas da linha localizadapara a :irea de trabalho.


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).

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.
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

P&R

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 m y_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

385

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.

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

!N1IlDI~

Listagem 11.14 Deflnir multip les tc belcs internes com t ypes simplificerO
o~ definir; es o

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".

,
6 7
B

1 report ztxl113.

Teste
1. 0 qu e confi gura urn limite para a qu antidade maxima de mem6ria i est en dida que pede ser alocada por uma tabela - ntem a? 2. P or que nao utilizar occurs 0 se voce pretende arm azenar menos que 8 KB em uma tabela intema?

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 .

f2.
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.

I.
11 D ne mats 3 tabelas internas 1denti cu ut ll i zando TYPES efi 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. estrutura do ODI C 10 with oI!eader 11ne, 10 with header I t ne, 10 wit h header Hne.

3. Voce pode utili zar a instrucao rea d tab' e para Ier as tabelas de ban co de dados ?

Exerdcio 1
Exiba e explique as convers6e s que oco rrem Listagem 11.15).
~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 .
S

,.
i l r

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

ANALlS~ .... Dos dais primeiros metcdos, uma qcestec de cpinieo direr qual clc rc: oenhum parece termuitas va nta gens sobre a outre. Acreditc qve

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 ; hover6 urn texto curto para codo eleme nto de dodos e um pora a pr6pria /4 estruiuro. Essestextos pode m temb em ser programa dos . Alem do mais, 0 estrvtura estorO

e0
0

ma is

terceirc

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 itf3 '" 'XX '.

~ - 386'" ..... .....- ~....- ..... ".-............ -.-.- ~ -.., ~ -- . PRE HO... EM 21 DIAS ABA P!4

-- -

-- -

-- -

r
12

16
11 18 19

ft-t2

t t -f4 sy- t ndex.

20 21 22
23

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.

2. enddo . 25 26 loop at it. 21 write: I it-fl. it-f2 , u-n, f t - f 4.

zs

endloop .

-,

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 '" ., .~ - ~
.....0

I I I I II~ .... I I " . . . . . I -. . . . . . _._~ I . . . . li


OIA12 "BElli INTERNA SAVAHIA" ' , PARTE 1

"
I
I '

..5t

388 I

APRE M E 21 DIAS ABAP/4 OA M

389

Testa ndo e modificc ndo inte rno

conteudo da tabela
0

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:
if i t[ ) ts tntttel .

Utilize as seguint es estruturas para tester e modificar internes:

conteudo das tabelas

I
\

0 ope rador de corpo de tabela


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

numero de linhas em uma to bel a

modi fy fre e del ete clear re fr esh append sor t ed by

Para de terminer

0 numero de linhas em uma tabela interna, utilize a varidvel sy-tfi 11.Ela e configurada pela ias truclo descri be t abl e.

Sintaxe da instrucco descri be table


en A seguir, veja a sintaxe da instrucao descri be table.

Z
m

descri be table it [lines i] [occurs j].

S o n de:

ca ll ect

it

e 0 nome de urna tabela int erna .

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.

t e j saO variaveis numericas.


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 Velor ctuel de d6usule occurs

O bte nd a informo<;6es sabre umo tobelo interno


Voce p ede obter as seguintes informacoes comumen te necessarias sobre uma tabel a intema: Se a tabela interna conrern dados Quantas linhas ela ccntem

sy-tcccu

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

........ ~ . . - . . -

11'

11'

11'

I
O~ lU ABE IHmH>S AY'"YlO 5,PAm1 I lAS A

..1."' __
391

Ho somente umo insffincio em que sy-toccu ire dife rir do clousulc occurs no definic; o de tobelc . Quando sy-tl eng * sy-tcccu > 8192 c 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 .

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.

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.

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,

~NTRADA'" Lista ge m 12 . 1 A instrucdc describe table utilize os vcrlovels de sistema ,. pora quontfkor 0 ccnteudc de tabela
1 report ztx1201 . 2 data : begi n of it occurs 3, 3 fl val ue ' X' , 4 end of it, 5 n type 1.
6.

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.

7 1f H [ ] is i nitia l . writ e: I "tt is empty ' . 8 endif. 9

Copiondo dodos de umo tobelo interno para


uma outre
Se duas tabelas internas tiverem a mesma estrutura, ut ilize a seguinte insrrucao para duplicar D conteudc de uma tabela interna em Dutra:
m[

10 11 append: tt , it , tt .
12

"seee t hent e a escrever 'append i t' 3 vezes

13 ;f not H [ ] i s i nit ial . 14 write: / ' it i s not empty'. " 15 endif .


16

j tl [ ] .

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 .

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.

o c6dig o na Listag em 12.1 produz esta safda:


SAiDA ~
it i s empty it i 5 not empty number of r ow from s number of row from s l engt h of a row from occurs val ue from sy-tabix:" 5y-tfi 11: sy-tl enq: sy-tcccu .

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.

~IIIIIIIIIII - - - - l
APREND! EM 21 0lA5 ABAPI4

oa12,lABEUS IKTEl<NASAVAN\ADAS, PAm1

393

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.

Sintoxe do

c.n

Z
m

instru~ao

insert 1i nes

A segui r, veja a sintax e cia insrruga o 1nsert 1i nes.


i nse rt lines of ttl [f l'Oll nil [t o nt] into tt2 [index nb].

onde :

Utilizondo

0 instru~cio

append 1i nes

U tilize a instru~o append 1ines quando quiser acrescentar linhas ao final da ta bel a alva .

nf, nt e nb sao cons tantes, litems ou variaveis num ericas .


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.

i tl e i t2 sao as tabe1as in tern as c~m ou sem

l.inhas de cabecalho.

S
m

III

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.

! ,
I

cede:
t t l e i t2 sao as

tabelas internas com au sem linhas de cabecalho.

nf e nt sao con stantes,literais au variaveis numeric as.

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 .

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 .

nt

ea indice da ultima linha a ser cop iado de ttl. Se a adilJao to nao . for especificada, a c6pia continuara ate a ulti~a linha de ttl.

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.

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,

S
6

fl.

Utilize r append l t nes sera de tres 0 quotro veees mois rOp ido do que utili or append poro odicio nor os linhos umo de codo vez. z

end of lU HZ 1i ke i tl occurs 10 with header 11ne, alph a(lO) val ue ' A"BCOEFGHIJ ' .

Utilizondo

0 instru~cio

insert 1i nes

8 do 10 t tee s varyi ng 1tl-fl from al pha+Q next al pha+l. append t t f , enddc. to

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.

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.

'"

~~~~~~~~~~~~ I I I I

I
DlllUABlliS INlERNASAV (AIlAS.IARTn All

~ I !.

394

A/ RENDA EM 11 D'AS AU/ /.

395

18 ski p. 19 loop at ttz ,


20 wrtt~ itl-fl . 21 endloop. 22 23 l oop at 1t2. 24. if t t Z- fl >. ' E'.

Compo rg ndo

conteudo d e duos tobelos internos


0

Voce pode u tilizer 0 operador de co rpo de tabela para comparar duas tabelas intemas, co mo pode sec visto a seguin
i f itI[] i t 2[

comeadc de

1.

25
26

insert l ines of i tt to 1 into tt2.


end1f.

27

endloop.

28
29 skip.

30 l oop at tt2. 31 writt!! 1t2-f1.


32 endloop . 33 34 sk i p. 35 i t2 [ ] i tl [ ] .

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.
A instruli o If - Equal t o e 0 moneiro mcls eficlente de comporar 0 o contendc de duos tobe los intemos.

36 loop at ill. 37 w rite rez-n.


38 endloop.

Utiliza ndo a

instru~ao

edi tor- ca l l

c6digo na Lisragem 12.2 pr oduz esta saida:

8 C0 [

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.

BH IJCO E
B A H A l A J CD A E

Sintoxe do instruljo o ed i tor- call

!!!

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.

A seguir, veja a sin taxe da ins tru~ao editor-call. editor-call for it [title el [display mode]
onde:

tZ. i t 2 tern agora

it ~ 0 nome de urna tabela in tem a.

eum literal, constante ou variavel.

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

Os seguintes pontes se aplicam :


it pode apenas conter com ponen tes do ripe c.

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,

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

XXIIIIIIIII I
396
APREH OA EM ' 1 D ABAP/' IAl

II

... ----- -- D. 1UABElAS INTElHAS AAH\ADAS. PARTE 1 V

397

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

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

Significado
Uma grovoo foi executcdc . 0 ccntecdo do tcbelo interne pode ou nOD fer side olterodo.

o
4

Address Phone
F~efo l"lll

o usu6rio noo executcu urne aC;Cia solvor. 0


interno est6 inolterodo.

conteudc do tobelo

Text

conteddc e entao escrito e uma men sagem-tambem se uma alten!;aO foi execurada.

e exibida no editor.

. 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

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

de modo que a usuario possa modificar as dados. 0

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.

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

z
3

I 6

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

conteedo da tabela interna no edi tor com

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.

'j I
1 .1

7 8 9 10 11
12

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 w ith ' -'.
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 ' D was changed'. ata else . \IIr1te : I 'Data \liAS not changMl '. endif. write: I sy- ul1ne(72).

.
I' I

Ii

13 14 15 16 17 18 19 20 21 22

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 .

..-. . . . . . . . .&.&..&...-..-....

I I I I I I -I . . . . . . .

.. --- --- 16 endloop.


:>.

.~ lHABELlS IIITERH.lS AAN(AO.\S, PARTE I V

APR EN DA EM21 DIA S A P/4 U

399

Sintoxe do instrU!;oo insert

S
m

U't A seguir, veja a sintaxe da instrucic insert.


insert [11'0 1nt o] i t [i ndex II]

cede: wa eum a area de t rabalhc com a mesma estrutura de uma linha cia tabela int ema i t.

n eurn constante. Iiteral au varisvel numerics.

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.

17 18 loop

4.

Os seguintes pontos 5C aplicam:


Se Il'Q for especificado, 0 comeddc de va sera inseridc em it . 'fila devers tee a mesma estrutura que it .

codigo na Listagem 12.4 produz esta safda:


1

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

993

,
5
1

especificado.

Se index for especificado, a nova linha sera inserida antes da linha n. A


linhan se tomara enta o a linha n+ 1.

A ins tru~o i nser t p ede ser utilizada dectrc au fora de loop at it. 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.
A Listag em 1 2.~ con rem urn prognma de exemplo que utiliza a instrucio i nsert.

"88,
3

885

illUSE ~

As linhas de 6 a 9 acrescentam cinco linhas contendo os numeros de laSemi t.

EH1IJDA~

Llstagem 12.4 Utilize a instruc;ao insert perc inserir uma (mica linha em uma tabela intema

Alinha 11 atribui ao componente de liaha de cabecalho itfl urn valor


~-~.

,
5

1 r eport zt x1204. 2 data: begin of i t occurs 5, fl l1ke sy-tneex, 3 end of it .

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.
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

,
8

6 do 5 t i mes . It - fl sy-tnde x, 7
append it.

eneeo.

I.
11 it f1 -99. 12 i nsert it ; ndex 3. 13 14 l oop at 1t. 15 wrt te / it-fI.

-.
400
UREH DA EM 21 DIA SABA P/4

. -.~.

_ -

. ~. ~

inseridos e utilize insert lines porsuo Vel . As linhos no tobelo a lv senSe e nova mente indexodos apenos umo unico vez, depois que esse instruc;ao for execvtedo.

Os seguintes pontas se aplicam : Se from va for esp ecific ada, a linha sed, scbrescrita com
00 . 0

conteudo de

Ao inserir urna n ova linha em it dentro de loo p at it. a inser~ao eao

Se from vo me forespecificada, a linha sera sobrescritacom 0 conteedo

d. linha de cabecalho.
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 coo 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.

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.

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

EHTRAOA~

Listagem 12.5 Utilize m fy pa ra sob rescrever 0 conte udo existente de odi


uma ou mais lin has de uma tabela inte rne

tn

A seguir, veja a sintaxe da instruci o modi fy.


modify i t [f rom 11'!1] [ind ex n] [transporting cl c2 [where exp] ]

1 report ztx120 S.
Z data: begi n of it occurs 5, fl 1i ke sy-tndex, 3 f2 , 4 end of it. 5

...

~ m

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.

alpha (5) val ue ' -'BeD . E' 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

1Z 13 tt-f2 'l ' . 14 modify i t i ndex 4.

15

.........................................L..lL..lL..O.......................a...L.&.
402

I .I-

~I

I I

I 11 11 ...........

.. .. ..

. -.

APREN oA E 21 nus ABA P/4 M

O~ 12. lABIUS IH1WIAS AVAHIAOAS.PAmI

403

16 l oop at 1t.
17

write: I n - n, it-f2.
endl oop.

18
19

20 l oop at it. 21 ft -fl 1t-fl .. 2. 22 llIOdify it . Z3 endloop.

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. A linha 30 mo difica 0 coneea do do cornp onente da linha de cabecalho I. . f2, at ribuindo a ele urn.valo r de 'X 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.

2'
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 w here fl <> 10. 32


33 skip . 34 l oop at It . 3S write: I it-fl . it -f 2.
36 endloop .

Excluindo

conteudo do tobelo interno

Para excluir 0 conteddc de uma tab ela in tem a, voce pcderd ut ilizar as seguintes insrrugoes:
free

refre sh

o c6digo na Listagem 12.5 produz esta saida:


S ~ llol
1 A

clear
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

Sintoxe do
f ree it.

instru~ao

free

A seguir, vejs a sintaxe da instruc;ao free.

2 X
, X

6 X 10 Z

onde:
tt

10 ,

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.

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.

A linha 14 sobrescrevea linha 4 corn 0 comeodc da linha de cabecalho,


alterandc f 1 para 5 e f2 para 2.

~ . I.-I

I I"'I I I -I I -I I I I I -.
'PIEND' 1M 21 DIAS"",.

. -.

.
Sintoxe do
r ef resh

- - -- .. - -- - DIA lH'BELAS INIDNAS'V" DAS. PARTE 1 (A

404

40S

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

fato de

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

que quando a se ide for exibido para

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 be a bettie Bock. lsso, finalme nte, terminc se u progro mo e H rc tcd c 0 ccn tevdc do tcbelc infe rno. Voce poder6 ltbe rcr a s tobelos Internes

deixe a memoria alocada,


instru~6 0

refresh

antedpodomente colocondo as instruc;6es free

grama. contecdo do tobelc interne ser6 liberodo ante s de 0 usuc ric ver a listc e nco depois d isso .

00

final de seu pro-

A seguir, veja a sintaxe da inStru~o refres h.


tt ,
onde:

Utilize free quando terminar de urilizar urn. tabela interna. A Listagem 12.6 mos tra como utilizar a instro~ao f ree.

it

euma tabela intema co m ou sem urna linha de cabecalho.

ENruOA~

Listag em 12.6 Utilize a instru.;co free pore excluir tcd cs as linhos de


umc tobela interne e hbercr a mem6rio ossociado

05 seguintes pontos se aplicam: T odas as linhas sao excluidas. T oda a m em o ria utilizada pelc corp o cia tab ela interna permanece alocada. 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 de mem6ria. A Listagem 12.7 mos tra co mo utilizar a insrrucao re f resh .

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 .

I' 15 fr ee 1t . 16 1f H[ ] is initial. 17 write: / ' no rows exist in it after free '. 18 end1f .

ENllAOA~

Listagem 12.7 Util ize a instrur;o o refresh perc excluir tod cs as linhc s de um a tobe lc interne

o co digc na Lisragem 12.6 produz esta saIda:


IAIOA ~
1 2 3

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.

no rows exist in 1t after f ree

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

ANALISE ~ A linho 15 exclui tod as as linhas do tob elo lntem c e hbere 0 mem 6rio ossociodo .

II"

I -.""" .....-......--. __ ... - ... __ ...


APiE .DA EM21 D AIAPH IAS
13

-_ ...
D~ IU A8El.\S INTEiHASAVIJl(ADAl, PAmI I

406

407

14
15

16
17

w rite: I " . l oop at it. write it-fl. endJoop.

Sintaxe da interna

i n stru ~ao

cl ear quando utilizada com uma tabela

ref resh it.


enddo.

III A seguir, veja a sintaxe da instru~ao clear quando ut ilizada co m u ma tabela intema.

18

19 20 free it .

o c6digo na Listagem 12.7 pr oduz esta saida:


SAloA ~
1 2 24 3 6 3 6 ,

S
m

cl ear i t : cl ear t t[ ]

on de:
it

e 0 no me de um a tabela intern a.

Os segu intes pontos se aplicam :

ANilJS!~ .

A linh.a 7 ccmeca urn loop que e executado ues vezes. Ela con tern urn
loop interne aninhado.

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.

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.

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

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
0

Instru4jGo cle ar i t cl ear it(

con teud o da tabela in terna.

-Se it liver uma linha de cabe~alho


. limpor6 a linhe de cc becclhc

Se it nao IlYer uma

IInha de

cab~l h o

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
ext~rno se repete e imediatamente preenche de novo a tabela interna.

Exduir6 todos as lin has


Excluir6 toda s as tinhas

Excluir6 todes as linhos

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.

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
1 report ztxl208.

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) .
3 4

2 data: begi n of it occur s 3,


fl , end of i t .

,.

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

Ina

l i nha de cabet;aloo . 1ss i .. sendo l1mpar.!o a li nha

"

";.J

408

Dl 12,T BEUS IN A A ltRNASAVAN~DAS, PART! 1 AP REN DA EM 21 DIASABAP/4


12 write : I I I . 13 l oop at i t. 14 w rite ie-n . 15 endloop. 16

409

onde: n, fn e tn sao constantes, varidveis au lite rais n umericc s.


it .

exp e uma expressac 16gica envolvenclo a s componente s de


"serethente a: refres h it.

17 clear tel ] . 18 loop at i t .


19

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

,,
4
I I

sy~s~bn:.

IHlJ.ISE ~

linha 6 coloca X n a linha de cabecalhc de i t.

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 7 acres centa du as linhas em 1tj -ambas tern I XI em f l .

A linha 9 limpa a linha de csbecalb c de it.

Se from Dao for especificado com t o, from 1 sera assumido. Se t o


DaO

A linha 10 escreve espacos em branco, mostrando que a linha de cabecalho de i t esd . limpa.
As linhas de 13 a 15 produz em a safda, a fun de mostrar que a tabela inrerna ainda contem duas linh as. 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

for especificado com from, a ultima 1inha na tabela sera

assumida.

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
pcdera ser where fl 'A' and f 2
c
I

B' .

pennanece inalterado.
A s linhas de 18 a 20 nao produzem uma saida porque a tabela interna

A Ilstagern 12.9 mcstra urn programa de exemplo que exclui as dados de uma tabela interne ut ilizando a inst ru (jao delete.

esd. vazia.
A linha 21 ma st ra 0 c6 digo de ret o rn o depois do loop. Isso novamente confirma que n enhuma linha existe na tabela int ern a.
1 repor t ztx1209. 2 data: begin of it occurs 12, fl . 3 end of it , 4 alp ha(12) val ue ' ABCDEFG K . HIJ L' 5

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]

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.

(bi [f"",

'J

[to j ]

(c) [where exp]

14 15 del et e it tn dex 5.

"'I~'- I
:.

ITT

.~ .T-TT~I

~ I . . . . . .

T . ~ ... . . .

'!I!

'!I! '!I! ~ ~ ~ ~ ~

'!If - ....

410

"m DA EM 21 DI A5 ABAP/,
16 skip . 17 loop at it. 18 write : I sy-t abix . it -fl .
19

D~lUABElAS IMTERNAS AVAH(ADAS. PAm l r


11 12 L

411

enetccp.

20
21 delete i t frtm 6 to B. 22 s ki p. 23 loop at it .
Z4 25
writl!! : I sy-tabix . it-flo endloop .

1 A 2 B 3 C

D 5 F

2'
27 delete i t where fl between ' B' and ' 0 ' .

6 G 7 H 8 I 9 J

ID

28 s kip. 29 lo op at it . 30 write: / sy- ta b1x. i t - fl .


31 end loop .

11 L

32
33 loop at it where fl between 'E' and 'J '. 34 delete it. 35 endloop .

,
7
8
I

I A 2 B 3 C D

5 F 6 J

,
L

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.

,,
5 L

A 2 F 3 J

-.

1 A 2 3 L

,
0

sy-subre
1 A 2 L

sy-tab 1x

51 endloop. 52 53 tr-ee it .

INlllS! ~

As linhas de 7 a 9 preenchem it com 12 linhas contendo as valores de 'A' a I L' .

As linhas de 11 a 13 escrevem

conteedo da tabela interne.

o c6digo na Listagem 12.9 pro duz est a sarda:


1 A
2 B 3 C , D

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.

A linha 21 exclui cia sexta linha ate a oitava linha, removendo G, He I

da tabela. A nona linha se coma a sexta e assim po r diante.


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
I I

5 E
, F

7 G
8 H s I

excluidas.

10 J

~ --

---- -.- -412


!

. ... .... I
D~ lUABEUS IIffiRNAS A YAll(ADAS, PAmI
I

"'[NDA EM 21 DIAl ABAP/4

413

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

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.

sejam exclufdas.
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.
I

Sintoxe do instrur,;oo append sorted by


~

A seguir, veja a sintaxe da in srru cio append sort ed by.


append [11'0 to) it sorte d by c.

A linha 45

e executada ja que sy-subre e zero.

Ela exclui a linha 2,

S
m

onde:
t teo nome de uma tabel a interna.

removendo I K' da t abela interna.

Semelhante is insercc es, as exclusoes dent ro de loop at it Ilia afetarao 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.

w ~ uma area de trabalho com a mesma estrutu ra de uma Iinha. cia tabela a
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.

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.

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.

-414

APR!.'A EM II DIAl ABAP/l

DlllUABB..\I INTElHAl A AlI(AO PmEl V Al,

415

A Listagem 12.10 mostra urn prognma de exemplo que em. uma lista dos tres melhores representantes de veada.

As Iinhas de 2 a 5 definem uma tabeh. intema com um valor occurs de

mRlllA~
3

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
b~ 1n

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).
Figu rg 12 1
append it sorted by soles

1 report ztxl2 10.

2 data :

5 6

of it occurs 3, sales type p decimals 2. name(lO} end of it . 100.

7 8 9 10 11 12 13

it-sal es

Quando nenhumo I;nho exis1e no lobe/a


Intemo, enll50 0

linho de ecbecclhc
sales nome

i t-name

' Jack' .

append it so rted by sales .

primeil'D /lnl1o Ii simple.smf!t11e

ocnsantodo.
it-sales 50.

linh 1 o

i t -name

' Jfll'.
\

append it sorted by sales .

15 tt-setes 150. 16 1t-nillll!: 'Jane'. 17 append it s orted by sales . 18

"

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).
F igura 12 2 A segundolinha e

19 20 21 22 23 24 25

i t - sal es 75. 1t -namt 'G eorge' . append it sorted by sales.


it-sales . ZOO .

inserido no s~iifncjo comto de do u mca o, de modo que elo venne depois

i t-name

' Gina' ,

do primei o linno. r

append it sor ted by sal es.

Iinho 1
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.

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 linha de ccbecelhe

Fig ura 12 3 Dessa vw. 0


seqiifncio de

o c6digo na Listagem 12.10 produz esta saida:


SAiDA~
200.00 G ina 150. 00 Jane 100.00 J ack

dossiliClJ'o dita que

tt

150
corpo

Jcne

o novcr linho dfNe ser inserido ontes do


primeiro.

linho 1

150 50

Jone Jim

2
3

100 - Jode

ma.--_416
"RENDA EM21 DIAS . " P/4

_ --_-..- -----............ Fi gu r a
12 4

_ -- -

- -

D~ ILTABruSIII1UIlASAV"~Al, PARTE 1

417

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).
append it sorted by sales

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.
append sorted by sera mcls ehctente quand o voce estiver ccrescentondo uma linhc per ....ez em umo tabe lo intemo. S voce j6 fiver os e 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 operao de array e, em segu ida, a d ossificot;oa. (Para abter jnformoes sobre as cperccoes de arrey, ca nsulte a Dio 13, "Icbelcs intemos ev encodes, Porte 2 .)

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.

it

I I
75

linn de cebec;olho o
George

,
\

nOoocrescentado
\ porql.Je~63 I e it ja contem

Jinho 1 150

Preenchendo uma ta bela interna utilizando


collect
Utilizando a instru~o co11 ect, sera pcssfvel criar totais den tro de uma tabela interns amedida que voce a preenche.

Jane

2 100
3 50

Jaa
Jjm

I 3 linhas

--<F la" rn 1 2

..,

append it sorted bysoles

Dena vez, 0

nOva

Sintoxe da instru~aQ coll ect en A seguir, veja a sintaxe da instnlc;ao co11 ect.

I;nho dtNev;r prim eiro. As };nhos


exis1enfes 560

disposlas o~ e a ultimo Iinha Ii


desccrlodo.

linna t 200

~ m
Gino

col lect [wa '1nt o] it.

onde:
i t ~ uma tabel .. intema.

2 150
3 100

Jane

va eurna area de trab~o que tern a mesma estrutura de it.

Joclt

1..5 t: :!iri J
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).
Fl g u r n 12 6

Os seguintes pontos se aplicam:


Se 11'0 ; nto for especificado, a linha a ser coletada sed obtida da area
de trabaIho expljcica we. Nease case, a Iinha de csbecalhc da tabela . interna sed ignorada, se existir. 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. 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.

ap pend it sorted bysales. linoo de cab8l;0lho

&so novo finho seguim todos as linhos eJristente5 que tern a


me.smovalor. IS50 0

il~
co<po

...

,
\

Iomorioa linho 4, en160e/o noo e Inserido.

Ii ho 1 200 n

Gino Jane Ja, k


I

2 150 3 100

,
-<-

I t'IIio ocrescenlodo

,I

sp-5 - 5
418 I APR'NDA ' M11
DIAS ABAP/4

iI

D ~ IUAB' lAS IffTER A AJlIAD NIAV AS,PARTE I

419

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

41 tt-neee .2 eel teet it .

so

'Jack'.

" loop at i t .
. 45 46

w ite: I it-date, r endloop.

1t ~tot_s a l e s ,

tr-neee, tt- num_sales.

codigo n a Listag em 12.11 produ z est. saida:


800. 00 Jack 700.00 J im 600 . 00 .Jene 700.00 J ack
3 2 1 1

par te da chave padrlo -nao ! parte da cheve pa dr~ o pilrt@ da ehave pad r~ o -nao ! parte dl chave padra o

19980101 19980101 19980101 19980102

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
nOo-numericos, @nt6o n@ss!& diogroma, elo

collect it.
~n ho de eebe celhe

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 '.

comi!SpOlldea c:ombinoo de date


(prim@lrc compoJ @ name (ten: iro compo). e

' 19980101' . 600. 'Ja ne' .

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).

'19980102' . .7110.

'.

._~==----=-=-===-==-420 [ APRENDA EM 21
F igurn 12 8

- - i'
I i
:

~=-.---~------

- - - ~ ~- - I

DIAS ARAP/.

D lHABELlSIKTlRNAS AAH\ADAS, PARTE 1 IA Y

421

collect it.

A linha 32 e correspon dida na linha 2 e adiciona 1500 I a t ot _sa1es e 1

Na'lomente, 0 chave podrtion oo e focolizoc/o no tabelo,


entOo em /jnho tcmbem e

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).

ocrescentcc/o.

W'M~ 'J~_ Wg\i;~


[!8~~I~
.'

I) ;

F igura

12

11

coiled it.

200'

~ :<;"'~~ ;,::)~. "

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-

Dessc vet, a chove pac/reoCOfTesponde com a segundo linho do tobe/o. Os campos numencos no area de trobolho s60 oc/idonadosnos .
compos'
corresponc/entes do segundo lin no.

linno de cabeljOlho

Flgu rn 12 1 2

coiled it.

becalhc permaneceinalterado (ve]a Figura 12.9).


F ig urn 12 0

coiled it.
linho de cobei71lho

Dessc vez, 0 chcve pac/r6o corresponde com 0 primeiro Iinho c/ lobe/a. Os compos o numeri os no 6reo de c trobo/ho s60 odicionodos nos

A cnave podroo n60 CCHTesponde com nenhumo "nho cle S5CI ent60 urno novo linna e ocrescentado.

li ha de c:abel;olho n

vez.

~ S ~:.J

l!SIl

+
l?!.?J"~ ' 2

~ ~~ ~ ~~mm
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).
F lg urn 12
,~

compos
correspondenles do
~rimejro

\J9,9JtljJ }oo'
Iinh a.

~ ; 2!lO~ ~ '&t

.y

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

collect it.

aos campos numericcs da link localizada (veja a FigUJ:' 12.10 ).


Fl g u r n 12 10

/J.5 chaves pac/roo


nevemenre nee

eellect it.

Novomente, a chcve podroo corresponc/ e com a primeirolinho do lobe/a. Os compos numericC5 no area de troba/ho sec
odicionodos nos

corresponc/emcom nennumolinno, enroo oulm Iinho Ii

ccescencee.

+
ccrpc

,.

=i

compos
correspondentes do

~@t<@

, 8 00 ~

primeiro Jinho.

e@

~ ~

'200"

~ ~

~~'i~~Ff .'

,__4~

~\~;::~ 't~{

~ 'i<i!t~

~>~,'~
~ ,i,~.1~

E c c ... c .. . _
422 I
APif HDAEM 21 DIAl ABA1/4

"i'

" "
D~ IHABEUS IHIDHAS AVAII(ADAS, PARTE 1 I

- ....
423
U tilize append sorted by para criar Usus dos 10 melhores em vez de acrescentar linha par linha e, em seguida, classificar. 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.

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

I I
j

noo deve combiner coll ect com append au com quolquer outre
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).

IFa~a

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.

- =- - ---- -'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.

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

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. m odify 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 w here. 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

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? 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

424

APREN O A1M21 O AUPI4 IAS

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


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

e ao exercfcios no Apendice B, "Respostas as pergunus e aos exercfcics".

13
Tabelas internas avan~adas , Parte 2
Q bjetivos do capitulo
Depais de coucluir este capitu lo, voce sera capaz de: P reencher uma t ahela intern a a partir de uma tabela de banco de dados utilizando as estru turas mais eficientes Executar 0 processamentc de inte rruPIia.o de controle ern tabelas intemas utilizando at e on change of

Teste
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

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 m fy transporti ng Where). odi

Preen che ndo uma tabela interna a parti r de uma tabela de banco de dodos
Freqiientemente no ABAP /4 . os dados que voce coloca em um~ tabela intema pr oveem de uma au mais tabelas de banco de dad os. Esta secao apresenta as melhores maneiras de se fazer isso, As rnaneiras de preenchimen to uma tabela intema a partir de urn banco de clados se dividem em duas categorias:

! I
'l

Selecionar mdltiplas liahas diretamence para


inte rna

corpo de uma tabela

.1IlI. . . . . .lIIII . . . . . .lIIII . . . . .lIIII . . . . . . ._ ...._ ..._ .... . . .

. ._ ......

. ._ ..... ~_ --..___ __ _ ~

--

426

A PREN OA EM 21 OI A ABAP/4 S

O~ IH A ELlS umR HAS AVAH\AIlA~ PARTE ' B

427

Selecicnar uma tini ca linha pan u rna area de trabalho e, em segui da,

OORADA'" Ustagem 13.1 Este progromo l~ as [inhos de uma te bela de banco de


,. dodos diretarnente pa ra umo tabe lo inferno

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

,
I

como oper:a!fio de array. Nenhuma area de trabalho sera utilizada, nem mesmo
sera necessaria.

NYO..... Uma opertJ!;oo de arroy correspo nde a qualquer instruc;60 que executa ume O 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.
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 .

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 .

o c6digo na ListagemId.I produz est> safda:


IArDA ~
VI 1000
1010 1020 1030 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. W ner Schnl ttsel Inc . ei Saur kroute n M herboards Inc. ot Sil icon Sandwich L d. t Consune Inc. Moni to r s and Marl!! L . td Quanti ty First Ltd. Over Pri ced G oods Inc . Fl uffy Bunnies l t d. HoD 1ike a Cow Inc . Wolfman Sport A ccessories Inc . Tile Breakfast Club Inc . Over Pri ced G oods Inc . Flu f fy Bunnies l t d. Moo like a C I nc. ow W fm Sport Acces sories Inc . ol an

Sintaxe da adic;oo into t able da instruceo se ject

~
III

A seguir, veja a sintaxe da adiliaO 1nt o tabl e da instruljao sel ect.


fa) select (b) s~ll!!c't 11

/2 .
from dbtab 1nto [camp eor re spcndent es dl!!] t abI e t t . os

on de:
dbtab ~ a nome de uma tabela de banco de dados. f1 e fZ sao campo~ dentro de dbt ab.

1050 1060 1070 VIO


V 6

va
V1l

V12
1040

it

e0 no me de uma t abe la interna.

Os seguinres pontes se aplicam:


it pede tee uma linha de cabecalho.

IOSO 1010 2000 VI

V,
V3
V4

O ut ras adilj6es, como where e order by, podem vir depois de ft . 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.

VS
V1 V2 V3
V4

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

VS

utiliza sele ct i nt o tab le.

428

APlEMOA E M21 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

Figu r a

13 1

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.

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

tables ztxl302. . dati it l ik e ztx1302 occurs s .

~.

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

selecionod04 em m e,", do tobelo de banco de dodos ztx1302. f /es se aiustarn exatcmente em coda Iinho de
{6 que a estruluro de i

~WJirt.~? ..zr-LT2~~-"':~ ~'-"'''' ~~ ~~?1~{;i~ ~ '~~.,,,,~: .<. :~


COIpO

tt.

coda hnhc de :tx1302

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.

cofTesponde com a estrvturo do tabala de banco da dodos.

torno-se umo linhc no corpo de it

, iii
d. i t

12

1 3

12

f3

. .-

Fig ura

13

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.

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 .

~~2~~f2~', '1iitjn~(t~'"t-i'b"1')"!~U~-~'"' "-~ " _ 1 1


.~~:r.-~~.;'~ ::..:;. !-'r.-~~.,.r.--=~~~ ~~

tab les ztxl302 . dati it l1te ztxl302 occurs 5.

corpo de i t

fl

f2

f3

2 compos de code linnade lotxl302 tcmem-se uma linha no cerpo de 1t

i (~,s ~~~ em ~.~. ~ ~~J

,:>..:oIo~ i ni~~j~ pcIar6o-_-; -

'"

_L.._ _ _
430
FIgura ]3 4

_~_

___

__

__

-.J<_ ..

...-..

~....-..

.-.
431

A/ REN DA EM 21 DIAl ABAP/4

D~ lU Ai lAS lllTERNASlYAH(AIlAS, PAm2 E

Novomente. cs dais primeiros campos sao sefecionodos do Icbelo de banco de dodos ztx1302 mes,. eessc vez, em
uma ordem diferente

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
1 2 3 4 5 report ztx1302. tables ztxlfal. data i ncl ude structure datil.:

doqvelo em que
oporecem no 1a~1o

intema. tssc fonS


com que as dodos flquem donificodos

6 I

b!gin of i t occurs 2. ztxlfal. fnvoice_amt type p, end of ft .

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.

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 .. 'D E'. 15 loop at ft . 16 "rite: I ft-mandt , tt-I tfnr, it-landI, ft -rtg1o. 17 endloop. 18 free ft .

o ccdigo n a Lista gem 13.2 produz est. saIda:


VII VI'
V8

Tabela 13.1 R egros para a utiliza ;60 de select com i nto t able
Instruljao

DE_ .. 7 9
OE 14

o o
o

Quais campos

Restrlsoes
A tcb elc intem o deve conter
pelo menos o mesma

DE

03

sao selecionados?
Sel ect *
Tcdos csccmpcs no tobela de

banco de dodos

Vll DE V12 DE VB D E

07 . 14 03

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.

INluSE ~

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_am ! configurada como zero . t 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.

Sel ect / 1

/ 1 do tobelo de banco de dodos

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.

.'

,.

..

.'

432

APiENDA E M21 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

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.

"esse I Wll cainpo com 10 cerecteres "esse ~ UII campo COllI 3 cerecteres

corresponding f iel ds executa uma otribu ic;oo por campo, em vea


de uma unico atribuio pare 0 linho lntelrc , sendo ossim cd iciona overhead a instru o sel ect. V oce dever6 utiliro1a somente qua ndo necess6rio.

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 .

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 Os campos de envio que nso t~m urn campo de recebimento correspendente sao descartadcs.

o c6digo na Listagem 13.3 produz a saida como


Figura n .s,
Fig"'" 13 5

Esm dump OJrto


ocone quando vod t xectlttl' c ztx1303 de relot6rio use . e eeerece Q vondo voc~ seleoono mois compos do que a quontidode que SI! oiusto no Iobe-Ia interno.

Os camp os de recebimenro que DaO tern um camp o de envio ccrrespendent e permanecem inalterados . 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
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 ' V 2' l 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

IKiuSE ~

A linha 3 define uma tabela interna que tem dais compcaentes. 0


comprimento total de 1t

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

O 13, 'A'EIAS IHlmAS A AH(AOAS, PAm , IA V


24 where l ifnr between 'VIO' and ' VIZ' . 25 s kip. 26 loop at f t t , 27 write : / ttt -j ttm-, itllandl. 28 endloop.
29

43S

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

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 .

tobelas internes

o c6digo na Listagem 13.4- ptoduz esta salda:


SAloA ~
VIa V ll

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 w here l andl ' DE'. "lt nhe vet para a l tnhe de caber;alh o de it 7 append it . 8 endsel ect. 9
11 loop at it. 12 write: I it-l1fnr , i t -landI , ft -regio . 13 endloop.

cc
. OE
DE
~

'0
'5

vl 2
VlO
Vll V12

CC
DE DE

14 refr-esh it.
16 "Ou desta f orma 17 select'" from ztxlfal 18 w e 1andl .. 'DE' her 19 append ztx l f al t o it . 20 endsele ct.

. VI0 Vll V l2

CC DE
DE

"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

ANALISE ~

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.

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:

436

APREHDA E 21 DIH AIAI/4 M

OIA lUABEUS IH TERHASAVAHIADAS. PARTE 2

437

SAioA ~

Vll

Yl2 V8
Vll

D D7 E DE 14 D D3 E
DE D7 DE DE D3

2D
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 d. it1and l". _i
I

Yl2 V8
Vll

"

Yl2 V8

D D7 E DE D D3 E

"

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.

de cabecalho a i t .

ztxl f alvao paraalinha de cabecalhc de it. A linha 8 acrescenta a linha

o c6digo na Listagem 13.6 produz esta saida:


V11 VI Z V 8

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).

D D E
D DE D DE

A linha 29 coloca cada Iinha na areade trabalho ztxlfal . A linha 31

Yl1
Yl2

move ztx l fal paraalinhade cabecalho de i t antes de acrescentar. Esse 0 metoda men os eficiente.

V8

D DE D D E o DE

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
13.6 mastra como.

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 .

ET A Listage.m 13.6 Como 0 adi<;co correspond ing fields 'pera a instru.;;ao NRAD .... ~ 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,

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.

4 5 6

l i f nr

row_1d
landl

like ztxlfal-lifnr. like sy-tnd ex,

lik e zblfallandl.

Resurnindo seJ ect tabelas internes e eficim cie


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.
~

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'

om do 1ti

where l andl " 'DE ' , append it. endseleet ,

Tabela 13.2 Varies formos de sele ct o ~ preencher urn o tebelo interno


I nstfUljOo(oes)

Escrita 00(0)
Corpo Corpo

16 loop lit H. 17 write : / tt-l tfnr-, tt-rov 1d. it-landl. 18 endloop . 19 refresh ft .

sel ect select select sel ect

into into i nto i nt o

table i t corresponding f ie lds of table it


it

corresponding f ields of it

Unho de ccbeccihc Unha de ccbecelbc

438

IIREN D EM21 Dil l 1. 1// . I

D~ IJ,TIBEL\S Im RHAS IV N I (AOO, lAm 2

439

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

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 .

edeterminado quando 0 sistema einiciolmente configurado. Se hoover


13, entao somente trfls periodos de fl!chom ento odicio nois existirtio .

Podehover12 au 13 perfodos de lcnccmerrtc em um ana fiscal. lsso

F igura 13 6

campos de cnove prim6rio , -_ _.A-_ _ ,\


A

Re/ofiOo ~ tre os

cnoves primarios.

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 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 conguraC;ao.

lab elos-mestres de comerciolizoo

Processome nto de interrup<;oo de control"'e'---

Depois de preencher uma tabela intema com clados, em geral, voce precisari escrcver os dados. Freql1entemente, essa saCda ira conter as informal$oes de resumo (como tows) DO infcio au termino do relat6rio. Alem disso. poderio existirresumos intermediarios (como subtotais) dentr o do corpo do relat6rio. Por exemplo, suponha que voce precise escrever os resultados do GIL cia ztxlfcl para cada fabricante, com subtotais por ano fiscal e urn total geral ao termino do relat6rio.

"'!--~

440

APIEHDA EM21 D ABAP/4 IAS

DIA 1',T ABEUSINmNASAVAN\.lD AS,Pl m l

441

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.

at f i rst / endat at 1ast / endat

at new / endat

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~. 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 ). N so existem adic;6es pan essas instrucoes. Na primeira vez que ocorre r 0 loop, as Iicbas de e6digo entre at f i r-s t e 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
0

at end of / endat
sum

on change of I endon

lERMO "

NOYO lilt...

A primeiro instruo 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 interrvpo de confrole. Seu prop6sito e execute- 0 c6digo
0

entre eles, sempre que uma condil;oo espedfico nos dodos , detedodo, durante
process omento do loop.

Utilizando as instruc;6es at fj rst e at 1ast


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.

loop do prccessamenrc de inicializacio

Escrever as [obis no ini'cio de um relat6rio Escrever cabecalhos

Sinlexe des
III

i nslru~oes

at f i rst e at 1ast

Utilize at last para:

...
m

A seguir, veja a sintaxe das instru;oes at fi r st e at 1ast.


l oop at ft .

Execuiu

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. ETRlDI" Llsta ge m 13.7 Utilizanda at fi rst para escrevercabe<;alhas e at l ast H
,. para sublinhar a ultima linha

at f i rst . endat
at last .
endat. . endloop.

onde:
it

euma rabela interna.

- -- represents qualquer numero de linhas de c6digo (ate mesmo zero).

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 ' V endor' .

O s segcictes pontos se aplicam:


Es5:lS

instrUl,joes s6 podem ser utilizadas dentro de l oop at ; elas nao podem ser utizadas dentr c de sel eet.

8 . 9 10 11 12 13

12 ' Cpny '. 17 ' Ye ' . ar


22 'Bal ul1ne .

c/F' .

encat,
wri t e :

t t - It f nr,

------442
A P.REHDA EM 21 DIA AW l' l DIA 1>. TABElASIJITERHASAVAH\ADA5,PArTE2

443

" 15
16 17 18
19

12 it-bukn. 17 it- gj ahr, 2Z i t - sal dv.

OOWlA~ Listagem 13.8 Co nteudo dos compos do tebelo intemo e ntre at e endat
1 report ztx1308. 2 t ables zu lfc3. 3 data it l i ke ztxlfc3 occurs 1 w th header line . i 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 .

at las t .
write : / 12 17
11

20
21

'

----,
'

. .

22

eneet , 23 endloop. 24 free it.

o c6digo na Listagem 13.7 produz esta safda:


Vendor
1000
1000

Cpny Year
1000 1995 1000 1996 lOCO 199B 4000 1997

Ba l

elF

1000
1040 1070 1090 VI VI VI

V.
IHiu5E ~

V6 V6

2000 2000 1000 3000 3000 4000 2000 4000

1997 1997 1991 1990 1994 1997 1997 1997

0. 00 5,000.00 4.000 .00 0. 00 1.000. 00


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

(linha 11).
As linhas de 13 a 16 escrevem executadas para cada linha.
0

conteadc de uma linha. Elas sao

o c6 digo na Listagem
UiDl ~

13.8 produz esta ,aida:


1, 000.00
0.00

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.

.......-..........

Bef ore ' at f irst ': 1000 1990 A 1000 Insi de ' at fi rs t':

soe.oo
0.00

Utilizando

inesperado : va lores de com ponentes vaz ios

Between ' at first' and 'at last' : 1,000.00 1000 1990 A lDOD Ins1df! ' at last' :

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 .

._..__..... .....

500.00
0.00

0.00 1, 000.00

Aft er ' at last ': 1000 1990 A l DOO

500.00

IHillS~ ~

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.

-~--

--...--.

--

...... -_ . DIA13: TABB.AS I NmN AS AYAN~DAS, PAiTE 2

444

AmMoA EM 11 DlAS ABAPH

445

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. A

Essas instrulioes Ilia devem ser aninbadas uma denrro cia outra (ou seja, at end of IUO deve ser eolocada dentro de at new / endat ).

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
simples.

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.

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.

.oYO lrrrl... TEDO

Urn nfve/de contro /e co rresponde 0 0 cornponente identificodo em umc in~c5o de interrupt;c5o de eontro1 ele regulo 0 interrup;c5o de controle..Po r exemp lo, ei no seg uinte frog mento de c6digo , f2 e urn nivel de eeeecle porq ue opo rece no i n~60

at new.
loop at it . at new f2.
"( deve extsct r alg l,lll cOd1go aqui ) endat. endl oop.

loop at f t .
at n@w c.

endat ,
at end of c.

endat.
endloop.

onde:

tt

eum a tab ela intema. c eurn comp onente de it.


- - - representa qualquer mimero de linhas de c6digo (ate mesmo zero).

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.

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

for alterado.

usasinstrUCjoes po dem aparecer multiplasvezes dentro do me smo loop .


. Par exemplo, voce pode ter duas insuuCjoes at new e tres ins tIUCjOes at end of dentro de um loop e elas pode m aparecer em qu alque r ordem.

1ll.l 13.TABlUS 1N1BHA5 lV"'~ PART! 1

447

,7;< ~lg"rA

J3 I

va/orde II e alteredo. AJ~m elsso i . eta mostro que 12 contem um osterisc:o dentro do inle l11Jpo
de contrele (entre at e endat).

&to fi ure mostra que g o n!velde controle ~ od onodo quando 0

eentecde de it

11

f2

~m ~~ ~~ ~~

Scrdc 1

2
; '~'

3
_ -:..

..

porque it se enccmrc c direito do nivel de ccntrcle ~1 1

f2 contern urn cstertscc,

Figura J 3

a
conteVd de it o

22 write : /itn. 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 .

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

fl

12

o codigc na Listagem 13.9 produz esta safda: .


SAIDI
Sardo: 1 A

eslruturo de it.

@B ~

~~ 0; ~ ~. ~~ :W

2 3
1 A

--

2 B

3 A I B

3 A

18 I 8

E N1lADllli. Lisla gem 13. 9 0 c6digo nos figures 13.7 e 13.8 e reproduzido em um exemplo pr6tico

A B
8

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.

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.

u-rz .

19 sort it by f 2. 20 loop et it. 21 at new f2.

"it agora se perece cocn a Figura 13.8

..
.~

..

~~

,'.
"1'.

;;".:

448

AmM OA E 21 OIA AlA . S P/4

DllIH\IIEUS IIrnWSA 'IJIIADAS,PAI1l7

449

Utilizende at end of
As linhas de c6digo e~[re at
end

A Iinha 12 classifies i t por f l. of e endat sersc executadas: Na linh a 14, at newe acicna da sempre que f1

Se 0 nivel de contro le for alrerado.


Se qualquer campo antes do nfvel de cont role for alteradc .

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 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

\..C ldado U
Utilizando a

Noo utilize as instrur; es de interrup o de controle dentro de umc 6


estrvturo l oop at i t where j
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 .

sort it by fl . 13 l oop 'at it. 14 at new fl.

7 8 g 10 11 12

i t ' lA' . append t t . "Preen che it com dado! it .. 'JA' . append ft . it .. 'lB' . append 1t . it '28' . append it.

,....
endat.

onde: -- - represe~ta qualquer mimero de liohas de c6digo.

15 16
17 18 19 20 21

wri t e:

I ' st art of:' ,

it-flo

endat. wri te : / 4 f t af l. at end of fl .

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

w te : f ' end ri

endet endl oop. 22 free i t.

Localiza codas as linhas que tem os mesmos valores dentro do campo de nfvel de conrrole e toda s as campos aesquerda dele.
Soma cada coluna au merica adireita do nIvei de contrcle. Coloca os totals nos campos correspondences d.a area de crabalho. A Listagem 13.11 ilustra essa iostru~o.

o c6digo n~ Listagem 13.10 produz em sald.:

5J.iDi ~

start of: 1
I 1 end of : 1

EN1UDl~ ~.".:.::~=--nivel de- contrale


3 4 S
6

Usta g e m 13.11 Utilizcndo a instruc;oo sum porc cclculcr as tatais de urn

st ar t of ; 2
I

I!nd
3

of: 2 of: 3

1 report ztx 1311. 2 dati: begi n of it occur s 4 ,

st art of: 3
end

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 .

450

APRENDA EM 21 D1AS ABAP/4


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 M agora se pare ce com a Figura 13.9 it 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 .
Flg u rg 13 9

DlA 13: TABEUS INTERNASAYAHVo0AS PARTE 2 ,

451

Esto figure i/ustrtr


que occrre no

ccntecdcs do ltnhc de cobec;alho

Listogem J3.1 J. Na
primeiro ocorrencia do

a c6digo na Lisragem 13.11 produz est a saida:


sliol ~
total: A 3
1 2
total:B 7

loop, a infelTU(Jf;oo de controle e odonodo e o instrvo 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
20

area de trcbolho.
conteudos do linho
sort i t by flo loop at it. at neW' f L

Fi gura 13 10

3
4

70 30
40

IHlJ.ISE~

A linha 13 classifica i t por fl em o rd em cre scente. 0 cc nterido depois da classificacao aparecera da forma como mostrado na Figu ra 13.9.

Na primeira ocorrencia do loop, a c6digo entre as linhas 15 e 18 e


executado. 0 nfvel de controle contem
0

Esta figure mom 0 que cccrre no segundo vee que a intelTUpo d~ centrale e odonodo e o ins1nlo sum e ex.ewtodo.

de ccbecclhc
ANTES de sum DEPOIS de SUIl

sum .
wri te

endat
endl oop,

valor

IA I .

Antes de a linha 16 ser executada, a s campos cia are a de tra balh o

a
f1 12 13 centecdes de 1t

direita do nfvelde controle irsc conter zeros. A instru/.iao sum localiza


todas as linhas adjacentes que tern urn 'A I em fl. E1a soma as colunas 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, 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

at newnao e acionada.

Utiliza nd o a inst ru<;60 on c hange of

Na terceira iterali2.0 do loop, f1 contern IB I e at new (linha 15)

icterrupcso de controle

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.

III A seguir, veia a sintaxe da instrucf o on change of.

de trabalhc (veja a Figura 13.10).


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.

Z
m

Sintcxe de instru~Cie on change of


on change of v1 [or v2 ] .

[e lse,

---)
endcn.

o nde:

vl, e v2 sao no mes de st ring de cam po ou variavel.

452

APRENDA EM 21 DIAS AWl!

D1A 1 3,TABELAS INTERNAl A A V N\ADlS, PArn2

453

. . . 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.

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.

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. executado. Esse conceito
Figura 13 11
Esse ea primeira a~ncia de um loop com a utilizoo de

e graficamenre ilu str ado nas figuras de 13.11 a 13.16.


Compo ol,lXiIlor globel porc nf2
_ . t. '

Se nenhuma alteracio fo r detect ada e el se for especificada, as instru~6es depois de el se serso execu tadas.
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 .

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.
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. 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
FlgurR 13 '2 Quando on change oj eacionado. 0 compo auxiliar e atvolizado.

No primeiro possogem pelo loop, itf2 diferedes conte(idos de comp05. o ux.iliores, en!l3o on change of 6 aclonado.

Compo avxilior global perc jff2


. q;;;;;Ii-~ 7

11

!2

asteriscos,
Voce pede ucilizar el se entre on change of e endon. Voce pode ueilizd-la com l oop at it where. . .. Voce pede utillzar sumcom on change of. 1550 soma tcdos os campos numericos, exceeo o (s) identi ficad o(s) depois de of. Q uaisquer valores aleerados dentro de on change of permanec erf o

~0

SiH I

~~ ~~

as 'conlll(idos de itf2 soo copiodos perc 0 compo ouxilior, e os inJirulls dentro s60 exec utodos .

Compo ouxilior

alterados depo is de endon. 0 ccnteudo da linha de cabecalho nao sera restaurado ja que pertence a at e endat.

Figura 13 13 Esser e 0 segundo possogem de loop. 0 confeudodo campo

globel poro af2


- ..
!., . ;: :~

.. '

o que he

c per Ires de on change of

auxilior

lt

correspoodido e on

11

!2

change of nco ~
acionode..

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.

~~ ~0 WI! " ~~
.\ , ~ 1

Ne segundo passegem pelc lo?~,. itf2

e es conteudos dos compos au xtho res sao os mesmcs, ent60 on cha nge of . nco e ocionodo.

.J
v

li;';~~

r:

454

AP IENOA EM21 DIAS A BAP!4


Eig u rp 13 14

DlA 13~ TABELl51HTRHAS AYAH~ PAm. 2

Esse e 0 lerceiro
On change of e odonodo.
possogem de loop.

Compo ouxiliar global porn iff2


- -~ ~ ~

EN1iADI~

Usta gem 13.12 Utilizcndo on change of de duos mcneiros diferentes: dentro de loo p at e dentro de sel ect

1 report ztx1312. 2 tables zo.lfal.

No.Ierceiro possogem pelo loop, it-f2


~~~~

3 data : begin of 1t occurs 4, f1 type i 12. 5 f3 type i, 6

dlle re dos cc raecdcs dos compos

7
8 9

14.
end of it . 1t -f2 .. ' A' . it-f3 1t-f2 .. 'A'. it-f3 1tf2 .. 'A'. it.f3 tt-f2 .. 'A' . it-f3 .. 11. .. 22. .. 33. .. 44. itf4 i t -f4 it-f4 it-f4 .. .. .. ..

ouxiliores, enlfio an change, of


, ocionodo .
F i gura 13 1 5

,4qui, 0 cam po olJrilior e atUolizodo.

10 it-fl .. 1. 11 un." 3. 12 1t.fl .. 1. 13 tt.f1 .. 2.

''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, itf3, it-f4 .


18 enecn. endloop. 19 20 write: I 'End of 100~'. 21 22. executando 0 IIll!SlI'IO c6digo noulllente -

o cent.Ucla d. jf.1'2 ecopioclos


pa ra
0

ca mpo ouxilior,e

OJ

instnJes demn;l s60 executcdcs.

CaJqJO aux ainda cont~ ' A'

f lu u ra 13 16

Esta

ea quorlo e

Compo ouxilior global pera itf2


~7

possogem peto loop.

On change of nee
ociona do.

I
I

23 loop at tt. 24 at first. 25 mte: I 'looping without a reset '. 26 'endet , 27 on change of i tfZ. 28 wr1te: I i t .fl, 1t.f2, i t f3 , it-f4. 29 30

else.

write :

' en changl! " not t rigge r ed for row', sy-t1bix. of

No l1/timo pOssogem pelo loop, itf2 c:::omeUdos de camposauxi iares l ~S;~~ 160 os mesmcs, enIOo on challge of
O!

31 endcn, 32 endloop. 33 wrtte: I 'End of loop'

3'

35 .reconf1g\,lra

campo aux para espal;os em ereecc

n60

e odonodo.

Utilizando on change of
A Lis tagem 13.12 ilus t ra a utilizaC;i o " e on change of. d

36 clear 1tf2. 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, itf4.
4S endcn ,

endloop. 47 write: I 'End of loop'.


46

456

' mNO' EM21 DiAl ,",P/ 4

OIA lU'BELlS INTIl<NAS

""'\AD'" PARTE 2
e

457

48 f ree it. 50 sel ect" fnn zb:l f l1 where land! .. 'US'. Si an change of zt xlfal1andl. 52 write: I ' l andl"' . zt xl f al - la ndl.
53 endon.

4'

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.
A linha 33 selecicna todas as linhas de zt xl fal na ordem de 1andl.

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 ... ite: I ' En of sel ect.". r d

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.
lima re cQn f i 9' urar;~O

f unciona be'll

Na primeira ocorrencia de urn loop, a campo auxiliar global

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.

Utilizando

pe rigo ocu lto em on change of

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

Em um ambience 3.0F e posteriori esta safch:


1 All " En of loop d 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 . ..
1 "A 11 W

c6digo na Listagem 13.12 produz

2 3 4

it:

End of loop
l andl - U S. End of sele ct
landt- US

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 end'lccp .

"loop 11

End of select

AlillSE ~

As linhas de 10 a 13 pre enchem a tabela interna com dado s. i t - f2 co ntem a valor I A I em codas as quatro linhas.

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 itf2 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 .

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.
I

"l oop 12

I.

Z3 24
zs

26
27

el se, if sy-tabix a 1. write: I ' fl changl!d:' . 12 it-flo endif.


endcn.

Z8

endl oop.

Zg f ree it.

o c6digo na Lisragem 13.13 produz est> safda:

458

APR EMO A EM21 DIA A S BAPl4

O~ !3,TABElAS IMTIRMAS AV~Yl0AS, PAm2

459

SAiDA ~

-new row .... new row".


fl c ~anged: new row"''' fl changed:
....new row=" fl changed :

0
3 3 I I

2
0 0
3 3 I I

....new row....
f1 changed ;

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 s configurados com os valores iniciai padrao.
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.

....new row""
f1 changed:
"new row fl changed:

"new roW""'" fl changed:

2 Z

AHluSE ~

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.
Na linha 13, a primeira passagem de loop nao aciona on change of , porque 0 camp o auxiliar global contem zero . -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

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. Utilize sum dentro de at e endat au on change of para caIcular totais e subtotais. Utilize on change of dentro de loops para acionar 0 proc essemento baseado em uma altera<;ao em uma das colunas selecio nadas .

problema, ja que todos as camposnumericos na area de trabalhoserdo


configurados com o zero dentr o de at fi rst e endat.

Nco utilizesel ect e append. Sempre que posslve l, utillze sel ect into

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.

P&R

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.

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 .

460

APREHDA EM 21 DIAS A BAPI4

Workshop

o Workshop oferece duas maneiras de voce verificar 0


as

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".

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
~

D 14 ia
A instru~ao wr; te
D epois de concluir est~ capitulo. voce sera capaz de:
Enrender
0

1 XX 2XX

1 2

3
4 5

40 50

4XX 5 XX

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.

efeito dos tipos de clades na safda

ri Utilizer as ops:oes de formata!jio, da ins trU~io w 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

eutilizodo pe rc instruicO wr1te a fimde alocor espccc no listo de soldo pore um compo.

exibiioo do valo r dcq uele compo . 0 comprimento de scfdc

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 IN STRU(iO WRITE I

463

Tabela 14.1
Dado

o tipo de dodo do ABAP/ 4 determino 0


sofdo podr6 o
Alinhamento

formata e

co mprime nto de

Fig u r a 1 4 1

Os campos Decimal Places., Output

Fonnato

Sinai

Comprlmento de tipo de seida


padrilo

length onufom

padroo herdodo dos IipO$ de dodos do

1 p f

Adireito Adireita
Nenhum

/>YPi<.

Zeros sup rimidos Zeros suprim idos


Noto~oo cientffica

Finol

11
2~ d le n ou (2'fldlenl+ 1 22 fldlen

Final

Adireito
A esquerda A esque rdo A esq uerdo

Zero s inidois

lniclcl Nenhum

c
d
t

mostrodos Espo em bronco ;os


iniciois suprimidos

fldlen
8

Determinado pelc
pcdrec do usu6rio

HH,MM,SS

Aesq uerdo

6 2'fldlen
Ta bel a 14.2 Comprim ento de scrdo podrao pa ra os campos deci mals ccmpoctodcs
Defini~60

a s campos do Data Dictionary tern tipos de dados do ODIC, como DEC , CHA . CURR e assim. por diante. Todas eles sao baseados em tipos de dadcs do R 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.

de dados

Comprimenta de saida padriio


8 9 10 11

d.t. d.t. d. ta data

T TEXTD(4) t ype p. AB f 2(4 ) type p declm. ls 2. f 3(5) t ype p. f4{S) type p decimals 3.

Eo rrnatOl; c o pad ni o
a formato padrjo 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.

Compos cornpododos
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.

_ _464
APR ENOA EM21 DIAl ABAP"

- _..
I 3

_~

....
OIA IH .11ilJyi0WRITE

465

Formc tccco de hora pcdreo


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

Program a de exemplo demonstra ndo a form c t ocd o padrti o


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


2 data: t1

Comprime ntos e formato,co podrao


' 123456' . ' 123456'. ' 19980201' , ' 19980201' , ' -1234', '12345678-'. '123456789-'. ' 1123456789-' . ' 11 23456789' ,
123.

nurnericc pcdrco

N e America do Ncrte escreve-se um mimerc como 1,234.56. Em outros pafses,


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 perf do usudrio Dec imal N otation il (a partir de qualquer tela, selecione a caminho de menu System-> U ser Pr ofile- > User Defaults).

5 6 7
8 9 10 II 12

'-.\UlaaaO pore que as a lterecs para

~c 'd d-

Vod de ve efewcr sign off e efetuor ncvc mente sign on no sistema Rf3,
0

podriio do usu6rio tomem-se efetivos.

13

" IS
A Tabela14.3 mostra 0 efeito da ccofiguracac Decimal N otat ionna saida

report ztx1401. t ype t val ue 11ke sy- uzet t t2 value dl t ype d val ue val ue like sydatum 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' .
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

' 123456789' .
' ABC' .

rite : 16 w
17

numerica.
Tabela 14.3 A configuror;;60 De cimal Notation no podroo do usu6rio meta a s
Ic rmcto s de seide num erlcc
Conflgura~ao

18 19
20 21

Saida de exe mplo


, ,234.56 1.234,56

Virgula Ponto

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,

o formate

I
I
I

22
. 23

2.
25 26

27
28

i ,

29 30 31 32
33 34

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.

26 26 26 Il lS) pl . 26 / et , 26 / xi, 26
/ pi, / (12) pi ,

nl ,

'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

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)

466

APlEMDA EM 21 DIAS AUP/'


19980201 199B/D2/01 199B/02/01 -1.234000oo000oo00E+03

D~ 1 llISTRU(i.o WRITE 4>4


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)

467

A li.nha 26 aumenta novamente 0 mimero em urn dfgito, fazendo com que a segundo separador seja remcvido. 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.
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.

12,345,678123456,789 1123456789*23456789-

1123456789 00123 123456789123 .456 .789~

123. 456, 789- .


ABC ACSO

f: 1: 1: 1: 1: 1: n: p: p: p: c: type x:

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 linha 29 escreve urn campo numerico mostraod o que 0 mesmo alinhado adireita e preenchido a esquerda com zeros iniciais.
A linha 30 escreve urn campo decimal compactado mostrando

e
0

lHALISE~

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,

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 "inha 17 escreve a mesma varidvel utilizando urn comprimearo de l 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. 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.
';:
0

a esquerda no

campo de safda. .A linha 34 mcstra a saId2. a. partir de u,m campo hexadecimal.

8di~6es

para a

instru~cio

write

Est. ,e~o detalha algumas das especificacoes especfficas de said. que po dem
ser utilizadas com a instIU~ao writeo

!!!
:J>
m

Sintaxe da

instru~oo

w te ri

A seguir, veja a sintaxe da inStruljaO writeo


wrfte ret] (I ) (2) (3) (4) (5)
Up(l)) "['0(,1))

-e

><

...

e obeidc do
onde:
'11

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

A linha23 escreve urn campo de ponto flutuante mostrando a nOtaljaO cientifia e um sinal inici&!. A linha 24 escreveurn inteiro utilizando 0 comprimento padrio de 1I. 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.

eurn nome de string de campo. variivel ou literal.


0

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.

468
APRE NDAEM 21 DI Al AWl'

-.-

- .-

- - - -

.,.--

- -.-

_. _

...

D~ lH IN5Tl<U(i.o WRITE

469

1
0

e a especificaclc

de comp rimento . Identifi ca

comp rim ent o do

campo de safda no qual 0 valor deve ser escrito.

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

eurn. especificacac de deslccamenec de subcampo qu e pe de conter

somente literals numericos.


sl eurn. especificacso de comp riment o de subcampc que pede center somente literal s numeric os.

1 r eport ztx 1402.

2 data f1(4} t ype p val ue 1234.


3 4 5 6 7 8 write:

.I

I '... -+- -- -1-- -+ - -'.


' 12345678901234567'.

u.

me uma mascara de edi~o. c e uma chave monetdria (da tsbela tcurc). uma unidade de medida (cia eabela t006).
n e urn literal numericc a u variavel.

skip . writ e write write 9 w te ri 10 write 11 writ'e 12 writ e

/ 1 ' X'.
'll'

2 'll ' . 3 ' ABC '.


4- fl.

7 fl . 'Z .

Os seguintespontos se aplicam:
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
0

o c6digo na Listagem 14.2 produz esta safda:


____+_w l __
+__

valor da

12345678901234567
XY 1 1. 234 Z A

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

IMluSE ~

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,

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.
I

A linha 8 escreve ' VZ comecando na coluna 2. Isso sobrescreve espa~a e 0 ' Y' que havia side escrito.

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.

Compreen de nd o

e specificoljiio de posiljiio

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.

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..

...........................
470
APlEHDA EM 21 DIAS ABAP/'

~--_...-- _~- . - - ..
D~ lU IHSTIlIJIiDWlltTE

471

Instruljoes

Sa ida cumulativa

S.liDI~

--+---1--.. 12345678901234567

----+---1--+-x
X YZ
XYZZ XYABC XYA XYA XYA 1, 234 1 1,234 1 1, 134 Z

12345678901234567

wr ite 1 ' X' .

XY XlZ ABC 1234 1, 234

write

' YZ'.

wri t e 2 'YZ'.

A linha 6 escreve os primeiros dois caracteres de XYZ I. 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. 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 A eescrito. BC' 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.

write 3 'ABC'. write 4 fl. write 7 fl. w te ri ' Z' .

Cornpreendendo a especifica~ao de cornp rirnento


Na desc ri~o desintaxe da inst ruliao writ e, 0 especifica 0 comprimento de satda.
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.

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 " rn. esp2.~O intermed.i.irio. (Se necessaria , consulte a se~ao anterior sabre as u 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 . .

EHTU~~ Lista~em 14.3 IIustrondo 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

6 write : 1 '

1 +__ 1 ,

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:

7 B s kip. 9 write 10 write 11 write 12 write 13 write

1 ' 1Z34567B901234567'. 1 (2) 'XYZ' . 1(4) 'Xl Z' . 'ABC'. 15{4) 11. at I p(l) f 1.

/' ..+

1__ +_ ' ,

o codigc na Listagem 14.3 p roduz esta safda:

5 / ' 12345678901234567' . 6 ski p. 1 I fl (2) 8 write 1 n-ita) . 9 write: 1( 2)

wr",

n-au), n.

D ,HlMmU\ADW I. RlTE I

473

o c6d.igo na Listagem 14.4 produz est a saida:


SAiOA ~ .
~---+---- l----+ ~

1030

CA E

Ch1 ckenFeed ltd . a71B Wshbone t ene i Moth erboards Inc . 64 B itBus Blvd.

12345678901234567
AS BC

1040

US
E

;{[f;
~:,~
",

C ABCD

A ~ NlllSE

A linha 6 escreve 0 campo 1and1 comecandc na coluna 15.

A linha. 7 escreve 0 campo namel cc mecacdc na colona 25.


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.

ANlUSE~

A linha 7 escrev e a primeiro e 0 segundo cara ct ere de flo


A linha 8 escrev e 0 segundo e 0 ter ceiro caractere de fl.
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.

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.

Utiliza ndo

odi"a o no- gap

Utilizando

adi"ao under

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 .

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.

EH1RAOA~ Listag em 14.6 Utilizondo no-ga p


1 rt!!port zt x1406. Z data f l(4) ~ al u l!: 'ABCD' . 3 4 w rite: I fl. fl, 5 I fl no-g ap. n , I "", fl, " ", 7 / "", 2 fl . 6 " " . I " " no- gap, fl no~gap . B

ENlRAOA~

L1stagem 14.5 Utilizondo a od1iYoO under

1 report ztx1405.
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,

.!

,' ,'

,
7
8

9
10

25 ztx l fal-name1, I ztxlfal-spras under zt ll,lfa1-land1, zt xlfa1-st r as under zb lfal -namel.


s ki p.

o c6digo na Listagem 14.6 produz esta safda:


SAlo ~ A
ABCD ABCD ABCDABCO , A CD ' B ' ABCD ' A BCD,

11

endsetect .

a ccdigc n~ Listagem 14.5 prod uz esta satda:


S ~ AloA
1000 CA E
CA
E

Parts Unl imlted 111 Q ueen St. Industri al Pumps I nc . 1520 Avenue Rd . Chemi cal N ation Ltd. 123 R1 ver A ve.

.,

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

10lD

1020

C A E

espaco-intermediario.

-SJ " y ;".s.'1!" .:' .


.,, _~1' '

o.

_-__ - ~ -1

~ _ ~~ ; 4 APRE HDA EM21 e rA U IP/4 " S

Dll IH IN mtJi.\OWR ITE I

475

"" f:""
.

f?~""

. A linh a 6 escreve fl co m aspas SlIIlp Ies nos dcis ladas. 0 5 espacos OIS
interme diari e s apacecern scm
0

usa de no-qap.

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.

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,

I
!

Utilizando mascaras de edi,.oo


As mas caras de edic;ao perm item :
Inserir caracteres na saIda.
0

OOUDA~ Lislag em 14.7 0 eleile de va rios mascoros de edi~50


1 report ztd407.

Mover

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 m ask 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.

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 I 113. " fl using edit mas lc IV . 13

o c6digo na Listagem

14.7 produz esea so.lda:

IAfDA ~

s.

ABeD

6. 7.
8.

A:BC :D A:BC
B:CD

9. 10. 11.

1234 1234 1.23 4

12.
13.

123,4
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.
I
I

..

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

1
476
"PR EMD" EM 21

nus AUr/ 4

D 14: ArH~ WRITE IA

Na linha la, 0 valo r de f1 gera uma saida alinhada

a direita com urn

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

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.
Figura 14 2

I I

campo de safda.

A linha 13 mosrra 0 efeiro da utilizacfo de urn V com urn campo de caractere. 0 pr6prio V ea safda,

Observe 0 conteVdo c/o camp o Convers. Routine.

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 subrotina dentro de um outro progromo.) 0 nome do m6dulo de fu ~ o sere CONV ERSION EXIT XXXX O UTPUT, cnde XXXX e a 1 de quotro ccrcceres 0 depois de . ~. Por exemplo, writ e ' 000 01000 ' using' edit m k ' ''~ALPHA ' chcmc 0 as m6dulo de fun o C ONVER N_EXIT_ALPH _O TPUT. A instruc;oo write possa , em SIO A U
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 A LPHA. A SAP fomece o proximoda me nte 60 soldos de ccnversec pore v6rios terefe s de formotoo. 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 .

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_O TPUT, 0 qual U

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 CUN convene automaticamente 0 c6digo que representa IT 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' . ' K ' using edi t mask '==CUNIT' . escreveraI crt.Para umususrio I coneceadc em alemao, a safda seria 1 K U rilizar tal safda de conversao I. 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.

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
7

/ fl usi ng edi t mask ' ''-ALPKA'.

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

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 w rite: / zt xlfal-l1 f nr , "0 domi ni0 contl!m conver so Saia de ALPHA 13 / ztx lh.l - 1ifnr using no edi t m ask. 14 endse1ect.
IS

478

r 'PREiD. EN 21 DIAl '''PH

DIA lH IN STRlI(iD WRITE

479

Hi skip.

17 select single from ztxmara wher-e matnr ' M I03', 18 write:: I ztxmara-matnr ,
19 (10) ztxrr.a ra- brgew.

SCiEENOM~ Inicie agora

ScreenCom "How to Display Existing Conversion Exits".

20 ztxmara-gl!:we i . o dCJllfnio cont&n converso Saia cle CU IT N 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

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
m ore ser::i. expandida,

o codigc na Listagem 14.8 produz est. saida;


0000001000

lDOD

1000
0000001000

VI VI

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
tela Function Modules sed exibida, Tow as saIdas de conversao que podem ser utilizadas na instrU~io wri te serio listadas aqui.

H 1D3
H103

50.000 CR
50.000 KI

1lI1USE ~

A linha 5 escr eve 0 valor de fl.

Trabalhando com a fo rmataljCio de data


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 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_O TPUT, 0 qual detects que 0 valor e inteiramente U numerico, remavend o os zeros Iniciais e alinhan do -o aesquerda.

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.
Formato
Ilffldd/yyyy / dd/Ilffl/ YYYY rrm/dd/yy dd/Ilffl/YY nmddyy ddnmyy yynrndd

Efeito
Escreve 0 data vtilizando 0 formata especficcdc no pe rfil do usucrio. Esse e 0 podreo, sendo ossim esses formotas rea lmente n60 Iozern

ncdo.
Escreve a data odotondo um ona com dais coroderes u1ilizondo 0 formoto espec ificodo no perfil do usv6rio. Os dais fczem 0 mesmo

A linha 20 escreve (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. .

g,.,j

cotsc.
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.

eequivalenre

A linha 24 escreve 0 mesmo valor gewe i, mas dessa vez CU exibe 0 NIT mnemonico alemao.

Exibindo os sordes de conve rsno existentes


Para exibir as saldas de conversao exisrentes, utilize 0 seguin re procedimen to.

480

APREND AEN 21 D A PIl IAl BA

DIA lH INSTRU(ADNRITE

481

As sofdos de conversec IOATE e SDAlE prod uzem fe rmata s de data diferentes. Alem disso, 0 m6dulo de fum;oo R GET DATE DAY AME H N retorno 0 nome do die do semana relative a ~mo -data -; idiomo especificos. C omo alternative, D ATE_C OMPUTE_DAYretorn o urn ncmerc
que representa
0

o co digc na Listagem 14.9 produz esta saida:


SAiD! ~
1998/11/23 1998/11/23 1998/11 / 23 98/ 11/23 98/ 11/23 981123 981123 981123 1998N 23 oV 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

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
21

y(4). m(2J. d(2) end of f2, begi n of f3. d(2) ,

!HilIS~ ~

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 .

As linhas 19, 20 e 21 fazem todas a mesma coisa: escrevem fl utilizando o fo rmate espec ificadc no perfil do usufrio. 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.

22

I I

f1 dd/rrrn/yyyy, -e perfil do usuAri o conf i gura 0 f OrN t o

fl rrm/dd/yy,

"perfil do usu!r10 fmt

ex1 bido adot ando um enc com 2

df g1t os - perfil do usui r i o fm ! exfb fdo adot ando um ano cce 2 t, 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-!DA TE', 28 / ( 1) f1 using edit mas k I u SoA , TE 29 30 f2 - 11. 31 II'IOvecorrespond;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

.,.

Utilizondo os

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.

~.

~\, ~

>..:::.::::=::.:. .==-=::..:..' --- - -- - - -- - - -t


A Listagem 14.10 ilustra 0 usa dessas duas adi~6es .

ENTRADA~

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

rc -zerc - ,

no-zero ' . value ' . value using no-zero ',


no-sign' .

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 m s e round: al

ENrnDA.~ List a g em 14.11 Utilizando as odi<;6es deci m s e round al


c6digo na Listagem 14.10 produ z esta , aida:
t ype t ype t ype t ype type c c usi ng no-zero n n using no-zero n: zero val ue 1 report ztx1411.
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. ' 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 ' .

000123 123

0000000123 123

000000000o 123123

type n: zero value using no-zero


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
round

T res instrucdes sao ut ilizadas para especificar 0 mimero de casas decimais na safda:

decima l s

currency
unit

...

c6digo na Listag em 14.11 produz esta saida:


decimals dl!c illals decll:1.a1s dec illlah decimals deci mals
4

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

1.575 .456 as-i s 1.575 .4560 1,575.4 56 1, 575.46 1,575.5 1,575


158

3 Z
1 0
-1

484

l PR EN DAEM 21 DIA5 AB AP /4

CIA lH IHSTltU\iOWRITE

485

0. 158 1. 575 15.755 157.546

round ro und round round

3 2
1

1.575.456
15. 754.560

157 .545.600 1.6


1.575

round round round round round

0 -1
-2 3 dl!cillal s 1 3 decteets 3

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..
F igu ra 14

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.

Umdique duple no compo $OIdv do Iobela ztxHc3 exibin5 em tela_

A adio 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. "

Os tipos do ODIC. CURR e QUAM, sOo boseodos no ti po de dodo p do ABAP/ 4 (decima l com poe:tedo).

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 aers ira center a cha:ve monetaria. a Unica 1inha em zt xt001 que corresponder, w A Listagem 14.12 ilustra esse conceito.

Util izando as adi~6es curre ncy e unit As adic;oes currency e unt t correspondem a uma maneira alternative de indicar a posicsc do ponte decimal para urn campo do tipo p. Elas nao podem ser "imal s. utilizadas com a adiliao dec 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 especiica 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 m als 1 value '12345. 6' .


4

5 write : / fl , I 11 cur-rency 'USD'. 'USC' 6


7 8

D6la~s

eee- tcancs

11 currency' IlL'.

ITL'

Lira 1t aliana

.i

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 OOlwaers, zt xt OOl-wal!r5 . 17 endselect ,

o c6digo na Listagem 14.lZ produz esta safda:

a
486 I IPREH OI EM71 nus lBAP/4
SAiDA~
123,456

1
usa
ITL

D1I IH INSTRU~O W RITE

487

1. 234.56
123 . 456

! I

100.00 100.00 100.00


100 . 00

usa usa usa usa


ITl

100,000 ITl

25,050 III
100,000
100, 000 J py 300,000 J PY
. 250. 50 CAD

200. 00 CAD

1.000.00 CAD 100.00 CAD

AMluSE ~

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 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

Tabela 14.6 Como as campos decan e andec do tobela t 006 ofetam a fc rmctoc oo de scfdc de urn campo
Entrada

DaDesta na tabela, entao a saida eformatada utiliz.a.ndo0 padrdo (duas

decan
1 1 1 1 1 2 2 2 2

andec

Resultado
30. 1 30.10 30.100 30.123400 30 3D 30.1 30.11 30.11 30.1100

casas decimals).
Quando a linha 7 e executa da, a tab ela TCURXindica que III caa tern

30. 1 30.1 30.1 30. 1234 3D 30 30.1 30. 11 30.11 30. 11

o
2 3 3 3

casas decimais e, entio, formata

valor sem quaisquer decimais.

A linha 10 seleciona as registros cia tabela zt xlfc3 em ordem de c6digo d. empre,. (bukr s) . 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.

o o

o
2
4

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

N orrnalmente, a. adiliaO uni t eutilizada com as campos do tipo Q AN que U 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.

488

A'RENDA E 21 DIA' ASAP" M


Figura] 4 4

D~ lH INSlRU\lO

.,m

489

Se vod der um clique duplo no compo

ztxmara-brgew,
ven5umo tela indicondo a tobelo d e referfndo e 0 compo.

33 34 3S 36
37

ztxmara- brg ew unit ztxmara-gewei,

zt xmara-ntqew , ztxmara-ntgew unit ztxma.ra-ql!w ef,


. ztXlllara-gewei, 85 tOO6-decan.

38 39

91 tOO6-andec.
endse'lect ,

o c6digo na Listagem 14.13 praduz esta salda:


99 .OO

es-ts

A Lisugem 14.13 ilu stra 0 uso dessa adi>ia .

99.000 .1 ~ 1I111 111ters eecan 3 eneec 3 99 .00 , - percent eecan 2 andec 0 decen 0 andec 3 99 - 1nch!!5 99.1234 99. 1234 99.1200 99.1 2 99.1 99.1 brg ew I s- is MI00 HI0l M102 M 103 102. 560 10.100

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',

as-Is
%

as- is
%

as-is
%

w/un1ts
102. 560 10. 100 I
SO

nt gI!W

as-is w /units units decan eneec


10.000
0.000 0.000 100 M3 10 PAL o ROl o CR 0

,
9

6 7

(4 type p decimals 1 value ' 99. 1',


",rH.!!:

100.000

I n,

a
0
0

'as-i s' ,

1. 000
50. 000

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.

/ fl unit 'Hl', 'ml - m l il iters eecen 3 andec 3'. l1 / 11 uni t '% . '% percent ' eecen 2 andec 0' , / n 'unit - i nches decan 0 endec ) ' :

..

o o

AHlllS! ~

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 M Essa liaha conrem decan L. 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-gew I!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

490

APRENDA EM 21 DIAS AUP/!

D~ lUINSTRU(iO N lTE R

49\

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.

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 xm -gewei. Observe que issa nie ! normalmente feito. E ara apenas fcito aqui para mostrar as valoresde decan e andec.
Nas linh as de 32 a 35. as valores gewei e nt gew sio escritcs de dUOlS

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

a esquerda,

entao a. safda apareced alinhada i esquerda


0

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.

dentro de seu comprimenro de saidapadrsc (6).


A linha 6 produz a mesma saida porque tambem especifica nhmlent.o a esquerda.

ali-

As linhas 37 e 38 escrev em as valores decan e andec que cram utilizados


para form atar cads

linha.

Mudgndo

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 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.

,.. w rite

Resu ro o
1 rep ort ztx1 414. 3 write : / 4 /

2 data : 11(6) val ue ' A B'. ' .... +.... 1' .

5 6 7
8 9 10

/ / /

' 1234567890 I fl. f1 left-justified,


fl cent ered ,

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

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
0

formato e a cc mprimenro

11
12"

13

/ f1 r1ght .j usti f 1ed. / ' .. .. +.. . 1. . . +. . 2 +. . .. 3. + .. .. 4', / ' 1234567890123456789012345678901234567890 ' , /(40) f1 left -just i f i ed. / (40) 11 centered. /(40) fl r19htju s t i f i~ .

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.

o c6digo na Listagem 14.14 produz esta saida:


+.. . . 1 1234567890 AS

A. A.

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

.:8

492

APREMD'" EM 21 etAS UAP/4

OIA lU IHSTllU\lOWRtTE

493

deversc ser formatados. De tcdas as especificacces de formato de data, somenre yyrrmdd anulari ccmpletamente 0 padrao do usudrio.
U rna mascara de edi'iao pede ser utilizada para inserir caracteres na safda, Eta tambem pode solicitar uma saida de cocverssc que ici

P&R

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. .
Utilize no-zeropara suprimir zeros iaiciais nos campos do ripe n e tipo
c.

Observei que existem tambem modules de fun~o com os nomes CONVERSION_EXIT_XXXJO(_INPUT . Para que servem?

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

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
isso.

Utilize round para. indicar a posifiao do ponto decimal no valor. Utilize currency para especificar 0 numero de casas d.ecimais para os campos de quantia moneciria. currency pesquisa 0 c6digo monetaric 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

o o

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 IN e um pargmetro de PUT 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 O UTPUT. Uma boa maneira de comecar e copiando urn existente.

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.

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?

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
Esereva urn programa que produza a seguinte said.:
., . + 1 +. 2 :+. 3 + .. 4 First December

SE ANA 2 M

January

First

R evisao
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 w te e observou ri as efeito s de tipo de dado sa bre a saida empregou assaldasde ccnversac e detectou sua preseclia denrro do dominic

r . rr r

r> r

r:

r"'

r>

r>

r"'

r>

,...,...

SEMANA

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 -page pri nt . D epois disso , voce se iccpressac utilizando a instruc;ao new 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 ABA P"

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
Tec as de format a~ao, Parte 1 nic
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

E xibe urn simbolo em pretc-e-brcncc Exibe um ko ne"decor Exibe urnccrcctere de desenho de linho

hllpJ l www.corTlPus.com.bl.

........
500
~

_~

-FFFFFee ~

-~~

enmnnn

nn

,...-,
77

APREHDA E 21 DIAS ABAP/4 M

' ' ' S 10t axe p a ra as a d'u;oes g ra f leaS pa ra a , t rU~ao wrJl t e lOS
write n1 (a)
(b)
illS

/4 sYD'_ fi1led_squaT"l!

iI.S

10
lZ skip.

iymbol.

11

/4 sym_fill ed_square as symbol. / 4 s)'lLfilled_square as symbol.

s)'lllbol, ' KHA ' , l 'KHBl',

'KNCl'

~
~

IS IS

icon. line .

(e)

13 ul tne . 14 se lect liP to 5 rows f rom ztxlfal.


15

write : / ztxlfal - l1 f nr ,
ztxl f al-namel , sytl.Jlhon e as symbol, ztxlfal- t elfl.

As adic;oes (a) , (b) e (e) sao mu ruamente exclusives.


nl

onde:

e 0 no me de urn sfrnbolo, {cone au caractere 11ne-dres.

16 17 18 19

endset ect .

o ccdigo D' Listagem 15.1 produ z a sald. mcs trada D' Figura 15.!.
Utiliza od o a
adi~ao
s{mbolo

as symbol
blcclcr simples

m.o ,.

lOyD ....

Urn

e urno figure

de

urn simbolo comum como urn

As linhas 4 11 escrevem urn. lista de Domes de rabela dificil de codificar na forma de marcadores. As linhas 14 a 19 escrevem codigcs, nomes e c ame ros telefcnes de fabricantes precedidos pelo simbolo de telefone.

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 w rite 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:> .

Utjlizaodo a
IOVO .... lEUO "

ad i~aQ

as i con

ou
i ncl ude <list> .

Um fcon e_tsemelhon 0 um sfmbclc , excetc pelo fato de que e umo nguru te 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 instrvo write que escreve urn leone serio write 1con_l ed_red as 1con.

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 .

Para escrever u m leone, voce deve incluir uma das duas insrrucoes seguintes na parte superior de seu programa:
include <icon>,

M OYO.... TEi.ll:O "

0 nome entre slncis de maior e menor e urn progroma ind ude. Esse progromo
ccntem um

ou
t nclll de <l1st>.

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 .

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.

ENTRADI ~ ListCl gem 15,1 Sfmbolos porc exibi~iio


1

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 .

2 3 4

5 6 7
B

re por t ztx1501 . include <syrrtlol>. t ables ztxlfll. wri te : I sy:nJllus_box as symbol , ' V endor 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 ',

5
6 write : / 'checkmark '. 7 / ' r ed x" ,
15 ico n_checked es icon , 15 ico n_tncOJlPl ete as icon,

502

APRENDA E !1 DIASABAP/4 M
8

euIS.TtCNICASDE FORMATA\lD,PAlm1 503


F i g u r a 15 2

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.

Este e IHTl exemplo de sard de listo o


ccn1endo fccnes.

' 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
28 29

1f not ztxmarastoff 15 initia l. select sing le * from ztxmgef where stoff " ztxmarastoff . 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.
ztXll\ilri!l9~i .

As fuLhas 6 a 9 escrevem um exemplo de quatro leones diferentes. 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.

30

eneseteet .

SiiDI ~

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. 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.
0

Figura 1 S 1

Este e um l!xomplo de sardode listo


COllftondo

Iccne

sfmbolos.

A lioha 23 escreve a valor de 1co utilizando as ; con para fazer com que 0 valor seja inrerpreradc com o urn leone. Campos adicionais de zt xmara tambem sao escrito s.

Utjlizando a
NOYO '" TElMO r

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 vertic cis, umo ccixc, uma grade ou umo estnJturo do tipo ervore.

.,"~" ;;-, _,., ",;_ ._~ _,, ~,:,; ,; , ; ; .;. 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
!

mm

_ rr

A,m DA E 21 DIAl ABAP/4 M

j
desenho deliaha,

D~ 15,OOIGlS IlE FORMA14 , ' Arn 1 >,O

505

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 .

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

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

7 select 'It fl"Olll ztxlfal. select singl e " fl"OOl zulfbl w here l H nr ztxl f al l1fn r. 8 if sy-subrc " O. 9
10

contendo corocteres
de desenho de linha.

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

w rtte: 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 ztxltal11tnr . 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. w rite: /(30) sy-ult ne. endseleet ,

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

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.

--------4-----------------.f
506
I 'PRE NO' EM 21 nus "'P"

DIl lS,ITCNIClS D O EF ....Tl(lO,p'mI


EHTiA DA ~ Listagem 15.4 Simbolos, leones e caraderes li ne-draw
1 re port zo 1504.
2 include el tst>. -def1n1t;lles para {cones , sflllbo s + desenl'lo de linha lo

507

I.

!l

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.

~I:

As linhas 30 a 37 escrevem as filhos do registrc ztx lfbl atu al utilizando caracteres de desenh o de linha aprop riaclos. A linha. 42 escreve urn subliohado com urn comprimento de 30 caracteres.

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.

6 setecr v from zb1fc3 i nt o table It. 7 sort it by lifnr bukn gjahr shbkz.
8 l oop at it .
g

Exibindo as simbolos, leones e ca racteres 1; ne- draw disponiye;s


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 .

1f tt - se'lev

<

1000.

10 11 12 13 14
15

1. . C omece edinndc qu alquer program. no ABAP/4 Editor. Vace deve


estar na tela ABAP/ 4 Edi tor: Edit Program XXXXX. 2. C oloque seu curs or em u ma linha em bracco.

1.6
11 18 19 20 21 22 23
2~

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.

7. Coloque

0 cursor no campo de entrada a direirado batao de op~ao que voce eseolheu.

25 26 27 28 29
_.30

8. Pressione a reels F4. 0 sistema exibe urna lista dos itens disponfveis.

9. D c urn clique duplo em urn para escolhe-lo. 0 sistema entjio


de volta atela. Assemble a Write Statement.

lev.

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

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.

31 32 33 34 35 36 37 38 39
40

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 m ef tJ l iddl e_comer as line no-gap. U 1t - shbkz no-gap, l1 neJ1 ght _1I1ddle_coTn as li ne. er t t -saldv,

it-son 1, 1t -hebnt , sy-vl t ne.


at last . write / 5(84) sy-u 'l t ne. endat. end1 oop.

SliDA ~

o c6digo

IU.

Listagem 15.4 produ z a. saida mostrada na Figura 15.4.

Formato odo e impri mi od~oLlJre;<Jl",au 6t.L i Q s,,----t~ ru....


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 DE fORMATA(.iD.P 1 [ [CAS Am

509

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.

Posi~o comum e ic.stru~6es de formata~io


Fiou r a 1 5 4 Este iii um exemplo de sard de listc o contendo sjmbolos.
fconrs e eereeees

Nao ccloqce t , j ou k entre aspas.

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 .

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.

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 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.

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.

Sintaxe das report

adi~6es

1i ne- s t ze e 1; ne-count para a

i nstru ~60

Vocetcrnbem pede configurar 11 ne-count no meio do relat6rio, assim


p6ginas diferentes podem fer numercs diferentes de linhas de sclde .

A sintaxe das adifioes l i ne-s ize e li ne-count para a instrucic r eport segue :
r eport ltne-st ze 1 l1ne-count j(t) .

e como

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.

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.

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

._ .;. ~:.

~7,-:" }'

~ ~, .

~.::~~'-'

~p'rR~D-A. EM 21 DIASABAP/4
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

D 15, TtoHCAS DE FllRliATAIiD, PAm 1 IA

511

INluSE ~

veri lacunas na salda e no inicio de paginas no meic da janela, Pan evitar esses
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.

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

visao a direita,
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.

EHTU.OA~ LLstagem 15.5

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 .

eoecn.

7 8
9

on chanYI! of ztx1fcJ-gja hr . wri te / 10 ztx l fc3-bukrs .


endon.

Imprimindo

saida de lisla

10 11

write: / 20 ztxlfc3-gjahr. ztxlfc3-shbtz.


ztxlfc3~saldv . ztx1fc3~sol11.

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:

12
13

14
15 endsetect ,

ztxl fc3-habnl.

sllDI ~
FIgura 15

o c6digo na Listagem 15.5 produz a ,aida mc strada na Figura 15.5.

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.

5 Este l! 0 efe/todo
odi)60

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.

l me-count,

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 ileusudrio. U tilize 0 caminho de meou Prof > UserDefaults para altere-las. Essas configuracc es sersc utilizadas sempre que voce imp rimi r urn relat6rio.

512

APlENDA EM 1I DIA' ABAPI4

D~ 1 5,OOICAl DE FOWnl.io.PAJrrE 1

513

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 tronsoo SPAD ). Entaa, co imprimir, voce escolhe esse poo l de impressora no lista de

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,

impressoros. Essa funcionolidode esta disponrvelno versec 3.0F e mois recentes.

'(jgndo cobe<;jglhg5 e rOdg pe5 d e paging


Pa r padrsc, a tela Print Screen List a.parece como a tfrulo a u ~bc.c;alho na parte superior do seu relatorio. Voce pode eriar seus pr 6prios titu los au cabecalhos utilizando urn destes dois metodos:

Tra ba lha ndo com

Quando voce cia urn clique no batao Print, sua saidaeenviada primeiro pan.. a

spool

Cabecalhos de paginapadrso
Evento top-of -page

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

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.
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!" .

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


sao suficien tes .

SCRE!HClM,. ogo"' .
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

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.

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

515

I
;1

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.

lEUO

NOVO....

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.

Os ccbecclhce qu e voce cccbou de fnsertr see ormozenodos com seu progromo

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

il
t,

j!
1

I I
i,
L

&to tela c:ontem OJ elemenlos de IeldO

idles eo Headers
podr60.

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.
0

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.

1. D a tela ABAP/4 Editor: Edit Program, escolha

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.

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, TtOlICASOHORlllTA ' A 1 Iio. IUE

517

S(mNCAM~ Inicie a ScreenCom "Tronsloting Titles and Headers- agora.

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.

1. A partir da tela ABAl'/4 Text Elements: Change Title and Heading,


escolha 0 caminho de me nu Gorc-e-Translation. A tela Target Language For Translati on e mostrada.

Utilizando v~riaveis em ccbecolhos de pagina padnio


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 sytvar 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

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-

nhado. 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.

5. De urn clique no batao Savena barra de [erramentas Standard. Se dyer


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.

EHTRADA~ Listagem 15.6 Voriove;, em cobe,olho, de peg;no podr60

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.

I , i, i ,.

1 report ztx1506. Z tables ztxlfal. 3 parameters: p)andl like ztxlfal-lanal default ' U 1 S 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.ll1fnr. ztxlfal-namel.
10 endselect ,

OL\ I~ rtCHlClS O EFORlIATl\AO, PARTE 1

519

Flgnrn 1 5 7 A leTa N3N'/4 T~ EletTWMIs: Otonge Til/I! andHeading


portJ 0 progroma

"

ztxJ506.

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 & 0 valor de sy-tvar-S . 3. Os pontos .aument am os comprimentos de safda para 10, 8 e 3, respecrivamente.

i l
,
I

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.
Pa.ra ~.titulos manuais,voce precise
Desativar cabecalhcs de pagina padrio.

o c6digo na Listagem 15.6 produz esta safda:


sliol ~
KEHGREENWOOO ' 1998/ 05/ 05 19,40,Ja

I
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.
NOVO ltrr...

Country C ode: US

1040 1080 1090 ZOO O VI V 2


V3

M her baarns Inc. ot Si li con Sandwich ltd. ConSlIlle Inc. Moni tors and More ltd . Quanti t y First Ltd . O verPriced Goods Inc.
Fl uf f)' Bunni es Lt d. Moo l 1ke a Cow Inc. .

I
I
t

lUIO

Um evento no ABAP/4 ~ como uma sub-retina em o utros linguogens. Trctc-se de umc seo independente do c6d igo; elo executa umo torefa e entO retorno o 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.

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

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.


A linba 4 atribui 0 Id do usudrio arual a sy- t varO.

I
i !

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 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. A linha 6 fermata a data/hera atual e mov e pan sy- tvar2. A linb a 7 atribui
0

, top-of.page.
7
8

valor que foi inserido pelc usuario a sy-tvar3.

wnte :
u11ne .

' My ', f1.

A s linhas 8 a 10 escrevem urn relat6rio simp les de fabricantes.

"j. c.....

r7ti:

,.0.

.A -

---:.~

520

APIEHDA EM21 DIASAWl<

IlIA ,s,r!a<IClS DE FOiMATA(lD. PAm1

521

SAiD.l~
ANiusE ~

A Figura 15.8 mostra a. safda para a Listagem 15.7.

!
! i

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 .

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:

Reservar espacopara 0 rodap' na pane inferior da p'gina utilizando a


adi~o

1i ne-count na

instru~o

rep ort.

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.
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 w t te na linha 4 e H ~ escrito para a linha 3 da lista de safda. r i D epcis que linha -4 foi executada, moscrada.
Figura 15 8 0

Do evemo end-of-page. 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 w i te para uma nova linha r 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.

progr:una termina e a saida

A solda do l.istcgem 15.7.

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

as eventos tap -of -page e end-of-page

Note que 0 valor de f1 escrito na pane supe rior cia psgioa e 0 valor no memento em que a primei ra inStfUljaO writ e foi dada, nio 0 valor n o come~o

1 report ztx1508 line-count 20{3) no st andard page heading.


2 do 80 t i m . es

do program..

3
4

write: / 'Please kid me ' , sy- i ndex, 'ti mes ' .

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.

enddo. 5 6 t op-af-p age. write : / ' CON FIOOOIAL' , 7 / ' Thi s page begins w t h number' . sy-1ndex. i 8 9 uli ne.
10

-APRE HDA E 21 DIAS ABAPH M

O~ l s,r!CNIC.lS DE RJRMATA(Ao, PARTE 1

523

11 end-ef- paae.
12

escritas no rodape. A inst rucao top-of -pace na linha 6 eneso


sy- t ndex,

write:

13 14
15

I I I

e execu-

5Y-II1 tne, 'The nl.ll1ber of kicks at the t op of the next page will be ",

' Copyr i ght 1998 by t he ALA (Abus e lovers O America)'. f

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 .
Nenhum rodape de pigina eescritc na par te inferior da ultima pagina.

A primeira. pane da safda para a Listagem 15.8 apar ece como segue:

Utiliza ndo a

instru~cio

reserve
agrup ada informacoes re-

SliDA ~

CONFIOEKTIAl
This page begi ns with nunber
~- - -- - - - - - - - - - - - - - - _ . - . _ - -- -_

As vezes, voce pede precisar escrever de maneira

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 P u se k1 ck m 1 e P1ease k1ck me

1 times

..---------------_ -----------_ --.. ..

Iacionadas que se distribuempor vdrias linhas.Par exemplo, vocepede escrever o mimero e 0 nome de fabricante em uma linha., seguidos pelo endereco na
proxima linba, e as ndmeros de telefone na linha seguinte. F aria sentido manter

2 3 4 5 6

times ti mes times t imes t imes 7 times


t11OO5 times

8 9 10 11

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.

t imes

t1.Jnes 12 t imes 13 times

---_..-----_

--_

14 ' t imes

--- --.------------_

_-.----15

The nlll'b of kicks at the top of the next page w1 11 be er Copyri ght ~998 by t he ALA (Abus e Lovers Of hnerica) CONFJO ENTIAl This page begi ns with number 15 Please Ple ase Pl ease Please kick me k.ick me ki ck me kick me

S
m

Sintaxe para a iristruC;60 r eser ve


rese rve n 1 tnes .

CII

onde :

n eum literal numericc ou variavel.

15 times
16 t imes 17 times 18 tfmes

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

INllIIE~

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,

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

"i :

~%.~~-

524

APREKDA EM 21 D ASAP" IAS


9 10
11

D~ lHECHICAS DE FOiMAT A\AD. PAm1

525

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

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 .
I

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, 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.

o
siiDI ~

c6d.igo IU Listagem 15.9 produz a seguiote saida:

Vendor R eport
1000 Par t s Unlimited

111 Queen St .
416-255-1212

O' "

Para. mar cabecalhos de pfgina,vocepode utilizar tanto urncabecalho de pa.gina padrac como a instrUc;ao top-af-page. .
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

1010 Industrial Punps I nc. 1520 Avenue Rd.


416-535 -2341

ON CA

1020

Chemical Nation ltd.

dessas variaveis de substituicio.


ON CA

123 River Ave.


416"'51-7787

Para suprimir a safdado cabecalhc padrao de pagina, utilize a adi,iio no standard page headi ng na msrruc;:ao report. Se voce inc1uir 0 evento top-af-page em seu programa, ele sen acionado quando 0 primeira instruc;aa wri t e for executada, As instrulioes seguintes sio executadas, e enta~ a controle retorna para a mstrU/iao w teo ri 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.

---_....-._. ------------_._ .----_.-.. -..------Report ZTX1209


Vend R or eport

Created by KEHGREENWOOO

1030 ChickenFeed Ltd . 8718 Wishbone lane

AB"

393-565-2340
1040 Motherboards Inc .
MA US

Utilize a instruc;ao reserve para manter um gropo de linhas juntas na

64 BitBus Blvd.

617535-0198

lista.

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 O inhas 15 o 17) e entoc envic umo quebro de pagino. Ele, entcc, odona 0 eventc topof-page (Iinhos 11 c 13). Depots, 0 instruc;oo write no linho 6 e executcido e os linhos 560 escritos no parte superior do novo pogino.

o 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 A BAPI4

Workshop
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
T ecnicas de formatasao,Parte 2
Objetjvo s do capitu lo
AItlUS ~ Depois de conduirestecapitulo, voce sere copaz de E

Exercfcio 1
Escreva urn programa qu e exiba as seguintes simbolos: quadrado, losango , cfrcu lo, ~culos, lapis, telefon e, nota e pasta.

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.te necessaries panl forma tar uma lista: new-line new- page

ski p

back
positi on set blank Tines

http;/I_ .campl,Is.com.br

-- 528
APlEHDA EM 21 DIAl ABAP/4
D~ 16,OOICAS DE fORMATA(Ao. P ARTE 2

529

Utiliza nd o a

i n stru~a o new-J j ne
1020

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.

1000 1994 A 1000 1995 A 1000 1996 A Chenical Nati on Ltd . 1000 1995 A 1000 1996 A

0 .00 0 .00 1, 500.00

1, 000.0 0 1. 500.0 0 0.0 0 2.000. 00 0.00

O.DO
0 .00

1030 1040

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

Sintaxe pa ra a

'!!!

instru~a o

new- J i ne

new-line [no-scroll ing].

...
m

S
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.
Lis'C1gem 16.1 A instruo new-line
report :tx1601 Hn e- s1ze 255.

D.DO

3 , 000 .00 1,5 00. 00 500.00 300.00 2 , 400.00

AIliuSE'" AS linhos 7 e 8 cpresentom defclhes de fcbricontes e seo mais largos que a tela.
, . Rclcr pare c direitc permite a voce ver a porte direitc des linhas, mas 0 nome e 0 numero de fobriccnte peerrcnecem dentro do visualizco . Is.so acontece porcue a instrulo writ e no llnhc 5 e precedido perc instrut;co new1 ine no-scrol l i ng no linho 4.

Utilizondo a

instru~Qo new-page

Utilize a instnujio new-page para 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.

EH11101~
1

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 .

Aciva.r e.desativar tirulos e cabecslbcs. Variac a contagem de linha au tamanhc de linha de uma pf gina para a
seguiate.
Ativar e desarivar a impressio.

9
10

endsel ect ,
t ndstl ect.

o c6d.igo na Listagem 16.1 produz a seguinte saida :


1000

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
1000 1996 Z 1000 1998 Z 3000 1998 A Indust ri al PI.IftPS Inc. 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

...
m

III

Sintcxe para a

inslru~Cio

new-p age

newpage Inc-t t tl e : w1th t i tl e] [no- head1ng : w t h- head1 ng] i [l i ne-ccunt 0 nem)]

[pri nt on :
ande:

[line- s iz e k] pr i nt

off]

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 .

1010

APIElfDA HI 21 DIAS ABAP/4

DlA lH EcHICAS OfroRJIATA\!O, PARTE 2


Figura 16 1
A tela Prim Parameters.

531

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.. 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 capf rnlo.} 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.

Sintaxe para a

instru~ao

new-page print on

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.

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

tmtdflog] destfd] nt.llJCopfes ]


layout~d]

lt stnane] caverpagejlag] tttle] do!'p't] n c ievernGl'llt] ktepfIag] ntmfo ys] l tnes~rpage]

[l1ne- siz e

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

APREMD A EM 21 DIASABAPI4

D~ lU!OiICAS DE FeRMATA"', PAm,

533

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 hrm ediate 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.

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

Qua ndo envlc a scfdc diretomente para 0 spool lJfilizando new-page pri nt on, voce tombem pede utilizer duos instrues 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 diretomen pora a impressora. Utilizando te 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 apo 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 .

A Listagem 16.2 ilustra a usa cia inStruliio new- page pr i nt.

!HIDIl,\~ Usl a g em 16.2 A instruo ne.-page pr int


1 report ztx1602. 2 ta bl es zt xlfal. 3 pari5n!ters: prt_1d --l1ke estwospooldest obligatory.
~

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

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 wr ite: I ztx1f1.l 11fnr. 12 Mdse1ect . 13 14 newllage 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.

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

534

A/ i ENDA E M21 DIA l Am/4

IllI. 1~ OOIC.l5 OfFOiMATA(lD. P 1 I Am

535

A linha 5 redireciona a safda para as ins truco es w te subseqUentes. no ri 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. 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.

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.

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

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.

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.

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


1 2 3 4 5

Utilizando

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.

III

Sintaxe para a instrucdo ski p


ski p [n : t o 11n!! n] .

c nde: n eum literal numerico ou uma vanavel.

report ztx1603 . tabl es ztxl fal . datil n t ype 1. setect " frDlll ztxlfal order by land1. on change of ztxlfal- landl. 6 if sydbcnt > 1. 7 n sy-l 1nno ~ l. S skip t o f tne n, 9 write 35 ' ' ' l ast V endor W This C ith ountry 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.

o cadigo na List.gem 16.3 produz a seguinte said.:

536

HR END'" EM 21 OIlS AIAP/4

SiD ~ AA

CA
1000 Parts unl tntted 1010 I ndust ri al P\II1PS Inc . Chemi cal Hatio n ltd. 1020 1030 ChickenFeed ltd. 1050 Th Bit Bu e cket 1060 Hene La L d. ry ne t 1070 Fl i p M1 Switch I nc. . ... Last Vendor W Thts ith -Count ry Code C V C 9 Code N ow, Specs Lat er- l td. no Duncan 's Mouse Inc Last V endor With This -.country Code ....." DE Vfi Anna Banana Ltd. Vll Wie ner Schnitzl!l I nc. V12 Sauer kraut A G Last vender- W th Thi s i -Count ry C ode ..US va Smile When Y Say ~ha t ltd . ou Motherboards Inc . 1040 l OBO Si ltcon Sandwi ch ltd. 1090 C onsume Ltd . 2000 JlIon1t ors and Mor e Lt d. Vl Quality First Ltd. V2 cverprtced Goods Inc . V 3 Fl uffy Bunnies Ltd. V4 /11.00 11lce a Cow Inc. V5 Wol fman Sport Accesso r ie s Inc. V 7 The Breakfas t Clu b In c.

A primeira saida de linha depcis de uma instru~ao rese rve fei emirids.

UI

Sintaxe para a
back. onde:

o seguinte ea sinuxe para a mstruc;:io back:

i nstru~a o

back

T-- - - - - - - - - - --

back: emirida de dentro do evemo t op-of-page retorna aprimeiralinha escrita dentrc de t cp-cf-p ece.

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.

ANILlS!~

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 5y1 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

7 do 4 times . 8 n 51- i ndex; 10. g write: j 10(4) n. 10 enddo.


11

atribuido a n. A linha 8 move a posic;:ao de safdapara 0 comeco de linha n, que e a Iinha previamenre escrita, A llnha 9 escreve nessa linha, colocando flagno Ultimo fabricanee de cada grupo.
instru~ijo

12 top-of-page. l3 write : I 'This was lily t itle' . 14 ul tne. 15 back. 16 write 6 '15 17 skip.

o c6d.igo na Listagem 16.4 produz a seguinte saida:

SAiDA ~

This 15 r.y title

Utilizando a

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).

I 2 3 4

10 20

30 40

AP lfflD A E1iI 21 DIAS AIAP/4

IHillIE ~

A primeira execucgc da linha 4 aciona a linha 12 (0 even to top- ofpage). A linha 13 escreve um titulo e a linb a 14 a sublinha. A linha 15 configura a posi~io atual de safdapara a primeira linha na lista de safda, 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.

enddo.

10 11 skip .
12 do 4 ttees .

13
14

do 4

ttees ,

15 16 17
18

position sy- t ndex. w rite ' A' . endcc, sk1p.


enddo.

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. A linha 6retorna a pcsicao de saIdaatualpara que ela fosse a primeira " escrever depois do processamento t op-af - page (linh a de [ist a de 1 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.

o c6digo na Listagern 16.5 produz a seguinte saida:


WA WA WA WA

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 H I esc reveria Hi na i Iinha 2 , comecaadc na coluna 3.

lHilIsE ~

A linha 3 comeca um loop do. 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 . 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.

Z
III

Sintaxe para a
position r1.

instru~ao positi on

...
m

onde:
vI ~ uma varifvel numerics au lite ral.

A Listagem 16.5 ilus tra a usa cia ins rruc io position.


Lis1agem 16 .5 A instruc;oa positi on

EH1RADI~

,
7 8

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'.

e equivelente 0 emiti r umo instru~co write

Utilizer e instrw;co positi on seguido imediotomente per umo write at (obordodo no capitulo anterior).

eeeee.
new- li ne.

540

APRENOA EM 21 DIA5 AUP/4

0016, lliHKASDEFORllAT A(lo,PARTE 2 r


Text 1 Text 2
Text 3

541

Utilizo ndo

inst rui;oo set bl ank 1i nes

Nc rmalmente, se seu programa emit e uma instro~ao w i te qu e resul ts na safda r 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

,
\

comp crtamento.

Text 4 Text 5 Text 6

Z ~
CIl

Sintaxe para a instru,cio set bla nk 1; nes


set bla nk li nes on : off.

Os seguintes p ontos se aplicam: A cocfiguracao padrdo escl desativada,

I
I
SaO

A linha '2 define tres varidveis. Todas tern 1 como comprimento de caractere e um valor inicial padrio de espacos em braneo.
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.

As linhas em branco geradas pel. instru~ao skip Dio

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.W rite / ., ' .56 gerarauma linh aem branco se set blan k 1i nes on river sido executada de antemdo.

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 10 escreve treS linhas em branco. A linha ffconfigura li.nhas em braneo novamente. A linha 14 gera uma linh. em branco. A linha 16 nao gera linhas em bran co.

A Lista gem 16.6 ilustra a mstruliao set blank lines.

EH1RAOI~ Lista g e m 16.6 A instru, oo set blank l ines


1 2 3 4 S 6 7 B report zt x1606. datil: fl . ra , n . write: I 'Text 1' . write: I fl. I f2, write : I 'Text 2'. sk.ip.

fJ .

Resum o
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.
Utilize newpage 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.

set blank l i nes on. s wr i t e : I ' Text 3' . 10 write : I fl . I f 2. I f3. 11 w r-tte : I 'Text 4 ' . 12 13 set b1.llnk. l i nes off .
14 skip.

15 write: 16 wri t e: 17 w rite:

I I I

' Text S' . fl , I f2, 'Text 6'.

f3 .

16.6 produz a seguin te saida:

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. Utilize set bla nk lines para permitir que linhas em branco sejam criadas escrevendc varhveis q~e contenham esp aco s em branc c.

o e6digo na Listagem

542

A PIEH DA E M21 DIAS ABAP/4

IL...-:...Fa~a

- - - - ' _
Nao codflque excessiyomente um

OORlOI~ List a gem

16.7 top-of- page, position e skip

Utilize sfmbo los e kones e m seu relc tcric

perc cementer a reodopta bilidade.

tomonho de p6gina. Permitc a os usucr ics


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.

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.
enddo .

t op-of-page.
n sy-11nno.

P&R

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 c6digo na Listagem 16.7 produz a seguince safda:

sllol ~

o
Workshop

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.

AMA AMA AMA AMA

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 ,

17
Cochecer as tipos de unidades de- modularizacio disponiveis no

M odularixasao: eventos e sub-rotinas


Depois de concluir este capitulo, voce sera capaz de:

AJ3M/4
Entender as eventos de ABAP/ 4

Utilizar eventos initi a11 zation, start-of-selec ti one end-or - set ec ticn
" Definir sub-retinas enemas e internes ..

Deflnir variaveis global, local e estaticas e areas de trabalho de label.


Eceecder 0 efeito de ex1t, check estop dentro de eventos e sub-retinas

Unidades de modulariza <;oo no ABAP/4


IDVO...
TEiKO"
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

de modulorii o o comportcm-se de mcnelrc muito semelhonte 0 urn miniprogramo Clue


pede ser chomado de o vtro programe.

D ABAP/4 cfeiece tres ripos de unidades de modu larizaci o:

hltp;l!_

.cDmput ,COm,br

Even tos

A linha 2 identifica 0 come cc do evento initial i n t i on.

/t

Sub-retinas

A linha 3 escl associada com

M6dulos de fun,ao Esre capfrulo explica eventos e sub-retinas. 0 proximo capftulo trata de

0 evectc initialization. Se de ccdigo seguirem essa primeira, eodas elss pertencerac infti ali zatten.

rom linhas
400

evemc
0

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

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. A linha 6 pertence ao evento star-t-cf-sel ect icn.

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 . A 1.inha 9 perte.nce ao evento end-of-selection.

limite inferior do c6digo que pertence a end-of- select i on esti marcado pelc fun do program.

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.

. Quando voce executa esse programa, esses even tos sao acionados por urn prognma de driver. as seguintes pmgrafos explicam 05-detalhes desse conceitc.

Defin indo eyentos


NOVO '"

IIDVO.... TIijO"

TWtO II"""

Um eveote ~ um tog que identifica umo seo de c6d igo. A seo de e6digo
ossociodo com um eventc comee;o com urn nome de eventc e tenn ino quando

1 a prOximo nome encontrcdo. No listegem - 7.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


1 report ztx1701. 2 fnitial1zation. a write I 'I'.
4

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 Progrcmode driver -,:":;:. (PSe~d0c6djgol
~~ ...,

FigurA 17 1

o progromo de driver eos IlYentos que ere


pode adonar.

lc:6cl.go otuaQ

report ztxl70 1.

1.
2.

5 sta rt -c f-select t cn.


6
7

~~4~;J~~;~~~1~r-fi~~-~C
~i.:.:~ ~h# r~.t"i
'~ -'ita rt:~o{ . se1~~i'{~n'~

write

' 2' .

3.
4.

8 end-ot -select ion. 9 write I '] '.

\ :=.~~ ::

5.

i:,;~~:.~:e~~e,~~~,~':.:~~~': ;...

o
Sliol ~
1

c6dig o na Listagem 17.~ produz a seguinte saida:

Z
3

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

549

.~ execueadc, 0 driver a esquerda ten iciciado primeiro. 0 prognma entia segue esta sequencia de passes :

1. fl 2. fl 3. f l .

1 Z 99

Aciona 0 eveaec i ni t ia li zat i on, fszeado com que 0 c6digo que pertence a i ni ti al i zation seja executado. Se voce nio river cod.i.fi~do urn evento in i t ia l i z ation em seu programs, 0 programa de dnver pulari esse passe .

. lItiUSE ~ Quando voce inicia ztx1702, 0 programa de driveriaiciars primeiro.


Ele aciona
0

evento i nitial iza tian.

Mostra a tela de sele~io para seu programa. (Uma tela de selcr;ao con eem as camp os de ent rada pua suas icscucoes de parimetro.) Se seu programs D aDtiver 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.

I I
I i

0 c6digo associado com 1niti al 1zat ian eexecuudo (linhas 12 e 13). o valor de f1 e escrito e 1 e adicionado a ' ele. 0 con trcle entao

reromara para

progra ma de driver.

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 .

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. .

Mosua a lista de safda para

usudrio.

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,
entaa ela sen. executada e 0 controle entia iIi reto rn ar para
0 driver entio exibiIi a lisa para. 0 usuaric.
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
0

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.

driver.

. Esse ezemplo ilustra que voce! pode colocar os evento s em uma ordem

ENTiADI,. driver

.... Listagem 17.2 "Eventos ccion odos no ordem ditodo pelo programa de

1 report ztd702 . 2 data fl type 1 val ue 1. 3

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. . Tabera 17.1 Eventos de ABAP/4
Co1egoria
Driver

4 end-ct- selecrt cn. 5 write : I '3 . fl'. fl .


6
7 start-of- se1eet1on. 8 write:: I ' 2. fl . '. fl . fl 99. 9

Event os

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

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

.Ir
I

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-selection. 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.

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.

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.

A varia<> write to de instru o ."ri te nCio ad ona top-of-page.

Considerccoes espeCiois

00

utilizor write dentro de eventos

Os eventcs tern dois efeieos incomuns na inStrllfiaO write:

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 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.

Padronizando start-of-Sf] f ct ; on
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.
E NTlADAt.. U~ta~e~ 17.3 "sh .rt -af - sel ect ion outomaticoment~ inserido antes de pnrnerro linho de c6dlgO

I I

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

1 report ztx1703 no standard page headfng'. 2 parameters pI(8) .


3 4 wrtt e: 5

'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

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 .

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:

.J
"

I
I

UlENDA E 21 DIU ABAP!4 M

D~ 17.MD UURllAlAo,[V D ENTOS E5U ...onNAS

553

This i s My Titl e pl - IIHT


.;.'

( st ert-et- selectt cn.

,
5
8
0

fl - 'A'.

End of progr am

7 1fn- 'A'.

ANlusE ~

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.

Q uando voce exec uta

ene-et-selecttcn .
write: endtf .

9 10

fl.

Flg urg

1Z 2

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.

A tela de seleo 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.

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

siiDI ~

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.

o c:6digo no Ustogem 17.4 produz este erro de sinfoxe: Incorr ect

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.

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 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.

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.

E A Listagem 17.4 Nco cclo que um eve ntc dent ro de umo condit;ao ou de Nlli.D.....
,. um loop 1 report ztx1704.
2 data fl . 3

isso nio cause u rn erro de sintaxe, rrata-se de urn estilc de programa~ao pobre.

DlA 1 MODU~O: EVEHTDS ESUB-ROllNA 7: S APRlNDA lM 21 DIAS ABAP/4 554 ~=..::::...o:"'::'::=-"-------- -----------.jl------ ---- ----==== ==~ 555

Sgjnd o d e urn eyento


Voce pede sair de urn evento a qualquer hora utilizan do as seguintes instrucdes:

exit
check

stop

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 instruo write dentro de end-of - sel ect i on, depois disso. No coso de top-of-page urn w i te, ped e cousar urn r dump curto; no coso de end-of-peae, voC!! pede perder a scldc. E mois segura evlto-lc 00 fodc dentro desses eventos.

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.

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


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
1 r eport ztx1705 no standard page heading l ine-count 6( 2).

2 *em eventos antes de start-of-selection:


3 .. - exit e check. ti!m 0 m esmo comportamento. t l es dei xam 0 eventc

elc se a plique iguolmente bemdepois de voceoprender a utilizartodos


05

even tos.

* 5 *
4

processenentc contfnua com

prOx1mo evento ou al :l.o.

- stop vai diretamente ec eventc end-ct- select t cn


(nao utllize stop em tnt tf al taetton ou na sal da de se lect t cn- screen)

Em tod os as eventos:
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).

6 * 7

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.

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
13
14

"execut a

lIIl:

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.

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

19 20 21 22 23 initiali zat i on. 24 * exit .


25*

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

"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

check l Z . stop. eher_sos .. ' X . '

"h6 evento "h6 evento

A ENDA EM21 D UAP/4 PR IAS


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'.
40 41 at set ect f cn-screen. "M evento 42 exit. "M eventc 43 check 12 . "vai para end-cf-selecttcn 44'" st op. 45 message 1789(zk) w th ' at sel ect i on- scr een'. i

557
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.
check 1 '"' 2 e muito codificado entao sempre reto ma urn resultado negativo.

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 w t e: / 'Top of SOS' . ri

Retornondo do liste
"hi

49
50

51 52 53
54 55

56 57 58 end-of- sel ect i on. 59 ~1te: / ' Top of EO . S' 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' .
71

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

rehtOrio

- hi evento "vai para end- of-se lect i on

-I'll rel atOr10


~h!

relatOrl0

-h&reletet tc

7Z top-of-pag e. 73 write : / 'Title' . 74'" exit . 75'"' check ' X' ' 1' . 76'" st op.
77

"M evento e retcme para a

instru~ ao

writ e

-ha event e

" tom. para a 1n.strul;.lio w rite -!lot o end-of- sele ct ion - ni o escreve depois dina
II!

ultne .

78 79 end-at-page. 80 ul1ne. 81 exit . 82 check 'X' 'y'. S3'" stop.


84

-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

w rite: / ' Footer'.

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 varia veis 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

!PREMDA E 21 DIASABA P M !4 ~=~:"':::::"::::':':"-

-I-- A linha 10 executa.

---====== ~~

559

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 Iinha 11 retorna controle para a linha 6.

Sub-rotinas
MOYO .... TWKI ~
Uma

A linha 7 executa. Hi dais tipos de sub-retinas:


Sub-retinas intemas Sub-retinas externas A List agem 17.6 ilustrou urna chamada para um a sub -retina interna.

sub-retina e umo se~ao de

c6d igo reuti liz6vel.

Ecomo urn miniprogramo

que pode ser choma do de cvtrc ponto em sev progroma . Derrtrc dele voce pede defioir vcrlcv execvtcr instrve.s, compute r resultados e escrever soido. Pore eis, definir umo scb-rcnnc, utilize a insfruc;oo fOnD para indicor 0 lofti o de umo sub-retina e utili e endfo rm pore indica r 0 se u fim. 0 nome de umo sub-rotina nco pode exceder 30 z corederes. .

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 subrotino


1 I"tpo.rt ztx1106. 2 3 write: j ' BefoT"@ call 1' . 4 perlonn subl . 5 writ e: j 'B efore 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.

en
Z
1ft

Sintaxe para a

instru~aa

form

f orn s [tables tl t2 . . . ]
[using ul 'falue (u2) .. . J [changing c1 'falue (c2) ].

endfonll.

code:
5

e 0 nome da sub-retina, para-

tl, u, ul, cz, c1 e c2 sao parametres.


tables pertnire que as eabelas internas sejam passadas como metros. A adi~ao value cao pede serutilizada depcis de t abl es .

o c6digo na Listagem 17.6 pr oduz a seguinte saida:


SAiDA ~
B efore call 1 Insi de sub! Before ca11 2 Ins ide sub! After calls

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.

AHiuSE ~

A linha 3 executa. A linha 4 transfere ccnt role para a linha 9.


A linha 10 executa.
A linha 11 trans fer e eontrole de volta pan..a linha 4.

Os seguintes pontos se aplicam: Tod.as as adic;oes sao opcionais. 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
using e cha nging .

A linha 5 executa.
. A

.s

linha 6 transfere con trole pan a linha 9.

560

A'REM OA E 21 DIAl ABAP/4 M

oa 17, MOOUURlll\AHIETfTOS ESU~Ron"AS 561


10 form 52. 11 write : I 'Hi from 52' . 12 endfoT"lll. 13 14 for'll 53. 15 writ e: I ' H from 53'. i 16 endfortll.

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.

o ccdigo na Listagem 17.7 produz a seguinre ,aida:


Hi from 51 Hi f rocn 52 Hi f rom 53

As definicoes de sub- rorina nao podem ser aninh;cias. (Vae!:oio pode definir uma sub-retina dentrc de ourra.)

S
m

CIl

Sintaxe para a instru,Cio perform


perfol"ll a) s b) n of sl 52 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.

(tables tl tZ ] [us i ng ul u2 J (chltlg1ng: c1 I:'Z ] .

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.
0

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}.

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 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.

A adi~ao value( } nao pode ser utilizada com perform. 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

562

APiEHOA EM 1I DIAS ABAPH

EHTRADA~

Lista ge m 17.8 sub-retina

as efeitos de exit,

check estop dentro de umc

o c6digo na Liscagem 17.8 produz a seguinte s:lfda:


In sl sy-s ubl"'C In sZ
sy-subre

1 N!!!port ztx17OB . 2 data fl value 'X'.

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 -" ,

o
7

.t.

St opped. sy-subrc -

sy-subrc. sy-subrc . sy-subrc . sy-subrc .

AlliUS! ~

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.

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 .

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
20

exit.
enddo.

A linha 39 transfere 0 conrrole diretamente para a linha 10.


A saida da linha 11 inicia. em uma nova liaha, porque urn novo evenro comeccu.
I

21 lZ
23 24

write ! 'In 51'. exit .


wMte I 'After Exi t endfonn .

A linha 13-sai do evemo e a lista e mostrada.

25 26 form 52.
27 do 4 times .

Definindo yari6veis locois e g lo bois


check II .. ' Y '. write / sy-fndex.
enddo.

28
29 30

ID.MO,.

MOYO'"

31
3Z 33 34

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. Umo vcri vel 'ocal e definidc dentro de ume sub-rotinc vtilizondo 0 in~ruc;60 6 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.

35
36 fonn 53. 37 do 4 times.

TWO"
sy-subrc .. 7. stop. write I sy-index .
enddo .

NOYO til...

38 39
40 41

42

endfonn.

alocada toda vez que a sub-retina echamada. Essa memoria eliberada quando

Para variaveis

locais definidas

utilizando

local

ou

da ta,

a memoria C

43 44 forti 54 .

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 .

45
46

write: l'In 54'.


endfol"'lll.

,A"PRtHOA EM 21 DIAS ABAPI4

O~ 17, .OOUURI~O, EVENTOI EStJS.RO A I TIN S

56S

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.

21 22

23 24

write: I ' 52-A' , zt xlfa l-l 1fnr. sel ect si ngl e'" f rom ztxlfal whe re li fn r . 'V . 2' writ!!: I' 52- B', ztx lfal-l ifnr .

endform .

o c6d.igo na Lista gem 17.9 produz a seguinte saida:


\AiO ~ A
*~----V9

Sl -A V9 51- 8 VI 52-A V I 52-B V2


Sl~C

V2 .

Sl~~~V9

S2-A V9
52-B V2 *S2- --V2

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 definio local.

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. ssa 0 controle para linha 11. a

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 w re lifnr ' V . he 9'

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 w te para ri 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.

5 6 7 8 9
10

write : /
wr1te : /

' ''-~ - - ~ '.


'''Sl ~--' . 'S2-- ~ '.

zt xlfal-li fn r.
ztxlfal-l1fnr.

pertann sl.
perform s2.

wri te :

ztxlfalli fnr .

11 fc rm 51. 12 w rite: / ' 51- A'. zt xlfal-lifnr .

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.

13 14 15
16

local ztxlfal. select si ngle f rom zblfal where 1Hnr. ' V I'. write: I ' 51-8' . ztxlfall1fnr.
perform 52. .

A linha 21 escreve a partir da area local de mem6ria definida em s1.

17
18

write:

I .

51-C'. ztxlfal -l ifnr .

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.

endf onn.

19 20 f orm 52.

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

EKTiADAr

Listagem 17.10

data e stat i cs

e 0 valor V e descartado. 2

1 M!po zt xl710. rt Z data: 11 type 1 value 8, 3 f2 type 1 vatue 9

A linha 7 escreve

0 valor de l t fnr. Ela e agora V9 que teve quando sl fei chamado. ' 0

mesmo valor

write: I 'before 5
10 11 101"1I 51.

A linha 8 transfere

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.

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

o A linha 23 escreve V2 a partir da area de traballio global.


A linha 24 reroma 0 co ntrole para a linha 8.

12 13
14 15 16 11

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.

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,

ra.

21

endfonn.

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

o c6digo na..ustagem 17.10 produz a seguinte sarda:


before insi de ins ide inside

chamada e e Iiberada quaodo ela retorna. Com variaveis definidas utilizaodo 1ccal , os valores nessas variaveis dat a serso perdidos quando a sub-retina

51: 51: 51: 51: after 51:

6 .1 1 1 8

9 1 2 4 9

'2-

'52-2

8 8 8

9 9
9

retornar, Utilize a instruliao statics p ara C M 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 subrotina 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.

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
pr6xima vez que a sub-rotina. for chamada .

mas a de f2 eretida. Entretan to, ela nio sera Vlslvel novamen te at a

DIA 1HODULW l.I\AlHVEHTOSESlJ8.ROTlfW r

569

0 loop inicia e a linha 7 novament e traas fere a ccntrcle para a linha


11.

voce deve memorizer sew nomes, assim como guardar as palavrascbave em instru~5es.

A linh a 12 aloca nova m em oria para fl e atribui urn valor de l. A linha 13 faz com que a memoria antericrmente alocada para f2 tcme-se novamen te vistvel com essa sub- rotina. 0 valor em fZ ~ Z,
como era quando a sub -retina terminou da ultima vez.

o
1010 ~ 1!I.iO ,.

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?

Resumo
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? 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. Co mo passa saber a diferens:a entr e urn nome de evento e uma
instro~io?

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 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? 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

o o

Se voce vir uma un ica palavra segu ida p ar u rn pedodo, isso e normalmenteum even to . AI6n disso, a s even tes nae tern quaisquer ou tras caractersticas identificaveis que seus n ames. Eles sio simplesmente palavr.as rese rva das e p ara re con hecer u rn

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.

Wo rkshop
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".

o Worksho p oferece duas maneiras de voce verificar 0

Oi 18
Modulariza~ao: passando

Teste
1. A varia~o write to cia instru~ao write acicna top-of-page?
2. Que eventcs voce nao utilizaria.em stop ? 3. Em que po nt.o uma variavel econhecida denero de urn programa?

paramelros para sub-rotinas


D epois de completar esse capitulo, voce sed capaz de 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 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

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 U em S 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.

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

tRiO

NOVO ....

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 instrulo fom 51 using pI changing p2 p3, as parametres pl, p2 e p3 sao chomodos pcremetrcs fonnois .

r
r

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.
A linha 16 escreve as valares das vuiiveis defmi das na linha 14 na instrulSao form; fl, f2 e f3.

NOYO ...

TWO

Os nomes de pordmetros que oporecem no instruo 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.

A linha 17 retorna a controle para a lin.ha 7. Revise a sintaxe das IDstIlllSoes form e perform antes de continu ar. Consuite a sC!jaa "Definindo e chamanda sub-retinas Ineemas", no Capitulo 19.

U rna maneira de definir varidveis como parfmetros

e ilustrada na Lis-

tagem 18.1.

EHTRADA~ Listage~ 18.1 Passcndo pa ra metros pora uma sub-ratine


1 report ztx l B . Ol Z data: fl value ' A' .

IFa~a

~----Util ze pcremetrcs formais digitodos, i parflmetros noo digitodos.

Nao passe tabelas inte mos par val or, nem


per volar e resultado, a me nos que voce

eles sOo mo is eficientes do que as

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.

3 4 5 7

12 val ue 'B', fJ value C' .

reolmen te precise de uma nova c6p io do tcbelo intemo. Posse pa r6metros par referencia sempre que pc ssfvel.

Criondo pommetros digitod os


MOVO....
TEUO ,.
Um pa~metro ndo digitcdo um po~metro formal que nciotem um tipo de dodo seguindo suo definio no i~oo fonn. Na Ustcgem 18.1, todos as parametres ercm nao digllada s.

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 instrvo fonn.

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 A8 C A 8C

AN.iUSE~

A linha 6 transfere a cantrole para a 1inha 9.

A linha 9 define treS varifveis: pI, p2 e p3. Ela atribui 0 valor de fl pan pI, 0 valor de f2 para p2 e o valor de f3 para p3.
A linha 10 escreve as valores das variiveis pl, p2 e p3 e as varisveis globais fl . f2 e f3.

I I

S
m

CI'

Sintaxe para pcrdmetros digitad os


fom sl using u1 type t value(u2) type t ch""gi ng cl type t value (e2l t)'lle t .

cede:
51

e urn nome de sub-retina,

A linha 12 retorna

contrcle para a linha 6.

A linha 7 transfere a controle para a linha 14.

ul, u2, c1 e cz sao parametros formais. t~. tantoum tipo de dado de ABAP/4, como um tipo de dadodefinido pelc usutrio.

574

APRE,,, EM 21 DIAS ASAP/'

DlA lUODUU~lAlio , PASSAHDO PARiMmOS PARA SUS-R1lll'AS

575

Os seguintes pontos se aplicamr

Somente urn tipo de dado pede ser especificado na instnu;ao form. Urn
co mprim ento Ilia pede ser especificadc..

IHiUlE~

As

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,

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 }.

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

!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. 5ydatum. 8 f4 5y- uzef t . 9 10 perfonn sl using fl f2 f3 f 4.
11 1Z fo rm 51 usi ng pI ty pe c pZ t ype f 13
14 15 16 11 p3 type d p4 type t. pI, p2. p3.

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.

Os pardmetros digita.dos tem treS vantagens: Sao mais eficientes. Enecessaria mencs CPU a de alocar memoria para. urn parimetro digindo, que pan. um nio digitado.

fun

'.

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. 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.

wr1te:

18
19

I I I I ...

ZO

endform.

voce pede passar uma string de campo

Possondo strings de campo

a c6digo n' Listagem 18.2 produz, seguin" , aida:


MA.
19960510

cia mcsma maneira que qua.lq outrO uer 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:
like x

164836

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

AP R NDA E 21 DIAS ABAP/4 E M


18 changing p3 val ue(p.) . write: I pI, pZ. p3, p4. endfol"Ul .

D lU DDUURIlA\AD, /ASSAIl" pARiMETlDSPARA SU6R011N.4S .

577

Co nt rol a ndo como as pardmetros sao passados


H i eres maneiras de passar as p arimetros pan. uma sub-retina:

19
2D

21

Passer por referencia

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.
Ta bela 18.1 As cdlcoes de instruc;60 form e 0 metodo resultcnte de possogem de panlmetro
Meto da
usi ng vI chang ing

22 form s2 us ing pI value(pZ} va ll1e(p3) p4 23 changing value(pS) p6.

24 wri te: I pI , p2. p3. p4. p5, p6. 2S endfc re. 26 27 t om s3 using value{pl}
28 cha nging endfol'1ll . p2 val ue(p3 ).

Z9
30

wr ite: I pl . p2. p3.

o c6digo na Listagem 18.3 produz a seguince safda:


A BC 0 A, 8 C D E F A BC

Passe por

refe~ncic

vt

using val ue (vl)

Posse por refer!ncio Posse por valor Posse por valor e resultado

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.

changing val ue(vl)

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~
3 4

Lislagem 18.3 Como codifica r adi, ,,e, de parOmetra

1 report zt xl80J. 2 data : fl value 'A' .


f2 13 14 f5 16

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.

value 'B' .
val ue value value value ' C' . ' 0' , ' E'. ' F' .

Lembre-se do seguint e: perfonn e form devem cant er 0 mesmo niimero de parametres. A sintaxe nas instrucoes perform e form podem diferir. 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.

5
6

7 8
9

perform 51 using f1 f2
thanging 13 f4.

10

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)

578

APIEi DA E 21 DIAl AUP/4 M


7 f oT'll s l using pI. 8 pI - 'X'. 9 endf orm.

DIA 11, IIOD1JUR1ZA(AO, PillIJIOO PW.mOS PARA51Ja.R1J11NAS

579

Utilizando

OS

metodos de possagem de pardmetms

A Tabela 18.2 resumidam ente descreve as [reS metodos de pa.ssagem de parametres.


Tcbela 18.2 Metodos de passogem de parametres
Metodo Por referenda
Pcr vclcr
Descri~ao

o ccdigc na Listagem 18.4 produz a seguinte saida:


X

Vantag ens
Muito eficiente

Posse um po nteiro po re a
posit;oo de mem6ria o riginal

ANluSE ~ . A linha 2 aloca mem6ria para a variavel flo Por esse exemplo, vamos
partir do pressuposto que a posiliaOde.mem6ri a e 1000. 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.
A

Alcco umo novo posic;oo de mem6rio pa ra utiliza~co dentm

Impede olte rac;oes no

do sub-retina. A memoria

variey!!!" possodo

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.

Permite oltero<;6es e

permite umo reversec (rollbock)

linha. 8 modifica a posicfc de memoria 1000, fazendo com que a mem6ria para f1 se altere para X.

A linha. 9 retoma 0 ccctrole para a. ~ 5.

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
18 1

eoderecede mem6rio 1000


report zt x1804. ~, ntes de c:homodo de 51 ~ data f1 valu e 'A' . . _
, Q

Como um pon5ml!trO

possocJopor refer~ndo ofela a posio orig do inal


mem6ria.

~t ~~bUiC;OO 11m 51

wr1t e

perfonn 51 us i ng f1 I f1 sc ldc : X
..- ..- . , .

~
-.-Jr:.~t:f .

. -.. . . fortll. ~1 .u.5 ing_ PI., pJ e:'t~~..eo.r~~'pposio de.m.e"!~~.l 000 ,: pl - ' X '. - :~ iss2~~~o-ae mem6ri o 1000 pora 'X' . endform . . - .--_.

- ..: . ;.'-'. ~' , .,

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 idl nticos no func;eo

EIlTU.DA ~ Listagem 18.4 a efeito do possogem par refen! ncio


1

1 re port ztxI805 . Z dat a: fl val ue 'A'. 3 f2 value 'a' .

report ztx 1804.

2 data fl value 'A' .


3 4 perfonn sl usi ng fl . S 'IIr ae I 11.
6

wri te : I fl. 5

f2 .

6 perform sl using 11 changing f2. 7 8 write : I fl . f Z.

580

A"ENDA EM 11 DIAS Am/4


10 fo m 51 using pI changi nri p2.

o c6digo na Listagem 18.6 produz a seguinte " ida:


X A

11 12 13

pl pZ - 'X' . endforlll.

A linha2 alOC2. mem6ria para a varisvel f l.

o c6digo na Lisragem 18.5 p roduz.a seguinte saida:


SAillA ~
AB
XX

. A linha. 4 transfere

contrale para linha 7.

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:
fl automaticamente

A ~ NiliSE

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

e copiadc na mem6ria para pI.

A linha 8 modifies a mem6ria para pl. fl


A linha 9 escreve
0

einalterado.

valor X .

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 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

Passando pa rametros par valor


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
ilusuam como isso func iona.
Fi g ur a 1 8 2

rom

Passando as para metros par valor e resultado


1

Com o urn porfrmetrc .

report ztx1 806. dat a: fl val ue ' A' .

en tes do chomoda a 51 ~ op6s a otribui~50 em s1

pos sa do per valor a/ceo umo novo

posio de
ormazenomeTJto

writ e

perform 51 using f lo I f1. soldo: A

Independente do

original.

EIlTlADA~

Lisla g e m 18.6 0 efeito de possegem por volor

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

1 report zt:d8 06. 2 data: fl vat ue ' A'.

5 writ!!

perlol"lll 51 IIsi ng fl . I fl .

7 fonn sl using val ue{pl) .


B 9
pI ' X' .

write / pI.
endfonn.

lD
~~i~

~i~;

582

APRENDA EN 2t DtAS ABAP/4

DIA 18:MODWRlZA~O: rASSANOO pARlMm:os PARA SUB-Rn1lN AS

sa3

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.

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 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 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 15 alters
0 0

A instruo message e seu efeito sab re a s sub-rctincs sOo obordados

no Capftulo 21, 'Telos de seleo.

A F igura 18.3 e a Listagem 18.7 ilustram pardmetros passados par valor

e resultado.
Fig u r a 1 8 3

Como urn par6metro possadof'Ol' valor ~ resultado olocc urno nova posio de
ormozenoml!!nto

report ztxl807 . dati: fl value ' A' .

enderer;o de memoria 1000 antes do chcmcdo a s1


s de retcmcr de 51

perfonl: 51 "using f1 writl!: I fl. safda: X

valor de pI para B.
0

indepe ndente do original e copio 0

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.

valor de vol'"
novam~e.

A linha 8 escreve 0 valor B.

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

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

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' .

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

16 17

stop . el'ldform.

linhade cabe~o. voce ter:i quefazerissose utilizartabelas internas aninhadas

584

APRf HDA EM21 DIAS ABAP/4

D ~ 11, M DUWlZA>'Do PASSAHDO PARAMrnDS PARA SIJ8.R011NAS D

585

- 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.
Tabela 18. 5 A sintaxe para desaeve r a tobelo inte rno pera a sub- retina

internes com e sem linhas de cabecalho.


Tabela 18.3 Metodas e resultados de possogem em umo tobelc interne pera umo
sub-retina

Metoda
Com linho de

Sintaxe

Valores v6lidos para x


Uma string de compo Umo estrutura de ODIC Uma tab ela de DDIC Uma tabelo interne com umc

Metodo

Se a ta bela Inte ma tiver uma linha de cabesalho


Possa ambos

Se a tabela inte rno nao fiver uma linha de cab~alho


eric umo linha de ccbeccthc dentro do sub-re tina

tables it stru cture x

ccbecclhc

Com Iinhc de
cc becclhc

Sem t.nho de ccbecclbc

Posse 56

ccepc

Posse

corpo

tables it li ke x

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,
Tabela 18.4 A sintoxe de codo metoda de possogem em umo tcbela lntemo para
umo sub-refine

Sem linhe de ccbecelhc

using it [

111ke

Uma tabel a interne sem linho

ccbecelhc
Um cerp o Interne de tabelo

(it [ )J

Metodo
Com linhode ccbecclhc Corpo openes

Sintaxe
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 . .

586

APiENDA EM 2\ DlAS ABAP/'

Possondo umo lobelo interne com Iinho de cobecclh o


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
sub-retina imediatamenre serio refletidas na original A Lisugem 18.8 ilustra essa sintaxe.

A linha 5 define a tabela intema it com uma linha de cabecalho.


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
interua conhecida para a sub-retina. Sem ela, qu alque r acesso a urn

componente da tabela interne causaria urn erro de sintaxe. As linhas 15a 19mcstram asescalhas disponfveispara fazer a estrutura it conhecida deaero da sub-retina. 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

ENTUDA~

Llstc g e m 1 8 .8 Co mo passer umo tabelo Interne que tern uma hnho de

ccbecclhc com sua Iinho de ccbecclhc

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.
A linha 22 scbrescreve a linha 3 da linha de eabec;alho. Como a tabela

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 1t1ffnr. 11 end1oop.
lZ

ineema fai passadapor refersacia, isso modifica 0 conteu do cia tabela interna original. A linha 23 -retOrna 0 concole para a linha 8. As linhas 9 a 11escrevem 0 cccteedc databela interna. A saidamostra que 0 conteddo se aleerou.

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.

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. subrotina sao imediacamente refletidas na original. A Ilstagem 18.9 iluscn essa sintaxe.

o e6digo na Listagem 18.8 produz a scguinte salda:


IliDI ~
1000 1010

EN1lADA~

Lisfagem 18.9 Como passar uma tabela interna sem umo linha de
cabe~alho para uma sub-rotina e automaticomente cria r uma linha de

eobe<;olho
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

XXX
1030 1040

INluse ~

' ; 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 .

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.
"prectse utf1i zar a Area de trablllho per-que

l UOO~O, P ASSAHOO PAR.lMmOS PARA sua-iunH.4S 1

589

8 perform sl tables it . 9 loop at it into ztxlfal.

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

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 .
A linha 19 retorna

de csbecalho local eIiberada.

controle para a linha 8. A memoria para a linha

11ke it 11ke U[ read tab le pt 1ndell. 3. pt-li f nr 'XXX' . modify pt index 3. endfonn.

18 19

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. 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.

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

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 1 0c: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.

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 w rite : 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! tarn be. pode ut 111zar: como it[ J. 19 data W like line of pt. l

590

lPRENO. EM 71 OIAS ABAP/4


20 21 22
73

O~ l B MOOULARIZAIAO, P",,"OO PAlAMETlOS P.... SU'-ROTINAS ,

591

you can also use: data wa like ztxlfal. data 'Il'a 11ke li ne of pt[ ] .
l ocal ztxlfal.
SI!

vod: ut1 11za fs so,

0
Will.

ncrne da aree de t r abalho

2' 25
76
27

sera zt xlfal. n,so


read t able pt i nto wa ind ex l.

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. 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 .

28 2.

wa-11 f nr 'XXX' . modify pt frOll Wi i ndex l. endfoT'lD.


nfer~n ch

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

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. A linha cj traasfere a controle para a linha 30.

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
39 40 41

data "a 11ke line of pt .


read tabl e pt i nto Wi i ndex 3. wa-l 1fn r 'ZZZ'. modify pt from Wi index 3.

.
siiDI ~

42
43

stop .
endform.

46 47

45 form wr1tel t out tab tee 1t structure ztxl fal. leop at i t . wrfte / 1t - l 1f nr . 48 endloop . 49 endfam.

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 w qu e te rn a mesma a estrutura que uma linha em pt .

o c6digo na List agem 18.10 produz a seguinte safda:


tn
End OfS~1 l!ct1on

A linba 321. a linba2 de pt e a coloca em w a.

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.

1000 yyy
1020

1030
1040

A linha 35 reto:na.

controle para a lin ha 9.

AlAUSE ~

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

A linha 10 transfere 0 controle para a linha 37.

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 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 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 38 defin e urna area de trabalh o loal wa que tem a mesma estrutura que uma 1inha em pt.

592

APREN DA EM 21 DIAS ABAP/!

D~ lU D IlIJURI2A PIll'HOO PlIl.iMETRDSP.... SU~HAS ,.i<"

593;

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.

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. .

As sub-rotinas externas sao mui to semelhantes a sub-ra tin as internes:


As duas permitem que as parlmet ros sejam passados .

A original ainda nao foi alterada.

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
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

As duas permitem parimetros formais digitados. As duas p ermitem que as parametres sejam passados par valor, par
valor e resultadc e par referencia, As duas permitem defmic;6es de variaveis locais.
A Figura 18.5 ilustra as difere ncas en tre sub-retinas exte mas e internas .
Fig ur a
18 :'jj

conrrole para a linh a 45.

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.

As d~re~ enln! svb-n:JIinos eJdemos e


in1emos ,

mesmc area

reportttx1811 .
tcbles zlxllo1 dota 11 .

CJ

- I -... CJ+--ld;fe..nte

demem6ria

repartzix1812.
tabl., zlxllo1. dote 11 .

c:::J

Definindo e ,hernando sub-rotinas externas


H YO ... O

areas de mem6rio As seguint es sao diferencas en tre sub-retinas intemas e externas:


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.

retina extemo Umo sub-

e oquelc que reside em um.prog romo dlferente que a


report ztx1812. fom 51.

lEUO "
FigurA 18 4

insnyo perfom que a che rne . A Figura 18.4 ilustro ume sub-rotina enema.
~ po rt

Umo ilustro o de umo sub-lOfino~, .

zt x1811. perfonn sl (ztxl812) .

=r
~

?
endf onn.

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. .
fato de a verificaC;ao de sin taxe ocorrer em tempo de cxecutj2.o imp ortante, pebs duas razee s seguintes:

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. As listagens 18.11 e 18.12 ilustram uma cbam ada a um a subrotina

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 ' .

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.

..

e
5 ztx lfat-1 1fnr" '1000'.

594

APR ENDA E 21 DlASABAP/4 M

DIA 1.: MO OULARI~O: PASSANOO PARAMETROS PARA. S lJ8.ROTIN AS

6 perfann sl (ztxIB12). 7 write : I 'f! .', fl . B / 'l ifnr II', ztxlfal-lifnr.

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-

!NlRADI~

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.

mina qual meeodo e utilizado. 0 coepo deuma tabela interna pode ser passadovia usi ng au chang; ng.

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.
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.

P&R

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 ? 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.

avariavel global" fl para ztx1 812. fl


1550

Em ztx lB12, a linha 7 atribui 9999 a ztxlfal . programas.

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 .

596

APRENDA EM 21 DIAl ABAP/4

Workshop
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".

o Workshop oferec e duas maneiras de voce verificar 0

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?

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

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'.

Utiliza nd o a instruc;;Cio j Dcl ude


KOVO.... TERMO"
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). Urn progromo que indui o utro

stert-cf-se 1ect 1on. flag .. '5'. write : I 'i n Start-Of-Selection'. I 'pt >', pt.
tcp-ot-peae . add 1 to ct r. op write: I 'T of page, fla g . ', f l ag. 'ctr .' , ctr.

milO ,..

NOVO ...

e conheddo como um programc de inc/usco.

ul t ne.

;'

.: .

~?~V;.~.

h"p://www.compus.com.br

598

, PREMD, EM 21 D ABA P/4 I,S

D~ 1 MDDUl.\R~o, MODUlOS DE FUM\AO, PAmI 9,

599

Sinlqxe para q inslrw;Co j Del ude


~ 0 seguinte ea sintaxe panla insrruci o include.

OOIAOI~ Lisla g e m 19.1 Um progromo de inclusoo


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: ztx19 02.

include ipgm. onde: tpgm e um program . do tipc 1.

5
6

ztxI903 .

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).

8 top-of - page. 9 write : I ' Company Codes for Vendor ' . p_l 1f nr . 10 ul tn e.

EH1UOI~ Lista gem 19.2


Z sel ect s i ngle

Este progromo ~ incluldo em zt xl 901

1 .... IN CLUDE ZTX190Z. * f r'Olll zt xlfal where l1fnr p_l1fnr .

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.

EHTliDA ~ Lista g e m 19.3 Este progromo ta mbem est6 inelui o em ztx1901 d


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

. F Igura 19 1

Umc ilustrofiOo cio

R eport lA.

Programo ZS

insfru o i ncl ude.

Indude ZB. +f---~" Write 'Hr. lnclude Zc. l_

o c6digo nas Listagens 19.1 a 19.3 produz esta safda:


SliOI ~ . INluSE lI..
,.
COIl'+Jany 1000 3000
Cod ~ s

Q uando 0 progroma gero do, este Ii ) resulta do do

Progrbma

ze

f or Vendor 1000

Write 'T here'.

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.

c6digo-fonte.
Re port lA write 'Hr. Write 'There '.

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 onase como urn nnicc prograrna. como se as linhas de c6digo dos programas incluidos tivessem sido digiudas direeamecte em ztx 1901.

Na Figura 19.1, za eo programa de Inclusao. Os prcgramas include sao zb e r c. No mem en to em que za egerado, 0 ccdigo-fonte para zb e zc einserido 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.

A SAP utiliza includes para reduzir a redundincia de c6digo e dividir prognmas muito gnndes em unidades men ores.

OIA 19.MODUlARIZA(.io, .6 00'05DE F N O PAm, , U (.i ,

101

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.

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 SINCLO No te lo de selecoc para O, expondidos, execute a programa R 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.

NY O O.... Code grupa de ,fvnl;oo e ca nhecido pe r urn ;~entificodor ~e quotro corode~s lWiO" chomodo 10 de - ropo de fun~60 . Se voce cno seu pr6pno grupo de fun<; oo, g 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....
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. .

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 '

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

de cri' c;iio de um grupo de func;iio e de um modulo de func;iio dentro ~ele.

Para ilustraros gropos de fun~ao) descr everei resumidam ente a processo

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.

ux:x
e

Um m6dulo de func;iio include


Coletivamente, esses componentes sao conhecidos como grupo de fun seu ill de gropo de fun~o de quatro caracteres. 0 sistem a automaticamente colo.ca duas ins truCJoes ; ncl ude nele:
~ao . Seus relacion amentos sao ilustrados na Fi gura 19.2. nome do programa principal sera sa plfgi d, on defgid

incl ude ljgidtop. incl ude ljg iduxx.

602

I A'RENDA EM II DIAS AWI4


Flg u r Q 1 9

Top Ind vde

Figuro 19 3

Esse 4 0
re/oclonomento

A fundion Ubrcry
Injfjol~ .

hier6rquico dos

Proqmmg Principa!

componMmsde urn
grupo de luno.

SAPLfgid r-----..",/ lnd ude lfgidTOP. Indude UgidUXX.

function . pool fgid.


~

MQclulQ$ de funco

lfg;dUXX 'NCLUDE lfg ldUOl ' NClUDElfg;dU02.

lfg ldU01
functionz tx1901.
write: I tir. endfunction.

lfg ldU02
fun ction :r. ~

tx1902.

endfunction .

TEllO r

NOYO'"

0 primeiro progromo include -

ljg tdtop - eccnhecdc como 0 fop indude. Dentro dele voel!pode cclcc cr defin i1jOes globaisde dodos. Estossao definic;6es

de dcdcs que seo globois pe rc tcdos as m6dulos de funJ;oo dentro do grupo.

KOYO .....

ltUO

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 .

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 princi al de grupo p

de futHj:O ztXQ. c

Dentro de cada include mencianado no UXX esta a codigo-Icare para urn m6dulo de fun"o.

Acessando a bibliotecQ de
TWO ,.
NOVO ...

fu n~ao

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

e
A Figura 19.5 mostra 0 UXX p.n
0

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.

grupo de fun'iao ztxa.

604

APRE NDA E 21 DIAS AB AP M !4

OIA 19,M OOUlA'lZA(.io, MOOUlOS O!fUNlio.PAm1

605

urn m6dulo de func;ao antes de trabalhar nele, alterar 0 c6digo e entao executar uma verifiCa~o de sintaxe nesse m6dulo tinico antes de reati vs-lo. Dessa maneira, os demais m6 dulos de fu nc;ao ainda podem ser cham ad os, mesmo se voce estiver trabalhando em urn deles.

Definjndo dodos dentro de urn mod ulo de

fun~60

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).

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 deini~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.

Atjva ndo urn modulo de

fun~a o

Definjndo a inte rface de mo dulo de


MaYO....

fu n ~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

Pore passor pcrerretres pore urn m6dulo de funo, 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; o. Ela e tcmbem simplesmente ccnhecidc o como interface . No restante deste cap/tvlo, n6s vamos nos referir a interface do m6dulo . de fun~ao simp!esmente como interface.

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

606

AmMDA EM 21 DIAS lBAPH


Fi gurq 19 6

D~ lU O U D URIl.l(.io, M6DUlOSDE FUH ~.PAm l

607

A tela Imporl/Expott

Porometer Interfoce.

1Bl!O ~

NlO... 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.

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.

1i10 ...

NOlO ... TrulO ~

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 . Umo exc~oo e um nome para urn errc q.ue ocorre dentro de um m6dulo de fu no . 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
Fi gurp 1 9 7

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--. Os pargmetros de expcrtacfo e impona~ao sao passados po r valor.

A tela Table

Parameters! Exceptions Interface.

as parametres de altera~ao sao passadcs por valor e resultado.

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).

e um poueo esfranho poro a moiorio doe programadores . Pense desto

o cc ncelto de um pordmetro de expo rtc c;o o sendo possado per valor


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:h omodo. Se a instruo 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.

Voce digiu 0 nome do parimetro na primeira coluna e os aeriburos do parimet ro nas colunas restantes. Digit e urn parimetro por linha.

;. -"', ;",t'
~~,.
'F

.~1r -r'

Oil19, MDDUUlUZA(AO,M6DUlOS DE fUN~ D, PAm1 "_"".,r,.--'1'"~"I:,Id' ij.t:H:::D~ E ~~:.D::r:AS::A:'~,,'",-----------------------~--l_--------------------=:::.:::::=~:::::==:::'::3:=='-' 609 ~:,; " A.:cM 11 : :; : AP 4 ~.:;

d Utiljzondo porometrosigito dos s noo d l as e lgito 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

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.

~ CUI dado

Nco a ltere nem exduo .esses co mentOrios; eles sOo gerod os palo sistemo. Se voce os alteror, 0 m6d ulo de funo pode nco funcicno r.

Na Figura 19.8, voce pode ver que pt, p2 e p3 sao pass adcs por valor.
Figura '9
8

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

Os comenl6rio s ge rados pefo sisl'ema no parte


JU periot do

~
.,

...

",-

_t1.. z tllf1oo.
ut",.h... ,

......,...~

c6digo-fonle.

or, .........,u1

1_.1I1C-

.IIlUm1J....!rrE

"niLT

Ch o rna odo

m6cUJJJIj;io!:>s.J:d;ue:Jl wr; a O : fuJJo ~ .ll.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 ,.
2

1 report

zt xl904.

3 write: I ' B ore Call' . ef 4 call funct i on ' Z_TX_1901' . 5 wri t e : I ' After Call' .

610

O~ l,,"OO UlARllA(l o,MOOULOS DE FUH\IO. PA 1 ITE


AP' EH OA EM . l 0lA5 ABAP/'

611

o c6digo na Listagem 19.4 produz est>. su da:


B ~fal'1! Call Hi f rom Z TX 1901

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

funcsa

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. 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. .

Figura 10 9 Esta figure ilU5fJ'(J


CCIT1 05 0

data : v1, , 2, ,3.

par6metrDs

sOc

possod e os recebidos do m6dulo de fun;oo.

para valores exportodos pa re 0 mOdulo de func;60' 0 atribuiQio e do dlreito pore o esquerda. para valores import dos pora 0 m6d ulo o de fun o, a otribuio Ado esquerdo poro o direi'o.

o esq uerda de _

names de par6metro

vari6veis
0 direita

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::-

><
m

call f unct ion 'F' [exporting pl '" , 1 . . . ] [1mport t ng pZ .,Z . ]


[changing

[tables

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

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 im port; 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.

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.

Neste ltvrc, 0 ferme "pa rflmetres de importoo" 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 funo. termo "parametros de exportol1co se m uma referenda refere~se a parometros exportodos do m6d ulo de fun o.

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.

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.

612

APREMOA EM 21 DIAl AUPH

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
12

t ,

report ztxl905. parameters: apt type 1 defa ult 2. . op2 type 1 default 3. . data rslt ~y;J1! p dec1llllls 2.
call function 'Z_n_DIV'
exporting

oper and 1 oper and 2 art"sult

pI p2
importing

- opl op2 r sl t ,

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.

Na Lisragem 19.6, a linha 10 executa uma divisfc simples.

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 .
rslt .

13 write : / opl.

'I' . opl. I.' .

A liaha 13 escreve

result adc da divisio.

fKIDDA ~ UstClgem 19.6 0 c6digo.!onte pora 0 m6dulo de run,co z_tx_di'


1 function z_tx_dh . 2 . ... -- ------ --.----- -----.-.-. ----__.

l Local i nterlace:
4 5 6 7 ."'fr

IMPORTING . VALUE(Pl) TYPE I DEFAULT 1 VALUE(P2) TYPE I EXPORTING


VALUE(?3) TYPE P
__ __ __

Pressione 0 botoo Pattern no tela AW/4 Editor. Edit Progrcm para inserir automaticomente 0 instruo _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 atribuies de porometrode inte~ce pore voc6.

C[jendo um modulo de. fu nc;a o


t
Utilize
0

seguinte procedimento para criar um m6dulo de fun~ao. Para um

10 ,3 ,1 / ,2 .
11 endfunction.

exercfcic, siga este procedimento e erieurn m6dulo de funl;jio exatamente como


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).
SCRHHo.M~ Inide a Scree~CC!m "Howto Creote.o Function Module- cgorc.

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

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. " . A linha' -4- define uma varidvel nomeada rs lt ripo p com duas casas decimais. .

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.

D. tel. de ABAP/4

~.

614

APREMDA E 21 DIAS A P/4 M 8A

DIA 19, MODU1.4RI1A~ O, MaOUlOSD FUH~D. PAm 1 E

615

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 .

Figu rn 19 10 Esso ea tela Function Module Crecre:


Administration.

I I

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.
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.

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
fun, ao. .
Utilize 0 Object Browser perc lister as mo dules de fonr;60 que \ICC! locol Pdv. ObjBd s e pressione 0 botec Display.

Agora stria urn boa hora para criar u:". pro~a de AJ3AP/4 a fim de

criou. A partir do Obj ect Browser escolha ,

Re_umo 5

I
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.

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
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.

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.

616

APR EN DAEM21 DIA S ABA P/~

DIA lUDDUlARIZA(iD, MODUInS DE FUN(iDPA 1 , RlE

617

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.

Parametres digitados e njio digitados pcdem ser especificados e passados por refersncia, p er valor au por valor e resultado.

I Fa~a
Utili e possoge m pa r refe ~ ncjo pore z 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

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.

Nao a ltere as coment6rios gerodos pelc sistema no.porte superior do c6digo.fonte do m6dulo de func;oo.

o
o
Wo rkshJ./.p oj.L

Como decide em qual gropo de fun~ao colocar urn novo m6dulo de fun~aa? Quando dev o criar um nov o e quando
reutilizar urn existente?
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.

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.

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. 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.

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.)

...,----_-'--

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

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.

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 ' O ne' 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

startpos_col = 1 startpos _row .. 1


t1tletut .. ' Look Ha, a W ndow' i

.. 30

uporti ng ctctse tl.bles valuetab endfonn .

.. resul t .. i t .

M odularizaicio: 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
!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
NOlO...
Da is tipos de dodos

globois podem ser definidos pore um m6d ulo de func;oo :

func;ao.
As defiaicees de dad es den tro da interface sao conhecidas apenas a partir do m6dulo de funliaO. Se a interface for definida como in terface global, as definicoes de paxametro sao tam bem conh ecidas dentro de todas as sub -retinas que 0 m6dulo de fun~o chama . Esse ripe de clados globais nao epersistente ent re chemadas de m6d ulo de funli ao .

nllp ://~.compus.CDm.br

~~~

~~~

.a_


,.

. .....
621

620

A'IE",A E' 21 DIA S ABAP/'

D~ 2UD U IZA(.iD .ODULOS DE FUH(AD. PARTE 2 D UR ,

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 interf ce local sao inacessiveis a 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

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

10 f'~o... ;;.~111 ;;;I;2- - -- - - - - - - - - -- - - - - -~c f11I .


11 12 13 14 15 16
17

cal l functfon 'z TX 2002' expcrtt ng p_i n . parvU n exceptions oth er s 1. endform.

18
20 21 l2 23 24 25

is f';orm ;;.:l111_':;I~3-.- - - - - - - - - -- - - - - -;;;-:c fm


eau function 'Z TX 2003'
irport1ng - p_out fl excepti ons oth ers 1. endform.

- -

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.

ENIllDI"' Ustagem 20.2 Este .

cha modo do listogem 20.1


-- - ~-- --- ~ ~

e0

codigo-fonte do primeiro modulo de fun<;oo

1 function z_t x_2002. 2 _3 *Local i nt er face : IMPORTl N ". G_ 5 V ALUE(P_I N) 6 7 gl IUn. 8 endf unct fon.

__

.~

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
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.

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: E XPORTING 5 VALUE(' .OUT) 6

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

-----

--------.-- ------------ ---.------~

EHTlADA~ Listagem 20.1

Este prog romo ilustrc a persisfencio de do dos globois

1 report zh2001. 2 par ameters pann_1n(l0) defaul t 'XYZ' oblig ato ry. 3 data fl( 10) val ue ' HUT'

7 p_out g1. 8 endf unct1on.

5 per fom: cal l _flIlIl , 6 call _fml3. 7 write: I' tl . ', fl.

-.

~. .. .. .. .. .. .. ~ .. "!II' .. .. .. ..

.. __

.-.~

. - . -- - - - - - - - - D~ 2UOOUWJZA>\UODUlOS DE FUN>\D, P Am I
I

APRE NDA EM 21 nus lBAP H 622 L:;..::.:.=:.:::.:::..:.::::..:.:::::..:.:..

--/

623

!Hl1ADA~

Listagem 20.4 Este e 0 incl ude supe rior para 0 grupo de fun~ao zt xb - ztxb que cc ntern as m6d ulos de fun~ao mostrodos nos listagens 20 .2 e 20 .3

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

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.

de dado do ABAP/4 na colnna Reference Type.

Passa ndo uma tob ela interno via export; ng/i m t t ng por
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?

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 m porti 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 : A parte da in terface tables A parte da in terface exporting

tmADA Ustag~m 20.5 Esse prog ramo passe tob elcs internos pore urn m6dulo ..... de fun~oo

,
9

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.

c a be~ J.lho

cabt~al ho

7 call f unction ' Z_TX3 006 ' export i ng 8


i t!

10
11 12

importing
1t2

tab le s

t':,"0- _
624

AAa~.A . a . . .

A.

_ -.....,-

,-

..,'t:' ........

. . . . . . . -- - - - - - D~ 20,M DDULlRlZAyiD, llliOUlO5 DE FU.yiD, PARTE 2

"RE'DA EI 21 DIA' ABAP/4


13 14 15 16 17

625

l t4 changing 1<3 excepti ons others

it_a
it_a[ ]
i.

9 ." 10 It11 ... 12 It.

IT4 STRUCTU LFAI RE CHANGING. VAlUE(IT3) TYPE TABlE


.~

--- --- -- -_. _.----- -- -- -. -. - -- -- -- -----

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 endl oop.

Porcmelefs mostro como pa ssor 0 C orpo do tobelo inlemo.

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.

Fi g u r A 20

~~::tjt'_'S*'.III'lo"-~~~

A telaTobIe

- L_ _

g;-;

;- x ;,_
"..- . ~ .-....

. ~f?:.";'>r.-~ .. _~,,":."' ~ -::o::.-' 'G: ~~' ~'"

,, ~

~~~i

"

Parameters/ Exceptions mastro


'lo-".... '....,t.~...-it .

-s

~ ;0~ '

~ ;- :
~' .

como cesser tlma


1o~/a in/eme junlo

i;"

g)':riI;:~,""eu; " ..... ....

::r~~;~",",,~""

-' " . . - ~d"'IIC.,~ - -

,n

~.

com $UO Iinhe de


cabe~olho.

m
; "! ......"'~ ....,~."'.

EMTRIDI.... List agem 20.6 Esse. 0 codlqo-ionte para chomodo 0 partir do Ustogem 20.5

modulo de func;oo

1 2

It"

_.

. _ . _.

. _

o c6digo nas lisragens 20.5 e 20.5 produz esta saida:

3 ....Local t nterface : 4 IMPORTING YAL {ITl ) TYPE TABLE UE 5 6 EXPORTING 7 YAlUE(lT2) TYPE TABLE 8 TABLES

.. ..

<.

"

l-

... . . . ....
""'""'

. --.
D~
0

- .-

626

APR EN DA E 21 DIAS AWl' M

,a, MDDUURI2A(lo, M6DUl OS DE fUN(lO PARTE2 627 .

SAioA ~

Ill: 1000 1010 1020 IT4: 1000

Na Listagem 20.5, as linhas 21 a 23 mostram qu e 0 conteudo de ita foi alterado pelo m6dulo de fun,ao. As linhas 26 a 28 mostram que it_ b pelo modulo de fun,ao. contecdc de i t_a foi copiado par a

1010
1020

D efin ind o as sub-rotinas em urn grupo de f u n<jo o


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 .

AFTER CALL
IT_A: 1

2 3
IT_B: 1000
1010 1020

ANALISE ~

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).

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.

~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

2. Selecione 0 bono de 0piSao Source Code.


3. Pressioae a botao Change. A tela Function Module: Edi t emostrada.

u tiliza cso com it1 e i t3 porque estas njio tern linhas de cabecalho.

As linhas 15 a 17 escrevem
t rab alho wa .

conteudo de it! urilizando a area de

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
0

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.

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.

~&A " A A A A" a a~a


628
HRENDA EM, 1 DIAS ABAP /4

.".a..-. . . . . .

a .I I_ X.,,~,--; w -a ....... I I a ~.~



DIA ' U D DtllARllA\AU O DlJlOS DE flJN\AD /AiTE, , ,

629

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,

Liberandc urn modulo de fun\;oo


MOVO

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 R eleose. Depcis de escolher esse cominho de men u, pressio ne e tede Enter para comp leter 0 processo de cance!omento.

JEiMO

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 utili or em seu c6digo. Fozendo tssc, bosicomente voce est6 prometendo noo oJtera r z 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.

i.:.

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. - -.

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. D igire


2 Pressione
0

0 nome do m6 dulo de fun~ao que voce quer te stae n o campo Fun ction Module.

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 w t e denn o do m6d ulo de fun~io. ri 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

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 ot el inferior da caixa Ge neral Da ta, voce veri N R eased. 4. Escolha 0 caminho de men u Function M odul eRelease-Release. A mensa gem Released aparece na parte inferior da jan ela na barra de ot status. Na extremidade inferior direita da janela, N Released muda elease On e ~ seguida pela data atual. para Customer R 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

..............
630
APiEM DA EM21 DIA5 ABAP"

_~~--

-- -

DIJ. 2UDDUWIll>'. d'ODIlO FUM>" , '.uTE 2 SDE

631

aparece embaixo dele. P ara parametres tabl es, as conreedos "depois" ap arecem acima dos cccteudos "antes" (original). Na Figu ra 20.4, a 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

de urn clique duplo em qualquer linha,


Figura 20

tela . As seqaenc lcs de teste tcmbem podem se r ccos trurdc s utilizondo o bctoc Test Sequence. .

A tela Test

Environment lor Function Modul s. e

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 te/o 1VJ.4P/4 Repository Infetrnotion System


como oporece

A kla Test FundiOfl

Module: Result
mostro os yo/ore s a ntes e depo is pam
os pa l'6metros

in;ciolmente.

changinge

tables.

2. Expanda a linha Programming dand c urn clique no sinal de .di,ao (+ ) a esquerda dela. U rna subirvore e mo strada embaixo dela.

632

IA M PRE OAEM21 DIAl A'AP!'


Figura 20 6

Dl 211: MOOULARIZAtA0: MOOUlOS D A EfUHtAO PARTt z ,

633

A tela ABN'/4
Reposjtoly
Info rmation System:

Function Module com os m6dul s de o UnCiao expostos.

l,
I
Eigura 20 7

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.)

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.

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 Multip le Selection.

A ceee ...&11Not.

."

Fig u r g 20 9
A ~Jo Maintoin Selection Options.

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

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 R ep05itory

/nfonnationSystem. A seta verde no fim

Figura '0

10

do linha m05tro que


mais de urn criteria

Atela Multiple Selection com umo barre de roJogem no Iodo direffo e camposRanges.

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.
~ ~

AA

.~.A

A A ...
&
~

- 'l l & . A & a & ~ 4!


DIA 20, MOOUlAlJ2A(.iO, MODUl.Ol DE ru""D, PArTE I
F i gura 20 1 4
I

III!-

636

APlENDA EM11 DIAl ASAP"

637

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.
Figura 20 13 A ~fa Fundion Modules.

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 doccmentao, nodo ocontecer6 quondo voca der um clique duplo nele.
Figu ra 20 1 ,

A docvm emo~Qo
od id onol para urn
pa nimetro.

'.


638
APREN" EM 21

eus ABAP /~
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

PIA 2UDDULlRIlA(AD,MODUlDS D EfUN\iO. PARTE 2 I

639

Figura 2 16 Esse e 0 modo como B~===


(:I

~~~~~!!1~~~;);!;~~!;!!!;!@ ~~

tela Function Module Creote:

Adm inistration

voce provo velmente noo !ere urno

listc inteiro

oporece depais que o m6du/o de fvno foj criodo.

de 500 m6dulos de funr; 0. Refine seus criterics de pesq uiso pa ra 6 reduzir a nCrmero de ocesso.

Explorando
un~Cio

OS

componentes do seu grupo de

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. 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 m essage. 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

SClHNWI ~ lnlciea 5creenCom M loring the Components ofYour Function Gro up ogoro. Exp

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.

.......L..A......._

..&...JL

a~

640

APR ENDA EM21 DIA ABAP" l

DlA2UDDU,","UIAD, MODULOI DE FUNIAD. PARTE 2

641

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
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.
~_' . H. :~-:-o;.~~~_ .~_ ;,1',. '~~:~

Fig u r a 20 1 B

Um erro de sinloxe
detedocJ em tempode ellKUo dentrode
um m6dulo de fum;60.

ttl!

,pc

11 BriE

"'iflil

;..~~~~-'_

' ''''

V
"J 11 .); .. if .

~- :;- 4 x "

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
5mENCAM~

erro, utilize a seguinte procedimentc.

... lnicie a ScreenCom -How to Fix on Error in 0 Function Module- oga ra.

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.

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.

Lo caliza ndo e corrigind o erro s em modu les de f u n!;o o


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

Confi gu ran do

valo r de sy-subrc no retorno

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

Normalmen re depois de retornar de urn m6dulo de fuoiSaO, 0 S Istema. 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 raising

m age ess

Utilizando a instru(;fi o r aj se
_. mstrucac rat se para sair do m6dulo de fun,ao e configure 0 valor de .... U t ili ze a .
sy-s ubrc no retorno.

lugar. A mensagem de eITO que talvez vocevejaapareceem uma caixade didlogo SAP R/ 3 como a mcstrada na Figura 20.18.

A.
642
CIl

.- .

..

. ..

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

. .. ... . . . . . . . . . . . . . - . .
D~ 2'1. MODUWlL\(.i D,M6~ DE FUNIAD. 'AilE 2

APRENDA EM 21 DIAl ABUII

643

S
Z
m

Sintaxe para a
raise xname .

A seguinte e a sintaxe para a instruc;ao raise.


onde:

instru~ao

r a'i se

9
10
11

12
13 14 15

xnume e 0 nome cia excecso a serconfigurada.

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.

T
Os seguintes po nte s se aplicam :

EMmDI~ U.lagem 20.8 Isla e a m6dula de lun~1ia chomoda do Listogem 20.7

xname ped e ser qu alquer nome que voce tenha composto, Ela DaD [em
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 IM TIN POR G
5

ceeo " ". e :.


- ao coloque xnane dentro de aspas. N

.a

VAlUE(EXNAME)

EXPORTI N G
VAl UE (POUT)

7
8 9
10 ."

xname DaO pade ser uma variavel,


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.

EXCEPTION S
ERRO _A R ERROR_B

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

11 ERROR_C 12 ERRO X ft 13 -- -.- - - - - . - - - - --------- ------ - --- - ---- - - -- ----- - --. ------. 14 pout 'XXX'. 15 cas e exname. 16 w hen ' A' . r ai se error_a . 17 w hen 'B'. ra ise error_b. lB w .' C'. r aise error_c. hen 19 when 'X'. ra ise error_x .

20 enecese. 21 endfunction.

Iste ilustro 0 processomento do


;ns1ru~6o

raise .

coli function I Z XXX: l ~ Z_XlOI.. fundion exceptions raise error_b. error_A ~ 1 = 2+- este valor e ~ . error_B other ... 3 otribuldo a endfundron.

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

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 rep ort ztx 2.007. parameten panrL1n defa ult 'A'. data vout(4) value ' I N . IT' call funct ion 'Z_TX_ZOOB ' exporting exname pann in importing pout. vout

partir do interi or

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

"''''','''' .....'" ~~

it..,

. . -644
APiEHDA EM 21 DIAS ABAP'1

---

- -

- -

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

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 .

corresponde ao erro.

Sinlaxe para a
Ul

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.

A sintaxe para a instru~ao message . . . rais ing e a seguinte:


message tnnn{cc) [with vl '/2 . J raising xncne

inslrv~ao

message .. raising

onde: teo tipo da mensagem (e, w, 1, s, a au x).

nnn

e0 nutnero da mensagem. (ee) e a c1asse da mensagem. e0


nome

'11 e '/2 sao o s valores a serem digitados no texto cia me nsagem.

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. . 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.

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- m y, sgt sy-msqno e sy-msgvl par sy~msgv4. Estas podem ser examinadas dentrc do programa de chamada (depois do retorno). Quando a instrugao m essage . . 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 ). 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.

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.

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 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

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.

APRENDA EM21 DIAS ABA P/4

D~ 20, MDDUURlU"D, M6D D UlDS EFUN" D pure 2 ,


23
i~ o rti n9

647

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-m SaOconfigurados e os valores de expc rt acoes pass ados sg por valor sao reto rn ad os.

2'
25

pout

vcut
1 2
3

exceptt ens
l!!!rror_e error_w ., error_i er ror_s error_a er ror_x = oth ers endfonn.

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,

31
32 33

4 5 6
7.

as

34 35 36
37

._---..,.,.----,--,....,-.,.--==== : ca1l_and_dont _hand1e_excepti on.


tOT"lll

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

38 39 40 41 42

call funct ion ' Z _TX_2010' expert! ng msgtype z p_et ype impo ng rti .. vcut , pout endfol"ll.

As listagens 20.9 e 20.10 ilustram 0 efeieo cia instrufj3.0 message . . raising.

d E NIRADI" L.ista g em 20.10 o c6digo-fonte perc 0 m6dulo de funlioo chomodo " o


,. Llstc qem 1 2 3 4 5 6 7

20 .9

~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-m d'. sy ~msgid. s9i 15 / ' sy-m sgno' . sY-lllSgno . 16 / ' sy-msgvl' . sy-msgv l.
17

f unct10n z_tx_2010:- - - - . ~ - -~-~~. --- ---_. -------- -- -------- - - ._-. -- ~- - -- ---- - --""-lo cal interface:

.... "" ." ~ 9 ." 10

18 . _ ---..,: --,-,---::_ _,..,19 form call_and_hand1l!!!_except 10n. . 20 call function ' Z _TX_20IO' 21 export ing 22 msgtype - p_l!!!t ype.

IMPORTING VALUE(MSGTYPE) EXPORTING VALUE(POUT) EXCEPTIOtiS ERROR_E ERROR_W 11 ERR OR_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) w ith ' 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'. m essage e994(zz) w t h 'Error S' r ai sing error_s o i 22 when ' A'. message e995(zz) with ' Error A' rais i ng l!!!rror_a . 23 when 'X'. m essage e996(zz) w ith 'Error X' raising l!!!rrOT_x. 24 eeeeese , 25 l! ! ndf unct 1on.

A A A
648
AmHOA EM21 OIA' ABAP"

. .. . . . . -- - - - - - - - - - OL\ 21> MOOUl.lRlll(.io, .60ULO' DE FU'\AO PAm2 .

649

Utilizando as vslo res de parfrnetro padrao, 0 c6digo nas listagens 20.9 e 20.10 pro duz esta saida:

SAiDA ~

sy- subrc
you! INlT

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

sy m gt y E s sy-msgid ZZ
sy-msgno 991

bota c Save e

bot ao Back. Vo ce volta

a te la

inicial

Function Library.

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 m sage .. . es ra i 5 i n9 e execu tada. Is50 aciona a excefjao error_e.

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...

lnkle

ScreenC om "How to Insert a call fund ion Statement into Your ABAP/4

SCREENCAU"

Progrom" cqcrc .

A excefjao er r or_e

mensagem ndo eexibida pan. 0 usuario. 0 controle retorna para a linha sq 25 cia List agem 20.9. 0 valor de vout nao ~ alteradc; as variweis sy- m sao atrib ufdas a vaIores. Na Listagem 20.9, a linha 26 atribui 1 para sy- subrc. A linha 33 ret o rna
0

e tratada

pelo programa de chamada, entaa a

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,

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.

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 ,

651

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 .

Work.:>Jh o p.Ls w~

o Workshop

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.

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 D codifica others e uma excectc e configurada dentro do aO 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.)

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.

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

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

II

APR END' EM 11 DIA S ' U P/4 Os blocos de processomento s50 definldos pe las po lovros-chove de evento e sdc assim executodos no tnvccccec de certos eventos relevontes .

'IAIU ElAS DE smll'

655

Utilizando

eye nto at sel ec t; on- s cr een

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:

a evento t ntt f et taat t cn

0 evento at selection-screen
0 evento at user-corrmand
0

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 .

Utilizando
0

eye nto at use r -command

Utilizando

eyento ; n; t; al ; zat ; on
eventc init i al ization:

!a
Z
m

0 seguint e c6digo most ra a sintaxe para


report ywhatyr. tab les : marc, mvke.

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.

data: p_year for sy-datum. 1n1tia 11 zati on.


if sy-datUIII ge '01012000'

Sintaxe pa ra oevento se1ect i on-s cr een pushbutton


t on:
sef ect t cn-screen pushbutt on
e Xil~ l @l

pyear .. ' 2000' . else . .

o seguinte c6digo mcstra a sintaxe para a event o sel ect i on-screen


user-comnand 1234.

pushbut-

p"year ' Y eryear ' . est


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,

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.

~ m

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:
se1ec t 1onscreen 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
~"

~ .~

......... --.- ..
"mo. EM,I DIAS AB." .
lange nglis h ' Y'.
when 'genii' .

.. -D~ 'UillS D< SRf\.iD

-----.
657

656

1anggerman 'Y'. endcase ,

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, FOR EYl} K 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) .

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-UCO armazen a 0 no me IllTl 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

1 ,

Umo jmpreu60

dos

botOes.

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 limit d os a teclas de o 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.

Criar uma atribuirao cam a campo. Essa e a mais complete das tres po 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.

...

~ ~ -~

!I

........... . . . -""'D~ 2UElAS DE SElf\.lD I

658

APmnA EM 21 DIAS ASAP"

659

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.
sistema:
set ect
11

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
0

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

registro nao for

o c6digo a seguirmostra a sintaxe para uma instrucao sel ect geradapelo


from table 1 where table 1-exam! f lc examl and table).exam2 fk::exarn2 .

(Dj;..

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.

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.

E boo

Yolidoc;a o de dodos utilizondo motchcodes


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 . ,mo1 chcodes 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 .

KaYO .... TaMO r

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.

mo "

NOVO ....

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 c refere 0 urn registro do tobe le de verifi ac;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.

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.

NOYO ....

mMO r

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

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.

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

660
'PREHO' EM21 OIAS "AP"

..

~.

. .. . . . . . - - - - - D~ 2J,1HASDE SELE\lO

661

uma visualizaeio do banco de dados. Nesse casa, a metoda logicce 0


mes mo que
0

arm azena mento transparence.

1550

inclu i apenas tipos

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).

de atualizacao I e K.
Fi g u r A 2 1

A tela iniciol do Dote Dictiona ry.

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 3
"""",~<~;''';'i' .JI_,:=: .'J:- -'''''' L.ol;

;r.."

A tela de otribufos Main tain Matchcode O b;ed.

Na tarefa seguinre, voce aprendera a seguir 12 passos faceis para criar e manter objetos marchcode. Inicie pela tela Data Dictionary mostrada na Figura 21.2 e complete as seguintes passes:

1. Escolha urn nome p ara sen novo objeto, de urn clique no bono de 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

Figura

21

A tela Creo~ Obied

CatalogEntry.

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.

~~

A PREMDA EM I I DI AS Am"

~.II

I
D1A IU,USD ESEll\lD I
Figu r a 21 7 Os afribulos de matdJcodedepois do alivoo.

662

663

F lgurq 21 6

7. 0 sistema. pedid para voce criar urn ID novo se um nao existir (veja
a Figura 21.8). Para fazer isso , de urn clique
Figu rA 21 8

Os otributos de matchcodeanles do
Qtivoo.

DO

bo tao Yes.

Urn aviso Creote

Obi""

8. Na tela Create Match code ID mostra da na Figura 21.9,especifique urn mimero de ill de ma tchcode, entradas validas que variam desde
todo 0 alfabeto a qualquer numero. Voce tambem p ede dar urn clique na seta para baixo para visualizar urn intervalo de entradas vaIidas.
Figura 21 9

A co ixa de dia/ogo

Create Matchcode 10.

9. Vamos visualiza r algumas possfveis entradas (veja a Figura 21.10) . Como voce pede ver, essa janela de Iista mostra urn mi mero de IDs de matchcocle e uma descricsc curta de cada urn . Escolh a urn e de urn clique na seta verde .

A -a
664

.A"'~ I...I~

. - - -- 01. 2UnAS DE sa(.lO

.PRENO. EM 21 01.1 ASAP/.


Figura 21 10
Figurg 21 1 2

665

Umo listo ele cc essc

Motchcode.

A caixo de di6/09o Maintenance

Selection Conditions.

10. Siga. as passes que aprendem os para manter as campos de sele~o para "esse ID de m archcode, cerrifique-se de inserir um tipo Update e de urn clique em Save (veja a Figura 21.11). Discutirei ainda sabre tipos U pdate mais adiante nesta selSao. N esse ponte, voce pede inserir rnais crirerios de selecao pr essionando 0 bono Selectio n C riteria.
F igurp 2 1 J 1

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).
Figur A 21 13

A monufeno de
oIribvtos motdl~e.

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 otivao do seu ob jeto.

666

APREH EM21 DIAS I 'I P/. DI

D~ 2UElAS DE sElf\.iD

667

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

durante a crialJao inicial. Eis uma descricio de cada urn desses cinco ripos:

a telas de selecoc pre-projetodos. Esses crttenos de selecec podem ser modificodos para melber se odoptorem as sues necessidades. as relot6rios que ndc tlv erem as telos predefinidos devem ser rncnfidoa pelo programador do relat6rio. E ssas interfaces do usucrlc personali zodos podem ossumir qualquerforma e combinerquoisq uere lementos que voce, 0 programodor, quiser.

1- Organizado pelo banco de dados arribufdo. 5P-

Organizado pela inte rface do banco de dados.


Organizado por urn programa aplicarivo.

A - Aut o-o rganizado pelo pro grarna de sistema SAPM ACO.


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 1 6gicos 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.

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:
tables : saptab atc parameter: example l t ke saptab-f1eld m hcode object exam. select single f ield f rom saptab w here f i eld example.

S
In

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 .

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.

S
In

T
INilll!~
screen: Alem do instruc;co blo ck, os telos de seleccc podem ser personolizodas utilizondo elementos de formotcl;co como os seguintesinstrvcces sel ect i onsel ection-scr een com:nent leliao. sel ect i on- screen uline C olo ca urn cornentario na tela

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

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 .

final do capitulo.

A mai cria dos elem ent os inclufd os na se~ao anterior edo ripe cosrnet ico; na pr6xima se~ao, vo ce vera algun s elemen tos de tela de selecsc que sao mais especfficos para p roce ssament o de entrada de dad os.

~ ~_A & .I _A _ _A .~
668

-- -- Figura

APIEHDA EM 21 DIAl A1AP"

Parametres de t ela de sele<;60


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.

21

14

A tela inidol

Domains.

mWO ,.

NOVO

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.
IItrr...
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. Mantem urn valor padrao inicial para 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.

obl igatory - Prolbe campos de entrada em branco.


defaul t 0

~.- .:.I
670

..

]I - -

--- - - -DIA 2UEUS DE sru\iO

I "RENDA E. 11 DIAS ABAP/4

671

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

Mf' f ?!i ffl ii

Mantendo sfmboJos
de fexto.

1:"'~[jf."tii*; lM'Or.JI."""""'",~iWJI.~.?"<t",,~:7'.. ,

Hie life

Iii,.! ~~, :""4"'::. i-~~ "': ' ,:':';~.~ .;':"".""='.~

A tela de selec;oo checkbox


as parametres podem ser criados como campos de cl dos que contenham a

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.
Figura 21 16

Sintaxe pa ra selection- sc reen checkbox


~

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':

A tela inicial

Text

Symbols.

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

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.

e melho r utilizada quando

1Ib0 ,.

10YO ..

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

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 pora urn radi obuttoo group

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 ' V UELOW ' to 'VALUEHI ' . Al

Ul

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

~ m

- - - - -- - - - - -- 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

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

... A inslruc;oo select -optfo ns exlbe umo linho que normo lmente tem dots

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;6 Por enquonto, entretcnto, nos voltcremos 0. 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:

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 Y 6.

SIGN - Pode significar IN U E que e a padrao, au EXC LUSIVE, que CL SIV , p ode ser mar cada na jane la Complex Selections.
OPTIO N- P ede armazenar valores 6T (entre), CP (contem padrac), EQ (igual para) e GE (maior que au igual a). lOW HIGH Arrnazena a entrada de valor no cam po FROM. Armazena a entrada de valor n o campo TO .

* 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.

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.

L..IL...I

- - 0\l2HELlSDE Sllf\AD

674

APRE N AEM 21 DIAl ABA f( ' D


selec tion-s cree n begin of line . par aJleters: p ex2 rad 1ob;Jtto n group ra dl se lection-sc reen C OIlIIlent 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 carmen 5(20) te xt -exa . t 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 ) . m essage 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 E ?' ) or (p jd at el is initial O message- tOp with ' We are now using E xampl 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 O? not { ( s JdateZ - ' l E ' ) 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 1' ( ( pj date 3. ' IEQ ) or (p_Jdate3 t s init1al mess age EO wi t h ' Param I1 eter w l1 ke sta t em / ent field has no val ue' . elseif ( p_ex3 - ' X' ) and

675

not ( ( p_Jdat e3 - ' l E 01' ) 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 1' ( ( s jdate4 - 'lE0 ) or ( s Jdate4 is initial m age E017 with ' Sel ect io n- Opt i on wi th no in t erval has no valu e' . ess 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 w ith 'No Pri cing D ata 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 ' N Revenue Data selected' . o end1f. form get _cost_data.

endf ol'1ll . fonn get Jevenue_qata . endfonn. fonn getJlr1ce_dat a. endfonn.

mUSE ,.

... Com o os botoes de opo 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 . .

).

).

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

~.~~.~
676
APRE N OAEM21 O AUP/4 IAS
O .2UWSD SBfI,io
F i g ura 21 20

~
677

inserir multiplasselecoesau urn inrervalo,simplesmente de urnclique no ba tao


de seta branca (veja a Figura 21.22) .
F igura 21 18

as pot6me'ros e a solidlo~60 de seta


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 ope:s Selection com Extension.

ww
678

ww

------- - D~ , \,TILlS DE " lIlD I


Flgur9 21 24

APIEHDA EM ' 1 DIAl AB AP /4

679

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). "

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

Figura 21 2 5

Insiro seus exig~ncias

de seleo.

A tela Selection sern


extens60 OIJ

inl'e fYOios.

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) .

aa
680
APREHDA EM 21 DIAl ABAPH FigurQ 21 26
D~ 2UEUS DE SElf(.lD

681

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

Utilizando a

vfjli oda pore z


vofjdo o de dodos.

instru~cSo

message

Fig ura

21 28

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.

h mensogens de erro no borre de status.

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

ususrio deve inserir dsdcs para con tinuar.

W - Warning, a usuario pode tanto modificar os clados de entrada


coma pressio nar Enter para prosseguir.

1- Information, 0 usuario deve pre ssionar Enter para continuer no mesmo P OntO no programa.
Voce deve especificar uma instru 'iao de informe message-id no comecc de seu programa.

.... .... . .. . . ... .. .


. ~.

. ~.

682

APREHDA E 21 DIAl AB AP/4 M


FigurA

D~ , I, 1WS DE s<lE\-iD

683

Sintaxe para a instrUl;tio me s sage -i d

21

30

!:!!
~

A sin taxe para uma instrucio m essage id em UJ'J} relat6rio e a seguinte:


re port ",,,,1. f tne-ccunt 65 Itn e-st ze 13' .....,.-id rs .

A tela Oth~r Development Ob;eds.

Esse ID de dais caracteres e urn mimero de mensagem de rres dfgitos, junto com 0 idioma, determinam as classes de mens agens. A SAP tom ou a inclusso de instrucoes de mensa gem em seu prog rama rnais facil utilizando camanda de instru~ao insert no ABAP/4 Edit or. A Figura 21.29 ea tela facilmente acessivel que aparece quando se da urn clique dup lo no nrlmero de ID de uma mensagem no p.,:,AP/4 Editor. Vamos ccm ecar pelo O bject Browser e escolher Other Objects na parte inferior da lista (veja a Figura 21.30) . Voce pod. pular para a tela Maintain

Individual Messages clando urn clique duplo no numero de ill cia niensagem
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).
F igurA 2 1 3 1 A tela Mointcin M essage Doss.
;...........~:.-~~"'"""_M~~~ ~I:0~ ~ ...... _

. 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

I I
I
I

29

T~Ia jnicial ObjKt Browser.

I I
I ,
I
I

~~

I I I I I J,.-:I-. I I I I - I I I .I I
"FIEND. Ell 21 DIU ABA PI4
Figura 21 3 2

. .. .. ... .. ..........
~
D~

684

,"'".15

Of SRI\AD

685

A tela Moinloin

Individual
Messages.

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. 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
IFasa

o que acontece se u rn campo de chave primdria eadic ionadc a uma tabela de verifica~o depois que uma chave estrangeira foi
ddinida?
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.

--'----------'Lembre-se de utili zer mensog ens de uma mcneiro que ajude a u$u6rio a Iraerir as

o
o

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
suos pr6prias.

rel0t6rio.

E. pcssfvel inserir vanaveis como mensagens de erro de sist ema au


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.

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.

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".

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.

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

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

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:
Relat6rios

Programas de diaIogo
Carla tipo de programa tern suas pr6prias convencces de atribuic j o de nome. A Tabela A. I con tern as caracteres qu e nae sao permitidos em nome s

l
r ,

de program',
Tabel a A.l Corocteres inv6lidos para names de progromo
Cara ctere
Descri~60

Ponto Vlrgulo
Lacuna

()

Pcrenteses Aspos simples


Aspas duplos Sinol de iguaJ
Asterisco

Sublinhodo
%
Sino! de po rcentagem Coroderes com trema e "'s duple clemco"

Aeo s u os

..

htIpJt-.mmpus.tom.br

~ I I" .I I .I I . 690
'PRE'" E. 21 DIAS ABAP/4

--

i
Convencoes para otribuicco de nomes a programas de di61ogo .
N a mes de pragrarna de dialogo de c1iente segu e a convencfo

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:

0 primeiro cara crere deve sec urn Yau Z.

SAPMYxxx au

0 segundo caractere represents a area de aplicativo.


0 compr:imento maximo de programa

SAPM2=, oD de:
O s p rimeircs quatro caracteres devem ser

e 10.

SAPM.

o segundo caractere ea fonna curta para a irea de aplicativo (vejaTabe1a


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

0 quinto caractere deve ser u rn Y ou Z.


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 .

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

c6d.igos.sao mostrados ~a T abela A.2.


Tabela A.:2 C6d igos pare as 6reos de oplicotivo no R/3 Area de a plica~ao
Ccntobllldcde finance ira (Finan cial Accounting) Ge renciome nto de materia is (Materia ls Management) Vendos e Distribuio (Sales a nd Distribution) Plcnejcmentc de produt;oo e centrole (Produdian Plonning a nd Ccntrcf Tesou roria (Tr a sury) e Ge renciame nta de qua lidade (Q ua~jty Mona gement) Sistema de proietc {Proiect System) Monutene;oo de planla (Plant Ma intenance) Gerenciamento de estoqve ('Na rehouse Management) Recursos hvmcncs (Humon Resources) Contabilidade de ativa (.Asset Accounting) Co ntrole (CO) Atividod es de processo (Process Industries) G erenciamento de investimento (Investment Manogement) loglstico (Ge raij {logistics (Ge ne ra l))
Desenvclvlmento Intemociona l (Internationa l

Intervalos d e nomes de c1ientes

o sistema de R/3 contem rnu it os tipos de objetos de de senvolvimento. Se voce


Forma LDB
F M

Forma longo
FI MM SO PP

Fonna
curta

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

i
i

1
2 3 4

npo de objeto

Max.
ABAP Query /4
Q uery Functional Area Fundion Gro up Appen d Structures Appe nd Structure Append Structure Fields Application l ag s

Comp rim.

ConYen~ao

Notas

d e atribui'ioo de nome

I I I I
I
i,

TR
OM PS P M WM

5 6
7

2 4 3

8
9
10

10
10

Y* Z

HR
M

YYZZ
Y or Z Y o r Z Y' Z
ony

11
13 14 21

Object

Control ling 12

Sub-Object
Area Menus Avthorizotion s Avthorization Authorization Closs Authorization G roup Authorization O bject CATT Flows

10
4 12 4 30 10

PI 1M LO IN

NO permitido no o 2Q pos it;60

22
23

Development) Funcionalidade ctroves de op licotivo (C ross Application Functionality)


"

CA

y' Z y' Zy' Z y. Z'

.I
692

~I-I

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

--- - -- - - - - - - - APt,DIU A, C O'VE'IO 0' ATRIBU DE 'OM' B I>\O


Tabela A..3 Conti nuot;oo

" PIEN EM 21 DIAS ABAPH DA

693

Tabela A.3 Ccnft nucceo


Tipo de eblete
Comprim. M6x.
Conven!roo de atribul!rCio de nome

Notas

Tip o de ob (eto

Comprim.

M6x.
Field Exit Func Module User Exit Func Module

ConvenCjQO de atribuiCjQo de nome

Nota s

C hange Docu ment Objects

10
4

Codepoges
Data Elements
Dot e Element Data Elemenf Supplement

Y or Z 9'
y. Z
Se 0 diente crlou o elemente de

30 30 30
8
7

FIELD_EXIT.: FIELD_EXIT_' y EXIT"'pppppppp_nnn CONVERSION_EXIT_""""JNPUT CONVERSIO N_EXIT _""",,_OUTP UT

10
4

Conversion Exits GUI Status

"dodos

SAP Supplement
Data Models Doto Model
E nfity
Develo pment Closses

9'

Se 0 SAP criou 0
ele mente de dodos

10 10
4

y. zy. t:
y. Z Y ZtRP_*
RHJNFOTYP _9'

DialogModull!s
Dccurre ntction Modules

30

IDOCs Segment Type Basis IDOC Type Enhancement Type IDOC Type Includes (DDlq Customizing Includes

8 8 8

10

Apenas vtilizado em uma tobela criado pelo SAP

General,Text (TX)
Test Run Description

Includes (Programo)

Mo;n Chopter(B OOK)


Chapter of lMG Chcpter (CHAP )

Chopter Note (NOTE)


Release Information

Structure
O nline Text Domains

28 20 20 20 20 26 20 12 28 10 8 8
4 4 4 4

y. Z

y. zy' Z' y. Z y. t :

Include Include for User Exits (m6dulos de funo) Info Types

8 8
4

Y z
ZffffUnn

ffH

= func group

y. z y. z:
y. Z

lock Object
logical Data bases

10
3

9' EY. E Z Y o Zo

y.

z:
logisticsInfoSy stem Event Unit Maint. & Transport Obje cts Motehcodes Matchcode 10 Motchcode Objed Messoges

Q = 6reo do op licotivo (forma LOB, vejo Tobelc A.2)

y. Z

Enha nce me nts Enhancement


Enhancement Project

y. Z

2 2 10 1
4

y. Z y. z: y. z

Fund ion

Codes
y' Z'

Functi on Code

0-9
y.

Menu Exit
Function Ubrary

+'
y.

z:

Functio n Group

z:

Message Classes Message Numbers


Module Pools

User Exit Function Grp Function Module

XZ'
Y_ Z_

2 3

y.

z:

30

-. ..
694

II!' !!!! II!',

-- - - - - - - - Notas

" 'REH EM 21 OIAS AUPI4 OA

AP ~NOICE A COHVENtOES DE ATRIBUJ9,O DE N ; OME

695

Tabela A.3 Conftn uocoo


Tipo de objeto Comprim.

Tabela A.3 Contlnuocuo

Max.
Dialog Module Pools Screen Modul Pools e Info Type Module Pools Subroutine Modul Pools e Update PgmModule Pools Number Range Objects
Parameter Ids
Printer Ma cro s

Conven~ao

Tipo d e obieto

de atribuiCjoo de nome
SAPDY' SAPDZ' SAPMY' SAPMZ' MP9' SAPFY' SAPFZ' SAPUY' SAPUZ'
System Barcode Standard Task Stondard Roll Structure (DDIQ SYSlOG Message fO

Max.
8 8 8

Comprim.

ConvenCjQo

Notos

de atribu lCjao de nome

8 8 8 8 8

v z:
9' 9'

10 2 10

y. z
y" Z
Emestruturcs appe nd: YY- U

10 3 2 20
8

y. z y. zy. z

Y Z' ' Y Z 9'"

Tables Field Nome

Relation Ids R/3 Analyz Identifier er Reports Report Nome


Report Cat egory

Index Nome Trcnsporent, Pool,


Cluster Nome

3 10

y. z
T9'

apenos

y. z
Pora tobelcs de pool no pool ATAB paro tipos de informco de cllente

4 14 14 14
8

y. z: y. zX CUS& Y' Z' 1a carodere noo ~9 111 carod ere noo 0-9 1a ccrcctere noo 0-9 111 coroctere noo 0-9 1a corodere ndc 0-9

PoolNome

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

4 3
7

12 16 4 32
8

y. zy. z y. t: y. Z
9'

Tobie Pool Nome Table Cluster Name Titlebcrs Tronsad ion Codes Type Group User Profiles
Views View Cluster View Name

10

10 3 4
5

y. t: y. z y. z y. z
c ny

P9' PA9' PB9' PS9' HRT9' HRP9' HRl9'

I ,
I

:I I'
I ,I I

II I'

12

_ nee permitido

na 211 pasiC;ao Pare soido de telc pora progromos de di61ogo


do cllente

>0
Spaol Layout Type Fonl Group Device Type Page Former

16
8 8 8

y. z Y z
Y Z

z-

HelpView View Maintenance Data View Content Table Content Worlcflow O bjed Type

10 10 10

y. z
H_Y H_Z reservodo no TRESC reservoda no TRESC

10

Y' Z'

~ .- .- I- Y

-. -. -.-. - - - . -. -. -

. . . . . . - --- - - - - - - - - .
.~-

696

"REND AEM 21 DIAl ABA PI<

Vo ce descobrirf que existe m poucos ob jetos SAP dentro dos intervalos de nome de diente e que, portanto, violam as conven cc es de atribui~ao de no me des critas aqui . Esses objetos foram criados ant es de as convenco es precedentes serem adotadas. Uma lista dessas exceco es pede ser encont rada na tabela TOKZ.

B
Respostas cis perguntas 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"

699

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 ,

r i
I

Resposto do exe rcfcio 1


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,

2. M ova 0 teste para sy-s ubrc depo is de endsel ect, como mos trado aqui:
1 re port ztz02 02. 2 ta bles ztxlfal. 3 se le ct * from. ztx l fal where lifnr l tke ' IA' . 4 write / ztxlfall1fnr. 5 endse 1ect , 6 if sy-subrc <> O. 7 wr1 t e / no records found' . 8 endif.

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

3.

programa

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.
>

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.

'0000001050 '.

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.

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.

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,

> 'OO0010 50'.

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 D aO cclccsr 0 valor 5000 entre aspas simples, a sistema automaricamente a converted em caracrere paD a-comparacao. Nao hi nenhuma

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' .

..f: . .-

.......................Aua.....--.JII.-A-~ 700
' PiE' O' EM2101' S " "" 5 endse lect. 6 1f sy-subrc <> O.

. - -

- - . -

,P!!lOlU HBPOOAS IsPERGUHTAS DOS 1ISTI5 EElIRdoos

701

Dia 3, "0 Data Dictionary,. Porte ) "


I

7
8

write I no records found


I

end if.

Respostos do teste
1. 0 do minic d.a a urn camp o suas caracterlsticas recnic as, como tipo de dado e comprimento.

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

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.

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 w rite: I ztxl fbl- l1fnr . 14 ztx lfbl- bukrs . IS . eneselect 16 11 sy-subrc <0 O. 17 write / ' no records found' . 18 end; f.

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.

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 w here lHnr '0000001000'. wri t e I zt xlfal- lifn r . if sy-s uerc <0 O. write I 'no records found ' . endi f.

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 .

~LA~.I_. _.I

I I I - I
.&.PEND B RES ICE : POSTAS As PERGUNT.lS oos TESTES EEXERdclOS -;- ---------------"'==::::..::=:.:.:::===~=~, 703 ,

I~

APRE!'lOA EM 21 DIA SABA P/4

Dia 4 , II 0 Data 0 ictioOl.la:ury+.rP:l.urt~eI;;U2,-1_' , a ,

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 . IN CLUD no campo de nome de campo e 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. m andt, spras, fl e f2. 5. Cada camp o de tip o CURR deve fazer referencia a urn campo de chave monetaria (tipo CUKY).

Dia 5. 110 D ata Dictiona ry . Part e 3"


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.

Resposto do exercfcio 1
Para a sc lucic desse exerctcio, visualize a tabela ztzt005 online do sistem a R/3.

Re sposto do exerd cio 1 _


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.

Resposto do exerclcic.Z;

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 .

- . .-. .--."""". - -- - - 704


'P REN D EM 2101'S ,",PI' '

- ~ - - - .-"

'P~D1CE U ESPOSTAS ISPER.DNEM DOSTESTES EEXERdoos

705

1_. B'

h ~ ~ '~ '-l*w ."" llOo"i. ~ "' ';''; '''' ';;


II '

....~_::i:irW-'-.:

- ".: :;':
- ~'-"

~~....

-~"- "" .~ .......~

.Id '"

Ax

-H::I.t'JnO

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 def mi~ao corret~ e 1+2 .2E03 ' . 0 caracrere de expoent e e E DaO F. e os decimais DaOsao permi tidos em urn expoente.

.......II!!!!!!!Iool

L&

-.....,L~

-.-.-.-- .~

.,. _
707

706

APiE NDA EM 11 DIU AU r /4

.lPEHDlCI B: RESPOSTAS As PERGUHTAS DOS nsns EEXRClCIOS

3. A definicac esd correta.


4. A definiljio co rr eta maitisculas.

OOOOOF I . Nio deveria haver u rn titulo x. Urn

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 " ,

mesmo mimero de caracteres deve existir e deve estar em letras


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.

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

9. A defwc;ao esti correta. V ma aspa dupla denrrc de aspas simples e


representada. Se escrita, a saida seria
As sclccoes sao as seguintes:
I . I

to

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

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
O put: ut
1 3 4 5 9 8 7 6

5. A def inict 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

Diq 9 , "Atribuil,;6es, convers6es e c6 Icu l... sL o"' "


Re spo sta s do teste

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.

1. Vo ce pode utiliz ar eq au =. Par exemplo, move vara to verb. eo m esmo que varb = ver a. au varb eq Y d. ar
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.
2.

sperz
konzs

3. fdpos

..... ....
-

-.-.-. -. -

..-.-.-.... ...... .-,


709
lPENDla B RESPOSTAS is PERGUNTAS D rum EEXERdoos : OS

-~~

"PREMOA EM21 DIAS ABAP/.

4.

msgid

Dia 11. "Ta be la s inte rn a s"


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.

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.'. w ot hers. wri te 'The number 15 not f i ve or t en. ". hen endcese. when 5.
when 10.

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.

2. Os operado res de strin g sao C [ccntem padrao] e NP (nao contem P padrao). 3. As [ r e S instrucees de contrale de p rcgrama SiD exit, continue e
check:

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.

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.

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

.3 ~.

I _ .. I

. . . 11 .. I

~.

. ~. ~. -.

..

-.

-.

.~.~

710

I APRENDA E. " DIAS ASAP/'

APblDICIUESl'OSTASAs PlRGUNlAS DOSTES1I5EE1Etd aos I

711

Dio 12. 'Tobelos internos


Respostos do teste

oyon~odas.

Parte 1"

Resp osta 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 .

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
r eport ztz 1201. t abl es ztx l fa l. data it 11ke ztxlfal occurs 23 with header li ne. 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 .

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 .
endt f ,

enddo.
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-,

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.

Dio 13, "Tobelas infernos


Respostas do teste

ayan~odos,

Parte 2"

tt- tendl.
endloop .

1. Campos nu mericos (tipos 1 p e f ) saopreencbidos com zeros. 0 resto dos campos a direita do nivel de controle sao preenchidos com asteriscos.

... . . .- -.-.- - a .. a a ........... a -a


712 , m H O'
EM21 01 " "" '5

W O lCEHESPDnASls PERGUHT,S DDSTESTEl EEXERdaos

713

Die ] 4 , II A instru!;oo wri te"


Respostos do teste
1. Voce deve desconecrar-se e conectar-se novamente no sistema R/3 para que as alterac;6es nos padroes do usuario tenham efeiro, 2. Uma m.is= de edi",o come" com urn v quando aplicada a urn campo , numerico (tipos i, p e f), fazendo com que 0 campo de sinal seja exibidc no ccmeco. Seaplicada aurn campo de caractere, a saida e realmenteurn V. 3. A adic;ao no- si gn, quando utilizada com variaveis de tipo i , p ou f, suprime a saida do caractere de sinal. Em outras palavras,os numerus negatives nao eersc urn sinal e apar ecerac como se fossem positivos.

Re sposto do exerdcio 1
1 report ztzl 40l. 2 write: / . . . . + 1. + 2 + 3. . + 4'.

3
4

' Fi rst ' ,


40 'beceeee r-", 'January'. ' Fi rst '.

5
6

/ 16
/30

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 .

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
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

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.

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 f1ll ed ci rc l e as symbol , "ct rct e ", )'lll / 4 syr'I-gl assei as symbol, ' gla sses' , / 4 S - penci1 as symbol , 'p enci 1' , yrI / 4 S)'1llyhone as syrnol , 'phone', / 4 S)'II note as syrrbol, ' not e'. / 4 S)'lIl)older as symbol . ' fol der' .

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.

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

714

APR HDA EM 21 DIAl ABAPI4 E

A P!NDlCE UESPO\TAS 'SPER'UHTAS DIB1IITES HXERdolB

715

vez.Na segunda vez e configurada como 2 e assim por diante. Isso faz com que a linha 6 escreva a letra A quaere vezes , nas colunas 1-4.

Dia 18, "Modulariza c;oo: passa ndo pornrnetros para sub-roti na s"
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.

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,

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
elas

c-,

S identicas na func;:ao. A ratio pela qu al as du as existem eque, aO

Resposta do exerdcio 1
. REPORT ZTZ1701 NO STANOARD PAGE HEAD I NG .

utilizadas adequadamente, elas podem dccumentar se a sub-retina


alterari urn pargmetro ou na o.

TA BLES ZTXLFAI . RAMETERS P _LANOl LI KE ZTXLf Al- LAN l. O PA INITIALIZATION. P_lANDl 'US'. START-OF-SELECTION. PERfO CREATE RM _REPORT. FORM CREATE REPORT. SELECT * FROM ZTXLfAl WHERE WDI P lAMD!. PERFORM WRITE REC . ED H SELECT. EH FORM. D f ORM WRITE_REt. WRITE: I ZTXLFAl-LIFHR. ZTXLFAI-NWI. ZTXLFAl -lAMOl. ENDFORH.

Resposto d o e xercicio 1
A seguinte saida

e gerada:
=

Top of page, f la g S ct r i n Start -Of-Sele ction pi :::

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.

TOP-Of- PA E. G FORMAT COLOR COL HEADING . WRITE: I 'Vendors wit h Country Code ' . P lAND I.

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.

U NE. ll

::A' .....
716

A.-I""'" .... -._ ....


0

-I

. - .- -..~

- . -. -

. . . - - - - - -~

APRE'D' E 21 01'5 ABAP/4 .

APt'D'" So RESPOOAS IsPrn;uHTAS DOS 15TES'ElERCiaD S

717

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

e chamado. Urna janela pop-up

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

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 D devem ser utilizadas dentro de m6dulos de fun93.0. Em vez aO disso, a insrrucio rai se deve ser utilizada porque eta ativa 0 charnaclor para confi gurar 0 valor de sy- subrc no retorno.

tabelas.

Resposta do exercfcio 1
report ztz2101. tables : m , tOOlw . ara Selection parameters for BCls 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.

Resposta do exercfcio 1
I" function z_tz_dh . 2 .-- ------ - - --.-- - --- - - - - - -. ------ -- .-- --------- - 3 local interface: 4 lKf10RTIHG 5 VAlUE(Pl) TYPE 1 D EFAULT 1 V AlUE(P2) TYPE I 6 7 EXPO RTING V AlUE (P3) TYPE P 8 9 EX CEPTIONS 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.

.- . w.. .

--- - - - - . ---- - ~ - - -

indice
A_ _
ABAP/4 lisn gem de sintaxe basica, 230 primeira listagem de
pmgram~

tutorial ,63 tela inicial ajuda, obtendo, 6S prcgramas,


p rocu ran dc, 66

acrescentando campos a
tabelas, 126

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

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

u tiliza~es,

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

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

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

now de versac, 96

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

hllpJt-.cumpus.com.br

720

AP REND A EM 21 nus ABAP/4


alccandc dados glcbais, 620

INDICE
A pplicatio n, berra d e ferramentas, 16 batao Foreign Keys,.liS bo de O bject Log. 230
at selection-screen, even to, &55 at user-com mand, evenro, 655-65& ativando

721

a d i ~oes, descricfo, 236 Adm inistration, ccmandc (m enu Tools), 21

alter.tndo

buffer em dados no servidcr de aplicativc


no Open SQ L, 36-37

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,

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

aju da Fl campos. adiciorando a, 135-13 6


docu m enta~ io de

definindo 0 sistema Rl3


com o, 26

botio Technical Settings,


193 criandc bcroes em, 656 Applications, area do menu

m6dulos de funlSio,
&04-605 .objeros, descri~o, 107 atribuip,o di.n.amica, simbolos de campo, 309-310 atribuip,o. ins tru;6es

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,

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

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

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

clear
corn adic;ao, 289-290 sintaxe, 287 codificando.291 descri~. 286 move, 291-303 adaptac;o es 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

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

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

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

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

..... I

I _I I

- .~.-

~ .~ .- .-

- . -. -. - ~ I I

...
INOlO'
I

~
1

722

APlEN DA E M21 DIAS AUP/4

723

C
cabecalbos e rodapes de
psg ina

cain de didlogc SAP Rll,


mensagen s de erro,
640-6 41 caixa de se!e;:io, parametr o, 670- 671 cains de gro po, efeitc s de

centr.dizando,516
format ando c imprimindo cabecalhos manuais de pagina, criando,
519-52 0

reseandc, 136 alterandc 0 comprimento de, 10<, 127-128 campos de quaneidade, requis ites, 170 campos mcneurios,
168-169

ca.m.pos-chave

descricac, 156
padri o, instrU;io read tab le, 370 tabelas de textc, 157-160 Cancel, ccntrole (barra. d~

ScreenCams, instalando , 44 utilitirio C opylt, J24- 125 centralizando cabe;al.bos de pagina, 516 chamandc m6dul os de

candidatos-chave. 156-157
vaU~ de dados,

I
I

I:

util i.zand.o para, 657-659


vertl5~d o, 144-145 cbaves estrangeiras

bctoes de o p~ o. 51 calcu lando datas, 308-309 calculos, execu ta odc


instru~o

chaves estrangeiras,
detennina~o

ferrame ntas Standard), ABAP/4 Editor, 53


cancelando a versao do m6 dulo de fun~o, 629 cand idatos chave, des cri~ao, 156 cara ctere, literals de string de, 239 caractere, operadores de

luD(io, 609-6 13 dado. glob';', 619 -622


execu tandc urn exemplo, 611-6 13
instru ~o

adaptadas, defini~o, 163


chaves estrangeiras compostas, 1521504 chaves esrrangeiras constantes, defini ~o, 163 chaves estrangeiras

cabecalhc s padrio de

pagina ,
arm azenandc , 514

compute opera dores para, 305 sirnaxe, 305

auro mdrica de. 149-150

cabecalhcs padrio de psgina, criando,


513- 515

inStfUliOe add e s

cabecalhos padrao de

corr espond ences, sin taxe, 306-307 calculos , reallzandc adicione e adicicne instru ~6es

controlan do a ex ib i~o de, 71 convencees par:l. auibu i~o de nome, 105 criando dom in ie 103 s, elementos de dados, 102
instru~i o select. em adi~o de eabela, 430 pcntos decima is, 701

call function , 609-611,613

string de. instrU~o if,


321-326 caractere, tipcs de dado
descri~,2#

pagina,tradualadc,
515-517

cabecalhcs padrio de
pagina., utiliundo varifveis em, 517-519 csb ecelhos padri o de pagim, visualizando e

correspondences, sia taxe, 306-307 data, 308-309


insrru~o ins tru~o

compute. op eradores para, 305

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

compute," sineaxe, 305 call function, instnl~a o ,


609-611

refereaci a, defini~o, 169 rabelas, adicionando a abordagem top-down, 122-124 acrescent ando , 126 inserin do , 126 tabelas, excluindc de, 127 Value Table chaves estrangeiras e, 164-165 como proposta Check Table , 166-167 prcposito, 165-166 sem chaves esrran geiras, 168 cam pos de referenda.,

movendo de um.astring de campo para outre, 300-3 01 caracteres eceueuado s, classifiando, Iistagem, 380- 381 caracteres cu.ringa, tela Search/Replace, 55 caracteres especials, t ela

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 achpada, d efini~o, 163

genericas, defmi~o,

1 61

chaves pri.marias . indi ces, 184 Check. Table, proposta, campo Value Table como, 166-167 Check, controle (barn de [erramentas

ajuda F4 .. 150-15 1
campo Value T able. 164- 165 como prcpcsta Check Table , 166 167 pr opcsitc, 165-166

Application), ABAP/ 4 Editor, 58 check, instru~o comparando instru es


exit e continue, 341
instru~ao loop at e, 364

inserin do auromaricamente, 613,


649-650 Iiseagem de parimetros, 6 12

cardinalidade de. 154, 658


colun a CheckT able, 149 cornpos~, 152-15-4 constance, defmi~o , 163 criando, 1-46, 1049
descri~o, 144, 656 determina~o aurcmatica

siataxe, 340-341

Search/Repla ce, 55 caracteres hexadecimais, 706 caracteres inv aIidos em no mes de programa, 689

ueilizacces, 708
Check.Table, coluna (tela Dictionary:

criando, 513-5 J5 m.duundo, 515-517 utili zando variaveis em, 517-519 visualizan do e modi ficando, 514-515

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

cardiaalidade
chaves escaogeiras, 15-4,
658
descri~,

Table/Structure ] chaves estrangeiras e. 149


fun c;6es de. 167-168

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

658

nlores de X, 155 valores de Y, 155

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

CIA, CN, CA e NA,


lisbgem 322 classes de dados, 194 cJassificando instnJ~o select em adi;a o de

case, instru~o. sintaxe.


326-327

p roblemas, 138

cam pos m on ecl n os. 168 campos numericos, 299, 710

CA17 F lows, tipo de objeto , 691

CD-ROM

"'bela, 428 clear. instru~ao com adi~o, 289-290 sintaxe, 287, 0407

~'
:0;

i!a

A A A A
724
I

A.a a a A ~ ~ - , . -. - -.-. . -.- - - - - i


AJ3AP/ 1, Editor; Edit Program. tela. sjcda
enquanrc editando , 65-66 corcendrics, parirnetros
1: 609 ,
IHDlCI
J

APRE II D AEM21 D HAPH llS


Com mand Field, con trole (barn de Ierramentas Standard), A:BAP/4 Editor, 53

725

cliente de logon, definiio, 32

bufferizando tabelas,
196-213 campo Size C ategory. 195

d efini~o.

27

crdem de precedencia

c ontU1ue) tns tru ~io

para tipos de dado,


317 sin taxe, 316-317 while. sintaxe, 336-337

clien te/servi dor de duas


eatnad2s,descri~o,23

companndo com

instrUl;oes exit e
check, 341
instru~o

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, 222 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

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

como adi~o de leon e. instru ~o write, 5015 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, 3793 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

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. 261262 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, 5085 09 utili.ando,509-511 contextos do usuUio alocando, 698

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

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 adaptaes 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

A A

I
I "PIEND'" EM 21 DllS AUP/4

I I " I .. I

I .-a

aa -. -.-.--.-.-
IHDICE

726

727

Copylt, utilitirio, CD-ROM, 124-125 carpa (tabela internal, 350 Create Foreign Key tela, , 148,163 Create: New Session, comando (menu System). 76 criando
botoes na barn de ferramen tas Appli cation, 656 campos, dominios, 103 chaves eseangeiras, 146,

ubeI",,106-107

tabelas eraasparentes abordagem bonomup.1t7-122 solucionando


problemas. 119-122 tela Dictionary:

Data Browser: Table:: Selection. tela, 70 Data Dictionary (RIj Data D icti onary)

Decimal Places , campo (tela

Delivery CW~ campo {tela


Dictionary: Table /Sttucture: Change Fields),l1('-117

d ialog o com 0 ciien te,


programa, _conven~6c:s

Dictionary; Maintain
Domain). 109 defini~6es de dadcs dentro 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 -__

pan atribui~o de: nome, 691

=npos
comprimeneos de ,arch, 462

desativandom6dulos de:
fun~o. 604

diaIogo, passos
defini~o.28

Table/Structure:
Change Fields, 117 curses de treinamen to, sites

ccntrolandc a
exibi~o, 71 defuli90es,exibUldo,70

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,

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, 500501 Display: C hange, ccnercle (barn. de ferramentas

d. Web, 10 C ut and P aste, bu ffers (ABAF/4 Edi tor), 59-60 C ut, controle (barra de

descricac, 67 estrururas, 68
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.aes,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

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

[erramen tas Applicati on ), ABAP/4


Editor, 58

0
da dos de tabelas, copiando, 124-125

defiaiado, 566-568

exi iadc b
modificando e, 127-128 ucilizando seu pr6prio prognma. 135 globais, cipos, 619 linhas inserindc em

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,

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,

de

613-615 objeeos raatchcode, 660-665


programas processo para, 48-50 solucionando problemas, 50

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,

567 dados globais alocando, 620 tipos .619

134-135

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

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

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


728
APRENDA EM 21 DIAS lBAPI4

INelCE

729

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

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

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,

E
edit or- call, instru!jao, sintaxe, 395397 elementos de dados alt~ra~oes para caraceerfstico de modificando vinculou com, 717 cardinalidade, descdcac,

altera~es n~

earaceerjsticas, 717
campos
alteraado
0

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, 341344 estouro, instru~o sum,

ccmprimentc, 104 criando, 103 convencees para atribuiliio de nome,

658
contecdc de, 701 convencoes p:ua atribui!jao de nome,

105
criando

abordagem
bottom-up, 110-111 tela Dictionary: Maintain Domain,

105
criando abordagem
bottom-up,I13~116

108
descri~ao, 102, 668 obrecdo a documentacso

do SAP,l11-112
prop6sito, 701 reativando, 705

solucionando problemas, 115-116 tela Dic tionary:. ChangeDau Element, 112 descricao, 102

450
estruturas aninhando, 172 criando, 171-172

reurilizandc versus
criando, 104-105 driver, programas descricac, 547

eventos acionando 0 tOpO de pagina, 550551 deixando, 554-557 ordem de execu!jao, 548

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

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.554557 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

indices secundsrios,

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

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 configuraes 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, 327328 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

A
730

I I I I .II -

. - . - . -.-.-.-.-.- . -.- . - . - . -.-.

- ~-

-i.DlG , 731

-~

, APlENDA EM.!1 DIAS AU P/4


variav~

Field Name, coluna (tela

tipo d. 308

extensOes

definil'o, 195 exibindo numerc alocadc para tabelas,195-196


resumo tecnico cbs

configu racoes, 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 ativali1 exibindo, o, 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

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

pos ition, 538-539 print-control, 533 set blank lines, 5~5" 1 set margins, 533

m6dulos de fun ~o.


ccpiand o, renomeando e

d!'cumentos alterados,

218-219
utilizando,221

excluindo, 6-)
Function Module Change: Administration Scre en,

desenho de linha
disponiv eis, 506-507
sineaxe pu:l adi~oes, 500

skip, 534-536 U.DUnhO de pi gIDa;


contrclaadc, 508-511

formatando

cebecalhose rodapes de pagina


csbecalhos manuais de pagina, criando varidveis em,

eecnicas, 507-508 eelas de sele~a instru~io de bctoes de oPl'o, 672-673


instruli10 param eters,

668-670
instnl~o

519-520

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

selection-screen

block with frame, 667 insuuljio select-options, 671-672


instrues selection-screen, 667

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

{con es
defini~o, 501-503 exibindo , 506-507 IDs de gropo de fun~o, descri~io, 601 if, instru~ao, 315326 conversces de dados

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,

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,

627-628

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

listagem de zexb, 622 visi o geral, 601-602


" grupos de tipos criando, 274-275 dermi~o, 273 GUJ Status, tipo de objeto,

If-equal, in Stn1 ~O igual,


compar.mdo conteddo de

673-681
visl o geral, 666-667 free, instru~ o, sintaxe,

duas tabe1as internes, 395 .


Import/Export Parameter Interface, tela, 605-606 importa~o, parimetros com propostas, 715
des cn~o,607, 6 1 1

403
from, adi ~o, i nstru~o loop at, 362-363
fun~Ocs,

693

ABAP/J, Editcn tela Edit Program, 61-63

H
handles, defini~o, 47 Help on , comando {m enu Utilities), 65 Help system, oer ajuda, sistema de hist6ria de tabela automatica descrirrio, 217

Functio n Ce des, ti po de objeto, 692 Functi on Library, tipo de objeto, 692693 Func tion Library. Initial,

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

" La, 602


aipbiente de teste , 629-631

~ ~-'~.I.,",.-. J...A:..a.-.... .II

I X . I -.....- I I

.-L":::":-".-"-.l~'-.l-'~"-I~' -'~'C"" ~"-'-" I

. . ... ..
IHDleI I

APREH DA EM 21 OIlS AUP/4


cabe~ o s

I
Iodice, adi~o, instru~o read table, 365
in dices criando.l87-189 defuU<;io,183 insert lines. instru~o. 392-393 interfaces glob ais, ddinindo parametres, 620 in terfaces Iocais, definindc parimetros, 620 in tervalos de no m e de clien te convenliO pan es atribuiljio de nom e. 691-696 descricao, 47 janelas, abrindo, 76

733

padrio de pagina. criando,


513-515

links de hipertexto, 136- 138


Hstagem de fonnata~ e comprimentos padrao, 465 listag ens a ins ou~o back, 537 ABAP/4 pro grama, 50 sinw:e basica, 236
adi~ comparando

insert, instnl)io. sintaxe,


398-400 instalandc

cabecalhos pamo de pagina, traduzindo,


515-51 7

csbecalhos padrac de pagina, ueilizandc


varidveis

descricac, 183-186 determinandoqual e utilizadc (Ierram enta


de rastreic de SQL), 191-193

Basis. 21 ScreecCams, ...... instdncia central, defini cao,


26

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

em,

517-5 19

instincia, defini~ao. 26 instnu;ao de contr ole de


imprcssao,533
inStn1~O

cabecalhos padrao de

ex ibindc tcdos, 187


ligando, 703

pagina, visualizandce
mcdificaado, 514-51 5

secunddric
defini~io. 185

de dados definindo varifveiscom.

diretrizes para cria/iao,


189-190

241-243 sictaxe, 77, 263 264

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

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 eraes em campo s e altenes 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

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, conigura~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

excluindo.1 9O-191 exibindo, 186-187


selerivos, 188-189 'nIltagens.185 Info Types, ripe de objeto, 693
in forma~6es ripidas

instru; ao local, 564 565 instru;oes, descri~o. 236


interatividade e

{dicas de ferramen ta), 17

programacic baseada em even eo, 65365 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

loclud.. (DOIC), lipo de objeto,693 Includes (p rognm), tipo de objtto,693 incl uindo prognmas, defmiliio, 597

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 de ferramenus AppH"lion), ABAP/4 Editor, 58

listagem de algumas
linhas,362-3 63 para arualizar (tabelas bufferizadas) , descriliia, 203 Ua1, tabela, visio geral, 438

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

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 605 servidores de apresenu liio e, 24
d es cri ~io,

linha de eabe~lh o (..beb


interna), defini ndo, 350 linhas, m ovendo p2ta 0 to po da jan ela do editor, 59

.INCl U-XXX, 174


Indice (tabe las internal ), def iniliio, 365

., APR ENOA EM 21 DIAS ABA P/4


formau~o e instru~o

- --iNCKE I

735

move, 298

mstI'Utjoes write
:adies

on change of
acioaando, "457

definindo como
ts belas d. DDIC ou estrururas, 265
instru~o

rabelasinremas
adi~ de campo s

comprimentos padrao. 465 gravandc icones na !ina, 501-502

. com duas strings de

de justificati...",

cunpo.300
instrut;io move-corresponding, 304
ins tru~o

490

dDUmaneiras
diferentes, 455-+56 para exihir simbolos, 500-501 partmeercs, defmindo

especificatjOes de po si~o e
comprimentc em, 342-343 ilusrrandc efeitos da espec ificacio da

dau.,

if, utilizando no
prc grama, 318

incluindo prograrna, 599 inlcic da selcc?o


automatica.mentt

new-line, 528 instru~o new-page print,


533

com a instru~o
parameters, 248 parimeuos digitados, 5704 passando panimett'os p ara subrocinas, 572 passando por referencia, 578-579 passando por valor, 580 passando por valor e resulradc, 582
posj~o e especifica~6es

definindo com, 264 inSttlly2.0 tables, defmindo com, 269 referenciandc outre

correspcadentes para p reeac her a partir de urn banco

de dadcs, 433-4304
adicion and o tres linhas a partir da linhado cab erUbo. 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

insuu;io parameters
prcgramas que sceitam parimetros de en trada udlizando, 24 8 ~2 4 9
ins~ position.

coluna de saicb, 469


operadcr de cadeia para reduzir redundsncia em, 83 lendo apenas algumas linIus,362-363 like 'fImUS include, 266

campo,309 ..riiveis do tipoch2r, 267


subcampcs, ~7 1

inserido antes da primeira lich a do c6digo execuctvel, 551


ins tru~ao call fun ceion,

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

udlizsndo com parimetros, 612 inst~O case. realiundo urna serie de 327 instru ~io check. 340 instrU~o cleat. utiliundo para limp er a linha de eab~o, 407-408
instru~o collect,
compan.~oes.

538539

instrU~o read table, adi~

de In dice, 365-366
reserve, 523-524 instruc;ao select adi ~o de campos correspoadentes, 436-437 com a instrulj-io
instru~o

linhas de cabecalho,
linhas com mesmos valores que campos-chsve p adri o em, 371 loops sem fim, 330-331 misc:an.s de edi~o, efeitos de 475 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 cia Listi.gem 20.5, c6digo~fonte pan, 624-625 chamados da Li.stagem 643 cham2dos da Listagem 20.9, c6digo~fonte para , 647 no -gap, 473 nG-zero e no- sign, 482

de comprimenec, 470 restringindo os

fabricantes
selecicea dos, 78 saida panr processamen to de prognrna morto em suas trilhas, 328 s:udas de coaversao, 477-478 seu segundo prognma,

appendpara
preencher eabelas
ineemas, 435

combinando linhas

primeirc caraceere
coincidente ou !lio coincide nte,324-325 sy-index ccntendc namerc arual de
itera~io, 329 sy-subrc determinando se

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

instru~o select- into, 431


ins truc;ao sum pan calcu1ar rctais de myel de concrcle, +49-550
instrU~o type -poo l

72
revisitad c, 269 simplificado.76 sfrnbolos e caracteres de desenho de linha, 504 strings de campo

contendo tipos e constantes, 274 inStnl ljio while, 337 instrU~6es add, subtract, multiply, divide corr espondent es, 307
instrU~oes exit, check e

''',;0 varymg,

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

retornando componen tes em

visualizar, editar e estreat a conteudo de uma ubela interna, 396-397


instru~o locI. 564-565

stop dentro de evemos. 555-556 dentro de sub- rotinas , 562

sequencia, 332 atribui ~o envolvendo duas, 268 conten do cutra string de campo . 265

-:--~DI"
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

737

areas de tela, 15-17

cri~do ,60 1 , 6 1 3 - 6 1 5

Command Field, 19-20


Interface Menu, 17~19

.I

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

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

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,

modiflcandc csbecalhcs d.
514-515

p;gin ~

mascaras de edi~o
ccmecacdc com V. 712 instru~ao write, 474-476 masC2ttS de cdi~o em V, 712 matchcodcs sabores de, 716

fonna dos parimetros de armazenameato dentro do udlietric de banco de dados,

63H38 parimetfos digitados e cia digiesdos, 608-609 expcresdc de, 715 passandc para, 607 passando rabelas internas

231-232

para
metodos, 622

Iinhas em tabelas, 400-403


modify, instrusio, sintaXe,

nlidaliiode dsdos,
utiliundo pan, 659-666

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

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

configurando,659-660
criandc e mantendo cb jetcs matchcode,

660-665 organizando pOI' tipcs dtualiza<;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

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, 611613


instrusio call function, 609-611,

move, instru~o
adapta~6es aut cm aricas,

613

293-294 lisugen, 298


regras de ccnversac ,

area Applications. 12 area Basis,20-22

primeirc e segundo, 621 copiando, renomeandc ou excluindc, 640

exibindo, 295 sinraxe,291

INDICI I
strings de campo, 297-303 campo s numericcs de, 299-300 tipoa de dado de
caractere, utilizando, 300-301 tipos de dado

739

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

nemericcs, utilizando,301-303 subcatnpos,296-297

move-ccrrespca ding,
ins tru;oe.s sinuxc,303 utilizae.s, 302 Multiple Selection, tela, 632

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

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,

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

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, def m.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

num ericos, 239-2+0 .string de caractere, 239 objetos de desenvolvimento convenes para am bui~o de nome, .(7
defini~o, 44

defm iljio, 193 organizando objetos

de op~o,251 adies para, 249 campo de entrada rorule, 251. campo de entrada rcrula, alt erando, 251-253 como adi~o de cain de selecao, 250-251 efeicc de verificando

matchcode, 666 oti miudores, 187 Output Length, campo


(t ela D icti onary:

exemplos de, 96
umindo, 66 int ervalos de no me de
clien te, 691-696

Maintain Domain),
109-110

tabela om, 253-25~

pc rtabilida de, 45 ohjetos de tempo de


execusio,d~~o,47

P
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

sintaxe, 247-248
type """" like,~ 253

parimetros

obtendo a documenta~o do

alterando, 607
de expOrta~O, descricsc, 607 de impo naliio defini;io,611 descri~o, 607 tomando opcionais, 608

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

valores padrio,
fomeceado, 608-609 de tabela,descricsc, 607
defini~io. 247, 571

definindo em interfaces globais, 620 em interfaces lccais, 620

aplicativo.36-37 p onabilidade, 36 tra tamentc automaticc de clien t e, 37 operador de encadeamentc,

varifveis como, 572


digita dos e nao digitadcs, 608-609 exportando a partir do m6dulo do fun"o, 715
form~,572

utilizando, 82-83
op endor es 16gicos, instru~o if, 316-317 op en dores, instru~o compute, 305

digitados, sinesxe, 573 digitados, vantagens, 575 digitados 'lJtTIJI.S nao digitados, 573-575

-~~ ~JL-IJK-I~.- .-.-.-.-.-.-.-.~.- .~_~_-_ '--_- _-_740


,PREND, EM 21 DIAI'SAP/'
interfaces, definindo pan, 605-607 passandc pan m6dulos pass by value and re sult. Iistagcm, 582 interface do usuario, 17 ubelas,98 pesquisa descri;6es d e camp o, 82 prognmas,67

I
Print, ccntrcle (barra de ferramentas Standard), ABAP/4 Editor, 53 Printer Macros, ti p o de objeto, 694 processamento de blo cos, 6S4 processos de trabalho, 31-32 Program, comandos do meou c opy, n Save As, 77 programa~o baseada em
de.scri~o ,

~, m
induindo, defmi;io, 597 cbjetcs de tempo de
execu~o, 47 procurando, 67

pass by value, Iistsgem, 580


passandc

C ommand F ield, 19-20 Interface Menu, 17-19 platafonnas e bancos de


dadossupo~dos, 2 1

de fu n~o. 607 p assandc pan sub -retinas. 576-Sn


reerodos, 578-583 por referenda, 578-580 per valor, 5S()..S81 p or valo r e resultado, 581-5 83

padmetros pan modules


d. fun,.o. 607 param etres pan sub-retinas. 576-577

salvando alteraes, 54
tipo s de programas de dalcgo, 46 relatorios, 45-46 programas de cliente,
descri ~o,

.oj< 14mbfm lccalizadc


plataformas suportadas pelc R/3 ,21 ponteiros d e m ouse,
informa~6es ripidas

prop6sito, 8 visio geral, 7-8 RJ3 Analyzer Identifier , tipo de objeto, 694 RJ3 Data Dictionary

listag 572 em,


metodos, 578-5 83 por refersneia, 57858 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

(ODIC)
campo s. controlando a
exibi~o de, 71 defmilioes, exibindo, 70 descri; io,67 estrururas, 68 objetos, imporUncia de,

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

(dicas de ferramenta), 17 ponto Iluruante.fiterais, 240 pontos decimals, campos, 701 po ol de tabelas descricao, 98 resericees, 101-102 poo ls de dados , desc:ri;2o , 659 po ols d e ta bela, descri;io, 98 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 posi ti on, in stru;io, sin tax e, 538 pre ssion ando Back, sequencia de

47

programas em late, chaves estrangelras e, 152


publica~o. perfodos d e,

eventc

eventc at selection-screen, 655

ano s fiscais, 439

eveneo at user-command,
655-656 evento de inicializa~, sinuxe, 654
evenrc selection-screen

Q-R
quantidade, campos, definj~o, 170 quebras de pagina, causando, 530 R/3

96
paisagem de sistema .
po si~o

parimctros de tabela,
dcscri~oj

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

607

d.fini,.o, 26 de, 67 eabelas, 68. 70

parametros digitados, 608-609

. descri~ao. 573 sinaxl:, 573


vantagcns, 575

parametres fonnais descricso, 573, 715

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

ambience, natureza integrada, 8-9


arquite rc ra de siste ma definindo, 27 servidor de aplicadvo, 24-25

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

digitadcs sintaxc, 573 vanu gcns, 575 f)trSUS naD digirados,


573 parametres naa digitados, 608-609 descricao , 573 parametr es reels, dcscri;ao,

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" 20-22 is,

5n
parametres, adic;Oes,
codifican do, 576-577 parametros, nomes,
instru~o form, 715 pass by refcrencc,lisagcm,

eventc s, 75 Page Down, seque ncia de


eveneos, 74.-75 primeiro program; ABAP/4 , listagem, 50 Pri nt Param et ers , t ela, 531

tabelas ineemas, urilizando com


adi ~o de comparaliio,

em lore, chaves
estrangeiras e. 152 include
defmi~o, 597
~e

372-374 adi;ao de Indice, 365-366 adi c?o de pesquisa binaria, 370 com a di~ o de chave, 367-370

superior,

578-579

personaliZ2odo

descrir;ao. 602 segundo (UXX). des ai~, 602

areas conceituais, 10-15


areas de tela, 15-17

742

APRENDA EM 21 DlAS ABAP"


nenhuma adic;io, 370-372 sintaxe, 364-36 5 eransportandc a .eli,.o, 374-376 utiliUtjoes. 709

INDICE

743

release, fun~o
cance kndo.629 procedim en to para, 628

s
sa fda de Iista, impressao, 511-512 safdas de ccnversac e
instru ~o

listagem simplificada, 76 segundo prognma in clude

sy-subrc, 79-80

eabelas in tenus
adicionando linhas uma a uma, ~34-437 preenchimento,

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

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, 1041 05 Revised, versoes de tabelas companndo com Active, 222-223 descarundo,223-224 descricso, 222

'.

(UXX). descri~o, 602 select single. instru~o, sintaxe, 83-84

write, 476-479

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

Select, controle (barra d e

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

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

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 continue, 337-339 instro~o exit, 327-328 servido r de banco de da dos,
des cri~o. Z5 instru~o

codificando pan indices,


188

rodapes e cabegalhos,
513-524 rcdapes, utilizando a
instru~o

relat6rios componentes, 46 convencoes para

skip, 535

arribuicic de nome,
690

rolagem, areas alocando, 697-698

dez liscas principais, criando,412-417


envian do por fax, 511

descricao, 28, 236


objetos de dados e, 237 roll-in/roll-out
processamento,
defini~o , 30-31

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

detertninando qual Indice ~ utilizado para,


191-193 em adi~ao de eabela classificando , 428

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

regras para ur iliaar, 430

sintaxe, 426
estrutura 51St, exibindo, 82
instrU~o tables ,

compo nentes do processo de , raballio,31-32


con texte de usuario, 27-28 passos do diilogo, 28-29

interagindc com ,
269-2 70

processamento cia
inStru~ o

AVI select,

passos do dialogo , iaiciando, 29 prccessamento roll-W ra ll-out,


30-31

74

impressio em multiplas
imp ressons de urna vez, 512
in strUljaO appendsorted

proce ssamento de Back,


75

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

roll-outs, proposit o, 698 . r6rnlos, instnlc;ao parameters, 251-253

processamento de Page

tabclas. tipos, 32~36 trocando dados com servidores de apresentac;s'o, J 1

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
seu primeiro programa ABAP/4,li,tagem , 50 seu segundo programa

Down, 74-75
sintaxe,72 sy-dbc nt, 80-81

by, 412-413

telas,45

r
.;

r'

r> r>;

r-

r-

r>; I

r:

r>

r-.

<:

r>

<.

.....,~. , .
''Ii'
.lPREND.l EM 21 DIAS ABA P/4

'""'

"

"

" " '"

"

-e-,

"'

-r-,

--..,

'"'

'7 44

iNOICE inscruc;ao case, 326--327 check, 340-Hl .


inscrucac new-line , .52 8 instrucic new-page. 529
instru~o

745

Iiseagem, n liscagem revisicada, 2 69 Iiseagem simplificada, 76 Short Text, campo eel Dictionary: Change a
Data Elements, 112

report, tamanho

especificacoes de
e cc mprimenco, 341-344
po si~o

instru~o

de linha e adir;:Ocs de
contagem de

Stack. controle {barra de ferramentas


Application), ABAP/4 Ed itor, 58

instrU'?o clear, 287, 407 com adifjio, 289-290


instru~o
inStru~ o

instruc;io new-page print


on, 531

liaha,

508-5 09
instru~o

collect, ..17-422 compute, 305

instrur;:ao on changeof,
451-452 perigo oculto ern, 457- 458
ins tru~o param eters,

reserve, 523

lnstculjio select, 72

mstruljOes add and add-correspondin g,


306'307 matc hco de , 666 mes sage, raising, in scru<;ao, 645 selection-screen blo ck with frame, 667 tabelas int ernas , 388 sites da Web para curses d e trcinamento,10 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 de dadcs, 134 solucionandc problemas do~os,criando, 111 elementos de dados , criando , 115-116 in ser indo linhas em tabelas, 130-131 links d'e hipe rtexeo e ajuda Fl , adicionando , 138 navega dor de dados SE 16, 132 programas, processo de
cria~o, 50 tabelas rransparentes,

Standard Roll, ripe de


ohjeto, 695

tela Dictionary; Maintain Domain, 108


tela Di ctionary: Table/Structure: Chang. Fields, 116 sim bo los deficicao, 500 exibindo, 506-50 7 sim bolos de campo Iiseagem, 309 u tilizaes, 310 sim bo los e caracteres de desenho de linha Iistagem, 504

instru<?o C ONSTANTS, 262


instn1~o continue, 338-339 instru~o data , 77,

area de rrabalho explfcita, 77


areas de rra balho de tabela, 76-77 clausula wh ere, 78-79 em ad.i<;3.o de tabela, 426 estrurura 51St, exibindc, 82 proce ssamc nto da
inscru~o AVI

Stan dard Task, rip e de


objeto, 695 Standard, barr. d. ferramentas, 16 ABAP/4 Dictio nary butto n, 67 ABAP/4 Editor conero les, 52 -53 recu rso Find and Rep lace, 54-57 Command Field, 19-20 Find bu tto n, 28 0

247-248 adi<;ao d e gropo de bc ee es de op~o, 25 1 adi <;ao de lecras minusculas,250 adi<;ao type tJtnus like, 253 adies a, 249 com o adi~o de caixa de sel~o, 250-25 1

241-242,263-264 inserucsc dele te, 408-409


instru~o describe cable,

389 instru<;ao do, 328-329 varyin g, ad.i~o, 332-3 34 v:uyinglenddo, adi~o, 334-335
instru~o editor-call,

select, 74 processamento de Back, 75 processamenco de Page Down, 7+.7 5 sy-dbcnt, 80-81 sy-subrc, 79-80 instru<;2a selec t single. 83-84 inStrulf20 selection-screen, pardmeerc de cain d e seleljia,671 instru<;ao select-options, 672
instru~20 set blank line s,

start-of-selection,
automaticamen te inscrindo Iistagem , 551 Status, comando (m en u System), 20, 95 stop, instruc;ao inStruc;ao loop at e, 364 ucilizacoes, 714 strings de ca mpo atribuicac envolvendo duas listage ns, 268 con rendo ou tra listage rn d e String de campo, 265 defmi lj2o, 263 defmindo como tabe la ODIC ou lista gem d e eserueura, 265 lnstruljaO de dadcs, 263-2 66
ins tnl~o tables, 268-269

aintax e
ABAP/4,236-23 7 event o de inicializaca o, 654 evento selection-screen pushbutton, 655-656 ins rrucac add, 306-307 inStru<;20 add-corresponding, 307 in strulfio appen d, 354 occurs addition, 357: 3,9 inStruc;ao appen d lines, 392 instru<;3a append so rte d by, 413-417 inStruyao at end of, 444 instru<;ioat fIrst, 440 instru<;io at new, 444 in Stru<;2o back, 537 instruljao call functi oo , 610-611

395-39 7
instru~o, 560

efeiec cia tabela de


verifica <;3.o em, 253-254 ins tru<;ao positio n. 538 instru<;ao ra dio bu ttons, parimetro de grupo, 673 inStrulfao raise. 642 ins rrucio read table, 364-36 5 adi<;ao de Indice, 365-366 adi<;ao de pesquisa binaria, 370 com adi<;iio de chave, 367-370 comparando adi<;ao, 372-374 sem adi<;5es, 370-372 tran spartanda adi<;io, 374-376 ins tru ljio refresh. 405
"

instru<;ao exit, 327-328

insrrucao form , 559


instru~o free, 403 instI1:t~o if, 316 instruljao include, 598-600 instru~o inse rt, 398

ins trucio insert lines, 393 inStruljio lo op at, 359-3 60 adi<;5es from, eo, whe re, 3 62~3 63 instrucao que pede aleerar 0 processamento do lo op, 364 instrucio m essage-id, 682-683
ins cru~o m odify, 400
instru~o mo ve, 291

540 ins ttu <;ao skip, 534 instru<;ao SOrt, 376 como adit;i.a de textc, 379-382 ins truljio sum, 449 instru<;20 tab les, 268 269 inscru<;aotyp e, 270-272 instruljio while, 336-337 instru<;ao write, 46 7-468

criando, 119 122 sort, ins trut;i.o, utilizando com tahelas internas, 376-382 SPACE, constante, 262 spaol, irnp ressaa, 512-5 13 Spool, tipo de objeto, 694- 695

inStnlt;aO move -corres ponding, 303

instru~ao move, 297303

camp os numericos de, 299-300

r> r-

~~~~0rr~rr~0rrrrr~~~r~~~~~~~~~~~~~~~

746

"REND A EM 21 DIAS ABAP/4

--:: CE iH::DI::::.J

747

cipos de dados de
caractere, utilizando.300-301

por valor e resultadc, 58 1-583 passando st rin gs de

syststnu~ture,instru ~ao

select, 82 System, comandos do menu

campos,adicionando abordagem top-down,


122- 124 acresc entan do , 126

defini~o . 68 documentos alcerados,

dete rm inand o 389-390

namero de linhas,
determinando se vazia, 389 esrrururas para testando e para m odificando ccne ea do, 388 excluin do linhas, 406, 408-412

21 8-220

tipos de dados
numericos, u tilizan do, 301 -303 Iistagem da adi~ao

campo pan, 575


passando tab elas internes para, 583 corp o por referencia, 587 corpo por referencia, valor, ou valor e resu lt do, 589, a 590-591 des crevendo dentro da sub-retina, 584-5 85 sintaxe, 584 tabelas com linhas de cabe"lho, 586-5 92 tipcs, 559

Crea-e New Session, 76 t


Status, 20, 95

sy-subrc

inserindo, 126 campos, excluindc, 127


chave estrangeira.143 cornponent es de cccveocses p ara atri builiao de nome, 105 eleme ntos de dados, 102

excluindo, 125, 705 exibindo, 70


[erramen ta ur ilitdria de

configurando 0 valor de
de dentrc de s
m6dulos de funliao, Iistag em, 642- 643

banco de dados,
excluindo e re criando por dentro, 232 -233 hi st6ri co de tabela au tormcicc descriliw . 217 u tilizaado, 221 in dices criandc, 187-189 descricso, 183-186

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

instrucio raise,
641-644 m essage, instrucao raising, 644-64 8 ins trucic select, 79-80 variavel, depois da in st ru cdc editor- call, 396 sy-tabix, cperacses de loop e,710 sy- to ccu , areas d e pagina~ao e, 710 sy- uzeit, campo 245

excluindo 0 conteudo,
403-406 indice, defull~o,3 65 ins u uliao append, u tiliz wdo, 353- 359
instru~a o loop at,

configuracoes tecnicas
buffer, utilizando , 196-213 buffer em re sume de tabe las, 212-213 campo Size Cate gory, 195

subcampos
instru~ao

dererminando qual e
u cilizada com a ferramenta de rastr.eio de SQL, 191-193

move, 296 -297

utiliz and o, 359-364 instrUc;ao read table, utilizando, 364- 376 instrucac sort, 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

inserucaowrire, 471-472

sub-retinas extemas
comparando com in temas, 593 comparando com m6dulos de fun,ao, 600 descricio, 592

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 stop dentro de Iistagem, 562 extemas, comparando com in rernas , 593 internes, definindo e charnando, 559-561 passando parametres p ara , 576-577 rnetodcs, 578-5 83 p or referencis, 57 8-580 par valor, 580-581

cemrios com tab elas


de u so de buffer, 211-212 classes de dados, 193-1 95 deslocamen eo de bu ffer, 210 exibindo, 193 ndmero d e exte ns oes, 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 DDIC,67-68 de duster descricso, 99- 101 restricoes em, 101-102 vantagens, 100 de verifica~o , 143

exibindo codas, 186-187


vantagens, 185 indi ces secundarios criando, 189-190 d eflnics o, 185 excluin do, 190-191 exibindc, 186 m tem as

sub-retinas in ternes
comparando co m ext ernos, 593 definindo e cham ando , 559-561 deixando, 56 1-563 sum, instrucao, 449-451

T
Tab. Maint. Allowed, 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

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 definii;ao, 350 -353 definind o, 349

sy, variavel
adi cionando lisragem, 2 86 list agem, 283 sy -daturn, campo, 245 sy-dbcnt, selecion an do

dadcs, 425-437

preenchendo utilizando a insrrucio collect, 417-422 processamento de iccenupcso de controle, 440-444, 445,449,451-458 programa para obter informecces sabre, 390 -391

instrucao, 81
sy-fdpos, 324- 326

tabelas
Active, versoes ativas, comparan do com tabelas d e banco de

sy-index content namero


atual d e itera~oes , listagem, 329

definin a Iinha de do
cabecalho, 350 definin dc 0 corpo, 350

svstoc Message ID, tipo


de objero, 695

dados, 226-22 7
alt erand o a nom e de, 124

testando chaves estrangeiras, 149 modules de fun~o,


629-631

Text Elements from the ABAP/4 Editor, comando (menu Goto),


670

top include, programa, descricdo,602 top-of-page, eventcs acionando, 550-551 . f eventos end-of-page,
521-522

Utilities , comandos do menu A BAP / 4 Key Word Doc,


534

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

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

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

type-pool, instrugac, contendo tipos e constantes, Iistagem, 274

tipos de clados de caractere, 244 tipos de dados de comprimenrc fixe,


244

valores excluidos (excludes),633 valores iniciais padrao, deini~o, 286 valores, excluidos, 633 Value Table, campo
chaves estra ngeiras e, 165-166

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

tipos de dados numericos, 245-246 instrusao if, ordem de preferenca, 317 rabelas, alrerandc em,
127-128

como proposu Check Table , 166- 167 sem chaves estrangeiras, .


168 variaveis

<

Titlebars, tipo de objeto, 695 to addition, instru ~o loop at, 362-363 Tools, comandos do menu Administration, 22 Development Wotkbench, 12

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
definindo, 714

i'
no-zero e no-sign, 481~482 :ldi<;6es redondas decimais, 482-484comprimentos padrao,
461-462
adi~oes

como pargmetros, 572 insrructo de dados, utilizando,241 -243

varredura de intervale de fndice, definicio,


188

w
where, adicio, instrucio
loop at, 362-363

evento end-o f-pa ge,


521-522

exibindo exisrenres,
478-479

evento top-of-page, 519

retinas de conversao
dentro de

varying addition, instrucdo,


332-3 34

eventos, efeitos em,


550

instru<;io form,
571 -573
inStru~o

where, clausula

param.eters,

utilizando, 247-251

Ven dor Master Update Transaction Address, tela, 12 Vendor Master Update T ransaction: Initial, tela,
12

instruljaoselect, 78 suportada par indices, 185


Where-Used List, controle (barn de ferramentas Application), ABAP/4 Editor, 58 while, instru~o, sintaxe ,
336-33 7

Iormatacio padrao,
465-467

domfnios, 476-478 sintaxe, 467-468


subcampos, 471-472
tabelas intemas e, 716 u nderaddicioD,472-473

desloeando a justificativa,
490-491

dOlUS, 463
estouro, 464
numeros, 464

tipos de dados,
243 -247

definindo dados, 566-568 globais, descricio , 563


insrrucrc dear e, 287-288,
2 89-290

especificact o de comprimento, 470-4 71 especificacao de posicao,


468-470

vezes,4 64
formatando da ta, 479 -481

z
ztxa, grupo de fun~o,
listagem, 622
ztxlfal, tabela, exibindo

verificacac, campos de, ch aves estrangeiras compostas e, 152 verificacio, tabelas de,
defini~o, 143

especificacoes de posi<;ao
e comprimentc,
341-344

mascaras de ediljao,
474-476

Windows, ambiente, iniciando 0 R/3, 10 Windows, eventos,


interceptando, 31

local, descri~ao, 563


passando, 715

saidas de ccnversao,
476-479

dado s na, Iistagem, 135 zxtl 901listing, 599

tabelas definindc areas de


trabalhc, 564- 566 vari dvels de sistema
comumen te utilizadas , 280

verifi cando chaves estrangeiras,144-145 versdo, nfveis de, visao


genl,95-96

with key addition, instrucao read table,


367370

descricao, 79
exiblndo, zso instru<;io describe table,
389 localizado, 283-286

versao, notes de, acessan do,


96

Workflow, tipc de objeto,


695

,\

versc es de mo dules de fun ~a o , Ian cando,


62 8-629

write, instru!;ao

nomes de, 79
sy-dbcnt, 80-81

sy-fdposvoperadores para, 324 sy-index, 329


sy-subrc, 79-80

versoes d e tabelas eomp arando Revised e Active, 223

adi<;ao de nenhuma lacuna, 287, 473-474 adiljao de unidade,


486-490

adiljoes de formaeacsc

descanando Revised,
223- 224

grafica
como Icone, 501-5 03 como linha, 503-506 como simbolo,
500-501

variaveis globais, descricdo,


563

ternporfrios, 223 versoes te mporaries de


tabelas, 223

varisveislocals, descricto,
563

visibilidade

exibin do simbolos
disponfvel, Icones e

objecos de dados, nIveis


de, 237

variaveis t ipo c, move ndo para ou de strings de

caracteres de

strings de campo , 270


vis ualizando

desenho de linha,
506 -507

campo contend o tip os


n umericcs, 300 variaveis tipc d, expressoes matema ti cas e, 308 variaveis, com putando, 707
variavel, nomes, 706

paginando cabecalboe,
514

sintaxe, 500

adi<;oes monetaries,
4 84-486

programas de inclusao e incluldos, 600 safda no spoo l, 512

adicoes monetarias e de unidade, 484

.'

," I

Vous aimerez peut-être aussi