• 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! C6digo·fonteli>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;
atesteInlorma¢es 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 .',
ISlnSIru¢es
comunsdlt conlrole i f.
case. doewhtl e:
cootrol& I seqiillnclado
progrlmau!iIIzando
ex it, conti nuee
chec k:codi£que
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, eXpDrla¢o

__'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\ "
UtilizeasInslru¢es
comuns delormala¢o
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{0211507·t 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 new·page .
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 fisc·al para cada fabricante na empresa. Talvez voce saiba escrever
c6digo em ABAP. mas voce saberia como comecar a resolver essa tarefa?
au talvez seu trabalho exija urn novo desenvolvimemo em ABAP/4.
Voce 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 op¢es 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
SOLARISHP·UX 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!5entg¢O
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..0»5 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 solicito§oo 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: 0AMBI£NTE DE DE5£HVOLVIMENTO 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 CD·ROM 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
TER»O" 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 CD·ROM 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
,

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 lizo¢o
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'I»EI' 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 defini¢o 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 il¥i: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 Ib°adQ 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 o·operador 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.
Apro£undando-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 personolizo¢o. 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 r••idenciol
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,PART£1 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 monuten¢o 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. 5£16 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 5£16 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 defini¢o 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. '
$Cl£ENC,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 5£16 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
Tft»O "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 c6digo·fonte 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:
.,
" :'

!
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 utiliz6·lo 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_
I 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 sele¢o 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 oltero¢o, 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 (non·active) 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 objetos·DDIC, 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
UmoveriDco¢ode
coer!ncio com 0
bancode dodos
confirmo que 0
denni¢o 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:cecu¢o 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 oHvo¢o
exibe 0
de possos reolizodos .
durante 0 e
o e6digo SQLque
foj gerado. Esse log
mostroque durante
o olivo¢o, 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
OM¢o, 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" instru¢o 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
7£1
·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 execu¢o longo, utilize a instruc;:oo para obter a
. horo. Ela ctucllzc as vclcres de sy-detum e de sy- uzel t para refletir
a data e 0 horo ctucis.
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
"
0·9. 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 p«L+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'instru¢o data,
mas quando voce 'executor 0 programa, 0 sistemo exibirc as pcrcmetrc s como compos
de entrada em umo tela de sele<;ao antes de 0 programo reolmente ccmeccr 0 ser
executado. 0 usucdc pode digitor ou modificor sees vclores e entao 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 instru¢o 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.
Fig·ura 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. 1£308I
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 first·name(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 defini¢o 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 defini¢o 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
instru¢o 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 xlfal·landl '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, D£fIN1NDO 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
sy·uze1t
sy- uname
sy·subrc
sy-mandt
sy·pagno
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 5y·1 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 / ' sl·f2-'" no-gap, :;1-12 no- gap,
40 / 'z txl fa l -1i f nr-' " no-gap. zbl fa l - lf f nr no-gap,
41 / 'ztxlfal-landl- ' " no-gap, zt xlfal-landl no- gap,
I ll'
,','
17- ' 000000'
fa -'OO'
sl-fl-'
sl·fl-' 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'
51·f2·'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
subcampo·sed 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, CONY£RSOES 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 ( OKTiOl£COMUNS 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 • 52·x.
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 d••x.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 de£iniljaa 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 instru¢es
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 it·f2 (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 sy·tabix 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 1t·fl • ' 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) • ' ". it·f3 • ' 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 - ' , it·fl. '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 •
it·f3 •
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 execv¢o utilizondo a instru¢ o set locale. Esse instru¢ o configura 0 valor de
sy-Lanqu, 0 conjunto de caraderes atva is e 0 sequencia de 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 odi¢o 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 it·f3 '" '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 grovo¢o 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 it·t·'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 it·fl 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 it·f1 • -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 opera¢o de array e, em seguida, a dossificot;oa. (Para
abter jnformo¢es 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:ombino¢o 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,9Jtl§jJ }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 atribui¢o pare 0 linho lntelrc , sendo ossim cd iciona
overhead ainstru¢ o sel ect. Voce dever6 utiliro·1a 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-, itl·landl.
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. it·1andl".
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 efici€mci 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 zblfal·landl . 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 con£guraC;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 comerciolizo¢o Processome nto de interrup<;oo de control"'e'--- _
Depois de preencher uma tabela intema com clados, em geral, voce precisari
escrcver os dados. Freql1entemente, essa saCda ira conter as informal$oes de
resumo (como tows) DO infcio au termino do 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 instru¢o 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 interrvp¢o 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 uti¥zadas 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: /it·n. 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 inlel11Jp¢o
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
intelTUp¢o
centrale eodonodo e
o ins1nl¢o 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 instrv¢o 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 eacionad