Você está na página 1de 386

Crietelas de selecao bern-projetadas e eflclente-

...."
.... ,
contem: '
KEN GRtENWPODe o'president" da ernpresa de .\
consulto riaern ,SAPNovt.l::; Inc, sediada em \
Ele instrutor de ' . . .... I
Certificacao em SAP da America's ABAP/4 Academy: . ': -
Boston; no Lambton Collegeem Ontario e . ....
. recenternente lecionou <!eABf\P/4naSAP .
Americaem Foster City. -
'}a Mais de'50' - . .
trelnamento Individuals a que assiWf e
re\::isar a qualquer rnornento, ilus.t;and9:passq a passo
as cont idos no livre.' . .. . l
." . . . \. ' _. I,
i! C6digofonteli>m ABAP/4 testadoparaos de
exemplo, e solucoes lnciuldos Iiv o. I
Ut illtarfos originai s,
'- ....cC ..J
. ' . . : .... ..
\IV\IV\N. ..c.ampu,<;.car.-: ' " "' -'--k"",
j -'7
:erie tabelas transparentes !il,
. ,: dadose dorntnios . . t...... ". ..' . '.
... . .. ; . ., - : :: '
. , UtilJ7e.o Data p-;;';a-exibir tabelas, 6/'
chaves secundarios . .';',i .
, " ,
' J
, .. .. iru:luiiidGa sua fo'rlnata<;ao"com'sfmbolos
:." ' . . , '
";' ...... .grMicos ".-:'.'"
... . ,; ., . . .
,
)
')
')
"
)
)
)
" )
".;'il l
Dla14
EnlendaoseLemenlOide
$lntaxedoABAPI":
cescreva0 de
obielosde lidos . sua
visibilidade; ulihe Il!lBis e
entendacomo
cada lipo; delifUI eutilize
constantes,
Enlerda0 do! \IpOs
dedados nasalda: utlllza
asoP95es

utilzeseeasdecoovorstio
e deiecteSOlI preseo",
dentrodedomlnios.
Dla13
v,
Pre&flCha umalabela
Jnlama apar1ir deuma
labela debanco dedado.
aseSlruturas
matserlcienl es;
relllillt processamento de
decontmleem
labelasInlernes
at ecn change of.
";
. ,.;);".;,Dla6.
Apllqul 0 ulW1aria de banco
eedados para newtar I
vorUlcllt;ao decoerl!nd:l;
atesteInlormaes de
banco dedades espadlicas
delabela; Insira arecra
labelas nobanco dedados.
Coo e utilI Indices
seQ.Jrxlar!os
apropriedamenle;configure
osalriltJlos16cnlcos para
labolas Iransparenles:
configure 0usadebuller
para tabelas,

0opefalb de
corpo delabltla It umze-e
para tester aoxlstllnclade
dados emuma labela
Inlemae compauuo
. conteudo deduas labelas
. Intemas quanta! Iguaklade.
Defina umalabEIaIntema
com ousom umallnhade
cabSl;alho;preencl\a essa
labelautilzaooo append
ehavesuma irmade
dreade
Ifabalho expl idla;
c:lasslnque labeln! kltltmas'
autilize a as
text.
J 'j ; .Pt ".; I'
,J.l'!i .. 1 .',
ISlnSIrues
comunsdlt conlrole i f.
case. doewhtl e:
cootrol& I seqiillnclado
progrlmau!iIIzando
ex it, conti nuee
chec k:codique
especficllt;ees simples dlt
0decomprmento
nl InstrOlfAo wri teo
';i 1: ;
::, . .,13
. -, "" 1\"0 , ;- .:,'. ... .. . ... ", ' ..,-' ,'.-,. ,-,' 1" , .1.<..iM.-: ....';'. ,,,,,....
Clieemodillque programas Descreva asdlIerent;aS Crle cha'o'lls ntemas;erie B
ASAPI. sinples; exibaI.WI18 8l'ltrtlabelas transparentes, laxlo;
tabela e !lC1J CMlelldo labolat de poole deduslp. r, deSCf&va a entre
ulilizando 0Dala Dictionary; erie domlnlos. elementos de uma esmnsa I UITl/Illl.bela;
adldone comenl4rio1e dadose\abelas ctIeestruluras noData
eeus transparentesno Data Diclbnaryde FV3.
progllmas. O!cllonary.
':' i
Ulillze VlIIilI.velsdesistema
comuns8se]o CIlPaz de
exibir oukx:aIiZOf qualquer
vari<lvel delllslem.; pl'eveja
eexeaJle convolS6es de
oaocs utilizenda InSllUl(6es
deatribulrrllo; codillque
ellpl'ossOes malematk:as,
Enlellda aque' um
slslemade RI'J. sua
aparllnda elunciollamenlo
para0 U5udrio; apreAda
sobfe do
slslema emqueprogramas
A8AP/41unclonam,
UIiIlzoa nstM;Aotab1es
para dellnlf strings de
campo; ontenda aInst nJ;fto
types eutilize-ap8fa
delinlr seIlSPJ6prios tipes
dedados.
"
Codlfiquelela. dnselel;lo
queinteragem com 0
osuarb; utilize elementos
de para crlar
lelas desel eiO!o bem
pl'ojeladas eellcienles:
utilize lelesde para
manter aintagrk1ade dos
d_.
Dia21
:t"
Entenda 05componenles I
aeslrulull deurn grupo de
tunr;l o;definadados
glDbals 0sUb-rotinas denlro
deumgrupodeIunc?o.
Dla 20
!
" ',\ ':' ,:.
,Dla19 .f
Entonda eutilizea
inc1ude; crIo grupes de
funyaoeI'llOOJos de
dannapa!l lmellos
deimponaljio, eXpDrlao

__'n'_.,.... .,.. . ..h '
Passe paffimetros dlgiledo!
II nAo lIigilados para
sub-rolinas; passa
paril metros
Il'lllIl eltas: pol' re'orAnda,
parvaloreporvaklrIt
rosullado; slrlngsde
campo elabelastnlemas
para umasuIHotlnl.
': ".; . :. '":' , -, ':\-\, "ii; .1 ; ..
I: !;;: ' Cia18:
-.-<;1:
Ulllize asavenlos
init 1a11zat i on,
st ar t - of -
se lecti on,
end-of -se1ecti on;
donn.$Ub-fo1lnaseklemas
eInlerna$; conflguro
variaveis locals, global! e
eslali:as,alllmdeareasde
lrabatlode labela.
" .''''Ko>i>i
'::':'!Dla ol;{1E\ "
UtilizeasInslrues
comuns delormalao
new- l 1ne,
new-page, ski p,
back. pas i t 1on e
set blank lines;
envle salda pal a0spool
IIlil/zando new-page
print.
,{,..
D" ' 15 '1' "
la.. . If, ' ., '.
\.'1; :l .
,
as do
Iormata9iograllca da
lnstrur;iowr i t e (as
symbol , as icon,
as 11 ne): lmprma
saldedeIsla amanlpureI
, aidanospool.
......
CJ
!<
o

fT1
;U
Z
J>
CJ

J>
()
J>
;U

OJ
J>
CJ
J>

lido
I r--: h
\
I
-n ..

"

- Jl
I
o
<1l

I
"H
o
:s
I I , \S
I I I I
it
h
r


;lfl l;
i
-" :...---.._ .1'. v_ ,....... _ _ -:....---.1-.........:.... :-;...............-::.:.. .. J.. "-- . .. ...... ...: ..- -_ . - - --
-_..,- - - -- - .--/
...-

,
Consultor Editorial
Fernando Barcellos Ximenes
KPMG Peat Morw;c;k
Tradu'iao
Edson Furmankiewicz
"Docware recnrcos
'lle"o Site et"
o C

,f; '" :s ACELERE tfl
SEU CONHECIMENTO
NOVIDAOES. CAOA ST IIIO,
I.ANlf' AMENTOS.
o C.OMI"ItAS

s ef!'
i!b ,<>"
Completo e
Ken Greenwood
Aprenda
---=e...=...::...::. m 21 dias.
r
;
SAMS
(2
C'AM'PUS
00"""'"
sams Tead'I Yourwlt ABAP/4 k'l 21 Days
Tradul<Jo .lIlofIz8da do idi oma ilglts da edIlWAO publlca da s.ns
CopyrightCo' 1999by Sarns
C 1999 , EdilQIlI CampllSuea.
lodes os dlrello, reseIVedos e protegid05 pilla Lei 5.988 de 14/12/73,
NlInhuma parte dUI II IJVro, Sllfll 8utoriz ao;Jo por 8$eritDda e dltora, pod e ra
SIr reproduzidaou transmitidasejamquals rOtemos meles emprll gado5:
. eilltr6nicos. meclrleos, lotogri llcos, grava9!o au quaisque r Quiros.
Tode 0 esfon;a filllelte para romecer . mais compl ela I al1equlIGairll om'I.a,.ao.
COnk/do. l(!Ito,... o{.} aul or{lIs) nAo U$Uffi8m responsabi lldade
pelos resultados. US(! da. Iomecida.Reeomendamo. aos
Inlar. 'I11ormat;:4o antn de sua"d". UIiIIZa<,;:iO.
"""
Paoo Vrtmlel10
ee.-_
MatiziII df, AnO'adl Flores E__
Rio TBXtQ

AdrianaKramer
DeborahAOdIger
Pro/elaGraffeo
Edito ra Campus uce.
A Qualid.dll daInlormat;llo.
Rua Sell d. Slllembra. 111- 16' andar
RJ Bl1Isil
Tel_lone: (021) 509-5340FAA{0211507t 99,
E-maU: ....
1S8N 85-352-0396-8
(Edil<io orignt ISBN0-&2-312 17-4).

SlndicaIO ees &litore. de Uvros. RJ
G831 &
Gre_ood, Ken
Aprellda em 21 dias ASAP' .. I Ken Greenwood;
Ed, Of1 Futmankiewicz..- RID de Jenllro : Cempus, 1999.
" (Apr&nda)
Tradul<'ade: Sam's teach)'DUFSell A6AP/41o21 deys
ISBNa5-3S2..Q3;6.6
1. ABAP/4 d. provamr.,iQ de c:omputador).
2. SAP PJ'J.3. Sislem. clentlllllswttdof.l TftUo. II
Dedicatoria
Este liuro ededicado a meus pais.
Marian e Vern Greenwood
Obrigado por tudo.
98-1991 COO-COS.l
COU- SOO.92(ABAPr4)
99 00 01 02
;IBLIOTECAS OA PUCMINAS r
HORIZONTE ,
f GlSTRO Q'
IATA:2 / . / ?'L ,3.....;
ICERVO;Z3
0
2 9/ I
'p , l .. .. __
5 4 3 2 o
Dia 20 Modu larizacao: m6dul os de fun,ao, Parte 2
Dia 21 Telas de selecao
619
653
Sumario geral
. 5
7
7
7
8
9
10
10
15
20
22
24
24
24
25
25
26
26
27
27
28
28
30
....... 1
2
SEMANA 1 Visao geral. . . . . . .
Dia 1 0 ambiente de desenvolvimento
Objetivos do capitulo .
o que eR!3? .
Qual ea fun<;ao do R!3? .
Por que voce precis a saber isso?
Descobrindo 0 R/ 3 .
Utilizando as areas conceituais do sistema R13
Descobrindo a interface com 0 usuario do RJ3
Enrendendo 0 Basis .
Entendendo 0 clienre/servidor .
Arquitetura do sistema RJ3 . . .
o servidor de apresentacao .
o servidor de aplicat ivo . . .
Descobrindo 0 servidor de banco de dados
Configurando os servidores .
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 . . . . . . . . . . . . . . . . . . . . . . . 31
Entendendo as cornponentes de urn processo de tra balho 31
Enrendendo os tipos de processo de trabalho . . . . . . . 32
Entendendo 0 cliente de logon . . . . . . . . . . . . . . . 32
Entendendo tabelas dependentes e independent es de cliente 32
Ucilizando 0 Open SQL da SAP . . . . . . . . . . . . . . 36
Pcnabilidade . . . . . . . . . . . . . . . . . . . . . . . 36
Ucilizando buffer de dados no servidor de aplicat ivc . 36
Tratamento automdtico de cliente 37
Resurno . . 37
P&R ... 38
Workshop 38
Teste . 39
Exercfcio1 39
Introducao .
Convencoes utilizadas neste livro
i
l
. 687
689
697
719
SEMANA 3 Revisao
Apendice A Convencoes de atribuicao de nome .
Apendice B Re spostas as per guntas dos testes e exercfcios
Indice . . . . . .. ... . .. . . . . .....
.. ,..
XII "RENDA EM 21 DI AS ABAp/'
SU"'''DGERAl XIII
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
95
96
97
97
98
99
. 101
Dia2
Dia3
Seu primeiro programa em ABAP/ 4 . . . . . . .
Antes de prosseguir .
Explorando 0 ambienee de desenvolvimento
Descobrindo tipos de programa .
Definindo relatorios .
Definindo programas de dialogo . .
Descobrindo componenres de relata rio .
Descobrindo a objeco de tempo de execucac de prograrna .
Inrroduzindc as convencoes de atribui'): ao de nome de programa
Criando seu primeiro programa ...
Explorando 0 editor de codigo-fome .
Utilizando a Editor: Initial Screen .
Explorando a funcionalidade do editor de codigo-fo nr e
Obten do ajuda . . . . . . . . . . . . . . . . . . . . . . . . .
Obtendo a ajuda F1 .
Obt endc a ajuda R/3 Libr ary .
Localizando seus objetos de desenvolvimento .
Introduzindo 0 R/3 Data Dictionary .
Explo rando as tabelas e as esrrururas .
Exibindo uma tabela ou definicao de estrutura
Exibindo 05 dados na tabela ...
De t ermin andc campos exibidos .
Entendendo a sintaxe do ABAP/4 . .
Introduzindo a instruci c se1ect . . . . .
Entende ndo as areas de t rabalhos de tabela
"In trcduzindo a clausul a where .
Trabalhandocom variaveis desistema .
Utilizando 0 ope rado r de encadeamenro .
Utilizando a inst rucio se l ect singl e . . .
Comentando 0 c6digo e a documentacao formal
Resumo .
P&R .
Workshop ..
Teste . . .
Exercfcios do editor . .
Exercfcios de prcgramacac
o Data Dictionary, Parte 1 .. .
Objetivos do capitulo .
Descobrindo nfveis de versac do R/3 .
Aprofundando-se no R/3 Data Di ctionary
Explorando os tipo s de t abelas em R/3 . .
Tabelas transparentes . . . . . . . . . . .
Pools de eabela e tabelas de pool .
Clusters de tabela e rabelas de cluster .
Restri<;6es nas tabelas de pool e de cluster.
Dia4
. Explorando componentes de tabela .
Mantendo as caractertsticas tecnicas des campos .
Determinando quando crier ou reu rilizar dominies e elementos
de dados _ . .
Convencoes de atribuicac de nome paratabelas e seus componentes
Criando uma rabela transparence e seus componentes
Abordagens para criar tabelas .
Ativa<;ao deobjetos DDIC .
Desccbrindo dominies .
Descobrind c elemento s de clades
Descobrindc tabelas transparentes .
Modificando tabelas . . .
Copiando uma tabela
Excluindo uma tabela
Adicionando campos
Excluindo campos . .
Aleerando 0 ripe de dado ou comprimento de urncampo
Trabalhando com dados .
Acessando a funcionalidade do navegador de dados de dentro
doODle .
Utilinrios geraisde navegador de dados .
Exibindo os dados utilizandc seu proprio programa de ABAP/4
Utilizando a ajuda Fl
Resume ..
P&R .
Workshop .
Quescionario .
Exercfcio 1 . .
Exerdcio 2 . .
a Data Di ctionary, Parte 2 . . . . . . . . . . .
Objetivos do capitulo . . . . . . . .
. Descobrindo as chaves estrangeiras .
Acionando a verifica<;ao de chave estrangeira
Requisites tecnicos paracriar uma chave estrangeira
Criando uma chave est rangeira .
Des cobrindo a coluna CheckTable .
Dererminacio automdtica de campos de chave esr rangeira .
Relacionando as chaves esrrangeiras com a seta
parabaixo e a ajuda F4 .
Chaves estrangeiras e programas em lore
Chaves esrrangeiras cornpostas . ..
Entenda a cardinal;dade . . . . . . .
Tipo de campo de chave estrangeira
Chaves esrrange iras constantes e genericas
Chaves estrangeiras adaptadas . . . . . . .
102
104
. 104
105
105
106
. 107
.107
112
.116
. 124
. 124
125
126
127
127
128
128
. 131
. 135
. 135
. 139
. 139
. 140
. 140
141
141
143
.143
. 143
. 144
.145
. 146
.149
. 149
.150
151
. 152
154
. 156
161
. 163
XIV I APRENDA EM 21 DIAS ABAP" SUMARIO GERAl XV
. 269
.270
.270
.270
.272
. 273
.274
.275
.276
.259
261
. 261
. 261
.262
.263
.263
.267
.268
. 257
.. 225
.226
.230
. 231
.232
.233
.233
.234
. 234
.234
235
. 235
. 236
. 236
. 237
.238
. 241
.254
. 255
.255
.256
. 256
Definindo dados no ABAP/4, Parte 2 . .
Objetivcs do capitulo .
Definindo constantes .
Sintaxe da instrucao CONSTANTS
Definindo strings de campo . ... ,
Urilizando a instrucao DATA para definir uma string de campo .
Utilizando uma string de campo como uma varidvel do tipo char .
Utilizando a instrucao TABLES para definir uma st ring de campo
String de campo defi nida utilizando TABLES in teragindo com
SELECT .
Visibil idade de uma string de camp o defini da uril izand o TABLES
Definindoripos .
Sintaxe para a inserucao TYPES
Tipos estruturados .
Grupos de ripe .
Criando urn grope de ripe
Resume.
P&R .
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 objeto s de dados .
Definindo literais .
Definindo variaveis
Resumo ..
P&R . . .
Workshop
Teste .
Exerctcio 1
U cilizando 0 utilicirio de banco de dados
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 . . .
Workshop
Te ste .
Exercfcios 1 . \ .
SEMANA 2 Visao geral ... .... ..
Dia 8
SEMANA 1 Revisao
Dia 7
164
168
168
. 170
171
.172
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
.215
217
. 217
.217
. 218
.221
. 221
.222
.223
.223
o Data Dictionary, Parte 4.. . .
Objetivos do capi tulo .
Hist 6r ico auto mati co de tabela e documentos alterados
Documentos alt erados .
Sabendo quando ut ilizar hist 6rico automdtico de tabela
Resumindo as configuracoes tecnicas
versees ativas e revisadas .
Vers6es adicion ais .
Descartando uma verssc revisada
o Data Dictionary, Parte 3 . .. ...
Objetivcs do capftulc .
Entendendo as Indices de tabela .
Exibindo indices .
Consider acbes ao criar urn Iodice
Criando urn Indi ce secundario . .
Excluindo urn Indice secundsrio .
Det erminando qual Indice esu sendo uti lizado
'Exibindo configuracoes tecnicas
Classe de dados ' . . ':
Cat egoria de tamanhc .
Exibindo 0 numero de extens6es alocadas para uma tabela .
Utilizacic de buffer em uma tabe1a
Resumo . .
P&R ...
Workshop
Teste .
. Exerd cio 1
Definindo uma tabela de valor
Campos especiais de Tabela . .
Os campos monetarios .
ascampos de quanridade .
As esrruturas no Data Di ctionary
Enrendendo Includes ... . .
Incluindo a mesma estrutura diversas vezes
Resumo . .
P&R ...
Workshop
Teste .
Exercfcio 1
Exerclcio 2
Exercfcio 3
Exercfcio 4
Exercicio 5
Exercicio 6
Exercicic 7 .
Dia5
Dia 6
XVI I 'PIENO' EM2101'S "'PI' SUMARID GERAl I XV"
At ribuicges, conversoes e calculos .
Objetivcs do capitulo .
Antes de prosseguir .
Trabalhando com variaveis de sistema
Localizando varidveis de sistema
Instrucoes de atrib uicio .... .
Utilizando a insrrucao cl ear
Utilizando a instrucao move
Utilizando a instrucdc move-correspondi ng
Executando cilculos .
Atribuis;ao dinamica
Resumo . .
P&R .. .
Workshop
Teste .
Exercfcio 1
Instrucoes de controle comuns ..
Objetivos do capitulo .. .
Utilizando a instrucao if .
Sintaxecia instrucao if
Conversao de dados de literais durante comparacdes .
Exibindo convers6es .
Utilizando el set f .
Utilizandc operadores de string de caractere
Utilizando a instrucaocas e .
Sineaxeciainstrucao cas e
Utilizando a instrucao exi t .
Sintaxe ciainstructo exi t
Utilizando a instrucio do . .
Sintaxe cia instrucdo do .
Terminando urn loop sem fim
Utilizando a adic;ao varying .
Madificando valores dentro de do ... varyi ng/enddo
Urilizando a instruc;2.o whi 1e . .
Sintaxe da inspucac whil e . .
Utilizando a instruc; ao cont i nue .
Sineaxe da instrucac conti nue
Utilizando a insrrucdc check .
Sintaxe da insrrucdc check .
Camparando as instrucoes exit , continue e check
. 408
.390
. 391
.392
.393
. 395
.395
; 395
. 397
.398
. 400
. 400
. 403
. 403
. 405
. 406
349
.349
.349
.350
.353
. 359
. 376
. 382
. 383
.385
. 385
.385
387
. 387
. 388
.388
.389
. 389
. 341
. 344
. 345
. 346
. 347
. 347
Tabelas internas . . . . . .. . .
Obierivos do capitulo .
Princfpios da tabelainterna .
Definicao de urna tabelainterna
Adicionando dados em uma rabela interns util izando a instrucac
append .
Lendo 'dados a partir de uma tabela interna .
Classificandc 0 ccnteodo de uma tabela intema
Resumo . .
P&R .. .
Workshop
Teste .
Exercfcic 1
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 sobre uma
tabela intema .
Copiando clades de uma t abela inrema par.1 uma autra . . _ . -: .
Copiando uma parte de uma tabela int ema .
Programa de exemplo que copia os dados as tabelas internas
Cornparando 0 conreudo de duas tahelas internas
Utili zando a instrucl c edi tor-ca11 ..
Sintaxe da edi tor-ca11 .
Inserindo linhas em uma tabela int erna
Sintaxe da instruc;ao insert ... .
Modificando as linha s em uma tabela intema
Sintaxe dainstruci o modify .
Excluindo 0 conteudo da tabela interna .
Utilizando free para excluir 0 conreudo da tabela interna .
Utilizando r ef r esh-para excluir 0 conteudo da t abela interna .
Uriliaando c1 ear corn uma tabela interna .
Utiliaando a instruljao de1ete para excluir as linhas de uma
tabela interna , .
Especificacoes simpl es de comprimento e posici c cia instrucdo wri te . 341
Sintaxe para especificacoes simples de cornprimemo e posica c
na instrucfo wri te .
Resumo . .
P&R .. .
Workshop
Teste .
Exercfcio 1
Dia 12
Dia 11
. 277
. 277
. 277
. 277
279
.279
. 279
.280
.283
.286
.286
. 291
. 303
. 304
.309
. 310
. 311
. 312
.312
. 312
315
.315
. 315
.316
.317
.319
. 320
.321
.326
.326
. 327
.327
. 328
. 328
.330
.332
. 334
. 336
. 336
.337
.338
.339
.340
.341
r Workshop . .
Teste ...
Exercfcic 1
Exercfcic 2
Dia 9
Dia 10
{VIII , APREHDAEM 21 DIAS
SUMARl OGERAl t k.IX
. 482
" 490
.491
. 493
. 493
.493
.494
527
.527
.527
. 528
. 529
. 530
. 534
.536
. 538
.540
. 541
.542
. 542
.542
. 542
. 495
.497
499
. 499
.499
.500
.500
. 501
. 503
. 506
. 507
. 508
.513
. 525
.525
. 526
.526
.526
".
Especificando decimals e arr edondament o
Mudando 0 alinhamento .
Resu mo . .
P&R ."..
Workshop
Teste .
Exer clcio 1
Tecnicas de Iormaracao, Parte 1
Objetivos do capitulo .
Fo rmatacic grafica com ainscructo write .
Sint axe paraas adiljoes graficas para a inscrucao write
Utilizando aadic;ao as symbol . .
Utilizando aadic;aoas i con .
Utilizandoaadifjao as 1; ne .
Exibindo os sfmbclos, leones e caracreres 1i ne-drawdisponjveis .
Formatando e imprimindo relat orios .
Controlando 0 tamanho de pfgina .
Criando cabecalhos e rodapes de pagina .
Resumo . .
P&R . . .
Workshop
Teste .
Exe rdcio 1 . .
Tecnicas de formatacao, Parte 2 .
Objetivos do capitulo .
Ins rrucoes de fcrmaracio de lista ..
Utilizando ainstrucao new-l ; ne . . .
Utilizando ainstrufjao newpage .
Utilizando new-page pri nt
Utilizando a inserucic ski p .. .
Utilizando ainstrucao back
Utilizando ainsrruefo posi t; on .
Utilizando ainsrrucio set blank 1i nes
Resumo . .
P&R . ..
Workshop
Teste .
Exercfcic 1 . . .
SEMANA 2 Revisao
D ia 15
SEMANA 3 Visao geral
D ia 16
. 425
. 425
. 426
.434
.437
. 438
.439
". 440
. 444
.449
.451
.458
. 459
. 460
. 460
.460
.460
461
.461
. 461
. 461
. 462
.463
.465
.467
. 468
. 470
.471
.472
. 473
. 474
. 476
. 479
. 481
. . 412
. . 413
. 417
. 417
. 422
. 423
. 424
. 424
.424
425
A instrucao write . . . . . . . . . . . . . . . . . .
Objetivos do capitulo .
Porrnatacao e comprimentos padrao
Co mprimenros padrao
Campos compactados .
Eormatacao padrao .
Programa de exemplo demonst rando a formatacao padrdo .
Adiljoes para a instrucao writ e .
Ccmpreendendo a especificacdo de posicao .
Compreendendo a especificacao de comprimento
Trabalhanclo com subcampos . .
Ucilizandoa adifjao under . .
Utilizandoa 'noMgap . . .
Utilizando mascaras de edicac .
Utiliza..ndo as safdas de conversao
Trabalhando com a formatacf c de data
Utiliza..ndo as adifjoes no-zero e no-sign
Criando Iist as dos 10 melhores uti lizando append so rt ed by .
Sintaxe dainstrucio append sorted by . . . . .
Preenchendo uma tabela intema utilizandc co11ect
Sintaxe da ins trucjio co11 ect .
Resume . .
P&R .
Workshop . .
Teste . . . .
Exercicio 1 .
Tabelas internas avancadas, Parte 2 . . . . .
Objetivc s do capitulo .
Preenchend o uma tabe1a interna apartir de uma tabela de banco
de dados .
Selecionando rmiltiplas linhas diretamente parauma tabela interna
Adicionando Iinhas, uma poruma, utilizando se1ect
Resumindo se1ect, tabelas int emas e eficiencia .. .
Urilizandc as tabelas de exemplo 1fal , 1fbi , 1f el e 1fe3
Process amento de interrupcao de controle ... .
Utilizando as instruc oes at fi r st eat l ast .
Utilizando as instru coes at new e at end of .
Ut ilizando a instrucdc sum .
Llrilizando a ins trucio on change of
Resumo .
P&R .
Workshop .
Teste . .
Exercfcio 1
Exercfcio 2
Dia 13
Dia 14
.628
.629
1
.638
.640
.641
.641
.644
.648
,649
.650
.650
.651
,651
.651
.655
.653
.653
.654
.
,657
.659
.666
.666
.667
.667
,668
.670
.671
,672
.672
.673
.673
9
.622
.623
ng . ng
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
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 .
P&R .
Workshop .
Teste ..
Exercicio 1
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 .
Utilizando 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 .
Asintaxe para urn radi obutton group
Exernplo de programa de tela de
Dia 21
...
597
.597
.598
.600
.601
.602
.604
.605
.605
.607
.608
.. 609
610
.611
.613
.. 559
. . . 561
.563
.568
.568
.570
.570
.570
571
.571
.573
.576
.578
.583
.592
.595
.595
.596
.596
Deixando uma sub-retina .
Dermmdo variaveis
Utilizando a instrucao include . . .
Sintaxe para a instru<sao include
Introduzindo modules de Iuncao .
Entendende gropos de .
Acessando a bibliotecade
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 ca11 functi on .
Executando um modulo de fun<sao de exemplo eo' 0
Criando urn m6dulo de
Resumo. .. ...
Mc)duLlaI'lzalGajO: nassanuo para
Resumo ..
P&R ...
Workshop
Teste .
Exercicio 1 .
Passando parametros ......,....
Criando parametros digitados ....
Controlando como os pararnetros sao passados ..
U tilizando as metodos de passagem de parametros
Passando tabelas internas como parametros .
Definindo e chamando sub-retinas externas
. Resumo . . .
P&R ... . .
Workshop
Teste .
Exerclcio 1
18
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 problemas e perguntas que voce ted. quando aprender
essa linguagem poderosa. Incorporando neste livre todas as melhores tecnicas
que enconrrei, espero compartilhar essa mesma experiencia de aprendizagem
com voce tambem. Para esse [im, este Iivro erepleto de diagramas detalhados,
imagens de tela in reira, programas funcionais de exemplo, apresentacoes (sere-
encams) narradas em ingles e procedimenros passo a passo. Toclos os prcgra-
mas de exemplc tambem sao forne cidos no CD-ROMde modo quevoce possa
earregar e executa-los em seu pr6prio sistema. Alem disso, as utilirarios que
Iorneco para todas as minhas classes eseao incluidos no CD-ROM, 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 linguagem. Par causa disso, 0 iniciante frequenremente fica desnorteado
com seu comportamento. Entendendo 0 [un cionamento subliminarmente,
voce sed. capaz de dominar essa linguagem. Entendendo 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 ABAP/ 4 urnpasso decadavez. Depois de completar cadacapitulo;
voce praticara atraves de exercrcios para reforcar seu aprendizado. As solucoes
funcionais sao ofereeidas para todos os exercfcics no CD-ROM.
Como programador es experientes sabem, e as iniciantes logo saberao,
criar programas ABAP/4 freqUentemente significa de senvolver mais que ape-
nas urn programa. Esse trabalho frequentement e envolve a criacao de ob jeros
dedesenvolvime 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 comando. Todos os procedimentos sao acompanhados por uma
screencam que mostra exatamente como eles sao feitos. 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 pessoas, mas selecionei as infor-
macoes mais vitais de que voce precisa e as dividi em 21 part es gerenciaveis.
Com 0 conhecimento que voce adquire utilizando est e 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. postarei respostas a perguntas
[requentes (FAQs) e problemas com que voce pode se deparar que nao foram
abordados aqui.

"
.681
.682
.684
. 685
. 685
. 685
.686
687
689
. 689
. 690
.691
. 691
697
719
Utilizando a insrrucac message . . . . .
Sinraxe para a inst ruci o message-i d
Resumo ' .'
P&R ...
Workshop
Teste .
Exercfcio 1
EM 21 DIAS
SEMANA 3 Revisao
Apendi ce A Convencoes de atribui<;iio de nome ..
Convencoes de arribuicao de D.omede programas .
Co nvencoes para arribuic do de nomes a relat6rios .
Convencoes para atribui cao de nomes a programas de dialogo
Inrervalos de nomes de dientes : . .
Apendice B Respostas as perguntas dos testes e exer cfcios
Indice .
-.,.,

IXXII
'------ - - -----'-- ------ ------------ ---- - - ----1
v
IIIll<OOU(AC 3
UI 0 leone Sintaxe alerta para a usa adequado da sintaxe de urn codigo.
-
Z

m
V
Espero que voce ache 0 esrud o deste livre tao agrsdfvel quanto achei
escreve-Io. Boa sorte! Eis 0 seu ABAP/4 em 21 dias!
k oove n<;6es ut ilizadas oeste lJeiVu[-"o'- _
o texro que voce digita e a texto que voce ve na tel a aparecem em fon te
monoespacada
parect da com est a
para sirnular a forma que 0 texto assume na sua tela.
Variaveis e placeholders (palavras que espelham 0 que voce realmente
digitara ) aparecem em fonre monoespacoda e em t touco.
Cada capit ulo econcluldo com perguntas relativas ao assunto do dia, com
respostas do autor. A maioria dos capftulos tambem inclui uma de
exercfcios e urn quesrionaric pr ojetados para reforcar as conceit os do dia. (As
respo stas aparecem no Apsndice B.)

Iliol
INAtIIE
o kane Entrada destoco 0 c6digo a ser digifodo.
a leone Soido destoco a SOldo produzido pelo execucoo do ccdiqo.
o leone Analise designo 0 analise do oute r, linha por linho.
Umo nota opresentc tnformccoes relacion odos com 0
disccssco.
Uma dico cferece ccnselh cs ou mostro umo moneira mois f6cilde fozer
olgumo coisa .
Um oviso de cvldodc clertc poro urn possfvel problema e oferece
conselbos sobre como evlto-lo.
"-------------------'

Esses quodros-de FO/iolNeo fOlio
oferecem dices perc a que fozer e 0 que
nco fozer com 0 ASAP/ 4.
scmNUMlIltr... Muitos dos procedimentos neste Ilvro sao demonstrodos vtilizondo screencoms .
,.. As screencoms s60 como filrnes; mostrom umo sene de telcs, induindo pres-
sionomentos de teclo e movimentos de mouse, com umo ncrrocdo "descrifivo em ingles.
.,
NOYO ...
milo ,.
Termos novas s60 introduzidos utilizcndo a kane Novo Terma.
' .
Sumcirio
SEMANA 2 Reviseo
SEMANA 1 Reviseo
Inrroducao
SEMANA 1 Visco geral . . . . . .
Dia 1 0 ambiente de desenvolvimento ..
.. . . . . . . . . 1
.. 5
. 7
43
95
143
183
217
235
.257
.259
261
279
315
349
387
425
461
. 495
Seu primeiro programa em ABAP/4
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 .
SEMANA 2 Visco geral
Dia 8 Definindo dados no ABAP/4, Parte 2 .
Dia 9 Atribuicoes, conversoes e cilculos
Dia 10 Instrucoes de controle comuns
Dia 11 Tabelas internas .
Dia 12 Tabelas internas avancadas, Parte 1
Dia 13 Tabelas internas avancadas , Parte 2
Dia 14 A instrucao write . .. .
Dia2
Dia 3
Dia4
Dia5
Dia 6
Dia 7
SEMANA 3 Visco geral .
Di a 15 Tecnicas de formatacao, Parte 1
Dia 16 Tecnicas de Iormatacao, Parte 2
Dia 17 Modularizacao: everitos e sub-rotinas .
Di a 18 Modularizacao: passando pariimetros para sub-rotinas
Dia 19 Modularizacao: modules de fun,ao, Parte 1 . . . . . .
.499
499
527
545
571
597
SEMANA 1
Visaogeral
Voce comeca a Semana 1 aprendendo sabre 0 ambiente do R/3,
incluindo 0 Basis, clienees de logon, 0 ABAP/4 Development Work-
bench e 0 Data Dictionary. Dentro do dicionario, voce cria tabelas
transparentes utilizando elementos de dados e dominios, adiciona chaves
extemas para validar entrada e prepara indice s secunddrios ou usa de
buffer para acelerar a acesso aos dados. Voce tambem 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 ambience de desenvolvimenro", explica 0 que eurn
sistema R/3 e sua interface com 0 usuario. Voce aprende sabre
a arqu irerura do sistema em que fun cionam 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 Data Di cti onary, assim como
adiciona comentarios e documentacao aos seus programas.
0 Dia 3, ... 0 Data Dictionary, Parte 1", descreve as diferencas
entre tab elas de poo l, tabelas tran sparentes e de cluster. Voce
tambem aprende a criar dominies, elementos de dados e tabelas
transparentes no Data Dictionary.
No Dia 4, " 0 Data Dicti 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 tecnicos para tabel as tran sparentes e ajusra 0 uso de
buffer para tabelas,
6 I APRENDA EM 21 DIAS AiAP,.
No Di a 6. "0 Data Dic tionary, Parte 4". voce rrabalha com 0 utilitario
banco _de dados para execurar de coerenc ia, acesso de
mforma!Soes de tabelas especfficas de banco de dad . . d
. d b as, mserm 0 e
recnan 0 ta elas no banco de dados.
Depoi s do Dia 7, "De finindo dados no ABAP/ 4 Part I" ,
ente dId . , e, VOce
n e as e ementos a smtaxe do ABAP/ 4 d .
bi d d escreve 0 concerto de
o e d e : isibilidade, utiliza Iiterais e entende como
co 1 lear ca a npo, definindo e ut ilizando constantes.
I
I
1
oambiente de desenvolvimento
Qbjetjvos do capitul.... o'-- _
Depois de conduir este capitulo, voce devers ser capaz de responder as
seguintes perguntas:
8 0 que eurn sistema R/3?
0 que euma inst dncia R/3?
0 que e0 Basis?
Que plat aformas 0 R/3 suporra?
Quais sao as possfveis configuracces do sist ema R/3?
0 que ea arquitetura de servidor do R/3 ?
0 que eclienre d,elogon?
o que e R/3?
o R/3 eurn conjunto inregrado de aplicativos projetado para tratar 0 proces-
samento de dados em grandes corporacoes. Ele foi desenvolvido na Alemanha
pela empres a denominada SAP {uma sigla de Systems Applications and Pro-
ducts for data processing - aplicativos e produrcs de sistemas para proces-
samento de dados). .
8 APRENDA EM21 DIAl ABAP/4
'" lA, .NT. .Dl VOl EN'
WF r:workflow - [luxe de trabalho)
IS (Industry Solutions - solucoes de industria)
HR (Human Resources - recursos humanos) .
PM (Plant Maintenance - rnanutencao das
QM (Quality Management - gereneiamento da qualidade)
Estes aplicativos sao chamados areas[uncionais, areas deaplicativo ou, as
vezes, modulesfuncionais do R/3. Todos Esses termos sao sinonimos .
Tradicionalmente
,
as estruturas empresariais desenvolvern urn conjunro
de apjicativos de processamentc de dados avaliendo produtos 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 egasta na impl ementacao e manutencao dessas interfaces.
a BJ3 vern predefinido com os aplicativos empresari ais basicos ne-
cessarios amaioria 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 padrdo.
pp
BASIS
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 e0 sist ema em que seus programas ABAP/4 serao executados. A
Figura 1.1 oferece uma representacfo 16gica disso.
Fig ura 1 1
Todos os m6dulos de
oplicotivo s60 escritos
em ABNJ/4, que e
inlerpretodo por
executovets Basis, que
por suo vez, s60
execurcccs no sistema
operocionol.
Quando voce ve a pclovro SAP por si mesma, ela e pronunciodo
"es-ei-pl". Quando e combinodo com Dutro pclovro, e pronunciodo
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".
SISTEMA OPERACIONAl
QUai e a fLJo\;oO do R/3?
A unica utilidade de urn sistema RJ3 e urn conjunto imegrado com-
pacto, de aplicativcs 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 e0 seguinte:
PP (Production Planning - planejamento da producao)
MM (Materia ls Management - gerenciamentc de materiais)
SD (Sales and Distribution - vendas e disrr ibuicao)
FI (Financial Accounting - comabilidade financeira)
CO (Controlling - controladoria)
AM (Fixed Assets Management - gerenciamento de ativos fixos)
PS (Projec t System - sistema de projetc)
I
I
, . b ' 2
por que voce preCIse _
Eimportante para VOCe, como urn programador de ABAP/ 4, saber p.or que
esses aplicativos sao todos escritos inteiramente em ABAP/ 4. Esses saO os
aplicativos que voce deve entender para ser urn born deserivolvedor de R/3.
Por exemplo, suponha que voce conhece ABAP/4 e tenha recebido a
incumbencia de escrever urn relat6rio financeiro que resume 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 eincumbido 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 jacontem dados
sernelhantes ou identicos aos ripos de dados que voce quer recuperar. Esses
aplicativos sao altamente integrados. Urn desenvolvedor que assume a aborda-
gem "eu construirei minhas pr6prias tabelas e manterei minhas pr6prias capias
dos dados", pode logo descobrir que seus dados sao redundant es e devem ser
rotineiramente sincronizados com 0 resto do banco de dados. Ele construiu
urn aplicativo que nao ti ra proveito da natureza altamente integrada do ambi-
= ~ M . .
Mencionei isso apenas porque muitos desenv olvedores que des ejam
tomar-se consultores independent es pensam que aprender ABAP/4 erudo de
que eles precisam para se aperfeicoar no sisterna-RJ3. Ecertamente urn grande
infcio, mas eapenas 0 come co. A impcrrancia de treinarnento em uma area
funcicnal pede ser supervisionada ou desc onhecida par esses interessadcs em
se tomar consultores profi cientes de ABAP/ 4. Obviamente, muito desse
aprendizado pede e sera Ieiro na pratica 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 como urn cons ul tor
independente, voce acabara precisando adquirir urn conhecimento funciona l
da "area.
Voce pode cprender sa bre as 6reos funcionois lende 0 referencia online
do R/3 (cominho de menu do R/3 Help-> R/3 library). Ela cc ntem
tutoriois e Inicrmccoes de todo s os areas funclc ncls. 5e voce tive r
ocesso 0 um sistema com dodos do IDES (I nternat ional Demo and
Education Sysfem), voce tcrnbem pcderc trobalhor com as exerdcios
do R/3library. Perc lnformocces sebre-edispcn'btlidcde de cursos de
trelncmentc, contofe a SAP (ht tp ://www . sap. com) ou la mbton Col-
lege (http: / /www.1ambton.on .ca).
Descobrind"'o!..Co"'-'R>L/ ... 3'-- _
Em urn ambient e do Windows, voce eferua logon no R/3 escolhendo urn
caminho a partir do menu Iniciar, ou dando urn clique duple ern urn Icone R/3,
como 0 mosr rado a seguir na Figura 1.2.
o sistema R/3 solic itara a voce urn ID de usuario e senha. A tela de logon
aparece na Figura 1.3. Voce pr eenchera esses dois campos eentao pressionaci
Enter.
o sistema R/3 entao exibire uma tela de direitos autorais e, quando voce
pressionar Enter, exibira 0 menu principal do R/3 como mos trado na Figura 1.4.
lltiliza ndo as areas conceitlJa is do sistema R/3
A partir do menu principal, voce pode ir para t res areas conceituais no sistema
RJ3:
a area Applicat ions
a area Basis
0 Development Workbench
\
i
I
I
!
I
j
J
-j
I
! . ~ .
,
fjguro 1 2
o kane do R/3 no
6reo de trcbcfbc-
lce ne
doR/3
EJgurp 1 3
Alela de logon do
R/3 solicifa 0 voce
urnc senho.
._ - -'--
,.. r
12 APIENDA EM21 DIAS ASAP,.
1 .lit ,EI ESE LV ITC
Figura J 4
o menu princi pal
do R/3.
It 1,1,,1
. ...lcVo'c< ---.,_-.,__1_ ..... ' . " '. ........ -
:" 1 t -' .,;.; .'- ;"'".
Figura] 5
a cominhode menu
otuolizo urn
registro-mestre do
fobriconte (porte i ).
-'e' ....1
o Development Workbench eutilizadc 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 Workbench,
escolha 0 caminho de menu Tcols-c-Developrnent Workbench. Entretanto,
seu c6dig o devers ler ou atualizar as clados de aplicativo e, portant o, sera
des tinado a tomar-se parte cia area de aplicativos. Com isso em mente, vamos
olhar cleona de uma area Applications primeiro.
Para nosso exemplo, imagine que voce' eurn 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 estava
lendo (Visao criminologista dos problemas relacionados com a contabilidade
criatiua} e precede aatualizacao de endereco no sistema R/3. Primei ro, voce
alcanca 0 menu Account s Payable escolhendo 0 caminho de menu Account-
ing->Financial Accounring- S-Acccunts Payable [veja a Figura 1.5).
Voce entao cria a rransacic de manutencao de registro-mest re de urn
fabricante escolhendo 0 caminho de menu Master Records->Change (veja a
Fi gura 1.6). Voce vera a tela Change Vendor: Initial.
Na tela Init ial mostrada na Fi gura 1.7, digite 0 rrdmero do fabricante, fafSa
. uma marca de selecao na caixa de selecao Address e pressione a tecla Enter.
Voce entao veri a tela Address (veja a Figura 1.8).
Voce altera seu endereco e pressiona 0 botao Save {veja a Fi gura 1.9).
Ao salvar, 0 sistema retorna a voce Change Vendor: Initial Screen. Ele
tambem exibe uma mensagem de exito dentro da barra de status posicionada
na part e inferior da t ela (veja a Figura 1.10).
Figura] A...--
o cominho de me:nlJ
otuolizoo
registro-mestre de um
fobriconl e (porte 2).
14 APREHDA EM21 DIAS ABAPI4
,_'\1 " .>_. ",: ; :." l"'::-
.:
. '5116' , -.f.': ,.-
' I...
,. :. "1 :, :.'
TI1"h.... I"] ..ht.. Io/fIlI';1 .- .-,'

@'.: sr f! -' .1.".. ,1
; _ [Ill G.- '_- . -" . -.- -' ... - .,::,. _.',. .. ' .. "
II" I __._ d o:" . D, x ,:rq . . '. ,
Fig ura 1 9
Solvondo
no eneJerer;odo
fobriconte.
Figura 1 7
Alela Vendor Mosler
Update Trcnsocti on:
Initial.
Essa t ransacao eurn exernplo de muitas das rransacoes no sistema Rl3.
A maioria das rransacoes de dados-mes tres tern aparencia e significado seme-
lhanres.
E..i..Q..ura 1 8
Atela Vendor Moster
Update Tronsodion;'
Address .
figur " 1 1 0
AInitiol Screen
que 0
o/leroljoo de endere'i0
fei feito.
.1<,, ' >< '
, ," ...
Descobriodo a interlace com Q usu6rio do R/3
A Figura 1.11 mostra 0 menu principal novamente com as areas importantes
de tela identificadas.
16 APRENDA EM 21 DIAS ABAPi4
Cada t ela do R/3 contem estes elementos :
A barra de titulo: contern 0 titulo ciatela atua].
A de menu: a conteudo ciabarra de menu altera-se com cada tela.
Pesqui sando as menus dentro dele, vo ce pode descobrir todas ' as
que sao possfveis na tela atua]. Os menus System e Help estao
presentes em cada tela e as itens de menu que eles contem nunca se
alteram. .
0 campo Command: aqui voce digita comandos a serem executados.
Por voce po de efetuar 0 logoff digitando { nex nesse campo
e pressionando a teela Enter. A se<,;ao "Utilizando 0 campo Com-
mand" descreve esse campo em mais detalhe.
A, de ferramentas Standard: contem a campo Command e uma
sen e_de Eles nunca se alterariio na aparencia, posicao 0';
fun<,;ao, e estarao presentes em cada tela. Algumas podem estar acin-
zen radas por fora se sua funcionalidade estiver atualmente indis-
ponfvel. .
A de ferramentas Application: altera -se com cada tela. Ex ibe as
bot oes que dec a voce acesso rapido a irens de me nu des sa tela . .
Quando voce ccloco a pante iro do mouse sabre quoiquer batao par
alguns segundos, 0 R/3 exlbe ume dice de ferromenta descrevendo
suo fun<;ao. No R/ 3, isso se chama informa<;ao rcptdo (quick info). Elo
contern uma breve descricoc do batao e a teclo de f un<;aootribuldo a
ele.
Trabalhando com 0 menu de interface
o leone corn tres cfrculos coloridos no canto superi or di reit o da janela do R/3
echamado menu de interface. Com ele, voce pode pe rsonalizar a interface com
o usudrio configurando cores de tela, tamanhos de Fonte e a comportarnento
do cursor. Para realizar isso, de urn clique no leone 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.
Menu de interface: permite que voce personalize 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 interface.
Area Screen: esta ea 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 sobrescrever
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 ulo, siga as instrucoes
na proxima sec;ao para corrigi-la.
Figura 1 12
o menu de interface
com 0 item de menu
Opt ions destocado.
Barra de status
Compo Command Barra de titulo Figura "] 1 1
Elementos imporfon tes
de emu tela do R/3.
IEN- .J ..- VD' :Dr Jll JA 01.
.

.. ,,, .
... J '"-,,,-
..
Por enqucnto, pense em um progromo como ume trcnscceo. Os dois
sa o grosseiroment e eq uivolentes. Quando voce inicicumo trcnsocco,
voce est6 iniciando urn progr oma.
Exiba todes as configurac;6es de tecto de func;ao (ou teclo dondo um
clique com botco dtreito do mouse em quolquer lugor do 6rea de
tela. lsso fundona em todcs as telas. Astedos de func;ao 1 a 12 estoo
no linho superior dos tedos em seu tecla do. Asteclcs de fum;ao 13 0
24 sao essos mesmos tedos com a tedo Shiftpressionoda . Por exemp lo,
f13 eShift+F1. Pora as teclcs f de 25 a 36 , utilize Or! em vez de Shift.
Para 37 a 48 , utilize Alt. Pa ro a s teclos f maiores que 48, montenha
pressionoda Or! e digite 0 nc mero do teclo no teclado nume rlco. Por
exemplc, pora F50, monlenho pressionado Ctrl e digile 50 no tedodo
numeri co.
Utiliza ndo 0 Command Field
Na barra de [erramentas Standard est auma ar ea de entrada chamada Command
Field. Aqui voce pede inserir comandos de sistema. Para uma lists do s coman-
dos que voce pede inserir aqui, col oque seu cursor no camp o de comand o e
pr essione a tecl a FI.
Este e mars frequentemente para uuciar uma nova
rransacao.
Calocondo marcas de
selelOoo no caixa de
selelOoa Co lors In
Lists.
Figura 1 14
Voce deve dar urn clique no batao Apply ou OK ant es de escother ovtrc
guio. Se voce nco fizer issc, sues clterc coes noo tenSa efeito.
De urn clique na guia General e altere suas configuracoes para coinc idir
corn . as mcstradas na Figura 1.13. Pazendo isso, voce assegura que a sua
interface com 0 usuririo ficard par ecida e se comportara como descrito ne ste
livre.
Ative todas as barras de [erramentas uma mar ca de selecso em codas
elas) e configure Quick Info como Quick. Fac;a uma marea de selecao na
primeira e na ultima das caixas de selecao de mensagem como mosrr ado. De
urn clique em Apply.
. Deurn clique na guia Col ors In Lists e fac; a uma marea de selecao na caixa
de selecac Lines In Lists como most rado na Fi gura 1.14. De urn clique em OK
para retornar.
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.
Fig u ra 1 13
As opes de Gen eral
Interface.
18 AI/EHDA EM 21 DIAl ABAP/.
NOYO .... Em vez de escolher urn cominho _de menu pora inicior uma voce
milo" pede inserir 0 c6diga de tronsac;oo no eampo de eama ndo. Um c6d!go de
trc nsocoo eum c6digo de 3 ou 4 cc rocteres associodo o ume nc nsocc c - voce pad e
utiliz6. 1o para lnlcicr 0 tronsccoc sem unlucr um ca minho de menu. Cado trcnsccoo tem
um c6digo de tronsOf;do (tambem den orninodo tcode).
20 AP' ENDA EM21 DIAS ABAPI4
Para localizar 0 c6digo para qualquer transacac , voce invoca a tr ansacl o
e enrao escolhe 0 caminh o de menu Sysrem- c-Status. A tela System:_Status
sera exibida. a codigo de transacao aparecera no campo Transaction.
Por exemplo, a partir do menu principal R/ 3, escolha 0 caminho de menu
Accounting-c- Financial Accounting->Accounts Payable. Vo ce vera a tela
Accounts Payable. A partir daqui, escolha 0 caminho de menu Maste r
Records- >Display. Voce vera a tela System:_Status . Escolha 0 caminho de
menu Systern-c-Srarus . Aparecerf a tela System: _Status. N o campo Transac-
tion esti 0 codigo de t ransacio para essa tela: FK03. .
Agora que voce tern 0 c6digo de transaca o, pede iniciar essa transacao de
qualquer tela digitando 0 camp o de comando I n seguido pelo codigo de
transacao.
Por exemplo, retome ao men u principal (de urn clique no botao Cancel
duas vezes e emac de urn 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 qualquer tela, voce pode encontrar 0 c6diga de trcnsocco do
troosccec etuel. Pera fozer isso, escolho 0 cominho de menu
System- >Stotus.
Entendendo 0 Basis
NOVO Basise comoumsistemo operocional para R/3. Ele fico entre0 c6digoABAP/4
lUMO " eo sistema cperoooncl da computodcr. ASAPgosta de chcmc-lomiddlewore
porque elefico no mete, entre 0 ABAP/4 e 0 sistema operacionel.
o antecessor do R/3 e RI2. 0 R/2 e baseodo em mainframe e 0 SAP
cdcptou-o para 0 ombientecliente/servidor_Para fczerisso, 0 SAP criou
o Basis. Suo criol;oo permitiu que 0 c6digo em ABAP/4 existente
funcionosse emoutrosplctoformos.
Se voltar para a Fi gura 1.1, voce podera ver 0 Basis colocado entre 0
ABAP/4 e 0 sist ema operacional. 0 ABAP/ 4 DaO pode funcionar diretamenre
em urn sistema operaci onal. Ele exige urn conjunto de programas (coleti-
vamente .chamade Basis) para carre gar, inrerprecar e usar buffer em sua entrada
e safda.
o Basis, sob certo aspecto, ecomo 0 ambience Windows. Enquanro 0
Windows estive r sendo executado, ele ofereee urn ambience em que os pro-
gramas Windows po dem funcionar. Sem 0 Windows, 0 programa escrito para
o amb iente Windows nao pede ser executado.
- -
o Basis para prograrnas ABAP/4, enquanto a Windows epara programas
Windows. a Basis oferece 0 ambiente de tempo de execucao para programas
ABAP/4 . Sem de, programas ABAP/4 nao podem 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 apresenta uma interlace a voce.
Utilizando essa interface a usuario pode iniciar programas ABAP/4.
Para instalar 0 Basis, urn instalador execut a 0 programa r3inst no nfvel
do pr ompt de comando do sistema operaeional. Como na maioria das instala-
essa operacio erie uma esrrurura de diret6rios e copia urn conjumo de
executaveis para ela. Esses executaveis tornados juntos como uma unidade
formam 0 Basis.
Para inieiar 0 sistema R/3, 0 oper ador digita 0 comando starts ap. Os
executaveis do Basis iniciam e permanecern sendo executados, aceit ando sol i-
citacoes do usuario para execur ar programas ABAP/4.
Programas ABAP/ 4 sao executados dentro do ambienc e prot etcr do
Basis; eles nao sao executaveis que funcionam no sistema operacional. Em vez
disso, 0 Basis Ie 0 c6digo do ABAP/ 4 e os interpreta como instrucoes do
sistema operacional.
as programas ABAP/4 nfo acessam de sistema operacional
diretamente. Eles utiiizam fuDc;oes do Basis para execu rar E/S de arquivo e
exibem dados em janelas . Esse nfvel de iscla mentc do sistema operacional
permite que programas ABAP/4 sejam adaptados sem modificarao de qualquer
sistema que suporte R;3 . Esse uso de buffer e. construldo diretamente na
pr6pria linguagem de ABAP/4 e etotalrnente transpar ente para 0 programador.
o Basis torna os programas ABAP/4 portateis. As plataformas em que
o R;3 po de ser executado sao mostradas na Tabela 1.1.
Ta bel a 1.1 Plotoformas e bancos de dodos suporto dos par R/3
Sistema Hardwa re FrontaEnd s Ban cos de dados
operational suportado suportados suportados
AIX SINIX IBMSNI SUN W;n3.1 /95 / NT DB2 for AIX
SOLARISHPUX Di gital HP OSF/ Mol ;f Informlx-Online
Bull OS/ 2 Orccle 7.1
Macintosh ADABAS D
Windows NT AT&TCompoq W;n3. 1/ 95/NT Orode 7.1
BulllZen;lh OSF/ Mot;f SQl Server 6.0
HP (Inlel) SNI OS/2
ADABAS D
IBM(Intel) Macintosh
Diqltcl (Intel)
Dcto-Geoercl
OS/400 AS/400 W;n95 OS/2 DB2/400
a
22 "REND AEM2\ DIAl ABIP/4
... <
DlH.O....BIEHlE DEDESENVDLVI MENTD 23
"""-
._.
......-
..f=f-l-I-- -} - ,
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 independentes. 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 client e/ servidor padrao. 0
R/ 3 pode ser modelado para trabalhar em qualquer uma dessas configuracoes.
Quando 0 programa cliente e 0 servidor sao executados no rnesmo
cornputador, a cccfiguracao ereferida como cliente/servidor em urna camada.
[Uma camada (tier) e0 limite entre dois computadores.] Quando des sao
execurados em cornputadores diferentes, a configuracao ereferida como eli-
ente/ servidor em duas camadas .
Urn programa pode func ionar como urn cliente e como urn servidor, se
ele tanto solicita informacoes como responde as solicitacoes. Quando voce tern
treSprogramas em comunicaclo, como emostrado na Figura 1.16. a configu-
raliaO e chamada client e/ servidor em tres camadas.
A configuracao cliente/ servidor permite que 0 sistema R/3 divida sua
c.arga com mul tiples computadores. 1550 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 uma configuracio existence ,
em vez de substiruir urn {mica computador que executa todo 0 processamento,
como ocorre no mundo des mainframes.
.......
_.....
Figmn 1 16
dienle/servidor em Limo. dLios e Ires comodos.
... _e-acIo s..:.dot ... d.... CI>IftC>do>
DDis , ompvIOllo,u
Progromo
servidor
Solicitoccc de
Progromo
die nte
inf ormoc;60
Progromo 1
Resposto
Progro mo 2
C1iente/servidor soo dai s progremos que conversam um com 0 outre [ve]o 0
Figure 1.15).
NOVO ....
llRII Or
Por exemplo, se voce escrevesse urn programs ABAP/ 4no Digital UNIX
com urn banco de dados Informix e uma interface OSF/Motif, esse mesmo
programa deveria sec executado semmodificartio em uma mdquina Windows
NT com urn banco de dados Oracle e uma inte rface Windows 95. Ou, ele pode
sec executado em urn AS/400 com urn banco de dados DB2 uti lizandc OS/2
como front -end .
A SAP tambem oferece urn conjunto de [erramentas para administrar 0
sistema do Basis. Essas ferramentas executam tarefas como monitoracao do
desempenho do sistema, alem da con figuracso e manutencio de sistema. Para
acessar as [erramentas de administracf c do Basis a part ir do menu principal,
escolha 0 caminho Tools->Administration.
Eis alguns exemplos de [erramentas de adminis n-aci o do Basis:
Para ver urna lista dos servidores atualment e sendo executados em seu
sistema R/ 3, escolha 0 caminh o de menu Tools->Administration,
Monitoring->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, execute a t ransacao
,,03 (digite 105103 em Command Field), escolha Thi s 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 ultimos 15 minutes (veja em Av, Response
Time).
o Basis foi prcj etado para ser executadc em uma configuracac clien-
te/servidor.
Aqui vemos 0 Programa 1 solicitando algumas informacoes ao Programa
2. 0 Programa 1 e0 ciiente e 0 Programa 2 e0 seruidor. 0 Programa 2 oferece
ao Programa 1 as inf ormacoes que ele solicitou. I sso e diferenre de urn
pregrarna prin cipal que chama uma sub-retina e retorna. Urn pr ograma que
flgu rg 1 1 5
AeSSEmOo do sistema
c1iente/servidor.
Entenderidc.c.cliente/serxidcr _
o servidor de e reolmente um progroma identificodo como
24 APlEHOA EM 21 DiAl ABA'"
Arquitetura 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.
de opresentoc;60
NOVO ...
TEmO " sapgui . exe. Normolmente, elee instolodoem umoestccsc de trobolhode uscorio.
Para inicc-lo, a usu6riod6 urndique dupleem urnleone noareade trobalho ou escolheum
caminho de menu. Quando lnkiodo, a servidor de opresenfoc;cio exibe as menus do R/3
dentro de ume janela. Esso jonelo ecomumentecoohecidccomo SAPGUI, ou como interface
com a usu6rio (au simplesmenfe, interface). A interfoce oceifo entrada do usvoric no forma
de pressionomentos de tecla, cliques de mouse e teclos de func;oo e envlo esscs sclicltccoes
00 servidor de aplicotivopare serem processados. 0 servidorde oplicotivo envioas resultados
de volta 0 SAPGUI que entoc fonnata a soido a fim de exibi-Ia para 0 usu6rio.
D1A1:0 AMBI'tHTE lit DEStft10lVI/IIl:: NTL 1..
0 mimero de processos e seus tipos
A quanridade de memoria que cada processo pede utilizar
0 perfodo de tempo em que urn usuario pode ficar inat ivo antes de
ser automaticamente desconectado
oservidor de aplicarivo existe para interpretar programas ABAP/4, e eles
somente 5[0 executados nesse servidor - os programas nao funcionam no
servidor de apresentacso. Urn programa ABAP/4 pede iniciar urn executive!
no servidor de apresentacao, mas urn prograrna ABAP/4 nao pode ser execu-
rado nele.
Se seu prograrna ABAP/4 solicirar inf ormacce s do banco de dados,
servidor de aplicarivo formatara a solicitacsc e a enviard servidor de banco
de dados.
Descobrindo 0 servidor de ponco de dodos
Fi g u ra] 17
A orquiteturo do'
sistema R/3.
Serwdor de
gptl!5entgO
ServiOor de beeee de dodc
KOVO.... 0 servidor de banco de dodos e um con junto de execvtovels que oceitc
mwo ,. solicltocoes de banco de dodos do servldor de oplicotivo. Essosscllcttccces soo
passodos pora 0 RDBMS (Relation Database Management System). 0 RDBMS envlc os
dodos de volta 00 servidor de banco de do dos , que enteo posse as iniormccces
novamente 00 servidor de c pllcotivc. 0 servidor de c piiccttvo par suo vez transfere essos
pore seu progromo ABAP/4.
Hoinormalmente urn computador especjfico dedicadc a abri gar 0 servidor
de banco de dados; e 0 RDBMS pode ser executado nesse computador tambem,
ou pode ser instalado em seu proprio computador.
Configurando os servj dores
Durante a instalacao, os servidores podem ser configurados de quat ro maneiras
(veja a Figura 1.18) .
DB
o servidor de oplicotjvo
NOYO '" Urn servidor de aplicativo eurn conjunto de executoveis que interpreta ccleti-
milD r vomente os progromos ABM/4 e gerendo a entrada e 0 sc fdo para eles.
Quando urn servidor de cplicctivc einicioda, 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 chomodo perfil do servidor de ap!icofivo.
Cada servidor de aplicativo tern urn perfil que especifica suas caractertsti-
cas quando ele inicia e enquantc esta sendo executado. Por exernplc, urn perfil
de aplicativo servidor especifica:
Figura] ] 8
Passlve;s
configurot;6es do
sistema R/3.
-
-
-
- -
-
- -
DIAL 0AMBI ENTt DEDESEHVOlVI MENTO I 27
Em termos mais gerai s, uma instdncia eurn seruidor. UIDa inst ancia eurn
con junto de processos do R/3 que oferecem servic e s ao sist ema R/3.
Para executar qualquer processament o 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 cont ext e do usuario
euma area da memoria que contem as inforrnacoes sobre 0 usuerio, e a area de
rolagem euma area de memoria que conc ern as infor rnacoes sobre a execucjo
des programas. .
I
Area de rolagem
Mem6rio estel'1dido

-- ---- - -- - - -
Perc a servldor de banco de dodos
Do servidor de cplicotivo
_ _ _
I
1
I
I
I
I
I
I
I
I
I
I
I
I
1 _
Figura 1 19
Aofquiteturo do
servidorde opJi cotivo.
Arquitetura do servidor de.npllcntiza.; _
a s componentes de urn servidor de aplicat ivo saOmostrados na Fi gura 1.19.
Ela consisce em urn dispatcher e multiples proc essos de trab alho.
Todas as solicitacoes provenientes de servidores de apresen taci o sao
dir igidas primeiro eo di spatcher. 0 dispatcher grava-as primeiro na camada do
dispatc her. 0 dispatcher extrai as soliciraccescia camadautilizando 0 algoritmo
primeiro a entrar, primeiro a sair . Cada solicicacao e entao alocada para 0
primei ro pr oces so de trabalho disponivel. Urn processo de trabalho trata uma
solicitacao por vez.
NOVO.... 0 fermo poisogem do sistema R/3 significo uma descrtcec do ncmerc de
URMOr sistemas dentro de umo Instclccoo de SAPe a forma como eles s60 designados,
tois como desenvclvirnentc, teste ou prodocec.
A definicjo mais simples de urn sistema R/3 e <Cum banco de dedos", Em urn
sist ema 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 ecomposto de urn banco de dados servidor
que acessa urn unico banco de dados, urn au mais servidores de apl icativo e urn
ou rnais servi dores de apresentacao. Por defini cao, urn sistema R/3 consiste em
tcdos os componentes ane xados a urn banco de dados. Tendo urn banco de
clados , voce tern urn sist ema. Se tern urn sistema, voce tern urn banco de dados.
Durante uma implementacao, ha normalmente urn sistema (ou urn ban co de
dados) atr ibufdo para 0 desenvolvimento, urn ou mais sistemas designados para
t est es e urn at ribuido para a producao.
Em uma configuracao clienre/servidor em tres camadas, todos a s servi-
dores de apresenracio, de aplicativos e de banc o de clados sao executados em
mdquinas separadas. Essa ea configuracao mais comum para sistemas grand es
e ecomum na ar ea de producao.
Na dist ribuicao cia configuraclo de apresentacao, 0 aplicativo e as servi -
dores de banco de clados sao combinadas em urn comp ut ado r e os servi dores
de apresenracao sao executados separadament e. 1550 eutilizado para sist emas
menores e {requentemente evisro em urn sistema de desenvolvimento.
Na configuracac cliente/servidor em duas camadas, as servidores de
apresentacao e de aplicativo sao combinadas e 0 servido r de banco de dados e
separado. Essa configuracac euti lizada em conjuncao com outros servidores
de apl icativo. Ela eaplicada para urn servidor em lote quando este esta separado
dos servidores online. Uma SAPGUI einstalada nele para oferecer controle
local.
Quando t odos as servidores sao combinadas em uma unica maquina,
voce t ern uma configuracao central. Isso raramente evisto porque descreve urn
sistema R/3 independent e com apenas urn unicc usuario.
Definindo um sistema R/3
Definlndc uma instfmcia R/3
26 I "RENDA EM 21 nus ABAP/4
NOYO Quendo voce ovvir o!guem utlllzcr 0 polovro insfdncia , no maiorio de vexes
TtRMO essa pessoo estero se referinda 0 um servldor de apJicotivo. 0 lerma instdnci o
esin6nima de servidor de apficatiYo .
o termo instdnciacentral refere-se ao servidor de banco de dados. Se urn
servidor de aplicarivo e servidor de banco de residem na mesma maquina,
o termo instdncia central refere-se ao computador em que os dois residem.
Entendendo um contexto do \lSl!orio
NOYO r... Um contexto do usu6rio ememoria alocado que contem as corcctertstlccs de
URMO urn usucrtc que estc conectodo 00 sistema R/3. Ele ormozeno as lnformccoes
necessaries para 0 R/3 sobre a usu6rio, como:
29 DIA I: 0AMBI flffi. DE OEStNVOlYIMENTO

--- - ---
-
-
28 I APIEHDA EM21 DIAS ABAP/4
,.., __ ......

I
,
,
Um posse de di61ogo
I
FK02 Address Screen
ISc lnif.o ree n
Foboccnte 0 ADO
Enderecc
=
= c1 Endereco

=
=
c:::l
=
I
Fjgurg 1 20
Pcsscr do Initiol
Screen parc 0 Address
Screen pode ser .
considerodo um posso
de die/ogo.
As configuracoes atuais do usudrio
As autorizacces do usuaric
0 nome dos programas que 0 usuario esti atualmente utilizando
Quando urn usuario eferua logon, urn contexte do usuario ealocado para
esse logon. Quando esse usuario efet ua a logoff, 0 contexte eliberaclo. Ele e
uti lizado durante 0 processamento de urn programa e sua importancia edescrita
em mais detalhes nas secoes a seguir.
\ lnklo do
-, posso de
, di6logo
,
Dispatcher
Processo de Iroholho I
I
\..
\ '
'1..05 I
Urn passo de didlcgo e0 processarnento nec essario para sair de uma
pan a proxima. Ele inclui rode 0 processamento que ocorre de: d.equ e 0
faz uma soliciracao ate. e incluindo, 0 processarnento n.ecessano para exibir a
.pr6xima tela. Por exemplo, quando 0 usuario dol. urn DOl tecla Enter no
Change Vendor: I nitial Screen, ele inicia urn passe de dialogo e a
aparece , impedindo out ra entrada. 0 prograrna sapmf02k recupera as infer-
macoes do fabricante e as exib e na t ela Change Vendor: Addr.ess, e.a
desaparece. 1550 marca 0 fim do passe de dialogo e agora 0 usuano e capaz de
faz.er outra solicitacao.
Ha quatro maneiras de 0 usuario poder ini ciar urn passo de dialcgo. A
partir do SAPGUI:
Pressionar Enter.
Pressionar uma tecla de funr;ao .
Dar urn clique em urn bono na te la.
Escolher urn item de menu.
Eimport ant e para 0 programador de ABAP/4 conhecer sabre pass os de
dialcgo porque eles formam uma unidade discrera de processamento para um
programa ABAP/4. .
,
\
i
!
Um posse de di610ga eutilizodc pelcs ccnsultores de Basis como umo
vnidode de medida para 0 tempo de respcstc do sistema.
Um posso de die/ogo equolque r clterocco de tela [vejc 0 Figura 1.20) .
NOVO ..
lEma r
05 consultores de Basis costuma m vscr 0 termc 6reo de rolcq em
referindo -se a todcs as 6rea s de rologem pa ra um usu6rio ou oinda
todos os 6reas de rologem em umservidcr de cpllcof ivc. Normalmente,
voce pode de duzir 0 significado pretendido a portirdo cont exte em que
tel utlllzodo.
Os valor es das varieveis
As alocacoes de memoria dina-mica
0 pon teiro do programa arual
Toda vez que urn usuari o inicia urn programa, urna area de rolagem e
criada para essa instancia do programa . Se doi s usuaries utilizarem 0 mesmc
programa simultaneamente, existirao duas areas de rolagem - uma para cada
usuario. A area de rolagem e liberada quando 0 programa eencerrado.
Urno orec de rolcgem e0 mem6rio que eclocodo por um processo de trobolho
ftRl!O pora umc instc ncio de um progromo. Elo ormozeno informoc;6es necesscrics
pare 0 R/3 sabre 0 execvcco do prog romo, como;
Tanto a area de rolagem como 0 contexte do usuario representam urn
papel importance no processamento de passos de urn dialogo.
Entendendo os passos de dialogo
Entendendo uma area de rolagem
31
Interprefodor do ABAP/4
Handler
de torefo
Interpretodor de telo
Interface de bonco de dodos
Cada processo de trabalho ecomposto do seguinte:
Um handler de tarefa
Urn interpretado r de ABAP/4
Urn interpretador de tela
Urna 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.
asinterpretadores interprerarn 0 codigo do ABAP/ 4. Note que hi dois
interpretadores: 0 inrerpretador do ABAP/4 e 0 int erpr etador de tela'. Hi
Cada processo de trabalho tern quat ro componen tes (veja a Figura 1.22).
OIA 1: 0AMBIEHTE DE DESENVOLVIMENTO
Os progro mas ABM' /4 noo tern a copoddode de intercept or muitos
eventcs comuns no Windows . Os eventos que gerom rnuitos mensagens
como pressionomento de urno teclc, chero cees de Ieee e movime ntos
de mouse, noo sao pc ssodcs para progromos AW/4. Como um
resultodo, n60 no como executorolgumas func;6es que sao encontrodas
em outros progromos Windows. Pe r exernplo, no ABM/4, voce n60
pode volidor a ccnteudo de urn compo quan do 0 usu6rio pressiono a
tedo Tab. Emvez disso, voce deve esperor 0 usu6rio lnicicr out re posso
do di6logo.
As mensagens trocadas entre 0 servidor de apr esentacjio e 0 de
aplicativo estao em urn [ormato SAP proprietdrio. 0 SAPGUI acena
informacoes de tela enviadas do servidor de aplicat ivo e [ormatadas
adamente para a plataforma em que esta sendo executado. Isso permlte
diferenees plataformas de hardware do usuario final a urn unic o
servidor de aplicativo. Par exemplo, urn PC OS/2 e urn PC Wmdows podem
cc nectar-se ao mesmo servidor de aplicarivo ao mesmo tempo.
FigurA 1 22
Os componentes de
umproceno de
trabo/ho.
Entendendo os compone ntes de urn processo
de trqbolho
Descobrindo como os dodos sco enviados
ao servi dor de
-
-
- - -
.,. -

NOYO Ilrrr.. Urn programa ABAP/4 ocupo openos urn process o de trobolho pora urn passo
lERMO r de di6!ogo. No ccmeco do posso, a 6rea de rologem e 0 contexte do usu6rio
safrern roll in pora 0 processo de trobolho. No lim do posse de di6logo, eles sofrem roll
out. Isso ei1ustrado no Figura 1.2 1.
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
processo de trabalbo agora esta livre para execurar processamento para ourra
solicitacio. 0 programa esta no memento apenas ocupando memoria e nac
consome nada da CPU. 0 usudrio ve a tela que foi enviada e logo enviara ourra
solicieacsc.
Quando a proxima soliciracjo e enviada do usuario para cont inuar 0
processamento, 0 dispatcher 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 a
proxima tela ser moserada, ou ate 0 programa terminer. 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 alocado ate 0 usuari o
efetuar logoff.
Num sistema com muitos usudrios utilizando muitos prcgramas, apenas
alguns desses programas estarao ativos nos processos de trabalho de cada vez,
Quando eles nso estiverem ocupando urn processo de tra balho, des sofrem
roll OUt para a mem6ria estendida e apenas ocupam a RAM. Isso poupa a CPU
e permite ao sistema R/3 alcancar urn alto throughput de transacio.
Entendendo 0 processamento roll in/roll out
Fi g u r a 1 21
o processomenlo roll
in/ roll out.
30 I 'PREND' EM 21 DIAS 'UPI'
'-T'..{'..r:
f
II
I
I
,
1
__....... __..... _....-__...... _....... _...-... __..... _.... _'W .....-- ..,_....- -_ ......
32 APRENDA EM 71 DIAS ABAP/4
h 0U BiEIffi 33
-- ....
1
I
.
l
Entendendo 0 c1iente de logon
Entendendo os tipos de processo de trabalbo
b"!P g-"
l '-' .... _
Fjg ura 1 2 4
Estolobelo
dependente de
di ente porque 0
primejro ccmpc
do tipoCOO.
Fjgura 1 23
a usu6ria digifo a
diente de logon no
tela de logon no
compo Client.
Tipo de solicitooo de trabalho
Scllcltccoes de di6!ogo
Sclicltccoes para ctuclucr dados no ban co de dodos
Trobolhos de segundo plano
Imprime solicitac;ees de spool
Solicitoc;5es de bloqueio 16gico
Roteio as mensagens entre os servidores de op licotivo dentro
de urn sistema R/3
Afunila as mensagens dentro e fora do sistema R/3 G (Gateway)
Tipo de processo
Hoi sere tipos de processo de trabalbo. Cada urn deles trata urn tipo de
soliciracao especlfica. a ripe de processo de trabalho e 0 5 tip os de soliciracso
que ele trar a sao mostrados na Tabela 1.2.
o termo cliente de logon DaO tern nada a ver com Cliente/Servidor - e
complet amente diferente. 0 clients delogon se refere ao mimerc que 0 usuario
digita no campo Client na tela de logon (veja a Figura 1.23).
o mimero digi tado aqui pelo usuario corresponde a urn conjunto de
linhas dentro de cada tabela dependent e de clienre dentro do banco de dados .
o IDiolog)
V(Update)
B(Background)
S (Spool)
E(Enqueue)
M (Message)
realmente duas varialjoes de ABAP/4. Urna ea linguage m de processamento
de dados do ABAP/4 completamente desenvolvida e a out ra euma lingu agem
muito especializada de processamemo de tela. Cada uma delas eprocessada
pelo seu proprio interpretador.
A int er face de banco de clades t rata 0 trabalha de comunicacdo com 0
banco de dados.
Tabela 1. 2 Tlpos de processos de trobolho e as tipos de schcnccees que eles
trot om
Entendendo tobelos dependentes e independentes
de diente
Hi da is tipos de tabelas emurn banco de dadosdo R/3: dependentet de cliente
e independentes de client e. Uma rabeh edependente se 0 primeiro campo for
do tipo Cl NT. 0 comprimentc sempre sera 3 e por convencao, esse campo
sempre eidenti ficadc como ma ndt . Se 0 primeiro campo nao for do t ipo ClNT,
a tabela eindependente de cliente. Urn exemplo de uma tabela dependente de
cliente e. mos trada na Figura 1.24. A Figura 1.25 eurn exemplo de uma tabela
independente de cliente.
/ -
.-r- _.."..... ":"\ r> -r> --- _ -- ;W _ -w .,.... __ ..
35
Os desenvolvedores e a s testers utiliz am 0 mec anismo de cliente de logon
para criar e acessar multiples conjunros in dependentes de dados dentro de uma
unica tabela .
Por exempl o, suponha que dais tfpicos programadores anti-sociais estao
trabalhando em urn aprimorament o do sistema de cobranca. Romeu esta
modificando a rransacao de atualizacao eJ ul iet a est a criando urn novo relatorio
para acompanhar as mcdificacoes de Romeu.
Jul ieta configura as clados para seu tes te, executa 0 relatorio e obtem uma
sarde. Romeu trabalha na sala ao lade, mas deviclo a suas t endencias anti-sociais
esti feliz ignorando que sua tr ansac ao utiliza as mesmas t abelas que 0 relat6rio
de Jul ieta. El e execut a sua transa cac e atuaiiza os dados. Romeu obteve 0 que
ele queria, mas Julieta entao modifica seu c6digo e executa seu programa
novamente. Sua safda difere da ultima e muit as diferencas nao resultam de suas
alteracoes, mas das aheracoes de Romeu. 0 que temos aqui euma falha de
comunicac t o.
Se as tabelas utilizadas por Romeu e os programas de Julieta fossem
dependent es de cliente , eles poderiam conecrer-se a clientes separados, con-
figurar conj untos independent es de dados e testar seus programas sem jamais
conversarem urn com 0 outro. Eles poderi am execut ar todo seu "t est e no
conforto de sua sala e isolado s de seu companheiro de tr abalho.
Par a t orn ar suas rabelas dependences de cliente, eles apenas precisam ter
ma ndt como 0 primeir o campo e 0 sist ema R/3 cuidara do restc. Quando
registros sao adi cionado s atabela, 0 sistema automaticamente move 0 cliente
de logon 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 t abela for igual ao seu numero do client e de logon atual.
As ins trucoes i nsert, update, modi fy e del et e de banco de clados Open SQL
tambem ofere cern tratamentc automatico de clienre .
Se todas as t abelas envolvidas forem dependent es de cliente, poderd haver
mais de urn grupo de restad ores trabalhando ao mesmo t empo ern urn sistema
de t est e, Dua s equipes de resr ador es poderao obrer resulta dos de funcionali-
dade divergences com 0 mesmo conjunt o de programas simultaneament e se
Os registros-mestres de usu6rio (contendo IDs de usu6rio do R/3) sao
de pendentes de cliente. Portonto, para gonhor ocesso a um c1iente, 0
ad minisirodo r de seg uron<; o deve crier um novo IDde vsvcrio para
voce de ntro desse cllente.
OIA1:0 AMBJENTE DEDESENVOlVIMHHO
a mecanismo de clience de logon divide as linhas dentro de uma tabe1a
de dep endencia de cliente em grupos distintos. Pa ra acessar urn conjunto
diferenre de dado s, 0 usuerio efet ua logon e especifica urn nume ro diferente de'
cliente.
lIFNR
I
11
12
100
1 1
o
Jcbe lc lFAt
MANDT
700
700
80
800
Sardo
@]
'
: 100 :
: 101 :
, ,
l ela Rl3 log on
o ulv6rio
elelllO logone
Clienle []QQ]
A Figura 1.26 mostra como este camp o afeta 0 usuario.
Na Figura 1.26, 0 usuari o efetua logon para 0 cliente 800 e executa 0
programa mostrado. Este programa seleciona linhas de tabela Hal e emite
1fal -l; f nr. Quando esse programa e execut ado, somen te duas linhas sao
selecionadas: apenas nos casas onde mandt eigual a 800. 1550 acontece auto-
maticament e porqu e 0 primeiro campo na tabela ede tipo CLNT. Hoi cinco linhas
na tabela, mas 0 programa apenas emi t e essas linhas onde mandt eigual a 800.
Se 0 usuario est iver para efetuar logon para 0 cliente 700 e executar 0 mesmo
programs, tr es linhas de dados seriamlocalizadas e seriam emitidas. Se 0 usuario
estiver para efet uar logon para 0 eIiente 900, apenas uma linh a de dado s seria
localizada.
laura 1 25
Esto tobe/o e
independente de
elien/e, porque 0
primeiro compo n60
edo tipo CLNT.
Figura 1 26
o efeito do
dependencio de
cliente.
34 APRENOA EM 21 DIAl ABAP"
r -r- r r --- -,.-.;- r . t">:
36 I 'PRE"" EM 2\ DI'S 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 sistema de test e urn treinamento de cliente.
Os alunos poderiarn conectar-se a urn cliente e as tesradore"s poderiam conec-
tar-se a outre. Os dois teriam executado 0 mesmo conjunto de programas, mas
as programas acessariam conjuntos de dados independentes.
Uti Iizoad0 0 Open SQuL....,d...,o ......... S""A:\LP _
o c6digo do ABAP/4 pode ser portado de urn banco de dados para outro. Para
acessar 0 banco de dados ern urn programa ABAP/4 voce codificara a Open
SQL da SAP. 0 Open SQL eum subconjunt o e uma variaclo do ANSI SQL.
o interpretador do ABAP/4 passa todas as instrucoes ern Open SQLparaparte
da interface de banco de dados do processo de trabalho (veja a Figura 1.27).
Ai" e1as sao convertidas em SQL que enativo para 0 RDMS inscalado. Por
exemplo, sevoce esriver execurando urn banco de dados Oracle, seu Open SQL
ABAP/4 seria convert ido 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 .
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 100vezes mais.
d Servidor e ccltccnvo
Processo de frobolho
..2
E

-0
'U
c
Ope n SQl
1=\
IIF

1
SQL native
Buffer de dodos
I Servrdor de
bcncc de
dcdo5
8
F; gllrg 1 27
o ccmponenle de
interface de bonco de
dodos do processo de
trobe/he"
A instcloccc mais comum do R/3 tem tres sistema s: deseovolvimento,
teste e producoo. Par podroo , coda sistema vern com tres clientes
instolodos: ODD, 001 e 066" Eco mum ter de tres 0 seis c1ient es nos
sistemas de desenvolvlmento e de teste, mas roromente voce vera mois
de um cliente no producdo.
( Nota
f-OJiahilidade
=-------- - - - - --- -
A primeira vantagem e0 face de que suas insrrucces de SQL serao portaveis
entre bancos de dados. Por exemplo, sepor 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.
Trotome nto o!ltom6tico de c1i ente
A terceira vantagem de utilizar Open SQL eo"tratan:zentoautomdticode cliente.
Com Open SQL, 0 campo de cliente automaticamente eocupado pela int erface
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
simultsneos em urn unico banco de dados sem incerferencia de urn em outro.
Ut il izondo buffe r de dadQS.JJo 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. Seentao for feitauma solicitacaopara acessar os mesmos
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
Resumo
0 R/3 plataformas de hardware, sistema operac ional
e bancos de dados .
Alemde permiti r SQL native, 0 ABAP/4 oferece Open SQL. Utilizar
Open SQL torna seu codigo por tavel, mais rapido e oferece tratamento
autom":itico de cliente.
38 APIl:ENDA fM 21 ensABAP/4
- -
-
-
_ W' 'W" _
-
.w
DIA 1, DAMBI EHTIDE DEIENYDlYIMENTD 39
0 cliente de logon perm ite que mulriplos grupos de dados inde-
pendentes sejam armazenados ria rnesma tabela. Os dados que voce
acessa dependem do numero de c1ientes que voce digitou quando
efetuou logon.
P&R
o
o
o
o
Workshop
Posse copiar urn clienr e existente para um novo cliente?
o consultor do Basis pode fazer isso pa ra voce utilizando urn
utilit ario de c6pia de clien te. Cada sistema de desenvclvimento
normalmente tern pelo menos urn clienre de refer encia e urn
clience de trabalho. Seus clados "validos" sao mantides no eli-
ente de referencia. 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 novamen re.
Posso escrever urn prograrna que Iedados de urn outro cli ente
que nolo 0 client e a que estou atualmente conectado?
Sim. Voce pede adicionar as palavras-chave client specified em
qualquer inst rucao de Open SQL. Por exemplo, para ler os dados
no cliente 900, voce escreverie 0 seguinte codigc:
sele ct * from tb l cl ient specified whe re mandt = '900' .
Entretanro, voce deve saber que voce apenas faria isso se estivesse
escrevendo urn programa de sistema. Isso nunca efeito em urn
programa aplicativo; eles sempre devem ser independentes de
client e. Se voce precisa rransmitir clados entre dois clientes de
producao, deve implernenrar a transferencia de dados via ALE.
Teste
1. Eseolha 0 caminho de menu T ool s->Admini st r at ion, Monitor-
ing->System monircring-> User overview. Qual eo c6digo de tr an-
sa!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 apes 0 logon.)
3. Qual e0 codigo de transacjlo par a 0 caminho de menu To ols-o-De-
velopment Workbench?
4. Se hi t reS sistemas R/3 na sua paisagem de sistema atua], quantos
bancos de dados existem ?
5. Se urn sistema R!3tern dais servidores de aplicativo, quantas inst an-
cias ele tern?
6. 0 que eOpen SQU
7. Quais as vantagens que 0 Open SQL of erece sobre 0 SQL native ?
8. Qual ea parte do processo de t rabalho ut ilizada para implementar
OpenSQU
9. Quando uma area de rolagern ealocada, quando edesalocada e 0 que
ela contem?
10. Quando urn contexte do usuario ealocado, quando edesalocad o e 0
que ele contem?
11. Quando ocorre roll out e por que isso oeorre?
Exerd ci o 1
As tabelas na figuras de 1.28 a 1.31 sao dependentes OU indepe ndentes de
clienre?
o Wo rkshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capjrulo. A Se!1aO Teste oferece perguntas para ajudar a solidificar seu entendi-
mente do cont eudo aborclado e a selSao Exercfcio permi re que voce pratique 0
que aprendeu. Voce pede encontrar as respostas as perguntas do teste"e dos
'exercfcios no Ape ndice B, "Resposras as perguntas e aos exercfcios".
0\,1. 1: 0AMBINTE DE DE5HVOLVIMENTO 41
' : , . l , t Sf P J,ftj fIf
...... , ;; -
1. g, ,:.i;"'4o .Ii x"'-Q Mn"c-0 "0 e li
Figura 1 30
Estc lobe/a e
dependente ou
independente de
diente?
- ...

40 'PREHD' E." DiAl AB"/4
Fig ura 1 29
Esto lobe/a e
dependentt! au
independente de
cliente?
Figura 1 31
, Estctobe/o e
dependenteou
independente de
clienle?
I
I
~ - - - - . - _ .. . -._. - -_ .
~ ~ ~ - - - - - - - - - - -
Seu primeiro programa
emABAP/4
Depois de completar este capitulo, voce deverd ser capaz de:
e Crier e modificar programas ABAP/4 simples.
Utilizar funlioes padcio no 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 operador de encadeamento.
Adic ionar comentarios e documentacdo a seus programas.
Antes de-Prosseg"uLli.Lr _
Antes de prosseguir, voce deve:
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 desenvolvimenro.
hllp:/Iwww.comput.eom. bt
.... ~ s _ ~

44 ! APRENDA EM 2.1 DIAS AB APH
- - _ .......... W 'W _ .....--....,.. -....- ............. ""W" -- -- - - - - - -
DIA 2: Sl:U PRUWROPROGWlAEM ABAP/4 I 45
Muitos dos procedimentos neste [ivrcs60 demonstrodos vtilecndc ScreenComs.
I
/
,
I
I
Configurar sua interface como recomendado no Dia I, na "0
Inte rface Menu", se voce nao river feit o isso ate agora.
Execurar 0 procedimenro de instalacao para as ScreenCams no
CD-ROM. Esse procedimento esta descrito no arquivo rea dme. txt
localizado no diret6rio raiz do CD-ROM.
HOVO ...
ltiMO r" ScreenComs s60 como filmes; elos mostram vmo sene de telcs. ind uinclo
pressionomentos de tedo e movimenios de mouse, com umo descritivo. Elos
pcdem ser enccntrcdcs no CDROM que vern com este llvro. Vej o 0 orquivo readme. txt
loca lizodo no diret6rio rulz do CO-ROM para mois Infcrrnocoes.
fxplora ndo 0 ombiente de desenvolvimento
MOYO lit.. Um objeto de desenvofvimento equalquer cclsc criodc por urn desenvclvedor.
r Exemplos de objetos de dese nvo!vimento s50 programos, telcs, tcbelos, visuo-
estrvlvrcs, modelos de dod os, mensogens e includes .
NOYO.... 0 sistema do R/3 ccntem ferromentos para crier e testar objetos dedesenvcl-
TIR.\IO vimento. Essos ferromentos estoo locolizodos no R/3 Development Workbench.
Perc ccesscr quolquer ferromento de deseovclvlmentc, voce ir6 para workbench.
o 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
cedigo-fonre do ABAP/ 4 e outros componenres de prcgrama
0 Data Dict ionary onde voce pede criar t abelas, est ruturas e visuali-

0 modelador Dat a on de voce pode documentar os relacionamentos
entre t abelas
A bibliotecaFunct ion onde voce pode criar m6dulos de globais
doABAP/4
A tela e menu pintores onde voce pode criar uma interface com 0
usus ric para seus programas
As seguin res [erramentas de test e e pesquisa tambem eseac disponfveis:
0 ABAP/4 Debugger
a [erramenra de rast reio de SQL utilizada par a refina r de
SQL
0 analisado r de tempo de para de desempenho
do seu programa
uma ferramenta circunstancial para analise de impact o
uma [erramenta de teste auxiliada por computador para regressgo de
teste
uma ferramenta de pesquisa de repositorio para encontrar objeros de
desenvolvimento
0 Workbench Organi zer para registrar alteracoes em obj eccs e pro-
move -las na produclo
Todos os objeros de desenvolvimemo sao portateis, 0 que signifiea que
voce pod e copia-los de urn sistema do R/3 para outro. Is50 norrna lmenre efeico
p ;;fa mover seus objeros do sistema de desenvolviment o 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 qualquer 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.)
Descobrindo tipos de progJ:QLLm I..lJ.l O _
Hi. dais tipos de programas ABAP/4 principais:
relat6rios
programas de dialogo
Definindo relat6rios
oprop6sito 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.. A primeiratela echomo da tela de (seledion screen). Ela contem campos
de entrada que permitem 00 usu6rio inserir critertcs para 0 relot6rio. Por
exemplo, 0 relctoric pede pradu zir ume listode vendee para urn dodo intervalo de dotes,
entec as compos de entrada de intervale de dote opareceri om no tela de do
relot6rio.
NOVO h.. Asegundo tela ea tela de soldo. Elo conte m a listo. AHstc ea scldo do relctcrro
TERO" e normal menfe nee tern nenhum campo de entrada. Em nosso exemplc, elo
cc ntenc urne listo des vendee que occrrercm de ntro do intervalo de doto especficodo.
A tela de selecsc eopcional. Nem todos as relat 6r ios tern uma. Entre-
tanto. todos os relat6rios geram uma Iista.
Neste livro, voce aprendera a criar programas de relat orio.
.... -
r-
46 AP"NDA EM21 DIAl ABAP/4
DlA 2,SEUPRIMEIRO PROGRAMA EM AMP/. 47
I1efin.inrlu..p.rrnli m.l.\aJ-' sLd ......
Os programas de dialogo 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 alterada dinamicamente em tempo de
execucio. Em cada tela, voce pode ter campos de entrada, campos de saida,
boroes (pushbutton) e mais de uma area rolavel.
de relat6rio
Os relat6rios do ABAP/4 consisrem em cinco componentes (mostrados na
Figura 2.2) ;
0 codlgc-Ionee
Os atributos
as elementos de texto
A documentacao
As variantes
Aernpresa emque voce trobo lha ecliente do SAP. Portonto, os progromos que
voce crtc em:iUO ernprc50 s50 chomodos progromos-dienfe .
NOYOl..
nmO,.
NOVOlrrrrr... O s objetos de desenvolvirnento de di ente de vern segujr as cc nvenca es de
de nome que sao predefinidns pelo SAP, Esses convencees SOO
chomodas intervalo de nome de elienfe. Paro os proqrcrnos. 0 Intervolo de nome de diente
tem de dots a oilo corccteres de comprimento e nome do prograrna deve lnlcicr com
a letro y ou z. A SAPreserve as letros de a a x para sevs pr6prios progra mas.
MOVO.... Os progromos ABAP/4 s60 interpretodos : eles noDsao compilodos. Aprimeiro
TIRMO vez que voce execute um progroma, asistema outomoticamente gera umobjero
de tempo de execococ. 0 objeto de tempo de execvccc eum formu\6rio pre-processodo
do c6digo-fonte. Entretonlo, ele noo eum execotovel que voce pode utilizer no nlvel do
sistema operacionol. Emvezdisso, ele pede para 0 sistema do R/3 lnterpreto-]c . 0 objeto
de tempo de execuccc tcrnbem eccnhectdo como formu/6rio gerodo do programo.
Se voce alterar 0 codigo-Ionre, 0 objero de tempo de execucao sera
automaticamente gerado novamente, na pr6xima vez que voce executar 0
programa.
Introduzindo as convencoes de orrlbulcco
de Dome de programa
Descobrindo 0 obj eto de tempo de execucoo
de-programo
liste
[soldo do relot6rio)
Soles Per Period'
251.25"Edna Everedge ..
131 .50 Wendy Rose.: .. . '
Tela de selecee
(pcnimet ros de e nt ra da )
EW=>..-2L..Ll__
Atela de setecoc e a
lela de soldo.
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 dados do R/3. Por exemplo, 0 codigo-fonte para urn
reldtorio earmazenado na tabela dd010s do banco de dados.
Fi gu r a 2 2
Os componentesde
urn progromo ,4BI>Pj4.
Um progromo ABAPj4 consiste em
-
Atributos
NOVO.... Dedique urn memento para escolher urn identificador de tres coroderes es-
URMO'- pecffico paro seus progromos. Deotro deste livre, farei referencio 0 esse
identificodor 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 onde voce deve
utilizer seu hand le. Por exemplo, se voce escolhev zkg e viu 0 direr:;oo HDigite 0 nome de
progromo abc" I voce digitar io zkgabc . Recomendo que, amedida que ovcnccr oeste
livre, voce utilize seu hand le como os primeiros tres coroderes de todos objetos de
desenvo lvimento que voce criar . Se voce fleer isso, eles sereo f6ceis de recanhecer mais
tarde e mois f6ceis de lccoluor.
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 e0 mimero de capfrulo e nn eurn numero sequencia]
de 01 a 99.
Nomes de programa ut ilizados em exercfcios seguem a convencao
zt yccnn, on de cc e0 mimero de capftulo e nneurn numero sequencial.
o nom e de programa para a solu;ao sera. zt zccnn.
lnicie a ScreenCom " Hew To Create Your First Proqrc m" agora.
I.
2.
3.
4.
S.
6.
I
I
I
j
48 APiEN DA EM 21 Dl AS ABAP/ .
Programas utilirarios oferecidos no CD-ROM seguem a convencao
de atribuicgo de nome y-xxxxxx, onde xn:xxx e0 nome do utilitario.
a programa de instalacao que cria objetos de desenvolvimento e os
carregacom dados para a s exercfcios echamado y-s etup. Se necessaria, elepode
sec executado de novo a qualquer memento para rest aurar a cond icao orizinal
dos dados do exercfcio. Para remover [OdDS as objeros de desenvolvimenro e
dadcs criados pelo programa de inst alacj o do sistema, execute y- uninst. Veja
o arquivo readme. txt no CDROM para mais informacoes.
Criando seu primeiro pro-Q.LCra......... mJ.JO........ ----'- _
a que vern abaixc eurria descricao do processo que voce seguirf para criar urn
programa.
. Quando voce efetua logon no R/ 3 para criar seu primeiro pr ograma em
ABAP/4, a primeira tela que voce ve e0 menu principal da SAP. A partir dar,
voce i.r.i para aDevelopment Workbench e depois para a editor. Voce ira digitar
urn nome de programa e cria-lo. A primeira 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 . No
editor de codigo-fonte, voce ici inserir o codigo-fonte, salvs-lo e entdo execurar
o programa.
Siga este procedimento para criar seu primeiro programa. A ajuda para
problemas comuns eoferecida no Diagn6stico e de Problemas que se
segue a ele. Se voce tiver problemas com qualquer urn dos passos , njio
de consultar esse procedimento.
Do menu principal do R/3, sele ci one 0 cami nho de menu
Tools->ABAP/4 Workb ench. Urn. tel. com 0 titulo ABAP/4 De-
velopment Workbench eexibida.
Pressione 0 botao do ABAP/4 Editor na barr a de ferrame ntas do
aplicativo. 0 ABAP/4 Edi tor: Initial Screen eexibido.
No campo Program, digite 0 nome do prograrna 0201.
Pressione 0 boreo Creat e. A tela ABAP/4: Program Attributes e
exibida. a s campos que contem pont es de inrerrogacio sao exigidos .
Digite My First ABAP/4 Progr amno campo Tide. Po r padrao. 0
conr eudo desse campo apareceni no topo da lista,
Digite 1 no campo Type, a mimer o 1 indica que 0 programa eurn
relat 6rio.
'** -
,
c-
,
01" 2: SEUPRlMEIRO PROGRAMA EMABAPj4 49
7. Di gire urn asterisco (*) no campo Application. 0 valor no campo
Application indic a a area do aplicarivo a que esse programs penence.
A lista compleca de valores pode ser obtida posicionando 0 cursor
ness e campo e entao danclo urn clique na seta para baixo adireita dele.
Po r exempl o, se esse pr ograma perr encesse ao gerenciament o Inven-
tory, voce colocaria urn L no campo Application. Como eurn 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. Facauma marca de selecf o na caixa de selecfc Edit or Lock. Ativendo
o Editor Lock, voce evitara alteracoes no programa per qualquer outra
pessoa alem do criador . Para seus exercfcios, fa<,i a uma marca de
selecac nessa caixa para proteger seus programas de modificacsc
acidemal por outros. Enrretan to, voce ndo deve uti lizar isso para
blo quear programas de desenvolvimento reais. Esse recurso impedira
que outros programad ores facam a manurencao depois .
9. Para salvar os atr ibutos de programa, pr essione 0 botac Save na barn
de ferramentas Standard. A tela Create Object Catal og Entry e
exibida.
10. Pressione 0 borao Local Obj ect. A tela de at ributos do programa e
reexibida. Na barra de status na parte inferior da tela, a mensagem
"At t ribut es for pr ogram saved" aparece. (Nota: a mensagem que voce
ve contern 0 nome do programa tambern, mas como esse nome varia
para cada usuari o, ele foi deixado fora do texro deste livre. Essa
conven<.iac de deixar 0 nome 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 eexibida.
12. Escolha 0 caminho de menu Serrings- > Editor Mode . A tel a Editor:
Settings eexibida.
13, Escolha 0 borao de 0P<,i3. 0 PC Mode With Line Numbering.
14. Escolha 0 bota o de 0P<,iaOLower Case .
15. Pressiooe 0 bot ao Copy (a marca de selecsoverde). Voce agora salvou
suas configuracoes de edit or. (As configuracoes do edit or precisam
' ser configuraclas apenas uma vez.)
16, Ollie na linha 1. Se ela nac contiver a mstru<,iao report 0201. ,
digite -a agora, como mostrado na Listagem 2,1.
17.Nalinha2,digitewrite ' Hell o SAP worl d
'.
Utilize aspas simples e
coloque urn ponto no final da linha,
18. Pressione 0 botao Save na barra da ferramentas Standard.
--r"- . .
- ---
50 APREND' EM21 DIAl AS AP"
DIA 2:SEU PRIMHROPROGRAlIA EM 51
Utiliza ndo a Editor' Initial Screen
A ABAF/4 Editor. Initial Screen emostrada na Figura 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 Source Code e entac
pressione 0 bene Change. Ou, para exibir 0 componente de atributos, escolha 0
batao de Attributes e entao pr essione 0 batao Display.
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-
grameexibida e as palavras Hello SAP world serao escritas embaixo
dela. Essa ea safda do relatorio, tambem conhecida como lista.
Lislagem 2.1 Seu primeire pregrome emABAP/4
1 report zh 020l.
2 write ' Hell o SAP World' .
NOVO ...
TflMO"
Pressicncr 0 botao Change exlbe 0 componente selecionado no modo de
olterc/iao, que cermtte que voce c ltere 0 componente.
Explora odo 0 editor d.l:Lc.6dig,.. o-fonte... _
Nesta voce aprenders como subordinar 0 poder do edito r do ABAP/4
e aprendeni a ut ilizar duas t elas nesra secao.
A ABAP/4 Editor: Initial Screen
A t ela ABAP/4 Editor: Edit Program
Esses sec os prob lemas comuns encontrados no cricccc de urn
progra ma e sues respectivcs sc lucoes
locolizor (find)
locoFizor0 pr6lcimo(find Null
Prtmelrc p6gino (fin.1 Page)
P6gino onterior (Previous Pagel
PrOximo p6gino (Next Pagel
Ultimo p6gino (lost Pose)
No Figura 2.3, note que a ccbc de grupo Object Components envolve
bot6es de cpcec, a batao Display e botcc Change. Quando voce vir
umo coixo de grupo envolvendo bot6es de op;oo e bctces (pushbutton),
os botoes de OPl;aOdetermincm a componenfe que agiu sabre os botces
. (pushbutton) erwolvldcs. 0 efeilodes bctces de op<;ooellmitodc pelc cc ixo
de grupe; eles 060 temefeito em botces (pushbutton) foro do ccbo.
Imprimir lPrinl)
Canceler(ConO!Q
Scir (Exit)
Vollar (Bode)
Salvor (Sevel
Compo de comclF'ldo
(Commond field)
lnserir (Enter)
Explora ndo a fllncionalidode 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 Change. A tela ABAP/4 Editor: Edit Program e
mosrrada, como na Figura 2.4.
Fjgur a 2 3
ApartirdoN3AP/4
Editor: Initial Saeen
voce pode exibirau
olterer os
camponenles de
progromo.
Voce digilou a nome e-rode de progromo. Seus
names de progroma devem inicicr com y ou z.
Pressione 0 bcteo Ccncel {a Xe m vermelbol para
retomcr 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 (0Xem 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.
Sol u!;oo
a c6digo na List agem 2. 1 produz esta safda:
Hello SAP World
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
Standard [ou a tecl a F3) .
Problema
ADpressionor a batao Create,
voce cbtemumo coixo de di610ga
duende De Not Oecte Objects
SAP Nome Ronge.
Quonda voce pressiono 0 botcc
Creol e, voce cbtem umo caixa de
di610ga com urn ca mpo de
enfrada que pede uma teclo.
Voce esto c btendo vmc tela
Change Request Query pedinda
um Request Number.
SIIDI
0
S
Cl
z
,
o
I

I n
I
0
'"
i 0
j
...
C
.n
l>'
0
1
0
'"
1
..
'" I
0
..
...
'"

'"
"
52 APRE NOA EM21 OIASAS APj .
CIA 2,SEU PRIMEIRO PROGRAIM EMABAPj. 53 1
,
' J
, '-
Explorondo a borra de f erromentas Standard
!..
,
... --...: _...
r l tit 'I h II , _ l olI r.oo _ ....
Os ccotrcles
do barre de
ferrcmentos
Standard
Enter: Pressionar 0 bon oEnter tern 0 mesmo efeito que pressionar a
t ecla Enter. Etambem a funS-ao de divisao de linha. Para dividir uma
linha de c6digo, posicione a cursor no ponto ondevoce quer dividir a
linha e pre ssione Enter.
Command 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 Edit or: Initial
Screen. Se-nao river salvo as alteracoes, voce ser a solicitado a salvd-las.
Cancel: Leva a usudrio de volta aABAP/4 Editor: Ini tial Screen' sem
salvar suas alt eracoes. Se voce nao river salvo as alteracc es, voce sera
solicit ado a fazer isso.
Print: Esse comando imprimirf a c6di go-fonte de seu programa. Quando
voce 0 pressi ona, a telaPrint Parameters eexibida. Para receber 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 t ela de Search/Replac e emostrada. Uma explicacio mais
detalhada segue abaixo.
Find.Next: Esse eum atalhc amao para localizar a proxima ocorrenci a
de uma st ring.
First Page , Previous Page, Next Page e Last Page: Esses comandos
permitem que voce role para cima e para baixo pelo c6digo-fome.
Help: Exibe uma caixa de diilogo a partir da qual voce pode obter ajuda
sabre 0 editor e a sintaxe do ABAP/4, ent re outras ccis as. Posicion e
o cursor em uma palavra-chave do ABAP/ 4 ou em uma linha em
branco antes de pressionar 0 botao H elp. Para mais informacoes, veja
a seS-ao intirulada "Obtendo ajuda" mais adianre oeste capitulo.
Estes s60 os conlroles
no barre de
ferromentcs Standard
dentrodo editor do
NW/4_
Figura 2 5
I)
Exibi, <-> Alterer (Display<. > C
Verificer (Check)
Llstc circunstonciol (Where-used lis
Pilhe (Stock)
Linhe de insen;oo (Insert line)
Cortor (CUi)
porc o "',",
Imerir do buffer pnsen From
Selecioncr (Select)
I Desfozer(Undo)
.
,-Ajudodo ABAP/4 (ABAP/4 help)
..
-
-
.
-:
....,. .. . .. .
-- --
,
-
.'
"
-
'-_ Q,1,a!:. 'C C l C it]:f" ." ;'" ... .
..
1
'!. 4.
"-

..----
..""' ....
0
-
,
.
..... .a:-.l"i) .- -,-t";-"'-iff.<'5,Y'
": .;;,< ,.... ..:...::-:5.- ,:.:;:'!-.-
lrncie 0 ScreenCam Exploring the Standard Tcolbor" agora .
as com roles de barra de ferramentas Standard sao most rados na
Figura 2.5.
Os _cont roles de barre de ferrarnent as Standard (veja a Figura 2.3), na
ordem, sao:
Mu ito s desenvclvedores ochom a interface com 0 usu6rio do R/3
ccmplexc e portonto dlfkl l de oprender. Sugiro que voce cdote uma
obordagem met 6dica que Ihe permito fleer avontode com cede novo
tela. Sempre que voce se deparar com uma novo tela. examine
minuciosomente os itens de menu e bot ees. Comece no estremidcde
superior esquerda da telo e sigo para baixo e perc a direita . Mantenho
o cursor sobre cod a item par tempo suficiente para ler a di ce de telo
que a oco mponha . Gostor olguns minutes em codo novo telo 0 ojudar6
a se familiarizar com as func; 6es dtspcofvets.
EJgllra 2 4
Utilize a tela
ABAP/4 Editor:
Edit Progrom
paraolterar
Ivncionolidade
de componenle.
54 "RENDA EM21 DI AS"API'
OlA 2, 5EU PRIMEIROPROGRAMA EMABAP/4 55
Utilizando os recursos de locclizccco e substituicdo
Inicie a ScreenCom "Using Find a nd Replace.... ogoro.
Para executar uma pesquisa com curingas, utilize os caracreres + e " ,
o sinal + corr esponderf com qualquer caractere unico e 0 sinal '"
corresponded. com qualque r st rin g de caracteres. Ent retanto, '" so-
mente pode ser ut ilizadc como um curinga no comeco a u no fina l de
uma string; dent ro do corpo de uma string ele nac age como urn
curinga. Por exemplo, a string de pesquisa wo+d localizard word ou wood;
a st rin g j ++n correspondera com joh n ou joan, mas njio jan. E van
localizara ia n, joan ou at e an. Uma vez que " incor poradc dentro de
uma str ing nao age como urn curinga, para localizar a string select '"
from, digire simplesmente sel ect'" f rom. Nore que uma string que
tern * no corneco au final produz as mesmos resul tad os que a mesma
String sem 0 *; 0 curinga '" portanto nae eparticularmente {nil.
_. : : sao caract eres especiais. Se sua string inicia corn quaisquer desses
carac teres, voce deve envc lve-los dentro de delimitadores. Voce pode
escolher qual que r urn desses mesmos caracteres para urn delimirador
contanto que ele nao dentro de sua string de pesquisa. Por
exemplo, : hh comeca com urn caractere especial. Para localizar essa
suing,di git e -:hh-ou .:hh. ou , : hh ou ; :hh; .
0 caractere # tambem e especial. Para localizar uma strin g que contem
# em qual quer 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 allb .
IIrrrrrr.. Inide a Scree nCom "How to Find NI Occurrences of 0 String" ogora.
\CREENCAMJI""
Para configurar 0 escopo para uma Unc;ao de pesquis a ou substituicao,
siga est es passos:
1. Na tela Sear ch/Replace, digite a string que voce quer localizar no
campo Find.
2. Escolha 0 botio de opc;ao In Current Source Code.
3. Escolha a bono de Fro Cursor para comecar a pesquisa na
posicic arual de cursor. Altemativamente, voce pode escolher 0 botao
de opcao From Line e digitar 05 ruimero s de linha de infcio e de fim
para a pesqmsa.
4. Pressione 0 bon o Continu e. 0 cursor e colocado a esquerda da
primeira st ring de coinci dencia.
5. Pressione 0 pr6xi mo botao Fi nd pa ra localizar a proxima string de
coincidencia.
IIrrrrrr.. lnide 0 ScreenCom "Setting the Scope of a Search or Replace Function" ogora.
S(lEENWl JI""
.
Nee feche a ic nelo de editor presslcncodc
a bctcc Xno extremidode superior direlto
do jonelo. Voce perder6 as clterccoes n60
salvos.
Solve seu progromo ante s de digitor urn
cc mc ndo /n no campo de cc rncndo.
Coso cootrone , voce perc/ere sues
clterccoes.
Hi vfria s opcses nest a t ela para contr clar 0 processo de localizacjo:
As a String fad. com que sua string seja localizada em qualquer lugar
no programa.
As a Word [ocalizara apenas casas em qu e espaccs em branco ou
ponruacao envolvem a palavra dentro do codigo-fonte .
Upper/Lower Case fara a pesquisa dif erenciar letras mai usculas de
minusculas.
o campo Find tern algumas qualidades incomuns:
Para pes quisar uma string que contern espacos em br anco incorpora-
dos, simplesmente digite a string junto com as espacos em branco no
campo Find. Nao ccloque a String entre aspas. Se fizer isso, as aspas
serao consideradas parte cia string de pesquisa.
Pressione 0 bot ac Find na barra de [erramenras Standard e 0 sist ema
exibira a tela Search/Replace (veja a Figura 2.6). Insira a string que voce quer
lccalizar no campo Fi nd.
I
F igu ra 2 6
Etta ea tela
Bo
permite que voc!
localize e altere slrings
de coroctereem sec
progromo.
I
!
!
I
,I
i
56 APRENDA EM 21 DIAl ABAP/4
-
'W' _
- .
-- .. -
DIA 2:SEU PRIMEIROPROGRAMA I 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 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 codigo-
fonte .
5. Pressione 0 bot ao Back para retornar a tela Global Search In Pro-
grams.
6. Pressione 0 botao Back mais uma vez para retornar ao editor de
codigo-fonte.
lnkle a SereenCom "How to Search and Replace in the Source Code" ogara.
Para localizar e substituir no codigo-fonte.
1. Na tela Search/Replace, digite a string que voce quer localizar no
campo Find.
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 itui-la, pre ssione 0 botso Replace. A string na posicao de
curso r e subs t itufda e 0 cursor e posicionado na proxima string
coincidente.
5. Para ir para a proxima posicio sem substituir, pressiona 0 bone Next
Hit. 0 cursor eposieionado na pr6xima string coincidente.
6. Para substituir t odas as coincidencias restantes da posicao do cursor
atua] para 0 fim do codigo-fonte, pressione 0 borso de No Confir-
mation.
lnicie a ScreenCom "How to Seor ch and Replace Via a Summary Screen" agora.
Para pesquisar e substituir via uma tela de resume:
1. Na tela Search/Replace. digite a string que voce quer localizar no
campo Find.
2. Faca marca de selecsc em Replace By e digite uma string de
substituicac no campo Replace by.
3. Escolha 0 boeao de opcao In Program.
4. Pressione 0 botao Continue. A tela Global Replace In Programs e
exibida com a cursor posicionado na primeira str ing coincidente.
Todas as linhas que contem strings coincidentes sao exibidas e as
strings coincidences sao destacadas.
5. Para substituir a string na posicao de cursor, pressicne 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 coincidente.
7. Para substircir codasas coincidencias restantes da posicaoatual de cursor
para 0 fim do codigo-fonte, pressione a bono No Confirmation.
Se substituir quaisquer strings, voce devers salvar suas alter acoes antes
de retornar ac editor de codigo-fonre. Para [azer isso, pressione 0 botao Save
na barra de ferramentas Standard e entao pressione 0 bo-ac Back. Sevoce quiser
cancelar suas alreracees, pressione 0 bo-ac Cancel em vez do borso Save.
Explorando a borra de fer romentas Application
SCRHHCAM..... lnicie a ScreenCom "Exploring the Application Toolbor of the ABAP/4 Editor"
,.. oqoro. .
Antes de prosseguir, maximize sua janela (se ela janao esciver maximi-
zada). Voce nao .pode ver os botoes na extremidade direita da barra de
ferramentas Application se sua janela for menor que 0 t amanh o maximo.
Os con troles de berra de ferramentas Application sao most rados na
Figura 2.7.
Figura 2 7
Os conlrolesde
bono de ferromenloS
At:Jplir::otion.
........ ....- _ W ................. .... ....- ... ....,.---.-.- -- --- -- - - - - -
I
Para trozer uma linha para a tope do [onelu do editor,de urn clique duple
entre as polcvrcs ov no final do linha . Mas n60 de um clique duplo em
umo polovrc, isso n60 funcionor6. Um metcdo alternative ecolocor c
cursor no final de umo linho e pressionor a teclo F2.
DIA 2:StuPRIMfiROPROGRAMA EM ABAP/4 I 59
urna linha com a linha seguinte. Para dividir uma [inha, posicione 0
cursor onde voce quer que a divisao ocorra e pressione a tecla Enter.
Duplicate Line: Duplic auma unica linha au urn bl oco inteiro de c6digo
se urn est iver seleciona do {veja 0 botao Select, acima}.
Move Line: Move linhas aesquerda e adirei ra. Para mover uma Iinha,
coloque a cursor na posicao de destine e pr essione 0 bcrao Move Line.
Para mover urn bloco int eiro de ccdigc, marque 0 bloco e colaque 0
cursor na primeira Iinha do bloco na posicxo para a qual de deve ser
movidc e entao pressione 0 botao Move Line. Para move-lo para a
esquerda, coloque 0 cursor 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 linhas marcadas com 0 cami nho de menu Goto -> Markers.
ascontroles de barra de ferramentas Application. na ordem em que eles
aparecem na barra de ferramentas, sao as seguinres:
Display <-> Change: Altera a tela de modo de exibicao para mudar
o modo. Pressione-a novamente para altera -la de volta ao modo de
exibicao.
Check: Verifiea a sintaxe do pr ograma atual.
Where-Used List : Quando voce pressiona esse botao enquamo 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 cursor e a coloca no buffer.
Copy To Buffer: Copia 0 conteudo cia linha que concern 0 cursor para
o buffer.
Inser t From Buffer: Ins ere 0 conteudo do buffer ern uma nova linha
acima cia posi <;ao de cursor atua].
Insert Line: In sere uma linha em branco acima da posi csc atual do
curs or.
58 ! APRE NDA EM21 DIASAB AP/4
~ ~ - - - ~ w w w _ _.
,
; I
I
, I
I
,
Select : Seleciona uma unica linha ou urn bloco de Iinhas para mover,
conn e colar. Coloque a cursor na primeira linha do bloeo e pressione
Select. Cola que 0 cursor na ultima linha do bloeo e pressione Select
novamente. As linh as contidas no bloeo se romarao ver melhas. Voce
po de agora cortar, copiar 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 .
Undo: Inverte sua ultima variavel. Somenre urn nfvel de desfazer este
disponfvel.
ABAP/4 He lp: Oferece ajuda sabre 0 editor e sobre 0 ABAP/4 em
geral.
Patt ern: Pe rmire que voce digire uma instrucao ABAP/4 gerada
automa ricamente. Por exemplc, para inserir uma instrucfo write
que escr eve do coneeudo de uma variavel identificada vt, pressione
o bo tao Pat t ern, escolha a botao de opcac Write, pressione a batao
Continue, digite 0 nome de variavel no campo Fld e enn c pressione
o batao Copy. Uma inst ru cao write sera inserida na posicao de
cursor atual.
Concatenate: Une duas linhas . Para utilizd-lo, coloque 0 cursor no
final de uma linha e pressione 0 batao Concatenate para concatenar
Utilizando Cut e Paste
N ~ mai oria dos aplicativos Windows, hauma area de transferencia para ope-
racoes de cortar e colar . No RJ3, h.1 cinco areas de t ransferencias. ATabela 2.1
descreve codas elas.
Tabela 2.1 Buffers de Cut e Poste
Chamado Utili:r:ado
Como Copiar
Como Colar
pa ra para ele
a partir dele
o Buffer Carta e colo
Pressione as botces
Pressicne 0 batao Insert
de ntro de um
Cut ou Co py no editor
From Buffer
progra mo
as Buffers X,Y,Z Corte e cola Ccmi nho de menu:
Caminho de menu:
e ntre da is
Block/Buffer- > Copy
Block/Buffer-> Insert X
progromos to XBuffer
Buffer
Area de Carta e colo
Cominh o de menu:
trcnslerenoc entre:
Block/Buffer-> Copy
- duos sess6e s to Clipboard
R/3-: _
-
- '!=' - '!'!'
- -
. Na primeira linha da Tabela 2.2 esta 0 buffer especffico do programa,
simplesmenre chamado buffer. Ele permite que voce copie demro de urn
Para ut iliza-lo, coloque 0 cursor em uma linha au marque urn bloco
e preSSlOne as bot oes Cut, Copy ou Insert Fr om Buffer . 0 conteddc do buffer
eperdido quando voce deixa a editor.
as X, Y e Z sao utilizados para copiar c6digo de urn programa
para DUtro. Utilize a menu Block/Buffer para acessa-los. Embora eles tenham
tres buffers separados, tc dos eles sao util izados da mesma mane ira. Seus
cont eados sao retidos depcis que voce deixa 0 editor, mas d es sao perdidos
quando voce efeeua 0 logoff .
A area de t ransferencia ea mesma que aarea de t ransferenci a do Windows.
Utilize-a para cort ar e colar em outros aplicarivos do Windows como 0
MSWord au 0 Bloco de Notas. Ela tambem eutilizada para eopiar texto de
telas de ajuda Pt [veja a seguime sefSao int irulada "Obtendo ajuda") .
Alem dos botc es na barra de ferramentas Application e as menus, voce
pode urilizar funcoes 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 t ec1as de seta para a direita
Tabel a 2.2 Outros progromos convenienfes e do editor
I
d
I
I
I!
I
I
I
I
I
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 teclo Enter com 0 cursor no cc mecc ou no
final de umo linho.
Ccloqve 0 cursor no linha e presslooe 0 bata o Cut.
Coloqu e 0 cursor no primeira linho do bloco e pressione
F9 (seleciona) . Entoo coloque -o na ultimo hnhc do
blocoe pressione F9novornente.
Seledone 0 bloco e pressione 0 bctco Cut.
Pressicne 0 botoo Duplicate line .
Posicione 0 ccrscrno ponto de divisoo e presstcne a
tedo Enter.
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 onde 0 c6d igo
devere ser inserido e pressione 0 botoo Insert From
Buffer.
7Z
Escolha a caminho de menu Help- >Extende d Help.
Coloqoe 0 cursor em umc pc lovro-chcve dentro da
c6digo e pressione Fl .
PressloneF11.
Presstone Fa.
De urn clique com 0 bcfeo djrelto do mouse em
quolquer lugor no 6reo de tela de urno [cnelo.
Pressione Ctrl + Tab.
..
Excluir urn bloea de tlnhcs
Repetir umo ltnho c u blccc
Dividir umn linha
Excluir umo linho
Marcor um blocc de c6digo
Mover a cu rsor perc"0
compo de comondo
Troaer quolquer linha pore
a porte superior do tela
Unir duas linhas
lnserir umo Hnhc
Copior os linhas de ntro do
programe otuol
Para..
Obter cjodo no edit,or
Obter ciudo de qualquer
pclovrc-chcve do AW/4
Salvor seu programo
Executor seu programa
Exibiras teclos de
Utilizondo outros funcoes convenientes do edi tor
A Tabela 2.2 contem urn resume das do editor cornumente utilizadas.
Todas as sao acessadas a partir ciatela ABAP/4 Edit or: Edit Program
a mencs que observado de outro modo.
DIA2:SEU PRIMEIROPROGRAMA EM ABAi'/4 1 61
ou para a esquerda (voce apenas pede destacar uma linha par vel. utilizando
esse metodo). Para dest acar mul tiplas linhas, de urn clique rnais uma vez na tela
com 0 mouse e entao pressione Ctrl +Y. 0 ponteiro mud ara para a forma de
uma cruz . Arraste a cru z para desracar a secac que voce quer copier. Pressione
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.
(
,-
r
1
I:
i
I ,
.'
s.
e

1-
,
f

Como Colo r
a partir dele
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 todos eles
noo se o justc rem no tela
ofvcl.
Como Copi a r
para e re
1- De um clique
2- Ctrl+Y
3- Arroste e
marque
4- Ctrl+C
- R/3 e outro
opllc oftvos
Windows (p. ex.,
Bloco de Notes)
- coplc e c6digo
do cjvdc F1
pora 0 editor
- copia mcls de
umo linho do
c6digo
Chama do
Tabela 2.1 Confinuoc;60
60 , APRENDA EM21 ClASABAP/ 4
:IrrrrrrY t: _1' wwww
62 "RENO' EM 21 OIAS ABAPH
Tabel a 2.2 Ccnnnoccec
w.v
.. -
-
Tabela 2.2 Continuo<;oo
011. 2:SEll PRJMElRO1'10GR.UlA. EM ABAPJ4 63
Para...
Copter as Iinhas perc
outro programo
Copier pora au do 6reo
de trcnsferendo do Windows
Feser um comentc rio
sabre um blccc de linhos
Remover 0 coment6rio
de um blccc de linhcs
Imprimir seu progromo
Imprimir sua scldc do
progromo
lccchrcr e repetir a
loeo lizoo
Mudor 0 c6digo poro a
esquerde e perc a direita
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 0
editor
Copiar um progroma
Renomeor um programo
FOlj o
Marque um bloco . Escolha a cominha de menu
BlockiBuffer->Copy to buffer X. Abro urn novo
progroma e escolhc 0 eominho de me nu
Block/Buffer-> Insert Xbuffer. (Voce tcmbem pode
utilizer os buffers Ye Zdo mesma ma neiro.)
Marque urn blocc. Esco!ho a eominho de menu
Block/Buffer- >Copy to the clipboard. Entao escolho 0
cominho de men u Block/Buffer-> Insert clipboard.
Marque um bloco e escol ho 0 comi nho de menu
BlocklBuffer->lnsert comme nt.
Marque um bloco e escolho 0 caminho de menu
Block/Buffer->Delete comment.
Pressione 0 botco Print.
Enquonto visvcliac 0 soido , escol ha 0 cominho de me nu
Systern-> Llst->Print.
Presslcne as bof6es Find e Find Next.
Coloque 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 botec Move line.
Pressione 0 bctcc Undo. He apenas um nlvel de Undo.
Escolha 0 caminho de me nu Progrom->Pre!ty Printer.
Escolha 0 cominho de men u Utilities->Download.
Escolhc 0 eaminho de men u Utilities-> Upload. .
Escolho 0 cominho de menu Program->Sove Temp . A
c6pio tempo r6ria eexd uido quando voce sa lvo a
prog romo .
Escolha 0 caminho de menu Progrom->Get Temp.
Version. Voce pede recuperor a c6p io sclvc de quolquer
numerc 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 olha 0 cominho de
menu Progrom->Copy.
Do ABAP/4 Editor: Initial Scree n, esc olho 0 caminho de
men u Progrom->Renome.
Para...
Exduir urn progroma
Salvor sues olteroc;6es com
um novo nome de progroma
Exibir dais progromas ao
mesmo tempo
Compara r dois progromos
diferent es
Compa re r dais progromos
em sistemas dderentes
Salvor umo versec de urn
programa
Recupero r uma versoc
do progromo
Comparar versoes do
progromo
lmprimir seu progroma
FOlja.. .
Do ABN'/4 Editor: lnifiol Screen , escclhc 0 cominho de
menu Prcqrcm-o-Delete.
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 cominho de men u Systern-c-Creote new session.
No novo jcnelc , ...6 para ABM/4 Editor: Initia l Screen,
insirc 0 nome do segundo progromo e pressicne a
bctco Display or Chonge.
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 batao Display. Para exlblr a
primeirc dderencc, pressione a ba tao Next Difference.
Para cltnhcr as dais prog ramas nc prOxima linho
ldermcc, press ione 0 botcc Align.
Da ABAP/4 Editor: Initial Scree n, escclho 0 c o m j ~ h o de
menu Utilities->Splits:::reen editor . Presslooe 0 botao
Compore Dift Systems. Insira dois nomes de progroma
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 verseo .
Da tela Editor Initial, escolho 0 cami nho Utilities
->Version management . A te la Versions Of Object Of
Type REPS ~ exlbldc. Tire 0 selece c do verseo ctivc e
Ieee umo marco de setecec no verseo 0 resta urar.
Pressione 0 bctec Retrieve e entco pressicne 0 botoo
Bock. Clique em Yes e a versec atual tomo-se a
geroc;eo -1 e uma c6pia do versec se lecionodo tomo-se
a versec at ual.
A partir do tela Initial Editor, escclhc 0 cominho de
men u Utilities - c-Verslon monagement. Atela Versions
Of Object Of Type REPS eexibido. fo cc uma marco de
se'ecec nos vers6 es que voce quer 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 Progrom- > Print. No
pr6ximo tela , especifique umo impressora e foc;o uma
marco de se le1;ao no coixo de se lec;ao Print lmmed.
64 APIl:EHOA EM 21 OIAS
..... a",-- _
lnicie 0 ScreenCom "Obtendo ojudo" ogara.
Para urn tutorial 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 eexibida.
3. De urn clique no texro ABAP!4 Editor. A tela BC ABAP/4 Deve-
lopmentWorkbench Tools eexibida.
4. De urn clique em qualquer rexto sublinhado para ob eer ajuda sobre
esse t6pico.
orA2:sru PRIMEIRO PROGRAMA EMABAf'/4
Dentro da ajuda ha frequentemenre exemplos de codigo. Para cortar e
cola-los em seu programs, pressione Cu-l + Y e entac marque urn bloco de
ccdigo, arrastando 0 cursor arraves dele a part ir da extrernidade superior
esquerda para a ext remidade inferior direita. Deixe 0 mouse e pressione Ctrl
+C. Pressione 0 botao Back par a reromar ate1aABAP/4 Editor : EditPrograrn
e cole em seu programa utilizando Block/Buffer->Insert Clipboard. au voce
pode colar na parte superiorde seuc6digo utilizando Crrl + V. (Ctrl + V nao
cola na origem) mas na tela , encso isso nao colard na part e inferior da pdgina
vislvel.}
Obtendo a ojuda &/ 3 Library
A ajuda R/3 Library esu arrnazenada nos arquivos de ajuda do Windows. Para
visualiza-los:
65
NOYO ... He dots tipos b6sicos de c judo no editor, 0 oiudo Fl eo oiudo R/3 Ubrory. A
TERMO " civdo Fl tcmbem e conhecido como documenlo.:;60 de pelovros-chove do
ABAP/4.
. 'Aa;.u.da F1 descreve a sintaxe de palavras-chave do ABAP/4 e da exemplos
de sua utilizacao. Ela ebaseada em texto e reside em tabelas dentro do banco
de dados do R!3.
A ajuda R/3 Library e muito mais exrensa e contem visoes gerais e
procedimentos para criar objet os de desenvolvimento. Ela euma ajuda baseada
no Windows e reside fora do banco de clados do R/3. normalmente em um
CD-ROM.
Obtendo a ail/do El
A ajuda F I eutiJ pa ra pes quisa r sintaxe e frequentern enre contem exemplos
uteis de c6digo.
Para obrer ajuda F I:
I. Vapara a tela ABAP/4 Editor: Edit Program.
2. Coloque 0 cursor na palavra-chave ABAP/4 que voce quer ajuda.
3. Pressione Fl. A t ela Di splay Hypertext eexibida.
Denno .da ajuda FI, as palavras destacadas sao vfnculos de hipertexro.
Dando urn clique nelas, voce ob tem mais informacoes.
Voce pede utilizer 0 utilit6rio Findlt no CD ROM pore localizer mais
exemplos de c6digo.
1. De qualquer tela, escolha 0 carninho de menu Help- > R/3 Library. A
. t ela R!3 System Online Help eexibida.
2. Para ajuda em ABAP/4, de urn clique no rextc Basis Components. A
tela Basis eexibida.
3. De urn clique no texto ABAP/4 Development Wo rkbench. A tela
ABAP/4 Development Workbench eexibida.
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 ABAP/ 4 Editor: Initial
Screen. Para visualiza-la:
1. va para a ABAP/4 Editor: Initial Screen.
2. Escolha 0 caminho de menu Utilities- >ABAP/ 4 key word doc. A
tela Display Structure: ABAP/4_SAP's 4GL Program Language e
exibida.
3. Pressione 0 batao Find na barre de ferramentas Application. A tela .
Search Chapter Titles eexibida.
4. Digire 0 texto que voce quer localizar no campo Find.
5. Pressione 0 bouo Continue. A primeira linha que contem esse texto
edestacada.
6. De urn clique duplo na linha destacada para exibir mais informacoes
ou pressione 0 botao Continue Search na bar ra de [errament as Stand-
ard para localizar a proxima ocorrencia.
A ajuda tambem pode ser obtida de denrro do editor enq uanto voce esta
edit ando 0 codigo-fonte. Escolha 0 caminho de menu Utilities->Help on.
Aqui, voce pode obter os seguintes tipos de ajuda:
66 APReHDA EM21 DIASAS APH
OIAtlEU P'IEI' OP'OGRA.. EM ABAPi< 67
Aj uda do editor
Visso geral do ABAP/4
Pa!avra-chave do ABAP/4
Novas recursos da linguagem ABAP/4
Exibir modules de funlSao
Exibir estruturas de rabela
Exibir bancos de clados logicos
Exibir obj etos de autorizacio
Exibir infotipos
Local iza ndo seus objetos de desenvolvjmento
Inide a ScreenCam "l ocal izondo seus c bjetcs de desenvclvimento" ogora.
Para exibir todos as objeros de desenvolvimento que voce criou no
sistema RJ3:
i, DOl tela ABAP/4 Development Workbench, pressione 0 bono Ob-
ject Browser. A Object Browser: Ini tial Screen eexibida.
2. Escolha 0 botao de op <;ao Local Priv. Objects.
3. Pressione 0 bon o Display. A tela Object Browser: Development
Class $TMP e exibida. 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 programa e de seus componentes eexibida.
6. Para exibir 0 c6dige-fonte de programa, de urn clique duple no nome
do programs na parte superior da more. A tela ABAP/4 Edi tor:
Display Program eexibida.
Se voce estiver procurando urn programa e souber os primeiros caracreres de
seunome, poderalocalizs-loapartirdeABAP/ 4Edit or. Initial Screen. Parafazer isso:
1. Vapara 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 ztx, digire ztx*.
3. De urn clique na seta para baixo adireit a do campo Pr ogram. A tela
Programs eexlbida. Urna Iista de nomes de programas coincidentes
aparece nesta tela:Adireita de cada nome de programa esn a descricso
Shan dos atributos de programs.
4. De urn clique duplo no nome do programa que voce quer editar. A
ABAP/4 Editor: Initial Screen eexibida e 0 nome do programa em
que voce deu um clique duplo apar ece no campo Program.
Introduzindo 0 R/3 Data Dictiona ry
NOYO"""" a RJ3 Doto Dictionary louODIC pera obrevcf eum utilitOrio paradefinirobjetos
mllo r .de dodos. Pore utilizer 0 ODIC, voce pede crier e annozenor cb jetcs como tcbelcs .
estruturos e visuolizo<;6es. Pore chomor a Oato Dictionary, execute estes posses:
1. Vapara a tela do ABAP/4 Development Wo rkben ch.
2. Pressione 0 botao ABAP/ 4 Dicti onary na barra de [err amen tas Stand-
ard. A Dictionary: InitialScreeneexibida, como mostradona Figura2.8.
HOYOlll... 0 ODIC estc dentro do sistema Rl3 . Voce pede pensar nele como estondo
fiRMO r ocima de urn banco de dodos como Orocle ou lnformix e ogindo como um
contrcle remote, que gero e envin jnstrucces de SOLpara ele. Por exernolc, voce pode
crier umo definio de fobelo no ODIC. Quando voce ativa a definit;oo de tobelc , as
instrut;6e s de SQl soc gerados e enviodas para 0 ROBMS, fozendo com que ele erie 0
tobelo ree l no ba nco de dodos. Quondo quiser mcdficcr 0 tabela, voce deve mcdificcr
a defini<;6 0 de tobelo no ODIC. Oucndo ctivor a tobelo novcmente, mois SOL egerodo,
fozendo coni que 0 ROBMS modifique a tcbelc.

Voce esta agora no modo de exibicio no objeto selecionado. Voce pede
pressionar 0 bone Displ ay <-> Change para alrernar no modo de
Esse metodc somente funciona com cb jetos que forom selves como
cbjetos lcc cis. Eles seroc exlbidcs cqul somente se voce tiver pres-
sionodo 0 bctoo l ocol Ob ject no telc Creote Object Cotolog Entry
quondo voce crlcu 0 c bjeto.
Utilize a ODIC para crier e modifkcr
todos os objetes de bonco de dodos.
Noo rncdifiqve urno tcbelc ou quolquer
coiso no nlvel de ROBMS. A definit;oo Dote
Dicncncry nco pede atua lizor a si pr6prio e
elceste ro fora de sincronio com 0 banco
de dodos. lssc pede cousar erros de
cplkctivc e ate lever 0 urno perdo de
integridade dos dodos.
:w:o ... ,._
... .. ..;,.,.. ....... ;,c'."-c=_;;:;-""":---::::--:":--- "..- .,,,- "'- ... ..__.._ ..._ ...._ ...._ ..._ .......P'"..._ ...
68 APRENDA EM21 DIAS ABAPH DIA 2:SEUPRIMEIROPROGRAMA EM ABAPt. 69
fig ur e 2 8
A Dictionary:Initiol
Screen.
.':' 4' -rarn
.. . ..-'. ,,,.I'- r-." .""
i,.o -I . .: A )( 10U 0 . .c,,,, " ":':;,. .' .> }.
Fi g ur a 2 9
Adefjnis:oo de ODIC
pore tabe/o Zfal .
Explorondo as tabelas e as estrutllros
NOVO- lilt.. No RJ3 umo tahe la e urno colecc c de ltnhos. Coda ltnho ccntern compos,
TiRMO,. tcmbem chama dos de co/unos. Ncrmclment e, dentro de umo tcbelc, coda linho
tem c mesmo numerc de colones, como as outros hnhos do tcbelc.
Uma tabela armazena dados persist entes. Ern outras palavras, se voce
coloca dados em uma tabela, e1es permanecem ai depois que seu programa
finalizar. Eles permanece rao at e serem aherados a u exclufdcs par seu pro grama
a u curro. 0 nome de uma tabela eunico dentro do sistema R/3 inteiro.
Quando voce olha uma tabe1ano DDIC, esta visualizando a descr icto de
uma tabela no banco de dad os subja cente. Voce nao esta olhando diretament e
a pr6pria tabela de banco de dados. A Figura 2.9 mostra como uma definicao
de tabela aparece no R/3 DDIC.
NOYO .... No R/3 vmc estrutvro eurno descrit;60 de urn gropo de compos. Elc descreve
lIiMO" os nomes de compo, suo sequencia e sees tipos e comprimentos de dodos.
Ce do esmnurc fern urn nome que ecnicc dentro do sistema inteiro do R/3. Umo estrufuro
nCio pede ter 0 mesmo nome que umo tcbelo.
Urn nome de est rutu ra pede ser utilizado de duas maneiras:
Em urn programs, urn nome de estrut ura pede ser utilizado par a alocar
memoria pa.ra urn grop e de campos.
Em uma tabela, urn nome de estrurura pode ser utilizado para descre-
vet urn conjunto de campos.
Estritamente falando, uma estrurura ealgo que 56 existe dentro do R/3
Data Dictionary. Se visse a palavra estrutura, voce imediatamenre pensaria na
"est rurura de DDIC", Entretanro, a documentacio da SAP ut iliza tambem a
palavra estrutura"para referir-s e a urn grup o de varidveis dentro de urn pro-
grama. A estrutura ema re emostrada na Figu ra 2.10 como urn exemplo de como
uma estrutura aparece no DDIC.
Fi g ur a 2 10
Adefjnit;dode ODIC
para 00 eslrvturo
emora.
."' -
_
70 APRENOA EM 21 DiAl ABAPH
D1AU WPRI MEI RDPROGRAM> EM ABAPi< 71
'. ,
"

.,

_I<!Oj"l
-: :,;, .. ...... ' "
Nco deixe em bronco 0 cc rnpc Maximum No. Of Hitspara exibir todos
as 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 oplicativo, clem de tombem ovmentcr
significativamente 0 tr6fego no rede, fer nando ossim a sistema leoto.
Se um relotcrlo multo grande for necessaria, em gem! ele deve ser
executodo em lote. A obo rdoge m preferida e estreitcr suo pesquisa ,
digita ndo volores nos campos Doto Browser; Table: Selection Screen.
Isso sera abordado em detolhe em capit ulos posteriores.
r-ra II-! ! f tj it!'''PTJ 'tTm'' ''
1_ _ [ olt 1iolo . 5ol1jroo"lJ"Iiot 1IftI " , - . - <.
1. Va para Data Browser: Tabl e: Select ion Screen.
2. Es colha 0 caminho de menu Sertings->Fields for selection. A tela
Choose Fields For Selection e. exibida.
3. Faca uma marca de selecao nos campos que voce quer incluidos na
Data Browser: Table: Selection Screen. Desanve qualquer urn que
voce nac quer que aparelia.
4. Pr ession e 0 bo- ac Execute. A Data Browser: Table: Selection Screen
eexibida e contem os campos que voce selecionou.
Voce pode controlar quais campos serao exibidos na Data Browser: Table:
Selection Screen. Para fazer isso:
Determi nando compos exibidos
E.ig ll r g 2 1 1
Atela Data Browser:
Table Select Entries.
1. Va para a tela Dictionary: Table/Structure: Display Fi elds.
2. Escolha a caminho de menu Utilities-s-Table contents . A Data
Browser: Table: Selection Screen eexibida.
3. Para exibir todas as linhas na tabela, pressione 0 botao Execute sem
inserir qualquer crirerio de pesquisa. A tel a Data Browser : Table
Select Entries eexibida (vejn a Figura 2.11).
o numerc de registros 'exibido eIirnitado peIo valor no campo Maximum
No. Of Hits na Data Browser: Table: Selection Screen.
No R/3, tabelas e estruturassao definidas no DDIC. Voce notara entre-
tanto, quando as visualiza, ha uma diferenca muito peguena entre elas. Isso e
porgue, no RJ3, uma tabela esomenteumadescripio de uma tabela real de banco
de dados. Ea estruturada tabelano bancode dados. Entao, tanto tabelas como
estruturas dentro do DDIC definem 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 documenracao do R/ 3 confuse, uma
vez que a SAP ocasionalrnente utiliza esses dais termos int ercambiavelrnent e.
Exib i nQQ umo to bela ou defin ili:io de estruturo
Para exibir uma tabela au definicao de estrutura DnIC:
1. Va para a Dictionary: Initial Screen.
2. Insira a tabela ou nome de estrutura no campo Object Name.
3. De urn clique em Tables ou no bono de opcao Structures.
4. De urn clique no botao Display. A tela Di ctionary: Table/Structure:
Display Fields e. exibida, como mostrado nas Figuras 2.9 e 2.10.
o que voce ve na Figura 2.9 ea estrutura de tabela Hal no R/3 Data
Dictionary, nao a tabela real de banco de dados. No R/3 , apenas a estrutura da
tabela pode ser definida, junto com alguns atri butos como os campos de chave
primaria.
Exibindo os dodos no tabel o
o R/3 tambern oferece urn utilitario para permitir quevoce exiba os cladosque
existem dentro de uma tabela. Para utiliza-lo:
72 I 21 DIAS
DIA7: seuPRIMfl ROPROGRAMA ABAP/4 , 73
lntrcduzindo a s el ---,---, _
A instrucao sel ect recupera registros do banco de dados.
Entendendo a sintaxe do ABAP/4
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 neste livro. Para instrucoes, veja 0 arquivo readme. txt
localizado DO diretcrio raiz de CD-ROM.
Crie urn novo programa e atribua a nome 0202. Digite 0 c6diga como
mostrado na Listagem 2.2.
Listagem 2. 2 Seu segundo prog roma
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.
, ,
, ,
; !
iI
I !
I
E
"
Esse Iefodos as reg isiros detobelo zt xl fa l e escreve a contecdc do
r compo 1i fnr (0 ncme ro do fobriconte ) em ordem crescente.
1060
1070
1080
1090
2000
V1
Vl0
Vll
V12
V2
VJ
V4
VI
YO
V7
va
V9
Na Iinha 1, a instrucao report esolicitada como a primeira linha de urn
relar6rio.
Na linha 2, a instrucao tables faz duas coisas. Primeiro, ela aIoca
uma area de mem6ria (chamada area de t rabalho) ident ificada ztx l f al.
A area de trabalho tern a mesmo layout que a definicao de DDIC de
rabela ztxlfal. Segundo, ela da acesso ao programs 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 se1ect e endse1ect
sao executadas uma vez para cada linha retornada do banco de dados.
Na linha 4, a instrucfo write eexecutada uma vez para cada linha que
elida da tabe la.A / (barra) depois de wri te uma nova linha.
Note que em seu programa, voce tern duas coisas identificadas como
ztx lfal: uma area de trabalbo e uma tabela. A duas te rri 0 mesmo nome -
zt xl fa I. A pcsicao do name ztxl fal denrro de uma inst rucdo determina aqual
voce se refere. Na linha 3, a primeira ocorrencia de zt xlfal se refere arabe1a
de banco de clados. A segunda ocorrencia refere-se aarea de trabalho.
Lf a1 e 0 tobelc-mestre do fa briconte no R/3. Zt xl f al foi criodo pelc
rotina de de CD-ROM e e se me lha nte a 1fa l, mas e
utilizado poro as exercicios neste livre. a compo 1i fnr e0 ccm po de
ncrnerc de fobriconte .
onde:
* indica que t odos os campos na rabela devem ser recuperados.
tl 0 nome deuma tab ela previarnenre definida em uma instrucio tabl es.
wo e 0 nome da area de trabalho que coincide com a estrutura da tabela
11 ea nome de urn campo na rabela t l , .
eurn dos seguint es operadores logicos: = <> > >= < <=.
v1 eurn literal ou uma variavel.
and/or euma palavra and a u uma palavra or.
a codigo na Lisragem 2.2 deve produzir esta safda:
1000
1010
1020
1030
1040
1050
Sintaxe para a instru,fio sel ect
a seguinre c6digo mostra a sintaxe simplificada para a insrru cdo se l ect:
select .. from tl (i nt o 11'0] (where f l op vI and/or 12 op v2 .. .J [order by f l] .
(other abap/4 st at ement s)
endselect.
tn
-
Z

m
"
SAioA
I
I
,
I
_.J.;,
74 APRENDA EM 21 DIAl ABAP/4
DlH lEU PRIMEIBDPBOGRAMA EM ASAP/' 75
Se 0 usuerio enrac pressionar Page Down, 0 processamento prossegue
como a seguir (veja a Figura 2.13):
B 17 _, .
7 ' .... '
Mem6riaestendldo
SAPGUI (Servidor de cpresel1tol;oo)
DBS
,
. . . L
};
Se 0 usuario entao pressionar Back, 0 processamento continua assim:
1. 'Pressionar Back faz com que uma sclicitacao seja enviada do SAPGUI
para 0 dispatcher no servidor de aplicativo para terminar 0 programa
ztx0202.
2. A soliciracao e despachada para 0 primeiro processo de trabalho
disponfvel.
3. 0 contexte de usuario e a area de rolagem para ztx 0202sao deslocados
no processo de trabalho.
4. 0 sistema libera a area de rolagem para 0 programa.
5. 0 contexte de usuario edeslocado para fora da t ela.
1. Pressionar Page Down [az com que uma soliciracfo seja enviada do
SAPGUI para 0 dispatcher DO servidor de aplicacivo para obter a
proxima pdgina de saida a partir de ztx0202.
2. A soliciracac e despachada para 0 primeiro processo de trabalbo
disponivel.
3. 0 contexte de usuario e a area de rolagem para ztx0202 sao deslocados
para 0 processo de trabalho.
4. 0 processo de trabalho envia a pr6xima pagina para 0 servidor de
apresentacao.
5. A area de rolagem t: 0 contexte de usuario sao deslccadc s para fora
do processo de trabalho.
Figura 2 12
Esto e0 moneiro
como a ins/rus:oo
se lect fundono.
lnlcie a NAYI Select Statement Processing'" ogora.
Prossiga os processamentos como a seguir (veja a Figura 2.12) :
1. Pressione F8 para executar 0 programa que causa uma solicitacao a
set enviada do SAPGUI para 0 dispatcher no servidor de aplicativo
para executar 0 programa ztx0202.
2. A solicicacao e despachada para 0 primeiro processo de trabalho
disponfvel .
3. a contexte de usuaric edeslocado no processo de trabalha.
4. 0 prog rama erecuperado do banco de clados.
5. 0 processo de trabalho aloca uma areade rolagem para armazenar as
variaveis do programa, 0 ponteiro atual de programa e as alocacoes
privadas de memoria.
6. 0 programa eint erpretadc pelc processo de trabalho no servidor de
aplicativo e cornelia executando 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 primeira linh a de t empo 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 ztxl 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 ecolocada na area de
trabalho zt xl tet, sobrescrevendo a linha anterior..
12.0 campo 1; fnr eescrito na proxima linha da pagina virtual.
13. Os passos 9 a 11 sao repetidcs para todas as linhas J?a tabela ztxlfal.
14.0 loop termina aut omaticamenre quando a ultima linha elida de
ztxl fa l.
15. 0 programa termina, mas a area de rolagem (contendo a pagina
virtual) permanece alocada .
16. 0 processo de t rabalbo determina 0 numero de linhas que a tela do
usudrio ecapaz de exibi- e errvia essas muitas linhas ciapagina virtual
como a pr imei ra pagina da list a para 0 servidor de apresentacao.
17.0 ccnrexro de usudrio e a area de rolagem sao deslocados para fora
do processo de rrabalho.
lVI
-.;

76 APREN OA EM21 OIAS AB.lP/4
F jgura 2 13
Esso e 0 seqiiencia de
eveorcs ocionoda
quando 0 usu6rio
pressiona Poge Down.
L - - - - - - - - ---I- - HI va -
V9 .1..0
. _ de
:oglhO rologem
Pare abrir umo novo ionelo do R/3 (chomodo sessec), de quo lquert e la
escclho 0 cominho 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.
Ent endendo os areas de trobolhos da tabela
NOVO il... No linho 3 do listoge m2.2, as polovros ; nto zt xl f al sse opcion ois. Se voce
TfRMO debe-los de foro, 0 crec de trobol ho com 0 mesmo nome do tcbelo euftlizode.
Em outros polovros, 0 linho ot uol outomo ticomenfe entre no crec de trobolho ztxl fal.
Per esse rcreo, ela e canhecido como 6reo de trobolhodo tobe lo podrt50. Nesse coso , a
c reo de trebolho zt xl f al e0 area padrOo pore a tobelc ztxlfal. Por isso, 0 c6digo no
listogern 2.2 pode ser sirnplificodo como mostredo no listcgem 2.3.
Listagem 2.3 Seu segundo prog romo simplificodo
1 report ztx0203.
2 t abl es ztx lfal.
3 sel ect > f rom zblfal order by ll fnr .
4 write / ztxlfal- lifnr.
5 endset ect ,
DIA 2, l EU P'W.EliUP' 06RAJI,A EM 77
Comparada 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.
Como a clausula i nt o nao foi especificada na instrucao se1ect, 0 sistema utiliza
a drea de trabalho cia tabela padrsc ztxlfal.
Para cop iar urn pragrama , esc o lhc 0 cominh o d e men u Pro-
qrcm-o-Ccpy do telo iniciol do editor. Alternotivomente, enqoontc editc
um progroma, voce pede escolher c cominho de menu Proqrcm -c-Sove
As.
Uti lizando uma area de trabalho explfcita
A instrucao t abl es sempre cria uma area de trabalho da tabel a padrao, entac
voce normalrnente nao tern de definir 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 trabalho da tabela adicional utilizando a
instruc;ao data .
Sintaxe simplificada para a instrucco data
Abaixo eSta a sintaxe simplificada para a insrrucio data .
Z data ItO like tl.
onde:
m Ita ea nome de uma area de trabalho de tabela que voce quer definir
'f tl ea nome de uma tabela que voc e quer para padrjio em sua area de
trabalho depoi s .
A Listagern 2.4 mostra como utilizar a insrrucao dat a para cri ar uma nova
area de trabalho.
Li st agem 2.4 Utilizando sua pr6pria area de trobolho de tobela
1 re port zb:0204.
2 tables ztxlfal.
3 data Wi li ke ztxlfal.
4 select" tree ztxlfal into wa order by l t fnt-,
5 wr ite / ee - j tfnr,
6 endsetect .
--- -
78 APREN" EM 21 DIAS ABAP/4 DlA 2:SEU PRIMEIRO PROGRAMA EM ABAPf4 79
latrod uzia do a c1ausulo where
NOVO.... Quando voce explicitcmente atribui names a umo 6rea de trobclho no instru<;6a
rrRMO" se 1ect {como; nto wa no ltnhc 5j, esse crec de trobolho echomodo area de
frobo/he explfdfo.
1 ;
; ..
I
I'
I
i
I
![
of
o r
d
:f
d
.f
osistema R/3 tome as vcriovels de sistemadisponiveis dentro de sev progroma .
Duas verieveis de sistema sao muito tite is para saber quando codificar a
inscrucao se1ect :
sy-subt-c
II sy-dbcnt
Deseobrindo sy-subre
NOVO .... \ Pcro s.e a instru<;oo se lect linhos: teste 0 volar
HRMO" do vcridve ] de slstemc sy-subrc fprcnunclo-se sol-sub-cre-st"] depois do
instru<;oo endsel ect. Se as ltnhos foram loeolizodos, a vclor de sy-subr c se ra O. Se
nenhuma linho [o! lccclizcdc, a valor sera 4. (Veic a listagem 2.6.)
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 auto-
maticamente dentro de cada programa.
as names de vcrtcveis de sistema podem ser codificodcs utilizando 0
prefixo sy- ou syst -. Por exemplc, sy-datum tornbem pod e ser
codiftcodo como syst-datum; eles s60 funcionolmenle equlvclentes .
Sy- e 0 formvlcrtc preferido, embora voce occsionalmente veto syst-
em progremos mais a ntigos. 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.
ANALISE.... Este programa Ie todcs as reqlstros de tobelc ztxlfal onde 0 ncrnero do
,. fahricante emenar que 2000 e escreve 0 contecdo do compo 1i f nr (a ncmerc
de fabriconte). No banco de dodos, 1; fn r eurn compo de ccroctere cc ntendo vclcres
nurr-ericos que estcc exatcmente [ustificcdos e preenchtdcs 6 esquerdo com zeros.
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 sejam obtidos.
HDVO ...
HRMO'- 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 com 0 prefixo 5Y- . Par
exemplo, a dote otuol de sistema esto dlsponrvel no ccmpo de sistema sy - datum e a hora
otuol em sy-uzeit. Em gerel, eles soo chomados obrevtcdcmente de compos sy
[prc rwoclo -se "'sci'").
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 .
Irabo IbadQ co rn veri uxeis,-,d..,e"--,,s,;i sut"'eJjrnLLO"'- _
o c6digo na List agem 2.5 deve produzir esta saida:
1000
1010
1020
1030
1040
1050
1060
1070
1080
1090
A 1inha 3 define uma nova area de trabalha chamada como a
estrutura zt xl fal de DDIC.
A linha-lle uma linha de uma vez cia tabela ztxl fal na area de trabalho
wa em vea cia area de t rabalho cia tabela padrao.
A linha 5 emi te a linha para wa em vel. de ztxl fal.
ANlus[
SAiDA
a c6digo na Lisragern 2.4 deve produzir a mesma saida que as duas
listagens anteriores (veja a saida cia Listagem 2.3). Observe que nesse exemplo
njio enecessaria defini r uma nova area de trabalha - uma eutilizada apenas
para ilusrrar 0 conceito.
Para resrringir 0 numero de linhas retornadas do banco de dados, uma clausula
where po de ser adicionada ainsrrucao select. Par exemplo, para recuperar
fabricantes que tern numeros de fabricante menores que 2000, utilize 0 c6digo .
na Listagem 2.5.
Listagem 2.5 Restringindo os fabricantes selecionad05
1 report ztx0205.
2 tables ztx.lfa1.
3 select * from ztxlfa1 where lifnr < ' 0000002000' order by lifnr.
4 write / zt xlfal l ifnr .
5 endsetect .

80 APRENDA EM 21 DlAS ABAP/4
DIA 2:StU PRIMEIROPROGAAMA EM ABAP/4 81
ENTRADA'" lista gem Utilizando sy-subrc para determinar se quoisquer llnhos
,.. fora m selecionodos
I
I
I
I
o codigo na Listagem 2.7 produz esta saida:
1 1000
2 1010
3 1020
4 1030
5 1040
6 1050
7 1060
8 1070
9 1080
10 1090.
11 2000
12 VI
13 VlO
14 VlI
15 VI2
16 V2
17 V3
18 V4
19 V5
20 V6
21 V7
22 VB
23 V9
1-3 registros encontrados
Depois de endselect. elo reter6 seu volar e entcc ccnterc 0 ruimerc de linhos se-
lecionodos. Por exemplo, pora irnprimir rujmercs seqcenclots 00 lado de coda fobriconte
e imprimir um tolol do nomero de llnhos selecionodos no porle inferior do relot6rio, utilize
o c6digo no listogem 2.7.
1 re port ztx0207 .
2 tables ztxlfaL
3 se lect 10" from ztxlfa1 order by lifnr.
4 wri t e / sy- dbcnt ,
5 wr ite ztxlfa1-1ifnr.
6 endsetect .
7 write / sy-dbcnt .
B wri te ' r ecor ds fou nd'.
SAiDA
ENTRADAlItr.. Listagem 2.7 Utilizando 0 sy-dbcnt para co ntor lmhc s retomados do
" i nstrucoo select
a codigo na Listagern 2.6 produz esta safda:
No records found
1 report ztx0206.
2 tables ztxlfal .
3 se lect .. from ztx'l f al where l f fnr > 'Z'.
4 write / ztx lfet-ltrnr ,
5 endselect.
6 H sy-subrc < > O.
7 write / 'No records found' .
B endif.
Muitos pclovrcs-chove otribuem vclores a sy -subrc. Algumas po-
lovrcs-chove slmplesmente nco 0 configurorn. Se urne pe lovra-chave
configura sy -subre, as volores oossrvels 500 documentodos no ojuda
Fl para esse pcl cvrc -chcve.
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 que umo instruceo que oconfiguro
tenhc exeeutado.
ANALISE..... A instru<;oo selecionodo no linha 3 estc restringido par umo cl6usu la where.
r Nesse coso, nenhumo linho coincide com a criteria no d6usulo where , entoo
do endselect, 0 valor de sy -subrc econfigurodo como 4.
Se voce codificou uma set ect e quiser testar 0 valor de sy-subr-c, seu teste
deve vir depois de endse1ect. Por que? A resposta reside no fato de que 0 codigo
entre select e end select eexecutado 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 eexecutado. Pcrtanto, voce deve codificar 0 teste
para sy-subrc depois de endsel ect.
SAiDA
Des cobrindo sy-dbc nt
NOVO Poro determinor a nume rc de Jinhos retornodo por umo instru<;60 sel ect, teste
HRMO" a valor de sy-dbcnt decors de endsel ect . Voce tombern pode utilizo-lo como
urn contodorde 100Pi entre sel ect e endsel ect , elcccntem uma soma do itera'ioo otuol.
Pore a prirneiro linho, sy-db cnt sera 1, durante a segu ndo sera 2 e ossim por dionle .
ANAliSE
A linha 4 escreve 0 valor de sy-docnt para cada linha que e retomada
pela sel ect . A barra (/) comeca em uma nova Iinh a, eneao cada
sy-dbcnt comeca em uma nova linha.
A linha 5 escreve 0 valor de ztxlfal- l ifnr na mesma linha que
sy-dbcnt .
-,;.;.:,
82 APRENDA EM 21 DIAl ABAP/' DIA 2:SEU PRIMEJRO PROGRAM.&. EM ABAP{4 83
Exi bindo 0 estrutura sys t
Hoi duas rnaneiras 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
Va para 0 Data Dictionary, insira syst, se1ecione a bctao de 0pljao
Structure e pressione a batao Display
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.
lnicie a Screeotlcm "How to Seorch Through Field Descriptions" ogora.
Por exemplo, para definir duas tabelas, voce poderia codificar isro:
tables ztxlfal.
tables ztxlfbl.
au, voce poderia utilizar 0 operador de encadeament o, com o esse:
tables: ztxlfal. ztxlfbl.
Funcionalmente, os dais segmentos precedentes de c6digo sao identicos
e ern tempo de execucio nao hi nenhuma diferenca em desempenho. Durante
a gerecac de c6digo, 0 segundo segmento de c6digo e expandido em duas
instrucces. Entao, de um ponto de vista funcional os dois prograrnas sao
identicos.
as operadores de encadeamento devem ser ut ilizados para melhorar a
legibilidade de seu programa. A utilizacao do operador de encadeamenro e
ilustrada na Listagem 2.8.
Utilizondo a sel eet si agl e
ENTRADA.... Listagem 2.8 Utilizondo a operador de encadeo mento pa ra reduzir a
r redundcnclc no instru<;:oo write
a c6digo na Lisragem 2.8 produz a mesma saida que 0 programa anterior
(veja a saida da Listagem 2.7).
A instrucao select single recupera urn registro do banco de dadc s. Se voce
conhece a cbave primaria inteira do registro que deseja recuperar, se1ect si ngl e
emuito rnais rapida e mais eficiente que select/endselect.
A linha 4 combina as linhas 4 e 5 da Listagem 2.7 em uma unica linha
utilizando 0 operador de encadeamento.
A linha 6 combina as linhas 7 e 8 da Listagem 2.7 em uma unica linha
utilizando ooperador de encadeamento.
1 report ztx0208.
2 tables ztxlfal.
3 select * from ztxlfal order bylifnr .
4 write: / sy-cbcnt , ztxlfal-lifnr.
5 endselect. .
6 write: / sy-dbcnt, 'records found'.
ANAliSE
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.
. 3. Faca uma marca em todas as caixas de selecao e pressione 0 batao
Continue. Uma caixa de didlogo aparecera pergunrandc a voce as
parametres de impressao.
4. Pressione 0 borao Print Preview. A caixa de dialogo se fechara e uma
lista contendo uma pequena fonte aparecerd.
5. Escolha 0 caminho de menu Goto->List Display. A Iista mudara para
uma fonte maier de especc fixo.
6. No campo de comando, digite %sc pressione a tec1a Enter. A caixa
de dialogo Find aparecera.
7. Digite 0 texto que voce quer localizar e pressione a tecla Enter. Uma
lista de coincidencias aparecera e cada ccincidencia sera desracada.
8. De urn clique em uma palavra desraceda para pular imediatamenre ate
essa linha na lista. Se voce deseja localizar cutra ocorrencia do texto,
va para 0 passo 6 desse procedimenro.
Utilizondo 0 ope rodor de encodeomento
Nova... a sinal de dois-pontcs (: l echamado 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 seguida par
dois -ponios. Entao, coloque as partes fmcls das instru<;6es depots dele, coda uma
seporoda par uma virgule.
Sintaxe para a lnstrucco select single
A seguir esta a sintaxe simplificada para a insrrucao se1ect si ogl e.
..,
-
-
-
- - - - - - - - -
_ 'W
-
- - - -
- - - - - -
._-
-
- -
."""" .
__......._ ...,....,..._ ........_ ....... ........__....__........__..... .....r-"__.... ....__.
84 APREH D" EM 21 DIASAB AP/ 4
DIA2: SEU PRIMEIROPROGRAMA EM 85
as seguintes pontos aplicam:
select si ngle nao cornelia urn loop porque ela apenas retoma uma
linha. Portanto, nao codifique uma instrucio endsel ect , Se fiaer i 550.
voce obtera urn erro de sintaxe.
Certifique-se de que uma linha unica foi retomada, voce deve espe-
cificar todos os campos de chave primaria na cldusula whe re. Se voce
nao fize r isso, seu programa execu t ara, mas obt era urn aviso. (Para
exibir os avis os , es c ol h a 0 caminho de menu Programa Pro-
gram-c-Check->Display Warnings.)
A Listagem 2.9 ilustra a inst rucao select st ngl e. Para praticar, erie urn
novo programa e digite 0 c6digo como mostrado na Listagem 2.9.
Lisfa gem 2.9 A instru;ao sel ect si ngle
I repor t zt x0209.
2 tables zt xl fa l .
3 sel ect single * from ztxlfal where lifnr" 'VI ' .
4 if sy-subrc z o.
5 write: / ztxlfaI l i fnr , zt xlfal - namel.
6 el se .
7 wri t e 'record not found" .
8 endif.
* Isto e um ccnentartc
ta b' es ztxlfal. " Isto t ambeme vm cement ar t 0
A instrucao se1ect recupera as linhas de uma tabe la de banco de dados.
Utilize select si ngl e par a recuperar uma Iinha. Utilize select/end-
se1ect para recuperar multiplas linhas.
select/endselect forma urn loop. 0 codigo no loop eexecutado uma
vez para cada linha de tabela que sati sfaz a clausul a where. 0 loop
rermina automaticamente quando todas as linhas forem processadas.
Se voce DaO especificar uma clausula ; nto, cada [inha sera colocada na
area de trabalho da tabela padrao e sobrescreverd a linha anterior.
sy-subr-c econfigurado como 0 se quaisquer Jinhas forem selecionadas,
e configura do como 4 se nenhuma linha for selecionada. sy-d bcnt e
Nao ha caractere end- comnent (fim de comentario). Em outras palavras,
quando voce comeca urn comentario, 0 res tante da linha sera apenas urn
comen tdric. Nenhum c6digo adicional pode entrar nessa linha. 0 comentario
termina no final cialinha atual.
Independenremente dos comentarics, voce pode formalment e registra r
seu c6digo no componente de document aci o do progra ma. Para fazer isso, va
para a tela Editor I nit ial, de urn clique no batao de opcao Document ation e
pressione Change. Digite sua documentacio e pr essione Save.
Os programas do ABAP/4 sao compostos de componentes . Os corn-
ponentes sao atriburos, codigo-fonte, vari ante s, elementos de text o e
documenracao. No minimo, urn programa deve ter atributos e codi go-
fonte.
Os relat6rios do ABAP/ 4 devem comecar corn a instrucao re port.
A insrrucao tables aloca uma area de trabalho da tab ela padrao e
tambern da acesso ao programa para a t abel a de banco de clade s do
mesmo nome.
Resumo
Come nta ndo 0 c6 digo e a formal
Ha duas maneiras de colocar coment arios em seu c6dig o:
Urn * (asterisco) na primeira coluna indica que a linha int eira eurn
comentdrio. Ela ficareem vermelho dentro do edit or para indicar que
eurn comentario de linha int eira.
II . (aspas duplas) em qualquer luga r em uma linha indicam que a
res tante da linha e urn comentario. 0 comenrario nao ficar a em
vermelho como para urn comentario de linha int eira.
Par exemplo:
A linho 31ocolizo 0 fobrkonte VI no tobe lo zt xl fal. Como apenos umo linha
foi retornodo, order by noo e necessaria e neme endsel ect .
o c6digo na List agem 2.9 produz esta saida:
VI Quantity first Ltd .
s el ect * from tl [into wa] [where fl op vI and/or f2 op v2 . . ].
onde:
* indica que tcdos a s campos na tabela devem ser recuperados.
tl eo nome de uma tabela previamente definida em uma instrucao ta bl es.
wa e0 nome: cia area de trabalha que coincide com a estrutura da tabela.
11 e0 nome de urn campo na tabela tl.
op e urn dos seguintes ope radores logicos: '" <> > >= -c <=,
vl eum literal ou uma variavel.
and/or euma palavra and ou uma palavra or .
III
Z

m
T
SAiD!

aumentado sempre uma vez pelo loop e depois do endsel ect ele
contem 0 mimero de linh as recuperadas.
0 operador de encadeamento e dois-ponccs (:) . :E urilizado para
reduzir a redunddncia onde duas ou mais insrrucoes comecam com a
mesma palavra ou sequencia de palavras.
86 "RENDAEM 1\ DIAl ABAP/4 87
Sim, pede, mas na maicria das vezes voce nao deve, porque ela
po de ser extremamen te ineficiente. Uma altern ativ e melhor e
urilizar uma visualizapi o do banco de clades.
Possa aninhar as inst rucoes sel ect dentr o de autra?
Quando copio urn programa inteiro, a inst ru cao report ain da
contem 0 nome antigo do relat6ri o. Mas se eu a executa, el e
roda sem erro . Ele nao deveri a me dar urn erro?
Apesar de sua s palavras , essa mensagem njio signifi es que ha
dados njio salvos que serao perdidos. Ela signifies "Se voce nao
salvou seus dados, eles serdo perdi dos" . A melhor coisa a fazer
e apena s ignora-l a. Todo mundo faz issc.
Toda vez que efetuo 0 logoff do R/3 obtenho uma caixa de
mensagern que di z "Unsaved data will be lost" - mesmo depois
que salvei tude. POl'
o nome de pr ograma n a instrucj.o r eport e mas nao
tern de corresponder com 0 nome real do pro grama. Eapenas para
documentaclo.
DIA 2: SEU PRIMEIRDPROGRAMA EMASAP!.
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 ult imos sere caract eres de seu
nome de programa.) Sevoceagora retornar ao edicor e tent ar editar
seu programa novamente, 0 sist ema det ectara 3 presence de duas
vers6es no banco de dados e exibira uma caixa de dialc go que
solicita 3 voce qual versao voce quer editar, a primeira (salva) ou 3
temporaria. Para exibir a copia rempor aria (3 prirneira que voce
executou) simplesmente pressione 0 bo-ac Continue.
o
o
o
o
o
o
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 no Apendice B, "Resposras as pergumas e aos exercfcios" .
Workshop
'W' W W _ -w .....
-
.,..
Se voce efecuar logon novamente dent ro de 5 ou 10 minutes,
podera reconect ar-se a sua sessao. Quando voce efetuar logo n
novamente, digite seu ID de usuario e senha mas nsopressione
a tecla Enter 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.
As vezes, quando edito urn programa, obtenho urna caixa de
dial ogo com a me nsagem "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 buffer (possivelmente devido a urn erro/falha de sistema)
Escolha uma das seguintes opcoes . Por que a vejo e 0 que devc
fazer ?
Se eu estiver edltando um programa, 0 que acontece com mi-
nhas alteracces se esti ver desconectado do R/3 j por exemplo, se
meu PC trava e tenho de rei niciaIizar? Perderei minhas al-
tera<; 6es?
Nso. Mas quando voc e quiser salvar bast a pressi onar a tecla El I.
Isso signifies que ha duas copias de seu programa no sistema:
uma "rea l" e ou tra temp crdria. A remporaria ecriada quan do
voce executa seu programa sem pri mei r o salvd-Io. N ormal-
mente e excluida quando voce ret crna ao editor e salva suas
alteracbes, mas se voce anormalmente sai do editor, ela per-
manecera. Por exemplo, voce poderia modi ficar seu programa
e entdo executa-lo imedi at amente sem salva-Io. Se sen pr o-
grama produzisse urn du mp pequeno, voce entao precisaria
pressionar 0 botao Exit e voltaria ao Wor kbench. Sua sessr c no
Hoi urn r ecurso de AutoSave no editor como no MSWord?
o
o
0-
e
o
o
P&R

",.
..,
88 APREHDA EM 21 DIAS AWl'
D1A 2,SEU PRIMEIRO PRDGRAMA EM AMP/4 89
L
Test e
1. Quais as duas coisas que a instrucao tabl es faz?
2. A que 0 termc area de trabalho databela padrao se refere?
3. Se a inscrucao sel ect esta faltando em urna clausula ; nto, onde
entrarao as linhas?
4. Se uma inst rucao write nao contem uma barra, a safda eescrita na
mesma linha que a saida para a instrucfo write anterior ou eescri ta
em uma nova linha?
5. Qual e0 nome da varidvel de sistema que indica 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 Listagem 2.6. Se ha 30 linhas na rabela ztxl fal, quanras vezes
a linha 4 foi executada?
8. Veja a Listagem 2.6. Se a t abela ztxlfal esdver vazia (se contem 0
linhas), guantas vezes.a linha 4 foi executada?
Exercf ci os do ed itor
No exercfcio a seguir, voce copiara urn programa, corrigira erros no codigo,
mesclara novo c6digo nele, executara, imprimira, carregara, criara uma versao
e comparara versoes . Veja a Tabela 2.3 quando necessaria.
1. Copie a programa zty0200a para 0 programa 0200a. Para executar
a c6pia, utilize 0 bot ao Copy localizado na barra de [erramentas
Application do ABAP/4 Editor: 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-subrc <> o.
write : / ' no records found' .
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 ins-
tabl es e pression e F1.)
5. Retorne da ajuda novamente para seu programa. (Pres sion e 0 bo rao
Back na barre de ferramentas Application.)
6. Exiba as arribuicoes de tecla de funcio. (De urn clique com 0 bono
direito 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 eexibida. Escolha 0 caminho de menu Tools- >ABAP/4 Work-
bench. A telaABAP/4 Development Workbench eexibida. Pressione
o botac ABAP/4 Editor na barre de [erramentas Applicat ion. 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 Applica-
tion. A linha 2 t oma-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 janela em que programs - 0200a eexibido.
13. Cole as linhas do buffer X depois da Iinha 5. (Cologue 0 cursor na
linha 6. Escolha 0 caminho de menu Block/Buffer->Insert XBuffer.)
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. Colo-
que 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 Pro-
gram-> Other Program.
18. Corrija 0 nome de programa na instruqao report. (Altere _ 0200a
para 0200b na linha 1.)
19. Selecione as linhas 3 a 5. (Cologue 0 cursor na linha 3. Pressione 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. (Pres-
sione 0 batao Copy To Buffer na barra de ferramentas Application.)
.,
DIA UEUPRiMEIRDPRDGRAlIA EM ABAP/4 J 91
.. w w _ _ . w_ .... .... e-"="....,=-....",......,.....-!'"""I-_......._........-.......--_........._...................r-..-...........- .........._ ....,.......,..-.............---.,......,.......,......,.......,......,.................._ ........
,
i ,i'"
};."': ;-
or'
90 I APRENDA EM 21 OJAS
I
21. Cole 0 bloco que voce acabou de copiar no final do seu prcgrama.
(Coloque 0 cursor na Iinha 9 e pressione 0 borao Insert From Buffer
na barra de ferramentas Applicarion.)
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 0 bordo Undo na barra de
[erramentas Applicarion.)
24. Digite 0 seguinte c6digo nas Iinhas 12 a 14. Comece cada Iinha na
coluna 1.
if sy-dbcnt > O.
write : I sy-obcnt , ' records found' ,
endif.
25. Automaricamente fixe a endentacao, escolhendo 0 caminho de menu
Program- > Pretty Printer.
26. Salve seu programa. (Pressione 0 botso Save.)
27. Retcme para 0 ABAP/4 Editor: Initial -Screen e documente seu
programa. (Pressione 0 batao Back na barra de ferramentas Standard.
Escolh a 0 bo tao de opcao Documentation. Pressione 0 bouo
Change.)
28. Salve sua document acao e ret ome para editar 0 codigo-fonte. (Pres-
sione 0 botao Save. Pressione 0 botao Back. Escolha 0 botao de
Source Code. Digite 0200b no campo Program. Pressione 0
bo tao - pushbutton - Change.)
29. Exi ba as componentes cia estrutura SYST clando urn clique dup lo em
urn campo sy. (De urn clique duplo na palavra sy-subrc na linh a 6. A
estrutura SYSTeexibida.)
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 . Digire
ztxlfal no campo Find. Pressione 0 bo tao de From Line.
Pressione 0 botao Continue.)
32. Repita a pesquisa, localizando cada ocorrencia sucessiva ate que voce
encontre todas elas. (Pressione 0 batao Find Next repetidament e ate
a mensagem "St ring wri te not found" aparecer na barra de status na
parte inferior da janela.)
33. Adicione a nome de tabela zt x'lfal ainstrucfo tabl es. (Alterando a
instrucao de tabelas, de modo que e1a exiba tables: ztx'l tef ,
zl xlfbJ.) ,
34. Substitua todas as ocorrencias cia s tring zt xlfal nas linhas 10 e 11
com a string ztxlfbl utilizando a Search/ Replace. (Culoque
o cursor na linha 10. Press ione 0 borso Select. Coloque 0 cursor na linha
11. Press ioneo botao Select. As linhas IDe 11agoraesno marcadas como
urn bloco em verrnelho. Pressione 0 botao Find.. A tela Search/Replace
eexibida. Digite ztxl fal no campo Find. Pacauma marca de selecao na
caixa de selecao Replace By. Digire ztxl fbl no campo Replace By.
Pressione 0 botao Continue. A tela ABAP/ 4 Editor: Edit Program e
exibida. Pressione 0 botec No Confirmati on. Todas as ocorrencias
ciast ring dentro do bloco marcado sao substitufdas.)
35. Utilize urna teela de funcac para salvar seu programa e outra tecla de
funlJao para execun-la. (Pressione F I t. Pre ssione F8.)
36. Salve a saida de lista para urn arquivo em seu disco rigido escolhendo
o carninho de menu List - c-Save- > Fi le. Utilize formate nao conver-
tido.
37. Exiba sua saida descarregada ut ilizando 0 Bloeo de N ota s.
38. Retorne para editar seu codigo. (Pressione 0 botao Back. )
39. Faca download de seuprograrna para 0 arquivo c: \ temp\ 0200b. tx t.
(Escolha 0 caminho de menu Utilities- c-Download. A tela Transfer
to a Local File e exibida. Digite c: \ t emp\ 0200b. txt no campo File
Name. Pressione 0 botao OK. A mensagem "277 bytes tr ansferred"
aparece na barra de status na parte inferior da jane1a.)
40. Edite seu programa depois de fazer download ut ilizando 0 Bloco de
Notas. Adic ione urn comentario de linha inteira depois da inst rucao
de relat6rio com seu no me nele . (Insira uma nova Iinha .depois cia
insrructo report: *Created by Seu nome.)
41. Digite 0 seguinte comentario no final da primeira instrucio sel ect: II
read all records from table ztxl fal.
42. No Bloco de Netas, salve seu programa modificado em disco.
43. Carregue-o, substituindo 0 programa 02QOb. (Alterne para sua
tela ABAP/4 Editor: Edit Program 0200b. Escolha 0 caminho de
menu Utilities->Upload. A tela Import Local Fil e e exibida. No
campo File Name, digite c: \ t emp\ 0200b. txt . Pressione 0 botao
OK.)
44. Salve 0 programa carregado. (Pressione 0 batao Save.)
45. Imprima seu programa. (Pressione 0 botao Print na barra de ferra-
mentas Standard. A tela Print Paramet ers eexibida. Ce rt ifique-se de
que a caixa de Print Immed. est a at ivada. Pressione 0 botao
Print . Sua saida eenviada para a impressora e voce eret omado para a
tela ABAP/4 Edi tor: Edit Program.)
- ---
SAioA
92 APRENOA EM21 DIAS ABAP/4
46. Execute seu programa e imprimaa safda. (Escolha 0 caminho de menu
Program->Execute. A safda de list a eexibida. Pressione 0 botjio Print
na barra de ferramentas Standard. A tela Print Screen e exibida.
Ce rt ifi que-se de que a caixa de selecao Print Immed. esta ativada.
Pressione 0 bene Print . Voce acaba voltando para a safda de Iista.)
47. Retome para editar programa 0200b e salve uma versao dele no
banco de dados Versions. (Pressione 0 botao Back para retornar para
a tela ABAP/4 Editor: Edit Program. Escolha 0 caminho de menu
Program->Generate Version.)
48. Substirua todas as ocorrenc ias de ztxlfbl com ztxlfc3. (Pressione 0
boeo Find. A tela Search/Replace eexibida. 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. Pressione 0 botao No Confirmation. Todas as ocorrencias da
string sao substituidas. Pressione 0 batao Save. Pressione a batao Back.
Voce eret ornado para a tela ABAP/4 Editor: Edit Program.)
49 . Salve suas alreracoes. (Pressione 0 botao Save.)
50. Retorne ao editor t ela inicial e compare as duas vers6es. (Pressione 0
botao Back. A ABAP/ 4 Editor: Initial Screen eexibida. Escolha 0
caminho de me nu Urilities -c-Version management. A tela Vers ions
Of Object 0200b Of Type REPS eexibida. Eaca uma marca de
selecao na caixa de selecao Version 00001. Pressione 0 bor ao Com-
pare na barra de ferramentas Application. A tela Compare Programs:
All eexibida. Role para baixo para visualizar as diferencas.)
51. Recu pere a versac original. (Pressione 0 botao Back. A tela Versions
Of Object' 0200b Of Type REPS i exibida. Remova a marca de
selecso da caixa de selecao Act. Pressione 0 bono Retrieve na barra
de [err amentas Application (0 sistema nao oferece uma resposta).
Pressione 0 bon o Back. A tela Restore Version e exibida. Pressione
o botao Yes. A tela Versions Of Object e 0200b Of Type REPS i
exibida. Pressione 0 bo eso Back. A ABAP/4 Editor: Initial Screen e
exibida.)
52. Edite seu programa e marque as ulrimas tres Iinhas como urn bloco.
(Pressione 0 bono Change. A tela ABAP/4 Editor: Edit Program i
exibida . Colcque 0 cursor na linha 13. Pressione 0 botao Select. A
linha 13 torna-se vermelha. Coloque 0 cursor na linha 15. Pressione
o botao Select. 0 bloco emarcado em vermelho.)
53. Comente 0 bloco utilizando 0 caminho de menu Block/Buffer->In-
sert Comment ".
54. Marque as ultimas tres linhas como urn bloco (veja 0 passo 51) .
D1A 7:SEU PRIMEIRO PROGRAMA EM AIIAP/4 93
55. Remova os comentarios utilizando 0 caminho de menu Block!
Buffer-c-Delete Comment ::-.
fxerdcios de ... 6.l.1o",- _
1. Escreva urn programa que recupere todas as linhas da tabela ztxlfbi
onde 0 codigo de empresa eigual ou maier que 3000. 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 pelo mimero de fsbricante em ordem desce nden te. (Utilize a
ajuda Fl para localizar a sintaxe correta.) Atribua nome a seu pro-
grama e0201. Urn exemplo de como sua saida deve aparecer e
mostrado a seguir.
1000 Y9
1000 YB
1000 Y6
2000 V9
2. Copie 0 progl'ama zty0202 para e02D2 (a listagem aparece a
seguir). Ele nac produz qualquer saida. Localize 0 bugnele 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 write / ' no records found'.
6 endt f.
7 write / ztxlfal-1ifnr.
B endsel ect ,
3. Copie 0 programa zty0203 para e02Q3 (a list agem aparece a
seguir) . Ele contem urn erro de sintaxe e urn bug. Corrija 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 > ' 1050' .
4 write / 1i fnr .
5 endse1ect .
4. Copie 0 programa zty0204 para e0204 (a listagem aparece a
seguir) . A safdaestd incorreta. Olhe a saida, descubra 0 que ha de
errado e corrija 0 programa.
1 report zty0204.
2 tables ztxlfal.
3 select'" from ztxlfal where 1ifnr > ' 0000001050'.
4 write I ztxlfal-1ifnr.
94 m END> EN 21 DIAS Am"
5 ends! 1ect
6 if sy-dbcnt <:> O.
7 write I 'no records f ound' .
8 endH .
5. Copie 0 programa zt y020S para e02DS (a listagem apare ce a
segui r}. A safda esta incorreta. Exami ne a safda, desc ubra 0 que ha de
errado e corrija 0 programa.
1 report zt y020S.
2 tables zt xl fal .
3 setect ... fromztxlfal wh ere lHnr :> ' 0000001050' .
4 endselec t.
5 write / ztx lfal-l ifnr.
6 i f sy- subrc <> O.
7 writ e I ' no records found' .
B endi f.
6. Copie a programa zty0206 para - e0206 (a listagem aparec! a
seguir). Simpl ifiqu e 0 programs removendo 0 codigc desnecessario
e palavras inuteis.
1 report 2t y0206.
2 tables : ztx'lf al , ztxl 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 -namel.
7 enese1ect .
8 if sy- subrc <> 0 or sy-dbcnt .. O.
9 write / ' no records f ound i n ztxl fa l" ,
10 endif.
11 ul t ne.
12 set ect ... f rom ztxl fbl int o ea .
13 write / ee- Itfnr- .
14 write wa-bukrs .
15 encsetect ,
16 if sy-subrc <> O.
17 write I 'no record s found'.
18 endi f .
7. Copie 0 prog rama zty0207 para e0207 (a Iisragem aparece a
seguir). Ele contem tanto urn erro de sintaxe como urn erro de
programacao. Descubra 0 que hi de errado e corrija 0 programa. A
safda deve exibir urn un ico registro (fabricance 1000) utili zan do a
est rurura (construct) de programacfo mais eficiente.
1 report zty0207.
2 ta bl es zt xlfal.
3 sele ct single '" from ztxlfal where lifnr > ' 0000001000 ' .
4 write I ztxlfal -l1fnr.
5 endsetect
6 if sv- suer c <> O.
7 writ e I ' no records f ound' .
8 endi f.
I
L
oData Didionary, Parte 1
Objetivos do capitulo
Depois de coinpletar esse capitulo. voc e devers set: capaz de:
Definir as diferencas ent re tabelas transparente, de pool e de cluster
Criar dominies, elementos de dados e tabelas transparentes no Data
Dictionary
Crier ajuda Fl para os campos de uma tabela e criar vinculos de
hipertexto dentr o ciaajuda F l
Utilizar os qua tro navegadores de clades forneeidos pela SAP para
visu alizar e modificar dados dentro de tabelas
Oe.scobriodo oiveis de versoo do R/3
NOVO.... H6 muitas versees - tombern chemodas niveis de versec - do sistema R!3
TEUD '" em u t i l i z a ~ 6 a nos dies de ho]e. A verscc 3.0 foi a primeira, mas desde suo
introdu i)co, a SAP tcmbem lcncou as versoes 3.0 a 3.Of, 3.1 g, 3.1 h e 4.00 0 4.0c . Voce
pode determiner 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 di fer encss deva ser menor com referencia
aos temas abordados aqui, algumas podem causar confu seo au most rar infer-
hllpJlwww.ccmpl1$. com.br

96 APRE MDA EM 21 DIAl
DlA3:0DATA DlaJONARY, PARTEI 97
Explorando os tipos de tabelas em R/3
No R/3 ha tres tipos de tabela: t abelas t ransparent es, de pool e t abelas de
cluster, Elas sao mos t radas na Figura 3,1.
",b.le>T9 ",b."'T9
ITlJ ITT]
Moo"" , ..bel", """"-A"'belode bo",,"---- .o.q......."'llelcl.> ""
"" R/3, m<>' "p' "'''' do dod<l. t,,,,' R/3. """.0 Iab.le> ""
u"'" '"be'a "" DOIC. """' . d;IG<. nl. booc:"d. dod... .
At. Ichb. "" IVJpode m nii me... d. C<lmp<>< d,I,,.,,,.. At. ",bel", I'", pole>
"" hila I., ",,"'pc" d. a' <''''PG.lim .,.,.,. d,I., ,.. """"" ..."'" e"""
e..... . p<imO';" <!G IO bela ODIC do IVJ ",;",oM ,m """''''''
.", 0GnI"", " ' "' V"c1. <6<> .......
..""' hon..........I.
A", bolo<lcbonco d. dodo, ,.",.
'''' ' ''''''''''''''
",.""0 _ '0 de c<l/'I'P<>1

0 "' belc> DOICIVJ
NOVO Umo tobeio transporente no dlclcncrlo fern relocionomento um-poro-um com
TERMO '" umo tcbelc no ba nco de dod os. Sua estruturo no Dcto Dictionary do R/3
cor respond e a uma unicc fabelo de ba nco de dodos. Para coda defjnii;ao de tcbelo
fronsparente no dlcloncrlo, he umo tobela ossociodo no banco de dodos. Atcbelc de
banco de dodos tem a mesmo nome, a mesmo numerc de compos e as compos tern as
rnesmos na mes que a deflnlccc de fobela do R/ 3. Quando examiner 0 de finiC;ao de umo
tobelo tronsporente do R/3, voce pode oche r que estc olhando par a a proprio fabela de
banco de dodo s.
NOVO... As tab elas trcnsporentes sec multo mois comuns do que as tobelos de pool cu
Tn.MO de duster. Elcs sao utilizad os pa ra a rmazenor dodos de oplicotivo. Os dodos
de cplicctivc sao os dc dos-mestres ou cs dodos de frc nsccoo ufilizodos porum cpllcotlvo.
Um exemplo de dod os-mestres ea tobelo de fobriconfes (chomoda dados-mestres de
fa briconfes) ou a tobe lo de clientes (chamoda dados-mestres de di entes). Um exemplo
de dodos de trcoscceo sec as pedidos feitos pelcs cllentes ou as ped idos enviados para
as Icbricont es.
As tabe1as rransparent es sao provavelmente 0 unico tip o de tabela que
voce criara.. As t abelas de pool e de cluster nao sao normalmente utilizadas para
armazenar dados de aplicativo mas, em vez disSOl armazenam dados de sistema,
como as informacoes de configu racao de sist ema ou dados esrat lsticos e
historiccs . .
FigurQ 3 1
as fr!s tipos de tobelo
no DataDictionary do
R/3. Tob./o
Tobe los transporentes
1. Va pa ra 0 menu p r i nci p al e escol ha 0 ca minho de menu
Tools->Find->Search Int erface. A tela Search Interface: Request
aparece.
2. Escolha 0 borao de opcao RELN.
3. Pressione 0 botao Choose na bar ra de ferramemas Applic atio n. A t ela
Find Release Notes eexibida.
4. Pressione 0 botso Complete List. A tela Display St ruc tu re: Complete
List of Release NOtes eexibida.
5. De 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.
Muites cble tcs de desenvclvlmento ufilizodos como exemples 0 0 le ngo
de fodo esfe livre (como tobelos, dominios e elementos de dodos) sao
bosecdos em oo jetcs reo's de desenvolvlmento no sfstemc R/3. Os
objetos de exernplo tereo a mesmo nome que as obletos do R/3 reots,
mas eles serco prefixodos com ztx. Par exemplc, 1f al e umo tabelo
real em R/3 e a fobela de exemplo neste livre ezt xlfal.
macoes neste livre como incorretas. Por exemplo, caminhos de menu podem
ser alterados ent re os nfveis de versao. Sempre que possfvel, as di ferencas que
pod em causar confusao foram observadas neste texto. Entret ant o, se a funcio-
nalidade em seu sistema parec e diferir da descrit a aqui, voc e pode cons ultar as
no t as de versao do R/3 , disponfveis online, para det erminar se a di ferenca pode
ser atribulda ao nivel de versa-a. Para acessar as notas devcrsao, utilize 0 seguinte
proc edimento:
lnicie a ScreenCom "How to Display R/3Release Notes" ogara.
Para exibir as notas de versao do R/3:
Como uma revisao, por favor espere alguns minut os e releia a sec;ao no Dia 2
intirulada "Introduzindo o R/3 Data Di ctionary" nesse mement o.
Os objetcs Data Dictionary sao utili zados na mai or ia do s programas
ABAP/4. A natureza do entrosamentc dos pro gramas em ABAP/4 e objeto s
DDIC tornam 0 conhecimento profu nda do Data Di ctionary do R/3 uma
habilidade essencial de programacao. Port emo, comecand o com esce capitulo,
voce aprendera a criar objeros DDIC como tabelas, elementos d e daclcs e
domfnios.
Aproundando-se no R/3 Data Dictionary
98 "RENDA EM21 DIAl ABAP/4
DIUDDATA DICTIDNARY, PAR" 1 99
Umo tobe/o de pool no R/3 tem um relociono mento muitos- poro- um com umo
Quondo exomino umo tcbelc de pool no R/3, voce ve umo descdccc de umo
.,
ri
I'
-:
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 individuais de campo
sao as vezes por tabela via configuracces nas tab elas de personali-
zac;ao.
Fig ura 3 2
As lobe/os de pool
femum
re/ocionome"to
mvitos-poro-um com
pools d" tcbelo. .
lOYD Il..
illitO " tcbelo no banco de dodos [vejo as Figuros 3.1 e 3.2). Pore ume tcbelc no
bonco de dodos, ha muitos tabelos no Dota Oidionory do R/3. A tobelo no bonco de
dodos tern um nome diferente do dos tcbelcs no ODIC, tem um ncrnerc de campos
diferente e os compos tornbem tem nomes dlferentes. As tobelos de pool sao umo estruturo
(construct) propriet6rio do SAP.
NOYO Il..
TfUO" fobelo. Entretonto, no banco de dodos, elc e onnozenodo junto com outros
tcbelcs de pool em umo cntcc tobelo chomodo pool de tobelos. Urnpool de tobe los e
umo tobelc de banco de dodos com umo estruturo especicl que permite que 05 dodos
de muitos tobelos do R/3sejom ormozenodos dentro dele. Ele pode openos ormo zenor
tcbelcs de pool.
Tanto as tabelas de pool como as de cluste r tern relacionamentos rnuieos-
para-urn com tabelas de banco de dados . As duas podem aparecer como muitas
tabelas em R/3, mas elas sao armazenadas 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 caracterf srica dos dados que des armazenam e sersc
expli cadas nas a seguir.
Pools de to bela e labelaLd",e,-,p""o ",-o ",-,- ' _
o R/3 utiliza pools de tabela paraarmazenar um grande numero (dezenas
a milhares} de tab elas muit o pequenas (aproximadamenre de 10 a 100 linhas
cada um a}. Os pools de tab ela reduzem a quantidade de recurs os de banco de
dados necessaries quando mui ras tabelas pequenas tern de ser abertas ao mesmo
tempo. A SAP as uriliza para dados de sist ema. Voce pode criar urn pool de
tab elas se precisar criar cenrenas de pequenas tabelas que armazenam, cada uma,
apenas algumas linhas de dados. Para impl ernentar essaspequenas tabelascomo
tabelas de pool, voce primeiro cria a de urn pool de tabelas no R/3 para
armazenar todas elas. Quando ativada, uma unica tabe1a associada (0 pool de
tabelas) sera criada no 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 tabelas (veja a Figura 3.2).
As tab elas de pool sao principalmenre utilizadas pelo SAP para armazenar
dados personalizados.
NOYD .... Quando umo empresa lnstclc quolquer sistema grande, ele normo lmente e
JrutO personolizodo de olgumo moneirn perc encontror 05 necess idades cniccs do
empreso . No R/3, esso perscncluccec efeila via tobelos de personolizoo. As tcbelos
de personolizoc;oo contem codigo$, volidoc;oes de compo, intervolos de numero e
parametros que olterom a moneiro como os op!icotivos do. R/3 se comportom.
;
I
I
j
I
Durante a implemenracic inicial do sistema os dados nas tabelas de
personalizacao sao configurados par urn analista fun cional . Esse profissional
nonnalmente tera experiencia relacionada com a area de ne g6cio sendo imple-
rnentado e recebera treinarnento extenso na configuracso de urn siste ma R/3.
Cluste rs de tobel a e tobelos de cluster
HOYO .... Umo tobe/o de cluster e semelhante a umo tcbelc de pool. Elo tem um
mM.O " relocionomento muitos-porn-um com umo tc belc no banco de dodos. Muifos
tobelos de cluster 560 ormozenodos em umc unico tobelo no ba nco de dodos chomodo
d uster de tobe /os.
Um cluster de tobe/os esemelhonte 0 um poo l de tcbelos. Ele ormozena muitos
tobelos dentro dele. Tcdos cs tobe los que ele ormozeno 560 tobelos de cluster.
Como as tabelas de pool , as de cluster sao out ra estrutura (construct)
proprietaria ciaSAP. Elas sao utilizadas para armazenar clados de algumas (aproxi-
madamente de 2 a 10) tabelas muito grandes. As tabelas decluster s.eriamutilizadas
quando essas tabelas tivessem uma parte de suas chaves primarias em comum e se
as dados nessas tabelas fossem to dos acessados simultaneamente. as dados sao
armazenados logicamente como rnostrado na Figura 3.3.
APREIiDA EM 21 OIAS ABAP/4.
101 OIA 3:0DATA DlGlONARV, PARTE 1
I COpa s Cluster table
I Change document Items
Field name Key Typa l engtll
IMANDANT 171 CLNT 13
IOBJECTCLAS [7 1CHAR r-w-
IOBJECTID 171 CHAR r--.w
ICHANGENR 171 CHAR r-w-
ITABNAME 171 CHAR r-w-
ITA'KEY 171 CHAR 170
IFNAME 171 CHAR 110
ICHNGIND 171 CHAR J1
ITEXT_CASE 171 CHAR 11"
IUNIT.OLO 17 fUNiTrs
I R
ICUKY_NEW [71 CUKY 15
IVALUE..NEW 171 CHAR J2i4
IVALUE_OLD [IICHAR J2i4
.:
CDClS
Tabla Cluster
Change document header
Fieldname.
IMANDANT
IOBJECTCLAS
IOBJECTlO
ICHANGENR
IPAGENO
ITI MESTMP
IPAGElG
IVARDATA
Field nama
I Change document header
I CDHDR Cluster !able
As fobe/os cdhdr e
cdpos fern os
primeiros quatro
campos de creve
primaria em comum
e sempre sao
ccesscoos iuntos e
enlao s60
ormozenodos no
cdcls de duslerde
lobe/os.
Rest ric;6es nos tob.elo.s...de..p.ool e de cluster
As t abelas de pool e de cluster sao normalmente utilizadas somente pela SAP
e njio utilizadas por clien tes, pr ovavelrnente pa r caus a do format o proprietario
dessas tabelas denrro do banco de dados e p or causa das resrricoes tecni cas
colocadas scbre sua utilizacao dentro de progra mas ABAP/4. Em uma tabe la
de pool au de clus-ter:
Fi g u r a 3 4
03
Detolhe do pedldo
do tobelc
PK

1000 01 ITEMl DATA


1000 02 ITEM2DATA
2000 01 ITEM1DATA
2 ITEM20ATA
2000 03 ITEM30ATA
3000 01 ITEM1DATA
,
J
ITEM1DATA
ITEM10ATA
ITEM10ATA
I -'-
Variable lenght row....... r .......
Order Heoder Dote 01 02 ITEM20ATA
Order Heeeer Dote 01 02 fTEM20ATA
Order Header Data 01
1000 Header Data
2000 Hec er Data
3000 Header Dolo
Ccbeco lhc do pedido
do tobelo
PK
o
1000
2000
3000
0. c/adm0P'l"'''''''
no R{.!"""", so
.... . ", .".. '- j
IObolo, .. I I

O, do<Io> ..,.I o
0"""'.""'"

M"

Os clusters de tabela contem menos tabelas que as pools de tabela e,
dif erenre dos pools de tabela, a chave primaria 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 chave primaria que elas tern em comum.
As sim, quando uma linha elida de qualquer uma das t abelas no cluster, codas
as linhas relacionadas em todas as t abelas de clust er t ambem sao recuperadas,
mas apenas uma {mica E/S enecessaria.
Urn cluster evantajoso no caso em que as clados sao acessados a partir
de multiples tabelas simultaneamente e essas tabelas t ern pelo menos urn de
seus campos de chave primaria em comum. As t abel as de cluster reduzem 0
numero de leituras do banco de dad os e assim melhoram 0 desempenho.
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 campo pad rao de sistema
pageno para assegurar que cada linha e(mica.
Como outro exemplo, suponha que os dados de cabecalho do 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 mi merc do pedido.
Tanto 0 cabecalho como os itens poderiam ser armazenados em uma (mica
tabela de clus ter porque 0 primeiro campo de suas chaves primarias ea mesmo.
Quando implementado como urn cluster, se uma linha de cabecalho for lida,
todas as linhas de item para de tambem serao lidas porgue 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 t ambern serac lidos, porque eles sao ar-
mazenados em uma (mica Iinha.
Figurg 3 3
Os clusters de lobe/a
ormozenom dodos de
vc rtes lobe/ os
bcseocos nos compos
de chove prim6rio que
e/os fern em comum.
100
i
,
I

-.v
v v.v

w w. w
--
w.tW.
w:ww __ _ 'W '&_
-
102 " m DA EM 21 DlASAWl'
DlA 3:0OATA OIITIONARY, PARTE1 103
Par causa dessas restri coes nas tabel as de pool e de cluster e par causa de
sua utilidade limitada, est e livre concentra-se na criacao e utilizacao de tabel as
transparentes. A criacao de tabelas de pool e de cluster nao eabordada .
I'

:
Zphon.
loxlipo: cnor
comp.: 12
descreve ccrcct ertsuccs
tecnkc s. (p. ex.,
lipo e com primen!o
dos dodos)
Domfnio
de compo
o online {ejude Fl)
Zphonew
Zphonel
Zphoneh
R6tulo:
ROtu\o: numern comerci ol
ROfulo: telelone ridenciol
Elementos de dodos
phonew
phonef
phoneh
HI
0 "
I
Compo
I
"
Eo cc mcostc de um
"
Elemento de dod os
cont em r6t ulos
e documentocc
,
-, de urn
,
Domlnio
Compos de Cu stome r Tobie

Fjgurg 3 6
Um exemplo de
praiela utilizondo
tobelos, ele mentos
de dodos e domlnios.
Figura 3 5
Aslobe/os 560
composlos de
compos, que 560
compostos de
elementos de dodos,
que par suo vaz560
compostos de
dominios.
a usa de tobelcs de pool e de cluster pode impedir que suo empreso
utilize plenomente a s ferromentos de relat6rios independentes se eics
leem tabelas diretoment e do bonco de dodo s, porque as tabelos de
poo l e de closter-tern urn formato prop riet6rio do SAP. Se suo empreso
quer utilizer ferromentos indepe nde ntes desse ttpo, voce pe de querer
buseor olternotlvos anles de crier tobelas de pool au de duster.
Os indices secundarios Da D podem ser criados.
Voce: DaD pede utilizar as estrururas (constructs) do ABAP/4 sel ect
dt sti net ou group by.
Voce DaD pede ut ilizar SQL nati vo.
Voce nac pode especifi car no mes de campo depois cia cldus ula or der
by. A unica variacao permitida eorde r by pr i mary key.
(Cuicfudo
Explorando componentes de tabeloL- _
Voce ja sabe a que as tabe las transparentes sao e as dif erencas entre tabel as
transparentes, tabelas de pool e de cluster. Agora, voc e apr enderd as compo-
nentes que sao necessaries para criar tabelas.
NOVO.... Umo tobelo ecompostc de campos. Para crier um compo voce precise de um
ifRMO" elemento de dodos . 0 elementa de dodos contem os rctvlcs de ccmpo e a
docwnentccoc online [tcmbern chcmcdc ojuda FJ) para a ca mpo. Ele e puromente
descritivo; contemas ccrccterlst'ccs sementiccs para 0 compo, tcmbemconhecidas como
"contexte do neg6do"' . Os rotulos que voce oferece dent ro de um elemento de dod os
seroo exlbidos no tela 00 lodo de um compo de entrada. 0 elemento de dodos tcmbern
contem docomentccec que e exlbidc quando a vsucric pede c judc nesse compo
pressionand o a tedo Fl .
NOYO Umo defini'ioo do eleme nte de dodos um dom;nio (veia a Figura 3.5). 0
HRMO" daminio contem a coraderfstico tecnco de um ca mpo, como 0 comprimenta
do compo e 0 tipo de dado.
O s domtnios e as elementos de da do s sao reutiliz aveis. Urn domfnio
po de ser utilizado em mais de urn elemento de dados, e urn elemento de
dados pode ser utilizado em mais de urn campo e em mais de uma tabela.
Par exemplo, imagine que voce' precise pr ojet ar uma t abela de infor-
macoes de cliente chamada zcust que deve canter os nti meros de telefone
ccmercial, fax e residencial (veja a Figura 3.6) .
t
Par a crier urn campo, voce normalmente inicia criando urn dominic 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 urn 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 numeros de
telefone, como fax ou numeros de tel efone residencial.
Dep ois de criar 0 domfni o para armazenar a descricao purament e tecnica
de urn campo, voce entac cria urn elemento de dados para armazenar a s
atr ibutos descritivos do campo . N o element o de clades, voce deve digitar 0
no me de urn domini c par a dar-Ihe a caracterfst ica t ecnica . Entao, voce insere
os r6tulos e a documentacto (ajuda F1 ) para descr ever as dados que voce
armazenara. N esse exemplo, voce provavelmence criaria nes elementos de
dudes, urn pa ra cada numero de telef one resid encial, comercial e fax. Em cada
elemento de dados, voce di gitaria rorulos de campo descrevendo 0 tipo de
numero de telefone que voce arma zenara co m ele e a ajuda Fl pa ra a usuario
final.
I
!
-
--
-

w_
-

---
--
w _
-

--
---
-
-- --
- -
...,
104 APiENOA EM 21 OIAI ABAP"
OIuoomOlmOHARY,PARTE l 105
Tabela 3.1 Convencoes de de nome para tobe los, compos, eleme ntos
de dod os e do minios criodos pelo cli ente
As t abelas, elementos de dados e dominies criados no site de cliente devem
seguir convenc oes de atribuicjo de nome da SAP para objetos de client e. Est es
estao delineados na Tabela 3.1.
Convencoes de ctribuicco de nome para tabel as
e seus componentes
Prlmeiro eereete re
permitido
Comprimento
max. d e nome
Tipo de objeto
Po r exemplo, imagine que voce deseja criar uma nova tabe la que conrem
informacoes adicionais de fabri cante. Quando voce projeta a tabela, voce deve
associar as fabricantes em sua tabel a com esses na tab eia de SAP.
Em sua tab ela, erie uma chave primdria cont endo 0 mimero de fabricant e.
Utilize 0 elemento de dados exist ent e para criar seu campo. As duas rabelas
estjo agora chaveadas no campo de numerc de fabricante de SAP urilizandc
os mesmos elementos de dados e do mlnios. Se a SAP alterar 0 tipo de dado ou
o comprimento do seu camp?, 0 seu mudara aut ornaticament e.
Te ndo criado as elementos de dados, voce agora pode criar a tabela, Voce
pod eria criar treScamp os de ndmero de telefone na tab ela {residencial, comer-
cial e fax) e arribuir 0 elemento de dados correspondence a cada campo. Urn
eleme nt o de dados eat ribufd o a cada campo. 1550 oferece informacoes descri-
t ivas do campo do elemento de dados e informacoes tecnicas do do mi nic a que
e1e faz referencia. Quando 0 campo eutilizado em uma tela, ele obtem urn
rotulo e a documentacao de ajuda Fl do elemen to de dados e seu comprimento
e ripo de dado formam 0 domini c deruro do elemeneo de dadcs .
Em outre exemplo, voce pode pre cisar armazenar urn nome da pes soa em
tres tabelas diferentes: tab elas de clientes, [abricantes e empregados. Na tabela
de clientes, voce quer armazenar urn nome de cliente: na tabe1a de fabricante
urn nome de fabrican te e na t abela de empregado urn nome de empregado. Par
isso, e uma boa ideia dar 0 mes mo ripe de dado e comprimento para todos as
campos de nome de pessoa: voce pode criar urn unico domlnio generico de
nome de pessoa, par exemplo zper sname. Enrao voce pode criar urn eleme nto
de dados para carla urilizacfo de neg6ci o de urn nome da pessoa: para 0 nome
de clienr e, 0 nome de fabricanre e 0 nome de emprega do. Dentro de cada
elemento de dados voce referencia seu dominic zpersname para dar a t odos eles
a mesma caracterf srica. Voce entao pode urilizar esses elementos de dados para
criar camp os denero de cada tab ela.
Criando uma tabela transparente e seus
.c.omp.onlJ;; elLnutJ;;: e.:.s _
Nas sec;6es a seguir, voce criara dominios, element os de dado s e, por fim, sua
primeira t abela transparent e - ela sera uma versao escalada para baixo da
tabela-mestre de fabricant e fornecida pela SAP identificada Hal.
Todos os nomes t ern urn maximo de 10 caracteres de comprimenro.
Os nomes de todas as tabelas, dominios e element os de dados que voce
cria devem iniciar com 0 caractere y ou z, Voce nao pode util izar qualquer outro
caractere no comeco; todos as outros sao reservados peia SAP. 0 sistema RJ3
imp oe essa convencio: voce obterd uma mensagem de errc se tentar criar urn
c bjeto que t ern urn nome que nac se adapte a essas convencoes.
Os nom es de campo podem comecar com qual quer caractere. Entretanto,
cert as palavras sao reservadas e njio podem ser utilizadas como names de
campo. A tabela de DDIC t rese ccntem a lis ra completa das palavras
vadas. 0 conteudo de t rese pode ser exibido utilizando 0 procedimen ro do
Dia 2 na seiSao intitul ada "Exib indo os clados na tabela" .
Mante nd o as caracterfsticas tecnicos d os ca mpos
Se voce precisa alterar 0 comprimento do camp o depois que criou uma tabela,
voce apenas precisa altera-lo no dominio. Se 0 dominic eutilizado em mais de
urna rabela, a alteracao eaut omat icament e propagada para todos os campos que
utilizam esse dominio. "
Par exemplo, se os analist 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 at ivar sua al-
reracio, a s cornprimentos de rodc s as campos de nome 'baseados nesse
domin ic (nas tabelas de clienre, de fabricanre e de empregado) tambem
mudarao.
Determinando quando criar ou reul ilizar domini os
e elementos de dodos
Cada sist ema R/3 vern com mais de 13.000 dominios preexist entes criados pe1a
SAP. Quando voce cria urn novO campo, voce deve decidir se cria urn novo
domini o ou reutiliza urn existente. Para tomar essa clecisao, detennine se a t ipo
au comprimemo de dados de seu campo deve ser dependeme de urn campo
existente da SAP. Se seu camp o precisa ser independent e, erie urn novo
dominio. Se seu camp o cleve ser depend ente, reuti lize urn dominio de SAP
existente. De forma similar, voc e deve reutilizar elementos de dados se seus
rotulos de campo e alt erarem quando a SAP alterar os de1a.
Tobelo
clemente de dodos
Domlnio
Compo
10
10
10
10
s, z
v, z
r , z
Quolquer ccrcctere
-_.
e.w w __
--
...
106 ",,"OA EM 21 OIAS ABAp/'
01'" ODATA DICTIONARY,PART1 107
Atjyo<; oo de objetos ODIC
Na abordagem bottom-up, voce primeiro cria as domini os, dep ois os
elemento s de dados e per fim a tabela.
Na abordagem t op-down, voce cria primeiro a tabela e depois cria os
elementos de dados e os dominies amedida que vo ce avanca.
A abordagem bottom-up emais intuitiva para 0 aluno iniciant e, mas rapida-
mente torna-se incomoda. A abordagem top-down emuito mais facil de utilizar
depois de voce se familiarizar urn pouco com a pr ocesso de de tabela. Par
essas razoes, demonstrarei as duas tecnicas, iniciando com bottom-up.
Quando ler as secoes a seguir , voc e primeiro aprendera sob re urn objeto
_ como um domi nic - e encao criara urn. Os objet os que voce criara sao
descriros na Tabe1a 3.2.
Lernbre-se, quand o crier qua lquer dos objetos neste livro, utili ze seu
handle ( - j como os primeiros tres cc rocteres do nome de cbjeto.
[Os corocte res representam seu hand le. 0 handle foi descrlto no
Ca pitulo 2, no secco intituloda "Introduzindo convencces de otrtbukec
de nome de progroma".)
Nee utilizeat x como os primeiros tres ccr ccteres. Se voce utilizer ztx,
sera muito difidl dete rminar quais 56 0 as seus cbjetcs.
Antes de oprender sabre objetos ODIC profundamente, voce deve sober sobre
otlvoceo de cbjetc. Aotivccco cplico-se a todos as cbjetos de dicion6rio.
MOVO ...
T,ijlO ,.

Para as prcpcsitos deste livre, porto do pressupostc qu e a sistema R/3
j6 noo armoze na quoisquer 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 seme-
lhante a tabela - - -Lfal . Utilize-a como uma referencia enquanto Ie esse
capftulo.)
Tabela 3.2 Os compos e suos coroeteristicos para a tabela - - -Ha l
Nome PK Nome Nome Tipo
de ca mpo de DE de OM de dado Comprimen10
mandt mandt
1ifnr x - 1i fnr " lifnr CHAR 10
namel -- - namel - -name CHAR 35
regio regi 0 - reg i 0 CHAR 3
1andl landl -land! CHAR 3
Esses names de campo e suas caracterlsticas tecnicas sao beseadcs em
campos reais da tabela Hal.
N60 altere as names mostrodos oclmo. Os exerclclcs mois adiante
neste livre contcrn com esses names de compo como mostrodo. Se
voce n60 utiliza esses names exctcs, as exerclclos sobseoueroe s nco
podem funcionar.
Como essa tabela contem cladas de aplicativo, ela deve ser dependence do
cliente. Portanto, 0 primeiro campo deve ser mandt. (Cansult e 0 Capitulo 1 se
voce precisar revisar as tabelas dependentes de cliente.)
criar tobelas
Hi duas abordagens que voce pode utilizar quando criar tabelas:
bottom-up
top-down
Depois de criar urn objero Data Dictionary, voce 0 ativara. Ativar urn
objeto esimples _ voce simp lesmente deve pres sionar 0 botao Active. 1550
alrera 0 st atu s do obj eto para ativo .
Urn objeto deve est ar ativo antes de pcder ser ud lizado. Por exernpl o, se
t ent ar utilizar urn e1emento de dados inativo 01.0 criar urn campo, voce obtera
uma mensagem dizendo que 0 elemento de dados nao exisce nem esra ativo.
Sua respos ta seria ativar 0 elemento de dados.
Se voc e altera urn objeto, deve ariva-lo novamente para as alreracoes
t ornarem-se efet ivas. Se voce salvar as alteracoes mas njio ativar 0 objero, os
objeros que se referem a ele nao "saberao" da
Descobrindo dominios
Ant es de realrnente criar urn domlnio, descreverei a tela que voce ut ilizara para
cris-lo.
Na Fi gura 3.7 esta a tela que voce utilizara para eriar urn dominio - a
t ela Dict ionary: 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 segu intes.
~ - T T w W
o
w
o
_ W W Yo W Woo W w. W W WWW.WWWi ~ ~ ~ --- - - --- - -
--- -- - - - - - - - - - - _ - - . . - - - - - - - = - " " = " ' " ~
,
108 ' '' EN D' EM 21 DIAl ,SAP/. DIUD"T' DiCTlONARY, PARm 109
Tabela 3.3 Tipos de dados comumente uflllzodos
Descr isao
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 pade canter epenes nurnencos
Tipo
Voce cleve sempre pressionor a tecla Enter depo is de preencher a
compo tipo de dodos. Pressionor Enter ceuso a clterccoo 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 ccixode selece o Lowercase
Letters cpcrecero .
CHAR
DEC
OATS
TIMS
INTI, INT1, INT4
NUMC
f.i.g..u.r.a 3 7
Atela DidionOlY:
Maintain Domain e
uti/Jzoda pora error
umdomfnic.
o campo Sho rt Text
o campo Shor t Text cont era uma descrlcac do dominic. 0 usuario final nunea
a vej ela e exibida apenas par a os desenvo lvedores. Voce a vera quando abrir
uma lista de dominies, como em uma pesquisa.
N esse campo , voce descrevera as tipcs de dados que voce quer que 0
dominic cont enha. Por exempl o, a descr icao de urn dominic de numero de
telefone reutilizavel pode ler "Nemero de telefone generico" ou "Ncrnero de
t elefone geral".
Adicionor a pclc vrc "dcrnlnic" no finol do descrtce c de texto curto e
redundonte e deve ser evltcdo. Porexemplo, 0 texto curto "Ncmero de
telefone de dominic qenericc" devero ser evttodc. Em vet dtssc, digite
"Ncme rc de telefone gene rico".
o campo Data Type
o campo Data Type especifica a representacao utilizada internamenre pelo
banco de cl ados par a arma zenar 0 valor desse campo. Para alguns ripos de dados,
e1e tambem determin 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 formatados com separadores em uma de saida de lista ou
quando sao exibidos na t ela. Na entrada, e1es rambern devem estar no formato
de data ou hera ou uma mensagem de erro eemitida para 0 usu ario.
Os tipos de dados mais comumente uti lizados sao iistados na Tabela 3.3.
Os campos Output Le ngth, Decimal Places e Lowercase
Letters
o campo Output Length indica 0 ntimero de bytes necessarie s para dar saida
ao campo para uma Iist a ou para uma t ela, incluindo virgulas , pont o 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 dat a earmazenada como oiro caracteres (sempre YYYYMMDD),
mas a comprimento de saida no dominic deve ser especificado como 10 para
permitir que dais separadorcs sejam inseridos. Se 0 campo Output Length
estiver em branco, seu valor automaticamente sera calculado pelo sistema
quando voce pressionar Ent er.
Para campos decimais, voce pode especificar 0 nume ro de decimais
cclocado no campo Decimal Places.
Os campos de caractere sao normalmente convertidos em letras maius-
culas antes de serem armazenados 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 ent ender a repre-
sentacio interna de caract ere ou campos imeiros. Ent retanto, a pos icjic do
ponto decimal nos campos decimais efrequentemente urn campo de confus6es,
por isso descrevemos esse assumo aqui.
Para campos de tipo DEC, 0 ponto decimal nao earmaze nado no banco de
dados. Sornente a parte numerica earmazenada; nao 0 decimal. Na saida, a
posicao do decimal edeterminada pelo valor que voce colocano campo Decimal
Places do dominic.
. Obtendo dccumentocco de SAP nos dominios
Hi muitos lugares para obter documentacao de SAP sobre as recursos de s
domfnios.
Se voce deseja ver a documentacao que descreve todos os ripos de dados
e suas utilizacces, coloque a cursor no campo Dat a Type e pressione Fl . Voce
vera uma caixa de dialogo camendo campos destacados. De urn clique nesses
campos destacados para mais detalhes.
Vo ce pode tambem consultar a ajuda da bibliot eca do R/3 para enconrrar
docu ment acao adicional sobre tipos de dados e outras propriedades do
domfnio, 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
biblioreca do R/3, A partir daf de urn clique nas seguintes guias: Basis Com-
ponen ts- > ABAP/ 4 Development Workbench- > ABAP/4 Di ctiona ry- > New
Developments In The ABAP/ 4 Dic tionary In Release 3.0.
Para ainda mais documentacdo sabre tipos de dcdos no dominic, de
dent ro do dominic escolha 0 caminho de menu Help->Extended help. Entao

.APRENDA 0 campo seja adequadamente exibido, voce deve especificar
urn comprimento de saida que inc1uaurn byte para 0 ponto decimal e outro
para cada separador de milhar que pos sa ser exibido. Entretanto, 0 sist ema
calculara 0 comp rimento de saida se voce simplesmente deixar em branco 0
campo Output Length e pressionar Enter. .
Criando um dominio
Nest a seciio, voce aprendera a abo rdagem bottom-up para criar urn domini c.
Inid e a ScreenCom "How to Crea te 0 Domai n" ogoro .
Execute esse pr ocedimento duas vezes para erial' os dominies '1; fnr
e namel. A ajuda com problemas comuns edada 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 Dictionary: Initial Screen . (Para chegar la a partir do
menu principal SAP, escolha 0 caminho de menu Tools->ABAP/4
Workbench, Development->ABAP/4 Dictionary.)
2. Digire 0 nome de dominio no campo Object Name.
3. Escolha 0 batao de 0PliaODomains.
4. Pressione 0 batao Create. Voce entac ve a tela Dictionary: Maintain
Domain. as campos contendo pontos de interrogacao sao campos
obrigatorios.
5. Digite uma descric ao do dominio no campo Short Tex t.
6, Preencha no campo Data Type. Voce pode 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 t empo salver e ativar 0 domfn io. A tela Create Object Catalog
Entry eexibida .
9. Pressione 0 botao Local O bject. Voce elevado de volt a atela Dic-
tionary: Maintain Domain,
10. Pressione 0 botao Back na barra de ferramenras Standard. 1550 0 leva
de volta para onde voce comecou nes se procedi mento, a t ela
Dictionary: Initial.
Problema
Nee posso criar
o dominio
Obtendo
mensa gem
Possivei s sint omas
Qu and o voce pressiona 0 botco
Creole, nodo ocontece.
Q uand o pressiana a ba tao
Creole, voceve a mensagem
"System change option
does not allow cha nges to SAP
objects".
Qua ndo pressiono 0 batao
Create, voce ve a me nsagem
" Enter occess key".
Q uan do presslonc a bct oc
Create, ve a mensogem
" You are not authorized to moke
cha nges".
Q uonda pressiono a botcc
Creole, voce ve a mensagem
"a lready exists".
"W: {calculate d output length is
sma ller than specified)."
"E: Value table doe s not exist."
01.&. 3: 0 DATA OlalONARY, PARTE 1
SolUliCO
Olhe no barro de status no porte
inferior do janelo e pressione 0
balao novomente. Epr cvcvel
que voce vera umo mensogem
cl.
Altere a name de dominio
para y au z.
Altere 0 name de domrnlo
pora inicior com y a u z.
Soltcito outcrizoccc de
de senvolvimento do sev
odministrodor de seguron<;a
o nome que voce digitou j6
existe no Data Didionary.
Escal ho urn nome de domfnio
diferente.
Deixe em bronco a campo
Output Length e pressione
Enter e depois Activate,
Delxe em bronco a campo
Vclve Table, presslone Ente r e
depois Activate.
111
I,

l
t
/
I
I
I
;
I
I

113 0143: 0DATA DI OlONAR'f, PARTE 1


A docornentcceo de elemento de dodos efrequentemente muilo util
para 0 progro mad or. l endo esse elude Fl , 0 progromodor pode
determiner 0 utilizo<;oo de neg6cio dos dodos, Pcrtcntc, voce sempre
deve crior ojuda Fl para 0 usu6rio otraves do batao Documentation.
Crianda um elemento de dodos
Nesta seCjao, voce aprendera a abordagem bott om-up para criar urn elemento
de dados.
Inicie a Screen Co m "Howto Creote a Data Element" ogora.
esse prccedi mento duas vezes para criar os elementos de dados
" . , i fnr e "' namel. A ajuda corn problemas comuns edada no diagnosrico
e solucj o de problemas que se segue. Se voce tiver problemas com qualquer urn
dos passes, nao se esqueca de consultar a Sclucac de pr oblemas.
Os campos Field Label e Header
A parte inferior da tela rnostrada na Figura 3.8 conrem quatTO campos de texto.
as prime iros eres sao rctulos de campo. Quando qualquer campo aparece em
uma tela (como urn campo de entrada em uma tela de entrada), urn dos campos
cur tos, medias au longos aparecerao aesquerda del e como urn rotulo de campo.
o programador escol he urn des ses r6tul os de campo quando ele cria uma t ela.
o conreudo do campo Header aparecera como urn cabecalho de coluna no
tapa das listas,
Se os campos que voce cria com esse elernentc de dados nao aparecerem
em quaisquer telas , desative a caixa de selecso Maint ain Field Labels e pressione
a teela Enter. Voce nao veri mais os campos Fie ld Label e Header. Voce tera
de pressionar Enter duas vezes para [azer a s campos desaparecerem se esses
campos contiverem valores.
A documentccdo de elementa de dodos
Depois que voc e salve 0 elemento de dados, urn bouo Documentation aparece
na barra de ferramentas Applicat ion, de modo que voce possa armaze nar texto
na forma livre. 0 usudrio ve esse t ext o quando solicita ajuda Flo Em outras
palavras , quando urn campo de tabela que utiliza ess e elemen tc de dados e
exibidc em uma t ela) 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 linha conted as
caracteres &DEFINITION&. Isso e urn titulo; nao altere essa liaha. Digite sua
documentacio comecando na linha da is.
APREHDA EM71 OIAS AB AP/4
o campo Shari Text
o campo Short Text descreve urn contexte de neg6cio para urn dominic. Por
exemplo, urn "nume rc de tel efon e de cliente" e urn contexte de neg6cio
especifico para urn dominic "numero de telefone gener ico" , enrjioele seria uma
descricao apropriada para urn elemenro de clades. 0 usuario final vera essa
descricac se solicitar ajuda Fl para urn campo que foi criado ur ilizando esse
elemento de dados .
de urn clique em Creat ing Domains e depois de urn clique em External Data
Type.
Para obeer docurnentacao que descreve 0 mapeamento de tipos de dados
de dominic par a ci pos de dados do ABAP/4. exiba a ajuda Fl para a palavra-
chave "tables". (Par a fazer isso, dent ro do edit or de ABAP/4, colo que 0 cursor
napalavra t abl es epressioneFl.)
Descchrindc elementos de dodos
Antes de realmente criar urn elernento de dados , descreverei a tela que voce
utilizara para crif-lo.
A Figura 3.8 mos tra a tela utilizada para criar um elemento de dados. Aqui
voce especifica 0 text o curto, no me de dominic, r6tulos e urn cabecalho, que
sao explicados nas selioes seguintes. A documentacfc tambem pode ser criada
depois que 0 elemento de dados foi salvo.
Fi g ura 3 8
Alela Dictionary:
Chonge Dolo
Element,
112 t...==:...:::..:::...:.:.::.:..::.:::.:.:..:... j-
14. Pressione 0 botao Back. Voce elevado de volta aDictionary: Initial
Screen.
DlA3, ODATAOlCTIOHARY, PARTE 1 I 115
I
I
\
I
I
I

o no me que voce inseriu i6
existe no Dota Dictiona ry.
Escotho um nome de dominio
diferente.
V6 ate la Dictionary: Change
Dolo Element e de um clique
duplo no nome de domlnio.
Voce enteo vera uma coixo de
di610go ou a tela Dictionary:
Display Domain.
Se voce vir a ccixc de di610go
com 0 iftulo Create Domain, 0
dominic nee existe. Verlfique 0
nome 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 Die2, vejc 0
"Locolizondo sevs
objetcs de desenvolvimento".)
Soliclte a autori zOl:;oo de
desenvolvtmento do seu
od minislrodor de sequronco.
Altere 0 nome do elemento de
dados per c inicior com y ou z.
SoluCjoo
0 1he no borra de stotus no
parte inferior do joneloe
0 botco nova mente.
Eprov cvel que voce vejc umo
mensag em.
Altere 0 nome do elemento de
dod os pa ra inicior com y ou z.
Aporece a mensogem "No act ive
domoi n exists with nome".
o nome de dominio que voce
digitou no lela anterior n60 exlste
ou ':l0oestc ctlvo.
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 mensoge m
"Enter access key".
Quando pressiona 0 botoo
Create, voce ve a mensagem
"You ore not authorized to make
changes".
Quando pressiono 0 batao
Cre ate, voce ve a mensogem
"'olreodyexists".
Quando voce pressiono a botcc
Crecte, nade acontece.
Possiveis
stntemes
Problema
Nne posso
otivcr elementos
de dados
Nsc posso
crier elementos
de dodos
1. Comece na Di ctionary: Initial Screen. (Para chegar ai apartir do menu
principal SAP, siga 0 caminho de menu Tools->ABAP/4 Work-
bench, Development->ABAP/ 4 Dictionary.)
2. Digite 0 nome de elernentc de dados no campo Object Name.
3. Escolha 0 borso de 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 domini c 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 (uti lize 0 caminho de
menu System- >Create Session) e exibindo-o no Data Dictionary.
7. Insi rarotulos 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 Header deve ter 0 mesmo comprimento ou ser menor
que a compriment o de saida no dominic.
8. Pressione a bono Save na barra de [erramentas Standard. A tela
Create Object Catalog Ent ry eexibida.
9. Pressione 0 botao Local Object. Voce elevado de volta atela Dic-
tionary: Change Data Element . as campos Status contern 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 Application.
10. Pressione 0 borso Documentation. A tela Change Data Element :
Language E eexibida. Aqui voce pede digitar a documentacio de
usuario final. Essa documentaci o eexibida 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. Digire 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. Pressione 0 botso Back na barra de ferramentas Standard. Voce e
levado de volta atela Dictionary: Change Data Element.
13. Pressione 0 bordo Active na barra de ferramentas Application. a
valor no campo Status altera-se para Act . e a mensagem "was
activated" aparece na barra de status.
114 AP' EN DA EM" DiAl ",P/4
!! &
- -
-
116 APRENDA EM 21 DIAS ABAP/4
DlA 3:0DATA ormoNARY, PARTE 1 ) 117
.. s:::'.'
Par a uma listc co mplete de vclores v61idos e seus significados, cclcque
o cursor no ca mpo Delivery Closs e cresslcne Fl .
:,,1 ;.;>.,;
TYIn1 ./_

UtI -Sh or t . _, . .
A coluna Field Name
Na metade inferior da tela voce pode inserir nomes de camp o na coluna Field
Name. Os campos de chave pr imaria devem aparecer primeiro nesra lista e
devem ser indicados por uma marc a de verificaclo na coluna Key. Urn nome
de elemento de dado'S deve ser inserido adireita de cada nome de campo. Depois
de preencher nos nomes de campo, pressione 0 botao Next page na bar ra de
ferramentas Standard se voce quiser inserir campos adicionais.
Cria ndo umc tabela transparente usando dominios
preexistentes e elementos de dados
Nes t a voce aprendera a abordagem bottom-up para erial' uma tabela
transparente.
Ocampo Tab.Maint.Allowed
Marcar a caixade selecsoTab.Maim.Allowed faz com que 0 caminho de menu
Utilit ies->Create Entries seja ativado. Depoi s de arivar a tabela e escolher esse
caminho de menu, a tela Table Insert e exibida, permitindo que voce digite
dados em sua tabela. Eutil para tes te e entrada manual de quantidades pequenas
de dados. Se a caixa de Tab.Maine.Allowed estiver em br anco, 0
caminho de menu Utili ties- >Create Entries estara acinzentado.
Fi g u r a 3 9
A tela Dictiona ry:
Toble/ Structure:
Chonge Fields cnvc
fexto curta, otribulos
e names de compo 0
serem inseridos.
Se, de pais de da r urn clique
duplo , voce vir a tela
Dicti on ary: Di splay Domai n,
clhe no ca mpo Status nesso
tela. New eurn status? Se for,
a dominic precise ser ativodo.
Pressione 0 bat ao Activate e
entoo pressione 0 botoo Bock
para retarnor 0 0 elemento de
dodos e tente ctlvo-lo
novomente.
Insiro as rctclos de campo
short, medium, lon g e depois
olive.
o texto de cc becolhc que
voce digitou era mai s longo
que a compri mento do compo.
Esse n60 eurn"erro serlo. Para
contcmd-lc, simplesme nte
pressione Enter e de pais al ive.
Alive a coixe de seleceo
Maint a in Field Labels e
pressione Enter.
Soluljao
Compos de entrodo estoo
perdidos no tela.
"Maintain field lobel. "
IIW: Length was increa sed to the
adual text lenqth."
Possiveis
sintomas
Problema
o campo Delivery Class
o valor no campo Delivery Class identifi es 0 "proprietario" dos dados nesta
tabela. 0 proprietario eresponsavel pela manutencao do con teudo ciatabela.
Nas tabelas de cliente, voce deve sempre inserir urn Aaqui , que indica que a
tabela cont em dados de aplicativo possuldo s apenas pelo cliente. Outro s
valores inseridos no campo sao creis somente para a SAP e indicam que ele
possui os dados ou a SAP e 0 clienre em con junto pos suem os dados.
A Figura 3.9 most ra a t ela utili zada para criar uma tabela transparente. Aqui
voce especifica a texto curto, a classe de remessa, os nomes de campo, urn nome
de elemento de clados para cada campo e seleciona as campos de chave primaria.
As secoes a seguir explicam esses itens em mais detalhe.
o ca mpo Short Text
o campo Short Text eutilizado para os mesmos prop6sitos que os campos
Short Text de dominic. 0 usuari o final mo vera essa descricao em qualquer
lugar, mas 0 desenvolvedor veri quando trazer atona uma list a de tabelas .
Nee posse
digifor r6fulos
de compo.
Obtendo
mensa ge ns
Descobrindo t obelos t ransparentes
=== ==.--=====--
118 I APRE!fDA EM 21 DIAS
--
DIA 3: 0DATADICTIONARY, PARTE1 119
"
Se voce agora estiver olhando 0 element o de dados, observe 0 valor
no campo Status. a campo Status deve conter Act . para indicae que
est a ativo . Se nao esti ver, pr essione 0 bot ao Active e verifique se 0
status esca agora Act . (Se e1e nao fun cionar, arive 0 Diagno stico e
solccao de problemas associado com 0 procediment o para cri ar ele-
mentos de dados.) Uma vez que 0 elemento de dados for ativado,
press ione bor do Back para ret omar atela Dictionary: Table/ St ruc-
tu re: Change Fi elds.
13. Repit a 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 ramentas Standard. Voce entao
vera a t ela Create Object Catalog Ent ry.
15. Pressione 0 batao Local Object. Voce entao e ret ornado a tela
Dictionary: Table/Struc ture: Change Fields .
16. Pressione 0 bot ao Techni cal Settings na barra de [erramenras Appli-
cation. A tela ABAP/4 Dicti onary: Maintain Technical Sett in gs e
exibida.
17. No camp o Data Class) digite APPl O(APPlO com urn zero, nao com a
letra 0 ).
18. Digite 0 (zero) no campo Size Cat egory.
1'9.Pres sione 0 bono Save.
20. Pressi one 0 botao Back. Voce e levado de volta a tela Dic tionary:
Table/ St ructure: Change Fields.
21. Pressione 0 botao Active na barra de ferramentas Application. Se a
ativaliao for bem-sucedida, a mensagem "was acti vated" aparecer a na
barra de Statu s e 0 campo Status tera 0 valor Act .
22. Pr essione 0 botao Back para ret ornar a Dicti onary: Initial Screen.
.... Inide a Screent.crn "Hew to Create a Transparent Table Using Preexisting
SCREENCAM,. Domains and DOlOEleme nts" agora.
Execute esse procedimento para criar a tabela " 'Hal. N esse procedi-
mento, criaremos a tabele, mas apenas incluiremos os primeiros tres campos
(menot, " '1 i fnr e ," name l ) nele. Mais tarde, adicionaremos os camp os
restantes utilizandc a abordagem to p-down.
A' ajuda com problemas comuns e dada no Diagnosti co e solccso de
pr obl emas que se segue a esse procedimento. Se voce tiver problemas com
quaisquer urn dos passos, nao se esqueca de consulta-l o.
1. Comece na Dictionary: Ini tial Screen (para chegar af a par ti r do menu
principal SAP, utilize 0 caminho de menu Tools->ABAP/4 Wo rk-
bench, Development - > ABAP/ 4 Dictionary).
2. Digice 0 nome de tabela 'Hal no camp o Object Name.
3. Escolha 0 batao de 0Pl1aoTables.
4. Press ione 0 botso Create (pushbutton) . Voce vera at ela Dictionary:
Table/Structure: Change Fields.
5. Digite 0 texto curto para descrever a tabela.
6. Digite urn Ano campo Delivery Class.
Faca uma marca de verificacao na caixa de selecao Tab.Maint .Al -
lowed.
8. Na coluna Field Name, di gite 0 nome do primeiro campo ciatabela.
9. Falia uma marca de ver ificacao na coluna Key se ela faz parte da chave
primaria.
10. Digite a nome de urn elemento de dados na coluna Data Elem.
11. Pressione 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 0 elemento de
dados.
0 nome de elementc de dados esti errado na tel a atual.
a elemento de dados exist e e 0 nome esra escrieo corretament e,
mas nao esta ativo.
Verifique 0 nome cuidadosamente. Sea ortografia esciver correta, de urn
clique duplo sabre a nome. Se urn elemento de dados desse nome nao
existir, voce vera uma caixa de dialogo intitulada Create Data Element.
Se a elemento de dados existir, 0 proprioelemento de dados sera exibido.
Problema
Nco posse
crier a tobela
Possivei s
sintomas
Qu ando voce presslonc 0 batao
Create, nada ocontece.
Quando voce pressiono 0 bat ao
Create, voce ve a mensagem
"Enter access key".
Sol ufjao
Olhe no barra de status no
pa rte inferior do [cnelo e
pressione a botoc novomente.
Eprcvovel que voce veja uma
mensagem.
Altere a do tobelo poro
que passe a lnlclcr comy au z.
!i
I,
'I
"
Il
I;
Ii
I,
I
L
i!
i
w.w - - ~ ~ - - - ~ - ~ ~ ~ - ~ - ~ ~ - - -
120 "RENDA EM 21 DIAS ABAP/4
DIA 3,0DATA DICTION" Y, PARTEl 121
Problema
Nco posso
ctlvor a tobelo
Venda 0 tela
ABAP/4
Dictionary :
Ma intai n
Technlccl
Settings
Possiveis
sintomas
Quando presslo no 0 bata o
Create, voce ve a me nsagem
"System change option does
not allow changes to SAP objects".
Quanda press iona a batao
Create, voce ve c me nsogem
"You are not au thorized to ma ke
changes".
Quando pressio na a ba tao
Create, voce ve a mensag e m
"already exists".
Aporece a mensogem "E-Held
(Data element or domai n is not
active or does not exist)".
S o l u ~ 6 0
Altere a nome do tobela par a
que posse a Inlci cr com y ou z.
Solicite a outcrlzocec de
desenvolvimentc de seu
administrador de seq uronco.
o nome que voce digitou ia
exlste no Da ta Dictionary.
Escolho um no me de dominic
diferente.
Volte pa ra a tela do tobela
Dictionary: Ta ble/ Structure
Chan ge Fields . De um clique
duplo no no me do elementc
de dodos. Voce vera uma
cclxo de di6logo ou a proprio
elemento de dodos.
Se voce vir uma coixo de
di61ogo com 0 titulo Creote
Data Element, a elernento de
dodos noo exlste. Verifique 0
nome coidcdoscmente. Voce
digitou 0 nome errado? Pode
ser umo boa ideio abrir umo
nova sesseo e exibir os obietos
que voce criou usando 0
Object Browser . (No Dia 2,
velo 0 seccc "locchzondc seus
objete s de desenvolvimento".)
Se voce puder exibir a
elementa de dodos, examine a
compo Stat us. New e um
stat us? Se nco, 0 elemento de
dodos precise ser cttvcdo.
Presslone 0 botdo Activote e
e nloe presslone a batao Back
para retornor a tabela.
Os ctrt bvtos tec nfcos fora m au
nao lnseridos a u selves. Insira
entoc as otnbutcs tecnlcos,
pressionando a bctcc Save e
par ftrn pressione Back.
Problema
Mensoge ns
exibidos em
verme lho
Posslveis
sintomas
"E- Field (Data eleme nt or domai n
is not act ive or does nat exist}."
"E- Entry in ta ble TAO RA missing. "
"E Error in co de ge nerat ion for
creating ta ble in the DB"
"E- Ta ble (Statements coul d not
be ge nerated)."
"E- Field Size cat egory (Va lue
not permitted)."
"E- Field Data clcss (Volue not
permitted}."
"E- Keyis a lready defined; field
ca nnot be in the key."
SoluCj oo
Veja a linha "Nco posse otivo r
a tobelc", cnterlcrrnente.
Procure mais emboixo umo
mensagem (em vermel ho)
scbre 0 Data Closs au a
categorio Size.
Proc ure odionte umo
mensogem (em vermelhoJ
sa bre Data Closs ou cotegorio
Size.
Procure adiante uma
mensogem (em ve rmelho)
sobre Data Closs a u categor ia
Size.
Voce digitou um va lor invalido
no compo Size Category des
confiqurocoes tecoicos .
Pressione Back seguido de
Technical Settings e mude c
Size Category para 0 (zero).
Voce digitou urn valor inv6!ido
no compo Size Categorydes
configurac;6es tecnlcos.
Presslone Back seg uido de
Technical Settings e mude 0
Data Closs pora APPLD (use
um zero no fina l de APPL}.
Oe campos de chove prim6rio
es e sao cdiccentes para coda
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 tntervencec
nem compos choves. [Tados as
marcos de verificao;oo no
colune Keydevem este r juntos
no comeco de tobelo.)
122 " mOA EM21 DIASA'AP/4
DIA 3, 0OATAOICTIOHARY, PARTE1 J 123
Criendo urno tobelo transparente sem do minios
preexistentes e e lementos de dodos
Nesta se'iao voce aprendera a adicionar campos a uma tabela utilizando a
abordagem top-down. Voc e adicionara os dois campos restantes (. - - reg; 0 e
landl ) asua t abela --Hal.
Utilizando a abordagem t op-down, voce pode edicionar campos a uma
tabela antes de criar os element os de dados e dominies. Voce pode simples-
mente criar element os de dados e dominies amedida que avancar .
Para fazer isso, voce ira inserir urn elemento de dados ou nome de
domfnio e entac dar urn clique duplo nele. Voce sed. levado atela Creation. A
part ir dai, voce cria 0 domtnio ou 0 elemento de dados, ativa-o e entac pressiona
o batao Back para ret ornar aonde voce estava.
o que se segue e0 procedimento para adicionar campos a uma tabela
transparente sem pri meir o criar os dominies e os elementos de clados.
Problema
Vendo a cclxc
de di6loga
Adjust Table
cam a texto
Tabl e must
be adjusted
in the
datab ase.
Aa oparecer a
mensogem no
porte inferior
do tela "Initial
value not
permitted as
the field nome"
ou: eimpassivel
desloccr-se
para cimo au
nco epas sive!
ver os compos
digitodos
Nee consiqo
lr para outro
mensagem
Possiveis
sintomas
Atobelc preciso ser convertido.
Uma mensogem ca mec;ando com
os corccteres "W:" oporece no
borro de status e voce n60
pode prosseg uir.

Voce mud au a tobelc e cqoro
umo eonverseo de tobel o deve
ser feita para completer a
ctlvccoc. Escolho um flpc de
processamento Online e
pressione 0 botoc Adjust..
Voce tentou remover um
compo delxcndo-c em bronco.
Nco se pade fozer lsso: voce
deve excluir os campos 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.
Pressrooe a teda Enter para
responder a me nsogem.
SCREEMC,I.M'" Inid e ? ScreenCom "Hew Create a Transparent TobIe Without Preexisling
,. Dornotns and Data Elements ogoro.
1. Comece na Dicti onary: Initial Screen (para chegar at a partir do menu
principal SAP, utilize 0 caminho de menu Tools->ABAP/ 4 Work-
bench, Development->ABAP/4 Dict ionary).
2. Digite 0 nome de tabela - Hal no campo Object Na me,
3. Escolha a botao de Tab les.
4. Pressione 0 botao Change. Is50 0 leva atela Dictionary: Table/ St ruc-
ture: Change Fields.
5. Pr essione 0 botao New Fields. Linhas ern branco-aparecem na parte
inferior ciat ela 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 uma marca de verificacao na coluna Key se ela eparte de chave
primaria. (Os campos -- - regia e - - e Land l nao sao, mas esse pro-
cedimentc e escrito gener icamente para que seja utilizado em si-
tua'i0 es gerais.)
8. Digite 0 nome dos elementos de dados associa dos na coluna Data
Elem.
9. Pressione a recla Enter.
10. Olhe na barra de status. Voce deve ver a mensagem "Data element is
not active, porque 0 element o de dados nac exist e.
11. De urn clique duplo no no me do elemento de dados . A caixa de
dialogo Create Dat a Element sed, exibida. No campo Data Element
estar a a nome do element o de dados a ser criado. Este naturalment e
sera 0 eiemenro de dados que voce deseja criar , ent ao a menos que
esteja incorr eto, nao 0 altere aqui .
12. Pressione 0 batao Continue . A tela Dictionary: Change Data Ele-
ment aparece .
13. Digite 0 texro curro para 0 elemento de dado s.
14. Digice urn nome de dominic.
15. De urn clique duplo no nome de dominic para cria-lo. A caixa de
dialcgo Create Domain sera,exibi da. No campo Domain 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 t ela Dictiona ry: Maintain Domain e
exibida.
17. Preencha os campos Short Text, Data Type e Eield Length.
I'
I,
I
i
f
I
I
--t..
<.:.. ..
;xxn I!. !:J I I . . .. . . . . I * w 'W y y
124 APHNDA EM 21 01,1..5 ARA PI4
w w w w w . it . :5
-;;
DIU aDATA DICTIONARY, PART< 1 125
18. Pressione 0 borao Active na barr a de ferrament as Application.
19. Pressione 0 botsc Local Object. Voce e levado de volta a tela Dic-
t ionary: Maint ain Domain. 0 valor no campo Status se alter-a para
Act. e a mens agem "was act ivat ed" aparece na barra de sta tus .
20. Pressione 0 batao Back na barra de [erramentas Standard para retor-
nar atela Di ctionary : Change Data Element.
21. Digire os campos r estant es no elemento de dados (veja 0 passo
mimero 7 do Procedi ment o de Criacao de Elemento de Da dos na
"Criando urn element o de dados").
22. Pressione 0 bot ao Active na barre de [erramentas Application. Voce
entao vera a tela Create Object Catalog Entry.
23. Pressione 0 botao Local Obj ect. Voce elevado de volta atela Di c-
t ionary: Change DataElement . 0 valor no campo Status sealtera para
Act . e a mensagem "was activated" aparece na barra de status.
24. Pressione 0 botac Back na barra de ferr amentas Standard. Voce e
levado de volta a tela Dict ionary: Table/ Str ucture: Change Fields .
Nao havera nenhuma mensagem 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 dados,
pressione 0 botac Active na bar ra de [erramentas Application. Se a
ativacao for bem-s ucedida, a mensagem "was activated" apar ecera ria
barra de status e 0 campo Status ira canter 0 valor Act .
27. Pressione a botao Back para ret omar a. Dictionary: Initial Screen.
Modificondo tabelos
Depois que voce criou uma tabela, voce pede:
copia-la
exclui-la
adicionar mais campos nela
excluir os campos dela
alterar os campos dent ro dela
Essa secao descreve como executar est as fcncoes.
Copiondo umo tobelo
Se uma tabela estiver ativa no DDIC, 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, voce pode querer experimentar alguma funcio-
nalidade de dicionario que ePOllCO con hecida para voce , sem querer modificar
uma tabela exisrente.
Para copiar uma tabela, siga est e procedimento:
1. Va para a Dictionary: Initial Screen. (Para chegar ai a part ir do menu
pri ncipal SAP, utilize 0 cami nho de menu Tools- >ABAP/ 4 Work-
bench, Development->ABAP/4 Dict icnary.)
2. Escolha 0 botao de 0Pliao Tables.
3. Pressione 0 borao Copy na barra de [erramentas Application.
4. Digite 0 nome das tabelas From 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 tabel a.
As tabelas noDpadem ser renomeadas. Pa ra cltercr a nome de umo
delcs, 'lace deve coplo-lc para umo tabe la diferente com 0 nome
desejodo e entcc exclulra tabela original. Se 'lace preclscr fozer isso,
certlftque-se de copiar tonto a estruturo como os dodos do tooele.
Esse procedimento copia apenas a estrutura de tabel a, nao 05 dados. Para
copiar os dados de tabela, escreva urn programa pequeno de ABAP/4 de sua
propriedade.
Excl uindo uma tobela
Voce pode excluir tabelas existentes de DDIC. Voce pod e querer fazer isso
quando uma tabela existente nao for mais necess aria ou se voce tiver criado
uma tabela para os propds itos de experimentar funci onali dade de dicionaric
que epoucc..conheci da para voce.
Para excluir uma tabela, siga este pr ocedimento:
1. Va par a Dictionary: Initial Screen. (Para chegar af a partir do menu
principal de SAP, utilize 0 caminho de menuTools- > ABAP/4 Work-
bench, Deve!opment->ABAP/4 Dictionary.)
2. Digice 0 nome de tabela no campo Object Name.
3. Escolha 0 botac de Tables.
4. Pressicne 0 bono De lete na ban-a de [erra mentas Applicati on. Urn
pop-up pedira a voce a confirmacao do pedido de exclusao .
5. Verifi que 0 nome da tabela que voce digitou e pressioneYes se desejar
continuar.
I

i'
.j!
W._ WW W 9&* _ .. ....,...-....,......... .....,............r-...........,....,r....r-.r-...........,.....r ..r-...........,....,r...r-..r ..........,r.,r...r ...I""".....,r..,!!"'""'!!r "'!!!!""""'!!!!....
126 ,P REN" EM 21 DI,S'BAP/4
DIA3,DDATADICT1 DN' RY, P, RTE I 127
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 menuTools- >ABAP/4 Work-
bench, Development->ABAP/4 Dicricnary.)
2. Digi te 0 nome de tabe1a.
3. Escolha 0 borao de opc;ao Tables.
4. . Pressi one 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. Ativea tabela. A telaAdjust Table eexibida. Pressione 0 botao Adjusr
para converter a tabela no banco de dados.
Adicionando _
Ha duas maneiras de adicionar campos para uma tabela existente:
inserir
acrescentar
Inserir urn campo permire que voce posicione urn campo antes de outre
exist ente.
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 diment o:
1. Comecena Dictionary: Initial Screen. (Para chegar afa parti r do menu
principal de SAP, utilize 0 caminho demenu Tools ->ABAP/ 4Work-
bench, Development - >ABAP/ 4 Dictionary.)
2. Digite 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: Ta-
ble/St ructure: Change Fields.
5. Posicione 0 cursor em urn campo.
6. Pressione 0 batao Insert Field na berra de ferramentas App lication. :
Uma nova linha aparecera acima da posicao do cursor.
7. erie seu novo campo na linha que voce acabou de digitar.

Para excluir um compo de umo tabela , nco deixe em bronco a nome
de compo. Emvel disso, coloque 0 cursor sa bre 0 nome e pressione
o botdo Cut. Se voce simplesmente deixar em bronco 0 nome, 0
mensagem "Initial value not permitted as field na me" cpcrecer 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.
Acrescenfando um campo
Para acrescentar urn campo no fim de uma rabela, execute este procedi -
menta:
Alterando 0 tipo de dado ou comprimento
de urn campo
1. Comecena Dictionary: Initial Screen. (Parachegar aia partir do menu
principal de SAP, ut ilize 0 caminho demenuTools->ABAP/4 Work-
bench, Development- > ABAP/4 Dictionary.)
2. Digite 0 nome de tabela no campo Object Name.
3. Escolha 0 bot ao de Tables.
4. Pr essione 0 bono Change. Is50 leva voce para a tela Dictionary:
Table/Structure: Change Fields.
5. Pressione 0 boec New Fields na barra de ferramentas Appl ication.
Na 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.
Voce pode alterar 0 tipo de dado e/ou comprimento 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 paraalterar 0 ripe de dado ou compri mento
de urn campo:
1. Va para Dictionary: Init ial Screen. (Para chegar ai a partir do menu
principal de SAP, utilize 0 caminho de menu Tools- >ABAP/ 4Work-
bench, Development->ABAP/4 Dictionary. )
2. Digite 0 nome de tabela.
-
128 "RENDA EM,l DIAS ABA'"
3. Escolha 0 bocao de opclo Tables.
4. Pressione 0 batao Display.
5. De urn clique duplo no elememo de dados correspondente ao campo
que voce quer aIterar. 0 elemenro de dados sera exibido.
6. De urn clique duple no nome de dominic no elemenro de dados. a
dominic sera exibido.
7. Pressione 0 batao Display <-> Change na barra de [erramentas
Application. Voce agora seracapaz dealterar os atributos do dominic.
8. Deixe em branco 0 campo Output Length.
9. Altere 0 t ipo de dado e/on compriment o.
10. Pr essione 0 batao Ac tive. A t ela Please note! eexibida para mostrar
uma list a de todas as tabelas e estrururas que utilizam esse dominic .
Elas scrao todas afetadas . Para continual', pressicne 0 batao Co n-
nnue.
Fozer clterocoes em urn do minio ofeto todos os ca mpos que 0 utlllzcm.
Trobolhondp com dodos
Se voce ja nao fez isso, erie sua tabela agora e ative-a antes de prosseguir.
NOVO... Dentro do R/3 estec 05 ufilit6rios fornecidos pe lo SAPchomodos nov.I?90dores
TERMO dedodosque permitem que voce monipule os dodos dentro dos tcbelos: Embora
a pclcvrc novegodor implique que voce openos ler6 os dodos, os novegadores de dodos
podem ser utilizodos tonto para ler como pa ra ct collzcr.
Voc e pode ut ilizar os utilitarios de navegador de dados para exibir ou
modificar dados dentro de tabelas das seguintes maneiras:
proeurando e exibindo as Iinhasque encontram criteria especificadc
adicionando novas linhas
. modificando linhas existentes
excluindo linhas
Esta se<;ao descreve como utilizar os navegadores de clados para executar
essas
Acessando a funcionalidade do navegador de dados de
denim do ODIC
Como obs ervado antes, urna das fun<;6es de urn navegador de dados einserir
novas linhas em uma tabela. Uma mane ira Hcil e rapida de acessar essa
Din 0DATA DICTIONARY, PARTEI 129
fun cionalidade e a partir da t ela Dictionary: Table/ Structu re (no modo de
exibicjn ou alteracac), escolha 0 caminho de me nu Utilities- > Create Entries.
Escolher esse caminho de menu eurn atalho - ele cha mara urn navegador de
dados, mas pulara a tela inici al e 0 levard dire tamente atela que permitira que
voce insira novas linhas em uma tabela.
Se esse caminho de menu est iver desativado, faca uma marca de verifi-
no campo Ta b.Maint.AlIowed e reative sua t abel a. Consulte a secso
ant erior neste capitulo intitulada "Campo Tab.Mai nt. Allowed." para uma
explicacaodesse campo.
Escolher esse caminho de menu automaticamente executa estas tarefas
em ordem:
Gera urn programa espe clfico atualizado de ABAP/4 para sua tabela
que urn navegador de dados pede chamar. (Ess e pr ograma de ABAP/ 4
soment e egerado aprimeira vez que vo ce acessa esse carninho de menu
para uma tahela dada e t oda vez que voce 0 acessa depois que uma
alteracao foi fei ea na tabela.)
Chama 0 navegador de dados que. por sua vez, chama 0 programa de
ABAP/4 recentemente gerado.
Mostra urna tela que permire que voce erie linhas na tabela.
Inicie a ScreerrCorn "How to Add Doto to 0 Table" agora.
Execute esse procedimento para adicionar clados asua tabela. A ajuda com
problemas comuns edada no Diagnostico e solocso de probl emas que se segue.
Se voce tiver problemas com quaisquer urn dos pas sos, nac se esque<;.a de
consultar 0 Diagnostico e solu<;ao de problemas.
1. Vapara Dictionary: Initial Screen.
2. Digite 0 nome de sua tebele no campo Object Name.
3. Pressione 0 botao Display. A tela Di ctionary: Table/ Structure: Dis-
play Fields e exibida.
4. Escolha 0 caminho de menu Utilities- c-Creat e Entries. Observe a
barra de status na parte inferior de sua t ela quando voce escolhe 0
caminho de menu; voce pode ser capaz de ver a mensagem "Compi-
ling. .". Essa mensagem indica que 0 sist ema esta gerando a
atualizacao de programa. A tela Table Insert eexibida. Nessa tela, ha
urn campo de entrada para cada campo em sua rebels. Aesquerda de
cads campo de entrada, aparece 0 nome de campo. Os campos de
chave primaria apare cem primeiro, seguidos po ruma linha em branco,
depois seguem as campos restantes da t abela. Para ver 0 programa
que foi gerado, escolha Utilities->Creat e Ent ries e depois escolha a

'J:fr '.oil ,...-,r'''ll!!''''''''''''''''''''''''P-..r-'''''' r ,....,..... r- ,.. ..., r-..,..... _
130 APRENDA EM 21 DIAS ABA P"
DlA3: 0DATADICTIONARY, PARTE I '131
caminho de menu System-c-Status. 0 nome de programa aparece no
campo Program (Screen).
iI
SoluljOO
Atobelc ;0 cc ntem um reqlstro
com 0 mesmo chove primario
que a primeiro que voce
estcvc tentondo salvor. Os
compos de chove prirnorlo sec
os prlrneircs grupos de
campos 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 .
Possiveis
sintomas
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.
Problema
Utilizanda 0 SE16
o SE16 e0 mais utilizado programa de utilitaric de navegador de clados com
prop6sito geral. Com de, voce Rode pesqui sar tabelas para linhas especfficas e
exibi-las, arualiza-las, exclui-las, copia-las, adicionar novas linhas e fazer outras
tarefas. Ele pode ser acessado de qualquer uma destas duas maneiras:
Da tela Di ctionary: Table/Structure: Chang e Fields, escolha 0 ca-
minho de menu Utilitie s-c-Table Contents.
Digire /nse16 no campo Command.
1. Digi re / nse16 no campo Command.
2. Pres sione a tecla Enter. A Data Browser: Initial Screen aparece.
3. Digire seu nome de tabela no campo Table Name.
4. Pressione 0 batao Table Contents na barr a de [erramentas Applica-
tion. Se a tabe1a contiver mais de 40 campos, voce vera a tela Ch oose
Fields For Selection. Se voce a vir, coloque uma marca de verificacao
ao lado dos campos pelos quais voce quer inserir as crireri os de
pesquisa e pressione 0 batao Execute. Os campos que voce ativou
A funcionalidade que voce acessou na prec edente esomente uma
de urn unico navegador de dado s. No sistema R/3, hi quat ro ut ilitarios gerais
denavegador de dados: SE16, SE17, SM30 eSM31. Eles sao similares sob alguns
aspectos e ainda oferecem varie s tipos de funcionaliclade.
lnlcte a ScreenCam "Howto DisplayTcble Data Using the Doto Browser" agora.
Utilit6rjos gerais de novegodor de dodos
A ca ixa de seleceo
Tob.Moint.Allowed nee estc
otivada. Va para a tela
Dtctlcncry: Table/Structure:
Change Fields (para chegar
ate 16 exiba a tobelo e clique
no bcteo Display -c-c- Chonge
no borro de ferromentos
Application ate que os compos
seja m modificcdos) . Adicione
umo marco de verlficcccc em
Ta b.Moint.Allowed. Pressione
o batao Activate.
Possive is
sintomas
o item de menu Create Entries
est6 ocinzentado e noda cccntece
quando voce da um clique nele.
Se voce coloco 0 cursor em qualquer campo e presslcno a tecla
telo Help - Ta ble Insert eexlbido. Nessa tela, voce vera a documen-
tac;co que voce digitou no elemento de dodos. Para retoma r atela
Table Insert, pressione botcc Continue ou Concel.
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 atela Dictionary: Table/Struc-
ture: Display 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
eexibida.
10. Para exibir todas as linhas na rabela pressione 0 botao Execute 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.
Problema
Nso posso
adicianar dodos
:

132 'PRE Ho, EM 2J DiAl '''PI'
DIU0OAT' olmoNARY, P' RTE I 133
Inicie 0 ScreenCam "Dote Browser Functionolitl ogara.
Na tela de navegador de dados voce pede fazer 0 seguinte:
Role para cima e par a baixo.
Role aesquerda e adireit a.
De urn clique dup lo em uma linha para ver mais campos de uma vez.
Cri e uma n ova linha escolhendc 0 caminho de menu Tabl e
Enrry->Create.
Altere uma linha existe nt e ativando-a e entao escolhendo 0 caminho
de menu Table Entry-c-Change.
Altere as mulriplas linhas ma rcando-as, escolhendo 0 caminho de
menu Table Ent ry- > Change e entao pressione os bot6es Next Entry
e Previous Entry na barra de fer ramentas Application.
Copie uma linha existe nte marcando-a e entjio escolhendo 0 caminho
de menu Table Entry->Create w/reference.
Copie as mulciplas linhas marcando-as, escolhendo 0 caminho de
menu Table Entry->Change e cntsc pressionando os boroes Next
Entry e Pr evious Entry na barra de ferramentas Applicat ion.
Exclua uma linha ou mais marcando-as, escolhendo 0 caminho de
menu Table Ent ry- c-Creare w/ refer ence e coeac pr essionando 0 boteo
Delete Ent ry na barra de fer ramentas Application para cada linha que
voce quer excluir.
Selecione t odas as linhas e tire a selecsode rodas as linhas pressionando
os bot6es correspondentes na barra de ferramentas Application.
Imprima a lista pressionando 0 botso Print na barra de ferramentas
Standard.
Classi fique a lista colocando 0 cursor em uma coluna para classificar
e entao pressionando os bot 6es Sort Ascending ou Sort Descending
na barra de fer ramentas Application.
Localize uma st ring pression ando 0 ba t ao Find na barra de [erramen-
tas Standard. Digit e a st ring, pressione Find e entao de urn clique em
uma area dest acada para visualizar essa linha.
Palja download cia lista para urn arquivo em seu disco rigido escolhendo
o caminho de menu Edit->D ownload. Voce: pede escolher ASCII,
formato de pl anilha ou Rich Te xt Format .
Selecione os campos que voce quer vel' na lista esco lhen do 0 caminho
de menu Setrings->List format->Choose fields.
Varies outrOS parametres de Iista milium 0 caminho de menu Set-
tings->User parameters. Aqui voce pode configurar a largura de safda,
o mimero maximo de linhas que pode ser exibido, ativar saidas de
Solusao
Voce intencionalmente au acid entalmente deve
ter digitado alga em um campo no tela de
seleccc e nenhumo linha coincidiu com esse
criteria de pesquisu. Deixe em bronco todos as
compos no tela de selecco e presstcne Execute
novornente.
Nco h6 dodos no tooele.
Vocl! pressionou Save depois de coda registro?
Voel! inseriu dodos no tabela?
Voce pressionou Save depois de coda
Voce iosenu vclcres de compos de chove
primcrio para code registro? ."; '
Voce intencionol ou oclde ntclme nte digitou
olga em um campo no tela de sele<;60e nem
tcdos os registros eoincidem com esse c-iteric
de pesquisa. Retorne para 0 tela de setecec ,
delxe em bronco fodos os campos e pressicne
o bat ao Execute nova mente.
Do mesrnc forma que a caminho de menu Utilities->Create Entries,
Utilities->Table Contents tombern gero um progromo, ele e ge rado
novamente se voce cltercr 0 estruturc de tab elo. Poro exibir0 progromo
que ele gem, c pa rtir do fela de sele<;60 escolha a cominho de menu
System->Status.
serao mostrados na pr oxima tela - a tela Data Browse r: Table:
Selecti on. Essa tela ena maioria das vezes simplesment e chamada tela
deselerao. Aqui voc e po de inserir os criterios de pesquisa para locali -
zar as linhas espedficas na tabela. Para exibir todas as Iinhss, DaD digite
qualquer crirerio de pesquisa. Se hellyer mais de 500 Iinhas que
coincida m com seu criteria e voce quiser exibir codas elas, deixe em
branc o 0 valor no campo Maximum No. Of H it s.
5. Pre ssi one 0 botao Execut e na barra de [erramentas Application. Voce
eneac vera a tela Da ta Browser: Table Select Entries. Todas as linhas
que coincidem com seu criteria serao exibidas ate 0 numero maximo
de linhas especificadas no campo Maximum No. of H its.
Hemenos registros no lista de
scldo do que voce inseriu no tobela
Problema
Node ccontece quando
voce pressiono 0 botdo Execute.
conversjo ou exibir 0 numero 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.
Utilizanda 5M3l e SM30
5M3 1 e SM30 tambem podem ser utilizados para exibir e at ualizar dados de
tabela . SM31 euma versao mais anriga de SM30 que tern menos func ionalidade.
a campo de entrada ria primeira tela de SM30 e. suficientement e longo para
acomodar qualquer nome de t abeIa; no SM31 ele tern apenas cinco caracteres
de comprimemo. Antes que voce possa utilizar qualquer urn, urn programa
especial chamado dialogc de manutencac padrac deve ser gerado para a tabela
que voc e quer exibir.
NOVO lrl... Um di6/ogo de monuteno podroo eum progromo ABAP/4 que voce gero .
niMO r Qu ando voce choma 5M31 a u SM30, 0 novegodor de dodos c utorncficcme nte
lccchzc e corrego esse pragroma gerodo. He oferece umc interface moi s campfe xc e
mois funcionolidode do que 0 5E16. Poro mois informalioes sobre di61ogos de
monutencec e procedimento poro eric-los, consulte a elude R/3 Library.
Para localizor as informo<;6es em di6!ogos de mcnuten ceo no R/3
library, escolh a 0 cominho de menu Svstern-> R/3library Help. Apartir
da l, deumclique nos seguintes guias: Basis Components>ABAP/4
Deve lopment wcrkbench-> Extended App lications Funct ion U
brary->Exle nded Table Maintenance.
Comparanda 0 SEl 7 cam a5El 6
a 5E17 emuito semelhante ao 5E16 no sent ido de que pode ser utilizado para
pesquisar linhas especjficas dentro de uma tabela. Enrretanro, 0 SE17 nao pode
ser ut ilizado para atualizacoes. Utilizando 0 5E16, voce pede especificar
criterio de pesquisa complexo para urn maximo de 40 campos por vez; com
SE17, voce. pode especificar criteri os de pesqui sa simples para qualquer
numero de campos de urna vex. 516 somente at iva a safda a ser classificada
par uma unica coluna de um a vez; 0 SE17 permite que voce especifique
qualquer sequencia de tipc ao longo de varias colunas. a 5E16 nao func iona ra
para uma tabe1a que t ern urn dialcgc de manutencio padrao, mas a SE17
funcionarg.
Somando as navegadores de dodos
Em casos especiais, para exibir dados somente onde voce precisa especificar
multiples criterios de classificacsc, uti lize SE17. Entreranro, para a maioria das
arividades rotineiras de de dados, utilize 0 5E16 . Mas voce
DtAJ: oDATA DlOi ONARY, PARTE 1 135
nolo sera capaz de utili zar 516 se a tabela river urn malogo de
padra o. Nesse 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.
Exibi ndo os dodos utilizando seu pr6prio progromo
de ABAP/4
Em vez de utilizar urn navegador de dados, emais 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 apropriada se nenhuma
Iinha existir na tabela.
Urna de exemplo emos trada na Lista gem 3.1. Experimenre criar
uma por cont a pr6pria antes de olhar na solucso.
Listage m 3.1 Programo simples para exibir os dodos no ta belo ztxlfal
1 report ztx0301.
2 tables ztxlfaL
3 se je ct > from ztxlfal.
04 wr H e: I ztxlfal-11fnr,
5 zt xlfal-namel ,
6 ztxlfal-regi o,
7 ztxlhl-landl.
8 endsete ct
9 if sy-subrc <> O.
10 write 'Table is empty.' .
11 end1f.
Utiliza ndo 0 qjuda El
A ajuda Fl ea documenracjo vista pelo usuario para urn' campo. Para obra-la,
o ususrio coloca 0 cursor no campo e press iona Flo A documentacao eexibida
em uma caixa de dialogo. Voce utilizara 0 segui nr e proc edimento para modi-
ficar a ajuda F I que voce cri ou ant::riormente para 0 campo 1i fnr.
lnicle a 5creenCom "How to Crea te or Modify Fl Help" ogara.
Adicionanda a juda Fl para urn campa
Para adicionar ajuda Fl para urn campo:
1. Comece na tel a Diction ary: Tabl e/Structure (no modo de
ou exibicao).
,1
t
l
"'l!'" ",!!!!"--'!!!9 -es-

2. Localize 0 campo para 0 qual voce quer edicionar ajuda e de urn clique
duplo no nome do elemento de dados correspondence a esse campo.
A tela Dictionary: Display Data Element sera exibida.
3. Pressione 0 botao Display < -> Change na barra de ferramentas
Application. A tela muda para 0 modo de alreracao.
4. Pressione 0 borao Documentation na barra de ferramentas Applica-
tion. A tela Change Data Element: Language E eexibida.
5. Digite 0 texro que 0 usuerio deve ver quando ele solicitar ajuda para
esse campo. A primeira linha contern os caracteres &DEFINITION&. Isso
e urn titulo; nao altere essa linha. Digite sua documenracao co-
mecando na linha dais. Pressione a tecla Enter para comecar cada
novo pardgrafo.
6. Pressione 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 atela Di ctionary: Change Data Element.
8. Pressione 0 botao Back mais uma vez para retomar a tela Dictionary:
Table/Structure.
Testorido a ajuda Fl
Para testar sua ajuda Fl :
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.
Adiciona ndo vinculos de hipertexto pa ra aju da Fl
NOVO Vrnculos de hiperlexto permitem que voce clique em urnu pclcvro destocodo au
HRMO "" [rose no elud e Fl e exibo ojudo edicione J pore esso pclovro ou [rose. Pora
adicionar vlnculos de hipertexto, voce primeiro eric um doc ument o 00 qual voce quer
criar um vinculo e entoc deve inserir umo referencio a esse documento no texta do cj udo.
Os names de dccumentos devem inicior com y au z. Voce pade indui r hiperlinks em seu
novo documento tcmbem e vincu!er 0 portir dol pore outro dccumentc, ad infinitum.
Inicie 0 ScreenCom "How to Create 0 Hypertext link in F1 Help" ogora.
-
OIA3,0 DATA DICTIONARY, PARTE 1 137
1. Comece no menu principal do R/ 3 e escolha 0 de menu
Tools->ABAP/4 Development Workbench. A tela ABAP/4 Deve-
lopment Workbench eexibida.
2. Escolha 0 caminho de menu Utilities- >Documentation. A Docu-
ment Maintenance: Initial Screen eexibida.
3. De urn clique na seta para baixo do campo Document Class. Uma
lisra de classes de docurnento eexibida.
4. De urn clique dupl e em General Text . a campo Document Class
agora contem 0 valor Genera1 text e urn campo identificado Gen eral
Text eexibido na parte superior cia tel a Document Maintenance. (0
campo Documentation Type jadeve 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 voce
quer criar. 0 nome deve iniciar com y ou z. LEMBRE-SE DESSE
NOME.
6. Pressione 0 ba tao Create. A tela Change General Text: Language E
eexibida.
7. Digite seu doc umentc aqui. Pressione a tech Enter no final de cada
paragrafo.
8. Pressione-o botec Save Active . A tela Create Object Catalog Entry e
exibida.
9. Pressione 0 bo-seLocal Object. Voc e elevado devolta atela 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 atela Document Maint enance:
Initial.
11. Pressione 0 batao Back novamente para ret omar atela de ABAP/4
Development Workbench.
12. Entre no Data Dictionary e exiba seu elemenro de-dado.
13. Pressione a batao Display < -> Change na barra de {erramentas
Application. Sua tela altema-se para alrerar 0 modo.
14. Pressione 0 bono Documentation na barra de Applica-
tion. A tela Change Data Element: Language E eexibida.
15. Coloque 0 cursor na posicao ern que voce quer inserir urn hiperlink.
16. Escolha 0 caminho de menu Inc1ude->Reference. A tela Insert Link
eexibida.
17. De urn clique na seta para baixo no fim do campo Selected Reference.
A tela Title e exibida: note que ela conte m uma lista de classes de
documentc.
"'
138 APmDA EM71 DlAS ABAP/4
DIA3: 0DATADI GlONARV, PARTE 1 139
18. De urn clique duple em General text. 0 campo Selected Reference
agora cont em 0 valor General text e urn campo rotulado General
Text eexibido no topO cia tela.
19. No campo General Text, digite 0 nome do documentoque voce criou
no passo 6,
20. No campo Name In Document, digite 0 texto de hipe rlink. Esse e0
texto que sera. dest acado e no qual 0 usuario sera capaz de dar urn
clique par a reeeber mais ajuda.
21 . Pressione 0 batao Continue . Voceelevado de volta para a tela Change
Data Element: Language E e urn link aparece na posiceo do cur sor ,
22. Pressione 0 botao Save Active na barra de fer ramentas Application.
23. Voce pode experimentar seu novo hiperlink imediatamenre escc-
lhendo 0 caminho de menu Document-c-Screen Output. A tela
Display Document ati on eexibida, seu texto de ajuda aparece e seu
hi perlink devera ser destacado.
24. De urn clique no hiperlink. A tela Display Hypertext: eexibidae seu
documento provavelmente aparecera.
25. Pressione Back tre.s vezes para retomar para a.tela Dictionary: Ta-
ble/St ructure.
. 26. Para testar seu hiperlink, exiba sua t abela e escolhao caminho de menu
Uriliries- c-Create Entr ies. A tela Table Insert emos tr ada.
27. Posicione 0 cursor no campo no qual voce criou a ajuda Flo
28. Pressione Flo Seu textc de ajuda com 0 hiperlink devers ser exibido.
29. De urn clique no hiperlink. Seu novo documento devera ser exibido.
Resumo
a Data e uma ferramenta utilizada por programas em
ABAP/4 para cnar e man ter tabelas . Hi tres ripos de tabelas: transpa-
rente, 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 preeisa de dominies e de elemen-
tOSde dados. a s domfnios oferecern as caracterist icas recnicas de urn
campo; os .elementos de dados oferecern os r6tulos de campo e a ajuda
FI. as dois sao reutilizaveis.
.objetos de. dieiomirio devem estar ativos antes de poderem ser
utilizados. Se fizer uma alteracao para urn objet o de dicionario, voce
deve reativar 0 objero para que as alt eraqoes tome m-se efetivas .
a s navegadores de dados permitem que voce exiba e modifique os
dados dentro de tabelas. a SE16 e0 navegador mais geral de dados.
o SEll, 0 SM30 e 0 SM31 sao os out ros navegador es que oferecem
capacidades variadas.
po de erial' ajuda Fl dentro de urn elemento de dados pres-
0 bordo Documentation. Dentro dess a ajuda Ft, voce pode
cnar vfnculcs de hipertexto para outros document os de ajuda FI.
Como voce sabe quais tabelas serac an tes de alterar urn
dominic?
Quando voce ativa a domfnio, 0 sist ema ten rar a ativar as tabelas
qu: sao desse domfnio. A ariva cao das tabelas que
teriam perdido dados falharia e um a lis t a dessas rabelas seria
mos rrada para voce. Se voce ent ao prosseguir e ativar essas
tabelas, 0 sistema au tomaticamen te converted. os dad os nelas e
os dados na coluna referenciada pelo domla i o serao rruncados.
Se deixo 0 comprirnento de urn campo menor alt era ndo 0
do mfnio e, se esse campo eut ilizado em uma tab ela que ja
conrem dados pree nchen do 0 comprimento in tei ro do campo,
o qu e acont ece?
o
o
o
P&R
0 titulo do tela eDidionary: Display Doto
Element? Se for, voce est6 no modo de
Voce precise ester no modo de
clterccoo. Pressione 0 batao Display <->
Change e entec tente novome nte.
Presslone 0 botoc Save Active no borra de
ferromentas Application, noo 0 bctco Save no
borra de ferromentos Standard.
Altere a closse de documento pora General
Text.
Role pore cirnc.

Aparece 0 mensogem "Dote
element is not used in on ABAP/4
Dictionory structure.H
Estou pressionando 0 botco
Documentation no tela de elemente
de dodes, mas nado cccntece.
Problema
Nee posse localizer Gener al Text
no llsto de classes de docvmento.
Aparece a mensagem
"Chonqe relevant to trcnslotlont"
..
o
E
'j;l,
o
c
'"
-e

III

'"

....
140 I APRENDA EM 21 DIAl ABAP/4
= _ .
DIA 3, ODATADJCTlONARY, PARTE 1 ! 141
name
Nomede DM
datum
time
usnam
w-- . . . .
" name2
." -erdat
ertim
Nome de DE
ernam
-- __ v
- -
Nome do campo
5. 0 que sao os c6digos de transacao dos quatro navegadores de clados?
Qual e0 mais comumente utilizado e qual naopode ser uti iizado para
atualizar dados?
6. Qual ea diferenca entre uma tabela transparenre e uma t abela de pool
ou uma tabela de cluster ?
ername
name2
erdat
ert i m
Adicione os campos mostrados na Ta bela 3.4 em S1..1<'I tabela 1 f al . Nenhum
desses camp os t ed. urn X na coluna Key porque eles nao fazem parte da chave
pri maria. 0 propdsito desses campos e conter urn segundo nome para 0
fabr ican te, a data e a hora que a linha foi criada e 0 ID de usuario do usudrio
que criou a regi stro. Crie urn novo elemento de dadcs para t odos os campos.
Reutili ze 0 dominic do campo namel para a camp o name2. Para 0 resto dos
campos, utilize os nomes de dominies existences do R/3 mostr ado abaixo.
Documente esses campos utilizando 0 botao Document ation no element o de
dados. Depois que voce ativou suas alceracoes, utilize urn navegador de dados
para at ualizar as linhas existences em sua tabela e col oque os dados nos novos
campos. Enquanto voce esta arualizando as Iinhas, test e sua ajuda Flo
Exerd cio J
Ta be la 3.4 Novas compos e suas cc rccterlsticos para a tabela ztx lfal
Exerd cio 2

I
,
I

I
!
!
!
I
I
Paca uma list a Where-used no domlnio. Para i.sso, exiba
a dominio, pressio ne 0 ba t ao Where- Used na 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 e
exibida. De um clique duple em qualquer linha para exiblr a
rabela.
Epossive1 er iar um campo de tabe1a sem utilizar urn
de dad os au domin ic? Isso parece muito trabalhoso para crrar
para eada campo.
Sim, e possivel criar urn campo de tabela sem u tilizar urn
elemento de dados au domtnio. Exiba a tabela no modo de
alteracio e ent ao escolha 0 caminho de 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 eapropriado para
campos que nunca secio vistas a tela e nao terao
relacionamenros de chave est rangeira com outras tabelas (veja a
seguinte capit ulo para uma explicacao de cheves estrangeiras}. A
SAP uciliza esse me todo de criar tabelas para tabelas que ar-
mazenam as informacoes de sistema como IDs de cursor de banco ,
. de dados . Voce po de udliza-lo na visualizacio (staging) de. tabela
, que armazena dados brutos em transite den rro ou fora do s;:}e,ma
R!3. Ha duas desvantagens principais nesse metoda.
nenhum elemento de dado eutilizado e, ponamo. nao exrsnra
nenhum rotulo de campo ou ajuda FI. Segundo, nenhum dominic
eutilizado e entao as chaves estrangeiras nao podem ser criadas.
o
o
o
Workshop
Os seguintes exerclcios proporcionarao. a voce pratica para 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.
Crie uma t abela transparenre knal para conter dados-mestr es de clienres,
como mostrado na Tabela 3.5. Utilize urn na vegador de dados para adicionar
dado s at abela. eri eurn novo programa e0302 que Ie os dados dessa tabela
e os escr eve ern uma Iista.
Q l Jestjonori o
1. Qual e0 prop6siro do dominic ?
2. 0 que 0 element o de dados contern ?
3. A quese refere 0 termo dados de aplicativo?
4. Para campos do tipo DEC, 0 ponte decimal earmazenado com ovalor
do campo?
-,,'

Depois de completar est e capitulo, voce sera capaz de:
e Criar chaves estrangeiras.
Utilizar 0 campo Value Table no dominic.
Criar e utilizar tabelas de texto.
Descrever a diferenqa ent re uma estrutura e uma tabela e criar estru-
tu ras no Data Dictionary do Ri3.
Criar tabelas e estruturas contendo campos monetdrios e de quanti-
dade.
Aninhar est ru t uras dentro de ourras estrutur as ou t abelas.
NOVO -.... Umo choveestrongeiro eumcompo em umo tobelo que estc coneetodo a outra
HiMO r tcbelo via um relacionomento de chcve estrangeiro. a prop6sito do relociono-
mento de chc ve estrongei ra e vchdcr as dodos sendo inseridas em uma tabelo de
verificcccc contra um conjunto vdlido de vclores em outre tobelo. Atcbelo que contem
a chove estrongeira e chcmado tobelo de chove estrongeiro. A tobela que contern a
ccojvnto vclido de vclcres echemodo tobete de verifico<;6c [ve]oa Figura 4.1) . 0 compo
que evalidado e em que a relodonamento de chove estrangeiro ecriodo echomodo
chove estrangeiro.
De scobri ndo as chayes estrang"' eCL iruaoLs"- _
nl1p:l/www. compU$.ccrn.br
Objetjyos do capitulo
oData Dictionary, Parte 2
Len Nome Tipo
de OM
Nome PK No me
de camp o
de DE
Chente
mafldt
mandt
Numero de c1iente
kunnr
kunnr
Nome de clente

knamel
Ctdode
cityc
ci tyc
Regioo
regio
"r egi o
Pels
1andl
, andl
Tabela 3.5 Os compos e sues caracfe rlsticas para tabel o knal
142 I ' PPEN D' EM21 01'S 'B'P/4
.. -... . YWWYW W .
144 APREH DA EK21 DI Al AB AP/ '
DlA 4: QOATA OIcnONARY. PARTE 7 145
"- Quando voce odic:iono dodos a esto
tcbelc, umc verificot;60, feito para
'o'er se a c6digo do pa is que voce estc
lentando inserirexiste no tcbelo de verifico<;60 (ztxO05).
de inr egri dade sio mantidas no banco de dados. Portanto, urn programa
em ABAP/4 incorretamente escrito pode violar a inregridade referencial; ele
pode inserir valores invalidos nas ta belas de banco de dados. Por essa razao,
pr ogramas em ABAP/4 qu e precisam atu ali zar 0 banco de dados com dado s
provenientes de uma out ra font e qu e nao a int erface com 0 usuari o normal-
mente passaro esses dad os por uma interf ace com 0 usuario a fim de
valids-los.
Para mois lnfcrmccces sabre utilizoliCio do interface 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 qvclqcer tela escolbc 0 co minho de menu Help->RJ3
library. Voce vern 0 menu principal do blbltctecc do R/3. A partir del,
deum clique nos seg uintes guias: Basis Components->ABAP/ 4 Devel-
opment Workbe nch-> Basis Programming lnterfcces->Tronsferring
Dat a With Botch Input .
nome do tobela
nome do compo
reloctoncmentc
de chove eslrongeiro
Esto tobelc cont em umo
lisle de c6digos
de pcis v61ido$.
Tobelo
de yermco<;Oo
l MOOS
landl
Ii
cA US
CA
US IT
US US
DE JP
-'-
DE
Tabelode move
estronge.ro
rthlfo1
cbcve lan dl
estrongeiro
Figura 4 1
Atcbetc de chcve
estrongeiro e 0 tobelo
de verificor;60.
Por exempl o, sua tabela - 1f al contem c6digos de pafses em urn campo
chamado landl . Voce pede cri ar uma segunda tabela, por exemplo t OOS, e
preenche -la com uma lista de codigos de parses validos. Encao, se voce cria uma
chave estrangeira como a mostra da na Figura 4.1, uma verificacf o automati-
cament e sen. feiea contra a t abela de verificacao para urn valor valido. Com essa
chave esrrangeira no lugar, 0 usudrio nac pode inserir codigcs de parses
invalidos na tabela - - "l f al ,
Urna chave esrrangeira obtem seu nome do fat o de que ela sempre deve
veri ficar urn campo na chave primaria de out ra tabela. .
Acionando a de chave estrongeii-a
Raquisi tos tecnicos para criar uma chave estrongeiro
Para criar uma cbave esrrangeire:
A verificacao deve ocorrer em relaljao a urn campo dentro da chave
primdria da tabela de verificacao.
Os no mes de dominios do campo de ehave estrangeira e 0 campo de
rabela d e verificacao devem seros mesmos.
o segundo requi sit o exist e para garantir qu e os campos que ests c sendo
comparados sejam compativeis quanto co t ipo e comprimenro de dado (veja a
Figura 4.2) .
A verificacjo de chave esrrangeira executa da pelo usuario cia interface do R/3 .
Quand o voce digita urn valor em urn campo e pressiona a t ecla Enter, nos
bastidores a interface com 0 usuario formula uma instrucao sel ect para validar
o campo de chave estrangeira e envia-la ao banco de dados. Se uma linha
coincidence njio foi lacalizada na tabela de verificac ao, 0 usuario ve uma
mensagem padrso indicando que 0 valor que ele digit ou einvalido. Se uma linha
coi nci dence existe na tabela de os valores inseridos na t ela t ern
permissao para passar para 0 programa em "ABAP/ 4 subj acent e. Ass im, as
chaves est rangeiras jii sao verificadas ant es de 0 pr ograma receber os valores .
Alem da tecla Enter, as chaves estra ngeiras tambern sao verificadas quan do uma
teela de urn bota o (pushbutton) ou urn item de menu eselecionad o.
As chaves estrangeiras sao verificadas apenas pda int erface com 0 usuario.
Elas naoexist em no banco de dados e DaOsap verificadas se voce simples mente
emit ir uma updat e de banco de clados. 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 que noo etmprescindlvel
que as dois utlllzem 0 mesmo elementc de dodos - somente as
dornlnlcs devem ser os mesmos.
Como esses campos compartilharn urn dominic em comum, aint egridade
da comparacao entre os dcis campos egarantida, porque seus tipos e compri-
ment es dados sempre coincidirao.
...... - ...
-

---
-
... .... ..
-- --
..
-
=
-
146 I APRENDA EM 21 VIASAB AP/4 CIAt 0DATADlmONARI, PARTE 2 147
Tabela 4. 1 as campos e sues ca racterfsticas para a tabelo - --TOOS
Criando u mo ,hoye est ra O.Q"e"i"ra"--- _
Agora estd na hora de voce criar uma chave esrrangei r a simples. Este exemplc
permi t ird que voce se familiarize com as telas envolvidas no processo; t odos os .
campos nessas relas serfo explicados em deralhes mais adiante neste capitulo. "
Os procedimenrcs a seguir demons t ram como criar a tabela de verifieafac
zt xt 005 e depois uma chave estrangeira em zt xlfal - l andl ut ilizando ztxt 005
como a tabela de verificaclo. Depois de visualizar esse procediment o, voce sera
solicitado a erial' sua pr6pria t abela - - -tOOS e entao criar urn relacionamento
de chave esrrangeira de - - - lfal -l and1para tabela de verificacao - - - t OOS.
Antes de erial' uma chave est rangeira, voce deve primeiro ter um a tabe1a
de verificacao. Embora ja haja uma tabela de c6digo de pafses no R/3, para
praricar voce criara e ut ilizara a sua propria tabela. A tabe la de verificacao se
chamar a - - - tOOS e ira cont er os campos e utilizar os elementos de dados
mostrados na Tabela 4.1. (Urn x na coluna PK indica campos qu e formam a
chave primaria. )
Para criar sua tabela de verificacao:
1. . Comece na Dictionary: Initial Screen.
2. Digice 0 nome de tabela no campo Obje ct Name .
3. Escolha 0 botao de opcao Table.
4. Pressione 0 bocao Create. A t ela Di ctionary: Table/Structure:
Change Fields eexibida.
5. Digite urn textc curto, escolha a classe de entrega A e colo que uma
marca de verificacao em Tab. Maint. All owed.
6. Di git e os nomes de campo e de e1ement o de dados na parte inferior
de tela.
7. Coloque uma mar ca de verificacao nos doi s campos para indicar que
eles formam a chave primaria.
8. Pressione 0 bctao 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 elevado de volta atela Dic-
tion ary: Tab le/ St ruc ture: Change Fields.
10. Pressione 0 botao Techni cal Set tings na barra de ferr amentas Appli-
catio n. A t ela ABAP/4 Dictionary: Maintain Technical Settings e
exibida.
11. No campo Data Class, digite APPLO (APPLO com urn zero, na o
APPLO com a letra 0).
12. Digite a (zero) no campo Size Category.
13. Pressione 0 batao Save.
14. Pressione 0 batao Back. Voce e.levado de volt a para atela Dictionary:
Table/St ructure: Change Fi elds.
15. Pressione 0 botao Activate na barra de [erramentas Application. A
mensagem "was act ivat ed" aparece na berra de status e 0 campo Status
contem 0 valor Act . .
Procedimento de criccco de ta belo de verificccuo
A seguir apresentamos 0 procedimento de criacao para a tabela de verificacao
- - tOOS. Se voce tiver problemas, cons ulte a se<;ao de diagn6sti co e solucao de
problemas relative ao procedi ment o de criacio de t abelas rransparentes para
dominies preexistentes e elementos de dados no Di a 3.
S ( m N u . M ~ lnicle a ScreenCam "Howto Create Check Table ' . tOOS" agora.
Estes carocteristicos
sao herdodos
do dominic
elerne nto de dodos
compos
tcbelcs
_ dominic
chcr
3
,",,005
land1
Tobelade
verifico<;oo
Nome de DE PK
mlto 1
landl
"
~
pe: chcr "" /
type:
n: 3 len:
I
ztxlcnd l
ztxlondl
TYPE: CHAR
LEN,3
Nome de campo
"
I,
Fig ur a 4 2
Este eurndiogromo
do compo de chcve
estrangeiro, docompo
de tobelo de
verificoc;lio e do
dominiccomumque
eles comportilhom.
mandt
l andl
x mandt
- -1andl
Escolha 0 caminho de menu Utilities- c-Create Entries para inserir c s
dados em sua tabela de verificacao recent emen te criada. Insira seis linhas com
valores 1andl de us, CA, DE, rr, J P e AU.
I
,
I
~ ..--.d
...........
148 APRENDAEM 21 DIAl ABAP/4
w ...


w wv


V.W!''I
..;
DJA4: 0DATADlcnmURY, PARTE2 149
Procedimento de criocco de chave estrangeira
Inicie 0 ScreenCom "How to Create a For eign Key" agora.
Para criar uma chave estrangeira:
1." Comece na Dictionary: Initial Screen.
2. No campo Object Name, digire 0 nome da tab ela que epara conter
a chave esrrange ira ( - - -1fal). .
3. Escol ha 0 boeso de Table.
4. Pressione 0 botao Change. A t ela Dictionary: Table/ St ru cture: Chan-
ge Fields eexibida.
5. . Posicione 0 cursor no campo que esci para torn ar- se a chave es-
trangeira (l and2).
6. Pressione 0 botao Foreign Keys na berra de fer ramentas App licati on.
A tela Create Foreign Key sera exibida (veja a Figura 4.3).
7. Digite urna descricao da chave estrangeira no camp o Sho rt Text , por
exemplo, Country Code val idat i on.
8. Digite a nome da tabela de verificacto ( - - - t0 05) no campo Check
Table ou de urn cliqu e na seta para baixo e escolha ciaIista.
9. 0 pop -up Change Foreign Key aparece. Ele declara Check table name
was created or changed. Generate a proposal for fi e1d assi sn- ,
ment? Pressione 0 borso Yes.
10. Voce elevado de volta atela Create Foreign Key. Os names de
de tab ela de veri ficacao e os nomes de campo de chave estrangeira sao
exibidos. (Os names de campo de tabela de verificacao sao - - t005-
mandt e - - - t005 - l and!. Os nomes de campo de chave est rangeira sao
.- - l fe l -mandt e - -lfal-landl. )
11. Pressione 0 botac Copy. Voce e levado de volta atela Dictionary:
Table/Structure: Change Field s e a mens agem "Foreign key was
transferred" aparece na barra de Status . Os campos Status contem os
valores Rev; sed e Not saved.
12. Pressione 0 batao Activate na barra de fer ramentas Application. A
mensagem "was activated" aparece na barra de st at us. as valores nos
campos Status sao agora Act . e Saved.
Voce acaba de criar urn relacionamentc de chave estrangeira entre as
tab elas - Hal e - tOOS. ---Hal-landl e o campo de chave estrangeira e
- - - tO05 e a tabela de verificacao. A interface com a usuario validara a valor
dentro do campo _. -Hal-landl con tra os valor es na colun a - - - t 005-landl.
Fi gura 4 3
Atela Creat e Foreign
Keyeobe compos de
tobelade verificaqdo e
seus compos de chove
esfrangeiro ossociodos.
Testa ndo 0 relacionamenta de chave estrangeira
Se voce encontra problemas, 0 seguinte procedimento e descrito em mars
detal hes na pr6xima seC;ao. Para t est ar sua chave esrrangeira:
1. Ini cie na tela Dicti ona ry: Table/S tructure (qualquer alreracdo ou
modo de exibicso) .
2. Escolha 0 caminho de menu Utilities-> Crea te entries.
3. Digire um valor no campo de chave estr angeira (c6digo de pais). ,
. 4. Pressione a tecla Enter. Se a valor nac for localizado na t abela de
verificacao, a mensagem "Entry do es not exist (please check your
ent ry) " eexibida.
Desco briodo a coluoa CbeckTable
Dep ois de criar uma chave est rangeira, a nome da tabela de veri ficacao aparece
na coluna CheckTable na tela Di cti onary: Table/ Struct ure. Se urn campo for '
uma chave estrangeira, a coluna Ch eckTable conrera 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 CheckTable.
autorn6tico de.compos de chave estraogeira
Quando cri ou a chave est rangeira, voce nfio teve de especificar os campos que
devem pa rricipar no relacionamenro de chave est rangeira - 0 sistema as
deterrn inou auromaticamente. Esta explica como 0 sist ema determine
esses names de campo .
. ..'-.
150 ,PRENDA EM 21 DIAS "'P/4
DIA4;OOATADl aJONARY, PARTE 2 151
Rel aci o'nando as chaves estrangeiras com a seta
para baixo e a ajlJdo F4
Em uma tela, se voce coloca 0 cursor dentro de urn campo de chave
estrangeira, uma seta par a baixo aparecera no fim do campo de entrada. Essa e
a ajuda F4 . Se voce der urn clique na seta para baixo ou pressionar a teela F4, .
uma Iista de possiveis entradas vdlidas eexibida. Essa lista e0 conteudo da tabel a
de verificacao. Nessa list a, as colunas de chave primaria da tabela de
sao exibidas, excluindo mandt.
i
I
I
I
I
I
I
I
!
f

a titulo de coluna e a lorguro nos listos de ent rodas 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 relacionamento de
chave estrangeira que voce criou em - - -1fal- 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. No campo Command, digire /nse16.
3. Pressione a tecla Enter. A Data Browser: Initial Screen eexibida.
4. Digite - - - 1fal no campo Table Name.
5. Pressione 0 botao Create Entries na barra de ferramentas Applica-
tion. A tela Table Insert eexibida.
6. Digire qualquer valor no campo de numero de fabricante, por exem-
plo, MY-V!.
7. Posicione 0 cursor no campo Country Code (landl). .Embora uma
seta para baixo no fim dele, nao a pressione ainda.
8. Digite 0 valor xx no campo Country Code.
9. Pressione 0 borso Save na barra de [erramentas Standard. A men-
sagem "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 clique na seta para baixo ou pressione a tecla F4. Urn pop-up
contendo as colunas de chave primdria de tabela de verificacac
- - -tOos aparece.
11. De urn clique duplo em us. 0 pop-up desaparece e 0 valor no campo
c6digo de pais muda para US.
12. Pressione 0 botjc Save na barra de [erramentas St andard. A men-
sagem "Database record successfully created" apar ece na barra de
status.
o relacionamento de chave estrangeira oferece urn mecanisme para
validar os dados inseridos pelo usuario na tela . Se 0 campo for 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.
lnlcie a scree ncom "Using Q Foreign Key to Provide F4 Help" agora.
Durante a de uma chave estrangeira, voce colocou 0 cursor no
campo de chave estrangeira e pressionou 0 botao de chave estrange ira e 0
sistema gerou uma proposta de chave escrangeira consistindo em pares de
campos. Em cada par, urn campo se origina da tabela de verificacao e 0 outro
da tabela de chave estrangeira. 0 numero 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 t entara 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 dominic que a campo de tabela de verificacao. Se isso nso
funcionar, ele tentard localizar urn campo que tenha 0 mesmo tipo e compri-
menta de dados. Se ele encon trar mais de uma coincidencia, selecionara urn e
advertira voce de que a atribuicac eambigua. 0 processo erepetido ate que
todos os campos de chave primaria da tabe1a de verificacao sejam emparelhados
a urn campo da t abela de chave estrangeira.
NOVO... Alem do ojudo Fl. voce tcmbem pode oferecer alga chomodo oiudo F4.pora
lERMO r a vsucrlc. Aojude F4 eume listo de vclores volidcs que 0 usvcric pede digitor
em um compo. A flm de obter ojudo F4, a usuoria posiciono 0 cursor em urn ccmpo e
presslonc Q teclc F4. Aelude F4 tcmbe meconhecidc como possfveis entrodos de oiudo,
porque consisfe em umo listc de entrodos permltidos no compo. Os dais termos s60
vtiluodos intercambiovelmente pelo SAP.
Quando voce cria uma chave estrangeira, a ajuda F4 eautomaticamenre
oferecida para esse campo.
$CRHHCAM
152 APRENDA EM 21 DIAl ASAP"
DlA 4: 0DATA DICTIONARY, PARTE 2 153
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. Como 0 cursor esta em reg; 0, e1e
se torna 0 campo de verificafiio da chave estrangeira composta. Embora a chave
estrangeira seja composta de diversos campos, apenas urn desses campos
acionard uma verificacao contra 0 banco de dados . Como reg; 0 e0 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 ciachave estrangeira. Se 0 campo de lverificar;aoestiver em branco,
nenhuma verificacfo efeita mesmo se as outros campos contiuerem oaiores.
I
f
,
,
i
t
,
,
;
I
I
relacionamento
de chove estrongeira
Tobela de

ztxt005
ccmcc de verflcocco. Umvalor nesse
compo ad ona a verthcocec
LOOrr LOrEr
o
us FL CA ON
CA ON CA NS
US A US AK
US GA US Fl
DE 02 US GA
DE 01 DE 01
-
DE 02
Iobelo de chcve
estrongeiro
ztxllal
chcve estrongelra"
composto
Como com a chove estrangeira simples, os names de dorofnlo do
campo de verificac;aoe seu compo ossoclcdc no tcbelc de vertficocco
devem cai ncidir. Entretcntc, quando a chcve estrongeiro ecriado, as
demais names de domin ios no chcve estrangei ra composto nco tem
de coi ncidirj 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 es-
trongeiro serao imprevisiveis. Por essa roz60, emboro 0 R/3 nao
imponho que todos os names de dominio de umo chove estrangeira
composto coincidom, isso ebasto nte desej6veL
Em geral. quando alterar 0 tipo ou a compnmento dos dodos de um
campo em umo outro chave estrangeira composto que nao 0 compo de
voce deve confenr se a chove estrongeira e os campos de
tobelc de estoo vfi lizondo 0 mesmo dominic. Se naoestiverem,
voce deve otuoliz6 los para ter 0 mesmo tipo e comprimento de dodo.
Umo falho nissoresuhor6 no operoc;co imprevislvel do chove estrongeiro.
Uma chove
estrangeira composto
volidondo a .
combino; oo de regioo
e de poisemrelo<; Ci o
6 lobelo de verificor;Cio.
figmg 4 4
NOVO 'rr.... Umo chove estrongejro composta eumo cbcve estrongei ro composto
mAIo ou mcis campos. Emoutros polovrcs, umo verificcccc efeito para comporar os
dols compos no tcbelo de cbove estrangeiro comas 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, somente urn compo no tela ocionor6
a verlflcococ de chove estrongeira composto.
MOVO Quando voce eric umo chove estrongeiro composto, 0 compo em que voce
URMO rea lmentedefine a chove estrongeiro echcmodo compo de verifica<;ao. Somente
um volor nco nulc no compo de verificccco 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 enecessaria. 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 atabela de verificar;ao. Comumente, ztxt005s- 1andl tambem
deve servalidado contra ztxtOOS- l andl (veja a Figura 4.4).
Chaves estrangeiras e progTIlLLm UUOL:l sc..!eOWmLl l oW! t e- _
Os programas em late que leem arquivos sequenciais au outras de
dados que nao a tela e atualizam 0 banco de dados diretamente devem validar
os dados. Urn programa desse ripo deve ser codificado de uma destas rres
manerras :
0 programa deve passer as dodos per uma usuario
chamando uma rransacao que 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 Data
Communications) e foi mencionada anterio rmenre na "Descc-
brinclo as chaves est rangeiras". BDC e a tecnica padrao utilizada para
importa r dados no sistema Rj3.
Ele pode canter insrrucoes select que executama verificacao de chave
estrangeira. Essa tecnica e menos confidvel, porque os programas
devem ser atualizados se novas chaves estrangeiras forem adicionadas
au se existirem alt eracoes.
Ele pe de passar os dados para m6dulos de funljao especiais que
executam as duas verificacoes de chave estrangeira e atualizacoes de
banco de dados. A SAP cria esses modules de funljao (chamado BAPIs
ou Business APIs) e os forne ce com 0 sistema R/3 .
Chaves est ro ngei ro s compostas _
154 " RE NDA EM 21 DIAl
DIU 0DATA DI CTI ONARY, PARTE 2 1:>5
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 linhana tabela de chave estrangeira para cada
Iinha na tabela de verificacao.
N: Hasempre 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 eimpostapelo sistema R/3. Especificar a cardinali-
dade eopcional e a siste ma nao verificara a cardinalidade para determiner se
as valores de X significam:
1: Se 0 prograrna aplicativo exclui uma linha da tabeia de verificacao,
tambem excluini as Iinhas correspondenre s da tabela de chave es-
rrangeira. 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 .onde 1andl '" US. Em outras palavras , se houver urn valor
na tabela de chave estrangeira, haverasempre uma e apenas uma linha
tendo esse valor na tabela de verificacao.
C: E possfvel excluir da tabela de verificacao sem exc1uir as linhas
correspondenres na tabela de chave esrrangeira. Em out ras palavras,
pode haver valores na tabela de chave estrangeira sem valores cor-
respondent es na rabela de verificacao,
as valores de Y significam:
Figu ra 4....A....--
A definio do cho ve
estrongeirc mostrodo
no Figure4.5.
Volores v6lidos no cliente 800
Volores v6lido$ no clteete
Volores vclldos no cllente 900
Tobelo de

",,1(105
700 CA ON

700 US Fl
800 CA NS

800 CA ON
800 US GA
900 DE 01 }
I US Fl
I US GA
I US GA
I CA NS
I CA ON
I DE 01
I
DE 01
cutros
compos
I
700 I
800 I
800 I
800 I
800 r
900 r
900 I
I I
t
Tobelo de chove
estrongeiro
ztxIfa1
MANDT LANDl REGIO tv\ANDT lANDl R.EGIO
Se voce criar urn relacionamentc de chave estrangeira para uma tabela de
verificacao contendo mais de urn campo na cbave primaria, todos os campos
de chave primaria da tabela de verificacio deverao ser incluldos na chave
estrangeira. Nero todos precisam ser verificados [veja a "Chaves es-
trangeiras genericas" a seguir) , mas todos devem ser incluidos.
Como a maioria das tabelas de verificacao conrem 0 campo mandt, esse
campo eparte da maioria das chaves estrangeiras (veja as Figuras 4.5 e 4.6).
In c1uindo ma ndt na tabela de verificacao, conjuntos de valores validos e
independentes podem ser defini dos para cada cliente de logon e eles podem
diferir entre clientes. Essa capacidade ebastante desejsvel para sepa rar as dados
entre clientes e assegurar que eles sejam completamente independentes urn do
outre.
A ajuda F4 escd apenas disponfvel no campo de verificacsc de uma chave
est rangei ra comp osta. Quando chamar a ajuda F4, eodos os campos de chave
primaria da tabela de verificacsc serao exibidos . A coluna contendo 0 campo
de verificacso sera destacada na list a. As larguras e tftulos de coluna vern do
campo Header nos elementos de dados .
NOVD .... Acordino/idode do relccloncmentc de cbove estrongeiro descreve , para coda
TEilID r valor no tcbelo de quonfos linbcs de dodos soa permitidos no tabela
de chcve estrongeiro. Ela e Inserldo no tela Create Foreign Key {veja 0 Figura 4.3}. A
ca rdinolidode edescrita comoX: Y, onde Xse refere afcbela de e Yse refere
atobelc de chcve estrongei ra. Xpode cpencs ter as vclores 1 ou Ce Ypede ser 1, C, N
au eN.
Entenda a cardinalidade
Figura 4 5
Umo chove
composto
envofvendo 0 compo
mandt .
44 . .... _
156 APREH DAEM 21 DIASABAP/4 OIH OO'T'OICTI ONARY, PARTE ' I 157
essa atualizacao tern permissao para acontecer quan do urn prograrna em
ABAP/4 atualiza uma tabela. A (mica vez que a cardinalidade e utilizada e
quando voce cria urn objeto agregado no DDIC.
NOVOlio..
lElI',O "
Urnobjeto ogregado eum cbjetc ODICcomposfo de mois de ume fabe la. Um
exemplo de urn ob jeto egr egedo eumo visuaHzot;oo.
chave estrangeira, a ripe corret o de chave estrangeira sen do tipo campos/can-
didatos-chave.
Ao criar uma chave esrrangeira, voce deve escc lher carnpcs/candidatos-
chave se 0 campo de chave est rangeira for urn dos campos de chave primaria
da tabela au for urn candidato-chave. Caso contrario, escclba campos/candi-
dat os nao chave.
Quando voce cria uma chave estrangeira voce deve especificar a cardina li-
dade . Se nao especifica-la, voce sera incapaz de incluir a t ahela em urn ohje to
agregado.
Iipo de campo de chove estrangeira
o ripe de campo de chave estr angeira tambem deve ser especificado na mesma
tela que a cardinalidade quando voce cria a chave estrangeira (veja a Figura 4.3) .
Ele pode ser urn dos segui nt es valor es:
Campos/candidaros-chave
Campos/candidates nac chave
Campos-chave de uma tabela de text o
Campas-chave
Escolha Key Fields/ Cand idate s seo campo de chave est rangeira for urn dos
campos de chave primar ia da tabela de chave estrangeira. Escolha Non-Key "
Fields / Candidates se nao for. Por exemplo, suponha que a t abela tl seja
compost a de campos fl a fl Oe que seus camp os de chave primaria sejam fl,; f2
e f3. Se voce fosse definir uma chave estrangeira no campo f3, Key Fields/Can-
didates seri a 0 tipo correro, porque f3 epane da chave primaria. Se v6ci fosse
definir uma chave estrangeira rio campo f S, Non-key Fields/Can didat es seria
correto, porque f S nao eurn dos campos de chave primdria.
Candidalos-chave
NOVO'" Urn condidcto-dtove eurn compo em urno tobelo que , por si mesmo ou em
TERMO "" conjunt;oo com outro compo que n60 foz porte do chove prim6rio, pede ser
utilizodo poro identifi cor de moneiro unico urno linho no tobe lo. Emouiros polovros, se
houver umo moneira de selecionor 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 otilizodos unicomente
pore identjficor umo linho de moneiro unicoi bosiccmente eles podem servir como umo
chove prim6rio alternative .
Por exemplo. ztx1fa 1 tern urn unico campo de chave primaria que contem
urn identifi cador unico para cada linh. Se voce pressup6e que a combinal$ao
de erdat e ert i rn (data e hora de etambem (mica para cada linha, esses
campos de data e hora sao candidatos-chave. Se qualquer urn aparecer em uma
Campas-chave de uma ta bela de lexla
o sistema R13 suporta diversos idiomas 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.
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 perfil de
usua rio s6 se tomo efetivo no seu pr6ximo logon.
NOYO ..... Umo tobelc de fexto eurna tcbelc que contern descncees 'nc lingua falodo' de
rmlo " vclores em umo tobelo de veohcccec. Essos descricees 56 0 ormozenados em
v6rios ldlomcs. A chove prlrncric do tobelo de texto ec mesmo que 0 chove primcrlc do
tobe lo de verlftcocec, com a edie;oode umo colune spras (idiomo).
Por exemplo, a tabela ztxtOOS po ssui c6digos de patses nela. Os nomes
dos palses sao armazenados em uma tabela separada chamada ztxtOOSt
(most 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 tabela de texro.
A chave primaria de ztxt00 5t contem os mesmos camp os que a chave
primaria de ztxtOOS, com a de urna coluna spras (idioma}. 0 campo
spr-as contem 0 c6digo de idioma e ativa essa tabela para conter uma descricao
de divers os idiomas de logon.
A chave primaria de qualquer tabela de t ext o ecompost a dos campos
mandt e spras, seguidos pelo campo de validac;ao (ou campos); Urn QU mais
campos de seguem essa chave primaria.
Urn relacionamento de chave estrangeira edefinido em ztxt OOSt- l andl
para a tabela de verificac;ao ztxtOOS. 0 tipo de campo de chave estrangeira deve
ser campos -chave de urna tabela de texto.
_,I
:
_______J
4. Posicione a cursor no campo Country Code {l andl }.
0OATA DI CTIONARY, PARTE 2
1. Inicie a rransacao 5E16 (digite /nse16 no campo Command e pres-
sione a tecla Enter).
2. Digite 0 nome de tabela ztxlfal no campo Table Name.
3. Pressione 0 bcrao Create En tries na berr a de ferramentas Applica-
tion. '
$ClENC,Ul,.... lnlcle ScreenCom "Text Ta ble Demonstration: The Effect of the Logon Lon-
,. guage ogara.
Tabela 4.2
Conteudo do tabelo ztxOO5
landl
us
CA
DE
IT
JP
AQ
CC
Ta bel a 4.3
Conteudo do tobela ztxt OOSt
spras
l andl lan dx
E
CA
Canada
D
CA
Kanada
E
DE
Germany
D
DE
Deutsch' and
E US
United States
D
US USA
E IT
Italy
D IT
Italien
E
JP
Japan
D
JP Japan
E AQ
Ant arcti ca
D AQ
Antarcti ca
E
CC
Coconut Islands
D
CC Kobinseln
Quando as linhas cia tabela 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 linhas da rabe la de t exto tendo 0 mesmo c6digo de idioma
que a idioma de logon atu al do usua rio aparecem na lista de ajuda F4.
Por exemplo , a tabela de texto ztxt005t contem urn relacionamento de
chave estrangeira de ztxt 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 usua 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 eigual ac idioms de logon atual sao exibidas. a resultado
e que 0 usuaric ve as descricoes em seu idioma de logon para os codigos em
ztxl f al.
a conreudo das tabelas ztxt005 e zt xt 005t emostrado nas Tabelas 4.2
e 4.3.
HOVO ...
TIiMO " sistema R/3 que a fobelo de chove esfrongeira eumo fobelo de felda. Quando
voce escoihe esse tlpo, a primeiro descrtcco que segue a chcve primorio eexibida no
ajuda F4, no idiama de logon do csuoric. Pcrtcnto, esse tipo de chcve tem duos
propriedades esped ais:
Relocionando as tabelas de te xto com a ajuda F4
F ig u r a 4 7
Atcbelo de fexto
pore ztxt005 eo
ztxt005t. flo eo
comp osto de compos
mandt, spros,
landl, landx e
natio.
158 , APREHOA EM 21 elAS
160 APREWOAfill 21OIAS
"
,'
"
Ocampo ztxmara- st of f cont em 0 numero de urn material de risco . Se 0
campo nao est iver em branco, 0 mat erial exige tratamento especi al; 0 nu me ro
de stoff indica 0 tip o de tratamento exigido. O s numeros de rraramento sao
definidos na tabela ztxmgef, que est ailustrada na Fi gura 4.9. No nosso exemplo,
suponha que zt xmgef con tenha uma linh a com st off igual a 1. Essa linha indica
NOVO llr.. Uma chove estrongeiro generi co e umo chove estrongeira no qual um dos
ltRMO" compos de cbove prim6rio des campos de tobelo de verificccoo e morcodo
como generice . Qu ando urn campo de chcve prim6rio e morcodo como generico, ele
nco ternurncorrespondente notobe lo de chove estrongeira e nco porticipono venficcceo.
Por exemplo, dentro do aplicarivo Mat erial s Management, a tabela mara
e a tabela Material Ma st er. Ela comem a lista-mestr e de ma teriais utilizad os
par a fabricacao e os atri buros de cada ma terial.
o programa de configuracfo para este livro crio u uma tabela ztx ma ra
semelhante a mara. Os campos de zt xmar a sao mostr ados na Figura 4.8.
Chaves estrangeiras genericas
DIA 4:0DATA DICTIOHARY, PARTE 2 161
Chave s estIlmgeiros canstantes e genericas
Lembre-se quand o voce cria urna chave estrangeira, todos os campos
de chave primaria de tabela de verificacao d evem ser inc1uidos no relaciona-
mente de chave estrangeira. Entretanto, as vezes, voce po de nao que rer execu-
tar uma verificac jo em rela<; ao a to dos esses campos . Em ourras situacoes, voce
po de desejar verificar em relacio a urn valor constan te. Em qualquer urn desses
casos, voce pode definir uma chave estran geira gen erica ou consrante.
F igurg 4 8
A tobeloztxmaroe
semelhonte alobe/a
mara de the R/3
MaterialMosler.
;,
,
1.-"
t,
...
,
;,J,.
.'
,
I
,
Nome de DM
t ext15
Nome de campo PK Nome de DE
mandt x mandt
spras x spras
1andl x - - -1andl
1andx - - -1andx
5. Pressione a tecla F4 a u de urn clique na seta para ba ixo no fim do
Urn pop-up aparece exibindo colunas das duas tabelas ztxt 005
e ztxt005t . Observe que a col una 1andl da tabela ztxt005 e exibida e
as descricoes de lingua inglesa da tabela ztx tOOSt sao exibidas.
6. Agora efetue logon novarnen te (voce nac precisa efetuar 0 logoff
primeiro). Dessa vez, digite 0 par a Deutsche (alemao) ern Language
Field de tela de logon 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.
Criando uma tabela de texto e uma chave estrangeira para ela
Agora' e uma boa hera para tenter criar sua propria t abela de texro. Utilize
ztxt005t como urn modelo. Sua t abela de tex to sera ch amada - - - t 005t e
conterd os campos que utilizam os elementos de dados e domini os mostrados
na Tabela 4.4. Voce rambemted de criar a elernento de dados - - -1 andx. Utilize
o dominio SAP existence textl5 para seu novo elemenro de dados. Urn x na
coluna PK indica os campos que formam a chave prirnari a.
Depois de ativar - - -t005t , digite os dados nela utili zando 5E1 6. Utilize
os dados de exemplo mostrados na Tabela 4.3.
Agora erie uma chave estrangeira em _. - t005t -1andl. Siga 0 procedi-
mento de cri a<;ao de chave estrangei ra fornecido ant eri ormente. Utili ze
- t005 como a tabela de verificacao. Na t ela Create Foreign Key, especitique
urn tipo de campo de chave estrangeira nos campo s Key de uma tabela de rext o.
Voce pode querer revisar a scr eencam "How to Creat e a Foreign Key" ant es
de comecar.
Depois de criar sua chave est rangeira, siga 0 prccediment o para 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,
dessa vez especificando urn idi oms de logon 0 (alemao) e repita 0 teste. Dessa
vez, voce devers ver as descricoes alemas no passo 11.

.. ..
/
'W'W'W''W''W ......... ... ...
.
162 ,pm" EM " DIASAB AP/ '
urn procedimento de tr atamento que exige luvas. Atualizar urn material e
colocar 0 mimero 1 no campo ztxmara-stoff para 0 . mate rial indica que 0
material exige tratamento especial com luvas.
_1;,1",1

-.," - , . ' ..
. . ,.. $t. -
'f';:', .
A tabela de verificacao paraztxmara-s toff eztxmgef. A definicsc de chave
est rangeira emos t rada na Fi gura 4.10.
Essa chave esrrangeira valida as valores inseridos em e
assegu ra que apenas numeros de tratament o validcs existem na tabela at xme re.
I nfeliz mente, regu lamentos de rratament o podem variar de aco rdo com as
regioes geogrdficas. Por tanto, a chave primariade : t xmg e: ecompo_sta de sto,f:,
r eg; a e 1andl .Entretanto, ztxmare nac ccntem qUalsquer informacces geografi-
cas - essas informacoes encontram-se nas tabelas da fabrica.
Lernbre-se, uma chave estrangeira deve incluir todos os campos de chave
primaria da tabela de verificacao. Portanto, regia e 1andl de ztxmgef aparecem
na definicac de chave est rangeira . Entretanto, para os proposiros de zt xmar a,
vali dar zt xma r a-s t aff contra zt xnlg ef - st aff e suficiente, as inforrnacoes de
posicao nao exist em em ztxmara e nao imporram para essa validacao . Basta saber
que 0 mimero de t ratament 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 ignorados. Para garantir que esses
campos serao ignorados durante a validacao, d es sao definidos no re laciona-
mento de chave esrrangeira como genericos. A rnarca de verificacao na caixa de
selecao Generic na tela Create Foreign Key faz isso.
I
.,
i
0DATA DICTIONARY, PARTE 2
Figura 4 10
Umo marco de
verificor;oo no coixo
de selet;60 Generic
indicaque um compo
deve ser ignorodo
durante 0 verificor;oo
de chcve eslrongeiro .
Quando essa chave estrangeira everificada, somente a combinaci o de
mandt e stoff deve existir na tabela de verificacao. 0 r eg; a e os campos 1andl
sao ignorados.
Chaves estrangeiras constontes
HOVO.... Chaves es/-rcngeiras canstonfessao chcves estrangeiros 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 a Figura 4. 11).
Por exemplo, imagine que voce precise criaruma nova t abela de fabricante
ztxlfalus como ztxHal contendo ap enas os fabri cante s dos EUA, mas, par
razoes de compat ibi lidade, voce quer que des tenharn exatamen te a mesma
estrutura que ztxl fal. 0 c6digo de pars nessa rabela semp re sera.us.Vo ce pode
criar uma chave estrangeira constante para restringir os valores na tabela
ztxlfalus. Urn exemplo da definicao emostrado na Fi gura 4.11.
Chaves estrangeiras odoptodos
NOVO.... Nemlodos as compos de choveestrangeirode uma chcve estrongeiro composta
TtRMO precisomresidirno mesmatabela . Se eles nee residirem, ISSOeconhecido 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 emvez dissoem
ztx1falcc. Quando voce fosse crier a chove estrangeiro no compo de regioo, voce
clteroric 0 compo de tobelc de verificalioo de 1andl para zt xl f al cc-l andl [ve]c a Figura
4.12}. Avohdcceo no compo regi averlflcor io se a ccmbincceo de mandt e re g; 0 existia
em zt xt 005s e se 1and1 existia emquolquer Hnha de ztxt 005cc.
163
'!' '!' '!' 11 !!f 'I' .. 'I' ... .. .. .. ... ... ... ... ... ... ... "II!"
--
w w
-
-
-
-
_ 'W
- -- --- -
-
-
- - -
164 APR!NDA! M21 OIlS
DIH0DATA DICTIONARY, PARTE 2 '165
Defini nd o uma tabel a de valor
ztxtOOS
tcbelc de
Elemento de dodos
Domlnio
Sempre que voce cria urn relacionament o de chave esrrangeira, 0 sistema
olha no campo de rabela de valor. Se houver urn nome de tabela af, ele propoe
esse nome como a tabela de verificacao.
Alguns Ieirores terao difieuldade com esse conceiro, entac YOU explica-lo
com det alhes na a seguir.
Entendendo 0 campo Value Table
A fim de entender 0 prop6sito do campo Value Table, voce deve estar familiari-
zado com 0 "quadro geral'' do projeto e des envolvirneneo do banco de clades .
Comecarei descrevendo esse quadrc 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 cada uma contera. Ele normal-
ment e designarf certas tabel as para serem tabelas de verificacgo a fim de validar
os dados dentro de outras tabelas. POl' exemplo, uma t abela de verificacao de
c6digo 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 t o 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 evalidar
dados. Voce pode erial' diverscs relacionamencos de chave estrangeira vincu-
lando muitas outras tabelas com uma unica tabela de verificacao. 0 campo
Value Table no dominio existe para simplificar a t aref a de erial' esses relaciona-
mentos.
Antes de continual', suponha que 0 campo Value Ta ble dentr o do dominic
tenha umnome completamente diferente. Limpe 0 termo "ValueTable" de sua
mente e imagine que esse campo echamado "Default Chec k Table".
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
a compoValue Tobie
dentrodo dominio
contern0 nome de
limo tabelode
verincolioo.
Dentro do domlnio esta 0 cc mpc lobe/a de volor. Atobelo ldentificodo dentro
desse compo oferece as segu intes fun<;6es para 0 dominic:
11010 ll.
URIIO"
Ela eautomaticamente proposta como a tabela de verificacfo quando
cria uma chave est rangeira
Ela oferece uma lista de valores para a ajuda F4 (posslveis entradas),
mas nac oferece validacao
Exemplo de umo
chove eslrongeirc
odoptodo .
Fjg ura 4 12
Fi gu r a 4 1 1
o compo pots como
umo choveestrongeiro
ccostonte.
0111 t 0 DIITA DICTI ONARV, PARTE 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 . Voceentac 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 que voce acabou de eriar
no campo Value Table-mas lernbre-se de que 0 chamamos de campo Default
Check Table.
Agora, voce criaria Dutra tabela, no nosso exemplc eztxl 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 po-
deriamos salva-la.
Nesse exemplo, 0 sistema automaticamente criou a chave estrangeira para
nos, porgue colocamos 0 nome da tabela de verificacfio no campo Value Table.
Dando tres cliques de mouse, criamos uma chave estrangeira! 1sso, em essancia,
ea principal razjio para 0 campo Value Table. Ele existe para fazer a criacao de
chaves estrangeiras mais Iacil.
Para resumir, 0 campo Value Table e utilizado de duas maneiras pelo
sistema: .' '"
A tabela de valor {lembre-se de imaginar a Default Check Table)
automaticamente eproposta como a tabela de verificacao quando se
cria uma chave estrangeira.
A tabela de valor oferece uma lista de valores para a ajuda F4, mas
nenhuma validacao efeita nesta lista.
o campo Value Ta ble como proposta de Check Table
Nessa adicionara uma tabela de valor para urn dominio e observarf
seu efeito na de uma chave estrengeira.
-Edit e 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 procedi-
mento abaixo.
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/St ructu re:
Change Fields eexibida.
5. Posicione 0 cursor no campo de chave estrangeira (' andl }.
6. Pressione 0 botao Foreign Keys ria barra de {erramentas Application.
A tela Change Foreign Key eexibida.
7. Pressione 0 batao Delete (a lixeira) na parte infe rio r da janela.
8. Voce elevado de volta a tela Dictionary: Table/Struct ure: 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
(1andl), 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. Os campos Check
Table e-as campos Foreign Key sao pre enchidos.
11. Pressione 0 borao Copy. Voce elevado de volta atela Dictionary:
Table/Structure: Change Fields. A mensagem Foreign keywas 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 aparece na barra
de status. as campos Status Ieem Act. e Saved.
Com urn nome de tabela no campo Value Table no do min ic voce po de
rapidamente e com confianca erial' chaves estrangeiras.
Redescabrindo a cal una de CheckTable
A coluna CheckTable na tela Dictionary: Table/Structure executa duas
func;6es:
Se urn campo for urna chave estrangeira, a coluna CheckTa ble con tera
o nome da tabela de verificacao para esse campo.
Urn asterisco (*) nesra coluna significa que uma rabela de verificaqao
nao foi definida para 0 campo, mas uma tabela de valor exisre no
domfnio.
"':I.It t.1Jt:I,X::X:XI" I. II w w w w ..
168 APRENDA EM21 DIAl AB AP,.
0DATADICTIONARY, PARTE 2 169
Hoi uma excecao para 0 segundo ponto acima. Se voce atualmente est iver
exibindo uma tabela de valor, 0 ast erisco DaD aparecera no campo cujo dominic
se refere atabe la de valor que voce est a visualizando.
.. ,, ;.- ;,)5
.., :1 -
Os campos monetarios tern esses requisit es:
0 ripe de dado no domlnio deve ser CURRo
Ele deve estar vinculado comurn campo do ti po CUKY contendo a chave
moneraria, como USD (d6lares norte-americanos), CAD (dolares
canaden ses}, ITL (lira italian a) e assim par diant e.
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 pagamento (nome de campo wrbtr) e urn campo- chave monetaria (normal-
mente waer s) para indicar completarnente a quanridade e a chave monet aria
nesse pagamento. Para vincular as dois campos entre si, voce dari a
urn clique duplo no nome de campo monetario na t abela e entao inseriria a tabela
de chave mone raria e a nome de campo no s campos Refe rence Table e
Reference Field (ve]a a Figura 4.14) .
NOVO A chove mone t6rio econhecido como compo de refer@: ncio Trata se de outro
r ccmpo no mes rno tobelo au em outro tabela. Esse compo d'eve ter-a fipo CUKY
(chove monet6rio) no do mfnlo. Ele indica a chove monet6rio pa ra a campo monet6 rio
relerenctcdc.
Elg ll r a 4 14
Os compos de
referen cio no lela
Display Field.
l
...;'"
Ulilizando a labela de valor como uma lisla de possiveis
va la res
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. Somenre uma chave es-
trangeira valida as valor es.
Com apenas uma tabela 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 tabela de valor. N ee hi nenhuma indicacao na tela de que a
funcional idade F4 esta disponfvel t: nenhuma verificacao efeita se urn valor for
inserido no campo .
Essa funcionalidade 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.
NOVO Imagine que voce queira ir 00 ba nco e pedir 1.000. 0 coixa provave lmenle
TtRMO "'- perguntoria NMil a que? " Voce pode responder NMil delores". Ou voce pode
ser ate mois especffico e pedi r "'1.000 dolores norie-omericnnos". Quontios monet6rias
no R/3 sao ormozenad as em dots campos: um armozena a quentia nurnerico real (l.DOO)
e outro ormczena a moneloria {USDJ. 0 compo nomerlco de quentio echcmodo compo
monercnc e a outre compo echamado compo-cbcve monetOrio.
o que muitos pessoo s se referem como monet6rio erealmente urn
c6diga mon et6rio (USD para a d6lor america no, CAD para 0 dolor
ccnodense e ossim par diontel. ASAP utilize a pclovro "chove" como
urn sin6nimo para "c6digo
N,
entoo ela chama a compo que conte rn a
c6diga monet6rio "chcve manet6rio", isso se cpltcc 6 rnoloric dos
compos de c6digo no R/3; 0 c6digo de pais echamodo chave de pa is,
a c6digo de regiao ea chove de regioo e ass im por dionte.
O s campos mooet6rios
Campos especiais de Tabela
Dois ti pos de campos de tabe la precisam de tratament o especial :
os campos monect rios
as campos de quantidade
l
.os ca mpos de qu-oanoIlti.od.o .ou;dlf eL..- _
NOYO.... Urn compo de quantidode eurn compo que contem umo medido n.umerico. Por
milo r exemplo, esse compo pede conter uma de peso, tem-
pe ratura ou eletricidode. Para se r significativo, umc unrdade de rnedidc como librcs,
polegados, grous Fahrenhe it a u qullovolts devem ocomponh?-]o. Os compos de quan-
tidod e tern estes requisites :
.>
OIH0DAnOICT10NARY, PARTE 2 I 17
As diferencas entr e urna estrutura 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 uma tabela e uma estrutura 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 DDIC que define 0 layout do registro
e entdo atribuiria names a essa estrutura na instrucao t abl es nos dois pro-
gramas. Isso criaria uma area de trabalho identica para os dois prograrnas.
o procediment o para criar umaestrurura quase a mesmo para criar uma
tabela tr ansparenre. [Consulre as procediment os para criar uma tabela trans -
parenre.) As unicas diferens:as sao as seguintes:
Emvez do borfo de Table, escolha 0 botao de 0plSao Structures.
Os campos Delivery Class e Tab.Maint.Allowed nao aparecem.
As estruturas nao tern uma chave primaria.
NDVD .... Alemdos tobelcs, as esfruturos tcmbempodem serdefinidos no Data Dictionary.
TWO '" Como voce poderia espera r, umo estrutura corresponde 0 umc serie de campos
ogrupodos sob um nome comurn. Emuito semerhonte a urno tc belc. Como urno tobelo,
era pode se r vtillzcdc dentro de urn progr a ma no instru; oo tab l es para definir urnc 6reo
de trabolho.
Figura 4 16
Esses soo os o/ributas
de compo poro 0
compo ntgel'f. Note
que cs dois compos
ReferenceTobie e
ReferenceField
0 vInculo
perc 0 compo UNIT.
As estruturas no Data Dictionary
0 t ipo de dado no domin ic deve ser QUAN.
Ele deve estar vinculado a urn campo do tip o UNIT.
o campo UNIT 0 campo de referencia para 0 campo QUAN. 0 UNIT
pode estar na mesma tabela ou em outra 0 campo UNITco ntern aunidade
de medida para a medida no campo de quantldad,e. , .
Por exernplo, na tabela ztxmara, 0 campo ntgew cont.em 0 p eso de
urn material e 0 campo contem as unidades, como libras au
(veja a Figura 4.15) . 0 campo ntgew te ,:, urn t ipo de dado de e 0 tlpO de
dado de gewei eUNIT. Se voce der urn clique duple em que a tabela
de refe rencia eztxmara e a campo de referencia egewei (veja a Fi gura 4.16).
.,
I
f!
I.J
P
li
rl

t

APRENDA EM21 DIAS ABAPI4


Entendendo Includes
17:
.'., ,><1
DIA 4: 0DATAOl CTIOHARY, PAm2
Para visualizar a i ncl udes expandida dentro cia definiicao cia . . b I
Jh . propna ta e a,
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
INCLUDE, como mostrado na Figura 4.19.
.E.ig.1l..l:.a..-': 1 a
A estrufuro z t xaddr
contem as compos
de enderel;o que sea
induidos no tobefo
ztxemp l.
Flgut a 4 19
NOVO ... Acodeic de estrvturos cricdo incluindoumo estrvturo dentro de outro ' h d
TEi.UOr codeio de indudesoAprofundidode maximo de oninhomento no e c ome ,0
b 1 od . e ve e sc me nte
umc e p e ser mclu:do em umo codetc de includes. Emoutros pclcvros, voce nco
pode :ndu:r vmo tc belo dentro de outro.
o formulcirio
. [ NeW-XXXdo
tabela z t xempl
inclui 0 de
modo que ztxoddr
posso ser incluido
duos vezes sem
dup/ic:or os names
de compo.

I
I
j
I
,
j
i
I
I
I

1 It 'd 1: diE it' . ,,,,,.,
1... 'r. j/Moo ' ..... '_,; ; __ . ;, ... ?"-:: "
'iI' j x a 0 "" -:'0
,;;p- :-0- ;..l' :"; iot ;'-d-'Si",:UCiQ,iil;': t:'riCiliiic.licllll ril' :"lrille.<e.:;

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

il....; n .-.: ... \ :"': : ".: .. ,t o;,
UIDa estrutura pode canter outra estrut ura, Em outras palavras, voce pode
aninhar estruturas uma dentro da outra. Isso pode ser urilizado para reduzir a
manutencao agrupando campos juntos em uma estrut ura eenrac incluindo essa
estrutura dentro de outra estrutura ou mesmo dentro de uma tabela.
Por exemplc, urn endereco de uma pessoa ecomposto 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 endereco, 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 nome que
a nome na estrutura. Para incluir uma estrutura dentro de uma tabela, (au
dentrc de outra estrutura), digite . INCLUDE nacoluna de nome de campo einsira .
a nome da estrurura na coluna de elemento de dados.
Na Figura 4.17, a tabela zt xempl (tabele de empregado) inclui a estrutura
ztxaddr (veja ;1Figura 4.18), que consisee em campos de endereco stras (rna),
artDl (cidade); reg; 0 e l andl . A tabela ztxempl .portantc, contem estes campos:
zt xempl -stra's; zt xempl - ortOl . ztxempl e reqt 0 e zt xemp1-1andl.
Nenhum atributo t ecnico pode ser especificado, como classe dedados,
caregoria de tamanho au usa de buffer.
Eigur g 4 17
Atcbelode
z t xempl ccntem
um I NCLUDEpora
fazercom que os
campos de
ztxaddr seiom
odicionodos a ela.
174 APRENDA EM 21 DIAS ABAP/4
Indui ndo a mesmo estrutu ro djyersos yezes
Voce pede incluir a mesma estrutura diversas vezes dent ro de urna tabela se,
em vez de . INCLUDE, voce utilizar .1NCLU- XXX. 0 xxxrepresenta sua escolha de
quaisquer [reS caracreres . Esses treS caracteres serao acr escencados em cada
nome de campo que einclufdo para roma-lo unico.
Por exemplo, imagine que voce precise armazenar dois enderecos em
ztxempl : urn endereqo de casa e uma lisra de endereco. Como mosrrado na
Figura 4.20, ztxe mp12inclui a est rutura zt xaddr duas vezes. A primeira inclui ,
. INClU-Ol , [az com que U01" seja acrescentadc a cada urn dos na mes de campo
cia estrutura. A segunda, . I NCLU-02, acr escenta "02" a cada urn. 0 resulrado,
most rado na Figura 4.21, pode ser visto escolhendo 0 caminho de menu
Extras- c-Substructures->Expand All Subsrr.
rsra
, . ,.. .-. '4- . . . ... ;-- ......,, -.-. ;':: --.-.,.
'''I 51 if &hi ei"lt4E "1, 1,,1
;.1... l llt.li'" EJIo. LlI'io' Ilolo c-
if L._. . _ o 4: 'Xn M'rt E'-- .
Voce pede utili zer est ruturas para definir areas de t rabalho ide nricas
em divers os programas. Voce pode incluir uma est rurura dentro de
-out ras est rut uras e tabelas.
As chaves est rang eiras asseguram a integridade de dados execurando
validacoes na tel a e oferecem ajuda F4 para 0 usu i rio corn Iisea de
valores permissfv eis.
A tabela de valor oferece u.ma proposta para a tabela de verificacgo e
oferece ajud a H .
e As tabelas de text o suporte de diverscs idi omas para des-
cricoes no R/3 e especialment e para ajuda F4.
Dentro de uma tabela, cada campo monetario deve ser vinculado com
urn campo-chave monetario e cada campo de quanridade deve ser
yinculado com urn camp o que ccntem as unidades de medida.
As tabelas e as estruturas sao muito semelhanres. A diferenca principal
eque uma tabela tern uma tabela subjacente de banc o de dados e uma
esrrutura nao.
FigurQ 4 21
Resumo
Escolher 0
caminhode menu
Ex/ro->
Substructures->
Expond AllSubs!f.
fez os compos des
estrutvros oporecerem
no lisle.
As estrvtvrcs e tcbelcs no R/3 50 0 too semeihcntes que, quando voce
olha a definic;oo de coda Doto Dictionary, edlfkll diferenci6 las. Pora
determine r quo l voce estc olhondo, olhe 0 direito do compo de nome .
N voce vere ume tobelc Transporent ou Structure.
Fi g u ra 4 2 0
Alobelo z tx empl2
uti/izo 0 mrmu/6rio
.INCLU XXX do
incl ude
de modo que
ztxoddr posso ser
inc/uldoduos vezes
sem dup/icor 05
nomes de.compo.
, i
'!
Ii
i
I
I
1
As estruturas podem ter definicces de chave estrangeira?
Nao. Apenas Key Fields Of A Text Table empr ega funcio-
nalidade de sistema. a s outros nao [azem nada acontecer - eles
servem principalmenr e para documentacao.
Sim. Isso normalrnente e feito porque uma tabela que inclui
uma estrutura pode herdar defini coes de chave est rangeira deb.
Se quiser, voce pode desativar essa heranca ao incluir a estru-
t ur a.
o
o
o
1. Para urna chave estrangeira ser criada, 0 que 0 campo de chave
estrangeira e a campo de tabela de verificacic devemter ern eornum?
2. Qual ea sintaxe para inclusao cia estrutura zsl dent ro ciatabela ztl?
3. Qual ea prap6sito de urna tabela de texto?
4. Assumaque a tabela de verificacsc ze exisre e ternuma chave primaria
consistindo em mandt , fl e f2. Quais devern ser os campos de chave
primaria de uma tabela de rexro para zc?
5. Se voce cria urn campo mcnetario, que tipo de campo ele deve
referenciar?
as seguintes exercicios darso a voce pratica na cri acao de chaves estrangeiras,
campos especiais e estr uturas.
Exercfcio 1
Teste
Workshop
r... _ !
Nao, nunea atualizeasdefinicoe s deRDBMS dir etament e. Voce
s6 deve utilizer 0 DDIC do R/3 para alter ar as defini coes dentro
do banco de dados. Se voce atualizar 0 banco de dad os
mente, as defini coes de banco de dados e as definicoes de DDIC
do R/3 serso inconsistences e os resultados serao imprevisfveis.
Sim. Entretanto, na maiaria das vezes, as dados vern para seu
pr ograma vi a uma interface com 0 us udrio . A in te rface com 0
usuario valida as infcrmacoes antes de voce inseri-Ias no banco
de dados, po rtanto aschaves estrangeiras ja foram verificadas.
Mesmo quando impor tar dados de sistemas externos, voce deve,
utilizer BDC para arualizar as tabelas. Isso tambern impoe
integri dade re ferencial simulando sessoes de usudri o e passando
as dados ao programa via inter face. Entretanto , se voce atualiza
o banco de dados sem passar as dados pela interface com 0
usufrio, seu programa ern ABAP/ 4 deve ser escrit o cui -
dad osamence de modo que el e Dao tr ansgri da a integridade
referencial.
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?
Urn programa em ABAP/4 pede ignorar relacionamcntos de
chave estrangeira e inserir Iinhas que vi olarn a integridade
referendal?
o
o
o
o
P&R
-y
176 ""'D' EM' 1 DIAl """
o
o
Se exc1uo uma linha de uma tabela de verificacao, possa fazer
com que as linhas que tern 0 mesmo valor sejam automati-
camente excluidas da tabela de chave estrangeira tambern?
Nso. Esse recurso e normalrnent e definido "cascara em ex-
clusao" e DaO esta disponfvel no RJ3.
e rie uma tabela de de codi gc 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 as campos e sues corocterfsticas pera a tobela -tOOS

o
o ti po de chave estrangeira Key Fields Of AText Table faz com
que 0 sistema se comporte diferentemente. Os outros tipos de
campo de chave estrangeira tern qualquer funcionalidade par
tras deles?
Nome de campo PK Nome de DE
Cliente
mandt x mandt
Chove do pafs
1andl x
-1andl
178 "RENDA EM!1 DIAl ABAPI4
DIU0DATA rncnoNARI. PARTE! 179
Depois que voce ativou essa tabela, va ao domfni c - 1andl e digite
- tOOs no campo Value Table, entao ative-o. Utilize SE16 para adicionar
c6digos de parses asua tabela.
Ta bela 4. 1 Os ca mpos e sues corocter fsticos para 0 tobelo 0t 0059

Descriscio
Exerdcio 3
Exerdcio 2
0 t OOSs
- - -tOOS
Tabela de
verificDljOO
Tabel a de

otOOS
.00t005s
Len
4
Nome PK Nome Nome Tipo
de campo de DE de OM
Cliente
mandt x mandt
Chove de-pels
landl x l andl
C6digo de reg ioo
rect o x regi o
C6digo de cidode
citye x ct t yc - ci tyc CHAR
Nao se esqueca de criar os relacionament cs de chave estrangeira nos
campos land1 e regie.
Depois que voce ativou atabela, va ate0 dominio ci tyc e coloque t005g
no campo Value Table, errdo ative . Utilize 5E16 para adicionar c6digos de
cidade para a tabela 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 uma tabela de text o para - - tOOSg e arribua a ela 0
nome - - tOOShj as especificacoes sao mostradas na Tabela 4.8.

Nome PK Nome Nome Tlpo Len
de campo de DE d e OM
C1iente
mandt ,
mandt
Chcve de idiomo
spras spras tOO2
Chcve de pols
l andl x , andl
C6digo de regioo
reqt o x .0 .reg1 0
Exercfci o 5
Ta b e la 4 .8 05 compos e suos caracterfsticas para ta be lo 0 tDOSh
t005
Ta bela de Nome de compo PK Nome de DE
Cliente
mandt
,
mandt
Cbcve de pais
, andl x . 0-Jendl
C6di go de regioo
regio x _. -regi o
erie uma tahela de verificacic para 0 campo ci tyc na tabela-mesrre de cliente
_. knal que voce criou na Dia 3. Nomeieessa tabelacomo tOO59. Ela deve
canter uma lista de c6digos validos de cidade. As especificacces para ela
aparecem na Tabela 4.7.
Depois que voce ativou essa tabela, va no dominic - - - regi 0 e digite
- - t 005s no campo Value Table, entao ative-o. Utilize 516 para adicionar .
c6digos de regijo para sua rabela. Teste sua chave esrrangeira em 1and! rentando
inserir urn codigc de pars invalido. ,.'
Adicione relacionamentos de chave esrrangeira apropriados 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.
e rie uma tabela de verificacao de c6digo de pais:chamada t 005s. Ela sera
utilizada para validar todos as c6digos de parses inseridos em suas tabel as. As
especificacoes aparecem na Tabela 4.6.
Tabela 4 .6 Os campos e'sues caraderistices pare a tabela tOOSs
Exerdcio 4
Tabela 4.10 Compos odicionois e sues coroderisticas para ta bela knal
Exerdcio 7
I 181
Adicione mais dois campos para a tabela knal. As especificacoes sao
mcst radas na Tabela 4.10.
Len Decimal Tahela de

Tipo Nome
de DiY".
.Nome
de DE
Nome
de cempo
Descrisao
-t005g
Tabela de

180 I APRE NDA EM21 DIAS ABAP/4
Tabela 4.8 Connnuocdo
Descrit;ao
Nome PK Nome Nome Tipo Len
de campo de DE de DM
C6digo de cidode
cf tyc x cityc
Descrtcco
bezei
bezei 20 text20 CHAR 20
Ocampo eredi t 1 cont era 0 limite de credit c do cliente. 0 campo waers
contera a chave monetdria pelo qual 0 limite de crediro ser valido. Nao
de adicionar 0 relacionamento de chave est rangeiraatabela deverificacio 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 Table digite _ knal e, no campo Reference Field, digite
credi t1. Entao ative sua tabela. Utilize 5E16 para atualizar registros de cliente
e adicione urn limite de credito para cada urn. Visualize a ajuda Fl que voce
cnou.
li mite de Credttc
cr editl cred it creditl CURR
Chcve monet6rio
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). Test e sua tabela de texto criando uma nova entrada
ern knal e pr essionando F4 no campo ci t yc. As descricoes de cada c6digo
de cidade devem aparecer na list a, mas some.nte em seu idioma at ual de logon.
Faca 0 logon em elemao e teste novamenre para ver as descricoes em alemao.
Exercfcio 6
erie uma est ru tura chamad a - - - t el . As especificacoes aparecemna Tabela 4.9. ,
Ta be la 4.9 Os campos e sues caraderisticas para estruturo - - -tel
Descr isao
waers waers
12 2
tcurc
Nome de campo
Nome de DE
Primeiro nemerc de telelone
tel ft
Segundo nemero de telefone
telf2
Numero de fox
telfx
Ncmero de telex
te 1xl
te1fl
telf2
telfx
telxl

:J
Inclua essa estrutura no final de SUilS tabelas - - - knal e - - -1 fal. Utilize
SE16 para atualizar alguns de seus registros existentes e adicione mimeros de
telefone a des.
www
-- ----------
oData Dictionary, Parte 3
Qbjetivos do capitulo
Depois de completar este capitulo. voce devers ser capaz de:
Criar e ut ilizar indices secundarios apropriadament e
Configurar os atributos tecnicos para as tabelas transparentes
Configurar a utilizacio de buffer para as tabel as
Entendendo os indices de tabela
Urn indice e urn mecanismo de eficiencia para localizar rapidamente .linhas
dentro de uma tabela. Ele enecessaria porque os dados sao armazenados em
lima tabela na ordem em que foram adicionados (a ordem de chegada ).
Imagine voce rasgando todas as paginas deste livre e enrao jogando-as
para cima e misturando rude. Voce cneso as junta emumapilha 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 aleatoriament e na pilha es-
perando ter a sorte de encontra-la logo no comeco. Estou convencido de que
a maioria logo desist iria e entao iriafolhear as paginas uma 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.

'I""'!!''!!'''!!f'W _ ..
184 I APUNDA EM 21 DUS ABAPI4 0" s,oDATA OICTIOHARY, PARTE 3 I 185
examinar minuciosamente a tabela do inicio ao fim procur ando t odas as linhas
onde 1and1 ;: ' US' . A tabela na Figura 5.1 emuito pequena, mas esse eurn
processo que consumiria mu ito tempo em uma tab ela maior.
MOYO 0 fndice comumente utllizcdc eon61090 0 0 Indlce prim6rio de umo tobelo. Os
r indices cd icloncis s60 cnclcqos 0 indices secund6rios. Para suporter uma
clcvsvlc where em um campo de chove n60 prlmc ric, pode-se definir urn lndice
secund6rio. Umo tobe la pede fer multiplos indices secund6rios.
Icbe'e mile I
1 .3
2 . 6
3 .2
,
.,
5 .7
6 .s
7 .,
,
.1
,
. 2 3
. 3 1
.,
7
.5 6
.6 2
.7 S
IndIce primoria
perc m Ho 1
nOdo
I"/nr linho
Ag ora, pense novamente no exemplo de livre . As vezes, urn livro tern
mais de urn Indice . Por exempl o, urn livre sobre ut ilizacces medicinais de ervas
pode ter 0 Indice normal, alem de urn Indice somente para nomes comuns de
planta, ourro apenas para nomes de boesnica e urn t erceiro 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 . .
A Figura 5.2 ilustra urn indice secundario em ztxl fal-l and!.
Urn indice aumenta 0 desempenho tremendament e. 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 media, 500.000 registros
para localizar a primeira correspondencia, com uma visao pessimista de urn
rnilhao de
Se voce adiciona urn indice, 0 sistema pode utilizar urn algoritffio billario
de pesquisa para localizar 0 registro, depois comparan do uma medi a de apenas
10 registrosJ com urn cen:irio de piar CasO de 20 registros! 1sso e50.000 vezes
mais rapido. Por essa razao, deveassegurar que oscampos emurnacUusulawhere
sempre serao suportados por urn fndice . Isso pode ser feito exibindo indices
existentes, e entao organizando sua logica para utilizar esses campos ou criando
urn indi ce secundario. .
Figura 5 1
Urn indice de lobe/a Ii
umo c6pio de umo au
mcis ca/unos
ormozenodos em
ordem clossifjcoda
compan/eiros para as
linhos originals.
I
,
o numero de linho einfernomenle otribuido pelo bonco de dodos ;
voce nunce 0 ve no ODIC. Ele eutilizodo pelo indice porc opon tor de
volta para a linno original, do qual as dodos vierom.
Imagine que voce agora coloco u as pdginas de volta na ordem. Procurando
aleatoriarnente no livro recentemenre ordenado, talvez voce comece 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
mais importantes classificadas em ordem alfabetica.Voce rapidamenre encon-
tra 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 informacoes, esn olhando nas informacoes originais ? Nao, e claro .
Voce esta olhando em uma c6pia das informacces originais; elas foram dupli-
cadas. 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 banco de dados emuito parecida com esse livre. Para cada
linha edado 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 copiadas em urn Indice 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 tabela do R/3 t ern urn Indice primdrio construfdo na chave primaria
da tabela. Esse Iodice enecessaria porque os dados na tabela sao armazenados
na ordem que [cram adicionados atabela. Quando uma linha eadicionada,' as
informacoes-chave sao classificadas e copiadas no Iodice, junto com urn pon
tei ro na linha original, A Figura 5.1 mostra urn exemplo utilizando a tabela
ztxlfal. Os dados do campo 1Hnr em ztxlfa1 sao capiados no indice, classi-
ficados alfabeticameme e arrnazenados junto com 0 numero da linba original.
(0 campo mandt foi deixado de fora para simplificar 0 exemplo.)
Quando a inStru)ao select * from ztxlfal where 1Hnr :. '0000001050'
eexecutada, 0 sistema reconhece que ha uma 1i fnr ja classificada em urn indice
e assim a ut iliza automaticamente. a 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 .indice ec1assificado por 1i fnr, nao por 1andl . A coluna
landl nao esta em qualquer ordem especffica na tabela. 0 sistema tera de
.,
"
' I
,
I
.,
J
II
)
I
L
I'
Inicie a ScreenCam "How to DisplaySe-condaryIndexes" agora.
Para exibir os ind ices secun derios existentes em uma tabela de banco de
dados, siga este pro cedimenro:
. .,5 , ..'" .ne (,F " If '
t-I -: :10:>-..:""_ ",:.T. -,
'.
_. __ "" ........_...... ... ...,.. .. ...._l _
1=." Wi ,l , ay A H . t"j xl
. ..... (. ' .... 1MOO .. l"'I,
"1._ . C.AIX .oC",
1. Exiba a tabela.
2. Escolha 0 caminho de menu Utilities->Database Utility. A tela
ABAP/4 Dictionary: Utiliry for Database Tables eexibida.
3. Escolha 0 caminho de menu Extras-c-Database Object- s-Display.
U rna lisca de todos os campos na tabela eexibida e embaixo dej a esd.
uma Iista de eodos os indices com seus campos, incluindc 0 Indice O.
a procedimentc precedence somente mcstrara indices secundsri os. 0
Indice na chave primfria (Indic e 0) DaO aparece nessa Iista.
Para exibir todos as indices, incluinde 0 primario, siga estes passes:
Inicie a ScreenCam "Howfa DisplayAll Indexes" agora .
Fig mQ 5 3
o in<!ice Z
secundorio no lobe/a
ztxlfal e
compos la petos
campos mandt e
londl .
n." do
lendl linho
CA 2
CA 6
DE
,
DE 5
US
,
US 3
US 7
indice secvr.dcirio
em lond l
n." do
linna limr lond1
Tobelom lfo1
,
.3 US
2 .6 CA
3 .2 US
, .,
DE
5 .7 DE
6 .5 CA
7
.,
US
n.O do
nnr linho ,
., ,
.2 3
.3
,
., 7
. 5 6
.6 2
. 7 5
Indice prim6rio
1. Exiba a tabela.
2. Pressione 0 borao Indexes. " na barra de [erramentas Application.
Se voce nso vir esse batao, sua janela pede estar mui to estreita.
. Alargue-a a u escolha 0 caminho de menu Goro->Indexes. ..
3. Se existirem indices secundarios, sera exibida uma Iista dele;-em uma
caixa de dialogo. Se DaO existi r nenhum, sed'exibida uma mensagem.
4. Para exibir urn deles, de urn clique duplo nele. 0 Jndice eexibido na
tel a ABAP/ 4 Dict ionary: Table: Display I ndex, como mosrrado na
Figura 5.3.
Cada Indice em R13 tern urn unico para tres idenrificadores de caractere, ou id.
a Iodice primfrio sempre tern urn id de 0 (zero) . Urn id de Indice secundario
pode ser qualquer Dutro numero ou urn caractere alfabetico.
Exibindo indices
E1.gurQ 5 2
Urn Indice seclJnd6rio
permite que voce
pesquise ropidomente
em outros co/uno!>
o/@m dessos no chove
prim6rio.
I
l
I
"
I
I '
i
o status do Indice eexibido no campo Status. A existencia do Indice no
banco de dados eindicada por uma mensagem que aparece embaixo do campo
Status. No campo DB Index Name esd. 0 nome do Indice como econhecido
no banco de dados. 0 nome de indice no banco de dados eformado peIo nome
ciatabela, seguido po r sublinhados 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 de campo.
Considero<;6es 00 crier lim Indice
NOYO ..... Urn Indice pede consisfirern mois de um campo. Par exemplc, construindo urn
TtU.O " lndice secund6rio em landl e re gi e ofivc select * f r om ztxlfal where
landl = 'US' and reg ie = ' HA l o loccllzcr ropidarnente linhas ccrrespcndentes.
Quando existem multiplos indices (urn prim6rio e urn ou mais indice:; secund6rios), 0
RDBMS ufilizo urn otimizador para selecionar a melhor. Para escolher urn Indice, 0
ofimlzcdc r examine as names de campo na cl6usulo where e entcc procure urn indice
que contenha as mesmos de campo no ordem especlbcodo no d6usulo where.
Partonta, cerfifique-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 ENDAEM21 DIASABAPH
indices e MANDT
Se urna rabelacomeca com 0 campo mandt, seus indices tambemdevem comecar
com esse campo. Se uma tabela comelja com mandt e urn Indice nao, 0 ot imi-
aador pode nao ut ilizar 0 Indice.
Lernbre -se, se voce pre cisar, do recurso de tr atamento automdrico de
clienre do Open SQ L. Q uando select *" from ztxlfal where landl ;: ' US' e
executada, 0 SQL real enviado ao ban co de dados e select *" fro:n ztxlfa l
where 0 mandt =sy-mandt e 1andl ;: 'USI Sy-mandt contern 0 cliente atual de
logon. Quando voce seleciona Iinhas de uma t abela utilizando Open SQL, 0
siste ma automaricamente adiciona sy-mandt aclausula where, que faz com que
apenas as linhas que pert enc em ao cliente atual de logon sejam localizadas.
Quando voce cria urn indice em uma tabela con tendo mandt, tambem deve
incl uir ma ndt no Indice. El e deve vir primei ro no Iodice, porque sempre apare-
cera primei ro no SQ L gerado.
No restanre dessa discussao, par ta do pressuposto que mandt esra inc1uido
em todos os indices.
Codifique um Sel ect para utilizer urn dado indice
NOVO .... Sevocecodilicc sel ect *" from ztxlfal where regia" ' MA ' , precisa haver
Tn.ll.O urn indice iniciondeemmandt e regi 0 para cssegurarque 0 otimizodoroutilize.
Se voce ccditicc sel ect *" from zt xl fa l where landl ;: IUS' and regia " ' MA',
deve haver umIndice que conternmandt, 1and! e regia. 0 Indice ideal tcmbernas terio
nesso mesmo ordem. Se ndc houver um Indice nessa ordem, mas hoover outro
ccmecondc commandt e 1andl , a otimizodor a utilizar6 para ccrrespcnder os primeircs
doiscamposdo c16usulo where e entco execvtor umvorredurode intervo/ode fndice pdro
localizer uma ccrrespondendo em regio. Umavorreduro de intervolo de indicej ! umo
buscoseqcencol por uma portede umfndlce.
indices seletivos e a efic6c ia do fndice
Se a clf usula where cont iver mais campos que 0 Indice, 0 sistema utilizara 0
Indi ce para esrreitar a pesquisa. 0 sistema entao leri os registros da rabela e os
varrera para localizar corr espondencias. Par exemplo, se urn Iodi ce for com-
posto pelos campos Fl e F2e voc e codi fies wher e Fl =1 and F2 '" 2 and F3 '" 3,
o sist ema soment e poderf ut ilizar 0 Indice para local izar regisrr os em que Fl =l
e F2==2. Ele lera esses regisrros da tabela para saber quais tern F3=3. Portanto, 0
Indice sera apenas parciahnente eficaz. Ele teria mais eficacia se contivess e
todos os campos: Fl, F2 e n .
NOVO.... Qual 0 graude efic6cia do fndice comF3? Dependedo moneirocomoosdodos
TWlO 500 distribufdos nofabelo. Se a combina<;ao de F1 e F2 for muifoespecifico (ou
se/etiva) e resultar em apenos algumas linhos correspondentes, a incl ice i6 sere muifo
eficcz. Adicionor F3 00 indice nesse coso pode 1"100 ser vontajoso per causa do overhead
do fndice durante as de tabela. Se a 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 oumentora0 desempenho e reduzir6 a consumo de recurso.
s.o DATA Dl enOHARY, PARTE 3 J 189
Ao criar ou modificar Indi ces, rente nao utilizar urn campo que ji esn em
urn deles. Ha uma chance, quando urn programa preexist ente for execurado,
de que 0 ot imizador va escolh er 0 novo Iodice e urn programa preexisrent e
po de tornar-se mais lent o.
Diret rizes para crior urn Indice
Via de regra, siga estas diretrizes quando voce criar urn Jndice:
Nao rente adicionar indices desnecessarios. Per gunt e-se como voce
pode escrever a ccdigc para utilizar urn Iodice existente.
Tente evitar indic es que se sobrepoem; em outras palavras, evite incluir
o mesmo campo em multiples indices.
Tence fazer indices muiro seletivos, mas nao inclua camp os que au-
mentem a seletividade em apenas poucos nfveis.
H6 ummaximode 15 indices secundcrt os per tcbelc permltrdcs pelo
R/3.
Cri o ndo urn Iodice secunda rio
Inicie a ScreenCam"Howto Create a Secondarylodex" agora.
Para criar urn Indice secundario:
1. Exiba a tabela.. Voce deve comecar na tela Di ctionary: Table/ St ru c-
ture: Di splay Fi elds.
2. Pressione a batao Indexes. . . na barra de ferramentas 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 bat ao Create. A caixa de dial ogo Create
Index sera exlbida.
4. Se nenhurn Indice secundaric exisrir, voce nao veri uma Iista de
indices. Em vez disso, vera a caixa de diaIogo Create Index ime-
diatamente.
5. Insira urn id de fndice no campo Index rD. Os indices de cliente
devem comelja! com You Z, embora 0 sistema nao imponha isso.
6. Pressione 0 botao Continue. A t ela ABAP/ 4 Dictionary: Ta ble:
Maintain Index eexibida.
7. No campo Short Text, digite uma do fndice.
I APRENO AEM 21 eus ABAP/4
D1AS, OOATA DlCTJONARY. P" IT3 I 191
Deterrni nondo qual indice est6 sendo utilizodo
Quando uma instrucao sel ect eexecutada, a oti mizador tenta escolher 0 indice
mais apr opriado para acelerar a recuperaclo de dados. Se voce river varies
indices em uma t abel a, como voce pode dizer qual Indice est a realmente sendc
utilizado ou mesmo se urn deles esta sendo utili zado?
Somente uma pessoo pode execut or um rostreamento de SQl de cede
vea, lembre-se 'de desotivor 0 rastreomento quando terminor. 0
rastreome nto de SQl 1omo lentc 0 sistemo.
a eabela, entao voce nao pcders excluir nenhum. Se cs indices
secondaries jaexistirem, uma lista deles sera exibida em uma caixa de
diilogo chamada Indexes for Table xxxxx.
3. De urn clique dupl o no indice que voce quer excluir. A tela ABAP/4
Dictionary: Table: Display Index emostrada.
4. Pressione 0 batao Display <- > Change na barra de [erramentas
Application. A tela alterna para modo de alt eracao e 0 titulo da tela e
ABAP/4 Dictionary: Table: Maintain Index.
5. Escolha 0 caminho de menu Index- > Delete. A caixa de dialcgc
Delete Index Definicion aparece pedindo para coofinnar a solicitacao
de exclusao.
6. Pressio ne 0 batao Yes para excluir 0 indice. Voce eIevadode volta a
t ela Dict ionary: Table/Structure: Display Fiel ds. A mensagern Index
xxxxx deleted aparece na barra de status.
No pass o seis, pressionar 0 botao Yes faz com que 0 Indice seja excluido
do banco de dados. Ao rer ornar atela Dictionary: Table/ Structure: Display
Field s, voce nao precisa salvar a tabela. Note tambem que voce DaO pode
desfazer a exclusso pre ssionando a batao Cancel na tela de exibicac de tabela.

8. Na coluna Fl d Name, digite os campos que 0 Indi ce deve abranger na
ordem em que eles devem ser classificados.
9. Se os valores nesses campos, quando reunidos , devern ser sempre
un icos, facsa uma marca de verificacao na caixa de seleclo Unique
Index.
10. Pressi one 0 bot ao 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 parte
inferior da janela na barra de status.
11. Pressione 0 batao Activate na barra de ferramentas Application. 0
sistema gera a SQL e envia pa ra 0 RDBMS, criando 0 Iodice no banco
de dados . Se bem-sucedido, os eampos Status exibem Ac t 1ve e Saved
. e, ebaixo dos campos de st atus, aparece a mens agem Exists in t he
database. a campo DB Index Name conrerf 0 nome do Iodice no
banco de dados. Alem disso, eexibida a mensagem Index xxxxx was
success ful ly activated. na barra destatus.
12. Pressione Back. A t ela Indexes for Tabl e xxxxx eexibida.
13. Pres sione Cancel para ret orn ar a t ela Dictionary: Table/S tructure:
Display Fields.
Voce aprendeu a criar urn indice secundario. Os indices melhoram a
eficiencia da insrrucao sel ect .
Se voce fizer umo morco de verificoC;ao no coixo de seleccc Unique
Index, c ccmblnoccc de compos no indice eseguromente fundomen tal;
isso eimposto pelo RDBMS, Umc instrvC;ao de inserC;ao ou modificoc;oo
folhora se 0 ccmblncccc de vclc res nos compos de Indice jo estiver
presente no tabe lo.
Excluindo urn Indice secund6ri o
Para fazer isso, voc e pode utilizar a ferramenta de rasrreamento de SQL.
Inide a ScreenCam "How to Delete 0 Secondory Index" ogoro .
Para excluir urn Indice secundario:
1. Exiba a rabela. Voce deve comecar na tela Dictionary: Table/Struc-
ture: Display Fields
2. Pressione 0 borso I ndexes. .. na barra de [erramentas Application
(au escolha 0 caminho de menu Go t o->Inclexes. . .) . Se voce vir a
.caixa de dialogo Create Index, nenhum Indi ce secundario existira para
lnlce 0 ScreenCom "Howto Use SQl Troce to Determine the IndexUsed" ogora.
Para dererminar qual Iodice esta sendo 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 para certificar-se de
que funciona.
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
esperando para ser executad o.
3. Abra uma nov a scssao utilizando 0 caminho de me nu Syst em- > Cre-
ate sessron.
4. Execut e a transacio STOS(digit e I nstCS - zero-cinco, e ndo O-cinco
- no campo Co mmand ou escolha 0 ca minho de men u Sys-
tem->Urilities->SQL Tra ce) . A tela Trace SQL Database Requests
eexibida.
5. Se a caixa Trace SQLStarus Information exibe Tr ace SQl is switched
off, va para 0 passo 7.
6. Nesse p ontO, a caixa Tra ce SQL Status Informat ion con t em Trace
SQl switched on by, seguido pelc id de usua ric qu e ativou 0 ras-
rreamento e a data e a hora que foiiniciado. Voce deve alt erna-lc antes
de poder prosseguir. Se 0 rastreament o foi ini ciado dent ro da ult ima
hera, epcssrvel que ainda este]a sendo utili zado . Ent re em con tat o
com 0 usufrio indicado ou rente novament e mais t arde. Se 0 ras-
tre amentc foi iniciado hi horas ou dias, 0 usuari o pr ovavelment e 0
deixou ativo por erro e ele, com pede ser desativado. Para
desligar 0 rastreamento, pressione 0 bono Trace Off. A mensagem
na caixa Trace SQL Status Information agora deve ser Trace SQL is
switched off.
7. Pressio ne 0 botao Trace On. A caixa de didlogo Trace SQLDatabase
Requests eexibida. 0 campo DB-Trace for User deve center seu ID
de usuario. Se seu ID de usuario nao estiver nesse campo, insi ra-o
agora.
8. Pressione 0 botao OK. Voce elevado de volta a tela Trace SQ L
Database Request s e as informacoes de status exibem Trace SQL
'switc hed on by. indicando que voce ligou 0 rasrreamento.
9. Aherne de volta para a janela que cont ern sua sessso de edit or (aquela
com seu programa esperando para ser execut ado) .
10. Press ione F8 para executar seu programa. (Apenas pressione F8, nao
mais nada, nem mesmo pressione 0 botio Back. )
11. Quando seu programa t iver side execut ado e a ampulheta nao estiver
mais sendo exibida, alt eme de volta ajanela de rastr eamento.
12. Pressi one 0 botao Trace Off. As inf ormacce s de st at us leem Trace
SQL is switched off.
13. Pression e 0 ba tao List Tra ce. A caixa de diilogo Trace SQL Database
Requests eexibida. Os campos nessa tela jacont erao os valore s.
14. Pres sione 0 botao OK. Voce pode precisar esperar urn poueo, no
maximo doi s minut os. A t ela Trace SQ L: List Dat abase Requests e
exibida.
15. Digit e %s c no campo Command e pressione a tecla Ent er. A caixa de
dialcgc Find eexibida..
16. Di git e 0 nome da t abela que voce esta rasrreando no campo Search
For. (Essa ea t abela identificada na instrucao sel ect em seu programa
em ABAJ.'/ 4.) ,
17. Pr essione 0 bono Find. Vma lista de resultados de pesqui sa devers
ser exibida com seu nome de tabela dest acado.
18. De urn clique no primeiro nome destacado da tabela. Voce elevado
de volta a tel a Trace SQL: List Dat abase Requ ests. Seu cursor e
posieionado na primeira linha que contern seu nome de t abela. A
di rei ra dele, na coluna Operation, deve estar a palavra PREPARE, OPEN
ou REOPEN.
19. Pressione 0 bcrac Explain SQL na barra de ferr amentas Application.
A tela Show Execution Plan for SQL Statement eexibi da.
20. Role para baixo at e 0 plano de execucao. 0 Indice utilizado sera
exibi do em azul.
Voce aprendeu a execut ar urn rastr eamento de SQL Isso ajudad. voce a
determinar qual Indice esd. sendo uril izado.
Exibiodo coofi guro(;oeSfecoicas
Para exibir as configuracoes tecnicas de uma tabela, exiba a tabela e pr essione
o botac Technical Settings na berra de ferrame ntas Application. (Se 0 botac
nao estiv er af, sua janela pode estar muito estreita. Tent e alargar sua janela ou
utilize 0 caminho de menu Gorc-e-Technical Settings.) Para modificar essas
configuracoes, pression e 0 bor ac Display <-> Change na barra de [errament as
Application. A tela ABAP/4Dictionary: Maintain Te chnical Settings eexibida,
como mostrado na Figura 5.4.
Closse de dodos
NOVO'" Acosse de dodos determino a tablespoce 0 que 0 fobelo ectribuldo. (0 termo
TftO "tcbt espoce" se cplico 0 bancos de dodos Oracle. Pora lnformix, substituo pelo
termo "'DBS spa ce"'.) Um tabJespoce e um orquivo fisico no disco que e uttlucdc para
crmczencr tcbelcs. Coda tcbelc eotribuida a um toblespoce. Astabelas com corocteristi-
cos semelhontes ncrrnclmente sao agrupodas em urn tablespace, ossim toblespcces sao
as unidad es administrotivos utilizadas pelo DBA para gerencior 0 banco de dodos. Par
exernplo, as tobelas que crescem rcpidomente estoroo ogrupodas em urn toblespoce em
urn disco com muilo espo<;olivre.
Cada classe de dados tern urn tablespaee associado. Quando voce ativa
uma tabela. ela ecriada no tablespace associado a essa c1assede dados. Se voce
altera a elasse de dados quando a t abela est a at iva, oada acomece; ela nao se
move para outro tablespace.
.w.. w.w.w
194 I APRENDA . M21 DlAS AD AP/'
D1A5: 0OATADIITIONARY, PARTE 3 ,. 195
Para exibi r a mimero de extens6es para uma tabela:
Categoria de tamanbo
Q uando escolher umc ca tegorio de tomonho, sejc generoso. No R!3
e muito melhor supe restimar, que subest imor esse pcrernetrc . Se a
cotegorio de tomonho emuito peq ueno ea tooele cresc e mois que a
clccccec inicicl, 0 RDBMS oloco outra extenseo. Extens6es seccndcrlcs
redvaem 0 dese mpen ho e exigem uma reorqc nlzocec do lable spoce
para sere m remcvidos. As reorgcnizocoes podem ser muito diflceis de
executor em urn banco de dodos gronde, especiolmente e m urn que
exijo a lto disponibilidode. t muito mois focll reduzir uma ca tegorio de
tomonho excessivome nte qeneroso do que ournentor umo subesti-
modo .

o camp o Size Category permite que voce especifique 0 mimero maximo de
regist ros que espera que essa tabela armazene. Voce ira configurar 0 tamanhc
da ext ensao ini cial e das pr 6xi mas, assim como 0 numero maximo de extens6es
permitidas por essa tabela. VIDa eaensso ea quantidade de especc alocado para
uma tab ela. A extens fi o inicial ea quantidade de espa<;o alocado para uma tabela
quando e criada. Se uma tabela consome esse espa<;o, out ra extens ao sera
alocada, fazendo com que 0 espa!jo de tab ela seja est endido .
As cacegorias de tamanh o sao sempre de 0 a 4, mas a namero de regist ros
espera dos em carla categoria de tamanlro mudare de acor do com cede tabela
baseada no comprimento de uma linha. Escolha uma categoria apr opr iada
baseada no numero maximo de regi stros que voce espera que a tab ela armazene.
Voce pode exibir a ndmero de extens6es aIocadas para uma tabel a ut ilizando
a seguinte proce dimento.
smENCAM.... lnicie a Scree rrCom "How to Display the Number of Extents Used by a Icble"
" a gora.
Alem de ssas categories, pode haver classes de dados USER tambem. Estas
sao criadas par seu DBA, que 0 dirigirana escolha delas nas horas apropriadas.
Exibindo 0 numero de extensoes alocadas para
umo tabela
As classes de dados imporrantes sao:
APPLO audados-mestres . Escolhendo APPLO (dados-mest res) , signifies
que a tabela nao eatualizada com freqeencia e cresce lentamente. Ela
sera colocada em urn tablespace com tab elas semel hanres. 0 mestre
do fabricante e as tabelas-mes tres do client e sao bans exemplos de,
dados -mestres.
APPLl ou dados de transaoio, Escolher APPLI (dados de traqsj.<;ao),
significa que a tabela se destina a ser atualizada com frequencia e
crescer rapidamente. Pedidos feitos a fabricantes e pedidos recebidos
de clientes sao bons exemplos de dados de transacoes. As eabelas que
contem essas ordens terao uma classe de dados de APPLl.
APPL2 OU dodos de personalizacso. Escolher APPL2 (clados de perso-
nalizacao), significa que 05 conteudos cia tabela sao determinados
ames da implementacio e njio alteram com frequencia depcis disso.
As tabelas de verificacao e suas tabe1as de texto associadas, como
ztxt005 e ztxt OOSt , sao bons exemplos de tabelas que devem ter uma
classede dados de APPL2.
E.i.o.u-t:a-5 4 '!'i ii @Hg ! ffl ft' 9\ [ , _1" 1>: 1
.:>.!L.-__ : t.-- JIloiloo , \;..:,';.. .:., ,',-.,> _ ;:' ,. ', "" .' '''
No telo A.B.AP/4


.:

.....,..
Outros classes de dodos podem ser 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 pelo
SAP; elcs serve m pa ra as tcbelcs de sistema do R!3que c rmozenorn,
par exemplo, as roforrrocees de Doto Didi ono"ry e a c6digofonte do
progromo.
1. Execute tr ansaclo DB02. (Digire / ndb02 no campo Command e
pressione a t ecla Enter.) A tela Database Performance: Tables and
Indexes eexibi da.
2. Pres sione 0 bctao Detailed analysis. Uma caixa de dialogo Memory
Management: Tabl es and Indexes eexibida.
.*. wwww ww _
APRENDA EM 21 DIAS ABAP/4
3. Digite 0 nome cia tabela no campo Tables e pressione 0 batao OK.
VIDa tela Memory Management : Tables and Indexes e exibida. 0
nome de tabela apa rece ria lista.
4. De urn clique duplo no nome de tabela. Uma caixa de dialogoMemory
Management : Tables and Indexes eexibida.
5. Selecione 0 ba tao de opcaoExtents.
6. Pressione 0 botao OK. Uma tela Memory Management: Tables and
Indexes e exibida, contendo a Iisca de exrensoes, seus nomes de
tablespace, numeros de extensao, mimero frsico de arquivc, tamanho
de bloco, tamanho de extensao e mimero de blocos na extensao. Ha
uma linha nessa lista para cada extensao.
Voce aprendeu a examinar 0 numero de extensoes alocadas em uma
tabela. I sso informara se a t abela precisara ser reorganizada au nao.
de buffer em uma tg be lo
Como mencionadono Dia1, as dados podem ser colocados no buffer na RAM
no servidor de aplicat ivo. Isso econtrolado individualmenre e especificado nas
configuracoes tecnicas para cada tabela {veja a Figura 504).
Sempre que uma instrucao Open SQL eutilizada para ler urn regis tro, 0
buffer de dados everificado primeiro 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 dados devem ser cclocados no buffer, 0 regis tro esalvo :
RAM no servidor de aplicativo em buffers de dados. Mais tarde, se esse registro
for lido novamente, ele sera lido atravesdo buffer, em vez do banco de dados.
Urn diagrams desse processo emostra do na Figura 5.5.
DIA 5:DDATADICTIONARY, PARTE3
Colocando os dados no buffer, voce aum enta 0 desempenho de duas
maneiras significativas:
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 de espera pelo banco de dados
e a rede que as conecta.
Os outros programas que preeisam acessar a banco de dados sao
executados mais rapidoporque hoi menos 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 1OOvezesmais rapido ou mais. A princfpio, pode pareceruma boa ideia utilizar
buffer em cada tabela no sistema. Entretanto, as buffers sao armazenados
inteiramente na RAM, assim 0 especc elimitado pela quantidade de RAM
disponfvel. De faro, a quantidade de dados edio superior ade RAM que as
tabelas devem ser colocadas no buffer prudentemenre para evit ar overruns . Se
accnt ece urn overrun em urn buffer, ele pode fazer troca (swap) para 0 disco,
que pode apagar qualquer desempenho ganho pela utilizacao de buffer.
As tabelas contendo tipos de dados numericos ria ehave primaria nao
podem estar no buffer. Os tipos de dedos numericcs-de DDIC sao CURR, DEC,
FLTP, INTI, INT2, INT4, PREC e QUAN.
A trcnsoceo 5T02 exibe buffers e estctleflcc de usc. No tela Tune
Summary, os buffers de dodos sao chcmodcs Generic Key e Single
Record. Urn clique duplo em coda umc desscs liohas exibir6 umo
analise detclhcdo. A partir del, os cbietos no buffer podem ester
exibidcs pressloncndo -se 0 botoc Buffered Objects no borro de ferro-
mentes Application.
197
Elg ll r g 5 5
Osdodos podem ser
colocodos no buHer
no WI. do servidor
do oplicotivo.
Progromo em
ABAf'l4 sendo
exeectcdc em
um procl!SSO
de trcbclbc
CD 0 prccessc de trobolho
verik o 0 buffer perc ver
se es dodos esloo ui. Se
nco esuverem.
(2) ele obtl!lm 05 dodos do banco
de dodos e
preenche 0 buffer.
oAcesscs subseqiienles leemos
dodos dobuffer.
o consultor de Basis e0 responsavel par monitorar as buff ers e evitar
que a falta de buffer tome lema 0 sistema. Antes de utilizar bu ff er em uma
cabela, euma boa ideia conversar com seu consultor de Basis.
Sincronizac;cio do buffer
NOVO Se voce fiver dais servidores de cplicctivo, 0 mesmoreqistro pode ser cclccodc
TtR1!O no bufferem code servidor. lsson60 serlo umproblema para ele, noo fosse 0
foto de que os dodos podem ser otuolizados. Se um registro colocodo no buffer for
otuolizodo, as clterccoes devemser comunicodas00 outro servldor de cpllcctlvc. Isso e
feito em umprocesso conhecidocomo de buffer, que ocorre em intervolos
de 1 a 4 minutes, dependendo do do seu sistema.
I
I
1
I
!
1
1
j
- -
Dl's,o DATADICllDN'RY, PARm I 199
SYNClOG
I REC 1 I
SYNClOG
l..==LJ I REC 1 I
Fi g u r a 5 9
Na Figura 5.9,0 usuario 21e 0 registro 1. A versjio auriga do registro 1 e
encontrada no buffer, enrso 0 usuario 2 ve os dados ant igos. 0 usuario 2 nao
ve a nova versao do registro 1 at e que uma sinc ronizacao de buffer ocorr a.
. Na 5.10, a processo de sincronizacao de buffer detecta que 0
de_ expirou e comelSa 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 at ualiza 0 registrc no buffer do banco de dados.
fig u r g 5 8
Posso C: 0 usucria J
oluolizo 0 regislro de
J, fozendocomque
ele seiootuolizodo no
banco de dodos e no
buffer do seNidor do
oplicotivo 1.
Possa D: 0 usuorio2
Ie0 registro I e obtem
os dodos possodos.
_:w: __ __
- -

.....-'
SYNC lOG
L!o====...J I I
l egendo:
AS: Servidcrde oplicotivo
DB5: 5ervidorde banco.de dodos
SP: Processo de sincronimco c
Por exemplo, como mostrado na Figu ra 5.6, supo nha que 0 usudrio 1
esteja conectado ao servidor de aplicat ivo 1 e 0 usuaric 2 est eja conectado ao
servidor de aplicarivo 2. 0 usuario lIe0 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
nos buffers dos dois servidores de aplicativo. .
Na Figura 5.8,0 usudrio 1 atualiza 0 regiscro 1. A atualizacao erefletida
no banco de clades e nos buffers do servidor 1, mas 0 regist ro antigo ainda esd
no servido r 2. Uma entrada e feita no logdesiruronizaoio no servidor do banco
de dados indicando que 0 registro 1 foi atualizado.

PossoB: 0 usuorio 2
lombem/e 0 registro
J, fozendocom que
e/e seioco/acado no
buHer no servidorde
oplicotivo 2.
Posso A 0 usu6rio
J Ie0 registro J,
fozendo comque ele
seio colocodo no
buHer no seNldor de
oplicolivo J"
"Fi g u r a 5 6
198 mEHO' EM 21 DIAS"AP"

DIA 5: 0 DATAD10IONARY, PARTE 3 ! 201
Para checar, uti lize a transaclo RZ10 como a seguir:
Inicie a transacao RZ10 (digite /nrzlO no campo Command e pres-
sione a recla Enter). A tela Edit Profiles eexibida.
Escolha 0 caminho de menu Gcto->Profile Values-> O f a Server. A
tela Active Application Servers eexibida.
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 pressione a tecla Enter. A caixa de
dialogo Find eexibida.
Digite rdisp/buf no campo Search For e pressione a tecla Enter. as
parametres de buffer sao exibidos e destacados.
De urn clique na palavra destacada rdi sp/buf r-e f t fme .
0 tempo de atualizacao (em segundos) eexibido no lado direito da
list a,
Atuolizondo as tobelos colocodos no buffer
Se voce codificar uma transacao que atualiza uma tabela colocada no buffer,
voce devers estar sempre segura de ir ao banco de dados e obt er as informacoes
mais arualizadas, antes de permitir que um usuar io as altere. 0 seguinte
exemplo ilus tra esse ponto. 0 bloqueio de registro emencionado no paragrafo
seguinte para completar 0 assunto. .
Suponha que a registro 1 contenha campos Fl e F2. Dessa vez, 0 usuario
20 Ieprimeiro, faz.endo com que ele seja colccadc no buffer no servidor 2 (veja
a Figura 5.12).

I
f
,
!
I
I
I
i
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 ebuscado 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 util ize
urn processo de sincroni zacao em cada servidor de aplicarivo e urn log de
sincronizacao no servidor de banco de dadcs. Em urn intervale predefini do,
cada processo de sincronizacao ver ifies 0 log para ver se quaisquer clados que
esrejam colocados no buffer foram 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
de buffer utilizando 0 parametro rdi sp/bufreft i me.
Ei g ma 5 10
Passa E: 0 processo
de do
buHer involido 0
registro J no buHer
do servidor de
oplicoijvo 2.
200 ! HREND" EM71 DIAS ABAP/ 4
DBS
Fl F2
[ATI]
Eig, jra 5 12
Posso A a usu6rio
2 Ie0 regislro 1,
fozendo com que eJe
sejo colacodo no
buHer no seNidor ci a
oplicofivo 2.
FigmQ 5 11
Posso F: 0 usv6rio 2
tenlo reler 0 regi slro J
rues tile esrc morcodo
como inv6Jido no
buHer. 0 registro
entoo eatuolizodo do
banco de dodos.
_.-
203
DBS
F1 F2
w::u
Por exemplo, no passo D, se 0 usuario 2 utili zou bypasstnq buffer para
ler 0 registro, a versso mais atualizada do regist ro te ria sido Iida e as alteracoes
do usuario 1 nao teriam sido perdidas.
MOYO..... Utilize bypassing buffer no se lect quando voce prectsor de
UiMO" informccees mais atua lizodos, par exemplo, select * fram zt xt lfa l by-
pass; ng buffer. Fozendo isso, voce consegue que 0 buffer seic ignora do e 05 dodos
sejcrn lidos diretomente do banco de dodos. Voce deve utilizer issc sempre que estlver
Jendopara aNalizar, lsto e, lendo urn registro que ser6 otuchr odo e gravo do de volta no
bc nco de dados.
Figura 5 16
Posso E: a usu6rio 2
salvo0 registro J no
banco de dodos,
grovondo par cimodo
do us u6rio.
Figura 5 15
Posse D: a usuario 2
Ie 0 registroantigo I e
o bloqueio.
Usu6rio 2
Fl F2
I A I B
AS2
DBS
Fl F2
IA IB
Figu ra 5 14
Posse C 0 usu6rio 1
otuorizo 0 registro de
J, fozendo com que
ele seio oluolizodono
banco de dodos e no
br.Jffer do servidordo
oplicotivo J. 0
bloqueioeremovido.
a usuario 1, agora querendo atualizar 0 registro 1, bloqueia-o e 0 le (veja
a Figura 5.13). .
a usudrio 1 alt era Fl, escreve -o ao banco de dados (veja a Figura 5.14) e
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
Posse B: 0 usu6rio
1 bloqueioe Ie0
registro urn, fozendo
comque ele sejc
co/ocodono buffer
no servidordo .
op!icolivo J.
202 APm" EM 21 01 AS ABAP I'
204 m ENDA EM 71 DIAS AWl'
o bypa ss do buffer para oferece melhor equilibria entre
seguron<;o e velccldcde. Entrelonlo, se voce puder fer certezo de que
todes as atuolizo<;6es seroc [eitcs em urn cnlcc servidor de oplicctivc,
nCio prectscrc codihccr pore fczer bypass do buffer. Seu byposs toma
lentc a proc esso de otuolizm;ao urn pouee, porque um ccessc de bonco
de dodos e exigido. Se voce preciscr de quontidocle m6ximo de
velocidade para otocllzocoes e puder fer certezc de que openos um
servidor de oplicotivo ser6 utilizodo, esso cltemctlvc pede funcionor
pora voce. Converse com seu consultor de Bosis perc sober se issc
pade ser providenciodo.
Resumindo as abor dagen s de utllizccco de buffer
com
Hs eres abordagens de urilizacso de buffer para tabelas que podem ser atuali -
zadas. Na ordem do melhor para 0 pior desempenho, elas sao as seguintes :
Utilize buffe r na tab ela, DaO use bypass 1ng buffer e assegure-se de que
todas as atualizacoes foram [eitas a partir de urn unico servidor de
. aplicarivo.
Utilize buffer na t abela e use bypassing buffer.
Nac utili ze buffer na tabela.
Se uma tabela sera atualizada com freqaancia, nao utilize a abcrdagem
bypassi ng buffer. Carla atualizac;aofad. com que os buffers em t odos os outros
servidores de aplicativo sejam recarregados na proxima sincronizacio. Nesse
caso, a utilizalSaOde buffer realmente pe de aumentar 0 trffego total de rede
vez de diminuf-lo.
." ",/
Buffering Not Allowed em umo tobelo SAPslqniflcc que voce nee deve
onvcr 0 cclcccccc desso tc belo no buffer. Se fleer isso, voce pode
cousar umo operccec fcltvel dos oplicofivos do R/3 e tolvez perdo ou
corrvp o de dodos.
Tecnicos de de buffer
A met ade inferior da t ela {mosrrada anreriormente na Figura
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 modifi-
cac; io da SAP.
Voce pode configurar 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 tabelas de SAP exige uma tec1a de modificac;ao, que voce pode obter da
SAP.
DIA H DATA DlmDN,"Y, PARTE 3 205
Esses rres bcroes de opc;:ao ativarn e desativam a utilizacao de buffer:
Buffering Not Allowed
Buffering Allowed But Switched Off
Buffering Switched On
Escolha Buffering Not Allowed se nao se puder usar buffer na rabela, 0
que ocorre no seguintes casos:
Os usuaries devem sempre ter informacoes 100% exatas e 0 mais
atualizadas pcsstvel para conseguir Ier e gravar . Esse pode ser 0 caso
para consultas muitc sensfveis como cotecoes de bois a de valores ou
sistemas de controle de tempo real como movirnentos de mer cadori a
em armazens.
Os registros da tabela sao atualizados com a mesma frequenci a com
que sao lidos. fazendo com que a urilizacjo de buffer seja inad equada
(veja a seguir).
Escolha Buffering Allowed But Turned Off ou Buffering Turned On se
os usuaries desses dados puderem tolerar uma latencia de buffer de 1 a 4
minutes. Njo se esquelj:l1 que esse larencia nao existira quando atualizar dados
porque voce codificara bypassing buffer para cbter as informa coes.
Tipos de de buffer
Como mostrado na tela Technical Settings na Figura 5.4. rres ripos deutilizaci o
de buffer sao possiveis:
Completa
Generics
De registro unico
Embora voce utilize uma caixa de selecao para indicar 0 tipo de
de buffer) somente urn t ipo pode ser selecionado por vez. Sevoce escolher mais
de urn, uma mensagem de erro sera exibida.
Ha dois buffers de dados em cada servidor de aplicativc e a ripe de
de buffer escolbido det ermine qual buffer sera utilizado. Em urn
servidcr de aplicarivc hi:
0 buffer de registro generico
0 buffer de regisrro Unico
o buffer de registrc generico echamado TABL para "tabela") .
o buffer de registro enicc eTABl P ("pn significa "parcial-).
-=-------
206 lPHNOl EM 21 OIl S ABAPI4
de buffer completa
Para ati var 0 tipo de utilizaci o de buffer completa, fac;a uma marca de verifi-
cac;oio na caixa de Full. Quando feita uma tentativa de ler os dad os de
uma tabela com utilizacio completa de buffer, 0 sist ema examina 0 buffer TABL
para ela. Se ele nao for encontrado af, todasaslinhas serao carregadas do banco
de dados em TABL [veja a. Figura 5.17). Isso acontece sempre que uma inserucao
se lect eexecutada, independentemente de quanto s regist rcs correspondam a
cldusula wh ere. Mesma se nenhum regi str o corresponder, todo s sao carr egados
no buffer se a tabela Olinda DaD estiver al ou se ela estiver invalidada devido a
sincronizacao de' buffer.
:1
.1
,.
i:
.,
" :'
I
!
1
TABlP TABl
C I 1 rec4
C 2 ..05
C 3 re, 6
Select' fromtb1 where f1 = 'C
f'---
/
TB1 Technical
SeMing5:
TBI F1 F2
12] Generic Buffering
\

1 reel
A 2 ree2
Number of Field5:m
B I re,3

C 1 ree4
C 2 fecS
C 3 rece
D 1 ree7
D 2 recS
---
ge nerica de buffer
Com a utilizacao generi ca, urn grupo de regisrros ecarregado em TABL em vez
cia tabela int eira. Para at ivar esse tipo de utili zacao de buff er, falia uma marca
de verifi cacio na caixa de selec; ao Generic e coloqu e urn numero n nos No. of
Key Fields de modo que os n campos a esquerda da chave prirnaria agruparac
regist ros . Quando urn registro elido e n e1, todos os registros contendo 0
mesmo valor no primeiro campo de chave primaria sao carr egados no buffer.
Quando urn registro elido e n e2, t odos os registrcs contendo 0 mesmo valo r
nos primeiros dois campos cia chave primaria sao carregados no buff er. Isso e
ilusrrado na Figura 5.18.
Se umo instrul700 seledonada e executodo, mas mcitc s vezes nee
enconfro dodos no tcbelc, a utiJizol700 complete de buffer aindo pade
toma r 0 ocesso a tobelcs mots eliciente. Como 0 tobelo lntelrc estc no
buffer, 0 sistema pede determinor se os registros exlstem a ntes de ir 00
banco de dodos, assim ele evitc urn ocessc de ba nco de dodos porn
e ncontra r as dodos .
DIAS, DDATA DI CTIONARY, PARm 207
Em outre exemplo, suponha que voce escolha a utilizacao generics para
a tabeIaztxl fal e configure N o. of Key Fields como 1. Como o primeiro campo
emandt. todos os regi str os para urn cliente sao carregados no buffer de uma
vez.
Figura 5 18
Ufilizo o generi ea de
buHer. n deve ser
menor que D numero
de campos no chove
prim6ria.
TABLP
D1 where...
TABL
TBI
REel
REC2
REC3
REC4

Select ' fromI'
TBI
/'
"
Technical Setting5:
-,
./ . -
o Full Buffering
TB I
RECl
REC2
REC3
REOI

o carregamenro de TABLnao ocorre com as inst ru coes sel ect stnql e:


somente sel ectJendse1ect faz isso. Se a tabela estiver com util izacao completa
de buffer e uma instrucao sel ect single for execurada, nenhum registro sera
carr egado ern TABL. Enrretanto, sea tabela ji estiver carregada em TABL, select
5i ng1e [er fi os regis tros dela.
Durante a sincronizacio de buffer, a tabela inteira einvalidada se qualquer
registro dentro dela se aiterar. Da pr6xima vez que dados forem lidos, ;I. tabela
inteira sed. recarregada.
A utili zacao de buffer completa eapropriada 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 completa de
buffer. Elas sao configuradas com urn conjunto inicial de valores validos e
e raramente sao modificadas depois.
E g ur a 5 17
Todescs linhes de
ume lobelo com
ulilizor;60comple/o de
buffer s60 corregodas
em TABl
__ ... __
208 "RENDA 1M 21 DIAS ABAp/' ous.o DATA maiDNAR!, PAm 3 209
Par exemplo, se a tabela zt xl f al tiver urn tipo de utiliza qao de buffer de
regist ros anicos, select single * from ztxl f al where l ifnr '" 'VI ' faz com
que 0 buffer TABLP seja pesquisado pelo registro VI. Se ele e encont rado ai, essa
c6pia eutilizada. Caso comrfrio, ecarregada em TABLP a partir do banco de
dados. .'
Mesmo se urn regiscro 1740 for localizado, ainda assim urna ent rada efeita
no buffer de regisrro unico. A entrada indica que 0 registro ndo exisceno banco
de dados . Da pr6xima vez que esse regist ro for solicitado, a buffer pode sec
utiliza do para resolv er a solicitacao e urn acesso a banco de dados nao sera
necessa rio.
Por exemplo, suponha que 0 fabri cante Xl nac exista no banco de dados.
Execut ar sel ect si 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 banco de dados. Da pr6xima vez que 0 fabr icanceXl for solicitado,
o sistema examina 0 buffer.e desccb re que nao exisre e nao pr ecisa ir ao banco
de dados.
A de buffer de registrc unico eapropriada par a tabelas muito
grand es em que uma por cent agem pequena dos registros e lida com freqiiencia.
Para a de buffer de registro unico funcionar, os regist ros devem ser
lidos utilizando .a sel ect si ngl e.
TABLP
TABL
I
,
I 1 I ",3
I

Select single <from tb1


where rJ = 'B' e f2.., ' 1'
r-;

TBl F1 F2
TS1 Technicol
A 1 reel
./
Settings:
A 2 ree2
0 ,
1 ,3
Single record
C I reca
Buffering
FI g u r a 5 1 9
Com c ulilizo o de
buffer de regislro
unicooti'lodo,
selec.ione regish'os de
corregomenlounico
de ume vezporc 0
bufferTABLP.
Durante a sincronizagdo de buffer) se uma tabela' for colocada no buffer
genericamente e urn registro est iver invalidado no buffer, todos os registr os
no gropo tambe m serjio invalidados. A pr6xima leit ura de qualquer regist ro
nesse grupo fara com que 0 grupe inreirc seja recarregado.
Coda grvpo de registro no buffer exiqe-overheod odmlnlstrcuvc . Tente
fer um nvmerc reletivamente grande de registras por grvpo. Com a
utilizOliQO generico, se voce ccobc corregondo 0 moioric dos hnhcs de
ume tcbelc e elos sao corregodas em muitos grupos pequenos, urno
tcbelo colocodo completa me nte no buffer ser6 mais efkie nte.
Se voce especthccr vtilizOliOOcomplete perc ume fobelo dependente
do cbente {tendo rna ndt no primeiro coluna}, 0 sistema autometi-
ccrnente a utilize genericomente com n igual 0 1. Isto e, quando um
registro elida, cpenos as registros que tern 0 mesmo nemerc de diente
sec ca rregadas no buffer. Voce noo pode ver issc refletido nos
configurolioes tecnlcos: elos ccntinuom a indice r utilizaliQO complete.
lsse simplesmenle ocontece "nos bosndcres".
A utilizacj o generica de buffer eadequadapara tabelas em que os regisrros
sao nor malmente acessados em conj untos ou grupos. Ela eadequada se, quando
urn regisrr o do grupo eacessado, grande parte des acessos normalmente seja
par a regist ros do mesmo grupo. Por exernplo, se urn usuario efet ua logon em
ingles, emuit o prova,:el que sornente descricoes em ingles sejam lidas por esse
usudrio e par out ros usuaries no mesmo servidor de aplicativo. As t abelas de
texto, 'cnde as descricoes sao armazenadas, sempre tern mandt e spr as (0 c6digo
do idioma) como os pri meiros dois campos . Portanto, a urilizacdo generics de
buffer com n iguaI a 2 eapropriada.
Utilizac;ao de buffer de regi stro unlco
Co locando uma marca de verificacao na caixa de selecsc Single Records, vccs
ativa a ut ilizacao de buffer de regist ro dni cc. Co m esse ripe de utilizact o de
buffer, sel ect s1ngle seleciona urn registro no buffer de registro Unico TABlP,
como mostr ado na Figura 5.19. Com esse tipo de de buffer, os
regist ros sao apenas colocados no buffer quando a select si ngle e
execuuda. Sel ect/endsel ect nao carrega nern Ie TABlP.
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) . Hi t ambem cluas variedades da select:
select e select sing le. A sel ect carrega TABL e a select
single carrega TA8LP
.
w __ .. __
210 , .lPRl:ND.l EM 21 DIAS ABAPj4
Durante a leirura, se lect somente Ie TABl ; ela ignora TABlP. A inst ruci o
select s ingle Ie os doi s buffers. Esse comporramento eresumido na Figur a
5.20. Lembre-se de que urn regist ro somente pode estar em urn buffer de uma
vez poeque uma tab ela apenas pede t ee urn tipo de urilizacao de buffer.
I'
,
!
I
DIAl, DlllTADlmDNARY, PARlIJ 211
Ta belas de utilizac;ao de buffer que ndc sec otualizad as
Se uma tabela e aces sada com frequencia mas rae atualizada corn frequencia,
ela deve ser colocada no buffer. Voce precisara consulter seu administrador de
Basis para saber se ha sufic iente no buffer para adiciona r sua tabela. Se
nao houver e sua tabela for acesseda com frequencia, e possivel aumentar a
quantidade de RAM alocada para os buffers. Altemativamen te, ourra t abela
acessada com menos frequencia que a Suapode ser alterada, de modo que nao
seja mais colocada no buffe r.
de buffer e indices
Os regis tros em urn buffer te rn seu proprio Indi ce primario criado na RAM.
Quando os registros sao necessaries, 0 Iodice eut ilizado para posiciona-lcs no
buffer da mesma maneira que 0 Indice primario no banco de dados eutilizado
para posicionar regisrros em uma rabela. Entrerant o, indices secunddrios ndo
sao criados no buffer, tampoucc indices secundarios de banco 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 chave 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. Por "exemplo, se a rabela zt xlfal foi colocada completamente no
buffer, sel ect * from ztxlfal onde lifnr = ' Vl ' sera supo rt ada pelo Indice
pr imdrio do buffer. Select * from ztxlfal where la ndl '" ' CA' causara uma
varredura complera da tabela no buffer.
Ser incapaz de utilizar indices secundarios resulta em uma pecul iar si-
sem safda, se voce utilizar buffer de modo complete em tabelas grandes
que tem indices secundarios. Colo car uma tabela no buffer dessa maneira fad
com que selects no Indice primario acelere, mas possivelrnenre tcrnara se-
lects leDta em indices secunda rios . Urna select em uma tabela
grande (categoria de tamanho 1 ou maior) que e completament e suport ada por
urn indice secundario no banco 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 lento) dependera da quantidade de dados na tabela. Para
compensar es'se problema, evite 0 buffer e utilize os indices secundarios,
adicionando bypassing buffer para a select onde urn indice
secundario deve ser utilizado.
Por exemplo. a tabela TSTC contem mais de 12.000 linhas, e da categoria
de tamanho 1, e completament e colocada no buffer e t ern urn fndice secundirio
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-
Bufferde Buffer de
reg istro: registro
generico unico
Select Single SOMENTE lE
CARREGA
ELE
Select
CARREGA
NAO lENEM
ElE
CARREGA
Subsfituicco do buffer
Se lASlP esdver compleca e urn novo regisrro precisar sec car regada, os antigos
serao jogados fora para dar eepacc aos novos. Os mais antigos sao aqu eles que
ha mais t empo estao esperado ser acessados.
Em l ABl, os registros antigos nao sao descart adcs quando os nffVos sao
carregado s. Emvez disso, tabel as inteiras sao periodicamente descarregadas do
buffer. 0 comprimento de te mpo ent re descarregar e quais tab elas'sao descar-
regadas edet erminado par urn algori t mo de cache dentr c do R/3. Esse algo-
ritmo complexo ebaseado na quantidade 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 livr e disponlvel no buffer e na qualidade atual
de acesso do buffer.
Perc limper 0 conteudc de TABl e TABlP, digite I Sta b no campo
Command e pressione c teclo Enter. Voce pede cttlbor esse metcdc
depois que desativar 0 de buffer pora limpor os bufferscotes
de testor a diferenc;o de desempenho de um programa. Note que issc
pode dlmlnuir 0 desempenho do sistema, em gerol olll duos horos, ate
que as buffers sejam novomente preenchldcs.
Dec idindo se enecessa rio utilizor 0 buffer
o obje tivo da do buffer ereduzir 0 numero de leit uras de banco de
dados e a quantidade de td .fego de rede do banco de dados para os servidores
de aplicativo. As ses:6es a seguir listarao cenarios com tabelas de utilizas:ao de
buffer que DaOsao atualiza das, junto com de buffer e
FlgurQ 5 2 0
Como 05 instroC;6es
seledonodos
interogem com as
buHers.
. ...
212 I AP REN DA EM21 DIAS ABAPI4
tamente colocada no buffer.A primeira sel ect foi resolvida no banco de dados
utilizando urn indice secundario no campo pgmnaj a segu nda executou uma
varredura complera de tabela no buffer.
I'
i
OlAs,oOI TADlcrJOHARY, PARTE 3 I 213
Urn Indice euma c6pia de colunas especfficas de uma t abela cIassificada
em ordem crescente.
as indices aceleram as insrrucoes select. Urn a instrucao sel ect
sempre deve ser suportada por urn Indice.
Vo ce pode criar indices secundarios em uma t abela. Crie urn quando
voce nao puder utilizar as campos de urn Indice exisrente em sua
clausula where.
Os campos em uma ch usula wh ere devem ser lisradcs em seu programa
na mesma ordem que aparecem no Indice.
A transacao 5T05 pode ser utilizada para most rar qual Indice, se algum,
foi utilizado por uma dada insrrucio sel ect.
Configuracoes t ecnicas da tabela podem ser uti lizadas par a ccntrolar
a classe 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 t abela sera. criada.
As classes mais importances de dados sao APPLO(dados mestres) e
APPLl (dados de transacao}.
A categoria de t amanho determina 0 t amanho das ext ensoes inicial e
pr6ximas da tabela e 0 ndmero maximo de extensces permitido. Isso
deve ser escolhido de modo que a exrensac inicial seja suficient emenre
grande para armazenar a tabela inteira. Extensoes secundirias deixam
o desempenho de siste ma lent o e tornam a reorganizacjo necessaria.
A de buffer acelera a acesso de dados par fazer cache dos
clados mais freqUent emente utilizados na RAM no servidor de aplica-
tivo . 0 espaljo de buffer e limitado, entaO as tabelas devem ser
colocadas no buffer prudentemente.
Se possfvel, utilize os campos do Indi ce primerio 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), adici one bypas sing buffer e
utilize os campos suportados por urn Indice secundario no banco de
clados.
Resumo
Sejo muito cuidodoso quondo utilizor bypass de buffer em tc belcs
colcccdos no buffer que tcmbem 500 otcolucdcs. Se voce utilizoem
ume sel ect, deve utiliz6lo em todes cs select
peru esse !obela e todes as tobelos relocicncdos dentrode uma vnlco
trcnsccoo. Coso ccntrcdc, 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 tombemfirer

Resu mo do de buffe r
o seguinte pontos devem ser lembrados em relacao atabelas colocadas no
buffer e indices:
As tabelas colocadas no buffer podem fazer seus programas serem
executadcs mu ito mais rapido. Entretanto, se urilizadas de forma
negligeme, a colocacio no buffer pode rer 0 efeit o opos t o.
Os buffers esperam na RAM do servidor de aplicativo, ponanto 0
espaljo no buffer e limitado. Urna tabela que nao e acessada com
freque ncia nao deve ser cclocada no buffer para conservar especc de
buffer e evit ar estouro.
As tabelas que sao pequenas (categoria de t amanho 0), acessadas com
fr equen cia e raramente atualizadas devem ser completamenre'colo-
cadas no buffer.
As tabelas que sao gran des (categor ia de tamanho 0) e acessadas com
frequencia ut ilizam sel ect single devem ser colocadas no buffer no
modo de registro unico.
U rna tabela onde os regist ros de urn grupo sao acessados juntos devem
utilizar buffer de maneira gene rica. Urna chave primaria parcial deve
identificar 0 grupo.
As tabelas que saOatualizadas com frequencia nao devemser colocadas
no buffer se sua confi guraljao tiver multiplos servidores de aplicativo.
Fazer isso aumenta 0 trifego de rede porque os dados devem ser
recarregados nos buffers nos ou tros servidores de aplicativo toda vez
que eles se alterarern.
Se a tabela foi colocada no buffer, utilize bypass ; ng buffer para obter
os dados mais recentes antes de perrnitir que sejam atualizados.
K_I ... I'" .. I ..... ...-...:-.I_...._...... ~ -y ~
,
214 APR!"A EM21 DIA, 'ABAP/ .
Utili ze bypcss de buff er quando ler um
registro para ctucluc r de ume tabe lo
cclocodc no buffer.
DIH DDATArncrIDl<ARY, PARTE 3 215
1. Posso especificar em algum lugar 0 Indice exaro se quera utilizar uma
instrucao select?
2. Posso criar indices secundarics em tabelas de SAP au ccloca-Ios no
buffer ?
3. Posse dizer que meu programa e executado mais rapido com tabelas
colocadas no buffer do que fora dele?
Qual ea classe de dados para as tabelas MARA, LFAI e KNA I? Qual ea
categoria de tamanho para MARA, LFAI e KNA1?
Exe rd cio 1
Teste
Nao codifiqce umo 5e' ect que nao sejc
suportada per um fndice.
Nao escolho umc categorio de tomonho
que focc umo tabela exigir umo extenseo
secund6rio.
~ ----J_
F a ~ a
Coloque as compos no c16usula where
no mesmo ordem em que eles aporecem
no fndice.
Seja generoso quando escolher umo
categoric de tomonho.
P&R
o
Nso posso exibir algumas telas mencionadas neste livro. Ob-
tenho a mensagem de erro You" are not authorized to use
t ransacti on XXXX. Como posso vcr essas telas?
o
o
Peca aurorizacao a seu administrador de segurania.
Quando cxiba os buffers de dados utilizando ST02. vejo muitos
outros buffers ai, tambem. Para que servem rodos eIes?
o
05 buffers de dados sao apenas dois dos mu itos buffers manti-
dos no servi dor de aplicativo. Os narnetabs (objet os de tempo
de execuctc de tabela) sao todos colocados no buffer, assim
como todos as programas, men us e (tambern conhecido como
status eUA au Gill), barras deferramentas, relas e calen dsrios.
Todos esses buffers sao relacionados aqui. .
Workshop
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A seljao Teste oferece perguntas para ajudar a solidificar seu entendi-
mento do conrecdo ebordedo e a seljaoExerdcio permite que voce prat ique a
que aprendeu. Voce pode encontrar as respostas as perguctas do quesriomrio
e aos exercfcios no Apen dice B, "Respos tas as perguntas e aos exercfcios".
6
Perc exibir0 confi guroQio rec/cl t ent em seu slstemc, si900 prccedi-
mento utilizodo pora exlblr rdi sp/bufreftime no lntitulcdo
"Slncronucccc de buffer- no Dio S.
As cherccees de dodos dentro de umo tobelo poclem ser outomoticamente
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
MOIH.
iD" registrodos. Esse registro (log) outom6tico de echomodo hist6rico
Qutom6tico de fobela. Pore otivar 0 Jog, marque a ccixe de seleo log Dota Changes
no tela Technical Settings (veia a Figure 5.4) . Se clndc n60 fiver feito issa, 0 consultor de
Basis tombem deve especfflccr o(s) numera ls) do di ente pelo qua l 0 log eossumido no
por6metro de perfil de sistema rec/ eli ent .
Hist6rico autom6ti co de tabel a e documentos
alt erados
'nttp;II_.compVJ.CQm.br
Objetivos do-capitulo
oData Didionary, Parte 4
-114.............-.-.. I ...... I I ...... .. ]I
218 AP RENDA EM21 DIAS ABAPI' I 219
Documentos olterados
Utilizando 0 c6digo de t ransacao SCU3 ou OY1S (veja a Figura 6.1), voce
pode exibi r as document os alrerados e cornpara-los com as valores atuais na
rabela. Nso hi nenhuma ent re esses dais codigos de transa?o; ambos
executam 0 mesmo programa.
"
,
I:
!,
!
i
I
Ii
I
I
uma seljao Notes e depois a analise. Para cada tabela, os campos dela
sao exibidos primeiro (veja a Figura 6.2) e os documentcs alterados
para ela se seguem (veja a Fi gura 6.3).
Para exibir uma comagem do mi mero de documentos alterados que
exine para urn dado int ervale de data ou int ervale de tabela, pressione
cs bono No.of Docs. (Select) .
Para exibira lists de tabelas pela qual 0 hist6rico automdricc emantido,
escolha 0 batao de Tables With History Mana gement e pres-
sione 0 bono List . Essa lista most ra todas as tabel as que tSm uma
marca de seleljao na caixa de selecao Log Data Changes.
Para exibir 0 mime ro total de documentcs alterados na tabela
dbtebpr-t, pressione a bon o Total No. Documents na barn de ferra -
mentas Application.
Para camparar valc res de campo em documentos alteradcs com valo-
res atuais de campo em uma tab ela, escolha 0 batao de 0pljio History
<-> Current e pressione 0 bouo Compare. A tela Table Hist ory e
exibida. Insira. 0 criteria de pesquisa para. os document os alterados e
pressione 0 bone Compare. A tela Table Hist ory - Comparison
Wi th Current St at e eexibida. A chave primdria de cada registro apar ece
a e as diferec cas aparecem adir eita (veja a Figura 6.4).
Fi g u r a 6 2
Os compos do
Iobe/o HPRJ OO7
oporecemantesdos
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

;.
.!!ix!
..........,..
A partir da t ela Table Hist ory - Choose Funct ion, voce pede execurar
as seguin t es funljoes:
Para exibir os documentos altera dos de dia atual , escolha 0 bon o de
Change Docs: Daily Analysis e press icne 0 batao List. Uma
Iista eexibida cont endo t odas as alteracoes do dia atu al.
Para pesquisar document cs alterados por intervale de dat a eu nome
de tabela, escolha Change Docs: ba tao de apljao Selective e pr essione
o boraoList . A tel a An alysis of Table LogDatabase eexibida. Digire
seu crit eri o de pes quisa e pressione 0 batao Execute. Uma lisea de
document os alrerados para 0 criteric especificado eexibi da. Na parte
superior da lista esta urn resume das informacoes sabre a list a, depoi s
MOYO til... Pore coda ou exdusOo de umo tcbelc ctivcdc pora 0
TUllO'" hist6rico outom6tico de tobelc, um registro ecriodo no tobela dbt abprt. Coda
reg istro e chomodo documenfo a /terado. Codo documento oltercdc ccntem a data e a
he re do a lterCl;ao, 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 clterecoc executodo. 0
tipo de olterm;60 sera I NS se 0 registro foi inserido, UPD se 0 registro foi ctcclhcdc ou
DELse a registro foi exclufdo.
Figu ra 6 1
A Tehle
History eJCibe
documentos
eltercdos de Iobelas
comhist6rico
elJ1omatico de tohelo
otivodo.
ww.ww.w . _
220 , AP REM DAEM21 D'ASAUPI4 DUDDATADICTlOIWY. PArTH 221
A chave pri mdria aparece ern rurquesa ca metade esquerda cia tela. A
metade direita esta dividida em valores aruais e valores de hist6rico. As linhas
acinzentadas indicam que exist e uma diferenca. Para exibir 0 significado dos
ccdigcs na coluna mais aesquerda, cclcque 0 cursor aI e pressione FI. Esse
relarorio mostra que quatro registros existem na tabela EKPA mas 'nenhum
hiscorico de regist ros existe para des.
Resumi ndo as configurac;6es tecnicas
Se c chave prim6ria de sua ta bela for maior que 86 bytes au se 0
restante da Iinha for meier que 500 bytes, voce n6c pede utilizar
htstoricc cutcmotlcc de tobelc . Voce receber6 um erro quando 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 registro e tem 500 bytes de comprimento.

o que se segue res ume as ccafiguracoes tecnicas para a 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 at e, em certa medida, aumenta a disponibilidade do
sistema, perque 0 banco de clados normalment e colocado em estado
offline para reorganizacoes.
A cat egoria de tamanho determina 0 tamanho da extensao inicial e
exte nsoes proximas, assim como 0 numero de poss iveis ext ens6es
proximas. Escolher urn numero muito baixo faraurna ou mai s exten-
s5es adic ionais .serem alocadas. VIDa eabela que envolve varias
exteosoes diminui 0 desempenh 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 reorganizace es.
A bufferizacao aumenta 0 desempeahc do sist ema [azendo 0 cache de
dados Iocalment e no servidor de aplicativo. Quando feito adequada-
Sa bendo quando utilizar bist6rico autom6tico de tabel a
o histcricc automatico de tabela deve ser ut ilizado em tabelas que contern
informacoes imponantfssimas e quando ada deve ser mcnitorada
sem [alha, independentemente da arualizacfo do programa utilizado. Infe-
lizmente, arualizacoes para tabela sao lentas, porque urnregistro e escri to pa ra
dbtabprt para cada registro alterado. Na rnaioria dos casas, quando 0 hist6rico
da tabela e necessario, Change Document Objects oferece uma alternativa
eficienre e mais rapida e portanto seria utilizado no lugar. Para mais infor -
m' c;6es sobre Change Document Objects, veja a R/3 Library (caminho de
menu Help->Rl3 Library, Basis Components, ABAP/4 Development Work-
bench, Extended Applicatipns Function Library, Change Documents.}
Os documenfos
ollerodes do
HPR100loporecem
depors do listo de
compos. Achcve
prim6rio de coda
registro oporece
pri me;ro (em
hJrqueso) seguido
pe/osdodos (em
bronco),
Figura 63
Figura 6 4
)qui. cs dodos em
dbt abpr t sOo
comporodos cos
conteudos otuois de
coda reg isll'o.
'.
ww W' ww w w w W W T'Ir TT W' W' "1J
222 , AfUNDA EM 21 DIAS ABAP/4
01' 6, 0D'T' PAR1H I 223
mente, menos acessosde banco de dadossao exigidos,porque as dados
mais frequentemente lidos sao armazenados na RAM DO servidor de
aplicativo. Bons candidates para bufferizacao sao tabelas que rara-
mente sao atualizadas e frequentemente lidas.
Ativar 0 log automatico do recurso em uma tab ela fara. com que urn
documento alterado seja criado coda vez que tabela e aleerada. Esse
recurso diminui as arualizacoesde tabelaeportanto eutilizado apenas
paratabelasque content dados vitais.Nas tabelas nao vitais, devemser
utilizados objetos de docurnento alterado. .
Yers6es ativas e revjsadas
NOVO... Podem existirduos versoes de uma tabela (au qua lquer objeto OD!C): averscc
YERMO" revisoda e 0 versec alivo. Se voce altere umo tcbelc e pressiona a bctec Save
sem pressloncrAcfivcte, criou uma verseo revisodo dotobelo que ccntem suas clterocces.
A versdc otlvc ainda existe; ea ultima verseo que foi ativada. Progromas em ABAP/4
utllfzcm 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 e1aexistir, 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.
lnicie a ScreenCam "How to Compare Revisedand Active Versions" agora.
comparar as vers6es ativas e revisada.s:
1. De tela Dictionary: Table/Structure: Display Fields, escolha 0
caminhode menu Utilieies->Version management. A tela Versions
of Object eexibida. A primeira linha contem a palavra mod .. Esse ea
versac revisada. A proxima linha contem act . . Essa ea 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.
3. Para ver urn resume das alceracoes, pressione a ba tao Delt a display
na barra de ferramentas Application. A lista eatualizada para conter
apenas as diferencas entre as duas vers6es.
Figurg 6 5
Quendo Li mo tooele
eve /em Lime versec
revisodo eexibido.
0 versec
revisodo por podr6o .
Vers6es adicionais
Independenternente das vers6es revisadas e ativas, voce tamb em pode criar
versoes temporaries de uma tabela. Para fazer isso, escolha 0 caminho de menu
Table->Generate version. A mensagem Temporary verst on of act ; ve object
stored. aparece na. parte inferior da janela, Essa versso t emporiria emantida
ate que a tabela seja transportada para aprcducao. Para visualizar a nova versao,
escclha0 caminho de menu Ueilities->Version Management . Aversac com 0
namero mais alto ea primeira que voce criou.
Descartando umg versOo revisada
Para descartar uma versaorevisada sem ativa-la, voce deve primeiro geraruma
versac tempordria da versao ativa e entio restaura-Ia, como mostrado no
seguinte procedimento.
lnicie a ScreenCam "How to Discord a Revised Version" a gora.
Para descartar uma versao revisada e restaurar a versao at iva:
WWWWWW_
- - -
224 ' PREND' EM21 01" ,", PI'
OIA6:0DATA D1mOMARY,PAiTE" 225
Para acessar 0 utilitaric de banco de dados:
Utilizondo 0 tela
A8AP/4 Dictionary:
Utility forDatabase
Tobles,
voce pOOe se
comun;cor
diretomerrtecom
o banco de cJodos
pera exihi r au alteror
umolobe/a.
Usondo 0 utjlitCirio de banco de dodos
Dentro do ODIC extste umo ferromento de utilit6rio de bcncc de dodos.
Utilizondo-o, voce ped e examinor e modifieor tobelas no nivel de ba nco de
IOU .
lERMO ,.
dodos.
1. Comece na Dictionary: Ini tial Screen.
2. Digice urn nome de tabela no campo Object Name.
3. Pressione 0 bctao Display.
4. Selecione 0 caminho de menu Utili ties- c-Dat abase Utili ty. A tela
ABAP/ 4 Dictionary: Utiliry for Databa se Tables exibida, como
mcstrado na Figura 6.6.
Figura 6 6
lnlcle a ScreenCom"How to Access the Dctcbcse Utility- agora.
Daqui voce pode:
Verificar a coerencia das definicoes de DDIC de R/ 3 em ao
banco de dados.
Visualizar 0 log de ativa<; ao para ver as de SQL reais
enviadas ac banco de dados:
Exibir e modificar as parimetros de armazenamento do banco de
dados.
,
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 mensagem Version of act ive object stored.
2. Pressione 0 botao Continue. Voce elevado de voltait. tela Di ctionary:
Table/Structure: Change Fields e a mensagem Temporary versi on of
activat e object stored eexibidana parte inferior cia janela.
3. Escolha 0 caminho de menu Utilities- >Version management. A tela
Versions Of Object eexibida. Haven uma marca de ao lado
da palavra act . .
4. Remova marca de do lado cia palavraact ..
5. Coloque uma marca de embaixo de Version (s) In The Version
Database: line beside the highest version number.
6. Pressione 0 batao Retri eve na barra de ferramentas Application. VIDa
caixa dedialogoaparececoneendo a mensagem versi on nnnnn is now
new revi sed (nonactive) version . Proceed?
7. Pressione a batao Yes. Voce levadc de volta atela Versions Of
Object e a mensagem Restored ver sion must be acti vatedl aparece
na pane inferior dejanela. Haverf uma marca de selecac 010 lade cia
palavraact .. Aver sao revisada agora a mesmaque ado botao Active.
8. Para verificar se a versao revisada coincide com aversac 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
9. Pressione a batao Compare na barn de ferramentas Application. A
tela Comparison For Tables eexibida.
10. Pressione 0 batao DeltaDisplay na barn de ferramentas Application.
A Iista deve ce nter uma linha que exibe 0 text o Genera1 attri butes :
Unchanged e ourra Iinha que exibe 0 textc Fi el ds : Unchanged. 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/ Structure: Change Fields.
13. Pressione 0 bou o Activate na barn de ferramentas Application. 0
campoStatus contemAct. e a mensagemxxxxx wa s act i vat edaparece
na parte inferior da janela.
Todos'os objetosDDIC, como domini os eelemencos de dados, possuem
versoes revisadas e ativas. Todas elas podem ser exibidas e comparadas da
mesma maneira. Os objetcs podemucilizar 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.
I
I
I
I
I
i
226 I 'PREHD' EM 21 DIAS "'Pi<
.. --
DIA6:0DATADICTlONARY,PARTE4 I 227
Excluir urna tabela excIuindo-a temporariamente no banco de dados,
ou esvazia-la excluindo-a e recriando-a no banco de dados.
Veri fi co(;6es 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 ecoerente (veja a Figura 6.7) .
Figura 6 7
UmoveriDcoode
coer!ncio com 0
bancode dodos
confirmo que 0
dennio DOIC R/3
do tobelo ztxl f al
e 0 definit;60 do
bancode dodoss60
identicos.
As incoerencias podem surgir se:
A defini(faoda tabela foi alteradano nfvel de banco de dados. Isso pode
acontecer se alguem manualmente alterar a definicao de banco de
dados ou se um programa emABAP/4 alrerd-la utilizando ccdigc SQL
native.
a banco de dado, for danificado.
Voce pede fazer urna verificacao de coerencia se, quando testar urn
programs, obdver urn erro de SQL incomum ou obtiver resultados incorretcs
de urn c6digo que deveria func ionar bern mas, inexplicavelmente, nao funciona.
Encontrar urna incoerencia indica que a origem do problema pode estar fora
de seu programa.
NOYO.... Umo tabela de R/3 e, sob certcs aspectos, como um progra mo trodidonol. Elo
iEUlO" exlste em dois fcrrnulerics : na "fonfe" que vocA pode exibir e mcdificcr e no
formul6rio campi/odo que eutilizodoem tempo de execucec, chomodo obieto de tempo
de execur;60 . 0 cbietc de tempo de execUl;60 ecriado qua ndo voce ct ivc a tobelc e
tombem econhecido como nornetob.
Quando urna verifica(f3.o de coerencia eexecutada, 0 nametab ecom-
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->Display. A tela Object xxxxx:
DisplayActive Runtime Object eexibida (veja a Figura 6.8) . Na parte superior
esta 0 selo de tempo do camerab seguido pelas informacoes de cabecalho. Ele
contem 0 tipo de tabela (Tpara transparence], a forma da tabda no banco de
dados [novamente, T para rransparente), 0 ndmero de campos na tabela, 0
comprimento em bytes do regisrro, 0 namero de campos chave, 0 compri-
menta 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 exeemc cia tabela de
refereacia, a tabel a 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. Hpos de
dodose

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 conhecida para 0 programa.
w w._---
228 I APIENDA EM 21 DIU ABAPI4
-
DIHOIlAU DIGIOORY,PARTH ! 229
Entretanto, quando voce,gera 0 obieto de temp o de execucjo para 0 programa,
a da tabela nao esti incorporada a ele. Em vez disso, quando 0 objetc
de tempo de execucic do programa eexecutado, ele faz uma chama da para a
narnetab a fimde determinar a estrurura em tempo de execucio da tabela. Isso
permi te que voce altere uma tabela (ou estrut ura) sem ter de gerar novament e
todos as progranw: em AIJAP/ 4 que a utilizam. Eles detenninamdinamicamente
as caracterfsticas da tabela em t empo de execuc j o chamando a nametah.
Embers voce DaO tenha de gerar novamente todos as programas sempre
que uma far feit a ern uma tabel a, certas alteracoes (como renomear
ou excluir urn campo) exigirjo que voce no c6d.igo do ABAP/ 4.
N esses casas, voce pre cisarf ene ontrar todos as programas que a utili zam.
inicie a ScreenCam "Howto Perform Where-Used List on a Toble" cqcro.
Para localizar todos a s progr arnas que utilizarn uma dada tabela:
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 ferramentas 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 Progra ms
exibida. Uma lists de todos a s programas que utilizam a tabel a
apareee.
6. De urn clique duplo em urn nome de programs para exihir t odas as
linhas de c6di go em que a tab ela eutilizada .
7. De.um clique duple em uma linha para exibir a c6d.igo que inicia dessa
linh..
Verificando a coerenci o do nametab
o namet ab obrem suas caract erfsticas dos elementos de dados e dominios que
compoem a tabela. :E possrvel que a do nametab esteja fora de
sincronizacio com os elementos de dados e dominios. Por exemplo, quando
voce ariva uma em urn dominic, as rabelas que 0 contem tambem
devem ser reativadas para receber essas Embora isso acont eca
automaricamente,'em certas uma pede falhar po r causa de
urna do banco de dados au porque a tabela conrem dados e deve ser
ccnverti da. Essa situa!jao pede ser det ect ada executando uma verificat;ao de
coerencia no objeto de t empo de execucgo.
Para veriflcar coerencia entre a narnetab e as objetos Data Dictionary, a
partir de dentro do utilitario de banco de dados escolha 0 caminho de menu
'.
Extras- >Runtime Object->Check. 0 objeto de tempo de execucgo ecam-
parado aos objetcs [onte de DDIC. A tela Object xxxxx: Check Active .
Runtime Object sera exibidaeuma mensagemna parte superior daIisraindicard
se 0 objeto de banco de dados ecoerenre. As Figuras 6.9 e 6.10 mostram urn
exemplo de uma incoerencia no narnetab para a t abela 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 0 tipo de dado de
campo 1i fnr echar 10 no nametab e i nt 4 no domfuio.
Os programasemABAP/ 4utilizamapenas 0 aametab. Portanto, des cae
saberac sobre as incoerencias e assim njio sio afetadcs por elas no sistema
Development. Transportar as ohjetos de DDIC antes de corrigir as incceren-
cias pode causar 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 razao disso reside no fato de que as alteracoes nao
afetaram os programas em ABAP/ 4 e, portant o, ainda nao for am testadas.
Figu r a 6 9
Nestatela, umo
lIeri fiCIJlj60 de
indica
umomensogem de
que 0
compritrn!!nto
a
do
<hove. 0
olinhomenlodo
tobelos60
inroerentes.
230 APR EN DA EM 21 DIAS ABAPI'
"""1"0-
DIU DDATAD1cnDlIARY, PAJ<l" 231
Figura 6 1 0
Rolor porabaixono
llsto mostraos
campos do nomelob
eo raz60 do
ineoerendo .
I
I
I
!
FiGura 6 12
Este li 0 restonte do
log de
mostrodo na
Figufa6. 1J.
Exibindo 0 log de otiva!foo
A partir do ut ilieario de banco de dados, voce pode exibir 0 log de ativa/iao
pressionando 0 boeio Object Log na barrade ferramentas Application. Esse
log somente egerado se a 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 igura 6 11
o Jog de oHvoo
exibe 0
de possos reolizodos .
durante 0 e
o e6digo SQLque
foj gerado. Esse log
mostroque durante
o olivoo, 0 tohe/o
fai exc:lufdo
temporariomente no
bonco de dodos e
reer/odo.
Para exibir asinformacoes emdetalhe que descrevem qualquer mensagem
no log, posicione 0 cursor na mensagem e pressione a reels FI.
Exibindo e modificando parametros de ormazena me nto
Pressionar 0 boteo Storage Parameters de dentro do ueilitario de banco de
dados (veja a Figura 6.1) exibe a tela DB Utility: Transparent Tables -
Database Parameters. A Figura 6.13 mostra como essa tela se,parece quando
urn banco de dados Oracle einscalado. Essa tela se presta principalmente it
utilizacio pelo DBA para alterar os parametres de armazenamentc de dentro
de R/3 depois que uma tabela foi ativada. Ela eapresentada 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 compurados a partir da caregoria de tamanho e
a partir das classe de dados. A linha USR permite que voce defina os valores de
Next E, MaxE, Pf e Pu e os aplique imediatamente pr essionando a bono Apply
Parameters Next E, MaxE, Pf e Pu Inmedt atel y. Na maioria das vezes, as linhas
DBS e eMP serge as mesmas, a menos que os parametres de armazenamento para
a tabela de banco de dadcs forem alterados manualmente depois que, a tabela
tiver sido ativada.
233
Se 0 tabelo fiver mais de umo extensoo, exd uir temporariomente e
reeder umo tobe lo ea moneira mois rcprdce f6cil de reorganiz6-lo.
precisorO salvor as dodos em outro tabela tempor oriamente antes
de exdui-Io e depo is copi6-lo de volta.
Excl uirtempororiomente umo tcbelofez comque todos as dodos dentro
dela sejcm permonen temente perdidos. Eumo boo ideio fcaer umo
c6pia de bock.updo tobelo a ntes de exd uf-Io. Sevoce copier 0 tcbelc
monualmente, lembre-se de copier tonto 0 definil;oo do tobelo como
a s dodos.
OlA6; 0DATA DlcnotWY,PAm"
caixa de di:ilogo sen exibida para confi rmar sua A nbela e seu
coneeodoserac excluidos do banco de dadcs. Paracrid-lo novament e, pressione
o borac Create Dat abase Tabl e. A tabela sera recriada para util izar sua versa c
ativa. Voce 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.
.............. -w w'W ........... _
TII

espedhco s de banco
de dodos sOO
mostrodos no tela
DBUtility:
Transparent Tobles
- Database
Porameters. Essa
h!1c mostrc que cs
poro metros de
ormozenomenlo
pore 0 tobe/o
. ztxlfal {oram
oherodos depois do
OMo, porq ue as
/inhos OBS e eM?
nee coincidem.
F jgura 6 '3
232 ,p",o, EM21 OI'S Ai'P/4
Resumo
As alteracoes para dados crft icos podem ser aut cmaticament e regis-
tradas em documencos alteradcs. Para dados nao vitais, obje ros de
documentc alreradc devem ser urilizados no Iugar.
Uma versso revisada de uma tabela ecriada quando voce a modifica
sem ativa-la. Somencea versac ativa de urn cbiet c pede ser utilizada.
Usando 0 urilitaric de banco de dados , pode examina r a name tab
e comparar sua coerencia com 6 Dat a Dictionary e com 0 banco de
dados.
0 utili tario de banco de clados tambem permire que voce visualize 0
log de para uma rabela, os pardmetros de armazenamento e
drope e recrie uma tabela no banco de dados.
Va para 0 utilitirio de banco de dados e pressione 0 botao
Storage Pa rameters.
Onde urn DBA in a alterar 0 pacametro de armazenamen t o de
uma tabela ativada de dentro do sistema de SAP R/3?
o
o
P&R

Excluindo e recriando as tabelas nO bo nco de dodos


As colunas InitExt e NextExt con rem os tamanhos (em blocos) das
exeecsees ini cial e proxima. As colunas HinE e Max Econtem 0 nd mero minima
e maximodasext ensoes permiridas. 0 nome de reblespaceverndepois, seguido
pew cclunas FGe i r, que ccntem 0 ndmero de gropes de list a livre e 0 mimero
de listalivre em urn grupo. (Essas duas colunas saoapenas utili zadas se 0 Oracle
est iver sendc utilizado no modo de pr ocessament o paralelc.) As colunas Pf e
Pu contem a porcent agem de livre e a porcentagem de especc utilizado
nos blocos dedados. Paramaisinformacoessabre qualqueruma dessas colunas,
pos icione 0 cursor nela e pressione Fl.
Embora os unicos pardme tr os que podem ser alterados sej am NextExt,
HaxE, Pf e Pu, voce deve preencher completamente a linhaantes de pres sionar
o botao Apply. Por exemplo, para alrerar 0 tamanho cia proxima extensdopara
64 e configurar 0 numeromaximo de ext ensoes como 4, priineiro selecione 0
bot ao de USR. Depois di gite 64 na coluna NextExt, di git e 4 na col una
"axE, copie 0 restc dos valores da linha OBS e enrac pressione 0 batao Appl y.
Suas alteracoes sao imediatament e aplicadas ao banco de dados quando
voce pressiona 0 borso Apply. Par a visualizar as resultados, pre ssione 0 batao
Back a fim de retomar atela ABAP/4 Dictionary: Ut ility for Dat abase Tables
e entao pressione 0 botao Storage Parameters na barra de ferram.ent<lS Appli-
cation. A linha que DBS na coJuna Sr c conted. as valores atualiu dos.
A maneira mais nipida de excluir os dados de uma labe la eexclui-Ia temporaria-
mente (drop) e entao reeria-Ia. Para fazer !sso com urna tabela, a partir do
utilid.rio de banco de dados pressione 0 batao Delete Database Table. Urna
http://www.ccrrpus.com.br
Qbjet jvos docapftulo
Definindo dados no ABAP/ 4,
Parte 1
7
Depois de completer este capitulo, voce devers sec capaz de
Explicar a area de rolagem do programa e seu conteudo.
Entender as elementos de sintaxe do ABAP/ 4.
Descrever 0 conceito de objeeos de dedos e sua visibilidade .
Utilizar os literais e ent ender como codificar cada tipo .
Definir e utilizar as constantes.
Utilizar a insrrucfo data para definir varidveis e strings de campo.
Encender tipo s de dados do ABAP/ 4 e ser capaz de identificar 0
caractere e os tipo s de dados numericos.
Entender a definicac doABAP/4 de ripos de dados comuns de DDIC.
Antes de prosseguir, volt e 010Dia 2 e dedique alguns minutes para reler
a analise da sec;ao "Entendendc a sintaxe de codigo" agora.
1.1a
o Workshop ofer ece duas maneiras de voce verificar 0 que aprendeu neste
capfrulo. A s e ~ o Teste oferece perguntas para ajudar a solidificar seu entendi-
menta do conte udo abordado e a s e ~ a o 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".
1. Qual e a maneira mais rapidade excluir as dados de uma tabel a?
1. Epossfvel que a defini<;ao cia tabela e dos elemento s de dadcs e
domfnios passaro estar fora de sincronizacac ?
Exerdcios 1
Workshop
Teste
234 APRENDA EM21DIAl ABAP/'
r I IIII I I -ITITI I I I I I I III I I.-I ........ ..- w w w W - - - - - - - -

I
236 I APRENO". 21 OIAS ABAPI4 I 237 I
o buffer de programa e a area de rolagem
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 pro-
grama, uma 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
utilizada. Caso contrario, au se a copia no banco de dados for rnais nova, 0
programa erecarregado.
Urna c6pia separada do programa DaO efeit a na mem6ria pa ra cada usua rio
que a execut a. Em vez disso, to dos as usuaries execut arn a mesma c6pia do
pro grama. 0 fator de diferenciacso e uma alocacf o de memoria separada
chamada area de rolagem. Uma area de rolagem ealocada po r execucac de
usuario porprograrna. 0 sist ema utilizaa areaderol agem para armazenar todas
as informacoes sobre a execucao atual do programa e todas as alocacoes de
memoria. Todas as informacoes , como as variaveis e seus valores, 0 pont eiro
at ual do programa e a safda de Iista, sao manti das na area de ro lagem. Por
exemplo, suponha que urn usudrio executa urn pr ograma e uma area de rol agem
ealocada. Se, sem esperar ele t erminar, 0 usuario muda para outra sessao e ini cia
o mesmc programa novamente, out ra area de rolagem ealocada para a segunda
execucao desse programs. 0 usuario tern duas areas de rolagens, uma para cada
execucao do programa. Se 0 usuario em vez disso tivesse execut ado urn
programa diferente, ele ainda t eria duas areas de rolageos, uma para cada
programa.
Elementos de sintaxe do ABAP/4
NOYO.... Coda programa do ABAP/4 e compasta de uma ou mois instrut;oes. Coda
YERMO" instruo contem uma vcri edcde de polavras seporodos por pelo menas um
espccc . A primeira pclovro de uma lnstruccc IS a pclovrc-chcve. Umo instrut;oo pode
indui r uma a u mais odit;oes e sempre termina ca m urn ponte.
Na Listagem 7.1, as palavras-chave sao select , wr i te e endselect. Duas
adic; 5es aparecem na instruclo select : where e order by. Tudo 0 que normal-
mente echamado de cltiusula em outras linguagens echamado de adifao no
ABAP/4: ou seja, equalquer palavra ou grope de palavra.s depois de palavra-
chave que modificam 0 comport amento da insrrucao.
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.
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. Por exemplo, 0 c6dig o na Listagern 7.1 pede ser reformatado como
moseredo na Listagem 7.2.
ENTRADA.... Listagem 7.2 Este c6digo e0 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
3 order by lifnr.
4 wri t e: \ ztxlfal-l 1fnr,
5 ztxlfal-namel,
6 ztxlfal -1andl. endsel ect.
o c6digo do ABAP/4 nao faz disdncso ent re maiusculas e minusculas.
Definindo objetos de dodos
KOYO..... Os ob;etos de dodos sao posit;oes de mem6ria que voce utilizopara ormozenor
TERMO" dad os enquonto 0 programo est6 sendo H6 dais de
de dodos : mcdlfkoveis e noo-modific6veis. 0 tipos de cbje tos de dodos neo-mcdfflccvets
sao literais e constontes. Os objetcs de dodos modific6veis s50 as vcrievels, strings de
compo e tobelos internos. Uma string de campo IS 0 equivolente do ABAP/4 de umo
estruturo. Umo tobelo Interne e0 equivalente do ABAP/4 de um arroyo
Quand o 0 programa einiciado, a aloca<;ao de mem6ria para cada objeto
de dados ocorre na area de rolagem do programa. Enquanto 0 pr ograma esta
sendo execut ado, voce pede ler 0 conteu dc de urn objet o de dados nao-modi-
ficevel ou colocar os dados em urn objeto de clados modif idvel e emso
recupera-lo. Quando 0 programa termi na, 0 sistem.a libera a mem6ria para
todos os objetos de dadcs e seus cont eudos sao perdidos.
NOVO.... Os cbjetosde dados ires nlveis de visibjJidode: local, global e A
YERMO"- vlsibllidode de um cbjeto de dados indica em qua l locoI do progromo cobjetc
de dodos IS ccess'vel.
Obietcs de dados local mente visfveis sao acessfveis apenas a partir de
dent ro da sub-rotina em que d es sao defini dos. Objetos globalmente visiveis
podem ser acessados de qual quer Iugar dentro do progra ma . Objetos
ment e visiveis sao acessiveis de fora do pr ograma por outro prograrna. A FIgura
7.1 exibe esses treS nfveis de visibilidade pict ori camente.
Na Figura 7.1, os objet os de dados locais na sub-rotina lA estao visiveis
somente de den tro dessa sub-rotina. Qualquer instruc;ao fora deja nao pode
238 AP RENOA EM21 OIASABAPI4 HEIlNINOO OAOOSNO ABAP/l.PARTE I 239
Definindo lite rais
Urn literal e urn obj cto de dados nao modificavel. Os literais podem aparecer
em qualquer lugar em urn programa e eles sao definidos meramente sendo
digit ados ood e necessaria . Ha quatro ripos: String de ca.ractere. numerico. de
ponto fluruante e hexadecimal.
Os objeros de dados ext emos pod em ser acessados de qualquer
no pro grama 1 ou 2. Na realidade. se eles podem ou nao ser acessados dependeri
do t ipo de area externa de mem6ria util izado e do relacionarnento ent re os dois
programas. Os deulhes disso sao descr itos nas sobre a rnem6ria
SPNGPA e a mem6ria doABAP/4.
Quando um litem] esfiver enva lvido em uma ccmpcrccoc, de modo
gerel voce sempre utilizor lefrcs mclvscutcs entre ospas. As
ccmpcrccces com litereis de string de ccrcctere sempre diferenciom
letrcs rncicscvlcs e minuscules, e necess6rio certlficcr-se de
utillacrc cckc correto para obter 0 resultcdc desejado. Se 0 coixa noD
cc incidir, normolmenfe 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 liferal de string de ccredere serOo
comporodos e esteroo em lefras maiuscules. Portanto, sempre digite
....alor pare um literal de string de coredere em letros maiuscules, a
menos que saibe que ele de'le aparecer de meneira confr6ne . Por
exemplo,select s ingl e from ztxlfal wh ere lifnr cIvi l noo
localizorO um registro. mas select s ingle f ran ztxlfal where
1ifnr ' Vl ' loceliza r6 urn registro, Voce notou as

Literais numericos
Litu ais numericas sao valores numericos codificados manualmente com urn
sinal aesquerda opcional. Eles nonnalmente nio sao inc1ufdos entre.
Entretanto se urn literalnumerico contiver urn decimal , ele cl eve ser codiflcado
como urna' st ring de caractere induida entre aspas simples. Caso contMO,
Literais de string de caractere
as litcais de string de caraetere sao strings que diferenciam letras maifisculas e
minuscules de qualquer comprimentc inclufdas entre aspas simples. Par exem-
plo, I JACKI e urn lit eral de string de carac tere que contem somente caracteres
em letras maiusculas. 'Eaesar the cat I e urn literal de st ring de caractere que
contem uma mistura de caracteres em letras mindsculas e maiasculas. Seu
primeiro programa utilizou a literal de String de caractere I Hel l o SAP worl dI
Como urn lit eral de string de caractere einclufdo entr e aspas. voce nio
pode utilizar aspas simples pa r si mesmo no valor do lit eral. Para representar
uma aspa simples. voce deve utilizar duas aspas simples ccnsecutivas. Por
exemplo, a insrrucio wri te I Caesar I IS ta t l ' . escreveri cees er- ' 5 tai 1. mas a
instrucao wr; t e ' Caesar I 5 t eil ' causaraumerro de sintaxe por'que elaconcern
uma aspa simpl es dentro da pr6pria string. A instrucao wr ; te I I I I fara com
que uma aspa simples seja escrita na pagina de safda, porque as duas aspas
'consecut ivas dentrc das aspas sao tr aduz.i das como uma aspa simples . Por fim,
write: I I I . 'Hello Caesar ' "". escrevers 'Hello CaesarI
Eis alguns exemplos de literals de string de caractere icvdidos e a maneira
correta de codified-los . "Samant ha" est a incorreto; ela deve estar inclufda entre
aspas simples. cia aspas duplas e. portanro, devem ser codificadas I SamanthaI .
Em I Never end; ng, a aspa da direi ta esta faltando e assim deve ser codificado
I Never end; ng' . I DonI t b1 t e I deve canter duas aspas simples consecutivas; ela
deve ser codificada I Don' 't bi t e ' .
Progromo 2

Dodos global

O bjelos
Sub-retina 2A

Dodos locois

Ob ietos
Dodos extemas
.Obietos
Progroma 1
Ar eo de mem6ria extemo
Dedos globois

Sub-retina lA

Dodos laeais
Ob jetos
Sub-reline 1B

Dodos lcccrs

Objetos
f l o u r a 7 1
acessa-los. De forma semelhsnte, as objeros de dadoslocaisnas sub-retinas lB
e 2A DaD estaoacesstveisemqualquer lugar, somente dentro dessassub-retinas.
Qualquer no programa 1, indiferente do local onde
aparece, pode acessar as objet os de dados globais no programa 1. De forma
similar, qualquer inst ruliao no programa 2 pede acessar as objetos de dados
globais no progruna 2.
A visibi/idodede um
ob;eto de dodos
indi ca SIlO
ocessibilidode.
lorloco/mente
vislve!, ele e
ocessivel openos de
dentroumo
svb-retina. Se for
wsNd.
ele eoceu fvel de
quo/quer fugor
dentro de um
progromo. Se for
emmomltnte vislve/,
eocesslvel de foto
do progrcmo. par"
DUtro progromo.
...,
240 APUlDA EM21 DlAS AlAP/.
D1AloDEllNINDOlWlOSNOABAl'/VAlTE 1 241
Exemplos de Iiterais hexadecimais validos sao ' 00' , 'A2ES' e 'FlFOFF'. Os
exemplos de literais hexadecimais invilidos sao' aleS ' [contem caracteres em
letras mimisculas}, ' 0' (cout em urn numero de caract eres Impar}, - FP (io-
c1uido entre aspas duplas ) e x' OO' (nio deve ter um x no infcio).
Literais hexadecimais
Urn literalhexadecimal eespecificado dentro de aspas simples como se fossem
uma string de caractere. Os valores permitidos sio 0-9 e A-F. Deve haver urn
mesmo mimero de caracteres na String e t odos as caracreres decem estar em
letras maiNsculas.
literais de ponto f1 utuante
Literais de ponte f/utuante sao especificados denero de aspas simples como
' cmant i ssa>E<expoente>'. A manti ssa pede ser especificada com urn sinal a
esquerda e com au sem espaccs decimais e 0 expoent e pade estar com sinal ou
sem sinal, com ou sem zero s aesquerda. Par exempla, '9.99E9
1
, ' -10E-32I e
1+l E09 ' sao literai s de pont o flutuant e validos.
Explica sa o
o sinal adireita ndc permitido em um nume ricc a
menos que este]c dentro de as pos.
Nurnenccs entre ospos podem ter sinal c
esquerda a u adtrelto ('12 _' ].
Numericos contendo um ponto decimal devem ser
lncluldcs entre os pos simples.
Aspos duplas na o sdc permitidos.
Para representor umo as pa simples, utilize duos
ospos simples consecctbcs.
Aospo adireito est6 fcltcndo.
Val ores de pont o flutuonte devem ser ind uidos
entre aspas .
letras mlncsculcs sec perrnitidos para lltercis de
ponto flutuonte.
Letros minusculos em literais hexcdeclmcls doo
resultodos tnccrretcs.
Um numere lmpor de drgitos hexadecimois d6
resultados lncorretcs . .
Um ccroctere, sejo coloca do antes ou depois, ndo
epermitido porn lite rois hexodecimcis.
X'OAOO'
lZ.3
'AOO'
' OaOO'
'Hi
71
HP
' Can' t
l
Errada
99-
' OAOO'
' Hi I
' Can' It'
' OAOO'
' OAOO'
']e1'
' 12. 3'
,
' Hi'
17E1'
Certa
-99
Utilizando a dat a para definir vari6veis
Utilizando inStrUliio data, varidveis podem ser declaradas par a 0 programa.
Variiveis definidas na de clados sao atribuidas a urn tipo de dado e
tambem podem ter padrces .
Duas instrucoes sao comumente utilizadas pa ra definir variiveis em urn pro-
. gramado ABAP/4 :
data
parameters
Definindo yoricyeis
Tabela 7.1 Mc neiras erradcs e certos de codificcr [itercis
Se vod! espedfi cor um literal hexadecimal utilizando ccrccteres em
letros mincscvlos, veel! n60 reeeber6 qualquer avlee ou mensagem de
errc. Entretant o, quando seu progromo for executodo, a volar do literal
estar6 e rrado.

ocorrera 0 erro de sintaxe Statement x is not def ined. Please check your
spell i ng. . A Tabela 7.1 mostraas maneiras erradas e certas de codificarliterals.
Por exemplo, 256 urn lit eral numerico, assim como 0 e-99, '10 .5' eurn
lit eral numericc que contem urn ponto decimal; portanto, ele eincluido entre
aspas simples. Urn literal pe de ser utilizado como 0 valor padrao para uma
variwel ou pede ser utilizado para fornecer urn valor em uma
Exemplos deliteraisinvalidos 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).
vclc res hexcde cimcts soo roromente utilizodos noA BAP/ 4, porque eles
soo normolmente depende nte de moquinc. 0 usa de urn valor hexo-
decimal que eria dependenclo de mcqvinc deve ser e....itado.
A Tabela 7.1 descreve maneiras erradas e cert as de codificar de literais
hexadecimais e numericos.
Sintaxe para a instruCjoo data
til A seguinte ea -sintaxe para definir uma variavel que utiliza a
Z data:
d.ta , 1[{l )] [type tJ [dec' ...." d) [,,1 ve x,,].
m au
...
242 Hmo. EM 21 OI.S ABAP/!
data vl like tl2 [val ue 'xxx ' ] .
onde :
If1 e0 nome da verievel.
v2 e0 nome de uma variavel previamente definida no programa ou e0
nome de urn campo que perte'oce a uma tabela ou estrurura no Data
Dictionary. .
(l ) ea especificacso int erna do comprimento.
It! 0 tipo de
de 0 numerc de espacos de decimals (utilizado apenas com 0 ripe p).
I xxxI eurn literal que fomeee urn valor padrao.
A List agem 7.3 mos tra exemplcs de variaveis definidas com a instrucac
data.
Llstagem 7.3 Exemplos de vari 6veis defjnidos com a data
1 data flel) type c.
2 data f2 like fl .
3 data type t ve'lue 100.
4 data cur_dat e t ype d val ue ' 19980211' .
Os nomesde varisvel podem t er de 1 a 30 caracreres de comprimento.
Eles podem cent er quaisquer caract eres, exceto ( ) + : e devem conter pelc
menos urn caractere alfabetico.
A SAP recomenda que no mes de variaveis sempre devem comecar com
urn caract ere e nio devem comer urn hrfen. Urn hrfen tern signi ficado especial
(veja as strings de campo abaixo). Em vez de urn brfen, voce deve urilizar urn
sublinhado U.
Noo utilize USING nem CHANGING como nomes de vori6veis. Emboro
eles sejcmsintcticcmente corretos, podem ccuscr problemos se voce
tenter posse-los pore sub-refines.
Os seguintes pont os tambem aplicam para a instrucfo dat a:
0 compri mento padrjo depende do tipo de dado. (Compriment os-
padrao sao Iistados na Ta bela 7.2.)
0 tipo de dado padrf o ec (caractere).
DIA 7,DEFININDO DAOOS NO ABAP/t PARTE 1 I 243
0 val or inicial padrjo e0. excero para tipo de dado c. que esu em
branco.
A adi!;3.o val ue soment e aceita urn literal au ccnstante (veja ahaixo):
voce nio pode uti lizaruma variavel para [ornecer um valor padrjio .
Quando utilizar a 1i ke, a varia-vel que for defini da 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"tili zar a adiCjao 1; ke, a valor nso eobtido da variavel refe-
renciada, Voce pede especificar a adic;io value para dar avariavel urn
valor padrio. Se voce nao fizer isso, eatri buido urn valor inicial padrao
de 0 [ou em braneo para urn tipo de dado Character ).
A instrucio data pede aparecer em qualquer lugar em urn programa. A
defmi'iao para uma variavel deve vir fisicamente antes inst rucoes que a
acessam. Se voce colocar uma instrucic data depois do c6digo executavel, as
insrrucoes acima dela DaO podem acessar as vari dveis que ela define. Para urn
exemplo, veja a Lisragem 7.4.
ENTRADA'" Listagem 7.4 Exemplo de umo vori6vel que eincorretomente acessoda
r antes de ser definido
1 report zt I0704.
2 data fl(2) vej ce ' Hi ' .
3 write: fl, f l .
4 data f2(5 ) val ue ' t here' .
ANAUSE Iirltr... Avcrievel F2 edefinido no linho 4 e 0 wrl t e no lmho 3 esto tentcndc
ccessc-lc. Isso ge rero um erro de sintoxe. A dat a no Hnhc quotro
devero ser movido ontes do linho 3.
boa pr6tico de progremoJ;Qo colocor todos cs de dodos
juntos no topo de seu progremo ontes do primeiro executavel.
Ti pos de dados do ABAP/4
Hd duas categories pri ncipais de dados no ABAP/ 4: caractere e numerico.
Variaveis recebem tratamenro espe cial pel o processador do ABAP/4 com base
em sua categoria que vai alem do tratament o normal dado pa r ourras lin-
guagens. Portan to, eespecialmenre importance para voce ser capaz de reconhe-
cer e distinguir entre as tipos de dados de caractere e numericos.
244 I APRENDA EN21 DIAl IBAP/'
DIA 7:DEANIHOO DAnOS NOABAPl4, PARTE 1 245
Tipos de dodos de coroctere
O s tipos de dado de caractere sao mostrados na Tabela 7.2. Note que eles
incluem 0 tipo n, Compriment'os intemos sao dadcs em bytes. Urn hffen na
coluna Max length aparece para tipos de dado de comprirnento fixo.
Tobela 7.2 Listo de tlpos de dodos de ca roctere
r ipo de Descrifjoo Comprlmento Comprimento Valores Valo r
dado Interne inte rno int erno validos inicial
padrao mclximo padrao
c corocte re 65535 Q uolquer Em bronco
coree .
n texto 65535 0-9 0
rwmerlcc
d dote 8 (I;xo) 0-9 00000000
t horo 6 (I;xo) 0-9 000000
x hexodecimal ] 65535 Ooclqoer
A coluna Valor iaicial padrfo indica 0 valor dado avariavelpor padrao se
voce nao especific ar urn valor ut ilizando a a d i ~ a o va1ue.
Representcceo interno de vori6veis
As variaveis numericas de t exto sao chamadas variaveis numericas de caracrere
e armaz enam intei ros posi tives sem sinal. Cads dfgiro ocupa urn byte e
internamente cada urn deles e armazenado como urn caractere. Esse eurn tipo
de dado de caractere. Ele apenas pode conter os caracteres 0-9.
Utilize texto numerico para armazenar cameros que sao utilizados como
identificadores especfficos, como e 0 caso do s numeros de documento,
numeros de cont a e numeros de pedido . AMm disso, utilize-o para variaveis
que armazenarn urn numerico extraidc de urn ripe de dados de caractere. Por
exemplo , se voce fo r extrai r 0 mes de dois 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 tipos de dados de comprimento fixo. Voce nao deve
especificar urn comprimento na instrucac dat a para elas. Os valores para
var isveis de data e hora sao sempre armazenados internamente como YYYYM\1DD
e HHMMSS, respecrivamente. A data atual esrs disponive l no campo de sistema
sy-datum e a hora arual em sy-uzei t .
as vclcres de sy-datum e sy-uze! t sao configurcdos no comecc do
execucdo de progromo e n60 olterom ate que 0 prog rorno termine. Se
voce precisaracessora data e a here maiscruel durante a iniciolizoc;:Cio
de um progromo em execuo longo, utilize a instruc;:oo para obter a
. horo. Ela ctucllzc as vclcres de sy-detum e de sy- uzel t para refletir
a data e 0 horo ctucis.
Valores abscluros de hera que tern precisgo de milissegundos nao sao
utili zados no R/3 . Entretanto, valores de tempo relativosesnc disponiveis para
precisac de rnilissegundos. Para obter estes , utilize a instrucao get run time e
os armazene utilizando 0 tipo de dado 1. Veja 0 capitulo sobre analise de tempo
de execucao para mais detalhes.
Tipos de dodos numerices
O s tipos de dados numericos sao mostrados na 'Fabela 7.3. Urn hifen na coIuna
Compriment o maximo indica que 0 comprimento nao pode ser alterado. Urn
asterisco indica que 0 atributo edependence de maquina.
Tabela 7.3 Tlpos de dodos numericos
rlpo de Descrh;:&o Comprimenlo Comprimenlo Decimals Va loNs Yalor
dodo Intemo miudmo miodmos 'Icliidos Inldal
padrao padrao
i inteiro 4 (fixo) 0 _2
31
a +2
31
0
P decimal 8 16
"
09. 0
empccctedc
f ponte f1 ul1Jonle 8 . 8 15 . 1E"' 307 a lE
308
0.0
Todas as varisveis na Tabela 7.3 esrjc com sinal. 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. Valores decimais sao armazenadcs em dois dfgitos por
byte. excero 0 byte final, que Cantero urn unico digito e urn sinal. 0 pr6prio
POntOdecimal nac earmezenado; e urn atriburo da defini<; ao. Por exemplo,
data f1 (4) type p defineumavaridvel fl que tern quatro bytes de comprimento
e pode armazenar set e digitos (mais urn sinal), como mostrado na Figura 7.2.
dat a f2 (3) type p decimals 2 define uma varisvel f2 que tern tees bytes de
compriment o e pode armazenar cinco dfgitos (mais urn sinal). A defini!fao data
f 3 t ype p define urna variavel f3 capaz de armazenar 15 dfgitos, porgue 0
comprimento padrao para a tipo p e8.
II I_I I I" w w w ..
Variaveis de ponte flutuantes sao sempre aproximadas. Elas podem ser
utilizadas par a calculos que exigem valores muito gracdes au muitos espaccs
A precisac de ate 15 espacos decimais epossfvel, mas isso edepen-
dente de hardware.
V
d
II
,.
I
--
-
_.'W'
w _
w w w
CIA 7:DEAHIHOO DADOS NOABAP/4, PARTE 1 247
Ta be la 7.4 Ccntlnuccdo
Tipo de dodos Definiljao de
de DDIC
dados do ABAP/ 4
cuky
Tecla de monetcnc c(s)
curr Monet6r io p L+2) /2)
dec
Decimal p L+2)/2)
flt p
Ponto flutuante f
i nU
Inteiro de 1 byte (nenhum)
i nt 2
lntelrc de 2 bytes (nenhum)
i nt4
Inteiro de 4 bytes
lang Unguogem
c(l )
numc Texto nurnericc
n(L)
prec
Prectsec
x(2)
quan
Quontidode pL+2) / 2)
uni t Unidodes
c(L)
'W .....
i
p decima ls 2.
data fl(4) type p.
Elm"'tRl
Va/ores decimais
empocotodos s60
armazenodos em dais
drgilos par byte. 0
byte finol evmo
elrCeC;aOi ele
ormozena urn un;CO
d;gito eo sinal. a
pontodecimal naa e
ormozenodo e
portonto n60 ocvoc
espotjo no compo; ele
eparle do definic;60.
Figurg 7 2
246 "RENDAEM 2\ DIAS ABAP/'
Tabela 7.4 Tipos de dados no Data Didionary e sews correspandentes no ABAP/4
Tipo de dodos Descriljco
Definiljco de
de DDIC
dados do ABAP/4
char
Ccroctere c(L)
clnt
Cliente
c(3)
dats
Data d
tims Tempo t
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 Tabels 7.4 mostra os tipos de dados comuns no Data
Dictionary e as correspondemes definic;6es de dados no ABAP/4. leo
comprimento especificado no dominic. Para uma lista complete, consulte a
ajuda Fl para a ins trucac tab' es.
ou
parameters pl 1i ke vl
... [default 'xxx'] [obliga tory] [lower case] [as checkbox] [radiobutton group g].
onde:
0 comprimento maximo ede 8 caracteres, em vez de 30.
Alemde literais e constantes, voce tambem pode utilizar uma varavel
para definir urn valor padrao.
Sintaxe para a instru<;ao parameters
o seguint e c6digo ea sintaxe para definir uma variavel que utiliza a instruc;ao
parameters.
parameters pl( (l)] [type t] [deci mals d] ...
NOV{) Um pc remetrc e um tipo de vcr tovel especial que e definida utilizando 0
Tn.110 r tnstrucec parameters. Esse instruc;60 emuito porecida coma'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 pressionor 0 batao
Execute pare inido ra execucec de progroma. Voce pode utilizarta nto parameters come
data no mesmc programo. k. regros para as names de pcremetrc sao as mesmas que
os names vori6veis, exceto nos cases:
Utilizando a parameters para definir vari6veis
CII
-
Z
S
'"
T
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 nco ccmpctlvels com a tipo de dodo.
Utili zando 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, octdentcl-
mente ou intencionolmente. Os resultados dessa otribuit;oo sao depen-
dente s de mcqulnc e sao indefinidos.

.. . ... .. . .

....
248
APRENDA EM 21 DlAS AUPI4
DIA7:DEFlNINDO DAOOS HO ABAP/4, PARTE 1 249
M adicc es para a insrrucs o par ameter s sao descritas na Tabela 7.5.
pl e0 nome.de paramerro.
1'1 e0 nome de uma variave l ou pardmetro previamente definidos au
eo nome de urn campo que per t ence a uma t abela au estrutura no Data
Dictionary.
(l) ea especifi cacfo intema de comprimento .
teo tipo de dado.
d e 0 mimero de espacos decimais (utilizado apenas com tipo p).
I xxx I euma variavel literal au pr eviamente definida que Fomece urn
valor padrao.
8
9
10 wri te :/
11 /
12 /
13 /
14 /
15 /
16 /
17 /
18 /
r b2 radi obut t on group gl ,
rb3 r adi obutton group g1.
'You ent ered:' .
pI -" , pI ,
p2 -", p2,
p3 - ", p3.
chI-', cbi ,
cb2=" , cbz,
r bIs ' , r bI ,
rb2" '. rb2.
r b3
z
' , rb3.
AListagem 7.5mostra exemplosdepardmetros definidos comainstrucao
parameters.
Tabela 7.5 Adir;6es para a instrur;oo para meters e suos utilizoc;6es
Utilizasao
Mesmo que a instrut;50 data.
Mesma que a instrvt;oo data.
Mesma que a data.
Mesma que a odic;.oo valu e no instruo data.
o usucric deve inserir um volar no compo a ntes de 0
progroma ser executado.
Impede que vclcres sejam troduzidos em tetras ma juscules.
Exibe 0 compo de entrada como umo coixo de selecec.
Exibe a campo de entrada como um bofec de opc;.60
pertencendo 00 grupo g.
group 2.
lower case
as checkbox
radiobut ton
Quando vocl!
executo 0 relot6rio
z tx0106, os
primeiros
porometros
oparecem em umo
tela de sele'ido.
POrOmetros
obrigat6rios sdo
indicodos com
pontos de
interroga'ioo. Paro
come'iOr 0
processamento, a
usu6rio deve
pressianor0 batao
Execute no borrode
ferromenfos
Application.
Figura 7 3
type
decima ls
11 ke
default
obligatory
Exemp los de pordmetros definidos utilizond o a instrucdo
Urn progra,made exemplo eapresentado na Listagem 7.6)e a teladeentrada
que ele gera aperece na Figura 7.3. Por favor, execute esse relatorio agora.
Um progro,!,o de exemplo utilizanda para meters edodo no listogem
1.6 e tela de entrcdc que ele gero cpcrece. H6 duos vori occes do
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, nenhuma ser6 encoofrcdc. Per esse rczec, recome ndo que
voce utilize ope nas a instrut;aOparamet er s .
1 report zt x0706.
2 parameters: pl(lS) type c,
3 p2 l i ke pI obligatory l ower case,
4 p3 1; ke sy-datum defa ul t 5y-datum,
5 cbl as checkbox,
6 cb2 as checkbox,
7 r bl radi obutton gr oup gl defa ult 'X',
1 par amet ers pl (2) t ype c.
2 parameters p2 like pI.
3 parameters mall_valu e type ; default 100.
4 parameters cur_date type d def eul t '19980211' obl ; gatory.
5 parameters cur_date 11ke sy-datum def ault sy- dat umobli gatory.
ENTRADAlrrrrr.... Listagem 7.6 Exemplo de urn proqrcmc que ocelto porumetros de
,. e ntrada utilizondo 0 lnstrucco par amet ers
ENTRADlllr. Listagem 7.5
,. parameters
250 [ APRENDA EM 21 DIAS AIAP/4 Da7,DEIl NINDDD'OOS HO ABAP/I. PAml I 251
Os seguintes pont es tambem se aplicam a parameters:
Quando a tela de emostrada, campos obrigat6rios contemurn
ponte de inrerrogaclo. Estes indicamao usudrio que os campos devem
ser preenchidos antes de continuar.
0 tipo de dado padrao ec (caracrere).
0 valor padrfo e0, exceto pua tipo de dado c. que esta em branco.
A val ue aceita urn literal, uma varisvel sy ou uma varisvel
previamente definida,no programa.
Quando utilizar a 1i ke, 0 parametro sendo definidc obtem seu
comprimento e ripe de dado da varidvel referenciada. Voce Dao pode
especifica-los na mesma com 1ike.
Quando utilizar a 1ike, 0 valor nso sera obtido da varidvel
refereociada. Voce pede especificar a adi!jao val ue para dar urn valor
padrio ao parimetro. Se voce nao Fizer isso, sera. arribufdo urn valor
inicial padrgo 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 deve vir fisieamente antes das
instrucoes que a acessam.
. Os parametres apar ecem em uma tela de na mesma ordem em
que sao definidos no programa.
Todas as instrucoes parameters, independentemente de onde elas
aparecem no prograrna, sao agrupadas pelo inrerprerador do ABAP/4
e exibidas na t ela de sele!jao ao mesmo tempo. Mesmo se voce colocar
uma instruci c parameter no meio do programa, esse partmetrc ainda
sera exibido ria t ela de antes de 0 programa ser executado.
Os parametros sio exibidos em urn formato SAP padno. Para modi-
ficar sua aparencia, por exemplo, moYa 0 campo de entrada para a
esquerda ou moYa0 r6rulo para a direita, utilize a ins tru!jao sel ect1on-
screen, descrita no Dia 21.
Ulilizanda a lelras minusculas
Todos os valores digitados em urn parimetro sao traduzidos em letras maius-
cu1aspor padn.o. Para desativar essa utilize a adiljao l ower case. Essa
adilj3.o apenas se aplica a campos de caractere.
Ulilizando a como caixa de
Uma em a de tern somente dai s estados: marcado e limpo. Voce os
utiliza quando quiser apresentar ao usuano ligado/desligado (in/off) ou tipo
de escolha verdadeiro/falso (true/false) . Voce pode utilizar mais de uma caixa
de seleljio em uma tela. Sevoce 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 compriment o de dado; ele sera.
configurado como 0 padrao ripe c e. comprimento 1. 0 parlmetro contera uma
letra maitiscula Xse a caixa de estiver marcada; e estara em branco se a
caixa de selecac estiver limpa. Se a caixa de inicialmente deve center
uma me-rca de verifica!jio, utilize um valor padrio de letra Xmaiuscula. Execute
o programa ztx506 para ver a caixa de seleljao.
a espaco e a capital Xsao os deices valores validos. Nenhum out re valor
evalido para uma caixa de selecao.
Ulilizando a radi obut ton group g
Como as caixas de selecso, urn boeso de 0P!jao tambern tern dois estados:
se1ecionado e nao selecionado. Diferente das caixas de as bctoes de
nunca operam sozinhos, eles operam somente em grupos. Voce pede ter
qualquer mimero de boeces de em urn grupo, mas apenas urnpede estar
selecionado de cada vez. Eles sao utilizados quando voce precisa apresentar 010
usudrio uma list a de altemativas em que apenas uma 0pljio pode ser escolhida.
Para exibir .um parametrc como urn bctac de 0p!jaol utili ze a
ra diobutton group g. Voce nao pode especificar urn ripe de dado ou compri-
ment a; ele sera padrao configurado como 0 padrac tipo c e comprimento 1. 9
eurn nome de gropo arbitraric de urn a quatro caracteres de comprimento.
Voce pede ter mais de urn gropo em urn programa.
a parametro camera uma letra Xse a batao de estiver selecionado;
ele conrera uma lacuna se nao estiver selecionado. Para estar selecionado
inicialmente, 0 botio de deve conterumvalor padrao da letra x. Nenhum
outrOvalor evalido par a urn botao de opljio. Experimente isso iniciando 0
prognma ztx006.
R6tulos de campo de e ntr ada de parametra
Na tela de sele!jao, aesquerda de cada campo de entrada do pa.rametro, eSta urn
r6tule. Por padrao, 0 r6tulo e0 mesmo que 0 nome do par ametro. Vo ce pode
confi gurar esses r6tulos manua!mente. Para parametres defmidos como cam-
pos de Data Dictionary, voce pode recuperar 0 r6ru.lo automaticament e do
clemento de clados.
Allerando rclulos de pa rametro
Inide a ScreenCom"Howto Change Input Field labels" agora.
252 APRENOA EM 21 OIAS ABAP!4
urn r6rolo de campo de entrada do para-metr o:
1. Comece na tela ABAP/4 Editor: Edit Program.
2. Escolha 0 caminho de menu Goto->Text Elements. A tela ABAP/4
Text Elements eexibida. N o Program Field esta seu no me atual de
programa.
3. Selecione 0 borao de 0Pliao Selection Texts.
4. Pressioae 0 borao Change. A t ela ABAP/ 4 Text Elem ents: Change
PARAMETERS/SELECT-OPTIONS e exibida. Aqui, voce pode
inserir manualmente rotulos na coluna Text.
5. Digite rotulos de campo na col una Text.
6. Para urn paramerro definido como um campo DDle, voce pede
reeuperar rcrulos do elemenro de clades. Para recuperar urn rdrulc do
elemento de dados para urn dnico campo, posicione seu 0 cursor no
campo e escolha 0 caminho de menu Utilities-> Copy DD Text. 0
r6tulo de campo de comprimentc medicprovenient e do elemento de
dados aparece, 0 campo Text esta prot egido e 0 campo Type se altera
para conter os caracteres DOIe. Na parte inferior da janela, a mensagem
Oiction ary texts transferred f or select io n xxx aparece.
7. Para remover a protecao de urn unico campo, posi cione seu cursor no
campo e escclha 0 caminho de menu Utilities- > No DD Text. 0
campo Text torna-se desprotegido e os caract eres ODIC desaparecem
do Type. Na parte inferi or da janela, aparece a mensagem Text
for xxx no longer transferred. from Di ctionary..
8. Para recuperar r6tulas de campo 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 egidos. Quaisquer valores
existentes na coluna Text sao sobrescritos. Naparte inferior da janela,
aparecea mensagemAl 1 selecti on t ext s t ransferre d fromDi cti on-
ary.
9. Pressione 0 batao Save na barra de ferramentas Applicat ion. N a parte
inferior da janela, aparece a mensagem Text el ements f or program
xxxxx in 1anguage E accept ed.
10. Pressione 0 batao Back na barra de ferramentas Application duas
vezes para re tomar para seu pro grama.
Se voce quiser anular 0 rotulo de DDIC para alguns campos mas nac
outros, digit e seus r6tulos na coluna Text e endo escolha 0 caminho de menu
U riliries -c-Supplement DD Tex ts . Todos os campos Text em branco serao
preenchidos a partir do Data Dictionary, deixando apenas os valores que voce
inseriu.
TI .. . ... W_JI"I I I
7,OEFINIHOODADOS HO 'B'P/!, P'RTE 1 I 253
Apesar de mudar no DDIC, a r6tulo na tela nso eautomati camente
at ualizado. Para altera-Io, voce deve ir para a t ela ABAP/4 Text Element s:
Cba nge PARAMETERS/ SELECT-OPTIONS e escolher 0 caminho de menu
Utilities->Copy DD Text ou Utilities->Copy DD Texts .
A cdlccc val ue no instru<;ii o par ameter s, como com data, noo e
volidodo pora compotibilidode com0 tipo de.dodo.
Atri buir a ume cclxc de seleceo au umbatao de opc;ao umoutro valor
pcdrcc que noo espccc ou Xmclcsculc noo evclldc. Emboro umo
avolioc;ao superficial posso noo expor problemos, testes oprofundados
reveloromcomportomento imprevisivel nos progromosde teste.
Efeito de defi nic;:6es de parametro: t ype versus 1i ke
Sempre utilizea adifilo likepara definir um parametTo. Quando voce a utiliza,
o pargmerro adquire os seguintes atri butos de Data Dictionary:
A ajuda Fl eadquirida a partir do botsc Documentation no elemento
de dados.
A ajuda F4 e adquirida se seu pargmet ro for como urn que tern uma
t abel a de verificacac.
Urn r6tulo de CaInPO eadquirido do element o de dados.
Al em dasvant agens fomecidas pelo as aspectos acima,
Urn r6tulo de campo obtido do Dat a Dictionary e garant idamente
coerente com 0 r6tule de campo apresentado por out rcs programas
para 0 mesmo campo (des de que des tambem os obtenham do
DDIC) . 1sso elimina a confu sac de t er dois campos que sao rotulados
de maneira dif erente e referenciam os mesrnos clades.
As modificacoes no tip o ou comprimentc de dado no DD1C auto-
mati cament e sao refl etidas por seu programa.
Na visualizacl o de todas essas vantagens, voce sempre deve utilizar a
adi!jao 1i ke para definir urn pad-met ro. Isso se aplica mesmo pa ra as caixas de
selecac e os bctoes de opcso. Se necessdrio, voce deve criar urna estrurura no
DDlC de modo que voce possa ut ilizer 1i ke e) pelo menos, obter ajuda Fl.
Note que a ajuda Fl escadi sponfvel ate para bot6es de 0Pljao e caixas de selecao.
Efeito de uma tabela de verifi cccdo em um parametro
Se voce define urn parfimetro utilizando 1i ke st-fl e st -fl te rn uma tabela de
verificacao e uma seta para baixo aparece no fim do campo de entrada quando
voce executa 0 programa. Voce pode pressiona r a seta para baixo para obter
,
';""'f-
.
-" WW .. WI _. a.a. _ .WW _
254 I APRE ND AEM 21 DJAS ABAP/4 OIA7: DEANINDODAOOSMOAWH, PARTE l , 255
uma lists de valores vili dos para esse campo. Eneretanro, 0 valor inserido em
urn campo de en trada de pararnetro naoevalidadc contra a tabela de verificacao.
A somente ocorre para t elas 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 Execute.
Os valores digitados nos campos de ent rada de pardmetrc sao por
padrac corrvertidos em letras maiiisculas. Para.inrerromper a coo-
versao, ut ilize 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.
Nco utilize hlfen em um nome de vari6vel;
um hifen delimito os componentes de umo
string de compo.
Posso defmir urn par.imetro que aceita mdltipios valores do
usuano?
Sim, a inst ruljaOde opcees selecionada permite que a usuario
digice mult ipl es valores e criterios complexos.
Par que preciso codifi car em letras maiusculas entre aspas?
Como saberei se precise codificar em letras minuscules?
N. maioria das vezes, 0 sistema automaticament e con vene os
dados para letras maia scul as an tes de ser armazenado no banco
de dados. Essa conversao eexecu tada pelo dominie. Voce pode
determinar se as dados sao ccevertidos pe squisando no do-
minio. Se 0 tipo de dado do campo for CHAR e se a caixa de
selec;a.o Lower Case esriver marcada, ennc 0 campo apenas
contera maiusculas e minuscul as misturadas.
o
o
o
o
o Works hop oferece duas maneiras de voce verificar 0 que apre ndeu ne ste
capitulo. A seljao Teste oferece perguntas para ajudar a solidificar seu enrendi-
mento do co nt eudo abordado e a seljao Exe rci'cio pennite que voce pratique 0
que apr endeu. Voce pode c:ncont rar as respostas as perguntas do Test e e aos
exerdcios DO Apendice B, GRespostas as perguntas e aos exercIcios".
L....:.- --"_
Utilize urn sublinhado pore tomar seus
nomes de vcrlevel mais mceis de ler.
P&R
Workshop
Voce pede executor sumi pr6prios volidoC;6es de tela de setecec. Elos
sOo deta lhados no Die2 1, 'Telos de
Os programas sao colocados em urn buffer de programa no servidor
de aplicativo. H:i somente uma c6pia, 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.
Urn programa do ABAP/ 4- ecompasto de insrrucoes, cada uma das
quais comeca com uma palavra-chave e termina com urn pon t o. As
insrrucoespodem comegar em qualquer coluna e podem ocupar varias
linhas.
. Um cbjetc de dados euma posiljao de mem6ria que contem dados
durant e 0 tempo de execufiao do programa. 0 5 obj eeos de dados
njio-modificiveis sao literais e constantes. Os objetos de dados modi-
ficaveis sao variaveis, strings de campo e tabelasintemas. as objetos
de dadcs sao alocadcs na area de rolagem do programa e liberados
quando programa termina.
as objeros de dados tern tres nfveis de visibilidade: local , global e
exrema. A visibilidade d. urn objeto d. dados indica lugar a partir
de onde 0 objeto de dados eacessfvel. .
Os Iiterais sse dados que sao muito codificados em seu pr ograma. As
const antes podem ser utilizadas para substit uir Iite rais, facilit ando
assim a manut encio do programa.
Os tipos de dades sao dividido s em duas cate gorias amplas: caract ere
e numerico. Os tipos de dados de caract ere sao c, n, d, t e x; as ti pos
de dados numeri cos sao i . p e f.
As varidveis podem ser definidas utili zandc as instrucoes dat a e
paramet er s. A diferenlja eque, quando 0 programa e 0
sistema exibe urn camp o de entrada para cada parametro em uma tela
de sc:l eljao. 0 usuano pode digit ar novos valores ou a.lterarvaloresMpa-
dr.i:o.
Resumo
-
256 APREH OA EM21 DIAl ABAPH
Teste
o que hi de em-do comestes Iiterais, se eque algaesci errado? (Pede havermais
de urn erro emcadaurn e algunsnao tern erros.] Escreva as d e f i n i ~ 6 e s corretas.
1. Lit eral de strin g de caractere: Don I t bi te, II
2. Literal de ponto flut uante: I +2.2F03. 3I
3.. Literal numerico: - 99
4. Literal hexadecimal: xI ooaOf'
S. Literal numerico: 9.9-
6. Literal de ponto [lutuante: ' 1. 1308I
7. Literal hexadecimal: I HAI
8. Literal de String de caractere: I I I I
9. Literal de String de caractere: r I I . I I I
o que hi de err ado corn est as definicoes de dados? (Pa de 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) type 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' .
Exerdcio 1
Escr eva urn programa utilizando parametr es par a a Figura 7.4.
,
.'
SEMANA 1
Reviscio
Na semana passada, voce completou as seguintes tarefas:
aprendeu sabre 0 ambience R/3, incluindo Basis, clientes de logon,
o ABAP/4 Development Workbench e a Data Dictionary
escreveu programas simples de ABAP/4 e familiarizou-se com 0
ABAP/ 4 Editor
criou tabelas transparentes, elementos de dados e dominios
criou cbaves estrangeiras para oferecer ajuda F4 para 0 usuario
documentou elementos de dados a fun de oferecer ajuda Fl
criou indices secundarios e buffers para acelerar a acesso de dados
--- w ~ _ 'W' _ w: _
;.
SEMANA 2
Visciogeral
Na Semana 2, voce aprende a criar ob jetos de clades variaveis e fixes
utilizando os tipos de dados predefinidos e definidas pelo usuario. 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 se1ect, 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 tipo 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", voceutiliza
a instrucio tabl es par a defmir as strings de campo, compreende
a instrucjo types e utiliza ess a Insrrucdo para defini r seus pr6-
prias tipcs de dados.
0 Dia 9, IlAtribuilioes, conversdes e calculos", ensina a utilizar
varidveis comuns do sistema e a ser capaz de exibir ou localizar
qualquer variavel do sistema, prever e executar ccnverszes de
dados utilizando as instrucoes de atribuicjo e a codificar ex-
pressoes matematicas.
No Dia l a, "Insrrucoes de controle comuns", voce aprende a
codificar as insrrucces de controle comuns if, case, do e whi 1e;
a controlar a sequencia do programa utili zando 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 defini r uma tabela
interne, com ou sem uma linha de cabecalh o, a preencher uma
tabela inrema utilizando append ao lange de uma linha de ca-
Depois de conduir este capitulo. voce devera ser capaz de:
Utilizer a instrucao t abl es par a definir as st rin gs de campo e com-
preender a diferenca entre as strings de campo def inidas 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
Uma con stant 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.
Utilize uma constante quando precisar incl uir 0 mesmo literal varias vezes
em urn programa. Voce pode defini r uma cons tante com a mesmo valor do
lit eral e utilizar a constante no corpo do programa em vez do literal. Mais tarde,
se precisar alterar 0 valor do lit eral, voce poder.i simplesmenre alterar 0 valor
da ccnstant e, fazendo com que seu valor seja atu alizado onde quer que seja
util izado no prcgrema.
Defi nindo constantes
Qbjetivos do capitulo
hItpJI-.compus.com.br
Definindo dados no ABAP/4,
Parte 2
becalho au uma area de trab albo explfcit a, e a d assificar as tabelas
inremas e utilizer 0 compl emento as text .
Durante 0 Dia 12. "Tabelas internas avancadas .Parte 1", voce aprende
a reccnhecer a operador do ccrpo da tabela e utilizar esse operadar
par a testar quanto aexistenci a de dados em uma tabela int erna, e a
comparar a igualdade do conteadc de duas tabe las internes.
0 Dia 13, "Tabelas internas avancadas, Pane 2'" ensina a preencher
uma tabela interna a part ir de uma tabela de banco de dados utilizando
as consrrucoes mais eficientes: e executa a processamento de inter-
rupcao de controle em tab elas intemas utilizando at e on change of .
Durante 0 Dia 14, "A inStIllliao Write", voce aprende a entender 0
efeiro dos tipos de dados na safda, a utilizar as opcoes de format acao
cia i n s t r u ~ o wri te, a urilizar as safdas de conversio e a derecear sua
presence dentro de domini es.
APRENDAEM21 DIASABAP14
I I I .I I I I 'If w w . - - .....--.- - -
Definindo strings de compo
Utilizcndo a instrucdo DATA para definir urno string
de campo
262 I APlENDA E' 21 DIASABAP"
o ABAP/ 4 tern uma coastame predefinida: SPACE. Corresponde a urna
const ante com urn valor igual aos espacos, Voce pcdera ut iliza-la no Iugar do
literal ' I .
Sintaxe da CONSTANTS
en 0 c6di go a seguir demonstra a sintaxe para a definic;ao de urna constant e. E
Z semelhant e a inst ruc;ao data ; entr etanto, a adiCjao value se faz necessaria. Em
-I rodos as outros modos, as constantes concordam com as mesmas regras das
varisveis definidas com 0 usa da insr rucio data. Veja a Lisragem 8.1 quanta a
m exemplos das deficicoesde constante.
T constant s cl [{l) ] [ typ e t ] [deci mals II] va'lue 'xxx'.
ou
const ant s c1 l1ke cv value ' xxx' ,
code:
cl e0 nome da constante.
cv ea nome de uma constante ou varisvel previament e definida ou e
o nome de urn campoque pertence a uma tabela ou estrurura rio Data
Di ctionary.
{l} ea especificacjo int ema de eomprimento.
teo ripe de dado.
de0 numero de casas decimais (ut ilizadas apenas com a tipo p).
' xxx I eum lit eral que fomeee 0 valor cia const ant s.
Lislagem 8.1 Defini,6e s de constants
1 consta 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 gamation_dat e l i ke sy-dat umvalue ' 19970305' .
As constcntes podern ser definidos em urn poo l de tipos. Quando
definidos, elcepodemsercompa rtilhodos por dfverscs programos. Para
mois tnicrmocoes , consulte a secs c "Pools de tipos" no fina l deste
capitulo.
I
!
j
!
I
I
I
1
III
-
Z
S
1ft .
...
I 263
IlOYO ... Uma string decompo corresponde a um lipo de vcricvel ee0 equivolente de
mMO " 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 compos
ogrupo dos sob um nome comum. A diierenco principal e 0 lugor ern que reside 0
definilioo. Aestrutura de termas no R/3 se cpllcc apenas a urn cbjetc do Dato Dictionary
cante ndo um cc nluntc de campos. Astring de compo de termo se oplico a um coniunto
de compos definido ern urn progrorna ABAP/4.
Duas icsrrucces sao geralmente utilizadas para definir Strings de campo .
emum programaABAP/4:
data
t abl es
Uma st ring de campo definida com 0 usa' dainstrucio data corre sponde a um
objeto de dada modificavel, Elapede ter visibiliclade local ou global .
Sinlaxe para a definiccc de uma sIring de campo ulilizando
a DATA
A seguir, veja a sintaxe para a de uma string de campo utilizando a
instnl/Sao dat a.
data: begi n of /sl.
jl [(l )] [t ype el [decimals d] [value ' xxx ' ] .
/ 2[(1) ] [ty pe tJ [deci mals d) [val ue ' xxx' ] ,
end of /sl .
ou
dat a begi n 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 ,
ou
data is1 1; ke i s2.
onde:
j51 e0 nome da 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 e0 nome de uma string de'campo previamente definida au ea
nome de uma tabela ou est rutura no Data Dic tionary.
( I) ea especificacac int erna de comprimento.
t eo tipo de dado.
de 0 ndmero de casu decimais (utilizadasapenas com a tipo p).
' xxxI eurn literal que fornece urn valor padrio',
stl e 0 nome de urna estrutura au tabela no Data Dictionary.
As stringsdecamposeguemasmesmasregras das variaveis definidascom
o usa dainstrucio dat a. Para referi r-se a urn component e individual, 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 write cust inf o-number .
A instrucio include nia faz parte cia instru ci o data : ela euma instrucao
independente. Portanto, ni a pede ser encadeada em urna instrucao data. A
inst rucao 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.
ENTRADA'" Listagem 8.2 Umexernplo simples de umo string de compo definido
,. com a usedo instruc;oe data
DIA l : DEfININDO DAOOS NO ABJ.1/4, PAm 2 265
EmAOA" Listagem 8.3 Umo string de campo pede conter umo o utro string de
" compo
1 report ztxG803.
2 data : begin of names ,
3 namel li ke at xknat - neeet ,
4 nameZ like ltxknal -nameZ,
5 end of name s.
6 dat a: begin of cust _i nfo ,
7 number (10) type n,
8 nm li ke names, N ccmc uma string de campo
9 end of cust_info.
10
11 cU5t_info- nlUllber .. 15.
12 cust _1nfo- nm- name l . '" 'Jack'.
13 cust_1nfo- nm- name2 '" ' Gordon'.
14
15 ....tte: I cust_in fo-number,
16 cust_info-nm-namel.
17 cust _1nf o-nm-nameZ .
. .... A linho 2 inicio a definio da string de compo names. Cc ntem dois compos
lK.lJJSE,. que s60 definid,?s como compos do tabelo zt xknal no Dota Dictionary. Aeles
nOosOofomecidos vclcres inido is. No linho 8, 0 componente cust_i nfc-nane edefinido
como string de compo names. Quando utilizado nos linhas 12 e 13, nm einc1uido no
nome do componente.
EIflRADA" Listagem 8.4 Uma string de compo pode ser deftntdc exotamente como
,. umo tobela ou estruturo do DDIC
I report ztx0802.
2 data: begin of t otals I,
3 : r egion(]) ;alue '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
9 totals_I -debits = 100.
10 totals_I -count .. 10.
11 t ota ls _2-debHs .. 200.
12
13 write : I t ota ls_I -regi on. t otal s_I - debit s , totals_I- count .
14 I totals_2- region. t otals_2-debit s , totals_2-count .
1 r eport ztx0804.
2 data: my_l fal l 1ke %tx l f al,
3 my_addr like ztxa ddr .
4
5 ll\Y_l fal-namel'" ' Andrea Mille r'.
6 my_lfal - t elf l .. ' 1-243- 2746'.
7 my_addr -landl '" 'CA' .
B
9 write : I lly_ltal - namel ,
10 l'Iy_lfal - name2.
11 my_addr-landl.
como uma tabela no ODIC
como uma estrutura no DOIC
. .... A linho 2 inicio a definio do string de compo to t al s 1. Elo cc ntem ires
campos, 0 primeiro des tres einidolizado com a valor ' unknown'. No Hohc 7,
a string de compo totals 2 e definido exctornente como to t al s 1. a volar de
total s l- r egi on n60 epropagodo perc total s 2-regi on. Nos linh;s de 9 a 11, os
volores-;oo otribuidos oos componentes des string-; de compo e nos linhos 13 e 14, os
vclcres de todos as componentes sao totolmente escritos.
No linho 2, lnY_1fal edefinido exctcmente como a tcbelc do ODIC. ztxl fal.
e my_addr edefinida como 0 estrufuro do ODIC, ztxaddr .
.... -_ ..... _---
- - - - - - - - - - - - -- ,-
266 APRENOA EM21 0lA5ASAP"
01AI: DEFlNINDODADOS NO PARTE 2 267

Perc visuolizor 0 definil)oo do ODIC do tcbelo ztxlfo 1, dois diques
no nome dele no seu c6digo-fonte.
List agem 8.S Astobelas e est ruturos do ODICpadem tcmbem ser
tnclvtdos em umo string de compo
Utilizando uma string de campo como uma voricvel
do tipo char
Voce nao apenas pede enderecar componentes individuais de uma string de
campo, como tambem pedeecderecar todos as eomponentes de uma s6 vez,
como se fossem uma (mica variavel do tipo char. A Listagem 8.7 ilustra esse
conceito.
1 report ztxOB05.
2 data begin of fsL
3 include structure ztxlfa1.
4 data : extra_f ield(3) t ype c.
5 end of fs L
6
7 fsl -lifnr 12.
8 fsl -extra_f ield ' xyz' .
9
10 write: / fsl -l1fnr.
11 fsl-extra_f i eld .
AMAuSE" A llnhc 2 inido 0 definit;oo do string de campo fsl. A instruc;Oo termino com
,. urn ponto, porque include structure noo eporte do instrut;60 data; eumo
instruo independente. No Ilnhc 3, a estrvturo do tcbelc ztxl fal eincluldo em urno
string de campo. Na linho 4, um outro compo eindul do no shjng de compo depcls des
campos do tcbelc zt xl f al. Qua isquer nemeros de compos podem ser incluidos, como
tombem mais estruturas podem ser inckndcs oqui au qualquer combinot;60 dos dais.
.... Li st agem 8. 7 Urn exemplo do de umo string de compo como
EHTUOA,. diversas vori6veis e como umo (mica vori6vel do tipo char
1 report ztx0807.
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.
1 r eport ztx0806.
2 dat a: begin of fs 1.
3 mylfal l tke ztxlfa1.
4 extra_field(3) type c.
5 end of tst ,
6
7 h1-mylfal-l1fnr 12.
8h1- ext ra_fi eld ' xyz' .
9
10 wr i t e: / h1-mylfa1- l ifnr .
11 fs1 - extra f ield .
Uma string de campo pede ser atributda a uma c ut ra, se ambas tiverem
a mesrna estrutura, como pode ser visto na Lisragem 8.8.
AKA .. As linhos de 2 0 6 definem a string de campo f sl. Esso string possui tr!s
USE ,. componentes, coda urn com um vclc r podnSo. No linha 8, coda componente
eescritc indivi dualmente. No linho 9, a string de compo e escritc como se fosse uma
unico vori6vel. Conseq Oentemente, a soido mostro 0 contecdc de f s1 como se fosse umo
unico vori6vel definrdc como char 3. No linha 11, a vclcr 'XYZ I eotribufda astring de
compo, novomente trotando-o como uma vcricvel char. A scfdc resultante mostro que
coda componente reflefea clterocoo, porque estec acessondo 0 mesmo armozenomento .
o c6digo na Listagem 8.7 deve produzir esta saida:
ABC
ABC
X Y Z
XYZ
SAlOl
Lista gem 8 .6 Se voce utilizor 1i ke em vez de Include, voce obter6 urn
resu ltodo diferente. as names dos ca mpos inclufdos sao prefixodos par urn
nome de cornponente intermedi6rio .

ANAUSE" Alinho 2 inicic odefinkcc dc stringdecompo 1fa1_with_extra_fi e1d.Ainstrut;60
,. terrnlrocomumponte, porque i ncl ude structure nCoeporte do instrur;oo data;
eurnc independente. No llnhc 3, a estrvhJro do fcbelc ztxlfa1 e inclufdo no string
de campo. No li nho 4, um outro campo einduldo no string de compo depois dos campos
do tobelo ztxl f al. Occlsqcer numerosde campos podemserindcldos, como tombemrncis
estruturaspodemser incluidas oqui au quolquer ccmbtnccoc dos dois.
268 .APRENDAEK ! 1 DIASABAP/' . DIAl , DEANINDODADDS ND ABAP/ 4, PAm! 269
EIITRADA'" Listagem 8.8 Urn exemplo de atribui t;60 envolvendo duos strings de
campo
151 e 0 nome cia string de campo. Urna tabela ou estrutura com a
mesmc nome deve existir no Data Dictiona ry.
Utilizando a instr uc;iio TABLESpara definir umo string
de compo
I liIl... As linhas de 2 a 6 definem a string de compo fs1. A linhc 7 define a string de
compo f 52 exatomente como 1s1. No linho 9, fs1 emovida pora fs2, como
SI! fosse umo unicc vcrtcvel do tipo char. No linho 10, as componentes de f52 sao
totclmente escritos.
ANWSf 1IIrrr... " A linho 2 define a string de compo ztxl f al. Suo definkcc eexotomente iguol
r atobelo do Data Dictioncrv com a mesmo nome . Nos ltnhos 4 e 5, volores sao
dodos a dais de seus componentes, que siio totalmente escritos no linha 7.
A instrucao tables faz mais do que apenas definir uma string de campo. Ela
realiza duas
Define uma Stringde campo.
Farnece ao programa 0 acesso a uma tabela de banco de dados com 0
mesmo nome, se uma existi r.
o primeiro exemplo da instrucio sel ect ereproduzido na Listagem 8.10.
Voce pede agora analisa-lo sob uma nova perspect iva.
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 .
4 wr1"te I z lfal -11fnr .
5 endsel ect ,
ANALISE ..... A linho 2 define a string de compo zt xl fal. Suo defini<;iio eexctcmente iguoJ
r a do tobelo do Dote Dictionary com 0 mesrno nome, H6 tcmbem umo tobelo
do ban co dedodos com 0 mesmo nome, de modo que sejo proporcionodo 0 0 progra mo
a ocesso atobelc. a que slqnificc que 0 mesma pode agora serutilizadoem vmo instrv<;50
ENTiADA'" Listagem 8 -, 9 Exemplo simples de uma string de compo defini da com 0
,. usa do tables
1 report ztx0809.
2 tables ztxlfal.
3
4 zt xlfal-namel 'Bugsy ' .
5 zt xlfallandl 'US '.
6
7 write: I ztxlfal.namel , ztxlfal-landl.
String de compo definido utilizando TABLESinterogindo
com SELECT
Umo string de campo contendo tipos de dado numerlccs requer
ccns'derococ especial durante as atribuic;6es. Esses ccnslderocees
sereo obordados no Die 9, no secec "Atribuic;6es
H

o c6digo na Listagem 8.8 deve produzir esta saida:


ABC
..
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 List agem 8.9.
Sintaxe para a deflni cco de umo string de compo utilizondo
a instrucco TABLES
A seguir, veja a sintaxe para a definicio de urna string de campo utilizando a
inst rucfc tabl es.
tabl es [sl ,
onde:
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 .
a
9 152 z 151.
10 write: I tsz-cf, rsz-ea, 152-c3 .
sliol

'" 270 'IiEND' "EM21 DIAS ABAPH
....... w w WW
--
-
CIA I, DfIN1NDO DADOS NOw.Pf4, PARTE 2 271
Visibilida de de uma string de campo defini da utilizando
TABLES
sel ect. Sempre que a linha3 eexecutoda, umregistreelido a partirdo tobelo do banco
de dodos ztxlfal para a string de campo zt xl f al. Pora coda registro, 0 vclcr do
compon ente ztxl fal -l i fnr e totalmente escrito (Iinna 4).
Urna string de campo definida utilizandc tab 1essempreUTaavisibilidadeglobal
e externa, independentemente dolocal ondeedqinidanoprograma. 1S 50 signifies
que se voce colocar urna inStru?o tabl es em uma sub-retina, a definic;ao sera
global e voceDaD poderf ter uma c utra definiljao para a mesma string de campo
em qualquer local dentro desse programa.
A string de campo tambem evisfvel extemamente. Is50 significa que 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 na Figura 8.1. Quando 0 programa chamado for executado,
ele "veri" 0 valor em ztxlfa1 a partir do primeiro programa. Se ele alterar
ztxlfa1, 0 programa de chamada avera" quando recupe rar 0
controle.
o c6digo no Listagem 8.11 produz esta saida:
AS CD
1 report ztx0811.
2 types char2(2) t ype c .
3 dat a: 1,'1 t ype char2 val ue ' AS' .
4 v2 t ype char2 value 'CD'.
s
6 write: 'Ill. 1,' 2. :' .
, ..... A linha 2 define um tipo de dodo denominodo char 2. Eum compo char de
,lJ(lI.lSf,. dais 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 oElos recebem vclcres-pcdrec e, no
linha 6, esses vclcres s60 totalmente escritos.
onde:
tl e0 nome do tipo.
vl ea nome de uma varisvel previamenre defmi da no pr ograma au e0
nome de campo que pertence a uma tabela ou estrutura no Data
Dictionary, .
. (l) ea especificacao interna de comprimento.
t eo tipo de dado.
de 0 mimero de casas decimais (utili zadas apenas com 0 tipo p).
As Lisragens 8.11 e 8.12 mostram exemplos de pr ogramas que definem e
utilizarn. seus pr6prios tipos de dados .
ENTRADA'" Listagem 8.11 Simples exemplo de um tipo de dodo definido pelo
usu6rio char2
SAiD!
Tobelasm.lfo1.
I I
Tabelas ztxlfo1.'
(choma outro
progl'Cl mo)
/ve o de mem6rio
Progl'Clmo de chcmcdc c:omportilhodo Progrcmoc:homodo
F lgur
n
8 1
As clefinifjOes de
tobelas id'nticos em
um programa de
chomado e em um
programo chomado
fat comqce 0
mem6riosejo
compornlhodo por
essosstrings de
compo.
Listagem 8.12 A utilizac;ao de tipos poder6 tomor seu c6digo mois
clcro e mcis f6cil de ler
"e li r a 1ta 11ana nilo tern dectna t s
I::iegin of ameri can_sums .
petty_cas h t ype dollars.
pay_outs t ype dollars.
l lJ'1lp_sums type dollars,
end of ll'ller1can_sums.
begi n of i t ali an_sums,
data :
1 re port ztx0812.
Z t ypes : doll ar s( 16) t ype p deci mals 2.
3 lira(l6} t ype p decimals O.
4
5
6
7
a
,
10
Voce pede definir seus pr6prios tipos de dados utilizando a t ypes e
basea-los nos tipos de dados exist entes.
Sintoxe para ci TYPES
!!! A seguir, veja a sintaxe para a definicac de um tipo utilizando a insrrucio t ypes.
typu t1[(l)] [type t] [decimal, d] .
au
"' type s tl like -r .
y
Definindo tipos
272 mENO' EM 21 DIAS ,mH
OIA 8, OEANINOD O'OOS NO ' 8'P14. P'RTE2 273
petty_cash type li ra,
pay_outs t ype l 1ra,
lump_sums type lira.
end of 'ital ian_sums.
I customer _eddr- st reet ,
employee_addr -country .
customer_addr type address.
vendor_addr: t ype address ,
empl oyee_addr type address,
shipto_addr type address.
11
12
13
"
15
16 american_sums- pay_outs .. ' 9500. 03I
urn decimal
17 italf an_sums -l ump_sums .. 514l.
18
19 write: / amer1can_sums -pay_outs .
20 / i t ali an sums - l ump sums .
"espes necess ar-ies quando l iteral
9
10 data:
11
12
J3
14
15
16 employee_addr-country
17
18 write:
19
'101 Memory l ane' .
' Transyl vani a'.
Tipos estruturodos
ENTRADA.... 8.13 A utilizac;oo de : ipas pode reduzir a
,. redondencrc e tamar 0 monutenc;oo mots faed
Progromo2
type-pools zt xt .
. dat a fl type.z.txt:...dol1ar s .
type-peols ztxt .
data fl t ype _ztxLdoll ar-s .
Progromo 1
llr.. Uma t ypes pode ser ormozenodo em um grupo de fipo. Urngrupo
TERl{O" de tipo (tombe m conhecldo como um pool de tipo) corresponde a urn objeto
do Data Did iona ryque existe rneromente para canter uma ou mots insfruIYoes types au
constant s. Utilizondo a t ype-po ol s em seu programo, veee aces sor6 tipos ou
constantes a partir de um grupe de tipo e"uflllzcre as mesmos em seu progromo. Muitos
program as podem compa rtilhor um grupo de tipo, propordonondo a voce a hobilidade
de crier definiIYoes centralizodas. A Figura 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 programo utilizondo types e constants de tal grupo.
Grupo de tipo ztxt.
, lilt... h linhos de 2 a 8 deflnern um tipo de dodo de nominodo addr ess que ccntem
ANALISE,. cinco compos. Nos linhas de 10 a 13, quotro strings de campo sdc definidos
com a uso do novo tipo. Sem 0 no.....o tlpo, essos teriom utilizado 24 linhos
ad icionais de c6digo . Alem disso, a mcnutencoo fica mois f6cil: se umo clterocec nos
deflnlcces das strings de compo de enderecc for necessaria, ope nos a definiIYoo do tipo
preciscrc ser oltera do.
Fig ura 8 2
Urn gropo de tipo e"
um pore as
types e
constants. Ele pode
ser comporlilhodo
enee cs progromos.
Grupos de tipo
Urn tipo definido pelo usu6rio pede ser boseodo no de umo string de
ztx0813 .
begin of address.
street (25)
c1ty( 20)
region{7l .
count ry (l 5) ,
posta 1_code(g) .
end of addres s .
o c6digo na Listagem 'S.12 produz esta saida:
9,500 .00
5,141
1 report
2 t ypes :
3
,
5
6
7
8
NOVO ...
HilIO" campo. Ele e conhecido como um fipo estruturodo. A Ustagem 8.13 mostro
como voce pede reduzir 0 tc mcnhc de um progromo vtilizonde um tipo estruturodo.
A linho 2 define urn tipo de dodo denominaclo dol lars como urn campo
,.. decimal compad odo de 16 bytes com 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 sao definidos com0 usa dos novos tipos de doclo. Nos llnhcs
16 e 17, urn volor eotribuldo 0 urn componente de coda e, nos linhos 19 e 20, ell'Ssoc
escr itos. .
Considere urn tipo definido pelo usuario como umavariavel, masurn tipo
quevoce naoposse utilizer paraarmazenar clados. Elepodera apenasserutilizado
paracoooutrasveriaveis. As mesmasregrasseaplicamaos tipos, damesmaforma
que se aplicam as varidveis e as strings de campo. Names 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 as caracteres - < >.
siiDI
274 . PRE '" EM71 DIAS . U P/<
UEfiNINDO DADOS ND .wP/' . PARTE 2 275
Criando urn grupo de tipo
Para criar urn gropo de tipo no Data Dictionary, utilize a seguinte procedi-
ment a.
EMTRADAlrrItr.. Listogem 8.14 Urnexemplo do lnstrvcdc type-pool contendo tipos e
,. constontes
As strings de campo sao como 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
est rururados, ut ilizando a instrof:jao types. Os ripos definidos pelc
usuario reduzem a redundancia e tornam mais facil a manut encao.
Voce pede defmir urn gropo de tipo no Data Di ctionary para fazer
com que os tipos deflnidos pelc usuario e constantes sejam reu-
rilizfveis.
1. Comece no Dict ionar y: Initial Screen (caminho do menu
Tools- >ABAP/ 4 Workbench, Development- >AEAP/ 4 Dictionary).
2. Digi te a nome de seu grupo de ripe no campo Obj ect Name.
3. Selecione 0 botso de Type Groups.
4. "Pressione 0 bcrao Create. A tela Type Group:c:o:t: Create Text sed
exibida.
5. Di gite uma descricac de seu grupo de tipo no campo Short
6. Pressione 0 bono Save. A tela Create Obj ect Catalog Entry sera
exibida.
7. Pressione 0 borso Local Object. A tel. AEAP/ 4 Edi tor: Edit Type
Group sera exibida. Na primeira linha, a t yee- pee1 r ,
aparecers, onde te o nome de seu gropo de tipo. Se 0 nome nao
aparecer, voce devera digita-lo agora.
8. Nas linhas subseqilentes, digit e as constants e types .
Todos os names devem comecar com t _, onde t e o nome de seu pool
de tipo.
9. Pressione.o bonoSavena barn de [errament as do aplicativo. Na parte
inferior da janela, a mensagem Type group saved sed. exibida.
10. Pressione 0 botao Back na barn de ferrsmentas do aplicativo para
retornar aDictionary: 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 Delete na barra de ferrament as do
ap,licativo.
lnicie a ScreenCom"'Howto Crea te 0 Type Group'" ogara.
Para criar urn gropo de tipo;
Resumo
' 19970305' .
type p decimals ?
t ype p deci mal s O.
t ype 1 valu e 5000.
l1ke sy-detue value
i txl .
ztxl_doll ars (16)
ztxl_li r a(l6)
ztxl_'Ilarn1"9_threshol d
ztxl_ama 1gamat i on_date
iHAUSf '" A linho 2 ,ind ui as do grupo tipo zt xl no progroma .. As ltnhos de
r 3 a 7 definem umo string de compo utllhcndc a tipo zt xl _dol l ars do grupo
de tipo . A linho 9 ctribul um valor para pay_outs e esse valor e compcrndo com 0
cc nstonte ztxl _warni n9_th r eshol d do grvpo de tipo no linhc 11.
Se 0 grupo de ripo ja river side inclufdo, tentativas subseqaeotes para
incluf-lo serso ignoradas e nao causarao urn erro.
Os nomes do gropo de ripe podern ter de urn a cinco caracteres de
comprimento e devem comecar com y ou z. Os tipos e constantes incluidos
em urn programa com a usa cia inst rucjo type- pools sempr e terio visibilidade
global.
ANAUSE'" A linho 1 indica 0 comecc do grupo de tipo e the cfribui um nome. As linhos
,. de 2 c 5 definem t ypes e constants que podem ser utilizodos em quolquer
progromo.
1 type-pool
Z types :
J
4 constant s :
5
1 re port ztxOSlS.
2 type -pcc l s ztxl.
3 data: begi n of amer ican_sums .
4 pet t y_cash type ztx l_dollar s.
5 pay_out s typl! ztd _dollars ,
6 llll1p_sums t ype ztxl_dollars .
7 end of ameri can_sues ,
8
9 amer1ca"_sums-pay_outs ' 9500. 03'.
10
11 if l/lll!r i can_sums-pay_outs > l u I_warning_t hre shol d.
12 write: I ' Warni ng' . amer1can_slIIlIS -pay_out s .
13 ' exceeds th reshol d' . ztxl_warning_threshold.
14 end1f.
ENTiADl lio.. J.Istagem 8.15 A do grupo de tipo reduz 0 dcpltcccec de
,. c6digo para tomcr mois f6cil a mcnutencco
".... w _ _ ... 'W' 'W' .. __ - "!'!""
276 APRENDA 1M 21 DIASABA' "
CIA I, OEAttlMOO OADOS NOAS""',.,PARTE 1 277
o Wo rkshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A Teste oferece perguntas para ajuda r a solidificar seu entendi-
mente do conteudo a.bordado e a Exer cfcic permire que voce prati que 0
que aprendeu. Voce ped e encont rar as respostas as perguatas do teste e ao
exerclcios no Apendice B, "Respostas as perguntas e aos exercfcios".
Workshop
Nco utilize um trccc em urn nome de
vori6vel; um trccc delimito os componenfes
de umo string de compo.
Util ize um sublinhodo para foci litcr c
lelturc des names de vc riovels.

----'---------
P&R Test e
o
o
o
o
Por que preciso criar strings de campo? Por que nao posso
apenas utilizar simples variaveis?
As Strings de campo proporcionam a voce urn modo de organizar
suas variaveis em grupos. Quando voce river centenas de varifveis
em urn prcgrama, a organizacao dessas varuveis em strings de
campofad. com que a entre asvarieveisse tome ainda mais
clara. Utilizar strings de campo para agrupar as camp os tambem
permitirf que voce execute uma .operacao em urn grupo de
variaveis como se elas fossern consideradas uma dnica variwel,
Assim, por exemplo, se voce precisar mover 100 varifveis, sed
possrvel, em geral, cadificar uma Unica a fim de executar
o movimeoto de uma string de campo para uma ourra, em vez de
codificar 100 instrucoes de para cada vari avel. Mover
uma dnica String de campo sen tambem mais eficiente doque 100
insrrucoes move, com isso seu programa executara mais rapida-
mente . Voce vera nos capfrulos que estao par vir que muitas
instrucoes podem utilizar uma string de campo como urn ope-
rando. Se voce puder utilizar as strings de campo, voce tera
vantagens sabre as mesmas , send o assim elas econo mizarao tempo
para bern como urn c6digo muito exte nso.
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 onalid ade das esrruru ras do DDIC e
bern mai s imporrante que a oferecida pel os -tipos estru rur ados,
porque podem fornecer r6tulos e ajuda PI a F4. En tr etanto,
types pede serutilizadapara definircipos est ruturados e aninhados
que ccntenham rabelas int ernas. 0 que nao acontece com as
estruturas do DDIC. Isso sera demonstrado no Capfruic 12 na
sobre as tabelas int ernes.
1. Qual ea consta nte predefinida que pede ser ut ilizada em urn pro-
grama ABAP. Qual e0 seu equivalence urilizandc urnliteral?
2. Quais sao as tipos de instrucao t ype que podem ser utiliza dos equal
eo ripe que pode ser definido no Data Dictionary?
Exerdcio 1
Qual ea ourra forma de se declarera variavel abaixo urilizando uma declaracac
-type"?
data : begin of usd_alllOunt.
hot el type p decimals 2,
r ent car t ype p decimals 2,
pl ane type p decimals 2,
food type p decimals 2.
end of usd_aJIlOunt ,
begi n of &meX_pt.
hot el type p dectee l s 2,
re nt car type p decteat s 0,
pl ane type p cectsets O.
f ood type p decimals 0,
end of amex_pt.
Exerd cio 2
Qual e0 resultado desre prograrna?
report zb0816 .
dat a: begi n of f Id_stgl,
var l value ' 1' ,
va-z valu e ' 3',
var3 value ' 5' ,
var4 value '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: I f l d_st g2-var l, fld stgl -var2 , f ld stg2-varti . fld stgl-
v
ar3.
write: I fl d_stgl -varS. fl ( st g2-var 7, f l(st gl- varS.
9
conversoes e ccilculos
Qbjetivos do ca pit ulo
Depois de concluir esee capitulo, voce.sera capaz de:
Utilizar variaveis comuns do sistema e ser capazde exibir au localizer
qualquer variavel de sistema
Utilizar a instrucao c1ear e compreender seu efeitc sobre as varidveis
e Strings de campo
Execucar atribuicces utilizandc as instrucoes move e move-correspond-
i ng
Prever e executar convers6es de dados utilizando as insrrucoes de
atribuic;ao
Codificar expressoes maremdricas
Antes de prosseguir
Os programas oeste enos capltul os subseqa ec tes utilizam [crmaros de entrada
e saida que sao confi gurados com 05 padr6es do usuario e podem ser dif erentes
de usuario para usuario. Ante s de prosseguir, seria uma boa ideia configurar
seus padr6es de usufrio para que corresponclam com os existences oest e livre,
de modo que sua saida coincida com as listagens de salda apresentadas neste
livro.
http://_.compUJ.com.br"
- - - - - - - - - -- -
280 " RE NDA EM21 DIAS ABAr/4
DIA UTRIBUI(DES. CDHVERSOES Ec.ll!UlDS I 281
Tab ela 9.1 Vori6veis de sistema comumente utilizodos
A Listagem 9.1 most ra urn programa de exemplo que utiliza as variaveis
de sist ema.
Configure padroes de usuario agora, seguindo este procedimento:
1. Se voce estiver atualmente no sistema R/3, salve todo a seu t rabalho
agora.
2. A parrirde qualquer tela, selecione 0 caminho de menu System->User
Profile-> User Defaults . 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, selecione a bcrso de
Period.
5. Pressione a bono Save na barra de ferrameneas Application. Na pane
infe rior da janela, a mensagem 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 pr6ximo logon.
6. Selecione a caminho de menu System-c-Log Off. A cain de dialogo
Log Off sen exibida,
7. Pressione 0 bono Yes. Voce esd. ccaectadc ao sist ema.
Seus novos padree s de usudrio terao efeiro na pr6xima vez que voce
eferuar logon.
Tra balba ndo com va riaveis de sistema
NOVOlit.. Existem 176 varidveis de sistema dispcnfveis dentro de coda programo ABAP/4 .
TERMO" Voce noDpreciso defini-lcs: elcesec cvtomctlccmente definidas e estcc sempre
disponfveis.
Para exibir uma lista de variaveis de sist ema, exiba a estrutura do DDIC,
syst. Voce pode exibi-la utilizando Dictionary: Ini tial Screen (t ela inicial ) au
de dais cliqu es no no me de qualqu er variavel de siste ma em seu pr ograma. A
prim eira pagina de syst eapr esent ada na Figura 9.1.
Na Figura 9.1, os names de campo aparecem na primeira col una e as
descricees eseao a direita na coluna Short Text. Para visualizar a descricac
inteira, role para a direita ciando urn clique no ba tao Column Right; Next . . .
na pane inferio r da t ela.
Par a localizar urn campo pelo nome. pressione a batao Find na barr a de
ferramentas Standard. A t ela Find Fi eld aparecera, solicitando 0 nome do
campo que voce deseja localizar.
o alias de syst esy (pronuncia-se sai). Em seu ccdigc, voce podera
utilizar as dais nom es. Par exemplo, voce pode codificar sy-datum ou syst-da-
tum; sao exatamenre equivalentes. A maioria dos programadores utiliza sy. A
Tabela 9.1 cont em uma pequena Iist a de vari aveis de sistema comurnente
utilizadas. Variaveis adicionais serfo apre sentadas por todo a livro.
Figura 9 1
Esto ea estruturo
syst . f lo contemas
definil;6es de lodas
05 vori6veis de
sistemo. 0 boICo
Column Right;
Next role ume
co/unopor vel patO
o direita,fozendo
comque 0 extensao
totof deShott Text
sejo vislJOlizodo.
Nome
sy-datum
syuze1t
sy- uname
sysubrc
sy-mandt
sypagno
sy-co1no
sy-l tnno
sy-vline
sy-ul i ne
sy- rept d
sy-cprog
sy t code
sy-dbcnt

Data atuol
Horo ctuc l
Id do usu6rio otuol
Ultimo c6digo de retorno
Cliente de logon
Numerc da p6gino de soldo otuol
Nurnerodo coluna de SOldo atuol
Nu merc do linho de llstc de soldo atuol
Linho vertical
linha horizontal
Nome do relot6rio otuol
Nome do progromo principal
C6digo do transol;0o otuol
Dentro de select, ccntem a contador de iterol;oo ctucl. Depots de
endse1ect , ccntem a nemero de linhcs que correspondema
cl6usulo where.
282 I APRENOA EM 21 OIAS ABA P'. OIA UTlIIBU1\'El,CONVERsOEl EcALCUlOS I 283
Listagem 9.1 Utilizondo vari6veis b6sicas de sistema
1 report zb0901.
2 ta bles ztx lhl.
3 parameters "landl li lce ztxlfal -l andl obl igatory def ault ' US' .
4 vr-tte : I 'Current date :' . sy-detum,
5 / ' Cur rent time : '. sy-uaet t ,
6 / ' Current user: I . sy-uneme ,
7 / 'Vendors having country code ' .
8 t.
9 select * fr om ztxlfal
10 where landl .. "land]
11 or der by 1f tm-.
12 wr ite: I sy-dbc nt , ztx lfal-l 1fnr.
13 endselect.
14 lli rite: / 5y- dbcnt, 'records found',
15 if sr-subrc <> O.
16 write: / ' No vendors exist f or count ry" ,
17 endif.
siiDI

o c6digo na Listagem 9.1 produz esta safda:
Current date: 1998/02/22
Current time: 14:38 :24
' Cur r ent user :
Vendor s having country code US
1 1040
2 1080
3 1090
4 2000
5 VI
6 V2
7 V3
8 V4'
9 V5
10 Y7
10 records found
A linha2 define uma st rin g de campo zt xl fal exaramente igual atabela
com 0 mesmo nome.
A linha 3 define urn anico parametro de entrada "Iendt.
Nas linhas de 4 a 6, a data arual, hora e id do usuari o sao totalme nte
escritos a partir das varidveis de sist ema sy- datum, 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 selecao.
A linha 8 escreve uma linha em branco.
A linha 9 seleciona regis t ro s da tabela ztxlfal e os col oca, urn por vez,
na strin g de campo zt xl f al.
A linha 10 resrringe a de registros somence para as que tern
urn codigc de pais igual ao inserido na tela de selecao.
A linha 11 faz com que as registr os sejam classificados em ordem
ascen dent e por 1i fnr (numero do fabricante).
A linha 12 escreve 0 mi mero de iteraliao at ual a partir da variavel de
sistema sy-d bcnt e urn numero de fabricante a partir de cada registro.
A linha 13 marca 0 final do loop sel ect / endsel ect .
A linha 14 escreve 0 ntimero t otal de iteracces do loop sel ect . Esse
mimero eigual ao mimer o de registros que coincidiram corn a clausula
where utilizando a variavel de sistema sy-dbcnt.
Na linha 15, 0 c6di go de retorno a partir de sel ect, exist ence na variavel
de sistema sy-subr c, et estado . Se zero, os registros foram encontra-
des . Se njio zero, nenhum registro foi encontrado e uma mensagem e
escrira na linha 16.
L
"
d ' . d .
aca Izao a yanayelse sistema
Consi derando urn c6digo de entrada como urn pararnerro de entrada, suponha
que voce precise escre ver urn programa que escreva a descri/iao do pais a part ir
da tabela ztxt005t no idioma de logon at ual do usuario. Como voce deve se
lembrar , ztxt005t e uma t abela de texto contendo descricees de c6digo de pais
em diversos idiomas. A chave primaria emandt, spras (idioma) e la ndl. U ma
SOIUi ao de exemplo emostrada na Listagem 9.2, mas esta faltando uma parte
crucial de info rmacfo na linha 5: 0 valor do idioma de logon atual .
Na Listagem9.2 esta faltando umavariavelna posii ao indicada pelopo 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 ormaqdes
necessdrias.
Listagem 9.2 Um programa 'de exemplo com umo vari 6vel sy faltando
1 r eport zt x0902.
2 tab 1es ztxt0 05t.
3 par ameters landl l i ke ztxlfal -landl obligatory default 'US ' .
4 select s i ngle * f r om zt xt005t
5 where spr as ? Yidioma de l ogon atu el
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- -
284 APRENDA EM21 DIAS ABApt! OIA 9,ATRIBUI\OES, CDNYERSOES EcAlQJlDS 285
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 bot i o Find. Vma segunda tela Find aparecera mostrando
as linhas que contern 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 at ela Print Preview for XD:t'j a lista
sera rolada para a linha par voce selecionada e a cursor sera posi-
cionado naquela Iinha.
12. Para [ocalizar novamente, pressione a set a para baixo ao final do
campo Command na barra de ferramentas Stan dard. Uma caixa
sus pe nse aparecerf cont endo as comandos rec entemente digirados.
13. Role, se necessario, para 0 comando esc e de urn clique nele. esc
aparecerf no campo do comacdo.
14. Pressione a t eela Enter. A tela Find sera novamente exibida..
15. Press ione 0 bot i o Find. A busca eexecutada ccmecandc na linha
atual. A segunda tela Find sera novament e exibida e as corresponden-
cias serio mos tradas .
16. De urn unico clique em qualquer palavra realcada para exibi-la.
Este procedimento emuito prntico, pois pede ser utilizodo pora local ize r
as descricces de quolque r estrvturo ou tobelo.
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 String de campo ztxt005t urilizando 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 trat a de uma ins trucio sel ect
sing 1e. Ela retoma apenas urn unico regisrro: nenhum loop ecriado.
A linha 7 verifica o c6digo de ret orno a partir de select e, se urn
registro civer sido encontrado , escreverf a descricfo na linha 8. Se urn
regisrro nio tiver sido encontrado, a linha 10 escreverd uma mensagem
apropriada.
o idioms de logon atual esta disponfvel a partir de uma varisvel de
sistema. Infelizmente, para ut ilizar 0 batao Find na barra de [erramentas
Application, voce precisardsabe r 0 nome do campo. Se voce nao sauber 0 nome
do campo, ent aO 0 bene Find naa tera grande utilizacio. Emvez disso, utilize
a seguint e procedimento par a localizar as descrifoes da esrru tu ra SY5t.

Inide .ogora a ScreenCom "'Howto Searc h the Descriptions of Structure or
,. Table .
Para localizar as descricoes de uma est rutura au tabela:
1. Co mece na tela do Dictionary: Table/Structure: Display Fields.
2. SeIecione 0 carninho de menu Table- > Print. A t ela Print Table
Manual sera exibida. Aqui voce especifica quais detalhes deseja ver.
3. Marque to dos os campos e pressione 0 botac Continue. A t ela Print:
sera exibida.
4. Se 0 campo Output Device estiver em branco, posicione 0 cursor no
campo, pressione a seta para baixo e se1ecion e qual quer dispositivo de
saida. (Nao impona qual dispositivo sera selecionado; ele DaO sera
ut ilizado.)
5. Pressione 0 botao Print Preview 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
Preview for %D:t' sera exibida.
7. Digite %sc no campo Command cia barn de ferramentas Standa rd.
Pora referenda futuro, voce pcdero salvor a listc de Print Previewfor
xxxxem um crqvivc de textc na sua unida de de disco ngido. Pora isso,
a pa rtir do tele Print Preview for lOOCX, selecicne 0 cominho de menu
System-c-Llst-c-Scve-c-Lcccl File. Ne tela Seve Ust in File... ,seledone
o boroo de Unconvertede pressione 0 borec Continue. No tela
Tronsfer list to e local File, digite 0 nome de um orquivo de textc, por
exernplc, c: \temp\syst.txt e, em seguldo, 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 qual quer memento, sem fer de
utilizer 0 procedimento "'Como localize r os descri c;6es de ume estrvturo
ou tabelo'" mostrodo odmo.
Seguindo 0 procedimento ant erior, voce pede perceber que 0 idioma de
logon atual estava armazenado em 5y1 angu. 0 programa complete apuece na
Lisugem 9.3.
286 APREN DAEM21 DIAS ABAPH 9,mIBUI\05, CONVElS05 EckrulDS 287
Inst ru<;6es de atribui<;oo
ENTRADA'" Listagem 9.3 A Ustagem 9.2 com. a cdtccc do vcne....el syque estova
,. foltondo no linha 5
JJ1.i.uSE'" A tinho 5 limite a inst rUl ; ao sel ect 0 retomor openos as registros de ztxt 005t
,. que tAmum c6digo de idiomo iguol 00 ldlc mc de logon atu a l. Pelo fota de
mandt set outomoticomente odicionado no cornecc de codo wh er e, a chc ve primario e
ogora co mpletomente espedficodo e um enicc e exclusive regi5troeretomodo. Observe
que a Indice prim6rio suporto esse instrui700 selec t , portonto as compos do c16usulo
whereforam espedficodos no mesmo ordem em que oparecem no fndice prim6rio.
1 report 2tx0903.
2 tables ztx t 005t.
3 "la nd! 11ke ztxl fal -landl obligatory default 'US'.
4 sel ect single" froll ztxtOOSt
continua
where spras .. sy-langu i di oma de l ogon atual
6 and land! .. "lendt ,
7 1f sy- subrc .. O.
8 write: 'Description:' , ztxt 005t - l andx.
9 else. "
10 write: '!'to desc ription exists for', "l andl .
11 endif.
Os seguintes pontos se aplicam:
Se vl for uma varisvel do tipo c, sem quaisquer ela sera
preenchida com espaccs em branco. Se 1/1 for de qualquer outre tipo
de dado, elasen preenchida com zeros. Sevr for uma string de campo,
seus componentes serac configurados com espar;os em branco ou
zeros dependecdc do tipos de dado de cada urn. .
Utilizando a wi th v2, a pr imeiro byte de 1'2 sera ut ilizado pan
pr eencher 0 ccmprimento inteiro de vl , Se vI foruma strin g de campo,
ela sera t ratada como uma variwel do tipo c.
Utilizando a adit;ao wit h 'A', ' 0 comprimento inteirc de vt sera."
preenchidc com 0 uso do primeiro byte do lit eral ' A' .
Utilizando a adit;ao wi th NULL, comprimento inteiro de 1/1 sera
preenchido c,om zeros hexadecimais.
A Lisragem 9.4 most ra urn programa de exemplo que limpa as variaveis
e st rings de campo.
Sintoxe do instrucco cl ear
!!! A seguir, veja a sintaxe cia c1ear.
Z clear vI [with -e : wit h 'A' : with HUll]
S onde:
1ft vt e v2 sao ac mes de st ring de campo au variaveis.
.'A' eum literal de qualquer comprimento.
Descript1on : United Sta t es
o ccdi go na Listagem 9.3 produz esta salda:

move-corresponding
Utilizando a cl ear
A listogem 9.4 utilizo umo novo odil;cO denominodo no- ga p no
instrut;co wr; teo No-gap fez com que a proximo volar de sctdo sejo
escrito imediotomente depois do otuol sem urn espccc interven'ente .
Listagem 9.4 Vari 6veis configurodcs para espccos em bronco ou zeros
pete lnstrucoo cl ear

Umo de otribu; o ctrlbul um volar perc umo vcrio vel ou string de
ca mpo: Tres lnstrucoes de atribuit;oo sao co mumente utilizodos:
move
clear

NOVO...
lERMO,.
NOVO... Ainstrui700 c l ear configura a volar de uma vori6vel au umo string de compo
HUD como zero . Se 0 tipo de dodo for C, 0 volar, par sua vez, ser6 conf igurodo como
espccos em bronco. Os espoccs ern bronco e zeros 500 conhecidos como va/ ores inid ois
podr6o. Frequentemente, e co mentodo que cl ear otribui velcres inicia is podrcc a
vori6veis. '
1 repo r-t zt xD9D4.
2 tab l es zt xlfal.
3 data : fl {2} type c value ' AB' .
4 f2 type i valu e 12345.
5 f3 type p value 12345.
6 f4 type f value 'lEl',
7 f5 (3} type n value '7 89' .
a f 6 type d value ' 19980101' ,
9 f7 typet villue'1201'.
10 fa type x val ue ' M' .
__ - - - - - - -----_-_ - - _ - .- _ - -.-. -=c--"-=--- _
288 APRENDAEM21 DIAl AWl' HTllIBUI\OES,CDNVERSOES EtiLruLDS 289
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-gap, fl no-gap, ,
18 / ' f 2- ' " no-gap, f2 no-gap. I ' l l
19 / ' fJ-' " no-gap, f 3 nc-qep,
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-gap, f8 no- gap.
25 / 'sl -fl- '" no-gap, sl-fl no- gap, ,
26 / 'sl-f2- ' " 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-gap. 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-gap, fl no-ga p,
31 / ' f2-' " no-gap, f 2 no- gap.
32 / ' f3-' " no-gap, f 3 no-gap,
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 no- gap,
37 / ' f a-' " no-gap, f a no- gap,
38 / 'sl-fl - ' " no-gap, sl -fl no-gap,
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,
I ll'
,','
17- ' 000000'
fa -'OO'
sl-fl-'
slfl-' 0
ztxlfal - lifnr='
ztx lfal-l andl- '
Alinha2definea stringdec.mpo zt xlf. 1.
As linhas de 4 a 10 definem as varifveis de cada tipc e lhes atribui
valores-padci o.
Outra string de campo, s1, edefinida na linha11, com valores-padrao
para cada componente.
Sao atribufdos valores a dois dos component es dastring de campo
zt xlfal nas linhas 15 e 16.
Todas as variaveis e componentes de st rings de campo sao configura-
dos com zeros e espar;os em branco pela instrucao clear na linha 29..
Tambem se pe de dize r que codas as variaveis e sao
configurados com oelores iniciaispat/rao.
As insrrucoes wri te que comegam na linha 30 descrevem totalmente
as varisveis e os componentes que Ioram dentro de aspas
simples e sem espaccs interveni ent es entre as aspas e os valcres ao seu
redor. -
A List agem 9.5 mostraurn pr ograma doe exemplo quepreenche asvaraveis
e 05 componentes de st rings de campo com valores diferentes de espalios ou
zeros.
EMTRADA'" Listagem 9.5 Vori6veis preenchidos com cora deres difere ntes de
r espOl; os em bronco ou zeros utili zondo a adi<;60wi th do instrur;ao c1 ear
SAiD!
o c6digo na Lisragem 9.4 pr oduz est a saida:
fl - 'AB'
f 2- ' 12.345 '
f3-' 12,345
f4-' 1. 000000000000000+01 '
f 5-'789'
16- ' 19980101'
17-' 120100'
fa-'M'
sl -fl-'XYl'
sr-rz-: 123 , 456
zt xl fa l-1i f nr- ' XXX
ztxl f al - 1andl - ' CA
fl-'
f2-' 0 '
f3' 0 '
f4-' O. OOOOOOOOOOOOOOOE+OO'
f5-'000 '
f6- ' 00000000'
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 f 3 typ e i val ue 12345,
6 begin of sl,
7 H(3) type c val ue ' XYZ
I
,
8 f2 type 1 val ue 123456.
g end of sl.
10 writ e: / 'fl '" no-gap, fl no-gap, -" " ,
11 I 'f2>< '" no-gap. f2 "" ,
12 / ' f3'"" no-gap, f3 no-gap , " " ,
13 / no-gap, sl-fl no-gap,
14 / ' sl f 2" ' " no- gap, sl-f2 no-gap.
15 / 'ztxlfal-l1fnr=' " no- gap, zt xlfal - 1Hnr no-gap,
16 I 'ztxlfal-landl-' " no- gap, no-gap.
"" .
-
290 , m N" EM 21 DIAl U'PI4 CONVEISOES EtllrulDS 291
17 / .
18 cl ear: f1 with 'X'.
19 12 with fl .
20 f3 with 3.
21 51 with 'X'.
22 ztxlfal wi t h O.
23 write : / ' 11'" nc-cep, fl no- gap, "".
24 I .' fl ' " no- gap. f2 no-gap,
25 / ' f3. '" no-gap, f3 no-gap, I " ' .
26 / 's l-fl. '" no-gap, sl-fl no-gap,
27 / ' sl -12.
1 1 1
no-gap, no-gap,
28 / 'ztxlfal-lffnr." I no-gap, zt xlfal-l 1fnr no-gap,
29 / no-gap, ztx lfal-lll. ndl no-gap,
Ut iliza ndo a inst ru<; tio move
move vI t o '112.
n-ra ,
n- ra-ra.
Incorreta Correta
fl - f2 .
fl -f2 -f3.
Na Tabela 9.1, dois exemplos si o .mostrados cia maneira correra e cia
maneira incorret a de codificar as inst rucoes de A codificacsc incor-
reta resulta em urn erro de sintaxe.
ou
IIICIve rl[+N(L )] tov2[+N(L)] .
ou
ou
vz" 'Ill.
ou
,2[+N(L)] , 1[+N(L)] .
onde:
vI ea variavel ou string de campo de envio.
v2 ea varifvel ou String de campo de recebimento.
Neurn deslocamento apartir do inicio cia variavei au string de campo.
Le o namerc de bytes que devem ser movidos.
'112 'Ill "'vm 'lin
Para mover urn valor de urn campo para outre, utilize a instrucao nove. 0
conteddo 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 uma instruca o move.
Sintaxe do move
A seguir, veja a sintaxe da iD:stnJt;ao move. Os operadores e operandos devem
ser separados por espaccs. Atribui t;io multipla ocorre da direita para a
esquerda.
Ul
-
Z

1ft
Y
o c6digo na Listagem 9.5 produz esta salda:
fl 'AB'
f2'" ,
f3'" 12.345 '
sl-fl ' XYZ
sl -f2. > 123,456 I
zt"l f a1- 11fnr- '
ztxl f al - linen-'
n 'xx'
f ZalXX '
13'50, 529,027
51-fla ' XXX'
51f2'1482184792 '
ztxl fal -11 fnr- ' '"""'",
ztxl ta l - landl- '11#'
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 linha 20 preenche f3 com 0 primeiro byte do lit eral 3. Urn literal
numeri co com ate nove dfgitcs de eomprimento earmazenado como
urn inteiro de quatro bytes (veja a sCliao seguinte "Cenversac de
clades"). f3 epreenehido com 0 primeiro byte desse inteiro de quatro
bytes, atribuindo essencialmenee lixo a f3.
A linha 21 trata s I como uma varifvel do tipo c eo preenche com x.
o componente fl edo tipo c, portanto recebe valores validcs. 0
componente f 2 edo tipo 1, ponanto recebe valores invdlidos.
A Stringde campo zt xl fa l epreenchida com0 primeiro byte do inteiro
de quatre bytes de valor 0, preenehendo-o comlixo. 0 Iixo, neste case,
eexibidc com indicadores de mimero (I ,.
ANALISE
SAiDA
292 "mDA E. 21 DlAS A'AP/! CIA 9, ATRIBUI\OES, COHVERSOES EckcuLDS 293
Convers6es de dados
Se as tipos de dados dos camposdeenvio ederecebimentoforem as mesmos,
mas as comprimentos nao, uma adaptaciode comprimentcseraexecutada, como
pade ser visto na Tabela 9.3. Nessa tabela,0 campo de envic e0 campo "From".
KOYO'" Se duos voricveis tiverem tipos de dodos au compri menfos diferentes , as dodos
lERMO seruc ccnvertldos quando movidcs. Esse procedlmento e denominoclo umo
odoptor;oo Qutom6tica. Se as comprimentos dos vcrlcvels de envio e de recebimento ndo
correspo nderem, umo odcptocec cutcmcticc do comprimentosera executoda . Se ostipos
de dodos noo cor responclerem, umo cdcptccec outom6tica de fipo sem exec utoclo.
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 forem 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 atri buir valores invalidos aos tipos d e t.
0 t ratamento desigual de caracteres invslidcs durante a conversao dos
tipos de c a x.
A inesperada do byte de sinalreServado emconvers6esdepparac.
0 usa de * para indicar estouro em CODversoes de p para c.
Urn campo c completamente em braneo econverti do par a urn campo
p com urn valor zero.
Regras de eeevereee
o compo de envic pode canter openos ncmercs, um cnicc
seporodor decimol e um sinal opcionol. 0 sinol pode ser
inlciulou final. Os espor;os em bronco podem oporecer nos
dois lodos do valor , Ealinhodo a direito e preenchido a
esquerdo com zeros. Um campo de envio completcmente em
bronco ecc nvertido poro zero.
o compo de envic deve canter openos umo dafo v6lido no
forrncto YYYYMMDD. Se esse noDfor 0 coso, um erro noD
em vez disso, um valor lnvcfldc sere otrrburdc 0 0
compo de recebimenfo. as resultodos do ufilizor;oo desse
volor sao lndefinidcs.
o ca mpo de envic deve ter openos um hcrcric valido no
formoto HHMMSS. Se esse nee for 0 coso, urn erro nco
ocorre r6; por suo vez, urn vclor lnvclldc sera otrtburdo 00
compo de receblmento . as resultodos do utilizor;oo desse
volar sao indefinidc s.
o compo de envlc eonolisad o do esquerdc paro a direita e
somente os drgitos de 0 a 9 seruo transferidos pore a campo
de recebimento (a linhado adireito) e, cle m dissc, sere
preenchido aesquerdo com zeros. Tados as outros coracteres
soo simplesmente ignorodos.
Os valores v6lidos poro 0 campo de envio sao 0-9e lefros
moiusculcs A-F. 0 valor eolinhodo cesquerdo e preenchido c
direitc com zeros au truncodo adireito. lodos os ccrocteres
ap6s 0 primeiro valor lnvclldc no compo de envlo sdc
ignorados.
o valor ealinhodo (] dtreitc no compo de recebirnentc, como
byte mois (] direilo reservcdo paro um sinal finol. a sina l
somenfe sere exibido se 0 nvrnerc for neqofivo: portanto,
numeros positives seriio alinhados c direito com urn onico
espoco em branco final. Coso VOCE! tente mover um valor
positivo que contenho a mesrnc quontidode de digitos
suportoda pelo comprimento do ca mpo de recebimento, 0
sistema utilizora 0 comprimento inteiro do compo de
recebimento para ormozenar 0 valor sem reservor 0 byte mots
adlreitc poro 0 sinol. Depois de consideror 0 que foi
explicodo, se a valor "no campo de envlc noo se adoptor 0 0
compo de recebimento, 0 numero ser6 fruncodo aesq uerdc.
Se 0 truncomento tiver ocorrido, 0 slstemo indicor6 lese
substituindo a digito mois aesquerdo por um asterisco (*l. Se
o va lor se odaptor 00 compo de rece bimento, os zeros iniciais
serOo suprimidos. Se 0 campo de envio for iguol a zero, 0
compo de recebimento recebera um unico zero.
c
Para 0 tipo
t
d
x
p
n
Do tipo
c
c
c
c
c
p
.,
Truncodo adireita
Quando otribuir para um
campo menor, 0 valor
' fromI sera:
Tru'ncodo adireito
Truncodo aesquerdo
Atribuido se 0 valor numerico se
odequor 00 compo I to I
Se 0 va lor nurnericc for grande
demois para 0 compo de
recebimento, um curto dump
ocorrer6 .
Quando atribuir para
um campo maior, 0 valor
'from' sera:
Preenchtdc adireito com espc ccs
em bronco
Preenchldc c direito com zeros
Preenchido cesquerdo com zeros
Preenchido c esquerdo com zeros
x
c
Tipo
n
p
294 mE'" EM 21 DIAS """
DIA 9,,mBUI\05,CONI'R5ii5 EcALCUlOS 295
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 de demons rracao que executa
convers6es de dados de exempl o. \,
Listagem 9.6 Convers6es de dodos de exemplo
1 report ztx0906.
2 const ants >(3) value ' ..>' , "define uma constante denominada '>'
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 type p atue 12345,
16 fp6 type p value O.
17
18 f n .. f e. writ e: / fc , s-, fn, "ncn-rturter-t c chars are i gnored' .
19 fd > ' ABCDE'. write : / fd, ' dat e and t ime f iel ds are invalid '.
20 ft .. ' ABCDE' . write : / f t , ' when you load t hemwith junk' .
21 fp " sy-datum. wri t e: / sy- datum, >. fp, ' d->p: days since 0001/01/01 '.
22 fp" sy-uzert , write : / sy- uzet t , >, fp, ' d->t : sees sinc e m1dnight' .
23 fx " ' M B4' . write: / ' M B4' , >, fx, 'i9nOre all after invalid char ' .
24 f p fel. write: / fe1, >, t p, 'allows le adi n9 si9n ' .
25 fp ;; fc 2. write: / f e2, >, f p, ' also all ows trail in9 si gn' .
Tabela 9.4 Confinuccdo
writ e: / fp1, , tc, 'ri ghtmost byte reserved for sign'.
write: / fp2, >, tc , ' onl y negati .... e nUlllbers use i t , but ' .
write: / fp3. >, t c, '+ve nurns th at need it use it t oo' .
write: / f p4. >, f c, 'o.... er fl ow i ndi cat ed by lead ing *' .
writ e: / fp5, >, t c, 'l eading zeros are suppressed' .
writ e: / fp6, >, t c, 'z ero in zero out ' .
wr1te : / ' " >. f p, ' bla nks i n zero out ' .
Comece no ABAP/ 4Editor: Ini ti al Screen.
Selecione 0 caminho de menu Ut ilities- > ABAP/ 4 Key Word doc. A
tela Display Structure: ABAP/4 SAP's 4GL Programming Language
sera exibida.
Pressione 0 botao Find na ber ra de ferramentas App lication. A caixa
de dialogo Search Chapter Titl es sera. exibida.
No campo Find, digite move.
N a caixa de grupo Type of Search} selecione 0 botao de opcsc From
Struct. Start.
Pressione 0 bot ao Cont inue. A caixa de dialogo desaparecerd e a linha
move sera realcada.
De urn clique duplo na linha real<;ada. A tela Dis play Hypert ext: sera
exibida.
Pressione a tecla Page Down duas vezes. a infcio da tabela de
coeversao sera exibido .
o ccdigc na List agem 9.6 produz a seguinte saida:
-A182C3.4 > 0000001234 non-numer ic char s are ignored
E ABCD date and t ime fi el ds are inva11d
ABCOEO when you load them wit h j unk
1998/02/22 .., 729.443 d->p: days sinc e 0001/ 01/01
14:57:05 . ,,> 53,825 d->t: sees since midnight
.4.484 > .4.4000000 ignore all af ter in.... a11d char
-1234 > 1,234- allows l eading sign
1,234- al so allows trailing sign
123, 456, 789 > 123456789 ri ght most byte reserved for sign
123,456,789- > 123456789 only negative nwnbers use it , but
1,234,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 suppressed
o .. a> 0 zero in :s zero out
> 0 blanks in zero out
.... lnicle 0 ScreenCom "'Howto Display the Conversion Rules inthe ABAP/4
SCRHNCAM,. Keyword Documentation"'.
Para exibir as regras de conversjio na documentaqac de palavra-chave do
ABAP/4:
26 fe .. fpl.
27 fc fp2.
28 fe .. fp3.
29 fe ;; fp4.
30 fe .. fpS.
31 fe .. fp6.
32 fp ;; , ".

l.
2.
3.
4.
S.
l
6.
,
7.
8.
Regras de eenve reee
o ncmerc einterpretcdo como 0 ncmero de dios desde
0001/01/01, convertidc em umo doto e armczenodo
intemomente no formctc YYYYMMDD.
o numero einterpretado como 0 ncmerc de segundos desde
meio-nolte, convertido em 24 heros e a rmazenado
intemomente no fcrmct o HHMMSS.
A dote econverti da em um valor que repre sento 0 numero de
dlcs desde 0001/01/01 .
a hor6r io econvert ido em urn nvmerc que repr esento 0
numerc de segundos desde meio-nclte.
Para 0 tipo
t
d
p
p
Do tipo
t
p
p
296 APRU DA EM21 DIAS AIAP/4
Subcampos mesmo que: fl+O(l) .. 'J'.
.f1 agora contern 'JOY ,
mesmo que: fl(l) f2 (1).
-fl agora contem 'BOY
lIl@Smo que: fl+4(3) .. fl (3).
fl agora '60Y BOY '.
-mesmo que: fl+O(3) f2+O(3).
-fl agora contem 'BIG BOY ' .
o c6digo na Listagem 9.7 produz esta safda:
TOT
JOT
BOT
BOY BOY
BIG BOY
8 fl (1) ' J' .
9 'ltr1te I fl .
10 fl (1) 12.
11 'It1"He I n.
12 fl+4 fl .
13 wr ite I f1.
14 fl( 3) 12(3).
15 srtte I fl.
A porte de um compo referendodo pete esped fico<;oo de um deslcccmentc
e/ou comprimento edenominodo subcompo.
NOVO ...
1IIlIO ,.
Sintcxe de umsubccmpo
'1 ["][(Lll ,2[-c][(Lll.
onde:
vl e v2 sao nomes de string de campo ou de varifvel.
0 eurn deslocamenro baseado em zero desde 0 inicio do campo.
L eurn comprimento em bytes .
ENTlADAIilIrr.. Listagem 9.7 Movendo umo porte de umcompo utilizondo umc
" de subcompo
Osseguinres pontos se aplicam:
Urn subcampo pode ser especificado para 0 campo de envio ou de
recebimento ou para ambos. .
0 deslocarnento au comprimento eopcional , Ambos podem estar
presentes.
Se 0 deslocamento IUO for especificado, 0 subcampo iniciara no
comecc do campo.
Se 0 cornprimento nao for especificado, 0 subcampo se estendera ao
final do campo.
Nenhum pode ser utilizad o dentro da especificacao do sub-
campo.
0 deslocamenr o, quando presenre, sempre seraprecedido por um sinal
de mais (+).
0 comprimenro, quando pr esente, sempre estara entre parenreses.
A Listagem 9.7 mostra urn programa de exemplo que atribuicdes
e utiliza sub campos.
Na linha 6, urn deslocamento de 0 e urn compriment o de 1 sao
utilizados para especificar urn subcampo consistindo apenas no pri-
meiro byte de fl. Atribuir a tetra ITI. portantc, pr eenchera somente
o primeiro byte de fl.
Na linha 8, 0 deslocamento de 0 eignorado. 0 e0 padrao, portanto 0
subcamposed 0 mesmo que 0 da linha 6.
Na linha 10, 0 mesmo subcampo eutilizado, mas dessa vez a arribuicac
ea partir de f 2. Somence 0 primeirc byte e de fZ,
o subcampo de recebimentc tern apenas urn U01 CO byt e de comprt-
mente.
Na linha 12, urn deslocamento de 4 especifica que 0 subcampo em f1
comeca no quinto byte e continua ate 0 final de fl, tomando-c
bytes mais comprido. 0 campo de envio efl , faaeodo com que os
primeiros bytes de fl sejam duplicados nas pcsicoes de 4 a 6.
Na linha 14,os t res primeiros bytes de f 2substituem as tres primeiros
bytes de fl.
Utiliza ndo move com strings de campo
Com move, urn nome de String de campo especificado sem urn nome de
componente etratado como sendo uma variavel do t ipo c. A Figura 9.2 e a
Listagem 9.8 ilustram este ponte.
IHius!
-meSllO que: mover ' BOY ' para fI.
-Ilesmo que: eever ' BIG' para f2.
fl agora 'TOY
1 r epor t ztx0907.
2 data : fl(7),
3 f2(7).
4 f1 .. 'BOY '.
S f2 .. ' BIG' .
6 fl+O(l) .. ' T' .
7 '!trite / fl .
298 l PRENOl EM21 OilS
9, CONYRSOES EcllCUlOS 299
move f1 to fs l .
dotof1 (4) value 'ABeD'
f1 I;i<.
.,,&_';) ';:' -,y c- '"
oata begin of fs1,
eI O)
e2(2) .
e{ 3 } .
end of fs1.
Figlltg 9 2
Utilizor move em umo
string de compo, sem
tJtj/izor um nome de:
componente, farO corn
que: a stringse;o
tratodocomo umo
vori6vel do tipo c.
,,,
f1
Movimentos do string de campo envolvendo campos nurner icos
Se 0 campo de envio for de caract ere de categoria (ripos c, n, d, t ou x) eo alvo
for uma string de campo con tecdo urn campo numerico (ripos t. p ou f),
nenhuma con'Versao de dadossera executada. 0 moviment o ocorreria se ambos
fossem considerados simples caracteres. 0 inverse t ambem e verdadeiro.
Nenhuma sera executada ao mover urn numericc para uma string de
campo ccnrendo urn campo de caractere. Em ambos as cases, as resultados
serao invaIidos e indefinidos.
A Listagem 9.9 mostra urn programa de exemplo que execut a uma
ccnversfc invalida de urn campo numericc para um a st rin g de campo de
caractere.
Li st ag em 9.9 0 movimentc de urn compo numerico pare umo string de
,. campo de curuct ere einv61ido .
Listag em 9.8 A instru;aomove t-ete urn nome de string de compo sem
urn nome de componente como umc vcrtcvel do tipo c
o c6digo na Lisragem 9.8 produz esta salda:
ABCO
A Be D
1 repor t zt x09OB.
2 datil : flC.) value ' ABCD ' .
3 begin of 51.
4 el(l).
5 e2{Z).
6 ' 3(1) ,
7 end of sL,
s u v n .
s write: / 51.
10 / si -ci , st -ez, si -cs . "atr1bu1 urn valor val t dc
nee.; eonversli o execut ada
"escreve 1234
"at r1bu1 urn val or v&1 1do
-ce -c, nenhuma ccnversjc execute de
"escreve junk
"ce-c, nenhllnia converss c exeeut ada
_"escreve junk
Na 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.
B75770, 417
0...
1234
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'.
8 s - fc.
g writ e s- f i.
10
11 1234.
l Z fc-s .
13 write I fe.
14
15 s- f 1 - 1234.
16 f c - s-ff .
17 write / fe.
Na minha maquina, 0 codigo na Listagem 9.9 produz a seguinte saida.
Seus result ados talvez possa.m variar nas primeiras duas linhas de saida devido
as atribuicoes invalidas realizadas.
lIIiUSE
SliDI
- 51 tretedo como uma var1!vel de 4 "cer ect er es
"escreve ABCO
"escreve A BC 0
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 ecalculado pela
soma do comprimento de seus cornponenres: 1+2+1 =4.
A linha 8 move a valor de f1 para 51, byte par byte) como se fossem
ambos varidveis de ripos c.
A linha 9 escreve 51 como uma varifvel de quatro caracteres.
A linha 10 escreve 0 conreedo dos ccmponentes de 51.
SliDI
..-.-. w- w w --- .....-- -- -- -- ------ -------
300 'PREND' EM21 DIAS "'PI'
Nalinha 6, f1 emovidopara51. Nenbuma ccnversao eexecutada porque
s1 euma String de campo, portanto erratadc como sendo do tipo c.
Na linha 7. st - et eescrito e as resultados sao lixo.
Na linha 8, para s t - et eat ribuida urna stri ng valida de caracrere 11234
1

N a linha 9, s1 ernovido para fl . N enhuma cocverssc eexecutada.


A linha 10 escreve f1 e, novamente, as resultados sao lixo.
Na liaha 11, para f1 eatri buldo urn valor vilido de 1234.
Na linha 12, f1 eat ribuidc a s1-c1. Pelc fato de a atribuicic ser pan
o componente e ca c para a String decampo, a conver sao sen executada
e a linha 13 escrevera urn valor vdlido.
Voe! nee deve mover urnc vcr teveldo tipo c porn umo string de ccrnpc
ou de uma string de compo contendo urn tipo ncrner ico. as resultados
dependem do m6quino e, portonto, soo indefinidos.
Simi

CONVEISOES EcllaJLOS 301
o c6digo na Listagem 9.10 produz esta saida:
199802171234AB
199802171234AB
19980217 1234 A B
1998 02 17 12 34A8
As linhas de 2 a 14 definem duas strings de campo compostas inteira-
mente de campos do tipo caractere. Cada st ring de campo tem, no
total. 14 bytes de comprimenro.
Na linha 15, 51emovido para 52, tratando cada string de campo como
se fosse de urn unico campo do tipe c com 14 bytes de comprimento.
N as linhas 16 e 17, ambos sao escritos como campos de caractere.
Nas linhas 18 e 19, os compone ntes de cada string de campo sao
totalmente escritcs. sl - d1 foi dividido entre s2-yl. ml e dl. Os primei-
ros 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 utilizando tipos
de dados de carodere
Voce poderi utilizar a instrucao move em duas st rings de campo, se ambas
contiveremsoment e componentes de tipos de dado s de caracrere (c, n, d, t e
x). A Lisugem 9.10 ilustra este conceieo.
ENTRAOAIlrrrrr.. Listagem 9.10 Ufilizondo move com duos strings de compo compostos
,. inteiramente de tlpos de dodos de ccrodere vdlldos
1 re port ztx091O.
2 data : begi n of 51,
3 dl type d value '1 99S0217 ' -S byt es

"(,) t ype n value ' 1234' , -4 byt es


5
"
value 'A' . -I byte
6 ,2 val ue 'B' -I byte
7 end of 51,
8 of 52.
9 ,1(4) type n, -4 bytes
10 .,(2) type c. -2 byt es
11 d1(2) type n, -2 bytes
12 " (2) type c, -2 bytes
13 ct (4) type c, -4 bytes
I'
end of 52.
15 52 .. sf .
16 write: I 51.
17 I 52.
18 I ,1 -dl . sl-nl . 51-ct . sr-cz,
19 I 52-11. 52-mI. s2- dl. 52- nl , 52- cl .
Movenda de uma string de campo para uma Dutra com tipos de
dados numericos
HO'OIlr.... Amaiorte-dos sistemas operocioncisreqver c ende recc de m6quina dos compos
TaMO" nume ricos a fim de concordor com as regrcs escee ftccs. Per exemplc, 0
enderecc de um inteiro de quotro bytes pede ser necessaria pare que sejo divisive! por
dois. Gernlmente, esse regro e impasto como "urn inteiro de quotro bytes deve ser
olinhodo em um limitede byte regular". Assim, a regrn com a qual concordo 0 enderecc
de um compo edenominodo o/inhomento.
NOVO .... Afim de ctender oos requisitos de olinha mento, um tipico inserir6
TEtMO " bytes de preenchimenfo antes de um campo que req ue r olmhomento. Por
exemplc, se seu inteiro de quotro bytes comer;or no deslccc mentc 0003, desde 0 infcio
de urn progromo, urn byte de preenchirnento sera necessaria porn alinh6-lo em um limite
de dots bytes. 0 cornpilodor eolocorO urn byte noo utilizcdo no deslocomento 0003, de
modo que a inteiro cc mece no deslocomento 0004, fozendo com que sejc cdequcdc-
mente olinhodo. Os bytes de preenchimento sOo lnvisfveis 00 progromador, mas seus
efeitos pcdem, as vezes, ser vistas.
Se voce criar uma string de campo com uma mescla de campos nurnericos
e de caractere, bytes de pree nchimento, algumas vezes , serao inseridos pelo
sistema para 0 alinhamento de campos numericos. Se voce tentar utilizar uma
move em t al 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:
302 APRENOA EM21 OIH AUP/4
...- ...
I
i
I
..... - - - - - - - - - -- _.
DIA 9, CONYERSOES EcAlCULOS 303
Em meu sistema, a codigo na Listagem 9.11 produz a seguinte safda. Ern
seu sistema, os resultados podem variar para os campos com at ribuicoes
invalidas.
As duas Strings de campo consistem inteiramente em campos de
caractere (ripos C, n, d. t e x).
Os tipos de dados, comprimentos e de todos as componentes
nas' duasstrings de campo,sao exatamenrecorrespondences (as nomes
dos componentes DaO precisam ser correspondentes).
Se as campos de envio e de recebimento forem inteiramente compostos
de campos de caractere, nenhum byte depreenchimentoexistiri. e 0 resultado cia
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 emostrado na Listagem 9.11.
A 1110 I
A 1,234 B
st-et tern apenas urn byte de comprimento, port ant o c2 tera urn deslo-
camento desigual desde 0 inicio da string de campo e necessitard de preen-
chimento na maioria des sistemas, fazendo com que s1 se tome mais comprido
do que 52. Quando s1 for atribuido a s2, c3 nae sera alinhado e alguns dos
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 ignorar os efeitos da existencia
de campo s numericos dentro de uma estru tura. 0 fate de cada camp o de
recebimento 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 irao variar.
Os resultados de move em urn sistema operacional podem ser diferences em
outro. Portanto, para garantirque seus programas sejam portateis, nunca ccnfie
em bytes de preenchimento e cao os considere os movi mentos. Cada
strin g de campo deve ser composts inteiramente de tipos de dados de caractere
ou todos os componentes de cada string de campo devem ser exatamente
correspondentes (exceto quanto ao nome) .
Para executar urn movimento de uma string de campo par a uma outra, em que
os tipos de clados e/ou comprimeatos nao correspondam, ut ilize a instrucao
move- cor r es pondi ng. Ela gera instrucoes move para componentes com nomes
correspondentes. as componentes na String de campo de recebimento que nao
tenham urn nome correspondente na String de campo de envio nie sers o
alterados. Isso eilustrado na Lisragem 9.12.
onde:
vl ea variavel ou string de campo de envio .
v2 ea varifvel ou st ring de campo de recebimenro.
nove- ccr r es pcndt nc .v1 t o vz,
Sintoxe do move-correspondi ng
A seguir, veja a sintaxe cia instruqao move. Os operadores e operandos devem
ser separados por espacos. MUltipIa atrib uicao ocorrera cia direita para a
esquerda.
III
-
Z

T
Utilizando a instru<;ii o move-correspond; ng
SAiDI
" \111 byt e
"quat ro bytes, sen preench1mento
"urn byt e
"53 ccrrespeede exetaeente can 51:
"- tipos de dados igua i 5
nCln;ero de CillllP05 19ual
". ei1Jl105 na mesrna ordem
(05 neees nlio pr ect 5il1l corresponder )
" \.Ill byte
quat ro byte5, ern geral prectsa de ' preenchteenec
urn byte
A instrut;60 move-corresponding pode set utillzcdc pora move r as
strings de compo que tenhom umo mescla de tipos de dodos nume riccs
e de ccroctere. 1550 sera descritono seguinte seo;oo.
Listagem 9.11 as bytes de preenchimento podem ca use r resultados
inespercdos 00 mover dodos entre strings de ca mpo
1 r eport ztx0911.
2 data : begi.n of 51,
3 c1 value 'A',
4 CZ type 1 val ue 1234,
5 c3value 'B',
6 end of 51,
7 begin of 52,
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 s3- x2, 53-x3.

EHTRADAlirll.. 9.12_ A lnsfrucdo move-:orrespondin
g
gera instrucces move
,. indivi ducls e entdo executa converseo de dodos
1 report zt x0912.
2 data: begin of 51,
3 cl type p deci mal s 2 value '1234.56 '.
4 c2(3) value 'ABC'.
5 c3(4) val ue '1234' ,
6 end of 51,
7 begin of 52,
8 " (8) ,
9 x2(3) value ' XYZ'.
10 c3 t ype i.
11 end of 52.
12 write: / '51 : ' , 51-e1, si -ea , 51-c3.
13 wri te: / ' 52 bef ore move- cor r espondi ng:' . 52-x2, 52-d.
14 move-corresponding 51 t o 52. cod1f 1cat;l o i gual as duas t nst r uczes a seguir
15 * move st- et to 52-c1. "execut a ccnversao
16 *" move sl- c3 t o 52-d. "execut a ccnversxc
17 write: 1 's2 after lOOve- corresponding: ' . 52. cl ; 52-x2, 52-c3.
A Tabela 9.5 contem uma lista dos operadores validos.
au
v3 =v2 op v2 [op vn ,..l ,
onde
v3 ea variavel de recebimento para a do calculo.
vr, v2 e vn sao as ope randos.
op eurn ope rador matemarico.
subtract au subtract -correspondi ng
mul t t pl y a u multi ply-correspondi og
divide au divide-corresponding
OIA 9,ATiIBUI\OES, <OHVEiSiiES EclliuLOS 305
Utilizando a instrucco compute
Compute ea insrrucfo utilizada com mais frequencia para execut ar ctlculos.
Sintaxe da instrucno compute
Aseguir, veja a sintaxe da instrucio compute. Os operada res eoperandos devem
ser separados por espacos. Mais de urn operador par instrucao e permitido.
compute v3 vl op v2 [op vn ].
III
-
Z
S
In
T
a c6digo na Listag em 9.12 produz esta safda: .
51 1. 234.56 ABC 1234
s2 before scve-c crrespondt nc: XYZ 0
s 2 after move- cor r es pondin g: 1234. 56 XYZ
Il iDI.
r
Tabela 9.5 Operadores v6lidos porc a compute
Alem disso, existem funcoes predefinidas. Para uma lista, obtenha ajuda
utilizando Fl para a palavra-chave comput e.
A precedencia do operador ecia coma segue:
Funcces predefinidas sao avaliadas,
em seguida a exponec ciacac,
em seguida ", / , DIV e MOD, na ordem em que aparecem na expressao,
em seguida + e - na orde m em que apar ecem na expressao.

Adi;oo
Subtrocec
Multiplicac;eo
Dlvtscc
Expcnencicccc
Dlvisec de inteirc
Restodo divisdc de inteiro
/
**
*
DI V
MOD
+
. Operodor
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 emois ehclente.
, ... A linho 14 gero duos instrulioes move; por questoc de dcrerc , elos seo
ANALISE,. mostrodosdentro de comentcrlc s nos linhas 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 sec
geradas. As convers6es de dodos sao executados , como seriam se voce mesmo fivesse
codtficcdc essas lnstrvcces. 0 cornevdo de c2 permcnecerc inolterodo depots de
cond ufda a instruc;60 nove-cor-responding.
Voce pode execut ar calculos utilizando as seguintes instrucoes:
comput e
add au adc- cor re spondt ng
Execufondo c6lculos
...... ,... -- - - -----
. Il"'''''"'IDES,,.",usO""AlCULOS 307
v2 ea varisvel sendo adicionada.
v1 ea varifvel adicionada a v2.
A sintaxe de subtract, mul t f pfy e div i de esemelhante.
III
-
Z
g
T
Sintoxe do instrucco add-co rrespondi ng
Abaixo estli a sintaxe da add- correspondi ng.
add-cor respondi "g 51 to 52.
onde:
52 ea string de campo sendo adicionada.
sl ea strin g de campo adicionada a 52.
VIDa instrucao add egerada para cadapar de componentes com0 mesmo
nome em 51 e 52. As conversoes de dados sao executadas da mesma maneira
que ocorre com a instruci o add. Subtract-corres pondi ng, multlply-ccrres -
pendin g e divide-corresponding operam de forma semelhente.
Exemplos sao dadcs na Lisragem 9.13.

Listagem 9.13 Utilizondo as lnstrucoes add, subtract, multiply, divide e
correspond; ng
1 report ztx0913.
2 dat a: fl type i val ue 2,
3 f 2 type i value 3,
4 begfn of 51,
S cl type 1 value 10.
6 c2 type f val ue 20,
7 c3 type 1 val ue 30.
8 end of 51.
9 begf n of 52.
10 c1 type i val ue 100,
11 x2 .type f value 200.
12 c3 t ype f valu e 300,
13 end of 52.
14 add fl t o f2.
15 subt r act fl f rom f 2.
16 llIIltipl y f 2 by f lo
17 div i de f2 by fl .
18 add- correspondi ng 51 t o 52.
19 subtract corr e5ponding sl f romsz,
20 mult i ply. correspond1ng s2 by 51.
21 divi de-c orrespondi ng s2 by s1.
write I f2. -fl fica i nalterado
wr t te I rz .
write / f2 .
write / f2 .
write: / s2-c l , 52-x2,
write: / sz- ct , sz-sz, s2- c3.
wr ite: / sz- ci , s2-x2, s2-c3.
wr 1t e: / sz- ei . s2-x2, sa-cs .
308 ! HRENDA EM 21 DIAS ABAP/4
DIA9:ATRIBUltOES, CONVERSOES Eti.LfUlOS , 309
12 nlml_days .. ztxl_amalgamation_dat e .
13 write / nurn_days . "numer o de diu desde ztxl amalgamation_date
-<f::o pode agora ser usado no lugar de fI
"escreve 0 ccntenco de fI
-at r i bui urn novo val or a fI
write / fl.
configurado como '01' . Jo1 que as datas sao sempre armazenadas
ut ilizando 0 format o intemo YYYYMMDD, 0 valor de dia da dat a em
d2 e. confi gurado como ' 01' . 0 result ado e. que d2 contem uma data
igual ao primeiro dia do mes atual.
Na Iinha la, 1 esub tr aido de d2, considerando a data do ulti mo dia no
mes an terior.
Na linha 12, a diferenca em dias entre a data atual e a data de fusio
(almagamation) e. calculada. 0 resulrado eatribuldo ao campo com-
pact adc num_da ys e e. totalmente escrito na linha 13.
NOYO'" Urn sfmbolo de compo eurn indicad or que voce pode dinarnicamente atribuir
lUKO a um cam po. Depois do ctribuicco, voce pode utilizer a sjmbolc de compo em
quolquer luga r de seu programo em vez do nome real do campo. Utilize 0 instruc;:60
fi el d- symbol para definir urn sfmbolo de compo e utilize assi gn para otribuir urn compo
a ele. 0 nome do simbolo de campo deve ccmeccr e terminor com a sinal de menor que
e sinal de moior que. A Ustogem 9.15 contem urn exemplo simples.
I report ztx 0915.
2 dat a fl(3) value 'ABC'.
3 field-symbol s <t> ,
4 assi gn fI to <f ::o.
5 write <t> .
6 <f::o ' XYZ'.
I
ENTUDAIItrrr... Listagem 9.15 Um sfmbolo de campo euma referenda para urn outro
,. compo
Atribuic;ao dinamica
-data de ont ea
-pr1meiro dia do atual
-Olti lllO dia do anteri or
330
300
9, 000
300
200
ZOO
200
ZOO
wr ite / dl.
write / ez .
write / d2.
o c6digo na Listagem 9.13 produz est a saida:
5
3
6
3
110
100
1,000
100
I report ztx0914 .
2 t ype- pools ztd .
3 data : dl like sy-dat Ulll .
4 d2 li ke dl,
S nurn_days t ype p.
6 dl d2 "
I
8 subtract I f rom dl.
9 d2+6 ' 01' .
10 subtract I f rom ea.
11
Ccl culos de dolo
Uma variavel de data (t ipo d) pode serutilizada dentro de express6es mat emdti-
cas. Atribuir a resultado de urn cdiculo de data a uma varidvel compacrada dara
a diferenca em dias. Urn exemplo edado na Listag em 9.14.
Listagem 9. 14 Colculos de doto que util izam a vcr tcvel de data dentro
,. de umc61culo
No die22 de fevereiro de 1998, 0 c6digo na Listagem 9.14 pr oduziu esta
saida:


1998/02 /21
1998/ 02/ 01
1998/ 01/31
354
N a linha 2, a ins rruc ao type-pool s faz com que a constante ztxl_amal-
gamat ion_date seja inclufda no programs.
Na linha 6, a dat a arual eatribufda a dl e d2.
Na linha 8, a data de ontem e. calculada subtraindo-s e 1 da data atual.
Na linha 9, urn subcampo em d2 no desl ocamento 6 com urn compri-
mento de 2 (compriment o obeido a partir do campo de envio) e
SAiDI

o c6digo na Lista gem 9.15 produz esta saida :
ABC
XY2
A linha 3 define urn sfrnbolo de campo denominado <f>.
A linha 4 at ribui a campo fl ao simbolo de campo <f >. <f>agora indica
o armazenamenro da variavel fl e pode ser urilizado, em vez de fl, em
qualquer lugar do programa.
A linha 5 escreve <f>, fazenda com que 0 conteudo de fl seja escrito.
A linha 6 modifies 0 cont eudo de <f>, mas . na verdade, modifies fl.
A linha 7 escreve 0 conteudo madificado de fl.
DllH TRIBUI\OB, (OIffiRSOB Ec.ltrulOS I 311
9
-- ....... _... .
Posso utilizar a instrucsc clear para configurar Urn valor com
espacos em branco ou zeros, ma s existe uma instrucao que pode
configurar uma vari avel com 0 valor anterior) por mim especi-
ficado, utilizando a a d i ~ o value na instrucao data ?
Tecn icamente, sim, cuidara. Enrr eran ro, a medida que voce
codifies mais pr ogramas, as vezes, voce podera inadver tida-
mente at ri bui r uma string de campo de forma incorreta util i-
zando move. Se conhecer os byt es de preenchimentc e como eles
afet am sua satda, talvez felizmente voce seja capaz de reconhecer
a causa de seus pro blemas e nao precise recorrer a urna "modifi-
cac;ao" para fazer com que 0 programs opere adequadamente.
Possa utilizar a instrucao move com strings de campo de compri -
mentos diferentes?
Nee, infeli zmente nao hi.
Por que precise saber sobre byte s de preenchimento? 0 sistema
DaO cuidara disso, caso eu siga todas as regras?
Sim, pede. Ambas serao tratadas como variaveis do ti po c. 0
valor de envio sera truncado ou pr eenchido no final com espacos
em branco, se necessario, antes da arribuicao ast ring de campo de
recebi mento.
o
o
o
o
o
o
Utili ze compos do mesmo tipo de dodo, Nao move vclores inv61idos para campos.
quando possivel, pore evitor ccnversees.
Utili zemove-cor -respond! ng para mover
os compos de uma string de campo
para umo outre, quando as
compon entes tern 0 mesmo nome mas
os tipos de dodos e comprimentos nco
coincidem.
Util ize a instrulScO clear para otribuir
vol ores iniciois podreo a uma vcricvel
ou string de campo.
IFasa _
P&R
As varidveis de sistema sao armazenadas na est rut ura syst. Voce pode
pesqui sar as descricoes dos campos e seus elementos 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 at ribuicao sao cl ear, move e move-correspondi ng.
Cl ear atribui valores iniciais padr ao a umavarifvel ou st ring de campo.
Voce tambem pode utiliza-la para preencher urn campo com qualquer
caracrere ou com NUlls.
A instrucao move tambem pode ser escrita como ". Mulriplas atri-
buicoes em urna unica linha sao permiridas, como vl " v2 " v3. As
conversoes sao automaticamente executadas, quando necessario. Urn
nome de string de campo sem urn nome de componente et ratado
como uma varidvel do ripe c.
Para mover cs dados ent re strings de campo, que correspondem
exatamente em numero de componentes, tipo de dado e comprimento
de cada componente, utilize move. Para mover os dados entre 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-correspondi ng.
Para acessar os bytes individuais do valor de urn campo, utilize urn
subcampo. Urn subcampo pode ser utilizado como urncampo de envio
ou de recebimento ou ambos .
Voce pede executar calculos com utilizando comput e, add, subtract,
mult ipl y,di vide,add -c orrespondi ng, subt ract-cor re spondi ng, mul t i -
ply-cor re spondt og e divi de- cor r espondi ng.
Voce pode ut ilizar stmbolcs de campo para criar programas muitc generi-
cos. Suponha, par exemplo, que voce queira criar urn pr ograms que aceite urn
nome de tabela como urn parimetro de entrada e exiba 0 conreedo. Voce DaO
poderd codificar os nomes de campo na instrucao write, porque eles serao
diferentes em cada tabela. Em vez disso, voce podera utilizar urn simbolo de
campo na instrucao write para referir-se 010 campo de uma tabela.
Resumo
310 , API ENDAEM 21 OIlS ABAPH
312 t APR EN DA EM 21 DIAS ABA PI4
o
o
o
o
Workshop
Parece estranho 0 faro de eu poder atribuir valor es invalidos as
vari dveis. 0 que acontecerd se eu utilizar urna dessas variaveis
que tenha urn valor Invalido?
Qualquer coisa poderf acontecer. Eu nao escreveria urn pro-
grama que confiasse intencionalmente em val ores invalidos.
Por exemplo, nao rente uti lizar urn valor de data especial de x
para indicar algo especial como uma data ausente. 0 compor-
ramento de seu pro grama toma-se imprevisivel quando voce ul-
trapassa os limites admissiveis do idioma.
As mensagens de sintaxe geralmente nao indicam 0 que hoi de
erra do com meu programa. Emi nha culpa ou 0 verificador de
sintaxe, as vezes, deixa a desejar?
Vamos apenas dizer... nfo esua culpa. Minha mensagem favorite
exxxx i s expected. Na verdade, significa "xxxx ndo eesperado".
Encto, quando essa mensagem aparecer, insira a palavra nao e ela
ficara correra.
I 313
Duas coisas esrao erradas com 0 programa na Listagem 9.16. Quais sao
elas?
EHTRADA.... Listagem 9.16 Este c6digo ilustra a utillzocdo de algumas vcricveis
r b6sicas de sistema
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 descrlptions exi st f or country' . l andl.
endt f
o .Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A Teste oferece perguntas para ajudar a solidificar seu entendi-
mente do cont eddo abordado e a Exercicio permite que voce pratique a
que aprendeu. Voce pode encontrar as respost as as perguntas do teste e ao
exercicios no Apendice B, "Respostas as perguntas e aos exercjcios".
Teste
1. Qua l seria a out ra 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
Utilizando 0 procedimento denominado "Como localizar as descricoes de uma
estrutura au tabela" para localizar:
1. 0 nome do campo de bloco Payment na tabela lfal.
2. 0 nome 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
de controle comuns
Objeti vos do capitu lo
Depois de concluir este capitulo. voce sera capaz de:
Codificar as insrrucoes de contro le comuns; f, case, doe whi 1e
Controlar a sequenci a do programa utilizando exit, conti nue e check
Codi ficar especificacoes simples de comprimento e posicao na ins-
trucao wr; t e
Utiliza ndo a inst ruc;a o if
A instrucdo if no ABAP/4 tern operadores relacionais para igualdade e de-
sigualdade e operadores relacionais especiais para cornparacoes de string e para
mascaras de bit.
As comparoc;6esde bit nco s60 frequenternente utilizodos no ABAP/4
e, por isso, noD s60 apresentados oqui. Entretonto, s60 obordodas com
det olhes no dcc vrnentccco de pclc vrc-chcve do ABAPI4, sob 0 titulo
"Operodores relac ionois para mascaras de bit".
http:// ,,,,,,,,,,,,,CCmpus.ccm.br
316 ! APREN DA EM 21 DIAS ABAPH
D1A DE CDOTRDLE COMUNS 317
Sintoxe do instru..ao i f Tabela 10.1 Ccnnnvcccc
Tabela 10. 1 Cornporocoes comu ns e suas formas alternativas
[elsei f expo
---]
[el se.
---J
endif.
onde:
exp e uma expre ssao lo gica que avalia quanta a umacondicaoverdadeira
au falsa.
--- representa qualqu er numero de linhas de c6digo. Ate mesmo zero
linhassao permitidas.
Os seguinres pontes se aplicam:
Cada if clever ter urn end; f correspondente.
else e elseif sao opcionais.
Os parenteses podem ser utilizados. Carla parentes e deve ser separado
por urn Por exemplo, if ( f1 = f 2 ) or ( f l :: f3 ) esta
corr et o e if (fl "' f2) ' or (fl "' f3) esta incorreto.
As variaveis po dem ser comparadas com em bra nco au zeros
utilizando a i s in it ial. Por exemplo, if fl i s in itial sera
verdadeiro se fl for do ripe c e estiver em branco. Se fl for de qualquer
outro ripe de dado, a instrucac sera verdadeira se fl cont iver zeros.
Para uma negacao, not deve precedera expeessac 16gica. Par exempl o,
if not fl i s in itial est a corr eto. if fl t s not initi al est3.
incorreto.
As variaveis podem ser comparadas com valores nul os utilizando a
adiljao ; s nul l. Por exemplo, if fl is nul l.
Os operadores 16gicos para operandos de qualquer tipo sao list ados na
Tabela 10.1.
Verdadeiro quando
vl for moior que ou iguol a v2
vl for menor que ou iguol 0 v2
vl estiver entre v2e v3 (inclusive)
vl ultrapossar a faixa de v2 a
v3 - (inclusive)
Comparafjao Formas alternativas
vl >'" v2 GE, :>
vI <: v2 LE, :<
vi between v2 and v3
not vI between v2
and v3
Na Tabela 10.1, vl e v2 pode m ser variaveis, Iiterai s ou st rings de campo.
No caso de variave is a u lit erais, a conversao automatica sera executada, se 0
tipo de dado ou comprimento nf o corresponderem. As Strings de campo sao
tratadas como variaveis do ripe c.
A comparacao de da is valores que nao t ern 0 me smo tipo de dado resultara
em uma adaptacao de ripe automatica e interne de urn ou de ambos os valores.
Urn tipo tera precedencia e dit ard que tipo de conversao sera executada. A
ordem de precedencia e:
Se urn campo for do tip o f. 0 outre sera convertido para 0 tipo f.
Se urn camp o for do tipo P. 0 out re sent convertido para 0 tipo p.
Se urn for do ripe t , 0 out re sera convertido para 0 tipo t.
Se urn campo for do t ipo d, 0 outro sera convertido para 0 tipo d. Os
tipos c e n, entretanto, nao serfo convertidos. Eles sao diretamente
co mparados.
Se urn campo for do t ipo t , 0 outro sera convertido para 0 tipo t. Os
tipos c e n, entretanto, nao serao convertidos. Eles sao diret ament e
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 outro sera do tipo x. x e
convertido par a 0 tip o c.
As conversoes seguem as mesmas regras daquelas que sao realizadas pela
instrucao move. As convers6es de tipo sao completamente detalhadas na docu-
mentacao de palavra-chave do ABAP/ 4, sob 0 titulo "Relational Operators for
All Data Types".
exp ] .
'" A seguir, veja a sint axe dainstrucac if.
Z if [not ] exp [ and [not ] exp ] [ or [not]
S
m

ComparoCjoo Fonnas alternativas Verdadeiro quando


vI v2 EQ vI for iguol a v2
vI <> v2 NE, >< vI nco for iguol a v2
vI > v2 6T vl for moior que v2
vl < v2 LT vi for menor que v2
ConversOo de dodos de literais durante compora..6es
as literais sao armazenados int emamenre com tipos de dados, como pode ser
vista na Tabela 10.2.
318 I ' PRE'" EM21 OIlS "API' 10, INmlJ(OES DE ( OKTiOlCOMUNS 319
As conversees de t ipo para [iterais segue m a mesma ordem de precedencia
e as me smas regra s de conversac sao apl icadas.
A Listagem 10.1 mostra urn prograrna de exemplo utilizando os operadores
comuns de comparacio. Uma conversac inesperada tambem edemc nst rada.
Listagem 10.1 Urnexempl0 do utiliza<;60 de if no progromo
1 report ztxlOOl.
2 data : begi n of 51,
3 x value 'X' ,
4 Y value ' Y' .
5 z val ue '2 '.
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.
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. comparando st rings de campo , byte per byte
25 write: / 'sl s2' .
26 else.
27 write : /' sl<> 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 .
A primeiro col uno no telo Conversions: lOOOOC nlio mostra qual con-
versec e executodo. Mostro simplesmente os tipos de dodos erwclvldcs
no converse o.
I. Comece no ABAP/ 4 Editor: Initi al Screen (Tela Inicial).
2. Digite 0 nome do programa a ser analisado no campo Program.
3. Selecione 0 caminho de menu Ur iliries-c-Program Analysis. A tela
Conversions: xxx:o: sera exibida.
4. Pressione 0 borao Conversions . A tela Conversions : x;cca: sera
exibida. Todas as convers6es sao resumidas nessa tela. A primeira
coiuna conrem tipos de campo comparados.
5. De urn clique dupl o em qualquer linha para visualiza-la dentro do
programa.
Na linha 12, 51-x e comparado com 52- x. Ambos sao do tipo c,
comprimento 1. Nenhuma conversjc eexecutada 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 fossem
varidveis do ripe c. 0 valor de 51 eportanto XYI e 0 valor de 52 eXl.
Eles DaO sao semelhantes.
Na linha 30, a literal 0 e comparado com urn espacc- 0 zero e
armazenado internamente como ripe i, 0 outro como tipo c. De
acordo com a ordem de precedencia, 0 tipo c econvertido para 0 ripe
t. Converter urn espacc em branco para urn inteiro resultara em urn
valor zero e a comparacio provara ser inesperadamenre verdadeira.
o c6d.igo na Lisugem 10.1 produz esta saida:
, .,
Xis between X and Z
51 <> 52
o ' ,
IOYO '" Ao executor umo on6fise de progrorno, voce poderc determiner onde ocorrem
TEUO " as ccnversces dent rode urn programo. Para executor umo on61isede progroma,
utilize 0 seguinte procedimento.
Inid e ogoro a ScreenCom "Howto Perform a Program Analysis".
INiuSE
Exibindo convers6es

p
c
Tlpo de dado
Nemeros de urn a nove digitos de comprimento
Ncmercs de 10 au mais digitos de comprimento
Todos os outros
Tabela 10.2 Tipos de dodos de [itercis
320 [ APR ENOA EM21 DJAS 10, INSTRIlI'" OECONTROlH OMUNI 321
Utilizando fl Sf; f
'Iltillzandc operodores de st ring de caroctere
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 emais dc rc do que a utiJizac;ao
,. de its oninhodos
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.
18 write: / fl, ' .', B .
19 else.
20 if f2 .. f3 .
21 write: / f2 . ''' ' , f3 .
22 else .
23 wri t e: / 'all fi elds are diff erent ' .
24 endif.
25 endt f.
26 endif.
o c6digo na Lisragem 10.2 produz esta saida:
all f iel d$ are different
al l fields are different
Es ses operadores podem ser utilizado s em qualquer expressao de com-
Os operadores CS, NS, CP e NP ignoram os espaCi Os em branco finais e
nio disringuem maiusculas de minasculas.
Embora voce possa utilizar variaveis, constantes ou [iterais com opera-
dares relacionais para as strin gs de caractere, a Listagem 10.3 utilizara apenas
lit erais para umaexemplificacao mais clara . Ale m disso, para mais clareza, as
ins tru coes i f, aqui apresentadas, ocuparn uma uni ca linha cads.
Os operadores especiais para as strings de caractere sao mostrados na Tabela
10.3.
Tabela 10.3 Operadores especiais pore strings de ccroctere
.. Sig nifl(o V. ..dodelro Ha d lsti "iCJo entre Os e m
quand o mahi.culas branco finol.
mi nUsculo.l sbo Ign Ot'odos?
vI CO v2 Conl6m se rneree V1 forcomposto Sim Nco
scmene de
cerecte-es em '12
'1 1 CN'12 not '11 CO '12 v1 pod, cooter 5im Noo
coracteres que
ntic 'st60 em '12
'1 1 CA '12 Cont em quolquef v1 pode ccore-
'm
",,0
PIlle mlIOOs um
ccrecee em'12
'11 NA '12 not '11 CA '12 .,1 nlio pod. Sim Nco
conler nenhum
torodere em '12
'11 CS '12 Contemstril'lg ... 1 pod. tonI .. 0 ",,0
' m
stringde ee reeere

'11 NS '12 not '11 CS '12 ...1 n60 pode NOo Sim
coni.. 0 string
de corcceere
em '12
'11 CP '12 Cont6m podriio v1 pede center NOo Sim
o padrtlo em '12
'11 NP '12 not '11 CP '12 ...1 ntio pede NOo Sim
conter 0 padrOo
em Y2
/ n. ' ,, ' f2 .
/ n , '. ' rs.
/ f 2, I ", ' f3.
/ 'all fields are different' .
'A',
'B' ,
'c.
write:
write:
write:
write :
fl f 2.
fl f3.
f 2 .. f3.
Se fl = f2 , a linha 6 sera verdadei ra.
Se f1 = f3, a linha 7 sera verdadeira.
Se f2 = f3, a linh a 8 sera verdadeira,
Se nenhuma das ant eri or 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 voce possa ver as dua s recnicas, lade a lado.
if
else1f
elseif
else . "
end1f.
1 report ztxl002.
2 parameters: fl def ault
3 f2 default
4 f3 default
I
6
7
8
9
I.
11

siiDI
J
322 I APREHDA EM 21 OIAS ABAP/4
DIA 1000Sl1U\OB DECDNTlOLl COMUNS I 323
f H I R A D A ~ Li slagem 10.3 Umpregreme dx.mple .mpregende co, CN, CA NA
1 report ztxIDD3 .
Z .. ope r ador: co
3 wri te / "' AABS" co " AB" ' .
4 if ' AABS' co 'AS'. write 'True '. else. write ' False ' . end 1f .
5 write / " 'ABCD" co "ABC"' .
6 i t 'ABCO' co 'ASC' . write ' True'. else. write ' False ' . end1f.
7
B .. ope r ador: en
9 write / "' AABS" en "AB" ' .
10 if ' AABB' en ' AB' . write 'True' . else . write ' Fals e' . endif.
11 write / "'ABCD" en " ABC" '.
12 it ' ABCD' en 'ABC' . wri t e ' Tr ue ' . else. write ' False '. endi f.
13
A linha 18 e falsa porque I ABCD' nao contem nenhum dos caracteres .
'XVI' .
na e equivalente a not vI co v2.Port anro, as linhas 22e24sao a negaljao
Icgica das linhas 16 e 18.
Ret omando aTabela 10.3, os operadores CP (conrem padrao) e NP (ne-
nhum padrao) executam uma pesquisa de st ring que permire caracteres com
cor respondencia de padrao. A expressao vl CP v2 sera verdadeira, quando 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 Tabela lOA.
Tabela 10.4 Op. roder.s CP. NP
14 .. oper ador :
"
15 write / "' AXCZ" ca " AB''' .
16 if 'AXCZ' ca ' AB' wr i t e 'True' . else . wri t e 'Fals e ' . end i f.
17 write I " 'ABCO' , ca "XYZ' " .
18 if ' ABCD' ce 'XYZ' . write 'True ' else . write ' False ' . end; f .
19
20 .. ope r ador : na
21 write / " ' AXCl "
"
" ABC' ''.
22 if ' AXCZ' na 'ABC'. write ' True ' . else . write ' False' . end if .
23 write I " ' ABCO" na " XYZ' , , .
24 if 'ABCD'
"
'XYI' . write 'True ' . else . wri t e ' Fal s e' . end; f.
Tabela 10.5 Utilizondo corccteres
vl CP ' A+C' vl pode conter "a" na primeira posic;ao e "c" na tercelrc. Os dots
cc rocteres podem ester em letrc mcic sculc ou em letro minuscule .
O vclqver ca ractere pode a pa recer no segunda posic;oo.
,,1 CP '*Ab*' Astring -ab- ped e occ rrer em qua lquer lugar dentro de "1. Os dois
ca raderes podem ester em letra rnciusculc ou em letro mlnusculo .
,,1 CP ' *I Alb*' 11 1. pode conter uma letra A motusculc seguida por vmo letrc b
minuscule.
Utllizado pa ra
v1 pode conter urn ,.
Pode correspo nder qua lquer seq uencia de cc rocteres.
Pode corresponder um cntcc caractere .
Pode interprete r 0 pr6ximo ccroctere, llterclmente.
Ve rd adeira quando
Caradere
vl CP ' *" .'
#
+

# e0 caracrere de escape. Urn uni co 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 ent re maiiisculas e
minusculas ou para pro curar os caracter es ", + ou I. A Tabela 10.5 mostra
exemplos de como voce poderf ut ilizar esses caracteres. 0 caractere de escape
sera necessario quand o voce quiser executar uma pesquisa com disnncao entre
maiiisculas e mimisculas utilizando C5, N5, CP ou HP. Voce podeci tambem
precisar do caractere de escape, se quiser executar uma pesquisa de padrao (CP
ou NP) para uma string contendo ", +ou #.
Instrul!ioo
' AABB' co 'AB' Tr ue
'ABCD' co ' ABC' Fals e
' AABS' en 'AB' False
' ABCD' en ' ABC ' True
' AXCl ' ea ' AB ' True
' ASeD' ca ' XYI ' False
' AXCI ' na ' ABC' False
'ABCD' ne 'XYI ' True
o c6digo na Listagem 10.3 produz esra saida:
co e0 operador que contern exclusivameme. A linha 4 everdadeira
porque 'AABB' contem apenas caracteres de ' AB'.
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 e0 mesmo
que not ,,1 co v2. Portanro, os resultados sao invert idos. A linha 10 e
falsa e linha 12 everdadeira.
ce e0 operador que esd. comido e a linha 16 sera verdadeira se 'AXCZ '
contiver quaisquer caracteres de 'AB I t verdadeira porque contem A.
AHALISE
SAiDA ~
E
324 APRENDA EM 21 DIAS ASAP/.
DIA 'UNSTRU\OES 0, CDNTROlE COMUNS 325
Tabela 10. 6 Valor atribuida a sy-fdpos par coda operodor
A Listagem I DA esemelhante aListagem 10.3, mas algumas linhas for am
adicionadas para exibir 0 valor de sy-fdpos depois de cada comparaclo.
A ut ilizacao desses operadores sempre configu ra a variavel de sistema
sy-fdpos. Se 0 result ado cia comparacfo for verdadeiro, sy-fdpcs ira center 0
deslocamenro com base em zero ciaprimeira correspondencia ou car actere sem
correspondencia, Caso contrdrio, sy-fdpos ira canter 0 comprimento de vj. 0 .
valor atribuido a sy- fdpos por cada operador sera descrito na Tabela 10.6.
Depois de uma comparacao, sy- f dpos ira comer urn deslocamenro do
primeiro caractere au 0 compriment o de vi. Nesta tabela, "1
st
char(vl)"
significa"o deslocament o do primeiro caractere de (string ou padrao) vl ".
Entao, por exemplo, onde esra " 1
st
char(v l) in v2", significa "0 deslocamento
com base em zero do pri meiro caractere de vi, que esta rambem em v2
n

Length(v l) significa "a comprimento de vl". Observe que somente a primeira


ca luna contem as insrrucoes do ABAP/4.
o c6digo na Listagern lOA produz esta safda:
'MBB' co 'AB' True sy-rdpcs- 4
' ABCD' eo 'ABC' . Fal se sy-fdpos - 3
'MBB' en 'AB' False sy-fdpos" 4
'ABCD' en 'ABC' True sy-fdpos= 3
'AXCl ' ea ' AB' True sy-fdpos" 0
'ABCD ' ce ' XYZ' False 4
'AXCl' na ' ABC' False sy-fdpo sz 0
'ABCD' na ' XYZ' True sy-fdpos= 4
write 'True'. else. write 'False' . endif .
write: "sy-f dpcs", sy-tepcs .
write 'True'. else. write ' Fal se '. endif .
write: 'sy-fdpos"' . sy-fdpos.
" ABC' "
write ' Tr ue ' . else . write ' Fal se'. endif .
write : 'sy-fdpos' . sy-tdpcs ,
" XYZ' "
write ' Tr ue ' . else. write ' Fal se'. endif .
write: "sy-fdpos>", sy-fdpos.
15 if 'ABCD' en ' ABC' .
16
17
18 * operador: ea
19 write / "'AXCZ" ce " AB" '.
20 if 'AXCZ' ce ' AB' .
21
22
23 write / "'ABCD" ca "XYZ"'.
24 if 'ABCD' ea ' XYZ' . write 'True'. else. write 'False'. endif .
25 write: 'sy-fdposz' . sy-fdpos .
26
27
28 * operador: na
29 write / " 'AXCZ" na
30 if 'AXCI' na 'ABC' ,
Jl
32
33 write / "'ABCD" ne
34 if 'ABCO' na 'XYI'.
35
1"chor (vi) not in v2
length (v1)
length (v1)
P'chcr (vi ) in v2
length (v1)
T'chcr (vi) in v2
length (v1)
if FALSE 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
vi CO v2
vi CN v2
vi CA vz
vi NA v2
vi CS v2
vi NS vz
vi CP v2
Comparafjoo
Listagem 10.4 Utilizando sy-fd pos para ver a deslocamento do primeiro
ccroctere 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
"AB'"
write 'True '. else . write 'False '. endt t .
write: ' sy- f dpos=' , sy-fdpos.
" ABC'"
write 'True' . else. write ' Fal se'. endif.
write: "sy-fdpus", sy-fdpos.
"AB' ''.
write ' Tr ue' . else. write 'False' . endt f ,
write: "sy-fdpos>", sy-fdpcs .
"ABC'"

A linha 4, urna comparacac co, everdadeira. Portanto, sy- fdpos con-
tern 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 linhas 4 e 7, os
valores de sy-fdpos nao serao alterados.
A linha 20, uma comparacao ca, everdadeira 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 contem nen hum dos caracteres em vz, portanro
sy-fdpos contern 4: 0 comprimento de vi .
A linha 30 ea 16gica de urn teste de ca. ' AXCZ' contern urn
valor de 'ABC' e, portanto, urn teste de ca seria verdadeiro. Negar esse
1
326 APRENDA EM 21 DIAl ABAP/<
DIA 10, INITRU(OEI DE CO""OLE COMUNS 327
when 1'3 [ or vn . ] .
case vr ,
when ,,2 [ or vn ].
[ when ot hers.
--- I
endcase.
onde:
A instrucao ex; t impede que processamentos posteriores ocorram.
10
1. 2. or 3' .
' fl .. 1'.
' fl '" 2' .
'f! " 3' .
'fl is not
wri te /
write I
write I
write /
a codigo na Listagem 10.5 pr oduz esta satda:
fl = 2
fl .. 2
A linha 2 defi ne fl como 0 pardmetro de urn unic o caractere com urn
valor padrac 2.
N a linha 4, comeca a inscrucao case e fl ecomparado com 1, 2 e 3, ern
sequenci a.
A linha 6 faz a corr espo ndencia e executa a instrucao wr -t te ime-
di atamente depois dela. As insrrucoes when rema nescent es sao igno-
radas.
A proxima linha execut ada ea linha 12.
case fl.
when 1.
when 2.
when 3.
when others .
endcas e .
ANiuSE
CA exit.
-
Z
S
m

Utilizando a inst ruc;ao ex; t


SAioA
Sintoxe do instru\joo ex; t
Listagem 10.5 A case exe cuta uma serie de
1 report ztxlO05.
2 paramet ers fl type i default 2.
3
4
5
6
7
8
9
10
11 * 0 c6digo a seautr e equtvalente a instrlll;ao case aci ma
12 if fl "'l. write/ 'fl" 1' .
13 elseif fl .. 2. write / 'fl 2'.
14 elseif fl ,,3. write / 'fl z 3'.
15 else. writ e / 'fl i s not 1, 2. or 3' .
16 end; f .
A inst rucao case executa uma seri e de cornparacoes.
vl OU '12podem seruma variavel, literal, consrant e ou string de campo.
--- representa qualquer mimerc de linhas de c6digo. Ate mes mo zero
linhas sao permitidas.
a s seguintes pontos se aplicam:
Sornente as instrucoes apes a prirneira correspondencia wh en serso
executadas.
when others correspondera se nenhurna when precedent e corr espon-
der.
Se when ot hers nao estiver codificada e nenhuma when cor responder,
o processamento continuard com a primeira instrucao apes endcase.
As expr essoes nao sao permiti das.
As Str ings de campo sao tra tadas como sendo variaveis do tipo c.
Case emuito semelhant e a if/elseif. A unica diferenca eque em cada
t f /el sei f, voce pode especificar uma expressgo complexa. Com case, voce
pod e especi ficar somente urn anico valor a ser comparado e os valores sao
sempre comparados quanto aigualdade. Urn exemplo sera. for necido na Lis-
tagem 10.5. .
resultado dard falso. Sy-fdpos econfigurada para 0 deslocamento com
base em zero do primeiro caractere em ' Axez I que tambem est a em
' ABC '.
A linha 34 e, novamente, uma negacao 16gica de urn teste de ca. I ABeDI
nao con tern urn valor de ' XVZ' e. portanto , urn t este de ca seria false.
Negar esse resultado dara verdadeiro. Sy- f dpos econfigura da par a 0
comprimento de I ABeD ' .
Utilizando a instruc; ao case
A seguir, veja a sintaxe da insrrucao case.
Z
S
m

Sintoxe do instrU!;fio case


...
328 I APRE NDAEM 21 DIAS ABAPI4
OIA10: DE CONTIl:OLE COMUNS 329

A Listagem 10.6 mostra urn programs de exempl o utilizando exi t.
Listagem 10.6 Util izondo ex; t para interromper a contlnuccco do
processomenfo
. . . representa qualquer numero de clausulas varying completas.
- - - representa qualquer numero de linhas de ccdigo.
A insrrucao do corresponde a urn me canis mo de loop basico.
o c6digo na Listagem 10.6 produz esta saida:
Hi
Sintoxe do instruljOo do
"neve f t nhe
loop, sv- tndex . ', sy- f noex, / "
enddo.
endoc,
do 4 times.
wr i t e: / 'out er loop, sv-tnoex =' , sy-tndex ,
do 3 times.
write : /' inner loop, sy-index - ", sy -f ndex.
Os seguintes pont os se aplicam:
Os loops do podern ser aninhados por urn numero ilimitado de vezes.
ext t imp ede a processamento de loopposterior e sai imediatamente do loop
atua]. Nao tennina 0 programa quando dentro de urn loop do. 0 proces -
samento continuaci na pr6xima instruclo execuctvel depois de enddo.
Voce pode criar urn loop infinit o pela codificacao de do sem qualquer
adiljao. Nessa situacao, utilize exit dentro do loop para terminar a
processamento de loop.
Modificar 0 valo r de vl dent ro do loop nao afetard 0 pr ocessamento
de loop.
Dentro do loop, sy- t ndex contera a numero de iteracao atual . Por
exemplo, a primeira vez at raves do loop , 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 conte r 0 valor
que tinha antes de entrar com 0 loop. Com loops do aninhados , sy- i ndex ira
conter 0 mimero de iteracio do loop em que eutil izado (vej a a Listagem 10.7) .
L1stagem 10.7- Sy- index contem a numero de iterac;oo otuol
1 report ztxl007 .
2' sy-t ndex = 99.
3 writ e: / ' bef ore l oop, sy-t ndex =' , sy- t ndex, / "
4 do 5 t imes.
5 wrt te sy-t ndex.
6 enddo.
7 write: / 'after
8
9
10
11
12
13
14
15
16 write : / " .
17 do 10 times.
18 write sy - f ndex.
19 if sy- index = 3.
20 ex; t.
21 endi f.
22 enddo.
Exit impede 0 processamento posterior, sendo ossim, exit no linho 3 impede
que a linha 4 seja executado.
1 report
2 write: /' Hi' .
3 exit .
4 write: / ' There' .
. ex; t ser ut ilizada em varies situacoes. Essa ins trucao pode ter
efei ros, dependendo do loc al onde aparece no codigc. Entretanro, ela
processamentos pos teriores. Dentro de estruturas de loop, tal
instrucao rgno ra 0 processamento de loop introduzido pelas instrucoes como
, sel ect , do e wh'i I e. Dentro de sub-retinas, ignora as sub-retinas introdu-
zidas por FORM. Seus efeiros em outras situacoes. serao complet ame nre
explorados amedida que surgirem.
vI euma variavej. lit eral au const ant e.
s euma string de campo com as componentes c1 e c2.
11 uma varidvel. O s component es de s podem ser convertidos para
o tipOde dado e comprimen t o de 11.
Sliol
IHiuSE
Utilizando a do
!! A seguir, veja a sint axe da instru cao do.
Z do I vI ti mes] I varying 11 f roms-cl next s-c2 ( varying 12 from s2.cl
;: next s2-c2 . .. ] ].
lexft .I
enddo.
onde:
330 ,HREN D'" EM 21 OIlS l U PI4 Ie INmll\OEI DE CONTROl! CDMUNI 331
o codigo na List agem 10.7 produz esta saida:
6
7
endt f.
enddo.
IliDI
before l oop. sy-index .. 99

1 z 3
after loop, sy- i ndex " 99
. oute r l oop, sy- t ndex " 1
inner l oop, sy- i ndex = 1
,
inner loop, sy-tndex =
,
inne r l oop, sy- t ndex = 3
outer loop, sy-index ;:
,
fnner l oop. sy- t ndex .. 1
inner l oop, sy-t ndex =
,
inne r loop . sy-i ndex .. 3
outer loop , sv- tnoex = 3
inne r l oop, sy-tncex .. 1
inner l oop. sy- tndex
,
inner l oop. sy-i ndex .. 3
out er l oop, sy-t acex .. 4
i nner l oop, sy-tndex " 1
i nner loop . sy-t ndex " z
i nner l oop. sy-tneex .. 3
1 z 3
-,
'Ilrite sy-teeex .
if sy-1ndeK .. O.
exit .
Se esse programa for executado, ele ira realizar urn loop infinite e a sessac
sera sincronizada. 0 termino da tarefaSAPGUI 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 tal 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. Entre-
tanto, 0 programa podera aindaestar sendo executado no processo de trabalho,
o que diminui a veloci dade do sistema. Finalmente, seu programa 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 menos duas sess6es
abertas e que t enham sido criadas atraves do caminho de menu Sysrem- c-Cre-
ate Session. Voce devers inicia-las antes de executar seu programa. Se voce
estiver em urn loop infinite e nao tiver uma outra sessao em execucao sera tarde
dema is. As sess6es criadas ao efetuar novamente urn logon nao funcionarao.
lnicie ogora a ScreenCom " How to Termi nate an Endless loo p".
Para terminar urn loop sem fim:
1. Quando efetuar logon pela primeira vez, selecione 0 caminho de
menu Syst em-s-Create Session .
2. Minimize sua nova sessao e a deixe no fundo ate precisar dela. Voce
pede agoIil testar os programas com impunidade.
3. Agora execute urn prog rama que contenha urn loop sem fim, como
ztxlooa. Voce vera uma arnpulhet a quando seu ponteiro estiver sobre
a janela. Observe 0 numero 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.
5. Solte a tecla Alt.
6. Digice / 0 no campo Command na barra de [erramentas Standard.
7. Pressione a Tecla Enter. A caixa de diilogo Overview Of Sessions
aparecera. Ela contem uma lista de suas sessoes, Aesquerda de cada
uma esta 0 numero assoc iado de sessao.
I
,
I r eport thIOQ8.
2 do.
3
4
5
Exist ir jo ocasioes em que urn programa em execucto tera urn loop inter-
minavel. A Listagem 10.8 mostra tal programa.
Em rcros oc oslees, a necessldcde de "mete r tempo" surgir6 em um
programa. Voce noo dever6 utilizar urn loop vcnc par a recllzcr issei
a CPUser6 consumida desnecessoriamente, se voce [izer isso. Em vez
dissc , voce dever6 chamar 0 m6dulo de fum; oo rzl_51eep.
As alt eracoes [eit as 41.0 valor de sy-t ndex nao afetam 0 controle de loop.
Por exemplo, 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. Nesse ponte, 0 valor sera configurado
novamente como 1 e, em segui da, incrementadc como 2 e 0 loop continuara 0
processamento como se voce nac 0 tivesse alterado em absol ute.
Listage m 10.8 Urn loop sem tim poder6 ser frustrcnte se voce n60
sovber interrompe-lo
Terminando um loop sem f im
-- - --- -
--
334 I " RENDA EM 21 DIAl ABAP/4
DIA 10: DECDHTROLE COMutiS 335
H<f> i ndfca agora
Hum componente de s
12
13 write / "
14 do 6 times varyi ng fl from s-et next s-cz.
15 if sy-index .. 6.
16 s -c6 .. 99.
17 else.
18 fl=fl*l .
19 endif .
20 ass ign component sy-tndex of structure s t o <f:> .
21 write <f>.
22 enddo.
23
24 write / " .
25 do 6 times varyi ng f l f rom s- et next s-cz .
26 wrfte f1.
27 enddo.
val ue I,
val ue 2,
val ue 3,
val ue 4.
value 5,
valu e 6,
cl typ e i
c2 type i
c3 type i
c4 ty pe i
c5 t ype i
c6 ty pe i
end of s ,
7
8
9
10
11
12
13
"
15 do 3 times veryt 119 fl from s-et 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.
IAiDA
o c6digo na List agem 10.10 produz est a saida:
1 2
3
5 6
SAiDA
o c6digo na Lisragem10.11 produz esta saida:
1 2 3 4 5
2 4 6 8 10
99
6
12
1
Na linh a 14, os valores sao lidos dos componentes da string de campo
s para fl-, urn por vez.
A linha 18 modifica o valor de cada fl, multiplicando esse valor por 2.
o ultimo valor de f1 nao emodificado. Emvez disso, ao componente
de envio eatribuido 0 valor 99.
A linha 20 atribui urn componenre de s ac sfmbolo de campo <f>. A
primeira vez atraves do loop, 0 componente 1 (cl) eatribuldo a <f>.
Na segunda vez, 0 componente 2 (c2) eatribuido e assim por diante.
A linha 21 escreve 0 conteudo do componente que enviou seu valor
para f l. Na list agem de saida, voce pode ver 0 conteudo de cada
componente de 5 antes que enddoseja executada.
Quando a instrucao enddo eexecutada na linha 22, 0 conteudo de fl
substitui 0 con t eudo do componente de envio.
Novamente, variar atraves do loop (linhas de 25 a 27) exibira 0 novo
.conteudo de S. Isso mostra que 0 valor de f1 dentro do loop sobres-
creve sempre 0 conteudo 'do componente de envio.
Uma instrucao ex; t dentro do loop ndo impedira que 0 conreudo modi-
ficado de f1 seja escrito de volt a para 0 campo de envio. A iinica maneira de
deixar 0 loop sem 0 cont eddo de fl. sobrescrevend o 0 campo de envio, e
executando uma instrucao stop ou uma insrru cac de mensagem de erro dentro
do loop (ambas abrangidas em capitulos posreriores) .

fl recebe quolquer outro componente de s comeccndc com 5-c1 e f2 recebe
qvclquer outre componente ccmeccndo com s-cz.

Voce pode modificar 0 valor de 11 ou 5 dentro do loop do . .. vary; ng/ enddo.


Quando a insrrucao enddo e execut ada, 0 valor atual de 11 e retornado ao
component do qual oeio, independentemente se foi modificado ou nso. Na
List agem 10.11, 0 relat orio ztxlOl 1 iiusrra essa funci onal idade.
1 rep ort zt xlOl l.
2 data : fl ty pe f ,
3 begin of s,
4 cl typ e t valu e I ,
5 cl type t val ue 2,
6 c3 type t value 3.
7 c4 typ e i val ue 4,
8 cS typ e i val ue 5,
9 c6 type; value 6,
10 end of s .
11 fi el d- symbols <f>.
Modificando valores denim de do . .. varyi ng/enddo
L1stagem 10.11 0 valor otocl de fl eescrito novamente no
componente de envio quando enddo eexecutada
336 I APRENDA EM 21 DIAS AlAP/4 lD,lN"'"IIiB DECDNTROlE (D.UNS 337
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
ccmecando uma novapassagemde loop. Na verdade, faz com que as insrrucoes
abaixo dela, dentr o do loop, sejam ignoradas e uma nova passagem de loop
comece. 0 efeito da insrrucao continue emostrado na Figura 10.1.
"caract eres tnt ct et s
"cerect er es f 1na1s
"f l ag de ccnctu r dc
Vendor Humber ' .
"a expressac e aval 1ada primei r o
"em segui da. as vary sao executadas
o c6di go na Listagem 10.12 pr oduz esta safda.
p-- - Vendor Number
As linhas 2 e 3 definem duas variaveis com urn deice caractere 1 e t.
A linha 3 define urn flag para indicar quando processamento econ-
duido.
A linha 5 define p como caractere 25 corn urn valor padrao.
Na linha 6, a expressdo na instrucl o wh i 1e eavaliada ernprimeiro 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 linha 8 atribui 0 ulti mo caractere para t .
Se 1 e t estiverem ambos em branco, a linha 10 atr ibuira urn trace aos
dois. Se nao estiverem, a linha 12 atribuira urn ' X' ao flag done.
Na linha 14, endwhile copia os valcres de 1 e t de volta ao p.
0 loop whi le sera novamente repetido a part ir da linha 6, desde que 0
flag done esreja em branco.
Listagem 10.12 Urn exemplo do usa do instru<;60 whi 1e
1 r eport ztx l 012.
2 data : 1, _
3 r ,
4 done.
5 par amet er s p(25} default'
6 while done s ' ,
7 vary 1 from p+O next p+l
8 vary t f rom p+24 next p+23.
91fl "andt ..
10 l a t := ' -' .
11 else .
12 done ' X' .
13 endif .
14 endwhil e.
15 write: / p,
sliol

A instruci c whi 1e corresponde a urn mecanisme de loop semelhante ao do.
a s seguint es pontes se aplicam:
Os loops whi 1e podem ser aninhados por ummimero infinite de vezes
e tambem podem ser aninh ados dent ro de qualquer ourro tipo de loop.
exi t impede 0 processamento de loop post erior e sai imediatament e
do loop atual. 0 processamento continua na pr6xima instrucao exe-
caravel depois de endwhi 1e.
Dentro do loop, sy-t ndex ira center 0 ndmero de atual.
Depois de endwhi 1e, sy-i ndex ira center 0 valor que tinha antes de
entrar com 0 loop. Com loops wh i 1e aninhados, sy- t ndex ira center 0
numero de iterar;aodo loop em que eut ilizado.
endwhi 1e sempre copia 0 valor de 11 de volta para 0 cornponent e de
envro.
Em urna inStrUCI3.0 whi 1e contendo urna expresssc logica e uma adicao
varyi ng, a expressao logica eavaliada primeiro.
while emuito semelhante a do. Aqui, ela e uti lizada para colocar urn
numero igual de traces em ambos os lados de uma stri ng.
Ut iliza ndo a inst ruc;ci o whi 1e
en A seguir, veja a sintaxe da insrrucao whi 1e.
Z whi 1e exp [ vary f1 f rom s-c1 next s- et [ vary i 2 fro ms2-cl next s2-cZ .. ]
S [extt , l
m endwhl 1e.
onde:
exp euma expressso logica.
s euma String de campo com os componentes c1 e c2.
fl eurna varidvel. Os componentes de s podem ser convert idos para
o tipo de dado e comprimento de fl .
. . . represent s qualquer numero de clausulas vary compleras.
-- - represent s qualquer numero de linhas de c6digo.
Sintoxe do instruc;ao whi1e
338 I APREHDAEM 21 D'A5 ASAP" DIA 10: INSTRlIl;05 DE (QIlTROLE COMUNS 339
Sinta xe do instrUl;60 cont i nue
do 10 times.
checknot sY_,-indexbetween3 and8.
write sy-index. .
... -;.""
enddo.
o c6digo na Lisragem 10.13 produz esta safda:
dupl1cate: f ound at posit ion 2
duplicate \ found at position 4
duplicate \ found at posi t ion 5
duplicate \ found at postttcn 10
endtf ,
enddo.
A linha 2 define urn pardmetro de entrada p com 20 caracteres de
comprimento e atribui a ele urn valor padrao.
A linha 6 inicia urn loop. Na primeira passagem do loop, 0 primeiro
caractere de p eat ribuldo ace 0 caract ere depois dele eatribuid o a n.
A linha 8 sera verdadeira quando c contiver urn caracrere diferenre de
: ou I.
A linha 9 pula diretamente para a linha 14, faz.endo com que 0 loop
seja repetidc utilizando 0 proximo caractere.
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 caractere atual.
A enddo copia os valores de c e n de volta para p e 0 loop erepetido 19
vezes de urna s6 vez.
13
"
AHi uSE
A instrucac check ecodificada dentro de urn loop. Ela pode atuar de forma
muito semelhant e a cont inue, passando 0 control e imediat amente ains rrucio
de terminaqao do loop e desviando das inst rucoes intermediaries. Diferente de
cont i nue, ela aceita uma expre ssjio l6gica. Se a expressao for verdadeira, nao
fara nada. Se for fal sa, pularf para 0 final do loop. 0 efeito da instrucao cheek
emostrado na Figura 10.2.
o c6digo na Figur a 10.2 produz a mesma safda daquela apr esenr ada na
Figura 10.1:
Utilizando a check
IAiDA
Fi gur a 10 2
Ainstru o check e

continue
conditional. f lo
soltor6 poro0 final do
loop se a expressoo
l6gicalorIo/so.
do 10 times.'
if sy index between 3 and 8.'
continua,' - _
endif.,
writesy-index.'
enddo.
'c:: \ \ \ xxx\ \ yyy' .
-cerect ere atual
proxl mo ceractere
/'duplicat e' , c, 'found', ' at position'. sv-tndex .
conti nue .
[enddo/ endwh11eI endse1ect j end' oop)
code:
representa qualquer numero de linhas de c6digo.
o c6di go na Figura 10.1 produz esta saida: :
1 2 9 10
do 19 ttees varying c from p+(l next p+l
varyin g n from p+l next p+2 .
i f c na ' :\ '.
cont i nue.
end1f.
if c n.
wr i te :
en A seguir, veja a sintaxe ciainsrrucfo conti nue. Pode ser utilizada dentro de uma
Z do, while, select ou l oop. (A instruciio l oop sera abrangida no pr6ximo
-t capirulo.)
[do/ whil e/ select/l oop]
m

Os seguinres po ntos se aplicam:


cont i nue pode somente ser codificada dentro de urn loop.
cant i nue nao tern adicoes.
A Lisragem 10.13esemelhante a uma instrucao goto. Ela executa urn salt o
para 0 final do loop arual. Est e programa remove caracteres duplicados, como
dois-pontos e barns invertidas, de uma string de entrada.
Listagem 10.13 Urnexemplo do uso doinstruc; oo continue
1 report ztxlD13.
2 peree et ers p(2D) def ault
3 data : c,
4 n.
S
6
7
8
9
10
11
11
IAiDA
(Igu ra 1 0 1
A cont inue
pulapore 0 finol do
loop, ignorondo todas
as depois
delo pore 0 possogem
do loop cwa l.
340 I ' PREND' EM21 DIAl
OIA 10: DE CONTROLE COMUNS I 341
Sintaxe do instruc,;Oo check
SAioA
1 2 9 10
A 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, emvez disso.
Tabela 10.7 Comparando exi t , continue e check
Na Tabela 10.7, as insrru coes exit, cont i nue e check serao cornparadas.
Comparando as instruc;6es exit, cant i nue e
check .
III
-
Z
S
m
T
A seguir, veja a sintaxe cia insrru cao check. Pode ser util izada dent ro de uma
do, wh ile, sel ect au loop. (A ins rrucso loop sera abrangida no proximo
capft ulo.}
[do/ whi 1el se1ect/l oop]
check expo
[enddo/endwhi l e/ endse1ectjendl oop]
onde:
expeuma expr essao Iogica.
representa qualquer numero de linhas de c6digo.

exit
continue
check exp
Efel to
Sai do loop otuol.
Faz urn sclto incondicionol para a finoI do loop.
Soltero para 0 fina l do loop se exp forfaJsa.
, lrrrr.r.. As li nhos de 8 a 10 no Lisiogem 10.13 foram substituidos pelo lin ho 8 no
ANALISE,. Lisiogem 10.14. 0 progromo trobolho exotomente do mesmo maneira.
L1stagem 10.14 A listag em 10.3la i navamente cadili cad a a lim de
,.. utili zer instrucdo check em vez de continue
Na Listagem 10.14, check se comportara como uma instrucao conti nue
qu ando a expre ssao logics for falsa. Quando for verdadeira, nao fara nada.
o c6digo na Listagem 10.14 produz esta saida:
dupl cat e: fo und at pos i t i on 2
dupl cat e \ f ound at posit ion 4
dupl cat e \ found at posi t ion 5
dupl cate \ found at position 10
1
onde:
write [IJ [P][ (L)] vI.
vi euma variavel, lit eral ou eonstante.
P e urn numero que indica uma posicao na lin ha arual de saida.
ie urn numero que indica 0 numerc de bytes alocado na Iisra para a
saida de vi .
A instruclo wri t e pennite a especificacao de urn eornprirnento e posicio de
saida.
Embora a inst rucao write permita muitas especificacoes complexes, as
especificacces regular es de comprimento e posicao serao apresentadas aqui a
firn de permit ir que voce eri e relat ori os basicos nesse e no capitulo a seguir.
Urn tr atamento det alhado da insr rucac write aparecera posteriormente no
Capitulo 14.
en A seguir, veja a sint axe para especificacoes simples de comprimento e posicao
- . - .
Z na mstrucao wr-r t e-.
S
m
T
Especificac;6es simples de compri mento
e posi C; Ci o da i nst ruc;Ci o wr i te
Sintoxe pa ra especificocoes simples de comprimento
e posic,;co no instruc,;co wri te
'e ::\ \ \ xxx\ \ yyy' .
"ceract ere atua l
"pr6xi mo cer act ere n,
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 ':\ ".
i f c = n.
write : I 'duplicate '. c. ' f ound'. 'at positi on'. sy-tnoex .
endt f.
enddo.
1 re port zt xl014.
2 par amet ers p(20) defa ult
3 dat a: c,
4
5
6
7
8
9
I.
11
12
SAioA
342 ! 'mHO' EM21 DIAS 'BAPH
OIA10: INSTRUtOES DE CONTRCLE COMUNS 343
Os seguintes pontes se aplicam:
/ comeca uma nova linha,
I , PeL devem ser codificados sem quaisquer espacos intervenientes.
A Tabela 10.8 mostra as maneiras correta e inccrreta de codificar as
especificacoes de comprimento e na wri t eo
10 / 2(1) ' Hi' ' There'
11 / 2(3) ' Hi ' ' There '
12 / 2 ' Hi', 10(3) 'Ther e '
1J
/ fl. f 2.
14
/ fl. 4 f2.
15 / (3) fl.
16 / (2) f l.
Ta b e la 10.8 Moneiros correta e incorreta de codificcr as especlflcocoes de
comp rime nto e posicco no i nstruC;ao wri t e o c6digo na Listagem 10. 15 produz est a saida:
Ilrlt... Listagem 10.15 Ut ilizoc;oo des e. spectftcocoes simpl es de comprimento
EHTRADA,. e pos ic;oo no instru c;oo wri te
123
3
+ 1 + 2. + 3. . . .+ 4
Hi There
HiThere
HThere
There
Hi There
H There
Hi There
Hi The
123 123-
123-
A linha 4 representa uma regua de modo que voce possa clarament e
ver as colunas na lista de saida.
A linha 5 escreve Hi comecando na posic;:ao 1 e There comecacdo na
posic;:ao
A Iinha 6 escreve Hi comecando na pcsicao 1 e There comecando na
posicao 3.
A Iinha 7 escreve Hi comecando na pcsicsc 1 e There comecando na
posic;:ao2. There sobrescreve a ult ima posicio de Hi .
A linha 8 escreve Hi comecando na posic;:ao 1 e Ther e cornecand o
tambem na posicsc 1. There sobrescreve Hi completamente e voce nao
pode nem ao menos dizer se Hi foi escrito na list a.
A linha 9 escreve Hi comecando na posic;: i o 2 e There depois dela. Wri t e
deixara urn espaljo entre os valores se voce nao especificar uma pcsicsc
de saida.
A lin ha 10 escreve Hi ccmecando na posicjo 2 para urn compriment o
de 1. Isso escreve soment e 0 primeiro caractere: H.
A lin ha 11 escreve Hi comecando na pcsi cac 2 para urn comprimento
de 3. Urn espaljo inrermediaric vern depois, tomando dais e, em
seguida, There.
A linha 12 escreve Hi comecando na pcsicao 2 e There na posicsc 10
para urn comp riment o de 3, fazendo com que The aparec;:a na lista.

.
write / 10( 2) ' Hi ' .
write / 10 (2) ' Hi'.
write / 10 e2} ' Hi ' .
write / 10( 2) ' Hi ' .
write / 10( 2 ) ' Hi' .
write (2) ' H1'.
write ' Hi' (2) .
write 10 ' Hi ' .
write ' Hi ' 10.
IncorTeta
write /10 (2) ' Hi'.
Correta
write ( 2 ) ' Hi I
write 10 'H1' .
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 cornpri-
menta e posic;:ao na in st rucao wr ; te oMost ra tambern algumas das armadilhas.
A linha 3 representa uma regua de modo que possa ver a s mimeros de coluna
na safda.
1 re port ztxlOl5.
2 data : f1 type p val ue 123.
3 f 2 type p val ue - 123.
4 write : / ' . ... +.. .. 1 +.. .. 2....+.. .. 3.... +. 4 .
5 / 1 'Hi '. 4 'There '.
6 / 1 ' Hi'. 3 ' Ther e '.
7 / 1 ' Hi' . 2 There ,
8 / 1 ' Hi' . 1 ' Ther e ' .
9 / 2 'Hi ' . "r her e" ,
344 ! HRENDl EM 21 OilS lBlP/4 Oil 10: DE (OHTROlE COMUNS I 345
Nao utilize check ou continue dentro de
um loop select para Hltrcr registros. Em vez
disso, util ize a d6usula where pora filtrc-los.
Nao [eio op6s 0 final de uma voriovel ou
string de compo corp a adir;Cio .... aryin g.
Excecces de proter;ooe comportomento
lmprevisfvel poclem cc orre r.
o us o de uma operacao de bi t cria uma dependsncia do sistema
operacional. Isso reduz a portabilidade, portanto. ela njio e
utilizada a men os que seja necessaria. Em vezdisso, uma variavel
com u rn un ico caracter e eutilizada para rerer urn uni co va lo r
ativado/de sativado. Cornumente . 0 "X" representa urn va lor
"ativ ado" e espaco represents um va lor "desativado".
Essa convencau e para compatibilidade com as inter faces de
usuario baseadas em caractere. Escrito, valor X indica uma
selecao presence e 0 espacc indica nac presente.
Por que as operacees de bit nao sao muito urilizadas no
ABAPi 41 0 que eutilizado em seu lugar?
Erecornendada a abertura de mulriplas sessoes sempre que
efetuo logon. Isso nao curn despe rd fcio de recursos? Se todos
fizessern isso , a velocidade do servidor do aplicativo nac cairia?
Por que X e a tecla de espaco sao util izados para representar os
valores binaries ativado e desativado? Acho que 1/0. T/F ou
YI N deveria ser utilizado, como e 0 comum na area de pro-
gramacao.
o
o
o
o
o
check exp sahara para 0 final 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 ime-
diatament e especificados antes do valor de saida . N enh um espaco
intervenie nce deve aparece r entre eacla especificacio.
----:....-_----

Abro duos secees sempre que efetuor
logon, de modo que voce posso
terminer um loop infinite.
Utilize .... aryi ng para ler uma serie de
compos eqOidistantes a partir de uma
string de campo.
P&R
A linh a 13 escreve as campos deci mais compact ados f1 e fl , em
sucess ao.
A linba 14 tambem escreve f1 e f l. Dessa vez, fl eescrito comecando
na 4. O s espacos ini ciais que comegam na posicjo 4 scbres-
crevem 0 valor de fl, fazendo com qu e somente f l apareca na safda.
A linha 15 escreve fl e aloca apenas tres byte s na lisra de safdapara 0
valor. f1 aparece na lista cornecando na posicao 1; ele preenche com-
pletamente 0 campo de safda.
A Iinha 16 escr eve f1 e aloca apenas 2 bytes na lista de safda para 0
valor. a valor de fl nao pode ser exibido em tres bytes, entao urn
asterisco (*) aparece na pr imeira coluna para indicar 0 est ouro.
As instrucoes de comparacac sao i f e case.
case proporciona uma eapaeidade semelhanre a if/ elseif, mas cam-
para dais valores somente quanto aigualdade.
As convers6es ocorrem ao comparar ti pos diferentes de clados. A
ferram enta de analise do progr ama acertari as eonvers6es sempre que
elas ocorrerem.
Operadores especiais estao dispcnfveis para comparacces de String.
Utilize CP e NP para corresponder as strings com os pad roes. Sy- f dpos
econfigurado depois de cada comparacao.
As insrrucoes de loop sao do e whi1e.
sy-index contem sempre 0 contador para a passagem do loop atual.
Depois de concluldc 0 loop, seu valor ereinieializado para 0 que t inha
quando do inicio do loop. Embora voce possa alterar sv-t ndex, seu
valor sed. reinicializado com a proxima passagem do loop.
Utilize varyi ng para atribuir 0 pr 6ximo valor de uma ser ie para uma
variavel. Sevoce modificar a varisvel, enddo ou endwhi 1e copiarf 0 valor
mod ificado para 0 local de onde veio.
Utilize uma out ra sessao e 0 comando / 0 para t erminal' urn loop sem
fim.
Utilize as ins rrucoes exit, continue e check para modifiear 0 proces-
same nto de loop.
exit termina 0 proc essamem o de loop e continua a execucic na
primeira instrucio ape s 0 loop.
cant nue salta imediatament e para 0 final do loop.
Resumo
346 "PREMDA EM 21 DIAS ABAPj4 DIA lG: 1NmutOEs DE COmOLE (OlliUNS 347
o
o recurso mais precioso ea CPU. :E verdade que uma capacidade
pequena de mem6ria adicional e requ erida no servido r do apli-
cativo para acomodar cada nova sessao. Enrretanro, nenhuma
CPU sed utilizada pela sessao livre, sendo assim, isso nao
diminui ra a velocidade do servidor. Se voce escrever urn pro-
grama ini ciando urn loop, ele cons umir a uma enor me capaci-
dade de recursos, principalmente a CPU, e isso, sem dcvida
alguma, degradarf 0 servidor no memento em que esriver sendo
executado. Se voce njio cons eguir inter romper a loop, voce nac
conseguira moder ar a desperdfcic de recursos. Sem veri ficacso,
o prog rama executarf possivelmente por cinco ou dez minutos,
ate que exceda sua capac idade de CPU e, dep ois disso, termi -
nara. Da pr6xi ma vez que voce 0 executar , ele podera no-
vamente fazer 0 mesmo. Em resum o, abrir uma outra sesssc sera
a melhor 0P!rao escolhida.
Teste
1. Na seguint e se!rao de c6digo, alter e as instrucoes if para uma ins-
tTU!rao case .
write ' The number is five. ' .
endt f.
if vI eq 10.
wri te 'The 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. Quais operadores de comparacao de st ring utilizam os t res caract eres
*, +e#?
3. Quais sjo as tres instrucoes de controle de programa discuti das oeste
capitu lo? Quais sao as diferencas ent re elas?
Exercicio 1
Escreva urn programa que produza a safda da Figura.
"r" .. "x 1:1111I1"" " ,,'n1il('o,
"".
''l . 'lr"'5 ' '' '.
'l, sl l . '
.. 1.l" S"" .J '" ...
n 1".S. ,. ,_
'5 'J''''''1' '-
'1'11."'5 ' 1' 9 .
"., ""

S " ". S. l "
, 1Z ....
11 11:'''S. ' .. , _
1 . ' 2 S .. ' -
11 . S.1 -

1 ' 1 2'" S 6.L ' ;
.. 12' _5." '
1
,t ':' .561" ' .
u
U. , I,,, S. , . ,.
"
Posso utilizar uma variavel para indicar 0 comprimento e/ou
posi !rao em uma instruci o writ e?
De que fonna as byt es de preenchimento afetam 0 usa de
varyt ng? Tenho que pr estar aten!rio quanto a qualquer coisa que
eu quando do movimento a partir de strings de campo e
para strings de campo?
A maneira mais faei! de garantir 0 sucesso de vary; ng eter certeza
cia sequencia exata em que os campos se repetem. Se a mesma
sequencia de campos erepetida, 0 mesmo mimero de byres sempre
os separara. Desde que voce siga essa regra, nao haven nenhuma
necessidade de se preocupar com os byte s de preenchimento.
o
o
o
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capit ulo. A Teste oferece perguntas para ajudar a solidificar seu entendi-
mento do conteudo abordado e a se!raoExercfcio permite que voce pratique 0
que aprendeu. Voce pode encont rar as respostas as perguntas do Test e e
exer cicios no Apendice B, "Resposcas as perguntas e aos exerctcios".
o
Workshop
Sim. A instruqao wri te sera apresent ada com detalhes no Capitulo
14 eas especificacoes de varidveis serdo abrangidas em tal capitulo.
Nac codifique como st rings. Em vel disso, calcule as numeros e as
escreva com urn uni co byt e por vez, ou uti lize a tabela syst.
11
Tabelas internas
Objetivos do capItulo
Depois de conduir est e capitulo, voce 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 int ema uti lizando append ao long o de uma linha
de cabecalho ou uma area de trabalho explfcita.
Ut ilizar loop at e l oop at . .. wher e para ler 0 con teddo de uma t abela
int er na e utilizar sy-tabix para det er miner 0 Indice cialinha atu al.
Localizar uma uni ca linh a em uma tabela interna ut ilizando read t able
e suas variacoes.
Classificar as t abelas int ernas e utili zar a adicic as te xt.
Prindpios do tobelo inte rno
NOVO Ilrrrrrr.. Uma tobe/o interne eumo tobelo tempor6rio armozenoda no RAM do servtdor
TI lMO '" do cplicotlvc. Ela ecriode e preenchido por urn progromo durante a execulj;oo
e edescortodo quando a programa termina. Como umo tobela de banco de dodos, uma
tobelo interne consiste em umo ou moi s linhos com uma estrutura identica, mas,
diferentemente de uma tobelo de banco de dodos, ela noo pode armazenor dodos opes
a termlnc do programa. Utilize a tabelo lntemc como um ormozenomenfo tempor6 rio
poro a rnc nlpulccco de dodos ou como um buffer privado tempor6rio.
hllp:// www.compU$.com.br
350 I APIENDA EM Zl DIAS ABAP/4 DO lU/JruSIHTERJiAS ! 351
Defini..ao de umo tobelo interno
Urna tabela inr erna cons iste em urn ccrpo e urna linha opcional de cabecalhc
(veja a Figura 11.1).
NOVO..... a corpo armazena os linhas de tcbelc tntemc. Todes 05 linhas dentro dele tem
TUllO r a mesmo estrutura . Geralmente, 0 termo "tobelc interne", propriamente dito,
refere-se 00 corpo do tcbelo Interne.
que voce adicione wi th header 1t ne depois da clausula occurs. Isso sera
ilustrado nas linhas de 2 a 10 da Lisragem 11.1.
A unica ocasho em que voce criaria uma tab ela interna sern uma linha de
cabecalho seri a no caso de uma tab ela interna aninhada. Urna tabel a intema
aninhada nao pode ter urna linha de cabecalho.
Listagem 11 .1 Maneiros bosiccs de definir tabela s internes com e sem
,.. umo linha de ccbecclbc
NOYO ..... Alinho de eumo string de compo com 0 rnesma estrutura de uma
TERMO r llnhc do ccrpc, mas pede openas arma zenar umo linho (mica. E urn buffer
utilizodo pora a rmozenar coda registro ontes que ele sejc cdicionodc ou coda registro
ossim que eleerecuperodo do tobelc Interne.
Neste livre, umo ccnvencec de de nome e utilizada pora
tobelos internes. Para programas sirnples com apenas umo unica tobelo
i nterne, 0 nome do tobelo interno normalmente sera ; t (de internal
table - tobela internal. Se existiremv6rias tobelcs Internes. 0 nome de
ced e umo norma lmente comeccro com it.
1 report ztxllOI.
2 data: begin of ' i tl occurs 10, "t en uma Hnha de
3 fl.
4 f2.
5 f3,
6 end of HI.
7
8 data i t 2 like ztxl fal occurs 100. "'nao tem uma linha de
9
10 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 uma tabela"interna denorninada it.
o c6digo na Lisragem 11.1 nao produz nenhuma safda.
Para definir a corpo de urna tabela intema, uti lize occurs n na definicao
de qualquer stri ng de campo, excero tabl es . occurs erie a ca rpa da tabel a
intema. A mern6ria para 0 corpo nao sera alocada ate que a prirneira linha seja
adicionada nele. Sem occur s, voce tera sornent e uma str ing de campo.
Para definir urna tabe1a int erne com urna linha de cabecalho, voce devera
inc1uir begi n of ou wi th header 1i ne na Urna linha de sera
automaticament e criada se beg; n of aparecer na definil;jao. Se voce ut ilizar 1i ke
em vez de begin of. a t abel a interna nao teci uma linha de cabeljalho a menos
A linha 2 comeca a definiljao de uma tabela intema denominada i tl.
Euma t abela intema por causa da presenlja da clausula occurs. Tern
tres componentes: fl. f2 e fJ . Cada urn e do tipo c, comprimento 1.
Essa tabela interna tern uma linha de cabecalho porque a defmiljao
ccnt em as palavras begi n of.
A linha 8 define a tabela interne i t2 . Tern os mesrnos component es da
est rutura do DDIC, ztxlfal. Nrc t ern urn cabecalho porque nero
begi n of nem wi th header 1t ne aparecem na definicao.
A definicso de it3 na linha 10 e quase a mesma da definiljao para ; t2
na linha 8. A uni ca diferenca ea adic;aowi th header 1i ne. Isso, eclare,
[az com que i t3 tenha uma linha de cabecalho.
Esclarecendo a fonte principal de confusec em torno de
tabelos internas
A Figura 11. 1 cont ern urna tipica deiniljaa de tabela int ern a. Define duas
coisas: 0 corpo de uma ta be la interna e urna linha de cabecalbo. A
confusao surge porque tanto a corpo como a 1inha de cabecal ho sao
denominados it. it e 0 nome do corpo e ; t e t ambem 0 nome cia linha
de cabecalho. 0 loc al onde voce coloea 0 nome i t em seu c6digo determina
ao que voce esti se referindo.
Q uando utilizado em uma de it sempre ira se refenr
alinha de cabeljalho. Por exernplo. i t -fl '" I AI refere-se ao cornponente fl da
data : begin of it occurs 3,
fl(l) ,
12(2).
end of i t .
it
it
Adefinif;oo d" vmo
tobe/o int"ma
denominoda t t e
mostrodo no porle
svperiO;d"sto ngvru.
A Iinho de
e 0 corpotombem sec
mostrudos.
Fi gura 11
?
I I I I I I I I I I TTT-.-W -.-. -.- -. -TT-. If Y-y-I-.-I.....
,
352 , APRENDA EM 11 OlioSABAP/4 DlA 11: TABalS IHTEiNAS I 353
o c6digo na Listagem 11.2 nao produz nenhuma saida.
Iinba de cabecalhcdenominada it. Ou em f3 it-fl, a linha de cabecalho it
tambem refere-se 010 componente fl .
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 gem 11.2 Estes defln tcces criom tobelos intemos com e sem umo
,.. linho de ccbecclhc
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 edefmida como a Stringde campo denominada t t3.
naa como a tabela interna 1t3. Assim, uma adic;ao occurs e requerida
para t oms-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.
As linhas de 14 a 16 mostram a maneira antiga de defmir uma tabela
intema. It 5eigual a it3 defmi da na linha 10. A 1; ke foi somente
incluida na versao 3.0; programas anteriores utilizam as defmi!joes
como as apresentadas b.a poueo. Include structure nac eutilizada
agora. excetc para os casa s da seguinte de i t6. (Nesse
momenta, voce pode querer reviser a i ncl ude structure
abordada pelc no Dia 5, '0 Data Dicti onary, Parte 3' .)
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 componentes de uma estrutura do
DDIC, mais alguns componentes adicionais. A de i t6 con-
tern as componentes de ztx lfal e dais campos adicionais que sao
delfl ag e rowt otal. Essa tabela interna tern uma linha de cabecalho
uma vez que voce pode ver begi n of na defmii i o.
As linhas 'de 24 a 26 mostram a maneira incorreta de ut ilizer 1i Ice . Os
componentes dessa tabela int erne comecam todos com i t7- s, por
exemplo, it7 -s-lifnr e i t7-s-landl. Embora viavel, provavelmente,
niio e0 pretendido e produz urn myel desnecessario nos nomes 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.
Pan adicionar uma unica linha em uma tabela intema, voce podera utilizar a
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 trabalho pe de ser a.
linha de au qualquer outra string de campo com a mesma estrutura
de uma. linha no carpo.
Adicionondo dodos em umo tobelo interno utilizondo
a append
,.
t !lll uma l1nha de
tern lIIIII l1nha de
"esse 0 motivo per que v. deve uti l1zar
"a include
"ten uma l1nha de
fat;a tssc des se maneira
"os nomes de component e se r ae
"preflxados cem it7-s rno LIST " 27
"t en UI1lI l1nha de
beg1 n of itS occurs 100.
structure ztxlfal.
. end of itS.
beg1n of 1t6 occurs 100.
structure ztxlfal.
de1flag .
rcetctel ,
end of it6.
1 .report ztltll02.
2 dat a: of itl occurs 10,
) n ,
4 f2 ,
5 f3 ,
6 end of ru .
1
8 data 1t2 l i ke ztxlfa1 occur s 100.
9
10 data it) like ztxlhl occur s 100 with header li ne'. -agora tell
1J
12 data 1t4 like it) occurs 100.
13
14 data
15 i ncl ude
16 data
11
18 data
19 include
20 dat a:
21
22
23
24 data : begin of i t 7 occurs 100,
Z5 s l f ke ztxlfal,
26 end of it7 .
28 data HS l 1ke sy-tncex occurs 10
29 with header l ine.
3.
31 data: begin of 1t 9 occur s 10,
32 f1 li ke
33 end of 1t9 .
354 ! ,," PREMO,," EM 21 Ol,,"S.
OIA l),J,,,UlIHTERNAS 355
EHUADAlilrr.. Listagem 11. 3 Este progra ma adiciona tres linhas em umo tabela
r interne it a pa rtir do lmhc de cobecclho
1 report ztx l103.
2 data: begin of it occur-s 3,
J fl(1),
4 '2(21,
S end of it.
6 it-fl ,. 'A'.
7 it-f2 oS 'XX'.
8 append 1t to it. "ecrescente ali nha de cabece1he IT ao ccrsc IT
9 write: / "sy- t ebf x - ': sy- t ebt x.
10 it-fl 'B'.
11 'YY'.
12 append it . "0 mesmo que a li nha 8
13 / 'sy-tabix -" , sy-tebtx .
14 it-fl 'e' .
15 append it. "a tebel e tnteme ccneen agora tres l i nhas .
16 write: / "sy- tebtx sy- t aet x.
Figura 11 2
Estoss60os instrues
de otrfbuiqao, que se
referem a linho de
cobeqolho.
corpo
till

Ii
BJ
it-fl 'A' .
it-f2 'XX' .
Iinhode ccbecclhc

fl f2
O c6 d.igo na Listagem 11.3 produz esta saida:
sy-tabix .. 1
sy-tebtx 2
sy-tebtx 3
A linha 2 define uma t abela intema denominada ; t e uma linha de
cabecalho denominada it. As duas possuem dais componentes: f1 e
f2.
As linhas 6 e 7 configuram 0 coneeudo dos campos de linha de
cabecalho f1 e f2 (como pode ser vista na Figura 11.2). Aqui, it se
refere alinh a de cabecalho.
A linha 8 copia 0 contee do da linha de cabecalho denominada it pan.
coepo denominado it (como po de ser visto na Figura 11.3).

SAlOl
05 seguintes pont os se aplic am:
wo deve ter a mesma estrutura de uma linha do corpo.
wo pode ser a linha de cabecalh o au pode ser qualquer string de campo
. com a mesma estrutura de uma linha no corpo.
Sevoce nao especifiear uma area de trabalho, 0 sistema utilizaraa linha
de cabecalho como padrao. Na verdade, a linha de cabecalhoea area
de t rabalbo padrao. -, .
Depois de append, sy-tabi x e configurada com 0 ndme ro de linha
relativo da linha recem-acrescentada. Por exemplo, depois de acres-
centar a primeira linha, sy-tabi xsera configurada como 1. Depois de
acrescentar a segunda linh a, sy- t abi x sera configurada como 2e assim
por diante.
Ainstru/iao append it t o i t acrescenta a linha de cabecaiho denominada
i t ao corpo denominado it. A instrucio append i t faz a mesma coisa, porque
a ar ea de trabalho padrao ea linha de cabecalho. Sendo mais sucin to, a ulti ma
ea normalmente utilizada.
NOVO lrII... Uma 6rea de trobolho me ndenodo expllcttcmente no instru<;6e append e
m.MO'" ccnhecldc como umo area detrobo/ho exp/(cila. Qu al querstring de compo com
a mesma estrvtura de umo linha do tcbelc interne pode ser utilizodo co mo umo 6rea de
trobolho explkltc. Se umo 6rea de frcbclho n60 for mencio noda, a area de troba/ho
imp/kilo (0 linho de cobecclho) ser6 utilizodo.
A instrucao append init ial li ne to i t acrescenta uma linha contendo
valores iniciais (espacos em braneo e zeros) at abela interna. Equivale a executar
as duas insrrucoes a seguir em sequencia: e1ear it e append it.
A Listagern 11.3 mos tra urn programa de exemplo que acrescent a tres
lirihas em uma tabela interna.
Sintoxe do Instruceo append
!:!! A seguir, veja a sintaxe da instrucio append.
Z append [1m t o] [ini t ia l Tine to] it.
onde:
In 1'10 e0 nome de uma area de tra balho.
it e0 nome de uma t abela int ema pr eviamente definida.
l),TASEUllrmRHAl I 357
.........................-......-""'I .....I..-.-. I I I I I I I I ..... .W.w. .. - - -
3S6 I ",PREMD" EM11 DIU ABAP/4
As linhas 10 e 11 atribuem 0 novo coarecdo aos componentes cia linha
de cabecalho, sobrescrevendo 0 coneeado existente (como pede ser
visto na Figura 11.4) .
A linha 15 acresceata urna terceira linha a partir d.a linha de cabecalhc
. ; t ao corpo it (veja a Figura 11.7) .
append it.
it
ltnhc de ccbecclbc

11 f2 ...
Fig lirA 11 . ,
Acrec de trcbolho
padrfJo i 0 Iinho de
Aqui, e
impJicitomente
ocrescerrtodo eo corpo.
append 1t to i t.
tirl

Si

Fi gura 1 1 3
""'pend i t to t t
copio 0 conteUdo de
Iinha de it
port! 0 corpo it .
A linha 12 acrescenta 0 novo ccnt ec dc cia linha de cabecalho ao corpo
(veja a Figura 11.5) . Essa instrucic e-funcionalmenee equivalente a
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 de
cmbuio;oc
sobrescrevem 0
conteUdo existente do
linho de cobeljOlho i t .
1t-fl ' 8'.
'yy' .
linha de ccbecclhc

fl f2
CO"",
Figura 11 6
ovalorcJo
componente do linho
d. a>bo<olhoIt-Il
sobrescriio. 0 yo/or
de it- f Z permonece
inolterodo.
1t-fl = ' E",
linho de ccbecclbc
i t . ,]
fl f2
A linha 14 altera 0 valor de it-fl e a deixa apenas em itf2 (veja a
Figura 11.6).
Utilizcndo c occurs
occurs nao limita 0 mlmero de linhas que pode ser adi cionado atabel a intema.
Por exemplc, se voce especificar occurs 10, sera pos sfvel ccl ocar ma is de 10
linhas na tabela interna. a numero de linhas que voce pede colocar em uma
append i t .
Figura 11 7
Aqui, 0 conteVdo do
6reo de trobe/ho
imp/fcifO
oaescerdodo 00
""PO.

. .


.. .
it
,
I
l
endloop.
l oop at i t [into am] [fran _] [t o n] [where u p].
onde:
it e 0 nome de uma tab ela interna.
wa e0 nome de uma irea de trabalha.
Lendo verics Iinhas utilizando a l oop at
Para ler algumas ou todas as linhas de uma tabela interua; voce pede utilizar a
inst ni c;ao loo p at . loo p at Ie0 ccnt eadc d.a tabela intema, colocando as linhas
do conteudo) urna.por vel., na area de trabalba.
Sintexe de loop at
A segu ir) veja a sint axe da instruc;ao loop at .
Duas instruc;6es sao comumente utilizadaspara a leitura dos dados a partir de
uma tabela int ema:
loop at
read table
Utilize loop at para ler vdrias linhas da tabela interna. Utilize r ead tabl e
para ler uma enicalinha.
describe tabl e apresentada com deralbes no pr6ximo capitulo ou at raves cia
exibicacde Field no depurador.) Quando aprimeiralinha e adicicnada na tabela
interna, a memoria ealocada daarea de rolagem do programa. A quanridade
alocada eigual ao tamanho calcul ado da tabela inr ema. Se esta quantidad e for
excedida, uma quantidade igual sera alocada e 0 processo sera repetido ate que
o total exceda 8 KB. Quando isso acontecer, as alccacces subseqaentes obter ao
pfginas de 8 KB cia area de paginac;ao.
Se voce especifi car occurs 0, todas as alocacoes serio feitas na area de
faze ndo com que uma pagina de 8 K.B seja alocada de uma s6 vez.
Se 0 t amanha caIculado da tabela interna for maier que 8 KB, 0 sistema ira
alrerar a valor de occur s p Wl zero quando a primeira. 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 insrrucac deser-tbe table depois da
primeira alccacac e exibinda 0 valor de sy- toccu. Essa insrruci o sera descries
no Dia 9, ..At ribuicoes, convers6es e ct lculcs".
lUABlLlS INTERNAS I 359
Le ndo dados a partir de vma tabela interna
.!!!
z
E
m
T
Nee utilize occurs 0 se voce esperc armazenor menos que 8 KBem
umo tobela intemo. Se nzer isso, 0 siS1ema alocar6 8 KBdo 6reo de
poginoljoo. A mem6ria ser6 desperdic;odo e a poginoljoo poder6
oumentor, resultondo emmenor desempenho.
tabela interns, teoricamente, e apena.s limitado pela quanti dade de memoria
virtual dispoajvel no servidor do aplicativo.
o sistema utiliza a clausulaoccurs apena.s como uma direrriz para deter-
minar quanta memoria deve ser alccada, N a primeira vez que uma linha e
adicionada na tabela intema, mem6ria suficiente ealocada a fun de armazenar
o numero de linhas especificado oa clausula occurs. Se voce utilizar recursos
alemda capacidadedessa memoria, mais sera alocado, conforme necessdrio.
Altemativamente, voce pode especificar occurs o. Se fizer isso, a sistema
aloca.cl paginas de mem6ria de 8KB deuma s6 vez, Entretanro, Dio hi nenhuma
vanragemem utilizar occurs 0 a nao ser pelo fate de que eurn pou co mais facil
codificar occurs 0 do que estimar 0 tamanho da tabela intema.
Para maximo des empenho e mfnimc desperdfcio de me m6ria, escolha urn
valo r occurs semelhante ao numero maximo medic de linhas na tabela. Por
exemplo, se na maioria das vezes a u bela interna for preenchida com urn
maximo de 100 Iinhas, mas de vez em quando for preen chi da com urn maximo
de 1.000 linhas, configure;' valor occurs para 100.
Noreolidode, seu consultorde Bosisconfigura um limite considerondo
c quontidcde m6ximo de mem6ric estendidc que vmc tobelo intemo
pode olocor. Se voce exceder esso quontidode, seu progrnm.o olocorc
a mem6rio privodo do processode trnbolho e este noo ser6mois copoz
de continuor seu progremo. Isso fazcom que 0 processo de trobolho
tome-se indispcnlvel pore uso por outros progremos ate que seu
progremotermine completomente 0 processomento. Poroevitor esse
problema, voce deve utilizor umo c6pio.
Dependendo da clausula occurs e do camacho da tabela intema. 0 sistema
alocari. a mem6ria da area de rolagem do programa ou cia area de do
sist ema, au das duas. Os acess as de mem6ria na area de rolagem podem ser urn
pouco mais rapidos que os acesso s na area de As aloca'ij oe s na area
de pagina'ijao tedio sempre 0 tamanho de urna pagina (normalmente 8 KB ou
8.192 byte s). .
Ha dais metodos que 0 sistema utiliza para executar alocac;oes. N o
primeiro. occurs edif erent e de zero e 0 tamanho cia tabela intema (calculado
a partir do numero de bytes por linh a de occurs 11- ) eMenor que au i gual a 8
KB. (0 numero de byt es par Iinha pode ser obtido ur ilizando a ins truc;ao
360 APHMDA EM 21 DIAl ABAPH
men sao !iterai s de inreiro, constantes ou varidvels que representam
urn mimero de linha relative. Por exemplo, 1significa a primeira linha
na tabela, 2 significa a segunda e assim por diante.
exp euma expressac 16gica que restringe as linhas que sao lidas.
representa qualquer nrimero de linhas de codigo. Essas linhas sao
execuradasuma dnicavez para cada linharecuperada cia tabela interna.
lUABEllS INTERMAS 361
Ap6s endloop, sy-subrc sera zero se quaisquer .linhas t iverem sido lidas.
Sera difer ente de zero se nenhuma linha tiver sido lida a partir cia tabela interne.
A Listagem 11.4 e expandida a partir da Listagem 11.3, executando urn
loop e escr evendo as linhas da eabelaintema.
.... Listagem 11.4 Este programo odiciono 3 linhos no tobela Interne i t do
ENTliDA,- li nho de 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 ' A' .
7 1t - f Z ,. 'XX ' .
8 append it t o it . "ecrescente a linha de eabee;alho IT ac coree IT
9 'B'.
10 1t-f2 'VY'.
11 append i t. 0 mesmo que a li nha 8
12 i t -fl ' C' .
13 append it. "e t abela lnterna agora cont bJI t res Hnnes .
14 sy-tabix sy- subre 99.
15 l oop at it. . 0 me5mo que: loop at it into i t
16 write: / sy-tabix. it-fl . it-f2.
17 endloop.
18 wr1t e: / 'done. sy-tebt x - ", sy-tabix .
19 / " sy-subrc -" , sy-subre.
As linhas sao lidas cia tabela intema, uma por vez, e col ocadas em
sequencia na area de trabalho. As linhas de ccdigo entre l oop at e endloopsao
executadas para cada linha recuperada. 0 loop termina automaticamente
quando a ultima linha e!idae a instru!jio ap6s endl oop eentao execurada.
Os seguintes pontes se aplicam:
wa deve ter a mesma esrrutura de uma linha do corpo.
wa pode set a linha de cabecalho au qualquer string de campo com a
mesma est rutura de uma linha no corpa.
Se vc cs nio especificar uma area de trabalbo, 0 sistema utilizari a linha
de cabecalhc como padrao. Por exempl o, l oop at i t into it Ie as
linhas da tab ele int ema it, colocando-as uma por vez na linha de
cabecalho it. Vma equivalence eloop at it.
Se fromnao for especifi cada, 0 padrac sera comecar a leitura a partir
da primeira linha.
Se to njo for cspecificada, 0 padrao sera ler ate ultima linha.
Os componenres de i t especificados na expressac 16gica nso devem
ser precedidos pel o nome da tabela intema. Por exernplo, where fl :::
'X' estol. correta, mas wh ere i t -fl .. I Xr causara urn 'err c de sintaxe.
exp pode ser qualquer expressjo logica. Entretanto,' 0 primeiro ope-
rando 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 incorreta e causaria urn erro
de sintaxe.
As from, to e where poderso ser misturadas, se assim for
desejado.
Dentro do loop, sy-tabi x con tern 0 numero de linba relativo do registro
atual. Par exemplo, durante 0 proces samemo do primeiro registro na tab ela
int erna, 0 valor de sy-tabi x sera 1. Du rante 0 pr ocessamento do segundo,
sy- tabix sera 2. Depois de terminado 0 loop, 0 valor de sytabix sera 0 0-
vamente configurado para seu valor original quando do infcio do loop. Se os
loops estiverem aninhados, 0 valor em sy- ta bix estacl relaciona do ao-Ioop
amal.
SAiDI
IMius!
o ccdigc na Listagem 11,4 produz esta saida:
1 A XX
2 B YY
3 C YY
done. 5y-tab; x .. 99
sy-subrc .. . 0
As 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 arbieraric .
A linha 15 comeca urn loop que Iea primeira linha da tabela interna
dcnominada it, colocando-a na linha de cabclialho it.
A linha 16 escr eve 0 valor de sy-tabix e os valor es nos component es
d>. linha de
A linha17 mar ca 0 fmal do loop. Retorna alinha 15.
. _- _... ..
-
362 I APRENDA EM21 DIAS ABAP/4
DIA 1UABEUSINTEWS 363
25 loop at f t f rOlll 2. "mesmo que: loop at it f rom 2 t o 3.
26 write: / sy-tebtx, i t - fl . It - f 2.
27 endloop.
28 skip.
29
30 l oop at it from 2 where fl 'C' .
31 write : I sy-tebtx, it-fl. it-f2 .
32 endl oop.
A Iiaha 15 enovamente executada. Dessa vez, a segunda linha ciatabela
interna ecoloca da na linha de cabecalho, sobrescreven do 0 coneeddo
ant erior.
A linha 16 eexecutada, novamente escrevenclo as valores cialinha de
cabecalho.
Na linha 17, 0 loop sera repetido ate quecodaslinhas sejarnrecuperadas
da tabela interna. Quando a Ul tima linha tiver sido Iida, ela ira parar 0
loop.
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.
r
,
I'
SliDA
o c6digo na Listagem 11.5 produz est a safda:
2 B YY
3 C YY
1 A XX
2 B YY
Embora where retorne um subcc njuntc do ccoteudc de tobelc, ume
vcrreduro total de tcbeloser6 sempre executodc.
3 C YY
2 B YY
3 C YY
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 linhas 2 e 3 satisfazem os
criterios.

'--- --1
A linha 18 pula uma linha na safda, na verdade escrevendo uma linha
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 por
todas as linhas com urn valor fl de ' C' . A linha 3 ea tinica linha
correspondente nessa faixa.
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. Sea conversao for necessaria, ela sera executadaemcada passagem
de loop e isso pcderf diminuir a velocidade do processamento de forma
consideravel. Utilize 1i keou constantes para evitar a conversso.

II
1 report ztxl105 .
2 data: begin of it occurs 3,
J fI(l).
4 f2(2),
5 end of it .
6 it-fl. 'A' .
7 it-f2 'XX'.
8 append it .
9 it-fl '8 ' .
10 1t f2 ' YY'.
11 append it .
12 ' C'.
13 append it . agora tres li nhas
14
15 loop at i t where f2 ' VY ' . "f 2 esU ccrretc, it-f2 esta rfa t nccr ret c aqui
16 write : / sy-t ebtx, it-fl , it-f2.
17 endl oop.
18 skip.
19
20 loop at it to 2. "mesrno que: loop at it from 1 to 2.
21 write: / sy- t ebt x, it-fl . it-f2.
22 endl oop.
23 skip.
24
Restr ingindo as linhcs lidos do tabela interne
Utilizando as adicoes from, t oe where, vocepodera restringir o ndmero delinhas
Iidas da tabela intema. A Listagem 11.5 eexpandida a partir cia Listagem 11.4,
executando urnloop na tabelaintema por quatro vezes. Em cada vez, ela escreve
apenas determinadas Iinhas.
Listagem 11.5 Este programo esemelhante ao da Ltstoqern 11.4, mas
,. openas algumas linhas sdo lidos
-.
-...-T" -.-..-.-. - I -I I 'I-I " I I .. I I I. __I I .I"" ..._.
364 APR EHDA EM21 DIAS ABAP /. DIA lUABELlSIHTERH<5 365
UtiJizando exit, cont i nue, sto p e check
A Tabela 11.1 ilust ra 05 efeiro s de exit, continue e check quando ut ilizadas
dentro de uma estrutura de loop at / endl oop.
Se tanto compari ng como transporting est iverem especificadas, com-
par i ng devers vir primeiro.
Ulilizanda a index
Os seguintes pont os se aplicam:
wa deve ter a mesma est rutura de uma linha do corpo.
'flOpode ser a linha de cabecalho au pode ser qualquer string de campo
corn a mesma estrutura de uma linha no corpo.
Se voce nao espe cificar uma area de trabalho, a sistema utilizarda linha
de cabecalhc como padrac. Por exemplo, r ead table it into it
uma linha d..a tabela intema it, colocando-a na linha de cabecalho ; t.
Uma inserucio equivalente eread table ; t .
append it.
append i t .
append i t .
it-f2 i t - f 4 1.
it-f2 " 1t-f4 '" 2.
1t- f2 " 1t-f4 = 3.
'B8' .
'CC'
'M'. it-f3
it-f3 =
it-f3
1 r eport ztx1106.
2 data: begin of it occurs 3.
3 fl(2) ty pe n,
4 f2 ty pe f.
5 f3(2) type c,
6 f4 type p,
7 end of it.
a wa like it.
s
10 = ' 10' .
11 1tfl ' 20'.
12 It-fl = ' 30' .
13
14 rea d table i t index 2.
15 write: / "sy- s ubr c -", sy- subrc,
16 / ' sy-tabix - ", sy-tabix.
17 / it-fl. it-f2, u-rs. i t - f4.
18
NOVO... 0 {ndice de linha de uma tabela intema corresponde 00 seu numero de linho
m.MO r relotivo. Per exemple, 0 primeiro linho no tcbelc tem 0 indice 1,0 segundo tem
o Indlce 2 e ossim por dionte. No instruc;Oo read table, se index i esfiver especificcdc,
o sistema ir6 recuperar 0 t o linho do tobe 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 Listagem11.6).
ListCi gem 11.6 A odi<;ao ; ndex no instru<;ao read tabl e locclizo uma .
. unice linhe por seu numero de linho relativo
Efeito
ext t Termino 0 loop imediotomente. 0 processamento continuo no
lnstruccc imediatomente op6s endl oop.
continue Voi imediatomente pcrc'c endl oop, desviondo fodos as
instrUl; 6es seguintes dentro do loop.Apr6ximo linha erefomodo do
tobelo intemo e a processomento continue a parti r do inld o do
loop. Se na o existirem mois linhos a serem recuperados, 0
processomento continuar6 no pri meiro instruc;oo ap6s endl oop.
check exp Se exp for verdcdelrc, 0 processomento ccntlnucrc como se essa
instruc;Cio ndo flvesse side executodc. Se exp for folso, seu efeito ser6
o mesmo de cont inue.
onde:
it e0 nome de uma tabela int erna.
'flO e0 nome da area de tr abalho.
i eurn lit eral de inteiro, constant e ou verisvel que representa urn
mime ro de linha relative . Pa r exempl o, 1 signi fica a primeira linha na
t abela, 2 significa a segunda e assim por diant e.
keyexp euma expressjio que representa urn valor a ser localizado.
cmpexp euma expressao de comparacao que represent a urn test e a ser
executado na linha locali zada.
texp euma expr essso que represent a as campos a serem transportados
para a area de trabalho depois que urna linha elocalizada.
Lenda uma unicc linha utilizanda a read tabl e
Para localizar e ler uma unica linha de uma tabela interna, utilize read t abl e.
Ela Ie uma unica linha que corresponda com os criterios especfficos e a coloca
em uma area de trabalho.
Sinlaxe da instruc;oo re ad t ab1e
A seguir, vejaa sintaxe da instrucio r ead tabl e.
read t abl e it (i nt o wa] (i ndex 'f ] with key keyexp (binary sea r ch] ]
[comparing cmpexp] (transpor ting texp].
Tabefa 11.1 lnstrucees que podem alteror a processa mento de loop para tobelos
inter nes
I I I - w__ w w w -
366 APiE' OA EM' 1 DIAl ABAPI4
0lA1UABEUS lh'1IIHAS 367
Utilizanda a adi<;aa wi t h key
Se w1 th key keyexp for especificada, 0 sistema localizard uma linha que corres-
panda com a. expresssc keye 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 ser recuperada. Se mais de uma linha
corres po nder com a expressao, a primeira localizada (a que tiver a menor
Indice) sera ret om ada.
19 read table it i nto wa index 1.
20 wr ite: I .
21 / 'sy-subre -" , sy- subrc ,
22 I "sy- ta bt x - ", sy- ta bh..
23 / it-fl . it-f2 , ft - f 3. it f4.
24 / wa-fl , wa-f2 . ..a- f 3. wa-14.
21
. 26 re ad table i t i ndex 4.
: '27 wri t e: I .
28 I ' s1-subre - ", sy-suerc,
29 I ' sy- tlbix -", sy-tabi x.
30 / i t -fl . it-f2, u -rs, it-14,
31 / wa-fl . wa- f2 a- f 3. wa-t4. Expn:ssao key . Efeito
A Tabela 11.3 descreve as valores de sy-subrc e sy- tabix depoi s de
executada read table it with key
locol izo 0 primeiro linhc no tobela intemo em que 0
componente c1tern 0 vola r vi e 0 componente c2 tern
o vclc r v2 e ossim por dionte. vi eo um literal, ccnstcnte
ou vcrtovel.
o mesmo que 0 a nterior, pcrem f1 eumo voricvel que
cc ntem 0 nome do componente 0 ser comporod o. 0
volor em fl deve ester em letro mcicscolc . Se f1 estiver
em bronco, a ccmpcrocdc sere ignorodo.
waeume area de trnbe lho identico em estruture a urno
linho do tobelo inferno. Esso expresseo key localizo o
primeiro Iinha no tobelo intemo exotcmente iguol 00
cc ntecdc de wa. as espccos em bronco sao tratodos
como volores a sere m loca lizodos; eles n60
correspondem Q quo lquer outro valor diferente de
espcccs em bronco.
waeume area de trobo lho id!ntico au rnenor que Q
estrutura do ta belo Interne. Se wafiver compos n, os
campos de waccrrescooderee com os primeiros compos
n de umo linha do tobela intemo. Esso expressOokey
lccclac a primeira bnhc no tobefa inferno, em que os
primeiros compos n correspondem com 0 conteudc de
wa. Os espoc;osem bronco sOotrotodos como velores c
serem locolizodos; eles noo correspondem 0 quolquer
outro vclor dtlerente de espoc;osem bronco.
c1 vi c2 v2 . .
No verseo 4, as conversees necessaries poro cs tr&s primeiros 8)(-
pressOes key no Tabelo 11.2 sOo executodas no mesme ordem de
precedenclc des utili zodcs poro os expressoes 16gicas. Em sistemos
onteriores, os ccnversc es ercm executodos convertendo 0 valor a
direita paro 0 tipo de dado e cornprimento do componente aesquema.
w.
As linhas de 2 a 7 definem uma tabela inrerna com uma linha de
cabecalho.
A linha8 define uma area de trahalho wa igual alinha de cabecalho de
it.
As linhas de 10 a 12 acrescentam [reSlinhas a tabela intema.
A linha 141. a segunda linha. Ja que nenhuma area de trabalho est.
especificada, 0 cont eudo ecolocado nalinha de cabecalho. Depois cia
Ieit ura, sy- subrc sera configurada como zero. Is50 indica que a linha
existia e que sy-tebt x foi configurada com 0 mimero cia linha.
A linha 19 Iea linha 1na 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 econfigurada como 4. sy-tab1x como a e a
linha de cabecalho e a area de trabalho wa fiearn inalteradas.
o e6digo na Listagem 11.6 produz esta safda:
SAiOA
sy-s ubrc 0
sy-t ebt x 2
(tI) vi (12) v2
20 8B 2
,
sy-s ubrc 0
sy- tll b1x
20 2 8B 2 . w.
10 1 AA 1
sy-s ubrc
sy- ta bt x 0
20 2 8B 2
10 1 AA 1
III I .. II I ..
_
368 HRENO' eM 21 01" "'PH l UlSEUS INlIiNlS 369
Tabela 11.3 Volores atribuidos a sy-subrc e sy-t abi x
Resultodo
le ituro bem-svcedtdc (uma linho
correspondente foi locolizado)
Leituro molsucedido, mas
umo Iinho com umo key moior que
umo solicitodoexiste
Leitcrc molsucedido e nenhymo
linha foi lccchrc dc com umo key moior
sy-s ubrc
o
4
8
sy-t abi x
Indice do
linha correspondente
Indice do linho
com 0 pr6ximo
key meier
ncmerc de linhos
em1t + l
32 clear wZ.
33 - '10' . w2-f3 .. ' M' . .. w2-f4 .. 1.
34 T'l!ad table it with key - . '112 .
35 write : t,
36 I ' s1- suhr e - ", sy-subre,
37 / . ', 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: t ,
43 / "sy-subrc - ", sy-subre,
44 / ' sy- t abfx -'. sy.tabix.
45 I it-f2, u-n. it-f4.
.,
sy-suarc .. 0
sy- tabix .. 2
30 3 CC
20 Z 88
51-suhre .. 0
sy-tabh ..
10 loA
sy-subrc .. 0
sy-tabix .. 2
10 loA
A Listagem 11.7 ilustra 0 usa de express6es key.
Listagem 11.7 Utilizondo uma expressdo key, voce pede procure r por
urne linhc espeoftccndo um valor em vez de urn Indice
3
2
o c6digo no Listagem 11.7 produz esta safda:
sy-subre .. a
sy-tab'l x .. 3
30 3ee 3
As linhas de 2 a 7 definem 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 cornpriment o inteirc
da linhade cabecalho it.
As linhas de 15 a 17 acrescentam tres linhas atabela intema.
A linha 19 Ie uma linha com 0 valor' 30' em f1 e 3 em f 2. Sy-suorc 6
configurada como zero a funde indicar que uma linha correspondente
foi localizada e sy-tabix econfigurada com 0 rnimero da linha. Ja que
nenhuma area de trabalho esta especificada, 0 conteudo ecolocado na
Iinha de cabecalho.
A liclIa 25 procura por uma linha com urn valor 2 na coluna f2. A linha
Clocalizad.a e ecoiocada na area de trabalho w2. 0 conteudo da linha
de cabecalho pc:rmanece inalterado depois da leitura.
AHlllSE

"deve ester em l etra maiiiscula
' M ' . 1t-f2" it-f4 - 1. append it .
' BB'. it-f2" it-f4 " 2. apPl!nd it .
'ec'. it -f2 - it-f4 - 3. append i t.
it-O II
i t-f 3 "
i t -f3 ..
1 report ztx l107.
2 data: be;;n of 1t occurs 3,
3 fl(2) type n,
4 f2 type t ,
5 f3(2) type r ,
6 f4 type p,
1 end of it ,
8 begin of wl,
9 fl 1ik!! f t -fl ,
10 f2 11ke u -rz.
11 end of wI,
12 '112 l1ke it ,
13 f(8).
14
15 it-fl .. ' 10'.
16 it-fl II ' 20' .
11it-fl .. ' 3D'.
lS
19 read table it with key fl II '30' f 2 II 3.
20 write: / 'sy.subre - ", sy-subrc,
21 / ' sy-tabix - ", sy- t ebtx,
22 / it-fl, it-f2 , it -n. it- f4 .
23
24 f .. ' F2' .
25 read table it into w2 with. key (f ) .. 2.
26 write: t ,
21 I ' sy- subre ..', sy- subre ,
28 I ' sy- t abb - ", sy-tebtx,
29 I i t - fl , it-f2, it-f3, it-f4.
30 I w2-fl . w2- f2. w2-fJ , w2-f4.
31

JI' 1J
.. ......
370 APiEHDA EM11 DIAl ABAP/! DIA l U ABEUS IKTERNIS 371
Nenhuma
NOVO.... Se nem urn 1ndex nem uma expresseo key esti....erern espedficados, a tobelo
TERMO ser6 ....orrida desde 0 inlcic quanta a uma linha que correspondo com Defouh
Key edstente no ljnho de ccbecclho. Default Key eumo key imogin6rio co mpost o de todos
a s compos de ccrc ctere no linha de ca bec;olho (tipos c, d, t , n e xl. Um va lor em bronco
em uma coluna Default Key faz com que todos 05 vclores noquelo cclunc sejcm
correspondentes. Depois, as vclores de sy - subrc e sy -tebt x scoconfigurodos do mesmo
monei ro como normolment e oeorre depois de uma read tabl e utilizondo umo expressoc
key.
append it.
append it .
append 1t.
it-f2 - it-f4 l.
tt-fz it-f4 2.
it-f2 - i t-f4 '" 3.
' BB'
' CC'.
' M' .
2
2 f3- B8 f4- 2

3
0 fl - M f4 "' 0
it-f3 -
1t -13

o ccdigc na Listagem 11.8 produz esta safda:
sy-suhrc 0
sy-tahi x -
fl 20 ra-
sy-s'ubrc -
sy-tab1x -
fl 30 f2=
As linhas de 2 a 7 defmern uma t abe1a interna com uma linha de
cabec;illlo. F1 e f3 sio as opos de dados de caract ere e assim formam
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 ascendent e.
A Listagem 11.8 fomece urn exemplo.
Ustagem 11.8 Este programa locali ze uma linha com os mesmos
volores dos compos Default Key no Iinha de ccbecclho. asespocos em
bronco em um compo Default Key fczem com que uma coluna seja
ig no rada .
1 report ztxllOS.
2 data : begi n of it occurs 3.
3 fl(2) type n, de cerect er e - par t! de default key
4 (2 type f. campo nltlll(!r1 co - nao (! part! de default key
5 f3(2) type c. campo de carac t ere - parte de default key
6 f4 type p, campo nLnt! ri co - nlo f: part e de default key
1 end of it .
"8
9 i t - fl '10' .
10 it- fl ' 20' .
11 i t - fl ' 30'.
12
13 sort it by fl f 3.
14 clear it.
15 i t(2) ' ". itf3 ' BB'.
16 N! ad tab le it bfnary search.
17 write: I ' 5y-subre -" , sy-subre.
18 I -" , sy-tabb.
19 I n.. ", it-fl. 'fZ"' . it-f2. ' f3.. 1t -f3. 'f4-' . it-f4.
20
21 cl ear i t .
22 it-fl - ' 30' . it-f3 - 'M' .
23 read tab le it binary search.
24 write : I ' sy- subrc - ' , sy-s ubrc,
25 / '-sy-tahix - ", sy-tabix.
26 I ' fl - ' , itfl. 'f2-' . u-ra. 'f3- '. u-ra, ' 14. ', it-f4.

Some nte espoc;os em bronco em um ca mpo Defouh Key ccrrespcn-
deriio com todos os valores.l sso significo que voce nCio pode r6 eliminor
os tipos d, t , n e x e abter umo correspondenco - isso for6 com que
as mesmos sejom configurodos como zeros e n60 como espoc;os em
bronco . Voce deve espOl;OS em bronco pora dentro desses
compos a fim de que eles ca rrespondom. lsso ped e se rfeito utilizondo
uma string de compo (veia 0 exemplo seguinte), utilizondo um sub-
campo au uti[izondo um sfmbolo de compo (consulte a sec;oo onterior
quanto a simbolos de compo pa ra abter mois informol;Oes).
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 int eira de it. 0 conteado cia linha corr espondence 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 pr6xima secac).
A linha 41 procure por uma linha com as valores especificados em
t odos as campos de wI. Com essa sintaxe, wI pode sec menor que it.
o comeodo da linha corr espondente ecolocado na linha de cabecalho.
Co mo dito anteriormente, as valores em br aneo sao t ratados como
valores a serem localizados e correspondem apenas com eles mesmos .
Utilizando a bi nary search
Sempre que utilizar a adiliao with key, voce tambem devers utiliz.ar a
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
uma tab ela de banco de dados arraves de urn Indice. De .ant emao, a tabela deve
ser classificada em ordem ascendente pelos componentes especificados na
expressao key (veja a seguinre sobre a
(Culd;do


-'_...
..-y y ..- ..- ..- -. -Y-:Jr-'" .. .
372 APIEHDA EM 21 DIAl ABAPI' IUABEill INTERNA5 373
A Listagem 11.9 fomece exernplos.
t t -f2 it-f4 1. append it .
i t f2 ft - f4 2. append it.
it -f2 1t -f 4 3 . append it .
' BB' .
'CC'
'M' .
Depois de locolizodo umo llnbc, 0 vclor de fl no linho locolizoda e
compcrado com 0 volar de f1 no 6reo de trobolho. Entao 0 vclcr
de f2 ecomporodo com 0 vclc r de f2 no 6rec de trobolho e ossim
par dionte. Se todos forem iguois, sy-subrc ser6 configurodo como
O. Se algum for dtlerente, sy- s ubr c sem configurodo como 2.
Icdcs cs compos sdc compo rados , como descritc para f1 f2 . . . .
Nenhum compo e compo rodo. Esse e 0 pcdreo.
i t -f3
itf3
it-f3 '"
Listagem 11.9 A odit;co comparing ir6 configuror 0 va lor de sy-subrc
como 2 sempre que: as ca mpos forem diferentes .
fI f2 . .
all f ields
no fi el ds
Cmpe.xp
1 report ztxl109.
2 data: begin of it occurs 3.
3 fl(2) t ype n,
4 f 2 type t ,
5 f 3(2) t ype c.
6 f4 t ype p,
7 end of it , .
8 wa 11ke
9
10 it-fl ... ' 10' .
11 it- fl ' 20' .
12 ft -fl z ' 3D' .
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,
17 / it-fl. 1t -f2. it- f3, tt-f4.
18
19 r ead tabl e it i nto wa index 1 compar ing f 2 f4.
20 ...rite: I .
21 / "sy-sucr c - ", sv- subr c,
22 I "sy-tebt x . ', sy- t abix ,
23 / i t - fl, i t-f2. it-f3. 1t. f4.
24 I wa- fl , wa-f2. wa-f3 . wa-f4.
25
26it wa.
27 reed tabl e it with key f3 ' M' cOlIIpar ing all f1elds.
28 write: I ,
29 / ' sy- subrt: .'. sy- subrt ,
30 / ' sy- ta bi x . ' , sy- ta bilt ,
31 I it-fl . it-f2 , it-f3 . it-f4 .
32 / wa-fl, wa-f2, wa-fl, wa-f4.
A read table pede openos ser utilizoda para 0 Ielturc de
tobelos Internes. Nee funciono comtabelos de bonco de dodos. Utilize
em seu lugar sel ect s ing le.
Utiliza ndo a compa ri n9
comparing detecta as diferencas entre 0ccnteudo da area de trabalho e de urna
linha que foi loca.lizada antes de ser colocada na area de trabalho. Utilize-o
juntamente com index au with key. Se, depois de localiz.ada uma linha, 0
coneee dc da Irea de trahalho for 0 mesmo da linha localizada, sy-subr 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 descreve as valores para a expressao de (cmpexp
na sintaxe para read table).
Alinha14limpa0 conteudo cialinhadecabecalho, configurando todos
as componentes como espacos em branco 'e zeros. f1 edo tipo n e,
assim sendo, econfigurado como zeros.
Utilizando urn subcampo, a linha 15 fOflia espaljQs em branco para a
campofl, de modo que correspoadam com todos as valcres. a outre
campo Default Key (f3) e configurado como ' BB'.
' A linha 16 executa uma pesquisa biniria quanta a uma linha que
contenha ' B8
1
no componente ra
Depois da pesquisa, a safda mos trari que sy- subrc foi configurada
como zero. indicando que umalinha, ccrrespondentecom as criterios,
foi localizada. Sy-tabi x contem 2, au seja, 0 numero de linha relative
cia linha corr espo ndenre. A linha de cabecalho foi preenchi da com 0
conteddo da linha correspondence e foi escri ta,
A linha21 limpa a linha de cabecalho.
A linha 22 coloca urn '30'e ' AA' nos campos Default Key fl e f3.
A linha 23 executa uma pesquisa biriiria quant a a f1 .. '30 ' e f 3
' AA' . 0 valor de ret orno de sy-subrc e4. Isso indica. que uma linha
correspondente nao foi encont rada e sy- ta bi x cont em 3 - 0 ndmero
de linhas na tabela. a conteudo da linha de cabecalho permanece
inalterado, au seja da mesma forma como estava na linha 22.
Nesse exemplo, a tabela interna cont em apenas algumas linhas, sendo
assim bi nary search naoproduziria uma melhora mensuravelno desempenho.
Poi apenas inclujda para ilustrar 0 modo como deve ser utilizada.
lI!!!r Y .. _ 1J!II'
I
-----
!!' !!! -- -
314 I 'PREMD' EM21 DIAS ,UP/'
315
Uliliza ndo a transporting
transporti ng afeca 0 modo como campos sao movidos da linha localizada para
a area de trabalho, Se for especificado, somente os valores dos component es
especificados serio movidos para a area de trabalbo . Se urna linha Ili o for
localizada, transporting nao fara nada.
A Tabela 11.5 descreve as valores pan a expressac de cc mparaci c (t exp
na sintaxe para read table) .
Depois de lccclbcdc umo linha , 0 valor de fl no linho iccclhcdc e
sobreposto 00 vclcr de fl no c rec de trobalho. Em seguida, 0 valor
de f2 esobre posta 00 valor de f2 no 6reo de trnbo lho e assim por
dionte. Somente os componenfes identificodos op6s transporti ng
serdo movldcs. Ta dos os c ufros componentes permcneceroc
Inc iterodcs.
Todos os compos sdo tronsportodos. Esse e0 pcdrec e tern 0
mesmo efeito de ignore r a ocliC;do t ranspor t i ng.
Nenhum compo it tronsportodo. Nenhum des compos no creo de
t rc bclhc ecltercdc.

all f i el ds
f1 12 .. .
no f ields
Cmpexp
1 ztxlllD. _. .
2 dat a: begin of it occurs 3,
3 n(2) type n,
4 f2 type t ,
5 f3 (2) type c,
6 f4 type p,
7 end of it.
a
9 .. '4 0' . it-f3 .. ' 00'. 1t - f 2 .. itef4 .. 4. append it.
10 i t -fl .. '20' . i t - f 3" ' BB'. i t - f 2 " it-f4" 2. append it.
u
12 sort it by fl .
13 do 5 t tees.
14 i t -fl .. sy- i ndex ... 10.
15 itef3 'XX' .
16 it-f2 it- f 4 = sy- tndex,
17 read table i t
18 with key fl .. i t -fl
19 binary search
20 t ransporting no fields.
21 t f sr -subrc <I>D.
22 . ins ert i t i ndex sy- t ebt x,
23 endif.
24 enddo.
25
Essa sera uril,sevoce quiser apenas testa! aexistencia de uma linha
em uma tabela interna sem alterar 0 conteddc cia linha de cabecalho, Por
exemplo, ant es de acrescent ar uma linha, voce pcdera querer determiner se a
1inha ja existe na tabel a interna. A Listagem 11. 10 fomeee urn exemplo.
MlADAIItrr.. Listagem 11 .1 0 A mo ne iro mo is ejlclente de lnserir linhc s em umo
,. tcbelc interne clcssrhccdc mantendo a orde m de c1 ossificac;oa.
Tabela 11.5 Formos de expressao de tronsporte no instruc;oo read table
2
2
1
2
M
M
2 BB
I M
o
2 BB
2
o c6d.igo na Listagem 11.9 produz esta saida:
sv-s ubrc .. 2
sy-tab1x ..
20
sy-subrt: ,.
sy-hbix ..
2D.
10
sy-subrc ..
sy-tab1x ..
10
10
Na linha 14, index 2 [ocaliza a linba 2 em it. Antes de a linba ser
copiadapara alinha de cabecalhc, 0 valorde fl no corpo ecornparado
com 0 valor de fl na linha de cabecalho. Nesse case, a linha de
. cabecalho ainda iracanter 3 (valor inalterado depois de ser acrescen-
tada a ultima linha) e a linha localizada iraconter urn2. Sao diferentes,
eedc sy-subrc sed configurada como 2. 0 cocceadc da linha tabela
interna eeneto copiado para a linhade cabecalho e esobreposto no
conteedo existente.
N. linha 19" Iinha 1 eIocalizada. Os valores de f2e 14na Iinha 1 do
corposaocomparadoscomas ccmponentes cia linhadecabecalhocom
o mesmo nome. A linha de cabecalho contern a linha 2 (recuperada
pela instrulSao 14) e, panamo, sao diferemes. Como resultado, sy-
subre econfigurada como 2:
A linha 26 t ransfere 0 cont eddo 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 pode ser vista pelos valores de sy- subr c e
sy- tabix na safda. A linha 1 ja esta na linha de cabecalho, portanto
todos os campos sao correspondidos emvalore sy-subrc econfigurada
como O.

376 I "lENDA EM 21 DIAS ABAPH IhTABElAS lNTERltAS 377
Classificando 0 conteudo de wooo lobela interno
26 loop at H .
27 I it-fl . u-ra, it-f3 . 1t - f 4.
28 I!ndloop.
Para classificar a conteado de uma tabela int erns, utilize ainstrucao sor t. As linhas
podem ser c1assifieadas par urna ou mais colunas em ordern ascendente ou
descendente. A pr6pria sequencia de pode tambern ser modificada.
Os seguintes pontos se aplicam:
ascend;ng ea ordem padrao de classificacao.
Se descend; ng aparecer depois de sort e antes de qualquer nome de
ccmpoaente, ele se tornacl 0 padrac e sera. aplicado em rodos os
componentes . Esse padrio pede ser anulado em urn componente
individual ao se especificarascend;ogdepois do nome do componente.
Se nenhum componente for especificado, a t abela interne sera classi-
ficada pelos campos Default Key(todos campos de tipo c, 0, P, d e t )
em ordem ascendecee.
A ordem de classificaljao para linhas com 0 mesmc valor nao eprevisivel.
As linhas que tern 0 mesmc valor em uma coluna classificada podem aparecer
em qualquer ordem depois da A Listagem11.11 mostra exemplos
da instrucao sort e tambem ilustra esee ponto.
1 report ztxllll .
2 data : begi n of. it occurs 5.
3 i 11ke sy- t ndex,
4 t,
5 end of it.
6 alpha.(5) value ' eBARB' .
7
S do 5 t 1mes varyi ng it-t from a. l pha+Onext 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.
"23 ski p.
24 sort it by t .
25 loop at it .
26 write : / t t -t , it-t.
27 endl oop.
28
29 skip .
ENTUDAIIltr.. Li st ag em 11 .11 Utilize0 instrut;60 sort para reorganizer as linhas de
uma tobelo intemo
o c6digo DOl Listagem 11.10 produz esta safda:
10 IXX 1
20 lBB 2
30 3 XX 3
4004
SO 5XX 5
As linhas 9 e 10 adicionam duas linhas em i t. (Elas estfo propositada-
mente 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 bi nary search.
A linha 13 executa urn loop eineovezes . Cada vez que ocorre urn loop)
ela eria uma nova linha para it e a ccloca na linha de cabecalho (linhas
14, 15 . 16). "
As linhas 17 e 21 determinam se urn.. linha ja exis re com 0 mes mo
valor de fl exist ente na linha de cabecalho. Se tal linha nao for
localizsda, sy-subrc sera configurada como diferent e de zero e sy-
t abi x sera configurada como a Indi ce da linha com 0 pr6ximo valor
mais alto au para 0 rnimero de linhas na tabela interna mais 1.
A linha 22 insere a nova linha ant es da linha indicada por sy- tebt x.
Isso mantem a ordem atual de classificacao.
Sinloxe do sort
2! A segui r, veja a sintaxe da instrucao sort .
Z sort it [descending] [as t ext] [by /1 [ascend1ng ldescend1ng] [lIS text] /2 .. .] .
onde:
m it eo nome de uma tabela int erna.
T 11 e /2 sao os compcnentes de i t.
. . . repres enta qualquer numerc de names de campo opcionalmente
seguidos por ascending) descend ing, e/ ou as text.

378 I APREND. E. 21 DIAS .8lPH DlA 11< TABELIS UCTElHAS I 379
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 1t by t des cendi ng t
37 --meSSJO que: sort i t descend i ng by t 'I as cendin g.
38 l oop at i t .
39 write: l i t -i. it- t o
40 endloop.
41
42 skip.
43 sort it.
44 *mesmo que: sort i t by t.
45 l oop at 1t .
46 wri t e : I i t - t o
47 endlo op.
Ordem de clcsslficcceo e a as text
IOYO Ill... Dentro do sistema aperocionol, cedo carodere que vod ve na tela e repre-
rnMO sentodo por um vclor numer icc. Duronfe umc clossificoc;oo, 0 valor ncmertcc
do ccrcctere determino 0 ordem resultcnte. Pe r exernplc, quondo um progroma AW/4
eexecutodo em 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 seqOencia de d ossificoC;ao. Esso seqOAncia de
classificoC;co edenominodo sequencia de c1ossificoC;60 bin6rio.
As linhas de 2"a 5 definem urna tabela. interna com dais componentes:
t e t . Aclausulaoccurs e5porque a tabelaintemasera. preenchidacom
cinco linhas.
A linha 6 define alp ha como uma variavel do tipo c, comprimento 5,
e the d. urn valor padrao.
Aslinhas de 8a 11acrescent am cinco linhas i tabela intema. Cada urna
iraconter urna letra de al pha e 0 valor de sy-t ndex quando a linha for
acrescentada.
As linhas de 13 a 15 escrevem 0 conteddo da eabela interna. 0 mimero
cia linha de sy-tebt x aparece aesquerda cia safda. As linhas cia tabela
intema estao em sua ordem original, sendo assim os valores de sy- t n-
dex e sy-tabi x sao correspondentes.
A linha 18 reorganizaas linhas, de modo que os va.lores de t fiquem
em ordem ascendente.
Na linha 24, a eabela interna e classificada novamente utilizando a
mesma instrucio. Observe que a ordem relativadasIinhas 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
sort. A ordem cia linhas que contem valores idecucos nac e
conservada durante urna
Na linha -30, a t abela interna classificaclapor t em ordem ascendenre
e, em seguida, por i em ordem ascen dent e.
N a linha36, a tabela interna Cclassificada por t em ordemdescendence
e, em seguida, par i em ordem ascendente.
A linha 37 mostra uma sintaxe alternariva que atinge a mesmo efeiro
da Iinhe 36. Nessa instrucio, colocando descending depois de it faz
com 0 mesmo fique sendc 0 padrao. 0 componente t e, portanto ,
c1assificado em ordem descendente e no componente t . 0 padrf o e
anul ado com a ascendi ng.
o A linha 43 classifica a tabelaintern. 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 apenas
par t.
INi llS!
o c6digo na List agem 11.11 produz est a saida:
1 C
, ,
3 A
4 ,
S ,
A
,
,
,
C
3 A
S ,
.,
, ,
1 C
A
,
,
,
C
1 C
, ,
.,
S ,
3 A
A
,
,
,
C
SAIDI
380 I APlEN DA EM 21 DIAl AUP"
sy-l angu- 0
H19!lle
Hoffma n
HOll man
Hubble
As linhas de 6 a 9 adieionam quatro linhas na tabel a 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 aacentuacao em alemao. Sy-1angu econfigurada
como De a conj umo de caracteres do idioma aleruao, bern como as
sequencias de inrercalacio sao urili zados desse pon te em diant e no
programa.
A linha 20 utiliza sort com a as t ext depcis do nome da tabela
interna. Isso faz com que as text se aplique a todos as component es
do tipo C. Na saida, 0 e 0 aparecem junt os.
o c6digo na Listagem 11.12 produz est a safda:
sy- l angu- E
H19g1e
Hoffman
Hubbl e
HOl lilian
9 tt-t ' Nubbl e ' . append i t.
10
11 write: I 'sy-l angu-' , sy-langu.
12 sor t 1t. "cla ssi 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 skip .
18 set loc al e la nguage '0 '. "Equival ent e I em alemlo
19 wri te: I ' sy- la ngu- ' , sy- bngu.
20 sort it as text. "as te xt aqui se ap11ca a todos os componentes de t 1po c
21 *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.

,.
append it.
append it.
.Ippend i t.
'Niggle' .
' HoffmanI.
'H6l1man'
as seguintes ponros se aplicam para a as text:
Pode apenas ser utilizado com campos de tipo c.
Pode ser especifieado depois de sort e antes de quaisque r nomes de
componente. Ne sse case, se apliea a todos as componentes de tipo c
utilizados pela classificafjao.
Pede ser especificado depois de urn nome de componente individual .
Nesse case, se aplica somente aquele componente.
A Listagem 11.12 fomeee urn exemplo.
Lisfagem 11.12 Adassificoc;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
7 f t-t
8 f t-t
Quando uma linguagem contem caracteres acenruados, hi urn valor
nurnerico at ribuldc para representar cada forma acenruada de urn caractere.
Por exemplo, 0 e 0 (0 com urn trema) sao diferentes e, ponanto, caracteres
independenres, cada urn com urn valor numerico individual. (Em ASCII, 0
valor de 5 e0 decimal 246.) Quando voce classifies dados contendo caracteres
acent uados, as formas acentuadas devem aparecer com as formas njio acen-
tuadas. 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 uma maneira de alterar a ordem
de classifica!rio, de modo que as caracteres acenruados sejam corretamente
classificados.
A adiliao as text modifica a ordem de classificacao, de modo que as
caracteres acentuados sejam corretamenre 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.
NOVO... 0 ambiente de texfo eum eonjunto de cccccerrsnccs cssccicdcs Clinguogem
illMO " 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 ambiente de textoem 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 intercoloc;Oo para a
linguogemescecffccdc.

..-....- .... .- . .-......-...... ----- - -
-
- - - -.. -
382 I " PUND.. EM21 OIAS ABAP/4
As seqiiencias de classificacic variamde acordo com as plataformas. Ao
transportar de urn sistema operacional pan outre, as unicas sequencias garan-
tidas de classificacac saoA-Z, a-z e 0-9, mas necessariamente nessaordem.
DlA l1:TABEUS lNIDHAS I 383
Nee util ize occurs 0 para tobelos infernos '
com menos de BKB. lssoresulta em
superclccccec de memoria e diminui 0
desempenhc.
L--.:- ---J_
Utilize a adit;aa index no instrut;oo
read tab le , sempre que passive!. Eo
maneira mois ropldcde localizer uma
enicc linha.
IFa, a
Utilize a odio bi nary search no
instru o read table. Elo c vmentcrc
muito0 desempenho do pesquiso.
Depois de cicssificcr as text, n60 utilize read table com a odilWoo
bina ry se arch. As linhos ndc serec clcssftccdcs em ordem bin6rio,
sendo csslm umo pesqulsc bin6ria ter6 resultodos lncorretos. Pora
utilizor a pesquiso bin6rio com b ito, consuhe a docomentccec de
pclc vrc-chove do ABAP/4 sabre 0 instru<;oo convert ; "to sortabl e
code.

1 report zt xl1l3 .
2 t ypes: begin of my_type,
3 fl .
4 f2 .
5 end of my_type.
6 t _1t t ype. lIy_ty pe occurs ID.
7 data i t t ype t_1t.
Utilize a instrucao r ead table para [ocalizar urna unicaIinhana tabela
interna. Utilizando a adi!;ao inde x, voce pa den. localizar uma unica
linha peio numero de linha relative . Essa e.a maneir a mais eficiente de .
localizar uma linha. Utilizando a adi !;aowit h key, vocepoderf localizar
uma linha especificandoumvalor a ser localizado. compari ngderermina
se os valores na area de tra balho sac diferenees dos valores na linha
localizada, transporti ng impede atribuicoes desnecessarias au
.tribui.6es indesejadas da linha localizadapara a :ireade trabalho.
A sort classifica uma tabela interna por componentes idea-
tificados. Senenhum componente t iver urnnome, a tabela sed classi-
ficada por seus campos Defaul t Key (t ipos c, n, o, t ex).
Em al gu ns pr cgramas, vi urn tipo definido pelo usudrio que tern
uma clausula occurs. 0 tipo eentdo utilizado para definir um
tip o de tabela interna e subsequentemente uma tabela intema,
como a apresentada na Listagem 11.13. Porque isso efcito dessa
maneira? Nac se pode sempre definir a tabela inte rna com a
dat a? Qual e 0 motivo da da
types?
o
Lista ge m 11.1 3 Definindo umc tobelo Interne com urn tipo definido
pelo usu6rio
P&R

Depois do dassificoc;ao, voce pede exduir 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.
Uma ta bela interna euma de linhas armazenadas na RAM no
servidor do aplicatlvo. Consiste em uma linha de cabecalho e urn
corpo. A linha de cabecalho ecpcional. A linha de cabecalho ea :irea
de trabalho impHcita da tabela interna.
A existencia da clausula occurs cri a uma tabela interna, Ela eutilizada
como uma diretriz pan 0 sistema alocar mem6ria. Ela nao limita 0
numero de linhas qu e pede adici onar em uma tabela interna.
Utilize a instrucao l oop at para recuperar mdlti plas linhas de uma
tabela interns. Cada linha ecolocada na linha de cabecalho ou em uma
area de trabalho explfcita, uma por vez. Utilize from, to e where para
especificar as linhas a serem reto madas. Dentro do loop, sy-tebt xiri
center 0 mimer o de linha relative com base em 1. Depois de endl cop,
sy-subrc sed zero se quaisquer Jinhas riverem side processadas no
loop.
Dentro de urn loop, a andamento do processamento poderf ser
alterado por uma inStru!;aO exit, cont i nue ou check. Exit termina 0
loop e continua com a instru!;ao ap6s endloop . Continue desvia as
ins tru!;6es remanescent es do loop e come!;a imediatamente a pr6x.ima
itera!;ao. Check, dOl mesma forma que continue, tambem come!;a uma
nova it era!;ao, mas fara. isso so men te quando sua expressao logica for
fa lse.
Resumo
--- --
384 I "PRENO" EM 71 Dl"S UAPI4 OIAll :TAI!8.ASJNTERHAS I 385

Nac hi nenhuma vantagem em utilizar os ti pos de tabela in-
terns da mane ira mostrada na Listagem 11.13. Os ripos serao
a teis somente se vcce os uri lizar para definir mais de urn obj eto
de dados. Nessa li stagem, apenas urn objeto de dados edefi nido
do ripo t_it. Seria mais simples, nesse caso, tirar as instrucdes
type s e criar toda a definicac utilizando data.
Teoricamente, os tipos serdo uteis se voce precisar definir mul ti-
ples cbjer cs de dados que sejam iguais. A List agern 11.14 most ra
tres maneiras de definir multiplas tabelas internas: utilizan do
apenas data (clades), ut ilizando t ypes e utilizando uma estrutura
doDDIC.
Listagem 11.14 Defl nir multiples tcbelcs internes com t ypes simplificerO
definir;oes
disponlvel para reutilizar;oo denf ro de multiplos progromas. Em minho oplnlcc, utilizor
uma estrofvrc sere bem melhor do que utilizer umo definir;oo types.
Exi ste apenas uma coisa que urn tipo pode fazer e uma estrurura nao: ele
pe de canter a uma tabela int ema aninhada. Somente nesse caso
eu utilizaria urn tipo. Em rodos os outros cases , uma estrutura data begi n of
ou l t ke a no DDIC seria ideal.
Workshop
o Workshop oferece duas maneiras de voce verificar 0 que apr endeu nesre
capitulo. A Teste oferece perguntas para ajudar a solidificar seu ent endi -
menta do coctecdo abordado e a Exercfcio permire que voce pratique 0
que apreadeu. Voce pode encont rar as respostas as perguntas do teste e ao
exercfcios no Apecdice B, "Respostas as perguctas e aos exercfcios".
i
l
r

1 report ztxl113.
,
3 Defi ne 3 tabelas tntemes ut il iza ndo epenas DATA
4 dat a: begin of t t _l a occurs 10,
5 fl .
6 f2.
7 end of it_la ,
B t t_lb li ke i t _la occurs 10 wtt h header li ne,
g i t _Ie l 1k. e i t _la occurs 10 wt tl! header l i ne.
I.
11 Defi ne mats 3 tabelas internas 1denti cu ut ll i zando TYPES
12 types : begin of t _,
13 fl ,
14 f2,
15 end of t _,
16 t_it t ype t_ occurs 10.
17 data : it_21 type t_tt.
18 it_2b type t _it ,
19 i t _2c t ype t_1t.
,.
21 Define mafs 3 utilizando urna estrutura do ODI C
22 data: 1t_3a 11ke ztx_it occurs 10 withoI! eader 11ne,
23 i t _3b like zt lUt occur s 10 with header I t ne,
24 ft _3c l i ke ztx_it occurs 10 wit h header Hne.
Dos dais primeiros metcdos, euma qcestec de cpinieo direr qual e0 mais
r clcrc: oenhum parece termuitas vantagens sobre a outre. Acreditc qve 0 terceirc
metcdc, entretanto, seic 0 preferido. Eo mais clorc e pore ver 0 definil;eo voce podero
simplesmente da r urn clique duplo no nome da estruturo do ODIC. Ao visua lizer a
estrutura, 0 que voce estero venda e muito ma is significativo do que umo definir;eo do
ABAP/4; hover6 urn texto curto para codo elemento de dodos e um pora a pr6pria
estruiuro. Essestextos pode mtemb em ser programados . Alem do mais, 0 estrvtura estorO
Teste
1. 0 que confi gura urn limite para a qu antidade maxima de mem6ria
est endida que pede ser alocada por uma tabela -int ema?
2. Por que nao utilizar occurs 0 se voce pretende armazenar menos que
8 KB em uma tabela intema?
3. Voce pode utili zar a instrucao rea d tab' e para Ier as tabelas de banco
de dados ?
Exerdcio 1
Exiba e explique as convers6e s que oco rrem programa zt x1l 10 (veja a
Listagem 11.15).
Listagem 11.15 Convers6es (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) type c,
6 f4 type p,
7 end of f t .
S
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'" ..... .....- ..... ".-............ -.-.- -- - -- - -- - -- - r
. PREHO... EM 21 DIAS ABA P!4
12
hIlpJ I_.CDmpus.com.br
Qbjetivos d""o'--!Clo.! 'O.ljPflJ[L!'tUl.l ,Ll.IOL-- _
Depois de concluir est e capitulo, voce se.lacapaz de:
Reconhecer 0 operador de corpo tabela e para testar
quanta a. existencia de dados em Ji?a tabela interna e comparar 0
con t eado de duas tabelas interna s para igualdade
Determinar a numerc de linhas em uma tabela int erna ut ilizando
deseri be e sy-tfi 11
Copiar 0 conreudo de uma tabela 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 utilizando edi t or- cal l
as instrucoes i nsert e modi fypar 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 sort ed bye call ect
Tabelasinternas
Parte 1
"
-,
it-f2 , u-n, f t - f 4.
ft-t2 t t -f4 sy- t ndex.
r ead table 11
key fl ,; tt-fl
bi nary searc h
transporting no fi elds.
11 sy-subrc <> O.
insert it i ndex sy-tebtx .
endif.
enddo .
16
11
18
19
20
21
22
23
2.
25
26 loop at it.
21 write: I it-fl.
zs endloop .
Namero de linhes
Ccmprimentc de ume llnhc em bytes
Velor ctuel de d6usule occurs
Varlavel
sy-t f f l l
sy.tleng
sy-tcccu
if i t[ ) ts tntttel .
Se 0 teste for verdadeiro, a tab ela int erna estara vazia. Quando false, ela
ici center pelo menos uma linha.
Os seguintes pontes se aplicam:
Se a adic;io 1i nes i for especificada, 0 rnimer c de linhas sera colocado
ern sy-t f t l l e f.
Se a adiC;ao occurs j for especificada, 0 tamanho da clausula occurs
sera colocado em sy-toccu e i.
Essa insrrucfo preenche as tres varidveis de sistema mo stradas na "
Tabeia 12.1.
Para det erminer 0 numero de linhas em uma tabela interna, utilize a varidvel
sy-tfi 11. Ela econfigurada pela iastruclo descri be t abl e.
Sintaxe da instrucco descri be table
en A seguir, veja a sintaxe da instrucao descri be table.
Z descri be table it [lines i] [occurs j].
Sonde:
m it e0 nome de urna tabela int erna.
t e j saOvariaveis numericas.
Tabela 12.1 Ainstru<; 60 describe tabl e preenche estes vori6veis de sistema
Determi nando 0 numero de linhas em uma to bel a
i nterng
I II I .... I I" ..... I -...... I ... . "
OIA12 "BElli INTERNASAVAHIA" ' , PARTE 1 389
I I
i Determinondo se umo tgbelo interng est6 vgzig I'
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 I
int erna contem quaisquer Iinhas, fal$a urn tes te do corpo com a seguinte \
instrucao:
0 operador de corpo de tabela
describe t abl e
append 1i nes
in sert li nes
editor- cal l
ins ert
Utilize as seguint es estruturas para tester e modificar 0 conteudo das tabelas
internes:
modi fy
free
del ete
clear
re fr esh
append sor t ed by
call ect
o carpa de uma tabela interna erepresentado pela sintaxe it [ I , onde it
e0 nome de qualquer tab eia interna. i t [ ] significa "0 corpo cia tabela int ema
i t ". Nao podehaver nada entre os colchetes; eles devem ser escri tos exatamente
da forma como mos trado. Voca pode util izar essa sintaxe para executar ope-
rac;6es efici entes de tabela que nao requerem 0 usa de uma linha de cabecalho.
Essas operacoes serao descritas por t odo este capftulo.
Se uma rabela intema nao tiver uma linha 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
representar 0 corpo ; eles sio equivalences.
Testando e modifi cc ndo 0 conteudo da tabela
interno
Obtenda informo<;6es sabre umo tobelo interno
Voce pede obter as seguintes informacoes comumen te necessarias sobre uma
tabel a intema:
Se a t abela interna conrern dados
Quantas linhas ela ccntem
. ,
..5t
.....0 388 I APREMOA EM21 DIAS ABAP/4
........ ..- ..- 11' 11' 11' - I ..1."' __
Ho somente umo insffincio em que sy-toccu ire diferir do clousulc
occurs no definic;co de tobelc. Quando sy-tl eng * sy-tcccu > 8192
e depots que umo linhofor cdtclcncdc a fobelo intemo, sy-toccu sem
zero. 1550 indica que a rnem6rio esfd sendo a!ocodo em blocos de 8
KB porn esse tobelo interne .
Programa de exempl o que obtern as informac;6es sobre
uma tabera int erno
A Listagem 12.1 mostra urn programa de exemplo que obtem as informacoes
sobre uma tabela intern e.
Lista gem 12 . 1 A instrucdc describe table utilize os vcrlovels de sistema
,. pora quontfkor 0 ccnteudc detabela

lU ABElAS IHmH>S AY'"YlOA5,PAm1 I 391
A linha 7 campara 0 corpo cia t abela intema utili zando 0 operador de
corpo de tabela comvalores iniciais. A tabela int ema ainda nao contern
Iinhas, entia 0 teste everdadeiro.
A linha 11 utiliza 0 operador de cadeia (:) para acrescentar tees linhas
identicas a it.
A linha 13 faz novamente urn test e do corp o. Dessa vez, 0 teste e
precedido por urn not logicc. A tabela intema contem dadcs, entia
esse test e everdadeiro.
. Depois de cada instrucfo append, 0 valor de sy-tebt xseraconfigurado
com 0 mimero de linhas na tabela intema. 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 comprimento e a tamanhc
cia linha da clausula occurs e as coloca em sy- t l eng e sy-toccn,
"seeet hent e a escrever 'append i t' 3 vezes
1f H [ ] is i nitia l .
writ e: I "tt is empty ' .
endif.
report ztx1201 .
data : begi n of it occurs 3,
fl val ue ' X' ,
end of it,
n type 1.
Se voce precise- openos sober se a tobelo ccntern dodos, ndo quontos
linhos elo possui, utilize 0 operador de corpo de tabe la. He e mots
efldente do que 0 instrw;ao describe ta bl e.
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 foremiguois 005 do componente correspondente
do outro tobe la inteme . Somente os names de componente ndc
precisom corresponder.
Se duas tabelas internas tiverem a mesma estrutura, ut ilize a seguinte insrrucao
para duplicar Dconteudc de uma tabela interna em Dutra:
m[ 1 j tl [ ] .
Copiondo dodos de umo tobelo interno para
uma outre
sy-tfil1 ,
5y-t1eng,
sy-tcccu .
sy-te btx.
1
2
3
4
5
6.
7
8
9
10
11 append: tt , it, tt .
12
13 ;f not H [ ] i s i nit ial .
14 write: / ' it i s not empty'. "
15 endif .
16
17 wrtte: I ' number of rows f rom sy- tebtx" ,
18 describe t abl e 1t li nes n.
19 write: / of rows from sy-tfn 1: '
20 I ' l engt h of a row from sy- tleng:' ,
21 I 'occurs val ue f rom sy-toccu:' ,
SAiDA
o c6digo na Listagem 12.1 produz esta safda:
it i s empty
it i 5 not empty
number of r ows from sy-tabix:"
number of rows from 5y-tfi 11:
l engt h of a row from sy-tl enq:
occurs val ue from sy-tcccu. 3
A inscrucaoanterior 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 ea maneira mais eficiente de copiar 0 conteudo
de uma tabela intema para outra.
APREND! EM 21 0lA5ABAPI4

oa12,lABEUSIKTEl<NASAVAN\ADAS, PAm1 393
Copiando umo porte de umo tobelo interno
do 10 t tee s varyi ng 1tl-fl from al pha+Q next al pha+l.
append t t f ,
enddc.
ztx1202.
datil : best n of i tl occurs 10,
fl.
end of lU
HZ 1i ke i tl occurs 10 with header 11ne,
alph a(lO) val ue ' A"BCOEFGHI J ' .
1
2
3

S
6
7
8
,
to
11
12 append lines of it! fTOll 2 to 5 t o it2.
13 l oop at ttz ,
14 write uz-n.
15 endloop.
16
17 i nsert j tn es of it! fJ"OOl 8 i nt o it2 t ndex 2.
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
A Listagem 12.2 mostra urn prograrna de exemplo que copia os dados de uma
tabeia interns para outra .
Todos as pont os que se aplicam ainstrolJio append li nes tambem se
aplicam aqui . A diferenca eque as 1inhas de t tl sao inseridas em tt2 antes do
ntimerc dalinha nb. Se a valor de nb for 0 namerc de 1inhas em i t 2 mais 1, a
linha sera acresceora'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 ccorr era,
Voc e pede utilizar essa instrucio den tro au fora de loop at tt2. Se
utilizada fora. voce devers especificar a adiljao index. Se utilizada dentro, 1ndex
sera opcional. Se a adilJaoDio for especiflcada, 0 rnimero dalinha areal em i t2
sera assumida.
Programa de exemplo que copia os dados e ntre as
tobelos internos
Sintoxe do insert 1i nes
c.n A segui r, veja a sintaxe cia insrrugao 1nsert 1i nes.
-Z i nse rt lines of ttl [f l'Oll nil [t o nt] into tt2 [index nb].
onde :
m i tl e i t2 sao as tabe1asint ern as ou sem l.inhas de cabecalho.
T nf, nt e nb sao cons tantes, litems ou variaveis numericas.
I
!
,
I
I
!
Utilize r append l t nes sera de tres 0 quotro veees mois rOpido do que
utilizor append poro odicionor os linhos umo de codo vez.
Se voce quiser copiar uma parte de urna tabela int erna para ou tra, OU se voce
qui ser deixar 0 conteddo cia tabel a alvo, utilize as append 1i nes e
i nsert l ines.
Utilizondo 0 append 1i nes
Utilize a append 1ines quando quiser acrescentar linhas ao finalda
tabel a alva .
O sseguinres pontes se aplicam:
As estruturas de itl e itZ devem corr esponder.
nf eo Iodice daprimeira linha a ser copiado de t t l . Se a adiljao fr om
nao for especificada, a c6pia cornecaraa parti r daprimeira linhade i tl .
nt ea indice da ultima linha a ser copiado de ttl. Se a adilJao to nao
for especificada, a c6pia continuara ate a linha de ttl. .
Se nem fromnem to forem especificadas, a tabela inte ira sen acrescen-
tada. .
Depois que ainstrucio append 1i nes for execut ada, sy- tebt xiracant er
o mimero de linhas na tabela.
Sintoxe do instrucco append 1i ne s
A seguir, veja a sintaxe da inst rucao append 1i nes.
append l1nes of ttl [from nf] [to nt) to it2.
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 numericas.
Utilizondo 0 insert 1i nes
Ut ilize a instrucio i nsert 1i nes quando quiser inserir as linhas em um Ingar
dif er enre do final cia tab ela-alvo.
III
-
Z
S
m

I
'" I
!.
394 A/ RENDA EM 11 D'ASAU/ /.
18 ski p.
19 loop at ttz ,
20 itl-fl .
21 endloop.
22
23 l oop at 1t2.
24. if t t Z- fl >. ' E'.
25 insert l ines of i tt to 1 into tt2.
26 end1f.
27 endloop.
28
29 skip.
30 l oop at tt2.
31 writt!! 1t2-f1.
32 endloop .
33
34 ski p.
35 i t2 [ ] i tl [ ] .
36 loop at ill.
37 write rez-n.
38 endloop.
o c6digo na Lisragem 12.2 pr oduz esta saida:
8 C 0 [
BH IJCO E
DlllUABlliS INlERNASAVAll(AIlAS.IARTn 395
Comporg ndo 0 conteudo de duos tobelos internos
Voce pode utilizer 0 operador de corpo de tabela para comparar 0 comeadc de
duas tabelas intemas, como pode sec visto a seguin
i f itI[] i t 2[ 1.
Para utilizar essa estrurura, as tabelas intemas deverac ter a mesma
estrutura, Se elas nio tiverem a mesma estrurura, voc e tera. que compari-las
manualmente, linh a po r linha . .
Essa sera verdadeira quando iti e H2 contiverem 0 mesmo
mime ro de linhas e 0 conreado de cada linha for 0 mesmo.
Ainstrulioo If - Equal t o e0 moneiro mcls eficlente de comporar 0
contendc de duos tobelos intemos.
Utiliza ndo a edi tor- cal l
A edt t or- call exibe 0 cocceudo de urna t abela interna para 0 ususrio
em urn editor se m elhanre 41.0 edit or de c6digo-fonte do ABAP/ 4. Euti! para
e como uma int erface simples a fim de permitir 41. 0 usuirio digitar e
modificar os dados em forma de tabelas.
Sintoxe do inst ruljoo edi tor- call
B A H A l A J CD A E

A BC DE F GH I J
As linhas de 8 a 10 preenchem i tl com 10 linhas con tend o as primeiras
10 letras do alfabeto. .
A linha 12 acrescen ta as linhas de 2 a 5 de i tl para i tZ.i t 2 tern agora
quatro linhas contendo as let ras de Ba E.
Na linha 17, a t o nao esti especificada, entdo 0 final de i tl e
assumido. Isso ins ere as linhas 8, 9 e 10 de i tl em 1t2 antes cia linha
2.
Na linha 24) se a Ietra em it2-fl for maior que au igual a E, a linh a 1
de itl sera ins erida an tes ci a linh a atual de i t2. (A adilj:iof r omnio esta
especificada, entao 0 inicio de 1t 1eassumido.) 1550 resul t a na
de quatro linhas . Na saida, sio os valcres I A' .
A linha 35 copi a 0 conteudo de i tl para it2, sobrepondo comple-
tamente 0 conteddo exist ent e,
!!! A seguir, veja a sintaxe da editor-call.
Z editor-call f or it [title el [display mode]
onde:
m it 0 nome de urna tabela intema.
T t eum lit eral, constant e ou variavel.
Os seguint es pontes se aplicam:
it pode apenas conter componentes do ripe c.
0 comprimeato maximo de uma linha ede 72 caract eres.
te o texto 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 pesqui sar e rolar, mas
nao sera. capaz de alt erar a ccnt eudo.
Depois de visua lizar ou modificar 0 conteudo da tabela inte rna atraves
do editor, 0 usuario pressionara um destes bot oes: Save, Back, Exit ou Cancel.
Save grava as alt eracoes feitas 41. 0 conteddo da tabel a inrerna e retorna 41.0
XXIIIIIIIII I II _
... ----- -- -
396 APREH OA EM ' 1 DIAl ABAP/' D. 1UABElAS INTElHAS AVAH\ADAS. PARTE 1 397
programa. Back, Exit e Cancel saem do editor e retomam ao programa. Se
al reracoes tiverem sido feitas, sera solicitado 010 usudrio salvar au cancelar as
alceracoes.
Depois que a instrucac edi tor-call for executada, sy-subrc sen configu-
rada com as valores mostrados na Tabela 12.2.
Ta bela 12.2 Volores de sy-subrc depois do instruc;oo editor-cal l
23 loop It it.
24 \IIrHe: I it-to
25 endloop.
Se nenhum dado tiver sido digit ado quando 0 editor foi exibido, 0 cedigo
na Listagem 12.3 produzirf esta safda:
Data was not changed
sy-subrc
o
4
Significado
Uma grovoo foi executcdc . 0 ccntecdo do tcbelo interne pode ou
nOD fer side olterodo.
o usu6rio nooexecutcu urne aC;Cia solvor. 0 conteudc do tobelo
interno est6 inolterodo.
Haee
Address
Phone
Text
:'. append it.
: ' . append i t.
: I . append it.
append 1t.
append It .
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 at abela int erna a partir
da linha de cabecalho.
A linlla-13 copia 0 corpo de it para 0 corpo de save_H. ] i que save_i t
nao tern uma linha de cabecalho, 0 lade esquerd o da atribuicao pode
ser escritc com ou sem colchetes.
A linha 14 exibe 0 conteedo da tabela int erna no edi tor com 0 titulo
Freeform Entry.
A linha 15 verifica 0 valor de sy-subr-c para determinar se 0 usuirio
executou urn salver. Se ele nao executou, provavelrnente os dadcs
nac foram alterados e uma mensagem sera escri ea.
A linha 17 compara 0 novo cocteedo de it com a c6pia de referencia
em save_it . Se forem diferenres, uma mensagem sedescri ta. Se forem
iguais, a linha 20 escrevers uma mensagem para que isso seja indi cado.
A linha 22 escreve urna sublinha com 72 caracteres de comprimenrc.
As linhas de 23 a 25 escrevem 0 novo cont eudo da tabela in terne,
incluindo quaisquer modificacces feitas pelo usuari o.
Para inserir uma tinica linha em uma tabela interns, utilize a instrucac i nsert .
Inserindo linbos e m umo to be lo interno
"t ext o
"ira center a c6pia do or ig inal
Listagem 12.3 Utilize a instrw;co editor-call paro visualizor, editor e
depurcr 0 ccnteedo de uma tcbelo interne .
report ztxI2.03.
dat a: begin of it occurs 10,
t(i!),
end of it,
save_it l1ke 1t occurs 10.
. A Listagem 12.3 mostra urn programa de exemplo que utiliza a instntc;ao
edi tor -ca 11. Nesse exemplo, a t abela interna epreenchida corn cinco linhas e
e exibida no editor. de modo que a usuario possa modificar as dados. 0
conteddc eentao escrito e uma men sagem-tambem eescrita a fim de indicar
se uma alten!;aO foi execurada.
1
z
3

I
6
7 tt -t >
8 itt'Address
9 1t-t 'Phone
10 1t -t = ' Freeform Text
11 clear it-t with ' -'.
12
13 save_i t - H[] . "sese t hent e a: save_it [ ] H [ ] .
14 editor-call for it t i tl e ' Freefonn Entry' .
15 if sy- subrc 4. "0 usuartc executou uma server
16 write : I ' Data was not changed'.
17 elseif save_it[ ] < > i t [ ] . -0 usuario executou IJlIIa alj: ao salvar
18 \IIrHe: I ' Data was changed'.
19 else.
20 \IIr1te: I 'Data \liAS not changMl '.
21 endif.
22 write: I sy- ul1ne(72).
;
'j
I
1
.1
Ii
I'
I
.
cede:
APR EN DA EM21 DIASAU P/4
n eurn constante. Iiteral au varisvel numerics.
lHABELlS IIITERH.lS AVAN(AO.\S, PARTE I 399
16 endloop.
17
18 loop at i t where fl :>. 4.
19 1t - fl - 88.
20 i nsert it.
21 endl oop.
22
23 skip .
24 l oop at it.
25 write / 1t - fl .
26 endl oop.
. . - - - - - - - - - -
wa euma area de t rabalhc com a mesma estrutura de uma linha cia tabela
int ema i t.
U't A seguir, veja a sintaxe da instrucic insert.
Z insert [11'0 1nt o] i t [i ndex II]
S
m
T
Sintoxe do instrU!;oo insert
..-.........&.&..&...-..-.... I I I I I I -I .......
Depois que coda instnH;601nsert for eecveec, 0 sistema indexar6
navome nte todas as llnhcs cbcixc do inserida. lsso introduzir6overhead
quando voce Inserir linhas pr6ximos 0 0 inicio de umo grande tebelc
interne. Se voce precisor inserir um bloco de linhos em umo grande
tobelc Interne, prepare uma outre t obelo com as ltnhcs 0 serem
1
2
"-
3
88-
,
88-
5
As linhas de 6 a 9 acrescentam cinco linhas contendo os numeros de
laSemi t.
Alinha 11 at ribui ao componente de liaha de cabecalho itfl urnvalor
.
A linha 12 insere a linha de cabecalho de it como 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 interna 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, alinha 19
alterou 0 componente fl para que 0 mesmo contivesse 88.
a codigo na Listagem 12.4 produz esta safda:
1
2
99-
3
,
5
illUSE
Llstagem 12.4 Utilize a instruc;ao i nsert perc inserir uma (mica linha
em uma tabela intema
do 5 t i mes .
It - fl sy-tnde x,
append it.
eneeo.
r eport zt x1204.
data: begin of i t occurs 5,
fl l1ke sy-tneex,
end of it.
Os seguintes pontos 5C aplicam:
Se Il'Q for especifi cado, 0 comeddc de va sera inseridc em it . 'fila devers
tee a mesma estrutura que it .
Se Il'O nao for especificado, 0 comeedc da linha de cabecalho sen
inserido em i t . Se it nao civet uma linha de clever! set
especificado.
Seindexfor especificado, a novalinha serainserida antes da linhan. A
linhan se tomara entao a linha n+ 1.
A i nser t pede ser utilizada dectrc au fora de loop at it.
Se urili zada fora, a index devera ser especificada. Se utilizada
derrtro, i ndex sera opcional. Se a Da O for especificada, a linha
atual sera assumida.
A Listagem conrem urn prognma de exemplo que utiliza ainstrucio
i nsert.
1
2
3
,
5
6
7
8
,
I.
11 itf1 -99.
12 i nsert it ; ndex 3.
13
14 l oop at 1t.
15 wrt te / it-fI.

400 UREHDAEM 21 DIASABAP/4
- . w w _ -
Os seguintes pontas se aplicam:
Se from vafor especificada, a linha sed, scbrescrita com 0 conteudo de
00.
Se from vo me forespecificada, a linha sera sobrescri t acom 0 conteedo
d. linha de cabecalho.
Se i ndex n fo r especificada, n identificari a n6mero 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 nsera,opcional. Se nao fa r especificada, a1inha atual
sed modificada.
transport i n9 especifica quais compenentes devemser sobrescritos. Sem
ela, t odos eles sersc sobrescritos. Com ela, sornente os compcnentes especifi-
cade s serac sobrescri tcs. 0 restante permanecerf inalterado.
Especificar uma condicacwhere depois de transport l ng faracom que as
componentes especificadas sejam sobrescrieos em t odas as linhas que saris-
fazem 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 expo
VocE. nio podera utilizar modify it com where:
Dentro de lo op at i t
Com a in dex
A Listagem 12.5 mostra urn pr ograma de exemplo que modifica 0 coo-
teadc de uma rabela interna.
inseridos e utilize insert lines porsuo Vel . As linhos no tobelo a lve senSe
nova mente indexodos apenos umo unico vez, depois que esse instruc;ao
for execvtedo.
Ao inserir urna nova linha em it dentro de loop at it. a eao
afetari imediaumente a tabelainterna mas, emvezdisso, elase t omara 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 ementada e a
pr6xima passagem do loop pr ocessara a linha indicada por sy- t abix. Por
exemplo, suponha que voce esra. na terceira passagem do loop e insere urn
regiscro antes dalinha 4. Quando endl oop executada, a nova linha se toma a
Iinha 4, a l.inha 4 anti ga se t oma a linh a 5 e assim por diante. Sy-tebfx e
incrementada em 1 ponto e a pr6xima passagem do loop processa 0 regisrro
rece ntemente inserido.
Set dentr o de urnloop, voce inserir uma linha antes cia linha atual, a tabela
sed novamente reindexada em endloop. Dessa vee, entr etanto, sy-tebt x e
incrementadapar 1 mais a ntimerc de linbas.inseridasantes cia linha atuaLDa
pr6xima 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
ant es ds linha 3. Em endl oop, a nova linha se t orna a linha 3, a linha 3 se t orna
a linha .. e assim par diante. A linha 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 foi reindexada
para 5, sen do assim sera processada na pr6xima passagem do loop.
Modificoodo as Hobos em umo tobela inte rno
Para modificar 0 conte6do de uma au mais linhas de uma tebela intema, ut ilize
a modi fy.
Sintoxe do instruc;cio modify

Listagem 12.5 Utilize modify pa ra sob rescrever 0 conte udo existente de
uma ou mais linhas de uma tabela interne
it e0 nome de uma t abelaintema com au semuma linh a de cabecalho.
va euma area de tr abalho com a mesma estrutura de uma linha no
corpo de i t .
n euma cons t ante, variivel au lit eral numerico.
c1 e c2 sao compenente s de i t.
expeuma expressaa logica envelveodo componentes de it.
onde:
report ztx120 S.
data: begi n of it occurs 5,
fl 1i ke sy-tndex,
f2 ,
end of it.
alpha (5) val ue ' -'BeDE' .
do 5 times varyi ng it-f2 f rom al ptla+O next alpha+l.
it-fl .. sy-index.
append 1t.
enddo.
1
Z
3
4
5
6
7
8
9
10
11
1Z
13 tt-f2 'l' .
14 modify i t i ndex 4.
15
[where exp] ]
tn A seguir, veja a sintaxe da inst ruci o modi f y.
-
Z modify i t [f rom 11'!1] [index n] [transporting cl c2

m
...
.........................................L..lL..lL..O.......................a...L.&. I .I- I I I I 11 11 ...........
402 APREN oA EM21 nus ABAP/4
.. .. .. W . -. i
12. lABIUS IH1WIAS AVAHIAOAS. PAmI 403
16 l oop at 1t.
17 write: I n - n, it-f2.
18 endl oop.
19
20 l oop at it.
21 ft -fl 1t-fl .. 2.
22 llIOdify it .
Z3 endl oop.
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 where fl <> 10.
32
33 skip.
34 l oop at It .
3S write: I it-fl . it - f 2.
36 endloop .
Sllol
o c6digo na Listagem 12.5 produz esta saida:
1 A
2 B
3 C
5 2
5 ,
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 multiplica po r 2 0 conteudo do cemponente da linha de cabecalho
flo A linha 22 copia 0 conteudc dalinha de cabecalhc de volta para a
linha atual no corpo de it, sobrescrevendo-o.
A linha 30 mo difica 0 coneea do do cornponente da linha de cabecalho
. f2, at ribuindo a ele urn.valor de 'XI.
A linha 31 modifica todas as linhas no corpo onde fl njo eigual a 10.
Somente 0 valor de f2 ecopiado da linha de cabecalbc e scbrescreve
as valores de f2 no corpo. fl permanece inalterado no corpo e na linha
de cabecalbo.
Exclui ndo 0 conteudo do tobelo interno
Para excluir 0 conteddc de uma tabela int ema, voce pcderd ut ilizar as seguintes
insrrugoes:
free
refresh
clear
delete
Utilizando free para excluir 0 conteudo da tabela
interna
2 A
, B
6 C
10 Z
10 E
2 X
, X
6 X
10 Z
10 ,
As linhas de 8 a 11 adicionam cinco linhas em it. Cada linha contem
urn mimero e Ietra do alfabero sequenciais.
A linha 13 modifica 0 conteddo de it-f2, dando a ele urn valor de IZ' .
t t-fl DaD foi modificado, enno ainda conterd 0 ulti mo valor adi-
cionado na t abela: 5.
Alinha 14sobrescrevealinha 4corn0 comeodc da linha de cabecalho,
alterandc f 1 para 5 e f2 para 2.
Utilize a free para excluir tcdas as linhas de uma eabela interna e
liberar a mem6ria associada.
Sintoxe do free
A seguir, vejs a sintaxe da instruc;ao free.
f ree it.
onde:
t t euma eabela intema com au sem urna linha de cabecalho.
Os seguintes pont os se aplicam:
Todas as linhas sao exclutdas e toda a mem6ria urilizada pelo corpo.da
tabela interne eliberada.
A linha de cabecalho, se exisrir, permanecerd inalterada.
I I"'I I I -I I -I I I I I -. I I . -. . - - - --.. - -- - - -
404 'PIEND' 1M 21 DIAS"",. DIA lH'BELAS INIDNAS'V"(ADAS. PARTE 1 40S
Emboro c memoria para as tcbelcs internes seja cctcrncflccmente
libercdo durante de seu progromo, se voce mesmo a llbercr
sere normo lmenfe mois eficiente. A razeo disso recc i sa bre 0 fato de
que quando a seide for exibido para 0 usu6rio, tecnicomente seu
prograrno oinde noo tero sido finolizodo. Todos as recursos permcne-
eeeee olocodos e 0 progro mo nOotermincrOate a usu6rio pressionor
a bettie Bock. lsso, finalmente, terminc se u progro mo e Hberc tcd c 0
ccntevdc do tcbelc infe rno. Voce poder6 ltbercr as tobelos Internes
antedpodomente colocondo as instruc;6es free 0 0 final de seu pro-
grama. a contecdo do tobelc interne ser6 liberodo antes de 0 usuc ric
ver a listc e nco depois disso.
Utilize free quando terminar de urilizar urn. tabela interna.
A Listagem 12.6 mos tra como utilizar a f ree.
Utilizando refresh pa ra excluir 0 conte udo do tabela
interno
Util ize a refresh para excluir toda.s linhas de uma tabela interna, mas
deixe a memoria alocada,
Sintoxe do refresh
A seguir, veja a sintaxe da refres h.
r ef resh t t ,
onde:
i t euma tabela intema com ou sem urna linha de cabecalho.
Listagem 12.7 Util ize a instrur;oo refresh perc excluir todcs as linhcs de
uma tobe lc interne
05 seguint es pontos se aplicam:
Todas as linhas sao excluidas. Toda a memoria utilizada pelc corpo cia
tab ela interna permanece alocada.
A linha de cabecalho, se exiscir, permaaecer f inal t erada,
Utili ze refresh quando quiser excluir todas as linhas, mas quiser pr een-
cher a eabela intema novamente. Por exemplo, se esti ver produzindo urn
relat6rio de vendaspor departamento, voce podera preencher a tabela int ema
com todas as vendas de urn departamento, processar os dados e, em seguida,
escreve-los. Enrao, depois de r efre sh, voce poderf preencher a t ab ela interna
com os dados do proximo depart amento, escreve-lcs e assim por diant e.
Se voce qui ser pr eencher uma tabela imediatamente depois de [impa-la,
refresh sera mais eficiente do que free jaque impede alocacoes desneces sarias
de mem6ria.
A Listagem 12.7 mos tra como util izar a insrrucao re f resh.

Listagem 12.6 Utilize a instru.;co free pore excluir tcdcs as linhos de
umc tobela interne e hbercr a mem6rio ossoci ado
report ztxl206.
data: begin of it occurs 3.
11 11ke sy- t ndex,
end of i t.
do 3 ttees ,
it -f1 .. sy- t ndex,
Append ft .
enddo.
I
2
3

5
s
7
8
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 .

ANALISE Alinho 15 exclui tod as as linhas do tobelo lntemc e hbere 0 mem6rio ossociodo .
do 3 t tees .
t sy-t neex.
do 3 times.
i t -fl i * sy- tndex.
append it.
enddo.
IAIOA
o codigc na Lisragem 12.6 produz esta saIda:
1 2 3
no rows exist in 1t after f ree
1 r@port ztx 1207.
2 dat a: begin of it occurs 3.
3 11 11k@sy-t ndex,
4 end of it.
S 11k!! sy-i nd@x.
s
7
8
9
lD
11
12
II" I -.""" .....-......--. __ ... - ... __ ... -_...
406 APiE.DAEM21 DIAS AIAPH IU A8El.\S INTEiHASAVIJl(ADAl, PAmI I 407
Exduir6todos as linhas
Excluir6 todas as tinhas
Se it nao IlYer uma
IInha de
. limpor6 a linhe de cc becclhc
Excl uir6todes as linhos
-Se it liver uma
linha de
onde:
it e0 nome de uma tabela interna.
Listagem 12.8 Alnstrucdc clear pode ser utilizada pa re limpar a linha
de cobecolho au excluir 0 conteudc de umo tobe lo intemo
cle ar i t
cl ear it( J
Instru4jGo
o programa na Listagem 12.8 ilustra a usa cia instruci o clear com uma
tabela interua.
Os seguint es pontos se aplicam:
Se i t tiver uma linha de cabecalho, c1ear i t [ ] excluiratodas as linhas.
c1ear it limpara a Iiaha de cabecalhc.
Se it nao river uma linhade cabecalho, as duas fortnas excluirac todas
as linh as e deixario a mem6ria alocada.
o efeito de cl ear em uma tabela ia terna esta. resumido na Tabela 12.3. 0
efeito de cl ear varia,dependendo seatabelainterna tern uma linha de cabecalho
ou nao.
Sintaxe da cl ear quando utilizada com uma tabela
interna
A seguir, veja a sintaxe da clear quando ut ilizada com uma tabela
int ema.
cl ear i t : cl ear t t[ ]
III
Z
S
m
T _
Tabela 12.3 Efeito de clea r em umo tobelo intemo
write: I " .
l oop at it.
write it-fl.
endJoop.
ref resh it.
enddo.
o c6digo na Listagem 12.7 pr oduz esta saida:
1 2 3
24 6
3 6 ,
Alinh.a 7 ccmeca urn loop que eexecutado uesvezes. Ela contern urn
loop interne aninhado.
A linha 8 armazena 0 valor atual de sy-t ndex do loop enema.
A linha 9 cornelia a loop interne. \,
Na linha 10, 0 mimero cia passagem do loop interne e mulciplicado
pelc mimero da passagem do loop externo.
A linha 11 adiciona cada linha na tahela intema.
Alinha 13cornelia uma nova linha de safda.
As linhas de 14 a 16 escrevem 0 con teudo da tabela int erna.
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
se repete e imediatamente preenche de novo a tabela interna.
Alinha20 excluitodas aslinhas elibera a memoriapara a tabela intema
antes que a lista seja exibida. Isso faz com que 0 programa se tome
mais eficienee.
13
14
15
16
17
18
19
20 free it .
.
Utilizando cl ear com umg tgbelg interng
SAloA
-1t teen Ina l i nha de cabet;aloo . 1ss i .. sendo l1mpar.!o a li nha
report ztxl208.
data: begi n of it occur s 3,
fl ,
end of i t .
1
2
3
4
5
6 it-fl-'X' .
7 append: it. i t .
8
9 clear it .
de cabelia1ho
10 wr1t e: 'fl-' . it-fl .
11
Voce pode utilizar a c1 ear para execu tar uma das seguin tes
Excluir todas as linhas de uma tabela interna e deixar a memoria
alocada.
Limpar a linha de cabecalho (definir seus componentes para espacos
em branco e zeros) .
, .
"
";.J _ _
408 APREN DA EM 21 DIASABAP/4
Dl A12, TABEUS INltRNAS PART! 1 409
Utilizando a instruc;60 delete pa ra excluir as linhas de
uma tabelc.Internc _
Utilizando a inStnlr;ao del et e, voce podera excluir uma ou mais linhas de uma
t abel a int erna.
do 12 t imes varying it-fl f rom alpha.+O next alp ha+L
append i t.
enddc ,
repor t ztx1209.
data: begin of it occurs 12,
fl .
end of it ,
alpha(12) val ue ' ABCDEFGHIJ KL' .
1
2
3
4
5
6
7
8
9
lD
11 loop at it .
12 write: I sy-tabix , u-n.
13 endl oop.
14
15 del et e it tndex 5.
Os seguintes pontos se aplicam:
Todas as depois de t), (bl e (c) sio opcionais .
Somente lima adi(jao de (a), (b) ou (e) poders ser especificada.
del ete it, sem quai squer adi(joes, podera scmeaeeser utilizada dentro
de l oop at it. Nesse case, exclui a linha atual .
Se in dex n for especificada, a a-esima linha de it seri exclufde.
Se from i for especificada, as linhas serao excluidas comecandc com a
i-esima linha.
Se to j for especificada, as linhas serac exclufdas ate aj -esirna liah a,
inclusive ela,
Se from Dao for especificado com t o, from 1 sera assumido.
Se t o DaO for especificado com from, a ultima 1inha na tabela sera
assumida.
A expressao expdeve tel' urn componente de i t DO lade esquerdo de
cada comparacao. POI'exernplo, se i t river as component es f1 ef2, exp
pcdera ser where fl 'A' and f 2 c I B' .
A Ilstagern 12.9 mcstra urn programa de exemplo que exclui as dados de
uma tabela interne ut ilizando a inst ru(jao delete.
onde:
n, fn e tn sao constantes, varidveis au lite rais numericcs.
exp euma expressac 16gica envolvenclo a s componente s de it.
A linha 6 coloca I XI na linhade cabecalhc de i t.
A linha 7 acrescenta duas linhas em 1tj -ambas tern I XI em f l .
A linha9 limpa a linha de csbecalbc de it.
A linha 10 escreve espacos em branco, mostrando que a linha de
cabecalho de i t esd . limpa.
As linhas de 13 a 15 produzem a safda, a fun de mostrar que a tabela
inrerna ainda contem duas linhas.
A linha17limpa a corpo de i t, excluindo efetiva.mente todas as linhas
e deixando a memoria alocada. 0 conteado da linha de cabecalho
pennanece inalterado.
As linhas de 18 a 20 nao produzem uma saida porque a tabela interna
esd. vazia.
A linha21 ma st ra 0 c6digo de ret orno depois do loop. Isso novamente
confirma que nenhuma linha existe na tabela int erna.
o c6d.igo na List agem 12.8 produz eSt41 saIda:
flo
,,
4
12 write : I I I .
13 l oop at i t.
14 write ie-n.
15 endloop.
16
17 clear tel ] . "serethente a: refres h it.
18 loop at i t .
19 write it-fl.
20 endloop.
21 writ!!: I ' sy- subrc- ' , sy-subrc.
Sinlaxe do lnstrucao del ete
A seguir, veja a sinraxe cia instrucfc del ete.
delete it (a) [indeK n]
(bi [f"", ' J [to j ]
(c) [where exp]

I ITT ...... T ... .. . '!I! '!I! '!I! - - '!If - ....
.:.
410 I "mDA EM 21 DI A5 ABAP/,
16 skip.
17 loop at it.
18 write: I sy-t abix . it-fl .
19 enet ccp.
20
21 delete i t frtm 6 to B.
22 s ki p.
23 loop at it.
Z4 writl!! : I sy-tabix . it-flo
25 endloop .
2'
27 delete i t where fl between ' B' and ' 0' .
28 skip.
29 loop at it .
30 write: / sy- ta b1x. i t - fl .
31 endloop .
32
33 loop at it where fl between 'E' and 'J '.
34 delete it.
35 endloop .
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-suhre- ', 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.
51 endloop.
52
53 tr-ee it .

r 411
11
,
12 L
1 A
2 B
3 C
,
D
5 F
6 G
7 H
8 I
9 J
ID
,
11 L
I A
2 B
3 C
,
D
5 F
6 J
7
,
8 L
I A
2 F
3 J
,
, - .
5 L
1 A
2
,
3 L
sy-subre 0 sy-tab 1x 2
1 A
2 L
As linhas de 7 a 9 preenchem it com 12 linhas contendo as valores de
'A' a I L' .
o c6digo na Listagem 12.9 produz est a sarda:
1 A
2 B
3 C
, D
5 E
, F
7 G
8 H
s I
10 J
As linhas de 11 a 13 escrevem 0 conteedo da tabela interne.
A linha.15 exclui a quiara liaha, removendo 'E' cia tabela. A sexta linha
se toma 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
databela. A nona linha se coma a sexta e assim por diante.
A linha 27 exclui as linhas que tern as valores fl entre I BI e ' 0' )
inclusive. Is50 faz com que a segunda., terceira e quarta linhas sejam
excluidas.
---- -.- -- - ..
... ....
I
412 ! "'[NDA EM 21 DIAl ABAP/4
lUABEUS IIffiRNAS AYAll(ADAS, PAmI I 413
onde:
Sintoxe do instrur,;oo append sorted by
t teo nome de uma tabel a interna.
wa uma area de trabalho com a mesma estrutura de uma Iinha. cia tabela
Os seguintes pontos se aplicam:
Se "fa to nao for especificado, a linha. a ser acrescentada sera obtida a
partir da linha de cabecalho.
Se wa to fo r especificado, a Iinha a ser acre scentada sera obtida a partir
da area de tra balho wa
Some nte urn componente c pede ser especificado.
, A append sorted by obtem uma linha da area de trabalho e a
insere na tabela interna no local emque pertence na ordem de clessificacao. Ela
tern duas propriedades incomuns:
0 mi mero de linbas que pede ser acrescentado elimit ado pelo valor
na ckusula occurs. Por exemplo, se a clausula occurs for 10, urn
maximo de 10 linhas poderao ser acrescenu das atabela interna. Essa
a unica situac;ao ern que occurs limit a 0 Dumero de linhas que pode
ser adi ciooado em uma tabela interna.
Someote c1assifica em ordem decrescente.
oefeito rea1euma -listadosn primeiros" onden e o nu.meronacliusulaoccurs.
Com cada append, 0 sistema pesquisa 0 conteudo da tabela exist ent e para
determinar onde se enema anova linha. A ordem de classificaiao edescendente
po r c. Se existirem menos linhas na tabela interna do que a quantidade especi-
ficada porn na c1ausula occurs, a linha ted a ordem de Se existirem
n linhas na tabe1a intema, a linha sera inserida pel a ordem de 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 exist entes que tern 0
valor. Portanto, se occurs for 3 e a linha 3 cootiver I XI em c, urna nova linha
com I XI em c nao sera acrescent ada.
interna.
c eurn componente de f t .
Essa parece uma maneira 16gica de prcceder. Enrretanto, a utilizac;ao da
append sorted by com fr equ encia pcdera produzir 0 mesmo res ul-
tado e ser duas vezes mais eficiente. .
A seguir, vej a a sintaxe dainsrru cio append sort ed by.
Z append [11'0 to) it sorte d by c.
S
m
T
Imagine que lhe seja solicit ada a criayao de urn rel.at6rio dos 10 melhores
rep resentantes de venda de sua empresa. Panindo do pressupostO de que voce
tenha uma mane ira de obter 0 t otal de vendas de cada representante, sera
possivel executar uma das seguintes
Acresceot e todos as rep reseotantes e 0 tOtal de suas vendas em uma
tabela int ern a.
Classifique-os em ordem descendente par vendas.
Escreva os 10 melhores.
A Iinha 33 recupera as linhas que tern urn valor fl entre I EI e I J "
inclusive. As linha s 2 e 3 at end em as crit erios. A ins trucio del et e na
linha 34 DaD tern quaisquer adiljoes, assim sendo exclui a linha arual
em cads passagem do loop. Is50 faz com que a segunda e terceira linhas
sejam exclufdas.
A linha -tz localizaa linha comurnvalor f1 de 'KI Embora i t contenha
apenas tres linha s, bi nary search foi incluida para uma me lhor exem-
A linha 2 ecorrespondent e, entaD sy-subre econfigurada
a zero e sy-tebt x econfigurada a 2.
A linha 45 eexecutada ja que sy-subre ezero. Ela exclui a linha 2,
removendo I K' da t abela interna.
Semelhante is insercces, as exclusoes dent ro de loop at it Ilia afetarao
imediatamence a tabela interna mas, em vez disso, se rcmarao efetivas na
pr6 xima passagem do loop. Ao excluir uma linh a depois da linha atual, a tabe la
sera novamente indexada em endl cop, sy-tabix sera incrementada e a pr6xima
pass agem do loop processard a linha indicada por sy-tabix. Por exemplo,
suponha qu e voce est i na te rceira passagem loop e exclui a linha 4. Quando
endl oopfo r executada, a linha sera exclufda, a linha 5 se tornara a lin ha 4 e assim
par diante. sy- t abix sen incrementada em 1 e a pr6xima passagem do loop
processara 0 pr6ximo registro.
.:Se, demro de urn loop, voce excluir uma linhaanU s da linha atual, a tabela
sed no vamente reindexada em endloop. Dessa vez, entretanto, sy- t abix e
increment ada em 1 ponte, menos a ml mero de linhas exclufdas antes da linha
atual. Da pr6x.ima vez que ocorrer a loop, a linha depois da linha atual sera
processada. Suponha, par exemp lo, que voceexclua na terceira passagem do
loop a linha 3. Em endloop, a linha 4 se tcma a linha 3 e assim por diant e.
sy- tebt x incrementada em 0pontes, resultando em 3. A linha 4 foi reindexada
para 3, sendo assim sed pr ocessada na pr6xima passageII!' do loop.
Criando listas dos 10 melhores utilizando
append sorted by
-414 APR!.'A EM II DIAl ABAP/l DlllUABB..\I INTElHAl AVAlI(AOAl, PmEl 415
A Listagem 12.10 mostra urn prognma de exemplo que em. uma lista dos
tres melhores representantes de veada.

append it sorted by soles


linho de ecbecclhc
sales nome
append it sorted bysoles
linha de ccbecelhe
tt 150 Jcne
corpo
linho 1 150 Jone
2 100 - Jode
3 50 Jim
linho 1
Iinho 1
2
150 vem antes de 100, entao a linha 15 insere 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).
Fig ura 12 3
Dessa vw. 0
seqiifncio de
dossiliClJ'o dita que
o novcr linho dfNe ser
inserido ontes do
primeiro.
Figura 12 2
Asegundolinha e
inserido no
comtode
dou mca o, demodo
que elo venne depois
do primei ro linno.
As Iinhasde 2 a 5 definem uma tabeh. intema com um valor occurs de
3. Se essa tabela interna for preenchida ucilizando append sorted by,
o mimero mhimo de linhas nessa tahelaintema sera Iimitado a tres.
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 est i vazia, entao a linha esimplesmente acrescentada
(veja a Figura 12.1).
Figurg 12 1
Quando nenhumo
I;nho exis1e no lobe/a
Intemo, enll50 0
primeil'D /lnl1oIi
simple.smf!t11e
ocnsantodo.
50 vem depois de 100 quando a orde m de edecres-
ceate, entio a Iiaha 13 insere a nova linha depois cia exiseenee
(vej a a Figura 12. 2).
\
o c6digo na Listagem 12.10produz esta saida:
200.00 Gina
150. 00 Jane
100.00 Jack
Listagem 12.10 Utilizando append sorted bypara localizer as tres
melhores representcnt es de vendo
it-sal es 100.
i t-name ' Jack' .
append it sorted by sales .
report ztxl210.
data : of it occurs 3,
sales type p decimals 2.
name(lO}
end of it .
1
2
3

5
6
7
8
9
10
11 it-sales 50.
12 i t -name ' Jfll'.
13 append it sorted by sales .
" 15 tt-setes 150.
16 1t-nillll!: 'Jane'.
17 append it sorted by sales .
18
19 i t - sal es 75.
20 1t -namt ' George' .
21 append it sorted by sales.
22
23 it-sales . ZOO.
24 i t-name ' Gina' ,
25 append it sor ted by sal es.
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.


_............--_-..- --------- - - - - - -
ma.--_- _
416 "RENDA EM21 DIAS . " P/4 PARTE 1 417
75 vern depois de 100, entao 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 daprimeira linha.
o restante das lin.has edisposto abaixo e a Ultima linhaedescartada
(veja a Figura 12.5).
append it sorted bysales
Nao misturar append sorted by com quaisquer outras instruc;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. a .ser
utilizada, Misturar essas instruC;6es resultard em comportamento imprevisfvel.
append sorted by sera mcls ehctente quand o voce estiver ccrescen-
tondo uma linhc per ....ezem umo tabelo intemo. Se voce j6 fiver os
dodos em uma tabela de banco de dodos e simplesmente quiser
localizer as 10 vclcres superiores sere mais efidente inserir as linhos
utilizondo uma operao de array e, em seguida, a dossificot;oa. (Para
abter jnformoes sobre as cperccoes de arrey, cansulte a Dio 13,
"Icbelcs intemos evencodes, Porte 2 .)
Utilizando a co11ect, sera pcssfvel criar totais dentro de uma tabela
interns amedida que voce a preenche.
Preenchendo uma tabela interna utilizando
collect
nOoocrescentado

e it ja contem
3 linhas
150 Jane
100 Jaa
50 Jjm
linno de cebec;olho
it I 75 IGeorge ,
,
\
\
I
I
I
..,
,
--<-
2
3
Jinho 1
Fi gu r a 12 4
Esso lin"o se eeeeee
dapoi5 do segundo.
ent60 ala, inserida
16. Atobe/ainferno
pode onnazenorum
m6Kimode 1r& linhos.
ent60 0 quam linnoIi
desccrtodo.
onde:
i t uma tabel .. intema.
va eurna area de que tern a mesma estrutura de it.
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 padrgo na irea de trabalho. Os campos 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, d
J
t e x. Nio imporu se estio urn .
ao lado do outro, au se estaa separados urn do outro por out ros campos.
en A seguir, vejaa sintaxe da instnlc;ao co11 ect .
Z col lect [wa '1nt o] it.

m
T
Sintoxe da coll ect
append it sorted bysoles
append it sorted bysales.
co<po
1 200 Gino
150 Jane
100 Ja, k
2
3
linoode cab8l;0lho
...
,
\
\
I t'IIio ocrescenlodo
,
I
I
,
-<-
Iinho
linna t 200 Gino
2 150 Jane
3 100 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
linha4, ent.ao alinha nio einseridaabsoiutamenre(veja aFigura 12.6).
Fla"rn 1 2 5
Dena vez, 0 nOva
I;nho dtNev;r
primeiro. As};nhos
exis1enfes560
disposlas e a
ultimo Iinha Ii
desccrlodo.
Fl g u r n 12 6
&so novo finho
seguim todosas linhos
eJristente5que tern a
me.smovalor. IS50 0
Iomorioa linho 4,
en160e/o noo e
Inserido.
41 tt-neee so 'Jack'.
.2 eel teet it.
"
loop at i t .
. 45 wr ite: I it-date, tr-neee, tt- num_sales.
46 endloop.
418 I APR'NDA ' M11 DIAS ABAP/4
o sistema eneso pesqu isari 0 corpo da tabela interna quanto a uma linha
com a mesma chave daquela na area de trabalho. Senao 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 correspon-
dentes da linha localizada. A Lisragem 12.11 ilustra esse conceito.
sp-5 - 5
I
i
i
I
I
IUAB' lAS IffTERNAIAVAJlIADAS, PARTE I 419
Li stagem 12.11 col lect combina as linhas assimque s60 odicionedos
em umo tobela intemo
de eebecelhe
collect it.
a codigo na Listag em 12.11 produ z est. saida:
19980101 800. 00 Jack 3
19980101 700.00 J im 2
19980101 600. 00 .Jene 1
19980102 700.00 J ack 1
As I.ioha.s de 2 a.7 definem urna tabela interna com quatro componen-
res. Dois sao do ripe caractere (dat e e name) edois sao do tiponumeri co
(t ot_sal es e riurn_s ales). A chave padrao 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 aindatern urnvalor padrio
de I, arrib utdc na Iinha 6.
A linha 12 pesquisa 0 corpo de it qu 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 estavazia, entia nao ha corres-
pondsncia de linhas. A linha de cabecalho e, portaotO, acrescentada a
"bela intern. (veja a Figura 12.7) .
A linha 17 se comporta como a linha 12. A eabela intema tern urna
linha, mas as valores nos campos date ename nao sao correspoodent es,
entio a lioha de cabecalhc eacres centada arabela interna (veja a Figura
12.8).
$@oChov.podr6o
tl60 for/ocolizodono
corpo. 0 /inno sero
oc:rescentodo. A chave
podmo ecompostc d@
Iodosos compos
nOo-numericos, @nt6o
n@ss!& diogroma, elo
comi!SpOlldea
c:ombinoo de date
(prim@lrc compoJ @
name (ten:eiro compo).
f ig " r " J 2 7
par te da chave padrlo
-nao ! parte da cheve
pilrt@ da ehave
-nao ! parte dl chave padra o
,
report ztx1211.
data: begin of it occurs 10,
date type d,
tot_sahs t ype p decil11als 2,
n!ll! (lO) ,
nlf.lt_sahs type 1 val ue I ,
end of i t .
'.
1
2
3
4
5
6
7
8
9 f t -date . ' 19980101'.
io 100.
11 f t -neee ' Jack'.
12 collect it.
13
14 i t - dat e '19980101'.
15 it-tot sales 200.
16 J 1m' .
17 coll ect i t .
18
19 f t -dete . ' ' 19980101'.
20 300.
21 it-name 'Jack '.
22 ccl'lect it.
23
24 it-date ' 19980101'.
25 i t-tot _sal @s 400.
26 tt -neee ' Jack' .
27 collect it.
28
29 ' 19980101 ' .
30 500.
31 it- name ' Jim'.
32 collect i t.
33
34 ' 19980101' .
35 1t - t ot _sahs 600.
36 it-name 'Ja ne' .
37 coll ect i t.
38
39 i t - dat e '19980102' .
40 it-tat_ules .7110.




collect it.
l!SIl


linha de c:abel;olho
coiled it.
linno de cabeljOlho
coiled it.
Flgurn 12
/J.5 chaves pac/roo
nevemenre nee
corresponc/emcom
nennumolinno, enroo
oulm Iinho Ii
ccescencee.
Flgu rn 12 1 2
A cnave podroo n60
CCHTesponde com
nenhumo"nho cle S5CI
vez. ent60 urno novo
linnaeocrescentado.
A linha 42 tambem faz com que uma nova linha seja acresce.otada a
t abela internal jii que os valores em date e nameDaO correspondem com
nenhuma linha de it (veja a Figura 12.13).
DIA lHABELlSIKTlRNAS AYAH\ADAS, PARTE 1 I 421

Figura 12 11
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 linno.
A linha 32 ecorrespondida na linha 2 e adiciona 1500I a t ot _sa1es e 1
a num_sal es (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) enrso
nova linha eacrescentada ao final ciatabela (veja a Figura 12.12).
-
=
i'
I
i
:
-
-
,
,. =i ,__

+
+
+
collect it.
\J9,9JtljJ }oo' ' 2
.y
eellect it.
ccrpc

I ) ;

.' 200'

"
coiled it.
linhode cobei71lho



3
.'
e@
'200"

,
F igurn 12 8
Na'lomente, 0 chave
podrtion oo e
focolizoc/o no tabelo,
entOoem/jnho
tcmbeme
ocrescentcc/o.
Fig urn 12 0
Dessc vez, 0 chcve
pac/r6o corresponde
com 0 primeiroIinho
c/o lobe/a. Os compos
numericos no 6reo de
trobo/ho s60
odicionodos nos
compos
correspondenles do
Iinha.
A linha 27 procura par uma linha com uma data 119980101
1
e urn nome
' Jack1 A Iinha 1 ea correspondente, entao 0 conteudc dos campos
numericos (tot_sales e num_sales) nalinhade cabecalho sao adicionados
aos campos numericcs dalink localizada (veja a FigUJ:' 12.10).
Fl g u r n 12 10
Novomente, a chcve
podroo corresponc/e
com a primeirolinho
do lobe/a. Os compos
numericC5 no area de
troba/ho sec
odicionodos nos
compos
correspondentes do
primeiro Jinho.
A linha 22 pesquisa a tabela intema quanta a uma linha que 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 adi-
cionados. 0 campo tot_sal es d.a linhade cabecalho contem 200. Esse
'valor eadicionado no campo t ot_sales na linha 1, dando urn tot al de
300. 0 valor no campo num_sal es na linha de cabecalhc e tambem
adicionadc no campo num_sales na linha 1. ciando um valor de 2. A
linha 1 eatualizada com esses valores. 0 conreudo da linha de ca-
becalhc permaneceinalterado (ve]a aFigura 12.9).
420 [ APRENDAEM21 DIAS ARAP/ .

IHABEUS IHIDHAS AVAII(ADAS, PARTE 1 I 423
....
-
Nao acrescente ou insiro as linhas, umo
par vez, se elcs podem ser processodos
como urn grvpo com 0 usc de i nsert
11nes of ou append 11nes of.
Nest e capitulo, aprendi vdrias maneiras de realizar tarefas se-
melhantes. No ABAP/4, parece que sempre existem muitas
maneiras de fazer a mesma coisa, Estou apenas apre ndendo.
Consigo me lembrar somente cia. existcncia de muitas maneiras
de se executar alga. Por que mio se mostra apenas a melbor
maneira e simplesmente se esquece 0 resto?
Aprecio sua pre ccupacdo. Quando possfvel, eu omi to metcdos
repetidos, raramente utilizados, ineficientes e arcaicos. Mas hi
du as raz6es muito boas para incluir as vari a;oes que descrevi
aqui : 1) eficiencia e2) compreensao do c6digo existente. Devido
aquantidadede dados que reside em urn sistema R/3J a eficicncia
ea principal preocupa!raoem programas ABAP/ 4. Voce deve se
esfon;a r em utilizar a for ma mais eficiente de em
urna det erminada situa!rao. 1S50 pode resultar em melhoras
drasticas de desempenho, nao some nte para seus programasJ
mas tambem para a sistema in teir o. Ecomum ter que regravar
o codigo depois que 0 mesmo a ji. que tera
o
o
Utilize 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 sendopreenchida. Essa inStnleraOtambem
pode ser utilizada para garantir a exclusividade de todas as entradas.
--=---------'-

Utilize a instn.u;60 free 00 finol de seu
progromo porn todas as tobelas
intemos. Essa ir6 llbemr
explidtomente 0 mem6ria que noo sere
mois vtilizado no momenta em que 0
usuerio estiver visualizondo a sardo.
Utilize 0 operador de corpo de tabelo
perc tester 0 existence de dodos.
Utilize a irutruc;co oppend sorted by
quando crior listos dos 10 melbcres, a
menos que a listo je existo e precise
apenos se r d os5mcqdo.
P&R
" "
"i'
I
I
j
=
Se voce utilizer col lect pa re od icionc r linhos a urnc tobela interna, e
todes as linhos deveriio set odidonodos com a usa de CD11ect. Voce
noo deve combiner coll ect com append au com quolquer outre
instrvC;60 que od iciono dodos em umc tabelo intemo. Os resultados
serec lmprevisfvels. A cnlcc instrur;oo que voce pede utilizer para
moclificor a cc ntecdc de urno tobelo lntemc preenc:hida otraves de
collect emodify . . t ransporting fl f 2 . " onde 11 e f2 sdc
compo s rurrnericcs somente (compos de chove noo podre o).
0 operador de corpo de eabela proporciona UIIU maneira eficienre de
eesnr quanto a. existencia de dados, comparar duas tabelas intemas
pan igualdade au duplicar urna tabela int erna.
A instrU<;ao descri be t abl e coloca 0 namerc de linhas da tabela
interna em sy-tfi 11, a largura de uma linha em byt es em sy-tl enge
o tamanho ciaclausula occurs em sy- t occu.
Para copiar 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 aousuariomodificar as dados eetambemuma uti! ferramenta
de
insert adiciona uma linha em qualquer posierao de uma tabela intema.
A pode ser especifi eacia urilizando urn Indice ou pode operar
na linha arual dentro de urn loop.
modify modifica a conreado de uma au mais linhas. A linha pede ser
especifi cada 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 linha atual. Voce tambem pode especificar
urn deice Iodice, uma faixa de rndices. au uma clausula where.
c1 ear it limpa a linha de 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
eXatamenteequivalente a c1 ear 1t [ ] . sera ut ilizada se a tabela interna
tiver que ser novamente preenchida com dados.
f ree i t exclui fodas as linhas de 1t e libera a mem6ria. Deve ser
colocada no programa imediatamente ap6s 0 termino do proces-
samento databeIa interna.
Resumo
422 I APif HDAEM 21 DIAl ABA1/4
E c c ... c .. . _
13
Freqiientemente no ABAP/4. os dados que voce coloca em tabela intema
pr oveem de uma au mais tabelas de banco de dados. Esta secao apresenta as
melhores maneirasde se fazer isso,
As rnaneiras de preenchimento uma tabela intema a partir de urn banco
de clados se dividememduas categorias:
Selecionar mdltiplas liahas diretamence para 0 corpo de uma tabela
interna
Depais de coucluir este capitu lo, voce sera capaz de:
Preencher uma t ahela int erna a partir deuma tabela debanco de dados
utilizando as est ruturas mais eficientes
Executar 0 processamentc de inte rruPIia.o de controle ern tabelas
intemas utilizando at e on change of
Preenche ndo uma tabela interna a parti r
de uma tabela de banco de dodos
Qbjetivos do capitulo
Tabelasinternas
Parte 2
!
I
'l
I
I
urn grande impacro no desempenho do sistema. Quanta ao se-
gundo ponte, as programadores freqa eceeccecee gastam mais
tempo Iendo a c6digo existence do que criando urn novo ccdigo,
assim sendo vocE: precisa comp reender as vOlriac;oes sum dessas
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 chegamao seu eseado presence ou como
pode-se chegar a uma det erminada salda.
o Workshop oferece dues maneiras de voce verificar 0 que aprendeu neste
capitulo. A Teste:oferece pergunt as para ajudar a solidificar seu entendi-
mente do conteudo abordado e a Exercfcic permite que voce pratique a
que aprendeu. Voce pede encontrar as respostas as perguntas do questionirio
e ao exercfcios no ApendiceB, "Respostas as pergunus e aos exercfcics".
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 tercei ra linha cont enha
US' (utilize modify transport ing where). AIem disso, modifique as regices,
alcerandoMApara TX (utilize modi fy transporti ngWh ere).
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 por
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
Exerdcio 1
Workshop
Teste
424 APREN OA1M21 OIAS AUPI4
.1IlI......lIIII.......lIIII......lIIII........_ ...._ ..._ .... .._ ...... .._ ..... --..___ __ _ _ _ - - - - _ - --
426 APREN OA EM 21 OI ASABAP/4 IH ABELlS 427
re port ztx 1301.
ta bl es ztx l fa 1.
dab i t l1 ke ztxl fa l occurs 23 "" ith header- li ne.
OORADA'" Ustagem 13.1 Este progromo as [inhos de uma te bela de banco de
,. dodos diretarnente pa ra umo tabe lo inferno
se l ect'" f ran zt xl fa l i nt o tab le i t .
l oop at it.
""ri t e: / 1t-lifnr , it-nallll!!l.
endloop .
-nllo cod1fica urra enesetect
I
,
3
4
S
6
1
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: it- name1.
15 endloo p.
16 free It .
NOYO..... Uma opertJ!;oo de arroy corresponde a qualquer instruc;60 que executa ume
TrulO " c cerccsc emmulti ploslinhas de ume tcbelc interne, emvezde ume unice li nhc
de coda VeL h ccerccses de arroysao sempre mois eficentes que as de umo
unica llnhc.
Para selecicnarmulciplas linhas diretamente pan 0 corpo deuma tabelaintema,
utilize aadi!fao into tabl eda instrucfo sel ect. Etaobtemas linhas selecionadas
e as coloca no corp o de urna tabela intema com urna tini ca operacfc conhecida
como oper:a!fio de array. Nenhuma areade trabalho sera utilizada, nem mesmo
sera necessaria.
Selecicnar uma tini ca linha pan urna area de trabalho e, em segui da,
acrescentar (append)
Selecionando multiples Iinhas diretamente para uma
tabela interna
sel ect i nt o t abl e ea mcneiru mois eficlente de se preencher vmc
tobe !o infemo a portir do banco de dodos .
o c6digo na ListagemId.I produz est> safda:
III
-
Z

..
Sintaxe da adic;oo into t able da instruceo seject
A seguir, veja a sintaxe da adiliaO 1nt o tabl e da instruljao sel ect .
fa) select
(b) 11 / 2 .
from dbtab 1nto [campos eor re spcndent es dl!!] t abI e t t .
onde:
dbtab a nome de uma tabela de banco de dados.
f1 e fZ sao dentro de dbt ab.
it e0 nome de uma t abela interna.
Os seguinres pontes se aplicam:
it pede tee uma linha de cabecalho.
Out ras adilj6es, como wheree order by, podem vir depois de ft .
endsel ect nac e utiliaadacom t nt c t able . select int o t abl enioinici:z.
urn loop, conseqiien'temente, endsel ect nso enecessaria.
A inStruljaO select into tabl e coloca todas as linbas selecionadas dire-
tamente no coepo de ft. Em primeiro lugar, a coareado da tabela intema
existence edescanado. A Listagem 13.1 contem urn program a de exemplo que
utiliza sele ct i nt o tab le.
IArDA
VI
1000
1010
1020
1030
1050
1060
1070
VIO
V6
va
V1l
V12
1040
IOSO
1010
2000
VI
V,
V3
V4
VS
V1
V2
V3
V4
VS
Code Now, Specs l at er l t d.
Parts Unlimited
Industrial PUAlPS Inc .
Chl!lllical Nation Lt d.
Ltd.
The Bit Bucket
Me:nory tane Ltd.
Fl ip My Swit ch Inc .
Duncan's Mouse Inc .
Anna Banana Ltd.
Smile When You Say That ltd.
Wei ner Schnl ttsel Inc.
Saur kroute n
Mot herboards Inc.
Sil icon Sandwich Lt d.
Consune Inc.
Moni to r s and Ma rl!! Ltd .
Quanti ty First Ltd.
Over Pri ced Goods Inc.
Fl uffy Bunnies l t d.
HoD 1ike a Cow Inc.
Wolfman Sport Accessories Inc .
Tile Breakfast Club Inc.
Over Pri ced Goods Inc.
Fluf fy Bunnies l t d.
Moo like a Cow I nc.
Wol fman Sport Acces sories Inc .
428 APlEMOA EM21 DIAl AUPH
'"
-

tables ztxl302.
. dati it l ike ztx1302 occurs s .


COIpO d. i t
n 12 13
iii
, 12 f3
coda hnhc de :tx1302
torno-se umo linhcnocorpo de it . .-
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
Figura 13 3
Nesse exemplo,
somente os dois
primeiros compos sea
seJecianodos do
tebelade bancode
dodosztx1302 pare
umtotelde bytes.
Eles 560 co/ceodos
byte porbytenos
primeiros iris bytesde
ceda linha de tt .
Figura 13 2
* faz com que todos
cs compos
selecionod04 em
m e,", do tobelode
banco de dodos
ztx1302. f /es se
aiustarn exatcmente
em coda Iinho de
tt. {6 que a
estrulurode i t
cofTesponde com a
estrvturo do tabala
de bancoda dodos.
Figu r a 13 1
Atebelade banco
de dodosztx1302
contem Irescompos:
f1,/2. f 3. f1 tem
urn linico byte,f2
fem dois bytese f3
/em urn byte.
Nco utilize order by com select into table. Emvez disso, utilize
sort no tobelc intemo.
Noo utilize endselect com sel ect into tabl e. Um errc de sintaxe
cccrrerc.

Os campos que voce seleciona devem se ajustar na tabela
interna
Imagine este exemplo:
Uma linha erecup erada de dbt ab.
Urna linha ealocada em t e.
A linha de dbt ab 6 movida, byte por byte, para a nova lioha em it.
Cada Iinha de dbt ab emovida, byte par byte, pArA urn. novalinha de it,
que eexatameate igual a atribuir uma St ring de campo para OUtra. H oi somente
uma diferenca entre esse procedimemo e uma 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_SELECT_TAB_TOO_SMALL)
ocorrera. Os tipos de dados e compriment os de cada campo de envio em dbtab
devem corresponder com 0 campo de recebimento em t t . Quaisquer campos
remanescentes em it sao preenchidos com valoresiniciais (espacos em branco
ou zeros). As figuras de 13.1 a 13.4 ilustram esse ponto.
Alinh. 5 recuperA todasASIiahasa partir da tabela de banco de dado,
zt xlfal e as coloca diretamente no carpa cia tabela interna it.Alinha
de: cabecalho nao eut ilizada e seu conteedo permanece inalterado.
Alinh; 10 esemelhante alinha 5, anao ser pelo fate de que elaapenas
recupera as mimercs dos fabricantes entre V2 e V5. a conreado
existence de i t edescartado antes de ser preenchida.
sel ect i nto table e clcssificccco
Suponha que seu prograrna ja a leirura dos dados pan uma tabela interna.
Se dadosprecisaremser classificados, utilize ainstruc; ao sort. Naoutilize
order byem sel ect , mesmo se esses campos foremsuporcados por urnIodice.
Em urn sistema independence media, test es de medicao revelaram que a
inStruc;a.o sort e urn pouco rom rapida, se estivessem em urn mesmo
myel, sort seria ainda 0 raetcdc preferido ji que essa instructo faz urn offload
dos ciclcs a partir do servidor de banco de dados pua 0 servidor de aplicativo.
_L.._ _ _ ~ _ ~ _ _ _ _ _ _ ~ _ _ _ _ -.J<_ .. ...-.. ~ . . . . - . . .-.
430 A/ RENDA EM21 DIAl ABAP/4
D ~ l U AiElAS lllTERNASlYAH(AIlAS, PAm2 431
FIgura ]3 4
Novomente. cs dais
primeiroscampos
sao sefecionodos do
Icbelode bancode
dodos ztx1302
mes,. eessc vez, em
uma ordem diferente
doqvelo em que
oporecem no 1 a ~ 1 o
intema. tssc fonS
com que as dodos
flquem donificodos
quando colocodos
byt. por by1e em
codalinhode t t.
ft -!I recebe 0
prlmeiro bytede/2
ett-JZrecebeo
ultimo bytedef2 e
um by1e de /I .
\
ATabela 13.1resume as regras para autilizacjo deselectcom into tabl e.
Os campos selecionados devem ajustar-se na ube1a intema. Esta tabela des-
creve ~ restrir;oes com as quai s voce ir.i se deparar.
ENTUDA'" Lista gem 13.2 a que acontecer6 sa as estruturos de tcbelc diferi rem
,. quando da vtilizol,;oO do instruc;oo sel ect -tnto
1 report ztx1302.
2 tables ztxlfal.
3 data b!gin of i t occurs 2.
4 i ncl ude structure ztxlfal.
5 datil.: fnvoice_amt type p,
6 end of ft .
I
8 select ... from ztxlfal fnto tab1l!: it where hndl .. ' DE' .
9 l oop at it.
10 write: I it-lifnr, it-landI, it-regfo, ft-1 nvoice_ilJl't.
11 endloop.
12
13 skip. .
14 select lifnr land; regi0 frtllll zu:1fal into table it wheN! landl .. ' DE'.
15 loop at ft .
16 "rite: I ft-mandt , tt-I tfnr, it-landI, ft -rtg1o.
17 endloop.
18 free ft .
o ccdigo na Listagem 13.2 produz est. saIda:
Tabela 13.1 Regros para a utiliza;60 de sel ect comi nto t able
As lisragens 13.2 e 13.3 ilustram esse conceito.
A linha 3 define i t como se tivesse todos os campos de zt xlfal da
estrutura do DDIC, mais urn campo adicional.
A Iinha 8 seleciona rodos os-campos de ztxlfal. Eles preenchem 0
ccmecc de cads linha em i t. Invoi ce_amt ! configurada como zero .
A linha 14 selecions Ii fnr land I e regt 0para a primeira. parte de cada
1inha de it. Enrretanro, it comega com eandt, nao lifnr, porque
ztxl fa l cia. estrurura DDIC corneca commandt. 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 1andl e que
regia estl vazio.
Vll DE 07 .
V12 DE 14
VB DE 03
o
o
o
DE_ ..97
OE 14
DE 03
VII
VI'
V8
INluSE
Atcbelc intemo deve conter
pelo menos o mesma
quontidade de campos que 0
tobela de ba nco de dodos e
eles devem ser semelhontes
005 compos do tobelode
banco de dodos.
Atobela Interne deve ccrneccr
com urn compo semelhante a
/1 cu ter openos tim compo e
ele deve ser semelhon te 0/1.
Restrlsoes
Tcdos csccmpcs no tobela de
banco de dodos
Quais campos
sao selecionados?
/ 1 do tobel o de banco de dodos
Sel ect *
Instruljao
Sel ect / 1
,.
. ' .. .
.'
432 APiENDA EM21 DIAS ASAP/4
begi n of itt occur s 23.
lifnr l1ke zt xlfaJ-lifnr
lifnr_l!xt like ztx lfal - l 1fnr.
landl like ztxlfal-landl.
end of t t l ,
begi n of 1t2 occurs 23.
l1 f nr like zulfa1-11f nr.
la ndl ltke zUlfaJ- Iandl .
end of tt2.
corresponding f i el ds executa uma otribuic;oo por campo, em vea
de uma unico atribuio pare 0 linho lntelrc , sendo ossim cd iciona
overhead ainstru o sel ect. Voce dever6 utiliro1a somente qua ndo
necess6rio.
Os seguintes pontos se aplicam:
A ordem des campos de envio e de recebimento ni o tern impcrdncia,
Os campos de envio que nso urn campo de recebimento corres-
pendente sao descartadcs.
Os campos de recebimenro que DaO tern um campo de envio ccrres-
pendent e permanecem inalterados.
A Listagem 13.4 mostra as eficientes e ineficientes dessa

e comprimento, voce poderf utilizar a adic;io correspo ndi ng f iel ds. Essa.
tem 0 mesmo efeitc da instrucao move correspondi ngem uma string de
campo: ela move as campos cia tabela de banco de dadcs para as campos com
o mesmo nome 'no corpo da tabe!a int erna.
1 report ztx1304.
2 tables ztx lfal.
3 data:
. 4
5
6
7
8
9
1D
11
12
13 + Esta a ett cte nte :
14 sel ect l1fnr landl from ztxlfd
15 into corresponding fiel ds of t able 1t 1
16 where l i f nr between 'VlO' and ' Vl 2'
17 loop at i t1 .
18 write: / ftl-lifnr, itt-Jandt.
19 endl oop.
20
21 + Esta il t nettctente r
Z2 select + f romzulfat
23 i nto corresponding f i el ds of t able i t2
fNTUOA.... Listagem 13:4 Utilizendo e edifice corresponding fi elds para
,. preencher tcbelcs internos e pcrtlr de banco de dodos
"esse I Wll cainpo com 10 cerecteres
"esse UII campo COllI 3 cerecteres
A linha 3 define uma tabela interna que tem dais compcaentes. 0
comprimento total de 1t e13 bytes.
9 seleciona t odos as campo s dez t xl fa l em i t. 0 comp rimento
total de todos esses campos tern mais de 13bytes. Coase quentemente,
urn dump curto ocorrers.
Ustagem 13.3 Seu proqrcmc produzir6 urn dump curto se voce tentor
colocor mois campos em umo tabelo interne dos que j6 existern nessc
lobelo
111. prtixilla ltnha causa. tJlI dtlnp curtc A tahe14 interna estreita dema1s.
select f ro. ztxl fal int o table it .
1 report ztxl303.
2 tables ztxlfal.
3 dat a: begin of it occurs 23,
4 l1tnr l ike zt xlfal l 1f nr .
5 landl 11ke ztx l fa l - la ndl .
6 end of it .
7
8
9
Utilizanda a correspondi ng fi el ds
Se os component 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

Fig"'" 13 5
Esm dump OJrto
ocone quando vod
t xectlttl' c ztx1303
de relot6rio. use
eeeerece Qvondo
seleoono mois
compos do que a
quontidode que SI!
oiusto no Iobe-Ia
interno.
o c6digo na Listagem 13.3 produz a saida como a que pode ser vista na
Figura n .s,
para a
"a l tnhe vai para a aree de t r abalho da tabela
padrlo
"observe que ' t abl e' OIlIiti do, dessa forma a
"lt nhe vet para a l tnhe de caber;alh o de it
"nl!;o hot ' into ' , dessa forma a li nha vai
"i rea de t rabalho da tabela padrao
"e, emseguida, e ecrescented e a it
report ztx1305.
t ables ztxlfal.
dat a it like ztxlfal occ!lrs 2 wit h header line.
"'Fa"a desta f orma
set ect > fr om ztxlfal i nt o it
where l andl ' DE'.
append it .
endsel ect.
1
2
3
4
5
6
7
8
9
'0
11 loop at it.
12 write: I it-l1fnr , i t -landI , ft -regio .
13 endloop.
14 refr-esh it.
'5
16 "Ou desta f orma
17 select'" from ztxlfal
18 wher e 1andl .. 'DE'
19 append ztx l f al t o it .
20 endsele ct.
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 desta f orma
29 sel ect > f rom ztxl fal
OIA 13, 'A'EIAS IHlmAS AVAH(AOAS, PAm, 43S
A Listagem 13.5 mostra alguns exeroplos da. utilizacjo de select para
adicionar Iinhas, uma por vez, em uma tabela inter na.
o c6digo na List agem 13.5 prcduz est a salda:
30 where l andl ' DE ' .
31 it = ztxlfal. "em segufda, e atr1bufda a l tnne de caber;alho
32 append ft .
33 endsel ect ,
34
. 35 skip.
36 loop at it .
37 write: I it-lifnr, it-la ndI , it'-r egie.
38 endloep-.
39 fr-ee it.
ENTRADA'" Listagem 13. 5 Utilizando sel ect com a lnstrucdo append para preencher
tobelas internes
; ..

o c6digo na Listagem 13.4- ptoduz esta sal da:


VIa cc
Vll . OE
vl 2 DE
VlO CC
Vll DE
V12 DE
A linha 14 faz a leitura dos campos lifnr e l and! a partir da t abela
zt xl fal para os campos 1i f nr e 1andl da t abela int ema t t i . A tabela
interna tern 0 campo 1i f nr_ext entre 1ifnr el and!, dessa forma vces
nao pcdera utilizar into tabl e. Se i t! exigir que os campos fiquem
nessa ordem, a de cor r esponding f ie lds sera apropriada
aqui.
A linha 22 seleciona eodos os campos da t abela zt xlfal para apenas
dois campos da tabel a i t 2. Isso eineficient e. Em vez disso, a linha 31
mcstra que 01 0 seleciona r apenas os campos necessarie s na ordem
correta, sera passive! utilizar i nt o t abl e.
. VI0 CC
Vll DE
Vl2 DE
24 where l ifnr between 'VIO' and ' VIZ' .
25 skip.
26 loop at f t t ,
27 write : / ttt -j ttm-, itllandl.
28 endloop.
29
30 ... Em vez disso, escreva :
31 selec t lifnr la ndl f rom zt xlfal i nto tabl e HZ
3Z where l i fnr between ' YlO ' and 'V12 ' .
33 skip .
34 l oop at ttz,
35 write: / it2-1ifm::, 1t2- 1andl.
36 endl oop.
37 free : ftl , 1t2.
A de select para adicionar Iinhas , uma pc r vez, requer 0 usc de uma
area de trabalho e de uma segunda instruclo, como append, insert ou col l ect.
Omirir a tabl efaracom que a linha seja atribufdaauma area de trabalho.
Ecomum urilizar a linha de cabecalho de uma ta.bela inte ma como uma area
de trabalho expllcita, Par outro lade, voce pode utilizer a area de trabalho da
tabela padrac (definida utilizando t ables).
ANALISE
SAloA
Adiciaoeoda liobes, limo pa r umo, ut il izoodo se] ect
ANAliSE
OIA lUABEUS IHTERHASAVAHIADAS. PARTE 2 437
Tabela 13.2 Variesformos de select preencher urno tebelo interno
Corpo
Corpo
Unho deccbeccihc
Unha deccbecelbc
Escrita 00(0)
D DE
D DE
o DE
Yl1
Yl2
V8
Nalinha11,a adiliiotable eomitidaantes de i t , sendo assim, alinha
vai cabecalho. 1i fnrvaipara it. lifnr e land 1 vaipan t t-1and l.
A linha. 7 acrescenta alinha de cabecalhc a. i t .
A linha 22 move as linhas para a area de nabalho ztxl fal. A linha 24
utiliza urna in5trutjao adicional - move-corresponding - a fun de
cransferir a area de trabalho para a 1inha de cabe..Iho it. A linha 25,
em seguida, acrescenta alinhade cabecalboao corpo de i t . Isso d.a 0
mesmo resuleadc da primeira instruljao select, mas envolve
instrllljao adicional e, portanto, emenos eficiente.
sel ect into table i t
select into corresponding f ields of table it
select i nto it
sel ect i nt o corresponding f ields of it
I nstfUljOo(oes)
o c6digo na Listagem 13.6produz esta saida:
V11 D DE
VI Z D DE
V8 D DE
2D
21 1I'Hao desta fonna:
22 sel ect " from ztlclfal
23 where 1andl 'DE I
24 move- correspondi ng ztxlfal 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 .row_i d. it1andl".
31 endl oop.
32 free ft.
A Tabela 13.2 contem uma Iistadas varies formas de sel ect quando utilizada
. comastabelas internas e sua. eficiencia pertinente. Sao apresentadas emordem
decrescente desde a melhor ate a menos eficiente.

Resurnindo seJ ect tabelas internes e eficimci e
N a linha 6l t abl e nao aparece antes de it, sendo assim as campos de
ztxl f alvaoparaalinhade cabecalhc de it. A linha8 acrescenta a linha
de cabecalho ai t .
Nalinha17, Ilia existe a clfusula into, sendo assimcadalinha val para a
area detrabalho databela padraoztxlfal. Alinha 19acrescentaaarea de
m balho zt xltal atabelainterne (a linhade cabecalho niloeutilizada).
A linha 29 coloca cada Iinha na areade trabalho ztxlfal . A linha 31
move ztx l fal paraalinhade cabecalho de i t antes de acrescentar. Esse
e0 metoda menos efi ciente.
into corresponding fi el dspedetambemserutilizado paracolccar dados
em uma area de trabalho em vez de no corpo cia tabela intema. 0 efeito e
se melhante ao ds inst'rur;3.0 eove-correspcndtnc e emais eficiente. A Listagem
13.6 mastra como.
1 report ztx1306.
2 ta bl es ztxlf al.
3 data: beq1.n of it occurs 2,
4 l i f nr like ztxlfal-lifnr.
5 row_1d like sy-tnd ex,
6 landl lik e zblfallandl . I
7 end of ft.
8
9 desta forma:
10 select l1fnr landl f rom zb:lfal
11 into correspondi ng fi el ds of it "obser ve que 'table' om1ti do
12 where l andl " 'DE ' ,
13 append it.
14 endseleet ,
15
16 loop lit H.
17 write : / tt-l tfnr-, tt-rov 1d. it-landl.
18 endloop . -
19 refresh ft .
ENTRADA.... Listage.m 13.6 Como 0 adi<;co corresponding fields 'pera a instru.;;ao
sel ect produz 0 mesmo efeito do instru.;;ao move-corresponding
436 APREHDA EM21 DIH AIAI/4
SAioA
Vll DE D7
Yl2 DE 14
V8 DE D3
Vll DE D7
Yl2 DE
" V8 DE D3
Vll DE D7
Yl2 DE
"
V8 DE D3
438 IIRENDI EM21 Di l l 1. 1// . IJ,TIBEL\S Im RHAS IVI N(AOO, lAm2 439
Utilizando as tabelas de exemplo 1fa l , 1fb l,
lfcl 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
utili zadas nos exemplos e exercfcios a seguir . Essas tabelas sao baseadas nas
eabelas deRl 3, que sao 1fal , 1fbI , 1fel e1fc3. Favor reviseras estruturas dessas
tabelas 'dentrc do DDIC, assim que ler as descricoes abaixo.
A SAP desenvclveu 0 &/3 a fim de secutilitivel por urn conglomerado
que consiste em mdlriplas empresas. Durante a inicial do R/3,
um ccdigc de empresa earribufdo a. cadaempress no conglomerado. 0 c6digo
de forma parte cia chave primaria emmuitas t abelas de dados-mestres,
que permreeac conglomera.do manter as de codas as suas empresas
em urn Unico banco de dados. 0 gerenciamento pede executar rela.t6rios para.
urn c6digo de empress individual, assim como relat eri os consolidados
abrangendc multiplas empresas.
A eabela 1fal ccntem as sobre fabricantes, que sao
ccrrentes em todas as empresas. Ignorando mandt, SU2 chaveprimdriaconsisrira
apenas em1i 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 comerciaIi-
zado'pela 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;aaFigura f3.6). Armazenados.dentro de 1fbl,
estao 0 numero da conta d.a emprcsa com 0 fabricante, 0 numero cia conta de
as sobre.impost os retidos, urn indicador de caIculo
de taxa de ;uros e assimpor diante.
Podehover12 au 13 perfodos de lcnccmerrtc em umana fiscal. lsso
edeterminadoquando 0 sistemaeiniciolmente configurado. Se hoover
13, entao somente trfls periodos de fl!chomento odicionois existirtio.
A rabela lfcl contem resultados de trans.<;oes do GIL especial. G/Ls
especiais ut ilizam uma ccnta alternativa de reconciliacac no Iivro-razac. Cads
linha de 1fc3armazena urn resume dos G/ Ls especiaisde urn ano fiscal inteiro
emtres campos: saldv, 50111 e habn1. Esses campos contern 0 balanlSo obtido
e encaminhado e 0 total de la.nljamentos de debito e credito durante 0 anofiscal.
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 modelo semelhant e
para suas estruturas 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.
A Figura. 13.6 representa a entre as chavesprimdrias 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 empress,
1fcl utiliza 0 mimerc do fabricante, 0 c6digo da empresa e 0 ano fiscal. 1fc3
utiliza esses mesmos campos, alem de urn indicador de GILespecial.
A tabela 1fc I contem os resultados das tnIls' ,oes do GIL (livro-razgo) .
CadaIinha 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, umNNhe umHNu erepecido 16
veees dentro de uma linha 1fcl. Cada urn dos primeiros 12 conjuntos concern
os Iancamentos de debito, Iancamentos de credito e vendas de um pertodo de
Iancamento (normalmente urn mes) do ano fiscal. Os ultirnos quaere conjun-
tos correspondem em periodos de fechamento adicionais utilizados para.
conter ajustes de contabilidade do finaldo ano .
campos de cnove prim6rio
A
,-__.A-__,\
F igura 13 6
Re/ofiOo os
cnoves primarios.
labelos-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 relat6ri o. 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 DIASABAP/4 DIA 1' , TABEUSINmNASAVAN\.lDAS,Pl m l 441
Utilizando as instruc;6es at fj rst e at 1ast
III
Z
S
m
...
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
at f i rst / endat
at 1ast / endat
at new / endat
at end of / endat
sum
on change of I endon
NOYO lilt... A primeiro instruo de coda urn desses poresde instruc;oo - exceto sum -
lERMO " controla quando sera exeanodo 0 c6digo que reside entre e les. Esse tipo de
controle dencml nc-se uma interrvpo de confrole. Seu prop6sito eexecute-0 c6digo
entre eles, sempre que uma condil;oo espedfico nos dodos , detedodo, durante 0
process omento do loop.
Utilize as insrrucoes at f i rst e at 1ast para executaro processamento durante
a primeira au a. Ultima passagemdo loop por uma tabelainterna.
Sinlexe des at f i rst e at 1ast
A seguir, veja a sintaxe das instru;oes at fi r st e at 1ast.
l oop at ft .
at f i rst .
endat
at last .
at first nio precisa vir antes de at last. A ordem dessas instrueroes
pede ser tr ocada.
Essas podem aparecer multiples vezes dentro do mesmo
loop. Por exemplo, voce pode ter duas instroljoes at first e tres
instrucoes at last deatro de urn loop e etas podem aparecer em
qualquer
Esses instrucces nio devem ser aninhadas uma dent ro cia outra (ou
seja, at 1ast njic deve ser colocada dentro de at f i rst e endat ).
Nso 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 ultimavez 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 comports de uma forma
semelhante.
Utilize at fi rst para:
Executar 0 loop do prccessamenrc de inicializacio
Escrever as [obis no ini'ciode um relat6rio
Escrever cabecalhos
Utilize at last para:
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 exempl o que utiliza essas
estruturas.
endat.
. endloop.
onde:
it euma rabela interna.
- -- represents qualquer numero delinhas de c6digo (ate mesmo zero).
Os 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.
EHTRlDI" Llsta ge m 13.7 Utilizanda at fi rst para escrevercabe<;al has e at l ast
,. para sublinhar a ulti ma linha
1 report zt x1307.
2 tables zt xlfc3.
J data it l1ke ztxlfc3 occurs 2S with header line .
4 select" from ztxlfc3 into ta bl e it where stlbkz 'Z' .
S loop at it.
6 at f i rs t.
7 wr1te: I ' Vendor' .
8 12 ' Cpny'.
. 9 17 ' Year ' .
10 22 'Bal c/F' .
11 ul1ne .
12 encat,
13 wri t e : I t t - It f nr,
-
- - - - - - -
442 AP.REHDA EM 21 DIAl AWl' DIA 1>. TABElASIJITERHASAVAH\ADA5,PArTE2 443
o c6digo na Listagem 13.7 produz esta safda:
Vendor Cpny Year Ba l elF
Utilizando 0 inesperado : va lores de componentes vazios
Entre at first e endat ou ent re at l ast e endat , as valores de compo nentes
da linha dairea de rrabalho nie conterso quaisquer dados. Os 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 as campos nao-chave serso
preenchidos com zeros, dent ro de urna instruljao at ou endat .
at las t .
write : I ' Inside "at last " :' ,
I i t -l1fnr . it- bukrs, 1t -9j ahr, it- shbkz. 1t - saldv ,
i t - solll.
i t-l1fnr ' XXXX' .
endat .
write: / ' After "at last" :',
I 1t-bukrs, i t . gja hr . it- shbkz. it -saldv,
it-soll l.
I ' Inside "at first ":',
I i t - l itn!" , 1t - bukrs. 1t - gj ahr . it-shbkz. 1t-saldv,
i t - sol n.
it- litnr ' XXXX ' .
endat .
write: I ' Between " at fi rst" and " at last ": ' ,
I i t-Hf nr , f t-bukrs. It-gjahr, it-shbkz, t t -saldv,
1t-sol11.
A lin.ha 4 seleciona urn registro de ztxl1c3 para it.
Denno do loop que ccmeca na linha. 5, a comeede da linha eescrito
primeiro. E1e e entao escrieo novamente dentro de um.a at fi:st e
endat . A salda mostra que os campos-chave padno ccntem astenscos
e as demais ccntem zeros.

o c6digo na Listagem 13.8 produz esta ,aida:
UiDl
Bef ore ' at f irst ':
1000 1000 1990 A 1, 000. 00 soe.oo
Insi de ' at fi rs t':
.......-.......... 0.00 0.00
Between ' at first' and 'at last' :
lDOD 1000 1990 A 1,000.00 500.00
Ins1df! ' at last' :
._..__..... .....
0.00 0.00
Aft er ' at last ':
l DOO 1000 1990 A 1, 000.00 500. 00
Listagem 13.8 Conteudo dos compos do tebelo intemo entre at e endat
1 report ztx1308.
2 t abl es zu lfc3.
3 data it l i ke ztxlfc3 occurs 1 wi th header line.
4 sele ct 11 up to 1 rows from ztxlfc3 into table it .
S l oop at it.
6 wr ite: I 'Before " at f irst ": ',
7 I t t- Htnr , tt-bukrs , tt- gj ahr , it-shbkz. it-saldv,
8 tt- sclll ,
9 at ff r st .
10 write :
11
12
13
14
I S
16
17
18
19
21l
11
11
23
14
15
16
27 endl oop.
28 fre e ft .
0. 00
5,000.00
4.000 .00
0. 00
1.000. 00
250.50
1.000. 00
1.000.00
1.000 .00
100.00
1.000.00
D.DO
----,.
' '.
it-bukn.
it- gj ahr,
i t - sal dv.
1000 1995
1000 1996
lOCO 199B
4000 1997
2000 1997
2000 1997
1000 1991
3000 1990
3000 1994
4000 1997
2000 1997
4000 1997
12
17
2Z
at las t .
write : /
12
17
11
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 0 conteadc de uma linha. Elas sao
executadas para cada linha.
A5linhas de 17 a22 sao executadas apenasn.aUltimaocorrencia do loop.
Esse exernplo escreve urn sublinhado ao final de cada uma das colunas.
1000
1000
1000
1040
1070
1090
VI
VI
VI
V.
V6
V6
"
15
16
17
18
19
20
21
22 eneet ,
23 endloop.
24 free it.
IHiu5E
-- - _...... -_ . -
444 AmMoA EM 11 DlAS ABAPH
DIA13: TABB.AS PAiTE2 445
Utiljzaodo as i nstruC; 6es at newe at end of
A linha 13 atribui urn novo valor para t t - l i f nr.
Depois de endat na linha14, a salda mostra que to dos a s valores foram
paraa area de trabaIho. As alteraCjoe.s na linha de cabecalho
feitas deatro de at / endat sers o perdidas.
A linha. 18 mostra que at l ast exibe 0 mesmo compo rt amento.
A linha. 27 sai do loop na primeira passagem para mant er a. salda
simples.
Utilize as at new e at end of para deeecear uma 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 at new e at end of
.A seguir, veja a sintaxe das at new e at end of .
sort by c.
loop at f t .
at n@w c.
endat ,
at end of c.
endat.
endloop.
onde:
tt euma tab ela intema.
c eurn componente de it.
- - - representa qualquer mimero de linhas de c6digo (at e mesmo zero).
Os seguintes pontos se aplicam:
Essas instrUCjoes podem apena.s: ser utiliz.adas dentro de loo p at j elas
nao podem ser utili zadas den tro de sel ect.
at new nao precisa vir antes de at end of. Essas ins t ruCj oes podem
aparecer em qualquer ordem.
usasinstrUCjoes po dem aparecer multiplasvezes dentro do me smo loop.
. Par exemplo, voce pode ter duas insuuCjoes at new e tres ins tIUCjOes at
end of dentro de um loop e elas podem aparecer em qualquer ordem.
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 para essas ins troCjoes.
Ulilizondo at new
Cada vez que 0 valor de c for alteradc, as linhas de c6digo entre at new e endat
serio executadas. Esse bloco sera tambem executado durante a primeira pas
sagem de loop au se quaisquer campos i esquerda de c forem alrerad cs. Entre
at e endet , as campos numericos i direita 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
comporta uma forma semelha.nte.
.oYO lrrrl... Urnnfve/de contro/eco rresponde 0 0 cornponente identificodo em umc
TEDO r de interrupt;c5o de eontro1ei ele regulo 0 interrup;c5o de controle..Por exemplo,
no seg uinte frogmento de c6digo, f2 eurn nivel de eeeecle porq ue oporece no
at new.
loop at it .
at new f2.
"( deve extsct r alg l,lll cOd1go aqui )
endat.
endl oop.
Dizemos que uma ineerrupcao de controle sera acionada se 0 nfvel de
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 alt erado. Portanro, voce
deve definir a estrutura cia tabela interna para cornelia! com as campos que
formam seus nlveis de controle. VatS tambem deve classificar por t odo s os
campos antericres a c, incluindo c.
Entre at e endet, as campos nurnericcs adir eita do nfvel de cont rol e serio
zero e os campos nao numericcs serso preenehidos com ast erisco s.
As figuras 13.7 e 13.8 ilustram a de at new.
Este programa fomeee urn exemplo pritico da.s figuras 13.7 e 13.8. Ele
ilustra a ponto em que uma de controle sera acionada, sempre que
a mvel de controle for alterado au qualquer campo antes do nfvel de contraIe
for alterado.
447
1 A
3 A
1 8
I 8
o codigc na Listagem 13.9 produz esta safda: .
1
2
3
22 write: /itn. a-fl.
23 endat .
24 endlecp,
25 skip.
26 sort it by fl f2. "i t agora se perece com a Figura 13.8
27 loop at it.
28 at new fl.
29 write: /it-fl.
30 endat .
31 at new f2 .
32 write: /4 i t -f2.
33 endat .
34 endl oop.
35 f ree i t .
SAIDI
_ -:.. ..
f2 contern urncstertscc,
porque it se enccmrc c
direito do nivel de ccntrcle

Scrdc 1
2
3
Sardo: 1 A
3 A
I B
2 B
eentecde de it
11 f2





0;

:W
@B
--
conteVdo de it
fl 12
Figura J 3 a
Estofigure mostroque
o nrvel de centro/e
odo node quando12
ou11 Ii a/teredo. 'sse
ceenrec e porque 11
vem antes de /2 no
eslruturo de it.
,7; < J 3 I
&to figure mostra que
o n!velde controle
odonodo quando 0
va/orde II e
alteredo. elisso.
etamostro que12
contem um osterisc:o
dentrodo inlel11Jpo
de contrele (entre at
e endat).
EN1lADllli. Lislagem 13. 9 0 c6digo nosfigures 13.7 e 13.8 ereproduzido emum
r exemplo pr6tico
A
B
i
I

..
.-.
.
.

1 report 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 .
15 write: / it- fl, u-rz .
16 endat .
17 endl oop.
18 skip.
19 sort it by f 2. "it agora se perece cocn a Figura 13.8
20 loop et it.
21 at new f2.
8
A
A linha 12 c1assifica it por f1. Na liaha 14, at neweacionada na
primeira ocorrencia do loop e sempre que f1 ealterado.
A linha 19 classifies it per f2. Na liaha 20, at new eacionada na
primeiraocorrencia do loop, ou sempre que 0 valor de f1 ou f2 seja
1550 acontece porque um nfvel de coatrole sera acionado
sempre que f2 for alterado 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
sempre que 0 valor de fl ealterado e na linha 31, at newe acionada
sempre que fl ou f2 ealrerado.
,'. ;;".:
"1'.
448 AmMOA E. 21 OIASAlAP/4
DllIH\IIEUS IIrnWSA'IJIIADAS,PAI1l7 449
A Iinha 12 classifies i t por f l.
Na linha 14, at neweacicnada sempre que f1 ealterado.
Na linha 1B, at end of sed acionadase 0 nfvel de controle for alterado,
quando a pr6xima linha for Iidaou se essa for a ultima linha.
Noo utilize as instrur;6es de interrup o de controle dentro de umc
\..CUldado estrvturo l oop at i t where j 05 efeitos imprevisiveis.
endat.
,....
onde:
-- - qualquer mimero de liohas de c6digo.
1 report ztx 1311.
2 dati: begi n of it occur s 4,
3 fl.
4 12 type t ,
S 13- typl!: 1.
6 end of it.
7
8 1t fl" 'A' . it-f2 " 1. i t f3 " 10. apPl!:nd i t .
9 it-fl" ' s'. 1t -f2 " 3. i t f3 30. append i t .
Sum calculaurn total dovalor arualdo ntvel de conerole que acontem. Isso
ficm mais clare se YOCe considerar que essainstrul$io faz a seguinte:
Localiza codas aslinhas que tem os mesmos valores dentro do campo
de nfvel de conrrole e toda s as campos aesquerda dele.
Soma cada coluna aumerica adireita do nIvei de contrcle.
Coloca os totals nos campos correspondences d.a area de crabalho.
A Listagem 13.11 ilustra essa
Usta gem 13.11 Utilizcndo a instruc;oo sum porc cclculcr as tatais de urn
nivel de- contrale
Utilizeainsuu!rao sum paracalcular os totaisdas linhasde umnivelde controle.
Sintexe de sum
A seguir, veja a sincaxe da instrucao sum.
at f1 rstf1 ast/nl!w/I!nd of .
Utilizando a sum
_
o c6digo Listagem 13.10 produz em sald.:
start of: 1
I
1
end of : 1
st ar t of ; 2
I
I!nd of: 2
st art of: 3
3
end of: 3
Usta gem 13.10 Como at new e at end of sao ocionados pelos
clteroc;oesde compo e de nfvel de ce ntrale
report ztx1310.
data: begin of it occurs 4,
fl.
fl.
end of i t.
I
I
3
4
5
6
7 i t ' lA' . append t t . "Preen che it com dado!
8 it .. 'JA' . append ft .
g it .. 'lB' . append 1t .
10 it '28' . append it.
11
12 sort it by fl .
13 l oop ' at it.
14 at new fl.
15 wri t e: I ' st art of:' , it-flo
16 endat.
17 wri te : / 4 f t af l.
18 at end of fl .
19 wri te : f' end of: ' . it- f lo
20 endet
21 endl oop.
22 free i t.
Utilizende at end of
As linhas de c6digo at end of e endat sersc executadas:
Se 0 nivel de controle for alrerado.
Se qualquer campo antes do nfvel de cont role for alteradc.
Se essafor a Ultima linha cia eabela.
A Listagem 13.10 iIustra essa instrucao.

450 APRENDA EM 21 D1AS ABAP/4
DlA 13: TABEUS INTERNASAYAHVo0AS, PARTE 2 451
10 1t-fl .. 'A' . 1t-f2 .. 2. it-f3 " 20. append i t.
11 .. ' 8' . it-f2 s 4. it-f3 .. 40. append i t.
12
13 sort it by flo Mit agora se pare ce com a Fi gura 13.9
14 loop at it.
15 at new fl .
16 SlII1 .
17 write: I ' total:' . it-fl, it-fl. it- f) .
18 endat .
19 write: / 11 it-f2, it-f3 .
20 endloop.
21 free it .
ANTESde sum
DEPOISde SUIl
f1 12 13
centecdes de 1t
conteudos do linho
de ccbecclhc
ccntecdcs do ltnhc
de cobec;alho
sort i t by flo
loop at it.
at neW' f L
sum.
wri te I
endat
endl oop,
onde:
vl, e v2 sao no mes de st ring de campo ou variavel.
[else,
---)
endcn.
Sintcxe de on change of
A seguir, veia a sintaxe dainstrucf o on change of.
on change of v1 [or v2 ] .
Uma outra instrucio quevoce pode utilizar para executar 0 processamento de
icterrupcso de controle ea on change of , Tal instru; ao se comport a de uma
maneira seme lhante a at . new.
III
-
Z
S
m
T
Fi gura 13 10
Esta figure mom 0
que cccrre no
segundo vee que a
intelTUpo
centrale eodonodo e
o ins1nlo sum e
ex.ewtodo.
Utilizando a i nst ru<;60 on c hange of
Flgu rg 13 9
Esto figure i/ustrtr 0
que occrre no
Listogem J3.1 J. Na
primeiro ocorrencia do
loop, a infelTU(Jf;oo de
controlee odonodo e
o instrvo sum e
execvtodo. Todos os
linhasque h!m0
mesmovalor do ntvel
de centro/esao
locolizados e cs
compos numericos Q
direito do n(vel de
controlesao somodos
no area de trcbolho.
A soma pode resulter em overflow (estouro), por que 0 totol ecolocodo
em um compo do mesmo compriment o. 0 overflow fez com que um
dump curto ocorra 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.
a c6digo na Lisragem 13.11 produz est a saida:
total: A 3 30
1 10
2 20
total:B 7 70
3 30
4 40
A linha 13 classifica i t por fl em ordem cre scent e. 0 ccnt erido depois
da classificacao aparecera da forma como mostrado na Figura 13.9.
Na primeira ocorrencia do loop, a c6digo entre as linhas 15 e 18 e
executado. 0 nfvel de controle contem 0 valor I A I .
Antes de a linha 16 ser executada, as campos cia are a de tra balho a
direita do nfvelde controle irsc conter zeros. Ainstru/.iao sumlocaliza
todas as linhas adjacentes que tern urn 'AI em fl. E1a soma as colunas
numericas adireita do myel de contrale e coloca 0 result ado na area
de trabalho (veja a Figura 13.9).
Na segunda iteraliao do loop, at newnao eacionada.
Na terceira iterali2.0 do loop, f1 contern IB
I
e at new (linha 15) e
acionada.
Antes de a linha 16 ser executada, os campos cia area de trabalho a
direita do nfvelde controle irao cont er zeros. A instrucio sumlocaliza
todas as linhas adjacenres qu e t ern urn I BI em fl. Ela soma as colunas
numericas adirei ta do nfvel de controle e colcca 0 resultado na area
de trabalhc (veja a Figura 13.10).

sliol
452 APRENDA EM 21 DIAS AWl !
D1A 13, TABELAS INTERNAl AVAN\ADlS, PArn2 453
v
.J

Compoavxilior
global perc jff2

- . . .. '
Compo ouxilior
globel poro af2
Compo ol,lXiIlor
globel porc nf2
_ . t. '
as 'conlll(idos de itf2 soo copiodos
perc0 compoouxilior, e os inJirulls
dentro s60 executodos.
Ne segundo passegem pelc itf2
e es conteudos dos compos auxtho res
sao os mesmcs, ent60 on change of
. nco eocionodo.
No primeiro possogem pelo loop, itf2
diferedes conte(idos de comp05. oux.iliores,
en!l3oon change of 6 aclonado.
lt
11 !2
U
11 !2

SiHI



0
WI! m
"


. J6 que os compos eudllcres globeis nco existemfora de urn loop, voce
nco pode utilizer on change of fore de urn loop.
Figura 13 13
Esser e0 segundo
possogemde loop. 0
confeudodo campo
auxilior e
correspoodido e on
change of nco
acionode..
Sempre que on change of far executada, a conteudo de seus sera'
comparadc com 0 conteudc dos campos auxiliares globais. Se diferentes,
on change of ser a acionada e as campos auxiliares serio atualizados com .05
novas wares. Se forem as mesmos, 0 c6digo denrrc de on change of nio sera.
executado.
Esse conceito egraficamenre ilustr ado nas figuras de 13.11 a 13.16.
FlgurR 13 '2
Quando on change
oj eacionado. 0
compo auxiliare
atvolizado.
Figura 13 11
Esseea primeira
de umloop
coma utilizoo de
on change of.
c
O s seguintes pontes se aplicam:
0 V2.1or de qualquer uma das variaveis (vI, v2e assim pa r diante) for
alt erado de urn teste para a outre, as instrucdes depois de on change
of sersc executadas.
Se nenhuma alteracio for detect ada e el se for especificada, as ins-
depois de el se serso executadas.
on change of difere de at newnos seguinces aspect os:
Eta pode ser utilizada em qualquer estrutura de loop, nao apenas em
loop at. Par exemplo, pode ser utili zada dentro de se l ect e endsel ect,
do e enddoau while e endwhile, bern como dent ro de eventos get .
Uma unica on change of pede ser acionada por uma alt eraCjao dentro
de urn au mais camp os identificados depois de of e separados par or .
Esses campos podem ser camp os elementares ou strings de campo . Se
voce estiver dentro de urn loop, esses campos nao precisarao pertencer
ao loop.
Quando utilizada dentro de urn loop, uma em urn campo a.
esquerda do nivel de controle nao acionara uma interrupcfo de con-
t role.
Quando utilizada dentro de urn loop, as campos adireita aindairao
conter seus valores originais; eles nao sao alterados para zeros au
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 ficado(s) depois de of.
Quaisquer valores aleerados dentro de on change of permanec erf o
alterados depo is de endon. 0 ccnteudo da linha de cabecalho nao sera
restaurado jaque pertence a at e endat.
. . . indica que qualquer mime ro de condicees or poderf vir em
seguida.
representa qualquer ntimero de linhas de c6digo.
o que he per Ires de on change of
Quando urn loop comeCja a execucao, 0 sistema cria urn campo auxiliar global
para cada camp o ident ificado em uma instrucfo on change of contida pelo loop.
Na criat;ao, esses campos recebem valores ini ciais padrao (espacos em branco
au zeros). Ele s Sao esvaziados quando do termino do loop.
r:
append it.
append it .
apllend it.
append it.
' '11 '.
'X' .
'y' .
' Z' .
it-f3 .. 11. itf4 ..
it-f3 .. 22. i t -f4 ..
it.f3 .. 33. it-f4 ..
it-f3 .. 44. it-f4 ..
DlA TABELl51HTRHAS PAm. 2
Usta gem 13.12 Utilizcndo on change of de duos mcneiros diferentes:
dentro de loop at e dentro de sel ect
report ztx1312.
tables zo.lfal.
data : begin of 1t occurs 4,
f1 type i
12.
f3 type i,
14.
end of it.
1
2
3

5
6
7
8
9
10 it-fl .. 1. 1t -f2 .. ' A' .
11 un." 3. 1t-f2 .. 'A'.
12 1t.fl .. 1. 1tf2 .. 'A'.
13 tt.f1 .. 2. tt-f2 .. 'A' .
14
15 loop It it.
16 on change of it-f2 .
17 write: lit-fl, 1t-f2, itf3, it-f4.
18 enecn.
19 endloop.
20 write: I 'End of
21
22. executando 0 IIll!SlI'IO c6digo noulllente - 0 CaJqJO aux ainda ' A'
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 else.
30 write : I ' en changl! "of not t rigge r ed for row', sy-t1bix.
31 endcn,
32 endloop.
33 wrtte: I 'End of loop'
3'
35 .reconf1g\,lra 0 campo aux para espal;os em ereecc
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 ,
46 endloop.
47 write: I 'End of loop'.

I
I
Compo ouxi lior
global pera itf2

Compoouxiliar
global porn iff2

o cent.Ucla d. jf.1'2 ecopioclos
pa ra 0 ca mpo ouxilior,e OJ
instnJes demn;l s60 executcdcs.
Nol1/timo pOssogempelo loop, itf2
O! c:::omeUdos de camposauxiliares
160 os mesmcs,enIOoon challge of
n60 eodonodo.
No.Ierceiro possogempelo loop, it-f2
dllere dos ccraecdcs dos compos
ouxiliores, enlfio an change, of
, ocionodo.
Eig u rp 13 14
Esse e0 lerceiro
possogem de loop.
On change of e
odonodo.
Utilizando on change of
A Lis tagem 13.12 ilus t ra a utilizaC;i o "de on change of.
Fi gura 13 1 5
,4qui, 0 campo olJrilior
eatUolizodo.
f lu u ra 13 16
Esta ea quorlo
possogem peto loop.
On change of nee e
ociona do.
454 AP IENOA EM21 DIAS ABAP!4
456 ' mNO' EM21Di Al ,",P/ 4
OIA lU'BELlS INTIl<NAS""'\AD'" PARTE 2 457
Em um ambience 3.0F e posteriori 0 c6digo na Listagem 13.12 produz
esta safch:
48 f ree it.
4'
50 sel ect" fnn zb:l f l1 where land! .. 'US'.
Sian change of zt xlfal1andl.
52 write: I ' l andl"' . zt xl f al - la ndl.
53 endon.
54 eeeset eet ,
55 write: I ' End of sel ect ' ,
56
57 "executa r I IM!!sma sel ect novamente sen lima f unciona be'll
58 select .. fran , t x1fal wheN! landt .. 'US' ,
59 on chang! of ztxlfal - landl.
60 write: I 'landl-'. ztx lfal - l and!.
61 endcn,
62 endsel ect.
63 ...r ite: I ' End of sel ect.".
o c6digo na Lisragem 13.13produz est>safda:
Utilizando 0 pe rigo oculto em on change of
Na primeira ocorrencia de urn loop, a campo auxiliar global ecriado com
valores iniciais {espacos em braccc ou zeros). Se a primeiro valor em urn loop
for am espa!i0 embranco au zero. on change of aia sera acionada. A Lisragem
13.13 ilustra esse problema e oferece urna solulj-a.o.
A tabela interna nio eutilizada depois da linha 31, enta.a aqui it e
esvaziada. Isso exclui todas as linhas e libera a mem6ri.a.
A linha 33 selecicna todas as linhas de zt xl fal na ordem de 1andl.
Embora essa instru!jio sel ect retorne 23linha.s, como pode ser vista
pela ultima linha de safda, somente cinco valores exclusi ve s de 1andl
existirio e serso escritos.
Ustagem 13.13 linha do loop #1 noo adona on change of
1 report ztxl313.
Z data: begin of i t occurs 4,
3 f1 typl!!! i ,
4 end of i t.
5
6 it.fl - O. append it:
7 1t-f 1 - 3. apPl!!! nd it.
8 1t-fl - 1. append t.t..
9 1t f1 2. append it.
10
11 l oop at it. "loop 11
12 ert t e: I 'aanew row
aa
' , 12 i
13 on change of i t - fl .
14 write : I 'fl changl!!d: " lZ it-fl.
15 endcn.
16 end'lccp .
17
18 skip .
19 l oop at it. "l oop 12
ZO wt-t te : I 'a- new row
n
' I 12 i t - fl.
Z1 on changl!! of it-flo .
22 write : I 'fl changed:I. lZ u - rr.
Z3 el se,
24 if sy-tabix a 1.
zs write: I ' fl changl!d:' . 12 it-flo
26 endif.
27 endcn.
Z8 endl oop.
Zg f ree it.
2
3
4
1 All "
End of loop
l oopi ng wit hout a reset
on change of not t ri ggered 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
End of loop
l andl - US.
End of sele ct
landt- US
End of select
As linhas de 10 a 13 pre enchem a tabela interna com dado s. i t - f2
contem a valor I AI em codas as quatro linhas.
A linha 16 escreve cada linha assim que ela eprccessada.
As linhas 17, 20, 23 e 26 sao acionadas na primeira ocorrencia do loop .
Issc acontece porque os campos auxiliares conrem zeros ou espacos
em branco, entac diferem dos valoresna primeiralinha. Os valores cia
primeira linha sao copiados para as campos auxiliares e as valores sao
escrit os pew ins t rucoes wri teo
A linha 20 nao eacionada novamente porque em todas as passagens
de loop sobseqaenres, o valor de itf2 eIAI eo campo auxiliar global
tambem contem I AI Observe que uma alteralj-ao no valor :a. esquerda
de f2 moacionari on change of como ocorre com at new.

458 APR EMOAEM21 DI ASABAPl 4
SAiDA
-new row.... 0
new row". 3
fl 3
newrow"' '' I
fl changed: I
....new row=" 2
fl changed: 2
....new row....
0
f1 changed ; 0
....new row"" 3
f1 changed: 3
"new row I
fl changed: I
"new roW""'" 2
fl changed: Z
A primeira parte deste capitulo parece colocar muita enfase na
eficiencia, Estou apenas aprendendo e consid ero todos esses
metodos confusos. Issc realmente faz muita di ferenca, ou voce
esci se prcocupando com minucias!
Nco utilizesel ect e append. Sempre que posslvel, utillzesel ect into
table.
Nee utilize order by com se lect into t abl e. Em vee dnse, utilize
sort no tobela lntemo.
o
!3,TABElAS IMTIRMAS PAm2 459
Para ser precise, a largura de uma linhada eabela int erna em bytes deve
ser maier que au igual ao ndmero total de bytes de todas as colunas
selecionadas a partir d.a tabela de banc o de dados para a t abela ineema,
Se a Iinha da tabela interna for mais larga, as cclunas selecionadas d:a
tabela de banco de dados serso preenchidas com os byte s mais a
esquerda de cadalinhada tabela intema, Os bytes remanescentes serso
configurados com os valores iniciais padrao.
Utili ze a adiljao i nt o corresponding f iel ds se as campos da tabela
int erne estiverem em uma ordem diferent e ou estiverem separ ados urn
do outre par campos nao selecionados da tabela de banco de dados.
Utilize at e endat para acionar 0 processamento "baseado em uma
aIteraljio na coluna de urna tabela inrern a ou qualquer coluna asua
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 processemento
baseado em uma altera<;ao em uma das colunas selecionadas .
P&R
Em versses anteriores a 3.0F, somente as instrut;oes sel ect e get
reconfiguram oufomoticamenfe as campos ouxlhcres globois. Entre.
fonto, se voce mesmo as reconngurar, sera posslvel utilizor on change
of em quolquer tipo de loop. Utilize esse c6digo "para executor a
reconfiguro<;;:60: c1ear fl . on change of fl. endon. deor move os
volores iniciois para fl. onchongeofcompara fl com 0 compo cuxlllor
global. Se forem diferentes, a on change of vozioscbrescreverc it com
vclc res iniciois. Utlllre-c para preenche r as ccmposcuxlllores cam
quolque r valor de f l.
As linhas de 6 a 9 preencbem a tabela interna com qu atro linhas. 0
valor de i t -fl na primeira linha ezero.
Na linha 13, a primeira passagem de loop nao aciona on change of ,
porque 0 campo auxiliar global contem zero .
-As linhas 23 e 24 [oram adi cionadas ao loop #2 para derectar 0 erro.
Observe que at fi rst nao pede sec utilizada para detectar esse
problema, jaque todos as camposnumericos na areadetrabalhoserdo
configurados como zero dentr o de at fi rst e endat.
AHluSE
Resumo
Uma oper acao de array ea maneira 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 corpo ciatabela interna
sem utilizar quaisquer areas de trabalho. Eimplementada atraves da
adiljao i nt o tabl e na instruljao select.
A tabela interne deve ser suficientemente grande para acomodar as
colunas po r .voce selecionadas a partir cia tabela de banco de dados .
o
A experiencia ensinou-me que os alunos que aprendem corre-
tamente pela primeira vez ganham muito. Em geral, os pro
gramas em ABAP/4 processam uma enorme quanticlade de
dadcs, portanto, par infelicidade, urn a c6digo facit " frequen re-
mente results em "overhead over head overhead". Se voce
aprender apenas os merodos facei s no in fci o, eles se tornarjio
hsbiros e serac diftceis de se descartar. Urn c6di go pobre afeta
o desempenho de seus programas e do sistema.
460 APREHDA EM 21 DIAS ABAPI4
Workshop
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A se!raoTeste ofer eee perguntas para. ajudar a. sclidificar seu entendi-
men te do conteu do abordado e a. sc)3.0 Exercicio permite que voce pratique 0
que aprendeu. Voce pede enconerar as respostas as perguntas do Testee aos
exercicios no ApecdiceB, "Respcstas is perguntas e aos exercfcics".
Teste
1. Quais sao as mores dos campos adireiea do nivel de controle entre
as instrucdes at e endet!
Exerdcio 1
Copie 0 programa ztxlllOpara e1301. Altere-c de modo que se uma lioha
for lccali zada e 0 comeedc de quaisquer campos na linhalocalizada diferir do
que existe na linha de cabecalhc, a linha localizada seja sobrescriu com 0
conceudo arual da linha de cabecalho . A saida deve se pareeer com a seguinte:
10 1 XX 1
. 20 2XX 2
3 n 3
40 4XX 4
50 5 XX 5
Dica: Utilize a comparing na rea d tabl e.
Exercicio 2
o pr ogra ma a seguir preduz urn dump CUrto. Descreva c pr oblema. copie (,
programs para e1302 e solucione 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 int o table it.
loop at it .
write: / tt -If rnr-,
t t -I endt .
endl oop.
Dia 14
A wr; te
Depois de concluir capitulo. voce sera capaz de:
Enrender 0 efeito dos tipos de clades na safda
Utilizer as ops:oes de formata!jio, da wri te
Utili zar as safdas de conversio e deeecrar sua presen!ji dentro de
dominies
Eormoto\; fi o e comprimentos podrOo
Se voce nao especificar quaisquer 0Pfioes de au comprimenro
quando utilizar a instru!jaa write, 0 sistema adocad. urn comprimento e formate
padria baseados no tipo de dado de cada variavel escri ta. As seguintes sece es
descrevem esses padroes. .
Compriment os padrijo
MOYO .... a comprimento de saido de um campo corresponde 00 n(imero de ccrccteres
TEUO r vtilhcdcs pora 0 exibiioo do valor dcq uele compo . 0 comprimento de scfdc
eutilizodoperc instruicO wr1te a fi mde alocor espccc no listode soldo poreum compo.
Os compos definidos dentro de urn progroma por meio do data tem urn
comprimento de sctdc padrOo, como pode ser visto no Tabelo 14. 1.
hl1p:II_.compus.com.br
Tabela 14.1 o tipo de dodo do ABAP/ 4 determino 0 formata e 0 comprimento de
sofdo podr6o
Dado Alinhamento Fonnato Sinai Comprlmento
de tipo de seida
padrilo
1 Adireito Zeros sup rimidos Finol 11
p Adireita Zeros suprimidos Final ou
(2'fldlenl+1
f Nenhum cientffica lniclcl 22
n Adireito Zeros inidois Nenhum fldlen
mostrodos
c Aesquerda Espo;os em bronco fldlen
iniciois supri midos
d Aesque rdo Determinado pelc 8
pcdrec do usu6rio
t Aesquerdo HH,MM,SS 6
x Aesquerdo 2'fldlen
-------
Fig u r a 1 4 1
Os campos Decimal
Places.,Output
lengthonufom 0
padroo herdodo dos
IipO$de dodos do
/>YPi<.
---_._- _ ._--- - - -
lU INSTRU(iO WRITE I 463
Ta bel a 14.2 Comprimento de scrdo podrao para os campos deci mals
ccmpoctodcs
a format o padrjo derivado do tipc de dado da variavel. A Tabela 14.1
descreve co mo a saida sera. fonnatada para cada tipo de dado do ABAP/ 4. A
saida de campos numericos (ripos p, f e f) ealinhada adireita com zeros inici ais
suprimidos e para 0 restant e e alinhada a esquerda. adicional
especfficaao tipo tambernse aplica,
a s campos do Data Di ctionary tern tipos de dados do ODIC, como DEC,
CHAR. CURR e assim. por diante. Todas eles sao baseados em tipos de dadcs do
ABAJ'/4 e herdam 0 formate e 0 comprimento padrao do tipo de dado do
ABAJ'/4. Para determinar 0 tipo de dado do ABAJ' /4 e, por conseguinte, 0
formate de safda padrao, consulte a documentacao de palavra-chave do
AJ!JAP/4 quanta ainstruljao tables. Para isso, colaque seu cursor em uma
instruc;io tabl es decrro de seu c6digo e pressi one 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.
o comprimento de safda e as casas decimals si o herdados por todos os
campos criados a partir de :LIm dominic. Por exemplo, na Figura 14.1. 0
comprimento do campo e15, indicando que 15 digitos podem serarmazenados
em qualquer campo utilizando esse dominic. 0 compriment o de saida e20.
entia a safda permite espacc sufi ciente para urn ponto decimal, urn sinal e treS
separadores de milhar.
de dados
d.t. TAB TEXTD(4) t ype p.
d.t. f 2(4 ) type p declm. ls 2.
d. ta f 3(5) t ype p.
data f4{S) type p decimals 3.
Eorrnat Ol; c o padni o
Comprimenta de saida padriio
8
9
10
11
Compos cornpododos
o comprimento de saida padrjo de urn campo do tipo p eduas vezes 0
compriment o de campo definido. Se casas decimais forem definidas, 0 corn-
primento de safda padrio sera aumentado em 1, equivalenda entac a 2 *
comprimemc do campo +1. A Tabela 14.2 mostra os comprimentos de saida
padrio de exemplo para os campos do tipo p.
de dota pcdreo
Os vaIores de data irao gerar uma safda de acordo com a de Dat e
Format em User Defaults , contanto que e comprimento de saida seja 10 au
maior. 0 comprimentc de sa!da padrio cS, entao voce devers aume nt i -lo para
pelc menos 10 antes que a s separade res possam servistos. A defmilii o de uma
variavel utilizando 1i ke (por exemplo, 11 ke sy- dat um) fari com que a ccmpri-
menta de sai'da seja retirad o do dominio.

_ _- - _.. ....
464 APRENOA EM21 DIAl ABAP"
OIA IH .11ilJyi0WRITE 465
Tabela 14.3 A configuror;;60 Decimal Notation no podroo do usu6rio meta a s
Ic rmctos de seide numerlcc
ATabela14.3 mostra 0 efeito da ccofiguracac Decimal Notat ionna saida
numerica.
val ue ' 123456' .
value ' 123456'.
val ue ' 19980201' ,
val ue ' 19980201' ,
value ' -1234',
value '12345678-'.
vaI ue '123456789-'.
value ' 1123456789-' .
val ue ' 1123456789' ,
value 123.
val ue ' 123456789' .
val ue ' ABC' .
'AOBO' .
'type t: default output ll!ngth 6',
' type t: increas ed output l ength to 8',
' type t : 1ncreesee output 1ength to 12' ,
' t ype t: defaul t output le ngth 8 (from domain) ' .
' t ype d: defau1t out put l ength 8'.
'type d: increased output 1engt h t o 10'.
'type d: def ault output l ength 10 (from domai n) ' .
'type f : default out put l ength 22',
'type 1: def ault out put length. 11'.
' t ype i: same output 1ensth, more d1gi ts '
' t ype 1: S!Jll! output l ength, even IIICI re digi ts ',
'type i: smal le r ootput l engt h, negative nLlllber ' ,
' t ype 1: smaller output l engt h. pcsf tt ve nllllber ' ,
' t ype n: default output l ength fiel d len gt h' ,
'type p: default output l ength . 2 length 10',
' t ype p: output l ength i ncreased to 12'.
' t ype p: out put length increased to IS'.
' t ype c: out put l engt h f iel d l enqth (l eft just) '.
' t ype x: default output l ength 2 l ength"" 4' .
U . 26
/
/(8) tl ,- '- 26
/ (12) t l , 26
/ t2 , 26
/ dl, 26
/(10) dl, 26
/ d2, 26
/ n , 26
/ 11, 26
/ 12, 26
/ 13, 26
/ (10) 13, 26
/(10) 14. 26
I nl , 26
/ pi, 26
/ (12) pi , 26
Il lS) pl . 26
/ et , 26
/ xi, 26
o c6digo na Lisu gem 14.1 produz esta safda:
123456 type t : default out put length 6
12:34:56 type t: inc reased output lengt h t o 8
12:34: 56 ty pe t : i ncreased output length to 12
12:34: 56 type t : default out put length 8 (from domain)
report ztx1401.
data: t1 t ype t
t2 11ke sy- uzet t
dl t ype d
d2 like sydatum
f1 type f
11 type 1
12 type i
13 typei
i4 type i
nl(5} t ype n
pl(S} type p
c1(S) type c
d(2) type x val ue
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.
I
2
3

5
6
7
8
9
10
II
12
13
"
IS
16 write:
17
18
19
20
21
22
. 23
2.
25
26
27
28
29
30
31
32
33
34
siiDI
Programa de exemplo demonstra ndo a formct ocdo
padrti o
Listagem 14.1 Comprimentos e formato,co podrao
I
i
I
I
i
,
, ,234.56
1.234,56
Saida de exe mplo
Virgula
Ponto

Formctccco de hora pcdreo
Os valores de bora irac gent uma safdano formato HH:MM: :SS,contant o que
o compri mcnt o de saida seja 8 au maier. 0 comprimento de salda paddc e6,
entia voc e devera aumenta-lo p.ara pelc menos 8 ant es que a s separadores
possam ser vistcs. A de uma variavel utilizando 1ike (por exemplo,
1; ke sy- uzet t .) fmcom que 0 comprimento de safda sejaretiradc do domlnio.
o formate de safda padrio pan variaveis de ponto fluruante [tipo f) e
atraves de nat.rrao cientifi ca. Ele pode ser modificado utilizando uma mascara
de edic;ao au safda de ccnversso.
de estouro (overflow)
Ao lidar com ntimeros qu e sao grandes demais para a campo de safda, 0 sistema
coloca u rn asterisco na primeira 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 separadores de milhar irao so men te gerar 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 candc cia esquerda do campo e
seguindo para a direira. Se a ndmero for positivo e se ajustar asafda com a
utilizaliao do campo de sinal, 0 sistema 0 utilizaIi.
'd d- Vod deve efewcr sign off e efetuor ncvc mente sign on no sistema Rf3,
'-.\UlaaaO pore que as alterecs para 0 podriio do usu6rio tomem-se efetivos.
nurnericc pcdrco
NeAmericado Ncrt e escreve-seum mimerc como 1,234.56. Em outros pafses,
como a s da Europa e aqui no Brasil, 0 mesmo mime rc eescrit o como 1.234,56
- 0 usa de vfrgula eo usa do decimal sio alterados em 010 padcio
. norte-americana. 0 R/3 permite que cada usuario individual especifique urn
desses formatos at raves da de perfil do usudrio Decimal Notation
(a partir de qualquer tela, selecione a caminho de menu System->User Pr o-
file- >User Defaults).
466 APlEMDA EM 21 DIAS AUP/' 14>4 llISTRU(i.o WRITE 467
Alinha 16escreveuma variavel do tipo t utilizando seu comprimento
padcio de 6. Nrc hi espacc para as separadcres, de modo que eles113.0
sao escricos,
A"linha 17 escreve a mesma varidvel utilizando urn comprimearo de
saida de 8, que foi especificado na instruljaowriteoEsse comprimento
de saida anula 0 comprimento de saida padrio e fomece
suficience na saidapara incluir os separadores.
Alinha 18 mostra que se 0 campo de saidafor maior que 8 caracteres,
a campo de hera ira gel":lI' uma safdaalinhadaaesquerda 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 2etambem 8) que
famece espaco suficienre para escrever eambem cs sepa.radores.
A linha 20 escreve urn campo do tipa dque 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 edererminada pelo padrdo do usudrio.
A linha 21 escreve a mesmo campo de data, dessa vez aumentando 0
compriment o de salda para 10a fim de permitir os separadores.
A linha 22 escreve a campo d2. 0 comprimento de d2 eobeidc do
dominio para sy-dat um.
Alinha23 escreve urn campo de ponto flutuante mostrando a nOtaljaO
cientifia e um sinal inici&!.
Alinha24 escreveurn inteiro utilizando 0 comprimento padrio de 1I.
A linha 25 escreve urn inteiro maior utilizando 0 mesmo cornpri-
mento. 0 primeiro separador de milhar erernovidopara pe.nnitir que
o digito extra seja escrito.
';:

19980201
199B/D2/01
199B/02/01
-1.234000oo000oo00E+03
12,345,678-
123456,789-
1123456789-
*23456789-
1123456789
00123
123456789-

123. 456, 789- .
ABC
ACSO
type d: default output length 8
t ype d: increased output l engt h to 10
type d: default output length .. 10 (frCll1 d0ll\41n)
type f: default output length 22
type 1: default olltput length " 11
ty pe 1: _same output l engt h, more dig its
type 1: sill:e output l engt h. even ecre dig its
type 1: slMl ler length, negati ve number
type 1: smaller output. length, positive nllliler
type n: default output l engt h " field 1I!ngth
type p: default output length 2 length 10
type p: output length increased to iz
type p: output length tncreesed to 15
type c: output 1ength .. field length (left jus t)
type x: default output length Z length 4
A li.nha 26 aumenta novamente 0 mimero emurn dfgito, fazendo com
que a segundo separador seja remcvido.
A 1i.n.ha 27 escreve0 mesmo namero, dessavez diminuiodo 0 ccmpri-
mente de safda em 1 e 0 indicador de estouro evista no primeiro
caractere do campo de saida.
A linha 28 escreve 0 mesmo nUmero utilizando a mesmo compri-
mente, mas dessa vex 0 mimero epositive. 0 sistema altera corre-
tamente 0 ndmerc e utiliza a campo de sinal para impedir estouro.
A linha 29 escreve urn campo numerico mostraodo que 0 mesmo e
alinhado adireita e preenchido aesquerda com zeros iniciais.
A linha 30 escreve urn campo decimal compactado mostrando 0
comprimentc de saidapadrio e a dos separadores.
As linhas 31 e 32 aumentam 0 comprimento de safdapara 12 e para
15, mostrando os separadcres e 0 alinhamento i direiea.
A linha 33 mostra urn campo de caractere alinhado aesquerda no
campo de safda.
.A linha 34 mcstra a saId2. a. partir de u,mcampo hexadecimal.
para a write
Est. detalha algumas das especificacoes especfficas de said. que podem
ser utilizadas com a writeo
Sintaxe da wri te
!!! A seguir, veja a sintaxe da inStruljaO writeo
z wrfte ret] Up(l)) "['0(,1))
-e (I ) under '12 : no-gap
:J> (2) using edit mask _ : usi ng no edit lMsk
>< (3) m/'d/yy '''/",,/yy
m (4) mf'd/yyyy' " /m/yyyy
... (5) """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
onde:
'11 eurn nome de string de campo. variivel ou literal.
P, l e n sao literais numericos ou variavc:is.
pea de posi\Sao. Ident ifica a coluna de saleta na qual 0
campo de salda cleve comeljar.
-
- - . - - - .- - - - - - - .,.-- - - - --.- _. _. . .
468 APRE NDAEM 21 DI Al AWl' lH IN5Tl<U(i.o WRITE 469
'll'
2 'll ' .
3 ' ABC '.
4- fl.
7 fl .
r eport ztx 1402.
data f1(4} t ype p val ue 1234.
write: I ' .. .-+- -- -1-- -+- -'.
.I ' 12345678901234567'.
1
2
3
4
5 skip .
6 writ e / 1 ' X'.
7 write
8 write
9 wri te
10 write
11 writ'e
12 wri t e 'Z .
ENTUDA..... U.st a g em 14.2 Umo sene de instruc;oes write pora ilustrar 0 efeito do
r escecthcccec de colune de sctdc
1 e a especificaclc de comp rimento. Identifi ca 0 compriment o do
campode safda no qual 0 valor deve ser escrito.
0 eurn. especificacac de deslccamenec de subcampo que pe de conter
soment e literals numericos.
sl eurn. especificacso de comp riment o de subcampc que pede center
somente literal s numericos.
meuma mascara de
c euma chave monetdria (da tsbela tcurc).
u. uma unidade de medida (cia eabela t006).
n eurn literal numericc au variavel.
o c6digo na Listagem 14.2 produz esta safda:
____+_w__ l +__
12345678901234567
XYA 1 1. 234 Z
As linhas 3 e 4 escrevem uma regua, de mod o que voce possa ver as
colunas de safda.
A 1inha 6-i screve urn I x' comegando na coluna 1.
A linha 7 escreve I VZ ' comecandc urn dep ois de ' XI.
A linha 8 escreve ' VZI comecando na coluna 2. Isso sobrescreve 0
e 0 ' Y' que havia side escrito.
A linba 9 escreve I ABCI cornecando na coluna 3. Isso scbrescreve os
dois I Z's, mais urn espar;o.
A linha 10 escrevef1 comecando na coluna 4. 0 comprimento de safda
padr.io de fl e8j a formato padrso ealinhado adireita com 0 ultimo
caractere reservadc para 0 sinal. as tres em branco iniciais
sobrescrevem a safda existente comecandc na coluna 4.
A linha 11 escreve fl novamente, dessa vez comegando na coluna 7.
A Iinha 12 escreve 'Z' urn especc depois de fl. Na salda, parecem
existir dais espacos. 0 primeiro espacc depcis de 4 ea campo de sinal
para fl . Entia, urn espaco escrito e, depois, ' Z' na coluna.16.

Uma novo linho de soldo sempre cc meccre no infci c de um novo
eventc. a s eventos serec obrongidos no Capitulo 17,
Referindc-se asintaxe apresectada acima.c especificaacoluna de saida. 0 valor
de saida pede sobrescrever toda au parte de uma instrUfJao wri te anterior. 0
programa na Listagem 14.2ilustra a efeito de uma de instrulioes wri t eoA
Tabela 14.4 mostra a efeita cumulativo de cada write, em sequencia, para
mostrar como chega a saieh..
Os seguintespontos se aplicam:
Se p au I for uma varifvel , a palavra at sera requeri da.
Urna barn. (I) ccmeca uma nova linha antes de se escrever 0 valor da
variavel.
Se nenhuma adic;ao for especificada e du as inst ruC;6es wri t e forem execu-
tadas (como write: vt , V2 ' ) 10 valor de vz aparecerf DOl mesma linha de vI
separado dele por urn especc- Se 0 valor de vZnie se ajust ar ao restante da
linha"arual, ele apare cera na pr6xima Iinhs. Se a comprimento de saida de v2
for maier quea cornprimento cia Iinba,a saida seratruncada adireite. Se0 valor
gerar uma safda alinhada adireita (como acontece com as variweis do tipo p)
antes de ser truncado adireira, ele sera deslocado para aesquerda, 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 trun-
camento.
Compreende ndo especificoljiio de posiljiio
........................... .. . -- -
470 APlEHDA EM 21 DIAS ABAP/' lUIHSTIlIJIiDWlltTE 471
r epor t ztx1403.
data: n (4) t ype p value 1234,
p type 1 value 5,
1 type 1 val ue B.
o codigc na Listagem 14.3 produz esta safda:
XY
XlZ ABC
1234
1, 234
A linha 6 escreve os primeiros dois caracteres de XYZ I.
A linha 7 escreve I XYZ I utilizandc quatre caract eres de salda. A
padcio eutilizada, entio a valor ealinhado aesquerda e
preenchido l direi ta com espaeos em branco.
A linha 8 'ABC' urn espacc depois do valor anterior. 0 valor
anterior foi pre enchido a comurn espalio em branco. Um outre
espac;oem branco eadicianada e. em seguida, I ABC' eescrito.
A linha 9 escreve fl em urn campo que tern quatro caracteres de
comprimento comegando na coluna 5. 0 sistema remove as separa-
dores para fazer com que a valor se ajusce em quarro caracteres,
A liaha 10 escreve fl em urn campo que t ern eire caracteres de
comprimento ccmecaad c na coluna 5. VaIjaveis si o utilizadas, entji c
a palavta at eexi gida. A padrto se aplica, entao 0 valor e
alinhado direita com zero s iniciais suprimidos e. ji que exisre espalio
suficiente, separadores tambem sac escri t os.
--+---1--...-
12345678901234567
Voce pode especificar urn subcampo na wri t e utilizando as especifi-
calioes de deslocamento e compriment o imediatamente depois do valor sem
"urn. intermed.i.irio. (Se necessaria, consulte a anterior sabre as
para 2. instrUl;ao writ e.) Voce nao pode utilizer um subcampo com urn
literal au um campo numericc (tipos p, i e f ). A List agem 14.4 fornece
exemplos . .
Lista gem 14.4 Utilizondo subcompos
1 r eport zt x1404.
2 data 11(4) t ype c value 'ABCO'.
3
4 writ e: /' . . + 1__+_ ' ,
5 / ' 12345678901234567' .
6 ski p.
1 wr", I fl (2)
8 write 1 n-ita) .
9 write: 1( 2) n-au), n.
Trobolba ndo com slJbcarnpos

x
X YZ
XYZZ
XYABC
XYA 1, 234
XYA 1 1,234
XYA 1 1, 134 Z
Sa ida cumulativa
----+---1--+--
12345678901234567
wr ite 1 ' X' .
write ' YZ'.
wri t e 2 'YZ'.
write 3 'ABC'.
write 4 fl.
write 7 fl.
wri te ' Z' .
Instruljoes
I
2
3
4
5
6 write : 1 ' 1 +__
1
,
7 1 ' 1Z34567B901234567'.
B s kip.
9 write 1(2) 'XYZ' .
10 write 1(4) 'Xl Z' .
11 write 'ABC'.
12 write 15{4) 11.
13 write at I p(l) f 1.
Na desintaxedainst ruliao write, 0 especifica 0 comprimento desatda.
Corresponde 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 opcional se a posifiao e 0 compri ment o forem ambos
Iiterais, mas secl exigida se urn dos dais for uma varidvel.
Se uma barn (f) preceder UIIl2 especificact c de comprimento au posir;io,
Ilia poderi .existir urn espaco entre eles. A Listagem 14.3 forneee exemplos.
14.3 II.ustrondo o utilizoc;ao dos especlflcccees de'
r compnmento e POSIC;CO
Cornpreendendo a de cornprirnento
. !
DI. , HlMmU\ADWRlTE I 473 t
, ' ,'
Ch1 ckenFeed ltd.
a71B Wi shbone t ene
Motherboards Inc.
64 BitBus Blvd.
CA
E
US
E
I "", fl, " ",
/ "", 2 fl . 6 " " .
I " " no- gap, fl
o c6digo na Listagem 14.6 produz esta safda:
ABCD ABCD
ABCDABCO
, ABCD '
' ABCD '
ABCD,
A linha 6 escreve 0 campo 1and1 comecandc na coluna 15.
A linha. 7 escreve 0 campo namel cc mecacdc na colona 25.
A linha 8 escreve 0 campo spr as comecandc namesma coluna de 1andl .
Consequentement e, eescrito ccmecacdc na coluna 15.
A linha 9 escr eve a camp o st ras comecando na mesma coluna de namel .
Portanto, eescri eo comecando na col una 25.
1040
1030
A de no-gap ira. sup rimir a espacc intermediirio, colocado automa-
ticamente depois de urn campo, se 0 campo seguint e nao river nenhuma
especificacac de coluna. A Lisragem 14.6 ilustra 0 usa de no-gap.
ANlllSE
Utilizando 0 odi"ao no- gap .
SAl oA
Listagem 14.6 Utilizondo no-gap
1 rt!! port zt x1406.
Z data f l(4) 'ABCD' .
3
4 write: I fl. fl,
5 I fl no-gap. n ,
,
7
B
Uti lizondoa od1iYoO under
ski p.
endsetect .

12345678901234567
AS
BC
C ABCD
o c6d.igo na Listagem 14.4 produz est a saida:
A linha 7 escreve a primeiro e 0 segundo caract ere de flo
A linha 8 escreve 0 segundo e 0 t er ceiro caractere de fl.
A linha 9 escreve a terceiro caract ere de f1 comecando em uma nova
linha em urn. campo que tern dois caract eres de comprimento. a
alinhamento eaesquerda nesse campo e este epreenchido adir eita
corn em branco. Eta escreve entia a conteddo inteiro de fl
com urn espa'i0 em brancc inicial int ermediario.
select * up to 5 rows from ztll,lfal order by 1f fnr.
write : 11 ztxlfal-11fnr,
IS
25 ztx l fal-name1,
I ztxlfal-spras under zt ll, lfa1-land1,
zt xlfa1-st r as under zb lfal -namel.

Utilizando 0 adi"ao under
Utilizar under fad. com que 0 primeiro caract ere do campo seja posicionado na
mesma coluna do primeiro caractere de urn campo anterio rmente escrieo. Voce
nio podera utilizar under com urna especificaclo explrcit a de A
Listagem 14.5 mostra exemplos.
L1stagem 14.5
1 report ztx1405.
2 hbll!:s: zt xlfal.
3
4
S
,
7
8
9
10
11
SAiOA .
;{[f;
",
a ccdigc Listagem 14.5 produz esta satda:
1000 CA Parts Unl imlted
E 111 Queen St.
SAloA
10lD
1020
CA
E
CA
E
Industri al Pumps I nc.
1520 Avenue Rd .
Chemi cal Nation Ltd.
123 R1 ver Ave.
.,

A linha -4 escreve fl duas vezes na mesma linha. Ja que nao existe uma
especificacac de posit;ao para 0 segundo fl, urn unicc espaco inter-
mediirio sera.escrieo ant es dele.
A linha 5 tambem escreve f l duas vezes. A ut ilizacao de no-gap depois
do primeiro fara com que as da is valores aparecam na saida sem urn
espaco-intermediario.
I
I
!
1

I
I
!
Dll IH INmtJi.\OWR ITE I 475
' . fl,
I, (6) 11 using edit mask 1_=_:_' ,
", fl using edit maslc ILL_:_' .
I , f1 using edit mas k 'RR_:_' .
" f2 usi ng edit mas k 'lLV__",
' . f2 using ed1t mlsk 'RRV__",
" f2 using edit maslc ' RRV_ , _ ' .
", f2 using edit Nsk 'LlV_,_',
" fl using edit mas lc IV_I .
A linha 5 gera a safdade f l sem quaisquer mascaras de edicao.
A linha 6 gera a suciade todos as quatro caracteres de f1 utilizando
doi s pontos pan separi-Ios.
Existem t res sublinhados na mascara de na linha 7. mas quatro
caract eres em flo Portan to, os tres primeiros caracteres de f1 sao
utilizados na mascara de
A linha 8 obtem os tres ultimos caracteres de f1 e os apJica amascara
de edi,.o.
Existern seis sublinhados na mascara de edi tiao 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
o c6digo na Listagem 14.7 produz esea so.lda:
s. ABeD
6. A:BC: D
7. A:BC
8. B:CD
9. 1234
10. 1234
11. 1.234
12. 123,4
13. VASe
writ e: I ' 5.
I ' 5,
I ' 7.
I ' B.
/ I 9.
I ' 10.
I '11.
I 'IZ.
I 113.
Se houver mais sublinha.dos do que os caracteres exist ent es do campo de
origem, 0 efeito de LL sed alinhar aesquerda 0 valor 01 saicla; RRalinhari a
direita a valor (veja aListagem 14.7 para obter urn exemplo).
Uma mas cara de edic;ao comecando com urn v, quando aplicada a urn
campo numerico (tipos 1, p e f) , fan com que a campo de sinal seja exibido no
corneliO. Se aplicada a urn campo de caractere, urn Vser f a pr 6pria satda,
Lisl agem 14.7 0 eleile de va rios mascoros de
1 report ztd407.
2 data: n(4) nlul! IABCO'.
3 f 2 t ype i val ue 11234'.
4
5
5
7
8
9
10
11
1Z
13

..
As mas caras de edic;ao permitem:
Inserir caracteres na saIda.
Mover 0 sinal 0 inicio de um campo numerico
Inserir ou mane ardficialmence urn ponto decimal
Exihir urn nrimero de ponto flutuante 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 especial. Todas as ou tros caracteres
sao transferidos para a safda scm qualquer alterac?0'
Os subIinhados demrc de uma mascara de sao substirufdos, urn a
urn, pelc s caracteres do campo de origem (0 campo que voce esd. escrevendo).
o mi mero de caracteres reti rado do campo de origem seri igual ao mirnero de
sublinhados na mas cara de Par exemplo, se existirem tres caracteres na
mascara de no maximo caract eres do campo de ori gem irso gerar
uma saida. Todos os outros caracteres na mascara de serso inseridos na
safda. Ncrmalmente, voce tambem pr ecisarf aumentar 0 comprimento do
campo de safda para acomcdar os caracteres extras. ins eridos pe1a mascara.
Por exemplo, a write {6} IABCD
I
usin g edi t ma sk 1_: _ :_1
escreve A:BC:D. OS caracteres sao recirsdos, urn porvez, do campo de origem
e as caract eres da mascara de sao inseridos DOS locais indi cados pels
IABCD
I
usi ng edi t mask I : : I somenee escreve
A: BC porque 0 compriment o de saldapadrsc eigual ao do campo
de origem (4).
Se existissem menos sublinhados na mascara em aos que estaono
campo de origem, 0 padrac seriaobeer os caracteresn mais aesquerda do campo
de origem. onde n e igual ao mimerc de sublinhados na mascara de Isso
pede tarnbem ser explicitarne nre especificado ao preceder a mascara de
com LL. Porexemplo, write IABCD
I
using edit mask ILL : ' obt em as tr es
caracteres rnais a. esquerda e escreve AB:C. Utilizar RR, vez, obter.i os
tres caracte res mais adireita, entao write IABCD' using edit mask IRR_:_
I
escrevera BC: D.
Utilizando mascaras de edi,.oo
-SJ"y o.
;".s.'1!" .:' .
'
4"APREHDA EM21 erASU IP/4

" " linh . I dcis lad 0 f:"" A a 6 escreve fl com aspas SlIIlp es nos OIS as. 5 espacos
. interme diari es apacecern scm 0 usa de no-qap.
A linha7 escreve f1 entre aspas simples. As especificacces de posicio
fazem com que as aspas aparcCiOlm scm esp_liDS inrermedidrios.
A linha 8 utiliza no-gap p:a.ra gerar a mesma safda.
'.
DIA 14: A WRITE
1
I
I
I
Saia de ALPHA
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 coeversac ALPHA.
Portaneo, secipre que ztxlfal-lifnr for escrit o, a valor passara, em
primeiro lugar, pelo m6dulo de funo;ao CONVERSION_EXI T_ALPHA_OUTPUT, 0 qual
remove os zeros iniciais dos wares numericos.
Uma sa1da de eocversac dentro de urn dominio pode ser desativada
especificando-se usi ng no edt t mas k na instI1l<;ao write.
A Liscagem 14.8 ilustra 0 uso das safdas de conversao.
Ust agem 14.8 Uti lizandascldos deconverseo
1 report ItxH08.
2 ta bles : ztltlfal , ztxmara.
3 data : fl(lO) value '0000001000' .
4
5 write: / fl,
6 / fl usi ng edi t mask ' ''-ALPKA'.
7
8 ski p
g set ect " f ran zt xlfal \lfhere lifnr '00000010000 '
10 or l ifnr 'Vl'
11 order by 1i fnr .
12 write: / zt xlfal -l1f nr , "0 domi ni0 contl!m conver so
13 / ztxlh.l - 1ifnr using no edi t mask.
14 endse1ect.
IS
Figura 14 2
Observe 0 conteVdo
c/o campo Convers.
Routine.

As safdas de conversao sao particularmente ateis para tarefas complexas


de fcrmancac que sao necessari es em mals de um programa.. Para ilustrar, a
saida de conversjo CUNIT convene automaticamente 0 c6digo que representa
uma unidade de medida em uma descricao significativa no idioma de logon
atual. Por exemplo, dentro de R/3, 0 c6digo para uma caixa de materiais KI.
(KI uma ahreviarura de Kiste, pal avra alemapara "caixa"".) Earretanrc, CUNIT
converte KI no mnemenicc ingles CR. Portant o, quando conect ado ern ingles,
write : 'I' . ' KI ' using edi t mask '==CUNIT' . escreveraI crt.Para umususrio
coneceadc em alemao, a safda seria 1 KI. Urilizar tal safda de conversao
permicinique um ccnjunto padrso de c6digos armazenado no banco de clados
sejaauromaticamente convertido paraque sejasignificativo no idioma delogon
arual sempre que gerar uma saidapara urn relat6rio.
Rotinas de converseo dentro de um doml nio
Uma saidade conversio pode tambcmser colocadaem Converso0 campo de
rotina emurn dominic. Asafda sera herdada por todos as campos que utilizam
HOYO ... Uma saf da de conver-s j o 6 umo retina cha modo que formato a sc ldc. Umo
TElltO " mascara de que ccmecc com seguido par umto de quatro corederes
choma um m6dulo de func;co que formato a scfdc. Urn 10 ossim de quofro ccrccteres e
canhecidocomo umc seide de ccoversec au refino deconversec. (Os m6dulos de func;oo
serec obordodos em um cap itulo segu inte, mas, par e nquonto, imagine um m6d ulo de
func;oo como urno subrotina dentro de um outro progromo.) 0 nome do m6dulo de
sere CONVERSION EXIT XXXX OUTPUT, cnde XXXX e a 10 de quotro ccrcceres
depois de Por exemplo, writ e ' 00001000 ' using' edit mas k chcmc 0
m6dulo de fun o CONVERSION_EXIT_ALPHA_OUTPUT. A instruc;oo write possa , em
primeiro luga r, 0 volor pore 0 m6dulo de func;oo, que 0 a ltere conforme desejado e, em
seguida, retorno 0 valor e hercde e, entec, tol valor e escntc . Esse scldc em porticular
(ALPHA) excrnlnc 0 valor a fim de determiner se 0 mesmo consiste lnteircrnente em
numeres. Se esse for 0 coso, zeros iniciais serec retiredos e 0 numere ser6 al inhodo a
esqverdc. Os vclcres que contem noo-numericos nco sOo olterodos par ALPHA. ASAP
fomece oproximodame nte 60 soldos de ccnversec pore v6rios terefes 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.
Na linha la, 0 valor de f1 gera uma saida alinhada adireita com urn
simi icicial.
As linhas 11 e 12 mostram. 0 efeitc da dos caracteres
inseridos com alinhamento. as caracteresinseridos Ilia sao movidos
em 010 campo de safda.
A linha 13 mosrra 0 efeiro da utilizacfo de urn Vcom urn campo de
caractere. 0 pr6prio Vea safda,
"PREMD" EM 21 nus AUr/ 4
Utjljzo ndo os sordos de cooversoo
476
478 r 'PREiD. EN 21 DIAl '''PH DIA lH INSTRlI(iD WRITE 479
o codigc na Listagem 14.8 produz est. saida;
0000001000
lDOD
Hi skip.
17 select single from ztxmara wher-e matnr ' MI03',
18 write:: I ztxmara-matnr ,
19 (10) ztxrr.a ra- brgew.
20 ztxmara-gl!:wei.o dCJllfnio cont&n converso Saia cle CUNIT
21 set locale la nguage ' D'.
22 wrHe: / ztXlldra-matnr,
23 (10) ztXllara-brgew,
24 Ztxlllara-gewe1.o domfni o convers o Saia ee CUNIT
1000
0000001000
VI
VI
H1D3
H103
50.000 CR
50.000 KI
Inicie agora 0 ScreenCom "Howto Display Existing Conversion Exits".
1. Na 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 deProgramming.Amore
sen expandida.
3. De urn clique no sinal de mais (+) ao lado de Function Library. A
m ore ser::i. expandida,
4. De urn clique duplo na linha Functi on Modul es. A tela
Information System: Function Module do AJ3AP/ 4 sed exibida.
S. No campo Function Module, digit e CONVERSION_EXIT_ _
OUTPUT (0 campo ede rolagem; voce pede digitar urna quantidade
maior de caracteres do que de pede exibir).
6. Pressione 0 botac Execute na barn de ferrameneas Application. A
tela Function Modules sed exibida, Towas saIdas de conversao que
podem ser utilizadas na wri te serio listadas aqui.
Trabalhando com a formataljCio de data
As especificacces .formata!jio de data, na maiori a da.s vezes, n40 0 que
vqcC imagina que elasdevemfazer. Amaioria tiraseu format o da especificacso
Date Format no padrac do usuario (caminho.de menu Sys eem- > User Pro-
file-> User Defaults). .
A Tabela 14.5 contem uma descricac do efeiec de cada urna delas.
1lI1USE
A linha5 escr eve 0 valor de fl.
. AIinha6 escreve 0 mesmo valor, mas aplicaa safdade coaversac ALPHA.
Antes de ser escrito, fl epassado para 0 m6dulo de CONVER-
SION_EXI.T_ALPHA_OUTPUT, 0 qual detects que 0 valor e inteiramente
numerico, remavendo os zeros Iniciais e alinhando-o aesquerda.
A linha9 recupera dois registros de ztxl fa la nde escreve 0 campo 1i f nr
duas vezes para cada,
0 dominio de zt xl fal- l i f nr contema safdade 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.
A linha 20 escreve g,.,j (unidade de peso) uti lizando a safda de
cocversfo CUNIT no dominic.
A linha 21 altera 0 ambience de textc para alemao. Isso eequivalenre
a se coaectar em alemao. .
A linha 24 escreve 0 mesmo valor gewei, mas dessa vez CUNITexibe 0
mnemonico alemao.
Formato
Ilffl /dd/yyyy
dd/Ilffl/ YYYY
rrm/ dd/yy
dd/ Ilffl/YY
nmddyy
ddnmyy
yynrndd
Efeito
Escreve 0 data vtilizando 0 formata especficcdc no perfil do usucrio.
Esse e0 podreo, sendo ossimesses formotas rea lmente n60 Iozern
ncdo.
Escreve a data odotondo um ona com dais coroderes u1ilizondo 0
formoto especificodo no perfil do usv6rio. Os dais fczem 0 mesmo
cotsc.
Escreve 0 data odotondo um ono com dais corocteres u1ilizondoa
formoto
Especificodo no perfil do usvorio, sem seporodores. Os dais fozern 0
mesmo coisc.
Escreve a da ta no formata yymmddsemsepc rodores.
Exi bindo os sordes de conversno existentes
Para exibir as saldas de conversao exisrentes, utilize 0 seguinre procedimento.
480 APRENDAEN 21 DIAl ABAPIl
DIA lH INSTRU(ADNRITE 481
A Lisragem14.9ilustra. 0 usc das especificacoes de formate de data.
A linha 2 define fl como sy-datum. 0 comprimento 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 e21 fazemtodas amesmacoisa: escrevem fl utilizando
o formate especificadc no perfil do usufrio.
As linhas 22 e 23 fazemambas a mesma coisa: escrevemfl utilizando
a format e especificado no perfil do usufrio, mas utilizamumano com
dois dfgitos.
As linhas 24 e 25 fazem ambas a mesma coisa: escrevemfl utilizando
o formate especificado no perfil do usudrioadotando umanocom dais
djgitos, mas sem separadores.
Alinha27formataa datautilizando asafdade conversso IDATE. Asaida
de IDATE tern 0 formato yyyymmmdd.
Alinha 28formata a datautilizando a safda de conversao SDATE. Asafda
de SDATE tem 0 format oyyyy/mmm/ dd.
As linha.s de 30 a 33 mostram como criar seu proprio formate de safda,
Sevoce mesmotivessedefazerisso, seriamelhor coloca.r esse c6digoem
uma saidade conversdo e)entjo, atribuir urnnome asafda de conversao
na write. Voce nao apenas simplificaria seu codigo, como
tambem de ficarla disponfvel para voce e para codas as outros pro-
gramadores para uma aplicacto imediaca em qualquer programa.
o codigc na Listagem 14.9 produz esta saida:
1998/11/23
1998/11/23
1998/11/ 23
98/ 11/23
98/ 11/23
981123
981123
981123
1998NoV23
1998/ NOV/ 23
23/11/1998
11/23/1998
A adiiao no-zero suprime os zeros iniciais quando utilizada comvariaveis 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 comvaridveisdo tipa t , pau f , suprime
a saida do caractere de sinal. Em outras palavras, numeros negatives nao terac
urn sinal e como se fossem positives.
Utilizondo os no-zero e no- si gn

SAiD!
.,.
' 19981123' ,
- perfil do usui r i o fmt, ! exfbfdo adot ando um ano cce 2
"perfi l do usuar t c fmt, ana com 2 dl gitos. sem
"perfil do usuar -t c fmt, anc corn 2 dlg i t os, sen
/ fl dd/",/yy .
report ztx1409.
dlltll: fl 11ke sy-datum val ue
begin of f2,
y(4).
m(2J.
d(2)
end of f2,
begi n of f3.
d(2) ,
m(2) .
y(4)
end of fJ.
begfn of f4,
m(2).
d(2)
y( 4) ,
end of f4.
As sofdos de conversec IOATE e SDAlE produzem fe rmatas de dat a
diferentes. Alem disso, 0 m6dulo de fum;oo RH GET DATE DAYNAME
retorno 0 nome do die do semana relative a -data -; idiomo
especificos. Como alternative, DATE_COMPUTE_DAYretorn o urn ncmerc
que representa 0 die do semono.
Listcgem 14.9 Utilizondo as especificac;6es de formate de data
1
2
3
4
5
6
7
8
9
10
II
12
13
14
15
16
17
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 I f1 dd/rrrn/yyyy, -e perfil do usuAri o conf i gura 0 f OrNt o
22 I fl rrm/dd/yy, "perfil do usu!r10 fmt ex1 bido adot ando um enc com 2
df g1t os
23
dfgi t os
24 / fl omld".
separadores
25 / f1 dcmnyy.
separador es
26 / fl yynmdd. "f ormat o yyrrrndd, sern separ edcres
27 / fl using edi t mllsk I-!DATE',
28 /(1) f1 using edit mas k I u SoATE ,
29
30 f2 - 11.
31 II'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 using edit lIlask '-.J-.J ". - f oma t o nn/dd/yyyy


decimals 4
dl!cillals 3
decll:1.a1s Z
decilllah 1
decimals 0
deci mals - 1
a c6digo na Listag em 14.11 produz esta saida:
1.575 .456 as-i s
1.575.4560
1,575.4 56
1, 575.46
1,575.5
1,575
158
variavel de origem ni o seri alt erado, somente a saleh aparecerf diferent e. Se
voce aumenur 0 mimer o de decimals, zeros seno acrescea tados ao final do
valor. Valo res negatives de n moveri o 0 decimal para a direita, multiplicando
efetivamente a mimero por Farores de 10 e, enno, fazendo 0 arr edondamea to
ant es da exibicso.
A r ound n faz com que a safda seja multiplicada por fatores de 10
e, entaO, arredondada antes cia exibicao. Esse procedimenrctern 0 mesme efeito
de multiplicar por l O"'*n. Valores npositives movem 0 decimal para a esquerda
e as valores negatives 0 movem pan a. direita. Isso sera. util, par exemplo,
quando voce quiser gerar uma saida dos valcres pU2. 0 milhar mais pr6ximo.
A entre decimals e round eque decimals alt ers 0 numerc de
digitos depois do pooto decimal para n c) enu a) executa 0 arredondamento.
round move a ponto decimal para a esquerda ou para a direita pa r n, mantendo
o ofunero de di gitos depois do decimal e, entao, executa. 0 arr edondamento
para 0 rnimero de digitos decimais exibidos. .
A Listagem 14.11 ilust ra 0 usa de deci mal s e round:
List agem 14.11 Utilizando as odi<; 6es deci mal s e round
1 report ztx1411.
2 data f l type p decimals 3 val ue ' 1575.456 '.
3 wr ite: I fl , 20 "ea-ts ",
4 / fl dec1ilals 4, 20 4',
5 I fl 3, 20 'decimals 3' .
s I fl dec;lnals 2, 20 'decillllh 2',
7 I 11 eectnal s 1. 20 ' decimals 1',
8 I fl decimals O. 20 ' deci mal s a',
g 20'decimal s-1',
10 I fl round 4. 20 ' round 4' .
11 I fl round 3. 20 'round 3' .
12 I 11 round 2, 20 'round Z' .
13 / 11 round 1, 20 'round 1',
14 /11 round 0, 20 'round 0' ,
15 I 11 round - I , 20 'round 1 ',
16 I fl round 20 'round -2' ,
17 1 11 round 3 dec1mals I, 20 ' round 3 dec1mals 1'.
18 I fl round 3 deci mals 3. 20 'round 3 dl!c1lnals 3' .
...
Utilizanda as deci rna15 e round
A adic;ao deci mal s n pede ser ueilizads para aumentar ou diminuir 0 ndmero
de casas decimais exibi das 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
currency
unit
Duas instrucces executam 0 arredonda mentc e
deci ma l s
a c6digo na Listagem 14.10 produz esta , aida:
000123 t ype c
123 t ype c usi ng no-zero
0000000123 t ype n
123 t ype n using no-zero
000000000o type n: zero val ue
type n: zero val ue using no-zero
123- t ype 1
123 type 1 using no-s i gn
7 write : I er , 20 "type c",
8 / cl nc-eere, 20 ' t ype c us Ing rc-zerc- ,
9 / nl . 20 ' t ype n",
10 / nl no-zero, 20 "t ype n usi ng no-zero' .
11 / nz, 20 ' t ype n: eere value ' .
12 I n2 no-zero, 20 ' type n: zerc value using no-zero ',
13 / 11. 20 'type 1' .
14 / 12 no-sign. 20 l type 1 using no-sign' .
round
Tres instrucdes sao ut ilizadas para especificar 0 mimero de casas decimais
na safda:
decimal s
A Listagem 14.10 ilustra 0 usa dessas duas
Listagem 14. 10 Utilizondo no- zero e no-si gn
1 r eport ztx1410.
2 data: cl( lO) type c value '000123' .
3 nl(10) type n value 123.
4 n2(10) type n value D.
5 fl type 1 value '123-' .
6 i 2 type 1 value 123.
>..:::.::::=::.:...==-=::..:..'-------------t
i
Especificando decimais e a rredonda me nta
484 l PREN DAEM 21 DIA5 AB AP/4
CIA lHIHSTltU\iOWRITE 485
No linha S, 0 od ic;codecimal s anOo eorredondoda para clmc porque a pa rte
frocion6ria do ncrnerc emenor que .5.
A tabela ztxtOOl contem os atributcs de todos 0$ c6digos cia empresa;
sua chaveprimaria e bukrs. Sevoce recirar 0 valorde ztxl fc3- bukrs e pesquisar
aUnica 1inha emzt xt001 que corresponder, waers iracenter a cha:ve monetaria.
A Listagem14.12 ilustra esse conceito.
Ustagem 14.12 Ulilizondo 0 adi<;oo currency
1 rl!port zt xl 412.
2 tabll! s: ztx1fc3.
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 ZTXLFC3-
SALDV.mostradana Figura14.3.
Aubela de referenciae a campode referenciaindicamque ztxt001-waers
cont fm a chavemoneciri.a..
Figu ra 14 3
Umdique duple no
compo$OIdv do Iobela
ztxHc3 exibin5 em tela_
round 4
round 3
round 2
round 1
round 0
round - 1
round -2
round 3 dl!cillal s 1
round 3 decteets 3
A adio decimals onulo as casas dedmois definidos no do minio.
Indep endentemente do Iocol de onde a declmcls e
proveniente, eloounce indicaro um ponto decimal rea l no nUmero. 0
numerc se re semp re crmczencdc como um valor inteire. A instru o
deci mals euma espeoucccec de fonncto aplicoda 00 nemerc antes
que a mesmo seic utilizedo em qua lquer lugar, par exemplc, no
instruc;co 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 compoe:tedo).
0. 158
1. 575
15.755
157.546
1.575.456
15. 754.560
157 .545.600
1.6
1.575
Util izando as currency e unit
As adic;oescurrencye unt t correspondema uma maneira alternative de indicar
a posicsc do ponte decimal para urn campo do tipo p. Elas nao podem ser
ut ilizadas coma adiliao dec"imal s.
o c6digo na Listagem14.lZ produz esta safda:
eee- tcancs
Lira 1t aliana
'USC'
ITL'
write : / fl ,
I 11 cur-rency 'USD'.
I 11 currency' IlL'.
3 data: fl type p deci mals 1 value '12345. 6' .
4
5
6
7
8
9 ski p.
10 select f romzblfc3 whl!re gjahr '1 997'
11 and u ldv 100
12 order by bukrs .
13 on changI! of
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 ,
.i
Utilizando a cur r ency
Quando escreve uma quantia monerdria, voce tambem deve utilizar a adiC;2o
currency. N ormalmenre, tais quantias sao recuperadas de urn campo do tipo
CURR em uma ..belade 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 natabela TCURX afim de determinar a mimerode casas decimaisque
deveser utilizadopara exibir 0 valor. Se 0 ccdigc mcnetario nao for localizado
emTCURX, umpadcio de duas casas decimals sed utili:z.ado.
Normalmente, 0 c6digo mccenric tambem e armazenado na mesma
tebela de banco de dados ou emuma outra tabelarelacionada. Por exemplo, a
chavemonetaria pan. as campos do ripe CURR (sal dv, 50111 e habnl ) na tabela
486 I IPREHOI EM71 nuslBAP/4
Utilizanda a un it
A uni t eutilizada 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) eespecificado depois que unit eautoma-
ticamente pesquisada na tabela t006. Em seguida, as campos decan e andec
determinam quantas casas decimais serjo exibidas. Os dais eoni sm urn valor
numerico.
decan especifica 0 mimero de valores decimais estimados em zero que
devem ser truncados. Ele remove os zeros fmais e nunca truncard as casas
D1I IH WRITE 487
a
i
J
Resultado
30. 1
30.10
30.100
30.123400
30
3D
30.1
30.11
30.11
30.1100
andec
o
2
3
3
3
o
o
o
2
4
1
1
1
1
1
2
2
2
2
2
decan
30. 1
30.1
30.1
30. 1234
3D
30
30.1
30. 11
30.11
30. 11
Entrada
Norrnalmente, a. adiliaO uni t eutilizada com as campos do tipo QUAN que
sao armazenados no banco de clados. Cada campo deve ter urn campo de
referenda do tipo UNIT; A unidade de medidapara 0 valor no carD;pa QUANestara
armazenada Iii. A Figura 14.4 mostra que 0 campo de referencia de ztxmara-
brgeweztxmara-gewei.
decimalsque nao tenham zero. AMmdisso, nuncaaumentara 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 decanfor 1, a safdasera. 12.34.
andecacrescenrara zeros depois que decan river sido aplicado. 0 namerc
exibido de drgitcs decimais deve ser multiple de endec. Se necessdrio, andec
preenchers 0 valor adireita com zeros, Se andec for zero, nenhum zero sera.
acrescentado. 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,
Tabela 14. 6 Como as campos decan e andec do tobela t 006 ofetam a fcrmctocoo
de scfdc de urn campo
,
1
!
I
,
123,456
1. 234.56 usa
123. 456 ITL
100. 00 usa
100. 00 usa
100.00 usa
100. 00 usa
100,000 ITl
25,050 III
100,000 ITl
100, 000 Jpy
300,000 J PY
. 250. 50 CAD
200. 00 CAD
1.000. 00 CAD
100.00 CAD
. A linha 5 escreve 0 valor de flo
Alinha6escreve 0 mesmovalor, masprimeiro pesquisa ' usnI na tabela
TCURX a fimde dererminar 0 mimero de casas decimals. 0 valor I USC'
DaDesta na tabel a, entao a saida eformatada utiliz.a.ndo0 padrdo (duas
casas decimals).
Quando a linha 7 eexecuta da, a tabela TCURXindica que III caa tern
casas decimais e, entio, formata 0 valor sem quaisquer decimais.
Alinha 10 selecionaas registros cia tabela zt xlfc3 emordem de c6digo
d. empre,. (bukr s) .
A linha 13eacionada sempre que 0 c6digo da emp.resa ealterado.
A linha 14 pesquisa 0 c6digo da empresa na tabela ztxtOOl a fimde
[ocalizar 0 valor monetdric daquela empresa. A chave monetaria esta
disponfvel no campo ztxtOOl-waers.
A linha 16 escreve 0 balance obtido utilizando 0 mimero de casas
decirnais indicado pela chave monetaria no campo ztxtOOl-waers.
AMluSE
SAiDA
488 A'RENDA EM21 DIA' ASAP" lHINSlRU\lO .,m 489
A Lisugem 14.13 ilustra 0 uso dessa adi>ia.
L1slagem 14.13 Ulilizendo e ediC;ao un!t
3
o
o
o
100 M3 0
10 PAL a
o ROl 0
o CR 0
100.000
10.000
0.000
0.000
w/un1ts nt gI!W as-is w/units units decan eneec
102. 560
10. 100
I
SO
102. 560
10.100
1. 000
50. 000
brgew I s- is
ztxmara- brgew unit ztxmara-gewei ,
zt xmara-ntqew,
ztxmara-ntgew unit zt xma.ra-ql!wef,
. ztXlllara-gewei,
85 tOO6-decan.
91 t OO6-andec.
endse'lect ,
99.1234 as-Is
99. 1234 %
99.1200 as- is
99.1 2 %
99.1 as-is
99.1 %
A linha 8 escreve fl sem utilizar a acllljaOunt ts.
A linha. 9 utiliza a unidade ML (mililitr os). Uma. pesquisa eautoma-
ti cament e realizada na tabelat006 quanta a ML. Essaliaha conrem decan
3 e andec 3. decan 3faz com que os zeros depois da terceira casadecimal
sejam remcvidos. andec 3 faz com que a ndmero de -decimais seja um
na mero 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 removidos. andec 0indica 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 decimais devem ser t runcados. andec 3 indica. que 0 ncmerc de
decimais deve ser preenchi dc com zeros para tres casas decimais.
N; linhas de 13 a 18 [ormatam de t2. t. utilizando a unidade %
Na linha 14, decan2indica que as zer os finais depois do segundo dlgiro
decimal devem ser rruncsdos. Nrc existe nenhum, entia nada sera
MI00
HI0l
M102
M103
o c6digo na Listagem 14.13 praduz esta salda:
es-ts
99.000 .1 1I111 111ters eecan 3 eneec 3
99.00 , - percent eecan 2 andec 0
99 - 1nch!!5 decen 0 andec 3
33
34
3S
36
37
38
39

zt xmara-gewI!1.
- ml1l il iters eecen 3 andec 3'.
percent eecen 2 andec 0'
- i nches decan 0 endec ) ' :
' as-i s' ,
'ml
'%
'as-1s' ,
'%',
'15-15 '
''1;' ,
' es-t s ' ,
'%'.
' %' ,
' %' ,
'Hl',
' %' .
.. ,
report ztxl(1) .
tabll!s : ztxlMra . t OO6.
data : f1 type p dec1M.1s .. vetue
f 2 type p deci mals 4 i lul! '99.1234' .
13 type p deci mals 4 value ' 99.1200',
(4 type p decimals 1 value ' 99. 1',
",rH.!!: I n,
/ fl unit
/ 11 uni t
/ n 'unit
/ .
/ f2,
I tz unit
/ fl.
/ 13 unit
/ fI,
t f4 unit
1
2
1

5
6
7
,
9
10
II
12
13
14
I S
16
17
18
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 tne , .
29 select frtlCll ztxma l"' l .
30 sel ect s i ngle t r Oll t 006 whe r e llIS ehi
31 wri te : /(5) ztxmara-mat nr
32 ztxma ra-bi'Ql!w.
Figura] 4 4
Sevod der um clique
duplo no compo
ztxmara-brgew,
ven5umo tela
indicondo a tobelo de
referfndo e 0 compo.
490 APRENDA EM 21 DIAS AUP/! lUINSTRU(iONRlTE 49\
t runcado. andec 0indica que me haven ma.is nenhumpreenchirnento,
pcrtanto, a saida sed jcrmatada utilizandc quarrc dtgirc s decimals.
Na linha 16, decan 2 fu. 0 truncamento dos zerosfinais.
Na linha 18, decan2 mo faz nada porque mo hanenhum zero final a
ser trunc ado. endec e0, entia ncnhum zero sera acrescentado ao final.
A linha. 29 seleciona todos as registr os cia tabelaztxmara.
Paraada, a linha30 seleciona 0 registro de tOO6 que contema unidade
em zt xmara-gewei. Observe que issa nie ! normalmente feito. E
apenas fcito aqui para mostrar as valoresde decan e andec.
Nas linhas de 32 a 35. as valores gewei e nt gew sio escritcs de dUOlS
maneiras. Primeiro, sio escrieos como sio e, entao, sse reescritos
utilizando-se a un1 t a fun de mostrar 0 antes e 0 depois.
Aslinhas 37 e 38 escrevem as valores decane andec que cramutilizados
para formatar cads linha.
Mudgndo 0 glinhamento
Com a de l eft -justifi ed, centered e r ight-justi fied, voce! pede
mudar a valor de saida denero do espaljo distribuIdo para 0 campo de suda.A
Listagem 14.14 ilus tra esse conceito.
ENTRADA'" Li stagem 14.14 Utilizando as cdil; 6es de alinhamento para a instruc;co
,.. write
1 rep ort ztx1 414.
2 data : 11(6) val ue ' AB'.
3 write : / ' ....+.... 1' .
4 / ' 1234567890 I
5 / fl.
6 / f1 l eft-justified,
7 / fl cent ered,
8 / f1 r1ght .j usti f 1ed.
9 /'.. .. +.. . 1. . .+. . 2 +. . .. 3. +.. .. 4',
10 / ' 1234567890123456789012345678901234567890' ,
11 /(40) f1 l eft -just i f i ed.
12" / (40) 11 centered.
13 /(40) fl
o c6digo na Listagem 14.14 produz esta saida:
+.. . . 1
1234567890
AS
A.
A.
AB
. + 1. + . 2 +. 3. .. . +. . 4
1234567890123456789012345678901234567890
AS
As linhas 3, 4. 9 e 10 escrevem UIIU. regua, de modo que possa ver os
mimeros cia coluna D.2. saida.
A linha 5 escreve f1 utiliz.anda a e a comprimento padrao.
A fOI1I1a.Uljio padrio para uma varisvel do tipo c espe cifica um ali-
nhamento a esquerda, entao a. safda apareced alinhada i esquerda
dentro de seu comprimenro de saidapadrsc (6).
A linha 6 produz a mesma saida porque tambem especifica 0 ali-
nhmlent.o aesquerda.
A linha 7 centraliza 0 valor deat rc do comprimento de saida pad.rio
de 6.
A linha 8 alinha adirein 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 eentao alinhado aesquerda, cenrralizadc e alinhado adireita
dentro daquele comp rimento.
Resuroo
Se voce nio estabelecer qualquer especificacac de formato ou de
comprimento na wr1 te l 0 formato e 0 comprimento padrao
do campo seraoutilizadas. Esses padroessao originados apartirdos tipos
de dados do AEAP/4. Os campos do DOle s.o baseados nos tipos de
dados do AJ3AP/4 e, assim sendo , herdam 0 formato e a ccmprimenro
padrac. Alem disso, as especificacces de formate, como ntimero de
casas decimais e comprime nto de saIda eambem podem ser especifi-
cades no domfnic; estes anul am os vaIores herdados.
Os campos 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 nu-
merico, os separadcres de milhar sio removi dos, urn par vez, co-
mecandc cia esquerda do campo em direljaO adireita a fim de exibir
mais djgit os. Ate mesmo 0 campo de sinal sen utilizado se 0 mesmo
estiver em branco.
Para a maioria cbs especificaljoes de forma.t o de data, 0 pad.rio do
usuano defmiri. peto menos em parte, como os campos de data
J
.:8
492 I APREMD'" EM 21 etAS UAP/4
OIA lUIHSTllU\lOWRtTE 493
Se nao souber como criar um m6dulo de Unc;ao, voce precisara
pr imeiro ler 0 capitulo relacionado com esse assunt o. Se voce
souber como criar urn m6dulo de funfiao, 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 INPUTe um pargmetro de
exponac;aodenominado OUTPUT. 0 valor original passado da ins-
tnlfiaO 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 200paramerrc OUTPUT. Uma boa maneira de comecar e
copiando urn existente.
Como criar uma salth de conversio?
o m6dul o de INPUT Echamado 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
convene a ent rada do ususrio para um novo formate antes que 0
programa a receba. Eurilizadapan reduzir a quantidade de c6digo
repetitive necessaric para farmatar novament e urn valor de en-
trada, de modo que a prognma que 0 utiliza nao tenha que fazer
isso.
Observei que existem tambem modules de com os
nomes CONVERSION_EXIT_XXXJO(_INPUT. Para que servem?
o
o
o
o Workshop cferece duas maneiras de voce verificar 0 que aprendeu neste
capjtulo. A seljaoTeste oferece perguntas pan ajudar asolidificar seu entendi-
mento do coneeedo abcrdadc e a 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 perguntas e aos exercrcios".
Workshop
P&R
Nao ccdlfiqvedemcis decimals 2 perc
quontios em d6la r. Por suo vez, utilize a
odic;oo currency,
Nao ccdrhque demais duos casas
declmcts para %ou parc quo lquer outro
unidade de medidc . Por suo vez, utilize a
odiC;ao unit.
deversc ser format ados. De tcdas as especificacces de formato de data,
somenre yyrrmdd anulari ccmpletamente 0 padrao do usudrio.
Urna mascara de edi'iao pede ser utilizada para inserir caracteres na
safda, Eta tambem pode solicitar uma saida de cocverssc que ici
formatar a valor, utilizaodo 0 c6digo do ABAP/4. Uma safda de
converssc como urn conteiner reutilizavel que concern urn c6digo
para formatar urn campo. .
Utilize no-zeropara suprimir zeros iaiciais nos campos do ripenetipo
c.
Utilize no-sign para remover 0 campo de sinal final "da
Utilize decimals para especificar 0 mimerc de casas decimals que
devem ser exibidas.
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 tcurx a funde determinar 0 numerc de decimals. Se0 c6digo
nao for Iocalizadc, urn. padrao de duas casas decimais sera utilizado.
Utilize uni t para [ormatar as campos de quantidade. A uaidade e
pesquisadanarabela t006. decan determina0 ndmerc de zeros decimais
aser 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 0
valor dentro do comprimento do campo de salda,
Utilize as scldcs de ccrwersec para
executor torefos de formotec;oo
repefitivcs, especiolmente se forem
complexes.
---=-------

Permitc que cs usudrics es pecfi quern
sevs pr6prios fonnotos de
Teste
1. 0 que voceprecisa fazer pan garantir que as no padrio do
usuirio entrem em vigor?
2. 0 que acontecera quando um.a ma-scara de edifiio que com
urn Vfor aplicada. a urn camponumerico ou a. urn campo de caractere?
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 A B ~ / 4 e as instruljoes para
ccntrolar 0 and.a.mento do programa
descobriu as instrucoes de atribuiljaoe 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 forma direta
e eficiente urna tabele interna
executou 0 processamento de quebra de controle em tabelas
internas
urilizou as 0pljoesde formatilrsao dainstruljao wri te e observou
as efeitos de tipo de dado sabre a saida
empregou assaldasde ccnversac e detectou sua preseclia denrro
do dominic
Revisao
SEMANA2
First
3. Com quais tipos de varisveis a adiljao no-stan pode ser utilizadapara
fazer com que urn mimero negative .aparelja como se fosse positivo?
Esereva urnprogramaque produza a seguinte said.:
., . + 1 +. 2 : +. 3 + .. 4
First December
January
Exercfcio 1
r r r . rr r r> r r: r"' r> r> r"' r> ,...,...
SEMANA 3
Visio geral
Na Semana 3, voce produzira relatorios que utilizam simbolos grificos
e leones, anexa cabec;alhos e rodapes alistas e envia saida para a spool de
iccpressac utilizando a instruc;ao new-page pri nt . Depois disso , voce se
familiarizacl com as eventos i ni t i al i zat ton, start-of-sel ecti on, end-
of -sel ect i on, top-of-page e end-of-page. Voce tambem codificars sub-
rotinas externas e internas e m.6dulos de funtjae e passara pargmerros
digitados e nae digita dos para eles par valor, par valor e resultado e por
referencia. Par fim, voce definid excecoes dentro do m6dulo de funt;:ao,
configurani a v;Jor de ret orno de sy-subrc e criara telas de selecac
ut ilizando a. select-npt t ons.
No Dia 15, "Tecnicas de formatatjao, Parte 1", voce utilizard as
opcoes de formatafiao grifica da instrutjao sr-t t e (as symbol, as
icon, as line), impressjlo lista de saida e manipula a sai'da no
spooL
Durante 0 Dia 16, "Tecnicas de formatacio, Part e 2", voce
utilizard as instrugoes comuns de formatac;ao new- I i ne, new-
page, ski p, back, pas; t i oneset bl ank 1; nes; eenviara 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-sel 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 njc digit ados
para sub-retinas; passard parametres de t res maneiras: por re-
feraacia, par valor e par valor e resultado; e pass ard strings de
campo e tabeles internas para uma sub-rotina.
15
Exibe urn simbolo em pretc-e-brcncc
Exibe umkone"decor
Exibe urnccrcctere de desenho de linho
Efeito
as symbol
as icon
as 11 ne
Depois de completar este capitulo, voce sera capaz de:
Utilizar as opcoes graficas de fonnataljao da instrucio write (como
simbolos, leones e linhas).
Imprimir uma Iiseade saida e manipular 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.
Escr evendo imagens simples voce pede utili zer as trSs adilj:oes mos tradas na
Tabela 15.1. .
Di
Eormotoc;60 gr6fico com a instruc;60 wri te
Objet jvos do capitulo
hllpJ l www.corTlPus.com.bl.
Tecnicasde Parte 1
Durante Dis 19, "Mcdularizaclo: modules de Parte 1", voce
entendera e util izara a instrucac i ncl ude, criard gropos de e
m6dulos de funr;ao e definira parametres de impcrtacao, de expor-
e aiterdveis.
No Dia 20, "Modularizacao: modules de func;ao, Pane 2", voce
entenderd as componentes e as estrurura de urn gropo de e
definir:i dadcs globaise 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 bem-projetadas e eficientes de selec;ao e utilizara telas de se1ec;:io
para manter integridade de dados,
498 APREHDA EM 21 DIAl ABAP"
77
n
nn
enmnnn

-FFFFFee ........ ,...-,


Utjlizaodo a as i con
As linhas 14 a 19 escrevem codigcs, nomes e came ros telefcnes de
fabricantes precedidos pelo simbolo de telefone.
' KHAl ' ,
'KHBl',
'KNCl'
/4 sYD'_fi1led_squaT"l! iI.S s)'lllbol,
/4 sym_fill ed_square as symbol.
/ 4 s)'lLfilled_square as symbol.
o ccdigo D' Listagem 15.1 produz a sald. mcs trada D' Fi gura 15.!.
As linhas 4 11 escrevem urn. lista de Domes de rabela dificil de
codificar na forma de marcadores.
IOVO .... Um fcone_tsemelhonte 0 um sfmbclc , excetc pelo fato de que eumo nguru
lEUO " multicolorida qU!I pode epereeer no listo de scjdc. Amaioria dos leones ocupo
dois espocos no Ii stc de scldc, emborc alguns ocupem mois. Um exemplo de umc
instrvo write que escreve urn leone serio write 1con_l ed_red as 1con.
Para escrever um leone, voce deve incluir uma das duas insrrucoes
seguintes na parte superior de seu programa:
include <icon>,

10
11
lZ skip.
13 ul tne .
14 se lect liP to 5 rows f rom ztxlfal.
15 write : / ztxlfal - l1 f nr ,
16 ztxl f al-namel ,
17 sytl.Jlhone as symbol,
18 ztxlfal- t elfl.
19 endset ect .
Utiliza odo a as symbol
lOyD .... Urn s{mbolo eurno figure blcclcr simples de urn simbolo comum como urn
m.o ,. quocl rcdo, urn d rculo, urno po sta ou urn documento. A moiorio dos sfmbolos
ocupa um unico ccrcctere no liste de soido, 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 seriowrite sYDI_l ef t_hand as syrrtlol .
A fim deescrever um sfmbolo, voce deve incluiruma das duas instrucoes
seguintes na parte superior de seu programa:
inc:lud. <syrd,l ol:>.
Tcdos as s!mbolos sao imprimfveis. Isso significa que se voce enviar sua
safda para a impresscra, eles aparecerio no papel exatamente como voce os ve
online .
ou
i ncl ude <list>.
S
' t d' - ' f ' , t - l t
10 axe para as a u;oes gra leaS para a lOS wrJ e
write n1 (a) illS iymbol.
(b) IS icon.
(e) I S line.
m onde:
T As adic;oes (a) , (b) e (e) sao mu ruamente exclusives.
nl e0 no me de urn sfrnbolo, {cone au caract ere 11ne-dres.
500 APREHDA EM21 DIAS ABAP/4
15 icon_checked es icon,
15 icon_tncOJlPl ete as icon,
write: / 'checkmark '.
/ ' r ed x",
1 rtport zo.1502. .
2 incl ude <icon> .
3 tables: ztxmara, ztXllgef .
4 data f co 1i ke i con_generate .
5
6
7
ou
t nclll de <l1st>.
Nem todos os leones sio imprimfveis. 0 procediment o para determinar
quais podem ser impress os segue mais adiante oeste capitulo.
A Listagem 15.2escrevealguns Icones de exemplo.
Listagem 15.2 Como escrever kones em uma listc
MOYO.... 0 nome entre slncis de maior e menor eurn progroma ind ude. Esse progromo
TEi.ll:O" ccntem um conjunto de instruc;oes que defineos names dos simbolos que voce
pode utilizer. 0 include <symbol >conMms6 os dennic;6es de srmbole. 0 include <1 i st>
contem sfmbolos, leones, ccrccteres de desenho de linhc e definit;Oes de cor. Allstcqern
15.1 contemumprogromo de exemplo que utilizesimbolos.
ListCl gem 15,1 Sfmbolos porc
1 re por t ztx1501 .
2 include <syrrtlol >.
3 t ables ztxlfll.
4 wri te : I sy:nJllus_box as symbol , ' Vendor Ma ster Tables',
5 /4 sym fi ll ed circl e as symbol , ' LFAl' ,
6 / 4 sym)111e(cin::le as symbol, ' LFBl' ,
7 / 4 syrn f i ll ed ci r cle as symbol , ' LFCl ' ,
B / as symbol , 'Customer Ma st er Tabl es ',
502 APRENDA EM!1 DIASABAP/4 euIS. TtCNICASDE FORMATA\lD,PAlm1 503
Em geral, para criar uma linha horizontal, voce ut ilizaria sy-ul i ne. Sim-
plesmente escreva-o e especifique 0 comprirnent o nec essaria. Por exemplo,
para escrever uma linha horizontal que corne lia em posiliao 5 para urn compri-
menta de 10, voce codificaria write 5(lO} sy-ul i ne. Para eriar uma linha
vertical, utilize sy- vl i ne: par exemplo, wri te: sy-vl i ne, I XI , sy-vli ne escre-
veria uma linha vert ical em qualquer lado de urn X. Se houver uma
As fuLhas 6 a 9 escrevem um exemplo de quatro leones diferentes.
A linha 4 define uma varifvel identificada como i co para canter urn
leone a ser escrito, Qualquer nome de Icone pode aparecer depois de
like.
Alinha 15seleciona registros cia tabc:la de materiais ztxmar a. Pan cada
regis tro, alinba 17pesquisa a ndmero do material de risco em ztxmgef.
A linha 19 deeermina se 0 material eradioativo. Se for, endo 0 Iccne
identificado como i con_gener at e eat ribu ldo avaridvel tcc.
A lioha23 escreve a valor de 1co utilizando as ; con para fazer com
que 0 valor seja inrerpreradc como urn leone. Campos adicionais de
zt xmaratambem sao escritos.
NOYO '" Um coradere de desenhode linho eum ccrcctere que pod e ser utilizodo para
TElMO r desenhor bnbcs em umo listo. Voce pede utiliz6-lo pa ra crier linhas horizonta is
au verticcis, umo ccixc, uma grade ou umo estnJturo do tipo ervore.
Utjlizando a as 1j ne
F i g u r a 15 2
EsteeIHTl exemplo
de sardo de listo
ccn1endo fccnes.
>
: c ... ." .
I ' o'll!!! n 1@w '. 15 icon_overview as .1con,
I ' t i lDe peMod'. 15 ic onJll!Mod as t een.
o c6digo na List agem 15.2 produz a safda mostrada na Figura 15.2.
8
9
10 s kip .
11 ul tne.
12 skip.
13 wr1te : I ' Ust of Materi a15 wi th Rad;cect t ve Jndi cat or -s '
14 ul1ne .
15 select * f l"Olll l txmara .
16 clear tee.
17 1f not ztxmarastoff 15 initial.
18 select single * from ztxmgef where stoff " ztxmarastoff .
19 if ztxmgef-lagkl .. 7.
20 1co .. ico"_!ll!neratl!.
21 end;f.
22 endi f .
23 wrfte : lieD as teen ,
24 ztxmara-matnr.
25 zt xmaraellt art ,
26 ztxlIIara.matkl.
27 Itxmara -brg!'W.
28 ztxmaraentg!W.
29
30 eneseteet .
Figura 1 S 1
SiiDI
Este euml!xomplo de
sardode listo
COllftondo sfmbolos.
__aa
504 ! A,mDA EM21 DIAl ABAP/4
j

mm
rr
_ - _
15,OOIGlS IlE FORMA14>,O,' Arn1 505
write: I
4
8
o c6di ga na Listagem 15.3 praduz a safda mostrada na Figura 15.3.
A linha 2 inclui as para todos as s!mbolos e caracteres de:
desenho de: linha de modo que possam ser utilizados oest e programa.
A linha 4- define duas variaveis que podern armazenar caracteres de
desenho deliaha,
Alinha 7le todas as linhas de zt xl fal.
A linha 8 Ie zt xlfbi para ver se ha qualquer registro-filho para a
registro ztxlfal atua].
Se existirem registros-filhcs, a linha 10 escrevera uma linha vertical e
urn slmbolo de pasta aberta. Se ncnhum fa r localizadc, serio escriras
urna linha vertical e past a fechada.
A linha 14 escreve 0 ntimerc de fabricant e na mesma linhae entaa uma
linhavertical. na 30.
A linha 15 11 as regisrros-filho s de zt xlfbl.
A linha 16 olha na fre nte para determiner se est e 0 ultimo registro-
filho au se hi rnais.
Se houver 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.
Figura 15 3
EsIe Ii urnexemplo
de safda de listo
contendo corocteres
de desenhode linha.
i f sy-subrc O.
Hnd line_1eft _nri ddle_corner.
l1neZ l1ne_vert iea l_l1 ne.
else;
li ne! l tne.. bottclIUeft_corner.
clear l tnez,
endif.
write : / sy-vBn e.
4 li nd as lt ae,
zt xl1bl-bukrs,
30 sy- vj tne,
select * from zt xl fc3 wher e 11fn1' '" ztxl f bl l1f nr
and bukrs ztx1fbl-b uk1's .
sy-vttne,
l1ne2 as l i ne,
li neJ eft_lli ddl e_comer as line,
ztxl fc3-gj ehr, ztxl fc3-shbkz.
30 fne.
endsetect ,
if sy-s ubre O.
write 8(Z) line_b ott cm) eft_corner as li ne.
end1f.
endselect.
write: /(30) sy-ult ne.
endsel eet ,
select 'It fl"Olll ztxlfal.
select si ngl e " fl"OOl zulfbl where l Hnr ztxl f al l1fnr.
if sy-subrc " O.
wrtte: I sr - vl f ne, s)'Ill_ope"_folder as
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 .
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 decaixasera desenhado. Paraproporcionarcontrole absolute de: desenho
de linha ha caracteres 1t ne-drawadicionais disponfveis.
1 report ztx1S03.
2 i ncl ude <list>.
3 tables : Ztll fal, ztxlfhl . ztltlfc3.
4 dat a: l 1nel l1ke I 1ne_hor izontal_line,
5 l1ne2 11k1! li ne_horizontalJine.
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
AD
41
42
43
Listagem 15.3 Sfmbolos e corod eres l ine-draw
f
1
!l
I.

I:
DIl lS,ITCNIClS DEFO....Tl(lO,p'mI ! 507
o c6digo IU. Listagem 15.4 produz a. saida mostrada na Figura 15.4.
SliDA
Listagem 15.4 Simbolos, leones e caraderes li ne-draw
1 re port zo 1504.
2 include el tst>. -def1n1t;lles para {cones , sflllbolo s + desenl'lo de linha
3 t abl es: zUlfi l. ztxlfc3 .
4 data: it 11ke ztxlfc3 occur s 100 wit h header line.
S ;co_' 11ke 1con..9reen_' 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 1f tt - se'lev < 1000.
10 1coJ 1co"_green_li ght .
11 el set f betwffi' 1000 and 3000-.
12 fcoJ .. 1conyellow_l1ght.
13 else.
14 1coJ i co!,!_red_l1ght.
15 end1f .
1.6 at new 11 fnr.
11 ff sy-tab1X 1.
18 write: / 5(82) sy-ul1ne.
19 19 lfne_bottOlll_m1ddle _corner as li ne.
20 21 l1ne_bottlJll_middle_corner as li ne.
21 slt: 1p
22 endt f ,
23 write: /S{lS) sy-ul t ne,
/ S-sY- vl1ne. sYIK_docurr.ent s IS symbol .
25 ft. ltfnr. 19 s1-vt.ine.
26 / 5(82) sy-uli ne.
27 19 line cross as Jtne,
28 21 l1ne=top_middh_corner as line.
29 endat .
_.30 write: / i co_l as icon.
31 5 sy-vt t ne, ft bukrs. sy-vltne.
32 it-gjahr. UmU ef t J l i ddl e_comer as line no-gap.
33 1t - shbkz no-gap, l1neJ1ght _1I1ddle_coTner as li ne.
34 t t -saldv,
35 it-son 1,
36 1t -hebnt , sy-vl t ne.
37 at last .
38 write / 5(84) sy-u'l t ne.
39 endat.
40 end1 oop.

--------4-----------------.
Nem todos os leones podem ser impresses. Quando voce as edbe
utililondo as possos cntericres, voce pede ver que as imprimiveis estOO
mercedes no llstc.
A linha 26 escreve avarisvel I ine l utilizando aadiljio as 1i ne de modo
que 0 valor seja interpretado como urn caracrere de desenho de linha.
As linhas 30 a 37 escrevem as filhos do registrc ztxlfbl atual utili-
zando caracteres de desenh o de linha apropriaclos.
A linha. 42 escreve urn subliohado com urn comprimento de 30
caracteres.
1. . Comece edinndc qualquer program. no ABAP/4 Editor. Vace deve
estar na tela ABAP/ 4 Edi tor: Edit Program XXXXX.
2. Coloque seu curs or em uma linha em bracco.
3. De um clique no boeso Pattern au escclba 0 caminho de menu
Edit->Insert Statement. 0 sistema exibe a tela Insert Statement..
4. Selecione 0 botao de opCJio Write.
5. De urn clique no bc tac Continue. 0 sistema exibe a tela Assemble a
Write Statement.
6, Escolha Symbol. Icon ou Line.
7. Coloque 0 cursor no campo de entrada adireirado batao de
que voce eseolheu.
8. Pressione a reels F4. 0 sistema exibe urna lista dos itens disponfveis.
9. Dc urn clique duplo em urn para escolhe-lo. 0 sistema entjio 0 lev.
de volta atela. Assemble a Write Stat ement.
10. Deurncliqueno borao Copy.Voceeaeac volta atela ABAP/ 4Editor:
Edit Program XXXXX, e uma wri t e einserida que escreve
o item.

Utilize os passos 1a. 8 do procedimento aseguir para exibir os sfmbolos, leones
e caraceeres de desenho de linhadisponfveis. Seguindo todos os pass os, voce
ira gerar uma instruCJao wri te que escreve 0 it em selecionado na lists .
Exibindo as simbolos, leones e ca racteres 1; ne- draw
disponiye;s
506 I 'PRENO' EM 21 nus"'P"
Formatoodo e impri mi ....s,,----- _
Est a seCjao abraage as seguintes tecnicas de de relat6rio:
H

508 I APlEHDA EM 21 D[A5 ABAP/4
Controlar 0 tamanho de pagina
Titulo! de relatorios, cabecalbcs e rodapes
comum e de
DO l s,r!cH[CAS DE fORMATA(.iD.PAm1 [ 509
k especifica 0 mlmero de linhas reservado para urn rodape na pa.rte
inferior de ca.da pagina.
Nao ccloqce t , j ou k entre aspas.
Utilizando 1; ne- st 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 pana largura de safda
do seu programa. Se sua janelafor redimensionadapara menos que 0 maximo,
o sistema aincia utiliza.ri a tamanho maximizado. Urna barn de rclagem
aparecerd na pa.rte inferior cia janelapermitindo a voce rolar para a direiea ever
o resto do relat 6rio.
Para anular esse comportamento, voce especiflca a largura da.lista de saida
utiliz.ando 1tne-siz e. Valores validcs sao 2 a 255.
Fiou r a 1 5 4
Este iii umexemplo
de sardo de listc
contendo sjmbolos.
fconrs e eereeees
de desenho de /inno.
A melena dos lmpresscrcs noo pode imprimir meis de 132 ccrecteres
par Iinho. Se voce sabe que seus uS!Jcrios poe/em querer imprimir a
de sardo, noo tente excede r esse limito o.
Controlondo a tomonbo de p6gino
Para contr olar 0 tamanho da pf gina de safda, utilize as seguint es adifioes na
report:
line-si ze
11 ne-count
A adifiio , i ne- s1ze controla a largura da lista de saida; 1i ne-c cunt can-
t rola 0 mimero de linhas por pagina.
o numero da pdgina eimpressa no cant o superior direiro da lisra. 0
mimerc padriio de Iinhas por pagina 60.000 - 0 maximo permitido. Voc!
pode utilizar 1i ne-count para anular esse ndmero. Por exemplo, peraespeciflcar
55 liahas por pdgina, digit e re por t line-count 55. Especificar 1i ne-count 0
. significa utilizar 0 maximo (60.000).
a usudric pode especiflcar 0 ntime ro de linhas por pfgina que eapro-
priado para a impressora quando imprimir 0 relat6rio.
1t ne-count mo encrmalmente ueilizadc com relat 6rio s que sio visuali-
zados online. Por exemplo, suponha que a R/3 incrementasse a 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 redimensionar a janela torna
dificil fazer regras sabre Dumeros de pigina online. vocepoderia tentar deixar
Vocetcrnbempede configurar 11 ne-count no meio do relat6rio, assim
p6ginas diferentes podem fer numercs diferentes de linhas de sclde .
Para fozer isse, utilizec instnJ o new-page (obordada mais cdlcnte).
Esta tcmbempede ser utilizada para configurcra numerc de llnhcs per
pcgina antes de quolquer scldc ser gerodo.
"
t , J e k sao constantes numericas. Variaveis nio sio permitidas.
i especifica a largura cia lista de saida (em caracteres).
j especifica 0 numero de linhas por paginana lista de saida.

Sintaxe das 1i ne- st ze e 1; ne-count para a


report
A sintaxe dasadifioes l i ne-s ize e li ne-count para a instrucic r eport ecomo
segue:
r eport ltne-st ze 1 l1ne-count j(t) .
onde:
511 DIA15, TtoHCAS DE FllRliATAIiD, PAm1
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 inde-
pendentemente dalargura da. janela de saida.. 0 usudrio pode urilizar
a barn de rolagem na parte inferi or cia. janela pan ver a sardafora de
visaoa direita,
Na linha 1, 1i ne-count configura 0 numerc de linhas par pigina como
55. Iss o causa urn problema.quando 0 ususrio role para baixo, que nie
ocorr eria se 0 valor padrfc pan 11 ne- count tivesse sido utilizado.
Outre problema podeocorrer quando 0 usudrio imprime a Iista, Se a
impressora eac imprimir exatame nt e 55 liohas por pagina, 15 queb ras
de pdgina sairao iaccrretas. Ncvament e, uti.l.iundo 0 padrac 1ine-
count , esse problema pode ser evirado, porque 0 usuario especifica. 0
mimero de linhas por pigim quan do selecionar uma impressora.
As configuracoes padrao de impr essora sao especificadas no seu perfil de
usudrio. Utilize 0 caminho de meou Profile- > UserDefaults para altere-las.
Essas configuracc es sersc utilizadas sempre que voce imp rimi r urn relat6rio.
Seuconsultor de Basistcmbempode definir umamaquino de fox como
urndest ino de impressoo. Para envierurnrelot6rioporfox, espedflqce
Choose0 FaxMachine 10emvez de umPrinter 10 no compo Output
Device.
Imprimindo 0 saida de lisla
Inicie a ScreenCam "How t o Print list Output - agora,
Para imprimir a. saf&t da Listagem' 15.5, primeiro execute a relat6rio e
entio si ga este procedimento:
1. Da.lista de safda, de urn clique no batao Print ria barrade ferramencas
Application. Se nao estiver disponfvel, escolha 0 caminho de menu
System->JJst->Print. A tela Print Screen List sera exibida.
2. No campo Output Device, digite a mdOl sua impressora. Voc! pode
obter uma lisa de codas as impressoras defini das para seu sistema
colocando seu cursor nesse campo e pressionando F4.
3. Coloque urn rnarca de 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.

o c6digo na Listagem 15.5 produz a ,aida mc strada na Figura 15.5.


FIgura 15 5
Este l! 0 efe/todo
odi)60
l me-count,
LLstagem 15.5 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 on chanYI! of ztx1fcJ-gja hr .
8 wri te / 10 ztxl fc3-bukrs .
9 endon.
10 write: / 20 ztxlfc3-gjahr.
11 ztxlfc3-shbtz.
12
13
14 ztxl fc3-habnl.
15 endsetect ,
sllDI

. 21 DIASABAP/4

0 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 pdginaeao maiscorrespoaderao com a altura da janela, 0 usudrio
veri lacunas na saldae no inicio de paginas no meic dajanela, Pan evitar esses
problemas em relat6rios online, utilize a valor padrsc para 1tne- count.
A Listagem 15.5 mostra urn programa de exemplo que ilustra 0 usc de
li ne-count el ine-size.
512 APlENDA EM 1I DIA' ABAPI4 15,OOICAl DE FOWnl.io.PAJrrE 1 513
... lnicie a ScreenCom "How to Create Standard Report Heode rs from the Us!" .
SCRE!HClM,. ogo"' .
I . lnicie a partir da tela AJ3AP/4 Editor: Edit Program.
2. Se voce mer qua.lquer alterac;ao, salve seu relat 6rio. Como men-
cic nado DO Ultimo quadro de Cuidado, voce tkve fazer isso para as
passes seguintes funeionarem.
3. Execute a relatorio. Voce entio ve a sa!da de lista.
4. Escolha a caminho de menu System- > List->List Header. Os cam-
po s de entrada aparecem na parte supe rior do relat6rio - om para a
cabe?1ho e quatro pan cabe<;alho. de cohm.a.
5. Digite uma lista e as cabec;alhos de coluna nos campos de entrada em
branco.
6. De um clique no batao Save na barn de ferramentas Application. A
mensagem Changed texts act i ve f r am next start of xxxxx in
Criando ccbecclh os de p6gina pad roo
Uti!izar cabecalhosde paginapadraoEamaneiramais facil de criar cabecalbcs
de relateric. 0 procedimento a seguir descreve essa maneira.
Esse procedimento rico funcionorO voce chercr seu progremo e
tentor esse procedimento sem salvor suos primeiro. Quando
voce escciher a caminho de menu pare odic::ionor os cobec;olhos,.em
vez disso voce ver6 umo ccixe de dielogo que indica que voc6
pede olterer um progromo do SAP. IS$O oc ontece se voce nCo fiver
salvo SUO$ olteroCioes, porque dessa forma no reclldc de est6 execu-
tendo urnc c6pio tempororio do original - urno que ccntem suos
altero<;oes. 0 nome dessc c6pio noo initio co m Ynem Z, entao R!3
noo 0 deixor6 eltere-le.
Pa r padrsc, a tela Print ScreenList a.parececomo a tfrulo au na parte
superior do seu relatorio. Voce pode eriar seus pr 6prios titulos au cabecalhos
utilizando urn destes dois metodos:
Cabecalhosde paginapadrso
Evento top-of -page
Se voce Ilio colocou a mara de seleCjao Delete After Print na tela Print
Screen List, a saida permanecerdno spool. Isso permite a voce reimprimir mais
tar de. Isso l1w se sua impressora m.wta personalizada,
'(jgndo cobe<;jglhg5 e rOdgpe5 de paging
.
Pore envier urn rel0t6rio para multi ples impressoros 00 mesmo tempo,
pecc para a seu consuher de Basis instclcr um pool de impressorcs
(ere deve executer 0 rel0t6rio RSPOOO51 primeiro,e entao definir umc
impressorc do ti po P - 0 poo l - utilizondo umo tronsoo SPAD).
Entaa, co imprimir, voce escolhe esse pool de impressora no lista de
impressoros. Essa funcionolidode esta disponrvel no versec 3.0F e mois
recentes.
Tra ba lha ndo com 0 spool
Quando voce cia urn clique no bataoPrint, sua saidaeenviada primeiro pan.. a
spo ol do R/3 e entio p:ara a sistema operacional. Se voce cac cclocou uma
marca de em Print Imrned, a saida de lista earmazenada no spool do
R/3 - elanaa e enviadaparaa spoo l do sistema cperacional. E aIfica ate voce
a. excluir au imprimircomaopc;ao de exclusao ativada (acaixade selecacDelete
After Print na tela Print Screen List), ou iite que envelheca a suficiente pan
umtnbalho de limpezaexclui-la. Os tnbalhos delimpezasao agendadospelo
consultor do Basis; eles normal ment e 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. utilize0 seguinteprocedimento.
Inide 0 ScreenCam -Worlcing with the Spool-
1. A part ir de qualquer tela, escolha 0 caminho de menu System- >Ser-
vices->Print Request s. A t ela Spoo l: Request Screen eexibida.
2. Digite as crite rios para localizar sua safda. Sell Id de csuaric (Inser ido
no campo User Name), e as campos Client e From Dat e em geral
sao sufi cientes .
3. Pressione Enter; A tela Spool: Requests eexibida. Ela contem uma
Iisu das ent radas que correspondem com 0 spool.
4. Para exibir a saida para uma entrada, cclcque urn marca de ao
lado deb. e entaD de urn cliqueno 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 umcliqueno botio Display. Aprimeira
entrada eex.ibida. Para ver 11 pr6xima entrada, deum clique no botao
Next Spool Request na barra de ferramenus Application. Para ver a
entrada de visuali zac;rao, de urn clique no botao PrevoSpool Request.
6. Para imprimir uma entrada. de um clique no botio Print.
515
1anguage Eapuece. 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 atela ABAP/ 4
Editor: Edit Program.
8. Execute 0 relat6rio acvamenee. Voce vera seus novas csbecalbcs na
parte superior da saida,
Voce pode estar se perguntando: afinal, onde esses cabecalhcs sao ar-
mazenados ? E mesma se nao estiver, voce isso de qualquer jeito a
segurr.
NOVO.... Os ccbecclhce que voce cccbou de fnsertr see ormozenodos com seu progromo
lEUO r como elementos de texto. Um e lemento de teste equolquer string de ccrectere
que eexibido no soldo de ltstc . Tclvea cpcrecc 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. ASAPgostc de proporcionor copocidodes de multiplos ldic mcs
em seve programos, de modo que quo lquer coisc que possc precisar ser tradlJlido (por
exemplc, ccbecelhcs de relot6rio) sl!!l io crmceeocdc seporodomente do c6dige>-fonte
como elementos de texto. Esses elementos podem ser traduzidos sem oltercr 0 c6d igo-
fonte . Neste estamos trotondo especiftcerrerrte dos elementos de texto de relctoric
e ccbeccthcs de cclunc , mos tombem he outros que serna trotcdos mc ls odlcnte.
Uma vez que as cabecalhos padrio SaO armazenados como elementos de
texto, voce pede vs-los e modifier- 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 procedimento para ver, alterar au criar cahecalhos
padrao.
scmNCAM.... lnrcle0 ScreenCam "Howto Create Stonda rd Report Headers Via Tex! Elements"
,. a go ra.
1. Da tela ABAP/4 Editor: Edit Program, escolha 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
3. De urn 'clique no batao Change. A tela Al3AF/4 Text Elements:
Change Title And Heading 6 exibida. 0 campo Title conrem 0 texto
do titulo que voce digit ou na tela ABAP/4: Program xxxxx Anri-
butes. Se a campo List Header estiver em branco, 0 campo Ti tle e
exibido na pu te superior cia lisra. a campo List Header permite
anular 0 campo Title e especifi car um cabecalho diferente do titulo
do relat6rio . Insira urn cabecalhc de !ista ai e, na pane inferior da tela
nos campos Column Header, insira as 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.
!
I
I
!
I
I
i
,
i
!
L
4. Pressione 0 bone 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 programa. Seu tftulo e os cabecalhos novos aparecem na
parte superior do seu relat6rio.
Os elementos de texro tambempodemser acessados a partir cia ABAP/ 4
Editor: Initial Screen escolhendo 0 bcuo Text Elements, e entia dacdc um
clique no bou"o Change. Voc! pede achar util revisera nos componentes
de um programs de ABAP/4 neste ponto (veja a Figura 2.1 no Die 2, "Seu
primeiro programs em AJJAP/4") .
FigurA 15 6
&to tela c:ontemOJ
elemenlos de IeldO
idles eo Headers
podr60.
Para reviser, na telaAJJAP/4Text Elements: Change Ti tleAnd Heading,
se 0 campo List Header nio esciver em branco, ele esd, sendo uti.1izado como
o cabecalho. Se estiver em bracco, 0 campo Ti tle eutilizado como cabecalho.
Traduzindo as elementos de teldo
Criar dtulos e cabecalhcs como elementos de texto permite que des sejam
tnduzidos em idiomas estrangeiros, norma.lmente po r alguem especializado
na de termos tecnicos au especlficos d.a. indus tria. Nesca secio, voce
pede experimentar isso se tiver uma ideia do pr ocesso.
I
;1
il
t,
j!
1
DIA15, TtOlICASOHORlllTAIio. ' AIUE 1 517
o funciandria que foz a troduc;ca normalmente utilize a tronsa<;co
SE63. Esta oferece urn conjunto de programos que permlteque tcdcs
os testes no sistema seicmtrcdvzidos. Por exemplo, as descncees dos
elementos de dodos, Indices, 1extosde seler;oa em progrcmos e ossim
par dionfe podem ser trcduzidos cqui. Comec;ondo no tela ABAP/4
Development Workbench, 0 ccminho de menu eUtilities- > Translo-
tlcn-c-Shcrt/Lcnq Texts.
Utilizando 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 tuido
par AA e &l sera substiruido por BBno cabecalho.
Embora. cada varavel sy-tvar possa armazenar urn valor com ate 20
caracteres, 0 comprimento de salda da varidvel e2 por padrio. Isso signifies
que, por exemplo, onde quer que &0 apareca no cabecalbo, exatam,en,te dois
espacossao reservados para. valor de sy-tvarO. Se0 valor em sytvar O I A'.
aparece I A'. Se0 valor e I AA I , aparecerd 'AAI Se 0 valor e I AMI 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 para 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 ) .
Allstagem15.6 contemumprograma queutiliza ti'tulos de paginap;.drio
contendo varifveis. AFigura 15.7mostra como codificar essasvarifveis na tela
ABAP/4 Text Elements: ChangeTitle and Heading.
Listagem 15.6 Voriove;, emcobe,olho, de peg;no podr60
1 report ztx1506.
Z tables ztxlfal.
3 parameters: p)andl like ztxlfal-lanal default ' US
1

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 ,
i
I
,
i
,
i
, .
L
r
I
o podnio da SAP ealinhar Cesquerdo 0 cobecolhono lista de scrdc.
Como resultcdo, 0 ccbecclhc noo pode ser centrollzcdo. Mesmo se
voce cenlrcllee-lc ma nuolmente colocondo espcccs no frente, ele
oporecer6 olinhodo aesquerda no sotdc.
Inicie a ScreenCom "Tronsloting Titles and Headers- agora.
1. A partir da telaABAl'/4 Text Elements: ChangeTitle and Heading,
escolha 0 caminho de menu Gorc-e-Translation. A tela Target Lan-
guage For Translati on emostrada.
2. No campo Target Language, escolha0 idioma para 0 qual voce quer
tr aduzir seus element os de rexto. a idioma escolhido anteriormente
pre cise ter sido ins talado em sell sistema peIo seu consultor de Basis.
Deutsch (alemao) instalado em cada sistema, porque ea linguagem
Mestre para todos os sist emas R/3. Portanto, escolha D (Delf.tsch).
3. DSurn clique no bcu c Translate. Atela 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 text o original e urn campo de entrada. para a traducio. Quando
em branco, esse campo de entrada contem urn caracte re de subli-
nhado.
4. Nos campo s que contem urn caractere de sublinhado, digite a textc
da sua tr aduljao para.0 alemso. Sevoce nao souber a idioms, simples -
mente substirua todos as.Ietras C par K e utilize diversas frases que
terminem com Strudel ou que contenham a nome Wolfgang.
5. Deurn clique no batao Savena barra de [erramentas Standard. Se dyer
mais traducoes a fazer, vccs permanecera na mesma tela. De urn
clique no bosao Back para v.er a proximo conjunro. Quando nao
houver mais t exto a ser t raduzidc, 0 sistema 0 levari de volta atela
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. Execut e seu programa. as tftulos traduzidos aparecerao. Se exibir os
arriburos de programa, voce vera 0 titulo traduzido na tela ABAP/4:
Program at tribute xxxxx.
Todas as traducoes sao armazenadas em urn pool de propostas, do qual
voce pode recuperar traduqoes anteriores de uma palavra ou frase . Se voce
inserir uma t radu<.iao que difere das armazenadas no pool, 0 sistema automa-
ticarnente lhe oferecera as tradufioes anteriores. Voce entaa deve salvar a nova
au selecionar uma anterior.
A
.-
,.0.
top-of. page.
wnte : I ' My ', f1.
u11ne.
NOVO ltrr... Um evento no ABAP/4 como uma sub-retina em outros linguogens. Trctc-se
lUIO r de umc seo independente do c6digo; elo executa umo torefa e entOo retorno
para 0 ponto de chcrnedc. Entretonto, 0 0 ccnt rcrlc dos svb-rctincs, voce nco codificoa
chomodo pora um eveotc. Emvez disso, 0 sistema adono 0 evento pore vocA quondo
umo condi;ao espedfi co surge.
o evento t op-of - peqe eacionado quando a primeira instruliao write 6
executada. Antes dequaisquer valcres seremescrirosna Iista, a sistema ramifica
pan 0 c6d.igo que se segue a to p-af-page e execut a. Entao ele ret orna para a
wri t e e escreve os valores. A Listagem. 15.7 e a Fi gura 15.8 ilustram
esse processo.
Na Figura 15.7, &0 . . . . .. .. indica onde 0 valor de sy-tvarO apare-
.cera. Os pontos aumentam 0 comprimento cia safda da variavel de 2
para 12. &1 indica onde 0 valor-de sy-tvarl aparecera, &2
indica onde 0 valor de sy-tvar2 aparecera e &3. 0 valor de sy-tvar-S.
Os pontos .aument am os comprimentos de safda para 10, 8 e 3,
respecrivamente.
OL\ rtCHlClS OEFORlIATl\AO, PARTE 1 I 519
Criando de pagina manuais
Cabecalhcs de pfgina padrgo sse facei s de criar, mas tambem tem algumas
Eles sao limitados a uma linha para 0 cabecalhc de pfgina e a quatro
linhas para os cabecalhos de coluna. Urn maximo de 10 vari aveis pode ser
utilizado, ada com urn comprimeoto minima de dois caracteres. 0 cabecalho
6 sempre alinhado aesquerda e as cores sio padrao e eac po dem ser alteradss.
Tteulos manuais, entretanto, nao tern essas
Pa.ra manuais,voce precise
Desativar cabecalhcs de pagina padrio.
Utilizar 0 -eveaeo top-af-page para criar ueulc s personalizados.
Para desa:tivar as atulos padrio depdgiaa, voce adiciona no standard page
headi ng ao fim cia de relat6rio.
Ust agem 15.7 0 evento top-at -page
1 report zt.d507 no standard page heading.
2 data fl( 5) val ue 'lni t'.
3 11 'Title '.
4 writ e: I 'Hi' .
5
,
7
8
i
i
l
,
I
i

I
i
1
I
t
I
I
i
!
Country Code: US
o c6digo na Listagem 15.6 produz esta safda:
KEHGREENWOOO ' 1998/ 05/ 05 19, 40, Ja
A linha 3 define p_1andl e solicits ao usudrio urnvalor.
A linba 4 atribui 0 Id do usudrio arual a sy- t varO.
A writ e C Ol linha 5 move 0 valor de sy-dat ue para sy-t vert .
Urna comurn de auibuic;ao (utilizando = ) teria movido 0
valor sem formaci-Io. Utilizar write faz com que 0 campo seja for-
matado com separadores de acordo com 0 perfil do usuaric.
A linha 6 fermat a a data/hera atual e move pan sy- tvar2.
A linba 7 at ribui 0 valor que foi inserido pelc usuario a sy-tvar3.
As linhas 8 a 10 escrevem urn relat6rio simples de fabricantes.
1040 Mot her baarns Inc.
1080 Si li con Sandwich ltd.
1090 ConSlIlle Inc.
ZOOO Moni tors and More ltd.
VI Quanti t y First Ltd .
V2 OverPriced Goods Inc.
V3 Fl uf f)' Bunni es Lt d. .
V4 Moo l 1ke a Cow Inc.
VS WolfJnan Sport Accessories Inc.
V7 The Breakf ast C1 ub Inc .
Flgnrn 15 7
AleTa N3N'/4
EletTWMIs: Otonge
Til/I! andHeading
portJ 0 progroma
ztxJ506.
sliol
"j.
c.....
r7ti:
"
----

t op-af-p age.
write: / ' CONFIOOOIAL' ,
/ ' Thi s page begins wi t h number' . sy-1ndex.
Os relat6rios em late normalmente sao impresses e assim terj o urn
tamanho de pagina definido que nfo se altera depois que 0 relat6ri o criado,
dessa forma. ecrac des podem ter rodapes de pagina.
Para. eriar os rodapes de pdginavoce precisa:
Reservar espacopara0 rodap' na pane inferior da p'gina utilizando a
1i ne-count na report.
Do evemo end-of-page.
Para reservar paraseu rodape, voce pode codificar 1i ne-c cunt n(m)
na report. onde n ea mimerc de linhas par pagina e me0 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 linhaspo r pagina quando
imprimir 0 relat6rio. Portanto simplesmence ignore-o e di git e report zxx
l ine- count (m) . .
Durante 0 processamento de relatorio, sy-pagna coneem 0 mimero arual
de pfgina e sy-l i nna contem 0 admerc atual da linha que esta sendo escrita.
Codifique end-of-page na part e inferior do seu programa, como mos-
trado na Listagem 12.8. As instrucdes que se 5eguem a end-of- page sio
executadas ant es de cada nova pagina ser iniciada. Uma nova pagma eabena
quando uma write eexecutada 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 usudric pode ter especifieado 60 linhas
por pagina, A Orea de rodape pcrtant o fiea dentro das linhas 58 a 60. Se voce
acabou de escreve r a S;t! linha, a pr6xima instruliio wr i te para uma nova linha
acionaci 0 evecec end-of- page) seguido par uma quebra de pagina, a eveneo
top-of-page e entjic escrevers a saida da pr6xima pagina.
IlIA,s,r!a<IClSDE FOiMATA(lD. PAm1 521
Lista g e m 15.8 as eventos tap-of -page e end-of-page
1 report ztx1508 line-count 20{3) no st andard page heading.
2 do 80 t i mes .
3 write: / 'Please kid me ' , sy- i ndex, 'ti mes ' .
4 enddo.
5
6
7
8
9 uli ne.
10
Tec:nicamente os eventcs podem oporecer em quolquer ordem ou
pOsic;oodentro do sec progroma . Porenquonto,
mostrcdo. Um capitulo scbseqcente explicorOmois sabre como ccdl-
ncar eventcs .
J
!
!
i
I
1
A Figura 15.8 mostra a. safda para a Listagem 15.7.
Na I.i.o.ha I , a repor t contem a adic;io no standard page
head; ng
J
assimcabecalhcs padrao Dia sao escritos,
A linha2 define fl como comprimento de caractere 5 e lhe atribui um
valor inicialde I l oit I.
A linha 3 atribui 0 valor T1 t 1e' para fl.
A wri te 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
escrit o na primeira linha da lists, seguido por urn sublinhado (escrito
pela ins trulii o 1I1i ne n.a Iinha 8) . 0 processamento entia reto rna para
a instrur;io wr t te na linha 4 e Hi escrito para alinha 3 da listade safda.
Depcis que linha -4 foi executada, 0 progr:una termina e a saida e
moscrada.
Criando roda pes de p6gi na
Como discutida amerionnent e, depois que urn relat6rio online foi gendo, 0
usuario pode alterar 0 tamanho da sua janela. Para eviur quebras no melo cia
pagina, os relat6nos online sempre consistem em uma unica pagina virtualmuito
longa, de modo que ter radapes nao faz muito sentido porque havena s6 urn.
Note que 0 valor de f1 escrito na pane supe rior cia psgioa e0 valor no
memento em que a primei ra inStfUljaO writ e foi dada, nio 0 valor no
do program..


Figura 15 8
A solda do l.istcgem
15.7.
520 APIEHDA EM21 DIASAWl<
-APREHDAEM21 DIAS ABAPH
11 end-ef- paae.
12 write: I 5Y-II1tne,
13 I 'The nl.ll1ber of kicks at the t op of the next page will be",
14 sy- t ndex,
15 I ' Copyr i ght 1998 by t he ALA (Abus e lovers Of America)'.
l s,r!CNIC.lS DE RJRMATA(Ao, PARTE 1 523
escritas no rodape. A inst rucao top-of -pace na linha 6 eneso eexecu-
tada, e as linhas 7a 9 escrevem0 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 depigina eescritc napar te inferior da ultima pagina.
..---------------_..-----------_..---
---_..-----_ --_ --- --.------------_ - _-.-----
sel ect .. from. ztxlfal.
reserve 3 1; nes .
wrft e: / ztxlfat-lifnr , ztxlfal-name l.
/ 2t xlfal -stras . ztxlfal -reg1D, ztx l f al-l andl .
/ ltxlfal-tel f l.
onde :
n eum literal numericc ou variavel.
reserve n 1tnes .
Sintaxe para a iristruC;60 r eser ve
Quando a. instrucfo reserve eexecutada, 0 sistema verifica se ha n linhas
disponfveis na pfgina atual. Se houver menos que n linhas sobrando na pdgina
atual, uma quebra de pagina egerada. Isso aciona 0 eventc end-of-page (se
existir), seguido pelo evenec top -of-page (se existi r) .. A instruCja6 wr; te
seguinte comeca na pme superior cia nova pigina.
Se pelo menos nlinhas estiveremdisponfveis quando ainstruCjao reserve
for executada, a c6digo113.0 faz nada.
AListagem 15.9mostra urnprograma de exemplc que util iza a
r eserve.
Utilizando a reserve
As vezes, voce pede precisar escrever de maneira agrupada informacoes re-
Iacionadas que sedistribuempor 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. Faria sentido manter
essaslinhas juntas como urn grupo na saida, e impedir que elassejam. divididas
emduas paginas.
Utilize a instrucfo reserve para manterum gropo de linhasjuntas na lista
de saida.
CII
-
Z
S
m
T
Listagem 15,9 Ainstru<;oo reserye
1 report ztxl509 line-count 18(2) no standard page headfng.
Z tabl es ztxlfal.
3
4
5
6
7
8
15 times
16 t imes
17 times
18 tfmes
1 times
2 times
3 ti mes
4 times
5 t imes
6 t imes
7 times
8 t11OO5
9 times
10 t imes
11 t1.Jnes
12 t imes
13 times
14 ' t imes
Pl ease kick me
Please k.ick me
Pl ease ki ck me
Please kick me
The nlll'ber of kicks at the top of the next page w1 11 be 15
Copyri ght by t he ALA (Abuse Lovers Of hnerica)
CONFJOENTIAl
This page begi ns with number 15
A linha 1 suprime a usa de cabecalhcs de pdginapadrso porque n6s
s6 queremos que os cabecalhos manuais de pdgina sejammostrados.
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. Normal-
mente urn relaeorio online nao especifica 0 mimero de linhas por
pagina.
Na prirneirapassagempeloloop, alinha2acicna 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 15
L
instruc;:aa write aciona a
instruc;:ao end-cf-paqe na linha 11. As linhas 12 a 15 sao executadas,
P1 ease k1ck me
Pl ease [(1 ck me
Please k1 ck me
P1 ease ki ck me
Ple ase kick me
P1 ease k1 ck me
Please kick me
Please k1ck me
Pleas e kfek me
P1 ease k1 ck me
P1ease k1 ck me
P1ease k1ck me
P1u se k1 ck me
P1ease k1ck me
A primeira. pane da safda para a Listagem 15.8 apar ece como segue:
CONFIOEKTIAl
Thi s page begi ns with nunber

SliDA
"i :

524 APREKDA EM 21 DIAS ASAP" lHECHICAS DE FOiMATA\AD. PAm1 525
9 skip .
10 endsel ect ,
11
12 top-at-page.
13 wri te I I Vendor Report '.
14 ul 1ne.
15
16 end-af-page.
17 uf tne,
18 write: I 'Report'. sy-rep1d. ' Created by'. sy-uname .
Voce pode criar said: gdfica simples na lisa utilizando as as
symbol, as i con e as line na instnlc;:ao write. Quando utilizar estas
adic;:oes. voce deve utiliza.r a instruc;ao include pa.r.a trazer
de sfmbolo, {conee caracterede desenho de1inha. para seu programa,
Utilize aadiliao 1i ne-s1 ze na instrucio report para configurar alargura
dalista de saIda.. Utilize a 1i ne-count para configurara mimero
delinhaspor pfginana lisra desafda, Vocetambempode utilizl.-Iapara
especificar 0 niimero de linhas reservadas para a rodape, Voce mo
pede utilizar variaveis na report, entdo utilize a instruc;ao
new-page para essas adic;:6es se quiser configurar esses atributos em
tempo de execucgo.
Para. mar cabecalhos depfgina,vocepode utilizartanto urncabecalho
de pa.gina padrac como a instrUc;ao top-af-page. .
Ate 10variiveis podem ser utilizadas em cabecalhos de pigina padrgo.
Os valores atribufdos is variweis sy-tvarOa sy- t var 9 substituem &0
por &9 na lista. Utilize pontos para estender 0 ccmprimento cia safcia
dessas variaveis de substituicio.
Para suprimir a safdado cabecalhcpadrao de pagina, utilize a adi,iio
no standard page headi ng namsrruc;:ao report.
Se voce inc1uir 0 evento top-af-page em seu programa, ele sen
acionado quando 0 primeira instruc;aa wri t e for executada, As ins-
trulioes seguintes sio executadas, e a controle retorna para a
mstrU/iao wri teo
Utilize 0 eventc end-of- page para criar rodapes. Voce tambem deve
utilizar 1i ne-ceuet na report ou new-page para especificar 0
admero de linhas e reservar espac;:o na paginapara 0 rodape.
Utilize a instruc;ao reserve paramanter um gropo de linhas juntas na
lista.
Resumo
MA US
O' "
AB"
1040 Motherboards Inc .
64 BitBus Blvd.
617535-0198
1030 ChickenFeed Ltd .
8718 Wishbone lane
393-565-2340
1020 Chemical Nation ltd.
123 River Ave. ON CA
416"'51-7787
Report ZTX1209 Created by KEHGREENWOOO
Vendor Report
---_....-._.------------_._.----_.-..-..-------
1010 Industrial Punps I nc.
1520Avenue Rd. ON CA
416-535 -2341
1000 Par t s Unlimited
111 Queen St .
416-255-1212
o c6d.igo IU Listagem 15.9 produz a seguiote saida:
Vendor Report
siiDI
P&R
'lit... A linho 5 determine SI!: he espcco .pore mots fres no Se
AMAUSf r hewer, 0 c6digo noo feznadoe a linho 6 escreve as Informoi70es defobnconte
nas proximos linhos. Se nao hoover, 0 c6digo ad ona 0 eventc end-of-pace Oinhas 15
o 17) e entoc envic umo quebro de pagino. Ele, entcc, odona 0 eventc topof-page
(Ii nhos 11 c 13). Depots, 0 instruc;oo write no linho 6 eexecutcido e os linhos 560 escritos
no parte superior do novo pogino.
o
o
Qual e0 metode preferido para erial' titulo, de clientes -
utilizar vmaveis sy-tvar au 0 evento toP.-of-plge?
Como a evento top-of-page emais flexrvel, a maioria 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 vantagemparavariaveis sy-tvar.
"
526 APlEN DA EM21 DIASABAPI4
Workshop
o Workshop cferece duas maneiras de voce verificar 0 que aprendeu neste
capitul o. A sCliao Tes te oferece pergunt.s pan ajudar a solidificar sell emendi-
menta do coareudc abordado e a seljao Exerdcio permire que voce pratique 0
que aprendeu. 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 treSadi<;oes gr.Hicas que sao utilizadas com a instru clo
write? Qual instruc;:ao nmbemdeve secieclufda a fim de escrever as
adic; 6es graficas? Dc um exemplo de uma instruc;:ao include.
2. Quais sao as duas adic;:6es que sao ueilizadas com a instruc;ao report
pan ccctrclar 0 tama.nho da pigina de saida? Avariivel urilizadapara
as duas adif:loes pede ser vanavel?
Exercfcio 1
Escreva urn programa que exiba as seguintes simbolos: quadrado, losango,
cfrculo, lapis, telefone, nota e pasta.
16
Tecnicas de formatasao,Parte 2
Objetjvos do capitulo
AItlUSE Depois de conduirestecapitulo, voce sere copazde
Utilizar as instru!joes de formataqao new-l i ne, new-page, ski p, back,
posit i on e set bla nk lines.
Envi ar a safda para 0 spool utilizando new-page pr i nt ,
InstruC;6es de formatac;60 de Ii sta
Hoi viria.s comumen.te necessaries panl formatar 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
Utiliza nd o a new-J j ne
-- -
16,OOICAS DE fORMATA(Ao. PARTE 2
529
1000 1994 A 0.00 1, 000.00
1000 1995 A 0.00 1. 500.00
1000 1996 A 1, 500.00 0.00
1020 Chenical Nati on Ltd.
1000 1995 A O.DO 2.000. 00
1000 1996 A 0 .00 0.00
1030 Chi ctenreec ltd .
1040 Mot her boards Inc .
1000 1990 A 100.00 3, 000.00
1000 1997 A 100.00 1,5 00. 00
2000 1997 A 0.00 500.00
2000 1998 A 1.000 .00 300.00
3000 1998 A D.DO 2, 400.00
ande:
n,me k sao vanaveis numericas ou Iieerais.
Os seguintes pontes se aplicam:
new- pagepode serutilizada em qualquer lugar no programa. Voce: pede
utilizi-l a mes mc antes da primeira instru'i3.0wri te para ca nfigurar as
caracterlsticas da saida de lisea. Com6 aceita variaveis, el a mais
lexIvel que adic;oes semelhantes na instnl'iio report .
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 port e direitc des linhas, mas 0 nome e 0
numero de fobriccnte peerrcnecemdentro do visualizco. Is.so acontece porcue a instrulo
wri t e no llnhc 5 eprecedido perc instrut;co new1 ine no-scrol l i ngno linho 4.
Sintcxe para a new-page
new page Inc-t t tl e : w1th t i tl e]
[no- head1ng : wi t h- head1 ng]
[l i ne-ccunt 0 nem)]
[line- s iz e k]
[pri nt on : pr i nt off]
Utilize a instnujio new-page para
Caus ar a sU'da cia seguinte instrU'iiOwrite para comec;ar em uma nova.
pigina. Instruc;oes new-page consecutivas nao geram em paginas de
branco.
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.
Utilizondo a new-page
III
-
Z
S
m
...
500.00
5.000 .00
11.000.00
10,000 .00
1. 000 . 00
1. 150.00
9,000.00 '
50.000.00
0. 00
0 .00
10,000 .00
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
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.
o c6d.igo na Listagem 16.1 produz a seguinte saida:
1010
1000
A adic;ao no-scrol 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 Ainstruo new-line
1 report :tx1601 Hn e- s1ze 255.
2 tables: ztxlfal . ztxlfc3 .
3 select 'It fran ztxlf4l.
4 nev-l t ne na-scroll ing.
5 writ! : ztxlfal..l1fnr, ztxlfal -namel. -t h1s l i ne won't scroll right
6 select'" f rom zt xl fc3 where lifnr ztx1fal-l1fnr.
7 write: / 14 ztxlfc3-bukrs. ztxlfe3-gjahr . zt xlfc3.s hbkz,
8 40 ztxlfc3.saldv, ztxlfc3-so1n . ztxlfc3.h abnl .
9 endsel ect ,
10 t ndstl ect.
Utilize a instru<;ao new-l i ne para [azer com que a safda cia proxima
write cornea: em uma nova linha. Diferentemente de sktp au wr ite l. in-
consecutivas new..1ine nao fazem com que urna linha em branc o
apareca na Iist a de saida.
Sintaxe para a new- Ji ne
'!!! new-line [no-scroll ing].
Z
S
m
...
print on
onde:
Quaisquer names em itllico no c6digo de procedimenro podem ser
urn literal ou uma variavel.
DlA lH EcHICAS OfroRJIATA\!O, PARTE 2 531
Os seguintes pontes se aplicam:
Utilize no di alog para suprimira da telaPrint Parameters que
solicieaao usudrio parametres de impressao. Os padroes do usuario
Sao utilizados emvez disso. Se0 usuario nao civer preenchido urn ID
Sintaxe para a new-page
new- page print on
[no dialog]
[new section]
(1nned1atelr tmtdflog]
(destination destfd]
[copies nt.llJCopfes]
[la yout
[1ht name ltstnane]
[sap cover page caverpagejlag]
[cover text tttle]
(departlll!nt do!'p't]
[receiver n cievernGl'llt]
[keep i n spool ktepfIag]
[dataset expi ration ntmfoys]
[11ne-ccunt l
[l1ne- size nJ.IllCo ltmu]
til
-

m
T
Figura 16 1
AtelaPrim
Parameters.
A.s vezes, pre cisa-se de urn relat6rio que tanto escreva para a.lista de safda e ao
mesmo tempo enviea saldapara a impressora. Por exemplo,voce pede desejar
escrever urn re1at6rio que mostre urn resume para a usudrio online enquanto
enviaum relat6rio de detalhe pan a impressora. Utilize new-peqe pri nt onpara
fazer isso, A safdade todas as instrucces wr1 te queseguem'new- pace pri nt on
nao aparecerf na lista, Em vez disso, sera enviadapara 0 spool. A instruiao
new-page pr i nt off elimina esse efeito. A safda de todas as inst rucoes wri te
seguintes serao novamente vistas na Iisra,
Toda vez que new-page print oneexecutada:
0 sistema exibe a tela Print Parameters para o usuario {mcsrrada na
Figura 16.1). Elasoliciraaousudric pargmerros como 0 ID de impres-
sora 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 de spool. Isso
significa uma nova lista separadano spool.
Se V'Cld quiser fazer uma quebrc de p6ginc e adonar 0 evemc end-of-
page, 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 novop6ginc e 0 eventoend-cf-peqe sere odonodo de
cntemec, fozendo comque urnrodopede p6ginosejo c:riodo.
no-t itle desativa 0 titulo padrsc nas p:iginas seguintes. (0 titulo ea
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 urndesses valores, ou as dais, podem ser especificados. Issa
foi abardado antericrmente oeste capitulo.
1t ne-stz e configura. 0 ndmero 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 para0 spool, emvezda lists. Os usuaries mo veem essasafda a
menos que olhemno spool. (Visualiza'Sao e impressfo cia sarda de spool
quefoi abordadamaiscedo oeste capfrnlo.} print -otf fax 0 eontriri o.
Instrucces new-page consecutivas nao gerampiginas em braneo.
new- paqe nao aciona 0 evento end-ct-pace. Portanro, urn rodape nao
sera impresso na parte inferior da pagina atual se voce emitir a ins-
new-page.
APIElfDA HI 21 DIAS ABAP/ 4
Utilizando new-page pri nt
APREMDAEM 21 DIASABAPI4 lU!OiICAS DE FeRMATA"', PAm, 533
new-page pr1nt on
no dialog
i Jmll!dia t el y ' X'
destinatfon prt_1 d.
report ztx1602.
ta bl es zt xlfal.
pari5n!ters: prt_1d --l1ke estwospooldest obligatory.
A linha 3 solicit a ao usuario urn ID de impresscra. 0 campo estwo-
spooldest tern urn relacionamento de chave estrangeira com a eabela
que contem os IDs de impressora, endc uma seta para baixo eexi bida
no campo de entrada. 1550 permire ao usuano exibir uma lista dos IDs
de impressora disponiveis.
o ccdigc na Listagem16.2produz a seguinte saida:
23 lines sent to pri nter BOS4
Qua ndo envlc a scfdc diretomente para 0 spool lJfili zando new-page
pri nt on, voce tombem pede utilizer duos instrues odicionois. A
instrvt;oo set margins permite que voce controleas morgens durante
.a impresseo. Ainstru o print-control possibilito 0 envio de c6digos
de controle de impressdc diretomente pora a impressora. Util izando
print -cont rol, voce pode controlor qvclsquer caroderisticas do
impressora, como CPI (carodere par polegoda), l PI [linhos por pole-
gada) 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 no
moneira como a listo Ii exibido no tela. Veja 0 dacumenta o de
pclcvrc-chcve de ABAP/4 para mois detclhes .
Parametres a.dicionais sic documentadas na documentaci o de palavra-
chave de ABAP/4.
1
2
3

5
6
7
8
,
i.o uhct from zulfd.
11 write: I ztx1f1.l 11fnr.
12 Mdse1ect .
13
14 newllage pr int off .
15 wri te: I sy- dbcnt , 'li nes sent t o printer'.
A Listagem 16.2 ilustra a usa cia inStruliio new- page pr i nt.
Usl agem 16.2 A instruo ne.-page pr int
de impressora. em seus padrc es, a tela Print Parameters sed mosrrada
mesmo quando voce especifi car no di alog.
Utilize new secti on para reiniciar a numeracio de pf gina, co meqando
novamente em 1.
Utiliz.e hrmediately ' x' para fazer com que a liSta seja Impressa
imediatamente. 0 padrio e1mned1ately , ', que armazena a Iisra no
spool.
. Utilize dest1 nati on para especificar um IDde impressora.
Utilize copies para especificar a mimero de copias a imprimir.
Utilize 1ayout para especificar um layout de impresson . 0 layout de
impressora determineascaracterfsricasde impressora como a mimerc
de linhas per pagina e 0 mi mer o de colunas por linha. Vace pede ver
. as layouts de impresson definidos para instalacao, imprimindo
urn arquivo e olhando no campo Format na t ela Print Li st Output.
Utilize 1i st name para especificar urn nome para a lista enquanto no
spooL Voce pede utilizar isso para procuri.-Io mais tarde DO spool.
(Digite esse valor no terceir c campo ao lado de Spool Request Name
on the Spool: Request Screen) .
U tilize sap cover page para. controlar a impressao de uma pagina de
capa com a salda, Uro valor em braa cc suprime a pigina de capa,
enquaoto I x' faz com que uma delas seja impressa e '0
1
indica que as
configur.u;6es de impressora devem determinar se uma pa-gina de capa
sera ou nao impressa.
Utilize cover text para especificar a titulo a ser impres so na pagina
de capa.
Utilize 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. impressa na pdgina de capa.
U tilize keep i n spool IX' para fazer com que a solicital;3.0 de spool
permaneca no pr6prio spool depcis que 0 relat6rio foi impresso. IS50
permite ao ususri o reimprimir a lista sem executar novamente a
rela.t 6rio.
Utilize dataset expi ra t i on para especifica.r quantos dias a sclicitscac
de spool deve pe rmanecer no spool. Quando a expirar, ela
sen exclulda do spool.
Utilize 1i ne-count e l i ne
4
s1ze para espec ificar 0 numero de linhas
por pagina e 0 numer o de colunas par linha.
534 A/ i ENDAEM21 DIAl Am/4 IllI. OOIC.l5 OfFOiMATA(lD. PAm1 I 535
Utilizando Q insfrw.Co ski p
III
-
Z
S
m

A linha 5 redireciona a safda para as instrucoes wri te subseqUentes. no


dialog suprime a. exibiljao cia tela Print Parameters. Emvez disso 0 5
parimetros sao tornados do perfil de usuario e des parimetros espe-
eificados nas linhas 6 a 8. tnmedt at ef y ' X' faz com que a safda seja
impressaimediatamente. A linha 8passa 0 ill de impressora inserido
pelo ususric na tela de
A safda das linhas 10 a 12eenviada diretamente para a impressora. Ela
naa evista na lisra de saida.
A linha 14 remove a indire/iao EF, e a das instrucoes writ e
subseqiient es aparece M Iista.
Exibindo a documentcccc de palavra-chave de ABAP/4 para
new- page Ppint
Normalmente, a ajuda Fl naomc srrard a documentacio 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 Pro-
gramming Language.
3. De om cliqueno bctao Find na barn de ferramentas Standard. A tela
SearchChapter Titles sera exibida..
4. No campo Find, digire new page print .
5. De urn clique no bacia Continue. Voce sera levado de volta atela
anterior e seu curso r eposicionado na linha new-page pri nt .
6. Deurn clique duplo nessa linha. Adocumenracfo para new-page pri nt
sed exihida.
A iostru/iao ski p permite que voce
Gere linhas em branco.
Movaa posis:ioarual de said. para eima ou para baixodent ro dapagina
atual de saida.
Sintaxe para a instrucdo ski p
ski p [n : t o 11n!! n] .
cnde:
n eum literal numerico ou uma vanavel.
Sem quaisquer a.di'ioes, ski pgeea umalinha em branco. Slci pn gera nlinhas
em branco . Se n for menor que 1, nenhuma linha em branco sera geuda. ski p
no fimdapdgina atual causari uma quebra de ski p gerari .l.i.nhas em
branco depois de qualquer instruliio wr i te, na parte superi or da primeira
pagina e na parte superior de qualquer pfgina comecada pela new-
page. Ela nio gerardlinh.as embrancono corneliade qualquer autra novapagina,
nemno fim da Ultimapagina dalisra, Por exemplo, se houver espaliopara mais
duaslinhas naparteinferior d.a pagicaarual, skiP 5gerariduas linhas embranco
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.
Se voe! quiser um rcdcpe no ultime p6gino de seu relot6rio, codifique
skip sy- 11 net como a ultimo instruljoo em seu progrcma. Esso
instn.n;lio escrevere rcdcpes. Se voce qclser ccloncr umo novo p6gino
e fer um rodope no parte inferior do p6gino cruel, codifique skip
sy-I i net emvel de new page.
ski P to 11ne nfaz com que a posicac atual de saida seja configurada no
ccmeco de1in.hand.a paginaatual Asafda da seguinre instruc;rao wri te comecara
nessaposic;rao. Por exemplo , skip to 1i ne 3 faz com que a saida da instrUc;rio
write seguinte comecena coluna 1 dalinha 3. Uma instnlc;rao skip to line que
coatenha um mimero de Iinha maior qu.c0 mi mero areal de liohas pa r pagina
sera ignorada.
A Listagem 16.3 ilustra 0 usa cia skip.
Listagem 16.3 Ainslru,ao skip
1 report ztx1603.
2 tabl es ztxl fal .
3 datil n t ype 1.
4 setect " frDlll ztxlfal order by land1.
5 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 Vendor With This Country Code ."' .
10 end1f.
11 write /
12 enden.
13 wri t e: / 4 ztxlfal-l1fnr. ztxl fal-namel.
14 endselett.
o cadigo na List.gem 16.3produz a seguinte said.:
536 HREND'" EM 21 OIlS AIAP/4
Utilizando a back
Utilize backpararerornar a posic;:ao areal de safda para:
A primeira Iinba da paginaatual (a primeiralinba depois de t op-of-
page foi processada).
I 10
2 20
3 30
4 40
o c6d.igo na Listagem 16.4 produz a seguinte saida:
This 15 r.y title
Sintaxe para a back
o seguinte ea sinuxe para amstruc;:io back:
back.
onde:
back: emirida de dentro do evemo t op-of-page retorna aprimeiralinha
escrita dentrc de t cp-cf-pece.

Aprimeira saida de linha depcis de uma rese rve fei emirids.
Explicandoaindamais, 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 emostrado na Listagem 16.4.
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.
4 write: /(4) sy_-1ndl!! x.
5 enddo.
6 back.
7 do 4 times .
8 n 51- i ndex; 10.
g write: j 10(4) n.
10 enddo.
11
12 top-of-page.
l3 write: I 'This was lily t itle' .
14 ul tne.
15 back.
16 write 6 '15
17 skip.
UI
-
Z

T-- - - - - - - -----
Toda vez que 0 valor de ztxl f al -l andl se drerar
A linha 5 eacionadaroda vez que 0 valor de 1and! for mudado.
Na linha6, sy... dbcnt e0 cantader de passagemde loop atual. Quando
o primeiro registro escl. sendo processado, d e t ern urn valor de uma
unidade,eentia 0 c6digodentro de i f IUO eexeeuradc para 0 primeiro
registro, mas para cada registro sucessivo.
Para registros sucessivos, m linha 7 5y1i nno contem 0 mimerc da
linha de lista areal. Istc e, ele e 0 mimero de linha. que a pr6xima
instrUljio write escreverd. Uma unidade esubuafda dele e isso e
atribuido a n.
A linha 8 move a posic;:ao de safdapara 0 comeco de linha n, que ea
Iinha previamenre escrita,
Allnha9 escreve nessa linha, colocando flagno Ultimo fabricanee de
cada grupo.
CA
1000 Parts unl tntted
1010 I ndust ri al P\II1PS Inc .
1020 Chemi cal Hatio n ltd.
1030 ChickenFeed ltd.
1050 The Bit Bucket
1060 Henery Lane Lt d.
1070 Fl i p M1 Switch I nc. . ... Last Vendor With Thts
-Count ry Code
CC V9 Code Now, Specs Lat er- l td.
n o Duncan 's Mouse Inc Last Vendor With This
-.country Code ....."
DE Vfi Anna Banana Ltd.
Vll Wiener Schnitzl!l I nc.
V12 Sauer kraut AG Last vender- Wi th Thi s
-Count ry Code ..-
US va Smile When You Say ltd.
1040 Motherboards Inc .
l OBO Si ltcon Sandwi ch ltd.
1090 Consume Ltd .
2000 JlIon1t ors and Mor e Lt d.
Vl Quality First Ltd.
V2 cverprtced Goods Inc .
V3 Fl uffy Bunnies Ltd.
V4 /11.00 11lce a Cow Inc.
V5 Wol fman Sport Accesso r ie s Inc.
V7 The Breakfas t Clu b Inc.

SAiDA
I AP lfflD AE1iI 21 DIAS AIAP/4

A primeira execucgc da linha 4 aciona a linha 12 (0 evento top- of-
page).
A linha 13 escreve um titulo e a linba 14 a sublinha.
A linha 15configura a atual de safdapara a pri meira linha na
lista de safda,
A linha 16 sobrescreve 'was I com li sI.
A linha 17 move a de saida areal para. baixo de uma linha. A
segunda linha da lista de safda esd. agora na linha de saida areal.
0 central e ret orna 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 sucessivas.
Alinha 6retorna a pcsicao de saIdaatualpara que elafosse aprimeira
"1 escrever depois do processamento t op-af - page (linh a de [ist a de
saida 2).
0 loop na linhas 7a 10 sobrescrevealista de saIda comecandc nalinha
3. Esse dados sio escritos adireita dos dados existentes, comecando
na coluna 10.
9 enddo.
10
11 skip .
12 do 4 ttees .
13 do 4 ttees ,
14 position sy- t ndex.
15 write ' A' .
16 endcc,
17 sk1p.
18 enddo.
o c6digo na Listagern 16.5 produz a seguinte saida:
WA
WA
WA
WA
Utilizando a instrUl;ao posj tjon
Sintaxe para a positi on
positi on r1.
Utilize ainstrutji o posi t i on para especificar apr6xima coluna de saidana linha
atual. Par exemplo, ski p to 1i ne 2. pos i t i on 3. wri t e I Hi I esc reveria Hi na
Iinha 2, comecaadc na coluna 3.
III
-
Z

m
...

I
2
3
,
5
6
7
8
onde:
vI uma varifvel numerics au lite ral.
A Li stagem 16.5 ilustra a usa cia ins rruc io position.
Lis1agem 16.5 A instruc;oa positi on
report zb1605.
data n t ype t ,
do 4 t1mes .
do 4 t imes.
posi ti on sy- tedex.
writ e ' A' .
eeeee.
new- li ne.

lHilIsE
A linha 3 comeca um loop do.
A linha 4 comeca urnloop minhado do.A linha 5 sempre configura a
posil;iia desaidaarualigual aiteratjio atualde loop. Entia, emprimeiro
lugar, a arual de saida e confi gurada 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.
Alinha 8move a de saIdaparabaixo emurnalinha. Isso resulta
na safda sendo escrita nas linhas sucessivas, 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
vezde new-I i ne, ski peutilizada na linha 17. Isso terno efeitc deinserir
linhas em branca entre as linhas sucessivas de safda.
Utilizer e instrw;co positi on seguido imediotomente per umo write
eequivelente 0 emiti r umo write at (obordodo no capitulo
anterior).
540 I APRENOA EM 21 DIA5 AUP/4
Utilizo ndo Q inst rui;oo set bl ank 1i nes
0016, lliHKASDEFORllATA(lo, PARTE 2 r 541
Text 1
Text 2
o e6digo na Listagem 16.6 produz a seguinte saida:
List a ge m 16.6 Ainstru, oo set blank l ines
1 report zt x1606.
2 datil : fl . ra , n .
3 write: I 'Text 1' .
4 write: I fl. I f2, I fJ .
S write: I 'Text 2'.
6 sk.ip.
7
B set bl ank l i nes on.
s wr i t e: I ' Text 3' .
10 write: I fl . I f 2. I f3.
11 wr-tte : I 'Text 4' .
12
13 set b1.llnk. l i nes off .
14 skip.
15 write: I ' Text S' .
16 wri t e: I fl , I f2, I f3.
17 write: I 'Text 6'.
CIl
-
Z

T
Ncrmalmente, se seu programa emit e uma wr i te que resul ts na safda
de uma linha em branco, essa linha sera suprimida.. Por exemplo, quando
escrever uma variivel que eont enha espaccs em branco, voce nao veri uma
linha em branco nil. lista. Utilize a ins tru liao set blan k:: li nes para alterar esse
compcrtamento.
Sintaxe para a instru,cio set bla nk 1; nes
set blank li nes on : off.
Os seguintes pont os se apli cam:
A cocfiguracao padrdo escl desativada,
As linhas em branco geradas pel. skip Dio SaO suprimidas.
As linhas em branco geradas por write I sem uma variavel nao sao
suprimidas. Por exemplo, wri t e [, sempre genra. uma linhll em
brancc. Write / ., ' .56 gerarauma linh aem branco se set blan k 1i nes
on river sido executada de antemdo.
A Lista gem 16.6 ilustra a mstruliao set blank lines.
,
\
I
I
I
I
!
i

I
Text 3
Text 4
Text 5
Text 6
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 braneo sao suprimi das. Port anto, a linha 4 nao fn com
que quaisquer linhas em braneo sejam escritas.
A ski p sempre escreve linhas em brancc e dessa forma., a
linha 6 gen uma 1inha em branco.
A linha 8 permite que a. write escreva linhas inteiramente
em brane o na list a.
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 branco.
Resumo
Utilize new..line para cornecar uma nova linha au bloquear urna linha
especjfica no Iugar. Ela pede prevenir rolagem horizontal de qualquer
linhaindividual.
Utilize newpage para gene uma quebra de pagina, acme au desarivar
d tulos e cabecalhos, alterar a contagem de linha ou t amanho de linha
entre paginas ou enviar saida para 0 spool.
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 superi or de urna pagina au para
o corneco de urn gropo de linhas.
Utilize posi ti on para especificar a proxima ccluna de saida.
Utilize set bla nk lines para permitir que linhas em branco sejam
criadas escrevendc varhveis contenham espacos em brancc.
542 APIEH DA EM21DIAS ABAP/4
List agem 16.7 top-of- page, position e skip
report zty1607.
data n type t ,
do 4 times.
do 4 times .
positi on sy-tncex.
write 'A' .
enddo.
add 1 to n.
skip to line n.
enddo.
Nao codflque excessiyomente um
tomonho de p6gina. Permitc a os usucr ics
esped fic6-lo quando jorem imprimir 0
relot6rio.
Nao erie relot6rios mois lorgos que 132
coroderes no coso de 0 usu6rio querer
imprimi-Io. A moloria dos impressoros 000
pode imprimir p6ginas mcls largos que
1"32 ccrccteres.
Utilize sfmbo los e kones em seu relctcric
perc cementer a reodoptabilidade.
L...-:...- ----'_
P&R
t op-of-page.
n sy-11nno.
o
o
Realmente, nao cntendo a difereuca entre skip e new-I ine. Elas
mio UCID com que a pr6xima wri t e va para uma nova linha?
o prop6sito de ski p gene uma Iinha. em branco na. saida.
new..l1nefaz com que apr6ximalinhadesafdasejaescritaparauma
nova linha e DaO gcra linhas embranco.
sllol
o c6digo na Listagem16.7 produz a seguince safda:
AMA
AMA
AMA
AMA
Workshop
o Workshop oferece duas maneiras de voce verificar a que aprendeu neste
capltulo. AsCliao Teste oferece perguntas paraajudar asolidificar seu entecdi-
mento do comeudo abordado e a sec;ao Exerdci o 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. Qualinstruc;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
Exercido 1
Explique a fluenciade ccntrole no seguinte programll. e como d e funciona.
I
;
i
,
I
Unidades de modulariza<;oo no ABAP/4
17
e
I
Depois de concluir este capitulo, voce sera capaz de:
Cochecer as tipos de unidades de- modularizacio disponiveis no
AJ3M/4
Entender as eventos de ABAP/ 4
Utilizar eventos initi a11 zation, start-of-selecti 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
IDVO... Umo unidcde de ecomo urn shell em que voce pode colocor
TEiKO" c6digo. Elo pennite 0 VOC! separor urn grupo de Iinhos de c6digodo restante
e entao execute-los em urntempo especifico. M linhos de c6digo dentro de umo
de modulorii o o comportcm-se de mcnelrc muito semelhonte 0 urnminiprogramo Clue
pede ser chomado de ovtro programe.
D ABAP/4 cfeiece tres ripos de unidades de modu larizaci o:
hltp;l!_ .cDmput ,COm,br
Modularixasao: eventos
e sub-rotinas
report ztxl701.


\ ::
;...
Seu
..., lc:6cl.go otuaQ
Progrcmode driver
-,:":;:.
1.
2.
3.
4.
5.
o c6digo associado com urn evento eacionado 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 ponto. .
AFigun 17.1tempseudoc6digo dentro do programade driver. 0 e6digo
mostradC? DO programa i direita e0 real. Quando 0 programa ztxl701
A linha 2 identifica 0 come cc do evento initial i n t i on.
A linha 3 escl associada com 0 evectc initialization. Serom linhas
de ccdigo seguirem essa primeira, eodas elss pertencerac 400 evemc
infti ali zatten.
A linha -4 marca 0 fim do c6digo que pertence a in itial iza t i on e 0
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 que penence ao evento
start-of-selection e 0 limite superior do event o end- ct-set ect tcn.
A 1.inha 9 perte.nce ao evento end-of-selection.
a limite inferior do c6digo que pertence a end-of- select i on esti
marcado pelc fun do program.
. Quando voce executa esse programa, esses eventos sao acionados por
urn prognma de driver. as seguintes pmgrafos explicam 05-detalhes
desse conceitc.
IIDVO.... Urn progroma de driver eum progromo que controlo outro progromo {driven,
TIijO" que que r dizl!! r controlodo}. ASAP, fcmece programos de driver com 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 iniciorC primeiro e enmo
controlar6 quando seu 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 porngrofoccidcdcscrnente. Repetindo, quan do Inlclc seu
software, um progromo de driver terO iniciodo primeira e controlor6 seu progroma,
chomondo eventcs dentro dele.
FigurA 17 1
o progromo de driver
eos IlYentos que ere
pode adonar.
o c6digo na Listagem produz a seguinte saida:
1
Z
3
Sliol
NOVO '" Um eveote um tog que identifica umo seo de c6digo. A seo de e6digo
TWtO II""" ossociodo com um eventc comee;ocom urn nome de eventc e tennino quando
a prOximonome eencontrcdo. No listegem -17.1, as nomes de evento s60 1n1tiali-
ra t ten, start -of-selection e end-of-sel ection. as names de eventc sao pclevrcs
reservc dos. Voce nco pe de crie r novas eventos - somente pede utilizor as edstentes.
Definindo eyentos
Ao contririo da primeira 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.
Listagem 17.1 Tres evenlos b6sicos
1 report ztx1701.
2 fnitial1zation.
a write I 'I'.
4
5 sta rt -cf-select t cn.
6 write I ' 2' .
7
8 end-ot -select ion.
9 write I '] '.
Eventos
/t Sub-retinas
M6dulos de fun,ao
Esre capfrulo explica eventos e sub-retinas. 0 proximo capftulo trata de
m6dulos de Unljaa.
Utilize asunidades de modularizacao para eliminar 0 c6digo redpndante
dentrc de seuprognma e para toma-lo maisfacil 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 prcgrama, euma boa ideia cclccar esse c6digo
em uma unidade de modularizacao e chamd-lo sempre que voce precisar
farmatar urn endereco. .
Eventos
r
,
.I
r
I
I
J
17dIODIJWl1.lyio,eVEHlOSESlJ8.R011JUS 549
Event os
i nitiali 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
1
Z
99
1. fl
2. fl
3. fl.
Driver
Co1egoria
Quando voce inicia ztx1702, 0 programa de driveriaiciars primeiro.
Ele aciona 0 evento i nitial iza tian.
0 c6digo associado com 1niti al 1zat ian eexecuudo (linhas 12e 13).
o valor de f1 e escrito e 1 e adicionado a' ele. 0 contrcle entao
reromara para 0 programa de driver.
0 prcgrama de driver procurara uma tela de seler;ao. Como nao existe
nenhuma para esse programa, ele ira procurar urn event o start -of - se-
lection. Ele a Iocalizari na linha 7 e entao iraramificar para ztx1702
comecando na linha 8. As linhas 8 e 9 serac executadas e a contrcle
retcrnara para 0 driver. .
0 programa de driver eneso procurar.i um evenec end-af - sel ect i on.
Localizando-c na Iinha 4, ele transferiri 0 controle zo1702comegandc
na linha 5. Somenre a linha5 pertencerd ao eveae c end- af-sele ct i on,
entaa ela sen. executada e 0 controle entia iIi retornar para 0 driver.
0 driver entio exibiIi a lisa para.0 usuaric.
. Esse ezemplo ilustra que voce! pode colocar os eventos em uma ordem
diferente, mas a seCJ.iiencia de naa sed alterada. A sequencia de
sempre i nit ial izati an, start-of-sel ectton, end-of- sa l ect i on. Hi
outros eventos tambem; alguns ocorrem depcis de initialization e outros
ocorrem entre start-of -select i on e end-of-sel ect i on.
Os programadores nc rmalmente pasicionam eventos na ordem 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. .
Usu6rio
Progromo
Tabera 17.1 Eventos de ABAP/4
.
,.
l
I
I
I
i
start-of- se1eet1on.
write:: I ' 2. fl . '. fl .
fl 99.
1 report ztd702 .
2 data fl type 1 val ue 1.
3
4 end-ct- selecrt cn.
5 write : I '3 . fl'. fl .
6
7
8
9
10
11 initialization.
Ii! write : I '1. fl' . fl .
13 add 1 to fl .
o c6digo na Listagem 17.2 produz a seguinte safda:
execueadc, 0 driver aesquerda ten iciciado primeiro. 0 prognma entia
segue est a sequencia de passes:
Aciona 0 eveaec i ni t ia li zat i on, fszeado com que 0 c6digo que -
pertence a i ni ti al i zation seja executado. Se voce nio river
urn event o in i t ia l i zation em seu programs, 0 programa de dnver
pulari esse passe .
Mostra a tela de para seu programa. (Uma tela de selcr;ao
coneem as campos de ent rada pua suas icscucoes de parimetro.) Se
seu programs DaDtiver uma tela de sele'iao, ele pulara esse passe.
Aciona 0 event o ster-t-of -sel ect t cn, fa.zendo corn que 0 c6digo que
perrence a esse seja executado. Se voce aao tiver codificado urn
evento start-of- selecti on em seu programa, ele pularaesse passo.
Aciona 0 evento end-of- sel ecti onem seu programa, executando todc
. 0 c6digo que pert ence a ele. Se voce nao tiver codificado urn end-of-
sel ect ten, d e pularf esse passo.
Mosua a listade safda para 0 usudrio.
Aardemde execucac dos eventos edererminadapelc programa de driver.
nao por seu progranu.. Portanto, voce pede codificar os evenros em qualquer
ordem. e a ordem de execucgo ainda sed a mesma, A ordem de eventos em seu
programa ni o importa; des sempre serio acionados na seqiiencia pela
programs, de driver. A Listagem 17.2 ilustra esse ponto.
.... Listagem 17.2 "Eventos ccion odos no ordem ditodo pelo programa de
ENTiADI,. driver .
Os evenros de driver sao acic nados pelc programa de driver. Os evenros
de usuario sio acionados pelc .:usuari o atraves da interface com ele. Os
evenros de programs sao as acionadcs de dentro de seu programa. Este
capitulo detalhs a usa de i ni ti al i zat ton, start-cf -se1ect i on e end-af-se-
lection. Note que alguns desses eveneos ocorrem entre stert-ct-selecttcn e
end-af-s election.
No capitul o anterior, "Tecnicasde formatacao, Parte 2/' voce aprendeu
sabre os eveetos top-at-page e bottom-af-page. As informafioes nesre capitulo
tambem se aplicam a eles, mas esses sao aciceados par inStnlfiOeS dentro de
seu prognma, e nao do driver.
Considerccoes espeCiois 0 0 utilizor write dentro de eventos
Os event cs tern dois efeieosincomuns na inStrllfiaO write:
Seurn 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 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 t e uma instruljaOwrite em start-af-selection,
urn write em end- ot-se l ect i an em uma nova linha.. Voce
pode utilizar skip ta line se for necesssrio continuar escrevendo na
mesma linha.
Acionondo top-af -page
Esu ser;ao descreve quando top-at-page e acionada em aos eventos de
programa de driver. Se seu programa nao tiver uma tela. de selefiao, a primeira
instrUt;aOwri te executadascions top-af-page. Se seu programa riveruma tela
de selecao, epassive! que top-of-page sejaacionada duas vezes:
Pela primein. wri te executada antes de a tela de ser
mostra da
Pela primeira wr i t e executada depois que a tela de se1efiao e
mostrada
Somente se estiver fazendo algo incomum em top-of-page, como abrir
arquivos ou inicializar clados, voce precisari ter cuidado com 0 efeito de
acionarnento duple.
Se top-of-page for acionada duas vezes. voce somente vera a saida de
instrur;oes wri t e dentro dela na segunda vez que ela for acionada.. A safda criada
pelas wri-te durante a primeira va que ela eacionada edescartacla.
I
I
Esse acionamentc duplo nao causa normalmente nenhum problema com seu
programs ou com sua safda, porque
Voce nao pode ver a saiclade wri tes emitida. ant es de uma ser
mostrada, entia normalmente nie as codifique ar.
0 evento top-cf-paqe ccsruma somene conter insrrucoes write e a
safda do primeiro acicnamento edescartada, de modo que nenhum
dane e caus ado quando de e aciocado duas vezes.
Avaria<> write to de instru o ."ri te nCio adona top-of-page.
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 cmat icamente insere
start-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 sematribuir names a: urnevemc, start -of - se -
lection e inserida. A Lisragem 17.3 oferece urn exemplo disso, em urn pro-
grams que contern tanto uma tela de selefi30 como evecros. Ele tam-bern
'. contern urn. eveaeobaseadc em programs - top-of-page.
ENTlADAt.. 17.3 "sh .rt -af - sel ect i on inserido antes de
r pnrnerro linho de c6dlgO
1 report ztx1703 no standard page headfng'.
2 parameters pI(8) .
3
4 wrtt e: I 'p1 .'. pI.
5
6 ini t iali zati on.
7 pl 'I ni t'.
S
9 end-of-se l ect1on.
10 write: J(14} sy-uline.
11 I ' End of program'.
l Z
13 top-of . page.
14 write: I ' Thi s is My Title ' .
IS skip.
o c6digo na Listagem 17.3 produz a seguinte safda:
I
I
J
..
"
17.MDDUURllAlAo,[VENTOS E5U...onNAS 553
o c:6digo no Ustogem 17.4 produz este erro de sinfoxe: Incorr ect nesti ng:
bef ore the statement the structure introduced
must be concl uded by ' ENDI F'.
1fn- 'A'.
ene-et -selecttcn.
write: I fl.
endtf .
siiDI
by ' IF'
..... Os nomes de evento tem prioridodemclsaltaque outrnsinsfT'u(;6es de AWN.
ANALISE ,.. Ainstnu;:oo ; f no linha 7 pertence 0 0 eventc st ar t of - sel ect1on. Ainstrue;oo
end; f no linholOpertence 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-et -setecet en. Como he tombemumo endif
dentro de end-of-sel ection no linho 10, oquela endi f feria de ser remavido ontes de
o progrnmo ser executodo. .
Voce nao deve colocar defi ni c; 6es de dados dentro de eventos. Embora
issonio causeu rn erro de sintaxe, rrata-se de urn estilc de pobre.
Tow as de dados seriam feitas na parte superior do programa..
Cada evecec tern um prop6sit o especfficc e e a ece sssric realizar uma
tarefa de programacac especifica.. Quando surgir a necessidade, irei refereacia-
los no mate rial que se segue. Se voce nao vir quaisquer eventos em um
programa, sempre lembre-se de que ainda exist e u m - start-of-set ection.
( st ert-et- selectt cn.
5 fl - 'A'.
,
7
8
9
10
Flgurg 1 Z 2
Atela de seleo
porc 0 progromo
ztx1703.
This i s My Titl e
pl - IIHT
End of progr am
Q uando voce exec uta 0 programa ztx1703, urn progr.una de driver
inicia primeiro. Desde que haja c6digo no ccmecc do programa que
m o pertenca a quaisquer evenros, uraa start-of-select ion automa-
ticamente einserida na linha 3.
0 programa de dri ver aciona a eventc initialization. A linha 7
executa e attibui 0 valor' Ini t' para pl. 0 cone-ole reroma ao pro-
gnma de driver.
Desde que haja uma tela de se1elii o pa ra esse programs, uma delas
agora emostrada, Ela aparece na Figura 17.2. 0 valor atribuido a pl
n.a linha 7 apare ce n o campo de entrada,
0 usuaric pressiona Execute na tela. de seles:ao. 0 contrale retoma ao
programs de driver, qu e enrao aciona a event o st art-of-select i on.
Desde que start-of-sel ecti on seja inserida na linha 3, a controle
passa para ztx1703 iniciando na 1i.nha 4.
Alinh. 4 executada. Como esta ea primeira instruljio wri te execu-
tada depois de start-of-selectian, ela aciona a event o top-of- page.
D controle transfere para linha 14.
A lioh. 14 escr eve urn titulo. A linha 1Sescreve uma linha de branco.
o'controle rerorna pua linha 4.
A linha 4 escreve a valor de pI.
0 driver entao aciona 0 eventc eec-ot-setect t en. 0 controle passa
para a linha10.
o A linha10escreve uma linha horizontal de 14bytes.
Alinha 11escreve End of progr am. 0 control e retoma para a programa
de driver.
0 driver exibea lista para 0 usudrio.
Voce nao pode colocar umacondiljio em volta de urn evento ne m colocar
urn event o dentra d e urn loo p. Fazer isso caus a urn eITO de sintaxe. P or
exemplc; c codigo na Listagem 17.4 causa urn eITO de sintaxe.
1 report ztx1704.
2 data fl .
3
UlENDA EM21 DIU ABAP!4
ANlusE
ENlli.DA..... Listagem 17.4 Nco ccloque um eventc dent ro de umo condit;ao ou de
,. um loop
..;.'
555
DlA 17: EVEHTDS ESUB-ROllNAS APRlNDA lM 21 DIAS ABAP/4
554
"h6 evento
"h6 evento
"nlio taz 1550
"M evento
"h4 evento
"nio taz 1sso
'at set ectton-sereen output ' .
"execut a lIIl :
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
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-se1ect i on
st op_eos radiobutton group gl, "stop em end-of-sel ecti on
none radiobutton group 91. "sem stop, exit ou check
15 parameters:
16
17
18
19
20
21
22
23 initiali zat i on.
24 * exit .
25* check l Z.
26 * stop.
27 eher_sos .. ' X' .
Z8
29 at selecti on-screen output.
30 " exit .
31 * check 1 '". 2.
32 * stop.
33 message s789{zk) wi th
34
o relat6rio mostrado na Listagem 17.5 permire a voce experimenter as
efeitos dessas instrucdes dentro de varies eveneos. Co pie-a e remova a s
comendrios de uma. vez para experimenter as poasfveis variacoes.
Nco utilize stop nos seguintes eventos: i niti ali zation, em selec-
t ion-screen output, top-of-page , and end-at- page. Tecni-
cemente, 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 wr i te, ped e cousar urn
dump curto; no coso de end-of-peae, voC!! pede perder a scldc. E
mois segura evlto-lc 00 fodc dentro desses eventos.
Lisfagem 17.5 Os de exit, check e stop dentro de evenios
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 mesmo comportamento. t l es dei xam 0 eventc
4 * e 0 processenentc contfnua com 0 prOx1mo evento ou al :l.o.
5 * - stop vai diretamente ec eventc end-ct- sel ect t cn
6 * (nao utllize stop em tnt tf al taetton ou na sal da de sel ect t cn- screen)
7
8 *em stert-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
Emtodos 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).
stop imediatamente deixa 0 evento atual e vai dir etamente para 0
evento end-at-selection. Executar stop dentro de end-at-selection
deixa 0 evento. Nso causa urn loop infinito.
Em eventcs 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 termina 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 alJaol como exibi<;ao da lista de saIda).
check, exit e st op nso configuram a valor de sy-sub rc, Se quiser con-
figura-la, voce pode atribuir urn valor numerico a ela antes de partir.
Emborc nesse ponto somente tr&s eventos tenham sido opresentados
em detalhe, esto se<;oo foi escrito em urn sentido qercl, de modo que
elcse apliqueiguolmentebemdepois de voceoprender a utilizartodos
05 even tos.
Voce pede sair de urn event o a qualquer horautilizando as seguintes instrucdes:
exit
check
stop
Nesse mement o, por favor revise a fun!jao dainsrrucio check (apresen-
t ada no Capitulo l Ol "lns trucoes de controle comuns").
Os paragrafos a segui r descrevem 0 efeit o de check. e ex; t quando elas
sjo codificadas foradeurnloop. 0 efeitode stop e0 mesmo, independentemente
de ela ter sido codificada ou nao denrro de urn loop.
Sgjndo de urn eyento
APRENDA EM21 DIAS UAP/4 557
- hi evento
relatOrl0
Alinha15 defineurn gropo deboeees de Aescolhadeumdele,
fm com que a mencionada no comentdric seja executada
como indicado. Por ezemplo, escolher exit_50S faz com que a ins-
exit seja executada no evento start-at-s elect i on.
check 1 '"' 2 emuito codificado entao sempre retoma urn resultado
negativo.
Voce pode querer incrementar a contagem de linha para tornar a saida
mais Iegfvel. isso econfigurado para que 0 evento bottom-at- pageseja
acionado.
Vejamcs row de perto os evenros no contexte de urn relat6rio que tern uma
tela de (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 one
entio mcstra a tela de Depois de pressionar 0 botio Execute. 0 driver
acionaos evenecs restantes, 0 programa termina e 0 uscsriove alista. 0 usudric
pressiona 0 botao Back para retomar. 0 driver ent io reiaicia 0 processamearc
comecandona parte superior da lista de evento. Ele ad ona 0 evenro initial i-
zati on e entio todos cs eventos subseqaectes seguem novament e em sua
seqiiencia normal. 0 -resultado eque 0 usudrio ve a tela de depois de
pressionar 0 bone Back. Haumadiferencano processamento, porem, quando
ocorre urna reiaicializacio.
A tela de tern sua pr6pria c6pia de todas as variaveis que sio
exibidas nela. Na 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 correspoodentes Il2 tela
de 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
em duas areas de dados: uma penencente i tela de e entio em
suasvariiveis do programa..
Entretanto, essa aljao dual somente ocorre na primeira vez que voce.
executa0 programa. Quando 0 ususriopressiona.Backnalista, ini ti al ; zation
eacionado novamente. Quando a controle rercrna para 0 driver, ele nao copia
suas variaveis de programa para a area de dados cia tela. Emvez disso,eleexibe
os valores exisrentes daarea de dados da tela; ele aincia contem os valores que
o usuario digitou. 0 resultado eque 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 telasio copiados
para a area de clados da teta e entaO para seu programa. sobrescrevendo
quaisquer Por exemplo, se voce configura valores durante a 1n-
Hi al i zati on, esses valores serao vistas na tela de se1eCjao quando iniciar a
Retornondo do list e
-h&reletet tc
-I'll rel atOr10
"vai para end- of-select i on
"hi rehtOrio
-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
"M evento e retcme para a writ e
-ha event e II! " tom. para a 1n.st rul;.lio write
-!lot o end-of- sele ct ion - ni o escreve depois dina
"M evento
"M eventc
"vai para end-cf-selecttcn
' at sel ect i on- scr een'.
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 fcn-screen.
42 exit.
43 check 12.
44'" st op.
45 message 1789(zk) wi th
46
47 start-ot sele ct fon.
48 wri t e: / 'Top of SOS' .
49 if exit_50S " ' X' .
50 exit .
51 elseif chck_50S.o ' X'
52 check 1 2.
53 elsei f StOP_50S " ' X' .
54 stop.
55 endif.
56 write: / ' Bot t om of 50S'.
57
58 end-of- sel ect i on.
59 / ' Top of EOS' .
60 11 nit_t!05 'X' .
61 exit .
62 el seif chck ees ' X'.
63 check 1 : 2.
64 el setf st oP_eDs .o 'X' .
65 sto p.
66 endif.
67 wr1t e: / ' Bottom of EOS' .
68 write: / ' 1' ,
69 / '2 ',
70 / ' 3' .
71
7Z top-of-page.
73 write: / 'Title' .
74'" exit .
75'"' check ' X' ' 1' .
76'" st op.
77 ultne.
78
79 end-at-page.
80 ul1ne.
81 exit .
82 check 'X' 'y'.
S3'" stop.
84 write: / ' Footer'.
!PREMDA EM21 DIASABAP!4
S58 -I--- 559
Sub-rotinas
Pan chamar uma sub-retina, utilize a instnu;ao per f onn.
Listagem 17.6 oferec e urn programa de exemplo que define e chama
uma sub-retina.
programa. Quando voce pressiona 0 be tte Back na tela de initial;
zat ion executarf, mas as valores configurados dea tro dele nao sen e mosrra-
dos. 0 usuaric em vez dissoverd as valcres que ele digirou.
endfonll.
code:
5 e0 nome da sub-retina,
tl, u, ul, cz, c1 e c2 sao parametres.
tables pertnire que as eabelas internas sejam passadas como para-
metros.
A value cao pede serutilizada depcis de t abl es.
A adi!j3.o val ue pede ser aplicadaa quaisquer variiveis passadas via
using ou chang ing .
representa qualquer ntimerc de linhas de c6digo.
A linha 10 executa.
A Iinha 11 retorna controle para a linha 6.
Alinha7 execut a.
Hi dais tipos de sub-retinas:
Sub-retinas intemas
Sub-retinas externas
A List agem 17.6 ilustrou urna chamada para uma sub-retina interna.
Sintaxe para a form
f orn s [tables tl t2 . . . ]
[using ul 'falue (u2) .. . J
[changing c1 'falue (c2) ].
As de sub-rotina normalmente sao colocadas no fun do programa,
depcis de todos os evenros. A fonn define 0 fim do evento precedente
e 0 ccmecc de uma sub-retina. As sub-retinas nio podem ser aninhadas no
interior de eventos.
en
-
Z

1ft
T
Definindo e ,harnando sub- retinas int ernas
o c6digo na Listagem 17.6 pr oduz a seguinte saida:
Before call 1
Insi de sub!
Before ca11 2
Ins ide sub!
After calls
Ustagem 17.6 Definindoe chornandoumo subrotino
1 I"tpo.rt ztx1106.
2
3 write: j ' BefoT"@ call 1' .
4 perlonn subl .
5 writ e: j 'Before call 2' .
6 perfonn sub1.
7 writ e: j After cal ls",
8
9 form sual..
10 write : j' I nsi de subl' .
11 endfonll.
MOYO .... Uma sub-retina eumo de c6digo reuti liz6vel. Ecomo urn miniprogramo
TWKI que pode ser choma do de cvtrc ponto em sev progroma . Derrtrc dele voce
pede defioir vcrlcveis, execvtcr instrve.s, compute r resultados e escrever soido. Pore
definir umo scb-rcnnc, utilize a insfruc;oo fOnD para indicor 0 lofti o de umo sub-retina e
utilize endfo rmpore indicar 0 seu fim. 0 nome de umo sub-rotina nco pode exceder 30
corederes. .
SAiDA
AHiuSE
Alinha 3 executa.
Alinha 4 transfere ccnt role para a linha9.
A linha 10 executa.
A linha 11 transfer e eontrole de volta pan..a linha 4.
A linha 5 executa.
. A linha 6 transfere controle pan a linha 9.
Os seguintes pontos se aplicam:
Tod.as as adic;oes sao opcionais.
e Quando etas sao codificadas, as devem aparecer na ordem
mostrada aqui. Secodificadas, tab l es devers vir primeir o, e depois dela
using e changing .
.s
560 A'REMOA EM21 DIAl ABAP/4
oa 17, MOOUURlll\AHIETfTOS E 561
o ccdigo na Listagem 17.7 produz a seguinre ,aida:
Hi from 51
Hi f rocn 52
Hi f rom 53
A linha 2 comeca urn loop que executa treS vezes. Sy-index e o
comador de loop e eincremenudo em um a cada passagemdo loop.
Na primeira vez que 4linlu 3 eexecutada, sy- index tern 0 valor de 1.
Portanto, a primeira sub-retina (s1) eexecuta-cia.
Na segunda vez que a linha 3 eexecutada, sy- t ndex tern 0 valor de 2.
Portanro, a segunda sub-retina (52) eexecutada,
Na terceira vez que a linha 3 eexecutada, sy- Index tern 0 valor de 3.
Pcrtanto, a terceira sub-rotina (s3) eexecutada.
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 e0 mesmo, independent emente se ela for ou
aac codificada dentro de um loop.
Em sub-retinas:
check e exi t imediatamente deixama sub-retina e 0 processamento
continua com a. pr6xima execuuvel depois de perfonn.
stop imediatamente deixa asub-rotina evaidirerarnentepara0 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 Listagem17.8ilustraos efeires dessas dentro de sub-retinas.
10 form 52.
11 write: I 'Hi from 52' .
12 endfoT"lll.
13
14 f or'll 53.
15 writ e: I ' Hi from 53'.
16 endf ortll.
Deixando umg sub-rating
onde:
Cada somente pede ser especificada urna vez. Per exemplo, a
tab les somente pede aparecer uma vez. Enereranto, tabelas
mriltiplas podem aparecer depois dela,
Nao utilize virgulas pan separar pargmetros.
tabl es somente permi t e que tabelas internas sejam passadas - Die
tabelas de banco de dados.
Uma sub-retin a pode chamar Dutra sub-retina.
A recursio esupcrtada, Uma sub-retina pede chamar a si mesma au
uma sub-retina que a chama de volta.
As definicoes de sub- rorina nao podemser aninh;cias. (Vae!:oio pode
definir uma sub-retina dentrc de ourra.)
(tables tl tZ]
[us i ng ul u2 J
(chltlg1ng: c1 I:'Z ] .
s. 51. 52. 53, sao nomes de sub-retina.
n eurna variavel numerica.
a) e b) sao mutuamente exclusives.
tables, using e changi ng podem aparecer com a} au b}.
A value( } nao pode ser utilizada com perform.
fonn d .
write: I 'Hi from 51' .
endfonn.
Sintaxe para a inst ru,Cio perform
perfol"ll a) s
b) n of sl 52 53
Utilizando asintaxe b) voce pode especificar que uma sub-retina de uma
lista de sub-retinas seja executada. A n-esima 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.7ilust ra esse sintaxe.
CIl
-
Z
S
m
T
Listagem 17.7 Chcmondo uma serie de sub-retinas
1 report ztx1707.
2 do 3 t imes.
3 perfornl sy.fndex of 51 52 53.
4 enddo.
5
6
7
8
9
562 APiEHOA EM 1I DIAS ABAPH
Lista gem 17.8 as efeitos de exit, check estop dentro de umc
r sub-retina
D
o
o c6digo na Liscagem 17.8 produz a seguinte s:lfda:
In sl
sy-s ubl"'C
In sZ
sy-subre
NOYO til... Umo vcri6vel 'ocal e definidc dentro de ume sub-rotincvtilizondo 0
TWO" lecal, data au statics. Dizemos que elc e locol sub- rotina. As vori6veis
definidos 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,
vcrievels deflnldcs utilizonda 1oca1 s60 vislveis de dentra do sub-retina chomada -
vari6veis definidos utilizondo data ov statics n60 sdc.
MOYO'" Umo vari6vel ecqueic que edefinidc foro de umo sub-rotlnc vti1izondo
ID.MO,. 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
progromoc;Oo colccor definic;6es de vori6veis globo is no porte superior do progromo, em
olgum lugar antes da primeiro llnhode c6digo executevel.
Para variaveis locais definidas utilizando local ou data, a memoria C
alocada toda vez que a sub-retina echamada. Essa memoria eliberada quando
asub-retina termina, e entia os valores dentro delesao perdidos. Para stati cs,
a mem6ria rerida, Esses caracteristicas serio descritas pr ofun damente neste
capitulo .
St opped. sy-subrc - 7
Definindo yari6veis locois e globois
AlliUS! A1mb.5 traasfere 0 controle pan linha 17.
A linha 18 comelja urn loop. A linha 19 sai do loop, mas Dio da
sub-retina.
A linha 22 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.
A linha 39 transfere 0 conrrole diretamente para a linha 10.
A saida da linha 11 inicia. emuma nova liaha, porqueurn novo evenro
comeccu.
A linha 13-sai do evemo e a lista emostrada.
/ ' sy-subr c .t. sy-subrc.
I'sy-subrc - ", sy-subrc.
/ 'sy-subrc -'. sy-subrc .
I -" , sy-subrc.
clear sy-subrc .
perfoT'll s1. write:
perfonll 52. write:
perform 53. write:
perform 54. write :
1 N!!!port ztx17OB.
2 data fl value 'X'.
3
4
5
6
7
8
,
10 end-cr -seleettcn.
11 write: 'Stopped; sy-subrc .'. sy-subrc .
12 1f sy-suarc 7.
13 stop.
14 " endt f ,
15 write: I 'After Stop'.
16
17 form sl.
18 do 4 times .
19 exit.
20 enddo.
21 write ! 'In 51'.
lZ exit .
23 wMte I 'After Exi t I
24 endfonn .
25
26 form 52.
27 do 4 times .
28 check II .. ' Y'.
29 write / sy-fndex.
30 enddo.
31 write I'ln 52' ,
3Z check fl .. 'y' .
33 write / l After Check'.
34 end form.
35
36 fonn 53.
37 do 4 times.
38 sy-subrc .. 7.
39 stop.
40 write I sy-index.
41 enddo.
42 endfonn.
43
44 forti 54 .
45 write: l'In 54'.
46 endfol"'lll.
,A"PRtHOA EM 21 DIAS ABAPI4
Definindo uma area de trabalho tabl es
As var isveis definidas que utiliz am a instrucio tables sao sempre globais.
Colocar ainstrUliaotables na parte superior de urn programa define uma string
global de campo. Colocar a mesma instrucao dentro de tima sub-rotina tambem
defineuma String decampo 91oba1desse nome. Portant o, voce nao deve utilizar
a instrucac tables demro de uma sub-retina, uma vez que a defini liao csempre
global; essas definicoes globais devem ser colocadas na parte superior do
programa.
Para definiruma:irea de trabalho de tabela local dentro de urnasub-retina,
utilize 1oca1em vez da instrucao t abl es: A sintaxe 6. a mesma que t abl es, mas
ela define uma string local de campo, em vez de uma global. As vsrisveis
definidas por utilizer local saovisfveis den tro cia sub-retina e t adas as sub-ro-
tin as que a chamam.
21
22
23
24
\AiOA
17, EVENTOI EStJS.ROTINAS I 56S
write: I ' 52-A' , zt xlfal-l 1fnr.
sel ect si ngl e'" f rom zt xlfal where li fn r . ' V2' .
writ!!: I' 52- B', ztxlfal-l ifnr .
endform.
o c6d.igo na Listagem 17.9 produz a seguinte saida:

Sl -A V9
51- 8 VI
52-A VI
52-B V2
V2 .

S2-A V9
52-B V2
*S2- --V2
Para ser precise , ume vcr icvel somente ecc nhecldo dentro de um
programa depois do ponto em que e definido. Per example, se voce
definisse ume vc ricvel no Jinho 10, yoct! eer ie capa z de ocessc-lc da
Jinho 11 em dionte, mas noo antes da linho 10. No coso de umo
definic;oo loccl, voce pode ccesscr a versec grobal do variovel em
quaJquer ponfo ant es do definio local.
A Listagem 17.9 ilustra a instrucao l ocal.
Listagem 17.9 A ;nslru<;co l ocal
1 r eport ztx1709.
2 tables zt xlfal.
3
4 se lect si ngle from ztx1fal where lifnr ' V9' .
5 write: / zt xlfal-li fnr.
6 pertann sl.
7 wr1te : / ztxlfal-l1fnr.
8 perform s2.
9 wri te : I ztxlfalli fnr .
10
11 fc rm 51.
12 write: / ' 51- A' . zt xlfal-lifnr .
13 local ztxlfal.
14 select si ngle f rom zblfal where 1Hnr. ' VI'.
15 write: I ' 51-8' . zt xlfall1fnr.
16 perform 52. .
17 write: I . 51-C' . ztxlfal -l ifnr .
18 endf onn.
19
20 f orm 52.

A Iinha2 define uma area de trabalha global identi ficada ztxl fal .
A linha 4 seleciona urn unicc regist ro de tabela zt xl fal eo caloca na
area de trabalho global zt xl f al.
A linha 5 escrevea valor V9 a partir daareade rrabalho global ztxlfal.
A linha 6.p.assa 0 controle para linha 11.
A linha 12 escreve a valor de 1ifnr da areadetrabalhc global ztxl fa 1.
A linha 13 define uma string local de campo ztxlfal. (Eboa prarica
de programacaocolocar essa defini<.raona part e superior da sub-retina.
Para as prop6sitos desse exemplo, elaecolocedadepois dewri te para
demonstrar completame nt e 0 efeito de 1ccal .) Uma nova posi<.r ao de
mem6ri a ealocada tendo 0 nome ztx l fa l . As referencias para ztxl fal
depois desse pont o na sub-retina e em eodas as ourras chamadas faria
referencia a essa defini'iao local de ztxl fal, nao a global. A globalestd
agora inacessfveL
A linha 14 seleciona urn anicc regist ro e coloca-o na area de trabalho
localztxl fal.
o A linha 15escreve umvalor apartir da areade trabalho local. Ele eVl.
A linha 16 t ransfere ocontrole para a linha 20. A memoria local fica
aloceda e ainda sera visfvel dentro de 52.
A linha 21 escreve a partir daarea local de mem6ria definida em s1.
Alinha22 seleciona urn novo valor na local ztxl f al .
A linha 23 escreve a partir cialocal ztxl fal.
A linha 24 retorna a controle para a linha 17. A memoria local fica
alocada e inalterada.
9
9
9
8
8
8
'2-
'2-
52-
o c6digo na..ustagem 17.10produz a seguinte sarda:
before 51: 6 9
insi de 51: . 1 1
ins ide 51: 1 2
inside 51: 1 4
after 51: 8 9
o As linhas 2 e 3 definemas varisveis globais fl e f2.
A linha 7 transfere 0 controle pan a linba 11.
A linha 12 aloes nova memoria para a. variivellocal fl e atribui a ela.
urn valor de 1.
A linha 13aloca nova memoriapara 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 vari fveis 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.
linh 6 A 6 iadefl eliberada,
A linha 17ret orna 0 controle para a a . r e
mas a de f2 eretida. Entretanto, ela nio sera Vlslvel novamen te at a
pr6xim
a
vez que a sub-rotina. for chamada .
Listagem 17.10 data e stat i cs
EKTiADAr
1 M!port zt xl710.
Z data: 11 type 1 value 8,
3 f2 type 1 vatue 9

5 write: I 'before 51:' , fl . rz.


6 do 3 times.
1 pl!rfol'1ll 51.
8 enddo.
9 wMt l!: I ' af t l!r 51:', n, f2
10
11 101"1I 51.
12 data fl type i val ue 1.
13 stati cs f2 typl! 1 1.
14 write: I ' insi de 51:
1
, fl, f2.
15 perfona 52.
16 fl -. f2 12 '" 2.
11 ertdfona.
18
19 f ol"ll 52.
20 wnte:' 52', fl, ra.
21 endfonn.
A linha 17 escreve 0 valor colocado na local ztxlfal por 52.
A linha 18 retorna 0 controle pan aIinha 6. A memoria local eliberada
e 0 valor V2 edescartado.
A linha 7 escreve 0 valor de l t fnr. Ela eagora V9 - 0 mesmo valor
que teve quando sl fei chamado. '
A linha 8 transfere 0 controle para.a linha 20.
Antes de executar a linha 21, urna local de ztxl f al cia foi
. criada.. Portanto, a glob al ztxl fal -l i fnr eescrita,
A linha 22 seleciona urn r egisrro na area de trahalho global ztxl f al.
o Alinha 23 escreveV2 a partir da area de traballio global.
A linha 24 reroma 0 controle para a linha 8.
o Alinha 9 escreve V2 a partir da areade 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, Con-
seqfient emente, voce mo sera, capaz de acessar a varifvel global do mesmo
nome dentre dessa sub-retina. Tcdas as referencias serso para. a varisvel lccal.
Definindo dodos
As varidveis definidas pela data na parte superior do progr ama sao
globais. As definiljoes de data denrro de uma sub-rotina sao locai.s para a
sub-retina, A mem6ria ealocada para essas variaveis quando a sub-retina e
chamada e eIiberadaquaodo ela retorna. Com variaveis definidas utilizaodo
1ccal , os valores nessas variaveis dat a serso perdidos quando a sub-retina
retornar,
Utilize a instruliao statics para CM variaveis locais que Ili o sejam
libertadas quando a sub-retina termina, A sintaxe para sta t i cs ea mesma que
a sint axe para.a instrucio data. A rnem6ria para. urna varisvel estdtica ealocada
na primeira vez que a sub-retina echamada e er erida quando a sub-retina
rermina . Entretanro, uma varia-vel esti tica e visivel somente de 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
novamente. 0 valor dentro dela sera 0 mesmo de quando voce river retomado
dessa subrorlna daultima vez.
A memo ria de uma vwvel estinea pert ence i subrotina que a alocou;
essa vari ivel nio evisivel a panir de outr-.s sub-ratinas. Se voce alocar uma
variavel estiticado rnesmo nome em multiplassub-rotinas,'essas serio variaveis
separadas com sua propria mem6ria e seus pr6prias w la res.
A Listagem 17.10 ilus tra variaveis dd inid-.sutilizando dat a e statics.
566 "RENDA EM 21 OIA' ABAP"
Resumo
Posso ver 0 programa de driver? Epossivel escolher 0 driver?
Posse criar urn driver? Quais sao as diferengas entre as pro-
gramas de driver disponiveis?
DIA1HODULWl.I\AlHVEHTOSESlJ8.ROTlfW r 569
o R/3 uti liza alga denominado contexto de tela pan aceitar
entrada e exibir suda para voce. Voce pode pensaI em contexto
de tela como uma tela. Cada contexto de tela eprocessado em duas
fases: a fase de dialogo e a fase de lista. A fase de dialogo sempre
ocorr' primeiro. seguida pela lista. A fase de dialogo eutiJizada
para exihir campos de entrada para a usumo, como aqueles gera-
voce deve memorizer sew nomes, assim como guardar as palavras-
cbave em
Se coloco uma write em urn evento que vern ant es .de
start-of-selec:tion) eIa func:iona somente quando nao hoi uma
tela de Se houver uma tela de movejo a saida.
Par que?
o proguma de dr iver echamado banco tk dado, 16gico. Voce
pode escolher 0 programa de driver preea chendc nos campos de
banc o de dados l6gicos na tela de atributos de programa. Se' voce
nao especificar um, urn padri.o eauromaticamente atribufdo. A
acica vez que voce icl.querer escclher a driver sera quando quis er
Ier as dados a partir do banco de dados e Iorcecs-los para seu
programa auromaticamente. Os bancos de dados 16gicos padrjo
nao leema partir de banco de dados - eles apenas acionam as
eventcs. Independentemente do driver que voce escolher, os
eveneos sempre serao acionados na mesma crdem relativa. Mesmo
Sf voce criar seu pr6prio programa de banco de dados 16gico, nao
poderf alrerar a sequencia relativa de eventos, nem seus names.
nem poded criar novas. Pan ver umprograma de driver , ini cie de
dentrc do edieor de codigo-fonte, Escolha 0 caminho de menu
Utilities-Help On. Selecione a bod e de Logical Database
e digite um id de banco de dados 16gico (KDF, par exemplo). Voce
entao veri a estrutura da banco de dado s 16gico. Escolha a cami-
nbo de menu Gor o-Daesbase Program para ver a prognma de
driver . Lembre-se, 0 codigc mestrado denero do driver neste
capitulo era urn pseudoccdigo, entia voce nao vera as instrucoes
de como acionar ainicializacic at. Os bancos de dados J6gicos sao
urntema complexo e exigem muitos capitulos para serem descritos
completamente.
o
o
o
o
1010
1!I.iO ,.
Co mo passa saber a diferens:a ent r e urn nome de evento e uma

o que acontece se eu river dais eventos de mesmo nome denerc
do mesmo programa?
Se voce river duas instrugdes codi ficadas de mesmo nome den-
teO do mesmo programa, qUa.D.do 0 evento for acionado a
sistema executara os dais na ordem em que el es aparecem em
seu programa.
Se voce vir uma un ica palavra segu ida par urn pedodo, isso e
normalmenteum even to. AI6n disso, as eventes nae tern quais-
quer ou tras caractersticas identi ficaveis que seus names. Eles
sio simplesmente palavr.as reservadas e para recon hecer urn
o
o
o
o
0 loop inicia e a linha 7 novament e traas fere a ccntrcle para a linha
11.
A linha 12aloca nova memoria para fl e atribui urn valor de l.
A linha 13 faz com que a memoria antericrmente alocada para f2
tcme-se novament e vistvel com essa sub- rotina. 0 valor em fZ Z,
como era quando a sub-retina terminou da ult ima vez.
0 ABAF/ 4: tern tres ripos de unidades de modularizacio: evectcs,
sub-re tinas e m6dulos de
Existem eventos em todos os programas, Se nenhum for codificado,
o evento padr j o start-of- sel ect i on sed automaricamenre iaserido.
. initial izati on e frequenremence utilizado para atribuir vaIores a
parfmetrcs que aparecemem urnatela de end-of-selection e
usado pua limpeza do programa, resumes ou rorinas de rerminacao
anormal. Os event os sao acionadcs pelo programa de driver. 0 driver
sempre 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 novamente quando
a usuirio retcma da list a. Entr etanto, as variaveis de tela de
.cia sao preenchidas de novo a partir da irea de dados do programa.
Util ize. ext t, check e stop para deixar urn evento.
P&R
htlp:J/wwN.CIJlTIP'Jt ,com.br
18
Alem de definir variaveis utilizando t abl es, local, data e stati cs, tambem
podemser definidas variiveis na propria fOI}Jl. Est as sao conhec idas
como parametres, que podem see locais au referencias para variaveis globai s.
A mem6ria de parametres locais ealocada quando a sub-retina echamada e
Iiberadaquando finalizada.
Se vccs definirvariaveis form, a instrucio perform deve passar
urn valor para cada urna dessas varisveis.
Depois de completar esse capitulo, voce sed capaz de
Passar pardmetros digieadcs e eao digitados 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
Ent ender como as variaveis sao compartilhadas entre sub- rotinas
externas e int ernas
Passando paramet ros
Oi
passando
paramelrospara sub-rotinas
,
f
. ,
dos po r uma de pargmetros. A fase de lista e utilizada
paraexibir a safda da wri t e para 0 usuario. As duas fases
utilizam 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. Entao, se voce emite uma wri te no evento
init ialization e se a tela de emost rada, a tel a de
sobrescreve asafda da write e essa sa!<b. eperdida. Voceentia deve
escclber Execute na tela de e, se as instrucoes write entia
forem emitidas , a lista sob rescreve a tela de selc!jao e voceveri a
saida. Entretantc, se naa river uma tela de selc!jao. as gravar;oes
que ocorrem em initial i zati on ainda poderac ser vist as.
1. A write to cia write acicna top-of-page?
2. Que eventcs voce nao utilizaria.em stop?
3. Em que pont.ouma variavel econhecida denero de urn programa?
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu nesee
capitulo. A Test e cfer ece perguntas para ajudar a solidificar seu entendi-
mente do conteado aboedado e a sec;:ao Exercfcio permite que voc e pratique 0
que aprecdeu. Voce pede encontrar as respostas as pe rguntas do Teste e aos
exercfcios no Apendice B, "Respostas is peegunus e aos exercfcios".
erie urn rela.t6rio que aceita urn parimeteo de entrada chamado p-landl.
Defioa-c como ztxl 1andl. Preencha esse campo com a valor padrio USem
tempo de utilizando 0 evento Init ia l i zat ion. Seu programa princi-
paldeve tee uma Unica para. chamar uma sub-retina que selecioca
regisrros de zt xl fal , onde a campo 1andl eigualao pardmet ro p_l andl. Dentro
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.
Exercicio 1
Workshop
Teste
570 ! APR"DA EM 21 DIAS AUP/4
572 'PREND' ,M 21 DIAl AB,P/4
NOVO .... Os nomes de pcremetrc que oporecem no form seo chcmodcs
tRiO r por6metrcs formais . Esse termc e IOcil de lembror, porque "former possui 0
"form". Par exempla, no instrulo fom 51 using pI changing p2 p3, as
parametres pl, p2 e p3 sao chomodos pcremetrcs fonnois .
NOYO ... Os nomes de pordmetros que oporecem no instruo perfonn soo chcmcdos
TWO r 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.
Urna maneira de definir varidveis como parfmetros eilustrada na Lis-
tagem 18.1.
18.1 Passcndo pa rametros pora uma sub-ratine
1 report ztx l BOl .
Z data: fl value ' A' .
3 12 val ue 'B',
4 fJ value C' .
5
6 perfom: 51 using fl 12 ra ,
7 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.
Nao passe tabelas inte mos par val or, nem
per volar e resultado, a me nos que voce
reolmente precise de uma nova c6pio do
tcbelo intemo. Posse pa r6metros par
referencia sempre que pc ssfvel.
cede:
51 eurn nome de sub-retina,
ul, u2, c1e czsao parametros formais.
tantoum tipo dedadodeABAP/4, comoumtipo dedadodefinido
pelc usutrio.
Sintaxe para pcrdmetros digitados
fom sl using u1 type t value(u2) type t
ch""gi ng cl type t value (e2l t)'lle t .
MOVO.... Os formats podem ser digitcdos au nOo. Urn porbmetro O'9itcdo eum
TEUO ,. por6metroformal que tem urntipo de dodo seguindo seunome noinstrvo fonn.
Um ndo digitcdo eum formal que nciotem um tipo de dodo seguindo
suo definio no fonn. Na Ustcgem 18.1, todos as parametres ercm nao digllada s.
as pardmetros formais nao digitados permitem que voce passe uma
varUvel de qualquer tipo dedadoou 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 torna-se urn
inteirc de quatro bytes. Se voce passa uma string de caractere de comprimento
igual a 3 pan 0 parimetro, ele se tamara a earact ere 3.

A linha14 definetres variiveis: fl, f2 e f3. Elaatribui 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.
A linha17 retorna a controle para a lin.ha 7.
Revise a sintaxe das IDstIlllSoes form e perform antes de continuar. Con-
suite a sC!jaa "Definindo e chamanda sub-retinas Ineemas", no Capitulo 19.

Utilize pcremetrcs formais digitodos,
eles sOo mo is eficientesdo que as
parflmetros noo digitodos.
CI'
-
Z
S
m
T
Criondo pommetros digitodos
I
I
I
a c6d.iga na Listagem 18.1produz a seguinresatda:
A 8 C
A 8 C
A 8 C
A linha6 transfere a cantrole para a 1inha 9.
A linha 9 define treS varifveis: pI, p2 e p3. Ela atribui 0 valor de fl
pan pI, 0 valor de f2 para p2 e o valor de f3 para p3.
A linha 10 escreve as valores das variiveis pl, p2 e p3 e as varisveis
globais fl . f2 e f3.
A linha 12 retorna 0 contrcle para a linha 6.
A linha 7 t ransfere a controle para a linha 14.

structure x
Aqui
,
x pode ser uma string de campo au uma estrutura de DDle ou
tabela. Porexemplo, form sl using h I structure zt xlfal define fs1 como
tendo a estrUtura de tabela DDIC ztx! f al.
Possondo strings de campo
voce pede passar uma string de campo cia mcsma maneira que qua.lquer outrO
parimetro. Entrecanto
l
se vocequiser a.cessaros cemponentes cia. strin gde cunpo
dentro cb. sub-retina, voce deve fazer a estrUtut'2. cia string de campo conhecida
para. a por meio de urna. desw duas ainStruliao .f orm:
like x
574 APRE,,, EM 21 DIAS ASAP/'
Os seguintes pontos se aplicamr
Somenteurn tipo de dado pede ser especificado na instnu;ao form. Urn
compriment o Ilia pede ser especificadc. .
Se voce define urn pargmerrc forma.! urilizsndo urn tipo de dado de
comprimento fixo (esses sio tipos d, t, i e f). 0 comprimento do
parametro real deve corresponder ao tipo de dado do parimeuo
formal Esse enormalmente 0 case, ja que voce normalmente prcjecara
seu de tal forma que as tipos de clades dos parametres
e rears conesponderio entre si, Voce normalmente mo passa.
. urn txpo de dado.para um outre ripe de dado diferente.
. .. Passar variavel com 0 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.
Listagem 18.2 IJnlizondo porOmetros digitodos
1 ztxlOO2 .
2 data: f1 value 'A'.
3 f2 type 1 value 4,
4 f3 l tke
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 form 51 usi ng pI ty pe c
13 pZ t ype f
14 p3 type d
15 p4 type t.
16 wr1te: I pI,
11 I p2.
18 I p3.
19 I ...
ZO endform.
a c6digo n' Listagem 18.2 produz, seguin" , aida:
MA.

19960510
164836
r
'.


DlA PASSAHDO PARiMmOS PARA SUS-R1lll'AS 575
As linhas 2 a. 5 definem qua.trO va.riivei s tendo varios tipos 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 edo 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. p2eum tipo de dado de comprimentc fixo; 0 tipo i esempre
de comprimento iguaI a 4; f2 tambem e, eerao as parimetros corr es-
pondem-se complewnente. p3 e p4 tambem sao tipos de dados de
comprimento Iixc, comesao seus parimetros reais.
As linhas .16 a 19 escrevem os valores de pI a p4. Note que 0 compri-
mento de safda DaO epassado do parimetro real para. 0 formal 0
comprimento de safda. dos pardmerros formais econfi 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 fun de alocar memoria
para. urn parimetro digindo, que pan. um nio digitado.
Ajudam a. prevenir erros de codifica.l;jao. Ji que voce MOpode passar
urn parlmetro de tipo incompatfvel, 0 verificador de sintaxe indicari.
o eITO para voce se tentar 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 uma ope-
ral;jaO aritmecica, eposslvel passar dados de caractere pa.ra essa sub-
retina, Se isso acontecer em tempe de um dump curto
a.contecera.
576 APRENDAEM21 DIAS ABAP/4
D. lU DDUURIlA\AD, /ASSAIl" pARiMETlDSPARASU6R011 N.4S 577
Cont rol a ndo como as pardmetros sao passados
Tabela 18. 1 As cdlcoes de instruc;60 form e 0 metodo resultcnte de possogem de
panlmetro
changing p3 val ue(p.) .
write: I pI, pZ. p3, p4.
endfol"Ul .
o c6digo na Listagem 18.3 produz a seguince safda:
A BC 0
A, 8 CD E F
A B C
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 epassado por valor; f4 epassado 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 epassado
par valor e resulrado.
Alinha 12 passa tr es paramet res para a sub-retina 52. f 3 epassado par
valor, f3 epassado par rei erec cie e ';5 6 passado par valor e resultado.
Embora a instt1.1iaOperf orm apenas especifique using, a instruci o form
pede diferir. Ela especifica tanto usi ng como changing. A sintaxe na
instt1.1c; ao form assume precedencia e determina a met oda pelo qual as
parirnetros sao passados.
Lembre-se do seguint e:
perfonn e form devem cant er 0 mesmo niimero de parametres.
A sintaxe nas instrucoes performe form podem diferir.
A sint axe na f orm determina apenas 0 metoda pelc qual urn
paramerro epassado.
A adic;ao ve1ue( )nio pede ser utilizada na instruc;io perform.
using deve vir antes de changing.
A ust ngs6 pede ocorrer uma vez em uma instruc;ao. A mesma
regra se aplica a changing.
18
19
2D
21
22 form s2 us ing pI value(pZ} vall1e(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 changing p2 val ue(p3).
Z9 write: I pl . p2. p3.
30 endfol'1ll .

Metoda
Passe por
Posse por refer!ncio
Posse por valor
Posse por valor e resultado
report zt xl80J.
data : fl value 'A' .
f2 val ue 'B' .
13 val ue ' C' .
14 value ' 0' ,
f5 value ' E'.
16 value ' F' .
Hi eres maneiras de passar as parimet ros pan. uma sub-retina:
Passer por referencia
Passar por valor
Passar por valor e resultadc
A sintaxe na instruc;ao form determine como as varidveis slo passadas. A
sint axe em perf orm mofaz isso. 0 seu significado sen explicado na proxima
Seli3.a. A primeira coisa necessaria eaprender a. codificar each metoda.
A Tabela 18.1 mostra a relacionamento entre sintaxe e meeodcs de
passagem.
1
2
3
4
5
6
7
8
9 perform51 using f1 f2
10 thanging 13 f4.
11
12 perform s2 using f1 12 fJ 14
13 cllanging 15 f 6.
l'
15 perforlll s3 using fl f2 fl .
16
17 tom 51 usi ng pI val ue(p2)
usi ng vI
changing vt
using val ue (vl)
changing val ue(vl)
Embora a sintaxeem form e perform possadiferir, por causa da clareza de
programa elas devem secas mesmas.
A Listagem 18.3 ilustra como codificar essas adi<;6es.
Lislagem 18.3 Como codificar adi, ,,e, de parOmetra
578 APIEi DA EM21 DIAl AUP/4 DIA 11, IIOD1JUR1ZA(AO, PillIJIOO PW.mOS PARA51Ja.R1J11NAS 579
Utilizando OS metodos de possagem de pardmetms
A Tabela 18.2 resumidamente descreve as [reS metodos de pa.ssagem de
parametres.
Tcbela 18.2 Metodos de passogem de parametres
Metodo Vantagens
7 f oT'll s l using pI.
8 pI - 'X'.
9 endf orm.
o ccdigc na Listagem18.4 produz a seguinte saida:
X
Listagem 18.4 a efeito do possogem par refen! ncio
1 report ztx1804.
2 data fl value ' A' .
3
4 perfonn sl usi ng fl .
S 'IIrae I 11.
6
Passanda parametros por referenda
Quando voce passa umparimetro por referenda, a nova mem6ria nae ealccada
para a valor. Emvez disso, urn pont eiro para a original cia mem6ria e
passado. Todas as referencias para 0 parimetro sao referencias para
original cia memoria, na varidvel dentro cia sub-rotina anializam a.
posi'iaa original da memoria imediatamente, A Figura 18.1 e a Listagem 18.4
ilustram como isso funciona.
eoderecede mem6rio 1000
report zt x1804. Q , ntes de c:homodo de 51
data f1 valu e 'A'.. _
11m 51
perfonn 51 us i ng f1
wr1t e I f1 scldc : X 1
..- ..- . , . - ..: . , ., . . -.. . .
fortll. PI., pJ
,: pl - 1000 pora 'X' .
endform . . - - .--_.
using e changing seoidl nticos no func;eo
wri te : I fl. f2 .
perform sl using 11
changing f2.
write: I fl . f Z.
Listagem 18.5
1 re port ztxI805 .
Z dat a: fl val ue 'A'.
3 f2 value 'a' .

5
6
7
8
,
ANluSE A linha 2 aloca mem6ria para a variavel flo Por esse exemplo, vamos
partir do pressuposto que a posiliaOde.mem6ri a e1000.
A linha -1- transfere ? controle 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 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.
A 1inha. 5 escreve0 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 defun,ao (veja 0 CapItulo 19, "Modulariza,ao:
m6dulos de parte 1"), a passagem por referencia. emais ut i!. Mesmo
assim, passar pargmerros para uma sub-retina - seja elainterna ou externa-
urn born estilo de prcgramacio, que tcrna a. manutencdo mais facil e melhora
o readaptabilidade de seu progrema.
As duas adi'ioes us; n9 f l e chang; n9 fl passamfl por referenda - elassao
identicas nafun,ao. A=ioparaqueasduas exisrameque- utilizadas adequada-
mente_ podemdocumentar quandoa. sub-retina. mudara. urn. pardmetro ou nac.
Ao codificar changi ngcom parimetros, a sub-ratina se alt er a, Voce deve
mer a codifica.c;::io us; n9com parimetros que Dio sejamaleersdos pela sub-ro-
tina. A Listagem 18.5 ilusua esse ponto. .
Impede olterac;oes no
variey!!!" possodo
Permite oltero<;6es e
permite umo reversec
(rollbock)
Muito eficiente Posse um ponteiro pore a
posit;oo de mem6ria original
Alcco umo novo posic;oo de
mem6rio pa ra dentm
do sub-retina. Amemoria e
liberndo quando a sub-refine
termina.
Similar 0 possor por vclcr, mas
o conteUdo do nova membria 6
cop iodo de volta para a mem6rio
original antes de retornor.
Por referenda
Pcr vclcr
Porvalore resultodo
Figura 18 1
Como umpon5ml!trO
possocJopor
ofela a
posio originaldo
mem6ria.
580 A"ENDA EM 11 DIAS Am/4
Lisla gem 18. 6 0 efeitode possegempor volor
10 fo m 51 using pI
11 changi nri p2.
12 pl pZ - 'X' .
13 endforlll.
o c6digo na Listagem18.6 produz a seguinte " ida:
X
A
A linha2 alOC2. mem6ria para a varisvel f l.
. A linha. 4 transfere 0 contrale para linha 7.
A linha 7 faz com quefl sejapasssdc por valor. Portanto.jn se refere
a uma nova posilj2.o de mem6ria que independent e de fl. 0 valor de:
fl automaticamente ecopiadc na mem6ria para pI.
A linha 8 modifies a mem6ria para pl . fl einalterado.
A linha 9 escreve 0 valor X.
A linha 10 retorna a controle para a linha 5.
A linha 5 escreve a valor A.
Utiliz.e a passagempor valor, quando voce precisar de uma c6pialocal de
uma varavel que possa ser alrerada sem afetar a original. A passagem por
referencia rom eficienee que a passagem por valor. Utilize 0 metoda por
referencis, a mencs que voce precise de -uma c6pia local independente cia
variivel
Passando as parametros par valor e resultado
A passagempar valor e resultado emuito similar apassagempar 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 issoaccctece tambem quando a ocorre.
Quando a instruliaa endfonn eexecutada, 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 ori ginal, mas nio at! a
sub-rotina reternar. .
Isso pede pareceruma diferencapequena, mas eorna-semaier. Vocepade
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
me ssage 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 parametros de valor e resultado.
Quando eiltilizada dentro de urnasub-rotina, a instnJ'iao stop enormalmente
precedida par urn teste de urna condiliio dentro do programa. Se a
1
entes do chomoda a 51
op6s a em s1
perform 51 using f lo
writ e I f1. soldo: A
report ztx1806. m
dat a: fl val ue ' A' .
o c6digo na Lisragem 18.5 produz. a seguinte saida:
A B
X X
fl e f2saopassados por referenciapara. sl. Portanto, pl e p2sao ponteiros
para fl e f2. As para pl e p2sao imediatamecte refletidas em fl e
fl. Esse exemplc 56ilust ra que epcssfvel alterar qualquer parimetro passado
por refer!nci.a. Voce deve codificarseuspardmetros de modo que usi nge
n9documentemapropriadamente sua ucilizaliio desses paclmetros.
fonn sl using val ue{pl) .
pI ' X' .
write / pI.
endfonn.
perlol"lll 51 IIsi ng fl .
writ!! I fl .
1 report zt:d806.
2 data: fl vat ue ' A'.
3

5
6
7
B
9
lD
Fi g ura 1 8 2
Como urn porfrmetrc .
pos sa do per valor
a/ceo umo novo
posio de
ormazenomeTJto
Independente do
original.
Passando parametros par valor
Quando vcea passa umparimetro pervalor, uma no va mem6ria ealccadapan.
esse valor. Essa memoria ealocada quando a sub-retina echamada e liberada
quando a sub-ratina retoma. Porranto, as refereacias para. 0 parimetro sao
voltadas para uma Unica area cia mem6ria que econhecida apen.a.s dentr o cia
sub-retina; a ori ginal d.a mem6ria esta separada, 0 original estd
inalterado sevccz alterar 0 valor do parimetro. A Figura 18.2 e a Listagem18.6
ilusuam como isso funciona.
SAillA
ANiliSE


582 APRENDA EN 2t DtAS ABAP/4 DIA 18: rASSANOO pARlMm:os PARA SUB-Rn1l NAS sa3
o c6digo na Listagem 18.7produz a seguinte sai' da:
St opped. 11 :' B
A linha 2 aloes mem6riapan a variavel f l.
A Iinha 4 transfere 0 controle para a linha. 9.
Alinha 10faz comque f1 sejapassadopor valore resultado. Pcrtanto,
pI se refere a uma nova posiljao de mem6ria que independente de fl.
o valor de fl eautomaticamente copiado na mem6ria para pt.
A linha 11 modificaa mem6riapara pI. fl einalterado.
A linha 12 copia 0 valor de pI de volta em fl , Libera pl e transfere 0
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 resultado. Uma
nova area de memoria alocadapara pI e 0 valor de 11 copiado nela.
A linha 15 alters 0 valor de pI para B.
A linha 16 emite a instru)ao stop. Ela Iibera a mem6ria para pI e 0
valor alte"cado perdido. 0 centrale transferido para a linha7.
A linha8 escreve 0 valor B.
Possando tobelos internos como porcimetros .
enderer;o de memoria 1000
antes do chcmcdo a s1
s de retcmcr de 51
report ztxl807 .
dati: fl value ' A' .
perfonl: 51"using f1
writl!: I fl. safda: X
A instruo message e seu efeito sabre as sub-rctincs sOo obordados
no Capftulo 21, 'Telos de seleo.
Fig u r a 1 8 3
Como urn par6metro
possadof'Ol' valor
resultadoolocc urno
nova posio de
ormozenoml!!nto
independente do
original e copio 0
valorde vol'"

A Figura 18.3 e a List agem 18.7 ilustram pardmetros passados par valor
e resultado.
ccndicac manna! surge, stop. eexecutads. Esta descarca as alterac;oes para
variaveis de valor e de resulradc e adona end-of-sel ect ton, onde as procedi-
mentes de limpeza sa.oerrdo 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 aoormal surgi r em sua sub-retina.
Listagem 18.7 0 efeito de passagem por valore resultodo
1 report ztdB07 .
2 data: 11 value ' .... ".
J
4 perform: 51 changing fl .
5 s2 changing 11.
6
7 end-ct -selecttcn.
8 wri t e: / 'Stopped. 11 "", fl.
s
10 form sl changing value(pl).
11 pl 'B'.
12 endfonn.
IJ
14 form s2 changing value(pl) .
15 pl ' X' .
16 stop.
17 el'ldform.
Talvez sejauma boa ideia revisar tabelas internas agora,especialmente asintaxe
de tt[ ] .
Voce pede utilizar urn des dais metodos para passar uma tabela interna
para uma sub-retina: .
I. Passar com alinhade cabecalho
2. Passar apenas 0 cerpo
Sea tabela interna riverumalinhade cabecalho, a merodo 1passaas dais
para a linha de cabecalhc eo corpo para a sub-retina. 0 metoda 2 passa 560
corpo para a sub-retina.
Se a tabels intema me tiver urna linha de cabegalho, voce pode tambem
utilizar as dois merodos, Entretanto, 0 rceecdc 1 se comporears urn pouea
diferenee- ele automaticamentecriarauma linha de cabecalhc para a tabela
inrerna dentro da sub-retina.
Nesse pccto, voce pede estar se perguntando, "Per que eu iria querer
passar uma tabela interna semuma linha de cabecalho?" Na mai oria das vezes,
voce nao vai querer fazer isso. Entreranro, se river urn case especialque exija
uma tabela intema sem uma linha de cabecalho, precisari passa-la sem uma
linhade voce ter:i quefazerissoseutilizartabelas internasaninhadas
584 APRf HDA EM21 DIASABAP/4 11, MDDUWlZA>'Do PASSAHDO PARAMrnDS PARASIJ8.R011NAS 585
Tabela 18. 5 A sintaxe para desaever a tobelo inte rno pera a sub- retina
tabela interna 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.5mostra a siceaxeapropriaciapara. cada. metoda.
- uma tabela interna aninhada DiDpede ter uma l.i.nlu de cabecalho. Tabelas
intemas aninhadas sao util.izadas rom freqiientementc Il2. versac 4, entia essa
tecnica sera necessaria com mais freqiiencia emsistemas mais novos.
A Tabela 18.3 resume a efeiec de cada Urn dest es meeodos em tabelas
internes come semlinhas de cabecalho.
Tabela 18.3 Metodas e resultados de possogem em umo tobelc interne pera umo
sub-retina
Metoda Sintaxe Valores v6lidos para x
Tabela 18.4 Asintoxe de codo metoda de possogem em umo tcbela lntemo para
umo sub-refine
A TabeIa 18.4 mos rra a sintaxe pua cada metoda de passagem em uma
tabela intema para uma sub-rotina,
Metodo
Com Ii nhc de
ccbecclhc
Sem t.nho de
ccbecclbc
Se a ta bela Int e ma
tiver uma linha de cabesalho
Possa ambos
Posse 56 0 ccepc
Se a tabela inte rno
nao fiver uma linha
de
eric umo linha de
ccbeccthc dentro do
sub-retina
Posse 0 corpo
Com linho de
ccbecclhc
Sem linhe de
ccbecelhc
tables it stru ct ure x
tables it li ke x
using it[ 111ke X
Uma string de compo
Umo estrutura de ODIC
Uma tabela de DDIC
Uma tabelo interne com umc
llnhc de ccbecolhc
Umc tcbelc inferno sem uma
linha de ccbecclhc
Um corpo inferno de tobe la
(i t [ ]1
Uma tabel a interne semlinho
ccbecelhc
Um cerp o Interne de tabelo
(it [ )J
Tornando os componentes de uma tabela intern a
conhecidos dentro da sub-retina
Mer amente passar uma tabela interoa Ilio enormalmente suficiente - voce
tambem deve descrever a estrutura cia tabela interna para a sub-ratina. Se nao
descrever a estnl tura cia tabela intema na f o"", as componentes da
Se a tabela iaterna tiver uma linha de cabecallic, 0 primeiro metodc na
Tabela 18.3 passa tanto 0 cabecalhc como 0 corpo pan a sub-retina. 0 resto
dos mercdos passa soment e a corpo.
Se a ubela intema nio civer uma linha de 0 primeiro metoda
naTabela 18.3passa 0 corpo e cria uma linha de cleotra cia sub-rotina.
o resta passa somente a carpa.
Metodo
Com linhode ccbecclhc
Corpo openes
Sintaxe
form sl t ables tt
form '1 using tt[ ]
form ,1 changing ut ]
form ,1 u'i ng valu.(lt[ ]J
form ,1 changi ng value(ft [ 1J
Como passodo
Pe r referende
Per referAnde
Per referend e
Pcr vclcr
Po!" valor e resvltcdo
A structure esperaurnnome de strin gde 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 linha de cabecalho.
A adi!rao1; keespera urncorpo de tabela depois dela.Aqui, codifique uma
refersncia para 0 corpo de uma eabeb interna. Se a tabela int ema que vocf
deseja atribuir names aqui nio tiveruma linha de cabecalho, tanto it au it[ ]
ira se referir ao corpo 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 rmalment e preeisar.i de uma area de
trabalho dentto da sub-rotina para edicionar e recuperar registros da tabela
interns, Para defmir isso, voce pede utilizar local, data au stat ; cs, Se uma area
de trabalho global jaestiver disponivel, voce pode utiliza-la, emboraseja menos
deseji.vel. porque acessar variaveis globais de dentro de urn. sub-rotina toma
a 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
disponiveLEtadefineumastring de campo utilizando somente 0 corpo.deuma
tahela intema. A string de campo resultante exatunente como urnalinhado
corpo cia. tabela interna i. t abbody. Par exemplo, data fs l ike line 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 cobecclho
Se urna tabela intema river uma lirihade 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.Elaepassadapor referencia, encao pt eurnponceirc
pan a original, structure enecessariapara t ornar aesrrurura da tabela
interua conhecida para a sub-retina. Sem ela, qualque r acesso a urn
componente da tabelainterne causaria urn erro de sintaxe.
As linhas 15a 19mcstram asescalhas disponfveispara fazer a estrutura
it conhecida deaero dasub-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
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 linhaoriginal de cabecalho.
A linha 22 scbrescreve a linha 3 da linha de eabec;alho. Como a tabela
ineema fai passadapor refersacia, isso modifica 0 conteudo cia tabela
interna original.
A linha 23-retOrna 0 concole para a linha 8.
As linhas 9a 11escrevem0 cccteedc databela interna. A saidamostra
que 0 conteddo se aleerou.
Seurnatabela interns naoriverumalinhade cabecalhoevoce 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.alinhade 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.9iluscn essa sintaxe.
-OK se ttab nlo t1ver l1nha dl!
-qualqul!r ta bel a 1ntl!rna .
-like 1t .
'11k. 1l[ ] .
read table pt 1ndex 3.
Jlt-lifnr 'XXX' .
lIOd1fy pt t ndex 3.
endfonn.
Llst c ge m 18. 8 Como passer umo tabelo Interne que tern uma hnho de
ccbecclhc com sua Iinho de ccbecclhc
report ztdBOS .
Aqu1, IT E IIIIla tabela. tnterna que tern uma l 1nha de cabet;alh o
Este programa IlOstr a CQIl'lQ passar a l1nha de cabecathc e a ccrpo.
tables ztxl fal.
data it l tke ztxlfal occurs 5 with header Jtne.
l
2
3
4
5
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
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
ho
18
19
20
21
'2
23

1 re port ztx1809.
2 .. Aqui, uma tabela i nt erna que nao t ell Imi 1i nha de cabelil l ho
3 l pasuda com l1nha de
4 tables ztx1fal.
5 dat a: f t like ztxlfal occurs 5. -nlio tell uma l1nha de cabe'Walho
,
7 select up to 5 rows fl'Olll ztxlfa1 i nt o table i t order by l ifnr .
' ..
IliDI
INluse
o e6digo na Listagem 18.8 produz a scguinte salda:
1000
1010
XXX
1030
1040
' ; A linha 4 define urna uea de trabalho global ,txl fal. Essa uea de
trabalho eurna Stringde campo tendo a mesma estrutura que a tabela
de ODIC ztxlfal .

Lisfagem 18.9 Como passar uma tabela interna sem umo linha de
para uma sub-rotina e automaticomente criar uma linha de
eobe<;olho
588 APIENOA EM 21.01"'5 ABAP/4
o. PASSAHOO PAR.lMmOS PARA sua-iunH.4S 1 589
"nlo t em ilna l1 nha de
Listagem 18.10 Como posser umo tebelo interne sem ume linhc de
ccbecolhc para uma sub-retine .
report ztx1810.
.. Aqui. uma tabela Int erne que nl o tee III'Ia 11-nha de
.. ! passada Sell! criar lJl'Ia lfnha de automaticamente
t ables ztxlfa1
data: 1t li le e ztxlfal occurs 5.
select " up to 5 rows from ztxl fa1 into t able it order by l1fnr .
perlonll: 51 using i t ,
s2 usi ng it.
s3 using it, .
"ntei tout tab les it.
A linha 18 sobrescreve a linha 3 da linba de cabecalho local, Como.
tabela intema foi passadapor referencia, isso modifica 0 conteddo da
eabela .intema original .
A linha 19 retorna 0 controle para a linha 8. A memoria para a linha
de csbecalho local eIiberada.
As linhas 9 a 11 escrevern0 conterido dol tabelaInterne, Como i t nao
t em uma linha de cabecalho, a string de campo ztxlfal eutili 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-rot-
ina, pede utilizar a sintaxe mostrada nas linhas dais a cinco da Tabela 18.4.
Utilizando essa sintaxe, voce pede passer 0 ccrpc 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
serac descartadas no final da sub-retina quando a mem6ria local de
it for liberada. Se YOCe passar 1t par valor e resultado, as alteralioes serso
copiadas: de volta para a originalquando endf onnfor executada, Uma
stop dentro da sub-retina descartars todas as aItera'i0es para it e tra.nsferiri 0
conerole diretamente paraend-of-sal ecti on.
A Listagem 18.10 ilustra esses merodos.
.1
2
3

S
6
7
8
9
10
11
12
13 end-of-sele ction.
14 write: I 'In End-Of-Select ion'.
15 perfonn write1to ut tables i t.
16
17 fOnl s l usi ng val ue(pt ) like i t. pusa por valor
18 " voti! tarnbe. pode ut 111zar: como it[ J.
19 data Wl like line of pt.

00 vocf pode utillzar:
11ke it
11ke U[ 1
nlo tee lIna linha de cabelial ho
"prectse utf1i zar a Area de trablllho per-que
read table pt 1ndell. 3.
pt-li f nr 'XXX' .
modify pt index 3.
endfonn.
wr1te I
endloop.
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'l fal. Essa irea euma
suing de campo que tern 2. mesma estrutura que a tabela de DDIC
ztxlfal.
A linha 5 define tabela interna it semuma 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 14e 15 mostram as outras escolhas disponIveis para fazer a
estrutura 1t conhecida dentro da sub rotina.
Alinh. 161hlinh. 3 de pt e a co10ca n. linh. de cabe..,lho 10c:U. Sem
a adi'iao structure na linha 13, essa linha tena causado urn erro de
sintaxe.
Alinha 17'!tera 0 v.!or de 1i fnr na linha de cabe,alho. Como. tabela
intema nao tern urn;a, linha. de cabe'ialho, isso nao rnodifica
nada fora da sub-rotina.
8 perform sl tables it.
9 loop at it into ztxlfal.
eli
10
11
12
13 form sl t abl es llt st ructure ztxlfal .
l '
I S
16
17
18
19
590 lPRENO. EM 71 OIAS ABAP/4 l B, MOOULARIZAIAO, P",,"OO PAlAMETlOS P.... SU'-ROTINAS 591
com que 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 interna. Scm 1i ke, pt seria uma varidvel simples e
um errc de sintaxe ocorreria.
A Iinha18 mostra a cutra escolha dispc afvel para definir pt como uma
tab ela interna.
A linha 19 define uma area de trabalho local wa que tern a rnesma
estrutura que uma linha de pt. As linhas 20 a 24 mostram as ou tras
escolhas disponiveis para definir urna arca de trabalho local par a pt .
A linha 25 Iea linha 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 ccneeud c cia c6pia local. A original
pe rmanece inalterada.
A linha 28 retorna a ccntr ole para a linha 8. A mem6ria para pt e
liberada e a alterac;io eperdida.
A linha cj traasfere a controle para a linha 30.
A linha 30 faz com que 0 corpo da tab e1a int ema seje passado por
referencia e naa cria uma linha de cebecalbc para ele. pt agora se refere
aoriginal 1i ke enecessario para definir pt como uma tabela intema.
Sem 1ike, pt seria uma variavel simples e urn erro de sintaxe ocorreria.
A linha 31 define uma area de trabalba local wa que tern a mesma
estrutura que uma linha em pt .
A linba 321. a linba2 de pt e a colocaemwa.
Alinha 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 foi
passada por referencia, isso modifica 0 contea do cia original. A original
agora esta alterada.
A linha 35 reto:na. 0 controle para a linha 9.
A linha 10 transfere 0 controle para a linha 37.
Alinha 37faz com que 0 corpo da rabelaintema sejapass ado per valor
e resultado, mo criando uma linha de cabecalbcpara ele. pt agora se
refer e a urna c6pia cia original. 1i ke enecessaria para definir pt como
uma tabela intema. Sem 11ke, pt seria uma variavel simples e urn err o
de sintaXe ocorre na.
A linha 38 define urna area de trabalho loal wa que tem a mesma
estrutura que uma1inha em pt.
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 ncrne da aree de t r abalho
sera zt xlfal. n,s o Will.
read t able pt i nto wa index l.
wa-11 f nr 'XXX' .
modify pt frOll Wi i ndex l.
endfoT'lD.
o c6digo na List agem 18.10 produz a seguinte safda:
tn
1000
yyy
1020
1030
1040
A linba 4 define uma are> de trabalbo global ztxlfal. Essa area de
tnbalho euma String de campo tendo a mesma est rurura que a tabela
de DDIC ztxHal.
Alinha 5define a tabela intern a i t semuma linha de cabecalho.
A linha 7 reside na tabela interm com 5 linhas de tabela zt xlfal .
A linha 8 transfere 0 controle para a 17.
A linha 17faz com que 0 eorpo dOl u bela inte rna seja pass ado por valor
c nao em. urna linha de caber;alho para ele. A passagem par valor faz
20
21
22
73
2'
25
76
27
28
2.
30 form s2 using pt li ke i t. passa por
31 data Wi like. line of pt .
32 read table pt into Ill! index 2.
33 wa-lifnr "tyr o
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 resultado
38 data "a 11ke line of pt .
39 read tabl e pt i nto Wi i ndex 3.
40 wa-l 1fn r 'ZZZ'.
41 modify pt from Wi index 3.
42 stop .
43 endform.
..
45 form wr1tel t out tab tee 1t structure ztxl fal.
46 leop at i t .
47 wrfte / 1t - l 1f nr .
48 endloop.
49 endfam.
AlAUSE
siiDI
592 APREN DA EM 21 DIAS ABAP/ !
lU DIlIJURI2A,.i<" PIll'HOOPlIl.iMETRDSP.... 593;
Definindo e ,hernando sub-rotinas externas
Quando urn perf ormchama uma sub-rotina enema
0 pragrama en ema que contem a sub-retina ecarregado.
0 pragrama exeemc int eiro everificado quanta asintaxe .
a controle etransferido par a 0 fonn no programa externo .
As inst ruc; 6es deotra da extema sao executadas.
A endfonntran sfere a controle de volta para a insuuc;ao que segue
a perform. .
o fato de a verificaC;ao de sintaxe ocorrer em tempo de cxecutj2.o e
importante, pebs duas razees seguintes:
Se0 parametr o formal for digitado, urn parametro real oao
dente causm urn erro de tempo de executjao em vez de urn erro de
sint axe.
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. Como a tabela interna foi
passadapor valor e resultado, isso modifies0 coneeedo da c6pialoC2.1.
A originalainda nao foi alterada. .
A linha 42 desvia da endfonn - ela tr ansfere 0 controle
diretamente para a linha 13. Isso faz com que a copia local seja
descartada, Se a stop naa executar, endfonn fari com que a
c6pia local sobrescr eva a original e a seja mantida,
A linha 15 rraasfere 0 conrrole para a linha 45.
A linha 45 faz com que a tab ela interne seja passada por referzncia e
uma linhade cabecalhc seja automaticament e criada.
As linhas 46 a 48 escrevem 0 conreudc da tsbela interna, A anica
esti: na linha 2 e foi executada em 52.
..
mesmc area
reportttx1811 . demem6ria repartzix1812.
tcbles zlxllo1 -I-... CJ+--l- tabl., zlxllo1.
dota 11 . CJ d;fe..nte dote 11 . c:::J
areasde mem6rio
Urn erro de sintaxe em qualquer lugar no programa extemc causara
urn erro de tempo de execuc;ao, se ele estiver dent rc au fora da
sub-retina extema. .
As sub-rotinas ext ernas sao mui to semelhantes a sub-ra tinas internes:
As duas permitem que as parlmet ros sejam passados .
As duas permitem parimetros formais digitados.
As duas permitem 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 ent re sub-retinas extemas e internas .
As seguint es sao diferencas entre sub-retinas intemas e externas:
Uma varifvel global definida utilizando data conhecida somente
dentro doprcgrama que a defin e. Par exemplo, na Figura 18.5 a
data f1 apar ece nos dais programas. Ess a ins truljao define
duas areas de memoria chamadas fl . A f1 definida dent ro de ,tx1811
e'penas acesstvel de dea erc ,tx181l . A fl defiaida denero de ,txl8l2
eapenas acessivel de dentro ztxl812. Tow as referencias a fl dentro
de ztx18 12 sao a fl defmid as dentrc de ztx1812.
Uma vwveI global que tern' 0 mesma nome nos dais programa.s e
definida utiliza.nda a tab les nos dais pragramas ecomum
aos dais pragramas. Uma 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 cbamada a uma subrotina
externa.
Listagem 18. 11 (homondo a sub-rolino mostrodo no Uslogem 18 .12
1 report zt x1811.
2 tables ztx1fal.
3 dat a f1(3) value 'W ' .
e
5 ztxlfat-1 1fnr" '1000'.
Figur a 18 :'jj
As enln!
svb-n:JIinos eJdemos e
in1emos ,
zt x1811.
=
report ztx1812.
perfonn sl (ztxl 812) .
r
fom 51.

?
- endf onn.
Umo sub-retina extemo eoquelc que reside em um.progromo dlferente que a
insnyoperfom que a cherne. AFigura 18.4 ilustro ume sub-rotina enema.
HOYO ...
lEUO "
FigurA 18 4
Umo ilustro o de
umo .
594 APRENDA EM21 DlASABAP/4
Por que precise conhecer todes as vana'ioes de passagem de uma
tabela intema come sem linha de csbecalho! Todos os casas nao
sao ahrangidos por apenas algumas dessas
Se voce eseivesse meramente eriando pr ogramas em ABAP/4,
nao precisaria conheeer todas essas variac;6es. Voce poderia
eodificar a maioria de seus programas com apenas algumas
variacdes simples. Entretanto, a m aior parte do tempo de urn
programador em ABAP/4 normalrnente nao e gasta na criac;ao
do c6digo em ABAP-e gasta na leitura . A pass agem de tabelas
internas para sub-rotinas eurn assunto complicad o e 80% de
seu tempo serao gastos lendo 0 codigo qu e faz essas coisas
complicadas, enquanto menos de 20% de seu t emp o serao gastos
.criando seu pr6prio ccdigo. Esse t riste desequiHbrio determine
que voce deve aprender as ut ilizadas pela SAP, para
que possa gastar menos tempo arrancan do cabelcs enquanto
t en t a entender 0 c6digo de SAP. 1550 deixara voce com mais
t empo para escrever pr6pri o codi gc e com mais cabelo.
o
DIA 1.: PASSANOO PARAMETROS PARA. SlJ8.ROTI NAS
Os parlmetros podem ser passadcs de tres maneiras: por valor, par
valor e resultado, e par referencia. A sintaxe na instrucfc f onndeter-
mina qual meeodoeutilizado.
0 coepo deuma tabelainterna pode ser passadovia usi ng au chang; ng.
o corpo (e a linha de cabecalho, se pre sence} pade ser passado via
tables . Se a tabela intema nao tiver uma linha de cabecalho, tables
cria uma dentro da sub-retina.
Para acessar os ccmpcnectes de uma stri ng de campo ou sub-retina
conhecida dentro da sub-retina, a est rutura deve ser declarada na
form.
As sub-rotiD.as extemas sao muito semelhant es is inremas. Com as
sub-retinas externas, as variaveis definidas utilizando dat a sao co-
nhecidas somente dentro do programa que as define. As varidveis
tendo 0 mesmo nome definidas utilizando ta b1es sao comuns aos dais
programas.
P&R
Resumo
Utilize a instrulioo local dentro de svb-rctincs extemcs perc evitcr
comportilhomento de areas de trobolhode tobelos.
N05 dais programas, a linha 2 define uma area de trabalho global
ztxlfal. Essa area ecompartilhada entre as dois programas.
Nos dais programas, a linha 3 defineurna variavel de trabalho global
fl. Duas areas independentes de memoria saodefinidas, urnaparacada
programa..
Em zt . ISll, a linha 5 atribui urn valor de 1000 a zt.1fal-' ifnr.
Em ztx1811. a linha 6 passa 0 controle para a linha 5 em ztxlB12.
Em ztx1812, a linha 6 atribui ZZZ avariavel global"fl para ztx1812. fl
em zt x1811 MO eafetada.
Em ztx l B12, a linha 7 atribui 9999 a ztxlfal . 1550 afeta as dais
programas.
Em ztx1B12, a linha 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, enquanto 1i fnr foi alterada.
0 c6di go na List agem 18.11 produz a seguinte-safda:
fl AM
l 1f nr .. 9999
fonn 51-
fl .. 'ZU' ,
ztxlfal- l1fn r '9999',
endform.
6 perfann sl (ztxIB12).
7 write : I 'f! .', fl .
B / ' l ifnr II', ztxlfal-lifnr.
1 r eport ztx1812 .
2 tabl es ztx lfal.
3 data fl(3).
4
5
6
7
8
SAlol

Li st agem 18.1 2 Asub-rotina <hamoda do programo no listogem 18.11
h"p://www.compus. com.br
Utiliza ndo a instruc;; Ci o j Dcl ude
Depois de conduir eseecapfrulo, voce sera. capaz de:
Ent ender e utilizar a i ncl ude
Criar grupos de e m6dulos de
Deflnlr parame tres de importacao, exporta/iao e altera/iao
19
Urn progromo que indui outro econheddo como um programc de inc/usco.
NOVO ...
milO ,..
KOVO.... Um programa include eurn aplicotivoem que 0 ccnteedc eprojetodo pore ser
TERMO" utilizede per eutro pregrerna. Norrnalmente, ele ndc ecompleto sozinho. Em
vez disso, outro progromo utilize0 c6digo que 0 progromo include ccntern , copiendo as
linhos de c6digo do progrorno include pore eles pr6prios, A c6pio eexecutodo em tempo
de vic lnstrucec i ncl ude. Urn progrcmo include tombem econhecido como
um progroma indu/do (induded program).
Modularizalao: modulos
de funlao,.Parte 1
Ii
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 mem6ria e
alocadaparaa valor?
4. Que efeito as adi coes using fl e c"hanging fl tern na maneira como
as parametres sac passados?
tcp-ot-peae.
add 1 to ct r.
write: I 'Top of page, fla g . ', f l ag. 'ctr .' , ctr.
ul t ne.
o Workshop oferec e duas maneiras de voce verificar 0 que aprendeu oeste
capi tulo. A Teste oferece perguntas para ajudar a solidificar seu entendi-
menta do conteudc abordado e a se<;ao Exercicio permite que voce pratique 0
que aprendeu. Voce pede encontrar as respostas is perguntas do Teste e aos
exercicios no Apsndice B, "Resposras as perguntas e aos exercrcics".
report ztxl813 no standard page headfng .
ztx1813 data: flag,
ctr type 1.
Execute 0 programa mostrado na Listagem 18.13. Comente a instrucio pa-
ramet ers e execute-a novamente. Descreva a sequenciade eventos que ocorre
em cada case .
parameters pl.
i nf t ia11 zat ion.
flag '1'.
write: I 'in !nitialization' .
stert-cf-se1ect 1on.
flag .. '5' .
write : I ' i n Start-Of-Selection' .
I 'pt >' , pt.
Listage.m 18.13 Expllque a seqllenclo de eventos que ocorre neste
prcqrcmc
Workshop
Teste
Exercfcio 1
596 APRENDA EM 21 DIAl ABAP/4
;' .:.

598 , PREMD, EM 21 DI,S ABAP/4 19, MODUlOS DE FUM\AO, PAmI 599
Sinlqxe para q inslrw;Co j Del ude
Na Figura 19.1, za eo programa de Inclusao. Os prcgramas include sao
zb e r c. No memento em que za egerado, 0 ccdigo-fonte para zbe 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 prognmas include.
o seguintes POntOS se aplicam:
Urn progr ams include deve ser do ripe 1. Voceespecifica 0 programa
do tipo no campo Type na tela Program Attributes quando voce cria
o programa.
Urn programa include pede estar incluido em urn au mais programas
de iaclcsjc (including programs).
Urn programs do ripe i nio pede center insrrucces parciais nem
iacompletas.
A 1ncl ude copia 0 conteadc do programa include no programa
de inclusao. 0 ccdigc do programa include ecopiado como esti e substitui a
instruc;ao incl ude no tempo da de programs. A Figura 19.1 ilust ra a
1ncluee.
o c6digo nas Listagens 19.1 a 19.3 produz esta safda:
COIl'+J any f or Vendor 1000
SliOI
Lisla ge m 19.1 Umprogromo de inclusoo
1 report zn1901 no st andard page heading .
Z tables: ztxlfal. ztxlfbl.
3 par ameters p_li fnr like zt xlfl1-l 1f nr obl1gat ory defa ul t '1000'

5 include: ztx1902.
6 ztxI903 .
1
8 top-of - page.
9 write : I ' Company Codes for Vendor ' . p_l 1f nr .
10 ul tne.
Listagem 19.2 Este progromo incluldo em zt xl 901
1 .... INCLUDE ZTX190Z.
Z sel ect s i ngle * f r'Olll zt xlfal where l1fnr p_l1fnr .
Lista ge m 19.3 Este progromo tambem est6 ineluido em ztx1901
1 -INCLUDE ZTX1903 .
Z select .. from ztxlfbl where l1f nr ztxlf&1- 11fn r.
3 write: I ztx l f bl- bukrs .
4 enesetect
1000
3000
. INluSE lI.. No moment o cia ge",ao de zt xl 901, a linha 5 copia 0 ccdigc do
,. program. ztxl902 pas. zt xl 901. 0 codigc inserido substitui a linha 5.
Ainda dur ante a de programa de ztx1901, a linha 6 copia 0
c6digo do program> ztxl903 par. ztx l901. 0 c6di go inserido substitui
a linha 6.
Quando 0 programa executa. zoc1901 componase como urn nnicc
prograrna. como se as linhas de c6digo dos programas incluidos
tivessem sido digiudas direeamecte em ztx 1901.
A SAP utiliza includes para reduzir a redundincia de c6digo e dividir
prognmas muito gnndes em unidades menores.
Programo ZS
Write 'Hr.
Progrbma ze
Write 'There'.
Report lA.
Indude
lncludeZc. l- _
Report lA
write 'Hr.
Write 'There'.
i
Quando 0 progroma e
gerodo, este Ii )
resulta do do
c6digo-fonte.
onde:
tpgm eum program. do tipc 1.
include ipgm.
0 seguinte ea sintaxe panla insrruci o include.
Z

m
T
. FIgura 19 1
Umc ilustrofiOocio
insfru o i ncl ude.
Enquonto visuolilOum 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 nome ztx1902
au em ztx 1903. 0 pragro ma incluldo ser6 exibida imediotamente.
Se vocA quiser ver a c6cligo resultonte com fades as includes in-line
expondidos, execute a programa RSINCLOO, No telo de selecoc para
RSINCLOO, no campo Program, digite a nome de um progromo que
inclui outros progromos. Coloque urn Xnos compos Program Source
Code e Expand Include lines e pressione Execute. Umo listo do
c6digo-fonte resultonfe sem exibido na proximotela.
OIA 19.MODUlARIZA(.io, .600'05DE FUN(.iO, PAm, , 101
Entendendo 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 preexistentes. No total , eles ccntem mais de 30.000
modules de func;iio. Se a funcionalidade que voceexige j' oiio eabordada por
esses rn6dulos de funiio fornecidos pela SAP, voce tambem pode coo seus
pr6prios grupos de funC;iio e m6dulos de func;iio.
NOYO.... Code grupa de ,fvnl;oo eca nhecido pe r urn quotro
lWiO" chomodo 10de -gropo de Se voce cno seu pr6pno grupo de fun<; oo,
deve escclher um ID de grupo de que ccmecc com You Z. 0 ID deve ser
exotcmente de quotro corocteres de comprimento e ndo pode confer lccunes nem
ccrccteres espec lcls.
Para ilustraros gropos de descr everei resumidamente a processo
de cri' c; iio de um grupo de func;iio e de um modulo de func;iio dentro
Vamos partir do pressuposto que nenhum gropo nem m6dulo de ainda
existam.
Voce ccmeqa crisndo um m6dulo de Quando cria.urn m6dulo,
sistema primeiro peclir.i a voce um ill de gropo de Esse ill informs ao
sist ema onde armazenar 0 modulo de
Quando voce fomecer olD, e se ainda ele.nao existir, 0 sistema criardi
Urn programa principal
Urn include superior
Um inc lude ux:x
Um m6dulo de func;ii o include
Coletivamente, esses componentes sao conhecidos como grupo de fun-
Seus relacionamentos sao ilustrados na Fi gura 19.2.
o nome do programa principal sera saplfgi d, ondefgid eseuill de gropo
de de quatro caracteres. 0 sistema automaticamente colo.ca duas
instruCJoes ; ncl ude nele:
incl ude ljgidtop.
incl ude l jgiduxx.
Introduzindo m6dulos de fun'i;oo
NOVO.... Ummodule de ea ultimo des quctro vnldcdes principe is de rncdulcri-
lruIO r do ABAP/4 . Ele emulto semelhante a uma sub-refina extema sab esses
aspectos:
Ambos existem dentro de urn programa extern o.
Ambos at ivam 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 exter-
nas sao as seguintes:
Os m6dulos de fum;ao tern uma tela especial utilizada para definir
parametres - os parametres nao sao definidas via de
AJ3AP/4. .
As areas de trabalho tab l es nao sao compartilhadas entre 0 modulo
de e 0 programa de chamada.
Para chamar urn m6dulo de eut ilizada uma sintaxe diferente
da empregada para chamar urna sub-retina.
Para sair de urn m6dulo de funCJao, eueilizada a instrucio raise ernvez
de check, exi t au stop.
Urn nome de module de funCJao tern um comprimento minima prarico
de tres caract eres e urn comprimento maximo de 30 caract eres. Os m6dulos
de de cliente devem comeliar com Y_ ou Z_. 0 nome de cada m6dulo
de fun/iao eunico dentro 40 sistema de R/3 int eiro.

Nos versces onferiores a 3. 0F, 0 sistema de R/3 permite que voce
espec ftqoe um ID de grupe de fum;ao menor que qoctrc carocteres,
au utilizer espccos denfro dele. Enfretonfo, 'loci n50 deve fozer lase,
porque as ferrcmemcs que monipulam m6dulos de funlioo se ccrnpcr-
tcrec irregulormenfe com esse grupo de func;oo. '
Acessando a bibliotecQ de
Dentro de cada include mencianadono UXX esta a codigo-Icare para
urn m6dulo de fun"o.
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 Fi gura 19.4.
Figura 19 4
Oprogromo
principal de grupo
de futHj:Oc ztXQ.
Figuro 19 3
A fundion Ubrcry
. .
functionz tx1901.
write: I tir.
endfunction.
MQclulQ$ de funco
function :r. tx1902.
-
endfunction.
lfgldU01
lfgldU02
'NCLUDE lfgldUOl
' NClUDElfg;dU02.
function . pool fgid.
Top Ind vde

lfg;dUXX
KOYO ..... 0 segundo progromo inc:l ude - lfgtduxx - econheddc como UXX.A voce
ltUO r. noo e permitido modifieor 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 a instruc;6o 1nelude lfgiduOl ser6 inserido
no uxx. Quondo ....oce crior um segundo m6dulo de nesse grupo, 0 sistema
odidonor6 umc segundo instru<;Ci o: i ncl ude lfgidu02. Todo vez que cdlcioncr urn
novo m6dulo de funr;oo 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, 03para 0 tercelro e cssim per dionte.
NOYO'" 0 primeiro progromo include - ljgtdtop - eccnhecdc como 0 fop indude.
TEllO r Dentrodele voel!pode cclcccr defini1jOes globaisde dodos. Estossao definic;6es
de dcdcs que seo globois pe rc tcdos as m6dulos de funJ;oo dentro do grupo.
NOVO ... Os grupos de runr;oo slio onnozenodos em urn grupo de tobelos dentro do
TWO ,. banco de dodos chcmado biblioteco de funr;oo. Acessondo a biblioteco, voce
Jcmbem pede ocessor os ferramentos pelos qua is voce monipulo m6d ulos de func;oo e
grupos . Para ocessor 0 btbllctecc de funr;co do Development Workbench, pressione 0
bateo Function li brary no berra de ferramentos Applicotion. 0 c6digo de tronsor;oo e
5E37.
lnd ude lfgidTOP.
Indude UgidUXX.
Flg u r Q 1 9 2
Esse 4 0
re/oclonomento
hier6rquico dos Proqmmg Principa!
componMmsde urn SAPLfgid
grupo de luno. r-----..",/
602 I A'RENDA EM II DIAS AWI4
Cada umdes componenres de urn grope de func;ao pede ser acessado a
partir da Function Library Initial Screen mostrada na Figura 19.3.
A Figura 19.5 mostra 0 UXX p.n 0 grupo de fun'iao ztxa.
604 APRE NDA EM21 DIAS AB AP!4
Na Figura 19.5, voce pade ver esse grupo de zt xa que contem dois
modules de z_t x_1901 e z_tx_1902. a primeiro esta ativo, 0 segundo
nao (seu nome ecomentado).
OIA 19, MOOUlA'lZA(.io, MOOUlOS O!fUNlio.PAm1 605
urn m6dulo de func;ao antes de trabalhar nele, alterar 0 c6digo e entao executar
uma de sintaxe nesse m6dulo tinico antes de reati vs-lo. Dessa
maneira, os demais m6dulos de func;ao ainda podem ser chamados, mesmo se
voceestiver trabalhando em urn deles.
Definjndo dodos dentro de urn modulo de
fu defini<;5es de dadas denerc de modules de fun,aa sao semelhantes l.quelas
de sub-retinas.
Dentro de urn modulo de fun):ia
J
utilize a instrllc;ao dat a para definir
variweis locais que sio reiniciilizadas toda vez que 0 modulo de e
chamado. Utilize a instrucfo stat i cs par a defmi r varUveis Iccais que saO
alocadas na primeira vez que 0 m6dulo de echamado. a valor de uma
variavel esutica elembrado ent re chamadas.
Defina parfmecros dent ra da interface de m6dulo de fun) i o para criar
locais de varifveis que sao passadas no m6dulo de func;i o e retcr-
nadas dele (vejaa pr6ximase,aa).
Vace nao pade utilizar a instI11c;ao 1oca1dentro de urn m6dulo de func;:ao.
Em vez disso, parimet ros de int erface glabalizados servem para 0 mesma
prap6sita. Veja a seguinte seliaa sabre definic;ao de dados globais para aprender
sabre parimetros de interface globais e lccais.
Atjva ndo urn modulo de
Urn m6dulo de deve ser ati'lJado antes de ser iriiciado. H:i um. batao
Activate na tela Functi on Library Initial Screen. Pres sionando-o se ariva 0
modulo de fun, aa.
Quando 0 modul o de river sido criado pela primeira vez., a
i nc1ude para de dentro do UXX sera comentada. Acivar 0 m6dulo
de faz com que 0 sistema remova a comennric da instruci c i ncl ude.
a m6dulo de estara entao disponfvel para ser chamado de outre
programa. Se alterar 0 c6digo demro do m6dulo de fun c?o, ele Ilia
precisara ser ativado ?ovamente. Por outre lado, reat ivar naa causard qualquer
dane.
Se quiser, voce pede desativar urn m6dula de fun,aa. De ABA:F{4
Function Library: Initial Screen, escalha 0 caminho de menu Function Me-
dul e- > Deactivate. A escolha desse caminho de menu insere urn comentdrio na
i nclude para esse module de fun):io dentro do UXX.
Todos os m6dulos de que pert encem a urn deice grupo existem
dentrc do programa principal : sapl! gid. Por causa disso, urn erro de sintaxe
em qualquer urn desses m6dulos de fara com que 0 resto se tome
inoperante; a execu)ao de qualquer urn deles resultani em urn erro de sintaxe.
As fun)oes Activate e Deact ivate permitem que vace trabalhe em qualquer
modulo de unico de urn grupa sem afet2.f0 resto. Voce pade desativar
Definjndo a interface de modulo de
MaYO.... Pore passor pcrerretres pore urn m6dulo de funo, voce deve definir umo
TElMO r interface de m6dulode Esse interface ec dos porometros que
sao pcssados e recebidos do m6dulo de func;oo. Ela etcmbem simplesmente ccnhecidc
como interface. No restante deste cap/tvlo, n6s vamos nos referir ainterface do m6dulo
de simp!esmente como interface. .
Para defmir parjmetros, voce deve ir para uma de duas telas de
de parlmetro:
Import/Export Parameter Interface
Table Paramet ers/ Except ions Interface
A tela Impa rt/Export Parameter Interface . mostrada na Figura 19.6.
Nes sa tela voce pede definir0 seguinte:
Os parimetros de importacac
Os parfmetros de exportacic
as parimetros de altera/Sao
606 AmMDA EM 21 DIAS lBAPH lU ODUURIl.l(.io, M6DUlOSDE 607
Voce digiu 0 nome do parimetro na primeira coluna e os aeriburos do
parimet ro nas colunas restantes. Digit e urn parimetro por linha.
Pcnimetros de tabe/asOc tc belcs internes que sOo passcdos pore 0 m6d ulo de
NOlO ...
TrulO alterados dentro de le e retomodos. As tobe/os infernos devem see
definidos no progromo que cha ma.
Umo eum nome para urn errc q.ue ocorre dentro de um m6dulo de
funo. As soo descritos em detolhe no pr6xima
o cc ncelto de um pordmetro de exportcc;oo sendo possado per valor
eum poueo esfranho poro a moiorio doe programadores. Pense dest o
moneiro: quondo possodo per valor, 0 mem6rio porc um pcr e rnet-c
de edefinido de ntro do m6du lo de A
endfunct1 on ccpic 0 volar do pordmetro de exportoc;oo de dentro do
m6du lo de funlioO para a vori6vel ofribuldo a ele no progroma de
c:homodo. Se a instruoendfunct 1on noo for executodc (porexemplo,
se voc e deixa 0 m6clulodefunc;oo onormolmenfe ufilizando a
rai se), 0 volor noo ecopiado e Q vcrievel do chomodor permcnece
lociterodc.
as metodcs pan passar psrjmetros para modules de funliao sao maito seme-
lhantes aquel es para passu parfmetros para sub-retinas enemas .
Par padract--.
Os pargmetros de expcrtacfo e sao passados por valor.
as parametres de sao passadcs por valor e resultado.
As tabelas inremas sao par refereacia.
Voce pode fazer com que a importacjo, exportac jio e parametres de
alteraiiio sejam passades po r referenda, colocando uma marca de verifi-
na caixa de selecac Reference na tel a Impo rt/Export Parameters (veja
a Figura 19.6).
NOYO ...
lFlMO JII"" retomados do m6dulo de fun o. Esses vclcres se originom de dentro do
m6clulo de funr; oo e sao exportodos pore fora dele.
1i10 ...
mMO " que seSo pcssod os no m6dulo de func;oo, olterodos pelo c6digo dentro do
m6dulo de furn;oo eentec retomodos. Esses volores se originom de foro do m6dulo de
func;eo, que as recebe e as passe de volta.
NOlO...
1Bl!O passodos no m6dulo de do progra mo de chamodo. Esses vclcre s 58
originom foro do m6dulo de func;oo e se o importodos pare cleo
Passando pardmetros
A tela Table Parameters/Exceptions Interface emostrada na Figura 19.7.
NesS1 tela vocepede:
Definir parimetros internes de tabela
Docurnentar as excecees
Fi gurq 19 6
A telaImporl/Expott
Porometer Interfoce.
Fi gurp 1 9 7
A telaTable
Parameters!
Exceptions Interface.
I
Oil19, MDDUUlUZA(AO,M6DUlOS DE PAm1
...",- . ..
_t1.. z tllf1oo.
., or, .........,u1 ut",.h... ,
1_.1I1C-
.IIlUm1J....!rrE I "niLT 1
Na Figura 19. 8, voce pode ver que pt , p2 e p3sao passadcs por valor.
1 report zt xl904.
2
3 write: I ' Bef ore Call' .
4 call funct i on ' Z_TX_1901' .
5 wri t e: I ' After Call' .
Nco a ltere nem exduo .esses comentOrios; eles sOo gerodos palo
CUIdado sistemo. Se voce os alteror, 0 m6d ulo de funo pode nco funcicno r.
especificar uma propcsta, 0 sistema automaticarnente colocard urna marca de
verificac;i o na coluea Optional.
. Todos os parlmetros que vocedefine na interface eambemaparecem 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 alt era
ainterface a sistema automaticamente atualiza esses comentarios especiais para.
refletir suas alteracoes.
Chornaodo _
Para chamar urn m6dulo de func;ao, voce codifies a call function.
a luxo de contrcle esta dentro cia Listagem 19.4.
... Ustagem 19.4 Este pregrcma executa uma chomodo simples pare urn
OOilDA,. m6dulo de fun<;co
Figura '9 8
Os comenl6rios
gerados pefo
sisl'ema no parte
JUperiot do
c6digo-fonle.
609

.-"', d dos s dl d
;;",t' Utiljzondo porometrosigito as e noo lgito as
Como assub-retinas, os parametres dem6dulo de fun!ja.o podem ser digitados
'F 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
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 t ela Impo rt/Export Parameters:
Especificar um tipo de dado de ABAP/4 na coluca Reference Type
Especificar 0 nome de uma estrutura de DDICau componente deuma
.estrutura de DDIC na coluna Reference Field
Voce nao pode ut ilizar as dois meeodos ao mesmo tempo para um Unico
parimetr o. Voce deve utilizar ou urn ou outre.
Ao utiIizar 0 primeiro metodo, simplesmente especifiqueum tipo de dado
de ABAP/4 na ccluna Reference Typ e na t ela Import/Export Parameter,"Po r
exemplo, na Figura 19.8, pl e p2sao paramet res digirados que tern urn tipo de
dado definidc 0 0 ABAP/4 como i (iaceiro}, P3 tambem edigitadc, tendo um
tipo de dado p, 0 tipo i eum tipo de dado de comprimectc fixo e portanto
tern urn comprimento de 4. a tipo peurn tipc de dado de comprimento varhvel
e assume 0 compriment o e 0 mimero de casas decimals do pardmetro que e
. passado para ele.
Ueilizacdo 0 - segundo metodo, simplesmente di git e 0 nome de uma
estrutura de Data Dictionary na ccluna Reference Field. Os parametres sao
defmidos como se voce tivesse ut ilizado a adiC;ao 1i ke na fom em
uma sub-retina enema.
a s paramerro s tamb em podem ser opcianais e a eles podem ser fomeci-
dos valores-padrao. Parafazer umaimport aC;ao de parimetro opcional, coloque
urn marca de na coluna Optional (veja a Figura. 19.7). Se m er uma
import ac;ao de parimetro cpciccal, voce nao ted de atribuir names a de na
instruc;ao cal l funct i on quando chamar 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 na instrucao call
function. Por exemplo. se 0 modulo de z_xyz retoma ues parimetros
de el , e2 e e3 e voce quer s6 e2, entia 56 codifique e2 na instruC;io
.cal l function. Simplesmente omita 0 resto .
. Para atribuir urn valor padrao para urn parimetro de 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
para valores exportodos pa re 0 mOdulo
de func;60' 0 atri buiQio edo dlreito pore
o esquerda.
para valores importodos pora 0 m6dulo
de funo, a otribuio Ado esquerdo poro
o direi'o.
data : v1, , 2, ,3.
names de par6metro vari6veis
oesq uerda de _ 0 direita
Nesta se.l:?o, ilustrarei uma chamada para urn m6dulo de funtS
ao
de exemplo
z_t x_di Y, que simpl esmente divide dais numeros e retorna 0 resultado d.a
divisio.
Neste ltvrc, 0 ferme "parflmetres de importoo" por si mesmc (sem
referendo , se far do ponto de vistado progroma au m6dulode func;6o)
refere-se 0 por6metros importodos no m6dulo de funo. a termo
"parametros de exportol1co sem uma referenda a pa-
rometros exportodos do m6d ulo de fun o.
l,,"OOUlARllA(l o,MOOULOS DE FUH\IO.PAITE 1 611
Na call functi O"J exportatS0es e importacoes existem do ponto
de vista do programa. Os valores que sjc exportados par call funct i on sao
import.dos pelc modulo de fun"o. Os valcres expomdos do m6dulo de
funfiaosao impo rta dos pela instrut;i o call function.
Aesquerda do operador de atribui t;ao (-)J esta.uma lista dos nomes de
paramet ros defmidos na int erface do m6dulo de funt;io. Adir eita, esti o as
variiveis defini das dentro do programa de chamada. A depois de:
export; ng ocorre para a esquer da.. A atribuiCjio depoi s de i mport; ng
ocorre da esquerda para a direita. A atribuit;io depois de changinge tables sjo
bidirecionais. Antes da chamada, a 6 da direita para a esquerda. No
retorno, 0 valor de retorno eaeribuldocia 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 eatribuido a p2. 0 ccntrcle entao 6 rransferidc para 0
m6dulo de run, ao. No retorno, 0 valor de p3eatribufdo a v3.
Utilize a ins tru Cjio call f uncti on para transferir controle para urn m6-
dulo de unCjao e especificar puimetr os. A Figura 19.9 ilustra como as pa-
rimetros sao passados e recebidos do m6dulo de funcsa
o
.
Executa
odo
urn modulo de fuol;QO de exemplo
Figura 10 9
Estafigure ilU5fJ'(J
CCIT10 05 par6metrDs
sOc possodos e
recebidos dom6dulo
de fun;oo.
o c6digo na Listagem 19.4 produz est>. su da:
Call
Hi f rom Z TX 1901
After Call -
A Iinha 4 transfere controle para. 0 ccmecc de modulo de funlSi a
2_ tx_1901. Nesse exemplo, 0 m6dulodefunljia 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 retorna 0 conerole pan a
call function. 0 processamento continua com a pr6xima instru/iao
depcis call funct ion. .
IlI.luSl
Os seguinte s' pontos se aplicam:
Todas as aditSoes sao opcionais.
call f unct i on e uma instrutSao especrfica. Nao coloque pontos ou
virgulas depois de parimetros ou Domes de excetSao.
0 nome do m6dulo de funtSao deve ser codificado em tetras maru.scu-
las. Se for codificado em minusculas
J
a fuot;aonao sera localizada eurn
dump curt o acont eceri.
en Estaea sintaxe para a cal l functi on:
-Z call f unct ion 'F'
,... [exporting pl '" , 1 . . . ]
:a::- [1mport t ng pZ .,Z . ]
>< [changing p3 r3 ]
m [tables p4 it .. . ]
T [excepti ons xl n [other s n] ] .
onde:
Fe0 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 string de campo dentro
do programa que chama. .
t t euma tabela interna definida dentro do programa que chama.
n equalquer inteiro literal ; n nio pede ser urna variwel.
xl eurn nome de excecso levann dc dentro do m6dulo de funtSao.
Siotaxe para a iostrUl;QO call f unct j On
610 AP' EHOA EM . l 0lA5 ABAP/'
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 Parameters pan. esse modulo de e a.
Listagem 19.6 mostra 0 codigo-fonee para ele. .
Listagem 19.5 Utilizondo' a instru'oo call function com parametres
1 report ztxl905.
2 parameters: apt type 1 default 2. oper and 1
3 . op2 type 1 default 3. . oper and 2
data rslt p dec1llllls 2. art"sult
. I
6 call function 'Z_n_DIV'
7 exporting
8 pI - opl
9 p2 op2
10 importing
11 p3 r sl t ,
12
13 write : / opl. ' I' . opl. I.' . rslt .
t
,
Alinh. 6 transfere controlepara 0 m6dulo de fun"o Z_TX_DI Y. ovalor
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, pon ant o os
tipos de dados correspondem. P3 tipo Pieurnparimetro parcialmence
digitado. Ele obtem seu comprimento e ruimer c de decimais de rs lt.
Os vaJores de opl eop2 sio transferidos para 0 m6dulo de fonlj.ao e 0
controle etransferido pan a linha 1 daListagem 19.6.
Na Lisragem19.6, a linha 10 executa uma divisfc simples.
0 modulo de funl;jao "reeome a controle para a lic.ha 6 da listagem
19.5.0valor de p3 eatribufdc il. varidvel rsll .
A liaha 13 escreve 0 result adc da divisio.
o c6digo na Lisragem 19.6 echamado da linha6 da Listagem 19.5.
o c6digo na Listagem 19.5 produz esta saida:

D. tel. de ABAP/4 Development Workbench, pre ssion. 0 bode
Function Library na barra de fem..menus Application. A Function
Library Initial Screen emostrada (veja a Figura 19.3) .
Digite 0 nome de seu modulo de funl;jao no campo Functi on Module.
o nome deve comeear com Y_ ou Z_.
0 batao Create. A tela. Function Module Crea.te: Admi-
nistration emostrada (vej Figura 19.10).
Pressione 0 botoo Pattern no tela AW/4 Editor. Edit Progrcm para
inserir automaticomente 0 instruo _cal1 f unct io n em seu c6digo.
Vocesera perguntcdo sobre 0 nome de m6dulo de func;6o e ovtoma-
ticci"niente ele coclificora 0 lodo esqverdo de todos as atribuies de
porometrode pore voc6.
Inidea "Howto Creote.o Function Module- cgorc.
Utilize 0 seguinte procedimento para criar um m6dulo de Para um
exercfcic, siga esteprocedimento e erieurnm6dulo de funl;jio exatamente como
z_tx_di Y. Inicie 0 sen z_ - dt ve coloque-o em gropo de z a Qembre-
se de subscituir 0 com as dois caracteres que voce escl utilizando
identificar seus programas).
C[jendo um modulo de. func;a o
t

1.
i
i
2.
,
3.
0.67 3
2 /
Na Lisragem 19.5, as linhas 2 e 3 defiriem duas varifveis, op1 e op2.
Como essas varidveis sao definidas. utilizandc a 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. .
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 IMPORTING
5 . VALUE(Pl) TYPE I DEFAULT 1
6 VALUE(P2) TYPE I
7 ."' - EXPORTING
8 VALUE(?3) TYPE P
9 fr ____ __
10 ,3 ,1 / ,2 .
11 endfunction.
DIA 19, MaOUlOSDE PAm1 615
I
I
Utilize 0 Object Browser perc lister as modules de fonr;60 que \ICC!
criou. A partir do Obj ect Browser, escolha locol Pdv. ObjBds e
pressione 0 botec Display.
Re_5umo
VecE pade utilizar a include dividir seu c6digo em
partes menores gerenciaveis. Os programas include u:nprograma
do ripe t , Seucodigc ecopiadopara 0 programa de mclusao no ponto
cia. instrucao i ncl udee a substitui completament e.
Os modules de funliao sao unidades de modularizaliao com nomes
especificos que podem ser charnadosa parti r de qualquer 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
predefinida. Todos os n0I11:es de progr.ama dentrc do contem 0
ID do gropo do funljao de quatro caracteres.
Agora stria urn boa hora para criar u:". de AJ3AP/4 a fim de
chamar seu m6dulo de e tentar exibi-lo. Cne um progr ama como 0
mostrado na Lisragem19.5. Dentro de seu programa, certifique-se dec?di fica.:
o nome do m6dulo de emletras maiusculas. Caso contrano, voce obtera
urn dump curto, porque 0 sistema nio sera capaz de loealizar 0 m6dulo de
fun, ao. .
Figu rn 19 10
Esso ea tela
Function Module
Crecre:
Administration.
1
1
I
I
I
\
I
4. Digir e 0 nome de urn gropo de no campo Function Group. a
. nome de grupo de deve ter de quatrc caracreres de compri-
menta e deve comecar com You Z.
5. .Digite urn 5 no campo Application. Esse campo e utilizado para
indicar qual a :ireade func;ao que utiliza a modulo de fuoc;ao. Nessa
funcionalidade nao eutilizada por nenhuroa area fuocional, trata-se
simplesmenre de urn exemplo, eneao qualquer escolha servird, (5 .
indicaque a m6dulode fun'ia,o contemfuncionalidade necessariapara
a Basis.}
6. Digite uma descricao do m6dulo de funtj3.o 00 campo Short Text . 0
conteudo desse campo evista quando se exibeuma Iista de m6dulos
de fun,ao.
7. Pressione 0 batao Save na barn de ferramentas Application.
8. . Se a grupc de func;ao ji mioexiste, urnpop-up informard iS50 a voce
e perguntard se voce quer cria-lo. Pressione 0 batao Yes para criar a
grupo de A caixa de diilogo Create Function Group apare-
cera, Digite uma descricl o no campo Short Text e pressione a bono
Save. A tela Create Object Catalog Entry aparecerf. Pressione 0
botac Local Object. Vocevoltarapara a telaFunction Module Chan-
go: Administration.
9. Pressicne a batao Source Code na bam. de ferramentas Applicati on.
A tela Function Module Edit sera exibida (veja a Figura 19.8).
10. Digite a c6digo-font eparaseu m6dulo de funliaO. Nso altere as linhas
de comennrio geradas pelo sistema sob qualquer circuastjlncias! Seu
m6dulo de funljao pede ter urn erra de operacao se voce fizer isso.
11. Pressione a batao Save na barra de [erramentas Application. A men-
sagem Progr am xxxxx saved aparecers na barra de status na parte
inferior cia janela.
12. Pressione 0 borac Back na barra de ferramentas Application. Voce
volt ara para a tela Function LibraryInitial.
13. Se voce quiser definir paramet res de exportacio ou de impcrtacio,
selecicne a batao de Import/Export Parameter Interface.
Pressione a batao Change. Aparecers a tela Import/Export Parame-
t ers (veja a Figura 19.6). Digite os nomes de seus parametres na
primeira coluna e insira quaisqueroutras caracterfsticas desejadas para
cada pargmetr o. Quando voce estiver terminado, pressione 0 bene
Save e depois 0 bono Back.
14. Por fim, para ativar seu m6dulo de pressione 0 bono Activate
na barra de ferrarnentas Application d.a. Fun ction Library Init ial
Screen.
614 APREMDA EM21 DIAS A8AP/4
616 APRENDAEM21 DIAS
DIA lUDDUlARIZA(iD, MODUInS DE FUN(iD, PARlE 1 617
A interface 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

Parametres digitados e njio digitados pcdem ser especificados e pas-
sados por refersncia, per valor au por valor e resultado.
WorkshJ./. oj.L p ...,----_-'-- _
o Wor kshop oferec e duas maneiras de voce verificar 0 que apr endeu oeste
capitulo. A se<;ao Teste oferece perguntas para ajudar a solidificar seu enrendi-
mento do coneeado abordado e a se4j:ao Exercfcio permit e que vo!=c prat ique 0
que sprendeu. Voce pede encontrar as respostas as perguntas do teste e aos
exerclcios no Apendice B, "Respostas as perguntas e aas exercfcios".
Coloque m6dulos de funt;io que tem funcionalidade seme-
Ihante no mesmo grupo de fun4j:ao. Par exemplo, voce pede
colocar todos os m6dulos de funli3.0 que calcularn depreciacac
em urn grupo de fun<;ao, todos os qu e executam fu n4j:oes de
calendaric em outro gropo de fun4j:ao e aquel es que oferecern
interfaces de comunicacao externas em urn terceirc.
Como decide em qual gropo de colocar urn novo
m6dulo de Quando devo criar um novo e quando
reutilizar urn existente?
ainda muitas em utilizaclc no sistema de R/3. Tambem emais facil
ent ender modulo de fumiao se voce soub er como as sub-retinas
extemas funcionam. Em vez de sub-retinas externas, utilize me-
dulos de funt;io. include deve ser utilizado para simplificar a
estrutura do Sell programa e agrupar componentes semelhant es.
El es nac devem ser utilizados como conteineres para c6digo
reutilizsvel que inc1uido em rmiltiplos pragramas. Par exempl o,
voce pode colocar todas as declsracoes de seus dados em urn
i ncl ude, seus eventos em outre, suas sub-retinas em urn terceiro
e suas chamadas para modules de em urn quarto.
o
o
Nao utilize stop, ext t ou checkdentro
de um m6dulo de func;oo. (check e ext t
nee representom problema se estiverem
dentro de um de loop no interior do
m6dulo de func;oo.)
Nao importe vclcreede que voce n60
precise de urnm6dulo de func;oo.
Simplesmente cmitc importoc;6es noo
necess6rios do instruc;oo cal l functi on.
Nao a ltere as coment6rios gerodos pelc
sistema no.porte superior do c6digo.fonte
do m6dulo de func;oo.
Utilize possoge m pa r pore
pardmetros de importOl;fic . Emois
efidente. Tenho cuidado quando
com parametres de exportocdo.
Os volores de pordmetros por referenda
seo clt ercdce imediotomente no
chamada. Se voce alteror parametres de
exportccec antes de emi tir 0 instruc;oo
configurcdo, voce retcrncre , mas as
vclc res j6 terec side olterad os no
progrc mo de chamada.
Oocumerite todos os excecees no
interface de m6dulode func;ooe
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.

Teste
P&R
o
o
Co mo decido se utilizo urn include, uma interna
uma sub-rotina extema OU modulo de para imple-
mentar meu c6di go?
Se. c6digo nao fa.r u:ilizado par nenhum outre programa,
,utIlIze uma su b-rotma mterna. Se 0 c6digo pode ser util para
outros programas, utilize urn m6dula de funliao . Voce nao deve
criar externas . El as 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 que tern uma
proposta esempre opcional.
2. Ve.rdadeira au Tados as parametre s de exportacac sao opcio-
nars.
Exercfcio 1
Utilize a fun<;ao Test dentro da Funct ion Library para testar 0 m6dulo de
fun,ao POPUP_WITH_TABLE_OISPLAY. Depois de te star esse m6dulo de
examine 0 a seguir e fa<;a urn progn6stico do seu comportamento.


Dais tipos de dodos globois podem ser definidos pore um m6dulo de func;oo:
As de dados 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 epersistente entre chama das de modulo de
func;ao.
As defiaicees de dades dentro dainterface sao conhecidas apenas a
partir do m6dulo de funliaO. Se a interface for definida como interface
global, as definicoes de paxametro sao tambem conh ecidas dentro de
todas as sub -retinas que 0 m6dulo de chama. Esse ripe de clados
globais nao epersistente ent re chemadas de m6dul o de funli
ao
.
NOlO...
!ElMO ,.
Depois de conduir este capitulo, voce sera. ca.paz de:
Entender as componentes e a estrutura de urn grupo de
Definir dados globais e dentro de urn grup o de
Definindo dodos globais para m6dulos de

Modularizaicio: modulos
de funicio, Parte 2
form fill tabl e t abl es it 11ke i t.
move- 'Sel ect' to it-data. append it .
move ' One' t o it-data . append it.
move 'Opt10n' to i t - data . append it .
endfonn.
form cal l fm ta bles i t changing result .
call function ' POpup_WmtTABLE_DISPLAY'

endpos col" 30
endpos=row .. 30
startpos_col = 1
startpos _row .. 1
t1tletut .. ' Look Ha, a Wi ndow'
uporti ng
ctctse .. resul t
tl.bles
valuetab .. i t .
endfonn .
report zt x1910.
dat a: 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.
618 ""ND' EM 21 DilS
- ...........
.
.a_

.... ...
620 A'IE",A E' 21 DIASABAP/'
2UDDUURIZA(.iD, .ODULOS DE FUH(AD. PARTE 2 621
Os dados globais definidos dentrc da parte superior de i nc1 ude sao
acessfveis a partir de todos as modules de dentro do grupo. Eles sao
analogos as definil$oes de dadcs globais na parte superior de urn programa em
ABAP/4.
Os parimetros definid os dentro de uma interface global sao acesslveis a
partir decodas assub-retinas chamadas domodulode Elessaoanilagos
is varifveis definidas dentro de uma sub-re tina que uriliza a locals.
Os pa.clmetros defmidos dentro de uma interface local sao inacessiveis a
partir de sub-retinas chamadas do m6dulo de funCiaa. Eles sao analogos as
varisveis definidas dentro de uma sub-retina que utiliza a instruc;:ao data. Por
padrao, as interfacessao locais.
Para tornar global uma interface, a partir da tela Function Module
Change: Import/Export Parameters, escolha 0 caminho de menu Edit-Globa-
lize Parameters . Para toma-la local ncvamente, escclha 0 caminho de menu
Edit-Locilize Parameters.
,.
10 ... f11I ;;;I;2-. --- ----------------
11 cal l functfon 'z TX 2002'
12 expcrtt ng
13 p_i n . parvU n
14 exceptions
15 other s 1.
16 endform.
17
18
is ----------------- - -
20 eau function 'Z TX 2003'
21 irport1ng - -
l2 p_out fl
23 excepti ons
24 others 1.
25 endform.
Dados globais definidos dentrc daparte superior de incl ude sao alocados
quando urn programs faz sua primeira chamada pan qualquer m6dulo de
de urn grupo. Ele permanece alocado, contant o que 0 programa de
chamada ativo. Cada chamada subseqaente para um m6dul o de
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 ainterface global s' o reinicializados
toda vez que 0 m6dulo de fun!jao echamado.
As listagens 20.1 a 20.4 ilustram a persisrenciade dados globais definidos
dentro de urn tapa include.
List agem 20.1 Este progromo ilustrc a persisfencio de dodos globois
1 report zh2001.
2 par ameters pann_1n(l0) defaul t 'XYZ' oblig atory.
3 data fl( 10) val ue ' HUT'

local int erf ace:


EXPORTING
VALUE(' .OUT)
gl IUn.
endf unct fon.
*Local i nt er f ace:
IMPORTl NG_ ".
VALUE(P_I N)
p_out g1.
endf unct 1on.
..---_. ----- --------.-----------------.-------
1 function z_t x_2002.
2 _- __ _
3

5
6
7
8
1 f uncti on z_tx_2003.
2
3

5
6 _
7
8
ENIllDI"' . Ustagem 20.2 Este e0 codigo-fonte do primeiro modulo de fun<;oo
r cha modo do listogem 20. 1
mRADA.... Listagem 20.3 Estee0 codlqo-fc nte do segundo m6dulo de func;oo
'" chomodo de Ustogem20.1
Se um pcreme trc com 0 mesmo nome existe em dois m6dulos de
func;oo dentro de um grupo e as duos interfaces sao globois, as
definic;6es de dodos desses pa rametres devem ser identicos.

5 per f om: cal l _flIlIl ,
6 call _fml3.
7 write: I' tl . ' , fl.
8
- . .. .. .. .. .. .. .. "!II' .. .. .. .. .. __
. - . -- - -- - - - - - -
2UOOUWJZA>\UODUlOS DE FUN>\D, PAmI I 623
APRENDA EM 21 nus lBAPH 622 L:;..::.:.=:.:::.:::..:.::::..:.:::::..:.:.. --/
1 f uncti on-pool ztxb.
2 dat a gl (10) .
Passando uma tabela interna para um modulo
de
Passar uma tabela interne para urn 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-lavia
tables para a mstrut;ao perform.
Via a parte da interface i mporti ng ou changing. A primeira eequiva-
lente a using na instruliao per f orm e a ultima eequivalent e a changing
em perform.
Para retornar uma tab ela interna que se origina de dentr o de urn m6dulo
de funt;io, utilize urn dos seguintes :
A parte da interface tables
A parte da interface exporting
f unction ' Z_TX3 006'
export i ng
i t!
importing
1t2
tab le s
1 report ztx2005.
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 into t able ft _a.
,
7 call
8
9
10
11
12
Se voce utiliza a parte cia int erface tables, pod e passar a tabela intema junta
com a linha de cabecalho. Se ela nao civer uma linha de cabecalho, automati-
camente adquiriri uma dentrc do module de as parametres tabl es
sempre sao passados por referencia.
Para utili zar esse metodo, a panic de Functio n Library Initial Screen,
escolha 0 batao de Table Parameters/Exceptions In terface e enno
pr essione 0 botao Change. ven a tela Paramet ers/ Excepti ons. Na metade
superior cia tela sob a coluna Table Parameters, digit e os names de paramet re s
int ernos da tabela.
Se a tabela interna eurn tipo est ruturado, na coluna Ref. Structure, voce
pode opcionalment e digitar 0 nome de uma estrutura DDIC. Somente os
nomes de estrutura DDIC podem ser inseride s aqui. Se voce nao especificar
uma estrutura DD1C nesse ponte, nao sera capaz de acessar nenhum dos
componentes da tabela intema den tro do m6dulo de funliao. Fazer isso caus ard
urn erro de sintaxe.
Se a esbela interna nao for urn tipo estruturado, voce pode inserir um ripe
de dado do ABAP/4 na colnna Reference Type.
Passando lima ta bela interna via tab] es
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 que voce escolha se pass a 0 corpo interne de tab ela par valor (0
padrao) au por referencia. Quando utilizar 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 t abelas intemas urn m6dulo de
tmADA..... 20.5 Esse prog ramo passe tobelcs internos pore urn m6dulo
r de
Passando uma tobela interno via export; ng/i mpor t t ng
e changi ng
o c6digo nas listagens 20.1 a 20.4 produzem est a saida:
11 XYZ
Na Listagem 20.1, a linha 5 transfere contrale pan alinha 10, e a linha
11 chama 0 modulo de z_t x_2002, que exist e no grup o de
ztxb. 0 valor de pann_in passado para p_in. 0 contrale 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 edefmida na parte 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 modules de desse grupo. 0
controle retoma para a linha 11 da Listagem 20.1.
Na Listage rn 20. 1, a linha 16 transfere 0 controle para a linha 5, depois
para a linha 6 e enta o para a linha19. A linha 20 chama os m6dulos de
de z_tx_2003, que tambem exist em no gropo de ztxb.
o controle etransferido para a linha 1 cia Listagem 20.3.
Na-Listagem 20.3,aIinha 7moveovalorcia variwel globalgl parao_out.
91 ainda contem 0 valor colocado nela pelc m6dulo de ant erior.
o controle rerorna para 0 programa de chamada e 0 valoreescrito.
Listagem 20.4 Este e 0 incl ude superior para 0 grupo de zt xb
- ztxb que ccntern as m6dulos de mostrodos nos listagens 20.2 e
20.3
SAiDA
AHAliSE

t':," .a ... A. A _-.....,-
_ 0-
..,'t:' ........
,-
.. . . . . . --- - - -
- -
624 "RE'DA EI 21 DIA' ABAP/4
20, MDDULlRlZAyiD, llliOUlO5 DE FU.yiD, PARTE 2 625
9 ." IT4 STRUCTURE LFAI
10 It- CHANGING.
11 ... VAlUE(IT3) TYPE TABlE
12 It. --- --- -- -_. _.----- -- -- -. -. - -- -- -- -----
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 .
20 modify it3 fl"Olll wa.
21 endloop.
22 uj tne .
23 write: I ' IT4: '.
24 loop at 1t4.
25 write I it4-11f nr .
26 endl oop.
27 ult ne.
28 1t2[ 1 ,t1[ 1.
29 endfunctio n.
..... ....
i;" -'"..

; "! ...... ....
,
.
. ..
- L__ g;-; ;- x ;, _ ,, - -s

Fi g u r A 20 2
A telaTobIe
Parameters/
Exceptions mastro
como cesser tlma
in/eme junlo
com $UO Iinhe de

13 l t4 it_a
14 changing
15 1<3 it_a[ ]
16 excepti ons
17 others i .
18
19 wr ite: I 'AFTER CAll ',
20 / ' IT_A:' .
21 loop at ft_a into ztxlfal.
22 write I ztxl fa l-l1fnr.
23 endloop.
24 ultne.
25 write / ' IT_B:' .
26 loop at it_b into ztxlfal.
27 write I zt xl fal -l 1fnr.
28 endl oop.
'lo-"..... '... ...-it
,n
m
EMTRIDI.... List agem 20.6 Esse. 0 codlqo-ionte para 0 modulo de func;oo
r chomodo 0 partir do Ustogem 20.5
Porcmelefs mostro
como passor 0 Corpo
do tobelo inlemo.
..
..
o c6digo nas lisragens 20.5 e 20.5 produz esta saida:
It" _ . . _. _. . _
....Local t nterface :
IMPORTING
YALUE{ITl ) TYPE TABLE
EXPORTING
YAlUE(lT2) TYPE TABLE
TABLES
1
2
3
4
5
6
7
8
"
<.
l-
.. .. .""'""'.....
. --.
-
. -
626 APR ENDAEM21 DIASAWl'
,a, MDDUURI2A(lo, M6DUl OS DE fUN(lO. PARTE2 627
SAioA
ANALISE
Ill:
1000
1010
1020
IT4:
1000
1010
1020
AFTER CALL
IT_A:
1
2
3
IT_B:
1000
1010
1020
Na Lisragem 20.5, it_a e it_b sao tabelas intemas sem linhas de
cabecalho.
A linha 5 coloca tres linhas em it_a.
A linha 8 passa 0 ca rpo de ; t _a para i tl por valor, para i t3 por valor
e resulrado, e para 1t 4 per referencia com linha de cabecalho (it4
adquirira uma linha de cabecalhodentro do module de fun,ao).
Listagem 20.6 e dentro do modulode ; t1 e ; t 3 sao c6pias
de ; t _a. A linha 13 define urn area de trabalho wa para
utili zacso com it1 e i t3 porque estas njio tern linhas de cabecalho.
As linhas 15 a 17 escrevem 0 conteudo de it! urilizando a area de
t rab alho wa.
As linhas 18 a 21 modificam 0 conteudo de i t 3. Essa tabe1afoi passada
por valor e resultado, entao 0 conteudo do original sera alterado
quando a instrucao endfuncti on for executada.
As linbas 24 a 26 escrevem 0 conteudo de it4. Note que a linha 25
acessa urn componente de it. Isso s6 epossivel porque a coluna Ref.
Structure na tela Paramet ers/ Exceptions contem 0 nome da estrutu ra
DDIC 1fal. IS50define a estrutura de it dentro do m6dulo de fUnlfaO.
Se acoluna Ref. Structure esnvesse em branco, urn erro de sintaxe t eria
ocorrido na linha 25.
A linha 28 copia 0 conteudc de itl para i t 2.
A linha 29 copia 0 cont eudo de it3 de volta para i t _a no programs de
chamada e 0 controle retorna para a chamada.
Na Listagem 20.5, as linhas 21 a 23 mostram que 0 conteudo de ita
foi alterado pelo m6dulo de fun,ao. -
As linhas 26 a 28 mostram que 0 contecdc de i t_a foi copiado par a
it_b pelo modulo de fun,ao.
Def i ni ndo as sub-rotinas em urn grupo de f un<j oo
Voce pode chamar sub-retinas externas e internes de dent ro m6dulos de
fun l$ao. As chainadas para sub-retinas externas para modules de funljao sao as
mesmas que para relat6rios.As sub-rotinas internas devemser defini das dentro
de urn include especial. 0 F01.
o FOl incluldo no grupo de fun,ao editando 0 programa pri ncipal e
inserindo a instrucac i ncl ude L!gidFOl. Assirn, a aljaOde 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 grupo. Ha,
entretanto, uma maneira mais facil.
A maneira mais facil de definir 0 FO1 e codificar sua chamacia para a
sub-rotina e entfio dar urn clique duplo no nome de sub-retina na inst ruC,jao
perfonn. 0 procedimento a seguir ilustra esse processo .
lnlcie c ScreenCom " Howto Create Subro vtines within a Function Group" agora.
1. Inicie a partir da Function Library: Init ial Screen.
2. Selecione 0 bono de 0piSao Source Code.
3. Pressioae a botao Change. A tela Function Module: Edi t emost rada.
4. Digire uma insrrucao perf orm no c6digo-fonte do modulo de
Por exernplo, perform subl.
5. De urn clique duplo 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 sub-retina.
6. Pressione a botao Yes . A caixa de dialogo Creat e Subroutine aparece.
o nome de sub-rotina aparece no campo de Subroutine. 0 nome do
include l!gtdfOl aparece na caixa Include Choice, e 0 bot so de 0Pljao
aesquerda dele automaticamenre selecionado. .
7. Pressione 0 bono Continue (a maroa de veri ficacao em ver de) . Uma
caixa de dialogo Warning aparece, indicando que 0 programa 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) .
ve a caixa de dialogo Exit Editor indicando que seu codigo-fonte
alterou e perguntando se voce quer salver as aheracoes.
A A A A" a .".a..-............ a .I ....... I I a

628 HRENDA EM, 1 DIAS ABAP /4


9. Pressione 0 batao Yes. A tela Function Module Editor emcstrada.
Voce agora esta.editando 0 FOl . Codifique a sub-retina aqui.
10. Quando tenninar a codificacsc de sua sub-retina, 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
Initial. Escolha 0 batao de 0p/iao Main Programe pressione a batao Change.
Voce veraa telaFunctionModule: Edit . Na parteinferior. apareceraa instru/iao
i ncl ude ljgidfOl. Essa instru/iao foi inserida pelo passo 7 do procediment o
aeima. Se voce dec urn clique duplo nessa linha, veri sua sub-re tina,
Liberandc urn modulo de fun\;oo
MOVO i.:. Afum;60 release odiciono um nlvel de profec;60 ainterface de um m6dulo de
JEiMO r fun.;co protegendo-o de Se tivercompletado o teste de seu m6dulo
de fvn.;oo, voce pede querer libera-/o pora indicor que esegura pora outros desenvclve-
dores utilizor em seu c6digo. Fozendo tssc, bosicomente voce est6 prometendo noo oJterar
os parametres edstentes do interface de nenhu.mo moneira que posso causer problemas
pora quelquer progromo que che me seu m6dulo de fvn o. vccs est6 prometendo
estobilidede de interfoce.
DIA ' U DDtllARllA\AU ODlJlOS DE flJN\AD, /AiTE, , 629
mensagem Function module has been r el eased t ambe m aparecera na part e
inferior da janela. Entretanro, se quiser alt erar a interface, voce s6 precisara
pressionar a bo rac Display Change 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 t erminem anormalment e ou
resultem em resultados di feren tes.
Se voce addentolmente liberor um m6dulo de fun.;ao e quiser cancelar
a liberot;60, v6 pam 0 tela Fundi on Module Display: Administration,
pressione 0 bottio Display Change e escclho 0 cominho de menu
Function Module-Release-Cancel Releose. Depcis de escolher esse
cominho de menu, pressione e tede Enter para comp leter 0 processo
de cance!omento.
Testando urn mOdulo de fun\;oo
Se voce quiser testar urn m6dulo de sem escrever urn programa
ABAP/4. voce pede faze-Ic utilizando 0 ambiente de t est e dentr o daFunccion
Library. Utilize 0 seguinte pr ocedimento para acessar 0 amb ience de teste.
Por exemplo, depois de liberar urn modulo de voce nao adicio-
Daria urn parameero obrigarorio, DaO alt eraria as propostas e nem removeria
urn pargmetro. Caso conrrario, quaisquer chamada.s existentes para seu m6dulo
de fum;ao poderiam falhar ou funcionar de maneira diferente.
Depois de liberar, voce aindapo de alt erar a interface, mas precisa dar urn
passo extra para faze lo.
Para liberar urn rn6dulo de utilize 0 seguint e procedimento.
lnicle a "How to Releose a Function Module- ogoro .
1. Comece na Function Library Initial Screen.
2. Escolha 0 bono de Administration.
3. Pressione 0 borso Change. A tela Function Module Change: Admi-
nistration mostrada. No canto inferior direita cia tela, na part e
inferior da caixa Ge neral Da ta, voce veri Not Rel eased.
4. Escolha 0 caminho de menu Functi on Modul eRelease-Release. A
mensa gem Released aparece na parte inferior da jan ela na barra de
status. Na extremidade inferior direita da janela, Not Released muda
para Customer Release On e seguida pela data atual.
Se voce tentar alt erar a int erface depois que 0 m6duJo de funljao foi
liberado, as campos de entrada. na t ela de interface est ario acinzentados. A
SCiHNWI.... Inide 0 ScreenCom "Howto Use the Test Environmenf for Function Modules"
,. ago ra. - --.
1. Comece na Function Library: Initial Screen. Digire 0 nome do
m6 dulo de que voce quer test ae no campo Fun ction Module.
2 Pressione 0 borao Test, Yoce veri a tela Test Environment For
Function Modules (mom ada na Figura 20,3).
3. Digite os parametres que voce quer fornecer para 0 t est e. Para.
preencher uma tabela intema, de urn clique duplo no nome interne
de tabela. Vma t ela sed most rada, permitindo que voce digi te as
dados na tabela intema. (Se voce especificou uma Ref. Structure para
a tabela intema, as colunas da. est rutura serro mostradas.}Di gite seus
dados e pres sione a teela Enter. Voce voltara para a t ela Test Environ-
ment For Function Modules.
4. Pressione 0 batao Execut e na barra de ferramentas Application para
execti t ar a m6dulo de Vo ce veti Tes t Function Module:
Result Scr een (veja a Figura 20.4) . A safda de wri te dentro
do m6 dulo de func;ao aparece primeiro. Na Figura 2004. You passed
Aea resultado de uma inStrUl;ao wri t e denn o do m6dulo de
Entao, a t empo gasto para executar a m6dulo de (em mi-
cross egundos ) emostra do. Em seguicia, os valor es dos parametros
sao mostrados e t ern dois valores: a de ant es e depois. Para parametrOS
changi ng, a valor "'ant es" mos trado primeiro e 0 valor "'depois
..............
630 APiEM DA EM21 DIA5ABAP"
-- - =
-
DIJ. 2UDDUWIll>'. d'ODIlOSDE FUM>" , '.uTE2 631
aparece embaixo dele. Para parametres tabl es, as conreedos "depois"
aparecem acima dos cccteudos "ant es" (original). Na Figu ra 20.4, a
tabela interna i t cootinha duas linhas depois do protessamento e trSs
linhas antes . Para ver as conteudcs ant es ou depois cia tabe la intema,
de urn clique duplo em qualquer linha,
Perc sclvor seus dodos de teste e/ ou resultados, pressione po'botOo Save
no tela Test Environment ou no tela Result. Para recuperor sues
lnfcrmccces salvos, pressione 0 bctec Test Data Directory em quolquer
tela . As seqaenc lcs de teste tcmbem podem se r ccos trurdc s utilizondo
o bctoc Test Sequence. .
Figura 20 3
A telaTest
Environment lor
FunctionModules.
Figura 20 4
A kla Test FundiOfl
Module: Result
mostro os yo/ores
a ntes e depo is pam
os pal'6metros
changinge
t ables.
Localizando m6dulos de fun<;Cio existent es
Co mo mencionado antericrmente, a SAP forne ce mais de 5.000 gropos de
preexistentes , contendo mais de 30.000 m6dulos de fun 'iao. Frequen-
tement e, a funcionalidade que voce exige ji eabracgida per esses m6dulos de
funfiao fomeeidos pela SAP - s6 eprecise localizar 0 correro. Para achar urn
modul e de existence, utilize 0 sistema Reposit ory Informati on. 0
seguinte procedimento the mos tra como fazer isso.
lnicie 0 ScreenCom "Hewto Search for Function Modules oqom.
I. D. tela AJ3AP/ 4 Development Workbench, escclha 0 caminho de
menu Overview -> Repository Infosys. Voce ve a tela ABAP/4
Repository Inf ormation System mostrada na Figura 20.5.
Figura 20 5
Ate/o1VJ.4P/4
Repository
Infetrnotion System
como oporece
in;ciolmente.
2. Expanda a linha Programming dandc urn clique no sinal de .di,ao
(+) aesquerda dela. Urna subirvore emo strada embaixo dela.
632 I APREMOAEM21 DIAl A'AP!'
Figura 20 6
A tela ABN'/4
Reposjtoly
Information System:
Function Module
com os m6dulos de
UnCiao expostos.
3. Expanda a linha Function Libra ry clicando no sinal de a d i ~ a o (+) a
esquerda dela. Urna subarvore emostrada embaixo dela. Sua tela agora
deve se parecer com a Figura 20.6.
4. De urn clique duplo na linha Function Modules. A t ela ABAP/ 4
Repository Information System: Function Module emosrrada. Pr es.
sione o ba tao All Selections na barra de [erramenras Applicat ion para
exibir todos as possfveis campos de selecao. Sua tela agora deve
aparecer como mostrado na Figura 20.7. Essa euma tela de selecac
em que vocepede inserir criteri os de pesquisa para localizar modules
de fun;ao. Todos as campos ndc diferenciam maiasculas e minriscu-
las, com a excecic do campo Short Description, que diferencia caixas
altas e baixas!
5. Para pesquisar urn m6dulo de fun<;ao, tant o palavras como st rings de
caracteres podem ser inseridas nos campos de pesquisa. Utilize +e Ie
como caracteres curinga. +correspondeda qualquer caract er e uni co,
e I;' correspondera a qualquer sequencia de caract eres. Par exemplo,
digi te *DATE* no campo Function Module. Isso Iocalizara t odos os
m6dulos de fun<;ao que contem os caracreres DATEem qualquer 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. Para digitar mais de urn valor para pes quisar, pressione a seta no fim
do campo. A tela Multiple Selection emos trada (veja a Fi gura 20.8).
a s valores que voce digit a nessa tela devem ser separados pa r OR.
~
l
I
,
Dl A211: MOOULARIZAtA0: MOOUlOS DEfUHtAO, PARTt z I 633
Digit e multiples crit erics de selecac aqui. Esses valor es sao conheci-
dos como os valor es inclufdos, au simplesmente "includes". (Esse e
urn usa di fer ente do. t ermo quando nos referimos a programas in-
clude.)
Eigura 20 7
Atela AA4P/4
Repasitofy
InformationSystem:
Function Module
camrcccs cs
seler;oes mastrados.
7. Pressione a batao Options para especificar operadores de sele<;ao
como igual, difer ent e, maior que, menor que e assim par diante. Voce
vera a te la Maintain Select ion Optio ns, como mostrado na Figura
20.9. Para ser capaz de espe cificar Patt ern or Exclude Pattern, seu
valor deve canter urn caracte re coinci dence com 0 padrao: tanto +
como ". Pressione 0 ba tao Copy para retomar para a tela Multiple
Selection.
8. Na t ela Mult iple Selection, pr essione 0 botao Complex Selection. A
tel a Mult iple Selection emostrada novament e, mas dessa vez ha uma
barra de ro lagem no lado direito e as campos Ranges aparecem (veja
a Figura 20.10) . Para especificar valores que deverac ser exclufdos cia
pesqui sa, rol e para baixo e as digi re dentro da caixa intitulada ...But
N ot (veja a Figura 20.11) . Esses valores sao conhecidos como valores
excluldos ou, simpl esmente, excludes.
A& A AA AA AA A
..-.............................
634 , "fUND'" EM21 el..,s AUP/4
Figu ra 20 8
Atela Multiple
Selection.
."
Figura 20 11
Aceee ...&11Not.
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
9. Pressione 0 batao Copy para capiar seus criterios de selctjao de volta
para a tela de sele>io. Voce vol t t el. ABAP/4 Reposit ory Informs-
tion System e, se voce inseriu mdlripl cs criterios de 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 telaABAP/ 4
Rep05itory
/nfonnationSystem.
A seta verde no fim
do linha m05tro que
mais de urncriteria
de seJe o existe.
Figura '0 10
Atela Multiple
Selection com umo
barre de roJogem no
Iodo direffo e
camposRanges.
Fig ur g 20 9
A Maintoin
Selection Options.
Nem tcdcs cs porametros tern doccmentocoo odicionol. Se 0
pcremetrc em que voc! deu um clique duplo 000 fiver mois doccmen-
tao, nodo ocontecer6 quondo voca der um clique duplo nele.
Figura 20 1 ,
A
odidonol para urn
pani metro.
F i gura 20 1 4
A tela Function
Module Display:
Documentation.
DIA 20, MOOUlAlJ2A(.iO, MODUl.Ol DE ru""D, PArTE I I 637
AA a A& A ...-'ll&.A& a & III!-
4!
as resultados OR. Emao, se a exclusac for especificada, eles serfo
aplicados em uma entrada depois da outra. Por exemplo, no campo
Short Description. sup6e-se que voce tenha especificado as inclusoes
"Date"e"date" e"Update" e"update",Todasas descricoes que contem
"Date" serso lccalizadas, e entac todas as descricces que contenham
"date" serac OR junto do primeiro conjunto de resultado: Logo. todas
as descricces que contenham "Update" sersc removidas e enuc codas
aquelas contendo "update" serfo removidas. 0 result ado conrera
st rings "Date" au "date" scm "Update" e "update". Voce vera as
resultados na tela Function Modules (veja a Figu ra 20.13). 0 numero
de m6dulo s de un,;:o localizado e indicado na barra de titulo a
esquerda dele entre parenteses.
11. Para exibir urn m6duIo de func;ao, de urn clique duplo nele. A tela
Function Module Display: Documentation emostrada (veja aFigura
20.14). Essa tela mcstra avoce 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 bon o Back.Para retornar alista
de modulo de funliao, pressione 0 botao Back novament e.
12. Para testar urnrn6dulo de funliao, coloqueseucursor nele e pressione
o batao Test/Execute. Vocevera aTest Environment Screen paraesse
m6duIo de fun,;:n.
Figura 20 13
A Fundion
Modules.
636 APlENDA EM11 DIAl ASAP"

... A.
'.
638 APREN" EM 21 eus
Se, quando voce olhc r no barre de titulo no tela Function Modules, 0
ncrnerc de m6dulos de fvnc;oo encontrodo for exotomente 500,
prcvcvelmente tera ccesscdo 0 tomanho m6ximode listc. Retome pam
a tela de seler;aoe procure no compo Maximum No. of Hits. Se elefor
fombem de 500, voce estero acessondo 0 m6ximo. Voce pode ester
tenfondo oumentar 0 numerc maximo de ccessc, mas ;550 roromente
sem produtivo, porque voce provovelmente noo !ere urno listc inteiro
de 500 m6dulos de funr;60. Refine seus criterics de pesquiso para
reduzir a nCrmero de ocesso.
Explorando OS componentes do seu grupo de

Depois de criar seu primeiro m6dulo de utilize 0 seguinte procedi-
mento e gastc alguns minutos para explorar as componente s do gropo de
func;ao. Voce deve se familiarizar coma estrutura que acabou de criar.

PIA 2UDDULlRIlA(AD,MODUlDS DEfUN\iO. PARTE 2 I 639
Figura 2 16
Esse e0 modo como
(:I tela Function
Module Creote:
Administration
oporece depaisque
o m6du/ode fvno
foj criodo.
lnlciea 5creenComMExploring the Components ofYour FunctionGroup ogoro.
1. Comece na Function Library Initial Screen. Se jaeac estiver af digire
o nome de seu m6dulo de no campo Function Module.
2. Escolha 0 botao de Administration e entao pressione a batao
Change. A tela Function Module Change: Administration eexibida
(veja a Figura 20.16). Na parte superior da tela, no C:iUIlpO Function
Group, voce pede ver 0 ID do grupo de funr;ao a que esse m6dulo de
pertence. Na extremidade inferior direita no campo Program,
voce pode ver 0 nome do programaprincipal para 0 grupo de funr;ao.
No campo Include esta 0 nome do incl ude que conrem 0 codigc-
fonte para a m6dulo de 0 ultimo campo mosrra 0 status do
m6dulo de Active au Inactive. Pressione 0 botao Back para
retornar para a tela Function Library Initial .
3. Escolha 0 bono de Import/Export Parameter Interface e entac
pressione a batao Change. A tela Import/Export Paramete rs e
mostrada. Pressione a bone Back para retorn ar a tela Function
Library Initi al.
4. Escalha a batao de Table Parameters/Exceptions Interface e
entaDpressione 0 batao Change. A tela Function Module Change:
Parameters/ Exceptions emcstrada. Aqui voce pode inserir au alterar
parametres internes de tabelae names de Pressione 0 bono
Back para retomar.
5. Escolha 0 borso de Documentation e eneac pressione a batao
Change. A tela Function Module Change: Documentation e
mosrrada. Aqui voce pode inserir uma descricac curta para cada
parfmetro e excec;ao na interface. Pressione 0 batao Back para retor-
nar.
6. Escolha a botao de Source Code e entia pressione 0 botao
Change. A tela Function Module: Edit emosrrada. Pressione 0 botao
Back para retomar.
7. Escolha 0 batao de Global Data e entac pressione 0 batao
Change. A t ela Functi on Module: Edit e mosrrada. Dessa 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, ondefgide 0 nome de seu grupo de func;ao. Aqui
voce pode definir varisveis globais e areas de trabalbo tables que sao
comuns a todos as m6duJos de dentro do gropo de funr;ao. Se
seus modules de utilizam a instrucdo message. voce tambem
pode definir a classe pednc de mensagem [na instrucao f unctf on-
pool). 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 comeca com sap1 seguido par seu ID
de grupo de As duas instruc;6es i nclude 0 in-
cl udesuperior e 0 UXX no progr.amaprinci pal. Dar clique.duplo
no nome i nclude superior permitid que voce a edire, Pressione 0
..&...JL I I I
_ .......L..A......._
640 APR ENDA EM21 DIAl ABAP" DlA2UDDU,","UIAD, MODULOI DE FUNIAD. PARTE 2 641
raising mess age
U
ili . _. sair do m6dulo de fun,ao e configure 0 valor de
t ze a mstrucac rat se para ....
sy-s ubrc no retorno.
Utilizando a instru(; fi o r aj se
Denerc dessa caixa de diilogo SAP R/3 estio as informacoes
para descobrir a posi 'iao exata e a causa do erro. N a Figura 20.18, 0 pnmclro
campo concern 0 nome de programa 1ztxau02. Esse e0 programa que
contem 0 erro. 0 segundo campo diz a voce que 0 errc ocorreu na linha 10.
Na parte inferior cia caixa de dialogo esta 0 erro real. Nesse case, 0 erro Ie .
expected after P2-. .
Para corrigir 0 erro, utilize a seguinte procedimentc.
... lnicie a ScreenCom -Howto 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 primeiro campo
da caixa de diilogo, nesse case Iztxau02.
3. Pressione 0 batao Change. Is50 mostrara 0 c6digo-font e de modulo
de fuoc;ao que contem 0 erro.
4. Pressione 0 bone Check na berra de ferramentas APplicad tion,,Vodee
deve ver a mesmo erro que foi most rado na parte inferior a caixa e
dialogc SAP R13. .
5. Corrija 0 erro. Fr equentemenre, voce pede presslOnar
a borac Cor rect e a sistema aut omaticamente corrigtra 0 err o para
voce.
Confi gurando 0 valor de sy-subrc no retorno
Normalmenre depois de retornar de urn m6dulo de fuoiSaO, 0 SIstema. auto-
maticament e 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
Fig u r a 20 1 B
Um errode sinloxe
detedocJ em tempode
ellKUo dentrode
um m6dulode fum;60.
Pora copter, renomear au excluir urn m6dulo de utilize as
bot6es Copy, Rename, a u Delete no Fundion li brary: lnltlcl Screen.
ttl ! ,pc 11 BriE "'iflil '''''

V II
"J 11 .); .. if . .. '9i.1Iti;o .... .......... :w-...
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 m6dulos de funCiaO no grupo. Seus
nomes sao indicados dentro de comenedricsno fimde cada instruci o
i ncl ude. Voce nio tern permi ssao para modificar 0 UXX. Dar urn
clique duplo em quaisquer das instrucoes i ncl ude exibira 0 codigc-
foot e para urnmodule de dentro do grupo. Pressione 0 botio
Back para retornar. .
A ma neira mais faeil de corrigir en-os ern urn m6dulo de eexecu tar uma
de sintaxe quando voce estiver dentro do m6dulo de func;aa. Voce
pede fazer isso n.atela 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, depois de criar muit os m6dulos de voce pede termi -
nar na situaljio em que esta, chamando urn au mais m6dulos de func;ao dentr o
deurn grupo, com0 sistema dizendc avoce que hi.urnerro desintaxe emalgum
lugar. AmensagemdeeITO que talvezvocevejaapareceemuma caixadedidlogo
SAP R/ 3 como a mcstrada na Figura 20.18.
Flgurq 20 1 7
4 a progromo
principal pore 0
m6dvlo defun"
z_tx_dfv.
Locali zando e corrigindo erros em modules de
f un!;oo
642 APRENDA EM 21 DIAl ABUII
2'1. DE FUNIAD. 'AilE2 643
Na Listagem 20.7, a linha -4 pega 0 valor de parm_i n e 0 passa para 0
rn6dulo de z_t x_2007. 0 controle etransferido pua a linha 1
da Lisragem20.8.
Na Listagem 20.8. a linha 14 atribui urn valor para 0 paramerro pout .
Esse parimetro epassado por valor. entao a eapenas para a
local de pout. 0 original ainda n' o loi modificado.
Na Listagem 20.8, a linha 15 examine 0 valor passadc via a parametro
exname. 0 valor eB, entao a linha 17 - raise error_b - eexecutada.
o controle etransferido para a linha 9 da List agem 20.7. Como a
oc6d.igo nas lisrageas 20.7 e 20.8 produzirf esta salda, se voce especificar
urn valor de Apara pann_in:
sy-subrc 1
vout INIT
9 exceptions
10 er ror_a - 1
11 error_b 4
12 eTTOr_c - 4
13 othe rs 99.
14 write: I ' sy-subrt - ", sy-su brc,
15 I I vout - ", vout.
U.lagem 20.8 Isla ea m6dula de chomoda do Listogem20.7
1 function z_tx_2.0oa.
2 - -- -- --- -----. ----- ------- -----.--- -- -- -- -- ---- -,--
3 " "local i nt er f ace:
4 IMPORTING
5 .a VAlUE(EXNAME)
6 EXPORTI NG
7 VAl UE(POUT)
8 EXCEPTIONS
9 ERROR_A
10 ." ERROR_B
11 ERROR_C
12 ERROftX
13 -- -.- - - - - . - - - - --------------- - --- - ---- - - -- ----- - --. ------.
14 pout 'XXX'.
15 case exname.
16 when ' A' . r ai se error_a.
17 when 'B'. ra ise error_b.
lB when .' C'. r aise error_c.
19 when 'X'. ra ise error_x .
20 enecese.
21 endfunction.
...... . .. . . . . . . . . . . - . .
coli function I fundion Z_XlOI. .
exceptions
error_A 1 raise error_b.
error_B = 2+- este valor e .
other ... 3 otribuldo a endfundron.
sy-svbrc
9 c6digo no m6dulo de mostrodo no listogem 20.8 emere-
mente pora fins de exemplo; normolmente tc rnbern haveria um c6digo
que Haesse olgum process omento real of tcrnbem.
onde:
xnume e0 nome cia excecso a serconfigurada.
Os seguintes pont e s se aplicam:
xname ped e ser qualquer nome que voce tenha composto, ElaDaD [em
de ser pr eviamente definida em qualquer lugar. Ela pede ter ate 30
caracter es de comprimento . Todos as caracteres sao permitidos, ex-
ceeo" ". e :.
Sintaxe para a r a'i se
A seguint e ea sintaxe para a instruc;ao raise.
raise xname .
-Nao coloque xnane dentro de aspas.
xname DaO pade ser uma variavel,
Quando r at se eexecutada, 0 contrale retorna imediatamente
para a ce11 function e urn valor eatribuido a sy-subrc baseado nas
excecoes que voce listou af. Os valores 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 Figura 20.19 ilustram como isso acontece.
CIl
-
Z
S
m
T
1 report ztx2.007.
2. parameten panrL1n defa ult 'A'.
3 data vout(4) value ' I NIT' .
4 call funct ion 'Z_TX_ZOOB '
5 exporting
6 exname pann in
7 importing -
a pout. vout
EHTUDAlrItrr... Ust agem 20.7 Como configura r 0 vclcr de sy- subr-c 0 partir do interi or
". de urn m6dulo de fum;co .
F igura 20 19
Iste ilustro0
processomento do
raise.
A. A .- . . . . . . ... . _ ... ..... .-........
it.., .
"''''','''' .....
'"
. . -- - - - - - - -
644 APiEHDA EM 21 DIAS ABAP'1
instrucio ra i se foi executada, 0 valor de pout nio foi copiado de volta
para 0 programs de chamada, assim 0 valor de vout nio sera alterado.
Na Lisragem20.7, 0 sistema varreas linhas 10a 13:lte elelocalizaruma
correspondencia para. a excer;ao identificada pela instrucio ra i se
recem-executada. Nesse case, ele esti procurando error b. A linha 11
corresponde ao erro. -
Na linha 11, 0 valor no lade direito do operador de igual eatribuldc 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 Listagem 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.
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 umdump curto que tern0 errc
de tempo de execu<;oo RAISE_EXCEPTION.
. Se urn parimetro de exponac?o fai passadc par 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 parfmerrc 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 e, se uma ins trucac rai se for executada, 0 valor alt erado me e
copiado de volta para 0 programa de chamada.
check, exit e stop tern 0 rnesrno efeito que m6dulos de em
sub-retinos extemos. Entretanto, eles nao devemser 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.
Ut iliza ndo a instruIYiia message ... rai si ng
instt11C;io message. . . raisi ng t ern dois modos de operaliao:
Se a exceliaOnomeada depois de r ai si ng nao for tratada pela instruc;ao
call f unct i one others nae ecodificada, umamensagem eemitida para
o usuari o.
Ul
-
Z

..
Se a excec;ao identificada depois de r-atsing for tratada pela instroc;ao
call function, uma mensagem nac eemitida para 0 usudrio. 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.
Sinlaxe para a message .. raising
A sintaxe para a message . . . rais ing ea seguinte:
message tnnn{cc) [with vl '/2 .J raising xncne
onde:
teo tipo da mensagem (e, w, 1, s, a au x).
nnn e0 nutnero da mensagem.
(ee) ea c1asse da mensagem.
'11 e '/2 sao os valores a serem digitados no texto cia mensagem.
xname e0 nome cia excec;ao a ser configurada.
o seguintes pontes se aplicam:
xnome eurn nome de excecac como descrito para a instruliao ra 1se.
Se a classe de mensagem nao estiver especificada aqui, ela deve ser
especificada na inStnl'ii0 functi on-poo l no i ncl ude superior pan 0
grupo de func;io via a message-id.
As seguintes varidveis sy sao confi guradas:" sy-msqf d, sy- msgt y,
sy-msqno e sy-msgvl par Estas podem ser examinadas dentrc
do programa de chamada (depois do retorno).
Quando a instrugao message . . rai sing eexecutada, 0 luxo do cont 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 confi gurados. a s vale-
res de exportac;6es pass ados por nao serio ret omados.
Se a candi<;ao naa far t ratada pelo chamador, e para tipos de mensagem
e, we a, 0 m6dulo de fun<;ao sofre saida e 0 programa de chamada 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 qual 0 programa
foi chamado.
Se a nao foi tratada pelo chamado!, nem para 0 t ipo de
mensagem i , a mensagem sera exibida para 0 usuario em uma eaixa de
z vcut
.. vcut ,
20, MDDUURlU"D, M6DUlDS DEFUN" D, pure 2 647
o c6digo-fonte perc 0 m6dulo de funlioo chomodo "do

pout
exceptt ens
l!!!rror_e - 1
error_w ., 2
error_i - 3
er ror_s - 4
error_a - 5
er ror_x = 6
others - 7.
endfonn.
23
2'
25
26
27
28
29
3D
31
32
33
34
35 .:_---..,.,.----,--,....,-.,.--==== _
36 tOT"lll ca1l _and_dont _hand1e_excepti on.
37 call funct ion ' Z_TX_2010'
38 expert! ng
39 msgtype z p_et ype
40 importi ng
41 pout
42 endfol"ll.
ENIRADI" L.istagem 20.10
,. Llstcqem 20.9
dialogo. Quando a usudric pressiona a tecla Enter, 0 controle ret oma
para 0 m6dulo de na instrufj3.0 seguindo a instrufjaq message.
o m6dulo de continua processando e, na endf unc-
t fcn, 0 cont role ret oma para 0 programa de chamada. Os valores ells
variaveis sy-msg SaOconfigurados eos valores de expc rt acoes pass ados
por valor sao retornados.
S7a condicaoIlio for tratada pelo chamador, e para ripe de mensagem
s, a mensagem sed armazenada em uma area de sistema. 0 controle
continua dentrc do m6dulo de na seguin te ainstrucac
message. 0 modulo de func;ao continua processando e, na instrucio
endfuncttcn;o centrale retoma para0 programa de chamada. as valores
das variiveis sy-msg sao configurados e os valores de exportacoes
passados por valor sao retomados. Quando a lista eexibida, a men-
sagem aparece na barra de Status na parte inferior da lista,
Seacondicaonjiofoi tratada pelochamador, e para 0 ripo de mensagem
x, 0 m6dul o de sofrera safda e 0 programa de chamada e
terminado imediatamente. Urn dump CUrto egerado e eexibido para
o usudrio.
As listagens 20.9 e 20.10 ilustram 0 efeieo cia instrufj3.0 message . .
raising.
APRENDA EM21 DIAS ABAP/4
" t nsf re os t 1pos de mensagem E WI S AX
"se Y. trate a excet;lo
L1stagem 20.9 Utilizando a message .. . raising
1 repor-t ztx2009.
2par amet!rs : P_!tyP! default 'E' .
3 p_handl e def ault 'Y' .
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-msgty.
14 / ' sy-ms9i d'.
15 / ' sy-msgno' . sY-lllSgno.
16 / ' sy-msgvl' . sy-msgvl.
17
18 . _ ---..,:--,-,---::__,..,- _
19 form call_and_hand1l!!!_except 10n.
. 20 call function ' Z_TX_20IO'
21 export ing
22 msgtype - p_l!!! t ype.
1 f unct10n z_tx_2010:-
2 --- ---_. -------- -- -------- - - ._-. -- - -- ---- - ---
3 ""-local interface:
4 ... . IMPORTING
5 "" VALUE(MSGTYPE)
6 EXPORTING
7 ." VALUE(POUT)
EXCEPTIOtiS
9 . " ERROR_E
10 ERROR_W
11 ERROR_I
12 ERROR_S
13 .. ERROR_A
14 .- ERROR_X
15 --- -- ---- -- -- -- ------.----- -------------. -- --- -- - -.--- - ------
16 pout .. ' XXX' .
17 case msgt ype.
18 whl!!! n 'E'. message e991(zz) with ' Error E' rai sing er ror_e .
19 when 'W' . message e992(zz) with ' Error W' raisi ng error_w.
20 when '1 '. message e993(zz) wit h ' Erro r I' rats i ng l!!! rror_i .
21 when'S'. message e994(zz) wi t h 'Error S' r ai sing error_s o
22 when ' A'. message e995(zz) with ' Error A' rais i ng l!!!rror_a .
23 when 'X'. message e996(zz) with 'Error X' raising l!!!rrOT_x.
24 eeeeese,
25 l!!! ndf unct 1on.
SAiDA ~
AMius! ~
A A A
648 AmHOA EM21 OIA' ABAP"
Utilizando as vslores de parfrnetro padrao, 0 c6digo nas listagens 20.9 e
20. 10 produz est a saida:
sy- subrc 1
you! INlT
sy msgt y E
sy-msgid ZZ
sy-msgno 991
sy-msgvl Er r or E
Na Liscagem 20.9, qu ando se utiliza as valores padrac para a lllilia 6
as pardmetros sao verdadeiros, enno 0 con rrcle etransferidc para a
sub-retina call_and_handl e_exception.
A linha 20 transfer e controle 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 edefinido 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 everdadeira e a inst rucac mes sage .. .
ra i 5i n9 eexecu tada. Is50 aciona a excefjao error_e.
A excefj ao er r or_e e tratada pelo programa de chamada, entaa a
mensagem ndo eexi bida pan. 0 usuario. 0 controle ret orna para a linha
25 cia List agem 20.9. 0 valor de vout nao ~ alteradc; as variweis sy- msq
sao atribufdas a vaIores.
Na Listagem 20.9, a linha 26 atribui 1 para sy- subrc.
A linha 33 ret orna 0 controls para a linha 11 e os valores sao escritos.
Tente executar 0 programa em ztx2009. Especificandc urn valor p handl e
de N, voce vera as mensagens de erro produzidas. -
Definindo excec;6es no interface
Sempre que voc e configura uma e x c e ~ a o em urn m6dulo de funljao, voce
deve document ar esse nome na interface do m6dulo de fuotjao. Os nomes de
eXCeljao tambem aparecerao auromaticament e na parte superior do fonte do
m6dulo de fun ljio dentro dos comentdrios gerados pelo sist ema. 0 seguinre
procedimento des creve como documentar suas excecees.
SCRHHOMltrr.. lnicie a ;creenCam "How to Document Exceptions in the Function Module
~ Interface agora.
1. Come ce na Function Library: I nitial Screen.
Z. Digite seu nome de m6dulo de fuoljao no campo Function Module
se ele janao est iver af.
3. Esc olha 0 batao de 0pljao Table Parameters/Exceptions Interface.
. .. . . . . -- - - - - -- - - - -
OL\ 21> MOOUl.lRlll(.io, .60ULO' DE FU'\AO. PAm2 649
4. Pressione 0 botio Change. A tela Function Module Change: Table
Parameters /Exceptions ~ exibida.
5. Na metade inferior cia tela, na seljio Exceptions , digiee os names das
excecoes que aparecem no codi go-fonre do m6dulo de fuoljao.
6. Pressione 0 botac Save e 0 bot ao Back. Voce volta a tela inicial
Function Library.
Inserindo automaticamente a insrrucco ca11
functjon
Emvez de digital a insrrucio call f unct ion em Sell c6digo -fo nte, 0 sistema
aut omat icament e pode gera-la para voce . Quando voce faz dessa maneira, os
nome s de e x c e ~ a o que voce document ou na interface serso automaticamente
inseridos em seu c6digo tambem.
IIlrrr... lnkle 0 ScreenCom "How to Insert a call fund ion Statement into Your ABAP/4
SCREENCAU" Progrom" cqcrc.
Para ver os efei tos de sua documentacio de excetjaol erie UJ;11 programa
de ABAP/4. Em vez de codificar dapr6pria instrucao cal l fu nct i on, util ize
o seguint e procedimeoto para genr automaticamente a instrucao call func-
t f on :
1. Comece na tela AEAP/ 4 Edi tor: Edit Program.
2. Posicione seu cursor dentro do c6di go- font e na Iinh.a depais da
primeira onde voce quer que a instrufiao cal l functi on apareca.
3. Pressione 0 botao Pattern na barre de [erramentas Applic ation. A
caixa de diilogo Insert Stat ement aparece.
4. 0 batao de 0pljao Ca ll Function jaestaria escolhido. Se njio estiver,
selecione-o.
5. Digite 0 nome de seu m6dulo de funr;ao no campo de entrada adireita
de Call Function.
6. Pressione 0 batao Continue (a marca de verificaljio verde). Voce
vol ta atela Edi t Program. Urna instrucio 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 voce identificou na int erface
aparecerao. Se um parametro estiver marcado como opcional na
interface, ele sera comentad o e 0 valor padrac aparecera adi reita dele .
7. Preencha os valores adire it a do s sinais de igual. Sinea-se livre para
alterar 0 codigo au remover quaisquer linhas qu e se seguem a d i ~ a o
importi n9 se voce Dia precisar desses valores de ret orn o.
650 AP IENDAEll 21 OIAS ABAPI4
Umo d6usulo importi ngvazioccusc umerrc de sintoxe. Se nOohewer
nenhu m nome de pordmetro seguindo a polovro importing, ou se
todos elesfor em ccmen tcdcs.vcce deve remover a po lovrnimporti ng.
o mesmo tcmbern everdodeiro para 0
Resumo
D1A1D, MOouURll.l(.lO, M6oULOS OER,">,O, PARTE , 651
_
o Workshop oferece duas maneiras de voce verifica.r 0 que aprendeu oeste
capitulo. A se!jio Teste ofereee perguntas para. ajudar a salidifica.rseu entendi-
memo do contecdo aborda.do e a sec;ioExercicio permite que voce pratique 0
que aprendeu. Voce pode encantrar as respostas is perguntaS do Teste e aos
exercfcios no Apendice B, "Respostas as perguntas e aos exercfcios".
As varidveis globais podem ser definidas em dois niveis. Quando
definidas no i ncl ude superior, elas sao globais para todos os module s
de fun'iao dentro do gropo e Iembram de seus valores ent re chamadas
a m6dulos de fun'iao dentro do grupo, contanto que 0 programa de
chamadacontinue a executar. Globalizando a interface, 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 saocodificadas
DO include FoI.
Os m6dulas de fun'iio podem ser Iiberados pan. denotar que a inter-
face 6 eseavel e nenhuma altera'iio significativa sed feita para ela,
POrt"" 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 existentes podem ser localizados com a ajuda de
Repository Information Syst em.
P&R
o
o
Par que voce passari a urn panimetro de importacdo par referen-
cia? Se voce especificar que as parimetros de irnportagao e de
exportacao devem ser passados par referencia, eles nio serio os
mesmos ? Por que exist e 2 capacidade de fazer isso?
Vma passagem por referencia e mais eficiente que uma pas-
sagem por valor. Voce deve util iza-la para eficiencia. Entre-
tanto, as palavra s Import e-Export oferecem documentacio
importancereference ao papel que cada parjimetro desempenha
dentro do modu lo de Voce nao deve alte rar parametres
Imp ort. des sempre devem ser passados sem alt era!ii o pela
m6dulo de Tarnpouco voce deve aceitar valores no
m6dul o de fun!iaovi aparfmerros Export . O valor de urn Expor t
sempre deve se originar dentro do m6dul o de fun'iao.
Teste
1. Seurn pargmetro de mesmo nome exiseeem dois m6dulos de funC;io
dentro de um gropo e as duas interfaces sio globais, as definicoes de
dados de dois desses pargmetros devem ser identicas?
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 DaOcodifica others e uma excectc econfigurada dentro do
m6dulo de fun'iao que nao foi nomeada na except i ons, 0 que
acontece?
4. CheCK, exi t e stop tern 0 mesmo efeito com m6dulos de func;ao que
tern nas sub-retinas externas. Eles devem ser utilizados denrr o de
m6dulos de fun,aol
Exercici o 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 Funct ion Library: Initial Screen.)
21
Telas de selelGO
Objetivos do capitulo
Depois de completar este capitul o, vocedeve ser capaz de
Codificar telae de selecdo que interagem com 0 usudrio.
Entender como as chaves esrrangeiras podem ajudar a validar entr ada
de usuario.
Entencler como as matchcodes (c6di gos de combinacao) sao ut ili-
zados em programas ABAP/4.
Utilizar elementos de formataclo para criar telas de selel,f ao bern
prcjetadas e eficientes.
Utilizer telas de selec;ao par a manter a inr egridade de dadcs.
Utilizar mensagens para oferecer comunicacao efetiva.
Progra ma <; a o baseada em evento
Hoje 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 com 0 usuario
final. 1550efeito no ABAP/4 utilizando even t os que sao chamados pel as ac;oes
des usuarie s.
Irttp;/I_ .compus,com.br
Jl:- . I I I II _ _
654 APR END' EM 11 DIAS' U P/4
'IAIU ElAS DE smll' 655
Os blocos de processomento s50 definldos pelas polovros-chove de evento e
sdc assim executodos no tnvccccec de certos eventos relevontes .
Por padrao, 0 evenro sta r t -of - sel ecti on eanexado a todos as eventos
no ABAP/ 4. Em seus pro gramas, voce pede definir urn bloea de proces-
samen 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 fundamental tambem ut ilizar
as eventos mais imp orrantes para programacdc cia tela d
7
selecao. Esses eventos
sao:
a evento t ntt f et taat t cn
0 evento at selection-screen
Utilizando 0 eyento at sel ect; on- s cr een
a evectc at se lect ion-screen eprocessado depois cia entrada do usuario na
tela de seleljao ativa. Isso pede ocorrer quando a usui 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 vali-
daljoes de dadcs, mensagens de aviso, alteracao do status 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
t elas de seleljao de [ormatacio e os eventOS envolvidos com elementos de
{ormatacao de t ela. Par enquanto, entretanto, vamos examinar urn botao em
uma tela de selecao e descobrir como as eventos at select i on- s cr een e at
user- conmand sao utilizados no proximo exemplo.
0 evento at user-corrmand
Utilizando 0 eye nto at use r -command
report ywhatyr.
tab les : marc, mvke.
Utilizando 0 eyento ; n; t; al ; zat ; on
data: p_year for sy-datum.
1n1tia11 zati on.
if sy-datUIII ge '01012000'
pyear .. ' 2000' .
else. .
p"year ' Yest eryear ' .
endif .
Essa instrucao, quando utilizada junto com 0 comando at sel ect i on-
screen, euma excelenre maneira de interagir corn 0 usuario quando este digita
dados. A sintaxe esemelhante i de urn sel ect i on- screen corrment, exceto pelc
fatOde que os dados sao passados quando 0 usuario pressiona 0 bono. A aljao
de pressionar 0 batao aciona sccrfi el ds -ucomn no evento at sel ect ton-screen
e os campos de entrada sao importados. Esses dada s entao podem ser validados
e uma mensagem pode ser exibida para 0 usudrio dependendo do prop6sito do
bot ao. Ess e e urn exemplo de como voce pode utilizar dois borees para
det erminer quallinguagem informari os dados selecionados.
o seguinte c6digo mostra a sintaxe para dois botoes que sao utiliudos
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 user- carmand germ.
at selection -s cree n.
at user- COllll'.and.
case sy- ucOlllll.
when ' engl'.
sef ect t cn-screen pushbutt on user-comnand 1234.
Sintaxe pa ra oevento se1ect i on-s cr een pushbutton
o seguinte c6digo mcstra a sintaxe para a event o sel ect i on-screen pushbut-
t on:
Os botoes, assim como muit as 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 voce ira explorar autilizacao
de botoes para chamar 0 eveneo at user-cceand e estudar urn exemplo de
como os botoes podem ser utilizados para processar a entrada de usuario.
III
-
Z

m
T
Nesse exemplo, quando execuudc 0 programa pa..ra 0 qual uma tela de
estol definida, esse bloea de processamento i n; ti a1fzat ; oneexecutado,
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 crit erios serem au ndo necessaries para manter a integridade de clados
digitados pela usuano. Alguns exempl os inclue m a de barras de
titulo, atribuiljao de elementos de text c a elementos de interface gcl fica do
usuario (GUI) e status de c6digo de fun<;.o.
Vo ce viu como 0 evento 1ni t i al izatioo func iona, entao agora ehora de
chegar mais proximo e obs ervar algumas utilizaljoes dos eventos at se1ecti 00-
screen eat user-cOIlVMnd.
!a 0 seguint e c6digo most ra a sintaxe para 0 eventc init i al ization:
Z

m
T
/.

-J

......... --.-.. - . . - -
656 "mo. EM,I DIASAB." . 'UillSD< SRf\.iD 657
-----.
lange nglish ' Y'.
when 'genii' .
1anggerman 'Y'.
endcase ,
Nesse exemplo, voce pede verificar qual dos dois boroes foi pressicnado
pelo usuario utilizando urna instrucio case (veja a Figura 21.1). Quando 0
usudrio aciona 0 evento at user- ccrmand, 0 campo sY-UCOIllTl armazena 0 nome
unico de quatr o byt es do it em que 0 usuario selecionou. Dessa manei rs, voce
pede codificardiversas validaljoes de dados au comandos de entrada do usuario
com base na combinacic de dad os inseridos enos irens, nesse caso os botoes,
selecionados pelo usuario.
Fig urA 21 1
Umo jmpreu60 dos
botOes.
Voce pode tcrnbe m crior ate cinco bctces no barre de ferromentos
Application. Esses bat6es no barra de ferromentos Selection Screen 50 0
ossociados a teclos de func; oo espedficas e 500 limitodos a teclas de
fum; ao de 1 a 5.
NOYO.... Agora que vod oprendeu um pouco sabre vcldccec de dodos utilizondo
ltiM:O " eventcs noAW/4, ehere de excm'ncrclqcmcs tecnlccs de vclidccec de dados
que s60 no moioria montidas 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 tobelo.
Validac;ao de dodos utilizando chaves
estrangeiras
omodelo de dados relacionais do ambience de SAPpode center mui tas tabelas,
visualizacoes, estruturas e tabelas vineuladas. As chaves est ran geiras, como
pcde-se dizer, definem esses relacionamentos entre rmiltiplas tab elas. As
funljoes qu e as chaves est rangeiras executam incluem fomecimento de dados
de ajudae criacac de objetos de diciondrio, mas essa funljao que voce focalizara
estara na area de de clados. Afinal de comas} 3. manut enlj.ao de
integridade de dados eurn dos principais objetivos quando se definem telas de
seleliio e a utilizacic mais importante des chaves estrangeiras.
Urn campo de chave esrrangeira e, por definiCjio, limi tado a valores que
correspondem aos da chave primaria cia tabela de verificacao do campo de
ent rada. Isso ecomo fazer urn vinculo entr e duas tabelas. Uma tabela, FORKEYl}
poder ser entendida como a tabeIa de chave estrangeira (ou dependente),
principalmence porque ela inclui campos de chave estrangeira que sao
atribuidos a campos de chave primariaem CHECKl}que e referido como a tabela
de verificacio (ou referencia) .
o campo de chove estrongeira e 0 chove prim6rio de umo tcbelc poi
devemcomportilhor0 mesmo dominio e umo tobelo de vclor para esse
dominio tcmbem deve ser especificoda. Isso estende, de certo mcnefrc,
a do integridade dos dod os normolmente fomecida openos
celctobelo de volar.
Algumas tabelas 'de veoficacac podem ter mul tiples campos de chave
primfria. N esses casas, as at ribuicoes devem ser feitas para cada campo quando
se iniciamrelacionamentos de chave estrangeira. r res sao:
Utilizerurna chawestrangeiraparcial. Nesse case, alguns campos DaO
serio urn fator ao se validarem valores aceitaveis para entradas no
campo de chave estrangeira. Certos campos sao marcados como
genericos nesse caso e assim ignorados peIa sistema na
Utilizer urna estrangeira constants. A fim de a ent rada de campo
ser vdlida, 0 valor deve corresponder ao cia constance na tabela de
verificacio.
Criar uma atribuirao campo a campo. Essa ea mais complete das tres
escolhas . Cada campo de chave prim:iria na t abela de verificacao
corresponde a urn campo na t abela de chave est rangeira e todos os
campos-chave sao endc utilizado s para determiner entradas validas na
tabela de chave estrangeira.
1
,
""'
--
... !I

I

........... . ...
658 APmnA EM 21 DIAS ASAP"
2UElAS DE SElf\.lD I 659
Yolidoc;ao de dodos utilizondo motchcodes
Eboo pr6tico de programoc;do utilbcr ccoveocees de otribuic;oo de
nome que sdo descritivos e omig6veis para a usu6rio. Alemdisso, 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 que comecem com umc desscs duos letros, 'lac! se
certificor6de neo ter nenhumproblema comconflitos de nome quando
otuolizor seu sistema SAP.
(Dj;..
campo de entrada contem urn valor especffico no campo chave cia tabela de
citada. Na consulu cia insrruca o sel ect , o campo constante e
verificado em conrraposicao ao campo de chave primdria que contem 0 valor
fixe.
NOYO .... Um pool de dodos e uma tabe lo l6gico de pool que eutilizodo pelo SAPpore
mMOr ormazenor intemomente dodos de controle. Esse dodos , que noo sao pemnentes
extemomente, sdo mopeodos como um numero de tobelos de banco de dodos para umo
tobelo do SAP.
Urn matcbcode pode ser configurado (assembled) de doi, modos dife-
rentes:
Fisicamente. Nessa os dados sao armazenados em urna
tabela separada no sistema SAP. Os tipos de A, P eS sio
rnantidos em tabelas ffsicas.
Logicamente. Essa configura dados de matchcode
mente durante 0 acesso ao matchcode. Esse acesso gerenciado por
Veja comcele funciona: primeiro urn objeto matchcode edefinido com
as tabelas secundarias e primfrias pertinenres e campos significativos desig-
nados. Esse objeto enno identifica tcdos os pcssfveis caminhos para .os
registros de dadcs exigidos . Em seguida, os IDs de matchcode sao criados
mapeando urn caminho definido pelo objerc 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 armazenados como urn pool de ube1as, que
mati camente egerado para cada ID de matchcode que voce declara.
KaYO .... Outro maneirc Util de manter a integridode de dodos dura nte 0 entrada do
TaMO r usu6rio Ii utilizor mctchccdes. Urn matchcode eurn cbjetc que eutilizcdc perc
lccclccr registros de dodos no Data Dictionary do .SAP. Mois especificomente, os
. ,mo1chcodes ocessom regisfros de dodos de moneira semelhonte a um fndice em que
todos os campos-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 .
set ect 11 from table 1 where table 1-exam! f lc examl
- and table).exam2 fk::exarn2 .
Esse pequenoc6digo mostra urn exemplodeumainStrur;ao sel ect gerada
pelo sistema, que echamada quando as dados sao inseridos no campo com a
defmi'iio de chave estrangeira. Nesse cemrio, uma entrada em tal campo de
tela epermitida somente se a instructo sel ect produzir dados validos a partir
da tabela de utiliundo as enrradas de dados feitas nos campos
tk_examl e fk_exam2 como chaves.
NOVO .... Cordinolidode eumo descrtcec do relodonament o entre um au mois elementos
mo " de dodos para um a u mois elementos de dodos . Se ume chove estrangeira
vinculo duos tobelos que foram definidos, a registro do tobelo de chove estrongeira se
refere 0 urn registro do tobele de verificac;do. Esse refel1mcio econstrufdo se atribuindo
compos de umo tabe loa umo tobe lode chove estrangeira, aos compos de chove pomaria
do outro tobelo e 0 tobelo de verifica rydo.
o relacionamento s6 exine se os campos de chave estrangeira forem do
rnesmo tipo de dado e comprimento que as campos de chave primm a corres-
pondentes. Urna - au tabela - pai e referenciada pela pr6pria
chave est rangeira. Esta enormalmente urna u bela de valoT) mas tambem pode
consistir em urn subconjuDta do conteudo de uma tabela de valor. Uma tabela
de valor governa as valores validos que sao atribui'dos ao dominio do elemento
de dados .
Em alguns casos, uma chave est rangeira constante pode me-
lhor as suas necessidades. Esse e0 caso quando todas as ent radas validas no
Uma COISO de que vod deve se lembror 0 0 cnor relodcncmentcs de
chcve estmngeirc ea cordinolidade. A card inolidode de umo chcve
estrcngeiro, junto com seu tipo, ereferida como os otributos sern6nticos
do chove estrcnqelrc. Coda cordinalidode de umo chove estrongeira
dessos entradas eopdonal. Entretonto, a cordinolidade ndo deve ser
supervisionodo, porque a entrada eboo prefico e tomo -se necess6rio
quando voce quisercriar certos tipos de og regodos como visvcllzccoes
de c judc , por exernplo.
Basicamente, 0 modo como uma chave estrangeira Unciona se parcee
com uma select em cpcsicacaube la de verificacac do campo com
a chave esrrangeira, Mais especificamente, quand o urn campo de de
chave esrrangeira epreenchido, a insuur;ao select que foi gerada pelo sistema
daSAP)quandodefiniuachaveesrrangeira, eenviada peloprograma. Seatabela
. retorna um valor dessa selecac, a entrada sera vdida. Se 0 registro nao for
localizado, a entrada de campo se torna invalids.
o c6digoaseguirmostra asintaxe para uma instrucao sel ect geradapelo
sistema:
660 'PREHO' EM21 OIAS "AP"
-.. .... . . . . --
-- --
2J,1HASDE SELE\lO 661
5. 0 pr6ximo passo no processo de eativar 0 obje t o mat chcode.
o status do objeto eNew e Saved (veja a Figura 21.6).
6. 0 status esta agora configurado como Active e Saved. Logo, voce
precisara criar urn ill de marchcode au seu objeto estara incomplet e
(veja aFigura21.7). Parafazer isso, dS: urn clique no batao Matchcode
IDs.
uma visualizaeiodo banco de dados. Nesse casa, a metoda logicce 0
mesmo que 0 armazenamento t ransparence. 1550 inclui apenas tipos
de atualizacaoI e K.
Fi g u r A 2 1 2
Atela iniciol do
DoteDictiona ry.
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 para sen novo objeto, de urn clique no bono de
0Plii o Mat chcode e pressione 0 bon e Create.
2. Digite 0 t exto descri tivo, quando for inserir sua tabela primdria na
tela Attributes mostrada na Figura 21.3, e pressione 0 batao Save. A
tabelaprimariarepresenta a origemprimariapara apesquisa de campo
subs eqeenre. As t abelas secundarias tambem podem sec mantidas
nesse ponte dando urn clique duplo na tabela primdria au pres-
sionando a bone Table. Esses tabelas devem vincular-se com eabelas
primarias pa r chaves esrrangeiras.
3. Nesse ponte, voce tern a opcso de criar a macchcode como urn cbjetc
local au anexs-lo a uma soliciracfode 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 que qui ser. Nesse ponte, voce precisa dar urn clique
na seta verde para voltar atela Maintain Attributes.
Figura 21 3
Atela de otribufos
Maintain Matchcode
Ob;ed.
Figura 21 4
Atela Obied
CatalogEntry.
.
;r.."
~ ~ ~ . I I I
662 APREMDA EM I I DI AS Am" D1A IU,USDESEll\lD I 663
Figu r a 21 7
Osafribulos de
matdJcodedepois
do alivoo.
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 DO bo tao Yes.
8. Na tela Create Matchcode ID mostrada 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 pede dar urn clique
na seta para baixo para visualizar urn intervalo de entradas vaIidas.
Figura 21 9
Acoixa de dia/ogo
CreateMatchcode 10.
Figu rA 21 8
UrnavisoCreote
Obi""
Flgurq 21 6
Osotributos de
matchcodeanles do
Qtivoo.
I
9. Vamos visualiza r algumas possfveis entradas (veja a Figura 21.10) .
Como voce pede ver, essa janela de Iista mostra urn mi mero de IDs
de matchcocle e uma descricsc curta de cada urn. Escolha urn e de urn
clique na seta verde.
A -a
. -
-

--
-
664 .PRENO. EM 21 01.1 ASAP/. 01. 2UnAS DE sa(.lO 665
A subtelo Index noo precise ser mantido, porque essas c:eraderfsticos
sao meromente para fins de no versec atual do sistema
SAP. Simplesmente debe esse lacuna e ignore 0 aviso subseqOente que
cpcrece no log de otivao do seu ob jeto.
12. Agora rude que voce t ern de fazer eativar seu ill de matchcode e seu
novo objeto esta pronto para utilizar (veja a Figura 21.13).
Figur A 21 13
Gere e utilize 0
matchcode.
Figurg 21 1 2
A caixo de di6/09o
Maintenance
Selection Conditions.
10. Siga. as passes que aprendemos para manter as campos de para
"esse ID de marchcode, cerrifique-se de inserir um tipo Update e de
urn clique em Save (veja a Figura 21.11). Discutirei ainda sabre tipos
Updat e mais adiante nesta selSao. N esse ponte, voce pede inserir rnais
crirerios de selecao pr essionando 0 bono Selectio n Criteria.
11. Na tela Maintain Selecti on 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 emaior
que 0 valor de 8888 (veja a Figura 21.12). Quando terminar, de urn
clique em Save e na seta verde para voltar.
Figura 21 10
Umo listo ele ccessc
Motchcode.
Figurp 2 1 J 1
Amonufeno de
oIribvtos
666 I APREHDI EM21 DIAS I 'IP/.
2UElAS DE sElf\.iD 667
N esses 12 passos Hceis , voce criou urn matchcode que agora pede utilizar
para manter a integridade dos dados, Vace aprendeu como as cbaves primarias
ajudam a verificar possiveis valores de tabelas vinculadas e 0 conceit o de urn
pool de campos de dados. Lembre-se, a maneira como as dad os de maechco de
sao organizados varia de acordo com que tipo de arualizacao foi selecionado
durante a crialJao inicial. Eis uma descricio de cada urn desses cinco ripos:
1- Organizado pelo banco de dados arribufdo.
5 - Organizado pela interface do banco de dados.
A - Aut o-o rganizado pelo pro grarna de sistema SAPMACO.
P - Organizado por urn programa apli carivo.
K - Tambem organizado por urn program a apli cativo.
Sintaxe para utilizar urn matcbcode
as relot6rios que tAm l ogical Database anexodos a eles s60 otribuldos
a telas de selecoc pre-projetodos. Esses crttenos de selecec podemser
modificodos para melber se odoptorem as sues necessidades. as
relot6rios que ndc tlverem as telos predefinidos devem ser rncnfidoa
pelo programador do relat6rio. Essas interfaces do usucrlc personali
zodos podemossumir qualquerforma e combinerquoisquerelementos
que voce, 0 programodor, quiser.
Utilizando instrw;;6es sel ecti on- scr een
NOVB'" as elementos de tete de seeceo podemser combinadas em unidades cceslvos
lHW chomodas bleeos. Esses blocos 16gicos s60, emessendo, umrecursocosmetico
de tela que encopsulo uma ccmbrnccec de elementos de entrada de tela e pede ser
criodocom umtrtulo de frame descritlvo. Blocos 16gicos ojudoma tornar as cposes de
seleceo mois f6ceis de entender e ufillzor.
tables : saptab
parameter: example l t ke saptab-f1eld matc hcode object exam.
select single f ield f rom saptab where f i eld example.
Eormatando telas de sele<;Cio
Esse exemplo utilize 0 exame de objeto matchcode, que ja foi definido
comurn ID de matchcode, paravalidar a entrada de dado s no exemplo de campo
de pardmetro. Esse exame de cbjerc armazena os dados de relacio namento
necessaries para manter a integridade da entrada de usu ario.
Alem do instruc; co block, os telos de seleccc podem ser personoli zodas
util izondo elementos de formotcl;co como os seguintesinstrvcces sel ect i on-

screen:
sel ection-scr een com:nent - Colo ca urn cornentario na tela de se-
leliao.
sel ect i on- screen uline - Coloca urn sublinhado na tela em uma
especificada para urn comprimento especificado.
se l ection- screen posi ti on - U ma ferramenta muitc util que espe-
cifica urn comentario para a pr 6ximo parametro de campo na t ela. E
util par:a select i on- opt ions assim como para parameters .
se1ecti on-screen begi n-of - l i ne e sel ecti on-screen end-e f- t i ne -
Todos os campos de entrada definido s entre essas duas instruce es sao
colocados urn do lado do ou tre na mesma linha.
selecti on- screen s ki p 0 n-c- Essa instrucio cria umalinha em branco
para as n linhas na t ela de selecao .
A mai cria dos element os inclufdos na anterior edo ripe cosrnet ico;
na pr6xima voce vera alguns elementos de tela de selecsc que sao mais
especfficos para processament o de entrada de dados.
en A seguir esta a sintaxe para urn sel ect i on-s cre en bl ock com frame:
-Z selection-screen begin of block bl ockO with f rame title text-DOO.
S
In
T
Sintaxe para sel ecti on- screen block com frame
Agora que voce explorou algumas ferramentas para validar clados de entrada
no ABAP/4, vamos dedicar algum tempo para aprender mais sobre como
projetar formatos efetivos de tela de selecj o. Ao definir t elas de entrada par a
utilizacao na informacdo de dados, vari e s elementos de selecao podem ser
combinados para manter a integridade dos dados e ainda cont inuarem faceis
de se utilizer. Esses elementos in c1uem campos de entrada padrac como
opcoes de seleljao e parametros, assim como outros, t ais co mo caixas de
selecsc, borees de opcac e bot6es pushbutton. A seliao seguinte mostrara cada
um desses individualmente e dara alguns exemplos de onde eles sao melber
util izados. Voce ted uma oportunidade para combine-los no Exercicio 1 no
final do capitulo.
A seguir esta a sintaxe para utilizar matchcod es para validacso de entrada de
!:!! parameero de t ela de selecso:
Z
S
In
T
.I_A _ _A .
668 APIEHDA EM 21 DIAl A1AP"


-- -- -
Parametres de t ela de sele<;60
A parameter nas telae de selecac cria uma esrrurura de dados no
pr ograma que armazena a ent rada inserida no campo Parameter pelo usudrio
em tempo de execuclo.
Os parametres sao melber utilizados quando a entrada de campo exigida
eurn valor unico, em aurn intervale de valores. 0 intervale validc de
valores pede ser determinado pelo usuari o dando urn clique na seta para baixo
ou pressionando F4 enquanto 0 cursor esti. no campo geradc pela instrutiao
para meter . Essa t abela de valor pede sec mantida pelo programador para incluir
valores persorializados para tra nsa gdes especjficas ou relatorics. A maneira
mais simples e direta de configurar a ajuda F4 e alocando uma eabela de
verificac fo para 0 dominic de campo no dicionaric do AEAP/4.
NOVO IItrr... Umdomlnio descreve as propriedodes dos compos de umo tobe lo. He define
mWO ,. 0 lntervolc de vclores velidos de dodos pore urn compo e caraderisticos de
compo especfficos.
Os dominios det ermtncm otributos como tipode compo, comprimento
e posslveis relocionomentos de chcve estrangeira. A de
umdominio outomoticomente olterar6 as otributos detodos os elemen-
tos de dodos onexodos a esse dominio. Isso edevido 00 fato de que
as elementos de dodos em urn domfnio herdom tcdcs os propriedodes
do dominio 0 que eles se referem.
Para visualizar ou executar a<;oes em um dominio, inicie na t ela de Data
Dicti onary (veja a Figura 21.14). Verifique 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 erfst icas de dominio sao exibidas na t ela.
Com a instrur; ao par amet er , voce pede induir palavras-chave que podem
restringir a entrada com certas opcoes. Essas tres palavras-chave sao as seguin-
tes:
lower case - Com isso inclufdc na instrucio de selecao, 0 valor em
letras minusculas inserido no de entrada nao e automati-
camente convertidc para letras maiasculas, ao contrario do que aeon-
tece para to dos campos de entrada no ABAP/4 em tempo de execucao.
obl igatory - Prolbe campos de entrada em branco.
defaul t - Mantem urn valor padrao inicial para 0 parametro.
Figura 21 14
A tela inidol
Domains.
Figura 21 15
A tela Domains
Display.
Os elementos de teste devem ser montidos pa ra elementos de tela
como Parameters a fim de oferecer ao usu6rio umo boo explicac;oo 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 logon do vsvcric.
.:.I .. ]I - - - - - - - -
-
-
- - - - -
670 I "RENDA E. 11 DIAS ABAP/4 DIA2UEUS DE sru\iO 671
Sintaxe para selection- screen checkbox
Par a manter elementos 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 tipos de eexrc pan seu programa a partir desse
ponto. Agora, veremos 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 as sfrnbolos de
texto que vocecri ou em seu programa. Se vocequiser adicionar mais, digite urn
ntimero e seu textc e deurn clique no batao Save. Tambem observe 0 recurso
Where Used, que realmente muito uti!.
A tela de selec;oo checkbox
as parametres podem ser criados como campos de clados que contenham
apenas urnvalor deentradaetamb em podemsercriadoscomocaixasdeselecto .
Q uando as Paramet ers assumem a forma das caixas de seIel$ao. eles sao
declaradcs como ripe Ce dessa forma armazenam a valor de Xquando verifi-
cades e da tecla Espaco quando Ilio verificados. Uma boa utilizaclo do
parimetro checkbox escliciear ao ususrio para indicar se ele quer que certos
component es de urn relat oric sejam exibidos.
Figura 2 1 1 7
Mantendo sfmboJos
de fexto.
Mf' f ?!i
ffl ii
Hie life Iii,.!
..,
parameters : te st parm as checkbox default ' X':
A select -options gem umo tobelo inferno de setecec que ccnte m
o entrcdc pore os entrcdos de compo otribvidas.
Nesse exemplo, 0 valor inicial econfigurado como verific ado, ou con-
figura do como X para 0 processamento logico do programa. As caixas de
sele!Sao, ao contrario dos boeoes de 0pl$ao, njo sao mutuament e 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 parameter emelhor ut ilizada quando
se solicit a urn deice valor de entrada . Se a entrada. requerida emelhcr repre-
sentada em urn intervale de valores, a instruqao sele ct-opt i ons e.um campo
mais eficiente para se utilizar.
10YO ..
1Ib0 ,.
A seguir esta a sintaxe para urn pa.r.imetr o que aparec e como urn checkbox:
Z

m
T
Figura 21 16
A tela inicial Text
Symbols.
AJ.elo de selec;oo sel ect -opt i oos
A selec t-opt i ons e ut iliza.da. de maneira semelhante a
paramet er s, no sentido de que cria criterios de selecac para urn campo de banco
de dados. A diferecca principal entre as duas eque a select-opti ons
672 APiENOA EM 21 DIAS " ../4
A sintaxe pora urn radi obuttoo group
Exemplo de programa de tela de
A seguir est a 0 c6digo de exemplo para uma tela de selec;aoenvolve a maioria
dos element os b:isicos:
report YJACOBJX message-id Y6.
* Database Table Def init i ons
tabl es : mara.
select ion-screen skip 1.
sel ect i on- scr 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 block blockO.
* Sele ction par ameters
selection- screen ski p 2.
sele ct ion-s creen begin of bl ock blockl with f rame t 1tle t ext -OCI
no in t erval s .
Esse exemplo gera urn gropo de trss parametres como bo roes de opcsc.
Como voce pade ver, esses botoes de sao agrupados em urn bloco na
tela. Essa euma boa prarica de programacao, porque ajuda 0 usuirio a. per cebe r
que t odos per tencem 01 0 mesmo gropo de sclicincac de entrada. Esses
pardmetros sao melhor utili zados para seleci onar urn unico valor de urna
configuralj3.o de varias opcces e devem center pelo menos dois botoe s par
grupo.
56 um desses tres botoes de exempl o pode.ser selecionado em tempo de
execuljio devi do asua inclusac em urn grupo. A integndade des dados e
mantida, porque essa e uma boa maneira de solicitar entrada muruament e
exclusiva ao usudrio. Isso sed demonstrado mais ainda na a seguir, em
que hi urn exemplo de uma tela simples de selec;.ao que utiliza muitos element os
de t ela de selec;ao voce aprendeu.
A sintaxe para urn grop a de pardme tro radiobutton ea seguint e:
selection- scr een begi n of bl ock r ad_blk with frame t i tle text-COO.
parameter s: red ext radiobut ton group one,
ra(exZ radiobutton grouP. one,
rad ex3 radiobut t on group one.
selection- scree; end of bl ock rad_bl k
Ul
-
Z

m
.------ ------ -
Esse multiple select-opt i onpocle ser excluldc ufilizcndo-se0 d6usulo
no-ext enst cn como dedorado onteriormente neste ccpuvlc.
, ... A inslruc;oo select -optfons exlbe umo linho que normolmente tem dots
ANALISE r compos para dados de entrada. Isso pode ser restringido para um 56campo,
utilizando a cl6usula no-i ntervals no sintaxe select -options . Par exemplo, se seu
progromo nao requer um compo TO perc entrada no linho de instruc;oo sel ec t - cpt t ons,
mas voce oindo quer utilizer a instruc;60 select-optio ns, ind uirio lese no dcvsulc
no- i nt er val s. Esso cldusulc, ossim como a no-e xtens i on, ser6 mois oindo explorodo
no exemploque cpcrece no fmcl destc set;60. Por enquonto, entretcnto, nos voltcremos
pore umo dlscussdc sobre 0 formata do tobelode seleccc interne sele ct -opt ; ons.
cria dais campos de ent rada que contem tanto urn campo FR()II como um campo
TO. em a somente uma Unica entrada de campo.
Essa tabela intema emantida com a seguint e formate de campo, se 0
usuario clicar na seta para a direita do campo TOda 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 armazena os atributo s-chave dos
dados de entrada, incluindo 0 valor SIGN, OPTI ON, lOWe 0 valor HIGH. Esses
recursos da instrucao sel ect - opt i ons podem t er as seguintes ccndicoes:
SIGN - Pode significar INCLUSIVE, que e a padrao,au EXCLUSIVE, que
pode ser mar cada na jane la Complex Selections.
OPTION- Pede armazenar valores 6T (entre), CP (cont em padrac), EQ
(igual para) e GE (maior que au igual a).
lOW - Arrnazena a entrada de valor no campo FROM.
HIGH - Armazena a entrada de valor no campo TO.
A sintaxe para se l ect -o pt i OOS
BotPes de tela de
!!! A sintaxe para essa instrucio easeguin te:
select-opt i ons ex sel l! for tabl e-fie ld default ' VAl UELOW ' to 'VALUEHI ' .

Alem do campo parameters e select-opti ons, a ins trucio de tela de


radi obutton e uma excel enee maneira de manter a integridade dos dados
durante 0 processamento da entrada do usuario em tempo de execuclo. A fim
de criar Parameters como bot oes de 0pc; 30, voce deve declare-los urilizando a
cliusula r-edtcb ut tcn gro up.
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.
_ L..IL...I I - - - -
674 APRE NDAEM 21 DIAl ABAf( '
0\l2HELlSDE Sllf\AD 675
selec tion-s creen begin of line .
par aJleters: p ex2 rad1ob;Jtton group ra dl
selection-sc reen COIlIIlent 5(30} t ext -exz .
se tecttcn-sereen end of line.
select -opt ions: s_jdate2 for mara- la eda.
selection-screen skip 1.
selection-screen begin of l1ne .
par arr.et ers: p ex3 ra d1obutton group radl.
selection-screen carment 5(20) te xt -exa.
sel ecti on-screen end of line.
paramet ers : p jdat!3 li ke eere -teeda .
selecti on-screen ski p 1.
51!1ecti on-screen begi n of 11ne.
parameters : p ex4 rad1obutt on group radl
conrnent 5(30) t ext-exa.
selection-screen end of line.
sel ect-opt ions: 5 jdate4 for Illata-lieda no-extension no i nt ervals.
selecti on-screen end of block blockl.
selecti on-screen skip .
sel 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.
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) text-exs.
setecttca-screen end of tt ne.
se lection-screen skip.
sel ecti on-screen begi n of line.
paramet ers: P ex] as checkbox.
se le ction-screen corrment 5(30) te xt -ex7.
sel ect i on-screen end of l i ne.
selection-screen end of block block2.
AT sele ct i on-screen.
AT se lec t i on-screen.
1f ( P exl - 'X' ) and
( ( pjdate l '" ' tEO?' ) or ( p_Jdate1 is initial ) .
message E017 w1th ' Sel ect i on Opt i on wit h Default fi eld has no val ue ' .
elseif ( p ex! - ' X' ) and
not ( ( p j"datel - ' l EO?' ) or (p jdat el is initial .
message- tOp with ' We are now using Exampl e 1' .
endif.
1f ( p_ex2 - ' X' ) and
( ( s_JdateZ ' lEO? ' ) or ( s_Jdat e2 is 1nit141 ).
message E017 with ' Sel ecti on Option using f or f i eld has no valu e'.
else1f ( p ex2 .. 'X' ) and
not { ( s JdateZ - ' l EO? ' ) or (s j dat eZ i s 1nitial .
message-1017 with ' And now ExarJllle Z i s selected'.
endi f.
if ( P ex3 - ' X' ) and
( ( pj date 3. ' IEQ1' ) or (p_Jdate3 t s init1al ).
mess age EOI1 wi t h ' Parameter w/ l1 ke sta t ement field has no val ue' .
elseif ( p_ex3 - ' X' ) and
not ( ( p_Jdat e3 - ' l E01' ) or (p_Jdat e3 i s init ial .
JIlessagl!! 1017 with ' We are now usi ng 3'.
endt f ,
i f ( P ex4 - ' X' ) and
( ( s jdate4 - 'lE01' ) or ( s Jdate4 is initial .
mess age E017 with ' Sel ect ion- Opt i on wi th no in t erval has no valu e' .
ets et f ( p ex4 ' X' ) and
not ( ( sj dat e4 - 'lEO?' ) or ( s_Jdat e4 15 i nitial .
IM!!ssage J017 with 'We are now usin g 4'.
endi f . .
1f p_ex5 - X'.
per f onn getJlrice_data .
else .
message 1017 with 'No Pri cing Data sel ect ed' .
endi f.
if p ex6 - ' X' .
perfortll get _cost_data.
else.
message 1017 with '/'(0 Costing Dat a selected ' :
endif .
1f p ex7 - ' X'.
perfonn getJevenue_data .
else.
mes sage 1017 with ' No Revenue Data selected' .
end1f.
form get _cost_dat a.
endf ol'1ll .
fonn get Jevenue_qata .
endfonn.
fonn getJlr1ce_dat a.
endfonn.
. ... Como os botoes de opo soc mutua me nte exclusives, e uma boo Idelc
mUSE,. mente-los toclos no mesmo bloco de processomento no tela de seleccc. Note,
no Figure 21 .18, como coda grupo de ele mentos de compo foi isolodo pore canter 56
as compos que s60 relevontes 0 esse blocc de decisli o.
Como voce pede ver na Figura 21.19, ernais dificil seguir os campos de
dados exigidos quando eles nj .cesno agrupados em blocos de tela de selecso.
Os pardmetros que sao definidos com a clausula 1i keaparecerao com urna
seta para baixo, na qual voce pede dar urn clique para ver uma janela com uma
Iista des valores validos (veja a Figura 21.20).
Agora, podemos dar um clique em cosso batao de selecao. (Veja a Figura
21.21). Ele pr eencher s 0 campo daquele parametro com 0 valor que voce river
seleci onado. Isso podeser mui to uti! para ajudar a ususrio a se [amiliarizar mais
com as exigeccias de que voce impes.
Ao criar urn sel ect-option sem utilizar a c1iusula no- ext ension, voce
disp6e da capacidade de inserir mdlriplas au urn intervalo delas. Para

676 APRENOAEM21 OIAS AUP/4 O.2UWSD SBfI,io 677
inserir multiplasselecoesauurninrervalo,simplesmentede urnclique no ba tao
de seta branca (veja a Figura 21.22) .
Fi g ura 21 20
as pot6me'rose a
de seta
pore baixo.
Fi g ura 21 21
Escolhoumvolor
v6/ioo.
f lgllra 2 1 22
Asope:s Selection
com Extension.
Figura 21 18
Atela Selectioncom
um"bIoeo relevonte
de decis60.
Figura 21 19
Atelo Selectionsem
b/ocos.

ww ww
------
- - -
678 APIEHDA EM ' 1 DIAl AB AP/4
Nesse ponte, voce pede inseri r todos as seus criterios de 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 preencherao uma t abela de em tempo de execucgo.
Se urili zar as clsus ulas nc- extens t ons e no-trrterva1s na instrucao sel ect-
options, voceobteraurncampodeentrada que[uncionademaneirasemelhante .
a urn campo de pardmetro, complete com uma t eela de seta para baixo para ver
entrada, validas (veja a Figura 21.25). "
Tenha euidado ao utilizar valores-padrac paraas campos se1ect -opt i on.
Como pede ver na Fi gura 21.26, se voce preencher urn campo select -option
com urn valor padrao, 0 campo DaD permitira que vocs veja as entradas vslidas.
A seguinte tela mostra urn exemplo de uma rotina de de dados
que utiliza uma rnensagem de informa!ioes no formuIario de uma janelapop-up
que emerament e informativo e simplesmence pausa 0 programa. Isso emelhor
utilizado para comunicar status de eveatos no processamento de dadcs (veja a
Figura 21.27).
F lgur9 21 23
Insiro seus
de seleo.
Voce tambe m pede utilizar uma 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) .
Flgur9 21 24
A tela $@o/edion com
o mo verdeativodo.
Figura 21 2 5
Atela Selection sern
extens60 OIJ
inl'efYOios.
, \,TILlS DE " lIlD I 679
!
j
aa
680 APREHDA EM 21 DIAl ABAPH 2UEUS DE SElf(.lD 681
Utilizando a message
Nco se esqvecc de induir bem-eloborodos
retinas de volidoc;60 de dodos que vtiJizem
as copocidodes de evento do ABM' / 4.
As mensagens sao rnantidas e armazenadas na tabela noo e podem seracessadas
a partir do ABAP Workbench. Urn prograniador efetivo emitemensagens 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 resultado do programa.
S - Success, essa mensagem e exibida na linha de status da tela
seguinte.
A - Abend, a tranSa'iaO at ual e interrompida e uma mensagem e
exibida ate que 0 usuario confirme-a.
E - Error, 0 ususrio deve inserir dsdcs para continuar.
W- Warning, a usuario pode tant o modificar os clados de entrada
coma pressionar Enter para prosseguir.
1- Information, 0 usuario deve pressionar Enter para continuer no
mesmo POntOno programa.
Voce deve especificar uma instru'iao de informe message-id no comecc
de seu programa.
Como mencionado nesse ultimo exemplo, e boa pratica utilizar ins-
de mensagem como avisos de de entrada em tempo de
execut;ao.
Esse exemplo mostra muitos element os de telas de SeICIi2.0 combinadas
em urn forma te simples e eficiente . Examine ocodigc que criou essa tela de
seleliao nos paragrafcs que precedemesse passo.
---:...-_----
IFasa
lembre-se de utiliwr os elementos de
tela de pore as torefos mois
odequodos pore elcs.
Projete sues te las de selecec ojustondo
seus requisitos de entrcdo de dodos de
uma maneiro que sejo f6cil de ser
entendido pelo vsucric.
FigurQ 21 26
select -option
comvalor podr6o.
Figura 21 27
Mensogem pop-up
vfjlizoda pore
vofjdo o de dodos.
Fig ura 21 28
h mensogens de
erro no borre de
status.
............ ..... . .
682 APREHDA EM21 DIAl AB AP/4 , I, 1WSDE s<lE\-iD 683
I
I
I I
I
I
I
I
I
,
I
I
FigurA 21 30
Atela
Development
Ob;eds.
F igurA 2
1
3
1
;........... ......
A telaMointcin
Message Doss.
Esse ID de dais caracteres e urn mimero de mensagem de rres dfgitos,
junt o com 0 idioma, determinam as classes de mens agens. A SAP t omou a
inclusso de instrucoes de mensagem em seu programa rnais facil ut ilizando
camanda de insert no ABAP/4 Edit or.
A Figura 21.29 ea tela facilmente acessivel que aparece quando se da urn
clique duplo no nrlmero de ID de uma mensagem no p.,:,AP/4 Editor.
Vamos ccmecar pelo Object 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 AJi AP/4 Editor.
Em seguida , insira uma classe de mensagem e deurn clique no Jcone para
a que voce quer executar. Nesse exemplo, de urn cliqueno modo Create
(veja a Figura 21.31).
. Agoravoceve atelaMaintainMessageClass;eaqui quevocepode inserir
os atributos da classe de mensagem queestaeditando (veja aFigura 21.32). De
urn clique no botao de Messages para manter as mensagensindividuais.
Agoravoce esd no modo de 0 que corresponde a urnitemna lists
de elementos detexto de mensagem. Depois quefizer asalteracoesnecessaries,
de urn clique no. batao Save e sua mensagemestara pronta para ser utilizada.
!:!! A sintaxe para uma instrucio message id em UJ'J} relat6rio ea seguinte:
report ",,,,1. f tne-ccunt 65 Itne-st ze 13' .....,.-id rs .
m
T
Sintaxe para a instrUl;tio mes sage -i d
Flguro 21 29
T jnicial ObjKt
Browser.
I I I I I J,.-:I-. I I I I -II I .I I . .... . . . .. ..........
684 "FIEND. Ell 21 DIU ABAPI4
,"'".15 OfSRI\AD 685
-,
o que acontece se urn campo de chave primdria eadicionadc a
uma tabela de depois que uma chave estrangeira foi
ddinida?
E. pcssfvel inserir vanaveis como mensagens de erro de sist ema au
c6digos de retorno em uma mensagem de texta?
Sim. Basta voce colocar urn "e" comercial (&) no lugar em que
voce quer que a variavel DO text o da mensagem e chamar
a mensagem passando pela variavel, de maneira semelhaaee a uma
instrucdo perform.
Campos adicionais que sao adicionados achave prima ria de uma
tabela de verificacso de chave estrangeira sao marcados como
genericos e, ponanto, ignorados pelo siste ma ao validar dados
icseridos no campo de cbave esrrangeira.
o
o
o
o
1. Como os dais tipos de matchcode trabalham juntos com ao
armazenamento de dados de matchcode?
As mensagens podem ser utilizadas para comunicar 0 st atus do pro-
grama 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 elementos de tela de
seler;ao, de tal modo que 0 usuario tenha urn born entendiment o do
uso dos varies objetos de campo para criterios de seler;ao.
Com 0 ABAP/4, voce pede personalizar e modificar telas 16gicas de
de banco de dados existentes para arender as suas necessidades
especfficas.
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu oeste
capitulo. A Teste oferece pergunus para ajudar a solidificar seu entendi-
mento do ccnteddc abordado e a Exercfcio permite que voce pratique 0
que aprendeu. Voce pede encontrar as respostas as perguntas do Test e e aos
exerclcios no Apendice B, "Respostas is perguntas e aos exercfcios".
P&R
Teste
Workshop
Nao se esquecc de especificor a
message -id ccrretc no Inklc de seu
rel0t6rio.
0 ABAP/ -4 euma linguagem de programacfo baseada em eventos e
voce pede tirar provei to desse fato utilizando as eventos at se1ec-
ti on-screen e i n; t i al i zati on, assim como 0 evento at user-conmand,
para vaLidarentrada do usuaeio utiliz.ando urn namero de tecnicas.
As chaves estrangeiras podem set utiliz.adas para verificar a integridade
de dados de entrada urilizando os campos de chave primaria de uma
tabela de verificaclo.
Os matchcodes utilizam dados de pccl logicc para validar entrada de
usuaric baseados em criterios especificados de quando utili-
zados em conjuncac com pardmetros de tela de selecac e opcoes de

Lembre-se de utili zer mensogens de uma
mcneiro que ajude a u$u6rio a Iraerir as
dodos de modo mois eficiente.
FOl;O born usa dos classes existentes de
mensogem de sistema antes de crier as
suos pr6prias.
--'----------'-
IFasa
Resumo
Figura 21 3 2
A tela Moinloin
Individual
Messages.
................
2. Se voce alterar as caracterfsticas de urn dominic, as caracterfsticas
vinculadas dos elementos de dados tambemirac se alterar?
3. Qual ea principal regrapara estabelecer urn relacionamento de chave
estrangeira?
Exerdcio 1
Crie urn relatcric de tela de selecso que lisre eodos as compooentes de urna
ccnta de materiais emdiversos idiomas. Construe campospara selecces de urn
intervale de combinacoes de materiais e plantas. Lembre-se de utilizar as
elementos que aprendemos oeste capitulo que melhar se adequarem as tarefas.
-. --. . . ----. --. ---- -
SEMANA 3
Revisao
Na semana pass ada, voce realizou as seguintes tarefas:
produziu relatorios que utilizam sfmbolos grafi cos e leones
anexou titulos e rodapes a listas
enviou salda para 0 spool de Impressao utilizan do new-pase
pr int
familiarizou-se com as evenros initi al izat i on, start -at-se-
l ecti on, end-cf-sel ect ton, t op-of - page e end- at- page
codificou sub-retinas extemas e internas e m6dulos de
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 para
configurar 0 valor de retorno de sy-subr-c
criou telas de utilizando a instrucic select-opt ions
Tabel a A.l Corocteres inv6lidos para names de progromo
A
Ponto
Vlrgulo
Lacuna
Pcrenteses
Aspos simples
Aspas duplos
Sinol de iguaJ
Asterisco
Sublinhodo
Sino! de porcentagem
Coroderes com trema e "'s duple clemco"
Caractere
%
Aeo su os
()
Hadais tipos de programa:
Relat6rios
Programas de diaIogo
Carla tipo de programa tern suas pr6prias convencces de atribuicj o de
nome. A Tabela A. I contern as caract eres que nae sao permitidos em nome s
de program',
htIpJt-.mmpus.tom.br
Convencoes de atribuic;ao de nome de
programas
de de nome
l
r
,
..
.I I .I I . - I -- i .
690 'PRE'" E. 21 DIAS ABAP/4
Conyen..6es para at ri bui..60 de nomes a relot6rios
as nomes de relatorio de clienre segue a convencio Yaxn:xxx au Zcccecce, onde:
0 primeiro cara crere deve sec urn Yau Z.
0 segundo caractere represents a area de aplicativo.
0 compr:imento maximo de programa e10.
o segundocaractere ea fonna curta paraairea de aplicativo (vejaTabe1a
A.2). Por exemplo, urn relat 6rio de cliente para a Tesouraria seguiria a con-
ven c; ao Z5.:a:x.o:x, enquanto urn relat 6rio logfstico seria nomeado Z21xxxxx.
C ada areade aplicati vo pede ser representada po rumc6digo. Cada c6digo
tern duas formas comumente utilizadas, a forma curta e a longa. Hi tambem
urn c6digo utilizado sa mente para nomes 16gicos de banco de dados. Esses
c6d.igos.sao mostrados Tabela A.2. .
Tabela A.:2 C6digos pare as 6reos de oplicotivo no R/3
Area de Forma Fonna Forma
longo curta LDB
Ccntobllldcde finance ira (Financial Accounting) FI 1 F
Ge renciomento de materiais MM 2 M
(Materia ls Management)
Vendos e Distribuio (Sales a nd Distribution) SO 3
Plcnejcmentc de produt;oo e centrole PP 4
(Produdian Plonning a nd Ccntrcf
Tesouroria (Trea sury) TR 5
Ge renciamenta de qua lidade OM 6
Mona gement)
Sistema de proietc {Proiect System) PS 7
Monutene;oo de planla (Plant Maintenance) PM 8
Gerenciamento de estoqve WM 9
('Narehouse Management)
Recursos hvmcncs (Humon Resources) HR 10
Contabilidade de ativa (.Asset Accounting) M 11
Co ntrole (CO) Control ling 12
Atividodes de processo (Process Industries) PI 13
Gerenciamento de investimento 1M 14
(Investment Manogement)
loglstico (Ge raij {logistics (Ge ne ral)) LO 21
Desenvclvlmento Intemocional (International IN 22
Development)
Funcionalidade ctroves de oplicotivo CA 23
(Cross Application Functionality)
"
Convencoes para otribuicco de nomes a programas de
di61ogo .
N a mes de pragrarna de dialogo de c1iente segue a convencfo SAPMYxxx au
SAPM2=, oDde:
O s primeircs quatro caracteres devem ser SAPM.
0 quinto caractere deve ser urn Y ou Z.
O s dlcimos tres caract eres podern ser qu aisquer caracteres validos.
Programas escrieos pa r SAPdevem seguir a convencao SAPMaxxx, onde a
ea forma curta para uma area de aplicat ivo.
Intervalos de nomes de c1ientes
osistema de R/3 contem rnu it os tipos de objetos de desenvolvimento. Sevoce
mesmo quiser criar urn ob jero de desenvolvimentc, deve cris-lc no int erualo
de nome de cliente. As convencces para intervalos de Domes de clientes sao
mostradas na Tabela A.3.
Tabela A.3 Intervclos de nomes de cllentes pora todos os o bjetos de
desenvolvimento do R/3
npo de objeto Comprim. Notas
Max. de atribui'ioo
de nome
ABAP/4 Query
Query 2
Functional Area 4
Fundion Gro up 3
Append Structures
Append Structure 10 Y* Z
Append Structure Fields 10 YYZZ
Application l ag s
Object 4 Y or Z
Sub-Object 10 Y or Z
Area Menus 4 Y' Z
Avthorizotions
Avthorization 12 ony NOo permitido no
2
Q
pos it;60
Authorization Closs 4
y' Z
Authorizat ion Group 30
y' Z-
Authorization Object 10
y' Z
CATTFlows 8
y. Z'
i
i
I
I
I
I
I
i ,
,
I
I
!
I
.I ~ ~ I - I _I . - ..-....- .-... - _ ~ _ --..-_
---
- -- - - - - - - - -
logisticsInfoSystem
Event 2
y. Z
Unit 2
y. z:
Maint. &Transport Objects 10
y. z
Motehcodes
Matchcode 10 1 0-9
Motchcode Objed 4
y. z:
Messoges
Message Classes 2
y. z:
Message Numbers 3
Module Pools
8 Y z
8 ZffffUnn
4 9'
10 EY. EZ
3 Y o Zo
692 "PIENDA EM 21 DIAS ABAPH
Tabela A.3 Ccnft nucceo
Tipo de eblete Comprim. Conven!roo Notas
M6x. de atribul!rCio
de nome
Change Document Objects 10 Y or Z
Codepoges 4 9'
Data Elements
Dot e Element 10 y. Z
Data Elemenf Supplement 4 Se 0 diente crlou
o elemente de
"dodos
SAP Supplement 4 9' Se 0 SAP criou0
elemente de dodos
Data Models
Doto Model 10 y. z-
Enfity 10
y. t:
Development Closses 4 y. Z
DialogModull!s 30 Y ZtRP_*
RHJNFOTYP_9'
Dccurre ntction Modules
General,Text (TX) 28 y. Z
Test RunDescription 20 y. z-
Mo;n Chopter(BOOK) 20 y' Z'
Chapter of lMG 20 y. Z
Chcpter (CHAP) 20 y. t :
Chopter Note (NOTE) 26 y. z
Release Information 20 y. z:
Structure 12 y. Z
Online Text 28 y. z:
Domains 10 y. Z
Enha ncements
Enhancement 8 y. Z
Enhancement Project 8
Fund ion Codes
Functi on Code 4
y' Z'
Menu Exit 4 +'
Function Ubrary
Function Group 4 y. z:
User Exit Function Grp 4 XZ'
Function Module 30 Y_ Z_
Tabela A..3 Conti nuot;oo
Tipo de ob (eto
Field Exit Func Module
User Exit Func Module
Conversion Exits
GUI Status
IDOCs
Segment Type
Basis IDOC Type
Enhancement Type
IDOC Type
Includes (DDlq
Customizing Includes
Includes (Programo)
Include
Include for User Exits
(m6dulos de funo)
Info Types
lockObject
logical Data bases
Comprim.
M6x.
30
30
30
8
7
8
8
8
10
APt, DIUA, CO'VE'IOB0' ATRIBUI>\ODE 'OM' 693
ConvenCjQO Nota s
de atribuiCjQo
de nome
FIELD_EXIT.:
FIELD_EXIT_' y
EXIT"'pppppppp_nnn
CONVERSION_EXIT_""""JNPUT
CONVERSION_EXIT_""",,_OUTPUT
Apenas vtilizado
em uma tobela
criado pelo SAP
ffH = func group
Q = 6reo do
oplicotivo(forma
LOB, vejo Tobelc
A.2)
-.
..

II!' !!!! II!',


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

-
694 "'REHOA EM 21 OIAS AUPI4
A; COHVENtOES DE ATRIBUJ9,O DE NOME
695
Tabela A.3 Conftn uocoo
Tabela A.3 Contlnuocuo
Tipo de objeto Comprim. Notas
Tipo de obieto Comprim. ConvenCjQo Notos
Max. de atribuiCjoo
Max. de atribulCjao
de nome
de nome
Dialog Module Pools 8 SAPDY' SAPDZ'
System Barcode 8
v z:
Screen Module Pools 8 SAPMY' SAPMZ'
Standard Task 8 9'
Info Type Module Pools 8 MP9'
Stondard Roll 8 9'
Subroutine Module Pools 8 SAPFY' SAPFZ'
Structure (DDIQ 10
y. z
Update PgmModule Pools 8 SAPUY' SAPUZ'
SYSlOGMessage fO 2 y" Z
Number RangeObjects 10 y. z Tables
Parameter Ids 3 Y' Z'
Field Nome 10 Emestruturcs
Printer Macros Y Z 9'"
appe nd: YY- U
Relation Ids 2
y. z-
apenos
R/3 Analyzer Identifier 20
y. z
Index Nome 3
y. z
Reports
Trcnsporent, Pool, 10
y. z
Report Nome 8
y. z:
Cluster Nome
Report Cat egory 4
y. z-
Pool Nome T9' Pora tobelcs de
pool no pool
Report Variant ATAB parotipos
Tronsportable, Glabal 14 X CUS&
de informco de
Transportable, Local 14
cllente
i
Y'
I
Not Tronsportable 14 Z'
P9'
Report Writer
PA9' PB9' ,
Report 8
PS9'
I
1a carodere noo
I I
Report Group 4 1
11
carodere noo 0-9
HRT9' HRP9'
I'
Library 3 1a ccrcctere noo 0-9
HRl9'
:I Standard Layout 7 1
11
coroctere noo 0-9
Tobie Pool Nome 10
y. t:
SAPScri pl
Table Cluster Name 10
y. z
I'
I I
Layout Set 12 1a corodere ndc 0-9
Titlebcrs 3
,
Farm 16 y. z-
Tronsadion Codes 4
y. z I
Standard Text lD 4 y. z
Type Group 5
y. z
Standard Text Nome 32
y. t:
User Profiles 12 cny _ nee permitido
Style 8
y. Z
na 2
11
pasiC;ao
Screens 4 9'
Views
Pare soido de telc pora
> 0 progromos de di61ogo
ViewCluster 10
y. z
do cllente
View Name 10
Spaol
HelpView 10 H_Y H_Z
Layout Type 16 Y z-
ViewMaintenance Data
Fonl Group 8 y. z ViewContent reservodono TRESC
Device Type 8 Y z
Table Content
reservoda no TRESC
Page Former 8 Y Z
WorlcflowObjed Type 10 Y' Z'
-.-.-.-.-- - .-.-.-
696 "RENDAEM 21 DIAl ABAPI<
Vo ce descobrirf que existe m poucos objet os SAP dentro dos intervalos
de nome de diente e que, portanto, violam as convencc es de de nome
des cri tas aqui . Esses objetos foram criados ant es de as convenco es precedentes
serem adotadas. Uma lista dessas excecoes pede ser encont rada na t abela TOKZ.
. . . . . . ----- --- --- - .
B
Respostas cis perguntas dos
, .
testese 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 sist ema de R/3 .
5. Tres: dais para os servidores de apli cativo, mais urn para 0 servidor
de banco de dados.
6. Open SQL e0 dialet o ANSI SQL da SAP. Eurn subcon junto e uma
vari.<;ao do ANSI SQL.
7. 0 Open SQL tern eres vantagens:
Eportatil porque automat icamente econvertido em SQLnativo
pelo compon ent e de interface de banco de dados do pr ocesso de
tr abalho.
Soporta tabelas de utilizaci c de buffer, fazendo as programas
que 0 utilizam serem execun dos mais rapidamen t e.
Oferece t ratamento automdticc de cliente.
8. A pane de interface de banco de dados do processo de t rabalho
implement. Open SQL.
9. Uma nova area de rolagern calocada sempre que urn prognma e
executado, e cdesalocada quando 0 programa termina. A area de
hrtpJ I_ .campvs.c;om.br
rolagem contern as valores das variweis para esse programa e 0
ponteiro at ual do pr ograma.
10. Urn context e de usudrio ealoeado toda vez que urn usuario eferua
logon, e desalocado quando esre eferua 0 logoff. Ele comem as
informacces sobre 0 usuario, como aut orizacoes, configura 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
modo que 0 pr ograms nao utilize a CPU enquanto espera pela
entrada de usuario.
698 APREH DA EM 21 DIAS Am"
-.A.A .

----
-
-- -
- -- -
APEHDlCE 8. RESPOSTAS IsPER_ASDOS 1ISTES Emooos 699
diferenca na safda para esse programa, especificandc ou Ilia as aspas.
Entretantc, para evirar conversoes euma 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.
5 - wr 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 campo nie tern 0 ripe CLNT;ponanto, atabela
eindepe ndence de cliente. As instru\roes Open SQLopenrio em todas as linhas dentro
dessas tabelas. Nas figuras 1.29 e 1.30, 0 primeiro c:unpo na tabela e do tipo CLNT;
portanto. a tabelaedependence do clienee. As instrulioes Open SQL s6 operarao nas
linhas que tem0 mesmo numero de cIiente que seu ndmero de cliente de logon arual,
Die 2 , "Sew primeiro programe em ABAP/4"
Respostes do teste
1. Al oca uma area de trabalho padrao para a tabela e da para 0 programa
acessc atabela de banco de dados do mesmo Dome.
2. A area de trabalho de tab ela padrac ea area de mem6 ria alocada por
uma insrrucac tabl es. Essaarea de mem6riaternome smonome e amesma
estrutura que a tabela identi ficada na instruci o ta bl es. A instrucj c sel ect
utiliza-a par padraose nao houver a clausula into.
3. N a area de trabalbo de tabela padrao.
4. Para a mesma Iinha que a saida da write anterior.
5. sy-subrc
6. sy-dbcnr
7. A linha 4 sera executada 30 vezes, uma vez para cada linha recuperada.
8. N enhuma vez. A linha 4 nao ser.i executada se a tabela estiver vazia,
Respostos do exerd cio de
1. Este relat ori o exibe t odos as numeros e ccdigcs de emp resa do
fabricante databela ztx l fbl , onde a c6digo de empresa emaier que
a u igual a 3000. Note que bukrs eurn campo de caractere. Se voce DaO
cclccsr 0 valor 5000 entre aspas simples, a sistema automaricamente
a converted em caracrere paD a-comparacao. Nao hi nenhuma
..f: ...-
2. Mova 0 teste para sy-subrc depois de endsel ect, como mos trado aqui:
1 re port ztz0202.
2 ta bles ztxlfal.
3 sele ct * from. ztx l f al where lifnr l tke ' IA' .
4 write / ztxlfall1fnr.
5 endse1ect ,
6 if sy-subrc <> O.
7 wr1 t e / no records found' .
8 endif.
3. Haurn ponte ausente no firn da instrucio tables, e a rnimero do
fabricante deve ser preenchido aesque rda com zeros porque de eurn
campo de .caractere no banco de dados. (Esse componament o e
inteiramente explicado no capitulo sabre conversoes.)
1 report ztz 0203.
2 tables zt xl fa l.
3 sel ect * f rom ztxlfal where ll f nr > '0000001050 '.
4 wt-tte / ztx l fa l - 11f nr .
5 endsel ect.
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 t est e deve ser para
igualdade, n'o desigual dade.
1 report ztz0204.
2 tables zt xlfal.
3 select - fl"Olllltxlfal where l ifnr >
4 wrf te / ztxlfal -l1fnr .
5 endse\ ect .
6 i f sy-dbcnt - O.
7 wri te / 'no records found' .
8 endif.
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 > ' 0000001050' .
4 write / ztxlfal- lifnr .
.......................Aua..... - .-- - - .- - - - - - - - - -
700 ' PiE' O' EM2101' S """
,P!!lOlUHBPOOAS IsPERGUHTAS DOS 1ISTI5 EElIRdoos 701
5 endselect.
6 1f sy-subrc <> O.
7 write I I no records found I
8 endif.
6. Veja 0 program. original , .atabela zt xl f c3 ndo utilizada: a
para eta pode ser removida da linha 2. 0 into ztxl fal na linha 4 naa
enecessaria, uma vez que zt xlfal e. a ,ana de trab alho padrao. As
linhas 5 e 6 podem ser encadeadas juntas. A segunda expresssc que
utiliza sy-dbcnt na linha8 eredu ndante e po de ser removida. A linha
12 nao precisa de uma area de trabalho explfcit a, enrao pode ser
removida. Consequentemente, as linhas 13 e 14 devem ser alteradas
para escrever ztxl fbl, e a linha 3 DaO emais necessaria. As linhas 13
e 14podem ser encadeadas juntas. 0 programa simplificado segue:
1 report ztz0206.
2 ta bl es: ztx lfal . ztx lfbl.
3
4 S!1ect * f rom ztx lhl .
5 write : I ztx lfal- l1f nr,
6 ztx lfal-namtl.
7 eedse 1ect
8 i f sy-subrc <0 O.
9 wr;te I ' no records f ound in ztx l fa l ' .
10 endif.
11 uj t ne.
12 sele ct * from ztx lfbl.
13 write: I ztxl fbl- l1fnr .
14 ztx lfbl- bukrs .
IS . eneselect
16 11 sy-subrc <0 O.
17 write / ' no records f ound' .
18 end; f.
7. 0 erro de sintaxe ecausado pela endsel ect na linha 5. Ele deve ser
removido. Voce tambem pode corrigi r 0 erro de sintaxe removendo
a palavra si n91e cia instruqao se 1ect na linha 3. Enrr etant o, essa euma
solul;ao menos eficient e, uma vez que apenas uma linha sera lida. 0
operador de comparaclo na linha 3 tambem esta incorreto. Ele deve
ser .
report zt zOZ07.
tables ztxlfal.
select single * fromztxlfal where lHnr '0000001000'.
wri t e I zt xlfal- lifnr .
if sy-suerc <0 O.
write I 'no records f ound' .
endi f.
Dia 3, "0 Data Dictionary,. Porte ) "
Respostos do teste
1. 0 dominic d.a a urn campo suas caracterlsticas recnic as, como tipo de
dado e comprimento.
2. 0 elemento de dadoscont ern um nome de dominio, r6tulos de campo
para telas e listas, e a dccurnentacac de ajuda Fl.
3. Os dados de aplicativo se referem a dados utilizados pelos aplicativos
de R/3 como SD (Sales e Distribution) ou MM (Materials Manage-
ment) . Hi dois tipos: dados de transacio e dados-mest res. Exemplos
de dados de aplicati vo sao ordens de compra (urn exemplo de dados
de rransacao) ou as de fabricante (urn exemplo de dados-
mestres). Hi tambem clados de sistema, como dados de configuracio
ou meradados de DDIC, alem de dados de aplicarivo.
4. Nso, a do ponto decimal e pane da descricao do campo. Ele
esta contido no domlnio, nao armazenadc com 0 valor.
S. SE16, SE17, SM30 e SM3l. SE16 i mais comumente utilizado, e SE17
nao pode ser utilizado para arualizar dados.
6. Uma t abel a transparente t ern urn relacionamento urn para urn com
uma t abel a no banco de dados. Tabelas de pool e de clust er tern
relacionamentos mui tos para urn com tabelas de banco de dados.
Resposto do exerddo 1
Para essa solucao, veja a tabe la ztzl f al do sistema R/3.
Resposto do exerdcio 2
Para ver a solucao para a tabel a .. knal , veja a tabela zt zknal do sistema R/3.
A solur;ao para 0 reLat6rio ea seguin te:
1 report zt z0302.
2 tables ztz knal.
3 select ... from ztz knal.
4 write: / ztaknet- kunnr , zt Zknal-namel ,
5 ztzknal-cityc, zt zknal-regi o,
6 ztzknal-1andl.
7 endsel ect .
8 1f sy- subrc <0 O.
9 wrl te / ' No rows found' .
10 endif .
I I I - I
.&.PENDICE B: RESPOSTAS As PERGUNT.lS oos TESTES EEXERdclOS 703 ,
1. Nso. Voce njo pede "unir" urn Indice a uma insrrucac select. 0
otimizador sempre escc lherd urn Indice em t empo de execuclo.
2. Sim, mas voce deve aplicar a uma 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 t empo de execucac
para medir a diferenca.
Para a solucao desse exerclcio, visualize a tabela zt zknal online do sistema R/3.
Respostos do teste
Resposto do exercfcio 7
Dia 5. 110 Dat a Dictionary. Part e 3"
,
-;,-
1. Eles devem utilizar 0 mesmo dominic.
2. Dentre de tabela ztl, digite . INCLUDEno campo de nome de campo e
zsl no campo de nome de elemento de dados, no ponto cia rabelacode
a est rut ura deve ser incluida.
3. Urna tabelade t ext o ofere ce descricoespara c6digos contidcs emuma
tabela de verificacsc em multiplas linguagens.
4. mandt, spras, fl e f2.
5. Cada campo de tip o CURR deve fazer referenciaa urn campo de chave
monetaria (tipo CUKY).
Respostos do teste
Dia 4 , II 0 Data 0 ictioOl.la:ury+ , _

I APRE!'lOAEM 21 DIASABAP/4
Resposto do exercfcio 1
Para a sc lucic desse exerctcio, visualize a tabela ztzt005 online do sistema R/3.
Resposto do exerclcic.Z; _
Para a sclucso desseexercfcio, visualize a tabela online zt zt005s do sistemaR/3.
Nao se esqueca de comparar a cardinalidade e 0 cipo de campo de chave estrangeira
do relacionamentc de chave estrangeira com aqueles especificados online.
Resposto do exerdcio 3
Para a solucso desse exercfcio, visualize a tabela online zt zlfal do sistema R/3.
Nso se esquelja de comparar a cardinalidade e 0 tipo de campo de chave esrrangeira
dos relacionament os de chave est rangeira com aqueles especificados onlin e.
Resposto do exerdcio 4
Para a solucao desse exerctci o, visuali ze a tabela online zt zknal do sistema R/3.
Nao se esqueca de comparar a cardinalidade e 0 tipo de campo de chave
estrangeira de cada relacionamen t o com aquel es online.
Resposto do exerdcio 5
Par a a solucao desse exerclcio, visualize as tabelas online ztzt005h e zt zt005g
do sist ema R/3. Nee se esqueca de comparar a cardinalidade e 0 ripe de campo
de chave estrangeira de suas chaves est rangeiras com aqueles online.
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.
Resposto do exerd cio 1
Va para a transacao Data Di ct ionary (c6digo de transacao SE12) e exibaastabelas.
Examineas configuracoes tecnicas.
A classe de dados quant o ao seguint e:
MARA: APPLOdados-mest res, tabelas transparentes (veja a Figura 5.21)
LFAI: APPLOdados-mestres, tabelas transpar ent es (veja a Figura 5,22)
KNA1: APPLOdados -rnesrres, tabelas transparentes (veja a Figura 5.23)
A caregoria de t arnanho quanta ac seguinte:
MARA: a.regist ros de dados 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 determine 0 requisit o de espacc provavel para
uma eabela no banco de dados . Pressione F4 na caregoria de tamanho de campo
par a ver 0 nti mero de registros de dados que pode ser mant icl o em suas
categorias individuais cia tabela sem complicacoes. Essas complicacoes podem
ser, por exemplo, uma reorganizacao que t oma-se necessaria po rque 0 espaljo
maximo a ser reservadc para a tabela foi excedido, devido a caregoria de
tamanho mantida.
-

..

.-.
. --. """".
--
----

704 'PREN D' EM 2101'S ,",PI'
U ESPOSTAS ISPER.DNEM DOSTESTES EEXERdoos I 705
1. Sim. Qualquer alteracao no domlni o ex.ige que ele seja reativado. A
tabela tambem deve ser reativada e uma de consistencia
deve sec executada,
As solul1oes sao as seguintes :
1. A correta e ' Oon1 It bite.' Eta deveria ter sido colocada
entre aspas simples e ela exige duas aspas cons ecut ivas dent ro dele.
2. A e1+2 .2E03' . 0 caracrere de expoent e eE
,
DaO F.
e os decimais DaOsao permi tidos em urn expoente.
Respostas do teste
Dio 6. "0 Data Dictionary, Porte 4"
Di o 7. "Definindo dodos no ABAP/4. parte ]"

Respostas do teste
Resposta do exercicio 1
1. No utilitdric de banco de dados, de urn clique no bono Delete
Database Table. 1550 "derruba" a tabela, que com 0 conteudc 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 utilit ario de banco de dados. Seja cau-
telcsc quando fizer isso em uma tabela na SAP.
1_. B' h II ' . Id '"
.... - ".: :;': .... ""
A x -H::I.t'JnO .......
707
"pontes de carUo de to
.lPEHDlCI B: RESPOSTAS As PERGUHTAS DOS nsns EEXRClCIOS
t ypes : dollar (16) t ype p deci mal s 2,
p01nt(16) type p decimals O.
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.
Out put:
2. Os tipos de insrruco es que podem ser u tilizados sac dados e tipo de
estrutura. Os definidos pelo usudrio sao definid os no Data Dictio-
nary para facilitar a manut encao e ajudar a reduzir redundan cia.
1 3 4 5
9 8 7 6
1. Voce pode utilizar eq au =. Par exemplo, move vara to verb. eo
mesmo que varb = ver a. au varb eq Yar d.
2. Os operadores e operandos devem ser separados por espacos para que
as variaveis possam ser computad as.
1. A primeira constante predefinida eSPACE e 0 format e literal equiva-
lenre eI " ,
1. sperz
2. konzs
3. fdpos
Dio 8 . "Definindo dodos no ABAP/4. Parte 2"
.
Respostas do teste
Resposta do exercicio 1
Resposta do exerdcio 2
Respostg do exerdcio 1
Diq 9, "Atribuil,;6es, convers6es e c6Icul... o"'sL" _
Resposta s do teste
.......II!!!!!!!Iool L& L -.-.-.-- .,. _
As sclccoes sao as seguintes:
re port ztz0707.
par amet er s: p dat e li ke sy- dat umdef ault sy-derem,
p-fie ldl type 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.
3. A definicac esd correta.
4. A definiljio corr eta e I OOOOOF I. Nio deveria haver u rn titulo x. Urn
mesmo mimero de caracteres deve existir e deve estar em letras
maitisculas.
5. A defi nic;aocorreta e ' - 9. 9' . Lite rais numericos que cont em decimais
devem secenvolvidos em aspas simples e 0 sell sinal deve predominar.
6. Valores de POntO flutuant e ni o pode m exceder 1+308.
7. Hnio eurn caractere hexadecimalvdlido. Os caracteres vdlidos saoA-F
e 0-9.
8. A defiaicic esta correta. Vma aspa simpl es erepresentada, Se escri ta,
a saida seria I.
9. A defwc;ao esti correta. Vma aspa dupla denrrc de aspas simples e
representada. Se escrita, a saida seria I . I
1. A defini,:;io correta e dat a st_f1(S)type c. Urn hifeo Dio deve
aparecer na definiljio de urn nome de varidvel. a caractere sublinhado
deve ser utilizado no lugar dele.
2. A correta edata fl type c. a tipo de dado para. cara crere
eC.
3. A definiliio correta edata f l (20) t ype c. Nac deve haver urn espalio
ent re 0 nome de campo e iL especificacjo de comprimento.
4. as nomes de variavel nio devem iniciar com um numerico, e urn
comprimentc nso epermicido com0 tipo 1. A definic;ao corret a data
al t ype t
5. Adefinict o corr eta e date per cent type p decimals 1 val ue ' 55. 5
1

Urn hifen nac deve ser utili zado em urn nome de varidvel. Urn decimal
eespecificadc no valor, mas a adic;ao decimal s esd. faltand a. 0 valor
contern urn decimal, mas nia esd. colocado entre aspas.
6. A definiljao escl correta. fl pede armazenar tres digit os porque
(L'Z)-1 (Z'Z) -1 3.
APiENDA EM11 DIU AU r /4
Resposta do exercicio 1
706
.....-.. .
!
lPENDla B: RESPOSTAS is PERGUNTAS DOS rumEEXERdoos
.-.-.-. -. -..-.-.-....-...... -.-,
709 - ~ ~
"PREMOA EM21 DIAS ABAP/.
Dia la, "lnstruC;6es de cont role comuns"
Respostos do teste
1. A resp osta ea seguinte:
4. msgid
5. matkl
As duas coisas erradas no programa sio a declaracac de ubela de ztxt 005t
e as aspas simples antes cia variavel, 1and!. Declare a.tabela ztxt005t e remova
as aspas simples antes cia variavel 1andl .
case vi .
when 5.
when 10.
when ot hers.
endcese.
write 'The numbl!!r is five . ".
wr; t e ' The number 15 ten.'.
wri te 'The number 15 not f i ve or t en. ".
Dia 11. "Ta be la s inte rnas"
Respostos do teste
1. Na realidade, seu consultor de Basis configura urn limit e para a
quantidade maxima de mem6ria estendida que uma tabela interna
pede alocar. Se voce exceder esse quantidade, seu pTograma alocara
mem6ria privada do pr ocesso de trabalho e nao ma is sera capaz de
fazer roll out do seu programa.
2. Se voce fizer isso, 0 sistema alocara 8 KB da area de paginacao. A
mem6ria sera desperdicada e a paginao;:ao poderf aumentar , resul-
tando em baixo desempenho.
3. A insrrucao read ta bl e pede ser utilizada apenas para ler tabelas
int emas. Ela nao funciona com tabelas de banco de clados. Utilize
select single emvez dela.
2. Os operadores de strin g sao CP [ccntem padrao] e NP (nao contem
padrao).
3. As [ r e S instrucees de contrale de prcgrama SiD exit, continue e
check:
A instrur;io ex; t eutilizada para prevenir que mais processamen-
t OS ocorram nas instruljoes loop, select, do e while e nas sub-
retinas introduzidas par fonn.
A instrucic conti nue e utiliaadapara pular tawas instruljoes na
passagem areal de loop e ir pan a final do loop . Ela pede ser utilizado
com as instruo;oesloop, select , do e wh il e.
A instruci c check ecomo a inst rucao 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 ocorre no programa da seguinte forma:
I - -> C ZTXIOOI 000060 Ll SY-INDEX.
Resposto do exerdcio 1
Nos sistemas anteriores, as convers6es cram executadas convertendo a
partir do valor i direita do tipo de dado e 0 comp rimento do componente i
esquerda.
Nas linhas 9 e 10, havia uma conversao de c para n (de caractere para
numerico] e entao uma conversao de ppara I (de pardmetr o para inteiro).
Na linha 16, havia uma conversao de ppara I (de pararnetrc para int eiro}.
- .'1
.. Jl _I I _ .. I I ... 11 .. I I .. - . - .
710 I APRENDA E. " DIAS ASAP/' APblDICIUESl'OSTASAs PlRGUNlAS DOSTES1I5EE1Etdaos I 711
Dio 12. 'Tobelos internos .. Parte 1"
Respostos do teste
1. Sua alteraljao para sy- tabix seria ignorada e as instruc;6es operariam
nalinha na area de trabalba. sy-tebt xecomo sy-t ndex- modificando
qualquer urn naa iria afetar as operacoes de loop. Alem disso, 0 valor
de sy-tabt xereinicializado no endl oop, ea pr6ximapassagemdo loop
prosseguecomo se 0 valor nunca tivessesido alterado.
2. A tinicacoisa que sy- toccu pede dizer avoce 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 ztxl fa l.
data it 11ke ztxlfal occurs 23 with header li ne.
sele ct f rom zt xlfal i nto t abl e it. codif1que urn endselect
l oop at it.
write : I sy-t ebtx, ft - l andl , i t - regi a.
endloop.
ul t ne .
it- la ndl .. ' US '. modify tt index 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 Parte 2"
Respostas do teste
1. Campos numericos (ti pos 1pe f ) saopreencbidos comzeros. 0 resto
dos campos a direita do nivel de controle sao preenchidos com
asteriscos.
Resposta do exerdcio 1
report ztz1301-
data: begin of it occurs 3.
n(2) type n,
f2 ty pe t ,
f 3(2) type c,
f4 type P.
end of it.
it-fl '40' . it-13 ' 00'. 1t -12 a 1t -f4 4. append i t.
it-11 a '20'. It-13 .. 'SS' . it-f2 1t-14 2. append i t .
sort 1t by f1.
do 5 t imes.
1t -fl a sy-tneex 10.
1t-f3 a ' XX' .
1t -f2 a It -f4 .. sy-tndex.
read table 1t
wit h key fl .. it-fl
binary searc 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.
insert it index sy-tab1x.
endt f ,
enddo.
loop at it .
write : I it -fl , 1t -f2, 1t -13 , it-14.
endloop.
Resposto 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 .
select l 1fnr l andl from zt xlfal into table i t.
loop at it.
write: I i t-Hfnr-,
tt- tendl .
endloop .
712 , m HO' EM21 01'5 """
... . ..--.-.- - a .. a a ........... a -a
W OlCEHESPDnASls PERGUHT,S DDSTESTEl EEXERdaos 713
Die ] 4, II A instru!;oo wri te"
Respostos do teste
1. Voce deve desconecrar-se e conectar-se novamente no sistema R/3
para que as alterac;6es nos padroes do usuario tenham efeiro,
2. Uma m.is= deedi",o come" comurn v, quando aplicada a urn campo
numerico (tipos i , pe f), fazendo com que 0 campo de sinal seja exibidc no
ccmeco. Seaplicada aurn campo de caractere, a saida erealmenteurn 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. Emoutras palavras,os numerus
negatives nao eersc urn sinal e apar ecerac como se fossem positivos.
Resposto do exerdcio 1
1 report ztzl 40l.
2 writ e: / . . . .+ 1. + 2 + 3. . + 4'.
3 I ' Fi rst ' ,
4 40 'beceeeer-",
5 / 16 'January'.
6 /30 ' Fi rst '.
Di e 15. IITecnices de formete!; oo, Perte ]"
Respostos do teste
1. As erss graficas sao symbol s, icon e 1i ne. 0 programs deveter
uma instrucl o i nclude, i ncl ude < >. par a cada urna das adicoes
graficas a fimde utiliza-la. Par exemplo:
i ncl ude <symbol> f or symbols ,
1nclude <1 con> for icons .
i nclude <line> for li nes .
2. As duas adic;6es ut ilizadas com a instruc;ao report sao tamanho de
linha e contagem de linha. As varifveis utillzadas para as adic;6es
devem ser numeri cas, po rque ccntrolam 0 tamanho da pagina.
Resposta 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(dlamond as symbol , ' di amond' ,
/4 S)'lll f1ll ed ci rcl e as symbol , "ct rct e ",
/ 4 syr'I-gl assei as symbol, ' gla sses' ,
/ 4 SyrI- penci 1 as symbol , 'penci 1' ,
/ 4 S)'1llyhone as syrnol , 'phone',
/ 4 S)'II note as syrrbol, ' not e'.
/ 4 S)'lIl)older as symbol . ' f ol der' .
Die 16. IITecnices de Perte 2"
Resposta s do teste
1. A inscrucl c back pode ser uti lizada para reeornar a posicsc de saida
atu al.
2. Utilize 0 ski p sy- 1i net em vez de new- page quando quiser configu rar
uma nova pagina e quis er urn rodape na parte inferior dess s psgina
atual.
Resposta do exerdcio 1
A linha 3 comeca em urn loop do. Na primeira passagem par ele, a
write na linha 6 aciona 0 evento top-of-page. 0 valor de
sy-1 inno sempre contem a numero 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 valor avarifvel. 0 ccntrole ret om.a para
a linha 6 e Aeescrito. Em cada sucessiva passagem pelo loop, a hnha 8
incrementa a valor de e a linha 9 configura a linha de saidaatual. Isso
resulta naslinhas escritassucessivamente nasafda,comecandona linha
seguindo as titulos padrao.
A linha 4 comera em urn loop aninhado do. A ca.da pass agem par ele,
a linha 5 configura a de salda atual como igual aiteracao do
loop atual . A posicac atual de salda econfigurada como 1 na primeira
714 APREHDA EM 21 DIAl ABAPI4
vez.Na segunda vez econfigurada como 2e assimpor diante. Isso faz
com que a linha 6 escreva a letra A quaere vezes , nas colunas 1-4.
Dia 17,. 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 on-
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 econhecida dentro de urn
prog:ama depois do POntO em que edefinida. Por exemplo, se voce
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 o-
cal , voce po.d: acessar a vers ia global da variavel em qualquer ponte
antes da definicgolocal,
Resposta do exerdcio 1
. REPORT ZTZ1701 NO STANOARD PAGE HEADI NG .
TABLES ZTXLFAI .
PARAMETERS P_LANOl LI KE ZTXLf Al- LANOl.
INITIALIZATION.
P_lANDl 'US'.
AP!NDlCE UESPO\TAS 'SPER'UHTAS DIB1IITES HXERdolB 715
Dia 18, "Modulariza c;oo: passando pornrnetros
para sub-roti nas"
Respostas do teste
1. Os names de pardmetro que aparecem na instrucic fonn sao ch.amados
parJmetrosftmnaiJ. Essetermo eficil de lembrar porque formalpossui 0
radical form. Por exemp lo, na instrucao form s l using pt changing p2
p3, a s parametres pl, p2 e p3 sao chamados parametre s formais.
2. Pas sar uma varia vel do tipo de dado errado ou comprimento para urn
pargmetro digitado causa urn erro de sintaxe.
3. Nova mern6ria Ilio ealocada para a valor. Urn pont eiro para a posic;ao
original da memor iaepassado, em vez disso. Todas asreferenciaspara
o parimetro sao referecciasa posic;:ao original cia memoria. As at-
terac;:6esnavaria-vel dentro cia sub-retina atualizam a posic;:ao original
da mem6ria imediatamente.
4. As duas adic;:6es usi ng f1 e changing fl passaro fl par referencia c-,
elas SaO identicas na func;:ao. A ratio pela qual as duas existem eque,
utilizadas adequadamente, elas podem dccumentar se a sub-retina
alterari urn pargmetro ou nao.
Resposto do exercicio 1
A seguinte saida egerada:
Top of page, f la g S ct r = 1
START-OF-SELECTION.
PERfORM CREATE_REPORT.
FORM CREATE REPORT.
SELECT * FROM ZTXLfAl WHERE WDI P lAMD!.
PERFORM WRITE REC . -
EHDSELECT. -
EHDFORM.
f ORM WRITE_REt.
WRITE: I ZTXLFAl -LIFHR. ZTXLFAI-NWI. ZTXLFAl -lAMOl.
ENDFORH.
TOP-Of- PAGE.
FORMAT COLOR COL HEADING.
WRITE: I 'Vendors wit h Country Code ' . P lANDI.
Ull NE. -
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 instrucaowri te, 0 controle no programa
epassado com a evento Top-of-p age . Quando 0 evento Top- of -page esd.
complete, 0 controle epassadc de volta para 0 event o Start-Of-Select ion.
Dia 19, "Modula rizac;oo: modules de funcco,
Parte 1"
Respostas do teste
1. Verdadeiro. Voce nunca precisa especificar urn valor para urn pa-
ra-metro de imporracao que tern uma proposta.
2. Verdadeiro. Voce nunca precisa codi ficar paramet ros que sao expor-
cades do m6dulo de
::A' ..... A.-I ""'" .... -._....- I . -.- -.. - .-.-
. . . --
--
-
- -
716 APRE'D' E. 21 01'5 ABAP/4
Rasp.osta do exercfcio 1
Quando 0 programa executa, a tabela interna epreenchida e 0 modulo de
e chamado. Urna janela pop-up com 0 coareudo cia tabela intema
apar ecerd. Dependendo cia entrada escolhida pelc usuario, eta entao imprimira
utilizando a insrrucic writ e.
Dia 20, modules de funcco,
Parte 2"
APt'D'" So RESPOOAS IsPrn;uHTAS DOS15TES'ElERCiaDS 717
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 propriedades de urn dominio que sao
referenciadas.
3. A regra primaria para eseabelecer urn relacionamento de chave es-
trangeira e definir e vincular urn relacionamento entre multiplas
tabelas.
Resposta do exercfcio 1
Respostas do teste
1. As definiJ;oes de clades de dais dos parametres devemser idecticas.
2. Utilize0 ca.rninho de menu FunctionModule-Release-Cancel Release.
3. . 0 programa sera. abortado e resultardurn dump curto que tern 0 eITO
de tempo de execucto RAISE_EXCEPTION.
4. Elas DaOdevem ser utilizadas dentro de m6dulos de fun93.0. Em vez
disso, a insrrucio rai se deve ser utilizada porque eta ativa 0 charnaclor
para confi gurar 0 valor de sy- subrc no retorno.
Resposta do exercfcio 1
I" function z_tz_dh .
2 .-------- - - --.--- --- - - - - - -. ------ --.----------- -
3 local interface:
4 lKf10RTIHG
5 VAlUE(Pl) TYPE 1 DEFAULT 1
6 VAlUE(P2) TYPE I
7 EXPORTING
8 VAlUE (P3) TYPE P
9 EXCEPTIONS
10 ZERO_DIVIDE
11 .... - - - - - - - - - - - --- - - -- --- - - - - - --- --- - - - - - - - - - - - - - --- - - ---
12 if p2 D.
13 rais e zero_dlYide .
14 endlt.
15 p3 pI / p2.
16 endfunction.
Dia 21 , "Telos de sele<;co"
Respostas do teste
1. Os dois tipos de marchccde configurado sao ffsico e icgicc.
Eisicament e, os dados sao armazenadcs em uma tabela separada.
Lcgicamente, os dados sao gerenciados pela visualizacao de banco
de dados, que a mesma que 0 armazenamento transparente.
report ztz2101.
tables : mara, tOOlw.
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.
I .- . w. ..
indice
A__
ABAP/4
lisn gemde sintaxe basica,
230
primeiralistagemde
49
segundo prcgrama
listagem, 72
listagcmrevisirada, 263
lisu gem simplificada,
76
ABAP/ 4 Dictionary:
Maintain Technical
Setti ngs Screen, 189
ABAP/4 Editor
coneroleHelp (barra de
[erramentas
Application),.58
tela Edit Program, 51
2juda durant e
de ccdigos-fcnte,
65
ajuda Fl, 64
ajudaR/3 Library, 64-
buffers Cut and Paste;
59-60
cont rcles de barra de
ferramenw
Application, 57-58
contrcles de b21T2 de
ferramenw .
Standard, 52-56
61-63
hllpJt-.cumpus.com.br
tutorial ,63
tela inicial
ajuda, obtendo, 6S
prcgramas,
procu randc, 66
50
ABAP/ 4 Key Wor d Doc,
ccmando (menu
Util ities). 520
ABAP/ 4Text Elements:
Change Ti tle and
Heading. tela, 503
abordagem bottom-up
dominios, criando,
110- 111
elementos de dadcs,
criando,
tabelas, criando, 107
eabelas transparenres,
criando, 117-122
abordagem top-down,
tabelas
adicionando campo a,
122-113
cr iando, 107
Accounting, menu,
comando Accounts
Payable, 13
acessand o
biblioteca de 586
Ierramenta urilitaria de
banco de dados,
218-2[9
now de versac, 96
acrescentando campos a
tabelas, 126
Active, versoes de tabelas
comparando com
Raised,2 17
comparando com tabelas
de: banco de dados,
219-220
descri ct o, 216
adapt2!roc:s automaticas e
iostru'iao move. 285-287
de comprimento
e tipos de dado.
inst ru'.?o move, 285
de tipo e tipos
de dados,
move, 286-287
arre dondada,
write, 470-471
binaria de pesquisa,
read table, 359
adi,?o de campos
correspondentes, 421-422
decimal, instru'.?o
wri te, 470-471
e correspondences,
instrucoes, sintaxe, 299
a monetiria,
wri te, 471-473
subtr.l,?o,
multipllcaeio, divisao e
ccrrespondentes,
listagem, 299
graflcas, tipos, 697
720
! APRENDAEM 21 nus ABAP/4 INDICE 721
descricfo, 236
alccandc dados glcbais, 620 Applicati on, berra de
at selection-screen, even to, buffer emdados no bl occs (elementos de
Administration, ccmandc alter.tndo
ferramentas, 16
&55 servidcr de aplicativc de tela),
(menu Tools), 21 fl. ucilizalj6es, 715 batao Foreign Keys,.liS
at user-command, evenro, no Open SQL, 36-37 dcscric;,io, 667
ajuda Fl
nomes em eabelas, 125 bode Object Log. 230
655-65& definindo 0 sistemaRl3 botoes de efeieos em
campos. adiciorando a, padrces do usuf ric, 712
botio Technical Settings,
ativando como, 26 caix2s de grope, 51
135-136 parametres, descricrc, 193
m6dulos de funlSio, portabilidadedeecdigc, buffer em registro unicc,
de 607
criandc bcroes em, 656
&04-605 36 208-209
elementc de dados, 113 pane de interface. 623-627
Applicat ions, area do menu
. objeros, 107 prcjeeandc e buffer em tabelas,
element os de dados e, 102 ambiente de t exto, principal , 10
atribui p,o di.n.amica, desenvolvendc, campos uti lizando, 196-213
inserindc linhas em 380
APPLO, classe de dados ,
simbolos de campo, Valu. Tobie, 165 atual izandc Infcrrmcees,
u belas, 130 analise de programa. 194
309-310 suporudos pelc R/3, 21 201-204
links de hiperrexto, realizando, 319 ar ea de tela de menu
atribuip,o. instru;6es barra de status , 17 buffer em sincron izacsc,
adicionando.136-138 aninhandc estrutu ras, 172 principal . 17
clear barns de ferra mentas 197-201
tela ABAF/4 Editor. Edit ani nhando loops do, 713 Command Fi eld, 19-20
corn adic;ao, 289-290 Ap plication (ABAP/4) , bypass de buffer, 204
Program, 64 anos fiscai s, pertodos de
In terface Menu, 17-19
sintaxe, 287 57-59 eecsrics, 211-212
tesrandc, 136 publi ca;ao, 439
ar ea de de tabela
codificando.291 Application, 16 deslocamencc de buffer,
ajuda, possiveis entradas, aplicarivo, areas, c6digos padrio,descrlc;ao,698
286 bode de Log de 210
150
para, 690 area funcional ,
move, 291-303 cbjetc, 230 resumo.212-213
ajuda, sistema de aplicativo.dadosde conhecimento, 9
adaptac;oes bot i o Foreign Keys, resumo das ccnfiguracees
ABAP/4 Edito r 97
Area Menus. tipo de objeto,
automancas.292 148 tecniC2.!,221-222
ajucUFl , 64 tipos , 701 &91 regras de ccnversjo, bcuc Technical tecnicas .204-205
eodigcs-fonte, ajuda apl icativos , conjuoto areas de pagina;ao.
exibindo, 295 Settings, 193 tipcs de uso de buffer
ao editar, 65-66 padrio, 7
sy-toccu e, 710
stri ngs de campo, criando botbes em, 656 cheios, 206-207
Initial Screen, 65 append lines, inst.ru'iao,
areas de trabalho expl fcit as,
297-303 Standard (ABAP/4 genericcs, 207-208
Rl3 Library, 65-66 392
77,354
subcampos, 296-297 Di ctionary),67 registrc unico, 208-209
tut orial,64 append sorted by,
areas de t rabalhc imp licitas,
move-corresponding, Standard (ABAP/4 resurno, 209-210
ajuda Fl instrUc;ao, 413-417 354
sintaxe, 303 Editor) buffer, slncronizacio
campos, adicionando, Append Structu res, tipo de areas de trabalhc, expllcitas
arua lizando tabelas com cont roles, 52-53 descricsc, 197
135- 136 obj eto, 691 versus implfcitas, 354
buffer. 201-204 recurso Find and intervale, configurando,
elementos de dados e, append. ins tru cio, e tabelas areas funcionais (m6 dulos )
AVI select, Replace' , 54-57 200
102 int ernas Ionres de inf or m2'ioes
processamento, 74 Standard, 16 buffer. urilizaljao completa,
inserindo Iinhas em adi c;:io de ocorrencias, em, 10
Co mmand Fi eld, 19 20&-207
eabelas, 130 357-359 visio geral, 8
B
Fin d button, 280 buff er, generics,
links de hipertexrc, sintaxe, 354 areas trahalho de tabela,
barns de menu, 16 207-208
136-138 APP Ll, classe de dados, 76-78, 354, 564-566. 698
Back, controle (barn de
barras de tfrulo, 16 buffers Cut and Paste
testandc, 136 descricio, 194 arredondament o,
[erramentas Standard).
Basis, area.do menu (ABAP/4 Editor), 59-60
ajuda F4, chaves
APPL2, classe de dados, especific ando, instru'i:\o
ABAP/4 Editor, 53
principal, 10.20-22 buffers de programs,
est rangeiras e, 150..1 51 descri cac, 194 wri te, 482-490
back, instru ;io
Batch Data descri;ao, 236
ireas fun cionais, 10 Appl ication Logs, ti po de at end of, instru'iio,
sinraxe, 537
Communications bypass de buffer para
diilogos de manuten';i o. obj eto,691 440-441, 448-449
utiliuc;oes,713
(BDC) , chaves tabelas, 204
134 appli catio n, barn de at firs t, insttuc;:ao, 440-444
Back, tech. pression.ando,
estrangeiras e, 152 bytes de preenchimeato,
dominios, 111 ferramentas (ABAP/ 4 at last, 440-444
75
bibl ioteca de 301,303
alinb3ment os, 30J Editor ). 57-59 at new, ins truc;io. 444-447
banccs de dados
602
- .-.-.- II
INOlO' I 723
...
1
I
I
I
candidatos-chave.
156-157
de dados,
util i.zand.o para,
657-659
144-145
cbaves estrangeiras
adaptadas, 163
chaves estrangeiras
compostas, 1521504
chaves esrrangeiras
constantes, 163
chaves estrangeiras
genericas,
chaves pri.marias . indi ces,
184
Check. Table, proposta,
campo Value Table
como, 166-167
Check, controle (barn de
[erramentas
Application), ABAP/ 4
Editor, 58
check,
comparando instru es
exit e continue, 341
loop at e, 364
siataxe, 340-341
ueilizacces, 708
Check.Table, coluna (tela
Dictionary:
Table/Structure]
chaves estrangeiras e. 149
fun c;6es de. 167-168
CIA, CN, CA e NA,
lisbgem 322
classes de dados, 194
cJassificando
select em adi;a o de
"'bela, 428
clear.
com 289-290
sintaxe, 287, 0407
ScreenCams, instalando,
44
utilitirio Copylt, J24- 125
centralizando cabe;al.bos de
pagina, 516
chamandc m6dul os de
luD(io, 609-613
dado. glob';', 619-622
executandc urn exemplo,
611-613
call function,
609-611,613
Change Document Objects,
eipo de objeto, 692
Change Vendor. In itial,
tela, 12
change. documentos,
218-220
change, modo, 5J
cbaves estrangeiras
achpada, 163
ajudaF4 .. 150-15 1
campo Value Table.
164- 165
como prcpcsta Check
Table , 166 167
pr opcsitc, 165-166
cardinalidadede. 154, 658
coluna CheckTable, 149
152-15-4
constance, 163
criando, 1-46, 1049
144, 656
aurcmatica
de campos, 149-150
genericas,
161-163
programas em lote e.
152
testando, 149
tipos de campo, 156-160
carnpos-chave, 156,
157-160
ca.m.pos-chave
descricac, 156
padri o, instrU;io read
table, 370
tabelas de textc, 157-160
Cancel, ccntrole (barra.
ferrame ntas Standard),
ABAP/4 Editor, 53
cancelando a versao do
m6 dulo de 629
candidatos chave,
156
cara ctere, literals de string
de, 239
caractere, operadores de
string de. if,
321-326
caractere, tipcs de dado

movendo de um.astring
decampo para outre,
300-301
caracteres eceueuados,
classifiando, Iistagem,
380- 381
caracteres cu.ringa, t ela
Search/Replace, 55
caracteres especials, t ela
Search/Replace, 55
caracteres hexadeci mais, 706
caracteres invaIidos em
nomes de programa, 689
cardiaalidade
chaves escaogeiras, 15-4,
658
658
nlores de X, 155
valores de Y, 155
case, sintaxe.
326-327
CA17Flows, tipo de
objeto, 691
CD-ROM
..... I I _I I I
722
APlEN DA EM21 DIAS AUP/4
C
cain de didlogc SAP Rll, reseandc, 136
mensagens de erro, alterandc 0 comprimento
cabecalbos e rodapes de
640-6 41 de, 10<, 127-128
I:
psgina
caixa de se!e;:io, parametr o, campos de quaneidade,
centr.dizando,516
670- 671 requis ites, 170
format ando c imprimindo
cains de gro po, efeitcs de campos mcneurios,
cabecalhos manuais de
bctoes de 51 168-169
pagina, criando,
calculando datas, 308-309 chaves estrangeiras,
519-520
calculos, executaodc
cabecalhcs padrio de
compute auro mdrica de. 149-150
pagina,
operadores para, 305 controlando a
armazenandc, 514
sirnaxe, 305 de, 71
cabecalhcs padri o de
inStfUliOes add e convencees par:l.
psgina, criando,
corr espond ences, de nome, 105
513- 515
sin taxe, 306-307 criando domin ies, 103
cabecalhos padrao de
calculos, reallzandc elementos de dados, 102
pagina, tradualadc,
adicione e adicicne - select. em
515-517
de eabela, 430
cabecalhcs padrio de
correspondences, pcntos decima is, 701
pagina., utiliundo
siataxe, 306-307 refereaci a, 169
varifveis em, 517-519
data, 308-309 rabelas, adicionando a
csbecelhos padri o de
compute. abordagemtop-down,
pagim,
operadores para, 305 122-124
visualizando e
compute, " acrescent ando, 126
modificando,
sineaxe, 305 inserindo, 126
514-515
call function, tabelas, excluindc de, 127
rcdapes de pagina,
609-611 Value Table
criand o, 520-523
inserin do chaves estrangeiras e,
cebecalhos e rodapes,
auromaricamente, 613, 164-165
formatando e
649-650 como proposta Check
imprimindo
Iiseagem de parimetros, Table , 166-167
cabecalhos manuaisde
612 prcposito, 165-166
pigina,criando, 519-520
sineaxe, 610-611 sem chaves
eabecalhos padrio de
camadas (tien), dd uu(io, 23 esrrangeiras, 168
pagim
campos campos de referenda.,

ajuch Fl 169
criando, 513-5J5
.2.dicionando, 135- 136 campos de sist ema. data
m.duundo, 515-517
links de hipenexto, areal e t empo. 244
utili zando variaveis
adicionando, . campos empacotados,
em, 517-519
l3 6-m comp ri me ntos de sai da.
visualizan do e
links de hiperte:l.:to, 463
modi ficando,
solucionando campos monecl n os. 168
514-515
problemas, 138 campos numericos, 299, 710

:0;
i!a
A A A A A.a a a A - , . -.--.-. . -.- - - - - -
724 I APREII DAEM21 DllS HAPH i
IHDlCI J 725
cliente de logon, definiio,
AJ3AP/ 1, Editor; Edit
Command Field, con trole bufferizandotabelas, 27 crdem de precedencia
32
Program. tela. sjcda
(barn de Ierramentas 196-213 para tipos de dado,
cliente/servi dor de duas
enquanrc editando ,
Standard), A:BAP/4 campo Size Category. companndo com 317
65-66
Editor, 53 195 instrUl;oes exit e sintaxe, 316-317
cliente/servidor em tres corcendrics, parirnetros
como de leone. ceaarios com rabelas check, 341 while. sintaxe, 336-337
eamadas
1:, 609
write, 501503 de usn de buffer, loop at e, 364 contrcle, iaterrupci o,

pesquisando e
como de linha, 211-212 Iistagem, 338-339 prccessamento
RJ3 arquieetura de sistema
robstiruindo em, 56
write. classes de dadcs, sintaxe, 338-339 on change of,
servidor de aplicativc, collect,
como de simbolo, 193-195 utiliza!;Oes, 708 451-458
24-25
combinando linbas
instrU!;ao write, 500-501 deslocamentc de controlando a sequencia do loops e, 452-0454
servidcr de
confonne elas sao
como de tcxto, buffer, 210 programa ut iliz.a.ndo, 454-458
24
adicionadas a tabclas
instrocrao sort, 379382 ntimerc de exteas ces, comparando com as instru!;io sum, 4049-0451
servidor de banco de
int emas,lisugem, comparaliOcs 195-196 instrUC;Ocs exit, insuuC;6e:s at first e at
dados.25
418-419
instrUc;ioif, conversces tlenicas de usc de continue e check. 304-1 last, 44Q....4
servidcres,
sintaxe, 04 17-0422
de dados de lieerais buffer, 20+206 check, 339-3041 instruc;oes at new e at
configunndo, commdos
durante, 317-319 tipos de usc de buffer, insauc;aocontinue, 337-339 end, 444-449
25-26
menu Accountin g, crdemdeprecedecciapan 205-209 instroc;io exit. 327-328 controle, ineerrupcces,
clieare/servidor single-tier,
Accounts Payable, 12
eipcs de dados, 317 resume, 221-222 controle Help (barn. de 440
dcscricrao,.23
menu Gore, Text comparac;Ocs e suas formas confi gurando matchcodes ferramentas Standard), controle, nIveis de,
Cl iente/Servid or, 2223
Elements from the
altemativas, 316-317 logicamen te, 659-660 ABAP/4 Editor, S3 descri \;io. 445
clientes, sistemas de
AJ3AP/4 Edit or, comparando adic;:ao, confi gur.mdo padrOes do controle, instruc;oes conversees de dados
inrtaIac;:ao R./3 36
670
instru-rao read table, 373. usuario, 280 case, sintaxe, 326-327 insuucrio if
Clipboards, AJ3AP/4
mcnu Program 375 consistincia, do exibindo. 319
Editor, 59-60 Cnpy, 77
componcntes, grupos de utilizando a fcnamcnta sintaxe, 328-330 Iiterais durante
Codepages. tipo de objeco, Save As, n
fun,.o, 638-640 utilittria de banco de . t erminan dc loops compancr6es,
692
menu System
comprimento fixes, ripos dados, 226-230 infinit os, 330-332 317-319
codificando
Create NewSession, de dado, 244 em nametab, 228-230 varying addition, instrucrao move
express6cs matem:i.ticas, 76
comprimentos de saida papel de nsmeeab, 227-228 332-334 adaptaes
306
Status, 20, 95
campos de DDIC, 462 constant es. 261262 vuying/enddo autom:i.ticas,
write, 342 menu Tools campos empacot ados, CONSTANfS, instruc;:ao, additi on, 334-335 293-294
instrUc;oes de Adminism tion, 22 462-463 sintaxe, 262 elseif,320 regras de convers j c ,
291
Development desaic;ao, 461 consultorcs, conhecimento if. 315-326 exibindo, 295
c6digo
Workbench, 12 compute. fun cional da :ireae, 10 ccnversj c de dados de copiando
areas de eplicaeivo, 690 menu Utilities operadores pan, 305 ccatagem de Iinha, adicrao lit eral durante dados em tabelas intcrnas ,
colocando comentirios
ABAP/4Key Word sintaxe, 305 e lisugem de umanho de comparacees, 391-395
em, 85
Doc, 534 Concatenate, controle 1inha, 510 317-319 m6dulos de 640
exemplcs, cortando e
Help on, 65 (barn de [erramentas instrul;io rcpon, 508-513 conversees, exibindc, tabelas, 124-125
colando do sistema de comentarios Applicati on) , ABAP/ 4 rodapes,criandc, 319 Copy To Buffer, con trcle
ajuda, 65
c6di go, substituindo em, Editor, 58-59 520-523 opcndores de string (barn de ferramentas
pcreabilidade de, 36
85 confi guracoes tecnicas sintaxe, 508509 de caractere, Application), ABAP/4
c6digos de tranSayao,
codigo- fome, parimetros exibindo, 193-213 utili.ando,509-511 operado res logiccs Editor,S8
definicrao, 19
e, 609 . bufferiz.ando resumo contextos do usuUio para cperaados, Copy, comando (menu
ccdigos-fonte
Command Field, 16, 19-20 de tabelas, 212-213 alocando, 698 316-317 Jlrogram), 77
A A I I I I " I .. I I.-a a-. a-.-.--.-.-
726 I "PIEND'" EM 21 DllS AUP/4
IHDICE 727
Copylt, utilitirio, ubeI",,106-107
Data Browser: Table:: Decimal Places , campo (tela Delivery campo {tela dialogo com 0 ciiente,
CD-ROM, 124-125 tabelas eraasparentes
Selection. tela, 70 Dictionary; Maintain Dictionary:
carpa (tabelainternal, 350 abordagem
Data Dictionary (RIj Data Domain). 109 Table /Sttucture: Change pan de: nome,
Create Foreign Key, tela, bonomup.1t7-122 Dicti onary) de dadcs dentro Fields),l1('-117 691
148,163
solucionando =npos de m6duJos de desativandom6dulos de: diaIogo, passos
Create: NewSession,
problemas. 119-122 comprimeneos de 605 604
comando (menu tela Dictionary:
,arch, 462 definindo descartaadc versoes iniciando, 29
System). 76
Table/Structure: ccntrolandc a constant es, 261-262 Revised de tabe las, didlogo, programas, 46,691
criando
Change Fields, 117 71 puametros pan. 22)-224 Di ctionary: Change Data
botoes na barn de
curses de treinamento, sites defuli90es,exibUldo,70 interfaces, 605 describe able, Element , tel a, 112
ferramen tas d. Web, 10 descricac, 67 strings de campo sintaxe, 389 Dictionary: Initial, tela, 67
Appli cation, 656 Cut and Past e, buffers estrururas, 68 de dados, descritioes de campo, Dictionary: Maintain
campos, dominios, 103 (ABAF/4 Edi tor), 59-60 objetos 263-266 pesquisando, 82 Domain, tel a
chaves eseangeiras, 146, Cut, controle (barra de ativando, 107 tables, desempecbo, aprimorando campo Data Type,
H9
[erramentas impcrdncia de, 96 268-269 buffer em resume de 108-109
domfnios Appli cati on), ABAP/4 de. 67 tables, ubclas,212-213 campo Decimal Places,
abordsgem Editor, 58 tabelas , 68, 70 int en gindo com buffer em tabelas, 109-110
bottom-up, 110.111
rabelas e'estruturas, select, 269-270 cerWios com ubelas de campo lowercase Letters,
tela Dictionary:
0
incluindo na Listagem insuu;ao tables, usa de buffer, 211-212 109-110
Domain,
dados
destring de.campo,265 visibilidadc, 270 deslocamento de buffer, campo Output Length,
108
de tabelas, copiando,
ripos de dados , mapeando utilizando como 210 109-110
WTSJ4S ieutiliz.ando,
124-125
pan tipos de dado vu1aveis do ripe -__ de usa buffer, campo Shon Text, 108
104-105
defiaiado, 566-568
ABAP/4,246-247 char, 267-268 204 -205 criando dominios, 107
elementos de dados
exibiadc
utiliz.aes,67 sub-retinas tipos de uso buffer, Dictionary:
aboedagcm
modificando e,
Data Elements, ti po de definindo e listagem 205-209 Table/Structure, tela,
bcrtcm-up, 113-116
127-128
objetc, 692 de chamada, 558 desenbo de Iinha, care cte res . coluna CheckTable, 149,
solucionando
ucilizando seu pr6prio
Data Models, tipo de em grupos de funCiaO, 503 167
probl emas, 115-116 cb jet o, 692 627-628 exibindo, 506-507 Dictionary:
tela Di ctionary:
prognma. 135
Data Type. campo (tela tipos com a desenvclvedcres, Table/Structure:
globais, cipos, 619
Change Data
linhas inserindc em
Di cti onary: Maintain . type, 270-272 conhecimento funcional Change Fields, tela, 117
Element, 112
tabelas
Domain),108.109 varii veis, 714 de area e, 9 Display Symbols. Hsta gem,
grupo s de ripe, 274-275
navegadores de dados,
data, cilculos, reallzando, de dado s, deslocamento de buffer, 500501
indices , 187-189
utiliz.ando, 128-131
308-309 u""""",do,241-243 210 Display: Change, ccnercle
indices secundsrics,
solucionando
data, campo de sistema parameters, Development Classes, tipo (barn. de ferramentas
diretrizes para, 189-190
problemas, 129-130
sy-datum, 244 utilizan do, de objeto, 692 Application), ABAP/4
m6dulos de func;ao, 601, data, formatando, instroc;ao 247-254
<
Development Workbench Editor, 58
validandc com a int erface
613-615
do ususrio, 145
write, 479--481 tipos de dados, area de menu principal, 10 entre maiusculas e
objeeos raatchcode,
dados e estattstica, lis tag em,
DB Utility: Transparent 243-247 compon entes , 44 minesculas. Iirerais de
660-665
567
Tables: Database deixaadc cbjeecs de string de caractere, 239
programas
dados globais
Paramet ers , tela, 231-232 eventcs, 55-4-557 desenvolvimento, do,
processo para, 48-50
alocando, 620
deci din do quando urilizar sub-retinas, 561-563 exibindc , 66 sintsxe, 328-329
solucionando
tipos .619
navegadores de dados, delete, slntaxe, Dialog Modules, tipo de rerminando loops sem
problemas, 50 134-135 408-409 objeto, 692 fim, 330-332

-
728
APRENDA EM 21 DIAS lBAPI4
INelCE 729
varying, adi'iao, 332-334
relaeorios comtelas de 514 estru turas, testando e indices secundsrios, indices, 187
varyinglenddo, adi<;io,
selcljio,557-558 elementos de tela e, 669 modificando conteudc 190-191 Indices secondaries, 186
334-335
rornando padrio para
515-517 interne de tabela, 388 linhas em tabelas intemas, nameeabdaferrsmenta
do, loops, 713
inicio cia selecfo,
elementos de texto, estru turadcs, tipos, 408-412 utilicl.ria de banco de
documentando excecses na 551-553
annazenando, 514 utilizando, 272-273 m6dulos de 640 dad05,227
interface do m6dulo de Dup li cat e Line, contrcle elseif 320 event o de tabe1as, 125,232-233,705 o log de II. partir
funl'jio,648
p649 (berra de ferramentas
enddo, listagem 334-335 sintaxe, 654 exemplos de tabela de dentro do utili tario
Documentation Modules, Application), ABAP/4 eadform, instJut?o, event os relacionemeneos de chave de banco de dados,
tipo de objeto, 692 Editor, 59 de, 558 519 primaria, 439 230-231
Domains Display, t ela, 669
end-of-page, evento, efeitos da safda, visio geral, 438-439 objetos de
Domains, ripe de objeto, .
E
521-522,530 e parada exibindo desenvolvimenco, 66
692
edit or- call, instru!jao,
Enter, contrcle (barn de dentro cia listagem, caract eres de stmbolos, parametres de
domfnios
sintaxe, 395397
ferramentas Standard), 555-556 leones e desenho de armazenamento

elementos de dados
ARAP/4 Editor, 53 efeitos na instru!jw writ e, Iinha, 506-507 dentrc do uciIit:irio de
earaceerjsticas, 717
para
erros em m6dulos de 550 de teda de banco de dados,
campos
caraceerfstico de
fun!jio, corrigindo, envolvendo condi.liio ou fuo!jao, 19 231-232
alteraado 0
modificando vinculou
640-641 loops denrrc de configuraes tecnicas regras de ccaversac na
ccmprimentc, 104
com, 717
escopo da pesquisa, I istagem, 552-553 pan tabelas, 193 documenracsc de
criando, 103
cardinalidade, descdcac,
configurando, 55 Iistagemdo Basis, 546 buffer, usa de, 196-204 palavra-chave do
convencees para
escrevendo Icones na HSb, programas de driver e, 547 buffer em resumo de ABAP/4,295
658
atribuiliio de nome,
contecdc de, 701
Iistagem, 501-502 acionando em ordem tabelas, 212-213 tabelas ou esrruturas
105
convencoes p:ua
especificg!jao de ditadapela listagem campo Size Category, (DOlC), 70
criando
atribui!jao de nome,
comprimentc, instru!j<io do programa de 195 variaveis desistema,
abordagem
105
write, 470-471 driver, 548 cendrios com tabelas 281
bottom-up, 110-111
criando
especiflcando e acionando tapa de de usos de buffer, Exi t, contrcl e (barra de
tela Dictionary:
abordagem
comprimento com a pagin>,550-551 211-212 ferramentas Standar d).
Maintain Domain,
write, 341344 deixando.554557 classes de dados, ABAF/ 4 Editor, 53
108

estouro, sum, ordem de execccac de 193-195 exit, instru!j<io
solucionando
102, 668
problemas, 115-116
450 eveneos, 548 deslocamenro de comparando com
obrecdo a documentacso
tela Dictionary:.
estruturas relat6ri os com eelasde buffer, 210 continue e
do SAP,l11-112
ChangeDau
aninhando, 172 sele;ao, 557-558 namerc de extensoes, check, 341
prop6sito, 701
Element, 112
criando, 171-172 tor nando padrio par.l 195-196 instr'U!jao loop at e, 364
reativando, 705
descricao, 102
DOle infcio da tecnicas de uso de sintaxe, 327328
reurilizandcversus
documeneacioao salver,
exibindo, 70 551-553 buff", 204-206 708
criando, 104-105
113
versss eabelas, 70 tipos de usa de buffer, exportacac, parametres,
driver, programas
dominios, 102
include chain, defmi;ao, em 205-209 descricao, 607
descricac, 547
elementos de tela,
173 interface do modulo converse es de dados, exportando/importando
eventos
elementos de texto e, 669
inc1uindo mnltiplas vezes de 648-649 if, 319 parte da interface.
acionando 0 tOpO de
elementos de textc
em tabelas, 174-175 visac geral, 607 dados, utilizando os seus 623-627
pagina, 550551
padrio de
pesquisandc variaveis de excluindo pr6prios programas, exp ressoes chave,
deixando, 554-557
pagina, utilizando para
sistema, 283-286 campos em tabe1as, 127 135
utiJizando, 367-369
ordem de execu!jao,
eriac, 514
syst,82 comendo interno de uma documenta,?o de
expressoes matem.iticas
548
versus tabd as, 171 tabela, 403-412 palavra-cbave, 534 codificando, 306
A IIII.II - . - . - . -.-.-.-.-.- . -.- . - . - . -.-.

- -

730 , APlENDA EM.!1 DIAS AUP/4
-
tipo d. 308 Field Name, coluna (t ela como de stmbclo,
pos ition, 538-539 m6dulos de
extensOes Di ctionary:
500-501
print-control, 533 ccpiando,
definil'o, 195 TobI, /SttUctur" Change
exibindo stmbolcs, leones
set blanklines, renomeando e
exibindo numerc alocadc Fiolds),117
e caracteres de
set margins, 533 excluindo, 6-)
para tabelas, 195-196 Find Next, contro le (barn desenho de linha
skip, 534-536 Function Module Change:
resumo tecnico cbs de Ierramentas
disponiveis, 506-507
U.DUnhO depi gIDa; Administration Scre en,
configuracoes, 221-222 Standard), ABAP/4 sineaxe pu:l 500
contrclaadc, 508-511 639
Editor, 53 formatando eecnicas, 507-508 Function Module Create:
E
Find, bou o (barn de cebecalhose rodapes de
eelasde Administration, tela,
FOI, include, deflnindc
ferramentas Standard) pagina
de bctoes de 613
ABAP/ 4 Edit or, 53 csbecalhos manuais de
oPl'o, 672-673 Function Module Displays
sub-retinas em gropos
campos de variiveis de pagina, criando
instruli10 parameters, Documentation, tela,
de com, 627-628
sistema, loca1iz.ado, 280 varidveis em,
668-670 636
F4, ajucb, chaves estrangeiras
1, listage m, 715 519-520
Function Module Edit, t ela,
e, 15C-151,154
form,
cabecalhcs padrao de
selection-screen 609
fax, envi an do rebt6rios
definicdo variiv eis em, pl gitu, blockwith frame, Function Modules , t ela, 636
par, 511
571 armazenandc, 514
667
Ierrsmenta de rastrelc de
nome s de parimetra, cabecalhos padrio de
insuuljio
G
SQL, determlnandc qual
Indice euti1izado,
715 pagina; criando, select-options,
Goto, comandos do menu,
sinuxe, 559 513-515 671-672
191-193
utilizal'o de 558 padrio de
Text Elements from the
Ierrameata utili tUia de
instrues
ABAj)/4 Editor, 670
banco de dados
forma gerada de programas, p:5.gina. traduzindo, selection-screen, 667
gropos de
47 515-517
parimeno de cain de
acessando, 225
de Iista, cabecalhos padrio de
670-671
componentes,638-64O
excluindo e recriaadc
527-541 p:5.gina. utiliundo parimetro de cain de
definindo em sub-retinas,
t abelss, 232-233
margens configuradas, variiveis em,
de
627-628
fun es, 225-226
new-line, 528-529 517-519 de tela, 671
listagemde zexb, 622
log de ativali1o, exibindo,
new-page, 529-530 cabecalhcs padrsc de programs de exemplo,
visi o geral,601-602
230-231
new-page print. exibindo plgina, 673-681
" grupos de tipos
parfmetros de
de visualizando e
visl o geral, 666-667
criando, 274-275
armazenamento,
palavra-cbave pan. 53-4 modificando,
free, sintaxe,
273
exibindo e GUJ Status, tipo de objeto,
new-page print on, 514-515 403
modificando, 231-232
530-534 rodapes de plgitu,
from, loop
693
ueilizando, 225-226
position, siceaxe, 538 criando, 520-523
at, 362-363
verificacces de
set blanklines, sincaxe, reserve. 523-524 ABAP/J, Editcn
H
ccasiseenc is, 226-227
540 insuuCioesde tela Edit Program, 61-63 handles, 47
em aameeab, 228-230
skip, sintexe, 534 de lis", 527 Function Ce des, ti po de Help on, comando {menu
papel do nameeab,
grifica e back, 536-538 objeto, 692 Utilities), 65
227-228
write, 499-507 new-line, 528-529 Functi on Library, tipo de Help system, oer ajuda,
Fiel d Label and H eader,
como de leone, new-pa ge, 529-530
objet o, 692693 sistema de
campos (t ela Dicti onary:
501-503 new-page prin t. Func ti on Library. Initial, hist6ria de tabela
Change Data Element),
como adirri o de linha, 530-53.
" La, 602
automatica
113
503-506 new-page print on, 531
aipbient e de teste , 629-631
descrirrio, 217
i.DlG , 731
d!'cumentos alterados,
218-219
utilizando,221
{cones
501-503
exibindo , 506-507
IDs de gropo de
601
if, 315326
conversces de dados
exibindd,319
literais durance
compararroes,
317-319
operadores de string de
caractere, 321-326
cperadcresIogicospan
operandos, 316-317
ordem de preferencia para
tipos de dados, 317
sintaxe, 316-317
utilizando na listagem de
programa, 318
If-equal, igual,
compar.mdo conteddo de
duas tabe1as internes, 395 .
Import/Export Parameter
Interface, t ela, 605-606
parimetros
com propostas, 715

toraandc opeionais, 608
valores padrio,
fcmececdo, 608-609
impressao, t ecnicas de
eabecdhos e rodapes de
plgina
cabecalhos padrao de
pagina,

interfaces globais, links de hipertexto, 136- 138 campos numericos,
ddinindo parametres, Hstagem de e movendo pan strings
620 comprimentos padrao, de campo de caractere,
in terfaces Iocais, definindc 465 299
parimetros, 620 listag ens char defmido pelc
intervalos de no me de a back, 537 usuirio de tipo de
cliente ABAP/4 dado, 271
convenliOes pan programa, 50 classificandocaracteres
atri builjio de nome. sinw:e basica, 236 acencuados, como
691-696 comparando de rexec,
descricao, 47 configura valor de 380-381
janelas, abrindo, 76 sy-subrc pan 373 CO, cs, CA e NA,
monedria, 485 exercirando, 322
J-L
, di<;io 488-489 ccnstaates, defmi es de,
justificativa, deslocando
adilioes arr edcndadas e 262
com a
decimais, 483 contagem de linha e
de parimetro, eamanhc de1inha, 510
stat ement,
eodific.ndo, 576-577 ccnversee s de dados,
Lambton Coll ege Web, site,
agrupando por eipo para 294-295
reduzir a dadas e estatistica,567
curses de treinamento,
de codigo e t omar a dadcs globais
10
lendo
manut en<;iomais f:i. ciI, persist entes, 620-621
listagem de algumas
274 elseif mais clare que
linhas,362-363
append sorted by pan urilizar ifs anin..bados,
para arualizar (t abelas
localizer as tres 320
bufferizadas) ,
relatorios de vendas especificacees de format e
descriliia, 203
principals, 414 de data, <4- 80
Ua1, tabela, visio geral, 438
area de rrabalhc da tabela, eventc top-of-page, 519
77 eventos
lfbt , tabel a, vi sio geral, 438
at first para escrever acionando em ordem
Ifcl, tabel a, visio geral,
drulcs e at last para ditada por prognma
438-439
like tln-sJlS include,
sublinhar a Ultima dedriver, 548
listlgem, 266
1inh.. 441-442 Dio inclui ndo dentro
lingmgem de logon e
at new e at end, aciorudas de condili5es a u
par ah eraes em loops , 552-553
tabew de texto, efeitos
campos e altenes no tres eventos de base,
de, 159-160
linha de (..beb
myel de contrale, 448 546
interna), defini ndo,
bytes de preenchimeot o eventos top-of-page e
ao mover dados entre 521-522
350
St rings de campo, 302 expressao- chave, 368-369
linhas, movendo p2ta 0
dlculos de data, 308 fl, valor atual de quando
topo da janela do editor,
campos, movendo parte enddo execur:ada,
59
d, ,296-297 334- 335
J...A:..a.-.....II I X . I -.....- I I
I
I
m
APREH DA EM 21 OIlS AUP/4
padrio de Iodice, insert lines. 392-393
pagina. criando, read table, 365 insert, instnl)io. sintaxe,
513-515 indices 398-400
cabecalhos pamo de criando.l87-189 instalandc
pagina, traduzindo, defuU<;io, 183 Basis. 21
515-517 descricac, 183-186 ScreecCams, ......
csbecalhos padrac de determinandoqual e instdncia central, defini cao,
pagina, ueilizandc utilizadc (Ierramenta 26
varidveis em, de rastreic de SQL), instincia, 26
517-5 19 191-193 instnu;ao de contr ole de
cabecalhospadrao de ex ibindc tcdos, 187 imprcssao,533
pagina, ligando, 703 de dados
visualizandce secunddric definindovarifveiscom.
mcdificaado, 185 241-243
514-51 5 diretrizes para cria/iao, sictaxe, 77, 263 264
multiplas impressoras de 189-190 instru; ao local, 564 565
uma vee, 512 excluindo.1 9O- 191 instru;oes, 236
safda de Iista, 511-5 12 exibindo, 186-187 interatividade e
'pool, 512-513 selerivos, 188-189 programacic baseada em
ununho de pigina. 'nIltagens.185 even eo, 653654
cccrrolandc em Info Types, ripe de objeto,693 event c at
report, ripidas {dicas selection-screen, 655
508-511 de ferramenta), 17 event c at user-command,
impressora, iniciandc Rl3, 10 655-656
padrao, alterando, 511 inserindo event c initializa tion, 65<4-
.INCl UDE, 172 a call functi on evento selection-screen
include, cadeia, defmi;5o, 173 autcmaticarneure, 613, push-burton,
include , sintue, 649-650 interceptando eventos
598-600 campos em nbebs , 126 command Windows, 31
include, Iinhas em eabelas, 397-400 interface do usuaric
defini<;io, 597 navegadores de dados, cbaves estrangeiras,
segundo (UXX), utiliz ando, 128- 130 verificando, 1++145
descnlii o, 602 solucionando persccalizacdc, 17
problema.s, 130-131 t ew, familiariundo-se
loclud.. (DOIC), lipo de Insert From Buffe r, com, 52
objeto,693 controle, (harra de validando dados com, 145
Includes (prognm), tipo de ferramentas Int erfa ce, menu., 17-19
objtto,693 Application), int erfa ces
incl uindo prognmas, Edi tor, 58 defmindo pa.rimetrOs,
defmiliio, 597 Insert Line, controle (b2rra 605,607
.INCl U-XXX, 174 de ferramenus 605
Indice (tabe las internal ), AppH"lion), ABAP/4 servidores de
def iniliio, 365 Editor, 58 apresenu liio e, 24
. . .......
IHDleI I 733
- - - -

.-
, APRENOA EM 21 DIAS ABAP/4
iNCKE I 735

move, 298 mstI'Utjoes write on change of definindo como rabelasinremas
comprimentos padrao. . com duas strings de :adies dejustificati...", acioaando, "457 ts belas d. DDIC de campos
465 cunpo.300 490 dDUmaneiras ou estrururas, 265 correspcadentes
gravandc icones na !ina, instrut;io especificatjOes de difer ent es, 455-+56 dau., para preeac her a
501-502 move-corresponding, e para exihir simbolos, definindo com, 264 partir de urn banco
if, utilizando no 304 comprimentc em, 500-501 inSttlly2.0 tables, de dadcs, 433-4304
prc grama, 318 new-line, 528 342-343 partmeercs, defmindo defmindo com, 269 adicionando tres
incluindo prograrna, 599 new-page print, ilusrrandc efeitos da coma referenciandc outre linhas a partir da
inlcic da selcc?o 533 especificacio da paramet ers, 248 campo,309 linhadocaberUbo.
automatica.mentt insuu;io parameters coluna de saicb, 469 parimeuos digitados, 5704 ..riiveis dotipoch2r, 267 355
inserido antes da prcgramas que sceitam operadcr de cadeia passando panimett'os para subcampcs, a.dicionando tr &
primeira lich a do parimetros de para reduzir subrocinas, 572 sub-roeicas linhas a parti r cia
c6digo execuctvel, 551 entrada redundsncia em, 83 passando por referencia, chamando a sub -retina linha do cabecalho,
call funceion, udlizando, lendo apenas algumas 578-579 mostrada na e gravaado -as de
udlizsndo com position. 538539 linIus,362-363 passando por valor, 580 Listagem 593-594 volta novamente,
parimetros, 612 read table, like 'fImUS include, 266 passando por valor e clwna.ndo uma seri e 361
case. realiundo deIndice, 365-366 linhasde cabecalho, resulradc, 582 de, 560-561 colocando mais
urna serie de reserve, 523-524 linhas com mesmos e defmindo e chamando, campos do que
327 instruc;ao select valores que de comprimenec, 470 558 existem em uma
check. 340 de campos campos-chsve padri o restringindo os sy-db cnt para conrar ubela,432
cleat. utiliundo correspoadentes, em, 371 fabricantes linlusreeornadas da ccnteado de campos
para limp er a linha de 436-437 loops sem fim, 330-331 seleciceados, 78 instruliio select, 81 entre at e eode, +43
407-408 com a instrulj-io misc:an.s de saida panr syfdpos pan visualizar copiaadc dados de
collect, appendpara efeitos de 475 processamen to de deslocamenrc do uma para cutra
combinando linhas preencher eabelas mensagem, insuucrio prognrna morto em primeirc caraceere utilizando as
conforme sdicionadas ineemas, 435 raising. 646-647 suas trilhas, 328 coincidente ou !lio append
as eabelas intemas, select- into, 431 m6dulos de funljio, 615 s:udas de coaversao, coincidente,324-325 lines e insert lines,
418-419 ins truc;aosum pan chamada simpl es para, 477-478 sy-index ccntendc 393-394
continue, calcu1ar rctais de myel 609 seu segundo prognma, namerc arual de criando com e sem
338-339 de concrcle, +49-550 chamados .daLisugem 72 329 . IWw d.
describe table, type -pool 20.1, primeiro, 621 revisitadc, 269 sy-subrc cabecalbo, 352
utiliundo vamveis de cont endo t ipos e chunados daListagem simplificado.76 determinando se definindo com e sem
sist ema para constant es, 274 20.1, segundo, 621 sfrnbolos e caracteres de qualquer linbas urna linha de
quantificar conteudo inStnl ljio while, 337 chamados cia Listi.gem desenho de linha, 504 fonm selecionadas, eabe<;>lho, 351
de tabela de, 390 add, subtract, 20.5, strings de campo 80 excluindo linhas de,
instruyao do, multiply, divide pan, 624-625
''',;0 varymg,
valor configunndo de 409-410
variivd , 333-334 corr espondent es, 307 chamados daLi.stagem retornando por dentro m6dul os inserindo linhas em
editor -call para exit, check e 643 componentes em d. Iun\io, 642- 643 listagens
visualizar, editar e stop cham2dos da Listagem sequencia, 332 tabela ztxIfal, exibindo dassificadas,
estreat a conteudo de dentro de evemos. 20.9, envolvendo dados em,135 enquant o
uma ubela interna, 555-556 para, 647 duas, 268 ubelas e estruturas mant endo a ordem
396-397 dentro de sub- rotinas , no-gap, 473 contendo cutra string ODIC. incluindo em de
locI. 564-565 562 nG-zero e no- sign, 482 de campo. 265 strings ,de campo, 266 375-376
-:---
. I
Maintain of Matchcode
Ob ject Fields, tel a, 662
Maintain Select ion
Conditions, tela, 664
Maint:l.mSelection
Options. tela. 633
mendt, campo, indices e, 188
diaIogo
padrao, dC5crir;rao, 134
mapeando de dado
ODIC para tip os de
dado ABAP/4, 246-247
Mark Line, controle (barra
de ferramentaa
Application), ABAP/4
Editor. 59
mascaras de
ccmecacdc com V. 712
write, 474-476
masC2ttS de em V,
712
matchcodcs
sabores de, 716
nlidaliiodedsdos,
utiliundo pan,
659-666
configurando,659-660
criandc e mantendo
cb jetcs matchcode,
660-665
organizando pOI' tipcs
dtualiza<;20, 666
sineaxe, 666
matchcodes Bsicamente
configurados, 659-660
mcm6ria em tabelas
Intemas, alccando, 709
mcnsagens de erro, caw de
diilogo SAP Rl3, 641
menu principal
coaceiruais, 10-15
area Applications. 12
area Basis,20-22
areas de tela, 15-17
Command Field, 19-20
Interface Menu,
message, raising,
configurando 0 valor de
sy-subre com. 644-648
message, instrosoes, tipos,
681
message-Id,
sintaxe, 682-683
mestre de fabricante
registra, arual izando, 13
modiflcandc
csbecalhcs d.
514-515
fonna dos parimetros de
armazenameato
dentro do udlietric de
banco de dados,
231-232
Iinhas em tabelas, 400-403
modify, instrusio, sintaXe,
4CO
Module Pools, tlpo de
objeto, 693-694
modulo de
in terfaces . 'f)eja interfaces
modules de aplicativo,
visdc geral, 8
m6dulos de
acivando, 604-605
cancelando aversi o de, 629
chamando, 609-613,
624-625,643,647
dado!globais, 619-622
execueando urn
exemplc, 611613
instrusio call
function, 609-611,
613
primeirc esegundo, 621
copiando, renomeandc
ou excluindc, 640
737

definic;ao, 600
de dados
dentro de. 605
dcsativando, 604
documcnundo excecoes,
648-649
e lTDS, corriginda, 640-641
excecoes, vida geral, 607
. Iiberando, 628-629
listagem para, 615
localizado existenee,
63H38
parimetfos
digitados e cia
digiesdos, 608-609
expcresdc de, 715
passandc para, 607
passando rabelas internas
para
metodos, 622
via
e
alterandc, 623-627
viau belss, 623
sy-subrc, valor
configurando de
raise,
64t -644
measagem, instrolilo
raising, 644-648
testandc, 629-631
Move Line, contrale [barra
de ferramentas
Applicati on), ABAP/4
Editor, 59
move,
aut cmaricas,
293-294
lisugen, 298
regras de ccnversac,
exibindo,295
sinraxe,291
strings de campo, 297-303
campos numericcs de,
299-300
tipoa de dado de
caractere,
utilizando, 300-301
tipos de dado
nemericcs,
utilizando,301-303
subcatnpos,296-297
move-ccrrespca ding,
ins tru;oe.s
sinuxc,303
utilizae.s, 302
Multiple Selection, tela, 632
N
nametab
227
papel em progrunas
ABAP/4, 227-228
vc:rifica;oes de
ccnsistenciaem,
228-230
natureza ineegrada do
ambiente Rl3, 8-9
navegadcr de dados,
utilitirios
decidindc quando
ut ilizar,134-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. sintaxe ,
528
new-page print on,
sintaxe, 531
new-page print, instru!?O,
exibindo a
documentl;io de
palavra-chave para, 534
new-page,
sintaxe.529
no-gap, adi;io, inst:ro;io

n ome, ecoveuceespan.
atrib ui!?o de
caract eres invaIidos, 689
iaeervalos de nome de
cliente, 691-696
objeeos de
desenvohnrnnento,47
paranetros, 247
programas 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 programa e
caracteres invalidos, 689
nomes de relat6ri o de
cliente, conven; oes para
de nome, 690
no- scroll ing, adi ; ao,
new-line, 528
no-sign, adi ;ao
write, 481-482
712
n o-zero,
wri te, 481-482
Number Range Ob jects,
ti po de 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, 156
ODIC, arivando, 107
desenvolvimento,
exemplcs de, -96
ohjetos agregados,
156
objetos de dados
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,
237
ohjetos de dados
glohalmente vis!veis.
descrkac, 237
objetos de dados lccalmenee
visfveis, 237
objetcsde dados
modificiveis,
237
cbjetos de dados nao
modificlveis
237
literais
de ponto flutuante, 240
INDICI I 739
Oracle, bancos de dadcs e de grupc dehordes
numericos, 239-2+0 de tabela, de
.string de caractere, 239 defmiljio, 193 adies para,249
objetos de desenvolvimento organizando objet os campo de entrada rorule,
convenes para matchcode, 666 251.
de nome, .(7 oti miudores, 187 campo de entrada rcrula,
44 Output Length, campo alt erando, 251-253
exemplos de, 96 (t ela Dicti onary: como de cain de
umindo, 66 Maintain Domain), selecao, 250-251
int ervalos de nome de 109-110 efeicc de verificando
clien te, 691-696 tabelaom,
pc rtabilida de, 45
P
sintaxe, 247-248
ohjetos de tempo de
padrees
type """" like, 253

alterando, 712
parimetros
obt endo a do
Ueas de trabaIho de
alterando, 607
SAPem dominios,
rabela, 76
de descricsc,
111-112
ativando altera;6es para,
607
occurs, instnJljio
464
de imponaliio
append, 357-l59
impressora, aleerandc, 511
defini;io,611
on change of,
write
607
451-458
ccmprimentcs,
tomando opcionais,
loops e, 452-454
461-462
608
perigc oculto em,
for matando, 463-467
valores padrio,
457-458
listagem de campos
fomeceado,
utilizando, 454-457 608-609
Open SQL, 36-l7
chave, 371
de tabela,descricsc, 607
padrOes do usu ari o,
descricao, 697
. configurando, 280
247, 571
tabelss, operando sobre,
Page Do wn, pr essionando,
definindo
698
74-75
em interfaces globais,
vantagens
palavn-chave,
620
buffer em dados em em interfaces lccais,
servidor de
documentacdo, instruljio
620
aplicativo.36-37
new-page pri nt, 534
varifveis como, 572
paJaV1'2S cbave de even to,
ponabilidade, 36
654
digita dos e nao digitadcs,
tratamentc
Parameter Ids, tipo de
608-609
automaticc de exportando a partir do
client e, 37
objero, 694
m6dulo do fun"o, 715
operador de encadeamentc,
parameter, instrulji o,

668-670
utilizando, 82-83
parameters,
digitados, sinesxe, 573
opendor es 16gicos,
definindo vari,heis com,
digitados, vantagens,
if, 316-317 575
open dores,
247
digitados 'lJtTIJI.S nao
compute, 305
de cain baixa, 250
digitados, 573-575
740 I ,PREND, EM 21 DIAI'SAP/'

I
interfaces, definindo pan,
605-607
passandc pan m6dulos
de 607
passandc pan
sub-retinas. 576-Sn
reerodos, 578-583
por referenda, 578-580
per valor, 5S()..S81
por valor e resultado,
581-583
reais, 572
parametros de
armazenamento c
ferramenta utilitaria de
banco de dados, 231-232
parametres de grupo,
de bctoes de

parimctros de tabela,
607
parametros digitados, 608-609
. 573
sinaxl:, 573
vantagcns, 575
parametres fonnais
descricso, 573, 715
digitadcs
sint axc, 573
vanu gcns, 575
f)trSUS naD digirados,
573
parametres naa digitados,
608-609
descricao, 573
parametr es reels, dcscri;ao,
5n
parametres, adic; Oes,
codificando, 576-577
parametros, nomes,
form, 715
pass byrefcrencc,lisagcm,
578-579
pass by value and result.
Iistagcm, 582
pass byvalue, Iistsgem, 580
passandc
padmetros pan modules
d. fun,.o. 607
parametres pan
sub-retinas. 576-577
listagem,572
metodos, 578-583
por refersneia, 578580
por valor. 580-581
por valor e resultado,
581-583
strings de campo pan
sub-retinas, 575
tabelas int emas para
m6dul os de
622-627
eabelas iaremas para
sub- retinas, 583
com linlw de
586
corpopor referencia,
587-588
corpo por referencia,
valor, ou valor e
resulcdc, 589-590
descrevendc dentrc de
sub- rotina. 584-585
metcdcs, 584
smt axe.584
variaveis.71 5
Pattern, centra le (baIT2de
ferramentas
Application), ABAP/4
Editor, 58
perfil de servi dor de
apli cativo, 24
perform, instrur; 20
sintaxe, 560
de, 558
personaliZ2odo
interface do usuario, 17
ubelas,98
pesquisa
descri;6es de campo, 82
prognmas,67
.oj<14mbfm lccalizadc
plataformas suportadas pelc
R/3 ,21
ponteiros de mouse,
ripidas
(dicas de ferramenta), 17
ponto Iluruante.fiterais, 240
pontos decimals, campos,
701
pool de tabelas
descricao, 98
resericees, 101-102
pools de dados , desc:ri;2o,
659
pools de ta bela, descri;io, 98
pools de tipos
cons tant es e, 262
d.fini,.o. 273
pcrta bilidade
do codigo, 36
objetos de
desenvolvimento.45
e comprirnento,
especifi ca;oe.s, li stagem,
470
posi;io,
instnJ;io write, 468-470
posi ti on, instru;io, sintaxe,
538
pressionando
Back, sequenci a de
eventcs, 75
Page Down, sequencia de
eveneos, 74.-75
primeiro program;
ABAP/4 , listagem, 50
Pri nt Paramet ers , t el a,
531
-
-
Print, ccntrcle (barra de induindo, defmi;io, 597 Command Field, 19-20
ferramentasStandard), cbjetcs de tempo de Interface Menu, 17-19
ABAP/4 Editor, 53 47 platafonnas e bancos de
Printer Macros, ti po de procurando, 67
objeto, 694 salvandoalteraes, 54 prop6sito, 8
processamento de blocos, tipos de visio geral, 7-8
6S4 programas de dalcgo, RJ3 Analyzer Identi fier ,
processos de trabalho, 31-32 46 tipo de objeto, 694
Program, comandos do relatorios, 45-46 RJ3 Data Dictionary
meou programas de cliente, (ODIC)
c opy, n 47 campo s. controlando a
SaveAs, 77 programas em late, chaves de, 71
baseada em estrangelras e, 152 defmilioes, exibindo, 70
eventc perfodos de, descri; io,67
eventc at anos fiscais, 439 estrururas, 68
selection-screen, 655 objetos, imporUncia de,
eveneo at user-command,
Q-R
96
655-656
quantidade, campos,
paisagem de sistema.
evento de
170
d.fini,.o, 26
sinuxe, 654
quebrasde pagina,
de, 67
evenrc selection-screen eabelas,68. 70
pushbutton, sintaxe,
causando, 530
utiliz.ac;:6es, 68
R/3
655-656
ambience, natureza
R/3 Library help. ABAP/ 4
interatividade de, 653-654
integrada, 8-9
Editor: Edit Program,
programadores,
arquite rcra de sistema
te la, 65
conhe cime nt o da ar ea rad iobuttons, instru;io,
funcional e, 9 "
definindo, 27
parimetro de grupo,
servidor de aplicadvo,
prognmas
24-25
672-673
convenliOes para
servidor de
raise,
atribuic;:ao de nome,
24-
configurando 0 valor de
47-48
servidor de banco de
sy-subrc 641-644
criando
dados,25
utilizac;:oes. 716
processo pan, 48-50
servidores,
read table, instruliio
solucionaodo
configurmdo,
tabelas ineemas,
problemas, 50 urilizando com
emlore, chaves
25-26
de comparaliio,
clieneesdo sistema de
estrangeiras e. 152
instala;ao, 36
372-374
include
iniciando, 10
adi;ao de Indice,
597
menu principal , 10
365-366
superior,
area Bas"is, 20-22
adi c?o de pesquisa
descrir;ao. 602
areas conceituais, 10-15
binaria, 370
segundo (UXX).
areas de t ela, 15-17
com de chave,
602 367-370
742 APRENDA EM 21 DlAS ABAP" INDICE 743
nenhuma adic;io,
370-372
sintaxe, 364-365
eransportandc a
.eli,.o, 374-376
utiliUtjoes. 709
r eativandc domfnios, 705
re cri ando tabelas, 232-233 ,
705
r ecursos de referencia
online, 10
refresh, instrucao, sintaxe,
405
registros Mestre do usuario,
status dependence do
clientc.35
regras de conversso,
exi bi ndo com a
move, 295
reindexando, inserindo
linhas e, 399-400
relacionamentos de chave
estrangeiras,
esrsbelecendo, 717
r eIacionamentos de chave
primdria, tabelas de
exemplo,438
Relation IDs, ripe de
obj eto, 694
relat6rios
component es, 46
convencoes para
arribuicic de nome,
690
dez liscas principais,
criando,412-417
enviando por fax, 511
impressio em multiplas
impressons de urna
vez, 512
instrUljaOappendsorted
by, 412-413
telas,45
release,
cancekndo.629
procedimento para, 628
renomeando m6dulos de
640
Report Writer, tipc de
ob jcto,694
report,
line-count, 521
adic;oes, 712
t amanho de pagim.,
formatando, 508-511
Repository Information
System, tela, 631
Repository Information
System: Function
Module, tela, 632
reserve sintaxe,
523
Restricting the Vendors
Selected listing. 78
reutilizandc domfnios
oersus criando, 104105
Revised, versoes de tabelas
companndo com Active,
222-223
descarundo,223-224
descricso, 222
rodapes e cabegalhos,
513-524
rcdapes, utilizando a
ski p, 535
rolagem, areas
alocando, 697-698
descricao, 28, 236
objetos de dados e, 237
roll-in/roll-out
processamento,
30-31
roll-outs, proposit o, 698
. r6rnlos, instnlc;ao
parameters, 251-253
s
safda de Iista, impressao,
511-512
safdas de ccnversac e
write, 476-479
exibindo as existentes,
478-479
listagem, 477-478
retinas de ccnversao
dentro de domfnios,
476-478
salvando
de programs,
54
dados, restandc mcdulos
de fuo,.o, 631
elementos de dados,
documeeeacao, 113
SAP. documenta cic sobre
dominies, obtendo,
111-112
SAP, sit e da Web, curses de
treinamentc , 10
sapgui.exe,24
Save As, comando (menu
Program), 77
Save. botao, 12
Scr eenCams, 44
Scr eens, tipo de obje to, 694
SE16, nave gadcr de dadcs
exibiado dados de eabela
com 0,131-132
fun,oe, do, 132- 134
SE17, navegador de dad os,
comparando com 0
SE16,134
SE63, traduzi ndo
elementos de text o, 517
Sear c:h/R.eplace, tc:la, 54-56
segundo programa
listagem, 72
Iistagem revisitada, 269
'.
listagem simplificada, 76
segundo prognma include
(UXX). 602
select single.
sintaxe, 83-84
Select, controle (barra de
ferra mentas
Application), ABAP/4
Editor, 58
select, 72-76
de campos
ccrrespcndentes,
432-434
area de trabalho expllcita,
77-78
areas de trabalhc de
tabela, 76-77
chaves estrangeiras e, 658
cl:iusuhwhere, 78-79
codificando pan indices,
188
detertninandoqual Indice
utilizado para,
191-193
em de eabela
classificando, 428
regras para ur iliaar,
430
sintaxe, 426
estrutura 51St, exibindo,
82
tables,
interagindc com,
269-270
processamento cia
AVI select,
74
processamento de Back,
75
processamento de Page
Down, 74-75
sintaxe,72
sy-dbcnt, 80-81
sy-subrc, 79-80
eabelas intenus
adicionando linhas
uma a uma,
preenchimento,
opcoes, 437
select- toto, instrufiio.
select-options, instrufi3o. 672
sequencia de
bindria, definifiao, 379
seqde ncia do pr ogra ma,
controlando
ccmparando com as
exit,
continue e check, 341
inst royio check, 339-341
continue,
337-339
exit, 327-328
servidor de banco de dados,
Z5
servidores
aplicativo, 2-4-25
irea de rolagem, 28
arquite rura de, 27-36
buffer em dados e
Open SQL, 36-37
cliente de logon, 32
componentes do
processo de
, raballio,31-32
context e de usuario,
27-28
passos do diilogo, 28-29
passos do dialogo,
iaiciando, 29
prccessamento
roll-W ra ll-out,
30-31
tabclas. tipos,
trocando dados com
servidores de
apresentac;s'o, J 1
apresentac?o, 24
banco de da.dos, 25
confi gurando, 25-26
servidores de ap licativo
arquitetura de, 27
area de rolagem, 28
clieaee de logon, 32
componentes do
processo de
trabalhc, 31-32
cont exte de ususrio,
27-28
passos do dialogc,
28-29
passos d? dialcgc,
inicia.ndo,29
processamento
roll -in/roll-out,
30-31
cbelas, tipos, 32-36
trocando dados com
servidcres de
31
descrici o, 24
urilizando buffer em
dados e Open SQL,
36-37
servidores de apresentaclc
descri ci c, 24
tr ocando dados com
servidcres de
aplicativo, 31
servidcres, configurando,
25-26
sessses, abrindo, 76
set blank li nes,
sintaxe, 540
set margins, 533
seta para baixo , te cla, ajuda
F4 e, 150-151
seu primeiro programa
ABAP/4,li,tagem, 50
seu segundo programa
r r r' r> r>;
r-

r-
r>;
r:
r> r-.
<:
r>
<. r r
'""'
r
"
"

"
"
'"

"
-e-,
-
"'
-r-, --..,
'"'

I
.;
... .

''Ii'
'744
.lPREND.l EM 21 DIAS ABAP/4
iNOICE 745
Iiseagem, n inscruc;ao case, 326--327 inscrucac new-line, .528 report, tamanho especificacoes de Stack. controle {barra de
liscagem revisicada, 269
check, 340-Hl . instrucic new-page. 529 de linha e adir;:Ocs de e ferramentas
Iiseagemsimplificada, 76 instrU'?o clear, 287, 407 instruc;io new-page print contagem de liaha, cc mprimenco, Application), ABAP/4
Short Text, campo com adifjio, 289-290 on, 531 508-509 341-344 Editor, 58
eela Dictionary: Change collect, ..17-422 instrur;:ao on changeof, reserve, 523 mstruljOes add and Standard Roll, ripe de
Data El ements, 112 compute, 305 451-452 lnstculjio select, 72 add-corresponding, ohjeto, 695
tela Dictionary; Maintain instru<?o CONSTANTS, perigo oculto ern, area de rrabalho 306'307 Standard Task, ripe de
Domain, 108 262 457- 458 explfcita, 77 matc hcode, 666 objeto, 695
tela Di ctionary: continue, 338-339 parameters, areas de rrabalho de mes sage, raising, Standard, barr. d.
Table/Structure: data, 77, 247-248 tabela, 76-77 inscru<;ao, 645 ferramentas, 16
Chang. Fields, 116 241-242,263-264 adi<;ao de gropo de clausula wh ere, 78-79 selection-screen block ABAP/4 Dictionary
simbolos inserucsc delet e, 408-409 bceees de em ad.i<;3.o de t abela, with frame, 667 butto n, 67
deficicao, 500 describe cable, 251 426 tabelas int ernas , 388 ABAP/4 Edit or
exibindo, 506-50 7 389 adi <;ao de lecras estrurura 51St, sites da Web para curses d e coneroles, 52-53
si mbolos de campo instru<;ao do, 328-329 minusculas,250 exibindc, 82 trcinamento,10 recurso Find and
Iiseagem, 309 varyin g, adi<;ao type tJtnus like, processamc nto da Size Ca t egory, campo, Replace, 54-57
utilizaes, 310 332-334 253 AVI descricao, 195 Command Field, 19-20
si mbolos e caracteres de v:uyinglenddo, adies a, 249 select, 74 ski p sy-Iinct, utilizac;5es, 713 Find butto n, 280
desenho de linha 334-335 como de caixa processamento de skip , sintaxe, 534 start-of-selection,
Iistagem, 504 edi t or-call, de 250-25 1 Back, 75 SM31 e SM30, navegadcres automaticamen te
aintaxe 395-39 7 efeiec cia tabelade processamenco de de dadcs, 134 inscrindo Iistagem, 551
ABAP/4,236-237 560 verifica<;3.o em, Page Down, 7+.75 solucionandc problemas Status, comando (men u
event o de inicializacao, instru<;ao exit, 327-328 253-254 sy-dbcnt, 80-81 111 System), 20, 95
654 insrrucao form, 559 ins tru<;ao positio n. 538 sy-subrc, 79-80 elementos de dados , stop, instruc;ao
evento selecti on-screen free, 403 instru<;ao radiobutt ons, instru<;2a select single. criando, 115-116 inStruc;ao loop at e, 364
pushbutton, 655-656 if, 316 parimetro de grupo, 83-84 inser indo linhas em ucilizacoes, 714
ins rrucac add, 306-307 instruljao include, 598-600 673 inSt rulf20 tabelas, 130-131 stri ngs de campo
inStru<;20 insert, 398 inStrulfao raise. 642 selection-screen, links d'e hipertexeo e atribuicac envolvendo
add-corresponding, ins trucio insert lines, 393 ins rrucio read table, pardmeerc de cain de ajuda Fl , adicionando, duas listagens, 268
307 inStruljio loop at, 359-360 364-36 5 seleljia,671 138 conrendo outra listage rn
instrulfio appen d, 354 adi<;5es from, eo, adi<;ao de Indice, instru<;ao select-options, navegador de dados SE16, de String de campo,
occurs addition, where, 365-366 672 132 265
357: 3,9 instrucao que pede adi<;ao de pesquisa set blank lines, programas, processo de defmi lj2o, 263
inStruc;ao append lines, aleerar 0 binaria, 370 540 50 defmindo
392 processament o do com adi<;iio de chave, inst tu<;ao skip, 534 tabelas rransparentes, como tabe la ODIC ou
instru<;3a append sorte d loop, 364 367-370 instru<;ao SOrt, 376 criando, 119 122 listagem de
by, 413-417 instrucio message-id, comparando adi<;ao, como adit;i.a de textc, sort, ins trut;i. o, utilizando eserueura, 265
inStruyao at end of, 444 682-683 372-374 379-382 com tahelas internas, lnstruljaO de dadcs,
instru<;ioat fIrst, 440 modify, 400 sem adi<;5es, instruljio sum, 449 376-382 263-266
instru<;io at new, 444 move, 291 370-372 inst ru<;20 tables, 268 269 SPACE, constante, 262 tables, 268-269
inStru<;2o back, 537 inStnlt;aO tran spartanda adi<; io,
" inscru<;aotyp e, 270-272 spaol, irnpressaa, 512-513 move, 297303
inst ruljao call functi oo, move -corres ponding, 374-376 instruljio while, 336-337 Spool, tipo de objeto, campos numericos de,
610-611 303 ins truljio refresh. 405
instru<;ao write, 467-468 694- 695 299-300
--:: iH::DI::::.J CE 747
r> r-
746 "RENDA EM 21 DIAS ABAP/4
cipos de dados de por valor e resultadc,
campos, adicionando 68 dete rminando 0
caractere, 581-583 select, 82
abordagem top-down, documentos alcerados, namero de linhas,
utilizando.300-301 passando st rin gs de System, comandos do menu
122- 124 218-220 389-390
tipos de dados campo pan, 575 Crea-te New Session, 76
acresc entando, 126 excluindo, 125, 705 determinando se vazia,
numericos, passando tabelas internes Status, 20, 95
inserindo, 126 exibindo, 70 389
utilizando, 301-303 para, 583 sy-subrc
campos, excluindc, 127 [erramenta ur ilitdria de esrrururas para
Iistagem da corp o por referencia, configurando 0 valor de
chave estrangeira.143 banco de dados, testando e para
variavel,332 587 de dentrc des
cornponent es de excluindo e recriando modificando
passando para corpo por referencia, m6dulos de
cccveocses para por dentro, 232-233 ccne eado, 388
sub-retinas, 575 valor, ou valor e funliao, Iistagem,
atri builiao de hi st6ri co de t abela excluin do linhas, 406,
utilizando como varidveis resu ltado, 589, 642- 643
nome, 105 autormcicc 408-412
do tipo char, 267-268 590-591 instrucio raise,
elementos de dados, descriliw . 217 excluindo 0 conteudo,
strings,localizado t odas des crevendo dentro da 641-644
102 utilizaado, 221 403-406
ocorrencias de, 56 sub-ret ina, 584-585 message, instrucao
configuracoes tecnicas indices indice,
Structure (DDIC), tipo de sintaxe, 584 raising, 644-64 8
buffer, ut ilizando, criandc, 187-189 ins u uliao append,
objeto, 695 tabelas com linhas de ins trucic select, 79-80
196-213 descricso, 183-186 utiliz wdo, 353- 359
subcampos cabe"lho, 586-592 variavel, depois da
buffer em re sume de dererminando qual e loop at,
move, 296-297 tipcs, 559 inst rucdc editor- call,
tabelas, 212-213 ucilizada com a utiliz ando, 359-364
inserucaowrire, 471-472 sub-retinas extemas 396
campo Size Category, ferramenta de instrUc;aoread table,
sub-retinas comparando com sy-tabix, cperacses de loop
195 rastr.eio de SQL, utilizando, 364- 376
chamada urn mostradc na in temas, 593 e,710
cemrios com tabelas 191-193 instrucac sort,
Listagem 18.12, 594 comparando com m6dulos sy- t occu, areas de
de uso de buffer, exibindocodas, 186-187 urilizando, 376-382
chamando uma sene de de fun,ao, 600 e, 710
211-212 vantagens, 185 lendo dados de,
listagens, descricio, 592 sy- uzeit, campo 245
classes de dados, indi ces secundarios 359-376
definindo em grupos de sub-retinas internes
193-195 criando, 189-190 linhas inserindc em,
fun c;aovia FOl , comparando co m
T
deslocameneo de deflnics o, 185 397-400
627-628 ext ernos, 593
buffer, 210 excluindo, 190-191 modificand o Iinhas
deixando, 561-563 definindo e chamando,
Tab. Maint. Allowed,
exibindo, 193 exibindc, 186 em, 400-403
descricao, 558 559-561
campo (Dictionary:
ndmero de extens oes, mt em as passando m6dulos de
efeitos de exit, check e deixando, 561-563
Tabl e/Structu r e:
195-196 conteudo classificando fun.,.o, 622-627
stop dentro de sum, instrucao, 449-451
Change Fields, tela) , 117
resume, 221-222 de, 376-382 preenchendc a partir
Iistagem, 562 sy, variavel
tabela, campos
tecnicas de usa de con teudo comparando de t abelas de banco
extemas, comparando adi cionando lisragem, 286
campos de quanridade,
buffer, 204-2 05 de dois, 395 de dadcs, 425-437
com inrernas , list agem, 283
170-171
cipos de usa de buffer, copiandc dados entre, preenchendo utilizando
593 sy-daturn, campo, 245
campos monetarios,
205-209 393-394 a insrrucio collect,
internes, definindo e sy-dbcnt, selecionando
168-169
copiandc, 124- 125 copiando part es de, 417-422
charnando, 559-561 instrucao, 81
tabela, dusters, descricio, 99
criandc, 106-107 392-393 processamento de
passando parametres sy-fdpos, 324- 326
tabelas
DDIC,67-68 definii;ao, 350-353 iccenupcso de
para, 576-577 sy-index content namero
Active, versoes ativas,
de duster defini nd o, 349 controle, 440-444,
rnetodcs, 578-583 atual de
comparan do com
descricso, 99- 101 definindo aIinhade 445,449,451-458
por referencis, listagem, 329
tabelas de banco de
restricoes em, 101-102 cabecalho, 350 programa para obter
578-580 svstoc Message ID, tipo
dados, 226-227
vantagens, 100 definindc 0 corpo, informecces sabre,
par valor, 580-581 de objero, 695
alt erando a nome de, 124
de 143 350 390-391
testando top include, programa,
Utilities , comandos do
chaves estrangeiras, 149 descricdo,602 menu
modules de top-of-page, eventcs ABAP/ 4 Key Word Doc,
629-631 acionando, 550-551 534
Text Elements from the . f eventos end-of-page, Help on, 65
ABAP/4 Editor, 521-522 utilizando e alterando sao
comando (menu Goto), insrrucio write, 519 identicos em
670 traduzindo elementos de llstagem,579-580
tipo de dado char definido rexto, 515-517 UXX(segundo programa
pelousuario,listagem,271 transacoes, definicao, 19 include), descricac, 602
tipos de campos e chaves Transaction Codes, tipo de
estrangeiras, 156-160 objeto, 695
V
campos-chave, 156-160 transportando
validando dados, 145
candidatos-chave, read table, 375
valores de componente
156- 157 tratamento automaticc de
tipos de dado numericos cliente, Open SQL e, 37
gone, 442-444
descri!rae, 245-246 tutorial on ABAP/4 Editor:
valores de X, cardinalidade,
155
instru<j 3.0 move, Edit Program, tela, 64
valores deY, cardinalidade,
utilizando, 301-303 Type Group, objeto de
155
tipos de dados Grupo, 695
valores excluidos
definindovariaveis com type, sintaxe,
(excludes),633
mapeando tipos de 270-272
valoresiniciais padrao,
dados DDIC para type-pool, instrugac,
286
tipos de dado contendo tipos e
valores, excluidos, 633
ABAP/ 4,246-247 constantes, Iistagem, 274
tipos de clados de
Value Table, campo
caractere, 244
U
chaves estrangeiras e,
165-166
tipos de dados de
under addition, como proposu Check
comprimenrc fixe,
write, 472-473 Table, 166- 167
244
Undo, conrrole (barra de semchaves estrangeiras, .
tipos de dados
ferramentas 168
numericos, 245-246
Application), ABAP/ 4 variaveis
instrusaoif, ordemde
Editor, 58 acessando incorretamente
preferenca, 317
unidades de modularizacao antes de definir,
rabelas, alrerandcem,
descricso, 545-546 listagem, 243
127-128
utilizacoes, 546
cabecalhos padraode
Titlebars, tipo de objeto, 695
unit addition, instrucao
pdgina, lisragem, 517
to addition, loop
write, 484, 486-490
compuuundo, 707
at, 362-363
User Defaults, comandos
convencoes para
Tools, comandos do menu
(menu System), 511
atribuicao denome,
< Administration, 22
User Profiles, tipo de
242
Development
' -
ohjeto,695
desistema, Iistagem, 28'
Wotkbench, 12

i'
I
exibindo exisrenres,
478-479
retinas de conversao
dentro de
domfnios, 476-478
sintaxe, 467-468
subcampos, 471-472
tabelas intemas e, 716
underaddicioD,472-473
ztxa, grupo de
listagem, 622
ztxlfal, tabela, exibindo
dados na, Iistagem, 135
zxtl 901listing, 599
z
evento end-of-page,
521-522
evento top-of-page, 519
eventos, efeitos em,
550
Iormatacio padrao,
465-467
dOlUS, 463
estouro, 464
numeros, 464
vezes,464
formatando data, 479 -481
mascarasde ediljao,
474-476
saidas de ccnversao,
476-479
no-zero e
no-sign, 481
:ldi<;6es redondas
decimais, 482-484-
comprimentos padrao,
461-462
desloeando a justificativa,
490-491
especificact o de
comprimento, 470-471
especificacao de posicao,
468-470
especificacoes de posi<;ao
e comprimentc,
341-344
,\
I
,"!
.'
where, adicio, instrucio
loop at, 362-363
where, clausula
instruljaoselect, 78
suportada par indices, 185
Where-Used List, controle
(barn de ferramentas
Application), ABAP/4
Editor, 58
while, sintaxe ,
336-33 7
Windows, ambiente,
iniciando 0 R/3, 10
Windows, eventos,
interceptando, 31
with key addition,
instrucao read table,
367370
Workflow, tipc de objeto,
695
write, instru!;ao
adi<;ao de nenhuma
lacuna, 287, 473-474
adiljao de unidade,
486-490
adiljoes de formaeacsc
grafica
como Icone, 501-5 03
como linha, 503-506
como simbolo,
500-501
exibindo simbolos
disponfvel, Icones e
caracteres de
desenho de linha,
506-507
sintaxe, 500
adi<;oes monetaries,
484-486
adicoes monetarias e de
unidade, 484
w
varredura de intervale
de fndice, definicio,
188
varying addition, instrucdo,
332-3 34
Vendor Master Update
Transaction Address,
tela, 12
Vendor Master Update
Transaction: Initial, tela,
12
verificacac, campos de,
chaves estrangeiras
compostas e, 152
verificacio, tabelas de,
143
verifi cando chaves
estrangeiras,144-145
versdo, nfveis de, visao
genl,95-96
versao, notes de, acessando,
96
versc es de mo dules de
Ian cando,
628-629
versoes de tabelas
eomparando Revised e
Active, 223
descanando Revised,
223- 224
ternporfrios, 223
versoes te mporaries de
tabel as, 223
visibilidade
objecos de dados, nIveis
de, 237
strings de campo, 270
vis ualizando
paginando cabecalboe,
514
programas de inclusao e
incluldos, 600
safda no spool, 512
definindo, 714
como pargmetros, 572
insrructo de dados,
utilizando,241-243
instru<;io form,
571-573
param.eters,
utilizando, 247-251
tipos de dados,
243-247
definindo dados, 566-568
globais, descricio, 563
insrrucrc dear e, 287-288,
289-290
local, 563
passando, 715
tabelas definindc areas de
trabalhc, 564- 566
vari dvels de sistema
comumen t e utilizadas , 280
descricao, 79
exiblndo, zso
instru<;io descri be table,
389
localizado, 283-286
nomes de, 79
sy-dbcnt, 80-81
sy-fdposvoperadores
para, 324
sy-index, 329
sy-subrc, 79-80
variaveis globais, descricdo,
563
varisveislocals, descrict o,
563
variaveis t ipoc, move ndo
para ou de strings de
campo contendo tip os
numericcs, 300
variaveis tipc d, expressoes
matemati cas e, 308
variaveis, computando, 707
variavel, nomes, 706

Você também pode gostar