Escolar Documentos
Profissional Documentos
Cultura Documentos
Aprenda em 21 Dias ABAP 4
Aprenda em 21 Dias ABAP 4
.\
. ....
j -'7
.~
. , .~,
!il,
. .
t......
".
..'
'.
:" ?~; ~
: :: ' ~~~
6/'
'J
. ~
...."
~,
contem: '
. .. ,
'}a Mais de
st;~eric~s "erh 'Y1~~S' tbj~ sess6~:i-e- . .
trelnamento Individuals a que "QCe~pode assiWf e
re\::isar a qualquer rnornento, ilus.t;and9:passq a passo
as p rQcedim,,~ntos cont idos no liv re .' . .. . l
:: ~. ~ ~~( ." . .
. \. ' _.
I,
i! C6digofonteli>m ABAP/4 testado para os prog~as de
exemplo, e~:~.t~ibS e solucoes lnciuldos ~o Iiv o.
'50'
'-
.... .
c .ampu,<;.car.-: ' " "' -'--k"",
....cC
. '
\IV\IV\N. ..
..J
-'-~__1__:;_--'
)
1,,;~};i:.;D
~~~ :>,;;l~l:{~ .',.,~.\t\'i;:1 "'_~ ~ ~i~r~).f ,~ it.':~W ';i ;~~ .:~.~.{.~~1:;
::, \1:.'~;,, .f/. . ,13 2 ; .'I,,! I~n " .it-."\ ;o;.;~, pla .3:q:,:~r' ~ ~ ,JI,~~,~:, Dia 4:\:!11_" ~'1~'
. -, "" 1\"0 , ;- .:,'. . .I< L ~'. .. . ... III!,I'. ~ ", ' ..,-' ,'.-,. ,-,' 1" , .1 .<..iM.-: ....';'. ,,,,,.... "' .(, ~".
"
Enlellda a que' um
slslema de RI'J. sua
aparllnda e lunciollamenlo
para0 U5udrio; apreAda
sobfe larqu~e lurl do
slslema emque programas
A8AP/41unclonam,
Descreva asdlIerent;aS
8l'ltrt labelas transparentes,
labolat de poole de du slp. r,
erie domlnlos. elementos de
dadose \abelas
transparentesno Data
O!cllonary.
;i;f.{~:: :,:~,.,
";
"".;'ill )
. ,.;);".;,Dla 6.
Coo e utilI Indices
seQ.Jrxlar!os
apropriedamenle;configure
osalriltJlos16cnlcos para
labolas Iransparenles:
configure 0 usadebuller
para tabelas,
Enlendaos eLemenlOi de
$lntaxe do ABAPI":
cescreva0 conce~o de
obielosde lidos . sua
visibilidade; ulihe Il!lBis e
entendacomo codi~ce r
')
')
':'i
UIiIlzoa nstM;Aotab 1e s
para dellnlf strings de
campo; ontenda a InstnJ;fto
types eutilize-ap8fa
delinlr seIlSPJ6prios tipes
dedados.
I'
Cod~e
ISlnSIrues
comunsdlt conlrole i f.
case. do ewhtl e:
cootrol& I seqiillnclado
progrlmau!iIIzando
ex i t , conti nuee
chec k: codique
especficllt;ees simples dlt
pos~o 0 decomprmento
nl InstrOlfAo wri te o
\.'1; :l . ~
,{,
,~ :
U~Vze as ~es do
Iormata9io grallca da
lnstrur;io wr i t e (as
sy mbo l , a s icon,
as 11 ne): lmprma
salde de Isla a manlpure I
, aidanospool.
UtilizeasInslrues
comuns delormalao
ne w- l 1ne,
ne w-page, ski p,
back. pas i t 1o n e
set b lan k lines;
envle salda pala0 spool
IIlil/zando ne w-page
print.
...... ,,~
~--- ~_-...
" .''''Ko>i>i
"
Ulllize asavenlos
init 1a1 1zat i on ,
s t ar t - o f se lec ti o n,
end-of -se 1ecti on;
donn.$Ub-fo1lnas eklemas
e Inlerna$; conflguro
variaveis locals, global! e
eslali:as,alllm deareas de
lraba tlode labela.
-.-<;1:
!0:tt~" ~,i~\2.(: ~ ~ ;~ ~(
v,
rI:!'~~""",.~",,",""-:;"
,
:t"
"
,Dla 19 .f
Dla 20
Dia21
Entenda 05componenles I
a eslrulull de urn grupo de
tunr;l o;definadados
glDbals 0 sUb-rotinas denlro
de umgrupo de Iunc?o.
Codlfiquelela. dnselel;lo
que interagem com 0
osuarb; utilize elementos
de !orma!a~o para crlar
lelas deseleiO!o bem
pl'ojeladas eellcienles:
utilize lelesde snl~o para
manter aintagrk1ade dos
e alle ~o .
'''~';'
da ~o i,fr 1te;
utilze seeasdecoovorstio
e deiecteSOlI preseo",
dentrodedomlnios.
,:.
',\ ':'
Dla14
Dla13
Pre&flCha umalabela
Jnlama apar1ir deuma
labela debanco dedado.
u~lizando aseSlruturas
(consll1lcl ~ matserlcienles;
relllillt processamento de
ln lll"u~1o decontmleem
labelas Inlernes utI~zando
at e cn c hange of.
d_.
_ _ 'n'_.,....
~.-
.,.. . .. h
~
'
lido
r--: h
~c
~
-n
..
f~j ~'
~.
P" ~ <
fT1
;U
Jl
J>
CJ
~~
o
<1l
!<o
"
;lfl l; ithr
i
CJ
"Ho
~
J>
()
J>
;U
OJ
J>
CJ
:s
- " : . . . - - -. ._
.1'.
v_ ,.......
_ _
-:....---.1-.........:.... :-;...............-::.:..
~:
I
I
~.
...: ..- -_ . - - --
J>
, \S
._-----~
-_ ..,- - - -- - .--/
~~
...
~Y
Ken Greenwood
Consultor Editorial
Ferna ndo Barcellos Ximenes
'lle"o Site
et"
Aprenda
;:;-~
~
:s,f; SEU CONHECIMENTO
ACELERE
'"tfl
o
~<".
i!b
---=
e.. =.m
.: . .: .
ef!'
Comp leto e
,<>"
21 dias.
SAMS
(2
C'AM'PUS
;
00"""'
sams "
Dedicatoria
s.ns
uea.
"d".
~Ionts
"""
ee.-_
Paoo Vrtmlel10
MatiziII
E_
df, AnO'adl
_
Flores
Rio TBXtQ
Reyjsa o G~b
Adriana Kramer
Deborah AOdIger
Pro/elaGraffeo
Edito ra Camp us uce.
A Qualid.dll da Inlormat;llo.
Rua Sell d. Slllembra. 111 - 16' andar
~AlodIlJ_iro RJ Bl1Isil
Tel_lone: (021) 509-5340 FAA{0211507t99,
CIP-Bra$LC.~.forIte.
Gre_ood, Ken
Aprellda em 21 dias ASAP' .. I Ken Greenwood; tra~lo
Ed, Of1 Futmankiewicz..- RID de Jenllro : Cempus, 1999.
"
(Apr&nda)
98-1991
COO-COS.l
COU - SOO.92(ABAPr4)
99 00 01 02
;IBLIOTECAS OA PUCMINAS
~ELO HORIZONTE ,
f GlSTRO 22~.f2-~
Q'
,3.....;
IATA:2 / . / ?'L
ICERVO;Z3 0 2 9 /
'p , l
.. ..
__
Dia 20
619
D ia 21
T elas de selecao
653
SEMA NA
3 Revisao
Introducao
. 68 7
689
697
Ind ice . . . . . .. . . . . .. . . . . . . . . .
Sumario geral
719
....... 1
Visao geral. . . . . . .
. 5
SEMANA 1
Dia 1
0 ambiente de desenvolvimento
Objetivos do capitulo
que R!3 ?
7
7
.
.
.
Workshop
Teste .
Exercfcio 1
8
9
10
10
15
20
22
24
24
24
25
25
26
26
27
27
28
28
30
31
31
32
32
32
36
36
36
37
37
38
38
39
39
.. , ..
XII
"RENDA EM 21 DI AS ABAp/'
SU"'''DGERAl
Dia2
Antes de prosseguir
.
Explorando 0 ambienee de desenvolvimento
Descobrindo tipos de prog rama
.
Definindo relatorios
.
Definindo programas de dialogo . .
Descobrindo componen res de rela ta rio
.
.
D escobrindo a ob jeco de tempo de execucac de prograrna
Inrroduzindc as conven co es de atribui'):ao de nome de programa
Criando seu primeiro programa . . .
Exp lorando 0 editor de codigo-fome .
.
Utilizando a Editor: Initial Screen
Explora ndo a funcionalidade do editor de codigo-fo nr e
Obten do ajuda . . . . . . . . . . . . . . . . . . . . . . . . .
Obtendo a ajuda F1
.
O bt endc a ajuda R/3 Libr ary
.
Localizando seus ob jeto s de desenvolvimento .
Introduzindo 0 R/3 Data Dictionary
.
Explo rando as tabelas e as esrrururas
.
Exibind o uma ta bela ou definicao de estrutura
Exibindo 05 dados na tabela . . .
De termin andc campos exibidos .
Entendendo a sintaxe do ABAP/4 . .
Introduzindo a instruci c se 1ect . . . . .
Entende ndo as areas de t rabalhos de tabela
"In trc duzindo a clausul a where
.
Trabalhando com variaveis de sistema
.
Utilizando 0 ope rado r de encadeamenro .
Utilizando a instrucio se l ect singl e . . .
Comentando 0 c6digo e a documen tacao formal
Resumo
.
P&R
.
Workshop ..
Teste . . .
Exercfcios do edito r . .
Exercfcios de prcgramacac
Dia3
. 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
Dia4
. . . . . . . .
Objetivos do capitulo . . . . . .
.
.
. D escobrindo as chaves estrangeiras
.
Acionando a verifica<;ao de chave estran geira
Requisites tecnicos para cria r uma chave estran geira
Criando uma chave est rangeira
.
Des cobrindo a coluna CheckTable
.
Dererminacio automdtica de campos de chave esr rangeira .
Relacionando as chaves esrrangeiras com a seta
parabaixo e a ajuda F4
.
Chaves estrangeiras e programas em lore
Chaves esrrangeiras cornpostas . ..
Entenda a cardinal;dade . . . . . . .
Tipo de campo de chave estrangeira
Chaves esrrange iras constantes e genericas
Chaves estrangeiras adaptadas . . . . . . .
102
104
. 104
105
105
106
. 107
.107
112
.116
. 124
. 124
125
126
127
127
128
128
. 131
. 135
. 135
. 139
. 139
. 140
. 140
141
141
. 143
.143
. 143
. 144
.145
. 146
.149
. 149
.150
151
. 152
154
. 156
161
. 163
XIII
XIV
SUMARIO GERAl
164
168
168
. 170
171
.1 72
174
. 175
. 176
. 177
. 177
.177
178
. 178
178
179
.180
.180
as
Workshop
Teste .
Exercfcio
Exerclcio
Exercfcio
Exercfcio
Exercicio
Exercicio
Exercicic
Dia5
1
2
3
4
5
6
7 .
.. ...
O bjetivcs do capftulc
.
Entendendo as Indices de tabela .
Exibindo indices
.
Consider acbes ao cria r urn Iodice
Criando urn Indi ce secundario . .
Excluin do urn Indice secun dsrio .
D etermin ando qu al Indice esu sendo uti lizado
'Exibindo configuracoes tecnicas
Classe de dados
'. . ':
Ca tegoria de taman hc
.
Exib indo 0 nu mero de extens6es alocadas para uma tabela .
Utilizacic de buffer em um a tabe1a
Res umo . .
P&R . . .
Workshop
Teste .
. Exerd cio 1
Dia 6
183
. 183
. 183
186
187
189
.190
191
193
. 193
195
. 195
. 196
.213
. 214
.214
.215
.2 15
. 217
. 217
.217
. 218
.221
. 221
.222
.223
.223
.. 225
.226
.230
Workshop
Te ste .
Exercfcios 1
Dia 7
.\ .
Workshop
Teste .
Exerctcio 1
SEMANA 1
Revisao
SEMANA 2
Visao geral
Dia 8
. 231
.232
.233
.233
.234
. 234
.234
235
. 235
. 236
. 236
. 237
.238
. 241
.254
. 255
.255
.256
. 256
. 2 57
... .... ..
.259
261
. 261
Objetivcs do capitulo
.
. 261
Definindo constantes
.
.262
Sintaxe da instrucao CONSTANTS
.263
Definindo strings de campo . . . . ,
.263
Urilizando a instrucao DATA para definir uma string de camp o .
Utilizando uma string de campo como uma varidvel do tipo char . .267
.268
Utilizando a instrucao TABLES para definir uma st ring de camp o
String de campo defi nida u tilizando TABLES in teragindo com
SELECT
. . 269
.270
Visibil idade de uma string de camp o definida uril izand o TABLES
.270
Definindo ripos
.
.270
Sintaxe para a inserucao TYPES
.272
Tipos estruturados
.
. 273
Grupos de ripe
.
.274
Criando urn grope de ripe
.275
Resume.
.276
P&R
.
XV
XVI
Workshop . .
Teste . . .
Exercfcic 1
Exercfcic 2
Dia 9
SUMARID GERAl I
Objetivcs do capitulo
.
Antes de prosseguir
.
T rabalhando com variaveis de sistema
Localizando varidveis de sis tema
Instru coes de atrib uicio . . . . .
U tilizando a insrrucao cl ear
Utilizando a instrucao move
P&R .. .
Workshop
Teste .
Exercfcio 1
Dia 10
. 277
. 277
. 277
. 277
Resumo . .
279
.279
. 279
.280
.283
.286
.286
. 291
. 303
. 304
.309
. 310
. 311
. 312
.312
. 312
Workshop
Teste .
Exercfcio 1
Dia 11
Tabelas in ternas . . . . . ..
349
.349
.349
.350
Obierivos do capitulo
.
Princfpios da tabela interna
.
Definicao de urna tabela interna
Adicionando dad os em uma rabela interns util izando a instrucac
append
.
Lendo 'dados a partir de uma tabela interna
.
C lassificandc 0 ccnteodo de uma tabela intem a
Resumo . .
P&R .. .
Workshop
Teste .
Exercfcic 1
.. 31 5
.315
. 315
.316
.317
.319
. 320
.32 1
.326
.326
. 327
.327
. 328
. 328
.330
.332
. 334
. 336
. 336
.337
.338
.339
.340
.341
. 344
. 345
. 346
. 347
. 347
P&R .. .
Dia 12
tabela intema
.353
. 359
. 376
. 382
. 383
.385
. 385
.385
387
. 387
. 388
.388
.389
. 389
.390
. 391
.392
.393
. 395
.395
; 395
. 397
.398
. 400
. 400
. 403
. 403
. 405
. 406
. 408
XV"
SUMARlOGERAl t
Workshop . .
Teste . . . .
Exercic io 1 .
Dia 13
. . 412
. . 413
. 417
. 417
. 422
. 423
. 424
. 424
.424
. 425
. 425
.
Preen ch end o uma tabe1a in terna a partir de uma tabela de banco
de dados
.
Selecionando rmiltiplas linhas diretam ente para uma tabela intern a
Adicionando Iinhas, uma por uma , utilizando se1ect
Resumindo se 1ect, tabelas in temas e eficiencia .. .
U rilizandc as tabelas de exemplo 1fal , 1fbi , 1f el e 1fe3
Process amento de interrupcao de con trole . . . .
Utilizando as in struc oes at fi r st eat l ast .
Utilizando as instru co es at new e at end of .
Ut ilizando a instrucdc sum
.
Llrilizand o a ins trucio on change of
Resumo
.
P&R
.
Workshop .
Teste . .
Exercfcio 1
Exercfcio 2
Dia 14
A instrucao write . . . . . . . . . . . . . . . .
Objetivos do capitulo
.
Porrnatacao e comprimentos padra o
Co mprim enros padrao
Campos compactados
.
Eormatacao padrao
.
P ro grama de exemplo dem on st rand o a formatacao padrdo .
Adiljoes para a instrucao writ e
.
Workshop
Teste .
E xer clcio 1
SEMANA 2 Revisao
D ia 15
.461
. 461
. 461
. 462
.463
.465
.467
. 468
. 470
.471
.472
. 473
. 474
. 476
. 479
. 481
".
. 4 95
. 425
. 426
.434
.437
. 438
.439
". 440
. 444
.449
.451
.45 8
. 459
. 460
. 460
.460
.460
. 461
. 482
" 490
.491
. 493
. 493
.493
.494
.497
499
Objetivos do capitulo
.
. 499
Fo rmatacic grafica com a inscructo write
.
.499
Sint axe paraas adiljoes graficas para a inscrucao write
.500
Utilizando a adic;ao as symbol .
.
.500
Utilizando a adic;ao as i con
.
. 501
Utilizando a adifjao as 1; ne
.
. 503
Exibindo os sfmbclos, leones e caracreres 1i ne-drawdisp onjveis . . 506
Formatando e imprimindo relatorios
.
Contro lando 0 tamanho de pfgina
.
Criando cabecalhos e rodap es de p agina .
Res umo . .
P&R . . .
. 507
. 508
.513
. 525
.525
. 526
.526
.526
Workshop
Teste .
Exe rdcio 1 . .
D ia 16
Workshop
Teste .
Exercfcic 1 . . .
527
.527
.527
. 528
. 529
. 530
. 534
.536
. 538
.540
. 541
.542
. 542
.542
. 542
k.IX
9
.622
.623
...
.. 559
18
nassanuo
.568
.570
.570
.570
Exercicio 1 .
Mc)duLlaI'lzalGajO:
ng
. . . 561
.563
.568
571
oal~anletroS para
.571
.573
.576
.578
Passando parametros . . . . . . , . . . .
Criando parametros digitados . . . .
Controlando como os pararnetros sao passados ..
U tilizando as metodos de passagem de parametros
Passando tabelas intern as como parametros .
Definindo e chamando sub-retinas externas
. Resumo . .
.
P&R . . .
.
.
Workshop
Teste .
Exerclcio 1
.595
.595
.596
.596
eo'
.597
.598
.600
.601
.602
.604
.605
.605
.607
.608
.. 609
610
.611
.613
Workshop .
Teste ..
Exercicio 1
.592
597
U tilizando a instrucao include . . .
Sintaxe para a instru<sao include
Introduzindo modules de Iuncao
.
Entendende gropos de fun~ao
.
Acessando a biblioteca de fun~ao
Ativando urn modulo de fun<sao . . . . .
Definindo dados dentro de urn
Definindo a interface de modulo de
Passando parametres .,
U tilizando parametros dizi tacos e nao dizitaacs
Chamando modules de fun<$ao . . . . . .
para a instro~ao ca11 functi on .
Executando um modulo de fun<sao de exemplo
Criando urn m6dulo de
Resumo.
.. . . .
P&R
.583
ng .
.628
.629
1
.638
.640
.641
.641
.644
.648
,649
.650
.650
.651
,651
.651
Dia 21
Objetivos do capitulo . . . ' . . .
Programacao baseada em evento
U tilizando 0 evento i ni t i ali zat ion .
Utilizando 0 evento at sel ect i on-screen ..
Utilizando 0 evento at user-command ...
Validacao de dados utilizando chaves estrangeiras
Validacao de dados utilizando matchcodes
Sintaxe para utilizar um matchcode .
Formatando telas de selecao
U tilizando
se1ect i on-screen ..
Sintaxe para sel ecti on-screen block com frame.
... . . .
.653
.653
.654
.655
. 6~5
,657
.659
.666
.666
.667
.667
,668
.670
.671
,672
.672
.673
.673
-.,.,
,~t..
IXXII
;il~\
v
~A P R E N D A EM 21 DIAS ABA P/ ~
.681
.682
.684
. 685
. 685
. 685
.686
P&R ...
Workshop
Teste .
Exercfcio 1
SEMANA 3 Revisao
687
Introdu~ao
689
. 689
. 690
.691
. 691
697
719
"
IIIll<OOU(AC
-Z
Espero que voce ache 0 esrud o deste livre tao agrsdfvel quanto achei
escreve-Io. Boa sorte! Eis 0 seu A BA P/4 em 21 dias!
~m
Uma dico cfere ce ccnselh cs ou mostro umo moneira mois f6cilde fozer
olgumo coisa .
~o
"-- - - - - - -- - - -- ------'
I Fa~a
Esses quodros-de FO/iolN eo fOlio
oferecem dices perc a que fozer e
nco fozer com 0 ASAP/ 4.
que
scmNUMlIltr...
Muitos dos proced imentos neste Ilvro sao demonstrodo s vtilizondo screencoms .
,.. As screencoms s60 como filrn es; mostrom umo sene de telcs, induindo pressionomentos de teclo e movimentos de mouse, com umo ncrrocdo "descrifivo em ingles.
NOYO ...
milo ,.
.,
ENlllOI~
Iliol ~
INAtIIE~
'.
Sumcirio
.. . . . . .
Inrroducao
SEMANA 1
. . . 1
..
Visco geral . . . . . .
Dia 1
0 ambiente de desenvolvimento ..
. 7
D ia2
43
Dia 3
143
Dia5
Dia 6
217
Dia 7
235
Dia4
95
183
SEMANA
1 Reviseo
.257
SEMANA
2 Visco geral
.259
Dia 8
261
Dia 9
279
Dia 10
315
Dia 11
Tabelas internas
Dia 12
387
Dia 13
425
Dia 14
A instrucao write . .. .
461
349
SEMANA
2 Reviseo
. 495
SEMANA
3 Visco geral .
.499
Di a 15
499
D ia 16
527
D ia 17
545
Di a 18
571
Dia 19
597
SEMANA
Visao geral
Voce comeca a Semana 1 aprendendo sabre 0 ambiente do R/3,
incluindo 0 Basis, clienees de logon, 0 ABA P/4 Development Workbench e 0 Data Dictionary. Dentro do dicionario, voce cria tabelas
transparentes utilizando elementos de dados e dominios, adiciona chaves
extemas para validar entrada e prepara indice s secunddrios ou usa de
buffer para acelerar a acesso aos dad os. Voce tamb em aprende a criar
ajuda Fl e F4 para 0 usuario, corne ca a escr ever programas ABAP/4
simples e familiariza-se com 0 editor do ABAP/4 .
0 Dia 1, "0 amb ience de desenvolvimenro", explica 0 que e urn
sistema R/3 e sua interface com 0 usuario. Voce aprende sabre
a arqu irerura do sistema em que fun cio nam prograrnas no
ABAP/4.
. 0 Dia 2, "Seu primeiro programa ABAP/4", ensina a criar e
modificar programas ABAP/4 simples. Voce tambem exibe uma
tabela e seu conreudo utilizando 0 D ata Di cti onary, assim como
adiciona com entarios e documentacao aos seus programas.
No Di a 6. "0 Data Dic tionary, Parte 4". voce rrabalha com 0 utilitario
~e banco _de dados para execurar verifica~ao de coe renc ia, acess o de
mform a!Soes de tabelas especfficas de banco de dad
.
. d
. d
b
as, m serm 0 e
recnan 0 ta elas no banco de dados.
Depoi s do Dia 7, "De finindo dados no ABAP/ 4 Part I"
,
ente d I d .
,
e , VOce
n e as e ementos a smtaxe do ABAP/ 4 d
.
bi
d d
escreve 0 concerto de
o ~~;~s e dad~s e SU~ : isibilidade, utiliza Iiterais e entende como
co 1 lear ca a np o, definin do e utilizando constantes.
o ambiente de desenvolvimento
Qbjetjvos do capitul....
o'--
II
0 que
0
o
1
que
e clienre d,elogon ?
e R/3?
e
R/3 urn conjunto inregrado de aplicativos projetado para tratar 0 processamento de dado s em grandes corporacoes. Ele foi desenvolvido na Alemanha
pela empres a denominada SAP {uma sigla de Systems Applications and Produc ts for data processing - aplicativos e produrcs de sistemas para processamento de dados).
.
'"
VOl
EN'
WF
r:w orkflow -
[luxe de trabalho)
IS (Industry Solutions -
sop, como em "teclo sap" . Voce nunce deve dizer "sop" quando se
referlr o empreso SAP. Sempre 0 pronuncie como "es-el-pl". Dlzer "sop"
eo mesmo que dizer lieu n60 sei node sabre SAP".
solucoes de industria)
pp
Todos os m6dulos de
oplicotivo s60 escritos
em ABNJ/4, que e
inlerpretodo por
executovets Basis, que
BAS IS
.
por que voce, preCIse
SISTEMA OPERACIONAl
E importante para
gerenciamentc de materiais)
comabilidade financeira)
controladoria)
sistema de projetc)
gereneiamento da qualidade)
II
'
S al.l:He
~rU:IS
:ilS'-lO=
fjguro 1 2
urn aplicativo que nao tira proveito da natureza altam ente inte grad a do ambi-
o kane do R/3 no
= ~ M.
6reo de trcbcfbc-
lce ne
do R/3
Voce pode cprender sa bre as 6reos funcio nois lende 0 referencia o nline
do R/3 (cominho de menu do R/3 Help-> R/3 libra ry). Ela cc ntem
tutoriois e Inicrmccoes de todo s os areas funclc ncls . 5e voce ti ve r
ocesso 0 um sistema com dodos do IDES (Internat io na l Demo and
Education Sysfem), voce tcrnbem pcderc troba lhor co m as exerdcios
do R/3 library. Perc lnformocces sebre-e dispcn'btlidcde de cu rsos de
trelncm entc, co ntofe a SAP (ht tp ://www . s ap. com) o u la mbto n Col-
1 3
A lela de logon do
R/3 solicifa 0 voce
urnc senho.
EJgurp
Descobrind"'o!..Co"'-'R>L/.3..'--
Em urn amb ient e do Windows, voce eferua logon no R/3 escolhendo urn
caminho a partir do men u Iniciar, ou dando urn clique duple ern urn Icone R/3,
como 0 mosr rado a segu ir na Figura 1.2.
sistema R/3 solic itara a voc e urn ID de usuario e senha. A tela de logon
apa rece na Figura 1.3. Voce pr eench era esses dois campos eentao pre ssionaci
Enter.
o sistema R/3 entao exibire uma tela de direitos autorais e, quando voce
pressionar Enter, exibira 0 men u principal do R/3 como mos trado na F igura 1.4.
\
i
I!
I
-j
.~.
a area Basis
Development Workbench
._ - -'--
,.. r
12
~1
1~ R' 9 It
. . . .lcVo'c< - - - ., _ - . , _ _ 1_
:" 1
~.::r~-:+- ~
1,1,,1
;: _. -~r_
,EI
ESE
LV
ITC
-'e'.. .1
Figura] 5
a cominho de menu
otuolizo urn
registro-mestre do
fobriconte (porte i ).
.lit
Figur a]
A...--
o cominho de me:nlJ
otuolizoo
registro-mestre de um
fobriconle (p orte 2).
14
Fig ura 1 9
@'.: sr
;_
Solvondo oltero~6e s
no eneJerer;o do
fobriconte.
[Ill
f! -'
G.- ' _-
.1.".. ,1
.,::,. _.',.
I
__._
d o:" . D, x -~ M : i:l ~ o ~ ,:rq . . '. ,
~~;i.;i;;'I~I~"ldl lio~;t ,_'\1 ~" " ;~.;-' f':'~'~/~" ... " .> _.
.. ' .. "
'.-~','~ - .~ ':-'-
II"
",:
TI1"h....
~, ..ht..
I"]
Io/fIlI';1
.-
.-,'
~.
tf~~~~~}~~~~~~f~;;{t:~}tii~~
E..i..Q..ura 1 8
figur "
A Initiol Screen
Address .
1 10
, ,"
~':
con ~rmo
q ue 0
o/leroljoo de e ndere'i0
fei feito.
Essa t ran sacao e urn exernplo de muitas das rransacoes no sistema Rl3.
A maioria das rransacoes de dados-mes tres tern aparencia e significado semelhan res.
usu6rio do R/3
16
ele.
Barra de
titulo
Compo Command
menu de interface
o leone corn tres cfrculos coloridos no canto superi or direit o da janela do R/3
e chamado menu de interface. Com ele, voce pode pe rsonalizar a interface com
o menu de interface
com 0 item de menu
Options destocado.
Barra de status
18
01.
De urn cliqu e na guia Ge neral e altere suas configuracoes para coinc idir
corn . as mcstradas na Figura 1.13. Pazendo isso, voce assegura que a sua
interfa ce com 0 usuririo ficard par ecida e se comportara como descrito ne ste
livre.
A tive todas as barras de [erramentas (fa~a um a mar ca de selecso em codas
elas) e configure Quick Info como Quick. Fac;a um a marea de selecao na
p rimeira e na ultima das caixas de selecao de mensagem como mosrr ado. De
urn clique em Apply.
JA Jll
:Dr
VD'
IEN- .J ~ ..-
Figura 1 14
~!i~i~J,
Calocondo marcas de
selelOoo no caixa de
selelOoa Co lors In
Lists.
Voce deve dar urn clique no batao Apply ou OK ant es de escother ovtrc
g uio. Se voce nc o fizer issc, sues clterc coes noo tenSa efe ito.
tt.'tk~...:;:f;;(e~J",? J '"-,,,- ..
. De urn clique na guia Col ors In Lists e fac;a uma marea de selecao na caixa
de selecac Lines In Lists como m ostrado na Fi gura 1.14. De urn clique em OK
para reto rna r.
F ig u ra 1 13
num erico.
Utiliza ndo
Comma nd Field
rran sacao.
horizontais em seu relarorio de saida. Essa opr;ao deve estar selecionada para
que voce veja 0 efeito das insrrucoes graficas de linha que voce codificard mais
tarde neste livre .
NOYO ....
milo"
20
Enten d en d o
Basis
NOVO ~
Basis e como um sistemo operocional para R/3. Ele fico entre 0 c6digoABAP/4
eo sistema cperoooncl da computodcr. ASAPgosta de chcmc-lo middlewore
porque ele fico no mete, entre 0 ABAP/4 e 0 sistema operacionel.
lUMO "
--~-
Sistema
operational
Hardwa re
suportado
Fro ntaEnd s
suportados
AIX SINIX
SOLARIS HPUX
IBMSNISUN
Inform lx-Online
D ;g~ol .UN IX
Bull
Windows NT
Di gital HP
OS/ 2
O rccle 7.1
Macintosh
ADABAS D
W;n 3. 1/ 95/NT
BulllZen;lh
OSF/ Mot;f
Orode 7.1
SQl Server 6.0
HP (Inlel) SNI
OS/2
ADABAS D
IBM(Intel)
Macintosh
AT&TCompoq
Diqltcl (Intel)
Dcto-Geoerc l
OS/400
AS/400
W;n95 OS/2
DB2/4 00
22
... <
com urn banco de dados Info rmix e uma interface OSF/Motif, esse mesmo
programa deveria sec executado sem modificartio em uma mdquina Windows
NT com urn banc o de dados Oracle e uma inte rface Windows 95. Ou, ele pode
sec executado em urn AS/400 com urn banco de dados DB2 utilizandc OS /2
com o front -end .
A SAP tambem oferece urn co njun to de [erramentas para adm inistrar 0
sistema do Basis. Essas ferramentas executam tarefas como monitoracao do
desempenho do sistema, alem d a con figuracso e manutencio de sistema. Para
Time).
o Basis foi p rcj etado para ser executadc em uma configuracac clien-
chama uma sub -retina transfere 0 controle para a sub-r otina e nao pode ser
executado em qualquer processamento at e a sub-retina retoma r 0 controle.
Os programas cliente e servidor sao processos independen tes. Se 0 cliente
envia uma soliciracao ao servidor, ele eSta livre para executar outre trabaiho
enquanto espera a respcsta.
A Figura 1.16 mostra as rres configuracoes cliente/servidor padrao . 0
R/ 3 pod e ser modelado para trabalhar em qualqu er uma dessas configuracoes.
Quando 0 programa cliente e 0 servid or sao execu tados no rnesmo
cornpu tador, a cccfiguracao e referida como cliente/servido r em urna camada.
[Uma camada (tier) e 0 limite entre dois computadores.] Quando des sao
execurados em cornputadores diferentes, a configuracao e referida como eliente/ servidor em duas camadas .
Urn programa pode func ionar como urn cliente e como urn servidor, se
ele tanto solicita informacoes como responde as solicitac oes. Quando voce tern
treS programas em comunicaclo, como e mo strado na Figu ra 1.16. a configuraliaO e chamada client e/ servidor em tres cam adas.
A configuracao cliente/ servidor permite que 0 sistema R/3 divida sua
c.arga com mul tiple s computadores. 1 550 oferece ao cliente a capacidade de
ajustar a escala ao poder de processamento do sist ema para cima ou para baixo
simplesmente adicionando Dutro computador a u ma configuracio existence ,
em vez de substiruir urn {mica computador que executa todo 0 processamento,
como ocorre no mundo des mainframe s.
F igmn 1 16
ConfjgLlro~6es
~
NOVO ....
llRIIO
outre [ve]o
Solicitocc c de
Progrom o
die nte
Resposto
._.
......"""-
inform oc;60
c1iente/servidor.
Progromo 1
....... .....
Figure 1.15).
AeSSEmOo do sistema
Limo.
flgu rg 1 1 5
dienle/servidor em
... _e-acIo
te/servido r.
Entenderidc.c.cliente/serxidcr
23
DlH.O....BIEHlE DEDESENVDLVIMENTD
Progro mo 2
Progromo
servidor
..f=f-l-I-- -} -
24
~rvidor
de opresentoc;60
servidor de opresento~ oo
reo lmente um progroma identificodo como
sapgui . exe. Normolmente, elee insto lodoem umoestccsc de trobolhode uscorio.
Para inicc-lo, a usu6rio d6 urn d ique duple em urnleone no area de trobalho ou escolhe um
caminho de menu. Quando lnkio do, a servidor de opresenfoc;cio exibe a s me nus do R/3
dentro de ume janela. Esso jonelo e comumente coohecidc como SAPGUI, ou como interface
com a usu6rio (au simplesmenfe, interface). A interfoce oceifo entrada do usvoric no forma
de pressionomentos de tecla, cliques de mouse e teclos de func;oo e envlo esscs sclicltccoes
00 servidor de aplicotivopare serem processados. 0 servidorde oplicotivo envio as resultados
de volta 0 SAPGUI que entoc fonnata a soido a fim de exibi-Ia para 0 usu6rio.
NOVO ...
TEmO "
1..
Descobrindo
F i g u ra] 17
KOVO....
A orquiteturo do'
sistema R/3.
Serwdor de
gptl!5 entgO
mwo ,.
Passlve;s
configurot;6es do
sistema R/3.
o servidor de oplicotjvo
NOYO '"
Urn servidor de aplicativo urn conjunto de executoveis que interpreta ccletivomente os progrom os ABM/4 e gerendo a entrada e 0 sc fdo para eles.
Qua ndo urn servidor de cplicctivc e inicioda, todos esses execvtovels inicicrn 00 mesrno
tempo. Quando um servidor de cplicctivo e interrompido, tadas eles porarn juntos. 0
ncrnerc de precesses que sao inidodos quando voce exlbe 0 servidor de ap licotivo e
definido em urn vnico orquivo de confjg urc~ao chomodo perfil do servidor de ap!icofivo.
milD r
Cada servidor de aplicativo tern urn perfil que especifica suas caractertsticas quando ele inicia e enquantc esta sendo executado. Por exernplc, urn perfil
de aplicativo servidor especifica:
26
--
Em uma configuracao clienre/servidor em tres cam adas, todos a s servidores de apresenracio, de aplicativos e de banc o de clados sao executados em
mdqu inas separadas. Essa e a configuracao mais comum para sistemas grand es
e e comum na ar ea de pro ducao.
Na dist ribuicao cia configu raclo de apresentacao, 0 aplicativo e a s servi dores de banco de clados sao combinadas em urn co mp utado r e os servidores
de apresenracao sao executados separadam ente. 1550 e utilizado para sistema s
men ores e {requentemente e visro em urn sistem a de desenvolvimento.
Na configuracac cliente/servidor em duas camadas, as servidores de
apresentacao e de aplicativo sao com binada s e 0 servido r de banco de dados e
separado. Essa configuracac e uti lizad a em conjuncao com outros servidores
de aplicativo. Ela eaplicada para urn servidor em lote quando este esta separado
dos servidores online. Uma SAPGUI e instalada nele para oferecer controle
local.
NOVO....
URMO
sistemas dentro de umo Instclccoo de SAPe a forma como eles s60 designados,
tois como desenvclvirnentc, teste ou prodocec.
Definlndc
NOYO ~
Quendo voce ovvir o!guem utlllzcr 0 po lovro insfdncia , no maio rio de vexes
essa pessoo estero se referinda 0 um servldor de ap Jicotivo. 0 le rma instdnci o
sin6nima de servidor de apficatiYo .
TtRMO ~
Ela con sisce em urn dispatcher e multiples p roc essos de trab alho.
T odas as solicitacoes provenientes de servidores de apresen taci o sao
dir igidas prim eiro eo di spatcher. 0 dispatc her grava-as prim eiro na camada do
disp atc her. 0 dispatcher extrai as soliciracces cia camadautilizando 0 algoritmo
primeiro a entrar, primeiro a sair . Cada solicicacao e entao alocada para 0
primeiro pr oces so de trabalho disponivel. Urn proc esso de trabalho trata uma
solicitacao por vez.
Do servidor de cplicotivo
_
~e~d~ ~e ~l!::a~vo_ _
A ofquiteturo do
servidorde opJicotivo.
1
I
I
I
I
I
27
Em te rm os mais gerai s, uma instdncia eurn seruidor. UIDa in stan cia eurn
con junto de process os do R/3 que oferecem servic e s ao sist ema R/3.
Figura 1 19
I
I
I
I
I
Area de rolagem
Mem6rio estel'1dido
I
I
-- ---- - -- - - -
r...
URMO ~
~r
,..,
- --- - --- __
r-=--~~~~~------- --~~
I,
~~
~~
...
~-- ~~~
28
J------.-:-----~==:::=.-
Um posse de di61ogo
Fjgurg 1 20
Pcsscr do Initiol
FK02
Foboccnte 0
~yo ....
pare 0
-,
Processo de Iroholho
-+--+~
\..
\
'
'1..05 I
,
lEma r
lnklo do
po sso de
, di6lo go
tel utlllzodo.
c:::l
Dispatcher
=
=
= ==
T o da vez que urn usuari o inicia urn programa, urna area de ro lagem e
criada para essa instancia do p rograma . Se doi s usuaries utilizarem 0 mesmc
programa simultaneamente, existirao duas areas de rolagem - uma para cada
usuario . A area de rolagem e lib erada quando 0 programa e encerrado.
NOVO ..
Enderecc
ADO
c1 Endereco
Address Screen
lnif.o IScree n
29
\
i
Urn passo de didlcgo e 0 proces sarnento nec essario para sair de uma ~e.la
pan a proxima. Ele inclui rode 0 processamento que ocorre de: d.equ e 0 us~a.no
faz uma soliciracao ate . e incluindo, 0 processarnento n.ecessano para exibir a
.p r6xima tela. Por exemplo, quando 0 usuario dol. urn ch~ue DOl tecla Enter n o
Change Vendor: I nitial Scre en, ele in icia urn passe de dialogo e a amp~lheta
apa rece , impedindo out ra entrada . 0 p rograrna sapmf02k recupera as infermacoes do fabricante e as exib e na t ela C hange Vendor: Addr.ess, e.a ~mpulheta
desaparece . 1 550 marca 0 fim do passe de dialogo e agora 0 usuano e capaz de
faz.er o utra solicitacao .
Ha quatro maneiras de
partir do SAPGUI:
Pressionar Enter.
Figura 1.20) .
programa ABAP/4.
---
II
30
Entendendo
NOYO Ilrrr..
Urn programa ABAP/4 ocupo openos urn process o de trobolho pora urn passo
lERMO
31
contexte do usu6rio
safrern roll in pora 0 processo de trobolho. No lim do posse de di6logo, eles sofrem roll
out. Isso e i1ustrado no Figura 1.2 1.
Fi g u r a 1 21
urn
.,.
~~
Os componentes de
um proceno de
trabo/ho.
Interprefodor do ABAP/4
Handler
de to refo
Interpretodor de telo
Interface de bonco de dodos
e composto do seguinte:
Um handler de tarefa
U rn interpretado r de ABAP/4
Urn interpretador de tela
U rna interface de banco de dado s
Todas as soliciracces passam pelc handler de tarefa , que entao afunila a
solicieacio para a parte apropriada do proce sso de tr abalho.
interpretadores interprerarn 0 codig o do ABAP / 4. Note que hi dois
interpretadores: 0 inrerpretador do ABAP/4 e 0 int erpr etador de tela'. Hi
as
r------------~--
32
'W .....--
D~ h 0U BiEIffi DEDESENVDl~M", O
b"!P
Fjgura 1 23
a usu6ria digifo a
d iente de logon no
tela de logon no
compo Client.
Tipo de processo
o IDio log)
Scllcltccoes de di6!ogo
V (Update)
B (Background)
S (Spool)
Fjg ura 1 2 4
Esto lobelo ~
E (Enqueue)
M (Message)
depen dente de
di ente porque 0
primejro ccmpc
G (Ga teway)
Entendendo
do tipo COO.
-- ....1
~ ~ ~.., _
....- -_ ......_-.~--~-------
c1iente de logon
termo cliente de logon DaO tern nada a ver com Cliente/Servidor com plet amente diferente. 0 clients delogon se refere ao mimerc que 0 usuario
digita no camp o C lient na tela de logon (veja a Figura 1.23).
o mimero digitado aqui pelo usuario corresponde a urn conjunto de
linhas dentro de cada tabela dep endente de clienre dentro do banco de dados .
l' -'
g-"
~ _ ,", - . ~
,: ~. ~ _~ , ....
I.
33
34
":"\
r>
-r> r~-;-,-...,.---~~-
--- _ --
;W _
-w
.,....
laura 1 25
Esto tobe/o e
independ ente de
elien/e, porque 0
prime iro compo n60
e do tipo
__
CLNT.
o efeito do
dependencio de
cliente.
o ulv6rio
elelllO logon e
Clienle
[]QQ]
f---...,.-~ ~ e;:~:e
Jcbe lc lFAt
MANDT
700
700
80
800
'
@]
Sardo
:
:
100 :
101 :
lIFNR
I
11
12
100
1 1
..
35
r
36
-r-
r r
~"
F; gllrg 1 27
o ccmponenle de
Processo de frobolho
interfac e d e bonco de
..2
dodos do processo de
A instcloccc mais com um do R/3 tem tres sistema s: deseovolvimento,
teste e producoo . Pa r podroo , cod a sistem a vern co m tres clientes
instolodos: ODD, 001 e 066" Eco mum ter de tres 0 se is c1ient es nos
sistemas de desenvolvlmento e de teste, ma s roromente voce vera mois
de um cliente no producdo.
( Nota
Uti Iizoad 0
Open SQuL....,d...,o.........S""A:\LP
trobe/he"
-0
'U
c
1=\
Ope n SQl
IIF
SQL native
o c6digo do ABAP/4 po de ser portado de urn banco de dados para outro. Para
acessar 0 banco de dados ern urn program a ABAP/4 voce codificara a Open
SQL da SAP. 0 Open SQ L e um subconjunt o e uma variaclo do ANSI SQL.
o interpretador do ABAP/4 passa tod as as instrucoes ern Open SQL para parte
da interface de banco de dados do processo de trabalho (veja a Figura 1.27).
Ai" e1as sao convertidas em SQL que e nativo para 0 RDMS inscalado. Por
exemplo, sevoce esriver execurando urn banco de dados Oracle, seu Open SQ L
ABAP/4 seria convertido pela interfac e de banco de dados em instrucoes de
Oracle SQL.
Se voce utiliza Open SQL, suas instrucces de SQL serao passadas para a
interface de banco de dados. Utilizar Open SQL tern tres vantagens principais.
Todas elas sao implementadas por rneio da interface de banco de dados .
f-OJiahilidad=----e
- --
~D B
- - - - - -- -
Buffer de dodos
Servrdor de
bcncc de
dcdo5
8
Troto me nto o!ltom6tico de c1i ente
A terceira vantagem de utilizar Open SQL eo"tratan:zento automdtico de cliente.
Com Open SQL, 0 campo de cliente automaticamente e ocupado pela interface
de banco de dados. Isso ofereee as suas equipes de desenvolvimento e de teste
muitas vantagens, como a capacidade de executar multiples testes e treinamencos
simultsn eos em urn unico banco de dados sem incerferencia de urn em outro.
Resu m o
0 R/3 sup~rtamultiplas platafo rmas de hardware, sistema operac ional
e bancos de dados .
37
--- 38
W'
'W" _
.w
DIA 1, DAMBIEHTIDE DEIENYDlYIMENTD
0 cliente de logon perm ite que mulriplos grupo s de dados independentes sejam armazenados ria rnesma tabela. Os dados que voce
acessa dependem do numero de c1ientes que voce digitou quando
efetuou lo gon.
P&R
o
o
o
o
Teste
1. Eseolha 0 caminho d e menu T ool s-> Ad ministr ation, Monitoring ->System monircring-> User overview. Qual eo c6digo de tr ansa!S3.o para essa transacio?
2. Qual e 0 codigo de transacio par a 0 menu principal R/3 ? (0 menu
principal e 0 primeiro menu exibido ape s 0 logon.)
3. Qual e 0 codigo de transacjlo par a 0 caminho de menu To ols-o-Development Workbench?
4. Se hi treS sistemas R/3 na sua paisagem de siste ma atua], quantos
bancos de dados existem ?
5. Se urn sistema R!3 tern dais servidores de aplicativo, quan tas inst ancias ele tern?
6. 0 que e Open SQU
7. Quais as van tagens que 0 Open SQL of erece sob re 0 SQ L native ?
8. Qual e a parte do processo de t rabalho ut ilizada para implementar
OpenSQU
9. Quando um a area de rolagern e alocada, quando edesaloc ada e 0 que
ela contem?
10. Quando urn contexte do usuario e alocado, quando e desalocad o e 0
que ele contem?
11. Quando ocorre roll out e por que isso oeorre?
Exerd cio 1
As tabelas na figuras de 1.28 a 1.31 sao depe ndentes
Entretanro, voce deve saber que voce apenas faria isso se estivesse
escrevendo urn p rograma de sistema. Isso nunca e feito em urn
programa aplicativo; eles sempre devem ser independentes de
client e. Se voce precisa rransmitir clados entre dois cliente s de
producao, deve imp lernen rar a tran sferencia de dados via ALE .
Workshop
o Wo rkshop oferece duas mane iras de voce verificar 0 que aprendeu neste
capjrulo. A Se!1aO T este oferece perguntas para ajudar a solidificar seu ente n dimente do cont eudo aborclado e a selSao Exercfcio permi re que voce pratique 0
que aprendeu. Vo ce pe de encon trar as respostas as perguntas do teste"e dos
'exerc fcios no Ape ndice B, "Resposras as perg untas e aos exercfcios".
clienre?
OU
39
"""""-~----
- ...
40
Estc lobe/a e
dependente o u
independente de
d iente?
Figura 1 31
Fig ura 1 29
, Estctobe/o e
dependente ou
independente de
Esto lobe/a e
dependentt! au
independente de
clienle?
cliente?
': , . l ,
Sf
J,ftj
fIf
~".,
1.
g, ,:.i;"'4o .Ii
, ;; -
":~. <
41
~ -- - -.- _
.. . -._.
- -_ .
~~~-----------
Antes de-Prosseg"uLli.Lr
hllp:/Iwww.comput.eom. bt
....
s_~
_. ~-
44
..........
'W _
fxplora ndo
MOYO lit..
H~O
ombiente de desenvolvimento
Um ob jeto de desenvofvimento
Exem plos de objetos de dese nvo!vimento s50 programos, telcs, tcbelos, visuo1i ZQ ~6eS, estrvlvrcs, modelos de dod os, mensoge ns e includes .
NOYO....
TIR.\IO ~ .
0 sistema do R/3 ccntem ferromentos para crier e testar objetos dedesenvclvimento. Essos ferromentos estoo locolizodos no R/3 Development Workbench.
Perc ccesscr quolqu er ferromento de deseovclvlmentc , voce ir6 para workbench.
0 Workbench Organi zer para registrar alteracoes em obj ecc s e promove -las na produclo
--
HOVO ...
,/
--
ltiMO r"
-~~' --.r
Definind o relat6rios
o prop6sito de urn relat6rio eler dados a partir do ban co de dados e escreve -los.
Ele consisre apenas em duas telas {veja a Figura 2.1) .
0 D ata D ict ionary onde voc e pede criar tabelas, est ruturas e visualiza~6 e s
doABAP/4
A tela e menu pintores onde voce pode criar uma interface com
usus ric para seus programas
ABAP/4 Debugger
SQL
NOVO
NOVO lrl.r..
TE~O "
h..
TERO"
A tela de selecsc e opcional. Nem todos as relat 6r ios tern uma. Entretanto. todos os relat6rios geram uma Iista.
Neste livro, voce aprende ra a criar programas de relat orio.
45
.... 46
r-
47
liste
[soldo do re lot6 rio)
Tela de selecee
(pcnimetros de e ntra da )
I1efin.inrlu..p.rrnlim.l.\aJ-'sLd......
e J,d.ui"
q '-'lo~gl"oL-_-------
Os programas de dialo go sao mais flexlveis do que os relat6rios e, portanro,
sao rnais complexes no nfvel de programa. Eles podem conter qual quer numero
de telas e a sequencia de telas pede ser alterad a dinamicamente em tempo de
execucio. Em cada tela, voce pode ter campo s de entrada, campos de saida,
boroes (pushbutton) e mais de u ma area rolavel.
D~-SCQbrim:lQ~ornpon.entes
de relat6rio
Os atributo s
as elementos de texto
A ernpresa em que voce trobo lha e cliente do SAP . Portonto, os progromo s que
n~o ~
A documentacao
As variantes
Fi gu r a 2 2
Os componentesde
progromo ,4BI>Pj4.
urn
Atributos
NOVO....
URMO'-
Dedique urn memento para esco lher urn identificador de tres co roderes especffico pa ro seus progromos. Deotro deste livre, farei refere ncio 0 esse
iden tificodor como sev handle . Ele deve comeccr com urn y ou z. Por exemplo, voce pode
uftliaor 0 letro z seguido por sues duos iniciois. A notc ccc indicor6 o nd e voce deve
utilizer seu hand le. Por exemplo, se voce escolhev zkg e viu 0 direr:;oo HDigite 0 nome de
progrom o abc" voce digitar io zkgabc . Recomendo que, a medida que ovcnccr oeste
livre, voce utilize seu hand le como os primeiros tres corode res de todos objetos de
desenvo lvimento que voce criar . Se voce fleer isso, eles sereo f6ceis de reca nhecer ma is
ta rde e mois f6ceis de lc coluor.
I
de 01 a 99.
Nomes de p rograma ut ilizados em exercfcios seguem a convencao
zt ycc nn,on de cc e0 mim ero de capftulo e nn eurn numero sequencial.
nom e de programa para a solu;ao sera. zt zccnn.
'** -
,c48
APiEN DA EM 21 Dl AS ABAP/ .
----'-
que vern abaix c urria descricao d o processo que voce seguirf p ara criar urn
programa.
. Quando voce efetua logo n no R/ 3 para criar seu primeiro pr ograma em
ABAP /4, a primeira tela que voce ve e 0 menu p rincipal da SAP. A partir dar,
voce i.r.i para a Development Workbench e depois para a editor. Voce ira digitar
urn nome de programa e cria-lo. A prim eira tela que voce vera sera a tela
Program Attributes. Af voce deve inser ir os arributos de pro grama e salvd-los.
Voce enuc teci permissdo para pros seguir para 0 editor de codi go-fcnte . N o
editor de codigo -fonte, voce ici inserir o codigo-fonte, salvs-lo e entdo execurar
o programa.
SCRHNW ~ lnicie a ScreenCom " Hew To Crea te Your First Proqrc m" ag ora.
Siga este procedimento para criar seu prim eiro programa. A ajuda para
problemas comuns e oferecida no D iagn6 stico e Solu~ao de Problem as que se
segue a ele. Se voce tiver problemas com qualquer urn dos passos , njio es que ~a
de consultar esse procedim en to.
I. Do menu principal do R/3, sele cione
2. Press ione
eexibida.
cami nho de m en u
titulo ABAP/4 De -
I
I
49
--r"- --~~_;. .
50
em ABAP/4
1 report z h 020l.
2 write ' Hell o SAP World' .
NOVO ...
TflMO"
51
Canceler (ConO!Q
Scir (Exit)
Vollar (Bode)
Salvor (Sevel
Compo de comclF'ldo
locolizor (find)
locoFizor 0 pr6lcimo(find Null
Prtmelrc p6gino (fin.1 Page)
P6gino onte rior (Previous Pagel
PrOximo p6gino (Next Pagel
(Commond field)
lnserir (Enter)
S
Cl
z
o Problema
~
n
0...
.n
1
1
I
'"
,
I
'"
C
l>'
.'"
....
0
'"
~
Fjgu r a 2 3
A partir do N3AP/4
Editor: Initial Saeen
voce pode exibirau
Sol u!;oo
'"
olterer os
camponenles de
progromo.
"
Explo ra odo
editor d.l:Lc.6dig,..
o-fonte...
52
53
1,
' J
, '-
r,_l
Figura 2 5
tit
l olI r.oo
'I h
II
....
. --'~""- ,
!.. ~
NW/4_
Cortor (CUi)
EJgllra 2 4
Utilize a tela
ABAP/4 Editor:
Edit Progrom
para olterar
Ivncionolidade
de componenle.
..
.
'!.4.
Selecioncr (Select)
Desfozer(Undo)
, - Ajudo do ABAP/4 (ABAP/4 help)
-: ..
..---- . ......
"-
'-_~r.llfJlx Q,1,a!:.
....,.
. ...
'C C l C
-- -- ,
""'
.'
..:: .~,'
ferrcmentos
Standard
"
Enter: Pression ar 0 bon o Enter tern 0 mesmo efeito que pre ssionar a
t ecla Enter. E tambem a funS-ao de divisao de lin ha. P ara dividir uma
linha de c6digo, posicione a cursor no ponto on devoce quer dividir a
linha e pre ssione Enter.
Os ccotrcles
do barre de
C anc el: Leva a usudrio de volta aABAP/4 Editor: Ini tial Screen' sem
salvar suas alteracoes. Se voce nao river salvo as alteracc es, voce sera
solicitado a fazer isso.
Print: Esse coman do imp rimirf a c6di go-fon te de seu programa. Quando
voce 0 pressi ona, a tela Print P arameters eexibida. Para recebe r sua saida,
cenifique-se de que a caixa de seles-ao Print Immed. esta ativada.
Firs t Page , Previous Page, N ext P age e Last P age: Esses comandos
permitem que voce role para cima e para baixo p elo c6digo-fome.
H elp : Exibe uma caixa de diilogo a partir da qual voce pode obter ajuda
sabre 0 ed itor e a sintax e do ABAP/4, ent re outras ccis as. Posicion e
o cu rsor em uma palavra-chave do ABAP/ 4 ou em uma linha em
branco an tes de pressionar 0 botao H elp. Para mais informacoe s, veja
a seS-ao intirulada "Obtendo ajuda" ma is adianre oeste capitulo.
54
IFa~a
Solve seu progro mo ante s de digitor urn
cc mc ndo /n no cam po de cc rncnd o.
Coso cootrone , voce perc/ere sue s
clte rcco es.
_. : : sao caracteres esp eciais. Se sua string inicia corn quaisquer desses
carac teres, voce deve envc lve-los dentro de delimitadore s. Voce pode
esc olher qual que r urn desses mesmos caracteres para urn delimirador
con tanto que ele nao apare~a dentro de sua strin g de pesquisa. Por
exemplo, : hh com eca com urn caractere espe cial. P ara localizar essa
suing,di gite -:hh-ou .:hh. ou , : hh ou ; :hh; .
salvos.
Etta e a tela
Seon:~/Reploce.
Bo
de coroctere em sec
55
# que ocoere na string. Por exemplo , para localizar a string alb, utilize
a string-de pesqui sa all b .
progromo.
lnide
IIrrrrrr..
S(lEENWl JI""
Para configurar
processo de localizacjo:
campo Find.
A s a String fad. com que sua string seja localizada em qualquer lu gar
no program a.
4. P ressione
Para pes quisar uma strin g que con tern espacos em br anco inco rporados, sim plesmente digite a string junto co m as espacos em branco no
cam po Find. N ao cc loqu e a String entre aspas. Se fizer isso, as aspas
serao con sideradas parte cia string de pesquisa.
IIrrrrrr..
\CREENCAMJI""
,I
pa ra a p esqm sa.
I
!
05
56
'W'
- . -- ..
5. Pressione
grams.
6. P ression e 0 botao Back mais uma vez para retornar ao editor de
codigo -fonte.
S(mHCAM~ lnkle a SereenCom "How to Search and Replace in the Source Code" ogara.
57
Antes de prosseguir, maximize sua janela (se ela ja nao esciver maximizada). Voce nao .pode ver os botoes na extremidade direita da barra de
ferramentas Application se sua janela for menor que 0 tamanh o maximo.
Os con troles de berra de ferramentas Application sao m ostrados na
Figura 2.7.
Figura 2 7
Os conlroles de
bono de ferromenloS
At:Jplir::otion.
~ ~
---~www_
58
_.
........ ....- _
D isplay < -> C han ge: Altera a tela de modo de exibicao para mudar
o mo do . Pressio n e-a novamente para altera -la de volta ao modo de
exibicao.
Check: Verifiea a sintaxe do pr ograma atual.
Where-Used List : Q uando voce pressiona esse botao enq uamo 0
cursor esta em qualquer nome de varifvel, ele exibird rodas as linhas
I,
cursor para
Duplicate Line: D uplic a uma unica linha au urn bloco in teiro de c6digo
se urn est iver seleciona do {veja 0 botao Select, acima}.
Move Line: Move linhas a esquerda e a direi ra. P ara mover uma Iinha,
coloque a cursor na posicao de destine e pr essione 0 bcrao Move Line.
Para mover urn bloco inteiro de cc digc, marque 0 bloco e cola que 0
cursor na primeira Iinha do bloco na posicxo para a qual de deve ser
mo vidc e entao pressione 0 botao Move Line. Para move-lo para a
esquerda, coloque 0 curs or aesquerda no comecc cialinha e pressione
a borao Move Line.
Mark Line: Co loque urn bookmark em uma Iinha . Voce po de exibir
todas as linh as marcadas com 0 cami nho de menu Goto -> Markers.
o buffer.
Ins er t From Buffer: Ins ere 0 conteudo do buffer ern uma nova linha
acima cia p osi<;ao de cu rsor atua].
Para trozer uma linha para a tope do [onelu do ed itor,de urn clique duple
entre as polcvrcs ov no final do linha . Mas n60 de um clique duplo em
umo polovrc, isso n60 funcio nor6. Um metcdo alternative e colocor c
cursor no fina l de umo linho e pressionor a teclo F2.
Insert Line: In sere uma linh a em branco acima da posi csc atual do
curs or.
Select: Selecion a um a unica linha ou urn bloco de Iinhas para mover,
conn e colar. Coloque a cursor na primeira linha do bloeo e pressione
Select. C ola que 0 cursor na ultima linha do bloeo e pressione Select
n ovamente. A s linh as contidas no bloeo se romarao ver m elhas. Voce
po de agora cortar, co piar ou duplicar 0 bloco de codigo da mesma
maneira que voce fez para uma unic a linha. Para tirar a selecao das
Iinh as selecionadas, escolha 0 caminho de menu Edit- c-Deselect .
U n do: In verte sua ultima variavel. Somenre urn nfvel de desfazer este
N~ mai oria dos aplicativos Windows, ha u ma area de transferencia para operacoes de cortar e colar . No RJ3 , h.1 cinco areas de t ransfere ncias. ATabela 2.1
descreve codas elas.
Utili:r:ado
pa ra
Como Copia r
pa ra ele
Como Colar
a partir dele
o Buffer
Carta e colo
de ntro de um
progra mo
Pressione as botc es
Cut ou Co py no editor
as Buffers X,Y,Z
Corte e co la
e ntre da is
progromos
Caminho de menu:
Block/Buffer-> Insert X
Buffer
Area de
Carta e colo
en tre:
- duos sess6e s
Cominh o de menu:
Block/Buffer-> Copy
to Clipboard
disponfvel.
editor e sobre
ABAP/4 em
P att ern : Pe rmire que voce digire uma instrucao ABAP/4 gerada
automa ricam ente. P or exem plc, para inserir uma instrucfo write
qu e escr eve do coneeu do de uma variavel identificada vt, pressione
o bo tao P attern, escolha a botao de opcac W rite, pressione a batao
Continue, dig ite 0 nome de va riavel no campo Fld e enn c pressione
o batao Copy. Uma inst ru cao write sera inserida na posicao de
cursor atua l.
Concatenate: Une duas linhas . Para utilizd-lo, coloque 0 cursor no
final de uma linha e pressione 0 batao Concatenate para concatenar
59
urna linha com a linha seguinte. Para dividir uma [inha, posicione 0
cursor onde voce quer que a divisao ocorra e pressione a tecla Enter.
;I
I
, I
trcnslerenoc
R/3
-:
60 ,
'!='
'!'!'
Como Copia r
para e re
- R/3 e outro
Como Colo r
a partir de le
Ceminho de menu :
Block/Buffer- > Insert
from Clipboard para
inserir as ccnteedcs do
area de trcnsjerenclc
como linhos novas no
progromo no pos iCioO
do cursor. Ou Orl+V
perc color no topo dos
linhos exlstentes. Com
Ctrl+V, as dodos seroo
truncodos se tod os eles
noo se o justc rem no tela
opllc oftvos
1,
pora
1- De um clique
ed itor
- copia mcls de
umo linho do
c6digo
2 - Ctrl+Y
3- Arroste e
marque
s.
Presslone F11.
Presstone Fa.
Coloqu e
Pressicn e
I:
i
I,
.'
I!
I
I
I
I
(,-
F o~a ..
4- Ctrl+C
.
N a primeira linha da T abela 2.2 esta 0 buffer especffico do programa,
simplesmenre chamado buffer. Ele permite que voc e copie demro de urn
pro gra~a. Para ut iliza-lo, coloqu e 0 cursor em um a linha au marq ue urn bloco
e preSSlOne as bot oes C ut, Copy ou Insert Fr om Buffer . 0 conteddc do buffer
e perdido quando voce deixa a editor.
as bu ffe:~ X, Y e Z sao utilizados para copia r c6digo de urn pro grama
pa ra DUtro . U tilize a menu Block/Buffer para acessa-lo s. Embora eles tenham
tres buffers separad os, tc dos eles sao utilizados da mesma mane ira. Seus
cont ea dos sao retidos dep cis qu e voce deixa 0 editor, mas d es sao pe rdidos
quando voce efeeua 0 logoff .
A area de tran sferen cia ea m esma que a area de transferenci a do Windows.
Utilize-a para cort ar e colar em outros aplicarivos do Win dows como 0
MSWord au 0 Bloco de Notas. Ela tamb em e utilizada para eop iar texto de
telas de ajuda Pt [veja a seguime sefSao int irulada "Obtendo ajuda") .
Alem dos bo tc es na barra de ferramentas Ap plication e as menus, voce
pode urilizar func oes Windows padrac para execurar opera!;oes de cortar e
colar. Para destacar uma palavra ou linha, arcaste a cursor atraves dela ou
mamenha pressionada a tec1a Shift e pressione as tec1as de seta pa ra a direita
ofvcl.
- coplc e c6d igo
do c jv dc F1
61
ou para a esqu erda (voce apenas pede destacar uma linha par vel. utilizan do
esse metodo). Para dest acar mul tiplas linhas, de urn clique rnais um a vez na tela
com 0 mouse e entao pressio ne C trl + Y. 0 ponteiro mud ara para a forma de
uma cruz . Arraste a cru z para desracar a secac que voce quer copier. Pre ssione
Crrl + C para copiar 0 texto dest acado para a area de transferencia ou pressione
Ctrl + X para cortaro Cole da area de rrans ferenc ia utilizando Cr rl + V.
Tabela 2 .1 Confinuoc;60
Chama d o
7Z
Tabela 2 .2 Ccnnnoccec
Para...
FOlj o
Para...
FOlja...
cominho de
menu Prcqrcm-o-Delete.
menu Proqrcrn-c-SoveAs.
Remover 0 coment6rio
de um blccc de linhcs
Pressione
lccchrcr e repetir a
Comparar versoes do
progromo
Pressione
Escolha
Fazer download de um
progromo poro urn arquivo
em seu PC
Escolha
Escolhc
Recuperor 0 c6p ia
tempor6rio de seu progroma
Copiar um progroma
cominho de
Renomeor um programo
caminho de
cominho de me nu
Formotor automotieamente
o c6d igo -fonte
botco Print.
loeo lizoo
Mudor 0 c6digo poro a
esquerde e perc a direita
insirc
63
64
Qbie.ndo~--"
a4-'iu",-,d.....a",-SmEHUJI ~ lnicie
I.
NOYO ...
TERMO "
ABAP/4.
Obtendo a a il/do El
A ajuda F I e u tiJ pa ra pes quisa r sintaxe e frequentern enre
co ntem exemplos
uteis de c6digo.
Para ob rer ajuda F I:
eexibida.
vislvel.}
e exibida.
65
66
Aj uda do editor
i, DOl tela ABAP/4 Development Workbench, pressione 0 bono Object Browser. A Object Browser: Ini tial Screen
2. Escolha
e exibida.
pr ograma seguidos par urn asterisco. Por exemplo, para exibir eodos
os programas que comecam com z tx , digire ztx *.
3. De urn clique na seta para baixo a direita do campo Pr ogram. A tela
Programs e exlbida. Urna Iista de nom es de programas coinciden tes
aparece nesta tela:A direita de cada no me de programa esn a descricso
Shan dos atributos de programs.
4. D e urn clique du plo n o nome do prog rama que voce quer editar. A
ABAP/4 Editor: Initial Screen e exibida e 0 no me do programa em
que voce deu um clique duplo apar ece no campo P rogram.
Introduzind o
NOYO""""
mllo r
a RJ3 Doto Dictionary lou ODIC pera obrevcf eum utilitOrio para definirobjetos
.de dodos. Pore utilizer 0 ODIC, voce ped e crier e annozenor cb jetcs como tcbelcs .
HOYO lll...
fiRMO
Fa~a
67
68
.......
;,c'."-c=_;;:;-""":---::::--:":---
:w:o
... , . _
"..- .,,,- "'- ... ~_..__.._ ..._ ...._ ...._ ..._ .......P'"..._
...-~-----------------------------~-
fig ur e 2 8
A Dictionary:Initiol
Screen.
.':' 4'
I~ "
~_1 .. .i. l/lIIioo ~ """" iflIl> -. _
i,.o
-I .
. ~'"
~ 0
,,,.I'- r-."
: :< : ~~;:d. " ":':;,. .'
. ..-'.
. .c,,,,
-rarn
.""
.> }.
NOVO- lilt..
TiRMO,.
Uma tabela armazena dad os persist entes. Ern outras palavras, se voce
coloca dados em uma tabela, e1es permanecem ai depois que seu programa
finalizar. Eles permanece rao ate serem ahera dos a u exclufdcs par seu pro grama
a u curro. 0 n ome de um a tabela eunico dentro do sistema R/3 inteiro.
Quando voce olha u ma tabe1a no DD IC , esta visualizando a descricto de
uma tabela no banco de dad os subja cen te. Voce nao esta olhando diretament e
a pr6p ria tabela de banco de dados. A Figura 2.9 mostra como u ma definicao
de tab ela aparece no R/3 DDIC.
No R/3 vmc estrutvro e urno descrit;60 de urn g ropo de compos. Elc descreve
os nomes de compo, suo seq uencia e sees tipos e comprimentos de dodos.
Ce do esmnurc fern urn nome q ue e c nicc dentro do sistema inteiro do R/3. Umo estrufuro
nCio pede ter 0 mesmo nome que umo tc belo.
NOYO ....
lIiMO"
F i g ur a 2 9
A defjnis:oo de ODIC
pore tabe/o Zfal .
A defjnit;dode ODIC
para 00 eslrvturo
emora.
69
4az::;:
cc;:_~
."' -
70
No R/3, tabelas e estruturassao definidas no DDIC. Voce no tara entretanto, quando as visualiza, ha uma diferenca muito peguena entre elas. Isso e
porgue, no RJ3, uma tabela esomente uma descripio de uma tabela real de banco
de dados. E a estruturada tabelano banco de dados. Entao, tanto tabelas como
estruturas dentro do DDIC defin em urn layout - uma serie de campos. A
diferenca principal entre as duas eque uma tabela tern uma outra subjacente de
banco de dados associada a ela. VIDa estrutura rdo tern,
Algumas pessoas, as vezes, acham a documenrac ao do R/ 3 confuse, uma
vez que a SAP ocasionalrnente utiliza esses dais termos int ercambiavelrnent e.
r-ra II-!
1_ _
!
[ olt
""' _ ~ .$""'"
1IftI " , -
.-
<.
-: :,;,
.. . . .._I<!Oj"l"
'
'.
.,l~
"
1~
Data
Dictionary, nao a tabela real de banco de dados. No R/3 , apenas a estrutura da
tabela pode ser definid a, jun to com alguns atributos com o os campos de chave
primaria.
R/3 tambern oferece urn utilitario para permitir que voce exiba os clados que
existem dentro de uma tabela . Para utiliza-lo:
71
72 APR ~NOA ~M
I
21 DIAS
ABAP/~
DIA7: seuPRIMflROPROGRAMA ~M ABAP/4 ,
73
1060
1070
1080
1090
2000
V1
Vl0
Vll
---,---,
V12
V2
VJ
V4
VI
a seguinre c6d igo mostra a sintaxe simplificada para a insrru cdo se l ect:
tn
onde:
"
V9
1040
1000
1010
.
<> > >= < <=.
1- report ztx0202.
2 tables ztxlfal.
3 set ect .. f rom ztxl fill into ztxl fal order by 1ifnr .
4 write / ztxlfal -lifnr .
5 endselect.
SAioA~
V7
va
ENTRAOA~
YO
,
;!
,,
i!
I
Na linha 3, a insrrucao sel ect comeca urn loop . A endsel ect na linha
5 marca 0 fim do loop. As linhas de c6digo entre se 1ect e endse1ect
sao executadas uma vez para cada linha retornada do banco de dad os.
Na linha 4, a instrucfo write e executada uma vez para cada linh a que
elida da tabe la.A / (barra) depois de wri te corn e~a uma nova linha.
E
"
N ote que em seu programa, voce tern duas co isas identificadas como
ztx lfal: uma area de trabalbo e uma tabela. A du as te rri 0 mesmo nome zt xl fa I. A pcsicao do name ztxl fal denrro de uma inst rucdo de termina aqual
voce se refere. Na lin ha 3, a primeira ocorrencia de zt xlfal se refere a rabe1a
de banco de clados. A segunda ocorrencia refere-se a area de trabalho.
1050
,I
I
_ .J.;,
74
lVI
2. A solicicacao
e despachada
para
disponfvel.
3.
4. 0 prog rama
processamento prossegue
1. Pressionar Page Down [az com que uma soliciracfo seja enviada do
SAPGUI para 0 dispatcher DO servidor de aplicacivo para obter a
proxima pdgina de saida a partir de ztx0202.
0 servidor de
apresentacao.
5. A area de rolagem t: 0 contexte de usuario sao deslcca dc s para fora
do processo de trabalho .
Figura 2 12
Esto e 0 moneiro
como a ins/rus:oo
se lect fundono.
Mem6riaestendldo
DBS
~'4~~~.~{t~;:.;,~ ,
':~~i ;
. .. L
~ ' ~i.:~:';"~~
17
_, .~ """
, .
7 ' .... ' r:ita~Ji'!'.
};
1. 'P ression ar Back faz com que uma sclicitacao seja enviada do SAPGUI
para 0 dispatcher no servidor de aplicativo para terminar 0 programa
ztx0202.
2. A soliciracao e despachada para 0 primeiro processo de trabalho
disponfvel.
3. 0 contexte de usuario e a area de rolagem para ztx 0202sao deslocados
no processo de trabalho.
4. 0 sistema libera a area de rolagem para 0 programa.
5. 0 contexte de usuario
75
-.;
76
-"".~--=-----=--=-=-,,,""""""'------------~---~~--~-------------~
F jgura 2 13
Esso e 0 seqiiencia de
eveorcs ocionoda
quando 0 usu6rio
pressiona Poge Down.
qrcm -o-C cpy do telo iniciol do ed ito r. Alternotivo mente, enqoontc editc
As.
L-
- - - - - - - ---I- - HI va
V9
.
A instrucao t abl es sempre cria uma area de trabalho da tabel a pa drao , entac
voce normalrnente nao tern de defin ir sua propria. Enrreeanto, em alguns casas
voce pode querer definiruma area de trabalho de tabela adicional. P Ol' exemplo,
se quiser manter a verssc original de uma linha e tern uma versao modificada
tambern, voce precisaria de duas areas de trabalho.
Voce pede definir areas de trabalh o da tabela adicional utilizando a
in struc;ao data .
.1..0
de
Pare abrir umo novo ione lo do R/3 (cho modo sessec), de quo lque rt e la
escclho 0 com inho de menu Svstem-c-Cr ecte New Session. Voce pede
c brir urn maximo de seis sessces. Se voce qctser chrlr mois de sels,
simples ment e efetue 0 logon umo segundo vez.
[NTiAOA~
'f
data
ItO
like tl.
onde:
Ita
il...
NOVO
1 report ztx0203.
2 t abl es ztx lfa l.
3 sel ect > f rom zblfal order by ll fnr .
4
write / ztxlfal- lifnr.
5 endset ect ,
A Listagern 2.4 mostra como utilizar a in srrucao dat a para criar um a nova
area de trabalho.
77
--- 78
ANlus[ ~
NOVO....
rrRMO"
ANALISE....
no instru<;6a
e chomodo area de
frobo/he explfdfo .
sistema R/3 tome as vcriovels de sistema disponiveis dentro de sev pro groma .
Voce n60 tern de defioir quolquer coiso para ccessc-lcs, elas estcc s.::mpre
disponive is e automaticomente sec ctucluodcs pe lo sistema como cltero coes sue s no
ombiente do progroma. Todos os vcrioveis de sistema comeccrn co m 0 prefixo 5Y - . Par
exemplo, a dote otuol de sistema esto dlsponrvel no ccmpo de sistema sy - datum e a ho ra
otuol em sy-uzeit. Em gerel, eles soo chomados obrevtcdcmente de com pos sy
[prc rw oclo -se "'sci'").
HDVO ...
HRMO'-
1 report ztx0205.
2 tables ztx.lfa1.
3 select * from ztxlfa1 where lifnr
4 write / zt xlfal l ifnr .
endsetect .
o
SAiDA ~
<
1000
1010
1020
1030
1040
..
1 ;
79
Duas verieveis de sistema sao muito tite is para saber qu and o co dificar a
inscrucao se 1ect :
sy-subt-c
II
sy -dbcnt
I'
I
i
I
![
1050
of
1060
1070
or
1080
1090
Deseobrindo sy-subre
NOVO .... \ Pcro d~:e rmincr s.e a instru<;oo s e lect retor~ou qU~is~uer linhos: teste 0 volar
do vcridve ] de slstemc sy-subrc fprcnunclo-se sol-sub-cre-st"] depois do
HRMO"
:f
d
.f
---~~~~~~~~~~~~~~----------'--~---------------~
80
Depois de endselect. elo reter6 seu volar e entcc ccnterc 0 ruimerc de linhos selecionodos. Por exemplo, pora irnprimir rujmercs seqcenclots 00 lado de coda fobriconte
e imprimir um tolo l do nomero de llnhos selecionodos no po rle inferior do relot6rio, utilize
o c6d igo no listogem 2.7.
report ztx0206.
tables ztxlfal .
se lect .. from ztx'l f al where l f fnr > 'Z '.
write / ztx lfet-ltrnr ,
endselect.
H sy-subrc < > O.
7 write / 'No records found' .
B endif.
No records found
ANALISE..... A instru<;oo se lecionodo no linha 3 estc restringido par umo cl6usu la where.
~epois do
Nesse coso, nenhumo linho coincide com a criteria no d6usulo where , entoo
endselect,
valor de sy -subrc
e configurodo como 4.
instrucoo select
1 re port ztx0207 .
2 tables ztxlfaL
3 se lect 10" from ztxlfa1 order by lifnr.
4 wri t e / sy- dbcnt ,
5 wr ite ztx lfa1-1ifnr.
6 endse tect .
7 write / sy-dbcnt .
B wri te ' r ecor ds fou nd'.
SAiDA
Muitos pclovrcs-chove otribuem vclores a sy -subrc . Algumas polovrcs-chove slmplesmente nco 0 configurorn. Se urne pe lovra-chave
configura sy -subre, as volores oossrvels 500 documentodos no ojuda
Fl para esse pclcvrc -chcve.
Se voce codificou u m a set ect e quiser testar 0 valor de sy-subr-c, seu teste
deve vir depois de en dse 1ect. Por que? A resposta reside no fato de que 0 codigo
entre select e end select e executado uma vez para cada linha retornada do
banco de dados .
Se nenhuma linha (zero) eretornada do banco de dados, 0 codigc entre
select e endselect nunea e executado. Pcrtanto, voce deve codificar 0 teste
para sy-subrc depois de endsel ect.
1
2
3
1000
1010
1020
4 1030
5
1040
6
1050
7
1060
8
1070
9 1080
10 1090.
11 2000
12 VI
21
Poro determinor a nume rc de Jinhos retornodo por umo instru<;60 sel ect, teste
a valor de sy-dbcnt decors de endsel ect . Voce tombern pode utilizo-lo como
urn contodorde 100Pi entre sel ect e endsel ect , elcccntem uma soma do itera'ioo otuol.
Pore a prirneiro linho, sy -db cnt se ra 1, durante a segu ndo sera 2 e ossim por dionle .
VI2
V2
V3
V4
V5
V6
V7
22 VB
23 V9
1-3 registros encontrados
ANAliSE~
II
I
13 VlO
VlI
14
15
16
17
18
19
20
HRMO"
81
-,;.;.:,
82
Exi bindo
es trutura sys t
Por exemplo, para definir duas tabelas, voce poderia codificar isro:
tables ztxlfal.
tables ztxlfbl.
Va para
0 batao
Continue. Uma caixa de didlogo aparecera pergunrandc a voce as
parametres de impressao.
Utilizondo
Nova... a
1
2
3
4
5
6
report ztx0208.
tables ztxlfal.
select * from ztxlfal order bylifnr .
write: / sy-cbcnt , ztxlfal-lifnr.
endselect.
.
write: / sy-dbcnt, 'records found'.
a c6digo na Lisragem 2.8 produz a mesma saida que 0 pro gram a anterior
(veja a saida da Listagem 2.7).
ANAliSE ~
Utilizondo a
jnst[lJ~ao
83
- - - ._- - - - - - - - - - - -
."""".
84
- - - - - - - - - - - - ..,
_
'W
........_
_...._
_........_ _.....
III
s el ect
wa
11
e0
Co me nta nd o
c6 d igo e a
d ocumenta~ao
...._ _ .
85
fo rm al
onde:
~m
.....r-"_ _....
P a r exemplo:
* Isto e um ccnentartc
select si ngle nao corn elia urn loop porque ela apenas retoma uma
linha. Po rtanto, nao co difique uma instrucio endsel ect , Se fiaer i550.
voce obtera urn erro de sintaxe.
Certifique -s e de que uma linha un ica foi retomada, voce deve especificar todos os camp o s de chave prim aria na cldusula whe re. Se voce
nao fize r isso, seu p ro grama ex ecu tara, mas obt era urn aviso. (Para
ex ibir os avis os , es c ol h a 0 caminho de menu Programa Program-c-Check -> Display Warnings.)
A Listagem 2.9 ilustra a instrucao select s t ngl e. Para praticar, erie urn
novo program a e digite 0 c6 digo como mostrado na Listagem 2.9.
fHTRADA~
I repor t zt x0209.
2 tables zt xl fa l .
3 sel ect sing le * from ztxlfal where lifnr" 'VI ' .
4 if sy-subrc z o.
5 write : / ztxlfaI l i fnr , zt xlfal - namel.
6 el se .
7 wri t e 'record not found" .
8 endif.
SAiD! ~
o
VI
!NjllSE~
ta b' es ztxlfal.
Resum o
O s programas do ABAP/4 sao compostos de compone ntes . Os cornponentes sao atriburos, codigo-fonte, vari ante s, elementos de tex to e
documenracao. No minimo, urn programa deve ter atributos e codi gofonte.
.,..
86
- .....
'W' W
_ -w
DIA 2: SEU PRIMEIRDPROGRAMA EMASAP!.
aumentado sempre uma vez p elo loop e dep ois do endsel ect ele
con tem 0 mimero de linh as recuperadas.
P&R
o
o
0-
e
o
Se eu estiver edltando um programa, 0 que acontece com minhas alteracces se estiver desconectado do R/3 j por exemplo, se
meu PC trava e tenho de rei niciaIizar? Perderei m inhas altera<;6es?
Se voce efecuar logon novamente den tro de 5 ou 10 m in utes,
pod era recone ctar-se a sua sessao. Q uando voce efetuar logo n
novamente, digite seu ID de usuario e senha mas nsopressione
a tecla En ter na tela de logon; em vez disso, escolha 0 caminh o de
menu User-> Copy Session. Voce sera reconectado a sua sessdo
anterior e tude sera restaurado da maneira que estava quando voce
perdeu sua con exao.
o
o
o
Wo rksho p
Os exercrcios a seguir oferecem uma prarica para utilizar 0 editor e escrever
progra mas simples que utiliz am as instrucoes t abl es, sel ect e wr it e. As
respostas estao n o Apendic e B, "Re spos ras as pergumas e aos exercfcios" .
87
..,
"::'!!!'-------------~-88
Teste
1. Quais as duas coisas que a instrucao tabl es faz?
2. A que 0 termc area de trabalho da tabela padrao se refere?
3. Se a inscru cao sel ect esta faltando em urna clausula ; nto, onde
entrarao as linhas?
4. Se uma inst rucao write nao contem uma barra, a safda e escrita na
mesm a linha que a saida para a instrucfo write an terior ou e escri ta
em uma nova linha?
5. Qual e 0 nome da varidvel de sistema que ind ica se quaisquer linhas
for am localizadas pela instrucao select?
6. Qual e0 nome da variavel de sistema que indica quantas linhas foram
localizadas pela insrrucao select?
7. .Veja a Listag em 2.6. Se h a 30 linhas na rabe la ztxl fal, quanras vezes
a linha 4 foi executada?
8. Veja a Listag em 2.6. Se a tabela ztxlfal esdver vazia (se contem 0
linhas), guantas vez es.a linha 4 foi executada?
",.
89
.,
i ,i'"
, 90
};."': ;or'
~-
..
....~""r-"--....e-"="....,=-....",......,.....
-~~~~---~
. w_
r -.
w
.-...........w
_ ..........
._
_ ....,.......,..-.............---.,......,.......,......,.......,......,.................._
w w _ _
........
21. Cole 0 bloco que voce acabou de copiar no final do seu prcgrama.
(Coloque 0 cursor na Iinha 9 e pressione 0 borao Insert From Buffer
na barra de ferramentas App licarion.)
22. Cole 0 mesma bloco novamenre no final de seu programa. (Ccloque
o cursor na linha 12 e pressione 0 borde Insert From Buffer na barra
de [erramentas Application.)
23. Des faca a ultima colagem. (Pressi one
[erramentas Applicarion.)
24. Digite 0 seguinte c6digo nas Iinhas 12 a 14. Comece cada Iinha na
coluna 1.
35. Utilize urna teela de funcac para salvar seu p rograma e outra tecla de
funlJao para execun-la. (Pressione F I t. Pre ssion e F 8.)
if sy-dbcnt > O.
write :
endif.
botso Save.)
urn campo sy. (De urn clique duplo na palavra sy-subrc na linh a 6. A
estrutu ra SYST e exibida .)
30. Rerorne para .edirar seu programa. (Pressione 0 botac Back.)
31. Localize a primeira ocorrencia da string ztx lfal em seu programa.
(Pressione 0 bon o Find. A tela Search/Replace e exibida . Dig ire
ztxlfal no camp o F ind . Pressione 0 bo tao de op~ao From Line.
Pressione 0 botao Continue.)
32 . Repita a pesquisa, localizando cada ocorrencia sucessiva ate que voce
encontre to das elas. (Pressione 0 batao Find Next repetidamente ate
a mensagem "Strin g wri te not found" aparecer na barra de status na
parte inferior da janela.)
33. Adicione a nome de tabela zt x'lfal a instrucfo tabl es. (Alterando a
instrucao de tabe las, de modo que e1a exiba tables: ztx'l tef ,
zl xlfbJ.)
,
36. Salve a saida de lista para urn arqu ivo em seu disco rigido esco lhendo
o carninho de menu List - c-Save- > Fi le. Utilize formate nao convertido.
37. Exiba sua saida descarregada ut ilizando 0 Bloeo de N ota s.
38. Retorne para editar seu codigo. (Pressione
b otao Back.)
II
OK.)
44 . Salve 0 programa carregado. (P ression e 0 batao Save.)
45. Imprima seu programa. (Pressione 0 botao Print na barra de ferramentas Standard. A tela Print Paramet ers e exibida. Ce rt ifique-se de
que a caixa de sel e~ao Print Immed. est a at ivada. Pressione 0 botao
Print . Sua saida e enviada para a imp ressora e voc e e ret omado para a
tela ABAP/4 Edi tor: Edit Program.)
91
92
fxerdcios de
botao Save.)
pro-9
,j.rua.umLJ.lla.l.l~
...
6.l.1o",-
47. Retome para editar programa 0200b e salve uma versao dele no
banco de dados Ve rsions. (Pressione 0 botao Back para retornar para
a tela ABAP/4 Editor: Edit Program. Escolha 0 cam in ho de menu
Program->Generate Version .)
48. Substirua todas as ocorrenc ias de ztxlfbl com ztxlfc3. (Pressione 0
boeo Find. A tela Search/Replace e exibida. Digire ztxl fbI no campo
Find. Faca uma marca de selecao na caixa de selecso Replace By. Digite
ztx l fc3 no campo Replace By. Pressione a batao de opcao In Program.
Press ione 0 bon o Continue. A tela Global Replace In Programs e
exibida. P ressione 0 botao No Confirmation . Todas as ocorrencias da
string sao substituidas. Pressione 0 batao Save. Pressione a batao Back.
Voce e retornado para a tela ABA P/4 Editor: Edit Program.)
93
SAioA~
1000
1000
1000
2000
Y9
YB
Y6
V9
5
6
if sy -subrc <> O.
write / ztxlfal-1ifnr.
endsel ect ,
>
' 1050' .
>
' 0000001050'.
94
ends! 1ect
6 if sy-dbcnt <:> O.
7 write I 'no reco rds f ound ' .
8 endH .
report zt y020S.
tab les zt xl fal .
setect ... from ztxlfal wh ere lHnr
endselec t.
write / ztx lfal-l ifnr.
:>
' 0000001050' .
6 i f sy - subrc <> O.
7 writ e I ' no records found ' .
B endi f.
3 data we l i ke zt xl f bl.
4 setect > f rom ztxlfal into ztx lfa1.
Objetivos do capitulo
Depois de coinpletar esse capitulo. voc e devers set: capaz de:
D efin ir as diferencas ent re tabelas transparente, de pool e de cluster
Criar dominies, elementos de dados e tabelas tra n sparen te s no Data
D ictionary
Crier aju da Fl para os campos de uma tabe la e criar vinculos de
hipertexto dentr o ciaajuda F l
15 encsete ct ,
16 if sy-subrc <> O.
17 write I 'no record s found'.
18 endi f .
TEUD '"
Este livre foi tes tado em urn sistema 3.of. Seu siste ma pe de ser em Outre
nivel de versao. Embora a maicria das difer encss deva ser menor com referencia
aos temas abord ad os aqui, algum as pod em causar confu seo au most rar infer-
hllpJlwww.ccmpl1$.com.br
----~~--~ - - - ----------- -- - - - - - - - - ~
96
DlA3:0DATA DlaJONARY,PARTEI
R/3.
Tob./o ~'p<l,.ft"
1. Va pa ra
2. Escolha
3. Pressione
",b.le>T9
'''''
'''''''''''''''0 de c<l/'I'P<>1
",.""0 _
eexibida.
.o<""""",ltmo,"...".o
~,
~o<nl!
eexibida.
ITlJ """"-A
Moo"", ..bel",
",b."'T9
"'belode
bo",,"----
ITT]
do dod<l. t,,,,'
"""' . d;IG<. nl.
nii me... d. C<lmp<>< d,I,,.,,,..
a' <''''PG .lim .,.,.,. d,I., ,..
<!G IO bela ODIC do IVJ
.", 0GnI"",
0 no .
Modifications To ABAP aparecera sob 0 no de Basis, debaixo do
subn6 ABAP/4 Development Workbench.
NOVO...
Tn.MO ~
As tab ela s trcn sporentes sec multo mois comuns do que as tobelos de pool cu
de duster. Elcs sao utilizad os pa ra a rmazenor dodos de oplicotivo. Os dodos
de cplicctivc sao os dc dos-mestres o u c s dodos de frc nsc coo ufilizodos po rum cpllcotlvo.
Um exemplo de dod os-mestres e a tobelo de fobrico nfes (chomoda da dos-mestres de
fa briconfes) ou a tobe lo de clientes (cham oda dados-mestres de di entes). Um exemplo
de dodos de trcoscceo sec a s pedidos feito s pelcs cllentes ou as ped idos envia do s para
as Icbricont es.
historiccs .
97
98
Tanto as tabelas de pool como as de clus te r tern relacionamentos rnuieospara-urn com tabelas de banco de dad os . As duas podem aparecer como m uitas
tabelas em R/3, m as elas sao arm azenadas como urna iinica tabela no banco de
dados. A rabela de banco de dadc s tern urn nome diferente, numero de campos
diferente e nomes de campo diferentes dos cia tabela do R/3. A diferenca entre
as dais ti pos permaneee na carac terf srica dos dados que des armazenam e sersc
expli cadas nas se~6es a seguir.
99
Fig ur a 3 2
As lobe/os de pool
femum
re/ocionome"to
lOYD Il..
illitO "
mvitos-poro-um com
Umo tobe/o de pool no R/3 tem um relociono mento muitos- poro- um com umo
tc belo no banco de dodos [vejo as Figuros 3.1 e 3.2). Pore ume tcbelc no
bonco de dodos, ha muitos tabelos no Dota Oid ionory do R/3 . A tobelo no bonco de
-:
NOYO Il..
TfUO"
Quondo exomino umo tcbelc de poo l no R/3, voce ve umo descdccc de umo
fobelo. Entretonto, no banco de dodos, elc e onnozenodo junto com o utros
tcbelcs de pool em umo cntcc tobelo chomodo pool de tobelos. Urn pool de tobe los e
umo tobelc de banco de dodos com umo estruturo especicl que perm ite qu e 05 dodos
de muitos tobelos do R/3 sejom ormozenod os dentro dele. Ele pode openos ormo zenor
tcbelcs de pool.
HOYO ....
mM.O "
Quando umo empresa lnstclc quo lquer sistema grande, ele normo lmente e
JrutO ~
perso nolizodo de o lgumo moneirn perc encontror 05 necess idades c niccs do
empreso . No R/3, esso perscncluccec e feila via tobelos de personolizoo. As tcbelos
de person olizoc;oo co ntem co digo$, volidoc;oes de compo, intervolos d e numero e
parametros que olterom a mon eiro como os op!icotivos do. R/3 se comportom.
NOYD ....
I
I
Como as tabelas de p ool , as de cluster sao out ra estrutura (co nstru ct)
proprietaria ciaSAP. Elas sao utilizadas para armazenar clados de algumas (aproximadamente de 2 a 10) tabelas muito grandes. As tabelas de cluster s.eriamutilizadas
quando essas tabelas tivessem uma parte de suas chaves prim arias em comum e se
as dados nessas tabelas fossem to dos acessados simultaneamente. as dados sao
arm azenados logicamente como rnostrado na Figura 3.3.
.,
ri
I'
100
dodos de
1000
1000
2000
2
2000
3000
PK
1000
2000
3000
0. c/adm0P'l"'''''''
Header Data
Hec er Data
Header Dolo
no R{.!"""", so
,",I~ ....
. ", ."..
'-
IObolo, .. ~,.do,.
0"""'.""'"
01
02
01
clII1lor: ~
CDHDR
I
I
Cluster !able
03
01
-'-
02
02
COpa s
Field name
MANDANT
OBJECTCLAS
OBJECTID
CHANGENR
TABNAME
CHNGIND
Key Typa
l engtll
171 CLNT
13
[7 1
CHAR
r-wr--.w
r-wr-w-
171 CHAR
171 CHAR
171 CHAR
171 CHAR 170
171 CHAR 110
171 CHAR J1
171 CHAR 11"
17
fUNiTrs
~:~;~~: ~ I~:~ R
VALUE..NEW
Tabla Cluster
CDClS
....
ITEM20ATA
fTEM20ATA
Cluster table
I
I
I
I
I
ITA'KEY
IFNAME
I
I
IUNIT.OLO
ITEMl DATA
ITEM2DATA
ITEM 1DATA
ITEM20ATA
ITEM30ATA
ITEM 1DATA
:-:::~~ --~~
M"
primeiros quatro
campos de creve
primaria em comum
e sempre sao
ccesscoos iuntos e
enlao s60
ormozenodos no
cdcls de duslerde
lobe/os .
I
I
T EXT_CASE
O, do<Io> ..,.I o
fern os
do tobelo
vc rtes lobe/os
bcseocos nos compos
de chove prim6rio que
e/os fern em comum.
cdpos
Detolhe do pedldo
do tobelc
PK
Figurg 3 3
Os clusters de lobe/a
orm ozenom
Fi g u r a 3 4
101
03
I
I
Fieldname.
171 CHAR
[II
.:
VALUE_OLD
CHAR
J2i4
J2i4
MANDANT
OBJECTCLAS
IOBJECTlO
I
IPAGENO
CHANGENR
ITI MESTMP
I
IVARDATA
PAGElG
,i
~~J
102
-.v
v v.v
w. w
--
w.tW. w:ww _ _
Da D
-~103
I"
Compo
Eo
cc mcostc de um
"
Elemento de dod os
-,
de urn
'~
F jgurg 3 6
Um exemplo de
praiela utilizondo
tobelos, ele mentos
de dodos e dom lnios.
Par causa dessas restricoes nas tabel as de pool e de cluster e par causa de
sua utilidade limitada, este livre concen tra-se na criacao e u tilizacao de tabel as
transparentes. A criacao de tabelas de pool e de cluster na o e abordada .
HI
0"
F igura 3 5
Voce: DaD pede utilizar as estrururas (constructs) do ABA P/4 sel ect
dt sti net ou grou p by.
(Cuicfudo
Os indic es secundarios
Domfn io
~
Zphonew
ROtu\o: numern comerci ol
Voce ja sabe a que as tabe las transparentes sao e as dif erencas entre tabel as
transparentes, tabe las de pool e de cluster. Agora, voc e apr enderd as co mpo nentes que sao necessaries para criar tab elas.
phonew
Zpho nel
Zphon.
phonef
phoneh
R6tulo: lo~
loxlipo: cnor
comp.: 12
I'
Zphoneh
RO fulo: telelone ridenciol
NOVO....
ifRMO"
Par a crier urn campo, voce normalmente inicia criando urn dom inic para
ele. N este caso, voce pode criar urn dominic generico de numero de telefone,
chamado zphone e dar a ele urn tipo de dado de CHAR e urn comprimento de 12.
Isso seria u rn dominic generic o de numero de relefone : a maioria de s ripos de
mime ros de t elefone poderia ser armazenada ut ilizando-se esse dominie.
Como esse, ele pede ser ut ilizado para definir tipos especrficos de num eros de
telefone, co mo fax ou nu meros de tel efone residencial.
Dep ois de criar 0 do mfnio pa ra armazenar a descricao puramen te tecnica
de urn cam po, voce entac cria urn elemento de dados para armazenar a s
atr ibutos descritivos do campo . N o elem en to de clades, voce deve digitar 0
no me de u rn domini c par a dar-Ihe a caracterfst ica tecnica . Entao, voce insere
os r6tulos e a documentacto (ajuda F1 ) para d escr ever as dado s que voce
armazenara. N esse exemp lo, voce provavelm en ce criaria nes elem en tos de
dudes, urn pa ra cada numero de telef one resid encial, comercial e fax. Em cada
elemento de dad os, voce di gitaria ro rulos de campo descrevendo 0 tipo de
numero de te lefone que voce arma zen ara co m ele e a ajuda Fl pa ra a usuario
NOYO ~
Umo defini'ioo do eleme nte de dodos eXi ~ e um dom;nio (veia a Figura 3.5). 0
dam inio co ntem a coraderfstico tecnco de um ca mpo, como 0 co mprimenta
do compo e 0 tipo de dado.
HRMO"
final.
---- w_ - -----
104
w _
-~
OIuoomOlmOHARY,PARTE l
Te ndo criado a s elem entos de dados, voce agora p ode criar a tabela, Voc e
p od eria criar treS camp os de ndmero de telefone na tab ela {residencial, comercial e fax) e arribuir 0 elemento de dados corresp ond ence a cada campo. U rn
eleme nto de dados eat ribufd o a cada campo. 1 550 oferece informacoe s descritivas do campo do elemento de da dos e informacoes te cnicas do do minic a que
e1e faz referencia. Quando 0 campo e utilizado em uma tela, ele obtem urn
rotulo e a documentacao de ajuda Fl do elemen to de dad os e seu com primento
Em outre exemplo, voce pode pre cisar armazenar urn no m e da pes soa em
tres tab elas diferentes: tab elas de clientes, [abricantes e empregados. Na tabela
de clientes, voce q uer arm azenar urn nome de cliente: na tabe1a de fabricante
urn nome de fabrican te e na tabela de empregado urn nome de empregado. Par
isso, e uma boa ideia dar 0 mes mo rip e de dado e comprimento para todos as
campos de nome de pessoa: voce pod e criar urn unico domlnio generico de
nome d e p essoa , par exemplo zper sname. En rao voce pode criar urn eleme nto
de dados para carla urilizacfo de neg6ci o de urn nom e da pessoa: p ara 0 n om e
de clienr e, 0 nome de fabricanre e 0 nom e de emprega do . D entro de cada
elemento de dados voce referencia seu dominic zpersname pa ra da r a todos eles
a m esma caracterf srica. Voce en tao pode urilizar esses eleme ntos de dad os para
criar camp os denero de cada tab ela.
105
Po r exemplo, im agine que voce deseja cria r uma nova tabe la que co nrem
informaco es adicion ais de fabri cante. Quando voce p rojeta a tabela, voce deve
associar as fab rican te s em sua tabel a com esses na tab eia de SAP .
Em sua tab ela, erie um a chave primdria con tendo 0 mimero de fab ricante.
Utilize 0 elemen to de dad os exist ente para cria r seu campo. As dua s rabe las
estjo agora ch aveadas no campo de numerc de fabricante de SAP urilizandc
os mesmos elem entos de dados e do mlnios. Se a SAP alterar 0 tipo de dad o ou
o comprim en to do seu camp ?, 0 seu mudara au to rnaticamente.
Tabela 3.1 Convencoes de otribu i~50 de nome para tobe los, compos, ele me ntos
de dod os e do minios criodo s pelo cli ente
Prlmeiro eereete re
permitido
Tipo de objeto
Comprimento
max. d e nome
Tobelo
10
s, z
clemente de dodos
10
v, z
Domlnio
10
r, z
Compo
10
Quolquer ccrcctere
Nas sec;6es a seguir, voce cria ra dominio s, elemen tos de dado s e, por fim, sua
primeira tabela transpa ren te - ela sera um a versao escalada para baixo da
tabela-mestre de fabricante fornecida pela SAP iden tificada Hal.
-_.
e.w
106
w __
._~_~_
ine que a tobe lo Hal noo existe, nem sevs elementos de dodos, nem
seus dominios. Portonto, nestes exerdcios nos as crlcremos.
PK
Nome
Nome
de DE
de OM
Tipo
de dado
1ifnr
namel
regio
1andl
- 1 i fnr
-- - namel
" lifnr
regi 0
- -name
- reg i 0
landl
-land!
CHAR
CHAR
CHAR
CHAR
~o
Comprimen10
Como essa tabela contem cladas de aplicativo, ela dev e ser dependenc e do
cliente. Portanto, 0 primeiro campo deve ser mandt. (C a nsult e 0 Capitulo 1 se
voce precisar revisar as tabelas dependentes de cliente.)
top-down
Antes de oprender sabre objetos ODIC profunda me nte, voce deve sober sobre
otlvoceo de cbjetc. A otivccco cplico-se a todos a s cbjetos de dicion6 rio.
cria r tobelas
Lernbre-se, quand o crier qua lque r dos objetos neste livro, utilize seu
hand le ( -j como os primeiros tres cc rocteres do nome de c bjeto.
[Os corocte res represe ntam seu hand le. 0 handle foi desc rlto no
Ca pitulo 2, no secco intituloda "Introdu zindo convencces de otrtbuke c
de nome de progroma".)
Nee utilizeat x como os primeiros tres ccrc cteres. Se voce utilizer ztx,
sera muito difidl dete rminar quais 5 6 0 as se us cbjetcs.
10
35
3
3
Ab..~pa ra
107
Na abo rdagem bottom-up, voce primeiro cria as domini os, dep ois os
elemento s de dados e per fim a tabela.
N a abo rdagem top-down, voce cria primeiro a tabela e depois cria os
eleme nto s de dados e os dominies a medida qu e vo ce avanca.
A abordagem bottom-up emais intuitiva para 0 alun o iniciante, mas rapidamente to rna-se incomoda. A abordagem top-down e muito mais facil de utilizar
depois de voce se familiarizar urn pouco com a pr ocesso de cria~ao de tabela. P a r
essas razoes, demonstrarei as duas tecnicas, iniciando co m bo ttom-up.
Q uando ler as secoes a seguir , voc e primeiro ap rendera sob re urn objeto
_ como um do min ic - e encao criara urn. Os ob jetos qu e voce cria ra sao
descriros na Tabe1a 3.2.
mandt
mandt
...
cris-lo .
Na Fi gura 3.7 esta a tela que voce utilizara para eriar urn dominio - a
tela Dict io nary: Maintain Domain. Nessa tela, voce especifica 0 texto curtO, 0
tipo de dado, urn comprimento de camp o e opcionalmente urn comprimento
de saida. Estes iteus sao explicados naS se~6es segu intes.
~- TT
108
Wo w
o_ W
W Yo W Woo W
w.
W W WWW.WWWi
---
--
--- -
--- -
f.i.g..u.r.a 3 7
A tela DidionOlY:
Maintain Doma in e
Tipo
Descr isa o
CHAR
DEC
OATS
Compo Dote
TIMS
Compo Time
Volores inteiros
NUMC
o campo Da ta Type
o
campo Output Len gth indica 0 ntimero de bytes necessa rie s para dar saida
ao campo para uma Iista ou para u ma tela, incluindo virgulas , p on to decimal,
sinal e quaisquer outros caracteres de for matacao. Por exemplo, na saida, os
campos de data e de hora sao automaticamenre formatados com separadores.
Internamente, uma data earmazenada como oiro caracteres (sem pre YYYYMMDD),
mas a comprim ento de saida no dominic deve ser especificado como 10 para
permitir que dais separadorcs sejam ins eridos. Se 0 campo Output Length
estiver em branco, seu valor automaticamente sera calculado pelo sistema
quando voce pressionar Enter.
Para campos decimais, voce pode especificar 0 nume ro de decimais
cclocado no campo D ecimal Places.
Os campos de caractere sao normalmente convertidos em letras maiusculas antes de serem armazenado s no banco de dados. Voce pode desativar essa
conversao desmarcando a caixa de selecao Lowercase Letter s.
A maioria dos desenvo lvedores nao tern problemas em entender a representacio interna de caract ere ou campos im eiros. En tretanto, a pos icjic do
ponto decimal nos campos decim ais efrequentemente urn campo de confus6es,
por isso descrevemos esse assumo aqui.
Para campos de tipo DEC, 0 ponto decimal nao earmaze n ado no banco de
dados. Sornente a parte numerica e armazenada; nao 0 decimal. Na saida, a
posicao do decimal edeterminada pelo valor que voce colocano camp o Decimal
Places do dominic.
109
_,~~t2}~'
~.~ll<~ O .
APREND A
E"~lf;:~:B~:~4
urn comprimento de saida que in c1ua urn byte para 0 ponto decimal e outro
para cada separador de milhar que pos sa ser exibido. Entretanto, 0 sistema
calcu lara 0 comp rim ento de saida se voce simplesmente deixar em branco 0
campo O utput Length e pressionar En ter.
.
Problema
o dominio
SolUliCO
0
botco
cl.
Domain" ogoro .
Execute esse pr ocedimento duas vezes para erial' os dominies '1; fnr
e namel. A ajuda com problemas comuns e dada no diagn6stico e solucao
de problemas que se segue. Se voce river problemas ern alguns des passos, nao
se esquec;a de consulter 0 . diagn6stico e solucac de problemas.
1. Comece na tela D ictionary : Initial Screen . (P ara chegar la a partir d o
menu principal SAP, escolha 0 caminho de menu Tools->ABAP/4
Workbench, Development-> ABAP/4 Dictionary.)
2. Digire
Soltcito outcrizoccc de
de senvolvimento do sev
odm inistrodor de seguron<;a
domfnios.
O btendo
mensa gem
10. Pressione 0 botao Back na barra de ferramen ras Stan dard. 1550 0 leva
de volta para onde voce comecou nes se procedi mento, a tela
Dictionary: Initial.
111
I,
:~
112 t...==:...:::..:::...:.:.::.:..::.:::.:.:..:...
APREHDA EM 71 OIAS AB AP/4
de urn clique em C reat ing D omains e depois de urn clique em External Data
Type.
Para obeer doc urne ntacao que descreve 0 mapeamento de tipos de dados
de d ominic par a cipos de dad os do AB AP/4. exiba a ajuda Fl para a palavrachave "tables" . (Par a fazer isso, dent ro do editor de ABA P/4, colo qu e 0 cursor
napalavra t abl es epressioneFl.)
A lela Dictionary:
Chonge Dolo
Element,
j-
~==~~'_'_
0143:0 DATA DIOlONAR'f, PARTE 1
113
para
l
t
/
N esta seCjao, voce aprendera a abordagem bottom-up para criar urn elemento
de dados.
campo Short Text descreve urn co ntexte de neg6cio para urn dominic. Po r
exemplo, urn "n ume rc de tel efon e de cliente" e urn contexte de neg6cio
especifico para urn dominic "n um ero de te lefone gener ico" , en rjio ele seria uma
descric ao apropriada para urn elemenro de clades. 0 usuario fin al vera essa
descrica c se solicitar ajuda Fl para urn campo que foi criado ur ilizan do esse
elemento de dados .
Exec~t e esse prc cedi mento du as vezes para criar os elementos de dados
edada no diagnosrico
e solucjo de problemas qu e se segue. Se voce tiver problemas com qualquer u rn
dos passes, nao se esqueca de consultar a Sclucac de pr oble mas.
"
I
I
114
DlA3, ODATAOlCTIOHARY,PARTE 1
14. Pressione
Screen.
Problema
115
Possive is
SoluCjoo
stntem es
Nsc posso
crier elementos
de dodos
Nne posso
otivcr elementos
de dados
o no me q ue voce inseriu i6
V6 a te la Dictionary: Change
Dolo Eleme nt e de um clique
duplo no nome de domlnio.
desenvolvtmento do seu
od minislrodor de sequronco.
I
I
\
I
I
I
~,J
&
!!
116
Problema
Possiveis
Fig u r a 3 9
Soluljao
sintomas
Toble/ Structure:
tela. New
.~ : iFol.
:,,1
TYIn1
"I~~~~~1t;~'jf
Fwi'n~ j(.~
UtI
.1.~. TYi'f l.ng~h cb.~kI~bl. -Sh or t. ~.~.~~ _, . ,<, :: ~~:, .. . " ' ."':"- ;t. , ~ ,
.. s:::'.'
Obtendo
mensa ge ns
IIW: Length was inc rea sed to th e
digifor r6fulos
de compo .
Ocampo Tab.Maint.Allowed
Marcar a caixa de selecso Tab.Maim.Allowed faz com que 0 caminho de menu
U tilities-> C reate Entries seja ativado. Depois de arivar a tabela e esco lher esse
caminho de menu, a tela Table Insert e exibida, permitindo que vo ce digite
dado s em sua tabela. Eutil para tes te e en trada manual de quantidades pe quenas
de dados. Se a caixa de s ele~ao T ab.Maine.Allowed estiver em br anco, 0
caminho de menu U tilitie s- >Create Entries esta ra acinzentado.
117
===
118 I
--
==.--=====--
.... Inide a Screent.crn "Hew to Create a Tra nspa re nt Table Using Preexisting
"
atela Dictionary:
primaria.
10. D igite a nome de urn elem ento de dados na coluna Data Elem .
elemento de
13. Repita os passo s 8 a 12 para cada urn dos campos restantes na tabela
letra 0 ).
Pro ble ma
Possivei s
sintomas
Nco posse
crier a tobela
Sol ufjao
batao
!iI,
'I
"
Il
I;
Ii
I,
I
119
i!
w.w --~~---~-~~~-~-~~--120
Problema
Possiveis
sintomas
Solu~60
Problema
Posslveis
sintomas
SoluCjoo
Mensoge ns
exibidos em
verme lho
Solicite a outcrlzocec de
de senvolvimentc de se u
administrador de seq uronco.
Nco posso
c tlvor a tobelo
digito u ia
exlste no Da ta Dictionary .
Escolho um no me de dominic
diferente.
Volte pa ra a tela do tobela
Dictionary: Ta ble/ Structure
C han ge Fields . De um clique
d uplo no no me do elementc
de dodos. Voce vera uma
cclx o de di6logo ou a proprio
ele mento de dodo s.
Se voce vir uma co ixo de
d i61ogo com 0 titulo Creote
Data Element, a elernento de
dodos noo exlste. Verifique 0
no me coidcdoscmente . Voce
digito u 0 nome errado? Pode
ser um o boa ideio abrir umo
nova sesseo e exibir os obietos
qu e voce criou usando 0
Ob ject Browser . (No Dia 2,
velo 0 seccc "locchzondc seus
o bjete s de desenvolvimento".)
Se voce puder exibir a
elem e nta de dodo s, examine a
co mpo Stat us. New e um
stat us? Se nco, 0 elemento de
do do s precise ser cttvcdo.
Presslone 0 botdo Activote e
e nloe presslo ne a ba tao Back
para retornor a tabela .
Venda
tela
ABAP/4
Dictionary :
Ma intai n
Technlccl
Settings
121
122
123
Problema
Possiveis
sintomas
Vendo a cclxc
de di6loga
Adjust Table
cam a texto
Table must
be adjusted
Solu~ao
in the
datab as e.
Voce tentou remover um
compo delxcndo-c em bronco.
Nco se pa de fozer lsso: voce
deve excluir os cam pos usonda
o bctcc Cut no borro de
ferromentos. Pressiooe Cut ate
voce ver a mensogem
"Selected entries were copied
to the clipboard" no parte
interior do [cnelo no borro de
status.
Aa oparecer a
mensogem no
porte inferior
do tela "Initial
va lue not
permitted as
the field nome"
ou: e impassivel
desloccr-se
para cimo au
nco e pas sive!
ver os com pos
d igitodos
Nee consiqo
lr para outro
mensa ge m
--t..
<.:...:~..
I'
I,
I
f
I
~. _'I .
. .. . . . .
* w
'W
w w w w w . it . :5-;;
DIU aDATA DICTIONARY, PART< 1
125
Modificondo tabelos
D ep ois que voce criou uma tab ela, voce pede:
copia-la
exclu i-la
nalidade de dicionario qu e ePOllCO con hecida para voce , sem querer modificar
uma tabela exisrente.
Para cop iar uma tabela, siga est e procedimento:
1. Va para a Dictionary: In itia l Screen . (Pa ra chegar ai a partir do menu
pri ncipal SAP, utilize 0 caminho de menu Tools- >ABAP / 4 Workbench, Development->ABAP/4 D icticnary.)
2. Esc olha 0 botao de 0Pliao T ables.
3. Pressione 0 borao Copy na barra de [erramentas Application.
4. Digite 0 nome das tabe las F rom e To.
5. Pressione 0 be-eo Continue. Voce elevado de volta para a Dictionary:
Initial Screen e a mensagem + + aparece na bar ra de Status na parte
inferior da janela.
6. Pressione 0 botao Active na barra de ferr amentas Application para
ativar a nova tabela.
I
~
i'
.j!
-~~~~"""'~'m"'"~"""
".~-"",;;:..~::_=_-=-:,,,......,...-....,. . ...W-.~W.---~_.
...~.....,............r-...........,....,r....r-.r-...........,.....r
126
W._ WW W 9&* _
Adicionando
camp~Ol:>S
acrescentar
Inserir urn campo permire que voce posicione urn campo antes de outre
existente .
Acrescentar urn campo permite que voce adicione novos campos no fim
da tabela, depois de todos as campos existentes.
Inserindo um campo
Para inserir urn novo campo acima de urn campo existente, execute esse
proce dimento:
1. Co mece na Dictionary: Initial Screen. (Para chegar afa parti r do menu
principal de SAP, utilize 0 caminho de menu Tools -> ABAP/ 4Workbench, D evelopment - > ABAP/ 4 D ictionary.)
2. D igite 0 nome de tabela no campo Object Name .
3. Escolha 0 bata o de opc;ao Tabl es.
4. Pressione 0 botsc Change. Isso 0 leva para a tela Dictionary: Table/St ructure: Change Fields.
5. Posicione 0 cursor em urn campo.
6. Pressione 0 ba tao Insert Field na berra de ferramentas App lication. :
U ma nova linha aparecera acima da posicao do cursor.
7. erie seu novo campo na linha que voce acabou de digitar.
Ac rescenfando um campo
Para acrescentar urn campo no fim de uma rabela, execute este procedi menta:
1. Comece na Dictionary: Initial Screen. (Para chegar aia partir do menu
principal de SAP, utilize 0 caminho de menuTools->ABAP/4 Wo rkbench, D evelopment- > ABAP/4 Dictionary.)
2. Digite 0 nome de tabela no campo Object Name.
3. Escolha 0 botao de op~ao Ta bles.
4. Pr essione 0 bono Ch ange. Is50 leva voce para a tela D ictionary:
Table/Structure: Change Fields.
5. Pressione 0 boec New Fields na barra de ferramentas Application .
N a metade inferior da tela, os campos existentes rolam para permitir
que voce digite campos adicionais no fim.
6. Crie seus novos campos nas linhas que voce acaba de digitar.
"'!!!!""""'!!!!....I!!!'~~""l;!i!
Excluindo campos
Voce pode excluir campos existentes de uma tabela. Voce pode desejar fazer
isso se 0 campo nac for mais necessario na tabela au se voce tiver criado urn
campo para os propcsitos de experimenrar funcionalidad e de dicionario que e
pouco conhecida para voce.
Para excluir um campo de uma tabela, compl ete os seguintes passos:
1. Va para Dictionary: Initi al Screen. (Para chegar af a partir do menu
principal de SAP, utilize 0 caminho de men u Tools- > ABAP/4 Wo rk bench, Development-> ABAP/4 Dicricnary.)
2. Digi te 0 nome de tabe1a.
3. Escolha 0 borao de opc;ao Tables.
4. . Pressione 0 botao Change.
5. Coloque 0 cursor no campo a ser exclufdo.
6. Pressione 0 bcrac Cut na barra de ferramentas Application ou escolha
o caminho de menu Edit-s-Delete Field.
7. Ativ ea tabela. A tela Adjust Table eexibida. Pressione 0 botao A djusr
para converter a tabela no banco de dados.
~o
127
128
6. De urn
fun cionalidade
utlllzcm.
e a partir
129
Gera urn programa espe clfico atualizad o de A BAP/4 para sua tabela
que urn navegador de dados pede chamar. (Ess e pr ograma de ABAP/ 4
so m ente egerado a primeira vez que vo ce acessa esse carninho de menu
para uma tahela dad a e toda vez qu e voce 0 acessa depois que uma
alteracao foi feiea na tabela.)
Chama
programa de
Table" agora .
Se voce ja nao fez isso, erie sua tabela agora e ative-a antes de prosseguir.
NOVO...
Execute esse procedimento para adic ionar clados asua tabela. A ajuda com
problemas comuns e dada no D iagnostico e solocso de probl em as que se segue.
Se voce tiver problemas com quaisquer urn do s pas sos, nac se esque<;.a de
con sultar 0 Diagnostico e solu<;ao de problemas.
1. Va para Dictionary: Initial Screen.
2. Digite
3. Pressione 0 botao Display. A tela Di ctionary: T able/ Stru cture: Display Fields e exibida.
4. Escolha 0 caminho de menu Utilities- c-Create Entries. Observe a
barra de status na parte inferior de sua tela quando voce escolhe 0
caminho de menu; vo ce pode ser capaz de ver a m ensagem "Compiling.
.". Essa mensagem indica que 0 sist ema esta gerando a
atualizacao de programa. A tela Table Insert e exibida. Nessa tela, ha
urn campo de entrada para cada campo em sua rebels . A esquerda de
cads campo de entrada, aparece 0 no me de campo . Os campos de
chave primaria apare cem primeiro, seguidos po ruma linha em branco,
depois seguem as campos restantes da tabela. Para ver 0 programa
que foi gerado, escolha Utilities->Creat e Ent ries e depois escolha a
._., ~
'J:fr
'. oil
"~::-....""-""-:,,,,"""'''''""""'!!,,..-"'''!!r:-''!!!!~'!!!!!''''''!!'"""''!!!!''""""''!!''''-'''II!!r'!!!!''''''!!!!''''''
IIII'" ,...-,r'''ll!!''''''''''''''''''''''''P-..r-''''''
130
,....,.....
r- ,..
...,
Problema
Fl '~
5. Preencha os campos com as dados que voce quer digirar em sua tabela.
6. Pressione 0 botso Save na barra de ferramentas Standard. Voce vera
a mensagem "Da tabase record successfully created" na barra de
status.
7. Repita os passos 5 e 6 para cada linha que voce quer inserir.
8. Pressiorie 0 botao Back para retornar a tela Dictionary: Table/Structure: Dis play Fields.
9. Escolha 0 caminho de menu Utilities->Table Contents para exibir as
linhas que voce acabou de criar. A tela DOl ta Browser: Table: Selection
e exibida.
10. Para exibir todas as linhas na rabela pressione 0 botao Execu te sem
inserir qualquer criteri o de pesquisa. A tela Data Browser: Table
Select Entries e exibida e as novas linhas que voce inseriu serao
mostradas em uma lista.
Po ssive is
sintomas
Nso posso
adicianar dodos
Problema
r-..,.....
Possiveis
sintom as
SoluljOO
'131
No
Utiliza nda
SE16
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.
ca-
iI
1.
2.
3.
4.
-~-
-':--'-~.""~"O"'''''''''''"--;;'=~~~-'!!!"""",!,!!,"",'''''''''''''''''''''''''''''''''''''''''''''''-''''''-''''''''''--~,,,,!,,----------------------------~~~======~
132
Solusao
Nc o h6 dodos no tooele.
Vocl! pressionou Save depois de coda registro ?
S(RHNCAM ~ Inicie
Role
a esquerda e a direita.
De urn clique dup lo em um a linha para ver mais campos de uma vez .
caminh o de me nu Tabl e
Enrry-> Create.
Altere uma linha existe n te ativando-a e entao escolhendo
de menu Table Entry -c-Change.
seguinte:
caminho
Problema
caminho
caminho
Varies outrOS parametres de Iista m ilium 0 caminho de menu Settings-> U ser parameters. Aqui voc e pode configurar a largura de safda,
o mimero maxim o de linhas que pode ser exibido, ativar saidas de
133
tabelas.
nolo sera capaz de utili zar 516 se a tabela river urn malogo de manuten~ao
padra o. Ness e case, use 0 SM3l.
A maneira mais simples de dizer se voce deve utilizar S 16 ou SM31 e
aimplesmenre experiments-los. Se urn deles nao funcionar, enrsc 0 OUtrO
pr ovavelmente resolved. Se nenhum funcionar, recorra ao SM30.
NOVO lrl...
niMO r
Comparanda
ENTRAOA~
1 report ztx0301.
2 tables ztxlfaL
3 se je ct > from ztxlfal.
04
wr H e : I ztxlfal-11fnr,
5
zt xlfal-namel ,
6
ztx lfal-regi o,
7
ztxlhl-landl.
8
endsete ct
9 if sy-subrc <> O.
10
write 'Table is empty.' .
11
end1f.
a 5E17 emuito semelh ante ao 5E 16 no sent ido de qu e pode ser u tilizado para
pesquisar linhas especjficas dentro de uma tabela. Enrretanro, 0 SE17 nao pode
ser utilizado para atualizacoes. U tilizando 0 5E16, voce pede especificar
criterio de pesquisa complexo para urn maximo de 40 campos p or vez; com
SE17, voce . pode especificar criterios de pesqui sa simples pa ra qualquer
numero de campos de urna vex. 516 somente at iva a safda a ser classificada
par um a un ica coluna de um a vez; 0 SE17 permite que voc e especifique
qualquer sequencia de tipc ao longo de varias colunas. 5E16 nao func iona ra
para uma tabe1a que tern urn dialcgc de manutencio padrao, mas a SE17
fun cionarg.
Utiliza ndo
qjuda El
A ajuda Fl e a documenracjo vista pelo usuario para urn' campo. Para obra-la,
o ususrio coloca 0 curso r no campo e press iona Flo A do cumentacao e exibida
em uma caixa de dialogo. Voce utilizara 0 seguinr e proc edime n to para modificar a ajuda F I que voce cri ou ant::riormente para 0 campo 1i fnr.
SmtHCAM~ lnicle a 5creenCom "How to Crea te or Mod ify Fl Help" oga ra .
135
,1
t
l
"'l!'"
",!!!!"--'!!!9 ~- .~
~'~i ~:C
2. Localize 0 campo para 0 qual voce quer edicionar ajuda e de urn clique
duplo no nome do elemento de dado s correspondence a esse campo.
A tela D ictionary: Disp lay Data Element sera exibida.
3. Pressione 0 botao Display < -> Change na barra de ferramentas
App lication. A tela muda para 0 modo de alreracao.
4. Pressione 0 borao D o cumen tation na barra de ferramentas Application. A tela Change Da ta Element: Language E e exibida.
5. Digite 0 texro que 0 usu erio deve ver quando ele solicitar ajuda para
esse campo. A primeira linha contern os caracteres &D EFINITION &. Isso
e urn titulo; nao altere essa linha. Digite sua documenracao comecando na linha da is. Press ione a tecla Enter para comecar cada
novo pardgrafo.
6. Press ione 0 botao Save Activ e na barra de ferram entas Appl ication
para salvar suas alreracoes . A mensagem "Document was saved in
active status" aparece na barra de status .
7. Pr essione 0 batao Back na barra de ferramentas Standard. VocS e
levado de volta a tela Dictionary: Change Data Element.
8. Pressio ne 0 botao Back mais uma vez para retomar a tela Dictionary:
Tab le/Structure.
Vrnculos de hiperlexto perm item que voce cliq ue em urnu pclcvro destocodo au
HRMO "" [rose no elud e Fl e exibo ojudo edicione J pore esso pclov ro ou [rose. Pora
adicionar vlnculos de hipertexto, voce primeiro eric um doc ument o 00 qual voce quer
criar um vinculo e ento c deve inserir umo referencio a esse documento no texta do cjudo.
Os names de dccumentos devem inicior com y au z. Voce pade indui r hiperlinks e m seu
novo documento tcmbem e vincu!er 0 portir dol pore outro dccumentc, ad infinitum.
ScreenCom "How to Create
N OME.
6. Pressione
e exibida.
7. Digite seu doc umentc aqui. Pressio ne a tech Enter no final de cada
paragrafo.
exibida.
2. Escolha 0 caminho de menu Utilities- >Docu mentation. A Document Maintenance: Initial Screen e exibida.
S(RHN(AM~ Inicie
a tela de ABAP/4
eexibida.
17. De urn clique na seta para baixo no fim do campo Selected Reference.
A tela Title e exibida: note que ela conte m uma lista de classes de
do cumentc.
"'
137
138
Resumo
a Data Djctio~ary e uma ferramenta utilizada por program as em
ABAP/4 para cnar e man ter tabelas . Hi tres ripos de tabelas: transparente, de pool e de cluster. As tabelas transparentes sao as mais comuns
e sao utilizadas para armazenar dados de aplicarivo. As rabelas de pool
e de cluster sao principalmenre utilizadas pela SAP para armazenar
dados de sistema.
no passo 6,
20. N o campo Name In D ocumen t, digite 0 texto de hipe rlink. Esse e 0
tex to que sera. dest acado e no qual 0 usuario sera capaz de dar urn
clique par a reeeber ma is ajuda.
21 . Pressione 0 batao Continue . Vocee levado de volta para a tela Change
Data Element: Language E e urn link aparece na posiceo do cursor ,
Para criar uma tabela, voce pr imeiro p reeisa de dominies e de elementOSde dados . a s domfnios ofere cern as caracteristicas recnicas de urn
campo; os .elementos de dad os ofere cern os r6tulos de campo e a ajuda
FI. as dois sao reutilizaveis.
23. Voce pode experimentar seu novo hiperlink imediatamenre escclhendo 0 caminho de menu Document-c-Sc reen Output. A tela
Display D ocument ation e exib ida, seu texto de ajuda aparece e seu
hi perlink devera ser desta cado.
24. De urn clique no h ipe rlink. A tela Display Hypertext: e exibida e seu
doc umento prov avelmente aparecera.
25. P ressione Back tre.s vezes para retomar para a.tela Dictionary: Table/St ructure.
. 26. Para testar seu hiperlink, exiba sua t abela e escolhao caminho de menu
Uriliries- c-Create Entr ies. A te la T able Insert e mos tr ada .
..
o
E
'j;l,
o
c
'"
-e
~
III
'"
....
Problema
Sol u ~ ao
Aparece a mensagem
"Chonqe relevant to trcnslotlo nt"
P&R
dominic?
139
140
- - __ v
w-- . . . . = _ .
DIA 3, ODATADJCTlONARY, PARTE 1
rabela.
Works hop
Os segu intes exerclcios proporcionarao. a voce pratica para c~iar objetcs no
dicionaric de dados e urilizar esses objetos em prcgramas SImples com as
insrrucoes tabl es, sel ect e write. As respo stas estao no apendice.
141
I,
I
~
I!
!
II
Exerd cio J
Adicione os campos mo strados na Ta bela 3.4 em S1..1<'I tabela 1 f al . Nenhum
desses camp os ted. urn X na coluna Key porqu e eles nao faze m pa rte da chave
pri maria. 0 propdsito desses campos e co nter urn segundo nome para 0
fabr ican te, a data e a hora qu e a linha foi criada e 0 ID de usuario do usudrio
que criou a regi stro. Crie urn n ovo elemen to de dadcs p ara todo s os campos.
Reutilize 0 dominic do campo namel para a camp o name2. Para 0 resto dos
camp os, utilize os nomes de dominies existences do R/3 mostr ado abaixo.
Do cum ente esses campos utilizando 0 botao Docum ent ation no elemen to de
dad os. Depois que voce ativou suas alceracoe s, utiliz e urn navegad or de dados
para atualiza r as linhas existences em sua tabela e col oque os dados nos novos
campos. Enquanto voce esta arualizando as Iinhas, te ste sua ajuda F lo
Ta b e la 3 .4 Novas compos e suas cc rccterlsticos pa ra a tab ela ztx lfa l
Nome do campo
Nome de DE
Nomede DM
name2
erdat
ert i m
ername
" name2
." -e rdat
ertim
ernam
name
datum
time
usnam
Exerd cio 2
C rie uma tabela transparenre knal para conter dad os-mestr es de clienres,
co mo mo strado na Tabela 3.5. Utilize urn na vegador de dados para adicionar
da do s at abela. eri eurn novo programa e0302 que Ie os dados dessa tabela
e os escr eve ern uma Iista.
Q l Je stjo no ri o
1. Qual e 0 prop6siro do dominic ?
2 . 0 que
3. A quese refere
~ ,' -,,'
142
N ome
de ca mp o
PK
No me
Nome
de DE
de OM
Tipo
Len
Chente
mafldt
mandt
Numero de c1iente
kunnr
kunnr
Nome de clente
name~
knamel
Ctdode
cityc
ci tyc
Regioo
regio
"r egi o
Pels
1andl
, and l
dade.
Umo chove estrongeiro e um compo em umo tobelo que estc coneetodo a outra
HiMO
tcbelo via um rela ciono mento de chcve estrang eiro. prop6sito do relocionomento de chc ve estrongei ra e vchdc r as dodos sendo inseridas em uma tabelo de
verificccc c co ntra um conjunto vdlido de vclores em outre tobelo. A tcbelo que contem
a chove estrongeira e chcmado tobelo de chove estrongeiro. A tobela que contern a
cc ojvnto vclido de vclcres e chemo do tobete de verifico<;6c [ve]oa Figura 4.1) . 0 compo
que e va lida do e em que a relodonamento de chove estrangeiro e criodo e chomodo
chove estrangeiro.
NOVO -....
nl1p:l/www.compU$.ccrn.br
-------------~~~~~~w~~~144
.. -....
A tcbetc de chcve
estrongeiro e 0 tobelo
YWWYW W .
Tabelode move
Tobelo
estronge.ro
de yermco<;Oo
de verificor;60.
l MOOS
land l
rth lfo1
cbc ve ~ lan d l
estrongeiro
~
Ii
US
CA
cA
~
US
US
IT
DE
DE
JP
-'-
nome do compo
reloctonc mentc
de chove eslrongeiro
ta~6es de inr egri dade sio mantidas no banco de dados. Portanto, urn programa
em ABA P/4 incorretamente escrito pode violar a inregridade referen cial; ele
pode inserir valores invalidos nas ta belas de banco de dados . P or ess a razao,
pr ogram as em ABAP/4 qu e precisam atu alizar 0 banco de dados com dado s
proven ientes d e uma out ra fon te qu e nao a in t erface com 0 usuari o n orm almente passaro esses dad os p or u ma interf ace com 0 usuario a fim de
valids-los.
de pcis v61ido$.
US
"-
segundo requi sit o existe p ara garantir qu e os campos que ests c sendo
comparados sejam compativeis quanto co tip o e comp rimen ro de dad o (veja a
Figura 4.2) .
145
- ...
......
146
- ---
.. -
... .... .. -- --
Fig ur a 4 2
Tobela de
verifico<;oo
do compo de chc ve
estrangeiro, do compo
de tobelo de
,",,005
tcbelcs
landl
land1
com pos
do
dominiccomum que
eles comportilhom.
"
"
I, pe:
n: 3chcr
"" /
Estes carocteristicos
sao herdodo s
do dominic
type: chc r
len : 3
ztxlcnd l
2. Digice
3. Escolha
ztxlondl
TYPE : CHAR
LEN,3
147
mlto 1
verificoc;lio e
5. D igite urn textc cu rto, escolha a classe de entrega A e colo que uma
marca de verificacao em Tab. Maint. Allow ed.
dominic
Agora estd na hora de voce criar um a chave esrrangei r a simples. Este exemplc
p ermi tird que voce se familia rize com as telas envolvidas no processo; todos os .
cam po s nessas relas serfo explicados em deralhes mais adian te neste capitulo. "
Os pro cedimenrcs a seguir demons tram como criar a tab ela de verifieafac
zt xt 005 e dep ois uma chave estrangeira em zt xlfal - l andl ut ilizan do ztxt 005
como a tabe la de verificaclo. D epois de visualizar esse procedimento, vo ce sera
solicitado a erial' sua pr6pria tabela - - -tO OS e entao criar urn relacion am ento
de chave esrran geira de - - - lfal -l and 1 para tabela de verificacao - - - t OOS.
Antes de erial' uma chave est ran geira, voce deve prim eiro te r um a tabe1a
de verificacao. Emb ora ja haja uma tabela de c6digo de pafses n o R/3, para
pra ricar voce criara e ut ilizara a sua propria tab ela. A tabe la d e verificacao se
cha mar a - - - tOOS e ira conter os campos e utilizar os elem entos de dad os
mostrados na Tabela 4.1. (Urn x na coluna PK indica campos qu e fo rmam a
chave primaria. )
Tabela 4. 1
Nome d e cam po
PK
mandt
l andl
No me de DE
- --TOOS
7. Coloque uma mar ca de verificacao nos dois campos para indicar que
eles formam a chave primaria.
8. Pressione 0 b c tao Save na barra de [errament as Standard. A tela
Create Obj ect Ca talog Entry aparece.
9. Pressione 0 botao Local O bject. Vo ce e levado de volta
tion ary: Tab le/ St ruc ture: Change Fields.
a tela Dic-
10. Pressione 0 botao T echnical Settin gs na barra de ferr amentas Applicatio n . A tela ABA P/4 Dictionary: Ma intain T echnical Settings e
exibida.
11. No campo Data Class, digite APPLO (APPLO com urn zero, na o
a (zero)
13. Pressione
batao Save.
mand t
- -1 andl
I,
~..--.d
w ...
148
........... w
wv
Fi g u ra 4 3
S(RHNCAM~ Inicie
esfrangeiro ossociodos.
e para conter
4. Pressione 0 botao Change. A tela Dictionary: Table/ St ru cture: Chan ge Fields e exibida.
5. . Posicione 0 cursor no campo que esci para torn ar- se a chave estrangeira (l and2).
6. Pressione 0 botao Foreign Keys na b erra de fer ra m entas App licati on.
A tela Create F oreign Key sera exib ida (veja a Figura 4.3).
7. Digite urna descricao da chave estrangeira no camp o Sho rt T ext , por
exemplo, Country Code val idat i on.
borso Yes.
Testa ndo
D ete[rn i o a ~60
Quando cri ou a chave est rang eira, voc e nfio teve de especificar os campos que
devem pa rricipar no relacionamen ro de chave estran geira - 0 sistema as
deterrn in ou au romaticamente. Esta se~ao explica como 0 sist ema determine
esses n a mes de campo .
149
. ..'-.
150
DIA4;OOATADlaJONARY, PARTE 2
2.
3.
4.
5.
Pressione 0 botao Create Entries na barra de ferramen tas Application. A tela Table Insert e exibida.
7. Posicione
8. Digite
9. Pressione 0 borso Save na barra de [erramentas Standard. A mensagem "Entry XX does not exist (please check your ent ry)" aparece .
Alem do ojudo Fl. voce tcmbem pode oferecer alga chomodo oiudo F4.pora
a vsucrlc. A ojude F4 e ume listo de vclores volidcs que 0 usvcric pe de digitor
em um compo. A flm de obter ojudo F4, a usuoria posiciono 0 cursor em urn ccmpo e
presslon c Q teclc F4. A elu de F4 tc mbe m e conhecidc como possfveis entrodos de oiudo,
porque consisfe em umo listc de entrodos permltidos no compo. Os dais termos s60
vtiluodos intercambiovelmente pelo SAP.
e automaticamenre
lERMO
$CRHHCAM
151
12. Pressione 0 botjc Save na barra de [erramentas Standard. A mensagem "Database record successfully created" apar ece na barra de
status.
I
II
I
I
!
~~j
152
origen~ de
dados que nao a tela e atualizam 0 banco de dados diretamente devem validar
os dados. U rn programa desse ripo deve ser codificado de uma destas rres
manerras :
Umo chove estronge jro comp osta e umo cbcve estrongei ro composto d~':dois
mAIo ~ ou mcis cam pos. Em o utros polovrcs, umo verificcccc e feito para comporar os
dols compos no tcbelo de cbove estrangeiro com as dois compos no tobelo de verificoccc.
A ccmblnocdo de vclcres deve existir no tobelo de verlflcccoo antes de eles poderem ser
inseridos no tobelc de chove esfrcnqeiro . Entretcnto , somen te urn compo no tela ocionor6
a verlflcococ de chove estrongeira composto.
NOVO 'rr....
MOVO ~
Quando voce eric umo chove estrongeiro composto, 0 compo em que voce
rea lmente define a chove estro ngeiro echcmodo compo de verifica<;ao. Some nte
um volor nco nulc no compo de verificc cc o adona a veriflcccec em relccec 0 tobela de
verificac;ao. Um valor em quolquer dos outros compos de ntro do chove estronge iro
composto noo ocionar6 a volidoc;oo.
URMO ~
figmg 4 4
Uma chove
estrangeira compo sto
volidondo a .
combino; oo de regioo
e de poisem relo<;Cio
6 lobelo de verificor;Cio.
Iobelo de chcve
Tobela d e
estrongeiro
v e rifi ca ~60
ztxllal
ztxt005
LOOrr
us FL
CA
ON
US
A
US GA
DE
DE
02
01
LOrEr
CA
CA
US
US
US
ON
DE
DE
01
02
153
relacionamento
de chove estrongeira
NS
AK
Fl
GA
Voce cria urna chave est rangeira composta quase exatamente da mesma
maneira como voce cria uma chave estrangeira cont endo urn un ico campo. Voce
comeca posicionando 0 cursor em urn campo , nesse caso zt xl f al- r eg; 0 e
depoi s press ionando 0 botao Foreign Keys. C om o 0 cursor esta em reg; 0, e1e
se torn a 0 campo de verificafiio da chave estrangeira composta. Embora a chave
estrangeira seja composta de divers os campos, apenas urn desses campos
acionard uma verificacao contra 0 banco de dados . Como re g; 0 e 0 campo de
verificacao, urn valor inserido nele na tela aciona urna verificacao. Se 0 campo
de verificacao nao est iver branco quando a usuario pressionar a tecla Enter.
uma verificacf o sed executada contra a tabe1ade verificacso comparando todos
os campos cia chave estrangeira. Se 0 campo de lverificar;ao estiver em branco,
nenhuma verificacfo e feita mesmo se as outros campos contiuerem oaiores.
I,
,
f
,,t
;
II
154
F igu ra 4 ....A....--
A definio do cho ve
estrongeirc mostrodo
no Figure4.5.
o utre .
A ajuda F4 escd apen as disponfvel no campo de verificacsc de uma chave
est rangei ra comp osta. Quando chamar a ajuda F 4, eodo s os campos de ch ave
p rimaria da tabela de verificacsc serao exibidos . A coluna contendo 0 campo
d e verificacso sera destacada na list a. As larguras e tftulos de co luna vern do
campo Header nos elem entos de dados .
F igura 4 5
Umo cho ve
~strongeirc
envofvendo
compo
Tobelo de
Tobelo de chove
estrongeiro
verifico~oo
ztxIfa1
",,1(105
composto
as valores de X significam:
mandt .
I
700
800
800
800
800
900
900
I
I
I
I
r
r
I
I
I
I
I
I
I
I
I
I
US Fl
US GA
US GA
CA NS
CA ON
DE
DE
01
01
700
700
800
800
800
900
US
GA
cutros
compos
C: Ha, no maximo, uma linha na tab ela de chave estrangeira para cada
Iinha na tabela de verificacao.
Entenda a cardinalida de
NOVD ....
TEilID
CN: Pede au nao haver Iinhas na tabela de chave esrrangeira para cada
linha na tabela de verificacio.
1:>5
44 . ....
156
APREH DA EM 21 DIASABAP/4
Urn o bjeto ogregado e um cbjetc ODIC co mposfo de mois de ume fabe la. Um
exemplo de urn ob jeto egr egedo e umo visua Hzot;oo.
chave estrangeira, a ripe correto de chave estrangeira sen do tipo campos/can didatos -chave.
A o criar uma chave esrrangeira, voce deve escc lher carnpcs/candidatoschave se 0 campo de chave est rangeira for urn dos campos de chave primaria
da tabela au fo r urn candidato-chave. Caso contrario, escc lb a campos/candidat os nao chave.
Quando voc e cria uma chave estrangeira vo ce deve especificar a cardina lidade . Se nao espe cifica-la, voce sera incapaz de incluir a tahela em urn ohje to
agregado.
NOVOlio..
lElI',O "
tela que a cardinalidad e quando voc e cria a chave estrangeira (veja a Figura 4.3) .
Ele pode ser urn dos segui ntes valor es:
Campos/candidaros-chave
Campas-chave
Escolha Key Fields/ C and idate s seo campo de chave est ran geira fo r urn dos
campos de chave primar ia da tabela de ch ave estrangeira. Escolh a Non-Key "
F ields / C andidates se nao fo r. Por exemplo, suponha que a tabela tl seja
co m posta de campos fl a fl Oe qu e seus camp os de chave primaria sejam fl,; f2
e f3. Se voce fosse definir um a chave estrangeira no campo f3, Key F ields/C andidates seria 0 tipo correro, porque f3 e pane da chave primaria. Se v6ci fosse
definir u ma chave estrang eira rio campo f S, Non-key F ields/Can didates seria
correto, po rque f S nao eurn dos cam pos de chave primdria.
Candidalos-chave
Urn condidcto-dtove e urn co mpo em urno tobelo que , por si mesmo ou em
con junt;oo com outro compo que n60 foz porte do cho ve prim6rio, pede ser
utilizodo poro identificor de mon eiro unico urno linho no tobe lo. Em o uiros polovros, se
houver umo mo neira de selecion or umc linhode"umo tobelo sem utilizer compos de chove
prim6rio, existem condidotos-chove nesso tebela. as candidatos-chove s60 os compos
que noo se encont rom dent ro do chove prim6rio que podem ser otilizod os unicomente
pore identjficor umo linho de mo neiro unicoi bosicc me nte e les podem se rvir como umo
chove prim6 rio alterna tive .
NO
VO'"
TERMO ""
Por exemplo. ztx 1fa 1 tern urn unico campo de chave primaria qu e contem
urn identifi cador unico para cada linh . Se voce pressup6e que a combinal$ao
de erdat e ert i rn (data e ho ra de cria~ao) etambem (mica para cada linha, esses
camp os de data e hora sao candidatos-chave. Se qualquer urn aparecer em uma
Umo tobelc de fexto e urna tcbelc que contern descnce es 'n c lingua fa lodo' de
vclo res em umo tobe lo de veohcccec. Essos descricees 56 0 ormoze nad os em
v6rios ldlomcs. A chove prlrncric do tobelo de texto e c mesmo que 0 chove primcrlc do
tobe lo de verlftcocec , com a edie;oo de umo colune spras (idiomo).
NOYO .....
rmlo "
157
DlA ~:
landl
A tcbelo de fexto
pore ztxt005 eo
ztxt005t. flo eo
comp osto de compos
us
mandt, spros,
DE
CA
landl, landx e
natio.
IT
JP
AQ
CC
l andl
CA
CA
DE
DE
sistema R/3 que a fobe lo de chove esfrongeira e umo fobe lo de felda. Quando
voce escoihe esse tlpo, a primeiro descrtcco que segue a chcve primorio e exibida no
ajuda F4, no idiama de logon do csuoric. Pcrtcnto, esse tipo de chcve tem duos
US
US
IT
IT
JP
JP
AQ
AQ
CC
CC
de verificacao.
Somenre as lin has da rabe la de t exto tendo 0 mesmo c6digo de idioma
que a idioma de lo gon atu al do usua rio aparecem na lista de ajuda F4.
ztxl f al.
e 4.3.
E
D
D
lan dx
Canad a
Kanada
Germany
Deutsch' and
United States
USA
Ita ly
Italien
Japan
Japan
Ant arcti ca
Antarcti ca
Coconut Islands
Kobinseln
$ClENC,Ul,.... lnlcle ~ ScreenCom "Text Ta ble Demonstratio n: The Effect of the Logon Lon,. guage ogara.
1. Inicie a rransacao 5E16 (digite /nse16 no campo C ommand e pressione a tecla Enter).
0 nome de tabela ztxlfal no campo Table Name.
3. Pressione 0 bcrao Create En tries na berr a de ferram en tas Application.
'
2. Digite
_,I
_______J
.,~'
160
I
,
6. A gora efe tue logon novarnen te (voce nac precisa efetuar 0 logoff
primeiro ). Dessa vez , digite 0 par a Deutsch e (alemao) ern Language
Field de tela de lo gon do R!3,
161
A tobeloztxmaro e
Nome d e campo
PK
N ome de DE
Nome de DM
mandt
spras
1andl
1 andx
x
x
x
mandt
spras
- - -1andl
- - -1andx
t ext1 5
semelhonte alobe/a
mara de the R/3
MaterialMosler.
;,
'
Depois de ativar - - -t005t , digite os dados n ela utili zando 5E1 6. Utilize
o s dados de exemplo mostrados na Tabela 4.3.
Agora erie uma chave estrangeira em _. - t005t -1 andl. Siga 0 procedimento de cria<;ao de chave estrangei ra forn ecido an t eriormen te. Utili ze
- t005 como a tabela de verificacao. Na t ela Create Foreign Key, especitique
urn tipo de campo de chave estrangeira n os campo s Key de uma ta bela de rext o .
Voce pode querer revisar a scr een cam "H ow to Creat e a Foreign Key " ant es
de comecar.
Depois de criar su a chav e est rangeira, siga 0 prc cedimen t o p ara t est ar 0
relacionarnento de chave estrangeira em - 1f al - 1andl. No pa sso 11, note que
a descricao de ztxt005t tambem e exibida. Agora, efetue logon novamenr e,
d essa vez esp ecificando urn idi oms de logon 0 (alem ao) e repita 0 teste. D essa
vez, voce devers ver as descricoes alem as no passo 11.
""
1.-"
...t,,
;,J,.
.'
.. .
'W'W'W''W''W
.........
...
~
162 ,pm" EM
DIA ~ :
Umo ma rco de
verificor;oo no coixo
de selet;60 Generic
indicaque um compo
deve ser ignorodo
durante 0 verificor;oo
_1;,1",1
':M"; t. ~~~ ,
. .
~"
,..
-.,"
'
'f';:',;~;;'':::;:::~;;~B~~~~~;'~~ .
de chc ve eslrongeiro .
.,
i
HOVO.... Chaves es/-rcngeiras canstonfes sao chcves estrang eiros compostos em que um
TERMO ~
des names de compo de tobelc de verthcocoo e substilufdo par um voter
ccnstcnte. Essevolar constcnte e inserida no lela Creole Foreign Key (~ej a a Figura 4.11).
Por exemplo, imagine que voce p recise criaruma nova t ab ela de fabricante
ztx lfalus como ztxHal contendo ap en as os fabri cante s dos EUA, mas, par
razoes de compat ibi lidade, voce quer que des tenharn exa tamen te a mesma
estrutura que ztxl fal. 0 c6digo de p ars nessa rabela semp re se ra.us. Vo ce po de
criar uma chave estrangeira constante para restringir os valores na tabela
ztx lfalus. Urn exemplo da definicao e mostrado na Fi gura 4.11.
163
...
'!' '!' '!' 11 !!f 'I' .. 'I' ... .. .. .. ... ... ... ... ... ... ...
164
"II!"
-- --- w w
'W
- -- -- - - - - - -
4 11
o compo
pots como
umo chove estrongeiro
ccostonte.
Entendendo
A fim de entender 0 prop6sito do campo Value Table, voce deve estar familiarizado com 0 "q uadro geral'' do projeto e des envolvirneneo do banco de clades .
Com ecarei descrevendo esse qu adrc geral .
Antes de erial' qualquer tabe la no DDIC, vocenormalmente fara algum
projer o de banco de dados . Ess e projeto descreve as tabelas que serao criadas,
seus relacionamentos e os tipos de dados que cad a um a contera. Ele normalm ent e designarf certas tabel as para serem tabelas de verificacgo a fim de validar
os dados dentro de outras ta belas. POl' exemplo, um a tabela de verificacao de
c6dig o de pals pode ser necessaria para validar c6digo s de pafses para todas as
tabelas onde os codigcs de pajses serao armazenados. Quando voce cria urn
conjun to de tabelas dentro do R/3, voce normalmenre criara as tabelas de
verificacao primeiro.
A principal fina lidade de voce erial' uma tabela de verificacao e validar
dad os. Voce pode erial' diverscs relacionamencos de chave estrangeira vinculando muitas outras tabelas com uma unica tabela de verificacao. 0 campo
Value Table no dominio existe para simplificar a taref a de erial' esses relacionamentos.
Antes de continual', suponha que 0 campo Value Ta ble dentr o do dominic
tenha umnome completamente diferente . Limpe 0 termo "V alue Table" de sua
mente e im agine que esse campo e chamado "Default C hec k T able".
Para simplificar 0 exemplo, nossa tabela de verificacao tera urn umco
campo de chave primaria, ilustrado na Figura 4.13. Para ilustrar esse conceito,
descreverei 0 processo que voce iria erial' para essa tabela de verificacao e utilizar
em urn relacionamento de chave estrangeira.
Fjg ura 4 12
Exemplo de
umo
chove eslrongeirc
odoptodo .
ztxtOOS
Fi g u r a 4 13
ll.
Dentro d o domlnio esta 0 cc mpc lobe/a de volor. A tobelo ldentificodo den tro
desse compo oferece a s segu intes fun<;6es para 0 do minic :
URIIO"
tcbelc de verifico~oo
dentrodo dominio
contern 0 nome de
limo tabelo de
verincolioo.
Elemento de dodos
Domlnio
'165
166
167
Quando voce cria uma tabela de verificacio, voce deve primeirc criar um
dominic. Voce sempre criaria urn novo dominic especificamente para uma
tabela de verificacao . Voce entac criaria 0 elemenro de dados e depois a propria
tabela. Dar, ativaria a tabela. Entao, voltaria ao dominic, no campo de chave
primaria, e colocaria 0 nome da tabela de verifica~io que voce acabou de eriar
no campo Value Table-mas lernbre-se de que 0 chamamos de campo Default
Check Table.
Agora, voce criaria Dutra tabela, no nosso exemplc e ztxl fal. Voce criaria
ocampo 1andl e utilizaria o elemento de clades ztxl andl e entdo as dais campos
deriamos salva-la.
Nesse exemplo, 0 sistema automaticamente criou a chave estrangeira para
nos, porgue colocamos 0 nome da tabela de verificacfio no campo Value Table.
Dando tres cliques de mouse, criamos uma chave estrangeira! 1sso, em essancia,
ea principal razjio para 0 campo Value Table. Ele existe para fazer a criacao de
chaves estrangeiras mais Iacil.
Para resum ir, 0 campo Value Table
sistema:
e utilizado
Nessa se~ao,.voce adicionara uma tabela de valor para urn dominio e observarf
seu efeito na cria~ao de uma chave estrengeira.
-E dite urn domlnio _. -Landl agora e digire ** *tOOS no campo Value
Table, ativando depois 0 dominio.
Agora voce excluira a chave estrangeira no campo - * *Hal-landl e entao
a criara novamente de modo que voce posse vel' 0 efeito do campo Value Table
no processo de criacao de chave estrangeira. Para fazer isso, siga 0 procedimento abaixo.
status.
9. Com 0 cursor ainda posicionado no campo de chave estrangeira
(1 andl), pressione a batao Foreign Keys novamente. A tela Create
Foreign Key e exibida. Ela Ie Foreign key does not exist. Generate
proposal with value table as check table? Voce ve essa caixa de men sagem porque 0 sistema olhou no dominic e localizou urn nome no
campo Value Table. Ele responde exibindo essa caixa de mensagem.
10. Pressione 0 batao Yes. A tela Create Foreign Key eexibi da e 0 campo
Check Table contem a tabela de valor do domlnio. O s campos Check
Table e-as campos Foreign Key sao pre enchidos.
11. Pressione 0 borao Copy. Voce e levado de volta a tela D ictio nary :
Table/Structure: Change Fields. A mensagem Foreign key was trans ferred aparece na barra de status. as campos Status exibem 0 texto
Rev; sed e Not saved .
12. Pressione 0 botao Activate. A mensagem "was saved apare ce na barra
de status. as campos Status Ieem Act. e Saved.
Com urn nome de tabela no campo Value Table no do min ic voce po de
rapidamente e com confianca erial' chaves estrangeiras.
Urn asterisco (*) nesra coluna significa que uma rab ela de verificaqao
nao foi definida para 0 campo, mas uma tabela de valo r exisre no
domfnio.
"': I. It t.1Jt:I,X::X:XI" I . II
168
w w w
w ..
DlA~ : 0DATADICTIONARY, PARTE 2
Hoi uma excecao para 0 segundo ponto acima. Se voce atualmente est iver
exibindo um a tabela de valor, 0 asterisco DaD aparecera no campo cujo dominic
se refere a tabe la de valor qu e vo ce esta visualizando.
A chove mone t6rio e con hecido como comp o de refe r@:ncio Trata se de outro
ccmpo no mes rno tobelo au em outro tabela. Esse co mpo d'eve ter-a fipo CUKY
(chove mon et6rio) no do mfnlo. Ele indica a chove monet6rio pa ra a campo monet6 rio
relere nctcdc.
NOVO ~
n~\O r
Por exemplo, imagi ne que voce criou uma t abela contendo uma [ista de
pagamentos feitos aos fabricantes. Voce precisaria de um campo de quantidade
de p agamento (nome de campo wrbtr) e urn cam po- ch ave monetaria (normalmente waer s) para indicar completarnente a qu an ridade e a chave m onetaria
utiliz~das nesse pagamento. Para vincular as do is campos entre si, voce dari a
urn clique duplo no nome d e campo monetario na tabe la e entao inseriria a tabela
de chave m one raria e a nome de campo no s campos Refe rence T able e
Reference Field (ve]a a Figura 4.14) .
inserido no campo .
Essa fu ncion alidade pode ser uti! quando voce qui ser oferecer ao usua rio
uma lists de valores sugeridos, mas quer permitir que OUtrOS valores sejam
digitados no campo tambem.
as campos de qu antidade
...;'"
O s campos mooet6rios
NOVO ~
TtRMO "'-
Imagine que voce qu eira ir 00 ba nco e pedir 1.000. 0 coixa provave lmenle
perguntoria NMil a que? " Voce pode responder NMil delo res". Ou voce pode
ser ate mois especffico e pedi r "'1.000 dolores norie-omericnnos". Quontios monet6rias
no R/3 sao ormozenad as em dots campos: um armozena a quentia nurnerico real (l.DOO)
e outro ormczena a moneloria {USDJ. 0 compo nomerlco de quentio e chcmodo compo
monercn c e a outre compo e cha mado compo-cbcve monetOrio .
o que
Elg ll r a 4 14
Os compos de
referen cio no lela
Display Field.
~!! i~ ; !t! ~~;.. ?~t'.'im1(= _JLt-;'\"t~'.! N~j~ ~ -=-2~, ,, ;.- ;,)5 !i' -!~!:J
. , :1
8;' ~ ,~
-.~
H' ~ {) ~
-~ ~ '-:i~l.:H>~~~'-i~~\(~2~, C
169
I.J
.,
I
~~~~~~--------------lHf!
.os ca mp os de qu-oanoIlti.od.o
.ou;dlfeL..NOYO....
milo r
exemplo, esse compo pede conter uma medid~ de peso, co~pnmento,. tempe ratura ou eletricidode. Pa ra se r significativo, umc unrdade de rnedidc co mo librcs,
polega dos, grous Fahrenhe it a u q ullovolts devem ocomponh? -]o. Os compos de quantidod e tern estes req uisites :
li
rl
~I
Reference Tobie e
Reference Field
ofere~m 0 vInculo
perc
compo UNIT.
.>
TWO '"
ogrupodos sob um nome comurn . Emuito semerhonte a urno tc belc. C o mo urno tobelo,
era po de se r vtillzcdc dentro de urn progr a ma no instru; oo tab l es para definir urnc 6reo
de trabolho.
As diferencas entr e urna estru tura e uma tabela sao como segue:
Uma estrutura nao tern uma tabe1a de banco de dados associada.
Uma estrutura nao tern uma chave prima-ria.
Uma estrutura nao tern atributos tecnicos.
As estruturas seguem as mesrnas convenc;6es de atribuicao de nome que
as tabelas transparentes e voce nao pode ter um a tabela e uma estru tu ra com 0
mesmo nome .
Voce criaria uma estru tura no DDIC se quisesse definir a mesma area de
trabalho em diversos programas. Por exemplo, se voce quiser escrever regist ros
para urn arquivo sequenti al utilizando pro grama em ABAP/4 e depois Ie-los
para utilizer outre, os dois programas precisam conhecer a layout desses
registros. Voce criaria uma estru tura no D DIC que define 0 layout do registro
e entdo atribuiria na mes a essa estrutura na instrucao t abl es nos dois pro gramas. Isso criaria uma area de trabalho identica para os dois prograrnas.
o proc ediment o para criar uma estrurura ~ quase a mesmo para criar uma
tabela tr ansparenre. [Co nsulre as pro cedimentos para criar uma tabela trans parenre.) As unicas diferens:as sao as seguintes:
Em vez do borfo de op~ao Table, escolha 0 botao de 0plSao Structures.
Os campos D elivery C lass e Tab.Maint.Allowed nao aparecem.
As estruturas nao tern uma chave p rimaria.
17
11-----~~~
DIA 4: 0 DATAOlCTIOHARY, PAm2
Entendendo Includes
UIDa estrutura pode canter outra estrut ura, Em outras palavras, voce pod e
aninhar estruturas uma dentro da outra. Isso pode ser urilizado p ara reduzir a
manutencao agrupand o campos juntos em uma estrut u ra e enrac inclu indo essa
estrutura dentro de outra estrutura ou mesmo dentro de uma tabela.
Por exemplc, urn endereco de uma pessoa e composto de urn conjunto
de campos como rua, cidade, regiao, pais e ccdigc postal. Voce pede precisar
mante r esse endereco em diversas tabelas. Dentro da tabela do fabricante voce
pode querer manter 0 endereco do fabricant e, na mestr e de cliente a endereco
do cliente, e na tabela de empregado ender ecc do empregado. Se voce criar
uma estrutura para agrupar os campos que juntos formam 0 en dereco, voce
pode entao incluir essa estrutura nas definicoes da tabela. Quando a tabela e
ativada, as campos da estrutura sao adicionados e existem na tabela de banco
de dades como se fossem definidos dentrc dela. Eles terao o mesmo no me que
a nome na estrutu ra. Para incluir uma estrutu ra dentro de uma tab ela, (a u
dentrc de outra estrutura), digite . INCLUDE na coluna de nome de campo e insira .
a nome da estrurura na coluna de elemento de dados.
Na Figura 4.17, a tabela zt xempl (tabele de empregado) inclu i a estrutura
ztxa ddr (veja ;1 Figura 4.18), que consisee em campos de endereco stras (rna),
artDl (cidade); reg; 0 e l andl . A tabela ztxempl .portantc, contem estes campos:
zt xemp l -stra's; zt xempl - ortOl. ztxempl reqt 0 e zt xemp1-1andl.
NOVO ...
TEi.UO
.~ :j,'
Eigur g 4 17
A tcbelo de
z t xemp l ccntem
um I NCLUDEpora
fazer com que os
campos de
ztxaddr seiom
odicionodo s a ela.
!~ "
1... 'r.
. ;,
-(.~~.,.
.,,,,,.,
... ?"-:: "
::::::J ~t.ti : ~- x ~
a ~1i.0 0 "" -:'0 ;,:t;g~:t>-:::.~.$; :=;"_:jj ;-;~
,;;p- :-0- :~: ;:1 ~ ;..l' :"; io t ;'-d-'Si",:UCiQ,iil;': t:'riCiliiic .licllll ril' :"lrille.<e.:; ~~~+t=;,;r":i;'~,",1~#~ ( ~.i_.
'iI' j
~
~~~~i~=~~i~II
~~!~:~~i1~;~~1t:flwt~~~~~tie;f2.t~~~~~::
. ...:u.~ du~"f~~~"PU~l tn1lt.(~.";~.tr~u~tb"
Nhl .'
~ ~?>-<~':.J,
il.... ; n .-.: ~~' : UU >,d'.".' .1n~ l-~,t~ ~~u"rnl l " '~"l;:.t ... t~ -'-',* \ :"': : _~ -O. , ".:..k'\""'::'o'"'::r.:-!i,.:.,,: ~ ,t o;,
ve e sc me nte
1a
A estrufuro z t xaddr
contem as compos
de enderel;o que sea
induidos no tobefo
ztxemp l.
j
I
,
j
II
Flgut a 4 19
o formulcirio
. [ NeW-XXX do
tabela z t xemp l
inclui 0 in strv~6 o de
modo que ztxoddr
posso ser incluido
duos vezes sem
dup/ic:or os names
de compo.
.'.,,><1
17:
174
'''I
FigurQ 4 21
51
if &hi ei"lt4E
if L._.
. _'3 ; ~
"1, 1,,1
Escolhe r 0
caminhode menu
Ilolo 7 ~-:,:;r
Ex/ro->
Substructures- >
Expond AllSubs!f.
fez os compos des
estrutvros oporecerem
no lisle.
rsra
F i g u ra 4 2 0
, .,..
Alobelo z tx empl2
uti/izo
mrmu/6rio
.INCLU XXX do
instru~O o incl ude
de modo q ue
Resumo
sem dup/icor 05
nomes de. compo .
e As tabelas de text o ofer~cem suporte de diverscs idiomas p ara descricoes no R/3 e especialment e p ara ajuda F4.
,i
'!
Ii
Dentro de uma tabela, cada camp o mon eta rio deve ser vinculado com
urn campo-chave monetario e cada campo de qu an ridade deve ser
yinculado com urn camp o que ccntem as unidades de medida.
Voce p ede utili zer est ru tu ras para de finir areas de trab alho ide nricas
em divers os programas. Voce p ode incluir uma est rurura dentro de
-outras est ru turas e tabelas.
-y
176
r...
_ !
P&R
o
o
Nao. Apenas Key Fields Of A Tex t Table empr ega fu ncionalidade de sistema. a s outros nao [azem nada acontecer - eles
servem prin cipalm enr e para documentacao.
as
tu r a.
usufrio, seu p rogram a ern ABAP/ 4 deve ser escrit o cui dad osam ence de mo do que ele Dao tr ansgri da a integridade
Workshop
Teste
referen cial.
referenciar?
Exercfcio 1
e rie uma tabela de veri fica~ ao de co digc de pals charnade toOS. Ela sera
. utilizada para validar todcs os codi gcs de pajses inse ridos em suas tabelas. As
especificacoes aparecem na Tabe1a 4.5.
Descri~ao
Nome de campo
Cliente
"cascara em ex-
Tabela 4 .5
mandt
Chove do pafs
1andl
-tOOS
PK
Nome de D E
mandt
-1 andl
178
mandt
PK Nome
Nome
de DE
d e OM
Tipo
Len
Tabela de
verificD ljOO
Cliente
mandt
Chove de-pels
landl
mandt
l andl
regi o
ct t yc
- - -tOOS
rect o
Descriscio
C liente
Descri ~ a o
N om e
de camp o
Exerdcio 2
Nome de compo
t OOSs
C6digo de cidod e
PK
Nome de DE
mandt
. 0 -Jendl
_. -regi o
Ta bela de
v e r ifi ca ~a o
citye
- ci tyc
CHAR
Cbcve de pais
, andl
t005
C6di go de regioo
regio
Exerdcio 3
Ad icione relacionamentos de chave esrrangeira aprop riados para 1andl e para
campos regie em sua tabela - - -lfal. Util ize 5E16 para atualizar as linhas
exist ences dentro de - - - 1fa 1 e insira ccdigcs de paises vslidos de regiso.
Exerdcio 4
erie uma tahela de verificacic para 0 campo ci ty c na tabela-me srre de cliente
_. knal que voce criou na D ia 3. Nom eie essa tabelacomo tOO 59.Ela deve
canter uma lista de c6digos validos de cidade. As especificacces para ela
aparecem na Tabela 4.7.
Exercfci o 5
Depois que voce ativou a tabela, va ate 0 dominio ci tyc e coloque t005g
no camp o Value Table, errdo ative . Utilize 5E1 6 para adicionar c6digos de
cidade para a tab ela tOOSg e teste as chaves esrrangeiras tenrandc inserir
c6digos de pais e de regiao invalidos. Entao erie a ehave estr angeira dentro da
tabela - - knal no campo ct t yc e utilize 5E16 a fim de adieionar clientes para
- - - knal. Teste 0 relacionamento de ehave esrrangeira rentando inserir c6digos
de cidade invalidos . erie um a tabela de text o para - - tOOSg e arribua a ela 0
nome - - tOOShj as espe cificacoes sao mostradas na T abela 4.8.
Ta b e la 4 .8 05 compos e suos caracterfsticas pa ra ta be lo
tDOSh
Descri~ cio
N ome
d e campo
C1iente
man dt
PK
Nom e
de DE
N om e
d e OM
Tlpo
Len
Ta bela de
verifl co~ac
mandt
Chcve de idiomo
spras
spras
tOO2
Chcve de pols
l andl
, andl
otOOS
.0.reg1 0
.00t005s
C6digo de regioo
re qt o
179
180
Exerdcio 7
PK
de campo
Nome
de D E
Nome
Tipo
Len
Tabela de
ve r i f i ca~a o
de DM
C6digo de cidode
cf tyc
-t005g
cityc
Descrtcco
bezei
bezei 20 text20
CHAR 20
Descrisao
Nome
de cempo
.Nome
de DE
Nom e
Tipo
Len
Decimal
de DiY".
Tahela de
verifi(a~ao
li mite de Credttc
Exercfcio 6
erie uma est ru tura chamad a - - - t el . As especificacoes apare cem na Tabela 4.9. ,
Ta b e la 4 .9 Os campos e sues caraderisticas para estruturo - - -tel
Descr isao
Nome de campo
N ome de DE
tel ft
te1fl
telf2
telf2
Numero de fox
telfx
telfx
Ncmero de telex
te 1 xl
~I
:J
telxl
cr editl
12
C hcve monet6rio
waers
waers
tcurc
181
www
~ ---
w---~~~--
-- ----- - -- - -
'I""'!!''!!'''!!f'W _ ..
184 I
~_
Figura 5 1
ormozenodos em
ordem clossifjcoda
com pan/eiros para as
linhos originals.
I'
.,
,
"
'I
.,I
II
LI
nOdo
I"/nr linho
.1
.2
3
.3
1
7
.5
6
.6
2
.7
S
.,
.3
.6
, .,
3
.2
.7
6
7
.s
.,
MOYO
Icbe'e mile I
pe rc m Ho 1
IndIce primoria
,I
185
. .,5 , ..'"
E1.gurQ 5 2
Indice prim6rio
Tobelom lfo1
Urn Indice
seclJnd6rio
permite que voce
pesquise ropidomente
em outros co/uno!>
o/@m dessos no chove
prim6rio.
n.O do
., ,
nnr
.2
.3
.,
linho
linna
limr lond1
.3 US
.6 CA
, .,.2
.5
2
5
.7
n." do
n." do
.6
indice secvr.dcirio
em lond l
5
6
7
US
.7
DE
DE
.5
CA
.,
US
lendl linho
CA
CA
DE
DE
US
US
US
1=." Wi ,l
Fig mQ 5 3
"1._
..-., "","
ztxlfal e
co mpos la petos
,
,
campos
mandt
londl .
If '
"
~ '
l"'I,
3.~ C.AIX : ~ H U n
secundorio no lobe/a .~ t-I '8t :".._ -,,~ ,~; :_'. ~:::.;.;.: -: . ~.,.. : <.
S_ IWIl .,... ~
(,F
. t"j xl
, ay A H
o in<!ice Z
.ne
.oC", :_:~-"~'~"":"
:10:>-..:" _'1.:""-.f'"7"" ~~ ' ",:.T. -, ,~- .~.
3
7
I
I"
I'
Para exibir os ind ices secun derios existentes em uma tabela de banco de
dados, siga este pro cedimen ro:
1. Exiba a tabela.
2. Pressione 0 borao Inde xes. " na barra de [erramentas Application.
Se voce nso vir esse batao , sua janela pede estar mui to estreita.
. Alargue-a a u escolha
...,..
---:..;. ~
..
~ "'. -=.;;-_ ~
. . _l
1. Exiba a tabela.
2. Escolha 0 caminho de menu Utilities->Database Utility. A tela
ABA P/4 Dictionary: Utiliry for Database Tables e exibida.
3. Escolha 0 caminho de menu Extras-c-Databa se Object- s-D isp lay.
U rna lisca de todos os campos na tabela e exibida e embaixo deja esd.
uma Iista de eodos os indices com seus camp os, incluindc 0 Indice O.
Considero<;6es
NOYO .....
TtU.O "
00
188
indice s e MANDT
Se urna rab ela comeca com 0 campo mandt, seu s indices tambem devem com ecar
com esse campo. Se um a tab ela comelja com mandt e urn Indice nao, 0 ot imiaado r pode nao ut ilizar 0 Ind ice.
Lernbre -se, se voce pre cisar, do recu rso de tr atamento automdrico de
clien re do Open SQ L. Q uando select *" from ztxlfal where landl ;: ' US' e
executada, 0 SQL real enviado ao ban co de dad os e select *" fro :n ztxlfa l
where 0 mandt = sy-mandt e 1andl ;: 'USI Sy-mandt contern 0 cliente atual de
lo gon . Q uando voce seleciona Iinhas de uma tabela utilizando Open SQL, 0
siste ma au to maricame nte adiciona sy-mandt aclausula where, que faz com que
apenas as linhas que pert enc em ao cliente atual de logon sejam localizadas.
Quando voce cria urn indice em uma tabela con tendo mandt, tambem deve
incluir ma ndt no Indice. El e deve vir primei ro no Iodice, p orque sempre aparecera p rimei ro no SQ L gerado.
No resta nre dessa discussao, par ta do pressuposto que mandt esra inc1uido
em todos os indices.
NOVO ....
Sevocecodilicc sel ect *" from ztx lfal where regia" ' MA ' , precisa haver
urn indice iniciondeemmandt e regi 0 para cssegurarque 0 otimizodoroutilize.
Se voce ccditicc sel ect *" from zt xl fa l where lan dl ;: IUS' and regia " ' MA',
deve haver umIndice que conternmandt, 1and! e regia. 0 Indice ideal tcmbernas terio
nesso mesmo ordem. Se ndc houver um Indice nessa ordem, mas hoover outro
ccmecondc com mandt e 1andl, a otimizodor a utilizar6 para cc rrespcnder os primeircs
doiscamposdo c16usulo where e entco execvtor umvorreduro de intervo/o de fndice pdro
localizer uma ccrrespondendo em regio. Uma vorreduro de intervolo de indicej ! umo
busco seqcencol por uma porte de um fndlce.
Tn.ll.O ~
NO
VO....
TWlO ~
D~
Ao criar ou modificar Indi ces, rente nao utilizar urn camp o que ji esn em
urn deles. Ha uma chance, quando urn programa pree xist ente for execurado,
de que 0 otimizador va escolh er 0 novo Iodic e e urn programa preexisrente
po de tornar-se mais lent o.
R/3.
1. Exiba a tabela.. Voce deve comecar na tela Di ction ary: Table/ St ru cture: Di splay Fields.
2. P ressione a batao Indexes. . . na barra de ferram entas Application
(ou escolha 0 caminho de menu Gorc-e-Indexes. . .)
3. Se os indices secundsrios ja exisr irem, uma lisra deles sera exibida em
uma caixa de dif logo identificada como Indexes for Table xxxxx. Para
criar urn Indice, pr essione 0 ba tao Create. A caixa de dialogo Create
Index se ra exlbida.
4. Se nenhurn Indice secundaric exisrir, voce nao veri uma Iista de
indices. Em vez disso, vera a caixa de diaIogo Create Index imediatamente.
5. Insira u rn id de fndice no cam po Index rD. Os indices de cliente
dev em comelja! com You Z, embora 0 sistema nao imponha isso.
6. Pressione 0 botao Continue. A tela ABAP/ 4 Dictionary: Ta ble:
Maintain In dex e exibida .
7. No campo Short T ext, digite uma descri~ao do fndice.
I AP RENO A EM 21
eus ABAP/4
~o
S(RHNUM~ lnlce 0 ScreenCom "How to Use SQl Troce to Determine the IndexUsed" ogora .
Para dererminar qual Iodice esta sen do utili zado por uma instrucio
se lect:
1. erie urn pequeno programa em ABI\.P/ 4 que contenha apenas a
ins trucao select. Antes de prosseguir, tesre-o pa ra certificar-se de
que funciona.
191
192
DIAs,oDATADlcnDHARY,PARTE ' I
2. Abra esse programa no modo de edicsc pan. que ele esreja promo e
espe rando para ser execu tad o.
e exibida.
e levad o
de volta a tela T ra ce SQ L: List Database Requ ests. Seu cursor e
posieionado na primeira linha qu e co ntern seu nome de tabela. A
direi ra dele, na coluna O peration, deve estar a palavra PRE PARE , OP EN
ou REOP EN.
Voce aprendeu a executar urn rastr eamen to de SQL Isso ajudad. voce a
determinar qual Indice esd. sendo urilizado.
Closse de dodos
A cosse de dodos determino a tablespoce 0 que 0 fobelo e ctribuldo. (0 termo
"tcbt espoce" se cplico 0 bancos de dodo s Oracle. Pora lnformix, substituo pelo
termo "'DBS spa ce"'.) Um tabJespoce e um orquivo fisico no disco que e uttlucdc para
crmczencr tcbelcs . Coda tc belc eotribuida a um toblespoce. As tabela s com corocteristicos seme lho ntes nc rrnc lmente sao agrupoda s em urn tab lespace, ossim toblespcces sa o
as unidad es a dministrotivos utilizada s pelo DBA pa ra gerencior 0 ban co de dodos. Pa r
exernplo, a s tobelas que cresce m rcp idomente esto roo ogrupodas em urn toblespoce em
urn disco com muilo espo<;olivre.
NOVO'"
TftO ~
193
.w..
194
w.w.w
---~-----D1A5: 0 OATADIITIONARY,PARTE 3
~~,.;._~f"~"
_1" 1>:1
No telo A.B.AP/4
,. 195
Alem de ssas categories, p ode haver classes de dados USER tambem. Estas
sao criadas par seu DBA, que 0 dirigira na esc olha delas nas hora s apropriadas.
.....,. ~--"':.;.,.:..~~~
~o
e muito
que a tab ela nao e atualizada com freqeencia e cresce lentamente. Ela
sera colocada em urn tablespace com tab elas semelhanres. 0 mestre
do fabricante e as tabelas-mes tres do cliente sao bans exem plo s de ,
dados -mestres.
urn
dodos de personalizacso. Escolher APPL2 (clados de personalizacao), significa que 05 conteudos cia tabela sao determinados
am es da implementacio e njio alteram com frequencia depcis disso .
As tabelas de verificacao e suas tabe1as de texto associadas, como
ztxt005 e ztxt OOSt , sao bons exemplos de tabelas que devem ter uma
APPL2 OU
smENCAM.... lnicie
"
a gora.
.*.
wwww ww _ ~-- -
~ ~
DIA 5:DDATADICTIONARY, PARTE3
3. Digite
batao OK.
e exibida. 0
lliiJi za ~ii Q
de buffer em um a tg be lo
no
CD
Progromo em
do oplicotivo.
sendo
exeectcdc em
um procl!SSO
de trcbclbc
(2)
0 prccessc de trobolho
verik o 0 buffer perc ver
se es dodos eslo o ui. Se
nco esuverem.
desempen ho de duas
de dodos e
preenche
buffer.
Sincronizac;cio do b uffer
NOVO ~
Se voce fiver dais servidores de cplicctivo, 0 mesmo reqistro pode ser cclccod c
TtR1!O ~
no bufferem code servidor. lsso n60 serlo um problema para ele, noo fosse 0
foto de que os dodos podem ser otuolizados. Se um registro colocodo no buffer for
otuolizodo, as clterccoes devem ser comunicodas 00 outro servldor de cpllcctlvc. Isso e
feito em um processo conhecido como sincron;zo~oo de buffer, que ocorre em intervo los
de 1 a 4 minutes, dependendo do configuro~60 do seu sistema.
197
~ . Y W W W W W W W W
198
W . W W W . W . W
--
_:w:
__
__
mEHO' EM 21 DIAS"AP"
Por exemplo, como mo strado na Figu ra 5.6, supo nha que 0 usud rio 1
esteja conectado ao servidor de aplicat ivo 1 e 0 usuaric 2 esteja conectado ao
servidor de aplicarivo 2. 0 usuario lIe 0 registro 1. 0 registro 1 e colocado no
buffer do servidor de aplicativo 1.
N a Figura 5.7, 0 ususrio 2 Ie 0 registro 1. 0 mesmo registro esta agora
n os buffers dos dois servidores de aplicativo.
.
Na Figu ra 5.8,0 usudrio 1 atualiza 0 regiscro 1. A atu aliza cao e refletida
n o banco de clades e no s buffers do servidor 1, mas 0 regist ro an tigo aind a esd
no serv ido r 2. Uma entrada e feita no log de siruronizaoio n o servid or do banco
de dados indicando que 0 registro 1 foi atualizado.
"F i g u r a 5 6
Posso A 0 usu6rio
J Ie 0 registro J,
--
l egendo:
AS: Servidcrde oplicotivo
DB5 : 5ervidorde banco.de dodos
SP: Processo de sincronimco c
-'
L!o====...J I
199
I
!
11
j
fig u r g 5 8
Posso C: 0 usucria J
oluolizo 0 regislro de
J, fozendo com que
ele seio otuolizodo no
banco de dodos e no
buffer do seNidor do
oplicotivo 1.
SYNC lOG
. ..
I
SYNC lOG
REC 1
Fi g u r a 5 9
Possa D:
usuorio2
Ie 0 registro I e obtem
os dodos possodos.
.E.igw:.a,,--,5o..L7~_
Posso B: 0 usuorio 2
lombem /e 0 registro
J, fozendo com que
e/e seio co/acado no
buHer no servidorde
oplicotivo 2.
SYNC lOG
l..==LJ
REC 1
II
200
I
,f
!
I
Inicie a transacao RZ10 (digite /nrzlO no campo Command e pressione a recla Enter). A tela Edit Profiles e exib ida.
Ei g ma 5 10
Passa E: 0 processo
de sincronizo~do do
buHer involido 0
registro J no buHer
do servidor de
2.
oplicoijvo
Fig mQ 5 11
Posso F: 0 usv6rio 2
tenlo reler 0 regi slro J
rue s tile esrc morcodo
como inv6Jido no
buHer. 0
registro
Posso A a usu6rio
2 Ie 0 regislro 1,
fozend o com q ue eJe
sejo colaco do no
entoo e atuolizodo do
banco de dodos.
DBS
Fl
F2
[ATI]
201
202
203
MOYO.....
registro 1, bloqueia-o e 0
le (veja
a Figura 5.13).
.
usudrio 1 altera Fl, escreve -o ao banco de dados (veja a Figura 5.14) e
destrava-o.
Nesse ponto. 0 buffer no servidor de aplicativc 2 ainda tern a copia original
do regisrro 1 com 0 conteudc original de Fl. Se 0 usuario 2 bloqueia 0 registro 1
eo le (do buffer), altera F2 (veja a Figura 5.15) e entao salva-o no banco de dados,
as alreracoes feitas pelo usuario 1 serao perclidas [veja a Figura 5.16).
E.ig..urq 5 13
UiMO"
informccees mais atua lizodos, par exem plo, select * fram zt xt lfa l by0 buffer seic ignora do e 05 dodos
sejcrn lidos diretomente do banco de dodos. Voce deve utilizer issc se mpre que estlver
Jendo para aNalizar, lsto e, lendo urn registro que ser6 otuchr odo e gravo do de volta no
bc nco de dados.
Figura 5
15
Posse D: a usuario 2
Ie 0 registroantigo I e
o bloqueio.
Usu6rio 2
Posse B: 0 usu6rio
1 bloqueio e Ie 0
registro urn, fozendo
com que ele sejc
co/ocodo no buffer
no servidordo .
op!icolivo J.
AS2
Fl
F2
DBS
F1
F2
w::u
F igura 5 16
DBS
Fl
F2
IA IB
Posso E: a usu6rio 2
salvo 0 registro J no
banco de dodos,
grovondo par cimo do
o ltero~aa do us u6rio.
F igu ra 5 14
Posse C
usu6rio 1
registro de
J, fozendo com que
ele seio oluolizodono
banco de dodos e no
br.Jffer do servidordo
oplicotivo J. 0
bloqueio e removido.
otuorizo
ler
Por exemplo, no passo D, se 0 usuario 2 utili zou bypass tnq buffer para
registro, a versso mais atualizada do regist ro te ria sido Iida e as alteracoes
204
m EN DA EM 71 DIAS AWl'
o bypa ss do
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
. aplicarivo.
U tilize buffer na tabela e use bypassing buffer.
Buffering Not Allowed em umo tobelo SAPslqniflcc que voce nee deve
onvcr 0 cclcccccc desso tc belo no buffer. Se fleer isso, voce pode
cou sa r umo operc ce c fcltvel dos oplicofivos do R/3 e tolvez perdo ou
corrvp o de dodos.
Tecn icos de
uti liza~ii o
de buffer
A met ade inferio r da tela Techni~a1Se ttin gs {mosrrada anreriormente na Fig ura
5.4) conrem as controles para configuracoes de buffer. Ao criar urna tabela,
voce tern controle complet e sabre essas configuracoes. Para alterar essas
configuracoes em urna tab ela de SAP. voce precisa obrer urna reels de modificac;io da SAP .
Voce pode configu rar a utilizalj:io de buffer para uma tabela quando voce
a eria, au voce pode mo difid-Ia mais tarde. Alterar as configura!joes de buffer
nas ta belas de SAP exige uma tec1a de modificac;ao, que voce pode obter da
SAP.
Tipos de
Comp leta
Generics
De regis tro unico
Embora voce utilize uma caixa de selecao para indicar 0 tipo de utiliza~ao
de buffer) somente urn tipo pode ser selecio nado por vez. Se voce escolher m ais
de urn, uma mensagem de erro sera exibida.
Ha dois buffers de dados em cada servidor de aplicativc e a ripe de
utiliza~3o de buffer escolbido det ermine qual buffer sera utilizado. Em urn
servidcr de aplicarivc hi:
0 buffer de registro generico
205
-=------206
Ut il iza~ao
de buffer completa
Para ativar 0 tipo de utilizaci o de buffer completa, fac;a uma marca de verificac;oio na caixa de se1e~ao Full. Quando ~ feita uma tentativa de ler os dad os de
uma tabela com utilizacio completa de buffer, 0 sistema exam ina 0 buffer TABL
para ela. Se ele nao for encontrado af, todasaslinhas serao carregadas do banco
de dad os em TABL [veja a. Figura 5.17). Isso acontece sempre que uma inserucao
se lect e executada, independentemente de quanto s re gist rcs correspondam a
cldusula wh ere. Mesma se nenhum regi str o co rresponder, todo s sao carr egados
no buffer se a tabela Olinda DaD estiver al ou se ela estiver invalidada devido a
sincronizacao de'buffer.
E gura
Todescs linhes de
TBI
REel
TABLP
TABL
5 17
REC2
REC3
REC4
TABl
I~
Select ' from I'D1 where...
TB I
Technical Setting5:
.-
"
/'
Full Buffering
-,
./
Utiliza~ao
ge nerica de buffer
TABl
C I 1
C
2
C
3
TABlP
rec4
..05
re , 6
TB I
RECl
REC2
REC3
REOI
f'--TBI F1
~i
A
B
C
C
C
D
D
/
F2
1
2
I
1
2
3
1
reel
ree2
re,3
ree4
fecS
rece
ree7
recS
TB 1 Technica l
SeMing5:
---
207
:1
,..1
.,i:
:I" '
__ ...
' W ' ~ _ ~
208
__
TABL
5 19
TABLP
Com c ulilizo o de
buffer de regislro
I I1I
unicooti'lodo,
",3
selec.ione regish'os de
corregomenlounico
de ume vez porc 0
bufferTABLP.
r-;
TBl F1
A
A
~
F2
1
reel
ree2
,3
reca
./
TS1 Technicol
Settings:
Single record
Buffering
Par exem plo, se a tabela zt xl f al tiver urn tipo de utiliza qao de buffer de
registros anicos, selec t s ingle * from ztxl f al where l ifnr '" 'VI ' faz com
que 0 bu ffe r TABLP seja p esquisado pelo registro VI. Se ele e encontrado ai, essa
c6pia e utilizada. Caso comrfrio, e carregada em TABLP a partir do ban co de
dados.
. '
Mesmo se urn regiscro 1740 for loca lizado, ainda assim urna ent rada efeita
no buffer de regisrro unico. A entrada indica que 0 registro ndo exisce no banco
de dados . D a pr6xima vez que esse regist ro for solicitado, a bu ffer p ode sec
utiliza do p ara resolv er a solicitacao e urn acesso a banco de dados nao sera
necessa rio .
Por exemp lo, suponha que 0 fabrican te Xl nac exista no banco de dados.
Execut ar sel ect s i ngl e * from ztxl fal where lifnr : : ' Xl' facia com uma
entrada fosse criada no buffer de registro unico para indicar que 0 registro Xl
nao existe no banc o de dad os. Da pr6xima vez que 0 fabr icance Xl for solicitado,
o sistema exam ina 0 buffer.e desccb re que nao exisre e nao pr ecisa ir ao banco
de dados.
209
w __ .. __
210 , .lPRl:ND.l EM
21 DIAS ABAPj4
DIAl, DlllTADlmDNARY,PARlIJ
Durante a leirura, se lect somente Ie TABl ; ela ignora TABlP. A inst ruci o
select s ingle Ie os doi s buffers. Es se comporramento e resumido na Figur a
5.20. Lembre-se de que urn regist ro somen te pode estar em urn buffer de um a
vez po eque um a tab ela ape nas pede t ee urn tipo de urilizac ao de buffer.
FlgurQ 5 2 0
Bufferde
reg istro:
Como 05 instroC;6es
seledonodos
interogem com as
buHers.
Buffer de
registro
unico
generico
Select Single
Select
SOMENTE
CARREGA
E LE
lE
CARREGA
E lE
NAO lENEM
CARREGA
Subsfituicco do buffer
Se lASlP esdver compleca e urn novo regisrro precisar sec car re gada, os antigos
serao jogados fora para dar eepacc aos novos. Os mais antigos sao aqu eles que
ha mais t empo estao esperado se r acessado s.
Em l ABl, os registros antigos nao sao desc art adcs qu ando os nffVos sao
carregado s. Em vez disso, tabel as in teiras sao periodic amente descarregadas do
bu ffe r. 0 com primen to de te mpo ent re descarreg ar e quais tab elas 'sao descarre gadas e det erminado par urn algori t mo de cache den tr c d o R/3. Esse algoritmo com plexo e baseado na quantid ade de espas:o utilizado por uma tabela
no buffer versus 0 numero de acessos de leirora oele no pedodo anterior e
t ambem Daquantidade de espa~o livr e disponlvel no buffer e na qualidade atu al
de aces so do buffer.
Dec idindo se
buffer
de buffer e indices
Os regis tros em urn bu ffe r te rn seu proprio Indice primario criado na RAM .
Quando os registros sao necessaries , 0 Iodice eut ilizado para posiciona-lcs no
buffer da m esma maneira que 0 Indice primario no banco de dados e utilizado
para posicionar regisrros em uma rabela. Entrerant o, in dices secunddrios ndo
sao criados no buffer, tampoucc indices secundarios de ban co de dados sao
utilizados para acesso a dados colocados no buffer. Portanto, quando codificar
uma instrucao s el ect. . . where em uma tabela colocada no buffe r, utilize
campos de ch ave pri mari a na cldusula where comecandc com 0 primeiro campo
de chave primaria e utilizando 0 maximo de seqnsacias de chave primaria que
voce puder. Se 0 pr imei ro campo da chave primaria eseiver ausente na clausula
where (nao ccntando mandt), uma varre dura complete da tabela no buffer sera
execu tada . P o r "exemplo, se a rabe la zt xlfal foi colocada completam en te no
buffer, sel ect * from ztxlfal onde lifnr = ' Vl ' sera supo rt ada pelo Indice
pr imdrio do buffer. Select * from ztxlfal where la ndl '" ' CA' causara uma
varredura complera da tabela no buffer.
Ser in cap az de utilizar in dices se cundarios resulta em um a p ecul iar situa~ao sem safda, se voce utilizar buffer de modo complete em tabelas grandes
que tem indices secundarios. C olo car um a tabela no buffer dessa maneira fad
com que selects no Indice primario acelere, mas possivelrnen re tcrnara selects leDta em in dices secu nda rios . U rna instru~ao selec t em uma tab ela
grande (categoria de tamanho 1 ou maior) que e completamente sup ort ada por
urn indice secundario no ban co de dados pode ser execu tada mais lent arnent e
COntra 0 buffer po'rque urn ind ice secundario nao esta disponivel at. 0 quanto
mais lento (se for mais len to) dependera da quantidade de dados na tab ela. Para
compensar es'se problema, evite 0 buffer e utilize os indices secundarios,
adicionando bypassing buffer para a instrU~ao select onde urn indice
secu ndario deve ser utilizad o.
Por exemplo. a tabela TSTC contem mais de 12.000 linhas, e da categoria
de tamanho 1, e completame nte colo cada no buffer e t ern urn fndic e sec undirio
em seu campo pgmna. As medidas mostram que se1ect * from tstc bypass i ng
buffer where pgmna = I ZTXTEST I executou 18 vezes mais rapido em media que
se1ect * f rom tstc where pgmn a " ZTXTESl I mesmo sea tabe/a. fOT comple-
211
I',
!
...
~~
212
-~
~-
--
OlAs,oOITADlcrJOHARY, PARTE 3
tamente colocada no buffer. A primeira sel ect foi resolvida n o banco de dados
utilizando urn indice secundario no campo pgmnaj a segu nda executou uma
varredura complera de tabela no buffer.
~o
a tabelas colocadas no
Resu m o
Urn Indice euma c6pia de colunas especfficas de um a tabela cIassificada
em ordem crescente.
Vo ce pode criar in dices secu ndarios em uma tabela. C rie urn quando
voce nao puder utilizar as campos de urn Indice exisren te em sua
clausula where.
A transacao 5T05 pode ser u tilizad a para m ost rar qual Indice, se algum,
foi utilizado por uma dada insrrucio sel ect.
213
I'
i
~
IFa~a
----J_
no fndice.
...-...:-.I_..._......
DIH DDATArncrIDl<ARY, PARTE 3
Teste
1. Po sso especificar em algum lugar 0 Indice exaro se quera utilizar uma
instrucao select?
2. Posso criar indices secundarics em tabelas de SAP au ccloc a-Ios no
buffer ?
3. Posse diz er que meu programa e executado mais rapido com tabelas
colocadas no buffer do que fora dele?
Exe rd cio 1
Q ual e a classe de dados para as tabelas MARA, LFAI e KNA I? Qual
categoria de tamanho para MARA , LFA I e KNA1?
P&R
N so posso exibir algumas telas mencionadas neste livro . Obtenho a m ensagem de erro You" are not authorized to use
t ra nsacti on XXXX. C omo posso vcr essas telas?
o
o
05 bu ffers de dados sao apenas dois dos mu itos buffers mantidos no servidor de aplicativo. Os narnetabs (objet os de tempo
de execu ctc de ta bela) sao todos colocados no buffer, assim
como tod os as pro gra m as, men us e (tam bern conhecido como
status e UA au Gill), barras d e ferramentas, relas e calen dsrios.
.
Todos esses buffers sao re lacionados aqui.
Wo rksh op
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A seljao Teste oferece perguntas para ajudar a solidificar seu entendimento do conrecdo ebordedo e a seljao Exerdcio permite que voce pratique a
que aprende u. Voce pode encontrar as respostas as perguctas do quesriomrio
e aos exercfcios no Apen dice B, "Respos tas as perguntas e aos exercfcios".
ea
~ -y
215
6
o Data Didionary, Parte 4
Objetivos do-capitulo
Depois de completer este capitulo, voce devers ser capaz de:
iD"
M
O
IH.
Perc exibir 0 co nfiguroQio rec/cl t ent em seu slstemc, si90 0 prccedimento utilizodo pora exlblr rdi sp/bufreftime no se~co lntitulcdo
'nttp;II_.compVJ.CQm.br
...... I
-114.............- .- .. I
218
Pore coda jnse~o o, otua l izo~o o ou exd usOo de umo tcbelc ctivcdc pora
Coda
U tilizand o 0 c6digo de tran sacao SCU3 ou OY1S (veja a Figura 6.1), voce
pode exibir as documen tos alrerados e cornpara-los com as valo res atu ais na
rabela. Nso hi nenhuma difere n~a ent re esses dais codigos de transa?o; ambos
execu tam 0 mesmo program a.
com hist6rico
de tohelo
otivodo.
;.
_~
219
Para exibira lists de tabelas pela qual 0 hist6rico autom dricc emantido,
escolha 0 batao de op~o Tables With H istory Mana gement e pressione 0 bono List . Essa lista most ra todas as tabel as que tSm uma
marca de seleljao na caixa de selecao Log Data Changes.
P ara campa rar valc res de campo em documentos alteradcs com valores atuais de campo em uma tab ela, escolha 0 batao de 0pljio History
<-> Curre nt e pressione 0 bo uo Compare. A tela Table H istory e
exibida. Insira. 0 criteria de pesquisa para. os documentos alterados e
pressione 0 bone Compare. A tela Table History - Comparison
Wi th Current State eexibida. A chave primdria de cada registro apar ece
a esqu er~ e as diferec cas aparece m adir eita (veja a Figura 6.4).
documentos
eltercdos de Iobelas
elJ1omatico
.!!ix!
.........
.,..
F igu ra 6 1
A tronSCI~60 Tehle
History eJCibe
]I
uma seljao Notes e depois a analise . Para cada tabe la, os campos dela
sao exibidos prim eiro (veja a Figura 6.2) e os documen tcs alterados
para ela se seguem (veja a Fi gura 6.3).
...... ..
D~""DATlDlrnoNARY, PAR1H
TUllO'"
Fi g u r a 6
Os compos do
Iobe/o HPRJ OO7
opo recem antesdos
documentos
o/terodos.
mostrondo os names
ae compo, 0
ind'rcodor de chove
prim6rio, 0 tipo de
dodo, a
comprimento, 0
nome de coluno e 0
des cri~60.
,"
I:
!,
iI
Ii
ww.ww.w .
220 , AP REM DAEM21
~~
_
DU DDATADICTlOIWY. PArTH
D'AS AUPI4
F igura 63
Os documenfos
ollerodes do 1o~lo
HPR100loporecem
depors do listo de
compos. A chcve
prim6rio de coda
registro oporece
(em
hJrqueso) seguido
pe/osdodos (em
bronco),
pri me;ro
221
m' c;6es sobre Change Document Objects, veja a R/3 Library (caminho de
men u Help->Rl3 Library, Basis Components, ABAP/4 D evelopment Workbench, Extended Applicatipns Function Library, Change D ocum en ts.}
~o
F igura 6 4
)qui. cs dodos em
dbt abpr t sOo
comporodos cos
conteudos otuois de
au se
restante da Iinha for meier que 500 bytes, voce n6c pede utilizar
htstoricc cutcmotlcc de tobelc . Voce receber6 um erro quan do tenter
ctlvcr a tobe lo e cherccces n60 senSo registrodos. A rozeo dessa s
restrir;5es est6 no tabelo dbtabprt . 0 compo vkey ccotem a teclc do
registro que foi olterodo e tem 86 bytes de comprimento. 0 campo
vdata contem 0 reslonte do reg istro e tem 500 bytes de com primento .
'.
w w W'
222 , AfUNDA
ww w w w
W W T'Ir T T
EM 21 DIAS ABAP/4
W'
3. Para ver urn resume das alceracoes, pressione a ba tao D elta display
na barra de ferramentas Application. A lista e atualizada para conter
apenas as diferencas entre as duas vers6es.
Figurg 6
revisodo e exibido.
voc~ ~ 0
versec
Podem existirduos versoes de uma tabela (au qua lquer objeto OD!C): a verscc
revisoda e 0 versec alivo. Se voce altere umo tcbelc e pressiona a bctec Save
sem pressloncrAcfivcte, criou uma verseo revisodo dotobelo que ccntem suas clterocces.
A versdc otlvc ainda existe; a ultima verseo que foi ativada. Progromas em ABAP/4
utllfzc m openos versees otivas. A presence de vers6es revisodos nee as ofeto.
YERMO"
A versao revisada existe para permitir que voce prepare urna alteracao
antes de e1a ser necessaria e eneac a ativa quando for necessaria. Tambem
permite que voce altere muitos objetos e enesc as ativa todos simultaneamente.
Quando voce os ativa, as vers6es atualmente ativas sao descartadas e suas
versees revisadas toma-se ativas e as substituem.
A versao revisada e exibida, se e1a existir, quando voce exibe uma tabela
(0 campo Status conterf Rev;sed). A barra de ferram entas Application tera urn
botao Active Version (veja a Figura 6.5) . Se voce 0 pressiona, a versao ativa
sera exibida e a botao na barra de ferramentas mudara para a versio revisada,
permitindo que voce pressione 0 botao novamente e retome para a exibicso
anterior.
SmEHtlM~ lnicie a ScreenCam "How to Compare Revisedand Active Versions" agora.
Pa~a comparar as vers6es ativas e revisada.s:
Vers6es adicionais
Independenternente das vers6es revisadas e ativas, voce tamb em pode criar
versoes temporaries de uma tabela. Para fazer isso, escolha 0 caminho de menu
Table->Generate version. A mensagem Temporary verst on of act ; ve object
stored. aparece na. parte inferior da janela, Essa versso temporiria e mantida
ate que a tabela seja transportada para a prcducao. Para visualizar a nova versao,
escclha 0 caminho de menu Ueilities->Version Management . A versac com 0
na m ero mais alto e a primeira que voce criou.
Para descartar uma versao revisada sem ativa-la, voce deve primeiro gerar um a
versac tempordria da versao ativa e entio restaura-Ia, como mostrado no
seguinte procedimento.
SCifENOM~ lnicie a ScreenCam "How to Discord a Revised Version" a gora.
W'
223
"1J
~I
224
WWWWWW_
-- -
Usond o
IOU .
lERMO ,.
dodos.
I
I
I
i
Para acessar
S(mNW ~ lnlcle a
uma marca de selelji o ao lado d.a palavra mod .. As duas linhas act . e
mod . agora esta.rio com uma marca de sele~ao.
9. Pressione a ba tao Comp are na barn de ferramentas Application . A
tela C omparison For Tables e exibida.
10. Pressione 0 batao D elta D isplay na barn de ferramentas Application.
A Iista deve ce nter uma linha que exibe 0 text o Genera1 attri butes :
Unchang ed e ourra Iinha que exibe 0 textc Fi el ds : Uncha nged. Voce
agora confirmou que as vers6es revisada e ativa coincidem.
11. Pressione 0 borac Back n.a barra de ferramentas Standard. Voce e
levado de volta a. tela Versions of Object:
12. Pressione 0 batao Back na barn de [erramentas Stand ard. Voce e
levado de volta atela Dictionary: Table/ Structu re: Change Fields.
13. Pressione 0 bou o Activate na barn de ferramentas Application. 0
campo Status con tem Act. e a mensagemxxxxx wa s acti vat ed aparece
na parte inferior da janela.
utjlitCirio de banco de d o d os
Utilizondo 0 tela
A8AP/4 Dictionary:
Utility for Database
Tobles,
voce pOOe se
comun;cor
diretomerrtecom
o banco de cJodos
pe ra exihir au alteror
umolobe/a.
225
.. -226
DIA6:0DATADICTlONARY,PARTE 4 I
NOYO....
iEUlO"
Figura 6 7
Umo veriDcoode
coer!ncio com 0
banco de dodos
confirmo que 0
dennio DOIC R/3
do tobelo ztxl f al
e 0 definit;60 do
formul6rio campi/odo que e utilizodo em tempo de execucec , cho modo obieto de tempo
de execur;60 . 0 cbietc de tempo de execUl;60 e criado qua ndo voce ct ivc a tobelc e
tombem e conhecido como nornetob.
Ve ri fi co (;6e s de coerencio
A definicao de uma tabela trans parente existe em dois lugares: no diciomrio
de dados de R/3 e no banco de dados. Para verificar a coerencia entre os dcis ,
a partir de dent ro do utilitario de banco de dados escolha 0 caminho de menu
Extras-> Da tabase Object->Check. A versac ativa da tabela ecomparada com
a tabela de banco de dados. A tela Table xxxxx: Check Database Object ,era
exibida, e uma mensagem na parte superior da lista indicant se 0 objero de banco
de dados e coerente (veja a Figura 6.7) .
Umo tabela
Quando urna verifica(f3.o de coerencia e executada, 0 nametab e com parade com 0 banco de dados .
Voce pode exibir 0 nametab do utilitario de baccc de dados escolhendc
o caminho de menu Extras-> Runtime object-> Displa y. A tela O bject xxxxx:
Display Active Runtime Object eexibida (veja a Figura 6.8) . Na parte superior
esta 0 selo de tempo do camerab seguido pelas informacoes de cabecalho. Ele
con tem 0 tipo de tabela (T para transparence], a forma da tabda no banco de
dados [n ovam en te, T para rransparente), 0 ndmero de campos na tabela, 0
comprimento em bytes do regisrro, 0 namero de campos chave, 0 comprimenta dos campos chave em bytes , as informacoes de bufferizaclc etc. (Para
informacoes detalhadas sabre os campos de cabecalho e seus valores, exiha a
estrutura X030L.) Embaixo do cabecalbc esd. uma lista dos campos, sua posilj3.o
na tabela, 0 tipo de dado , 0 comprimento, a namerc de casas decimais, 0
deslocamento desde 0 infcio do registro, 0 comprimento exeem c cia tabela de
refereacia, a tabela de verificaljao etc. Os atributos recnicos cia rabela sao
completamente descritos pelo nametab.
FlliJurQ 6 8
O nometob ~ 0
objeto de tempo de
e:cecuo pora umo
comonamesde
compo. Hpos de
dodose
compri~ntos.
227
-~
228
w._--- -
Para localizar todos a s progr arnas que utiliz arn uma da da ta bela:
DIHOIlAU DIGIOORY,PARTH
Extras- >Runtime O bject->Check. 0 objeto de tempo de execucgo e camparado aos objetcs [onte de DDIC. A tela Object xxxxx: Check Active .
Runtime Obje ct sera exibidaeuma mensagem na parte superior da Iisraindicard
se 0 objeto de banco de dados e co erenre. A s Figuras 6.9 e 6.10 mostram urn
exemplo de uma incoe rencia no narnetab para a tabela zt xl fal.
Se urn dominic for alcerado e a reativacf o cia tah ela falhar, uma incoerencia
pode exisrir entre 0 nametab e 0 dominic.
.
linh..
Verifica ndo a coerenci o do nametab
o nam et ab obrem suas caract erfsticas dos elemen tos de dados e dominios que
compoem a tabela. :E po ssrvel que a defini~o do n ametab esteja fora de
sincronizacio com os elementos de dados e dominios. Por exemplo, quand o
voce ariva uma altera~ao em urn dominic, as rabelas que 0 contem tambem
devem ser reativadas para receber essas altera~oe s . Embora isso acont eca
autom aricamente,'em certas situa~6es uma reativa~ao pe de falh ar po r causa de
urna restri~ao do banco de dados au porque a tab ela conrem dados e deve ser
cc nverti da. Essa situa!jao p ede ser detectada executando uma verificat;ao de
co erencia no ob jeto de tempo de execucgo.
Para veriflcar coerencia en tre a narnetab e as objetos D ata Dictionary, a
partir de dentro do utilitario de banco de dados escolha 0 caminho de menu
echar
tipo de dado de
10 no nametab e i nt 4 no domfuio.
Fig u r a 6 9
Nestatela, umo
de
indica
umomensogem de
lIerifiCIJlj6 0
coe~ncio
~rro ~m que 0
compritrn!!nto d~
r~gjstro,
comprim~nto
do
<hove. 0
olinhomenlo do
tobelo s6 0
inroerentes.
229
230
"""1"0-
Figura 6 1 0
FiGura 6 12
Rolor porabaixo no
llsto mostraos
campos do nomelob
eo raz60 do
Este li 0 restonte do
log de affva~60
mostrodo na
Figufa 6.1J.
ineoerendo .
II
I
!
Exibindo
log de otiva!foo
o Jog de oHvoo
exibe
0 seq ~n cio
de possos reolizodos .
durante 0 otivo ~ao e
reer/odo .
231
TII
232 ,p",o, EM21
F jgura 6
......-.-~
.............. -w w'W
...........
~ ---.-..
233
OI'S Ai'P /4
caixa de di:ilogo sen exibida para confi rmar sua solieita~o. A nbela e seu
'3
Pcrdm~tros
espedhco s de banco
de dodos sOO
mostrodos no tela
DB Utility:
Transparent Tobles
o borac Create D at abase T able. A tabela sera recriada para util izar sua versa c
ativa. Vo ce pede utilizar 0 utilitdrio de banco de dados para fazer isso em vez
de escrever urn programa em ABAP/4 para excluir todas as linhas.
- Database
Porameters. Essa
h!1c mostrc que cs
poro metros de
orm ozenomenlo
pore
tobe/o
. ztx lfal
{oram
oherodos depois do
OMo, porq ue as
nee coincidem.
Resum o
As alteracoes para dados crfticos podem ser aut cmaticamente registradas em do cumencos alteradcs. Para dad os nao vitais, obje ros de
documentc alreradc devem ser urilizados no Iugar.
dados.
0 u tili tario de banco de clados tambem permire que voce visualize
P&R
o
o
bo tao
234
Workshop
Workshop ofer ece dua s maneiras de voce verificar 0 que aprendeu neste
capfrulo . A se~o T este oferece perguntas para ajudar a solidificar seu entendimenta do conte udo abordado e a se~ao Exercfcio permite que voce pratique 0
que aprendeu. Voce pode encontrar as respostas as perguntas do teste e ao
exercfcios no Apsndice B, "Respostas as perguntas e aos exercfcios" .
Teste
1.
E possfvel
Exerdcios 1
1. Qual e a maneira mais rapida de excluir as dado s de uma tabel a?
1.1a 7
Definindo dados no ABAP/ 4,
Parte 1
Q bjetjvos docapftulo
Depois de completer este capitulo, voce devers sec capaz de
Explic ar a area de rolagem do programa e seu conteudo.
Entender as elementos de sintaxe do ABAP/ 4.
Descrever
as constantes.
http://www.ccrrpus.com.br
r I I I I I I I -IT I T I I I I I I
236
I III
I .- I ........ ..-
w w w
D~]'oEFIHIHDOOAOOSHOABAP I4,PAR1I1
ro lagem
NOYO....
237
ENTRADA.... Listagem 7.2 Este c6d igo e 0 mesmo do Ustogern 7.1, ele apenos foi
,. forrnatodo de maneiro diferente
1 sef ect " from zt xl fa l
2 where 1i f nr > I OO~OOO IO SO'
3 order by lifnr.
4 wri t e : \ ztxlfal-l 1fnr,
5
ztx lfal-namel,
6
ztxlfal -1andl. endsel ect.
NOVO....
YERMO"-
Os
de dodos IS ccess'vel.
~I
238
globais no progruna 2.
f lou r a 7 1
A visibi/idodede um
ob;eto de dodos
indi ca
SIlO
ocessibilidode. ~
lor loco/mente
vislve!, ele e
ocessivel openos de
dentroumo
for
wsNd.
svb-retina. Se
globalmen~
Ar eo de mem6ria extem o
~: Dodos extemas
~",,:"i@ . Obietos
emmomltnte vislve/,
e ocesslvel de foto
do progrcmo. par"
DUtro
Progroma 1
Progromo 2
r~ ; Dodos global
~~ Obiete!
~:M' .
239
Sub-retina lA
m~
O bjelos
Sub-retina 2A
Dodos laea is
~iMl'~_, Ob jetos
~. Dodos locois
!#ci#~
Ob ietos
progromo.
Sub-reline 1B
~. Dodos lcccrs
$~~
O bjetos
Os obje ros de dados ext emos pod em ser acessados de qualquer instru~o
no pro grama 1 ou 2. Na realidade. se eles podem ou nao ser acessados dependeri
do tip o de area externa de me m6ria util izado e do relacionarne nto ent re os dois
programas . O s deulhes disso sao descr itos nas se~6es sob re a rnem6ria
~o
... ,
240
D1AloDEllNINDOlWlOSNOABAl'/VAlTE 1
ocorrera 0 erro de sintaxe Stateme nt x is not def ined. Please check your
spell i ng.. A Tabela 7.1 mostra as maneiras erradas e certas de codificar literals.
Por exemplo , 256 ~ urn literal numerico, assim como 0 e-99, '10 .5' eurn
literal numericc que contem urn ponto decimal; portanto, ele e incluido entre
aspas simp les. Urn literal pe de ser utilizado como 0 valor padrao para uma
Erra da
Explica sa o
-99
99-
, ~ 12 '
variwel ou pede ser utilizado para fornecer urn valor em uma instru~ao .
Exemplos de literaisinvalidos sao: 99- (sinal de subt raci c adireita), "Confi rm
(incluido entre aspas duplas} e 2.2 (contem urn decimal mas nao esta incluldo
entre aspas).
lZ.3
' Hi I
' Can' It'
HP
' Can' t
' Hi'
'Hi
A ospo
71
17E1 '
'] e1'
Literais hexadecimais
' OAOO'
' OaOO'
' OAOO'
'AOO'
' OAOO'
X'OAOO'
letras maiNsculas.
~o
Definindo yoricyeis
Duas instrucoes sao comumente utilizadas pa ra definir variiveis em urn pro. grama do ABAP/4 :
data
vc lc res hexcde cimc ts soo roromente utilizodos noA BAP/ 4, porque eles
soo normolmente depende nte de moquinc . 0 usa de urn valor hexodecimal que eria dependenclo de mcq vinc de ve ser e....ita do.
til
A Tab ela 7.1 desc reve maneiras erradas e cert as de codificar de literais
hexadecimais e numericos.
parameters
...
m
au
241
242
e0 nome da verievel.
v2 e0 nome de uma variavel previamente definida no programa ou e0
If 1
(l )
de 0
I
xxx I
ripe p).
A List agem 7.3 mos tra exemplcs de variaveis definidas com a instrucac
data.
instru~ao data
data flel) ty pe c.
data f2 like fl .
data ~ax_nl u e ty pe t ve'lue 100.
data cur_dat e t ype d val ue ' 19980211' .
sublinhado
U.
Quando utilizar a adi~ao 1i ke, a varia-vel que for definida obtem seu
eornprimento e ripe de dado da variavel referenciada. Voce nao pede
"especificf-los na mesma ins tru c;ao com 1ike .
e 0. excero pa ra tipo
branco.
onde :
Quando u"tilizar a adiCjao 1; ke, a valor nso e obtido da variavel referenciada, Voce pede espe cificar a adic;io value para dar a variavel urn
valor padrio. Se voce nao fizer isso , e atri buido urn valor inicial padrao
de 0 [o u em braneo para urn tipo de dad o Characte r ).
ENTRADA'" Listagem 7.4 Exe mplo de umo vori6vel que e inco rretomente acessoda
1 report zt I0704.
2 data fl(2) vej ce ' Hi ' .
3 write: fl, f l .
4 data f2(5 ) val ue ' t here' .
ANAUSE Iirltr... A vc rieve l F2 e definido no linho 4 e 0 jnstru~oo wrl t e no lmho 3 esto tentcndc
~ cce ssc-lc. Isso ge rero um erro de sintoxe. A instru~oo dat a no Hnhc quotro
devero ser movido ontes do linho 3.
0 co mprimento pad rjo depende do tipo de dad o. (C omprim entospa drao sao Iistados na Ta bela 7.2.)
243
244 I APRENDA EN 21
DIAl IBAP/'
Interne
corocte re
Descrifjoo
Comprlmento
inte rno
padrao
Comprimento
Valores
int erno
mclximo
validos
Valo r
inicial
padrao
65535
Q uo lquer
Em bronco
coree .
n
texto
65535
0-9
0-9
0-9
00000000
000000
rwmerlcc
dote
horo
8 (I;xo)
6 (I;xo)
hexodecimal
65535
O oclqoer
A coluna Valor iaicial padrfo indica 0 valor dado avariavel por padrao se
voce n ao especific ar urn valor ut ilizan d o a adi~ao va1ue.
numericos
rlpo de
dodo
Descrh;:&o
Va loNs
'Icliidos
inteiro
4 (fixo)
_231 a +2 31
decimal
0
16
empccctedc
ponte f1 ul1Jonle
. 8
Yalor
Inldal
padrao
"
09.
15
. 1E"'307 a lE308
0.0
Todas as varisveis na Tabela 7.3 esrjc com sin al. Nas variaveis de ponto
flutuante, 0 expoente tambem esu com sinal.
Utilize inteiros para variaveis que serjc envolvidas em ctlculos simples
ou quando nenhum ponto decimal for exigido. Variaveis como contadores,
indices, posicoes au deslocarnentos sao bans exemplos.
Urna varifvel decimal armazena (l *2) - 1 dfgiros, onde l e o ccmprimento
da varifvel em bytes. Valo res decimais sao armazenadc s em do is dfgitos por
byte. excero 0 byte final, que Cantero urn unic o digito e urn sinal. 0 pr6prio
POntO de cimal nac e armezenado; e urn atriburo da defini<;ao. Por exemplo,
data f1 (4) type p defineuma varidvel fl que tern quatro bytes de comprimento
e pode armazenar set e digitos (mais urn sina l), como mostrado na Figura 7.2.
dat a f2 (3) type p decimals 2 define uma varisvel f2 que tern tees bytes de
com prim ent o e pode armazenar cinco dfgitos (ma is urn sinal). A defini!fao data
f 3 t ype p define urna variavel f3 capaz de armazenar 15 dfgitos, porgue 0
comprimento pad rao para a tipo p e8.
245
~I
246
II I_I I I"
w w ..
'W . . . . . w w
w _
_ .'W'
- --
II,.
Figurg 7 2
Va/ores decimais
empocotodos s60
armazenodos em dais
drgilos par byte. 0
byte finol
Ta b e la 7 .4 Ccntlnuccdo
Elm"'tRl ~"'I
Descri~ao
Definiljao de
dados do ABAP/ 4
cuky
Tecla de monetcnc
c(s)
Tipo de dodos
6~ ~~m
de DDIC
p decima ls 2.
e vmo
curr
Monet6r io
dec
Decimal
p L+2) /2 )
p L+2)/2)
flt p
Ponto flutuante
ormozenodo e
i nU
Inteiro de 1 byte
(nenhum)
i nt 2
lntelrc de 2 bytes
(nenhum)
i nt4
Inteiro de 4 bytes
lang
Unguogem
numc
Texto nurnericc
elrCeC;aOi ele
ormozena urn
un;CO
d;gito eo sinal. a
ponto decimal naa e
~o
prec
Prectsec
quan
Quontidode
uni t
Unidodes
pL+2) / 2)
c (L)
Tn.110
Descriljco
Definiljco de
dados do ABAP/4
de DDIC
char
Ccroctere
c(L)
clnt
Cliente
c(3)
dats
Data
tims
Tempo
Tipo de dodos
c(l )
n(L)
x(2)
V
d
CII
o seguinte c6digo ea sintaxe para definir uma variavel que utiliza a instruc;ao
S
'"
parameters.
parameters pl( (l)] [type t] [deci mals d] ...
ou
parameters pl 1i ke vl
... [default 'xxx'] [obliga tory] [lower case] [as checkbox] [radiobutton group g].
onde:
247
.. . . . .. . . ....
248
e0 nome.de paramerro.
1'1 e 0 nome de uma variave l ou pardm etro previamente definidos au
pl
eo nome de urn campo que per tence a uma tabe la a u estrutura no D ata
Dictionary.
(l)
parameters.
Utilizasao
,. parameters
1
2
3
4
5
par amet e rs
parameters
parameters
parameters
parameters
pl (2) t ype c.
p2 like pI.
mall_valu e type ; default 100.
cur_date type d def eul t '19980211' obl ; gatory .
cur_date 11ke sy-da tum def ault sy- dat um obli gatory.
type
decima ls
11 ke
default
obligatory
lower case
progroma se r executado.
Impede que vclcres seja m troduzidos em tetras ma juscules.
as chec kbox
Exibe
Figura
7 3
Quando vocl!
executo 0 relot6rio
z tx0106, os
primeiros
porometros
oparecem em umo
tela de sele'ido.
POrOmetros
obrigat6rios sdo
indicodos com
pontos de
interroga'ioo. Paro
come'iOr 0
processamento, a
usu6rio deve
pressianor 0 batao
Execute no borro de
ferrom enfos
Application.
2.
249
250 [ APRENDA EM 21
DIAS AIAP/4
ainstru~ao parameters:
Ulilizanda a
adi~ao :
lelras minusculas
Todos os valores digitados em urn parimetro sao traduzidos em letras maius cu1aspor padn.o. Para desa tivar essa tradu~o, utilize a adiljao l ower case. Essa
adilj3.o apenas se aplica a campos de caractere.
Ulilizando a
adi~ao :
como caixa de
sele~a o
Ulilizando a
ad i~ao:
Como as caixas de selecso, urn boeso de 0P!jao tam bern tern dois estados:
se1ecionado e nao selecionado. Diferente das caixas de sele~io, as bc toes de
o p~a o nunca operam sozinhos, eles operam somente em gru pos. Voce pede ter
qualquer mimero de boeces de op~:ao em urn grupo, mas apen as urn ped e estar
selecionado de cada vez . Eles sao utilizados quando voce precisa apresentar 010
usudrio uma lista de altemativas em que apenas uma 0pljio po de ser escolhida.
Para exibir .um parametrc como urn bctac de 0p!jao l utili ze a adi~io
ra diobutton group g. Voce nao pode especificar urn ripe de dad o ou comprimenta; ele sera padrao configurado como 0 padrac tip o c e comprimento 1. 9
e urn nome de gropo arbitraric de urn a quatro caractere s de comprimento.
Voce pede ter mais de urn gropo em urn programa.
parametro camera uma letra Xse a batao de op~o estiver selecionado;
ele conrera uma lacuna se nao estiver selecionado. Para esta r selecionado
inicialmente, 0 botio de op~ao deve conterum valor padrao da letra x.Nenhum
outrO valor e valido par a urn botao de opljio. Exp erimen te isso iniciando 0
prognma ztx006.
251
T I . . . ... W_JI"I
252
6. Para urn parame rro definid o como um campo DDle, voce pede
reeuperar rcrulos do elemenro de clades. Para recu perar urn rd rulc do
elemento de dados para urn dnico campo, posicione seu 0 cursor no
campo e escolha 0 caminho de menu U tilitie s-> C opy DD Tex t. 0
r6tulo de campo de comprimentc medicprovenien t e d o elemento de
dados aparece, 0 campo Text esta prot egido e 0 campo Type se altera
para conter os caracteres DOIe. Na parte inferior da janela, a mensa gem
Oiction ary texts transferred f or select io n xxx aparece.
7. Para remover a protecao de urn unic o campo, posi cione seu cursor no
campo e escclha 0 caminho de menu Utilities- > No DD T ex t. 0
campo Text torna-se desprotegido e os caract eres ODIC desaparecem
do ca~pa Type. Na parte inferi or da janela, aparece a m en sagem Text
for xxx no long er transferred. from Di ctionary ..
8. Para recuperar r6tulas de cam po para rodos os parametres que sao
definidos como campos de DDIC, escolha 0 caminho de menu
Utilities->Copy DD Texts. O s r6tulos de campo para todos os
campos de DDIC sao recuperados e prot egid os. Quaisquer valore s
existentes na coluna T ext sao sobrescritos. Na parte inferior da janela,
aparecea mensagemAl 1 selec ti on t ext s t ransferre d from Di cti onary .
9. Pressione 0 batao Save na barra de ferramen tas Applicat ion. N a parte
inferior d a janela, aparece a m ensagem Text el ements f or progra m
xxxxx in 1anguage E accept ed.
10. P ressione
A ajuda Fl
de dados.
A ajud a F4 e adquirida se seu pargm et ro for como urn que tern uma
t abel a de verificacac.
As modificacoes no tip o ou comprimen tc de dad o no D D 1C autom ati camen t e sao refl etidas por seu programa.
Se voce quiser anular 0 rotulo de DDIC para alguns campos mas nac
outro s, digite seus r6tulos na coluna T ext e endo escolha 0 caminho de menu
U riliries -c-Supplement DD Tex ts . T od os os campos T ext em branco serao
preenchidos a partir do Data Dictionary , deixando apenas os valo res que voce
in seriu.
';""'f-
tt:~~,-
253
aW
.
-"a .W
254 I
.. WI
_ .
_
.WW
OIA7: DEANINDODAOOSMOAWH,PARTE l
uma lists de valores vili dos para esse campo . Eneretan ro, 0 valor inserido em
urn campo de en trada de pararnetro nao e validadc contra a tabela d e verificacao.
A valida~o somente ocorre para telas de didlogo como as vistas na transacao
se16. 0 usuario pade digirar qualquer valor no campo de ent rada e isso sera
pass ado para 0 programa quando pressionar 0 batao Execu te.
sOo
linhas.
. U m cbjetc de dados e um a posiljao de mem6ria que contem dados
du rante 0 tempo de execufiao do program a. 0 5 obj eeos de dados
njio-modificiveis sao literais e constantes. O s ob jeto s de dados modificaveis sao variaveis, strings de campo e tabelas intemas. as o bjetos
de dadcs sao alocadcs na area de rolagem do programa e liberados
quando programa termina.
IFa~a
L....:.-
- - " _
Resumo
dr.i:o.
, 255
P&R
Par que pre ciso codifi car em letras maiusculas entre aspas?
Como saberei se precise codificar em letras minuscules?
W o rksh o p
256
Teste
o que hi de em-do com estes Iiterais, se eque algaesci errado? (Pede havermais
SEMANA
4.
S.
6.
7.
8.
9.
Literal hexadecimal: x
ooaOf'
Reviscio
I I I I
I I . I I I
ABAP/ 4 Editor
criou tabelas transparentes, elementos de dados e dominios
usuario
Exerdcio 1
Escr eva urn programa utilizan do parame tr e s par a a Figura 7.4.
.'
--- w
'W'
w:
SEMANA
Viscio geral
Na Semana 2, voce aprende a criar ob jetos de clades variaveis e fixes
utilizando os tipos de dados predefinidos e definidas pelo u suario. Voce
aprende as regras cia sintaxe ABAP/ 4 e as inscucces par a contrclar 0
luxo do programa, as insrrucoes de atribuiliao e as regr as de conversso.
Voce tambem define as tabelas internas, preencbe-as utilizando areas de
trabalbo implicitas e explfcitas, executa 0 processarnentc de imerru pcac
de controle e otimiza as ins rrucoes se 1ect, a fim de pre encher as tabelas
intemas, direta e eficientemente. Finalmente, voce utiliza as opcoes de
[ormatacic da insrrucao wri te, conhece os efeieos do tip o de dado sobre
a salda, emprega as safdas de conversao e detecta sua pre senlia dent ro de
dominies .
;.
Duran te 0 Dia 12. "Tabelas internas avancadas .Parte 1", voce aprende
a reccnhecer a op erador do cc rpo da tabela e utilizar esse operadar
par a testar quanto a existencia de dados em um a tab ela int erna, e a
comparar a igualdade do conteadc de duas tabe las internes.
0 Dia 13, "T abelas internas avancadas, Pane 2'" ensina a preencher
uma tabela in terna a p art ir de uma tabela de banco de dados utilizando
as consrruco es mais eficientes: e executa a processamen to de interrupcao de controle em tab elas intemas u tilizan do at e on change of .
Durante 0 D ia 14, "A inStIllliao Write", voce aprende a entender 0
efeiro dos tipos de da dos na safda, a utilizar as opcoes de formatacao
cia ins tru~o wri te, a urilizar as safdas de conversio e a derecear sua
presen ce dentro de domini es.
Utilizer a instrucao t abl es par a definir as strin gs de campo e compreender a diferenca en tre as strin gs de campo def inid as utilizando-se
data e as defmidas utilizando-se tabl es
Compreender a instrucao types e utilizar essa instrucio para definir
seus pr6prios tipos de dados
hItpJI-.compus.com.br
I I I .I ~ I I I ~
262 I
'If
w . - -
.....--.-
- -
Sintaxe da
en 0 c6digo
jnstru~oo CONSTANTS
a seguir dem ons tra a sintaxe para a definic;ao de urn a cons tan te. E
semelhant e a instruc;ao data ; entr etan to , a adiCjao value se faz ne cessaria. Em
-I ro dos a s outros modos, as constantes concordam com as mesmas regras das
~ varisv eis definidas com 0 u sa da insr ru cio data. Veja a Lisragem 8.1 quanta a
m exemp los das deficicoes de con stante.
ou
const ant s c1 l1 ke cv value ' xxx ' ,
!j
!
cl
cv
o nome d e urn cam poque pertence a uma tab ela ou estrurura rio D ata
Di ctionary.
{l}
em um programa ABAP/4:
'xxx I
I
1
t abl es
III A seguir, veja a sintaxe para a defini~o de uma string de campo utilizando a
Z instnl/Sao dat a.
...
1 ft .
data
Uma st ring de campo definida com 0 usa' da instrucio data corre sp onde a um
objeto de dada modificavel, Ela pede ter visibiliclade local ou global.
de0
code:
IlOYO ...
mMO "
el
tJ
end of /sl .
ou
dat a begin of i sl .
data fl [(l }] [type t] [deci mals d] [val ue ' xxx'] .
data i 2 [ (0 ] [type t] ,[ deci mal s d] [value 'xxx '] .
[i ncl ude structure stl . ]
data end of t st ,
ou
data is1 1; ke i s2.
onde:
j51
de campo.
263
264
e0
ea
t eo tipo de dado.
de 0
' xxx I
EmAOA"
Listagem 8.3 Umo string de campo pede conter umo o utro string de
"
compo
1 report ztxG803.
2 data : begin of names ,
3
namel
li ke
4
nameZ
like
5
end of name s.
6 dat a: begin of cust _i nfo ,
7
number (10) type
8
nm
li ke
9
end of cust_info.
14
15 ....tte:
16
17
cust_in fo-number,
cust_in fo -nm-namel.
cust _1nfo-nm-nameZ .
.... A linho 2 inicio a definio da string de compo names. Cc ntem dois compos
que s60 definid,?s como compos do ta be lo zt xkna l no Dota Dictionary. Aeles
nOosOofomec idos vclcres inido is. No linho 8, 0 componente cust_i nfc-nane edefinido
como string de compo names. Qua ndo utiliza do nos linha s 12 e 13, nm e inc1uido no
nome do componente.
.
lK.lJJSE,.
r eport ztx0804.
data: my_l fal l 1ke %tx l f al,
my_addr like ztxa ddr .
12
,lj1.lJ.IS~ ,.
10
EIflRADA"
n,
names,
13 write :
14
at xknat - neeet ,
ltxknal -nameZ,
265
------
- - - -
--
ENIRADA~
List a gem 8.S As tobelas e est ruturos do ODIC pad em tc mbem ser
7 fsl -lifnr
12.
8 fsl -extra_f ield ' xyz ' .
9
AMAuSE"
ENlRADA~
7 h1-mylfal-l1fnr 12.
8h1 -ext ra_fi eld
' xyz' .
9
10 wr i t e : / h1 -mylfa1- l ifnr .
11
fs1 -extra f ield .
ANAUSE"
EHTUOA,.
11 151 'XYZ'.
12
13 wri t e : / fsl c1, fsl-c2, fsl c3.
14
/ fsf.
ABC
ABC
XYZ
XYZ
AKA
.. As linhos de 2
USE ,.
Uma string de campo pede ser atributda a uma c u t ra, se ambas tiverem
a mesrna estrutura, como pode ser visto na Lisragem 8.8.
267
268
.APREND A EK ! 1 DIASABAP/'
151
de compo definida co m
1 report ztx0809.
2
3
4
5
6
7
a
9 152 z 151.
10 write: I tsz -cf, rsz-ea, 152-c3 .
sliol ~
269
tables ztxlfal.
zt xlfal-namel 'Bugsy ' .
zt xlfallandl ~ 'US '.
write :
ztxlfal.namel , ztxlfal-landl.
ABC
ANWSf 1IIrrr... " A linho 2 define a string de compo ztxl f al. Suo definkc c e exotomente iguol
tobelo do Data Dictioncrv com a mesmo nome . Nos ltnhos 4 e 5, volores sao
dodos a dais de seus co mponentes, que siio totalmente es critos no linha 7.
SI!
~ ..
onde:
endsel ect ,
A linho 2 define a string de compo zt xl fal. Suo defini<;iio e exctc mente igu oJ
a do tobelo do Dote Dictionary com 0 mesrno nome, H6 tc mbem umo tobelo
do ban co dedodos com 0 mesmo nome, de modo que sejo pro porcionodo 0 0 progra mo
a ocesso a tobelc. a que slqnificc que 0 mesma pode agora serutilizadoem vmo instrv<;50
ANALISE .....
....... w w
270
WW
sel ect. Sempre que a linha 3 e executoda, um registre e lido a partirdo tobelo do banco
de dodos ztxlfal para a string de campo zt xl f al. Pora coda registro, 0 vclc r do
compon ente ztx l fal -l i fnr e tota lmente escrito (Iinna 4).
onde:
tl
vl
e 0 nome do tipo.
ea nome de uma varisvel previamenre defmida no pr ograma au e0
TABLES
Dictionary,
/ve o de mem6rio
As cle finifjOes de
tobe las id'nticos em
um programa de
chomado e em um
Progl'Clmo de chcmcdc
Tobelas m.lfo1.
c:omportilhodo
Progrcmo c:homodo
Tabelas ztxlfo 1.'
compornlhodo por
essos strings de
t eo tipo de dado .
~ usu6rio char2
1 report ztx0811.
2 typ es char2 (2) t ype c .
3 dat a: 1,'1 t ype char2 val ue ' AS' .
4
v2 t ype char2 value 'CD '.
s
6 write: 'Ill. 1,'2. :' .
programo chomado
fat com qce 0
mem6rio sejo
(l)
SAiD! ~
AS CD
compo.
Eum compo
char de
Definindo tipos
Voce pede definir seus pr6prios tipo s de dados utilizando a instru~o t ypes e
basea-los nos tipos de dados existentes.
!!!
~..r '
au
"'
type s tl like -r .
EIfTUDA ~ Listagem 8.12 A utilizac;a o de tipos poder6 tomor seu c6digo mois
clc ro e mcis f6cil de ler
1 re port ztx0812.
Z t ypes : doll ar s( 16) t ype p deci mals 2.
3
lira(l6}
t ype p decimals O.
4
10
end of ll'ller1can_sums.
begi n of i t ali an_sums,
271
272
11
12
13
"15
_ con t~m
siiDI~
~NAlIS~""
A linho 2 define urn tipo de dodo denominaclo dol lars como urn campo
,.. decimal compa d odo de 16 bytes co m duos casas decima is. A linho 3 define
um tipo de dodo semelhcnte denom inodo 1i ra co;" 0 coso decima l. Nos llnhos de 5 a
14, duos strings de compo sa o definidos co m 0 usa dos novos tipos de doclo . Nos llnhcs
16 e 17, urn volo r e otribuldo 0 urn compo nente de coda e, nos linhos 19 e 20, ell'S soc
escr itos.
Considere urn tipo definido pelo usuario como uma variavel,masurn tipo
que voce nao posse utilizer para armazenar clados. Elepodera apenasserutilizado
para coo outrasveriaveis. As mesmasregrasse aplicam aos tipos, da mesmaforma
as
as
Tipos estruturodos
Urn tipo definido pe lo usu6rio pede ser boseodo no defini ~o o de umo string de
campo. Ele e conhecido como um fipo estruturodo. A Usta gem 8.13 mostro
como vo ce pede reduzir 0 tc mcn hc de um prog romo vtilizonde um tipo estruturodo.
NOVO ...
HilIO"
9
10 data: customer_addr typ e address.
vendor_addr: t ype address ,
11
empl oyee_addr ty pe address,
12
shipto_addr typ e address.
J3
14
15 cus tomer_add r~street '101 Memory l ane' .
16 employee_addr-country ' Transyl vani a'.
17
18 write: I cus tomer _eddr- st reet ,
employ ee_addr -country .
19
lilt... h linhos de 2 a 8 deflnern um tipo de dodo de nominodo addr ess que ccntem
cinco comp os. Nos linhas de 10 a 13, quotro strings de campo sdc definidos
ANALISE,.
com a uso do novo tipo. Sem 0 no.. . o tlpo, essos defini~oes teriom utilizado 24 linhos
ad icionais de c6digo . Alem disso, a mcnutencoo fica mois f6cil: se umo clterocec nos
deflnlcce s da s strings de compo de en derecc for necessaria, ope nos a definiIYoo do tipo
preciscrc ser oltera do.
Grupos de tipo
HO~O llr..
TERl{O"
Uma in stru~ao t y pes pod e se r ormoze nodo em um grupo de fipo . Urn grupo
de tipo (to mbe m con hecldo como um pool de tipo) corresponde a urn objeto
do Data Did io na ry que existe rnerome nte para canter uma ou mots insfruIYoes types au
constant s. Utilizondo a in stru~oo t ype-po ol s em seu programo, v eee aces sor6 tipos ou
consta ntes a pa rtir de um gru pe de tipo e"uflllzcre as mesmos em seu progromo. Muitos
program as pode m co mpa rtilhor um grup o de tipo, propordonondo a voce a hobilidade
de crier definiIYoes ce ntralizod a s. A Fig ura 8.2 ilustra esse conceit o. A Listagem 8.14
ccnt em urn exemp lo de um grupo de tipo e a Ustage m 8. 15 opre senta um exemplc de
um prog ramo utilizondo types e constants de tal grupo.
Grupo de tipo ztxt.
Fig ura 8 2
e"
um cont~inar pore as
;n$~6 es
types e
constants. Ele pode
ser comporlilhodo
enee cs progromos.
,
3
Progromo 1
Progromo 2
type-peols ztxt .
data fl t ype _ztxLdoll ar-s .
typ e-pools zt xt .
. dat a fl type.z.txt:...dol1ar s .
273
274
EMTRADAlrrItr.. Listoge m 8.14 Urn exemplo do lnstrvcdc type -pool contendo tipos e
,. constontes
1 typ e-pool i txl .
Z types :
ztxl_doll ars (16)
ztxl_li r a(l6)
J
4 constant s : ztxl_'Ilarn1"9_th reshol d
ztxl_ama 1gamat i on_date
5
t ype p decimal s O.
t ype 1 valu e 5000.
ANAUSE'"
A linho 1 indica 0 com ecc do grupo d e tipo e the cfribui um nome. As linhos
,. de 2 c 5 defin em t ypes e constants que podem ser utilizodos em quolquer
progromo .
1 re port ztxOSlS.
2 type -pcc l s ztxl.
defi~i~6es
exibida.
~~
linho 2 ,ind ui a s
do grup o
tipo zt xl no prog roma .. As ltnhos de
r AA3 linho
a 7 definem umo string de
utllhcndc a
zt xl _dol l ars do grupo
9 ctribul um valor para pay_outs e esse valor e compcrndo com
co mpo
iHAUSf '"
tipo
de tipo .
Resumo
As strings de campo sao com o as estrururas definidas dentro de seu
pro grama. Voce pode definir as strings utilizando data au tabl es. As
strings de campo definidas utilizando tables tern visibilidade global e
extema.
vccepode defmir seus pr6prios tipos de dados, ate mesrno tipos
estrururado s, utilizando a instrof:jao types. Os ripos definidos pelc
usuario reduzem a redu ndancia e tornam mais facil a manut encao.
Voce pede defmir urn gropo de tipo no D ata Di ctionary para fazer
com que os tipos deflnidos pelc usuario e constantes sejam reurilizfveis.
275
".. . w _ _ ...
276
'W'
'W'
..
__
"!'!""
----'---------
IFa~a
P&R
Workshop
o
Teste
o
o
para
o
o
Sim, voc e pode. A funci on alid ade das esrru ru ras do DDIC e
bern mai s imporran te qu e a oferecida pel os -tip os estru rur ados,
po rque podem forn ecer r6 tulos e ajuda P I a F4. En tr etan to,
ty pes pede serutilizada para definircipos estru turados e aninhados
que ccntenham rabelas int ern as. 0 que nao acontece com as
estruturas do DDIC . Isso sera demonstrad o no Capfruic 12 na
se~ao sobre as tabelas int ernes.
1. Qual e a consta nte predefinida qu e pe de ser ut ilizada em urn programa ABAP. Q ual e 0 seu equivalence urilizandc urn literal?
2. Q uais sao as tipos de instrucao t ype que podem ser utiliza dos equal
eo ripe que pode ser definid o no Data Dictionary?
Exerdcio 1
Qual ea ourra forma de se declarer a variavel abaixo urilizando uma declaracac
-type"?
data : begin of usd_alllOunt.
hot el
type p decimals
r ent car t ype p decimals
pl ane
type p decimals
food
type p decimals
end of usd_aJIlOunt ,
begi n of &meX_pt.
hot el
type p dectee l s
re nt car typ e p decteat s
plane
type p cectsets
food
type p decimals
end of amex_pt.
2,
2,
2,
2.
2,
0,
O.
0,
Exerd cio 2
Qual e 0 resultado desre pro grarna?
report zb0816 .
dat a: begi n of f Id_stgl,
var l value ' 1' ,
va-z valu e ' 3',
var3 valu e ' 5' ,
var4 valu e '7',
ve-s val ue '9'.
var6 val ue ' 4' ,
var7 value' S',
varS value '6',
end of fld st gl.
f ld_stg2 11ke fld _stgl.
fld_stg2 fld _stgl.
write:
write :
I
I
277
9
Atribui~oes,
conversoes e ccilculos
Qbjetivos do ca pitulo
Depo is de concluir esee capitulo, voc e.sera capaz de:
e Strings de campo
atribuic;ao
Codificar exp ressoes maremdricas
http://_ .compUJ.com.br"
---- - 280
Figura 9 1
Esto e a estruturo
syst . f lo contem as
definil;6es de lodas
05 vori6veis de
sistemo. 0 boICo
Column Right;
Next role ume
deShott Text
sejo vislJOlizodo.
Des(ri ~ao
sy-datum
syuze1t
sy- uname
sysubrc
sy-mandt
sypagno
sy-co1no
Data atuo l
sy-l tnno
sy-vline
sy-ul i ne
sy- rept d
sy-cprog
sy t code
sy-dbcnt
Horo ctuc l
Id do usu6rio otuol
Ultimo c6digo de retorno
Cliente de logo n
N umerc da p6gino de soldo otuol
281
282
report zb0901.
ta bles ztx lhl.
parameters "landl
vr-tte : I 'Current
/ ' Cur ren t
/ ' Current
/ 'Vendors
A linha 12 escre ve
user: I . sy-uneme ,
~l ~nd l.
A linha 13 marca
~l andl.
endif.
Current
Current
' Cur r ent
Vendor s
select * fr om ztxlfal
9 V5
10 Y7
10 records found
INjllSE ~
t.
17
siiDI ~
' . d sistem
.
La ca Iza o d a yanayelse
a
" deran do urn c6digo de entrada como urn pararnerro de entrada, suponha
Consi
que voce prec ise escre ver urn programa qu e escreva a descri/iao do pais a part ir
da tabela ztxt005t no id ioma de logon atual do usuario. Como voce deve se
lembrar , ztxt005t e uma tabela de texto contendo descricees de c6digo de p ais
em diversos idiomas. A chave primaria e mandt, spras (idioma) e la ndl. U ma
SOIUiao de exemplo e m ostrada na Listagem 9.2, m as esta faltando uma pa rte
cru cial de info rmacfo na linha 5: 0 valo r do idioma de logon atual.
N a Listagem 9.2 esta faltando uma variavel n a posii ao indicada pelo po nto
de inrerrogacao. Gerahnente, quando estive r tr abalhando com 0 ABAP/ 4, voce
podera se deparar com 0 desafio de localizar variaveis contendo as inf orm aqdes
nec essdrias.
ENTRADA ~
Lista ge m 9.2 Um program a 'd e exemplo com umo vari 6ve l sy faltando
1 r eport zt x0902.
2 tab 1es ztxt0 05t.
3 par ameters landl l i ke ztxlfal -landl obligatory default 'US ' .
4 select s i ngle * f r om zt xt005t
5
where spr as ?
Yid ioma de l ogon atu e l
6
and 1and1 "landl.
7 ; f sy-subrc = O.
8
write: 'Descri ption:', ztxt005t -l andx.
9 else.
10
write: 'No description exi st s for', "l andf.
11
endif.
283
284
..
.. - .....
~ ~
.... "!I" -
'"4!!!'" -
iNius~ ~
,. Table .
10. Pressione 0 boti o Find. Vma segunda tela Find aparecera mostrando
as linhas que con tern 0 texto di git ado. As corr espondencias sao
realcadas.
11. Para selecionar uma correspondencia, de urn iinico clique em uma
palavra realcada. voce retornara a tela Print Preview for XD:t'j a lista
sera rolada para a linha par voce selecionada e a cursor sera posicionado n aquela Iinha.
Structure o r
Pora referenda futuro, voce pcdero sa lvor a listc de Print Preview for
xxxx em um crqvivc de textc na sua unida de de disco ngido. Pora isso,
285
286
D~ 9,mIBUI\05,CONVElS05 EckrulDS
com. a
1 report 2tx0903.
2 tables ztx t005t.
3 par~te rs "la nd! 11ke ztxl fal -landl obligatory default 'US'.
4 sel ect single" froll ztxtOOSt
continua
where spra s .. sy-langu
and land! .. "lendt ,
!!!
onde:
1ft
. 'A'
7 1f sy- subrc .. O.
9
else . "
S.\iOA ~
JJ1.i.uSE'" A tinho 5 limite a inst rUl; ao se l ect 0 retomor openos as registros de ztxt 005t
,. que tAm um c6digo de idio mo iguol 00 ldlc mc de logon atu a l. Pelo fota de
mandt set outomotico mente od icio na do no cornecc de codo wh er e, a chc ve primario e
ogora co mpletome nte espedficodo e um enicc e exclusive regi5tro e retom odo. Observ e
que a Indice prim6rio suporto esse instrui700 selec t , portonto as compos do c16usulo
where fora m espedficodos no mesmo o rdem em que oparecem no fndice prim6rio .
Instru<;6 es de atribui<;oo
NOVO...
lERMO,.
Umo ;ns tru~oo de otribu; o ctrlbul um vo lar perc umo vcrio vel ou string de
ca mpo : Tres lnstrucoes de atribuit;oo sao co mumente utilizodos:
move
move-corresponding
clear
Utilizando a
NOVO...
HUD~
10
11
vt
instru~ao
c l ear
A instrui700 c l ear co nfig ura a volar de uma vori6vel au umo string de compo
como zero . Se 0 tipo d e dodo for C, 0 volar, par sua vez, ser6 conf igurodo como
espccos e m bronco. Os espoccs ern bronco e zeros 500 conhecidos como va/ores inid ois
podr6o . Frequ entemente, e co mentodo que cl ear otribui velcres inicia is podrcc a
vori6veis. '
EII1UOA~
287
288
- - - - - _- _
- _
.- _
__
-..
- =c--"-=---
D~ HTllIBUI\OES,CDNVERSOES EtiLruLDS
fl - 'AB'
f 2- '
12.3 45 '
f3 -'
12,345
f4 -' 1. 000000000000000+01 '
f 5-'789'
16- ' 1998010 1'
17-' 120100'
fa-'M '
sl -fl-'XYl'
sr-rz-:
123 , 456
llil5! ~
I ll'
zeros.
EMTRADA'" Listagem 9.5 Vo ri6veis preen chidos com cora de res difere ntes de
1 r epor t ztx0905.
2 tab l es zt xl fa l.
3 data: fl(2) type c value 'AB ',
4
f2(2) type c,
5
f3
typ e i val ue 12345,
6
begin of sl,
7
H(3) type c val ue ' XYZI ,
8
f2
type 1 val ue 123456.
g
end of sl.
10 writ e: / 'fl '" no-gap, fl no-g ap, -" " ,
11
I 'f2>< '" no-gap. f2 no~gap . "" ,
12
/ ' f3'"" no-gap, f3 no-gap , " " ,
13
/ 'sl~f1-' " no-gap, sl-fl no-gap,
14
/ ' sl f 2" ' " no- gap, sl-f2 no-gap .
15
/ 'ztxlfal-l1fnr=' " no- gap, zt xlfal - 1H nr no-gap,
16
I 'ztxlfal-land l-' " no- gap, zt xlfal~1a nd l no-gap.
""
289
290
, m N"
EM 21 DIAl U'PI4
17
/.
20
21
22
23 write :
24
25
26
27
28
29
f3 with 3.
51 with 'X'.
ztxlfal wi t h O.
/ ' 11'" nc-cep , fl
I .' fl ' " no- gap. f2
/ ' f3. '" no-gap, f3
/ 's l-fl. '" no-gap,
/ ' s l -12. 1 1 1 no-gap,
/ 'ztxlfal-lffnr."
/ 'ztx lfal~lll.ndl=' "
I
fl 'AB'
f2'"
f3'"
12.345 '
sl-fl ' XYZ
sl -f2. > 123,456
zt"l f a1- 11fn r- '
1ft
ou
vz "
'Ill.
ztxl f al - linen-'
ou
n 'xx'
ou
51f2'1482184792 '
,2[+N(L)] , 1[+N(L)] .
onde:
Ul
ou
f Za lXX '
13'50, 529,027
ANALISE
Para mover urn valor de urn campo para outre , utilize a instrucao nove. 0
conteddo ~teiro ou urna pane do coneeudo pode ser movida. Em vez de move,
voce pede utilizar 0 operador de atribuicio "', como mostrado a seguir. Ambos
sao referidos como um a in struca o move.
vI
v2
Correta
Incorreta
fl - f2 .
fl -f2 -f3.
n-ra ,
n- ra-ra.
291
292
Convers6es de dados
KOYO'"
lERMO~
Do tipo
Para
pade ser visto na Tabela 9.3.Nessa tabela,0 campo de envic e 0 campo "From".
Tipo
c
x
Preenchldc
Tru'ncodo
n
p
Preenchido
Preenchido
a direito
Regras de eeevereee
Preenchtdc
em bronco
tipo
Quando atribu ir pa ra
u m campo maior, 0 valor
'from' sera:
293
294
26 fe
27 fc
28 fe
29 fe
30 fe
31 fe
32 fp
Para
tipo
YYYYMMDD.
HHMMSS.
silDi ~
numero de
writ e:
write :
write:
write :
writ e:
writ e:
wr1te :
/
/
/
/
/
/
/
fp1,
fp2,
fp3.
f p4.
fp5 ,
fp6,
' "
>,
>,
>,
>,
>,
>.
tc ,
t c,
f c,
t c,
t c,
.. fpl.
fp2.
.. fp3 .
;; fp4.
.. fpS.
.. fp6 .
;; , ".
.... lnicle o~oro 0 ScreenCom "'How to Display the Conversion Rules in the ABAP/4
Keyword Documentation"'.
SCRHNCAM,.
ABAP /4:
S.
,
l
295
296
Subcampos
NOVO ...
1IIlIO ,.
Sintcxe de um subccmpo
'1 ["][( Lll ,2[-c ][(Lll.
8 fl (1)
9 'ltr1te
10 fl (1)
11 'It1"He
12 fl+4
13 wr ite
14 fl( 3)
15 srtte
onde:
vl e v2 sao nomes de string de campo ou de varifvel.
0 deslocarnento au comprimento
presentes.
Se 0 deslocamento
come cc do camp o.
IUO
camp o de envio ou de
for especificado,
subcampo iniciara no
subcampo se estendera ao
f1
.. 'BOY '.
f2
.. ' BIG' .
fl+O(l) .. ' T' .
'!trite / fl .
fl .
f1.
12(3).
fl.
BOY BOY
BIG BOY
IHius!~
2
3
4
S
6
7
I n.
TOT
JOT
BOT
' J' .
fl .
12.
298
Figlltg 9 2
Utilizor move em umo
string de compo, se m
tJtj/izor um nome de:
componente, farO corn
q ue: a stringse;o
tratodo como umo
vori6vel do tipo c.
f1
~ '.-.:".. ~.
.,,&_';) ';:'
e2(2) .
e{ 3 } .
end of fs1.
,,
mo ve
f1 to fs l .
caractere.
f1
EtmADA ~ Lista g em 9.8 A instru;ao move t-ete urn nome de string de co mpo sem
urn nome de componente como umc vcrtcvel do tipo c
1 repor t zt x09OB .
2 datil : flC.) value ' ABCD ' .
3
begin of 51.
4
el(l).
5
e2{Z).
6
' 3(1) ,
7
end of s L,
su
10
n.
s write: / 51.
10
/ si -ci , st -ez, si -cs .
ABCO
A Be D
1 report ztx0909.
Z data : fe(5 ) t ype e.
3
begin of s,
0\
f i t ype t ,
5
endofs.
6
7 fe '1234'.
"ce-c, nenhllnia converss c exee ut ada
8 s - fc.
_"escreve ju nk
g writ e s- f i.
51.
11 s~fi 1234.
l Z fc-s .
13 write I fe.
14
15 s- f 1 - 1234.
16 f c - s-ff .
17 write / fe.
SliDI ~
B75770, 417
0...
1234
lIIiUSE ~
299
~ .. -.- .
300
w - w w
---
Simi ~
Na linha 7. st- et
Na linha 12, f1
Movendo de uma string de campo para uma outra utiliza ndo tipos
de dados de carodere
Voce poderi utilizar a instrucao move em duas strings de campo, se ambas
contiveremsoment e componentes de tipos de dado s de caracrere (c, n, d, t e
x). A Lisugem 9.10 ilustra este conceieo.
199802171234AB
199802171234AB
19980217 1234 A B
1998 02 17 12 34A8
"
byt es
byt es
byte
byte
bytes
byt es
bytes
bytes
bytes
compo compostos
i1itISE~
As linhas de 2 a 14 defin em duas strings de campo compostas inteiramente de campos do tipo caractere. Cada st ring de campo tem, no
total. 14 bytes de comprimenro.
Na linha 15, 51 emovido para 52, tratando cada string de campo como
se fosse de urn unico camp o do tipe c com 14 bytes de comprimento.
N as linhas 16 e 17, ambos sao escritos como campos de caractere.
TaMO"
NOVO ....
TEtMO "
301
302
- -- _.
SAiDI ~
s t-et tern apenas urn byte de comprimento, port ant o c2 tera urn deslocamento desigual desde 0 inicio da string de camp o e necessitard de preenchimento na maioria des sistemas, fazendo com que s1 se tome mais comprido
do que 52. Quando s1 for atribuido a s2, c3 nae sera alinhado e alguns dos
s1- c2 temiinarao no comeco de s2-c3 . Entretanro, 53 corresponde exatamente
com 51, dessa fonna 0 movimento na linha 14 ocorr erd perfeitamente.
Esse exemplo mostra que voce nao pode ign orar os efeitos da existencia
de campo s numericos dentro de uma estru tura. 0 fate de cada camp o de
recebim ento ter 0 mesmo mimero de bytes que cada campo de envio nao e
suficiente para garantir 0 alinhamento dos component es.
As regras de alinhamento variam de acordo com 0 sistema operaciona],
de modo que 0 ndmero de bytes de preenchimento e suas posi~5es irao variar.
O s resultados de move em urn sistema operacional po dem ser diferences em
outro. Portanto, para garantirque seus programas sejam portateis, nunca ccnfie
em bytes de preenchimento e cao os considere du~te os movi mentos. Cada
strin g de campo deve ser composts inteiramente de tipos de dados de caractere
ou todos os componentes de cada strin g de campo devem ser exatamente
correspondentes (exceto quanto ao nome) .
ENTUJlI~
A 1110 I
A
1,234
1 r eport ztx0911.
7
8
c1 value 'A',
CZ type 1 value 1234,
c3value 'B ',
end of 51,
begin of 52,
ei ,
9
e2(4),
10
es,
11
end of 52,
12
begin of 53,
13
u.
14
x2 ty pe i ,
15
xJ,
16
end of 53.
1752 -51.
18 write : I sz-ct , sz-cz, sz -ca .
1953 -51.
20 write : I s 3~x1, s3- x2, 53-x3.
Para executar urn movimento de uma string de camp o par a uma outra, em que
os tipo s de clados e/ou comprimeatos nao correspondam, ut ilize a instrucao
move- cor r es pondi ng. Ela gera instrucoes move para com ponentes com nomes
correspondentes. as componentes na String de campo de recebimento qu e na o
tenham urn nome correspondente na String de camp o de envio nie sers o
alterados. Isso e ilustrado na Lisragem 9.12.
Em meu sistema, a cod igo na Listagem 9.11 produz a seguinte safda. Ern
seu sistema, os resultados podem variar para os campos com atribuicoes
invalidas.
Sintoxe do
instru ~Ci o
move-correspondi ng
III A seguir, veja a sintaxe cia instruqao move. O s op eradores e operandos devem
Z ser separados por espacos. MUltipIa atrib uicao ocorrera cia direita para a
esquerda.
nove- cc r r es pcndt nc .v1 t o vz,
on de:
vl
v2
303
x2(3)
III A seguir, veja a sintaxe da instrucio compute. Os operada res e operandos devem
Z ser separados por espacos. Mais de urn operador par instrucao e permitido.
compute v3 vl op v2 [op vn ].
In
au
v3
= v2 op v2
v3
op
... A linho 14 gero duos instrulioes move; por questoc de dcrerc , elos se o
ANALISE,. mostrodosdentro de co mentc rlc s nos linha s 15 e 16. Normolmente, voce neo
pode ver asses Instrocces move; 0 sistema as gero e as executa outomoticomente "!'nos
bcstldores". Uma instrulioo move sera gerodo para coda componente de string de compo
de receblrnentc que tenho 0 mesmo nome de um componente no string de compo de
envio . Nesse coso, c1 e c3 fem os mesmos names, por isso duos instruc;6es move se c
gerad as. As convers6es de dodos sao executados , como seriam se voce mesmo five sse
codtficcdc essas lnstrvcces. 0 cornevdo de c2 permcnecerc inolterodo depots de
cond ufda a instruc;60 nove-cor-responding.
Execufondo c6lculos
V oce pode executar calculos utilizan do as seguintes instrucoes:
0
1.23~
comput e
51
[op vn ,..l,
onde
Compute
10
c3
t ype i.
11
end of 52.
12 write: / '51
: ' , 51-e1, si -ea , 51-c3.
13 wri te: / ' 52 bef ore move- cor r espondi ng:' . s 2~c l . 52-x2, 52-d .
14 move-corresponding 51 t o 52. cod1f 1cat;l o i gual as duas t nst r uczes a seguir
IliDI.
Opera ~ao
Adi;oo
Subtrocec
Multiplicac;eo
Dlvtscc
**
DIV
MOD
Dlvisec de inteirc
Restodo divisdc de inteiro
Expcnencicccc
Alem disso, existem funcoes predefinidas. Para uma lista, obtenha ajuda
utilizando Fl p ara a palavra-chave comput e.
A precedencia do opera dor e cia for~a coma segue:
305
~~
...... ,...
-- - - ----. Il"'''''"'IDES,
v2
v1
,.",usO" "AlCULOS
e semelhante.
onde:
52
sl
VIDa instrucao add e gerada para cada p ar de componen tes com 0 mesmo
nome em 51 e 52. As conversoes de dados sao executadas da me sma maneira
que oco rre com a instruc i o add. Subtract-corres pondi ng, multlply-ccrres pendin g e divide-corresponding operam de forma semelhente.
Exemplos sao dadcs na Lisragem 9.13.
ENlRIDi~
10.
20,
30.
100,
200.
300,
t o f2 .
f rom f 2.
by f lo
by fl .
t o 52.
f rom sz,
by 51.
by s1.
write
wr t te
write
write
write :
write :
wr ite :
wr 1t e:
I
I
/
/
/
/
/
/
f2 .
-fl fica i nalterado
rz .
f2 .
f2 .
s2-c l , 52-x2, 5 2~ c3 .
sz- ct , sz-sz, s2- c3.
sz- ci , s2-x2 , s2-c3.
sz- ei . s2-x2, sa-cs.
307
308
DIA9:ATRIBUltOES,CONVERSOES Eti.LfUlOS ,
configurado co mo '01 ' . Jo1 que as datas sao sempre arm azenadas
utilizando 0 formato inte mo YYYYMMDD, 0 valor de dia da data em
d2 e. co nfi gurado como ' 01' . 0 resu lt ado e. que d2 contem u ma data
igual ao prime iro dia do mes atu al.
6
3
110
200
330
100
ZOO
300
1,0 00
200
9, 000
100
ZOO
300
Cclculos de dolo
~NTlADA'" Listag em 9.14 Colculos de doto que util izam a vcr tcvel de data dentro
,. de um c61culo
sy-datUlll.
dl,
p.
wr ite / dl.
write / ez .
write / d2.
~
-data de ont ea
-pr1meiro dia do ~s atual
-Olti lllO dia do ~s anteri or
ztxl_amalgamation_dat e .
"numer o de diu desde ztxl amalgamation_date
N a linh a 2, a ins rruc ao type -pool s faz com qu e a constante ztxl_amalgamat ion_date seja inclufda no programs.
2
3
4
5
6
I
354
IHius~ ~
Urn sfmbo lo de compo e urn indicad or que voce pode dinarnicamen te atribuir
a um cam po. Depois do ctribuicc o, voce pode utilizer a sjmbolc de compo em
quolquer luga r de seu programo em vez do nome real do campo. Utilize 0 instruc;:60
fi el d- symbol para definir urn sfmbolo de compo e utilize assi gn para otribuir urn compo
a ele. 0 nome do simbo lo de campo deve ccm eccr e term inor co m a sinal de menor que
e sinal de mo ior que . A Ustogem 9 .1 5 contem urn exemplo simples.
NOYO'"
lUKO~
e uma referenda
,. compo
1998/02 /21
1998/ 02/ 01
1998/ 01/31
Atribuic;ao dinamica
S.liDI~
pact a dc num_da ys e
Uma variavel de data (tipo d) p ode serutilizada dentro de express6 es mat emdticas. Atribu ir a resultado de urn cdiculo de data a uma varidvel compacrada dara
a diferenca em dias. Urn exemplo e dado na Listag em 9 .14.
I report ztx0914 .
2 t ype- pools ztd .
3 data : dl
like
4
d2
li ke
S
nurn_days t ype
6 dl d2 " sy ~ d atum .
I
8 subtract I f rom dl.
9 d2+6 ' 01' .
10 subtract I f rom ea.
11
12 nlml_days .. sy~datum
13 write / nurn_days .
e atribufda a dl e d2.
ABC
IHilll~ ~
XY2
A linha 4 at rib ui a campo fl ao simbolo de campo <f >. <f> agora indica
o arm az enam enro da variavel fl e pode ser urilizado, em vez de fl, em
qualqu er lu gar do programa.
A linha 5 escreve <f>, fazenda com que
A linha 6 mo difies
Na linha 9, urn subcampo em d2 no desl ocamento 6 co m urn comprimento de 2 (comprimento obeido a partir do camp o de envio) e
A linha 7 escreve
309
-- ....... _... .
310 , API ENDA EM
21 OIlS ABAPH
Voce pode ut ilizar stm bolcs de campo para criar programas muitc genericos. Suponha, par exemplo, que voce queira criar urn pr ograms que aceite urn
nome de tabela como urn parimetro de entrada e exiba 0 conreedo. Voce DaO
poderd codificar os nomes de campo na instrucao write, porque eles serao
diferentes em cada tabela. Em vez disso, voce podera utilizar urn simbolo de
campo na instrucao write para referir-se 010 campo de uma tabela .
Resumo
As varidveis de sistema sao arm azenadas na est rut ura sys t. Voce pode
pesqui sar as descricoes dos campos e seus elemen tos de dados a fim
de localizer 0 campo desejado. Esse procedimenro pode ser utilizado
para localizar arraves dos campos de qualquer tabela.
IFasa
311
P&R
o
o
o
o
DaO
312
o
o
o
Wo rkshop
Te ste
1. Qua l seria a outra for ma de mover urn valor de uma variavel para
outra?
2. 0 que deve separar operandos e operadores para que 0 calculo ocorra?
Exerdci o 1
U tilizando 0 proced imento denominado "Como localizar as descricoes de uma
estrutura au tabela" para localizar:
report zt y0916.
tables ztxlfal.
par amet er s l andl like ztxlfal-1andl obli gatory def ault 'US'.
select * from ztxt005t
where 1and1 '" 1andl
and spres > sy- langu .
write: / ' Description:'. ztxt005t-landx.
endse1ect.
if sy-subrc <> O.
wri t e: / ' No desc rlptions exi st for country' . l andl.
endt f
elas?
313
10
Instru~oes
de controle comuns
O b jetivos do capitu lo
Depois de concluir este capitu lo. voce sera capaz de:
Codificar as insrrucoes de con tro le comuns; f, case, do e whi 1e
Utiliza nd o a instruc;a o if
A instrucdo if no ABAP /4 te rn operadores relacionais para igualdade e desigualda de e op erado res relacionais especiais para cornparacoes de string e para
mascaras de bit.
http:// ,,,,,,,,,,,,,CCmpus.ccm.br
316
Sintoxe do instru..ao i f
Tabela 10 .1 Ccnnnvcccc
[elsei f expo
]
---
[el se .
---J
Compara fjao
Formas a lternativas
Verdadeiro quan do
vl >'" v2
GE, :>
vI <: v2
LE, :<
v2
not vI between v2
vl ultrapossar a fa ixa de v2 a
v3 - (inclusive)
and v3
endif.
vi between v2 and v3
onde:
exp
Fonnas alternativas
Ve rdadeiro quando
vI v2
vI <> v2
vI > v2
vl < v2
EQ
vI for iguol a v2
NE, ><
6T
vl for moior qu e v2
LT
tipo t.
Nesse pont o, urn campo sera do tipc ceo ou tro sera do tipo x. x e
convertido par a 0 tip o c.
317
318
"API'
Tlpo de da do
, .,
SAiDI ~
Todos os outros
x value 'X' ,
4
Y valu e ' Y' .
z val ue '2 '.
5
6
end of 51,
7
begin of 52,
8
x value 'X'.
9
z val ue 'l '.
10
end of 52.
11
12 1f sr -x 52x.
13
wri te: / 51- x. '. ' , 52-x .
14 else .
15
.... ri t e: / 51-x, '0'. 52-x .
16
endt f.
o ' ,
INiuSE ~
Exibind o convers6es
IOYO '"
TEUO "
utilize
Ao executor umo on6 fise de prog rorno, voce poderc determiner onde ocorrem
as ccnversces dent rode urn programo . Para executor umo on61isede progroma,
segu inte procedimento.
17
18 1f sf -x bet ween sz-x and s2- z.
19
write : / sl - X, 'i s between', sz-x, ' and' , sz-e .
20 else .
21
write: / s l - X, 'i s not bet ween' , sz-x, 'and' . sz-a .
22
end1f.
23
24 1f sl s2.
compa rando st rings de campo , byte per byte
25
write: / 'sl s2' .
26 els e.
27
write : / ' s l<> s2 ' .
28
endi f.
29
30 i f 0 = ' ".
"At en<;!o par a 0 que segue
31
write: / '0
32 else.
33
write: / '0 <> "
34
endif .
A primeiro coluno no telo Conversions: lOOOOC nlio mostra qual conversec e executodo. Mostro simplesmente os tipos de dodos erwclvldcs
no converse o.
319
Utilizando
fl Sf;
321
1 repo rt ztxl002.
2 parameters: fl def ault 'A',
3
f2 default 'B' ,
4
f3 defau lt 'c.
vI CO v2
Sig nifl(o
Co nl6m se rneree
V. ..dodelro
q ua nd o
mahi.culas
mi nUsculo.l
Sim
Nco
5im
Noo
'm
",,0
Sim
Nco
",,0
'm
NOo
Sim
NOo
Sim
NOo
Sim
Os "pa~os e m
branco finol.
sbo Ign Ot'o dos?
sc mene de
ce recte-es em '12
I
6 if
fl f 2.
7 els e1f
fl f3 .
f 2 .. f3 .
'1 1 CN '1 2
v1 pod, cooter
coracteres que
8 elseif
9 else . "
end1f.
I.
11
12 - es l1nhas 5-9 fazem 0 mesmo Que as li nhas 14 26
13
14 if fl f2 .
15
write : / fl . ' . ' f 2.
16 else .
17
if n f3 .
write: / fl, ' .', B .
18
19
else.
20
if f2 .. f3 .
21
write: / f2 . ''' ' , f3 .
else .
22
23
wri t e : / 'all fi elds are diff e rent ' .
24
endif .
25
endt f.
26
endif.
'1 1 CA '12
'11 NA '12
'11 CS '12
Contem stril'lg
'11 NS '12
'11 CP '12
Cont6m podriio
v1 pede center
o pad rtlo em '12
'11 NP '12
siiDI ~
INitISE ~
Se fl
Es ses operadores podem ser utilizado s em qualquer expressao de co mpara~ao. Os operadores CS, NS, CP e NP ignoram os espaCiOs em branco finais e
--~----
322
Z .. ope r ador: co
3 wri te / " ' AABS" c o " AB " ' .
4 if ' AABS' c o 'AS'.
write 'True '. e lse. write ' Fa ls e ' . end 1f .
5 write / " 'ABCD" co "ABC"' .
write ' Tru e'. else . write ' Fa lse ' . e nd1f.
6 i t 'ABCO ' co 'ASC' .
7
B .. ope r ado r: e n
9 write / " ' AA BS" en
10 if ' AABB' en ' AB' .
11 write / "'ABCD" en
12 it ' ABCD' en 'ABC' .
13
14 .. ope r ado r :
15 write / "' AXCZ" ca
16 if 'AXCZ' ca ' AB'
17 write I " 'ABCO' , ca
18 if ' ABCD' ce 'XYZ' .
19
20 .. ope r a do r : na
21 write / " ' AXCl "
22 if ' AXCZ' na 'ABC'.
23 write I " ' ABCO" na
24 if 'ABCD'
'XYI' .
"
"
"AB" ' .
write 'True' . e lse . write ' Fals e' . e ndif.
" ABC" '.
wri t e ' Tr ue ' . else . write ' False '. e ndi f.
AHALISE~
co
co
en
en
ea
ca
' AXCI ' na
'ABCD' ne
Caradere
Utllizado pa ra
Ret omando a Tabela 10.3, os operadores CP (conrem padrao) e NP (nenhum padrao) executam uma pesquisa de string que permire caracteres com
cor respondencia de padrao. A expressao vl CP v2 sera verdadeira, quan do vl
contiver uma String que corresponds com 0 padrao em ,,2. A expressao vl NP
v2 sera verdadeira, quando ,,1 nao contiver urna string que corresponda com 0
padrao em ,,2. E equivalente 3: not vI cp vz. Os caracteres com correspondencia
de padrao permitidos em v2 sao fornecidos na Tab ela lOA.
" AB''' .
"
SAiDA ~
'AB' Tr ue
' ABC' Fa ls e
'AB' False
' ABC ' True
' AB ' True
' XYI ' False
' ABC' False
'XYI ' True
Ve rd a deira q ua ndo
vl CP ' A+C'
A linha 6 efalsa porque ' ABCD' contem urn D, que DaOesta em ' ABC' .
A string -ab- ped e occ rrer e m qua lquer lugar dentro de "1. Os dois
111. pode conter uma letra A motusculc seguida por vmo letrc b
minuscule.
e verdadeira
323
324
if TRUE sy-fdpos
if FALSE sy-fdpos :
vi CO v2
length (v1)
1"chor (vi) in v2
lslchor (vi) in v2
length (v1)
length (v11
P'c hcr (v2) in vi
P'chcr (vi ) in v2
length (v1)
length (v1)
T'chcr (vi) in v2
length (v1)
vi CN v2
vi CA vz
vi NA v2
vi CS v2
vi NS
vz
vi CP v2
1"chcr (v2) in vi
18 * operador: ea
19 write / "'AXCZ" ce " AB" '.
20 if 'AXCZ' ce ' AB' .
write 'True'. else. write 'False' . endif .
write: "sy-f dpcs", sy-tepcs .
21
22
23 write / "'ABCD" ca "XYZ"'.
24 if 'ABCD' ea ' XYZ' .
write 'True'. else. write 'False'. endif .
25
26
27
28 * operador: na
29 write / " 'AXCZ" na " ABC' "
30 if 'AXCI' na 'ABC' ,
write ' Tr ue ' . else .
write : 'sy-fdpos' .
Jl
32
33 write / "'ABCD" ne " XYZ' "
34 if 'ABCO' na 'XYI'.
write ' Tr ue ' . else.
write: "sy-fdpos>",
35
length (v1)
ENTRADA~ Lista gem 10.4 Utilizando sy-fd pos para ver a deslocamento do primeiro
cc roctere correspondente au do coroctere sem correspondenclc
"AB'"
"AB' ''.
17
1 report ztxl004 .
2 * cperacor r co
3 write / "'MBB " co
4 if 'AABB' co 'AB'.
5
6 write / " 'ABCD" eo
7 if 'ABCO' eo 'ABC' .
8
9
10 * opera dor: en
11 write / "'MBB" en
12 if 'AABB' en 'AB '.
13
14 write / " 'ABCD" en
325
INillS~ ~
co
eo
en
en
ea
3
4
0
4
0
4
A linha 4, urna comparacac co, e verdadeira. Portanto, sy- fdpos contern 4, 0 comprimento do primeiro operanda-.
A linh a 7, tambem uma comparacio co, e falsa por que vi contem
valores que nac existem em v2. Sy-fdpos contem 3, 0 deslocament o
com base em zero do pri meiro caractere em vi que nao esta em v2.
Embora as linhas 12 e 15 sejam as opostas 16gicas das linh as 4 e 7, os
valores de sy-fdpos nao serao alterados.
A linha 20, uma comparacao ca, e verdadeira porque vl contem urn
caractere de v2. Sy-fdpos contem 0: 0 deslocamento com base em zero
do primeiro caractere em vi que tambem esta em v2.
Na linha 24, vi nao conte m nen hum dos caracteres em
sy-fdpos contern 4: 0 comprimento de vi .
vz, portanro
A linha 30 e a nega~ao 16gica de urn teste de ca. ' AXCZ' contern urn
valor de 'ABC' e, portanto, urn teste de ca seria verd adeiro. Negar esse
326
EMTRADA~ Lista gem 10.5 A j nstru~a o case exe cuta uma serie
de
327
compara ~6es
1 report ztxlO05.
2 paramet ers fl type i default 2.
3
4 case fl.
when 1.
5
when 2.
6
when 3.
7
when others .
8
endcas e .
9
13
14
case vr ,
when ,,2 [ or vn ].
else.
16
end; f .
SAioA~
--- I
endcase.
onde:
vl OU '12 podem
ANiuSE ~
CA
A s Str ings de campo sao tra tadas como sendo variaveis do tipo c.
semelhante a if/ els eif. A un ica diferenca
A linha 6 faz a corr espo ndencia e executa a instrucao wr -t te imediatam ente depois dela. As insrrucoes when rema nes cen tes sao ignoradas.
e mu ito
fl = 2
fl .. 2
Case
elseif fl ,,3.
[ when ot hers.
fl "'l.
elseif fl .. 2.
15
when 1'3 [ or vn . ] .
is not 1. 2. or 3' .
.. 1'.
'" 2' .
" 3' .
10
wri te / ' fl
write I ' fl
write I 'f!
write / 'fl
e qu e em cada
t f /el s ei f, voce pode esp ecificar uma expressgo complexa. C om case, voce
pod e especi ficar somen te urn anico valor a ser comparado e os valores sao
sempre comparados quanto a igualdade. Urn exemp lo sera. for necido na Lista gem 10.5.
.
S
m
exit.
10
...
328
EHTRAOI~
Os seguintes po nt os se aplicam:
3 exit .
Sliol ~
Hi
ex; t ~ode ser ut ilizada em varies situacoes. Essa ins trucao p ode ter
Utilizando a
instru~ao do
Sintoxe do instruljOo do
A seguir, veja a sint axe da instru cao do.
do I vI ti mes] I vary ing 11 f rom s-cl next s-c2 ( varying 12 from s2.cl
next s2-c2 . .. ] ].
lexft .I
enddo.
onde:
IHiuSE ~
;:
1 report ztx~006 .
2 write: / ' Hi' .
4
!!
Modificar
de loop.
pr o cessam ento
6
enddo.
7 write: / 'after
=' ,
8
9 do 4 times.
wr i t e: / 'out er
loop, sv-tnoex =' , sy-tndex ,
10
do 3 times.
11
write : / ' in ner loop, sy-in dex - ", sy -f ndex.
12
enddo.
13
endoc,
14
15
"neve f t nhe
16 write : / " .
17 do 10 times.
18
write sy - f ndex.
19
if sy- index = 3.
20
ex; t.
21
22
endi f.
enddo.
329
330
loop,
l oop,
l oop,
loop,
l oop,
loop,
fn ner l oop.
after
. oute r
inn er
inner
inne r
outer
sy- i ndex =
sy-tndex =
sy- t ndex =
sy-index ;:
sy- t ndex ..
outer
sy-i ndex ..
sv- tnoex =
sy-tncex ..
sy- tn dex
sy-i ndex ..
sy-t acex ..
99
3
99
~,
1
1
,
,
3
,
1
3
3
,
1
3
4
1
3
3
-,
A s alteracoes [eitas 41.0 valor de sy-t ndex nao afetam 0 controle de loop.
Por exem plo, se voce codificar do 10 times e durante a primeira passagem do
loop voce configurar 0 valor de sy-f ndex como 11, ele mantera esse valor ate
que a instrucao enddo seja execut ada. N esse ponte, 0 valor sera configu rado
n ovam ente como 1 e, em seguida, incre mentadc como 2 e 0 loop co ntinuara 0
processa me nto como se voce nac 0 tivesse alterado em absol ute .
endt f.
enddo.
Se esse programa for executado , ele ira realizar urn loop infinite e a sessac
sera sincronizada. 0 termino da tarefa SAPGUI ou at e mesmo a reinicializacao
nao interrompera 0 programa, ji que ele e executado em urn processo de
trabalbo no servidor do aplicativc e nac em seu PC. Se voce reinicializar e
eferuar logon novamente, vera que (se estivesse no editor ao reinicializar} nao
conseguira nem ao menos editar ta l pr ograma. Sua sessfc de logon ainda estard
ativa no servidor do aplicativo e ainda tera. 0 bloqueio em seu c6digo [o nte.
Depois de aproximadamente cinco au dez minutos, sua sessac de logon ira
expirar e, enrao, voce conseguird editar seu c6digo-fonte novamente. Entretanto, 0 programa podera ainda estar sendo executado no processo de trabalho,
o que diminui a velocidade do siste ma. Finalmente, seu program a consumira a
capacidade maxima de CPU permitida em sua configurscac e 0 processo de
trabalho reiniciara por si s6 .
Para terminar urn loop sem fim, voce devers ter pelo me nos duas sess6es
abertas e que tenham sido criadas atraves do caminho de menu Sysrem- c-C reate Session. Voce devers inicia-las antes de executar seu programa. Se voce
estiver em urn loop infinite e nao tiver uma outra sess ao em execucao se ra tarde
dema is. As sess6es criadas ao efetuar novamente urn logon nao funcionarao.
SCRHNCAM ~ lnicie ogora a ScreenCom " How to Termi nate an Endless loo p".
3. Agora execute urn prog rama que contenha urn loop sem fim, como
ztxlooa. Voce vera uma arnpulheta quando seu ponteiro estiver sobre
a jan ela. Observe 0 num ero de sua sessao na barre de status na parte
inferior da janela.
4. Mantenha pressionada a TeclaAlt e pressione Tab vi rias vezes ate que
Existir jo oc asioes em que urn programa em execucto tera urn loop inte rminavel. A Listagem 10.8 mostra tal programa.
so vber interrompe-lo
I r eport thIOQ8.
2 do.
3
'Ilrite sy-teeex .
4
if sy-1ndeK .. O.
5
exit .
se
caminho de
2. Minimize sua nova sessao e a deixe no fundo ate precisar dela. Voce
ENTRADA ~ Lista g e m 10.8 Urn loop sem tim poder6 ser frustrcnte
voce n60
331
-~
334
-~
--
-- - --- -
7
8
9
10
11
12
13
I,
2,
3,
4.
5,
6,
12
13 write / "
14 do 6 times varyi ng fl from s-et next s-cz.
15
16
17
18
19
20
"
21
22
23
IAiDA~
SAiDA ~
AHillSE~
12
AHilll~ ~
fNTRADA~
valu e
val ue
value
val ue
val ue
value
if sy-index .. 6.
s -c6 .. 99.
else.
fl=fl*l .
endif .
ass ign component sy-tndex of structure s t o <f:> . H< f> i ndfca agora
write <f>.
Hum componente de s
enddo.
24 write / " .
25 do 6 times varyi ng f l f rom s- et next s-cz .
26
wrfte f1.
27
enddo.
I,
2,
3.
4,
5,
6,
335
1
2
2
4
3
6
4
8
5
10
99
6
conteudo de fl
336
S
m
~
whi 1e exp [ vary f1 f rom s-c1 next s- et [ vary i 2 fro m s2-cl next s2-cZ .. ]
extt ,
endwhl 1e.
onde:
exp
14
endwhil e .
15 write: / p,
sliol ~
AHiuSE ~
whi 1e
instru<;6 0
Os loops whi 1e podem ser aninh ados por um mimero infinite de vezes
e tambem podem ser aninh ados dent ro de qualquer ourro tipo de loop.
Se 1 e t estiverem ambos em bran co, a linh a 10 atr ibuira urn trace aos
do is. Se nao estiverem, a linha 12 atribuira urn ' X' ao flag done.
N a linha 14, endwhile copia os valcres de 1 e t de volta ao p.
337
338 I
(Igu ra 1 0 1
A instro~Oo
cont inue
do 10 times.'
if sy index between 3 and 8.'
continua,' - _
endif.,
write sy-index.'
enddo.
Z
-t
"
IAiDA ~
AHiuSE~
c ode:
A Lisragem 10.13 esemelhante a uma instrucao goto. Ela executa urn salto
para 0 final do loop arual. Est e programa remo ve caracteres duplicados, como
dois-pontos e barns invertidas, de um a string de entrada.
5
10
postttcn
primeiro
eatribuid o a n.
loop
: ou I.
posit ion
position
posi t ion
at
at
at
at
conti nue .
found
found
found
found
dupl1cate:
duplicate \
duplicate \
duplicate \
enddo.
1 2 9 10
endtf ,
13
Utilizando a
instru~a o
erep etido 19
check
A instrucac chec k e codificada dentro de urn loop. Ela pode atuar de fo rma
mu ito semelhante a cont inue, passando 0 con trole imediat amen te ains rrucio
de terminaqao do loop e desviando das in strucoes intermediaries. Diferente de
cont i nue, ela aceita um a expre ssjio l6gica . Se a expressao for verdadeira , nao
fara nada. Se for falsa, pularf para 0 final do loop. 0 efeito da instru cao cheek
emostrado na F igura 10.2.
Fi g u r a 10 2
A instru o check e
do 10 times.
check not sY_,-index between 3 and 8.
umoin~60
write sy-index.
continue
enddo.
.~
... -;.""
condition al. f lo
soltor6 poro 0 final do
loop se a expressoo
l6gica lor Io/so.
o c6d igo na Figur a 10.2 produz a mesma safda daqu ela apr esenr ada na
Figura 10.1:
339
340 I
SAioA~
1 2 9 10
S
Z
A se guir, veja a sintaxe cia insrru cao check. Pode ser util izad a dentro de um a
do, wh ile, sel ect au loop. (A ins rru cso loop sera abrangida no proximo
cap ft ulo.}
check
onde:
exp
5
6
7
cat e:
cat e \
cat e \
cate \
fo und
f ound
fo und
fo und
at
at
at
at
pos i t i on
posit ion
posi t ion
position
2
4
5
10
,
lrrrr.r.. As li nhos de 8 a 10 no Lisiogem 10.13 foram substituidos pelo lin ho 8 no
ANALISE,. Lisiogem 10.14. 0 progromo trobolho exotomente do mesmo maneira.
Efel to
exit
contin ue
check exp
1 re port zt xl014.
par amet ers p(20) defa ult 'e ::\ \ \ xxx\ \ yyy' .
"ceract ere atua l
3 dat a: c,
"pr6xi mo
cer act ere
n,
4
do 19 t i mes vary i ng c f rom p+O next p+l
var yi ng n from p+l next p-z,
check c ca ':\ ".
8
i f c = n.
9
write : I 'du plicate '. c. ' f ound '. 'at positi on'. sy-tnoex .
I.
endt f.
11
enddo .
12
Instru~ao
dupl
dupl
dupl
dupl
Na Tabela 10.7, as insrru coes exit, cont i nue e check serao cornparadas.
check exp o
341
onde:
vi
ie urn
342
'BAPH
10
11
12
1J
14
15
16
IncorTeta
/ (3)
/ (2)
o
. SAiDI ~
write 10 'H1' .
Hi There
HiThere
HThere
There
Hi There
H There
Hi There
Hi
The
123
123-
123
A Listagern 10. 15 ilustr a 0 usc das especificacoes simples de cornprimenta e posic;:ao na in st rucao wr ; te oMost ra tambern algumas das armadilhas.
A linha 3 representa um a regua de modo que po ssa ver a s mimeros de coluna
na safda.
Ilrlt... Listagem 10.15 Ut ilizoc;oo des e.spec tftcoc oes simpl es de com prim ento
EHTRADA,. e pos ic;oo no instru c;oo wri te
1 re port ztxlOl5.
2 data : f1 type p val ue 123.
3
f 2 type p val ue - 123.
4 write : / ' . ... +.. .. 1 +.. .. 2.... +.. .. 3.... +. 4 .
5
/1
'Hi '. 4
'There '.
6
/1
' Hi'. 3
' Ther e '.
7
/1
' Hi' . 2
There ,
8
/1
' Hi' . 1
' Ther e ' .
9
/2
'Hi ' .
"r her e" ,
INlllSE ~
f 2.
f2 .
+ 1 + 2. + 3. . . . + 4
fl.
fl.
fl.
f l.
123-
343
344
check exp sahara para 0 fin al do loop se exp for falsa. Quando exp for
verdadeira, check nao fara nada.
Na insr rucac wri te, a posi c;ao e 0 comprimento podem ser imediatament e esp ecificad os antes d o valor de saida . N enh um espaco
Resu m o
case proporciona uma eapaeidade semelhan re a if/ elseif, mas campara da is valores somente quanto a igualdade .
----:.. .-_----
IFa~a
P&R
comando /
gramacao.
fim.
Utilize as ins rrucoes exit, continu e e check para modifiear
same nto de lo op.
proces-
final do loop.
E reco rn endada
345
346
o
o
o
o
Teste
1. N a seguint e se!rao de c6d igo, alter e as instrucoes if para uma instTU!rao case .
write ' The number is fiv e. ' .
endt f.
if vI eq 10.
wri te 'The n~ber t s t en.'.
endt f .
i f vI <> 5 and vI <> 10.
write 'The number is not fhe or t en.'.
endi f.
Exercicio 1
Escreva urn programa que produza a safda da Figura.
"r" .."x
"".
1
' 1 2'"
S 6 .L ' ;
.. 12' _5."
'
~ L.I ".
1 ' t "
,t
u
U.
"
, I,,, S. , . ,.
'ZJ "~"
I"
tZ' .:;"
'~
1:1111I1"" "
j: 1 2 , . S ' ~ "
S
" ". S. l "
, 1Z .... ~'~
11
,~ '
U. ' ~'
".,
,,'n1il('o,
. S.1
~ t, .
""
'l, sl
l . '
1".SS "". .J,.'" ,_...
.. 1.l"
comprimento e/ou
Wo rksho p
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A se~ao Teste oferece perguntas para ajudar a solidificar seu entendimento do conteudo abordado e a se!raoExercfcio permite que voce pratique 0
que aprendeu. Voce pode en contrar as respo stas as perguntas do Test e e
exer cicios no Apendice B, "Resp oscas as perguntas e aos exerctcios".
347
11
Tabelas internas
Objetivos do capItulo
Depois de conduir este capitulo, voc e sera capaz de:
NOVO Ilrrrrrr..
Uma tobe/o interne umo tobelo tempo r6rio armozenoda no RAM do servtdor
TIlMO '"
do cplicotlvc. Ela criode e preenchido por urn progromo durante a execulj;oo
e e descortodo quando a programa termina. Como umo tobela de banco de dodos, uma
tobe lo interne co nsiste em umo ou mois linhos com uma estrutura identica, mas,
diferentemente de uma tobelo de banco de dodos, ela noo pod e armazenor dodos opes
a termlnc do prog rama. Utilize a tabelo lntemc como um ormozenomenfo tempor6 rio
poro a rnc nlpulccc o de dodo s ou co mo um buffer privado tempo r6rio.
hllp:// www.compU$.com.br
350 I
DO lU/JruS IHTERJiAS
NOVO.....
TUllO r
refe re-se
00
351
que voce adicione wi th header 1t ne dep ois da clausula occurs. Isso sera
ilustrado nas linhas de 2 a 10 da Lisragem 11.1.
A unica ocasho em qu e voc e criaria um a tab ela interna sern um a linha de
cabeca lho seri a n o caso de uma tab ela interna aninhada. Urna tabel a in te ma
aninhada nao pode ter urna linha de cabecalho.
~NnADA'" Listagem 11 .1 Ma neiros bosiccs de definir tab e la s inte rnes com e sem
,.. umo linha de cc becclbc
A linho de cab~o lho e umo string de compo com 0 rnesma estrutura de uma
TERMO
llnhc do ccrpc, ma s pede ope nas arma zenar umo linho (mica. E urn buffer
utilizodo pora a rmozena r coda registro ontes que ele sejc cdicionodc ou coda registro
ossim que ele e recuperodo do tobelc Inte rne.
NOYO .....
A Figura 11.1 mo stra a defini cao de u ma tabela"in terna denorn inad a it.
Fi gura 11
mostrodo no porle
svperiO;d" sto ngvru.
A Iinho de co~olho
e 0 corpo tombem sec
mostrudos.
1
2
3
4
5
6
7
8
9
10
report ztxllOI.
data: begin of 'i tl occurs 10,
fl.
f2 .
f3,
end of HI.
data i t 2 like ztxl fal occurs 100.
ca be~a lho
it
it
A Figura 11. 1 con tern urna tipica dein iljaa de tabela in tern a. D efin e duas
coisas: 0 corpo de u ma ta be la interna e urna linha de ca b ecalb o . A
confusao surge porque ta nto a corpo como a 1inha de cabe cal h o sao
denominado s it. it e 0 n om e do co rpo e ; t e t am bem 0 nom e cia linh a
de cabecalho. 0 loc al onde voce coloea 0 nome i t em seu c6digo determina
ao que voce esti se refe rindo.
Q uando utilizado em uma ins tru~ao de atribui~ao, it sem pre ira se refenr
alinha de cabeljalho. Por exernplo. i t -fl '" I AI refere-se ao co rnponente fl da
~I
ENllADAIlrrr.r.. Lista g e m 11 .2 Estes defln tcces criom tobelos intemos com e sem umo
,.. linho de cc becclhc
1 .report ztltll02.
2 dat a: b~9in of itl occurs 10,
n,
4
5
f2 ,
6
1
end of
"t en
UI1lI
l1nha de
cabe~a'ho
f3 ,
ru .
1J
n~o
cab ~ al ho
ca be~alho
,.
"esse ~ 0 motivo per que v . deve uti l1zar
"a i nstru ~ lo inc lude
3.
31 data: begin of 1t 9 occur s 10,
32
f1 li ke sy~ i nde x .
33
end of 1t9 .
353
354
OIA l),J,,,UlIHTERNAS
EHUADAlilrr.. Lista g em 11.3 Este progra ma adiciona tres linhas em umo tabe la
!:!!
on de:
In
1'10
it
oS
'XX'.
8 append 1t to it .
-,
10 it-fl 'B'.
11
1t~f2
'YY'.
12 append it .
"0
13 write ~ / 'sy-tabix -" ,
14 it-fl 'e' .
15 append it.
"a
16 write: / "sy- tebtx ~',
SAlOl ~
sy-tabix ..
sy-tebtx
1
2
sy-tebtx
INlllSE~
NOVO lrII...
m.MO'"
f2.
Figura 11 2
Estoss60 os instrues
de otrfbuiqao, que se
referem a linho de
cobeqolho.
it-fl 'A' .
it -f2 'XX' .
Iinho de ccbecclhc
it[l]Bt.~1
fl
co rpo
f2
till ~
Ii ~
~ BJ
355
.........................-......-""'I
.....I. .-. -.
3S6
I I I
I I . . . . . .W .w. ~ ~ .. - - -
D~ l),TASEUllrmRHAl I
Fi gura 1 1 3
append it.
Fig lirA 11 . ,
A crec de trcbolho
padrfJo i 0 Iinho de
co~rno. Aqui,
ltnhc de ccbecclbc
it[l]~
11
f2
...
impJicitomente
ocrescerrtodo eo corpo.
""'pend i t to t t
copio 0 conteUdo de
Iinha de ccb~lho it
port!
corpo
it
it .
tirl ~
Si ~
~~
Figura 11 4
1t~ f2
Estos instru~6es de
cmbuio;oc
sobrescrevem 0
conteUdo existente do
linho de cobeljOlho i t .
1t-fl
Figura 11 6
o valorcJo
componente do linho
d. a>bo<olho It-Il
~ sobrescriio. 0 yo/or
de it- f Z permonece
inolterodo.
' E",
linho de ccbecclbc
it .
,]
fl
f2
'yy' .
linha de ccbecclhc
1t~~1
fl
f2
CO"",
it
. .
~~
~~
~ ~2!
.. .
append i t .
Figura 11 7
Aqui,
conteVdo do
6reo de trobe/ho
imp/fcifO ~
oaescerdodo 00
""PO.
A linha 14 altera
F igura 11.6).
occurs nao limita 0 mlmero de linhas que po de ser adicionado atabel a intema.
Por exemplc, se voce especificar occurs 10, sera pos sfvel ccl ocar m a is de 10
linhas na tabela interna. numero de linhas qu e voce pe de colocar em uma
357
D~ lUABlLlS INTERNAS I
de memoria
Se
adicionad a na tabela intema, mem 6ria su ficiente e alocada a fun d e armaze nar
o numero de linhas especificado oa clausula occurs. Se vo ce utilizar recursos
alem da capacidadedessa memoria, mais sera aloc ado, conforme necessdrio.
Altemativamente, voce pode especificar occurs o. Se fizer isso, a sistema
alo ca.cl paginas de mem6ria de 8KB d e uma s6 vez, Entretanro, Dio hi nenhuma
vanragem em utilizar occurs 0 a na o ser pelo fate d e que eurn p ou co mais facil
codificar occurs 0 do que estimar 0 tamanho da tabela intema.
Para maximo des empenho e mfnimc desperdfcio d e me m6ria, escolha urn
valo r occurs semelhante ao numero maximo medic d e linhas na tabela. Por
exemplo, se na maioria das vezes a u bela interna for preenchida co m urn
maximo d e 100 Iinhas, mas de vez em qu ando fo r p reen chi da com u rn maxim o
sistem a ira
Duas instruc;6es sao comum en te utilizadas para a leitura dos dados a partir de
loop at
read tab le
Utilize loop at para ler vdrias linhas da tabela interna. Utilize r ead tabl e
para ler u ma enica linha.
o sistema utiliza a clausula occurs apena.s como uma direrriz para determinar quanta memoria deve ser alccada, N a primeira vez qu e um a linha
359
Sintexe de
.!!!
E
m
instru~lio
loop at
onde:
,
I
360
D~ lUABEllS INTERMAS
exp
As linhas sao lidas cia tab ela intema, uma por vez, e col ocadas em
sequencia na area de trabalho. As linhas de ccdigo entre l oop at e endloop sao
executadas para cada linha recuperada. 0 loop termin a automaticamente
quando a ultima linha e!ida e a instru!jio ap6s endl oop e entao execurada.
Os seguintes pontes se aplicam :
Ap6s endloop, sy-subrc sera zero se quaisquer .linh as tiverem sido lidas.
Sera difer ente de zero se nenhuma linha tiver sid o lida a partir cia tabe la interne.
A Listagem 11.4 e expandida a partir da Lista gem 11.3, executando urn
loop e escr even do as linha s da eabela intema.
f 2(2) ,
5
end of it.
6 1t~ fl ' A' .
7 1t - f Z ,. 'XX ' .
8 append it t o it .
"ecrescente a linha de eabee;alho IT ac coree IT
9 1t ~fl 'B'.
10 1t-f2 'VY '.
11 append i t.
0 mesmo que a li nha 8
12 i t -fl ' C' .
13 append it.
"e t abela ln terna agora cont bJI t res H nnes .
14 sy-tabix sy- subre 99.
15 l oop at it.
. 0 me5mo que: lo op at it into i t
16
write: / sy-tabix. it-fl . it-f2.
17
endlo op.
18 wr1t e : / 'done. sy-tebt x - ", sy-tabix .
19
/ "
sy-subrc -" , sy-subre.
amal.
1 A XX
2 B YY
3 C YY
done. 5y-tab; x ..
sy-subrc .. .
IMius!~
99
361
. _- _...
362
-~
..
--:-~~
DIA 1UABEUSINTEWS
ant erior.
A linha 16 e executad a, novamente escrevenclo as valores cia linha de
cabecalho.
Na linha 17, 0 loop sera repetido ate que codaslinhas sejarn recuperadas
da tabela interna. Q uan do a Ultima linha tiver sido Iida, ela ira parar 0
,
I'
363
25 loop at f t f rOlll 2.
"mesmo que: loop at it f rom 2 t o 3.
26
write: / sy-tebtx, i t - fl . It - f 2 .
27
endloop.
28 s kip.
29
30 l oop at it from 2 where fl 'C' .
31
write : I sy-tebtx , it-fl. it-f2 .
32
endl oop.
loop.
Na linha 18, sy- tabix foi restauracla para seu valor original antes da
execucao do loop . Sy-subrc contem zero, indicando que as linhas
. for am recuperadas da tabela interna pela instrucao loop at.
2 B YY
3 C YY
SliDA ~
1 A XX
2 B YY
2 B YY
3 C YY
IMiuSE ~
1 report ztxl105 .
2 data: begin of it occurs 3,
5
6
7
8
9
10
11
12
13
fI(l).
f2(2),
end of it .
it-fl. 'A' .
it-f2 'XX'.
append it .
it-fl '8 ' .
1t f2 ' YY'.
append it .
1t ~f1 ' C'.
append it .
J
4
C YY
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
~o
'---
--1
-.
-.. -T "
364
-.-..-.-.
I -I
I 'I-I " I I .. I I I. __ I
I .I"" . ~..._.
DIA lUABELlSIHTERH<5
Se ta nto comp ari ng com o tran sporting estiverem especificadas, compar i ng devers vir primeiro .
Os seguintes po nt os se aplicam :
Tabe fa 11.1 lnstrucees que podem altero r a processa mento de loop pa ra tobelos
inter nes
Instru~ao
Efeito
Termino
ext t
'flO pode
Se voce nao espe cificar uma area de trabalho, a sistema utilizard a linha
de cab ecalhc como padrac. P or exemplo, r ead table it into it l~
uma linha d..a ta bela intema it, colocando-a na linha de cabecalho ; t.
Uma inserucio equivalente e read table ; t .
continue
check exp
Ulilizanda a
a di~oo
index
NOVO...
m.MO r
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. _
on de:
e0
it
'flO
i
verisvel que representa urn
mime ro de linha relative . Pa r exempl o, 1 significa a p rimeira linha na
t abela, 2 significa a segunda e assim p or dian te.
e
cmpexp euma expressao de co mpa racao que represe nta u rn teste a ser
keyexp uma expressjio que representa urn valor a ser localiz ado.
EIl1lADA ~ ListCi gem 11.6 A odi<;ao ; ndex no instru<;ao read ta bl e locclizo uma .
.
f2
ty pe f.
f3(2) type c,
f4
type p,
end of it.
wa like it.
s
10
11
12
13
14
15
16
17
18
365
I
366
20 wr ite: I .
21
/ 'sy-su bre -" ,
22
I "sy- ta bt x - ",
23
/ it-fl . it-f2 ,
24
/ wa-fl , wa-f2 .
sy- subrc ,
sy- ta bh..
ft - f 3. it f4 .
..a- f 3. wa-14.
21
. 26 re ad table i t i ndex 4.
: '27 wri t e: I .
28
I ' s1-subre - ", sy-suerc,
29
I ' sy- tlbix -", sy-tabi x.
30
/ i t -fl . it-f2, u -rs, it-14,
31
/ wa-fl . wa- f2 a- f 3. wa-t4.
Expn:ssao ke y .
c1
vi c2
Efeito
v2 . .
sy -s ubrc
sy-t ebt x
20
8B
sy-s ubrc
sy- tll b1x
2 8B
1 AA
20
10
sy-s ubrc
sy- ta bt x
10
2
1
(tI) vi (12)
cabecalho.
A linha 8 define uma area de trahalho wa igual a linha de cabecalho de
it.
w.
2
1
v2
. w.
0
2 8B
1 AA
20
w__ w w w -
No verseo 4, as co nversees necessaries poro c s tr&s primeiros 8)(pressOes key no Tabelo 11 .2 sOo executodas no mesme ordem de
precedenclc des utilizodcs poro os expressoes 16gica s. Em sistemos
onterio res, os ccnversc es ercm executodos convertendo 0 valor a
direita paro 0 tipo de dado e cornp rimento do componente a esquema.
367
~. I I I I
368
HRENO' eM 21 01"
.. I I
..
"
'
O~ l UlSEUS INlIiNlS
Resultodo
sy-s ubrc
sy-t abi x
Indice do
Indice do linho
linha correspondente
com 0 pr6ximo
umo solicitodoexiste
key meier
ncmerc de linhos
em1t + l
32 clear wZ.
33 w2~fl - '10' . w2-f3 .. ' M ' . w2~f2 .. w2-f4 .. 1.
34 T'l!ad table it with key - . '112 .
35 write : t,
36
I ' s1 - suhr e - ", sy-subre,
37
/ ' sy ~t a b h: . ', sy-tebtx ,
38
I it-fl. it-f2. it-f3, it-f4.
39
oW w1-fl .. ' 20 ' . w1-f2 .. 2.
41 read table it into w2 with key wI.
42 write:
43
/ "sy-subrc - ", sy-subre ,
44
/ ' sy- t abfx -'. sy.tabix.
45
I it~fl. it-f2 , u-n. it-f4 .
t,
Listagem 11.7 Utiliz ondo uma expressdo key, voce pede procure r por
urne linhc espeoftcc ndo um valo r em vez de urn Indice
.,
sy-subre ..
sy-tab'l x ..
30
a
3
3ee
II
II
II
23
24 f .. ' F2' .
25 read table it into w2 with. key (f ) .. 2.
26 write: t ,
21
I ' sy- subre ..', sy- subre ,
28
I ' sy- t abb - ", sy-tebtx,
29
I i t - fl , it-f2 , it-f3, it-f4.
30
I w2-fl . w2- f2. w2-fJ , w2-f4.
AHlllSE ~
0
2
3 CC
Z 88
30
20
l.\iDA~
sy-suarc ..
sy - tabix ..
14
31
"'PH
EHTRlDA~
"
51-suhre ..
sy-tabh ..
10
loA
sy-subrc ..
sy-tabix ..
10
loA
3
2
cabecalho.
. A linha 8 define uma area de trabalho wi semelhante aos dois primeiros
campos d.a linha de cabecalho i t .
A linha 9 define uma area de trabalho w2 igualao cornp rimen to inteirc
da linha de cabecalho it.
As linhas de 15 a 17 acrescentam tres linhas
369
370
JI' ~ 1J
........
~ ~ - - - - - ~ - - ------ - -
Utilizando a
adi~ao
bi nary search
Sempre que utilizar a adiliao with key, voce tambem devers utiliz.ar a acli~o
bi nary search, 0 que faz com que a linha $eja localizada com 0 uso de urn
algoritmo binario de pesquisa, em vez de uma varredura de eabela linear. Isso
resulta nos mesmos ganhos de dese mpenho dos alcancados com a pesquisa de
um a tab ela de banco de dados arraves de urn Indice . De .an tem ao, a tabela deve
se r classificada em ordem ascendente pelos componentes especificados na
expressao key (veja a seguin re se~ao sobre a classifica~o) .
371
as
ig no ra d a .
1 report ztxllOS.
2 data : begi n of it occurs
3
fl(2 ) type n,
type f.
4
(2
5
f3(2) type c .
6
f4
type p,
1
end of it .
3.
c a ~o de cerect er e
campo nltlll(!r1 co campo de carac t ere
campo nLnt!ri co -
par t! de default
nao (! part! de default
parte de default
nlo f: part e de default
key
key
key
key
"8
9 i t - fl '10' . it-f3 - 'M' . it-f2 - it-f4 l. append it.
10 it- fl ' 20' . 1t -13 ' BB' tt-fz it-f4 2. append it .
11 i t - fl ' 30 '. i t~ f3 ' CC'. it-f2 - i t-f4 '" 3. append 1t.
12
13 sort it by fl f 3.
14 clear it.
15 i t(2) ' ". itf3 ' BB'.
16 N!ad tab le it bfnary search.
17 write: I ' 5y-subre -" , sy-su bre.
I ' sy -ta_b ~_x -" , sy-ta bb.
18
19
I n.. ", it-fl. 'fZ" ' . it-f2. ' f3.. 1t -f3. 'f4-' . it-f4.
20
Nenhuma
adi~ao
NOVO.... Se nem urn 1ndex nem uma expresseo key esti....erern espedficados, a tobelo
TERMO ~
se r6 . . orrida desde 0 inlcic quanta a uma linha que correspondo co m Defouh
Key ed stente no ljnho de ccbecclho. Defau lt Key e umo key imogin6rio co mpost o de todos
a s co mpos de ccrc ctere no linha de ca bec;olho (tipos c, d, t , n e xl. Um va lo r em bronco
e m uma coluna Default Key faz com que todos 05 vclores noquelo cclunc sejcm
correspo ndentes . Depois, as vclores d e sy - sub rc e sy -tebt x scoconfigurodos do mesmo
moneiro co mo normolment e oeorre depois de uma read tabl e utilizondo umo expressoc
key.
(Culd;do
Some nte espoc;os em bronco em um ca mpo Defou h Key ccrrespcnderiio com todos os valores.l sso significo que voce nCio pod e r6 e liminor
os tipos d, t , n e x e abter umo correspondenco - isso fo r6 co m que
as mesmos se jom con figurodos como zeros e n60 com o espoc;os em
bronco . Voce deve fo~ar espOl;OS em bronco pora dentro desses
compos a fim de que e les ca rrespondom . lsso ped e se rfeito utilizondo
uma string de compo (veia 0 exemplo segu inte), utilizondo um subcam po au uti[izondo um sfmbolo de compo (consulte a sec;oo onterior
quanto a simbolos de co mpo pa ra abter mois info rmol;Oes).
21
22
23
24
25
26
cl ear i t .
it-fl - ' 30' . it-f3 - 'M' .
read tab le it binary search.
write : I ' sy- subrc - ' , sy-s ubrc,
/ '-sy-tahix - ", sy-tabix .
I ' fl - ' , itfl. 'f2-' . u-ra. 'f3- '.
sy-suhrc
sy-tahi x fl 20 rasy-s'ubrc sy-tab1x fl 30 f2=
lIIillSf ~
u-ra,
2
2 f3- B8 f4-
3
0 fl - M f4 "'
atabela intema.
~ ,
...
-'_
.~
,~
~ ..-y
372
-. -Y-:Jr-'"
..
D~ IUABEill INTERNA5
e do
tipo n e,
Cmpe.xp
fI f2 . .
all f ields
no fi el ds
Nenhum compo
A linha 22 coloca urn '30 'e ' AA' nos campos D efault Key fl e f3 .
A linha 23 executa uma pesqu isa biriiria qu anta a f1 .. '30 ' e f 3
' AA' . 0 valor de ret orno de sy-subrc e 4. Isso ind ica. que uma linha
correspondente nao foi encont rada e sy- ta bi x contem 3 - 0 ndmero
conteudo da linha de cabecalho p erm anece
de linhas na tabela.
inalterado, au seja da mesma forma como estava na linha 22.
Utiliza ndo a
1 report ztxl109.
2 data: begin of it occurs 3.
3
fl(2) type n,
4
f2
type t ,
5
f 3(2) t ype c.
6
f4
type p,
7
end of it , .
8
wa 11ke it~
9
10 it-fl ... ' 10' . i t -f3 'M ' . t t -f2 it- f4 1. append it .
11 it- f l ' 20' . itf3 ' BB' . i t f2 ft - f4 2 . append it.
12 ft -fl z ' 3D' . it-f3 '" 'CC' it -f2 1t -f 4 3 . append it .
13
17
odi~ao
compa ri n9
22
23
/ i t - fl, i t-f2. it-f3 . 1t.f4.
24
I wa- fl , wa-f2. wa-f3 . wa-f4.
25
26it wa.
27 reed tabl e it with key f3 ' M' cOlIIpar ing all f1eld s.
28 write:
I,
29
30
31
32
va lor de sy-subrc
.
373
lI!!!r Y
..
I
314
1J!II'
-----
!!'
!!!
20
2
2
2 BB
sy-subrt: ,.
sy-hbix ..
2D.
2 BB
10
I M
IHillSE ~
sy-subrc ..
sy-tab1x ..
10
10
M
M
Descri ~ Ci o
f1 12 .. .
all f i el ds
no f ields
2
1
A linha 26 transfere
2:
Uliliza ndo a
transporti ng
D~IU"EUSlllmNA5
--
nd i~c'io transporting
afeca 0 modo como campos sao movid os da linha localizada para
Essa adi~ao sera uril,se voce quiser apenas testa! a existencia de uma linha
em um a tabela interna sem alterar 0 conteddc cia linh a de cabecalho , Por
exemplo, ant es de acrescentar uma linha, voce pcdera querer determiner se a
1inha ja exis te na tabel a interna. A Listagem 11.10 fo meee urn exemplo.
MlADAIItrr.. Listagem 11 .1 0 A mo ne iro mo is ejlclente de lnserir linh c s em umo
,. tcbelc interne clcssrhccdc ma ntendo a orde m de c1 ossificac;oa.
~p ort
ztxlllD. _. .
a
9 1t ~ fl .. '4 0' . it-f3 .. ' 00'. 1t - f 2 .. itef4 .. 4. append it.
10 i t -fl .. '2 0' . i t - f 3" ' BB'. i t - f 2 " it-f4" 2 . append it .
u
12 sort it by fl .
13 do 5 t te es.
14
i t -fl .. sy- i ndex ... 10.
15
itef3 'XX'.
16
it-f2 it- f4 = sy- tndex,
17
re ad ta ble i t
18
with key fl .. i t -fl
19
binary sea rch
20
t ransporting no field s.
21
t f sr -s ubrc <I> D.
22
. in s ert i t i ndex sy- t ebt x,
23
endif.
24
enddo.
25
315
376 I
D~ IhTABElAS lNTERltAS
26 loop at H .
27
~rit! : I it-fl .
28
I!ndloop .
u -ra,
o c6digo
SAiDA ~
DOl Listagem
10
20
IXX
lBB
1
2
30
3 XX
4004
SO
5XX
Se nenhum componente for especificado, a t abela interne sera classificada pelos campos Default Key (todos campos de tip o c, 0, P, d e t )
em o rdem ascendecee.
As linhas 9 e 10 adicionam duas linhas em i t. (Elas estfo propositadamente fora de ordem para exemplificacao.}
A linha 13 executa urn lo op eineovezes . Cada vez que ocorre urn loop)
ela eria uma nova linha para it e a cc loca na linha de cabecalho (linhas
14, 15 . 16).
"
Classificando
Para classificar a conteado de uma tabela interns, utiliz e a instrucao sor t. As linha s
podem ser c1assifieadas par urna ou mais colunas em orde rn ascen dente ou
descendente. A pr6pria sequ encia de classifica~o po de tam bern ser modificada.
Sinloxe do
2!
Z
instru~ao
sort
on de:
11 e /2 sao os compcnentes de i t.
ENTUDA IIltr.. Li st a g e m 11 .11 Utilize 0 instrut;60 sort para reorganizer as lin has de
~ uma tobelo intemo
1 report ztxllll .
2 data : begi n of. it occurs 5.
3
i 11ke sy- t ndex,
4
t,
5
end
it.
6
alpha.(5) value ' eBARB' .
7
S do 5 t 1mes vary i ng it-t from a.l pha+O next alp ha+l .
9
1t -1 "' sy- tncex.
10
append it .
11
enddo.
12
13 loop at it.
14
write: / f t - t , it-t o
15
endloop.
16
17 skip.
lS "sort i t by t.
19 loop at i t .
20
write: / tt-f , it-t o
21
endloop.
of
"
23
24
25
26
27
28
29
ski p.
sort it by t .
lo op at it .
write : / t t -t , it-t.
endl oop.
skip .
377
378
30 sort ft by t i.
31 loop at it .
32
write : / 1t -:i . t t-t .
33
endtccp .
3'
3S s kip .
36 sort 1 t by t des cendi ng t
37 --meSSJO que: sort i t descend i ng by t 'I as ce ndin g.
INillS! ~
cinco linhas.
A linha 6 define alp ha com o uma variavel do tipo c, comprimento 5,
e the d. urn valor padrao.
38 l oop at i t .
39
sort it.
44 *mesmo que: sort i t by
45 l oop at 1t .
46
wri t e : I i t - t o
43
47
ira conter urn a letra de al pha e 0 valo r de sy-t ndex quando a linha for
acrescentada.
40
41
42 skip .
t.
endlo op.
,,
1 C
SAIDI ~
3 A
4 ,
S ,
,,
A
., ,,
3 A
S ,
1 C
,,,
A
, ,,
1 C
S ,
,,
,
A
3 A
Ordem de clcsslficcceo e a
ad i~ci(j
as text
Dentro do sistema aperocio nol, cedo carodere que vod ve na tela e rep resentodo por um vclor numer icc . Duronfe umc clossificoc;oo, 0 valor ncmertcc
do ccrcctere de termino 0 ordem resultcnte . Pe r exernplc, quondo um progro ma AW/4
e exec utod o e m uma plctcl ormc ASCII, 0 letrc 0 tem um volor decima l ASCII de 111 e p
de 112. Portonto, p vern depois de 0 no seq Oencia de d ossificoC;ao. Esso seqOAncia de
cla ssificoC;co e denominodo sequencia de c1ossificoC;60 bin6rio.
IOYO Ill...
rnMO ~
379
380
I'
skip .
set loc al e la nguage '0 '. "Equival ent e I ace n t ua ~ ! o em alemlo
wri te : I ' sy- la ngu- ' , sy- bngu.
sort it as text.
"as te xt aqui se ap11ca a todos os componentes de t 1po c
*mesmo que : sort i t by t as t ext .
Z2 loop at it .
Z3
wr a e: I i t-to
Z4
endl oop.
17
18
19
20
21
classificados.
A adiliao as text modifica a ordem de classificacao, de modo que as
caracteres acentuados sejam corre tamenre classificados. Com as te xt , a
sequencia de classificacic binaria mo eurilizada, Em vel. disso, a ambiente de
text o determina a sequencia de classificacac.
NOVO...
illMO "
sy- l angu- E
H19g1e
Hoffman
Hubbl e
HOl lilian
sy-l angu- 0
H19!lle
Hoffma n
HOll man
Hubble
IHiJ.ISE~
1 report ztxlll2 .
2 data: begin of it occurs 4,
3
t (30).
4
end of it.
S
6 i t - t 'Niggle' .
7 f t-t ' Hoffman
8 f t-t 'H6l1man'
I.
append it .
append it .
.Ippend i t.
NTlADI~
append i t.
10
,.
382
-.. -
~o
code.
---J_
DlA l1:TABEUS lNIDHAS
IFa, a
L--.:-
383
tidas de classificacac sao A-Z, a-z e 0-9, mas n~o necessariamente nessa ordem.
Utilize a instrucao r ead table para [ocalizar urna unica Iinha na tabela
inte rna. Utilizando a adi!;ao inde x, voce pa den. lo calizar uma unica
linha peio numero de linha relative . Essa e. a maneir a mais eficiente de .
localizar uma linha. Utilizando a adi !;ao wit h key, voce poderf localizar
uma linha especifica ndoum valor a ser localizado. compari ng derermina
se os valores na area de tra balho sac diferenees dos valores na linha
localizada, transporti ng impede atribuicoes desnecessarias au
Resumo
A instru~ao sort classifica uma tabela interna por componentes ideatificados . Se nenhum componente t iver urn nome, a tabela sed classificada por seus campos D efaul t Key (t ipos c, n, o, t ex).
P&R
loop.
OOI.lDI~
Lista g e m 1 1.1 3 Definindo umc tobelo Interne com urn tipo definido
pe lo usu6rio
1 report zt xl1l3 .
2 t ypes: begin of my_type,
3
fl .
4
f2 .
5
end of my_type.
6
t _1t type. lIy_ty pe occurs ID.
7 data i t t ype t_ 1t.
--- -384
OIAll :TAI!8.ASJNTERHAS
Nac hi nenhuma vanta gem em utilizar os ti pos de tabela in terns da m ane ira m ostrada na Listagem 11.13. Os rip os serao
a teis som ente se vcce os uri lizar p ara definir mais de urn obj eto
de dados. Nessa li stagem, ap en as u rn objeto de dados e defi nido
do ripo t_it. Seria mais simples, nesse caso, tirar as instrucdes
type s e criar toda a definic ac utiliz ando data.
Teoricamente, os tipos serdo uteis se voce precisar definir multiples cbjer cs de dados que sejam iguais. A List agern 11.14 most ra
tres maneiras de definir multiplas tabelas intern as: utilizan do
apenas data (clades), utilizando t ypes e utilizando uma estrutura
doDDIC.
!N1IlDI~
Listagem 11.14 Deflnir multip les tc belcs internes com t ypes simplificerO
o~ definir;o es
1 report ztxl113.
disponlve l para reutilizar;oo denf ro de multiplos prog romas . Em minho oplnlcc , utilizor
uma estrofvrc sere bem melho r do que utilizer umo definir;oo types .
Existe apenas uma coisa que urn tipo pode fazer e uma estrurura nao: ele
pe de canter a defini~o pa~ uma tabela int ema aninhada. Som ente n esse caso
eu utilizaria urn tipo. Em rodos os outros cases , um a estrutura data begi n of
ou l t ke a no DDIC seria ideal.
Workshop
Teste
1. 0 qu e confi gura urn limite para a qu antidade maxima de mem6ria
est en dida que pede ser alocada por uma tabela -intem a?
2. P or que nao utilizar occurs 0 se voce pretende arm azenar menos que
8 KB em uma tabela intema?
f2.
6
7
end of it_la ,
t t_lb li ke i t _la occurs 10 wtt h header li ne,
i t _Ie l 1k.e i t _la occurs 10 wt tl! header l i ne.
3. Voce pode utili zar a instrucao rea d tab' e para Ier as tabelas de ban co
de dados ?
I.
11 Defi ne mats 3 tabelas internas 1denti cu ut ll i zando TYPES
12 types : begin of t _ ,
13
fl ,
14
f2 ,
15
end of t _,
16
t_it t ype t_ occurs 10.
17 data : it_21 type t_tt.
18
it_2b type t _it ,
19
i t _2c t ype t_1t.
Exerdcio 1
Exiba e explique as convers6e s que oco rrem
Listagem 11.15).
i
l
r
~o
,.
estrutura do ODI C
10 with oI!eader 11ne,
10 with header I t ne,
10 wit h header Hne.
ANALlS~ .... Dos dais primeiros metcdos, uma qcestec de cpinieo direr qual
clc rc: oenhum parece termuitas va nta gens sobre a outre. Acreditc qve
e0
0
ma is
terceirc
metcdc, entretanto, seic 0 preferido. E o ma is clorc e pore ver 0 definil;e o voce podero
simplesmente da r urn clique duplo no nome da estruturo do ODIC. Ao visua lizer a
estrutura, 0 que voce estero venda e muito ma is significativo do que umo definir;eo do
ABAP/4 ; hover6 urn texto curto para codo eleme nto de dodos e um pora a pr6pria
estruiuro. Essestextos pode m temb em ser programa dos . Alem do mais, 0 estrvtura estorO
385
-- -
-- -
-- -
16
ft-t2
11
18
19
r ead table 11
~th key fl ,; tt-fl
binary searc h
transporting no fi eld s.
11 sy-subrc <> O.
insert it i ndex sy-tebtx .
endif.
20
21
22
23
2.
enddo .
25
26 loop at it.
21
write: I it-fl. it-f2 , u-n, f t - f 4.
zs
endloop .
12
-,
"
hIlpJ I_.CDmpus.com.br
~'i '" ., .~ -
~
.....0
"
..5t
388 I
389
conteudo da tabela
if i t[ ) ts tntttel .
describe t abl e
append 1i nes
in sert li nes
editor- cal l
ins ert
Se 0 te ste for verdadeiro, a tab ela interna estara vazia. Q uando false, ela
Determ inando
interng
fre e
del ete
clear
re fr esh
append sor t ed by
S o n de:
ca ll ect
Para de terminer
modi fy
it
sy-t f f l l
sy.tleng
Namero de linhe s
Ccmprimentc de ume llnhc em bytes
sy-tcccu
I
I'
I
\
........ ~ . . - . . -
11'
11'
11'
INltIS~ ~
1 report ztx1201 .
2 data : begi n of it occurs 3,
3
fl val ue ' X' ,
4
end of it,
5
n type 1.
6.
7 1f H [ ] is i nitia l .
writ e: I "tt is empty ' .
8
endif.
9
10
11 append: tt , it , tt .
12
j tl [ ] .
16
17 wrtte: I
18 describe
19 write : /
20
I
21
I
sy-te btx.
sy-tfil1 ,
5y-t1eng,
sy-tcccu .
it i s empty
it i 5 not empty
number of r ows from
number of rows from
l engt h of a row from
occurs val ue
from
sy-tabix:"
5y-tfi 11:
sy-tl enq:
sy-tcccu .
..1."' __
391
~IIIIIIIIIII - - - - l
oa12,lABEUS IKTEl<NASAVAN\ADAS, PAm1
Sintoxe do
Utilizondo
0 instru~cio
append 1i nes
III
!,
cede:
t t l e i t2 sao as
nt
Se nem from nem to forem especificada s, a tabela inte ira sen acrescentada.
.
Depois que a instrucio append 1i nes for executada, sy- tebt x iracanter
o mimero de linhas na tab ela.
c.n
Utilizondo
0 instru~cio
insert 1i nes
insert 1i nes
i nse rt lines of ttl [f l'Oll nil [t o nt] into tt2 [index nb].
onde :
l.inhas de cabecalho.
ENTRADA'" Ustagem 12.2 Este pragrama copia as dodos de umo tabelo interne
~ para outra utilizondo os instruc;6es append lines e i nsert lines
1 r~port ztx1202.
2 datil : best n of i tl occurs 10,
Utilize r append l t nes sera de tres 0 quotro veees mois rOp ido do que
utilizor append poro odicio nor os linhos umo de codo vez.
instru~ao
fl.
end of lU
HZ 1i ke i tl occurs 10 with header 11ne,
alph a(lO) val ue ' A"BCOEFGHIJ ' .
11
12 append lines of it! fTOll 2 to 5 t o it2 .
13 l oop at ttz ,
14
write uz-n .
15
endloop.
16
17 i nsert j tn es of it! fJ"OOl 8 i nt o it2 t ndex 2.
393
~~~~~~~~~~~~ I I I I
'"
394
DlllUABlliS INlERNASAVAll(AIlAS.IARTn
18 ski p.
19 loop at ttz ,
Compo rg ndo
20
wrtt~ itl-fl .
21
endloop.
22
23 l oop at 1t2.
24.
if t t Z- fl >. ' E'.
26
27
i f itI[] i t 2[
end1f.
endloop.
29 skip.
30 l oop at tt2.
31
writt!! 1t2-f1.
32
endloop .
33
34 sk i p.
35 i t2 [ ] i tl [ ] .
Utiliza ndo a
endloop.
1.
instru~ao
edi tor- ca l l
A instru~ao edt t or- call exibe 0 co c ceudo de urna tabela interna para 0 ususrio
em urn editor se m elhanre 41.0 edit or de c6digo-fonte do ABAP/ 4. E uti! para
depura.~o e como uma interface simples a fim de permitir 41.0 usuirio digitar e
modificar os dados em forma de tabelas.
8 C0 [
BH IJCO E
B A H A l A J CD A E
!!!
Z
A BC D E F G H I J
AHiLlS~
comeadc de
36 loop at ill.
37
write rez-n.
28
38
25
2.
Na linha 24) se a Ietra em it2-fl for maior que au igual a E, a linh a 1
de itl sera ins erida an tes cia linh a atual de i t2 . (A adilj:io f r omnio esta
especificada, entao 0 inicio de 1t 1 eassumido.) 1550 resul ta na inser~io
de quatro linhas . Na saida, sio os valcres I A' .
A linha 35 copia 0 conteudo de i tl para it2, sobrepondo com pletamente 0 conteddo exist ent e,
~
m
395
~!.I
XXIIIIIIIII I
396
II
alceracoes.
Depois que a instrucac edi tor-call for executada, sy-subrc sen configurada com as valo res mostrados na T abela 12.2.
Ta bela 12.2 Volores de sy-subrc depois do instruc;oo editor-cal l
sy-sub rc
Significado
23 loop It it .
24
\IIrHe: I it-to
25
endloop.
Se nenhum dado tiver sido digitad o quando 0 editor foi exibido , 0 cedigo
na Listagem 12.3 produzirf esta safda:
Data was not changed
Haee
conteudc do tobelo
Address
Phone
F~efo l"lll
Text
e exibida no editor.
z
3
I
6
'j
I
1.1
Ii
.
I'
I
7
8
9
10
11
"t ext o
"ira center a c6pia do or ig ina l
tt -t > 'Na~
:'. append it.
it t 'Address
: ' . append i t.
1t-t ' Phone
: I .
append it.
1t -t = ' Freeform Text
append 1t.
append It .
clea r it-t with ' -'.
12
13
14
15
16
17
18
19
20
21
22
save_i t - H[] .
"sese t hente a: save_it [ ] H [ ] .
editor-ca ll for it t i tl e ' Freefonn Entry' .
if sy- subrc 4.
"0 usuartc n~o executou uma al;~o server
write : I ' Data was not changed'.
elseif save_it[ ] < > i t [ ] .
-0 usuario executou IJlIIa alj:ao salvar
\IIrHe: I ' Data was changed'.
else .
\IIr1te : I 'Data \liAS not changMl '.
endif.
write: I sy- ul1ne(72).
da linha de cabecalho.
A linlla-13 copia 0 corpo de it para 0 corpo de sa ve_H. ] i que save_i t
nao tern uma linha de cabecalho, 0 lade esquerd o da atribuicao pode
ser escritc com ou sem colchetes.
A linha 14 exibe
titulo
Freeform Entry.
A linha 15 verifica 0 valor de sy-subr-c para determinar se 0 usuirio
executou urn a~o salver. Se ele nao executou, provavelrnente os dadcs
nac foram alterados e uma mensagem sera escriea.
A linha 17 compara 0 novo cocteedo de it com a c6pia de referencia
em save_it . Se forem diferenres, uma mensagem sed escri ta. Se forem
iguais, a linha 20 escrevers uma mensagem para qu e isso seja indi cado.
A linha 22 escreve urna sublinha com 72 cara cte re s de comprimenrc.
As linhas de 23 a 25 es crevem
397
..-. . . . . . . . .&.&..&...-..-....
I I I I I I -I . . . . . . .
.. --- --- -
16
at i t where fl
19
1t - fl - 88.
i nsert it.
20
21
endl oop.
22
23 skip .
24 l oop at it.
25
write / 1t- fl .
26
endl oop.
cede:
wa eum a area de t rabalhc com a mesma estrutura de uma linha cia tabela
int ema i t.
,
5
1
"88,
A ins tru~o i nser t p ede ser utilizada dectrc au fora de loop at it.
Se urilizada fora, a adi~o index devera ser especificada . Se utilizada
derrtro, i ndex sera op cional. Se a adi~io Da O for especificada, a linha
atual sera assumida.
,
5
6 do 5 t i mes .
It - fl sy-tnde x,
7
,
8
append it.
993
1 r eport zt x1204.
2 data: begin of i t occurs 5,
fl l1ke sy-tneex,
3
end of it .
4.
especificado.
Llstagem 12.4 Utilize a instruc;ao insert perc inserir uma (mica linha
em uma tabela intema
:>.
EH1IJDA~
885
illUSE ~
~-~.
A linha 18 recupera essas linhas da tab ela in terna que tern um valor f1
maier que ou igual a 4. Antes de cada linha, a linha 20 inse re uma nova
linha a partir da linha de cabecalhc de it. Antes da inser<;ao, a linha 19
alte rou 0 componente fl para que 0 m esmo contivesse 88.
eneeo.
I.
11 it f1 -99.
12 i nsert it ; ndex 3.
13
14 l oop at 1t.
15
wrt te / it-fI.
399
endloop.
17
18 loop
A Listag em 1 2.~ con rem urn prognma de exemplo que utiliza a instrucio
i nsert.
-.
400
. -.~.
_ -
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.
tn
~
m
...
onde:
c1 e c2 sao compenente s de i t.
conteudo de
d. linha de cabecalho.
afetari imediaumente a tabela interna mas, em vez disso, elase tomara efetiva
oa pr6xima passagem do loop. Ao inseri r urna linha tkpois da linha atual, a
tabel a sed novamen te indexada em endloop, sy-tebf x sera incr emen tada e a
pr6xima passagem do loop pr ocessara a linha indicada po r sy- t abix. Por
exemplo, suponha que voce esra. na terceira passagem do loop e ins ere urn
regiscro antes da linha 4. Quando endl oop ~ executada, a nova linha se toma a
Iinha 4, a l.inha 4 anti ga se toma a linh a 5 e assim por dian te. Sy-te bfx e
incrementada em 1 ponto e a pr6xima passagem do loop processa 0 regisrro
rece ntemente inserido.
Set den tr o de urn lo op , voce inserir uma linha antes cia linha atual, a tabela
sed novamente reinde xada em endlo op. D essa vee, entr etanto, sy-tebtx e
incrementada par 1 mais a ntimerc de linbas.inseridas antes cia linha atu aL Da
pr6 xima vez que ocorrer 0 loop, a linha depois da linha atual sera processada.
Suponha, por exemplo , que voce insira na terceira pas sagem do loop uma linha
an tes ds linha 3. Em endl oop, a nova linh a se torna a linha 3, a linha 3 se torna
a linha .. e assim p ar diante . A linh a que voce acaba de processar agora ted um
Indice de 4. sy- t abi x eincremea t ada per 2,0 que cia S. A linha 4 fo i reindexada
para 5, sen do assim sera processada na pr6xima passagem do loop.
00 .
Dentro de lo op at i t
EHTRAOA~
coo-
1 report ztx120 S.
Z data: begi n of it occurs 5,
fl 1i ke sy-tndex,
3
f2 ,
4
end of it.
5
1Z
13 tt-f2 'l ' .
14 modify i t i ndex 4.
15
. ~. ~
.........................................L..lL..lL..O.......................a...L.&.
402
I .I-
~I
I I
I 11 11 ...........
18
endl oop.
19
20 l oop at it.
21
ft -fl 1t-fl .. 2.
22
llIOdify it .
Z3
endloop.
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
16 l oop at 1t.
write: I n - n, it-f2.
.. .. ..
17
Excluindo
Para excluir 0 conteddc de uma tab ela in tem a, voce pcderd ut ilizar as seguintes
insrrugoes:
endloop .
free
refre sh
clear
1 A
delete
2 B
3 C
5 2
5 ,
2 A
, B
6 C
10 Z
10 E
2 X
,
Sintoxe do
instru~ao
free
6 X
10 Z
onde:
10 ,
tt
. -.
403
~ . I.-I
404
I I"'I I I -I I -I I I I I -.
. -.
- - -- .. - -- - -
'PIEND' 1M 21 DIAS"",.
fato de
prograrno oinde noo tero sido finolizodo . Todos as recursos permcneee eee o locodos e 0 progro mo nOo termincrO ate a usu6rio pressionor
a bettie Bock. lsso, finalme nte, terminc se u progro mo e Hbe rc tcd c 0
ccn tevdc do tcbelc infe rno. Voce poder6 ltbe rcr a s tobelos Internes
00
Sintoxe do
instru~6 0
refresh
r ef resh
tt ,
onde:
ENruOA~
T odas as linhas sao excluidas. T oda a m em o ria utilizada pelc corp o cia
tab ela interna permanece alocada.
I'
15 fr ee 1t .
16 1f H[ ] is initial.
17
write: / ' no rows exist in it after free '.
18
end1f .
I report ztxl206.
2 data: begin of it occurs 3.
3
11 11ke sy- t ndex,
end of i t.
5
s do 3 ttees ,
it -f1 .. sy- t ndex,
7
Append ft .
8
enddo.
9
1D
11 l oop at it.
12
wri t e it-flo
13
endloop .
it
ANALISE ~ A linho 15 exclui tod as as linhas do tob elo lntem c e hbere 0 mem 6rio ossociodo .
de mem6ria.
A Listagem 12.7 mos tra co mo utilizar a insrrucao re f resh .
ENllAOA~
Listagem 12.7 Util ize a instrur;o o refresh perc excluir tod cs as linhc s de
um a tobe lc interne
s
7 do 3 t tees .
t sy-t neex.
8
do 3 times.
9
i t -fl i * sy- tndex.
lD
append it.
11
enddo.
12
40S
II"
406
-_ ...
D~ IU A8El.\S INTEiHASAVIJl(ADAl, PAmI I
16
write: I " .
l oop at it.
write it-fl.
endJoop.
17
18
enddo.
13
14
15
Sintaxe da
interna
on de:
ANilJS!~ .
cl ear i t : cl ear t t[ ]
1
2
24
3
6
3
6
,
e 0 no me de um a tabela intern a.
\,
e mulciplicado
it
A linh.a 7 ccmeca urn loop que e executado ues vezes. Ela con tern urn
19
20 free it .
SAloA ~
i n stru ~ao
o efeito de cl ear em uma tabela ia terna esta. resumido na Tab ela 12.3. 0
efeito de cl ear varia,dependendo se a tabelainterna tern uma linha de cabecalho
ou nao.
Tabela 12.3 Efeito de clea r em umo to belo intemo
Instru4jGo
A linha 17 exclui todas as linhas cia tabela inrema, mas DaD Iibera a
memoria. Refresh sera utilizada aqui em vez de f ree ja que 0 loop
cle ar i t
cl ear it(
IInha de
cab~l h o
programa na Listagem 12.8 ilustra a usa cia instru ci o clear com uma
tabela interua.
Listagem 12.8 A lnstrucdc clear pode ser utilizada pa re limpar a linha
de cobecolho au excluir 0 conteudc de umo tobe lo intemo
,.
1 report ztxl208.
5
6 it-fl-'X' .
7 append: it . i t .
8
-1t teen
9 clear it .
de cabelia1ho
10 wr1t e: 'fl-' . it-fl .
11
"
fl ,
end of i t .
Ina
407
";.J
408
409
AP REN DA EM 21 DIASABAP/4
onde:
12 write : I I I .
13 l oop at i t.
14
write ie-n .
15
endloop.
16
17 clear tel ] .
18 loop at i t .
write it-fl.
20
endloop.
21 writ!!: I ' sy- subrc- ' , sy-subrc.
del ete it, sem quai squer adi(joes, podera sc mea eeser utilizada dentro
de l oop at it. Nesse case, exclui a linh a atual.
,,
flo
sy~s~bn:.
IHlJ.ISE ~
it .
19
Se t o
pennanece inalterado.
DaO
assumida.
B' .
esd. vazia.
A linha 21 ma st ra 0 c6 digo de ret o rn o depois do loop. Isso novamente
confirma que n enhuma linha existe na tabela int ern a.
(a) [indeK n]
(bi [f"",
'J
[to j ]
1 repor t ztx1209.
2 data: begin of it occurs 12,
fl .
3
end of it ,
4
alp ha(12) val ue ' ABCDEFGHIJ KL' .
5
6
7 do 12 t imes varying it-fl f rom alpha.+O next alp ha+L
append i t.
8
enddc ,
9
lD
11 loop at it .
12
write : I sy-tabix , u -n.
13
endl oop.
14
15 del et e it tn dex 5.
ITT
"'I~'- I
:.
410
.~ .T-TT~I
~ I . . . . . .
T . ~ ... . . .
'!I!
'!I! '!I! ~ ~ ~ ~ ~
D
5 F
6 G
7 H
8 I
9 J
2'
ID
28 s kip.
29 lo op at it .
30
write: / sy- ta b1x. i t - fl .
11 L
I A
2 B
3 C
end loop .
32
33 loop at it where fl between 'E' and 'J '.
34
delete it.
35
endloop .
5 F
6 J
36
37 sk1p.
38 loop at it .
39
write: / sy-tabix. i t - fl .
40
e.ndloop .
41
42 read table i t wi t h key fl ' K' bi nary sea rch.
43 "rite: t, I ' sy-su hre- ', sy- subrc , ' sy- h hh.- '. sy-tabfx. / " .
44 1f sy-s ubrc 0;
45
delete i t i ndex sy- tabi.x.
46
endtt .
47
48 s ki p.
49 loop at it.
50
write : I sy- ta bix . it-fl.
A
2 F
3 J
,,
-.
5 L
1 A
2
3 L
sy-subre
sy-tab 1x
1 A
2 L
INlllS! ~
As linhas de 11 a 13 escrevem
1 A
21 delete i t frtm 6 to B.
22 s ki p.
23 loop at it .
1 A
2 B
3 C
enetccp.
51
endloop.
52
53 tr-ee it .
11
12 L
20
31
16 skip .
17 loop at it.
18
write : I sy-t abix . it -fl .
Z4
25
"m DA EM 21 DI A5 ABAP/,
19
A linha.15 exclui a quiara liah a, removendo 'E' cia tabela. A sexta linh a
se to m a a quinta,"a serima se lorna a sexta e assim por diante.
2 B
3 C
, D
5 E
7 G
8 H
s I
10 J
excluidas.
'!If - ....
411
~ --
. ...I ....
sejam exclufdas.
I
A linha -tz localiza a linha com urn valor f1 de 'K Emb ora i t contenh a
apenas tres linha s, bi nary search foi incluida para um a me lhor exem plifica~o. A linha 2 e correspondente, entaD sy-subre e configurada
a zero e sy-tebt x econfigurada a 2.
A linha 45
onde:
wa ~ uma area de trabalho com a mesma estrutu ra de uma Iinha. cia tabela
interna.
c
e urn componente de f t .
413
-414
A Listagem 12.10 mostra urn prognma de exemplo que em. uma lista dos
tres melhores representantes de veada.
mRlllA~
2 data :
5
6
7
8
9
10
11
12
13
of it occurs 3,
sales type p decimals 2.
name(lO}
end of it .
b~ 1n
it-sal es
100.
i t-name
' Jack' .
Figu rg 12 1
Quando nenhumo
I;nho exis1e no lobe/a
sales
nome
primeil'D /lnl1o Ii
simple.smf!t11e
ocnsantodo.
it-sales
50.
i t -name
' Jfll'.
linho 1
"
50 vem depois de 100 quando a orde m de c1assifica~ao e decresceate, entio a Iiaha 13 insere a nova linha depo is cia exiseenee
(veja a Figura 12.2).
i t - sal es
75.
1t -namt
' George' .
append it sorted by sales.
F igura 12 2
A segundolinha e
it-sales
. ZOO .
inserido no s~iifncjo
comto de
do u mca o, de modo
que elo venne depois
i t-name
' Gina' ,
do primeiro linno.
Iinho 1
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.
linho de ecbecclhc
Intemo, enll50 0
15 tt-setes
150.
16 1t-nillll!:
'Jane'.
17 append it s orted by sales .
18
19
20
21
22
23
24
25
415
200.00 Gina
150. 00 Jane
100.00 J ack
150 vem antes de 100, entao a linha 15 inse re a nova linha ant es da
primeira linh.a. A tabela int ema agora contem a mimerc maximo de
linhas : treS linhas (veja a Figura 12.3).
append it sorted bysoles
Fig ura 12 3
Dessa vw. 0
linha de ccbecelhe
seqiifncio de
tt
150
Jcne
corpo
linho 1
150
Jone
100 - Jode
50
Jim
_............--_-..- -------
ma.--_416
_ -- -
- -
D~ ILTABruSIII1UIlASAV"~Al, PARTE 1
Nao misturar append sorted by com quaisquer outras ins truc;6es que
adicionam dados em uma ubela interna (como insert ou append) . Se voce
preencher ; t com append sorted by, esta deved sa a Unica. io.stru~o a .ser
utilizada, Misturar essas instruC;6es resultard em comportamento imp revisfvel.
append sorted by sera mcls ehctente quand o voce estiver ccrescentondo uma linhc per ....ez em umo tabe lo intemo. Se voce j6 fiver os
dodos em uma tabela de banco de dodos e simplesmente quiser
localizer as 10 vclcres superiores sere mais efiden te inserir as linhos
utilizondo uma operao de array e, em segu ida, a d ossificot;oa. (Para
abter jnformoes sobre as cperccoes de arrey, ca nsulte a Dio 13,
"Icbelcs intemos ev encodes, Porte 2 .)
12 4
dapoi5 do segundo.
ent60 ala, inserida
16. Atobe/a inferno
pode onnazenor um
m6Kimode 1r& linhos.
ent60 0 quam linno Ii
desccrtodo.
linno de cebec;olho
it
I I
75
George
Jinho 1 150
Jane
2 100
Jaa
50
Dena vez, 0
nOva
nOoocrescentado
\ porql.Je~63
I e it ja contem
I 3 linhas
Jjm
--<F la" rn 1 2
..,
Utilizando a instru~o co11 ect, sera pcssfvel criar totais den tro de uma tabela
interns amedida que voce a preenche.
~
m
exis1enfes 560
desccrlodo.
collect
I;nho dtNev;r
prim eiro. As };nhos
disposlas o~ e a
ultimo Iinha Ii
linna t 200
Gino
2 150
Jane
3 100
Joclt
1..5 t: :!iri J
onde:
100 ve:m depois de 150, mas ja existe 100la. A linha29. portaato, tenta
icserir a nova Iiaha depois do valor existente de 100. 1550 a tornaria a
linha 4, ent.ao a linha nio einseridaabsoiutamenre (veja a Figura 12.6).
Se 11'0 ; nto for especificado, a linha a ser coletada sed obtida da area
Fl g u r n 12 6
linoo de cab8l;0lho
Se 'fiO into nao for especificadc, a tabela inrema deveri ter uma linba
de cabecalho. A linha a ser coletada sed abtida da linha de cabec;alho
para. it.
me.smovalor. IS50 0
Iomorioa linho 4,
en160e/o noo e
Inserido.
il~
...
,
\
co<po
Iinho 1 200
Gino
2 150
3 100
Jane
Ja, k
I t'IIio ocrescenlodo
-<-
,I
Quando collect for executada, 0 sistema formad. uma chave a partir dos
campos de chave pad rgo na irea de trabalho. Os camp os de chave padcio sao
as campos de can,ctere (tipos c, n, d. t ex) . PortantO, a chave sed composta
des valores ,de codos as campos do tipo c, n, dJ t e x. Nio imp oru se estio urn .
ao lado do outro, au se estaa separados urn do outro por outros campos.
417
sp-5 - 5
I
iI
DIAS ABAP/4
sistema eneso pesqu isari 0 corpo da tabela interna quanto a uma linha
com a mesma chave daquela na area de trabalho. Se nao localizer uma, a linha
sed acrescentada ao final da rebel a. Se localizar uma, os campos numericcs
(tipos i, p e f) na area de trabalho serao adicionados nos campos corre spondentes da linha localizada. A Lisragem 12.11 ilustra esse conceito.
Li sta g em 12.11 col le ct combina as linhas assim que s60 odicionedos
em umo tobela intemo
1 report ztx1211.
2 data: begin of it occurs 10,
3
date type d,
4
tot_sahs t ype p decil11als 2,
n!ll! (lO) ,
5
nlf.lt_sahs type 1 val ue I ,
6
end of i t .
7
8
9 f t -date
. ' 19980101'.
io 1t~tot_sales 100.
' Jack'.
11 f t -neee
12 collect it.
13
14 i t - dat e
'19980101'.
15 it-tot sales 200.
16 1t.na~
J 1m' .
17 coll ect i t .
18
. ' ' 19980101'.
19 f t -dete
20 1t~tot_sales 300.
'Jack '.
21 it-name
22 ccl'lect it.
23
24 it-date
25 i t-tot _sal @s
26 tt -neee
27 collect it.
28
29 1 t ~da t e
30 1t ~ to t_sal es
31 it- name
32 collect i t.
33
34 ft ~date
35 1t - t ot _sahs
36 it-name
37 coll ect i t.
38
39 i t - dat e
40 it-tat_ules
'.
' 19980101'.
400.
' Jack' .
' 19980101' .
600.
'Ja ne' .
'19980102' .
.7110.
41 tt-neee
.2 eel teet it .
so
'Jack'.
" loop at i t .
. 45
46
wr ite: I it-date,
endloop.
1t ~tot_s a l e s ,
19980101
19980101
19980101
19980102
800. 00 Jack
700.00 J im
600 . 00 .Jene
700.00 J ack
3
2
1
1
As I.ioha.s de 2 a.7 definem urna ta bela interna com quatro componenres. Dois sao do ripe caractere (dat e e name) e dois sao do tipo numeri co
(t ot_sal es e riurn_s ales ). A chave padrao ~J portanto, comp ost a dos
comp onec tes date e name.
collect it.
~n ho de eebe celhe
nOo-numericos, @nt6o
n@ss!& diogroma, elo
comi!SpOlldea
c:ombinoo de date
(prim@lrc compoJ @
name (ten:eiro compo).
linha, mas as valores nos campos date e name nao sao correspoodentes,
entio a lioha de cabecalhc eacres centa da arabela interna (veja a Figura
12.8).
419
._~==----=-=-===-==-420 [ APRENDA EM 21
~=-.---~------
Ii
DIAS ARAP/.
entOo em /jnho
tcmbem e
ocrescentcc/o.
.'
200'
I) ;
F igura
correspondenles do
~rimejro
linho de cobei71lho
Iinh a.
odicionodos nos
compos
correspondentes do
primeiro Jinho.
coiled it.
linno de cabeljOlho
compos'
corresponc/entes do
segundo linno.
Flgu rn 12 1 2
coiled it.
linha de c:abel;olho
~ ~~mm
l?!.?J"~ ' 2
~ ; 2!lO~ ~'&t
l!SIl
~ ~~
A linha 42 tambem faz com que uma nova linha seja acresce.otada a
tabela internal jii que os valores em date e nameDaO correspondem com
nenhuma linha de it (veja a Figura 12.13).
.y
A linha 27 procura par uma linha com uma data 119980101 1 e urn nome
' Jack 1 A Iinha 1 e a correspond ente, entao 0 conteudc dos campos
numericos (tot_sales e num_sales) nalinha d e cabecalho sao adicionados
Fl g u r n 12 10
11
~ S~:.J
\J9,9JtljJ }oo'
compos
12
vez.
coiled it.
F ig urn 12 0
Na'lomente, 0 chave
podrtion oo e
focolizoc/o no tabelo,
- - - ~ ~- - -
collect it.
F igurn 12 8
- - i'
F lg urn 12
,~
collect it.
corresponc/emcom
nennumolinno, enroo
oulm Iinho Ii
eellect it.
ccescencee.
,.
ccrpc
~@t<@
e@
, 8 00 ~
~~
'200"
~
~
=i
,__4~
~~'i~~Ff
.'
~\~;::~ 't~{
~ 'i<i!t~
~>~,'~
~ ,i,~.1~
421
E c c ... c .. . _
422 I
noo deve combiner coll ect com append au com quolquer outre
"i'
- ....
" "
II
Utilize coll ect pan samar contagens e totais dentro de uma tabela
intema amedida queestiver sendo preenchida. Essa inStnleraOtambem
pode ser utilizada para garantir a exclusividade de todas as entradas.
collect
e modify
Resumo
0 operador de corpo de eabela proporciona UIIU maneira eficienre de
eesnr quanto a. existencia de dados, comparar duas tab elas intemas
pan igualdade au duplicar urna tabela int erna.
Para cop iar uma pane de uma tabela interna de uma pan. outra, utilize
append 1i nes of au i nsert 1i nes of .
- =- - ---- -'-
IFa~a
de depura~ o.
in sert adiciona uma linha em qualquer posierao de uma tabela intema.
A pasi~o pode ser especifieacia urilizan do urn Indice ou pode operar
na linha arual dentro de urn loop.
modify modifica a conreado de uma au mais linhas. A linh a pede ser
especificada util..izando urn Iodice ou pode operar na linha atual dentro
de urn loop. Utilizando a chusula where, voce poderf modifica.r 0
ccneeado de muitas linhas .
defet e remove uma ou mais linhas. Quaado utilizada dentro de urn
loop sem adic;oes, exclui a linh a atual. Voce tambem pode especificar
urn deice Iodice, uma faixa de rndices. au uma clausula where.
c1 ear it limpa a linha de cabe~alho de it. Se nao exisUr uma linha de
cabec;alho, todas as linhas serio exclUldas. clear it[ ] sempre exclui
todas as linhas de it. A mem6ria da tabela interna permanece aloca&.
r ef res h sempr e exclui todas as linb.as e dew a mem6ria alocacla. E
eXatamente equivalente a c1 ear 1t [ ] . sera ut ilizada se a tabela interna
tiver que ser novam ente preenchida com dados.
f ree i t exclui fodas as linhas de 1t e libera a me m6ria. Deve ser
colocada no programa imediatamente ap6s 0 termino do processamento da tabeIa interna.
P&R
Nest e capitulo, aprendi vdrias maneiras de realizar tarefas semelhantes. No ABAP/4, parece que sempre existem muita s
maneiras de fazer a m esma coisa, Estou apenas apre nd endo.
C onsigo me lembrar somente cia. existcncia de muitas maneiras
de se executar alga. Por que mio se mostra apenas a melbor
maneira e simplesm ente se esquece 0 resto?
423
424
urn grande impa cro no desempenho do sistema. Quanta ao segundo ponte, as programadores freqa eceeccec ee gastam mais
tempo Iendo a c6dig o existence do que criando urn novo ccdigo,
assim send o vocE: precisa comp reender as vOlriac;oes sum dessas
instrU~5es. Elas sao muito utilizadas no c6digo de SAP. Se voce
nie compreender 0 c6digo de SAP , voce ni e sera capaz de com-
Workshop
o Workshop oferece dues maneiras de voce verificar 0
13
Teste
1. Se eu modificar a valar de sy- t eb'lx deotra de urn loop. isso ira alterar
a linha atual? Par exemplc, as inStrulSoes insert. modify e del ete
operariam na linha da hea de trabalho ou na linha indicada po r
sy-tab1 x?
2. Quando devo utilizar 0 valor de sy- t occu? Por que pr eciso saber a
valor cia c1iusula occurs em tempo de execu~o ?
Exerdcio
Q bjetivos do capitulo
Depais de coucluir este capitu lo, voce sera capaz de:
!I
'l
426
. ._ ......
. ._ .....~~_ --..___ __ _
acrescentar (append)
como oper:a!fio de array. Nenhuma area de trabalho sera utilizada, nem mesmo
sera necessaria.
NO
YO..... Uma opertJ!;oo de arroy correspo nde a qualquer instruc;60 que executa ume
TrulO "
c cerccsc em multiploslinhas de ume tcbelc interne, em vezde ume unice linhc
de coda VeL h ccerccses de arroy sao sempre mois eficentes que as operc~6es de umo
unica llnhc.
III
fa) select
(b) s~ll!!c't 11
/2 .
from dbtab 1nto [campos eor re spcndent es dl!!] t abI e t t .
on de:
VI
1000
1010
1020
1030
1050
1060
1070
VIO
V6
va
V12
it
V1l
1040
IOSO
1010
2000
VI
V,
V3
VS
A inStruljaO select into tabl e coloca to das as linbas selecionadas diretamente no coepo de ft. Em prim eiro lugar, a coareado da tabela intema
existence edescanado. A Listagem 13.1 contem urn program a de exemplo que
--
APREN OA EM 21 OI AS ABAP/4
Selecicnar uma tini ca linha pan u rna area de trabalho e, em segui da,
V4
V1
V2
V3
V4
VS
427
428
Figu r a
13 1
A tebelade banco
de dodosztx1302
contem Ires compos:
f1,/2. f 3. f1 tem
urn linico byte, f2
fem dois bytes e f3
/em urn byte.
Noo utilize endse lec t com se l ect into tab l e. Um errc de sintaxe
cccrrerc.
inStruc;a.o sort e urn pouco rom rapida, M~m o se estivessem em urn mesmo
myel, sort seria ainda 0 raetcdc preferido ji que essa in structo faz urn offload
dos ciclcs a partir do servidor de banco de dados pua 0 servido r de aplicativo.
Figura 13 2
~.
Nco utilize order by com select into table. Em vez disso, utilize
Cada Iinha de dbt ab e movida, byte par byte, pArA urn. novalinha de it,
que e exatameate igual a atribuir uma St ring de campo para OUtra. H oi som ente
uma diferenca entre esse procedimemo e uma atribui~.io de st ring de campo :
dbtab pede ser mais curta (em bytes) que i t, mas cao pede ser mais longa que
it. Se for mais longa, urn dump curto (erro SAPSQL_S ELECT_TAB_TOO_SMALL)
ocorrera. Os tipos de dados e comp riment os de cada campo de envio em dbta b
devem corresponder com 0 campo de recebimento em t t . Quaisquer campos
remanescentes em it sao preenchidos com valores iniciais (espacos em branco
ou zeros). As figuras de 13.1 a 13.4 ilustram esse ponto.
selecionod04 em
m e,", do tobelo de
banco de dodos
ztx1302. f /es se
aiustarn exatcmente
em coda Iinho de
tt.
{6 que a
estruluro de i
13
~WJirt.~?
~~~~?1~{;i~~
'~~.,,,,~: .<. :~..zr-LT2~~-"':~ ~'-"''''
Nesse exemplo,
somente os dois
primeiros compos sea
seJecianodos do
tebela de banco de
dodosztx1302 pa re
um totel de tr~s bytes.
Eles 56 0 co/ceodos
byte porbyte nos
primeiros iris bytesde
ceda linha de tt .
,iii
COIpO
cofTesponde com a
estrvturo do tabala
de banco da dodos.
Fig ura
tables ztxl302.
. dati it l ik e ztx1302 occurs s .
d. i t
12
13
12
f3
. .-
~~2~~f2~'1iitjn~(t~
"-~'"t-i"'b"1_ ')"!~1U~-~'"'1
',
.~~:r.-~~.;'~ ::..:;. !-'r.-~~.,.r.--=~~~~~
corpo de i t
fl
f2
f3
'"
_L.._ _ _
430
_~_
___
__
__
1
2
3
4
5
doqvelo em que
report ztx1302.
tables ztxlfal.
data
i ncl ude structure
datil.:
6
I
oporecem no 1a~1o
quando colocodos
byt. por by1e em
coda linhode t t.
ft -!I recebe 0
prlmeiro byte de/2
ett-JZrecebeo
ultimo byte de f2 e
um by1e de /I .
\
Quais campos
Tcdos csccmpcs no tobela de
banco de dodos
Restrlsoes
..
b!gin of i t occurs 2.
ztxlfal.
fnvoice_amt type p,
end of ft .
VII
VI'
DE_ ..97
OE
14
V8
DE
03
Vll DE
V12 DE
VB DE
,.
431
sao selecionados?
Sel ect / 1
.-.
~....-..
8 select ... from ztxlfal fnto tab1l!: it where hndl .. ' DE' .
9 l oop at it.
10
write : I it-lifnr, it-landI, it-regfo, ft-1 nvoice_ilJl't.
11
endloop.
12
13 skip.
.
14 select lifnr land; regi0 frtllll zu:1fal into table it wheN! landl .. 'DE'.
15 loop at ft .
16
"rite: I ft-mandt , tt-I tfnr, it-landI, ft -rtg1o.
17
endloop.
18 free ft .
Tabela 13.1 Regros para a utiliza ;60 de select com i nto t able
Sel ect *
...-..
FIgura ]3 4
Instruljao
-.J<_
..
Novomente. cs dais
primeiros campos
sao sefecionodos do
Icbelo de banco de
dodos ztx1302
mes,. eessc vez, em
.'
INluSE~
o
o
07 .
14
03
.'
432
Ustagem 13.3 Seu proqrcmc produzir6 urn dump curto se voce tentor
co loco r mois campos em umo tabe lo interne dos que j6 existern nessc
lobelo
1 report ztxl303.
2 tables ztxlfal.
3 dat a: begin of it occurs 23,
4
l1tnr l ike zt xlfal l 1f nr .
landl 11ke ztx l fa l - la ndl .
5
estreita dema1s.
Figura n .s,
Os campos de envio que nso t~m urn campo de recebimento correspendente sao descartadcs.
Os camp os de recebimenro que DaO tern um camp o de envio ccrrespendent e permanecem inalterados .
Fig"'" 13 5
6
end of it .
7
8 111. prtixilla ltnha causa. tJlI dtlnp curtc A tahe14 interna
9 select f ro. ztxl fal in t o table it .
IKiuSE ~
e comprimento, voce poderf utilizar a adic;io correspo ndi ng f iel ds. Essa.
a.di~i.o tem 0 mesmo efeitc da instru cao move correspondi ng em um a string de
campo: ela move a s campos cia tabela de banco de dadcs para as campos com
o mesmo nome 'n o corpo da tabe!a intern a.
e 13 bytes.
1 report ztx1304 .
2 tables ztx lfal.
3 data: begi n of itt occur s 23.
lifnr
l1ke zt xlfaJ-lifnr
. 4
lifnr_l!xt like ztx lfal - l 1fnr.
5
landl
like ztxlfal-landl.
6
end of t t l ,
7
begi n of 1t2 occurs 23.
8
like zu lfa1-11f nr.
l1 f nr
9
la ndl
ltke zUlfaJ- Iandl .
1D
end of tt2 .
11
12
13 + Esta ~ a uti1iz a~lo ett cte nte :
14 sel ect l1fnr landl from ztx lfd
into corresponding fiel ds of t able 1t 1
15
16
where l i f nr between 'VlO' and ' Vl 2'
17 loop at i t1 .
18
write : / ftl-lifnr, itt-Jandt.
19
endl oop.
20
21 + Esta ~ il t nettctente r
Z2 select + f rom zulfat
23
i nto corresponding f i el ds of t able i t2
ENTRADA'" Lista g em 13. 5 Utilizando sel ect com a lnstrucdo append para preencher
29
1 report ztx1305.
2 t ables ztxlfal.
3 dat a it like ztxlfal occ!lrs 2 wit h header line .
4
5 "'Fa"a desta f orma
6 set ect > fr om ztxlfal i nt o it "observe que ' t abl e ' ~ OIlIiti do, dessa forma a
where l andl ' DE'.
"lt nhe vet para a l tnhe de caber;alh o de it
7
append it .
8
endsel ect.
9
ANALISE~
'0
cc
VIa
Vll
. OE
vl 2
DE
VlO
CC
Vll
V12
DE
DE
. VI0
Vll
Vl2
CC
DE
11 loop at it.
12
write: I it-l1fnr , i t -landI , ft -regio .
13
endloop.
14 refr-esh it.
'5
16 "Ou desta f orma
17 select'" from ztxlfal
18
wher e 1andl .. 'DE'
19
append ztx l f al t o it .
20
endsele ct.
DE
tobelas internes
..
21
22 skip.
23 loop at i t .
24
write : I i t - l ifnr , tt- Iendi , it-regi0.
25
endl oop.
26. refresh 1t.
27
28 "Hio des ta f orma
29 sel ect > f rom ztxl fal
"a l tnhe vai para a aree de t r abalh o da tabela
padrlo
30
where l andl ' DE ' .
31
it = ztxlfal.
"em segufda, e atr1bufda a l tn ne de caber;alho
32
append ft .
33
endsel ect ,
34
. 35 skip .
36 loop at it .
37
write : I it-lifnr, it-la ndI , it'-r egie.
38
endloep-.
39 fr-ee it.
o c6digo
43S
436
SAioA ~
Vll
Yl2
V8
2D
DE D7
DE 14
DE D3
DE D7
DE
DE D3
Vll
Yl2
V8
"
DE D7
DE
DE D3
Vll
Yl2
V8
ANAliSE~
"
31
endl oop.
32 fr ee ft.
de cabecalho a i t .
Nalinha 17, Ilia existe a clfusula into, sendo assim cadalinha val para a
area de trabalho da tabela padrao ztxlfal. A linha 19 acrescenta aarea de
m balho zt xlta l atabela interne (a linhade cabecalho nilo eutilizada).
V11
VI Z
V8
Yl1
ENTRADA.... Listage.m 13.6 Como 0 adi<;co correspond ing fields 'pera a instru.;;ao
~ sel ect produz 0 mesmo efeito do instru.;;ao move-corresponding
1 report ztx1306.
2 ta bl es ztxlf al.
3 data: beq1.n of it occurs 2,
4
5
6
row_1d
l i f nr
like ztxlfal-lifnr.
like sy-tnd ex,
landl
lik e zblfallandl.
7
end of ft.
8
9 Fa~a desta forma:
10 select l1fnr landl f rom zb:lfal
11
into correspondi ng fi el ds of it
12
13
14
15
16 loop lit H.
17
write : / tt-l tfnr-, tt-rov 1d. it-landl.
18
endloop .
19 refresh ft .
V8
ANAUSE~
D DE
D DE
o DE
Yl2
D DE
D DE
D DE
A Tabela 13.2 contem uma Iista das varies formas de sel ect quando utilizada
. com as tabelas internas e sua. eficiencia pertinente. Sao apresentadas em ordem
decrescente desde a melhor ate a menos eficiente.
~
om1ti do
Escrita 00(0)
sel ect
select
select
sel ect
table i t
corresponding f ie lds of table it
Corpo
it
Unho de ccbeccihc
Unha de ccbecelbc
into
into
i nto
i nt o
corresponding f ields of it
Corpo
437
438
as
F igura 13 6
campos
de cnove prim6rio
,
-_ _.A-_
_,\
A
Re/ofiOo ~ tre os
cnoves primarios.
Depois de preencher uma tabela intema com clados, em geral, voce precisari
escrcver os dados. Freql1entemente, essa saCda ira conter as informal$oes de
resumo (como tows) DO infcio au termino do relat6rio. Alem disso. poderio
existirresumos intermediarios (como subtotais) dentr o do corpo do relat6rio.
Por exemplo, suponha que voce precise escrever os resultados do GIL cia
ztxlfcl para cada fabricante, com subtotais por ano fiscal e urn total geral ao
termino do relat6rio.
439
"'!--~
440
DIA 1',TABEUSINmNASAVAN\.lDAS,Pl m l
Para isso, voce pede ler as dados em urna tabela int erna e. em seguida,
dectro de l oop at, utili ze as seguint es ins tru~6es :
at f i rst / endat
at 1ast / endat
at new / endat
at end of / endat
sum
Esses instrucces nio devem ser aninhadas um a dent ro cia outra (ou
seja, at 1ast njic deve ser colocada dentro de at f i rst e endat ).
on change of I endon
NOYO lilt...
lERMO "
co ntrola quando sera exeanodo 0 c6d igo que reside entre e les. Esse tipo de
con tro le de ncml nc-se uma interrvpo de confrole. Seu prop6sito e execute- 0 c6digo
entre eles, sempre que uma condil;oo espedfico nos dodos , detedodo, durante
Sinlexe des
III
i nslru~oes
at f i rst e at 1ast
Execuiu
l oop at ft .
at f i rst .
...
m
endat
at last .
endat.
. endloop.
onde:
it
Es5:lS
1
2
J
4
S
report zt x1307.
tables zt xlfc3.
data it l1ke ztxlfc3 occurs 2S with header line .
s elect" from ztxlfc3 into ta bl e it where stlbkz 'Z' .
loop at it.
6
at f i rs t.
7
wr1te: I ' Vendor' .
8
. 9
10
11
12
13
c/F' .
ul1ne .
encat,
wri t e :
t t - It f nr,
441
------442
16
17
18
OOWlA~ Listagem 13.8 Co nteudo dos compos do tebelo intemo e ntre at e endat
12 it-bukn.
17 it- gj ahr,
2Z i t - sal dv.
"15
at las t .
20
write : /
12
17
21
11
19
'
..
----,
'
22
eneet ,
23
endloop.
24 free it.
Ba l
1000
1000 1995
1000 1996
lOCO 199B
4000 1997
0. 00
5,000.00
4.000 .00
0. 00
1.000. 00
1000
1000
1040
1070
1090
VI
VI
VI
2000
2000
1000
3000
3000
4000
2000
4000
V.
V6
V6
IHiu5E ~
elF
Vendor
1997
1997
1991
1990
1994
1997
1997
1997
250 .5 0
1.00 0. 00
1.000.00
1.000 .00
100.00
1.000.00
D.DO
1 report ztx1308.
2 t ables zu lfc3.
3 data it l i ke ztxlfc3 occurs 1 wi th header line .
4 sele ct 11 up to 1 rows from ztxlfc3 into table it .
S l oop at it.
6
wr ite: I 'Before " at f irst ": ',
7
I t t- Htnr , tt-bukrs , tt- gj ahr , it-shbkz. it-saldv,
8
tt- sclll ,
9
at ff r st .
10
write : I ' Inside "at first ":',
I i t - l itn!" , 1t - bukrs. 1t - gj ahr . it-shbkz. 1t-saldv,
11
i t - sol n.
12
it- litnr ' XXXX ' .
13
endat .
14
write: I ' Between " at fi rst" and " at la st ": ' ,
IS
I i t-H f nr , f t-bukrs. It-gjahr, it-shbkz, t t -saldv,
16
1t-sol11.
17
at las t .
18
write : I ' Inside "at last " :' ,
19
I i t -l1fnr . it- bukrs, 1t -9jahr, it- shbkz. 1t - saldv ,
21l
i t - solll.
11
i t-l1fnr ' XXXX' .
11
endat .
23
write: / ' Afte r "at last" :',
14
I it~l'tfnr , 1t-bukrs, i t . gja hr . it- shbkz. it -saldv,
15
it-soll l.
16
27
endl oop.
28 fre e ft .
(linha 11).
As linhas de 13 a 16 escrevem
executadas para cada linha.
Utilizando
o c6 digo na Listagem
UiDl ~
IHillS~ ~
.......-..........
soe.oo
0.00
0.00
._..__..... .....
500.00
0.00
0.00
1, 000.00
500.00
443
-~--
444
--...--.
--
Essas instrulioes Ilia devem ser aninbadas uma denrro cia outra (ou
seja, at end of IUO deve ser eolocada dentro de at new / endat ).
Depois de endat na linha 14, a salda mostra que to dos a s valores foram
re~uurados para a area de trabaIho. As alte raCjoe.s n a linha de cabecalho
feitas deatro de at / endat sers o perdidas.
simples.
loop at f t .
at n@w c.
endat ,
at end of c.
endat.
endloop.
onde:
tt
445
Ulilizondo at new
Cada vez que 0 valor de c for alteradc, as linhas de c6digo entre at new e endat
serio executadas. Esse blo co sera tambem executado durante a primeira pas
sagem de lo op au se quaisquer cam pos i esq uerda de c forem alrerad cs. Entre
at e endet , as campos num ericos i dire ita de c serio configurados como zero.
Os campos Dio numericos serso preenchidos com asteriscos (*). Se houver
mUltiplas ocorrencias de at new, codas elas serac executadas. at end of se
compo rta d~ uma forma semelha.nte.
Urn nfve/de contro /e co rresponde 0 0 cornponente identificodo em umc in~c5o
de interrupt;c5o de eontro1ei ele regulo 0 interrup;c5o de controle..Po r exemp lo,
no seg uinte frog mento de c6digo , f2 e urn nivel de eeeecle porq ue opo rece no i n~60
.oYO lrrrl...
TEDO
at new.
loop at it .
at new f2.
"( deve extsct r alg l,lll cOd1go aqui )
endat.
endl oop.
for alterado.
,7;<~lg"rA
J3 I
va/orde II e
alteredo. AJ~m elisso.
eta mostro que 12
contem um osterisc:o
dentro do inle l11Jpo
de contrele (entre at
e endat).
Figura J 3
f2
~m
~~
~~
~~
Scrdc 1
3
_ -:..
; '~'
..
porque it se enccmrc c
direito do nivel de ccntrcle
~1 1
eslruturo de it.
conteVdo de it
fl
12
~~
~ ~.0;
~~
:W
--
@B ~
SAIDI
Sardo: 1 A
3 A
I B
2 B
EN1lADllli. Lisla gem 13. 9 0 c6digo nos figures 13.7 e 13.8 e reproduzido em um
exemplo pr6tico
2
3
1 A
3 A
18
I 8
A
B
1 re port ztx1309.
2 dat a: begin of it occurs 4,
3
fl.
4
f2,
5
end of t t,
6
7 i t.. ' lA' . append i t . "Preenc he i t com dados
8 it .. '3A' . appendit.
9 ft s '18 '. append it.
10 it.. '2B' . append it.
11
12 sort it by fl.
"t t agora se earece eee a Figura 13.7
13 loop at i t .
14
at new fl .
write: / it- fl,
15
16
endat .
17
endl oop.
18 skip.
19 sort it by f 2.
20 loop et it.
21
at new f2.
u-rz .
22
write : /itn. a-fl.
23
endat .
24
endlecp ,
25 skip.
26 sort it by fl f2.
"i t agora s e perece com a Figura 13.8
27 loop at it.
28
at new fl.
29
write: /it-fl.
30
endat .
31
at new f2 .
write: /4 it -f2.
32
33
endat .
34
endl oop.
35 f ree i t .
eentecde de it
11
447
..
..-
.~
~~
,'.
"1'.
;;".:
448
DllIH\IIEUS IIrnWSA'IJIIADAS,PAI1l7
Utilizende at end of
As linhas de c6digo e~[re at
ealterado.
7
8
g
10
11
12
17
18
19
20
21
05
efeitos
~l!rCo imprevisiveis.
Sintexe de
instru~ao sum
wri t e:
Utilizando a
,....
endat.
onde:
sort it by fl .
13 l oop 'at it.
14
at new fl.
15
16
\..CUldado
it-flo
endat.
wri te : / 4 f t af l.
at end of fl .
Sum calcula urn total do valor arualdo ntvel de conerole que a contem. Isso
ficm mais clare se YOCe considerar que essa instrul$io faz a seguinte:
of: ' . it-f lo
endet
endl oop.
22 free i t.
5J.iDi ~
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
3
4
S
6
fl.
12 type t ,
13- typl!: 1.
end of it.
7
8 1t fl" 'A' . it-f2 " 1. i t f3 " 10 . apPl!:nd i t .
9 it-fl" ' s'. 1t -f2 " 3 . i t f3 30. append i t .
449
450
sliol ~
3
1
2
total:B
IHlJ.ISE~
Listogem J3.1 J. Na
primeiro ocorrencia do
loop, a infelTU(Jf;oo de
controle e odonodo e
o instrvo sum e
execvtodo. Todos os
linhas que h!m 0
mesmo valor do ntvel
de centro/e sao
locolizados e cs
compos numericos Q
direito do n(vel de
controlesao somodos
no
30
10
70
30
40
area de trcbolho.
conteudos do linho
Fi gura 13 10
20
que occrre no
ccntecdcs do ltnhc
de cobec;alho
Flg u rg 13 9
valor
sort i t by flo
loop at it.
at neW' f L
sum .
wri te
de ccbecclhc
ANTES de sum
DEPOIS de SUIl
endat
endl oop,
IA I .
todas as linhas adjacentes que tern urn 'A I em fl. E1a soma as colunas
numericas a direita do my el de contrale e coloca 0 result ado na are a
at newnao e acionada.
U ma outra in strucio que voce pode utilizar para executar 0 pro cessamento de
a on change of , Tal instru; ao se comp ort a de uma
maneira seme lha nte a at . new.
icterrupcso de controle
acionada.
Antes de a linha 16 ser executada, os cam pos cia area de trab alho a
direita do nfvel de controle irao conter zeros. A instrucio sum lo caliza
todas as linhas adjacenres qu e t ern urn I BI em fl. Ela soma as colunas
numericas a direi ta do nfvel de controle e colc ca 0 resultado na area
on change of v1 [or v2 ] .
[e lse,
---)
endcn.
o nde:
451
452
. J6 que os compos e udllc res globeis nco existem fo ra de urn loop, voce
nco pode utilizer on change of fore de urn loo p.
executado.
Esse conceito
Se nenhuma alteracio fo r detect ada e el se for especificada, as instru~6es depois de el se serso execu tadas.
Figura 13 11
Esse ea primeira
a~ncia de um loop
com a utilizoo de
_ . t. '
on change of.
Uma unica on change of pe de ser acionada po r uma alt eraCjao den tro
de urn au mais camp os identificados depois de of e separa dos par or .
Esses campo s podem ser camp os elementares ou strings de campo . Se
voce estiver dentro de urn lo op, esses campos nao precisarao pertencer
ao loop.
FlgurR 13 '2
Quando on change
oj eacionado. 0
compo auxiliar e
atvolizado.
Voce pede utillzar sumcom on change of. 1550 soma tcdos os campos
numericos, exceeo o (s) identi ficad o(s) depois de of.
!2
Compo ouxilior
Figura 13 13
Esser e 0 segundo
possogem de loop. 0
confeudodo campo
c
per Ires de on change of
11
~~
~~
Q uando urn loop comeCja a execu cao, 0 sistema cria urn campo auxiliar global
para cada camp o ident ificado em uma instru cfo on change of con tida pelo loop.
Na criat;ao, esses camp os rece bem valores ini ciais padrao (espacos em branco
au zeros). Ele s Sao esvaziados quan do do termino do loop.
. q;;;;;Ii-~ 7
SiHI
o que he
Compo avxilior
global perc jff2
~0
asteriscos,
453
auxilior
correspoodido e on
change of nco ~
acionode..
- ..
.. '
!., . ;: :~
lt
11
!2
~~
~0
WI!
"
~~
.\ , ~ 1
.J
v
li;';~~
r:
454
- -~~~ -
possogem de loop.
EN1iADI~
Compo ouxiliar
global porn iff2
Eig u rp 13 14
Esse e 0 lerceiro
On change of e
odonodo.
1 report ztx1312.
2 tables zo.lfal.
.. 11.
.. 22.
.. 33.
.. 44.
itf4
i t -f4
it-f4
it-f4
18
enecn.
endloop.
19
20 write: I 'End of 100~'.
21
22. executando 0 IIll!SlI'IO c6digo noulllente -
pa ra
ca mpo ouxilior,e
OJ
Compo ouxilior
global pera itf2
f lu u ra 13 16
ea quorlo
end of it .
..
..
..
..
14
15 loop It it.
16
on change of it-f2 .
17
write: lit-fl, 1t-f2, itf3, it-f4 .
On change of nee
14.
10 it-fl .. 1.
11 un." 3.
12 1t.fl .. 1.
13 tt.f1 .. 2.
F i gura 13 1 5
Esta
7
8
9
~7
I
I
ociona do.
n60
e odonodo.
Utilizando on change of
A Lis tagem 13.12 ilus t ra a utilizaC;i o "d e on change of.
23 loop at tt.
24
at first.
25
mte: I 'looping without a reset '.
26
'endet ,
27
on change of i tfZ.
28
wr1te: I i t .fl, 1t.f2, i t f3 , it-f4.
29
30
else.
write :
31
endcn,
32
endloop.
33 wrtte: I 'End of loop'
3'
35 .reconf1g\,lra
36 clear 1tf2.
37 on change of it-f2.
38
endon.
39 loop at it.
40
at first.
41
write: I 'Looping after reset ".
42
endat .
43
on change of it-f2.
44
write: lit-fl, it-f2, it-f3, itf4.
4S
endcn ,
endloop.
47 write: I 'End of loop'.
46
456
""'\AD'" PARTE 2
48 f ree it.
4'
54
eees et eet ,
55 write : I ' End of sel ect ' ,
56
57 "executa r I IM!!sma tn stru ~&o sel ect novamente sen
58 select .. fran , t x1fa l wheN! landt .. 'US' ,
59
on chang! of ztxlfal - landl.
60
write : I 'landl-'. ztx lfa l - l and!.
61
endcn,
62
endsel ect.
63 ...r ite: I ' End of sel ect.".
Embora essa ins tru!jio sel ect retorne 23linha.s, como pode ser vista
pela ultima linha de safda, somente cinco valores exclusive s de 1andl
existirio e serso escritos.
f unciona be'll
2
3
4
11 W
End of loop
l andl - US.
End of sele ct
landt- US
End of select
AlillSE ~
endon.
1 "A
457
Utilizando
e criado com
valores iniciais {espacos em braccc ou zeros). Se a primeiro valor em urn loop
for am espa!i0 em bran co au zero. on change of aia sera acionada. A Lisragem
13.13 ilustra esse problema e oferece urna solulj-a.o.
it:
"loop 11
end'lccp .
17
18 skip .
19 l oop at it .
ZO
wt-t te : I 'a- new rown ' 12 i t - fl.
Z1
on changl!! of it-flo .
22
write : I 'fl changed: lZ u - rr.
"l oop 12
I.
Z3
24
zs
26
el se,
if sy-tabix a 1.
write: I ' fl changl!d:' . 12 it-flo
endif.
27
Z8
endcn.
endl oop.
Zg f ree it.
458
SAiDA ~
-new row....
new row".
fl c ~anged:
new row"'''
fl changed:
3
3
I
I
....new row="
fl changed :
....new row....
f1 changed ;
....new row""
Para ser precise, a largura de uma linha da eabela interna em bytes deve
ser maier que au igual ao ndmero total de bytes de todas as colun as
selecionadas a partir d.a tabela de banc o de dados para a tabela ineema,
Se a Iinha da tabela interna for mais larga, as cclunas selecion adas d:a
tabela de banco de dado s serso preenchidas com os byte s mais a
esquerda de cadalinhada tabela intema, Os bytes remanescentes serso
configurados com os valores iniciais padrao.
0
0
"new row
fl changed:
3
3
I
I
"new roW""'"
fl changed:
2
Z
f1 changed:
AHluSE ~
Nco utilizesel ect e append. Sempre que posslve l, utillze sel ect into
table.
Nee utilize order by co m se lect into t abl e. Em vee dnse, utilize
a 3.0 F, somente
Resumo
Uma oper acao de array e a mane ira mais eficienre de preencher uma
tabela intema a partir de uma tabela de banco de dados. Ela Ie as linhas
da tabela de banco de clados diretamenre para 0 corp o ciatabela interna
sem utiliz ar quaisquer areas de trabalho. E implementada atraves da
adiljao i nt o tabl e na instru ljao select.
A tabela intern e deve ser suficientemente grande para acomodar as
colunas po r .voce selecionadas a partir cia tabela de banco de dados .
P&R
459
460
Workshop
as
Teste
1. Quais sao as mores dos campos
as instrucdes at e endet!
Exerdcio 1
C op ie 0 programa ztxlllOpara e1301. Alte re-c de modo que se uma lioha
for lccali zada e 0 comeedc de quaisquer camp os na linha localizada diferir do
que existe na linha de cab ecalhc, a linha localizada seja sobrescriu com 0
conceudo arual da linha de cabecalho . A saida deve se pareeer com a seguinte:
10
. 20
1 XX
2XX
40
50
4XX
5 XX
1
2
Dia 14
A instru~ao wr; te
4
5
Exercicio 2
o pr ogra ma a seguir preduz urn dump CUrto. Descreva c pr ob lema. copie (,
pro gram s para e1302 e so lucione esse problema.
M!port zt y1302
tab le s: zb. l h l.
dilta: begtn of it occurs la,
lHnr li ke zt xl f al -l1 fnr .
la ndl li ke zt xlfal .1andl .
end of it.
sel ect * frca ztxlfal in t o tab le it.
lo op at it .
write: / tt -If rnr-,
t t -I endt .
endl oop.
Comprimentos padrijo
MOYO ....
TEUO r
eutilizodo pe rc instruicO wr1te a fimde alocor espccc no listo de soldo pore um compo.
O s compos definidos dentro de urn prog roma por meio do in stru~co data te m urn
comprimento de sc tdc padrOo, como pode ser visto no Tabe lo 14 . 1.
hl1p:II_ .compus.com.br
- - - -- --
Tabela 14.1
formata e
co mprime nto de
sofdo podr6 o
Dado
Alinhamento
Fonnato
Sinai
Comprlmento
de tipo de seida
padrilo
Adireito
Adireita
1
p
Fig u r a 1 4 1
Os campos Decimal
Places., Output
Finol
11
Final
lniclcl
Nenhum
2~ d le n ou
(2'fldlenl+ 1
22
fldlen
Nenhum
Noto~oo cientffica
Adireito
Zero s inidois
A esquerda
mostrodos
Espo;os em bronco
length onufom
/>YPi<.
fldlen
iniciois suprimidos
A esque rdo
Determinado pelc
pcdrec do usu6rio
t
A esq uerdo
Aesq uerdo
HH,MM,SS
6
2'fldlen
Compos cornpododos
d.t.
d.t.
d. ta
data
de dados
Eo rrnatOl; c o pad ni o
a formato padrjo derivado do tip c de dado da variavel. A Tabela 14.1
descreve co mo a saida sera. fonnatada para cad a tipo de dado do ABAP / 4. A
saida de cam pos numericos (ripos p, f e f) ealinha da adireita com zero s inici ais
suprimidos e para 0 restante e alinhada a esquerda. Formata~ao adicional
especffica ao tipo tambern se aplica,
Form oto ~a o de dota pcdreo
Os vaIores de data irao gerar uma safda de acordo com a configura~o de Date
Format em U ser D efaults , contan to que e comprimento de saida seja 10 a u
maior. 0 comprimentc de sa!da pad rio cS, entao voce devers aume nti -lo para
pelc menos 10 ante s que a s separa de res possam servistos. A defmilii o de uma
variavel utilizando 1i ke (por exemplo, 11 ke sy-dat um) fari co m que a ccmp rimenta de sai'da seja retirad o do dominio.
463
_ _464
- _..
....
_~
OIA IH .11ilJyi0WRITE
O s valo res de bora irac gent uma safda no formato HH:MM::SS,contant o que
o compri mcnt o de saida seja 8 au maier. 0 comprimento de salda paddc e 6,
en tia voc e devera aum en ta-lo p.ara pelc men os 8 an tes que a s separado res
possam ser vistcs. A defmi~ao de uma variavel utilizando 1ike (por exemplo,
1; ke sy- uzet t .) fm com que 0 comprimen to de safda seja retiradc do domlnio.
Fo rm ata~ao
nurnericc pcdrco
5
6
7
8
9
10
II
12
Vod de ve efewcr sign off e efetuor ncvc mente sign on no sistema Rf3,
13
"IS
A Tabela14.3 mostra 0 efeito da ccofiguracac Decimal N otat ionna saida
16 write :
numerica.
17
18
19
20
21
Virgula
Ponto
, ,234.56
1.234,56
o formate
sistema
report ztx1401.
t ype t
val ue
11ke sy- uzet t
t2
value
dl
t ype d
val ue
val ue
like sydatum
d2
value
f1
type f
11
type 1
value
12
type i
va I ue
value
typ ei
13
val ue
i4
type i
nl(5} t ype n
value
pl(S} type p
val ue
c1(S) type c
val ue
d(2) type x val ue 'AOBO' .
2 data: t1
~c
'd d-
I
i
22
. 23
2.
25
26
27
28
,i
29
30
31
32
33
34
U . 26
/
/(8) tl ,- '- 26
/ (12) t l , 26
/
t2 , 26
/
dl, 26
/(10) dl, 26
/
d2, 26
/
n , 26
/
11, 26
/
12, 26
/
13, 26
/ (10) 13, 26
/(10) 14. 26
nl ,
26
26
26
Il lS) pl . 26
/
et , 26
/
xi, 26
/
pi,
/ (12) pi ,
'type
' ty pe
' type
' t ype
' t ype
'type
'type
'type
'type
' t ype
' t ype
'type
' t ype
' t ype
'type
' t ype
' t ype
' t ype
' t ype
' 123456' .
' 123456'.
' 19980201' ,
' 19980201' ,
' -1234',
'12345678-'.
'123456789-'.
' 1123456789-' .
' 1123456789' ,
123.
' 123456789' .
' ABC' .
t:
t:
d:
d:
d:
f:
1:
i:
1:
i:
1:
n:
p:
p:
p:
c:
x:
123456
12:34:56
12:34: 56
12:34: 56
type
ty pe
ty pe
ty pe
t:
t:
t:
t:
6
to 8
to 12
8 (from domain)
465
466
19980201
199B/D2/01
199B/02/01
-1.234000oo000oo00E+03
12,345,678123456,789 1123456789*23456789-
1123456789
00123
123456789123 .456 .789~
lHALISE~
type
t ype
type
type
type
ty pe
type
type
type
type
type
type
type
type
A 1i.n.ha 27 escreve 0 mesmo namero, dessavez diminuiodo 0 ccmprimente de safda em 1 e 0 indicador de estouro e vista no primeiro
caractere do campo de saida.
f:
1:
1:
1:
1:
1:
n:
p:
p:
p:
c:
type x:
A linha 28 escreve 0 mesmo nUmero utilizando a mesmo com primente, mas dessa vex 0 mimero e positive. 0 sistema altera corretamente 0 ndmerc e utiliza a campo de sinal para impedir estouro.
';:
467
8di~6es
para a
A linha 25 escreve urn inteiro maior utilizando 0 mesmo cornprimento. 0 primeiro separador de milhar erernovido para pe.nnitir que
o digito extra seja escrito.
write
!!!
-e
:J>
><
...
Sintaxe da
instru~oo
wri te
Up(l)) "['0(,1))
e obeidc do
instru~cio
Est. ,e~o detalha algumas das especificacoes especfficas de said. que po dem
a esquerda no
campo de safda.
onde:
'11
468
-.-
- .-
- - - -
.,.--
- -.-
_. _
...
D~ lH IN5Tl<U(i.o WRITE
e a especificaclc
ENTUDA..... U.st a g e m 14.2 Umo sen e de instruc;oe s write pora ilustrar 0 efeito do
escecth cc cec de colune de sctdc
u.
3
4
5
6
7
8
write:
' 12345678901234567'.
/ 1 ' X'.
'll'
2 'll ' .
3 ' ABC '.
4- fl.
7 fl .
'Z .
.I
skip .
writ e
write
write
9 wri te
10 write
11 writ'e
12 writ e
Os seguintespontos se aplicam:
469
____+_w__ l
0
valor da
+__
12345678901234567
variavel.
Se nenhuma adic;ao for especificada e du as inst ruC;6es wri t e forem executadas (como write: vt , V2 ' ) 10 valor de vz apare cerf DOl mesma linha de v I
for maier que a cornprimento cia Iinba,a saida sera truncada adireite. Se 0 valor
gerar uma safda alinhada a direita (como acontece com as variweis do tipo p)
antes de ser truncado adireira, ele sera deslocado para a esquerda, ccntanto que
existam espafJos em branco iniciais para impedir que ele seja truncado. Os
separadores serac rambsrc removidos, se necessaria, a fim de impedir a truncamento.
Uma novo linho de soldo sempre cc mecc re no infci c de um novo
eventc. a s eventos serec obrongidos no Cap itulo 17,
Compreen de nd o
e specificoljiio de posiljiio
XYA 1 1. 234 Z
IMluSE ~
A linha 7 escreve I VZ ' comecandc urn esp~o dep ois de ' XI.
...........................
~--_...-- _~-.. . - - -
470
D~ lU IHSTIlIJIiDWlltTE
Instruljoes
Sa ida cumulativa
write
S.liDI~
----+---1--+--
12345678901234567
' YZ'.
X YZ
wri t e 2 'YZ'.
XYZZ
write 3 'ABC'.
write 4 fl.
write 7 fl.
wri te
' Z' .
XYABC
XYA
1, 234
XYA
1 1,234
XYA
1 1, 134 Z
valor de salda.
As especificacoes de posiC;a.o e comprimento sao sempre opcionais. A
pcsicao e 0 comprimeoto podem sec especificados utilizaadc-se tanto urn
Iiterais, mas secl exigida se urn dos dais for uma varidvel.
Se u ma barn (f) preceder UIIl2 especificact c de co mprimento au po sir;io,
Ilia poderi .existir urn espaco entre eles. A Listagem 14.3 forn eee exemplos.
I r epor t ztx1403.
2 data : n (4) t ype p value 1234,
p
type 1 value 5,
3
1
type 1 val ue B.
4
5
7
B s kip.
9 write
10 write
11 write
12 write
13 write
XY
XlZ ABC
1234
1, 234
6 write : 1 '
12345678901234567
--+---1--.. -
1 +__ 1 ,
1 ' 1Z34567B901234567'.
1 (2) 'XYZ' .
1(4) 'Xl Z' .
'ABC'.
15{4) 11.
at I p(l) f 1.
/' ..+
1__ +_ ' ,
5
/ ' 12345678901234567' .
6 ski p.
1
I fl (2)
8 write 1 n-ita) .
9 write: 1( 2)
wr",
n-au), n.
471
DI. ,HlMmU\ADWRlTE I
;{[f;
~:,~
12345678901234567
ANlllSE~
US
adi"ao under
1 rt!!port zt x1406.
Z data f l(4) ~ al u l!: 'ABCD' .
3
4 write: I fl. fl,
5
I fl no-g ap. n ,
I "", fl, " ",
7
/ "", 2 fl . 6 " " .
I " " no- gap, fl no~gap .
B
s ki p.
endsetect .
CA
E
10lD
CA
E
Industri al Pumps I nc .
1520 Avenue Rd .
CA
E
1020
.!
,' ,'
25 ztx l fal-name1,
I ztxlfal-spras under zt ll,lfa1-land1,
zt xlfa1-st r as under zb lfal -namel.
10
1 report ztx1405.
11
2 hbll!:s: zt xlfal.
3
4 select * up to 5 rows from ztll,lfal order by 1f fnr.
S
write : 11 ztxlfal-11fnr,
IS ztll,lfal~1andl,
A utili za.~ao de no-g ap ira. sup rimir a espacc intermediirio, colocado automaticamen te depois de urn campo, se 0 campo se guint e nao river nenhuma
especificacac de coluna. A Lisragem 14.6 ilustra 0 usa de no-gap .
Utiliza ndo
Utilizar under fad. com que 0 primeiro caract ere do campo seja posicionado na
mesma coluna do primeiro caractere de urn campo anterio rm ente escrieo. Voce
nio podera utilizar under com urna especificaclo explrcita de p osi~3.o . A
Listagem 14.5 mostra exemplos.
Utilizando
SAloA~
1040
ENlRAOA~
C ABCD
ANlUSE~
CA
E
~---+---- l----+ ~
AS
BC
",
1030
473
.,
SAloA~
ABCD ABCD
ABCDABCO
, ABCD '
' ABCD '
ABCD,
ANlUIE ~
A linh a -4 escreve fl duas vezes na mesma linha. J a que nao existe uma
especificacac de posit;ao para 0 segundo fl, urn unicc espaco intermediirio sera.escrieo antes dele.
A linha 5 tambem escreve f l duas vezes. A ut ilizacao de no-gap depois
do prim eiro fara com que as da is valores aparecam na saida sem urn
espaco-intermediario.
-SJ " y
;".s.'1!" .:' .
_-__ - ~ -1
o.
f?~""
"f:""
"
usa de no-qap.
'.
475
I
!
Mover
o c6digo na Listagem
IAfDA ~
s.
ABeD
6.
7.
A:BC :D
A:BC
8.
9.
10.
11.
B:CD
1234
1234
1.23 4
12.
123,4
13.
VASe
..
I
I
II
476
"PR EMD" EM 21
nus AUr/ 4
simi icicial.
As linhas 11 e 12 mostram. 0 efeitc da combina~o dos caracteres
inseridos com alinhamento. as caracteres inseridos Ilia sao movidos
em rela~o
010
Figura 14 2
Observe 0 conteVdo
c/o camp o Convers.
Routine.
campo de safda.
Uma saf da de conver-s j o 6 umo retina cha modo que formato a sc ldc. Umo
5 write: / fl,
8 ski p
g set ect " f ran zt xlfa l \lfhere lifnr '00000010000 '
10
or l ifnr 'Vl'
11
order by 1i fnr .
12
write: / zt xlfal-l1 f nr ,
"0 domi ni0 contl!m conver so Saia de ALPHA
13
/ ztx lh.l - 1ifnr using no edi t mask.
14
endse1ect.
IS
478
Hi skip.
20
ztxmara-gl!:we i . o dCJllfnio cont&n converso Saia cle CUNIT
21 set locale la nguage ' D'.
22 wrHe: /
ztXlldra-matnr,
23
(10) ztXllara-brg ew,
24
Ztxlllara-gewe1 . o domfni o cont~ convers o Saia ee CUNIT
lDOD
1000
0000001000
VI
VI
1lI1USE ~
H103
50.000
0000001000
50.000 CR
H1D3
KI
g,.,j
A linha 20 escreve
(unidade de peso) utilizando a safda de
cocversfo CUNIT no dominic.
A linha 21 altera 0 ambience de textc para alemao. Isso
a se coaectar em alemao. .
eequivalenre
A linha 24 escreve 0 mesmo valor gewe i, mas dessa vez CUNIT exibe 0
mnemonico alemao.
Formato
Efeito
Ilffl/dd/yyyy
dd/Ilffl/ YYYY
Esse e 0 podreo, sendo ossim esses formotas rea lmente n60 Iozern
ncdo.
rrm/dd/yy
dd/Ilffl/YY
cotsc.
nmddyy
ddnmyy
yynrndd
479
480
DIA lH INSTRU(ADNRITE
SAiD! ~
1998/11/23
1998/11/23
1998/11 / 23
98/ 11/23
98/ 11/23
981123
981123
981123
1998NoV23
1998/ NOV/ 23
23/11 /1998
11/23/1998
die do semono.
4
5
6
!HilIS~ ~
y(4).
m(2J.
d(2)
end of f2,
begi n of f3.
d(2) ,
21
I
I
df g1t os
- perfil do usui r i o fmt, ! exfb fdo adot ando um ano cce 2
23
/ fl dd/",/yy .
dfgi t os
"perfil do usuar -t c fmt, anc corn 2 dlg i t os, s en
24
/ fl omld" .
separadores
"perfi l do usuar t c fmt, ana com 2 dl gitos. sem
25
/ f1 dcmnyy.
separador es
26
/ fl yynmdd .
"f ormat o yyrrrndd, sern separ edcres
27
/ fl using edi t mllsk I-!DATE',
28
/ ( 1) f1 using edit mas k I u SoATE ,
29
30 f2 - 11.
31 II'IOvecorrespond;ng f2 t o: t a. f4 .
32 wri te : / (10) f3 ust ng edit mask ' - '.J_ ', - f onnat o dd/nrn/yyyy
33
/ (10) f4 usin g edit lIlask '-.J-.J
". - f oma t o nn/d d/yyyy
~.
~\, ~
fl rrm/dd/yy,
7
8
9
10
m(2) .
y(4)
II
12
end of fJ.
13
begfn of f4,
m(2).
14
d(2)
15
y( 4) ,
16
17
end of f4.
18
19 write : I fl.
0 perfil do usulri o confi gura 0 formata
20
I f l rtmjdd/yyyy, 0 perfil do usulr10 conf igu ra 0 f ormat a
22
481
.,.
Utilizondo os
ENTRADA~
value
value
value
value
value
'000123' .
123.
D.
'123-' .
123.
7 write : I er ,
20 "type c",
8
/ cl nc-eere, 20 ' t ype c us Ing
9
/ nl .
20 ' t ype n",
10
/ nl no-zero, 20 "t ype n usi ng
11
/ nz,
20 ' t ype n: eere
12
I n2 no-zero , 20 ' type n: zerc
13
/ 11.
20 'type 1' .
14
/ 12 no-sign. 20 l type 1 using
rc -zerc - ,
no-zero ' .
value ' .
value using no-zero ',
no-sign' .
000123
123
0000000123
123
000000000o
t ype
t ype
t ype
t ype
type
1 report ztx1411.
c
c usi ng no-zero
n
n using no-zero
n: zero val ue
t ype 1
type 1 using no-s i gn
arredonda mentc e
decima l s
round
decima l s
currency
unit
...
decimals
dl!c illals
decll:1.a1s
dec illlah
decimals
deci mals
3
Z
1
0
-1
484
CIA lH IHSTltU\iOWRITE
l PR EN DAEM 21 DIA5 AB AP /4
0. 158
1. 575
15.755
157.546
round
ro und
round
round
1.575.456
round
round
round
round
round
15. 754.560
157 .545.600
1.6
1.575
3
2
1
0
-1
-2
3 dl!cillal s 1
3 decteets 3
F igu ra 14
Umdique duple no
compo $OIdv do Iobela
ztxHc3 exibin5 em tela_
5 write : / fl ,
I 11 cur-rency 'USD'. 'USC'
6
7
8
.i
11 currency' IlL'.
ITL'
D6la~s
eee- tcancs
Lira 1t aliana
9 ski p.
10 select f rom zblfc3 whl!re gja hr '1 997'
11
and u ldv 100
12
order by bukrs .
13
on changI! of ztxlfc3 ~bukrs
14
sel ect single * f rom ztxtOOl where bukrs ztxlfc3 -bukr s.
15
endon.
16
writ e: / ztxlfc3-saldv currency zt xt OOlwaers, zt xt OOl-wal!r5 .
17
endselect ,
485
!I
123,456
1. 234.56
usa
123 . 456
ITL
100.00
100.00
100.00
100 . 00
usa
usa
usa
usa
100,000 ITl
25,050 III
100,000
ITl
100, 000 J py
300,000 J PY
. 250. 50
CAD
200. 00 CAD
1.000.00 CAD
100.00 CAD
AMluSE ~
487
Tabela 14.6 Como as campos decan e andec do tobela t 006 ofetam a fc rmctoc oo
de scfdc de urn campo
casas decimals).
Quando a linha 7 e executa da, a tab ela TCURXindica que III caa tern
decan
andec
Resultado
30. 1
30. 1
30.10
30. 11
30.11
1
1
1
1
1
2
2
2
2
30.11
30.11
30. 11
30.1100
30.1
30.1
30. 1234
3D
30
30.1
2
3
3
3
o
o
30.100
30.123400
30
3D
30.1
Utilizanda a ad i~ao un it
A adi~ao un i t e utilizada para especificar a numero de decimais exibido para
urn campo de quantidade. As unidades, como cm (centfmetros) ou l b (libras),
dererminam 0 mimero de casas decimais a ser exibido. 0 c6d.igo, como 1% 1
(por cento] ou lKM 1 (quilcmetros) e especificado depois que unit e automaticamente pesquisada na tabela t006. Em seguida, as campos decan e andec
determinam quantas casas decimais serjo exibidas. Os dais eoni sm urn valor
numerico.
decan especifica 0 mimero de valores decimais estimados em zero que
devem ser truncados. Ele remove os zeros fmais e nunca truncard as casas
Entrada
488
D~ lH INSlRU\lO
33
34
3S
36
ztxmara-brgew,
ven5umo tela
indicondo a tobelo d e
referfndo e 0 compo.
zt xmara-ntqew,
ztxmara-ntgew unit ztxma.ra-ql!wef,
. ztXlllara-gewei,
85 tOO6-decan.
37
38
39
.,m
91 tOO6-andec.
endse'lect ,
99.1234
99. 1234
99.1200
99.1 2
99.1
99.1
6
7
,
9
I n,
MI00
HI0l
M102
M103
'as-i s' ,
..
10
II
12
/.
13
/ f2,
'as-1s' ,
14
I tz unit '%' , '% ',
IS
'15-15 '
/ fl.
16
/ 13 unit ' %' , ''1;' ,
17
/ fI,
' es-t s ' ,
18
f4 unit
'% '.
19
20 skip .
21 wr1te: /1 2 ' br gew as-is ',
22
31 ' -nth units' ,
23
48 ' ntgewas-is ',
24
67 'with units '
2S
79 'unit s' .
26
85 ' decan', .
27
91 'andec .
28 ul tn e ,
.
29 select frtlCll ztxma l"'l .
30
sel ect s i ngle t r Oll t 006 whe r e llIS ehi
31
write : /(5) ztxmara-mat nr
32
ztxma ra -bi'Ql!w.
es-ts
AHlllS! ~
as-Is
%
as- is
%
as-is
%
brg ew I s- is
w/un1ts
102. 560
10.100
1. 000
102. 560
10. 100
I
50. 000
SO
nt gI!W
100.000
10.000
0.000
0.000
100 M3
10 PAL
o ROl
o CR
a
0
0
o
o
ztxmara-gewI!1.
N; linhas de 13 a 18 [o rmatam de
Na linh a 14, decan 2indica que as zer os finais depois do segund o dlg iro
decimal devem ser rru ncsdos . Nrc existe nenhum, entia nada sera
489
490
D~ lUINSTRU(iO NRlTE
49\
AB
. + 1. + . 2 +.3. .. . +. . 4
1234567890123456789012345678901234567890
AS
Mudgndo
linha.
glinhamento
Com a ut.iliza~o de l eft -justifi ed, centered e right-justi fie d, voce! pede
mudar a valor de saida denero d o espa ljo distribuIdo p ara 0 campo de suda.A
Listagem 14.14 ilus tra esse conceito.
ENTRADA'" Listagem 14.14 Utilizando as cdil; 6es de alinhamento para a instruc;co
a esquerda,
ali-
,.. write
Resu ro o
1
3 write : /
4
/
' 1234567890 I
fl.
f1 left-justified,
5
6
7
/
/
/
8
9
10
/
f1 r1ght .j usti f 1ed.
/ ' .. .. +.. . 1. . . +. . 2 +. . .. 3. + .. .. 4',
/
' 1234567890123456789012345678901234567890 ' ,
/(40) f1 left -just i f i ed.
/ (40) 11 centered.
/(40) fl r19htju s t i f i~ .
11
12"
13
fl cent ered ,
A.
A.
formato e a cc mprimenro
Os cam pos de dat a e hera serac exibi dos com separadores, se exiscir
espacc suficiente para eles no campo de sa.!da. Se nao existir, os
separadores serio completamente removidos . Em um campo numerico, os separadcres de milhar sio removi dos, urn par vez, comecandc cia esquerda do campo em direljaO a direita a fim de exibir
mais djgit os. A te mesmo 0 campo de sinal sen utilizado se 0 mesmo
estiver em branco.
.:8
492
OIA lU IHSTllU\lOWRtTE
P&R
isso.
o
o
---=-------
I Fa~a
Workshop
o Workshop cferece duas maneiras de voce verificar 0
Teste
1. 0 que voce precisa fazer pan garantir que as altera~6es no padrio do
usuirio entrem em vigor?
2. 0 que acontecera quando um.a ma-scara de edifiio que come~a com
urn Vfor aplicada. a urn campo numerico ou a. urn campo de caractere?
493
3. Com quais tipos de varisveis a adiljao no -stan pode ser utilizada para
fazer com que urn mimero negative .aparelja como se fosse positivo?
Exercfcio 1
SEMANA 2
January
First
Revisao
Na semana passada, voce realizou as seguintes tarefas:
r . rr r
r> r
r:
r"'
r>
r>
r"'
r>
,...,...
SEMANA
Visio geral
N a Semana 3, voce produzira relatorios que utilizam simbolos grificos
e leones, anexa cabec;alhos e rodapes alistas e envia saida para a spool de
iccpressac utilizando a instruc;ao new-page pri nt . D epois disso , voce se
familiarizacl com as eventos i ni t i al i zat ton, start-of-sel ecti on, endof -sel ect ion, top-of-page e end-of-page. Voce tambem codificars subrotinas externas e internas e m.6dulos de funtjae e passara pargmerros
digitados e nae digita dos p ara eles par valor, par valor e resultado e por
referencia. Par fim, voce definid excecoes dentro do m6dulo de funt;:ao,
co nfigu ra ni a v;Jor de retorno de sy-subrc e criara telas de selecac
utilizan do a. instru~ae select- npt tons.
de tabela.
Durante a Dia 18, "Modularizacao: passando pardmetros para
sub-retinas", voce passara pardmetrcs digitados e n jc digitados
para sub -retinas; passard parametres de tres man eiras: por referaacia, par valor e par valor e resultado; e pass ard strings de
campo e tabeles internas
uma sub-rotina.
para
498
Di 15
Tecnicas de format a~ao, Parte 1
O bjetjvos do capitulo
Depois de completar este capitulo,voce sera capaz de:
Utilizar as opcoes graficas de fonna taljao da instrucio write (como
simbolos, leones e linhas).
Imprimir uma Iiseade saida e manip ular a saida no spoo1.
Iistade safda.
Tabela 15.1. .
Efeito
as symbol
as icon
as 11 ne
hllpJ l www.corTlPus.com.bl.
........
-FFFFFee
~
_~
500
enmnnn
-~~
nn
write n1 (a)
(b)
IS
icon.
(e)
IS
line .
illS
/4 sYD'_ fi1led_squaT"l!
11
iymbol.
iI.S
10
'KNCl'
lZ skip.
13 ul tne .
14 se lect liP to 5 rows f rom ztxlfal.
15
onde:
nl
write : / ztxlfal - l1 f nr ,
16
17
18
19
ztxl f al-namel ,
sytl.Jlhon e as symbol,
ztxlfal- t elfl.
endset ect .
o ccdigo D' Listagem 15.1 produ z a sald. mcs trada D' Figura 15.!.
Utiliza od o a
lOyD ....
m.o ,.
Urn
adi~ao
s{mbolo
as symbol
e urno figure
blcclcr simples
de
quoclrcdo, urn d rculo, urno po sta ou urn documento. A moiorio dos sfmbolos
ocupa um unico ccrcctere no liste de so ido, emboro a lguns poss om ocupor do is espcccs,
por exemplo,o slmbclc de urne moo opontondo pora a esquerdo (sym_1eft_hand). Umo
instrui;oo de exernplc serio write sYDI_l ef t_hand as syrrtlol .
A fim de escrever um sfmbolo, voce deve incluir uma das duas instrucoes
seguintes na parte su perior de seu program a:
inc:lud. <syrd,lol:> .
Utjlizaodo a
ad i~aQ
as i con
IOVO ....
lEUO "
ou
i ncl ude <list> .
Tcdos as s!mbolos sao imprimfveis. Isso significa que se voce enviar sua
safda p ara a impresscra, eles aparecerio no papel exatamen te com o voce os ve
online .
M
OYO....
TEi.ll:O"
5
6
7
B
ou
t nclll de <l1st>.
ccntem um
include <icon>,
0 nome entre slncis de maior e menor e urn progroma ind ude. Esse progromo
Para escrever u m leone, voce deve incluir uma das duas insrrucoes
seguintes na parte superior de seu programa:
re por t ztx1501 .
include <syrrtlol>.
t ables ztxlfll.
wri te : I sy:nJllus_box as symbol , ' Vendor Ma ster Tables',
/4 sym fi ll ed circl e as symbol , ' LFAl' ,
/ 4 sym)111e(cin::le as symbol, ' LFBl' ,
/ 4 syrn f i ll ed ci r cle as symbol , ' LFCl ' ,
/ sym~l us_b~x as symbol , 'Customer Ma st er Tabl es ',
5
6 write : / 'checkmark '.
7
/ ' r ed x" ,
,...-,
77
502
APRENDA EM !1 DIASABAP/4
8
9
10 s kip .
11 ul tne.
12 skip .
13 wr1te :
14 ul1ne .
I
I
F i g u r a 15 2
ztxmaraentg!W.
28
29
30
SiiDI ~
ztXll\ilri!l9~i .
eneseteet .
Figura 1 S 1
Este e um l!xomplo de
sardode listo
COllftondo
sfmbolos.
Iccne
Utjlizando a
adi~6a
as 1 j ne
NOYO '"
TElMO r
>
. .. ."
Em geral, para criar uma linha horizontal, voce utilizaria sy-ul i ne. Simplesm ente escreva-o e especifique 0 comprirn ento nec essaria. Po r exemplo,
para escrever uma linha ho rizontal que corne lia em posiliao 5 para urn comprimenta de 10, voce codificaria write 5(lO} sy-ul i ne. Pa ra eriar uma linha
vertical, utilize sy- vl i ne: par exemplo, wri te: sy-vl i ne , X sy-vli ne escreveria uma linha vert ical em qualquer lado de urn X. Se houver uma interse~ao
I
I ,
_ _ aa
504
mm
15.3.
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
AD
41
42
43
desenho deliaha,
contendo corocteres
de desenho de linha.
rr
ultimo registro-
505
--------4-----------------.f
506
!l
I.
~I:
1 re port zo 1504.
As linhas 30 a 37 escrevem as filhos do registrc ztx lfbl atu al utilizando caracteres de desenh o de linha aprop riaclos.
8 l oop at it .
g
1f tt - se'lev
10
11
12
13
14
15
1.6
7. Coloque
8. Pressione a reels F4. 0 sistema exibe urna lista dos itens disponfveis.
0
lev.
~o
507
11
18
19
20
21
22
23
2~
25
26
27
28
29
_.30
31
32
33
34
35
36
37
38
39
40
SliDA ~
<
1000.
it-son 1,
1t -hebnt , sy-vl t ne.
at last .
write / 5(84) sy-u 'l t ne.
endat.
end1 oop.
o c6digo
IU.
H
'~ .
508
DO ls,r!cH[CAS DE fORMATA(.iD.PAm 1 [
fconrs e eereeees
de desenho de /inno.
report:
line-si ze
11 ne-cou nt
A adifiio , i ne- s1ze con trola a largu ra da lista de saida; 1i ne-c cunt ca ntro la 0 mimero de linhas por pagina.
Sintaxe das
report
adi~6es
i nstru ~60
e como
onde:
t ,J e k sao con stan tes num ericas. Variaveis nio sio permitidas.
i especifica a largura cia lista de saida (em caracteres).
j
"
1t ne-count mo ncrmalmente ueilizadc com rela t6rio s que sio visualizados online. Por exemplo, suponha que a R/3 incrementasse a numera~a.o de
pagina cada vez que voce pressionasse a tecla Page Do'NIl. Se 0 ususrio gerar
urn relatorio, rolar para a. pagina 3 e entao redimensionar a jaaela, ele ainda
estari na pdgina 3? Obviamente, 2. capacidade de redimension ar a janela torna
dificil fazer regras sabre Dumeros de pigina online. vocep oderia tentar deixar
509
._ .;. ~:.
~p'rR~D-A. EM 21 DIASABAP/4
~.::~~'-'
~ ~, .
INluSE ~
~7,-:" }'
veri lacunas na salda e no inicio de paginas no meic da janela, Pan evitar esses
visao a direita,
problemas em relat6rios online, utilize a valor pad rsc para 1tn e- count.
A Listagem 15.5 mostra urn programa de exemplo que ilus tra 0 usc de
li ne-count el ine-size.
7
8
eoecn.
write: / 20 ztxlfc3-gjahr.
ztxlfc3-shbtz.
12
ztxlfc3~saldv .
13
ztx1fc3~sol11.
14
sllDI ~
ztxl fc3-habnl.
endsetect ,
5
Este l! 0 efe/todo
FIgura 15
odi)60
l me-count,
saida de lisla
endon.
10
11
15
Imprimindo
on chanYI! of ztx1fcJ-gja hr .
wri te / 10 ztx l fc3-bukrs .
1. Da.lista de safda, de urn cliqu e no batao Print ria barrade ferra mencas
Application. Se nao estiver disponfvel, escolha 0 caminho de menu
System->JJst->Print. A tela Print Scre en List sera exibida.
2. No campo Output Device, digite a
dOl sua impress ora. Voc! pode
obter uma lisa de codas as impressoras defini das para seu sistema
colocando seu cursor nesse campo e enta~ pression an do F4.
As configura coes padrao de impr essora sao espec ificadas no seu perfil de
usudrio. U tilize 0 caminho de meou Profile- > UserDefaults para altere-las.
Essas configuracc es sersc utilizadas sempre que voce imp rimi r urn relat6rio.
511
512
D~ 15,OOICAl DE FOWnl.io.PAJrrE 1
Se voce Ilio co locou a mara de seleCjao D elete After Print na tela Print
Screen List, a saida permanecerd no spool. Isso permite a voce reimprimir mais
tar de. Isso ~ l1w se sua impressora ~ m.wta personalizada,
513
Pa r padrsc, a tela Print Screen List a.parece como a tfrulo a u ~bc.c;alho na parte
superior do seu relatorio. Voce pode eriar seus pr 6prios titu los au cabecalhos
utilizando urn destes dois metodos:
spool
Quando voce cia urn clique no batao Print, sua saidaeenviada primeiro pan.. a
Cabecalhos de paginapadrso
1. A part ir de qualque r tela, escolha 0 caminho de menu System- > Services-> Print Requests. A tela Spoo l: Request Screen e exibida.
2. D igite as crite rios para localiz ar sua safda. Sell Id de csuaric (Inser ido
SCRE!HClM,. ogo"' .
3. Pre ssion e Enter; A tela Spool: Requests e exibida. Ela contem uma
Iisu das ent radas que correspondem com 0 spool.
4. Para exibir a saida para uma entrada, cclcque urn marca de s ele~io ao
lado deb. e entaD de urn clique no batao Display.
5. Para exibir a. safda para miiltiplas entradas, coloque urna mara de
selec;io ao lado de Multiple Entries ou utilize 0 caminho de menu
7. De urn clique no botio Back duas vezes. Voce volta a tela ABAP/ 4
Editor: Edit Program.
8. Execute 0 relat6 rio acvamenee. Voce vera seus novas csbecalbcs na
parte superior da said a,
Voce po de estar se perguntando: afinal, onde esses cabecalhcs sao armazenados ? E mesma se nao estiver, voce descob~iri isso de qualquer jeito a
segurr.
NOVO....
lEUO
I
!
I
I
i,
idles eo Headers
podr60.
scmNCAM....
lnrcle 0 Scree nCam "How to Create Stonda rd Report Headers Via Tex! Elements"
,. a go ra.
caminhc de menu
Goto->Text Elements. A tela ABAP/ 4 Text Elements 6 exibida.
2. Escolha 0 bou o de op,ao Titles and Hea.d~rs.
3. De urn 'clique no ba tao Change. A tela Al3AF/4 Text Elem ents:
Change Title And H eading 6 exibida. 0 campo Title conrem 0 texto
do titulo que voce digit ou na tela ABAP/4: Program xxxxx A n ributes. Se a campo List Header estiver em branco, 0 campo Ti tle e
exibido na p u te superior cia lisra. a campo List Header permite
anular 0 campo Title e especificar um cabecalho diferente do titulo
do relat6rio . Insira urn cabecalhc de !ista ai e, na pane inferior da tela
nos campos Co lumn Header, insira as cabe~alhos de coluna. De urn
clique nos botoes na parte inferio r direita da tela para rolar para a
esquerda e para a direita. ate urn maximo de 255 caracteres.
0
515
I
;1
il
t,
j!
1
517
Voce pode utilizar a.te 10 variaveis nos tftulos de pdgina padrac para urn
programa. Em seu programa, atribua valores as variaveis identificadas como
sy-tvarO ate sy-tvar9. Nos tirulos, utilize os nomes de varisveis &0 a' &9
correspondentes as varaveis sy dentro do seu programa. Por exemplo, se no
programa voce codifica sy-tvarO = I M I e sy-tvarl = I BB I , &Oseclsubsu tu ido
par AA e &l sera substiruido por BB no cabecalho.
Embora. cada varavel sy-tvar possa armazenar urn valor com ate 20
caracteres, 0 comprimento de salda da varidvel e 2 por padrio. Isso signifies
que, por exemplo, onde quer que &0 apareca no cabecalbo, exatam,en,te dois
espacos sao reservados para. ~ valor de sy-tvarO. Se 0 valo r em sytvar O~ I A'.
aparece I A'. Se 0 valor e I AA I , aparecerd 'AAI Se 0 valor e I AM I J aparece ~ AA I
a comprimemo de saida pe de ser aumentado acrescentando- se pontos
no fim. da variavel de safda. Par exemplo, para aumentar de 2 pa ra 4 0
comprimento da sarda de &0; codiflque &0 .. (dois pontos foram acrescentados).
Para aumentar 0 comprimento da salda para 7 acrescenee 5 pontes ( &o ) .
Allstagem 15.6 contem um programa queutiliza ti'tulos de pagina p;.drio
contendo varifveis. A Figura 15.7mostra como codificar essasvarifveis na tela
nhado.
,I
i,
,i .
1 report ztx1506.
Z tables ztxlfal.
3 parameters: p)andl like ztxlfal-lanal default ' US1
4 sy-tvarO sy-uname .
5 write: sy-datum to sy-tvarl.
6
sy-uzeit to sy-t varZ.
7 sy-tvar3 pJandl.
a select * from ztxlfal where 1andl p_landl.
9
write: I ztxlfa.ll1fnr. ztxlfal-namel.
10
endselect ,
portJ 0 progroma
ztxJ506.
il
,
KEHGREENWOOO
Country Code: US
1040
1080
1090
ZOOO
VI
V2
V3
Fl uf f)' Bunni es Lt d.
Moo l 1ke a Cow Inc.
V4
VS
V7
519
Na Figura 15.7, &0 . . . . .. .. indica o nde 0 valo r de sy-tvarO apare.cera. Os pontos aumentam 0 comprimento cia safda da variavel de 2
para 12. &1 indica onde 0 valor-de sy-tvarl aparecera, &2
indica onde 0 valor de sy-tvar2 aparecera e &3. 0 valor de sy-tvar-S .
Os pontos .aument am os comprimentos de safda para 10, 8 e 3,
respecrivamente.
Flgnrn 1 5 7
A leTa N3N'/4 T~
EletTWMIs: Otonge
Til/I! andHeading
"
I
i
NOVO ltrr...
lUIO
I
i!
o evento t op-of - peqe e acion ado quan do a primeira ins truliao write 6
executada. Antes de quaisquer valcres serem escriros na Iista, a sistema ramifica
pan 0 c6d.igo qu e se segue a to p-af-page e executa. Entao ele retorn a para a
instro~o wri t e e escreve os valo res. A Listagem. 15.7 e a Fi gura 15.8 ilustram
esse processo.
, top-of.page.
wnte :
u11ne .
A linb a 7 atribui
"j.
c.....
r7ti:
.A-
,.0.
---:.~
520
SAiD.l~
ANiusE ~
!i
1i ne-count na
instru~o
rep ort.
Do evemo end-of-page.
Figura 15 8
A solda do l.istcgem
15.7.
Para reservar espa~o paraseu rodape, voce pode codific ar 1i ne-c cunt n (m)
na instru~ao rep ort. onde n ea mimerc de linhas par pagina e me 0 namerc de
linhas reservadas para 0 rodape, Voce nio vai querer codificar muito n. porque
o usufric deve ser capaz de especificar 0 numero de linhas po r pagina quando
imprimir 0 relat6rio. Portanto simplesmence ignore-o e digit e report zxx
l ine- count (m) .
.
D urante 0 processamento de relatorio, sy-pagna coneem 0 mimero arual
de pfgina e sy-l i nna contem 0 admerc atual da linha qu e esta sendo escrita.
Codifique end-of-page na part e inferior do seu program a, como mostrado na Lista gem 12.8. As instrucdes qu e se 5eguem a end-of- page sio
executadas ant es de cada nova pagina ser iniciada. Uma nova pagm a e abena
quando uma instru~:io write e executada e se a saIda nao se ajustar na pagina
atual Par exemplo, voce pe de ter codificado report zxx line-count (3)
deixando Ires linhas_para 0 rodape e 0 u sudric pode ter especifieado 60 linhas
por pagin a, A Orea de rodape pcrtanto fiea dentro das linhas 58 a 60. Se voce
acabou de escreve r a S;t! linha, a p r6xima instruliio wr i te para uma nova linha
acionaci 0 evecec end-of- page) seguido par uma quebra de p agina, a eveneo
top-of-p age e entjic escrevers a saida da pr6xima pagina.
Note que 0 valor de f1 escrito na pane supe rior cia psgioa e 0 valor no
memento em que a primei ra inStfUljaO writ e foi dada, nio 0 valor n o come~o
do program..
enddo.
5
6 t op-af-p age.
write : / ' CONFIOOOIAL' ,
7
/ ' Thi s page begins wi t h number' . sy-1ndex.
8
9
uli ne.
4
10
521
11 end-ef- paae.
12
13
14
15
write:
I
I
5Y-II1 tne,
'The nl.ll1ber of kicks at the t op of the next page will be ",
e execu-
sy- t ndex,
SliDA ~
P1 ease k1ck me
Pl ease [(1 ck me
Pl ease k1 ck me
P1 ease ki ck me
Ple ase kick me
P1 ease k1 ck me
Ple ase kick me
Pl ease k1ck me
Pleas e kfek me
P1 ease k1 ck me
P1ease k1 ck me
P1ease k1ck me
P1u se k1 ck me
P1ease k1ck me
---_..-----_
..---------------_..-----------_..---
times
ti mes
times
t imes
t imes
7 times
2
3
4
5
6
8
9
10
11
Please
Ple ase
Pl ease
Please
kick me
k.ick me
ki ck me
kick me
t11OO5
times
t imes
14 ' t imes
--- --.------------_
~%.~~-
CII
_-.----15
15 times
16 t imes
17 times
18 tfmes
"i :
reserve
essas linhas juntas como urn grupo na saida,e impedir qu e elas sejam.divididas
em duas paginas.
U tilize a instrucfo reserve para manterum gropo de linhas juntas na lista
de saida.
t1.Jnes
12 t imes
13 times
--_
instru~cio
1 times
INllIIE~
Utiliza ndo a
CONFIOEKTIAl
onde :
523
524
skip .
endsel ect ,
Resumo
Voce pode criar said: gdfica simples na lisa utilizando as a.di~6es as
symbol, as i con e as line na instnlc;:ao write. Quando utilizar estas
11
12 top-at-page.
13
wri te I Vendor Report '.
14
ul 1ne.
15
16 end-af-page.
17
uf tne,
18
write: I 'Report'. sy-rep1d. ' Created by '. sy-uname .
o
siiDI ~
Vendor Report
1000
Par t s Unlimited
111 Queen St .
O' "
ON CA
416-255-1212
1010
Industrial Punps I nc.
1520 Avenue Rd.
416-535 -2341
1020
ON CA
416"'51-7787
Created by KEHGREENWOOO
Vendor Report
1030
ChickenFeed Ltd .
8718 Wishbone lane
Utilize
AB"
393-565-2340
1040
525
Motherboards Inc .
64 BitBus Blvd.
MA US
lista.
617535-0198
P&R
'lit... A linho 5 determine SI!: he espcco .po re mots fres li~hos no ~9ina otu~1. Se
AMAUSf
hewer, 0 c6digo noo feznadoe a linho 6 escreve as Informo i70es defobnconte
nas proximos linhos. Se nao hoover, 0 c6digo ad ona 0 eventc end-of-pace Oinhas 15
o 17) e entoc envic umo quebro de pagino. Ele, entcc, odona 0 eventc topof-page
(Iinhos 11 c 13). Depots, 0 instruc;oo write no linho 6 e executcido e os linhos 560 escritos
no parte superior do novo pogino.
o
o
Qual e 0 metode preferido para erial' titulo, de clientes utilizar vmaveis sy-tvar au 0 evento toP.-of-plge?
Como a evento top-of-page
"
526
Workshop
Teste
1. Quais sao as treS adi<;oes gr.Hicas que sao utilizadas com a instru clo
write? Qual instruc;:ao nm bem deve secieclufda a fim de escrever as
adic;6es graficas? Dc um exemplo de uma instruc;:ao include.
2. Qu ais sao as duas adic;:6es que sao ueilizadas com a instruc;ao report
pan ccc trclar 0 tama.nho da pigina de saida? A variivel urilizadapara
as duas adif:loes pede ser vanavel?
16
Exercfcio 1
Escreva urn programa qu e exiba as seguintes simbolos: quadrado, losango ,
cfrcu lo, ~culos, lapis, telefon e, nota e pasta.
Tecnicas de formatasao,Parte 2
Objetjvo s do capitu lo
AItlUSE~ Depois de conduirestecapitulo, voce sere copaz de
new-line
new- page
ski p
back
positi on
set blank Tines
http;/I_ .campl,Is.com.br
-- 528
Utiliza nd o a
i n stru~a o new-J j ne
Utilize a instru<;ao new-l i ne para [azer com que a safda cia proxima inStru~o
write cornea: em uma no va linha. Diferentemente de sktp au wr ite l. instru~6es consecutivas new..1ine nao fazem com que urna linha em branc o
apareca na Iista de saida.
Sintaxe pa ra a
'!!!
instru~a o
1020
1030
1040
new- J i ne
...
Utilizondo a
O.DO
2.000. 00
0.00
0 .00
100.00
100.00
0 .00
1.000 .00
D.DO
3 , 000 .00
1,5 00. 00
500.00
300.00
2 , 400.00
C aus ar a sU'da cia seguinte instrU'iiO write para comec;ar em uma nova.
pigina. Instruc;o es new-page consecutivas nao geram em paginas de
branco.
endsel ect ,
1000 1996 Z
1000 1998 Z
3000 1998 A
Indust ri al PI.IftPS Inc.
Sintcxe para a
...
m
Parts UnHllibd
1000 1990 A
1000 1991 A
1000 1992 A
1000 1993 A
1000 1994 A
1000 1995 A
1000 1995 Z
1000 1996 A
1010
seguiate.
III
t ndstl ect.
1,000 .00
0.00
1.000.00
0.00
0 .00
1,000 .00
0 .00
1,000.00
5.000.00
4.00 0 .00
0.00
500.00
5 .000 .00
11.000.00
10 ,000 .00
1. 000 . 00
1. 150.00
9,000 .0 0 '
50.00 0.00
0. 00
0 .00
10,000 .00
instru~Qo new-page
1, 000.0 0
1. 500.0 0
0.0 0
, . Rclcr pare c direitc permite a voce ver a porte direitc des linhas, mas 0 nome e 0
numero de fobriccnte peerrcnecem dentro do visualizco . Is.so acontece porcue a instrulo
writ e no llnhc 5 e precedido perc instrut;co new1 ine no-scrol l i ng no linho 4.
A adic;ao no-sc rol l i n9 blo queia a proxima linha naquele lugar. A rolagem
horiz?oi2.l DaO tem nenhum efeitc nas linhas que Ioram bloqueadas des sa
manetra,
A Listagem 16.1 ilustra 0 usa cia instrucao new-Iine.
0 .00
0 .00
1, 500.00
AIliuSE'" AS linhos 7 e 8 cpresentom defclhes de fcbricontes e seo mais largos que a tela.
EH11101~
1000 1994 A
1000 1995 A
1000 1996 A
Chenical Nati on Ltd .
1000 1995 A
1000 1996 A
inslru~Cio
new-p age
[pri nt on :
off]
ande:
529
pri nt-on faz com que a saida da.s instrU'Soes write seguintes sejam.
enviadas para 0 spool, em vez da lists. Os usuaries mo veem essasafda a
menos que olhem no spool. (Visualiza'Sao e impressfo cia sarda de spool
que foi abordadamaiscedo oeste capfrnlo.} print-otf fax 0 eontriri o.
Instrucces new-page consecutivas nao geram piginas em braneo.
new- paqe nao aciona 0 evento end-ct-pace. Portanro, urn rodape nao
sera impresso na parte inferior da pagina atual se voce emitir a instru ~ao new-page.
til
Se V'Cld quiser fazer uma quebrc de p6ginc e adonar 0 evemc end-ofpage, c:odifique linhas sy-lind reseoes. sy-I i net ceotem 0 numero atuol
Sintaxe para a
instru~ao
[l1ne- siz e
new-page print on
tmtdflog]
destfd]
nt.llJCopfes ]
layout~d]
lt stnane]
caverpagejlag]
tttle]
do!'p't]
n c ievernGl'llt]
ktepfIag]
ntmfoys]
l tnes~rpage]
nJ.IllCo ltmu]
onde:
Quaisquer names em itllico no c6digo de pro cedimenro podem ser
urn literal ou uma variavel.
531
APREMD A EM 21 DIASABAPI4
Utiliz.e hrmediate ly ' x' para fazer com que a liSta seja Impressa
imediatam ente. 0 padrio e 1mned1ately , ', que armazena a Iisra no
chave de ABAP/4.
spool.
.
de capa.
Utilize recet ver para especificar 0 nome da pessoa que deve receber
o relat 6rio. E~e ~ im pressa na pdgina de capa.
U tiliz e keep i n spool IX' para fazer com que a solicital;3.0 de spool
perm aneca n o pr6 prio spool depcis que 0 relat6rio fo i impresso. IS50
p ermite ao ususri o reimprimir a lista sem executa r novamente a
rela.t 6rio.
5 new-page pr1nt on
no dialog
6
i Jmll!dia t el y ' X'
7
8
destinatfon prt_1 d.
A linha 3 solicit a ao usuario urn ID de impresscra. 0 campo estwospooldest tern urn relacionamento de chave estrangeira com a eabela
que contem os IDs de impressora, endc uma seta p ara baixo e exi bida
no campo de en trada. 1550 permire ao usuano exibir uma lista dos IDs
de impressora disponiveis.
533
534
Sem quaisque r a.di'io es, s ki p geea umalinha em branco. Slci pn gera n linhas
em branco . Se n for men or que 1, n enhuma linh a em branco sera geuda. ski p
no fim da pdgina atual causari uma quebra de p~ ski p gerari .l.i.nhas em
branco depois de qualquer instruliio wr i te, na parte sup erior da prim eira
pagina e na parte superior de qualquer pfgina comecada pela instru~ao newpage. Ela nio gerardlinh.as em branco no cornelia de qualquer au tra nova pagina,
nem no fim da Ultimapagina da lisra, Por exemplo, se houver espaliopara mais
duaslinhas naparteinferior d.a pagicaarual, ski P 5 gerariduas linhas em branco
o.a parte inferior da pdgina atual, mas nenhuma na pane superior da pr6xima
pfgina, Isso acontece porque a n<;JV3. pfgina nid era a primeira e nao foi gerada
por uma instruliao new-page.
Utilizando
insfrw.Co ski p
III
ski p [n : t o 11n!! n] .
c nde:
n eum literal numerico ou uma vanavel.
ski P to 11ne n faz com que a posicac atu al de saida seja configurada no
ccmeco de 1in.ha n d.a paginaatual A safda da seguinre instruc;rao wri te comecara
nessa posic;rao. Por exemplo , skip to 1i ne 3 faz com que a saida da instrUc;rio
write seguinte comece na coluna 1 dalin ha 3. Uma instnlc;rao skip to lin e que
coatenha um mimero de Iinha maior qu.c 0 mimero areal de liohas pa r pagina
sera ignorada.
1
2
3
4
5
535
536
SAiDA~
ANILlS!~
CA
1000
Parts unl tntted
1010
I ndust ri al P\II1PS Inc .
Chemi cal Hatio n ltd.
1020
1030
ChickenFeed ltd.
1050
The Bit Bucket
1060
Henery Lane Lt d.
1070
Fl i p M1 Switch I nc. . ... Last Vendor With Thts
-Count ry Code
CC V9
Code Now, Specs Lat er- l td.
no
Duncan 's Mouse Inc Last Vendor With This
-.country Code ....."
DE Vfi
Anna Banana Ltd.
Vll
Wiener Schnitzl!l I nc.
V12
Sauer kraut AG
Last vender- Wi th Thi s
-Count ry Code ..US va
Smile When You Say ~ha t ltd .
Motherboards Inc .
1040
l OBO
Si ltcon Sandwi ch ltd.
1090
Consume Ltd .
2000
JlIon1t ors and Mor e Lt d.
Vl
Quality First Ltd.
V2
cverprtced Goods Inc .
V3
Fl uffy Bunnies Ltd.
V4
/11.00 11lce a Cow Inc.
V5
Wol fman Sport Accesso r ie s Inc.
V7
The Breakfas t Clu b In c.
atribuido a n.
A primeira saida de linha depcis de uma instru~ao rese rve fei emirids.
Sintaxe para a
Utilizando a
instru~ijo
back
back
UI
back.
onde:
T-- - - - - - - - - - --
7 do 4 times .
8
n 51- i ndex; 10.
g
write: j 10(4) n.
10
enddo.
11
12 top-of-page.
l3
write : I 'This was lily t itle' .
14
ul tne.
15
back.
16
write 6 '15
17
skip.
i nstru~a o
SAiDA ~
I
2
3
4
10
20
30
40
IHillIE ~
enddo.
10
11 skip .
12 do 4 ttees .
13
do 4
14
15
16
17
18
enddo.
ttees ,
-Z
Sintaxe para a
III
lHilIsE ~
instru~ao positi on
position r1.
onde:
...
I re port zb1605.
2 data n t ype t ,
3 do 4 t1mes .
do 4 t imes.
5
posi ti on sy- tedex.
6
writ e ' A'.
7
8
eeeee.
new- li ne.
EH1RADI~
540
0016, lliHKASDEFORllATA(lo,PARTE 2 r
Utilizo ndo
Text 1
Text 2
Text 3
comp crtamento.
-Z
~
Text 4
Text 5
Text 6
CIl
I
I
SaO
suprimidas.
As linhas em branco geradas por write I sem uma variavel nao sao
suprimidas. Por exem plo, wri t e [, sempre genra. uma linhll em
brancc.Write / ., ' .56 gerarauma linh aem branco se set blan k 1i nes
on river sido executada de antemdo.
I
!
Por padr ac, linhas em braneo que resultariam da tentativa de escr ever
espacos em bran eo sao suprimi das. Port anto, a linha 4 nao fn com
que quaisquer linhas em braneo sejam escritas.
1
2
3
4
S
6
7
B
Resum o
fJ .
Utilize new..line para cornecar uma nov a linha au blo quear urna linha
especjfica no Iugar. Ela pede prevenir ro lagem horizontal de qualquer
linhaindividual.
14 skip.
15 write:
16 wri t e:
17 write:
I
I
I
f3 .
Utilize ski p para gerar linhas em bnnco nil. safda.. skip t o 1ine
configura a posil$io de saida para uma linha espe cffica.
Utilize back:: para retomar pan a parte supe rior d e urna pagina au para
o corneco de urn gropo de linhas.
Utilize pos i ti on para especificar a proxima ccluna de saida.
o e6digo na Listagem
Utilize set bla nk lines para permitir que linhas em branco sejam
criadas escrevendc varhveis q~e contenham esp aco s em branc c.
541
542
IL...-:...Fa~a
- - - - ' _
report zty1607.
data n type t ,
do 4 times.
do 4 times .
positi on sy-tncex.
write 'A' .
enddo.
add 1 to n.
s kip to line n.
enddo .
t op-of-page.
n sy-11nno.
P&R
sllol ~
Workshop
Teste
1. Qual instruc;ao voce pode utilizar para sobrescrever a mesma linha?
2 . Quando voce devers preferir uriiizar ski p sy-l i net em vez de new-
Exercido 1
Explique a fluencia de ccntrole no seguinte programll. e como d e funciona.
I
;
i,
AMA
AMA
AMA
AMA
17
Modularixasao: eventos
e sub-rotinas
Depois de concluir este capitulo, voce sera capaz de:
AJ3M/4
Entender as eventos de ABAP/ 4
IDVO...
TEiKO"
hltp;l!_
.cDmput ,COm,br
/t
Even tos
Sub-retinas
M6dulos de fun,ao
Esre capfrulo explica eventos e sub-retinas. 0 proximo capftulo trata de
m6dulos de Unljaa.
Utilize asunidades de modularizacao para eliminar 0 c6digo redpndante
dentrc de seu prognma e para toma-lo mais facil de ler. Per exemplo, suponha
que voce eenba uma sene de instrucdes que formatam urn endereco e precise
farmatar enderecos em mas lugares diferentes em seu programa. Em vez de
duplicar 0 c6digo dentrc de seu p rcgrama, euma boa ideia cclccar esse c6digo
em uma unidade de modularizacao e chamd-lo sempre que voce precisar
farmatar urn endereco.
.
r
NOVO '"
TWtO II"""
ossociodo com um eventc comee;o com urn nome de eventc e tenn ino quando
a prOximo nome encontrcdo. No listegem -17.1, as nomes de evento s60 1n1tialira t ten, start -of-s election e end-of-sel ection .
names de eventc sao pclevrcs
reservc dos. Voce nco pe de crie r novas eventos - somente pede utilizor a s edstentes.
as
. Quando voce executa esse programa, esses even tos sao acionados por
urn prognma de driver. as seguintes pmgrafos explicam 05-detalhes
desse conceitc.
IIDVO....
TIijO"
o progromo de driver
eos IlYentos que ere
2.
3.
Sliol ~
Z
3
4.
~~4~;J~~;~~~1~r-fi~~-~C
1.
' 2' .
\ :=.~~ ::
i:,;~~:.~:e~~e,~~~,~':.:~~~': ;...
5.
lc:6cl.go otuaQ
report ztxl70 1.
pode adonar.
~~ ...,
Progrcmode driver
-,:":;:.
(PSe~d0c6djgol
evemc
FigurA 17 1
1 report ztx1701.
2 fnitial1zation.
a write I 'I'.
400
Eventos
Ao contririo da prim eira impressao, as programas de Al3AP/4 sao baseados
em eventos. Urn born entendimento sabre eles e a chave para. um bom
eatendimento de ABAP/4.
rom linhas
0 evectc initialization. Se
de ccdigo seguirem essa primeira, eodas elss pertencerac
infti ali zatten.
O~ 17dIODIJWl1.lyio,eVEHlOSE SlJ8.R011JUS
Aciona 0 eveaec i ni t ia li zat i on, fszeado com que 0 c6digo que pertence a i ni ti al i zation seja executado. Se voce nio river cod.i.fi~do
urn evento in i t ia l i z ation em seu programs, 0 programa de dnver
pulari esse passe .
usudrio.
1. fl
2. fl
3. f l .
549
1
Z
99
I
I
reromara para
progra ma de driver.
I
i
driver.
. Esse ezemplo ilustra que voce! pode colocar os evento s em uma ordem
.... Listagem 17.2 "Eventos ccion odos no ordem ditodo pelo programa de
ENTiADI,. driver
1 report ztd702 .
2 data fl type 1 val ue 1.
3
6
7 start-of- se1eet1on.
8
write:: I ' 2. fl . '. fl .
fl 99.
9
Co1egoria
Event os
Driver
initiali zati on
at selection-screen
start -af -select ion
get
end-af-s election
at line- selection
at pfn
at user-conmand
top-af -page
end-of-pag.e
10
11 initialization.
Ii! write : I '1. fl' . fl .
13 add 1 to fl .
Usu6rio
Progromo
.Ir
I
Esse acionamentc duplo nao causa normalmente nenhum problema com seu
de usuario sio acionados pelc .:usu ario atraves da interface com ele. Os
evenros de programs sao as acionadcs de dentro de seu programa. Este
capitulo detalhs a usa de i ni ti al i zat ton, start-cf -se1ect i on e end-af-se-
Considerccoes espeCiois
00
Padronizando start-of-Sf] f ct ; on
Um' novo evento sempre come)il em uma nova linha na saida. Por
exemplc, se voce emi te uma instruljaO write em start-af-selection,
urn write em end- ot- se l ect i an come~ em uma nova linha.. Voce
pode utilizar skip ta line se for necesssrio continuar escrevendo na
mesma linha.
I
I
3
4 wrtt e:
5
lZ
13 top-of . page.
14 write: I ' Thi s is My Title ' .
IS skip .
I
I
.J
"
D~ 17.MDDUURllAlAo,[VENTOS E5U...onNAS
This i s My Titl e
pl - IIHT
End of progr am
.;.'
ANlusE~
fl - 'A'.
7 1fn- 'A'.
ene-et-selecttcn .
9
10
write:
endtf .
Flg urg
fl.
1Z 2
A tela de seleo
porc 0 progromo
ztx1703.
Desde que haja uma tela d e se1elii o pa ra esse programs, uma dela s
agora e mostrada, Ela aparec e na Figura 17.2. 0 valor atribuido a pl
n.a linha 7 apare ce n o camp o d e entrada,
1i.nha 4.
A linh. 4 ~ executada. Como esta ea primeira instruljio wri te execu tada depois de start-of-se lectian, ela aciona a event o top-of- page.
ENlli.DA..... Listagem 17.4 Nco cclo que um eve ntc dent ro de umo condit;ao ou de
,. um loop
1 report ztx1704.
2 data fl .
3
siiDI ~
nesti ng:
bef ore the statement ' EN D -O F ~S ElECTION' 1 the structu re introduced
by ' IF' mus t be concl uded by ' ENDI F'.
isso nio cause u rn erro de sintaxe, rrata-se de urn estilc de programa~ao pobre.
553
Nco utilize stop nos seguintes eventos: i niti ali zation, em selec t io n-screen output, top-of-page , and end-at- page. Tecnicemente, stop pode fundonor com top-of-page e end- at - page, se
voce evltcr utilizer a instruo write dentro de end-of - sel ect i on,
depois disso. No coso de top-of-page urn wr i te, ped e cousar urn
dump curto; no coso de end-of-peae, voC!! pede perder a scldc. E
mois segura evlto-lc 00 fodc dentro desses eventos.
Voce pede sair de urn evento a qualquer hora utilizan do as seguintes instrucdes:
exit
check
stop
Nesse me mento, p or favor revise a fun!jao da insrrucio check (apresentada no Ca pitulo l Ol "lns trucoes de controle comuns").
O s paragrafos a segui r descrevem 0 efeit o de check. e ex; t quando elas
sjo codificadas foradeurn loop. 0 efeito de stop e0 mesmo,independentemente
de ela ter sido codificada ou nao denrro de urn loop.
3 ..
*
5 *
05
even tos.
Em tod os as eventos:
6 *
7
stop imediatam ente deixa 0 evento atual e vai dir etamente para 0
evento end-at-s election. Executar stop dentro de end-at-s election
deixa 0 evento . N so causa urn loop infinito.
13
"execut a
14
lIIl:
19
20
21
22
23 initiali zat i on.
24 * exit .
25*
check l Z .
stop.
eher_sos .. ' X' .
"h6 evento
"h6 evento
557
40
41 at set ect f cn-screen.
"M evento
42 exit.
"M eventc
43 check 12 .
"vai para end-cf-selecttcn
44'"
st op.
45
message 1789(zk) wi th ' at sel ect i on- scr een'.
46
47 s tart-ot sele ct fon.
48
wri t e: / 'Top of SOS' .
49
50
51
52
53
54
55
Retornondo do liste
56
57
58 end-of- sel ect i on.
59
~1te: / ' Top of EOS' .
60
11
nit_t!05 'X' .
61
exit .
62
el seif chck ees ' X'.
63
check 1 : 2.
64
el setf stoP_eDs .o 'X' .
65
sto p.
66
endif .
67
wr1t e: / ' Bottom of EOS ' .
68
write : / '1' ,
69
/ '2 ',
70
/ ' 3' .
"hi
rehtOrio
- hi evento
"vai para end- of-se lect i on
relatOrl0
-h&reletet tc
71
7Z top-of-pag e.
73
write : / 'Title' .
74'"
exit .
75'"'
check ' X' ' 1' .
76'" st op.
77
instru~ ao
writ e
-ha event e
II!
ultne .
78
79 end-at-page.
80
ul1ne.
81 exit .
82 check 'X' 'y'.
S3'"
stop.
84
-M relat6ri o
-hI event o e retorna para a i nst r,ul;! o write
"goto end-of -selection - naQ escreve depois dis so
Vejamcs row de perto os evenros no contexte de urn relat6rio que tern uma
tela de sele ~ao. (Lembre-se de que a instruc;:ao parameters gera uma eels de
,e1e>10.)
Quando 0 usuirio executa 0 relatorio, 0 driver aciona i nit; al i zati on e
entio mcstra a tela de sele~o. Depois de pressionar 0 botio Execute. 0 driver
acionaos evenecs restantes, 0 programa termina e 0 uscsrio ve a lista. 0 usudric
pressiona 0 botao Back para retomar. 0 driver entio reiaicia 0 processamearc
comecando na parte superior da lista de evento . Ele ad ona 0 evenro initial izati on e entio todos cs eventos subseqaectes seguem novamente em sua
seqiiencia normal. 0 -resultado e que 0 usudrio ve a tela de sele~iio depois de
pressionar 0 bone Back. Ha uma diferenca no processamento, porem, quando
ocorre urna reiaicializacio.
A tela de se1e~ao tern sua pr6pria c6pia de todas as variaveis que sio
exibidas nela. N a primeira vez que 0 re1at6rio executa e 0 programa de driver
recupera 0 controle depois que 0 evento i ni t i al i zat i on terminou, ele copia
as valcres das varidveis do programa. para as varidveis corre spoodentes Il2 tela
de sele~io e as exibe. 0 usuaric pede modificar os campos de entrada. Quando
o usuaric pressiona 0 botio Execute. 0 driver armazena as valores cia tela de
se le~io em duas areas de dados: uma penencente i tela de s ele~ao e entio em
suas variiveis do programa..
Entretanto, essa aljao dual somente ocorre na primeira vez que voce.
executa 0 programa. Quando 0 ususrio pressiona.Back na lista, ini ti al ; zation
eacionado novamente. Quando a controle rercrna para 0 driver, ele nao copia
suas variaveis de programa para a area de dados cia tela. Em vez disso,ele exibe
os valores exisrentes da area de dados da tela; ele aincia contem os valores que
o usuario digitou. 0 resultado e que 0 usui rio ve. os valores que insenu por
ultimo. independentemente do que fai alterado em seu pr ograma. Entia,
depois que 0 usuino pressiona 0 botao Execute, os valores na tela sio copiados
para a area de clados da teta e entaO para seu program a. sobrescrevendo
quaisquer diferen~as. Por exemplo, se voce configura valores durante a 1nHi al i zati on, esses valores serao vistas na tela de se1eCjao quando iniciar a
S58
-I---
---====== ~~
p rograma. Quand o voce pre ssiona 0 be tte Back na tela de sele~aol initial;
zat ion executarf, mas as valores configurad os dea tro dele nao sen e mosrrados. 0 usuaric em vez dissoverd as valcres que ele digirou.
A linha 10 executa.
A Iinha 11 retorna controle para a linha 6.
A linha 7 executa.
Hi dais tipos de sub-retinas:
Sub-rotinas
MOYO ....
TWKI ~
Uma
Sub-retinas intemas
que pode ser choma do de cvtrc ponto em sev progroma . Derrtrc dele voce
pede defioir vcrlcveis, execvtcr instrve.s, compute r resultados e escrever soido. Pore
definir umo scb-rcnnc, utilize a insfruc;oo fOnD para indicor 0 lofti o de umo sub-retina e
utilize endfo rm pore indica r 0 se u fim. 0 nome de umo sub-rotina nco pode exceder 30
corederes.
.
Sub-retinas externas
A List agem 17.6 ilustrou urna chamada para um a sub -retina interna.
AHiuSE ~
Before call 1
Insi de sub!
Before ca11 2
Ins ide sub!
After calls
559
en
Sintaxe para a
instru~aa
form
f orn s [tables tl t2 . . . ]
1ft
endfonll.
code:
e 0 nome da sub-retina,
para-
A linha 3 executa.
A linha 4 transfere ccnt role para a linha 9.
A linha 10 executa.
A linha 5 executa.
. A
.s
560
Cada a~~o somen te pede ser especificada urna vez. Per exemplo, a
adi~ao tab les somente pede aparecer uma vez. En ereranto, tabelas
mriltiplas podem aparecer depois dela,
Die
CIl
perfol"ll a) s
b) n of sl 52 53
S
m
(tables tl tZ ]
[us i ng ul u2 J
(chltlg1ng: c1 I:'Z ] .
on de:
10 form 52.
11
write : I 'Hi from 52' .
12
endfoT"lll.
13
14 for'll 53.
15
writ e: I ' Hi from 53'.
16
endfortll.
valor de 1.
valor de 3.
Utilizando a sintaxe b) voce pode especificar que uma sub-re tina de uma
lista de sub-retinas seja executada. A n-es ima sub-retina na Iista de names
seguindo of eexecutada. Par exempl o, se n for 2, a segunda sub-rotina na Iist a,
ela sera execunda. A Listagem 17.7 ilustra esse sintaxe.
stop
Os panigrafos a seguir descrevem 0 efeito de check e exit quando elas
sao codificadas denero de uma sub-re tina, mas fora de urn loop. 0 efeito de .
stop dentr o de uma sub-retin a e 0 mesmo, independent emente se ela for ou
aac codificada dentro de um loop.
Em sub-retinas:
check e exi t imediatamente deixam a sub-retina e 0 processamento
contin ua com a. pr6xima instru~ao execuuvel depois de perfonn.
stop imediatamente deixa a sub-rotina e vai direrarnente para 0 evento
end-of-se'lection.
check, exit estop nao configuram 0 valor de sy- subrc. Se voce quiser
configuri-Io, atribua urn valor numerico para ele antes de deixar.
.
A Listagem 17.8ilustra os efeires dessas instrU~6es dentro de sub-retinas.
562
EHTRADA~
Lista ge m 17.8
sub-retina
as efeitos de exit,
In sl
sy-s ubl"'C
In sZ
1 N!!!port ztx17OB .
2 data fl value 'X'.
sy-subre
3
4 clear sy -subrc .
5 perfoT'll s1. write : / ' sy-subr c
6 perfonll 52. write : I'sy-subrc - ",
7 perform 53. write : / 'sy-subrc -'.
8 perform 54. write : I ' sy ~s ubrc -" ,
.t.
St opped. sy-subrc -
sy-subrc.
sy-subrc .
sy-subrc .
sy-subrc .
10 end-cr -seleettcn .
11
write: 'Stopped; sy-subrc .'. sy-subrc .
12
1 f sy-suarc 7.
13
stop.
14
" endt f ,
15
write: I 'After Stop'.
16
17 form sl.
18
do 4 times .
AlliUS! ~
19
exit.
20
enddo.
A saida da linha 11 inicia. em uma nova liaha, porque urn novo evenro
comeccu.
21
lZ
23
24
25
26 form 52.
27
28
31
3Z
33
34
do 4 times .
29
30
enddo.
Umo vari6vel g/ob~1 e cqueic que e definidc foro de umo sub-rotlnc vti1izondo
a instruc;oo tabl es ou data . Elc pode ser ocessodo de quolquer ponto no
. progromo, se je dentro de um eventc ou dentro de uma sub- retina. ~ boo prcticc de
prog romoc;Oo colccor definic;6es de vori6veis globo is no porte superior do progromo, em
olgum lugar an tes da primeiro llnho de c6d igo executevel.
MOYO'"
ID.MO,.
NOYO til...
TWO"
35
36 fonn 53.
37
do 4 times.
38
39
sy-subrc .. 7.
stop.
write I sy-index .
40
41
42
enddo .
endfonn.
43
44 forti 54 .
45
46
endfol"'lll.
Para variaveis
locais definidas
utilizando
local
ou
da ta,
a memoria C
alocada toda vez que a sub-retina echamada. Essa memoria eliberada quando
asub-retina termina, e entia os valores dentro dele sao perdido s. Para stati cs,
a mem6ria ~ rerida, Esses caracteristicas serio descritas pr ofun damente neste
capitulo .
21
22
23
24
endform .
*~----V9
Sl -A V9
51- 8 VI
52-A VI
52-B V2
Sl~C
V2 .
Sl~~~V9
S2-A V9
52-B V2
*S2- --V2
IHlllSE~
A Iinha 2 define uma area de tra balha global identi ficada ztxl fal .
5
6
7
8
9
write : /
zt xlfal-li fn r.
pertann sl.
wr1te : /
'''Sl ~--' .
ztxlfal-l1fnr.
perform s2.
wri te :
'S2-- ~ '.
ztxlfalli fnr .
10
11 fc rm 51.
12
write: / ' 51- A'. zt xlfal-lifnr .
13
14
15
local ztxlfal.
select si ngle f rom zblfal where 1Hnr. ' VI'.
write: I ' 51-8' . ztxlfall1fnr.
16
perform 52.
17
write:
18
endf onn.
19
20 f orm 52.
I .
56S
566
e 0 valor V2 e descartado.
A linha 7 escreve
A linha 8 transfere
mesmo valor
Antes de executar a linha 21, urna defini~o local de ztxl f al cia foi
. criada.. Portanto, a glob al ztxl fal -l i fnr e escrita,
A linha 22 selecion a urn r egisrro na area de trahalho glob al ztxl f al.
Definindo dodos
As varidveis definidas pela instrU~o data na parte superior do progr ama sao
globais. As definiljoes de data denrro de uma sub-rotina sao locai.s para a
sub-re tina, A mem6ria e aloca da para essas variaveis quan do a sub-retina e
retornar,
Utilize a instruliao statics p ara CM variaveis locais qu e Ili o sejam
libertadas quando a sub-retina termina, A sintaxe para sta t i cs ea mesma que
a sintaxe para. a instrucio data. A rnem6ria para. urna varisve l estdtica ealocada
na primeira vez que a sub-retina e chama da e e r erida quand o a sub-retina
rermina . Entretanro, uma varia-vel esti tica e visivel somente d e dentre da
propria sub-retina, e nio de dentro de sub-retinas iniciadas par ela. Da pr6xima
vez que a sub-retina far chamada, a rnern6ria para essa variavel torna-se visivel
nov amente. 0 valor dentro dela sera 0 mesmo de quan do voce river retom ado
dessa sub rorlna da ultima vez.
A memo ria de um a vwvel estinea p ertence i subrotina qu e a alocou;
essa variivel nio e visivel a panir de outr-.s sub-ratinas. Se voce alocar uma
variavel estitica do rnesmo nome em mu ltiplas sub-rotinas,'essas serio variaveis
separadas com sua propria mem6 ria e seus pr6prias w la res.
A Lista gem 17.10 ilus tra variaveis dd inid-.s utilizando dat a e s tatic s.
EKTiADAr
Listagem 17.10
data e stat i cs
1 M!port zt xl710.
Z data: 11 type 1 value 8,
3
f2 type 1 vatue 9
5 write: I 'before
51:' , fl . rz.
6 do 3 times.
1
pl!rfol'1ll 51.
8
enddo.
9 wM t l!: I ' af t l!r 51:', n , f2
10
11 101"1I 51.
12
13
14
15
16
11
data
fl type i val ue 1.
stati cs f2 typl! 1 v~lue 1.
write: I ' insi de 51: 1 , fl, f2.
perfona 52.
fl -. f2 12 '" 2.
ertdfona.
18
19 f ol"ll 52.
20
wnte: ' 52', fl,
21
ra.
endfonn.
before
insi de
ins ide
inside
6
.1
1
1
8
9
1
2
4
9
'2-
'52-2-
8
8
8
9
9
9
urn valor de 1.
A linha 13 aloca nova memoria para a vanavel escl.tica f2 e atribui a ela
urn valor de 1.
o A linba 15 mnsfere
DIA 1HODULWl.I\AlHVEHTOSESlJ8.ROTlfW r
voce deve memorizer sew nomes, assim como guardar as palavrascbave em instru~5es.
1010 ~
1!I.iO ,.
Resumo
P&R
o
o
o
o
Se voce river du as instru gdes codi ficad as de mesm o nome den do m esmo programa, qUa.D.do 0 ev ento for acionado a
sistema executara os dais na ordem em qu e eles aparecem em
seu programa.
teO
instro~io?
569
570
Oi 18
Wo rkshop
Modulariza~ao: passando
Teste
1. A varia~o write to cia instru~ao write acicna top-of-page?
Exercicio 1
erie u rn rela.t6rio que aceita urn parimeteo de entrada chamado p-landl.
Defioa-c como ztxl fal~1andl. Preencha esse campo com a valor padrio US em
tempo de execu~o, utilizando 0 even to Init ia l i zat io n. Seu programa principaldeve tee uma Unica instru~ao para. chamar uma sub-retina que selecioca
regisrros de zt xl fal , onde a campo 1andl igualao pardmetro p_l andl. D entro
de sel ect, chame outra sub-retina para escrever a registro . Utilize 0 evento
tcp-of-pape para criar 0 titulo do eelat6rio . Escreva 0 valor do campo p_landl
no titulo.
como parametres, que podem see locais au referencias para variaveis globais.
A mem6ria de parametres locais e alocada quando a sub-retina e chamad a e
Iiberadaquando finalizada.
Se vc cs definirvariaveis na instrU~ao form, a instrucio perform deve passar
urn valor para cada urna dessas varisveis.
htlp:J/wwN.CIJlTIP'Jt,com.br
572
NOVO ....
tRiO
NOYO ...
TWO
e ilustrada na Lis-
tagem 18.1.
~-----
IFa~a
3
4
5
12 val ue 'B',
fJ value C' .
6 perfom: 51 using fl 12 ra ,
52 using fl 12 13 .
8
9 tOrrt 51 using pI p2 p3.
10
vrtte : I fl. f2. 13.
11
/ pl. pl. p3.
12
endform.
13
14 torn 52 usi ng fl 12 f3 .
15
skip.
16
write: / f l . f2 . rs.
17
endform.
A 8C
A linha 12 retorna
Um pa~metro ndo digitcdo um po~metro formal que nciotem um tipo de dodo seguindo
suo definio no i~oo fonn. Na Ustcgem 18.1, todos as parametres ercm nao digllada s.
A 8C
A8 C
AN.iUSE~
I
I
CI'
cede:
51
574
IHiUlE~
Somente urn tipo de dado pede ser especificado na instnu;ao form. Urn
As
.. Passar ~~a variavel com 0 ~po de dado au comprimento errado para urn
pa::metro digitado causa urn erro de sinnxe. A Listagem 18.2 mostra como
'.
11
1Z fo rm 51 usi ng pI ty pe c
pZ t ype f
13
14
15
16
11
wr1te:
18
19
ZO
p3 type d
p4 type t.
pI,
p2.
p3.
I
I
I
I ...
164836
fun
endform.
MA.
575
like x
structure x
A qui, x pode ser uma string de campo au um a estrutura de DDle ou
tabela. Porexemplo, form sl using h I structure zt xlfa l defin e fs1 co m o
576
18
19
2D
577
21
24
wri te: I pI , p2. p3. p4. p5, p6.
2S
endfc re.
26
27 t om s3 using value{pl}
28
30
endfol'1ll.
Meto da
chang ing
Passe por
vt
refe~ncic
ENTRAOI~
1 report zt xl80J.
2 data : fl value 'A' .
3
4
5
6
7
8
9
10
f2
13
14
f5
16
value 'B' .
val ue
value
value
value
IMlUSE ~
Lembre-se do seguint e:
' C' .
' 0' ,
' E'.
' F' .
perform 51 using f1 f2
thanging
p2 val ue(p3 ).
usi ng vI
cha nging
Z9
13 f4.
11
12 perform s2 using f1 12 fJ 14
13
cllanging 15 f 6.
l'
15 perforlll s3 using fl f2 fl .
16
17 tom 51 usi ng pI val ue (p2)
A sint axe na instru~io f orm determina apenas 0 meto da pelc qual urn
paramerro epassado.
A adic;ao ve1ue ( )nio pede ser utilizada na instru c;io perfo rm.
using deve vir antes de changing.
A adi~a ust ngs6 pede ocorrer uma vez em uma instruc;ao. A mesma
regra se aplica a changing.
578
Utilizando
OS
Descri~ao
Vantag ens
Posse um po nteiro po re a
Muito eficiente
Pcr vclcr
do sub-retina. A memoria
ANluSE ~ . A linha 2 aloca mem6ria para a variavel flo Por esse exemplo, vamos
partir do pressuposto que a posiliaOde.mem6ri a e 1000.
variey!!!" possodo
Porvalore resultodo
possocJopor
refer~ndo ofela a
posio original do
mem6ria.
18 1
Como um pon5ml!trO
report zt x1804.
~,
~
ntes de c:homodo de 51
data f1 valu e 'A' . .
_
,Q
~t ~~bUiC;OO 11m 51
perfonn 51 us i ng f1
I f1 sc ldc : X
wr1t e
..- ..- . , .
Permite oltero<;6es e
-.-Jr:.~t:f .
. -.. .
.
fortll. ~1 .u.5 ing_ PI., pJ e:'t~~..eo.r~~'pposio de.m.e"!~~.l 000
,: pl - ' X '. - :~ iss2~~~o-ae mem6ri o 1000 pora 'X' .
endform .
.
- .--_.
EllflADI~
Lista gem
18.5
1 re port ztxI805 .
Z dat a: fl val ue 'A'.
3
f2 value 'a' .
5 wri te : I fl.
3
4 perfonn sl usi ng fl .
S 'IIrae I 11.
6 perform sl using 11
changing f2.
7
8 write : I fl . f Z.
f2 .
579
580
10 fo m 51 using pI
changi nri p2.
11
12
13
X
A
pl pZ - 'X' .
endforlll.
ANiliSE ~
AB
XX
fl automaticamente
A linha 9 escreve
Fi g ur a 1 8 2
posio de
en tes do chomoda a 51
~
op6s a otribui~50 em s1
perform 51 using f lo
I f1. soldo: A
writ e
ormazenomeTJto
Independente do
original.
perlol"lll 51 IIsi ng fl .
I fl .
5 writ!!
6
~i~;
B
9
write / pI.
lD
endfonn.
pI ' X' .
einalterado.
valor X.
rom
~~i~
EIlTlADA~
A linha 7 faz com que fl seja passsdc por valor. Portanto.jn se refere
a uma nova posilj2.o de mem6ria que ~ independente de fl. 0 valor de:
A passagem par valor e resultado e muito similar apassagem par valor. Como
no caso da passagem por valor, uma nova area de memoria e alocada e ela
armazena uma c6pia independente da variavel. Eliberada quando a sub-retina
termini. e isso accctece tambem quando a diferen~a ocorre.
Quando a instruliaa endfonn e executada, ela copia 0 valor da area de
mem6ria local de volta para a area original de mem6ria. As altera;oes do
parimetro dentro d.a sub-retina sao refletidas na original, mas nio at! a
sub-rotina reternar.
.
Isso pede pareceruma diferenca pequena, mas eorna-se maier. Voce pade
modificar, case a c6pia aconteca ou nao.
A c6pia sempre ocorre, a menes que.voce deixe a sub-rotioa, utili.z.a.ndo
uma de duas instrUlioes:
stop
message ennn
A instrUl;ao stop finaliza a sub-retina e vai direeemeate para 0 evento
end-cf -sel ect 1on. Se pl foi passado por valor e resultado, as alteralioespan pI
serio descartadas antes de end-of-sel ecti onser acionado. Num sentido; stop
compona-se como urn mini-rollback para parametro s de valor e resultado.
Quando eiltilizada dentro de urna sub-rotina, a instnJ'iao stop enormalmente
precedida par urn teste de urna condiliio ~orma1 dentro do programa. Se a
582
e resultado.
report ztxl807 .
dati: fl value ' A' .
St opped. 11 :' B
Fig u r a 1 8 3
perfonl: 51 "using f1
writl!: I fl. safda: X
A linha 15 alters
valor de pI para B.
indepe ndente do
original e copio 0
valor de vol'"
novam~e.
7 end-ct -selecttcn.
8
s
10 form sl changing value(pl).
11
pl 'B'.
12
endfonn.
IJ
14 form s2 changing value(pl) .
15
pl ' X' .
16
17
stop .
el'ldform.
A linha 14 faz com que f1 seja passado por valor e resu ltado. Uma
no va area de memoria ~ alocadapara pI e 0 valor de 11 ~ copiado nela.
A linha 16 emite a instru)ao stop . Ela Iibera a mem6ria para pI e
valor alte"cado ~ perdido. 0 centrale ~ transferido para a linha 7.
ormozenoml!!nto
sa3
584
- uma tabela interna aninhada DiD pede ter uma l.i.nlu de cabecalho. Tabelas
intemas aninhadas sao util.izadas rom freqiientementc Il2. vers ac 4, entia essa
tecnica sera necessaria com mais freqiiencia em sistemas mais novos.
A Tabela 18.3 resume a efeiec de cada Urn destes meeodos em tabelas
Tabela 18.3 Metodas e resultados de possogem em umo tobelc interne pera umo
sub-retina
Metodo
Com Iinhc de
Se a ta bela Inte ma
tiver uma linha de cabesalho
Possa ambos
cc becclhc
Sem t.nho de
ccbecclbc
Posse 56
ccepc
Posse
Metoda
Sintaxe
Com linho de
ccbecclhc
Umo estrutura de ODIC
Uma tab ela de DDIC
Uma tabelo interne com umc
tables it li ke x
corpo
llnhc de ccbecolhc
Umc tcbelc inferno sem uma
linha de ccbecclhc
Um corpo inferno de tobe la
(i t [ ]1
A TabeIa 18.4 mos rra a sintaxe pua cada metoda de passagem em uma
tabela intema para uma sub-rotin a,
Sem linhe de
ccbecelhc
using it [
111ke
ccbecelhc
Um cerp o Interne de tabelo
Tabela 18.4 A sintoxe de codo metoda de possogem em umo tcbela lntemo para
(it [ )J
umo sub-refine
Metodo
Sintaxe
form sl
form '1
form ,1
fo rm ,1
form ,1
Como passodo
t ables tt
using tt[ ]
changing ut ]
u'i ng valu.(lt[ ]J
changing value (ft [ 1J
Pe r referende
Per referAnde
Per referend e
Pcr vclcr
Po!" valor e resvltcdo
585
586
Se urna tabela intema river uma liriha de cabecalhc e voce quiser passar tanto
a linha de cabecalhc como a corpo pan uma sub-rotins, utilize a sintaxe
mostrada na primeira linha da Tabela 18.4. Isso passari ambos, Iinha de
cabecalho e ccrpc, que serso passados por referencia, Portaorc, altenC;6es
Ieieas em uma linha de cabecalho au no corpo da tabela intema dentro cia
A linha 13 faz com que a eabela interns seja passada junto com sua
linha. de cabecalho.Ela epassadapor refe rencia, encao pt eurn ponceirc
pan a original, structure enecessaria para tornar a esrrurura da tabela
ENTUDA~
l report ztdBOS .
2 Aqu1, IT E IIIIla tabela. tnterna que tern uma l 1nha de cabet;alh o
3 Este programa IlOstr a CQIl'lQ passar a l1nha de cabecathc e a ccrpo.
4 tables ztxl fal.
5 data it l tke ztxlfal occurs 5 with header Jtne.
sineaxe.
A linha21 altera c valor de 1i fnr nalinha de cabecalho. Cemo a ubela
int erna foi passada com a linha de cabecalhc por referencia, isso
modifica. 0 ccnteudc da linha original de cabecalho.
s
7 select * up to 5 rows from ztxlfal fnto table it order by l ifnr .
. 8 pl!!rfonn 51 tables it.
9 loop at i t .
10
write I 1t1ffnr.
11
end1oop.
lZ
1030
1040
' ..
EN1lADA~
' ; A linha 4 define urna uea de trabalho global ,txl fal. Essa uea de
trabalho eurna Stringde campo tendo a mesma estrutura que a tabela
de ODIC ztxlfal .
Lisfagem 18.9 Como passar uma tabela interna sem umo linha de
cabe~alho para uma sub-rotina e automaticomente cria r uma linha de
eobe<;olho
1000
1010
XXX
INluse ~
1 re port ztx1809.
2 .. Aqui, uma tabela i nt erna que nao t ell Imi 1i nha de ca belil l ho
3 l pasuda com l1nha de cab~alho
4 tables ztx1fal.
5 data: f t like ztxlfal occurs 5.
-nlio tell uma l1nha de cabe'W alho
588
o.
8 perform sl tables it .
9 loop at it into ztxlfal.
eli
n lo tee lIna linha de cabelial ho
wr1te I ztx 1fal ~ l ifnr .
10
endloop.
11
12
13 form sl t abl es llt st ructure ztxlfal . 00 vocf pode utillzar:
l'
IS
16
17
18
19
11ke it
11ke U[
1010
XXX
1030
1040
A linh. 4 define uma irea de trabalho global ztx'lfa l. Essa irea euma
suing de campo que tern 2. mesma estrutura que a tabela de DDIC
ztxlfal.
A linha 19 retorna
Se uma eabela int ema Dio tiver uma linha de cabecalho e voce quiser
passar 0 corpo sem automaticamente criar uma linha de cabecalho na sub -rotina, p ede utiliz ar a sintaxe mostrada nas linhas dais a cinco da Tabela 18.4.
Utilizando essa sintaxe, voce pede passer 0 ccrp c por referencia, por valor ou
por valor e resultado . Se voce passar 1t por referenda, as alteracoes feius no
corpo da tabela int eraa dentro da sub-retina imediatamente serio refletidas na
original. Se voce passar it por valor, uma c6pia local de it sera criada - as
alte~oes serac descartadas no final da sub-retina quando a mem6ria local de
it for liberada. Se YOCe passar 1 t par valor e resultado, as alteralioes serso
copiadas: de volta para a originalquando endf onn for executada, Uma instru~o
stop dentro da sub-retina descartars todas as aItera'i0es para it e tra.nsferiri 0
conerole diretamen te para end-of-sal ecti on.
A Listagem 18.10 ilustra esses merodo s.
EIITI.\OA~
Listagem 18.10 Como posser umo teb elo interne sem ume linhc de
ccbecolhc para uma sub-retine
.
589
590
20
21
22
73
2'
25
76
27
28
2.
Will.
SI!
nfer~n ch
34
m di fy pt from Wi i ndex 2.
3S
endfona.
36
37 form s3 changing value(pt}" like it. passa por valcr e res ultado
38
39
40
41
42
stop .
43
endform.
46
47
1000
yyy
1020
1030
1040
AlAUSE ~
com qu e uma e6pia separada cia eabela interna seja criada, enta o pt se
refere a uma c6pia local cia tabela interns, 1i Ice enecessaria para dcfinir
pt como uma tabela in tern a. Scm 1i ke, pt seria u ma varidvel simples e
um errc de sintaxe ocorreria.
A Iinha 18 mo stra a cutra escolha dispc afvel para definir pt como uma
tab ela interna.
wa-11 f nr 'XXX' .
modify pt frOll Wi i ndex l.
endfoT'lD.
tn
591
de DDIC ztxHal.
A linha 5 de fine a tabela intern a i t sem uma linha de cabecalho.
A linha 7 reside na tabela interm com 5 linhas de tabela zt xlfal.
A linha 30 faz com que 0 corpo da tab e1a int em a seje passado por
referencia e naa cria uma linha de cebecalbc p ara ele. pt agora se refere
aoriginal 1i ke enecessario para definir pt como uma tabela intema.
Sem 1ike, pt seria uma variavel simples e urn erro de sintaxe ocorreria.
A linha 35 reto:na.
A linha 37 faz com que 0 corpo da rabela intema seja pass ado per valor
e resultado, mo criando uma linha de cabecalbc para ele. pt agora se
refer e a urna c6p ia cia original. 1i ke e necessaria para definir pt como
uma tabela intema. Sem 11ke, pt seria uma variavel simples e urn err o
de sintaXe ocorre na .
592
A Figura 18.5 ilustra as difere ncas en tre sub-retinas exte mas e internas .
A linha 45 faz com que a tab ela intern e seja passada por referzncia e
uma linha de cabecalhc seja auto maticamen te criada.
Fig ur a
18 :'jj
As d~re~ enln!
svb-n:JIinos eJdemos e
mesmc area
reportttx1811 .
tcbles zlxllo1
dota 11 .
CJ
in1emos ,
lEUO "
FigurA 18 4
~ po rt
zt x1811.
perfonn sl (ztxl812) .
=r
~
?
endf onn.
Uma vwveI global que tern' 0 mesma nome nos dais programa.s e ~
defin ida utiliza.nda a instru~o tab les nos dais pragramas e co mu m
aos dais pragramas. U ma alterac;ao para essa variavel em um prcgrama
afeta 0 ou tre, Na Fi gura 18.5, a uea de memoria chamada ztxl fal e
compartilhada entre as dais programas. Qualquer alteralja.a nessa uea
de tnbalho evista imediatameme pdas dois program..s.
c:::J
report ztx1812.
fom 51.
-
d;fe..nte
repartzix1812.
tabl., zlxllo1.
dote 11 .
insnyo perfom que a che rne . A Figura 18.4 ilustro ume sub-rotina enema.
Umo ilustro o de
umo sub-lOfino~, .
demem6ria
593;
externa.
e
5 ztx lfat-1 1fnr" '1000'.
..
594
6 perfann sl (ztxIB12).
7 write : I 'f! .', fl .
B
/ 'l ifnr II', ztxlfal-lifnr.
!NlRADI~
Resu m o
Os parlmetros podem ser passadcs de tre s maneiras: por valor, par
valor e resultado, e par referencia. A sintaxe na instrucfc f onn deter-
SAlol ~
fl AM
l 1f nr .. 9999
INllIS~ ~
P&R
1550
afeta as dais
596
Workshop
Teste
1. Quais sao as parametres que aparec em na instruc;ao form chamada?
2. 0 que causa a passagem de uma varidvel de tip o de dado au compri-
Exercfcio 1
Execute
ramet ers e execute-a novamen te. Descreva a sequencia de eventos que ocorre
em cada case .
ENlliDA~ Lista ge.m 18.13 Expllque a seqllenclo de eventos que ocorre neste
prcqrcmc
report ztxl813 no standard page headfng .
ztx18 13 data: flag,
ctr type 1.
parameters pl.
i nf t ia11 zat ion.
flag '1'.
write : I 'in !nitialization'.
Ii 19
Modularizalao: modulos
de funlao,.Parte 1
Depois de conduir eseecapfrulo, voce sera. capaz de:
Entender e utilizar a instru~ao i ncl ude
Criar grupos de fun~.o e m6dulos de fun~.o
D efln lr parame tres de importacao, expo rta/iao e altera/iao
milO ,..
ul t ne.
;'
.:.
~?~V;.~.
NOVO ...
tcp-ot-peae .
add 1 to ct r.
write: I 'Top of page, fla g . ', f l ag. 'ctr .' , ctr.
KOVO....
TERMO"
h"p://www.compus.com.br
598
include ipgm.
onde:
tpgm e um program . do tipc 1.
ztxI903 .
Urn programs do ripe i nio pede cen ter insrruc ces parciais nem
ia completas.
A inStru~o 1ncl ude copia 0 conteadc do programa include no p rogram a
de inclusao. 0 ccdigc do program a include copiado como esti e substitui a
instruc;ao in cl ude no tempo da gera~ao de programs. A Figura 19.1 ilustra a
ins t~c;ao 1ncluee.
. F Igura 19 1
Q uando 0 progroma
gero do, este Ii )
resulta do do
Programo ZS
Report lA.
8 top-of - page.
9
write : I ' Company Codes for Vendor ' . p_l 1f nr .
10
ul tn e.
Progrbma
ze
Write 'There'.
c6digo-fonte.
Report lA
write 'Hr.
Write 'There '.
COIl'+Jany
Cod ~ s
f or Vendor 1000
1000
3000
. INluSE lI..
,.
599
101
modules de func;iio. Se a funcionalidade que voce exige j' oiio e abordada por
esses rn6dulos de funiio fornecidos pela SAP , voce tambem pod e coo seus
Se vocA quiser ver a c6cligo resultonte com fad e s a s inc ludes in-line
expondidos, execute a programa RSINCLOO, No te lo de selecoc para
RSINCLOO, no campo Program, digite a nome de um progromo que
inclui outros progromos. Coloque urn X nos compos Program Source
Code e Expand Include lines e pressione Execute. Umo listo do
c6digo-fo nte resultonfe sem exibido na proximotela .
lruIO
aspectos :
Um module de fu n~o o e a ultimo des quctro vnldc des principe is de rncdulcriza~oe do ABAP/4 . Ele e multo semelhante a uma sub-refina extema sab esses
~o
Vamos partir do pressuposto que nenhum gropo nem m6dulo de fun~:ia ainda
existam.
Voce ccmeqa crisndo um m6dulo de fun~ao. Quando cria.urn m6dulo,
sistema primeiro peclir.i a voce um ill de gropo de fun~ao . Esse ill informs ao
sist ema onde armazenar 0 modulo de fun~ao.
Quando voce fomecer olD, e se ainda ele.nao existir, 0 sistema criardi
ux:x
602
Figuro 19 3
A fundion Ubrcry
Esse 4 0
Injfjol~ .
re/oclonomento
hier6rquico dos
Proqmmg Principa!
componMmsde urn
grupo de luno.
SAPLfgid
r-----..",/
lnd ude lfgidTOP.
Indude UgidUXX.
lfg;dUXX
'NCLUDE lfg ldUOl
' NClUDElfg;dU02.
MQclulQ$ de funco
lfg ldU01
functionz tx1901.
write: I tir.
endfunction.
lfg ldU02
fun ction :r.
~
tx1902.
endfunction .
NOYO'"
TEllO r
KOYO .....
ltUO
r.
Oprogromo
principal de grupo
de futHj:Oc ztXQ.
Acessando a bibliotecQ de
fu n~ao
NOVO ...
TWO ,.
5E37.
Cada um des compon enres de urn grope de func;ao pede ser acessado a
partir da Function Library Initial Screen mostrada na Figura 19.3.
604
urn m6dulo de func;ao antes de trabalhar nele, alterar 0 c6digo e entao executar
uma verifiCa~o de sintaxe nesse m6dulo tinico antes de reati vs-lo. Dessa
maneira, os demais m6 dulos de fu nc;ao ainda podem ser cham ad os, mesmo se
voce estiver trabalhando em urn deles.
Na Figura 19.5, voce p ade ver esse grupo de fun~o zt xa que contem dois
modules de fun~ao: z_t x_1901 e z_tx_1902. a primeiro esta ativo, 0 segun do
nao (seu nome e comentado).
fun~a o
Urn m 6dulo de fun~o deve ser ati'lJado antes de ser iriiciado. H:i um. batao
Activate na tela Fun ction Library Initial Screen. Pres sionando-o se ariva 0
modulo de fun, aa .
Q uando 0 modul o de fun~ao river sido criado pela primeira vez., a
instru~o i nc1ude para de dentro do UXX sera comentada. Acivar 0 m6dulo
de fun~ao faz com que 0 sistema remova a comennric da instruci c i ncl ude.
a m6 dulo de fu.n~ao estara entao disponfvel para ser chama do de outre
program a. Se voc~ alterar 0 c6digo demro do m6dulo de fun c?o, ele Ilia
p recisara ser ativado ?ovamen te. Por ou tre lado , reativar naa causard qualquer
dane.
Se quiser, voce pede desativar urn m6dula de fun,aa. De ABA:F{4
Function Library: In itial Screen, escalha 0 caminho de menu F un ction Medul e- > D eactivate. A escolha desse caminho de menu insere urn come ntdrio na
instru~ao i nclu de para esse m odu le de fun):io dentro do UXX.
Todos os m6dulos de fun~ao que pert encem a urn de ice grupo existem
dentrc do programa prin cipal : sapl! gid. Por causa disso, urn erro de sintaxe
em qualquer urn desses m6du los de fun~ao fara com que 0 resto se tome
inoperante; a execu)ao de qualquer urn deles resultani em urn erro de sintaxe.
As fun)o es Ac tivate e Deactivate permitem que vace trabalhe em qualquer
mo du lo de fun~ao unic o de urn grupa sem afet2.f 0 resto. Voce pade desativar
fun~60
fu n ~a o
MaYO....
Pore passor pcrerretres pore urn m6dulo de funo, voce deve definir umo
TElMO
interface de m6dulode fun~o . Esse interface e c desc~oo dos porometros que
sao pcssados e recebidos do m6dulo de func;oo. Ela e tcmbem simplesmente ccnhecidc
como interface . No restante deste cap/tvlo, n6s vamos nos referir a interface do m6dulo
.
de fun~ao simp!esmente como interface.
Para defmir parjmetros, voce deve ir para uma de duas telas de defi.ni~o
de parlmetro:
Import/Exp ort Parameter Interface
Table Paramet ers/ Except ion s Interfa ce
A tela Impa rt/Exp ort Param eter Interface . mostrada na Figura 19.6.
Nes sa tela voce pede definir 0 seguinte:
Os parimetros de importacac
O s parfmetros de exportacic
as parimetros de altera/Sao
605
606
A tela Imporl/Expott
Porometer Interfoce.
NOlO...
1Bl!O ~
58
NOYO ...
lFlMO JII""
retomados do m6dulo de fun o. Esses vclcres se originom de dentro do
m6clulo de funr; oo e sao exportodos pore fora dele.
1i10 ...
mMO "
que seSo pcssod os no m6d ulo de func;oo, olterodos pelo c6d igo dentro do
m6dulo de furn;oo ee ntec retom odos. Esses volores se originom de foro do m6dulo de
func;eo, que a s recebe e a s passe de volta.
Pcnimetros de tabe/a sOc tc belcs internes que sOo passcdos pore 0 m6d ulo de
fun~co, a lterados dentro de le e retomodos. As tobe/os infernos devem see
definidos no progromo qu e cha ma .
NOlO ...
TrulO ~
Umo exc~oo e um nome para urn errc q.ue ocorre dentro de um m6dulo de
fu no . As exce~6es soo descritos em detolhe no pr6xima re~oo .
Passando pardmetros
as metodcs pan passar psrjmetros para modules de funliao sao maito semelhante s aquel es para passu parfmetros para sub-retin as enemas .
Par padract--.
Fi gurp 1 9 7
A tela Table
Parameters!
Exceptions Interface.
moneiro: quo ndo possod o per valor, 0 me m6 rio porc um pcr e rnet-c
de exporto~c o e definido de ntro do m6du lo de fu~ao. A instT:v ~o o
endfunct1 on ccpic 0 volar do po rdmetro de exportoc;oo de dentro do
m6du lo de funlioO para a vori6vel ofribuldo a ele no progroma de
c:homodo. Se a instruo endfunct 1on noo for executodc (porex emplo,
se voc e deixa 0 m6clulo defunc;o o ono rmolmenfe ufilizando a instru~oo
rai se ), 0 volor noo co piado e Q vcrievel do chomodor permc nece
lociterodc.
607
.~1r-r'
. -"',
;;",t'
~~,.
'F
d
dos
Utiljzondo porometrosigito
as se noo d llgito d as
Como as sub-retinas, os parametres dem6dulo de fun!ja.o podem ser digitados
au nio digitados. A digita!?o funciona para m6dulos de fun!jio da mesma
rnaneira como fun ciona.para sub-retinas . Os parametres Ilia digitados adotam
tcdas de suas caracrerfsticas tecnicas cia passagem de parimctro. Por exemplo,
se a pargmetrc passadc
e do
Voce nao pod e ut ilizar as dois meeodos ao mesmo tempo para um Unico
parimetr o . Voce deve utilizar ou urn ou outre.
A o utiIizar 0 prime iro me todo, simplesmente especifiqueum tipo de dado
de ABAP/4 n a cc luna Referen ce Typ e na tela Import/Export Parameter,"Po r
exemplo, na Figura 19.8, pl e p2 sao paramet res digirados que tern urn tipo de
da do definid c 0 0 ABAP/4 como i (iaceiro} , P3 tambem e digitadc, ten do um
tipo de dado p, 0 tipo i e um tipo de dado de co mprimectc fixo e p ortanto
tern urn comprimento de 4. a tipo p eurn tipc de dado de comprimento varhvel
e assume 0 comprimento e 0 mimero de casas decimals do pardmetro que e
. passado para ele.
Ueilizacdo 0 - segundo metodo, sim plesmente di gite 0 n ome de uma
estrutu ra de Data Dictionary na cc lun a Reference Field. Os parametres sao
defmidos como se voce tivesse ut ilizado a adiC;ao 1i ke na instruC;a~ fom em
uma sub-retina enema.
a s paramerro s tamb em podem ser opcianais e a eles podem ser fomecidos valores-padrao. Para fazer uma importaC;ao de parimetro opcional, coloque
urn marca de verifica~a na coluna Optional (veja a Figura. 19.7). Se m er uma
imp ort ac;ao de parimetro c pciccal, voce nao ted de atribuir names a de na
instruc;ao cal l funct i on quando cham ar 0 module de func;ao. as parametres
de exportacio serio sempre opcionais. Por isso, eu quero dizer que voce nao e
obrigado .a codificar nenhuro pargmetrc de expona~o na instrucao call
function. Por exemplo. se 0 modulo de fun~o z_xyz retoma ues parimetros
de exporta~io, el , e2 e e3 e voce quer s6 e2, en tia 56 codifiqu e e2 na instruC;io
.cal l function. Simplesmente omita 0 resto .
Para atribuir urn valor padrao para urn parimetro de imPOrta~ao, digite
.
um valor na caluna Proposal, cenifique-se de colo c.r as valores de caract ere
entre ispas simples. a s names de variavel sy tambem sio permitidos. Se voce
Nco a ltere nem exduo .esses co mentOrios; eles sOo gerod os palo
sistemo. Se voce os alteror, 0 m6d ulo de funo pode nco funcicno r.
~ CUI dado
Na Figura 19.8, voce pode ver que pt, p2 e p3 sao pass adcs por valor.
Figura '9
Os comenl6rios
ge rados pefo
sisl'ema no parte
...
",-
......,...~
_t1.. z tllf1oo.
JUperiot do
c6digo-fonle.
.,
or, .........,u1
ut",.h... ,
1_.1I1C-
.IIlUm1J....!rrE
Ch o rna odo
"niLT
m6cUJJJIj;io!:>s.J:d;ue::Jl
fuJJo
wr;~a.llO
.L-
Para chamar urn m6dulo de func;ao, voce codifies a instru~io call function .
a lux o de contrcle esta dentro cia Listagem 19.4.
... Ustagem 1 9.4 Este pregrcma executa uma chomodo simples pare urn
m6dulo de fun<;c o
OOilDA,.
1 report
zt xl904.
610
611
Utilize a ins tru Cjio call f uncti on para transferir controle para urn m6dulo de unCjao e especific ar puimetr os. A Figura 19.9 ilustra como as pao.
rimetros sao passados e recebido s do m6dulo de
funcsa
B ~fal'1! Call
Hi f rom Z TX 1901
After Call
IlI.luSl ~
Figura 10 9
Esta figure ilU5fJ'(J
CCIT10 05
par6metrDs
possodos e
recebidos do m6dulo
de fun;oo.
sOc
Z
:a::-
,...
><
[tables
p3 r3 ]
p4 it .. . ]
onde:
de fun,ao.
.'
names de par6metro
o esq uerda de _
vari6veis
0 direita
0 nom e do m6du lo de funtSao deve ser codificado em tetras maru.sculas. Se for codificado em minusculas J a fuot;aonao sera localizada e urn
dump curt o acont eceri.
612
.I
6
7
8
9
10
11
report ztxl905.
parameters: apt type 1 defa ult 2.
. op2 type 1 default 3. .
data rslt ~y;J1! p dec1llllls 2.
,t
oper and 1
oper and 2
art"sult
pI
p2
- opl
op2
importing
p3
r sl t ,
12
13 write : / opl.
rslt .
A liaha 13 escreve
l Local i nterlace:
."'-
IMPORTING
. VALUE(Pl) TYPE I DEFAULT 1
VALUE(P2) TYPE I
EXPORTING
VALUE(?3) TYPE P
fr
__ __
__
10 ,3 ,1 / ,2 .
11 endfunction.
1 function z_tx_dh .
2 . ... -- ------ --.----- -----.-.-. ----__.
4
5
6
7
Utilize
D. tel. de ABAP/4
1.
A linha' -4- define uma varidvel nomeada rs lt ripo p com duas casas
decimais.
.
z_tx_di Y. Inicie 0 sen z_ - dt v e coloque-o em gropo de fun~o z a Qembrese de subscituir 0 com as dois caracteres que voce escl utilizando p~
identificar seus programas).
0.67
~.
614
615
II
Figu rn 19 10
Esso ea tela
Function Module
Crecre:
Administration.
Agora stria urn boa hora para criar u:". pro~a de AJ3AP/4 a fim de
chamar seu m6dulo de fun~ao e tentar exibi-lo. Cne um progr ama como 0
mostrado na Lisragem19.5. Dentro de seu programa, certifique-se de c?difica.:
o nome do m6dulo de fun~ao em letras maiusculas. Caso contrano, voce obtera
urn dump curto, porque 0 sistema nio sera capaz de loealizar 0 m6dulo de
14. Por fim, para ativar seu m6dulo de fun~ao: pressione 0 bono Activate
na barra de ferrarnentas Application d.a. Fun ction Library Init ial
Screen.
fun, ao.
.
Utilize 0 Object Browser perc lister as modules de fonr;60 que \ICC!
locol Pdv. ObjBd s e
pressione 0 botec Display.
Re_5umo
616
Parametres digitados e njio digitados pcdem ser especificados e passados por refersncia, p er valor au por valor e resultado.
I Fa~a
Utilize possoge m pa r refe ~ ncjo pore
pardmetros de importOl;fic . Emois
efidente . Ten ho cuidado quando
uti Jiz6~ lo co m param etre s de exportocdo.
Os volores de pordmetros po r referend a
seo cltercdce imediotomente no
cham ada. Se voce alteror parametres de
exportccec antes de emitir 0
instruc;oo
Coloque m6dulos de funt;io que tem fun cionalid ade semeIhan te no mesmo grupo de fun4j:ao. Par exemp lo, vo ce pede
colocar todos os m 6d ulos de funli3.0 que calcularn depre ciacac
em urn grupo de fun<;ao, todos os qu e executam fu n4j:oes de
calendaric em outro gro p o de fun4j:ao e aquel es qu e ofere cern
interfaces de comunicacao externas em urn terceirc.
Wo rkshJ./.
oj.L
p
...,----_-'--
o Wor kshop
Teste
P&R
Exercfcio 1
U tilize a fun<;ao T est dentro da Function Library para testar 0 m6dulo de
fun,ao PO PUP_WITH_TABLE_OISPLAY. D epois de te star esse m6dulo de fun~ao,
examine 0 progr~a. a seguir e fa<;a urn progn6stico do seu comportamento.
617
...........
618
end of it.
result (lO}.
perform: f111 tabl e tabl es H,
call-fin ta bles i t changing result .
writl!!! : I 'Result- . res ult .
form fill tabl e t abl e s it 11ke i t.
endfonn.
form call fm ta bles i t changing result .
call function ' POpup_WmtTABLE_D ISPLAY'
1 ~o rt 1ng
endpos row
.. 30
startpos_col = 1
startpos _row .. 1
t1tletut
uporti ng
ctctse
tl.bles
valuetab
endfonn .
.. resul t
.. i t .
Modularizaicio: modulos
de funicio, Parte 2
Depois de conduir este capitulo, voce sera. ca.paz de:
Da is tipos de dodos
!ElMO ,.
As defini~6es de dad os colocadas no tope de i ncl ude sa o acessrveis a
partir de todos os modules de funliao e sub -rotinas dentro do grupo.
Esse ripe de dado global e persistente entre chama das de modulo de
func;ao.
As defiaicees de dad es den tro da interface sao conhecidas apenas a
partir do m6dulo de funliaO. Se a interface for definida como in terface
global, as definicoes de paxametro sao tam bem conh ecidas dentro de
todas as sub -retinas que 0 m6dulo de fun~o chama . Esse ripe de clados
globais nao epersistente ent re chemadas de m6d ulo de funli ao .
nllp ://~.compus.CDm.br
~~~
620
~~~
.a_
Edit-Locilize Parameters.
~o
,.
10 f'~o...
~c;;.~111 f11I;;;I;2-. - -- - - - - - - - - -- - - - - -cal l functfon 'z TX 2002'
expcrtt ng
p_i n
. parvU n
exceptions
oth er s 1.
endform.
11
12
13
14
15
16
17
18
is f';orm
;;;-:c;;.:l111_'fm:;I~3-.- - - - - - - - - -- - - - - --
20
21
l2
23
24
25
irport1ng - p_out fl
excepti ons
oth ers 1.
endform.
t errmnar.
e0
__
.~
3 *Local i nt er face :
mRADA.... Listagem 20.3 Este e 0 codlqo-fc nte do segundo m6d ulo de func;oo
..---_.
-----
- - - - ~
1 report zh2001.
2 par ameters pann_1n(l0) defaul t 'XYZ' oblig ato ry.
3 data fl( 10) val ue ' HUT'
- -
-- - ~-- --- ~
. .....
7 p_out g1.
8 endf unct1on.
621
-.
~. .. .. .. .. .. .. ~ .. "!II' .. .. .. ..
.. __
.-.~
!Hl1ADA~
Listagem 20.4 Este e 0 incl ude supe rior para 0 grupo de fun~ao zt xb
- ztxb que cc ntern as m6d ulos de fun~ao mostrodos nos listagens 20 .2 e
20 .3
SAiDA ~
AHAliSE ~
Na-Listagem 20.3,a Iinha 7 move o valor cia variwel globalgl para o_out.
91 ainda contem 0 valor colocado nela pelc m6dulo de fun~o anterior.
o controle rerorna para 0 programa de chamada e 0 valor eescrito.
. - . -- - - - - - - - - -
--/
Passa ndo uma tob ela interno via export; ng/i mpor t t ng
e changi ng
Se voce utiliza a parte da interface export ing / impor t i ng ou changi ng, voce s6
pede passu 0 corpo de urna tabela intema, Entretanto, essas partes da interface
permitem qu e voce escolha se pass a 0 corpo interne de tab ela par valor (0
padrao) au por referencia. Quando u tilizar esse metodo, voce deve especificar
table na coluna Reference Type.
As figuras 20.1 e 20.2 e as lisragens 20.5 e 20.6 ilustram as rnaneiras de
passagem tab elas intemas p~a urn m6dulo de fun~aC?
tmADA..... Ustag~m 20.5 Esse prog ramo passe tob elcs internos pore urn m6dulo
de fun~oo
i t!
10
importing
11
12
tab le s
1t2
c a be~ J.lho
cabt~al ho
623
t':,"_ 0-
AAa~.A . a . . .
A.
_-.....,-
..,'t:' ........
. . . . . . . -- - - - - - -
,-
624
13
14
15
16
17
9 ."
10 It11 ...
12 It.
it_a
it_a[ ]
.~
i.
18
19 write: I 'AFTER CAll ',
20
/ ' IT_A:' .
endl oop.
Porcmelefs mostro
como pa ssor 0 Corpo
do tobelo inlemo.
Fi g u r A 20
Parameters/
Exceptions mastro
~ ;0~ '
g;-;
;- x ;,_
~' .
,,-
~~~i
"
.....g)':riI;:~,""eu;
....
"..- . ~ .-....
i;"
m
; "! ......"'~ ....,~."'.
1
2
It"
_.
3 ....Local t nterface :
4
IMPORTING
YALUE {ITl ) TYPE TABLE
5
6
EXPORTING
7
YAlUE(lT2) TYPE TABLE
8
TABLES
..
..
"
<.
l-
modulo de func;oo
. _ . _.
. _
"
-s
::r~~;~",",,~""
~.
,n
~ ;- :
'lo-"..... '....,t.~...-it
~~::tjt'_'S*'.III'lo"-~~~
- L __
A telaTobIe
625
... . . . ....
""'""'
626
D~
SAioA ~
1020
AFTER CALL
IT_A:
1
2
3
IT_B:
1000
1010
1020
cabecalho.
A linha 5 coloca tres linhas em it_a.
A linha 8 passa 0 ca rpo de ; t _a para i tl por valor, para i t3 po r valor
e resulrado, e para 1t 4 per referencia com linha de cabecalho (it4
adquirira um a linha de cabecalho dentro do module de fun,ao).
u tiliza cso com it1 e i t3 porque estas njio tern linhas de cabecalho.
As linhas 15 a 17 escrevem
t rab alho wa .
on
- .-
1010
Ill:
1000
1010
1020
IT4:
1000
ANALISE ~
. --.
s(REEMCAM~ lnlcie c ScreenCom " How to Create Subro vtines with in a Function G roup" agora .
.".a..-.. . . . .
code comegou.
Para ver 0 include que acabou de criar, rerome para a tela Function Library
MOVO
JEiMO
i.:.
Po r exemp lo, depois de liberar urn modulo de fuD~aO, voce nao adicioDaria urn parameero obrigarorio, DaO alteraria as propostas e nem rem overia
urn pargmetro. Caso conrrario , quaisq uer chama da.s existente s para seu m6dulo
de fum;ao poderiam falhar ou funcio nar de maneira diferente.
Depois de liberar, voce ainda po de alterar a interface, mas precisa dar urn
passo extra para faze lo.
Para libera r urn rn6dulo de fU1?'~ao, utilize 0 seguinte procedimento.
scmNCAM~ lnicle a Sc~eenCom "How to Releose a Functio n Module- ogoro .
3. Pressione 0 borso Change. A tela Function Module Change: Administration ~ mostrada. No canto inferior direita cia tela, na part e
inferior da caixa Ge neral Da ta, voce veri Not Rel eased.
4. Escolha 0 caminho de men u Function M odul eRelease-Release. A
mensa gem Released aparece na parte inferior da jan ela na barra de
status. Na extremidade inferior direita da janela, Not Released muda
para Customer Release On e ~ seguida pela data atual.
Se voce tentar alterar a interface depo is que 0 m6 duJo de fun ljao foi
liberado, as campos de entrada. na tela de interface est ario acinzentados. A
0 nome do
m6 dulo de fun~ao que voce quer te stae n o campo Fun ction Module.
Pressione
629
..............
630
_~~--
-- -
A tela Test
Environment lor
Function Module s.
Figura 20 4
Module: Result
A te/o 1VJ.4P/4
Repository
Infetrnotion System
como oporece
in;ciolmente.
mostro os yo/ore s
a ntes e depo is pam
os pa l'6metros
changinge
tables.
631
632
A tela ABN'/4
Reposjtoly
Info rmation System:
Function Module
com os m6dulos de
UnCiao expostos.
l,
Digite m ultiples criterics de selecac aqui. Esses valor es sao conh ecidos com o os valor es inclufdos, au simp lesmente "includes". (Esse e
urn usa difer ente do. term o quando nos referimos a programas include.)
Eigura 20 7
A tela AA4P/4
Repasitofy
Information System:
Function Module
cam rcccs cs
seler;oes mastrados.
4.
633
A& A AA AA
A~A
AA A
A~
..-.............................
Figura 20 11
A tela Multiple
Selection.
A ceee ...&11Not.
."
Fig u r g 20 9
A ~Jo Maintoin
Selection Options.
fim da linha estari verde para mostrar que mais de um criterio -de
sde,'o existe (vej Figura 20.12 ).
Figura
2 0 12
A tela ABAP/ 4
Rep05itory
/nfonnationSystem.
A seta verde no fim
Figura '0
10
Atela Multiple
Selection com umo
barre de roJogem no
Iodo direffo e
camposRanges.
de seJe o existe.
... A.
636
AA
.~.A
A A ...
&
'.
F i gura 20 1 4
A tela Function
Module Display:
Documentation.
Figura 20 13
A docvm emo~Qo
A ~fa Fundion
Modules.
pa nimetro.
III!-
637
638
APREN" EM 21
eus ABAP /~
listc inteiro
~~~~~!!1~~~;);!;~~!;!!!;!@~~
Figura 2 16
Esse e 0 modo como B~===
tela Function
Module Creote:
(:I
Adm inistration
Explorando
OS
un~Cio
D epois de criar seu primeiro m6dulo de fun~ o, utilize 0 seguinte procedimento e gastc alguns minutos para explorar a s componente s do gropo de
func;ao. Voce deve se familiarizar com a estrutura que acabou de criar.
SClHNWI ~ lnlciea 5creenCom MExploring the Components ofYour Function Gro up ogoro.
639
640
.......L..A......._
..&...JL
a~
641
Fig u r a 20 1 B
Um erro de sinloxe
detedocJ em tempode
ellKUo dentrode
um m6dulo de fum;60.
i ncl ude. Voce nio tern permi ssao para modificar 0 UXX. Dar urn
clique duplo em quaisquer das instrucoes i ncl ude exibira 0 codigcfoote para urn module de fun~o dentro do grupo. Pressione 0 botio
Back para reto rnar. .
Flgurq 20 1 7
Ess~ 4 a progromo
principal pore 0
m6dvlo de fun"
z_ tx_dfv.
ttl!
,pc
11 BriE
'''''
"'iflil
~- :;- 4 x "
"J 11 .); .. if .
..
;~
~.
II
;..~~~~-'_
!i-~d~~..~,",
:w-... '.~_";;"
Para corrigir
... lnicie a ScreenCom -How to Fix on Error in 0 Function Module- oga ra.
5mENCAM~
A ma neira mais faeil de corrigir en-os ern urn m6dulo de fun~ao execu tar uma
ve['ifica~ao de sintaxe quando voce estiver dentro do m6dulo de func;aa. Voce
ped e fazer isso n.a tela Functi on Module Edit pressionando 0 bata o Check na
barn de ferramentas Application. Ate agora, voce 56 criou urn modulo de
funlji o, entac voce sabe por onde procurar se ele nia funcionar.
Entr etanr o, depo is de criar muit os m6dulos de fun~o. voce pe de termi nar na situaljio em que esta, chamando urn au mais m6dulos de func;ao dentr o
de urn grupo, com 0 sistema dizendc a voce que hi.urn erro desintaxe em algum
Confi gu ran do
Normalmen re depois de retornar de urn m6dulo de fuoiSaO, 0 SIstema. automaticamente configura a valor de sy-s ubrc como zero. Utilize uma das duas
seguintes instrucoes para configurar sy-subrc para urn valor nao zero:
rai se
mess age
raising
Utilizando a instru(;fi o r aj se
_rat
. se para sair
.... do m6dulo de fun,ao e configure 0 valor de
U t ili ze a .mstrucac
sy-s ubrc no retorno.
A.
642
.- .
..
. ..
_ ... . . . . . .-........~
. .. ... . . . . . . . . . . . . . - . .
D~ 2'1. MODUWlL\(.i D,M6~ DE FUNIAD. 'AilE 2
Sintaxe para a
instru~ao
r a'i se
CIl
raise xname .
10
11
12
13
14
15
onde:
643
exceptions
er ror_a - 1
error_b 4
eTTOr_c - 4
othe rs 99.
write: I ' sy-subrt - ", sy-su brc,
I I vout - ", vout.
1 function z_tx_2.0oa .
2 - -- -- --- ----- . ----- ------- ----- .--- -- -- -- -- -- -- -,-3 " " lo cal i nt er f ace :
4
IMPORTING
xname ped e ser qu alquer nome que voce tenha composto, Ela DaD [em
9 c6d igo no m6dulo de fun~c o mostrodo no listogem 20.8 e meremente po ra fins de exemplo; normolmente tc rnbern haveria um c6digo
que Haesse olgum process omento real of tcrnbem.
F igura 20 19
;ns1ru~6o
raise .
coli function I Z
~
XXX: l
fundion Z_XlOI..
exceptions
raise error_b.
error_A ~ 1
= 2+- este valor e
~ .
error_B
other
... 3
otribuldo a
endfundron.
sy-svbrc
it..,
"'''
'','''' .....'"
~~
VAlUE(EXNAME)
EXPORTI NG
Iste ilustro 0
processomento do
.a
partir do interi or
8
9
VAl UE (POUT)
EXCEPTIONS
ERROR_A
10 ."
ERROR_B
11
ERROR_C
12
ERROft X
13 -- -.- - - - - . - - - - --------- ------ - --- - ---- - - -- ----- - --. ------.
14 pout 'XXX'.
15 cas e exname.
16 when ' A' . r ai se error_a .
17 when 'B'. ra ise error_b.
lB when .' C'. r aise error_c.
19 when 'X'. ra ise error_x .
20 enecese.
21 endfunction.
o c6d.igo nas lisrageas 20.7 e 20.8 produzirf esta salda, se voce especificar
urn valor de A para pann_in:
sy-s ubrc
vout INIT
. . -644
---
- -
- -
instruc io ra i se foi exe cutada, 0 valor de pout nio foi copiado de volta
para 0 pro grams de chamada, assim 0 valor de vout nio sera alterado.
corresponde ao erro.
Sinlaxe para a
Ul
onde:
teo tipo da mensagem (e, w, 1, s, a au x).
e0 nutnero da mensagem.
(ee) e a c1asse da mensagem.
nnn
e0
nome
message .. raising
xname
Se voce nee ccdlflccr ot hers e uma excecec for configurada dentro
do m6dulo de fun<;oo que noo foi nomeodo no odi<;oo except i ons, 0
progromo ser6 obortodo e cccntecere um dump curto que tern 0 errc
de tempo de execu<;oo RAISE_EXCEPTION.
inslrv~ao
foi chamado.
Se a condi~ao nao foi tratada pelo chamado!, nem para 0 t ipo de
mensagem i , a mensagem sera exibida para 0 usuario em uma eaixa de
i~ o rti n9
23
pout
2'
l!!!rror_e error_w .,
error_i er ror_s error_a er ror_x =
oth ers -
26
27
28
29
3D
as
31
32
33
34
35
36
37
38
39
40
41
42
vcut
exceptt ens
25
1
2
3
4
5
6
7.
endfonn.
.:_---..,.,.----,--,....,-.,.--====
ca1l_and_dont _hand1e_excepti on.
tOT"lll
20 .9
f unct10n z_tx_2010:-
- - - . ~ - -~-~~. --- ---_. -------- -- -------- - - ._-. -- ~- - -- ---- - --""-lo cal interface:
....
""
."
~
9 ."
10
IMPORTING
VALUE(MSGTYPE)
EXPORTING
VALUE(POUT)
EXCEPTIOtiS
ERROR_E
ERROR_W
11
ERROR_I
12
ERROR_S
13 ..
ERROR_A
14 .ERROR_X
15 --- -- ---- -- -- -- ------.- ---- ----------- --. -- --- -- - -.--- - -----16 pout .. ' XXX' .
17 case msgt ype.
18 whl! ! n 'E '. message e991(zz) with ' Error E' rai sing er ror_e .
19 when 'W ' . message e992(zz) with ' Error W' raisi ng error_w.
20 when '1 '. message e993(zz) wit h ' Erro r I' rats i ng l!!!rror_i .
21 when'S'. message e994(zz) wi t h 'Error S' r ai sing error_s o
22 when ' A'. message e995(zz) with ' Error A' rais i ng l!!!rror_a .
23 when 'X'. message e996(zz) with 'Error X' raising l!!!rrOT_x.
24 eeeeese ,
25 l! ! ndf unct 1on.
647
A A A
648
SAiDA ~
sy- subrc
you! INlT
sy ms gt y E
sy-msgid ZZ
649
bota c Save e
a te la
inicial
Function Library.
sy-msgno 991
sy-msgvl Er r or E
AMius! ~
A excefjao er r or_e
e tratada
SCRHHOMltrr.. lnicie a ;creenCam "How to Docu ment Exceptions in the Function Module
~ Interface agora .
functjon
Em vez de digital a insrrucio call f unct ion em
SCREENCAU"
lnkle
ScreenC om "How to Insert a call fund ion Statement into Your ABAP/4
Progrom" cqcrc .
Para ver os efei tos de sua documentacio de excetjao l erie UJ;11 pro gram a
de ABAP/4. E m vez de codificar da pr6pria in strucao cal l fu nct i on, util iz e
o seguinte procedimeoto para genr automaticamente a instrucao call fu nct f on :
selecione-o.
5. Digite 0 nome de seu m6dulo de funr;ao no campo de entrada adireita
de Call Function.
6. Pressione 0 batao Continue (a marca de verificaljio verde). Voce
vol ta a tela Edit Program. U rna in strucio call f uncti on aparecera no
c6digo-fonte na Iinha acima da primeira que voce posicionou seu
cursor. A ins t ruf:iao comecar a na mesma coluna em que seu cursor
est ava. Os pardmerros e excecces qu e vo ce id entificou na int erface
aparecerao. Se um para metro estive r ma rcado como op cional na
interface, ele sera com entad o e 0 valor padrac ap arecera adireita dele .
7. Preencha os valores a dire ita do s sinais de igu al. Sinea-se livre para
alterar 0 codigo a u remover quaisquer linhas qu e se seguem aadi~ao
importi n9 se voce Dia precisar desses valores de ret o rn o.
650
Resumo
As varidveis globais podem ser definidas em dois niveis. Q uando
definidas no i ncl ude sup erior, elas sao globais para tod os os module s
de fun'iao dentro do gropo e Iembram de seus valores entre chamadas
a m6dulos de fun'iao dentro do grupo, contanto que 0 programa de
chamada continue a executar. Globalizando a inte rface, os parametres
sao visfvels dent ro de sub-re tinas chamadas a partir do modulo de
fun,an.
As sub-r et inas definidas dent rc deum gropo de funi?o sao codificadas
DO include Fo I.
O s m6dulas de fun'iio podem ser Iiberados pan. denotar que a interface 6 eseavel e nenhuma altera'iio significativa sed feita para ela,
P Ort"" O, ela ~ Iiberada pan dispooibilidade geral e ~ "segura" para ser,
utilizada em c6di go de prodc cao.
0 ambience de teste oferece uma maneira convenie nre de executar
modules de fuo'iiOsem escrever qualquer ccdigc de ABAP/4 .
M6dulos de fun'iao existen tes podem ser localizados com a ajuda de
Repository Information System.
P&R
o
o
Par que voce passaria urn panim etro de im portacdo par referencia? Se voce especificar que a s parimetros de irnp ortagao e de
exportacao devem ser passados par referenc ia, eles nio serio os
mesmos ? Por que exist e 2 capacidade de fazer isso?
Vma passagem por refe rencia e mais eficiente que um a passagem por valor. Voce deve util iza-la para eficienc ia. Entretanto, as palavra s Im port e- Export oferecem documentacio
im portance reference ao papel que cada parjim etro desempenha
dentro do modu lo de fun~ao. Voce nao deve alte rar parametres
Imp ort. des sempre devem ser passados sem alt era!ii o pela
m6dulo de fun~io. Tarnpou co voce deve aceitar valores no
m 6dul o de fun!iaoviaparfm erros Export . O valo r de urn Expor t
sempre deve se origin ar den tro do m 6dul o de fun'iao.
Work.:>J
sh
wo
~p.L-
o Workshop
Teste
1. Se urn pargmetro de mesmo nom e exisee em dois m6dulos de funC;io
dentro de um grop o e as duas interfa ces sio globais, as definicoes de
dados de dois desses pargmetro s devem ser identica s?
2. Sevoce acidencalmenre liberar urn modulo de fun'iao e quiser cancelar
a Iiberacac, qual caminho de menu voce pede utili z.ar?
3. Se voce DaO codifica others e uma excectc e configurada dentro do
m6dulo de fun'iao que nao foi nomeada na adi~ia except i ons, 0 que
acontece?
4. CheCK, exi t e stop tern 0 mesmo efeito com m6d ulos de func;ao que
tern nas sub-retinas externas. Eles devem ser utilizados denrr o de
m6dulos de fun,aol
Exercicio 1
Copie 0 m6dulo de fun'iao z_tx_div eo modifique para configurar a
exce'iao zero_di vi de, se 0 valor de p2 for zero. (para copier um m6dulo de
fun!jao, utilize 0 botac Copy na Function Library: Initial Screen.)
651
21
Telas de selelGO
Objetivos do capitulo
Depois de completar este capitul o, voce deve ser capaz de
usudrio.
Entencler como as matchcodes (c6di gos de combinacao) sao ut ilizados em programas ABAP/4.
Utilizar elementos de formataclo para criar telas de selel,fao bern
prcjetadas e eficientes.
Utilizer te las de selec;ao par a manter a inr egridade de dadcs .
Irttp;/I_
.compus,com.br
Jl:- .
654
II
Utilizando
0 evento at selection-screen
0 evento at user-corrmand
Utilizando
report ywhatyr.
tab les : marc, mvke.
Utilizando
0
eyento ; n; t; al ; zat ; on
!a
655
Por padrao, 0 evenro sta r t -of - sel ecti on e anexado a todos as eventos
no ABA P/ 4. Em seus pro gramas, voce pede definir urn bloea de processamen to e anexar esse bloco a uma palavra-chave de evento.
Par a 0 c6digo genericameate facit de ler, euma boa pratica definir blocos
sequenciais de processamento na ordem em que d es mais provavelmente serdo
acionados durante execucic cia tela de selecao. Eo fundamen tal tambem ut ilizar
as eventos mais imp orrantes para programacdc cia tela d selecao. Esses eventos
7
sao:
if sy-datUIII ge '01012000'
pushbut-
t on:
e Xil~ l @l
user-comnand 1234.
endif .
Essa instrucao, quando utilizada junto com 0 comando at sel ect i onscreen, e uma excelenre maneira de interagir corn 0 usuario quand o este digita
dados. A sintaxe esemelhante i de urn sel ect i on- screen corrment, exceto pelc
fatO de qu e os dad os sao passados quando 0 usuario pre ssiona 0 bono. A aljao
de pre ssionar 0 batao aciona sccrfi el ds -ucomn n o evento at sel ect ton-screen
e os cam pos de entrada sao importados. Esses dada s entao p odem ser validados
e uma mensagem pode ser exibida para 0 usudrio dependendo do prop6sito do
bo tao. Ess e e urn exemplo de como voce pode utilizar do is borees para
determiner quallinguagem informari os dad os selecionados.
III
o seguinte c6digo mostra a sintaxe para dois botoes que sao utiliudos
Z para escolher urna linguagem:
~m
at se lection -s cree n.
at us er- COllll'.and.
cas e sy- ucOlllll.
when ' engl'.
/.
-~
-J
~"
~ .~
656
......... --.-.. -
.. --
-----.
1anggerman 'Y'.
endcase ,
Nesse exemplo, voce pede verificar qual dos dois boroes foi pressicnado
pelo usuario utilizando urna instru cio case (veja a Figu ra 21.1). Quando 0
usu drio aciona 0 evento at user- ccrmand, 0 campo sY-UCOIllTl armazen a 0 no me
unico de quatr o byt es do item que 0 usuario selecionou. D essa manei rs, voce
pede codificardiversas validaljoes de dados au comandos de entrada do usuario
com base na combinac ic de dad os inseridos enos irens, nesse caso os botoes,
selecion ados pelo usuario.
Fig urA 21 1
Umo jmpreu60
dos
botOes.
Algumas tabelas 'de veoficacac podem ter mul tiples campos de chave
primfria. N esses casa s, as atribuicoes devem ser feitas para cada campo quando
se iniciam relacionam entos de chave estrangeira. r res op~6es sao:
NOYO....
ltiM:O "
657
Criar uma atribuirao campo a campo. Essa e a mais complete das tres
escolhas . Cada camp o de chave prim:iria na tabela de verificacao
corresponde a urn campo na tabela de chave estrangeira e todos os
campos-chave sao endc utilizado s para determiner entradas validas na
tabela de chave estrangeira.
1,
...
658
~ ~ -~
!I
campo de entrada contem urn valor especffico no campo chave cia tabela de
cia insrruca o se l ect , o campo constante e
verificado em conrraposicao ao campo de ch ave primdria que contem 0 valor
fixe.
verifica~ao citada . Na consulu
(Dj;..
sistema:
set ect
11
NOVO ....
mo "
E boo
Veja comcele funciona: primeiro urn objeto match code e definid o com
as tabelas secundarias e prim frias pertinenres e campo s significativos designados. Ess e objeto enno identifica tcdos os pcssfveis caminhos para .os
registros de dadcs exigidos . Em seguida, os ID s de matchcode sao criad os
mapeando urn caminho definido pelo obje rc matchcode. Os unicos'campos de
dados que sao admissfveis nesse ill sao baseados int eirament e no objeto
matchcode. Pelo menos urn ill deve ser declarad o para cada objeto matchcode.
Os ohjetos matchcode sao armaze nados como urn pool de ube1as, que auto~
maticamente e gerado para cada ID de matchcod e que voce declara.
Um pool de dodos e uma tabe lo l6g ico de pool que e utilizodo pelo SAP pore
ormazenor intemo mente dodos de co ntrole . Esse dodos , que noo sao pemnentes
extemomente, sdo mopeodos como um nume ro de tobelos de banco de dodos para umo
tobe lo do SAP.
NOYO ....
mMOr
659
..
660
~.
. .. . . . . . - - - - - D~ 2J,1HASDE SELE\lO
1550
de atualizacao I e K.
Fi g u r A 2 1
A tela iniciol do
Dote Dictiona ry.
Figura 21 3
A tela de otribufos
Main tain Matchcode
O b;ed.
1. Escolha urn nome p ara sen novo objeto, de urn clique no bono de
0Plii o Mat chcode e pression e 0 bon e Create.
2. Digite 0 texto descri tivo , quando for inserir sua tabela primdria na
tela Attributes mostrada na Figura 21.3, e pressione 0 batao Save. A
Figura
21
CatalogEntry.
;r.."
661
~~
662
~.II
APREMDA EM I I DI AS Am"
D1A IU,USDESEll\lD I
Figu r a 21 7
Os afribulos de
matdJcodedepois
do alivoo.
7. 0 sistema. pedid para voce criar urn ID novo se um nao existir (veja
F lgurq 21 6
Os otributos de
matchcodeanles do
DO
bo tao Yes.
Figu rA 21 8
Qtivoo.
Obi""
A co ixa de dia/ogo
663
A -a
664
.A"'~ I...I~
Figurg 21 1 2
A caixo de di6/09o
Maintenance
Motchcode.
Selection Conditions.
10. Siga. as passes que aprendem os para manter as campos de sele~o para
"esse ID de m archcode, cerrifique-se de inserir um tipo Update e de
urn clique em Save (veja a Figura 21.11). Discutirei ainda sabre tipos
U pdate mais adiante nesta selSao. N esse ponte, voce pede inserir rnais
crirerios de selecao pr essionando 0 bono Selectio n C riteria.
12. Agora rude qu e voce tern de faze r eativar seu ill de matchcode e seu
novo objeto esta pronto para utilizar (veja a Figura 21.13).
F igurp 2 1 J 1
A monufeno de
oIribvtos motdl~e.
Figur A 21 13
Gere e utilize 0
matchcode.
e maior
A subtelo Index noo precise ser man tido, porque essas c:eraderfsticos
sao meromente para fins de documenta~oo no versec atua l do sistema
SAP. Simplesmente debe esse lacuna e ignore 0 a viso subseqOente que
cpcrece no log de otivao do seu ob jeto.
665
666
D~ 2UElAS DE sElf\.iD
N esses 12 passos Hceis , voce criou urn matchcode qu e ago ra pede utilizar
para m an ter a integridade dos dados, Vace aprendeu como as cbaves prim arias
ajudam a verificar possiveis valores de tabelas vinculadas e 0 conceito de urn
pool de campos de dados. Lembre-se, a m aneira com o a s dad os de m aechco de
sao organiz ados varia de acordo com que tipo de arualizacao foi selecionado
durante a crialJao inicial. Eis uma descricio de cada urn desses cinco ripos:
5-
P-
!:!!
Z
A seguir esta a sintaxe para utilizar matchc od es para valid acso de entrada de
parameero de tela de selecso:
tables : saptab
parameter: example l t ke saptab-f1eld matc hcode object exam.
select single f ield f rom saptab where f i eld example.
In
S
In
T
INilll!~
screen:
final do capitulo.
de se -
se l ec tion- screen posi ti on - U ma ferram enta muitc util qu e especifica urn come ntario para a pr 6ximo parametro de campo na t ela. E
util par:a se lect i on- opt ion s assim como para parameters .
se1ecti on-sc reen begi n-of - l i ne e se l ecti on-screen end-e f- t i ne Todos os cam pos de entrada definido s entre essas du as instruce es sao
colocados urn do lado do ou tre na mesma linha.
A mai cria dos elem ent os inclufd os na se~ao anterior edo ripe cosrnet ico;
na pr6xima se~ao, vo ce vera algun s elemen tos de tela de selecsc que sao mais
especfficos para p roce ssament o de entrada de dad os.
667
~ ~_A & .I _A _ _A .~
668
-- -- -
21
14
A tela inidol
Domains.
NOVO
IItrr...
mWO ,.
Figura 21 15
A tela Domains
Display.
defaul t -
parametro.
~.- .:.I
670
..
]I - -
--- - - --
Figura 2 1 1 7
Mantendo sfmboJos
Hie life
1:"'~[jf."tii*; lM'Or.JI."""""'",~iWJI.~.?"<t",,~:7'..,
Iii,.!
~~, :""4"'::. i-~~ "': ' ,:':';~.~ .;':"".""='.~
de fexto.
Figura 21 16
A tela inicial
Symbols.
Text
A seguir esta a sintaxe para urn pa.r.imetr o que aparec e co mo urn checkbox:
parameters : te st parm as checkbox default ' X':
Nesse exemplo, 0 valor inicial e configurado como verific ado, ou configura do co m o X para 0 processamento logico do programa. As caixas de
sele!Sao, ao contrario dos boeoes de 0pl$ao, njo sao mutuamente exclusivas e,
portanro, 0 usuaric pede ter tantas caixas de verificacfo quanu s forem geradas
na tela de se1el$3.o.
Como voce aprendeu, a instrucio paramete r
se solicita urn deice valor de entrada . Se a entrada. requerida e melhcr representada em urn intervale de valores, a instruqao sele ct- opt i ons e.um campo
mais eficiente para se utilizar.
10YO ..
1Ib0 ,.
671
672
cria dais campos de ent rada qu e contem tanto urn campo FR()II com o um campo
TO. em oposi~io a somente uma Unica entra da de campo.
select-opt i ons ex sel l! for tabl e-fie ld default ' VAl UELOW ' to 'VALUEHI ' .
... A inslruc;oo select -optfo ns exlbe umo linho que normo lmente tem dots
ANALISE
compos para dados de entrada . Isso pode ser restringido para um 56 campo,
utiliza ndo a cl6usula no-i ntervals no sintaxe select -options . Par exemplo, se seu
progromo nao requer um compo TO perc entrada no linho de instruc;oo sel ec t - cpt t ons,
mas voce oindo quer utilizer a instruc;60 select-optio ns, ind uirio lese no dcvsulc
no- i nt er val s. Esso cldusulc, ossim como a no-e xtens i on, ser6 mois oindo explorodo
no exemploque cpcrece no fmc l destc set;60. Por enquonto, entretcnto, nos voltcremos
pore umo dlscussdc sobre 0 formata do tobelo de seleccc interne sele ct -opt ; ons.
Essa tabela intema e mantida com a seguinte form ate de campo, se 0
usuario clicar na seta para a direita do campo TO da sel ect -opt t ons. Clicando
nessa seta. voce abre uma tela de entrada Multiple Selections que preenche a
eebela intema de selecao. Essa tab ela enuc arm azena os atributo s-chave dos
dados de entrada, incluindo 0 valor SIGN, OPTI ON, lOWe 0 valor HIGH. Esses
recurs os da instrucao sel ect - opt i ons podem ter as seguintes ccndicoes:
lOW -
HIGH -
BotPes de tela de
sele~ao
Ul
~m
grupo.
56 um desses tres botoes de exemplo pode.ser selecionado em tempo de
execuljio devi do a sua inclusac em urn gru p o. A integndade des dados e
mantida, porque essa e uma boa maneira de solicitar entrada muruamen te
exclusiva ao usudrio. Isso sed demonstrado mais ainda na se~o a seguir, em
que hi urn exemplo de um a tela simples de selec;.ao que utiliza muitos elem entos
de tela de selec;ao qJJ~ voce apren deu.
674
L..IL...I
- - 0\l2HELlSDE Sllf\AD
).
).
endf ol'1ll .
fonn get Jevenue_qata .
endfonn.
fonn getJlr1ce_dat a.
endfonn.
... Com o os botoes de opo soc mutua me nte exclusives, e uma bo o Idelc
mente-los toclos no mesmo bloco de processomento no tela de selec cc. Note,
no Figure 21 .18 , com o coda g rupo de ele mentos de compo foi isolodo pore canter 56
as compos que s60 relevontes 0 esse blocc de decislio .
.
mUSE,.
Como voce pede ver na Figura 21.19, e rnais dificil seguir os campos de
dados exigidos quando eles n j .c esno agrupados em blocos de tela de selecso.
Os pardmetros que sao definid os com a clausula 1i ke aparecerao com urna
seta para baixo , na qual voce pede dar urn cliqu e para ver uma janela com uma
Iista des valores validos (veja a Figura 21.20).
Ago ra, podemos dar um clique em cosso batao de selecao. (Veja a Figura
21.21). Ele pr eencher s 0 camp o daque le parametro com 0 valor que voce river
selecionado. Isso pod e ser mui to uti! para ajudar a ususrio a se [amiliarizar mais
com as exigeccias de sele~ao que voce impes.
Ao criar urn sel ect-option sem utilizar a c1iusula no- ext ension, voce
disp6e da capacidade de inserir mdlriplas sele~6es au urn intervalo delas. Para
675
~.~~.~
676
O.2UWSD SBfI,io
F i g ura 21 20
as pot6me'ros e a
solidlo~60 de seta
F igura 21 18
pore baixo.
Fi g u ra
21 21
Escolho um volor
v6/ioo.
F igura 21 19
b/ocos.
f lgllra 2 1
22
As ope:s Selection
com Extension.
677
ww
678
ww
Nesse ponte, voce pede inseri r todos as seus criterios de sele~ao e dar
urn clique no bon e Copy (veja a Figura 21.23).
Como pode vel', a seta mu dou de cor e agora everde (veja a Figura 21.24).
Is50 reflete 0 fate de que voce selecionou mrilriplas selecoes par a esse campo
e essas entradas preenc herao uma tabela de se1e~ao em tempo de execucgo.
Se urili zar as clsus ulas nc- extens t ons e no-trrterva1s na instrucao se l ectoptions, voce obtera urncampo de entrada que[uncionade maneira semelhante .
a urn cam po de pardmetro, co mplete com uma teela de seta pa ra baixo para ver
entrada, validas (veja a Figura 21.25). "
679
Flgur9 21 24
23
de seleo.
Figura 21 2 5
inl'efYOios.
aa
680
D~ 2UEUS DE SElf(.lD
select -option
comvalor podr6o.
---:...-_----
IFasa
f6cil de ser
Como mencio nado nesse ultimo exemplo, e boa pratica utilizar instrU~5es de mensagem como avisos de valida~o de entrada em tempo de
execut;ao.
Figura 21 27
M ensogem pop-u p
vfjlizoda pore
vofjdo o de dodos.
Fig ura
21 28
h mensogens de
erro no borre de
status.
Utilizando a
instru~cSo
message
S-
e exibida
681
682
D~ , I, 1WS DE s<lE\-iD
!:!!
FigurA
21
. ~.
683
30
A tela Oth~r
Development
Ob;eds.
Individual Messages clando urn clique duplo no numero de ill cia niensagem
no AJiAP /4 Editor.
Em seguida , insira uma classe de mensagem e de urn clique no Jcone para
a a~o que voce quer executar. Nesse exemplo, de urn clique no modo Create
(veja a Figura 21.31).
29
F igurA 2 1 3 1
A tela Mointcin
M essage Doss.
;...........~:.-~~"'"""_M~~~_~I:0~ ~ ......
I
I
I
II
,I
I
I
~~
684
I I I I I J,.-:I-. I I I I - I I I .I I
. .. .. ... .. ..........
~
D~
Figura 21 3 2
,"'".15
Of SRI\AD
685
As mensagens podem ser utilizadas para comunicar 0 st atus do programa e a validade dos dados inseri dos, bern como para inreragir com
o usudric de uma maneira que permira processar os dados mais
eficientemente.
A tela Moinloin
Individual
Messages.
especfficas.
P&R
ddinida?
--'----------'-
IFasa
rel0t6rio.
suos pr6prias.
o
Resumo
0 ABA P/ -4 e uma linguagem de programacfo baseada em eventos e
voce pede tirar p rovei to desse fato utilizando as eventos at se1ecti on-screen e i n; t i al i zati on, assim como 0 evento at user-conmand,
para vaLidarentrada do usuaeio utiliz.ando urn namero de tecnicas.
As chaves estrangeiras podem set utiliz.adas para verificar a integridade
de dados de entrada urilizando os campos de chave primaria de uma
tabela de verificaclo.
Workshop
o
Teste
1. Como os dais tipos de matchcode trabalham juntos com
armazenamento de dados de matchcode?
rela~ao ao
-,
SEMANA
Exerdcio 1
Crie urn relatcric de tela de selecso que lisre eodos as compooentes de urna
ccnta de materiais em diversos idiomas. Construe campospara selecces de urn
intervale de combinacoes de materiais e plantas. Lembre-se de utilizar as
elementos que aprendemos oeste capitulo que melh ar se adequarem as tarefas.
Revisao
Na semana pass ada, voce realizou as seguintes tarefas:
produziu relatorios que utilizam sfmbolos grafi cos e leones
familiarizou-se com as evenros in iti al izat i on, start -at-sel ecti on, end-cf-sel ect ton, t op-of - page e end- at- page
codificou sub-retinas extemas e internas e m6dulos de fun~ao.
e passou parimetros digitados e nao digitados para d es por
valor. valor e resultado e por referencia
estabeleceu excecoes dentro de urn modulo de fun~ao para
configurar 0 valor de retorno de sy-subr-c
criou telas de sele~ao utilizando a instrucic select-opt ions
A
Conven~oes de alribui~iio de nome
Convencoes de atribuic;ao de nome de
programas
Ha dais tipos de programa:
Relat6rios
Programas de diaIogo
Carla tipo de programa tern suas pr6prias convencces de atribuic j o de
nome. A Tabela A. I con tern as caracteres qu e nae sao permitidos em nome s
de program',
Tabel a A.l Corocteres inv6lidos para names de progromo
Cara ctere
Descri~60
Ponto
Vlrgulo
r,
Lacuna
()
Pcrenteses
Aspos simples
Aspas duplos
Sinol de iguaJ
Asterisco
Sublinhodo
..
Sino! de po rcentagem
Aeo s u os
htIpJt-.mmpus.tom.br
~ I I" .I I .I I . 690
--
e 10.
curta
FI
MM
SO
PP
TR
OM
PS
PM
WM
Fonna
Forma
longo
Forma
LDB
F
M
3
4
npo de objeto
5
6
ABAP/4 Query
Q uery
Appe nd Structure
10
Y* Z
10
YYZZ
i,
Appen d Structures
11
Control ling 12
PI
1M
13
Area Menus
14
Avthorizotion s
LO
IN
21
CA
23
22
Development)
Funcionalidade ctroves de op licotivo
(C ross Application Functionality)
Object
Y or Z
Sub-Object
10
Y o r Z
Y' Z
Avthorization
12
ony
Authorization Closs
Authorization G roup
30
10
y' Z
y' Zy' Z
y. Z'
Authorization O bject
CATT Flows
"
Application l ag s
Co ntrole (CO)
I
I
10
Notas
I
I
Fundion Gro up
HR
ConYen~ao
d e atribui'ioo
de nome
G erenciamento de investimento
(Investment Manogement)
Comp rim.
Max.
Functional Area
SAPM.
A.2). Por exemplo, urn relat 6rio de cliente para a Tesouraria seguiria a conv en c;ao Z5.:a:x.o:x, enquanto u rn relat 6 rio logfstico seria nomeado Z21xxxxx.
C ada area de aplicati vo pede ser representada po rum c6digo. Cada c6digo
SAPMYxxx au
SAPM2=, oDde:
NOo permitido no
2Q pos it;60
.I
692
~I-I
--- - -- - - - - - - - -
Tipo de eblete
Comprim.
M6x.
Conven!roo
de atribul!rCio
de nome
10
Codepoges
Y or Z
9'
Notas
Data Elements
Dot e Element
10
y. Z
9'
Se 0 SAP criou 0
ele mente de dodos
Data Models
Doto Model
Enfity
10
10
DialogModull!s
30
y. zy. t:
y. Z
Y ZtRP_*
M6x.
ConvenCjQO
de atribuiCjQo
de nome
30
FIELD_EXIT.:
30
30
Conversion Exits
Se 0 diente crlou
o elemente de
"dodos
SAP Supplement
Tip o de ob (eto
Comprim.
GUI Status
IDOCs
Segment Type
Basis IDOC Type
Enhancement Type
IDOC Type
Includes (DDlq
Customizing Includes
8
8
8
FIELD_EXIT_' y
EXIT"'pppppppp_nnn
CONVERSION_EXIT_""""JNPUT
CONVERSIO N_EXIT_""",,_OUTPUT
10
Apenas vtilizado
em uma tobela
criado pelo SAP
RHJNFOTYP_9'
General,Text (TX)
Test Run Description
Mo;n Chopter(BOOK)
Chapter of lMG
Chcpter (CHAP)
Structure
O nline Text
Domains
Includes (Programo)
28
20
20
20
20
26
20
12
28
10
y. Z
y. zy' Z'
y. Z
y. t :
y. z
y. z:
Enhancement
Fund ion
Menu Exit
8
8
y. Z
y' Z'
Y z
ZffffUnn
Info Types
lock Object
10
9'
EY. EZ
Y o Zo
2
2
10
y. Z
y. z:
y. z
logisticsInfoSystem
Event
Unit
Maint. & Transport Obje cts
Motehcodes
Matchcode 10
Motchcode Objed
+'
0-9
y.
z:
2
3
y.
z:
Messoges
Function Ubrary
z:
y.
XZ'
Function Module
30
Functio n Group
8
8
z:
y. Z
Codes
Functi on Code
Include
Include for User Exits
(m6dulos de funo)
y. Z
y.
Nota s
Y_ Z_
Message Classes
Message Numbers
Module Pools
ffH
= func group
Q = 6reo do
op licotivo (forma
LOB, vejo Tobelc
A.2)
693
-...
694
-- - - - - - - - -
Comprim.
Conven~ao
Max.
de atribuiCjoo
de nome
8
8
8
8
8
SAPDY' SAPDZ'
SAPMY' SAPMZ'
MP9'
SAPFY' SAPFZ'
SAPUY' SAPUZ'
10
3
Printer Ma cro s
Relation Ids
R/3 Analyzer Identifier
2
20
Reports
y. zy. z
y. z:
y. z-
14
14
14
X CUS&
Y'
Z'
4
3
7
y. zy. z
y. t:
y. Z
9'
>0
16
8
8
8
z-
y. z
Y z
Y Z
Comprim.
Max.
8
8
8
10
2
ConvenCjQo
v z:
9'
9'
y. z
y" Z
10
3
10
Notos
de atribu lCjao
de nome
Emestruturcs
appe nd: YY- U
y. z
apenos
y. z
Cluster Nome
T9'
PoolNome
Pora tobelcs de
pool no pool
ATAB paro tipos
de informco de
cllente
P9'
PA9' PB9'
PS9'
HRT9' HRP9'
HRl9'
10
10
3
4
II
I'
y. t:
y. z
y. z
y. z
12
c ny
Views
View Cluster
View Name
HelpView
View Maintenance Data
View Content
Table Content
Worlcflow O bjed Type
10
10
10
:I
I'
,I I
I
_ nee permitido
y. z
H_Y H_Z
reservodo no TRESC
reservoda no TRESC
10
Y' Z'
I,
na 211 pasiC;ao
do cllente
Spaol
Layout Type
Fonl Group
Device Type
Page Former
System Barcode
Standard Task
Stondard Roll
Structure (DDIQ
SYSlOG Message fO
Index Nome
Trcnsporent, Pool,
1a carodere noo ~9
111 carod ere noo 0-9
1a ccrcctere noo 0-9
111 coroctere noo 0-9
Tipo d e obieto
Tables
Field Nome
Y' Z'
Y Z 9'"
12
16
4
32
Notas
y. z
Report Nome
Report Variant
Tronsportable, G labal
Transportable, Local
Not Tronsportable
Report Writer
Report
Report G roup
Library
Standard Layout
SAPScri pl
Layout Set
Farm
Standard TextlD
Standard Text Nome
Style
Screens
695
~ .- .- I- Y
696
-. -. -.-. - - - . -. -. -
. . . . . . - --- - - - - - - - - .
.~-
B
.
2. 5000
3. 5001
4. Tree. Hi urn banco de clados por sistem a de R/3 .
5. Tres: dais para os servid ores de aplicativo, mais urn para
de banco de dados.
servidor
hrtpJ I_
.campvs.c;om.br
-.A.A .
698
- -- - - - - -
- --
2. M ova 0 teste para sy-s ubrc depo is de endsel ect, como mos trado aqui:
N as figu ras 1.28 e 1.31, 0 primeir o cam po nie tern 0 ripe CLNT;ponanto, a tabela
eindepe ndence de clien te. As instru\roes Open SQ Lopenrio em todas as linhas dentro
dessas ta belas. Nas figuras 1.29 e 1.30, 0 primeiro c:unpo na tabela e do tipo CLNT;
portanto. a tabela e dependence do clienee. As instrulioes Open SQL s6 operarao nas
linhas que tem 0 mesmo numero de cIiente que seu ndmero de cliente de logon arual,
programa
2. A area de trabalho de tab ela padrac ea area de mem6 ria alocada por
uma insrrucac tabl es . Essaarea de mem6ria ternome smo nome e a mesma
estrutura que a tabela ide nti ficada na instruci o ta bl es. A instru cj c sel ect
utiliza-a par padrao se nao h ouver a clausula into.
5. sy-subrc
6. sy-dbcnr
7. A linha 4 sera executada 30 vezes, uma vez para cada linha recuperada.
8. N enhuma vez. A linha 4 nao ser.i executada se a tab ela estiver vazia,
programa~ao
..f: . .-
3.
>
'0000001050 '.
report ztz0204.
tables zt xlfal.
select - fl"Olllltx lfal where l ifnr
wrf te / ztxlfal -l1fnr .
endse\ ect .
i f sy-dbcnt - O.
wri te / 'no records found' .
endif.
>
' 0000001050' .
699
ri
I
.......................Aua.....--.JII.-A-~ 700
. - -
- - . -
5
endse lect.
6 1f sy-subrc <> O.
end if.
7. 0 erro de sintaxe e causado pela endsel ect na linh a 5. Ele deve ser
removido. Vo ce tam bem pode corrigi r 0 erro de sintaxe removendo
a palavra s i n91e cia in struqao se 1ect na linha 3. Enrr etant o, essa e uma
solul;ao menos eficiente, uma vez que apenas uma linha sera lida. 0
operador de comparaclo na linha 3 tam bem esta incorreto. Ele deve
ser .
report zt zOZ07.
tables ztx lfal.
select sing le * fro m ztxlfal where lHnr '0000001000'.
wri t e I zt xlfal- lifn r .
if sy-s uerc <0 O.
write I 'no records found ' .
endi f.
Respostos do teste
1. 0 do minic d.a a urn camp o suas caracterlsticas recnic as, como tipo de
dado e comprimento.
Resposto do exerddo 1
Para essa solucao, veja a tabe la ztz l f al do sistema R/3.
Re sposto do exerdcio 2
Para ver a solucao para a tabel a .. knal , veja a tabela zt zknal do siste ma R/3 .
A solu r;ao para 0 reLat6rio e a seguin te:
1
2
3
4
5
6
7
8
9
10
report zt z0302.
tables ztz knal.
select ... from ztz knal.
write: / ztaknet- kunnr , zt Zknal-namel ,
ztzknal-cityc , zt zknal-regi o,
ztzknal-1andl.
endsel ect .
1f sy- subrc <0 O.
wrl te / ' No rows found' .
endif .
701
~LA~.I_. _.I
I I I - I
,
Re sposto do exercfcio 7
Para a soluca o desse exerclcio, visualize a tabela zt zknal onlin e do sistema R/3 .
Respostos do teste
1. Eles devem utilizar 0 mesmo dominic.
2. D entre de tabela ztl, digite . INCLUDE no campo de nome de campo e
zsl no campo de nome de elemento de dados, no ponto cia rabela code
a est rut ura deve ser incluida.
3. Urna tabelade text o ofere ce descricoes para c6digos contidcs em uma
tabela de verificacsc em multiplas linguagens.
4. mandt, spras, fl e f2.
5. Cada camp o de tip o CURR deve fazer referencia a urn campo de chave
monetaria (tipo CUKY).
Respostos d o teste
1. N so. Voce njo pede "unir" urn Indice a uma insrrucac select. 0
otim izado r semp re escc lherd urn Indice em tempo de execuclo.
2. Sim, mas voce deve aplicar a um a tecla de modificacao da SAP para
fazer isso. Pode ser feit o pelo ass. 0 Online Service System.
3. Sim, voce pode ut ilizar a ferramenta de analise de temp o de execucac
para me dir a difere nca.
Resposto do exercfcio 1
Para a sc lucic desse exerctcio, visualize a tabela ztzt005 online do sistem a R/3.
Resposto do exerclcic.Z;
Para a sclucso desse exercfcio, visualize a tabela online ztzt005s do sistema R/3.
Nao se esqueca de comparar a cardin alidade e 0 cipo de campo de chave estrangeira
do relacionamentc de chave estra ngeira com aqueles especificados online.
Resposto do exerdcio 3
Para a solucso desse exercfcio, visualize a tabela online zt zlfa l do sistem a R/3 .
N so se esquelja de comparar a cardin alidade e 0 tipo de campo de chave esrrangeira
dos relacionamentos de chave est rangeira com aqueles especificados onlin e.
Resposto do exerdcio 4
Para a solucao desse exerctcio, visualize a tabela online zt zknal do siste ma R/3.
Nao se esqu eca de comparar a cardinalidade e 0 tipo de campo de chave
estrang eira de cada relacionamen to com aqueles online.
Resposto do exerdcio 5
Par a a solucao desse exerclcio , visu alize as tab elas online ztzt005h e zt zt005g
do sistema R/3. Nee se esqueca de comparar a cardinalidade e 0 ripe de campo
de chave estrangeira de suas chaves est rangeiras com aqu eles on line.
Resposto do exerdcio 6
Para a soluc;ao desse exerctcio , visualize a estrutura .. t el e as tabelas online
zt zl f al e ztz knal do siste ma R/3 .
I~
- ~ - - - .-"
1_. B'
h
~
~ '~ '-l*w ."" llOo"i. ~ "' ';''; '''' ';;
II
'
Ax
....~_::i:irW-'-.:
-H::I.t'JnO
- ".: :;':
- ~'-"
~~....
.Id '"
-~"- ""
.~ .......~
Re sposta do exercicio 1
1. N o utilitdric de banco de dados, de urn clique no bono Delete
Database T able. 1550 "derruba" a tabela, que com 0 con teudc sera
exclufda. Voce pede recriar a tabela pressionando 0 bono Create
Database Table. A tabela sen recriada utilizandc a versso ativa da
tabela. Voce pede utilizar 0 utilitario de banco de dados. Seja cautelcsc quand o fizer isso em uma tabela na SAP.
entre aspas simples e ela exige duas aspas cons ecut ivas dent ro dele.
2. A defmi~ao corret~ e 1+2 .2E03 ' . 0 caracrere de expoent e e E, DaO F.
e os decimais DaOsao permi tidos em urn expoente.
705
L&
.......II!!!!!!!Iool
706
-.....,L~
-.-.-.-- .~
5. A definic;ao correta e ' - 9. 9' . Lite rais numericos que con tem d ecim ais
devem sec envolvidos em aspas simples e 0 sell sinal deve predo minar.
.,. _
I.
I . I
edata
eC.
3. A definiliio correta e data f l (20) t ype c. N ac deve haver urn espalio
ent re 0 nom e de campo e iL espe cificacjo de comprimento.
4. as nomes de variav el nio devem iniciar com um numerico, e urn
comprimentc nso epermicido com 0 tipo 1.A definic;ao co rreta ~ data
al t ype t
Resposta do exercicio 1
re port ztz0707.
par amet er s: p dat e li ke sy- dat um def ault sy-derem,
p-fie ldl ty pe c.
chckboxl as checkbox.
chckbox2 as checkbox.
radbutl radt obut t on group 91 dl!faul t ' X',
radbut2 radt obut t on group g1.
Re sposta do exercicio 1
t ypes : dollar (16)
p01nt(16)
"pontes de carUo de
c r~ d i
to
Re sposta do exerdcio 2
Out put:
1 3 4 5
9 8 7 6
Respostg do exerdcio 1
1.
sperz
2.
konzs
3. fdpos
707
..... ....
-
-.-.-. -. -
4.
-~~
709
msgid
5 . matkl
As duas coisas erradas no programa sio a declaracac de ubela de ztxt 005t
e as aspas simples an tes cia variavel, 1and!. Declare a. tabela ztxt005t e remova
as asp as simples antes cia variav el 1andl .
when 10.
A instrur;io ex; t eutilizada para prevenir que mais p rocessament OS ocorram nas instruljoes loop, select, do e while e nas subretinas introduzidas par fonn.
Resposto do exerdcio 1
N os sistemas anteriores, as convers6es cram executadas convertendo a
partir do valor i direita do tipo de dado e 0 comp rimento do compone nte i
esquerda.
Resposto do exerdcio 1
report zt zl ool .
dat a: 11(2) typ e c.
do 20 ttees ,
write I sy-tndex.
do 10 t imes .
11 sr-tndex,
writ e 11.
enddo.
endee.
- ->
C ZTXIOOI 000060
Ll SY-INDEX.
Nas linhas 9 e 10, havia uma conversao de c para n (de caractere para
numerico] e entao uma conversao de p para I (de pardmetr o para inteiro).
Na linha 16, havia uma conversao de p para I (de pararnetrc para int eiro}.
.'1
..~ Jl _I
710
.3
~.
I _ .. I
. . . 11 .. I
~.
. ~. ~. -.
..
-.
-.
oyon~odas.
Parte 1"
Respostos do teste
1. Sua alteralja o para sy- tab ix seria ignorada e as instruc;6es operariam
nalinha na area de trabalba . sy-tebt x ecomo sy-t ndex- modificando
qualquer urn naa iria afetar as operacoes de loop. Alem disso, 0 valor
de sy-tabt x ereinicializado no endloop, e a pr6xima passagem do loop
prossegue como se 0 valor nunca tivesse sido alterado.
2. A tinicacoisa que sy- toccu pede dizer a voce que outras variaveisDaO
podem e se sua tabela interna esta inteiramente na area de paginafjao.
Se for zero. ela esrara inteiramente na area de paginaclo . Isso oaa tern
nenhuma utiliz:lc;ao em urn sistema de producao, mas voce pede
acha-lc uti! durant e 0 desenvolvimento para confirmar sua expecta, tiva de como a memoria e alocada para uma tabela inrerna. Se, par
exemplo, voce espera que a tabela interne este ja na area de rolagem,
mas sy-toccu contem zero (indicando que esd, na area de paginacao),
voce pode precisar dar ma.is uma o1hada em sua clsuscla occurs para
determinar se ela esti. correta.
Resposta do exerdcio 1
sort 1t by f1.
do 5 t imes.
1t -fl a sy-tneex 10.
1t-f3 a ' XX' .
1t -f2 a It -f4 .. sy-tnde x.
read table 1t
wit h key fl .. it-fl
binary s earc h
compa ri ng f 2 f3 14
transporti ng no fields .
if sy- sucrc 2.
modify it i ndex sy-tabix.
e1seif sy-subrc <> O.
in s ert it index sy-tab1x .
enddo.
ayan~odos,
endt f ,
Parte 2"
Respostas do teste
1. Campos nu mericos (tipos 1 p e f ) saopreencbidos com zeros. 0 resto
dos campos a direita do nivel de controle sao preenchidos com
asteriscos.
loo p at it .
write : I it -fl , 1t -f2, 1t -13 , it-14.
endloop.
Re sposto do exerdcio 2
Eis uma maneira eficiente de corrigir 0 problema:
report ztz1302 .
tables : ztx lfa1.
data: begin of it occurs 10 ,
lifnr 'lf ke ztxlfal -1ifnr,
landl Hke zt xlfal-landl.
end of i t .
sele ct l 1fnr l andl from zt xlfal into table i t.
loop at it.
write: I i t-Hfnr-,
tt- tendl.
endloop .
.~.~
711
Re sposto do exerdcio 1
1 report ztzl 40l.
2 write: /
. . . . + 1. + 2 + 3. . + 4'.
40
/ 16
/30
'beceeee r-",
'January'.
' Fi rst '.
Resposta do exerdcio 1
sy-1 inno sempre contem a num ero da.linha atual da lista. Nesse ponte,
ele e configurado como a linha que se segue aos titulos padrao da
pagina. A linha 13arribui esse valo r avarifvel. 0 ccntrole retom.a para
a linha 6 e Aeescrito. Em cada sucessiva passagem p elo loop, a hnha 8
incrementa a valor de e a linha 9 co nfigu ra a linha de saida atual. Isso
resulta nas linh as escritas sucessivamente na safda,comecando na linha
segu in do as titulos padrao.
Re sposta do exercfcio 1
report zt:1501.
i ncl ude <symbol> .
write : / 4 sym f i ll ed square as symbol . ' square' ,
/ 4 s)'lll) i ll e(dla mond as symbol , ' di amond' ,
/4 S)'lll f1ll ed ci rc l e as symbol , "ct rct e ",
/ 4 syr'I-gl assei as symbol, ' gla sses' ,
/ 4 SyrI- penci1 as symbol , 'p enci 1' ,
/ 4 S)'1llyhone as syrnol , 'phone',
/ 4 S)'II note as syrrbol, ' not e'.
/ 4 S)'lIl)older as symbol . ' fol der' .
A linha 4 comera em urn loop aninhado do. A ca.da pass agem par ele,
a linha 5 configura a posi~ao de salda atual como igual a iteracao do
loop atual . A posicac atual de salda e co nfigurada como 1 na primeira
713
714
vez.Na segunda vez e configurada como 2 e assim por diante. Isso faz
com que a linha 6 escreva a letra A quaere vezes , nas colunas 1-4.
3. Nova mern6ria Ilio ealocada para a valor. U rn pont eiro para a posic;ao
original da memor ia epassado, em vez disso. T odas as referencias para
o parimetro sao referecciasa posic;:ao original cia memoria. As atterac;:6es na varia-vel dentro cia sub-retina atualizam a posic;:ao original
da m em6ria imediatamente.
4. As duas adic;:6es usi ng f1 e changing fl passaro fl par referencia
c-,
elas
Resposta do exerdcio 1
TABLES ZTXLFAI .
PARAMETERS P_LANOl LI KE ZTXLf Al- LANOl.
Resposto d o e xercicio 1
INITIALIZATION.
P_lANDl 'US'.
A seguinte saida
e gerada:
Top of page, f la g S ct r
START-OF-SELECTION.
PERfORM CREATE_REPORT.
TOP-Of- PAGE.
FORMAT COLOR COL HEADING .
WRITE: I 'Vendors wit h Country Code ' . P lANDI.
Ull NE.
715
::A' .....
716
-I
. - .- -..~
- . -. -
Rasp.osta do exercfcio 1
programa executa, a tabela interna e pre enchida e 0 modulo de
com 0 coareudo cia tabela intema
apar ecerd. D ep ende ndo cia entrada escolhida pelc usuario , eta entao imprimira
utilizando a insrrucic writ e.
Q uando
un~ao
Resposta do exercfcio 1
I" function z_tz_dh .
2 .-- ------ - - --.-- - --- - - - - - -. ------ -- .-- --------- -
3 local interface:
4
lKf10RTIHG
5
VAlUE(Pl) TYPE 1 DEFAULT 1
VAlUE(P2) TYPE I
6
7
EXPORTING
VAlUE (P3) TYPE P
8
9
EXCEPTIONS
10
ZERO_DIVIDE
11 .... - - - - - - - - - - - --- - - -- --- - - - - - --- --- - - - - - - - - - - - - - --- - - --12 if p2 D.
13
rais e zero _dlYide .
14
endlt.
15 p3 pI / p2.
16 endfunction.
. . . - - - - - --
tabelas.
Resposta do exercfcio 1
report ztz2101.
tables : mara , tOOlw .
Selection parameters for BCls
select ion -screen begin of li ne.
se lection-screen CCllTITlent (33) text-beer .
parameters : bom like mara-matnr.
spras l 1ke tOO2-spras .
selectten-screen end of line.
selection-screen skip 1.
Setect-epttens : matnr for mara-matnr,
werks for tOOIw-werks.
717
.- . w...
--- - - - - . ---- - ~ - - -
indice
A_ _
ABAP/4
lisn gem de sintaxe basica,
230
primeira listagem de
pmgram~
49
segundo prcgrama
listagem, 72
listagcm revisirada, 263
lisu gem simplificada,
76
ABAP/ 4 Dictio nary:
Maintain Technical
Setti ngs Screen, 189
ABAP/4 Editor
conerole Help (barra de
[erramentas
Application),.58
tela Edit Program, 51
2juda durant e edi ~a o
de cc digos-fc nte,
65
ajuda Fl, 64
hllpJt-.cumpus.com.br
tutorial ,63
tela inicial
ajuda, obtendo, 6S
prcgramas,
p rocu ran dc, 66
u tiliza~es,
50
ABAP/ 4 Key Wor d Doc,
ccm and o (men u
U til ities). 520
ABAP/ 4 T ext Elements:
Change Ti tle and
Heading. tela, 503
abordagem bottom-up
dominios, criando,
110- 111
elementos de dadcs,
criando, 11 3~ 11 6
tabelas, criando, 107
eabelas transparenres,
criando, 117-122
abordagem top-d own,
tabelas
adicionando campo a,
122-113
crian do, 107
Accou nting, menu,
comando Accounts
Payable, 13
acessand o
biblioteca de fun~o. 586
Ierramenta urilitaria de
banco de dados,
218-2[9
now de versac, 96
acrescentando campos a
tabelas, 126
adapt2!roc:s automaticas e
iostru'iao move. 285-287
ad2 pta~oes de comprimento
e tipos de dado.
instru'.?o move, 285
ada pta~6es de tipo e tipos
de dados, instru~o
move, 286-287
adi~ao arre don dada,
instru~o write, 470-471
a di~ao bina ria de pesquisa,
instru~o read table, 359
adi,?o de campos
correspondentes, 421-422
adi~ao decimal, instru'.?o
wri te, 470-471
adi~ao e correspondences,
instrucoes, sintax e, 299
adi~o monetiria, instru~ o
wri te, 471-473
adi~ao. subtr.l,?o,
multipllcaeio, divisao e
ccrrespondentes,
instru~6es, listagem, 299
adi~Oes graflcas, tipos, 697
720
aju da Fl
campos. adiciorando a,
135-13 6
docu m enta~ io de
INDICE
alccandc dados glcbais, 620
alter.tndo
analise de programa.
realizando, 319
aninhandc estrutu ras, 172
ani nhando loop s do, 713
ano s fiscai s, pertodos de
publica;ao, 439
aplicarivo, areas, c6digos
para , 690
ap licativo.dadosde
defmi~o, 97
tipos , 701
apl icativos , conjuoto
padrio, 7
ap pen d lines , inst.ru'iao,
392
app end sorted by,
instrUc;ao, 413-417
A ppen d Structu res, tipo de
obj eto, 691
append. ins tru cio, e tabelas
int ern as
adic;:io de ocorre ncias,
357-359
sin taxe, 354
APP Ll, classe de dados,
desc ricio, 194
APPL2, classe de dados,
descri cac , 194
Appl ication Logs, ti po de
obj eto ,691
applicatio n, barn de
ferrame ntas (ABAP/ 4
Editor ). 57-59
A pplicatio n, berra d e
ferramentas, 16
batao Foreign Keys,.liS
bo de O bject Log. 230
principal , 10
APPLO, classe de dados ,
descri~o , 194
ar ea de tela de m enu
principal . 17
Command Field, 19-20
In terface Menu , 17-19
ar ea de ~balho de tabela
padrio,descrlc;ao,698
area funcional ,
conhecimento, 9
Area Menus. tipo de objeto,
&91
areas de pagina;ao.
sy-toccu e, 710
areas de trabalho expl fcitas,
77,354
areas de trabalhc imp licitas,
354
areas de trabalhc, exp llcitas
versus im plfcitas, 354
areas fu ncionais (m6 dulos )
Ionres de inf or m2'ioes
em, 10
visio geral, 8
areas trahalho de tabela,
76-78, 354, 564-566. 698
arredon da m en to,
especific ando, instru 'i:\o
wri te, 482-490
at end of, instru'iio,
440-441, 448-449
at firs t, insttuc;:ao, 440-444
at last, i ns tru ~o, 440-444
at new, ins truc;io. 444-447
buffer em dados no
servidcr de aplicativc
655-65&
ativando
m6dulos de funlSio,
&04-605
.objeros, descri~o, 107
atribuip,o di.n.amica,
simbolos de campo,
309-310
atribuip,o. ins tru;6es
clear
corn adic;ao, 289-290
sintaxe, 287
codificando.291
descri~. 286
move, 291-303
adaptac;oes
automancas.292
regras de cc nversjo,
exibindo, 295
strings de campo,
297-303
subcampos, 296-297
move-corresponding,
sintaxe, 303
arua lizando tabelas com
buffer. 201-204
AVI select, in s tru~a o,
proc essamen to, 74
B
Back, controle (barn de
[erramentas Standard).
ABAP/4 Editor, 53
back, ins tru ;io
sinraxe, 537
utiliuc;oes,713
Back, tech. pression.ando,
75
banccs de dados
no Open SQ L, 36-37
com o, 26
portabilidade de ecdigc,
36
prcjeeandc e
desenvolvendc, campos
Valu. Tobie, 165
suporudos pelc R/3, 21
barra de sta tus , 17
barns de ferra m entas
Ap plication (ABAP /4) ,
57-59
Application, 16
bode de Log de
c bjetc, 230
bot i o Foreign Keys,
148
bcu c T echnical
Setting s, 193
criando botbes em, 656
Standard (ABAP/4
Di ctionary),67
Standard (ABAP /4
Editor)
cont roles, 52-53
recu rso Find and
Replace', 54-57
Standard, 16
Co mmand Field, 19
Fin d button, 280
barns de menu, 16
barras de tfrulo, 16
Basis, area.do menu
principal, 10.20-22
Batch Data
Com mun ications
(BDC) , chaves
estrangeiras e, 152
bibl ioteca de fu n~o ,
d es cri ~o. 602
bl occs (elementos de
se le~io de tela),
dcscric;,io, 667
botoes de 0 P~oJ efeieos em
caix2s de grope, 51
buffer em registro unicc,
208-209
buffer em tabelas,
u ti lizando, 196-213
atual izandc Infc rrm cees,
201-204
buffer em sincron izacsc,
197-201
bypass de buffer, 204
eecsrics, 211-212
deslocamencc de buffer,
210
resumo.212-213
resumo das ccnfiguracees
tecniC2.!,221-222
tecnicas .204-205
tipcs de uso de buffer
cheios, 206-207
genericcs, 207-208
registrc unico, 208-209
resurno, 209-210
buffer, slncronizacio
descricsc, 197
intervale, configurando,
200
buffer. urilizaljao completa,
20&-207
buff er, uriliZ2~o generics ,
207-208
bu ffers Cut and Paste
(ABAP/4 Editor), 59-60
buffers de programs,
descri;ao, 236
bypass de buffer para
tabelas, 204
bytes de preenchimeato,
301,303
721
..... I
722
I _I I
mensagen s de erro,
psg ina
centr.dizando,516
format ando c imprimindo
cabecalhos manuais de
pagina, criando,
519-52 0
cabecalhc s padrio de
pagina,
arm azenandc , 514
cabecalhcs padrio de
psgina, criando,
513- 515
cabecalhos padrao de
pagina,tradualadc,
515-517
cabecalhcs padrio de
pagina., utiliundo
varifveis em, 517-519
csb ecelhos padri o de
pagim,
visualizando e
modificando,
514-515
rcdapes de pagina,
criand o, 520-523
cebecalhos e rodapes,
formatando e
imprimindo
cabecalhos manuaisde
pigina,criando, 519-520
eabecalhos padrio de
pagim
~azenando,5 14
criando, 513-5 J5
m.duundo, 515-517
utili zando variaveis
em, 517-519
visualizan do e
modi ficando,
514-515
i!a
- . -. -. - ~ I I
...
INOlO'
cabecalbos e rodapes de
~'
~ .~ .- .-
:0;
- .~.-
640-6 41
caixa de se!e;:io, parametr o,
670- 671
cains de gro po, efeitc s de
bctoes de o p~ o. 51
calcu lando datas, 308-309
calculos, execu ta odc
instru~o
compute
opera dores para, 305
sirnaxe, 305
inStfUliOes add e
correspondences,
sia taxe, 306-307
data, 308-309
insrru~o
compute.
op eradores para, 305
ins tru~o
compute,"
sineaxe, 305
call function, instnl~a o ,
609-611
inserin do
auromaricamente, 613,
649-650
Iiseagem de parimetros,
6 12
sineaxe, 610-611
camadas (tien), dd uu(io, 23
cam pos
ajuch Fl
.2.dicionando, 135- 136
links de hipenexto ,
adicionando, .
l3 6-m
links de hiperte:l.:to,
solucionando
p roblemas, 138
reseandc, 136
alterandc 0 comprimento
de, 10<, 127-128
campos de quaneidade,
requis ites, 170
campos mcneurios,
168-169
chaves estrangeiras,
detennina~o
controlan do a ex ib i~o
de, 71
convencees par:l. auibu i~o
de nome, 105
criando dom in ies, 103
elementos de dados, 102
instru~i o select. em
adi~o de eabela, 430
pcntos decima is, 701
ca.m.pos-chave
descricac, 156
I:
ScreenCams, instalando ,
44
utilitirio C opylt, J24- 125
centralizando cabe;al.bos de
pagina, 516
chamandc m6dul os de
luD(io, 609-6 13
dado. glob';', 619 -622
cancelando a versao do
m6 dulo de fun~o, 629
instru ~o
call function ,
609-611,613
vaU~ de dados,
vertl5~d o, 144-145
cbaves estrangeiras
Value Table
chaves estrangeiras e,
164-165
como proposta Check
Table , 166-167
prcposito, 165-166
sem chaves
esrran geiras, 168
Search/Replace, 55
caracteres especials, t ela
siataxe, 340-341
Search/Repla ce, 55
caracteres hexadecimais, 706
caracteres inv aIidos em
no mes de programa, 689
ueilizacces, 708
cardiaalidade
defiD.i~o. 169
cam pos d e sist ema. data
areal e tem po . 244
cam pos empacota dos,
comp ri me n tos de saida.
463
658
nlores de X, 155
valores de Y, 155
CD-ROM
determina~o aurcmatica
1 61
movendo de um.astring
de campo para outre,
300-3 01
caracteres eceueuado s,
classifiando, Iistagem,
380- 381
caracteres cu.ringa, tela
Application), ABAP/ 4
Editor, 58
check, instru~o
comparando instru es
exit e continue, 341
instru~ao loop at e, 364
Table/Structure ]
chaves estrangeiras e. 149
fun c;6es de. 167-168
"'bela, 428
clear. instru~ao
com adi~o, 289-290
sintaxe, 287, 0407
genericas, defmi~o,
723
candidatos-chave.
156-157
ajuda F4 .. 150-15 1
A A A A
724
cliente/servidor em tres
eamadas
des cri~,23
342
instrUc;oes de a ttibui~o,
291
c6digo
areas de eplicaeivo, 690
colocando comentirios
em, 85
exemplcs, cortando e
colando do sistema de
ajuda, 65
pcreabilidad e de, 36
c6digos de tranSayao,
definicrao, 19
ccdigos-fonte
pesquisando e
robstiruindo em, 56
collect, instru~o
combinando linbas
confonne elas sao
adicionadas a tabclas
intem as,lisugem,
418-419
sintax e, 04 17-0422
commdos
menu A ccountin g,
Accounts Payable, 12
menu Gore, Text
Elements from th e
AJ3AP/4 Edit or,
670
mcnu Program
C npy, 77
Save As, n
menu System
Create N ew Session,
76
Status , 20, 95
menu Tools
Adminism tion, 22
D evelopment
Workben ch, 12
menu U tilities
ABAP /4Key Word
Do c, 534
Help on, 65
comentarios
c6di go, substituindo em,
85
codigo- fome, parimetros
e, 609
Command Field, 16, 19-20
IHDlCI
bufferizando tabelas,
196-213
campo Size C ategory.
195
d efini~o.
27
companndo com
instrUl;oes exit e
check, 341
instru~o
loop at e, 364
Iistagem, 338-339
sintaxe, 338-339
utiliza!;Oes, 708
controlando a sequen cia do
programa
comparando com as
instrUC;Ocs exit,
continue e check. 304-1
instru~o check, 339-3041
insauc;ao continue, 337-339
instroc;io exit. 327-328
controle Help (barn. de
ferramentas Standard),
ABAP/4 Editor, S3
controle, instruc;oes
case, sintaxe, 326-32 7
do
sintaxe, 328-330
. terminan dc loops
infinitos, 330-332
varying addition,
332-334
vuying/enddo
additi on, 334-335
elseif,320
if. 315-326
ccnversj c de dados de
literal durante
comp aracees,
317-319
conversees, exibindc,
319
opcndores de string
de caractere, 321 ~3 2 6
operado res logiccs
para c peraados,
316-317
crdem de precedencia
contrcle, iaterrupci o,
prccessamento
in stru~o on change of,
451-458
loops e, 452-0454
utiliz.a.ndo, 454-458
instru!;io sum, 4049-0451
insuuC;6e:s at first e at
last, 44Q....4
instruc;oes at new e at
end, 444-449
controle, ineerrupcces,
descri~o, 440
con trole, nIveis de,
descri \;io. 445
conversees de dado s
insuucrio if
exibindo. 319
Iiterais duran te
co mpancr6es,
317-319
instrucrao move
adaptaes
autom:i.ticas,
293-294
regras de convers j c ,
exibindo, 295
copiando
dados em tabelas intcrnas ,
391-395
m6dulos de fun ~io, 640
tabe las, 124-125
Copy To Buffer, con trc le
(barn de ferramentas
A pplication), ABAP/4
Editor,S8
Copy, co man do (menu
Jlrogram), 77
725
A A
726
I I " I .. I
I .-a
a-. a-.-.--.-.-
IHDICE
Copylt, utilitirio,
CD-ROM, 124-125
carpa (tabela internal, 350
Create Foreign Key, tela,
148,163
Create: New Session,
comando (menu
System). 76
criando
ubeI",,106-107
tabelas eraasparentes
abordagem
bonomup.1t7-122
solucionando
problemas. 119-122
tela Dictionary:
Table/Structure:
=npos
comprimeneos de
,arch, 462
ccntrolandc a
botoes na barn de
ferramen tas
Appli cation, 656
exibi~o, 71
defuli90es,exibUldo,70
d. Web, 10
C ut and P aste, bu ffers
descricac, 67
estrururas, 68
H9
domfnios
abordsgem
bottom-up , 110.111
tela Dictionary:
M:ain~ Domain,
108
ieutiliz.ando,
104-105
elementos de dados
aboedagcm
bcrtcm-up, 113-116
solucionando
probl emas, 115-116
WTSJ4S
tela Di ctionary:
Change Data
Element, 112
grupo s de ripe, 274-275
indices , 187-189
indices secundsrics,
diretrizes para, 189-190
m6dulos de func;ao, 601,
613-615
objeeos raatchcode,
660-665
programas
processo para, 48-50
solucionando
problemas, 50
[erramen tas
Applicati on ), ABAP/4
Editor, 58
0
da dos
de tabelas, copiando,
124-125
defiaiado, 566-568
exibiadc
modificando e,
127-128
ucilizando seu pr6prio
prognma. 135
globais, cipos, 619
linhas inserindc em
tabelas
navegadores de dados ,
utiliz.ando, 128-131
solucionando
problemas, 129-130
validandc com a interface
do ususrio, 145
dados e estattstica, lis tag em,
567
dados globais
alocando, 620
tipos .619
objetos
ativando, 107
impcrdncia de, 96
posi~o de. 67
tabelas , 68, 70
rabelas e'estrutu ras,
incluindo na Listagem
de string de.campo,265
ripos de dados , mapeando
pan ti pos de dado
ABAP/4 ,246-247
utiliz.aes,67
Data Elements, ti po de
objetc, 692
Data Mo dels, tipo de
cb jeto, 692
Data Type . cam po (tela
Di cti on ary: Maintain
Domain),108.109
data, cilculos, reallzando,
308-309
data, campo
sistema
sy-datum, 244
de
134-135
Dictionary; Maintain
Domain). 109
defini~6es de dadcs dentro
de m6duJos de fun~o,
605
definindo
constant es, 261-262
puametros pan.
interfaces, 605
strings de camp o
instru~o de dados,
263-266
instro~o tables,
268-269
instru~o tables,
int en gin do co m
select, 269-270
insuu;ao tables,
visibilidadc, 270
utilizando como
vu1aveis do ripe -__
desativandom6dulos de:
char, 267-268
sub-retinas
definindo e listagem
de chamada, 558
em grupos de funCiaO,
627-628
tipos com a instr:u~ao
. type, 270-272
varii veis, 714
inStru~o de dado s,
u""""",do,241-243
ins trU~o parameters,
utilizan do,
<
247-254
tipos de dado s,
243-247
deixaadc
eventc s, 55-4-557
sub-retinas, 561-563
delete, instn1~o, slntaxe,
408-409
204 -205
tipos de us o buffer,
205-209
desenbo de Iinha, care cte res
defini~ao, 503
exibindo, 506-507
fun~o. 604
descartaadc versoes
Revised de tabe las,
22)-224
describe able, instru~ao,
sintaxe, 389
descritioes de campo,
pesquisando, 82
desempecbo, aprimorando
buffer em resume de
ubclas,212-213
buffer em tabelas, 196 ~2 04
cerWios com ubelas de
usa de buffer, 211-2 12
deslocamento de buffer,
210
t~cnicas de usa buffer,
desenvclvedcres,
conhecimento funcional
de area e, 9
deslocamento de buffer,
descri~o, 210
Development Classes, tipo
de objeto, 692
Development Workbench
diaIogo, passos
defini~o.28
iniciando, 29
d idlogo , pro gramas, 46,691
Di ctionary : Chan ge Data
Element, tel a, 112
Dictionary: Initial, tela, 67
Dictionary: Maintain
Domain, tel a
campo Data Type,
108-109
campo Decimal Places,
109-110
campo lowercase Letters,
109-110
campo Output Length,
109-110
campo Shon Tex t, 108
crian do dominios, 107
Dictionary:
Table/Structure, tela,
. coluna CheckTable, 149,
167
Dictionary:
Table/Structu re :
Change F ields, tela, 117
Display Symbols. Hsta gem,
500501
Display: C hange, ccnercle
(barn. de ferramentas
Application), ABAP/4
Editor, 58
distin ~ o entre maiusculas e
m inesculas. Iirerais de
string de cara ctere, 239
do , instnJ ~ o
sintsxe, 328-329
rerminando loop s sem
fim, 330-332
727
728
INelCE
altera~es n~
earaceerjsticas, 717
campos
alteraado
ccmprimentc, 104
criando, 103
convencees para
atribuiliio de nome,
105
criando
abordagem
bottom-up, 110-111
tela Dictionary:
Maintain Domain,
108
descri~ao, 102, 668
obrecdo a documentacso
do SAP,l11-112
prop6sito, 701
reativando, 705
reurilizandc versus
criando, 104-105
driver, programas
descricac, 547
eventos
acionando 0 tOpO de
pagina, 550551
deixando, 554-557
ordem de execu!jao,
548
E
edit or- call, instru!jao,
sintaxe, 395397
elementos de dados
alt~ra~oes para
caraceerfstico de
modificando vinculou
com, 717
cardinalidade, descdcac,
658
contecdc de, 701
convencoes p:ua
atribui!jao de nome,
105
criando
abordagem
bottom-up,I13~116
solucionando
problemas, 115-116
tela Dic tionary:.
ChangeDau
Element, 112
descricao, 102
documeneacio ao salver,
113
dominios, 102
elementos de tela,
elementos de texto e, 669
elementos de textc
cabe~alhos padrio de
pagina, utilizando para
eriac, 514
defini~o, 514
elementos de tela e, 669
~uzindo,
515-517
elementos de texto,
annazenando, 514
640-641
escopo da pesquisa,
configurando, 55
escrevendo Icones na HSb,
Iistagem, 501-502
especificg!jao de
comprimentc, instru!j<io
write, 470-471
especiflcando posi~o e
comprimento com a
instru~o write, 341344
estouro, instru~o sum,
450
estruturas
aninhando, 172
criando, 171-172
DOle
exibindo, 70
versss eabelas, 70
includ e chain, defmi;ao,
173
inc1uindo mnltiplas vezes
em tabelas, 174-175
pesquisandc variaveis de
sistema, 283-286
syst,82
versus tabd as, 171
documenta~o em
interface do modulo
de fun~o, 648-649
visac geral, 607
excluindo
campos em tabe1as, 127
comendo interno de uma
tabela, 403-412
indices secundsrios,
190-191
linhas em tabelas intemas,
408-412
m6dulos de fun~o, 640
tabe1as,125,232-233,705
exemplos de tabela
relacionemeneos de chave
primaria, 439
visio geral, 438-439
exibindo
caracteres de stmbolos,
leones e desenho de
Iinha,506-507
confi.gura~oes de teda de
fuo!jao, 19
configuraes tecnicas
pan tabelas, 193
buffer, usa de, 196-204
buffer em resumo de
tabelas, 212-213
campo Size Category,
195
cendrios com tabelas
de usos de buffer,
211-212
classes de dados,
193-195
deslocamenro de
buffer, 210
namerc de extensoes,
195-196
tecnicas de uso de
buff", 204-206
tipos de usa de buffer,
205-209
converse es de dados,
in stru~o if, 319
dados, utilizando os seu s
pr6prios programas,
135
documenta,?o de
palavra-cbave, 534
indices, 187
Indices secondaries, 186
nameeab da ferrsmenta
utilicl.ria de banco de
dad05,227
o log de ativa~o II. partir
de dentro do utili tario
de banco de dados,
230-231
objetos de
desenv olvimenco, 66
parametres de
arma zenamento
dentrc do uciIit:irio de
banco de dados,
231-232
regras de ccaversac na
documenracsc de
palavra-chave do
ABAP/4 ,29 5
tabelas ou esrruturas
(DOlC), 70
variaveis de sistem a,
281
Exi t, contrcl e (barra de
ferramentas Standar d).
ABAF/ 4 Editor, 53
exit, instru!j<io
comparando com
ins tru~() es continue e
check, 341
instr'U!jao loop at e, 364
sin taxe, 327328
u tiliz.a~oes , 708
exportacac, parametres,
descricao, 607
exportando/importando
parte da interface.
623-627
exp ressoes chave,
utiJizando, 367-369
expressoes matem .iticas
codificando, 306
729
A
730
I I I I .II -
variav~
tipo d. 308
definil'o, 195
exibindo numerc alocadc
para tabelas,195-196
resumo tecnico cbs
E
FO I, include, deflnindc
sub-retin as em gropos
de fun~o com , 627-628
F4, ajucb, chaves estrangeiras
e, 15C-151,154
fax, envi an do rebt6 rios
par, 511
Ierrsmenta de rastrelc de
SQL, determlnandc qual
Indice e uti1izado,
191-193
Ierram eata utili tUia de
ban co d e da dos
acessando, 225
excluindo e recriaadc
tabelss, 232-233
fun es, 225-226
log de ativali1o, exibindo,
230-231
parfmetros de
armazenamento,
exibindo e
modificando, 231-232
ueilizando, 225-226
verificacces de
cca siseenc is, 226-227
em aameeab, 228-230
papel do nameeab,
227-228
Fiel d Label and H eader,
cam pos (tela D icti onary:
Change Data Elemen t),
113
- ~-
-i.DlG , 731
extensOes
Di ctionary:
TobI, /SttUctur" Change
Fiolds),11 7
Find Next, contro le (barn
de Ierramen tas
Standard), ABAP/4
Editor, 53
Find, bou o (barn de
ferram entas Standard )
ABAP/ 4 Edit or, 53
campo s de variiveis de
sistema, loca1iz.ado, 280
1, listage m, 715
form, instru~ o
definicdo variiv eis em,
571
nome s de parimetra ,
715
sinuxe, 559
utilizal'o de 558
fo rma gerada de programas,
47
fOnIl2b~O de Iista,
instru ~6es , 527-541
marg ens configuradas, 5~3
new-line, 528-529
new-page, 529-530
new-page print. exibindo
do cumenta~io de
palavra-cbave pan. 53-4
new-page print on ,
530-534
position, siceaxe, 538
set blanklines, sincaxe,
540
skip, sintexe, 534
forma ta~ o grifica e
in stro ~ o write, 499-507
como a di~o de leone,
501-503
como adirri o de linha,
503-506
desenho de linha
disponiv eis, 506-507
sineaxe pu:l adi~oes, 500
formatando
cebecalhose rodapes de
pagina
csbecalhos manuais de
pagina, criando
varidveis em,
519-520
ccpiand o,
renomeando e
skip, 534-536
U.DUnhO de pi gIDa;
contrclaadc, 508-511
eecnicas, 507-508
eelas de sele~a
instru~io de bctoes de
oPl'o, 672-673
instruli10 param eters,
668-670
instnl~o
cabecalhcs padra o de
pl gitu,
armazenandc , 514
cabecalhos padrio de
pagina; criando,
513-515
,,",.~os padrio de
p:5.gina. traduzindo,
515-517
cabecalhos padrio de
p:5.gina. utiliundo
variiveis em,
517-519
cabecalhcs padrsc de
plgin a,
visualizando e
mo dificando,
514-515
rodapes de plgitu,
crian do, 520-523
instru~io reserve. 523-524
ins uuCioesde formata~o
de lis", 527
back, 536-538
new-line, 528-529
new-pa ge, 529-530
new-page prin t.
530-53.
new-page print on, 531
selection-screen
parimeno de cain de
sel e ~o, 670-671
parimetro de cain de
sele ~o de sele~o
de tela, 671
programs de exemp lo,
673-681
visl o geral, 666-667
free, instru~ o, sintaxe,
403
from, adi ~o, i nstru~o loop
at, 362-363
fun~Ocs,
ABAP/J, Editcn
tela Edit Program, 61-63
Functio n Ce des, ti po de
objeto, 692
Functi on Library, tipo de
objeto, 692693
Func tion Library. Initial,
d!'cumentos alterados,
218-219
utilizando,221
excluindo, 6-)
Function Module Change:
Administration Scre en,
639
Function Mo dule Create:
Administration, tela,
613
Function Mo dule Displays
Documentation, tela,
636
Function Modu le Edit, tela,
609
Function Mo dules , tela, 636
G
Goto, comandos do menu,
Text Elem ents from the
ABAj)/4 Editor, 670
gropos de fun~o
componentes,638-64O
definindo em sub-retinas,
627-628
693
{con es
defini~o, 501-503
exibindo , 506-507
IDs de gropo de fun~o,
descri~io, 601
if, instru~ao, 315326
conversces de dados
exibindd,319
literais durance
compararr oes,
317-319
operadores de string de
caractere , 321-326
cperadcres Iogicospan
operandos, 316-317
ordem de preferencia para
tipos de dados, 317
sintaxe, 316-317
utilizando na listagem de
programa, 318
H
handles, defini~o, 47
Help on , comando {m enu
Utilities), 65
Help system, oer ajuda,
sistema de
hist6ria de tabela
automatica
descrirrio, 217
impressao, t ecnicas de
eabecdhos e rodapes de
plgina
cabecalhos padrao de
pagina,
~azenan d o, 5 1 4
-~
~ ~-'~.I.,",.-. J...A:..a.-.....II
I X . I -.....- I I
513-515
in dices
criando.l87-189
defuU<;io,183
398-400
instalandc
ddinindo parametres,
620
in terfaces Iocais, definindc
parimetros, 620
Hstagem de fonnata~ e
comprimentos padrao,
465
listag ens
cabecalhos pamo de
pagina, traduzindo,
515-51 7
csbecalhos padrac de
pagina, ueilizandc
varidveis
em,
517-5 19
cabecalhos padrao de
pagina,
visualizandce
descricac, 183-186
determinandoqual e
utilizadc (Ierram enta
de rastreic de SQL),
191-193
secunddric
mcdificaado,
defini~io. 185
514-51 5
multiplas impressoras de
uma vee, 512
safda de Iista, 511-5 12
'pool, 512-513
ununho de pigina.
cc c rrolan dc em
instru~o report,
508-511
impressora, conigura~6es
padrao, alterando, 511
.INCl UDE, 172
inclu de, cadeia, defmi;5o, 173
in clude , instru~o. sintue,
598-600
include, progr~mlS
defini<;io, 597
segundo (UXX),
descnlii o, 602
top o,des cn~0, 602
189-190
excluindo.1 9O-191
exibindo, 186-187
selerivos, 188-189
'nIltagens.185
Info Types, ripe de objeto, 693
in forma~6es ripidas
{dicas
de ferramen ta), 17
in ician dc Rl3, 10
ins erindo
a instru~io call functi on
autcmaticarneure, 613,
649-650
campos em nbebs , 126
Iinhas em eabelas, 397-400
navegadores de dados,
utiliz ando, 128- 130
solucionand o
problema.s, 130-131
Insert From Buffe r,
controle, (harra de
ferramentas
Application), U~/4
Edi tor, 58
Insert Line, controle (b2rra
de ferramenus
AppH"lion), ABAP/4
Editor, 58
Basis. 21
ScreecCams, ......
instdncia central, defini cao,
26
instincia, defini~ao. 26
instnu;ao de contr ole de
imprcssao,533
inStn1~O
de dados
definindo varifveiscom.
241-243
sictaxe, 77, 263 264
programacic baseada em
even eo, 65365 4
eventc at
selection-screen, 655
eventc at user-command,
655-656
event c initializa tion , 65<4evento selection-screen
push-burton, 65 5~656
interceptando eventos
command Windows, 31
interface d o usuaric
cbaves estrangeiras,
verifican do, 1++145
persccalizacdc, 17
tew, familiariundo-se
com, 52
validando dados com, 145
Interfa ce, m enu., 17-1 9
in terfa ces
defmindo pa.rimetrOs,
605,607
d es cri ~io,
605
servidores de
apresenu liio e, 24
. . ... ..
IHDleI I
padrio de
pagina. criando,
cabe~ o s
in tervalos de no m e de
clien te
convenliOes pan
atribuiljio de nom e.
691-696
descricao, 47
janelas, abrindo, 76
J-L
justificativa, deslocando
com a instru~o
statement, 4 90~9 1
Lamb to n Co ll ege Web , site ,
curses de treinamento,
10
lendo
listagem de algumas
linhas,362-3 63
para arualizar (tabelas
bufferizadas) ,
descriliia, 203
Ua1, tabela, visio geral, 438
configura valor de
sy-subrc pan 373
ad.i~ mone dria, 485
, di<;io uni~ 488-489
adilioes arr edc ndadas e
decimais, 483
adi~Oe s de parimetro,
eodific.ndo, 576-577
agrupando por eipo p ara
reduzir a duplica~o
de codigo e tomar a
manut en<;io mais f:i.ciI,
274
append sorted by pan
localizer a s tres
relatorios de vendas
principals, 414
area de rrabalhc da tabela,
77
at first para escrever
dru lcs e at last para
sublinhar a Ultima
1inh.. 441-442
at new e at end, aciorudas
par ah eraes em
campo s e altenes no
myel de contrale, 448
bytes de p reenchimeoto
ao mov er dados en tre
St rings de campo , 302
dlculos de data, 308
campos , movendo parte
d, ,296-297
camp os numericos,
movend o pan strings
de campo de caracte re,
299
char defmido pelc
usuirio de tipo de
dado, 271
classificando caracteres
acen cuados, como
adi~o de rexec ,
380-381
CO , cs, CA e NA,
exercirand o, 322
cc n staa tes, defmi es de,
262
contagem de linha e
eamanhc de 1inha, 510
ccnversee s de dados,
294-295
dadas e estatistica,567
dadcs globais
persistentes, 620-621
elseif ~ mais clare que
urilizar ifs anin..bados,
320
especificacees de formate
de data, <4- 80
eventc top-of-page, 519
eventos
acionand o em ordem
ditada por prognma
de driver, 548
Dio incluindo dentro
de condili5es a u
loops , 552-553
tres eventos de base,
546
eventos top-of-page e
end ~of-pa.ge, 521-522
expre ssao- chave, 368-369
fl, valor atu al de quando
enddo ~ execur:ada,
334- 335
733
.-
- --iNCKE I
comprimentos padrao.
465
gravandc icones na !ina,
501-502
if, utilizando no
prc grama, 318
inserido antes da
primeira lich a do
c6digo execuctvel, 551
ins tru~ao call fun ceion,
udlizsndo com
parimetros, 612
inst~O case. realiundo
urna serie de
compan.~oes.
327
instru ~io check. 340
instrU~o cleat. utiliundo
para limp er a linha de
eab~o, 407-408
instru~o collect,
combinando linhas
conforme sdicionadas
as eabelas intemas,
418-419
instro~o continue,
338-339
instro~o describe table,
utiliundo vamveis de
sistema para
quan tificar conteudo
de tabela de, 390
instruyao do, adi~
variivd , 333-334
ins tru~io editor -call para
visualizar, editar e
estreat a conteudo de
uma ubela interna,
396-397
instru~o locI. 564-565
instru~o
move, 298
mstI'Utjoes write
:adies
de justificati...",
490
cunpo.300
instrut;io
move-corresponding,
especificatjOes de
po si~o e
comprimentc em,
304
ins tru~o
new-line, 528
instru~o new-page print,
533
insuu;io parameters
prcgramas que sceitam
parimetros de
en trada
udlizando, 24 8 ~2 4 9
ins~ position.
538539
de In dice, 365-366
instru~o
reserve, 523-524
instruc;ao select
adi ~o de campos
correspoadentes,
436-437
com a instrulj-io
appendpara
preencher eabelas
ineemas, 435
342-343
ilusrrandc efeitos da
espec ificacio da
linhas de cabecalho,
mensagem, insuucrio
raising. 646-647
m6dulos de funljio, 615
chamada simpl es para,
609
chamados .da Lisugem
20.1, primeiro, 621
chunados da Listagem
20.1, segundo, 621
chamados da Li.stagem
562
ou estrururas, 265
diferentes, 455-+56
para exihir simbolos,
500-501
partmeercs, defmindo
com a instru~o
parameters, 248
parimeuos digitados, 5704
passando panimett'os p ara
subrocinas, 572
passando por referencia,
578-579
passando por valor, 580
passando por valor e
resulradc, 582
de comprimenec, 470
restringindo os
multiply, divide
corr espondent es, 307
555-556
dentro de sub- rotinas ,
dDUmaneiras
posj~o e especifica~6es
stop
dentro de evemos.
ts belas d. DDIC
valores que
campos-chsve p adri o
em, 371
loops sem fim, 330-331
misc:an.s de edi~o,
efeitos de 475
pan, 624-625
643
cham2dos da Listagem
20.9, c6digo~fonte
para , 647
no -gap, 473
nG-zero e no- sign, 482
definindo como
acioaando, "457
contendo tipos e
constantes, 274
inStnl ljio while, 337
instrU~6es add, subtract,
on change of
fabricantes
selecicea dos, 78
saida panr
processamen to de
prognrna morto em
suas trilhas, 328
s:udas de coaversao,
477-478
seu segundo prognma,
72
revisitad c, 269
simplificado.76
sfrnbolos e caracteres de
desenho de linha, 504
strings de campo
''',;0 varymg,
retornando
componen tes em
sequencia, 332
atribui ~o envolvendo
duas, 268
conten do cutra string
de campo . 265
instru~o
dau.,
campo,309
..riiveis do tipoch2r, 267
subcampcs, ~7 1
sub-roeicas
chamando a sub -retina
mostrada na
Listagem 593-594
clwna.ndo uma seri e
de, 560-561
defmindo e chamando,
558
sy-db cnt para con rar
linlus reeornadas da
instruliio select, 81
syfdpos pan visualizar
deslocamenrc do
primeirc caraceere
coincidente ou !lio
coincide nte,324-325
sy-index ccntendc
namerc arual de
itera~io, 329
sy-subrc
determinando se
qualquer linbas
fonm selecionadas,
80
valor configunndo de
por dentro m6dulos
d. Iun\io, 642- 643
tabela ztxIfal, exibindo
dados em,135
ubelas e estruturas
ODIC. incluindo em
strings ,de campo, 266
rabelasinremas
adi~ de campo s
correspcadentes
para p reeac her a
partir de urn banco
de dadcs, 433-4304
adicion and o tres
linhas a partir da
linhado caberUbo.
355
a.dicionando tr &
linhas a parti r cia
linh a do cabecalho,
e gravaado -as de
volta novamente,
361
colocando mais
camp os do que
existem em uma
ubela,432
cc nteado de campo s
entre at e eode, +43
copiaa dc dados de
uma para cutra
utilizan do as
instru~oes append
lines e insert lines,
393-394
criando com e sem
. IWw d.
cabecalbo, 352
definindo com e sem
urna linha de
eabe<;>lho, 351
excluindo linhas de,
409-410
inserindo linhas em
listagens
dassificadas,
enquanto
mantendo a ordem
de c1as si fi~oJ
375-376
735
-:--~DI"
.I
Maintain of Matchcode
Ob ject Fields, tel a, 662
Maintain Select ion
Conditions, tela, 664
Maint:l.mSelection
Options. tela. 633
mendt, campo, indices e, 188
manuten~o
diaIogo
mascaras de edi~o
ccmecacdc com V. 712
instru~ao write, 474-476
masC2ttS de cdi~o em V,
712
matchcodcs
sabores de, 716
nlidaliiode dsdos,
utiliundo pan,
659-666
configurando,659-660
criandc e mantendo
cb jetcs matchcode,
660-665
organizando pOI' tipcs
dtualiza<;20, 666
sineaxe, 666
matchcodes Bsicamente
configurados, 659-660
m cm6ria em tabelas
Intemas, alccando, 709
mcnsagens de erro, caw de
diilogo SAP Rl3, 641
menu principal
iI'~ coaceiruais, 10-15
area Applications. 12
area Basis,20-22
modiflcandc
csbecalhcs d.
p;gin ~
514-515
fonna dos parimetros de
armazenameato
dentro do udlietric de
banco de dados,
231-232
4CO
Module Pools, tlpo de
objeto, 693-694
mo dulo d e fu n~o ,
in terfaces . 'f)eja interfaces
modules de aplicativo,
visdc gera l, 8
m6dulos de fun~
acivando, 604-605
cancelando a versi o de, 629
chamando , 609-613,
624-625,643,647
dado! globais, 619-622
execueando urn
exemplc, 611613
instrusio call
function, 609-611,
613
cri~do ,60 1 , 6 1 3 - 6 1 5
definic;ao, 600
defini~6 es de dados
dentro de. 605
dcsativando, 604
documcnundo excecoes,
648-649
e lTDS,
corriginda, 640-641
63H38
parimetfos
digitados e cia
digiesdos, 608-609
expcresdc de, 715
passandc para, 607
passando rabelas internas
para
metodos, 622
viaexporu~o/
importa~a e
alterandc, 623-627
move, instru~o
adapta~6es aut cm aricas,
293-294
lisugen, 298
regras de ccnversac ,
exibindo, 295
sinraxe,291
737
INDICI I
strings de campo, 297-303
campo s numericcs de,
299-300
tipoa de dado de
caractere,
utilizando, 300-301
tipos de dado
nemericcs,
utilizando,301-303
subcatnpos,296-297
move-ccrrespca ding,
ins tru;oe.s
sinuxc,303
utilizae.s, 302
Multiple Selection, tela, 632
new-page print on ,
jnstru ~o) sintaxe, 531
n om e, ecoveucees pan.
atrib ui!?o de
caracteres invaIidos, 689
iaeervalos de nome de
cliente, 691-696
objeeos de
N
nametab
descri~o, 227
papel em progrunas
ABA P/4, 227-228
vc:rifica;oes de
ccnsistenciaem,
228-230
natureza ineegrada do
ambiente Rl3, 8-9
n avegadcr de dados,
utilitirios
decidindc quando
ut ilizar,13 4-135
fun;oes de, 132-134
inserindo linhas em
tab elas, 128-131
SE16,'dados de tabda
exibindo com, 131-132
SE17, comparando com
-SE16, 134
SM31 0 SM30. 134
cpos, 131
utiliza;6c:s, ]28
new-line. instru~o, sin taxe ,
528
desenvohnrnnento,47
paranetros, 247
p ro gramas de dii1ogo,
691
relatorios, 690
tabelas ~ componentes,
105
variaveis.242
vari fveis de sistema, 79
vida geral, 659
nomes de dominios, chaves
estrangeiras compostas,
153
nomes de progra m a e
caracteres invalidos, 689
nomes de re lat6ri o de
cliente, conven ; oes para
at:ribui~o de n om e, 690
n o- scrolling, adi; ao,
instru~o new-line, 528
no-sign, adi ;ao
instru~o write, 481-482
utiliza~6es , 712
n o-zero, adi~o, instru~o
write, 481-482
Number Range Ob jects,
ti p o d e objeto, 694
hexadecUn~,240-241
adi~o de grupc
de hordes
de op~o,251
adies para, 249
campo de entrada rorule,
matchcode, 666
oti miudores, 187
Output Length, campo
251.
campo de entrada rcrula,
alt erando, 251-253
exemplos de, 96
umindo, 66
int ervalos de no me de
Maintain Domain),
109-110
pc rtabilida de, 45
ohjetos de tempo de
execusio,d~~o,47
obtendo a documenta~o do
SAP em dominios,
111-112
occu rs, adi~o, instnJljio
append, 357-l59
on change of, instru~o,
451-458
loops e, 452-454
perigc oculto em,
457-458
utilizando, 454-457
Open SQL, 36-l7
descricao, 697
tabelss, operando sobre,
698
vantagens
buffer em dados em
servidor de
aplicativo.36-37
p onabilidade, 36
tra tamentc
automaticc de
clien t e, 37
operador de encadeamentc,
utilizando, 82-83
op endor es 16gicos,
instru~o if, 316-317
op en dores, instru~o
compute, 305
sintaxe, 247-248
padrees
alterando, 712
Ueas de trabaIho de
rabela, 76
ativando altera;6es para,
464
impressora, aleerandc, 511
instru~o write
ccmprimentcs,
461-462
for matando, 463-467
listagem de campos
chave, 371
pad rOes do usu ari o,
. configurando, 280
Page Do wn, pr ession and o,
74-75
palavn-ch ave,
docum entacdo, instruljio
new -page prin t, 534
paJaV1'2S cbav e de even to,
de5cri~o, 654
Parameter Id s, tipo de
objero, 694
para m eter, ins trulji o,
668-670
parameters, instru~o,
definindo vari,heis com ,
247
adi~o de cain baixa, 250
parimetros
alterando, 607
de expOrta~O, descricsc,
607
de impo naliio
defini;io,611
descri~o, 607
tomando opcionais,
608
valores padrio,
fomeceado,
608-609
de tabela,descricsc, 607
defini~io. 247, 571
definindo
em interfaces globais,
620
em interfaces lccais,
620
739
,PREND, EM 21 DIAI'SAP/'
interfaces, definindo pan,
605-607
passandc pan m6dulos
de fu n~o. 607
p assandc pan
sub -retinas. 576-Sn
passandc
reerodos, 578-583
por referenda, 578-580
per valor, 5S()..S81
p or valo r e resultado,
581-5 83
reais, 572
parametros de
armazenamento c
ferramenta utilitaria de
banco de dados, 231-232
parametres de grupo,
instru~ao de bctoes de
op~o. 673
parimctros de tabela,
dcscri~oj
607
. descri~ao. 573
sinaxl:, 573
vantagcns, 575
parametres fonnais
descricso, 573, 715
digitadcs
sintaxc, 573
vanu gcns, 575
f)trSUS naD digirados,
573
parametres naa digitados,
608-609
descricao , 573
parametr es reels, dcscri;ao,
5n
parametres, adic;Oes,
codifican do, 576-577
parametros, nomes,
instru~o form, 715
pass by refcrencc,lisagcm,
578-579
listagem, 572
metodos, 578-5 83
por refersneia, 57858 0
po r valor. 580-581
por valor e resultado,
581-583
strings de campo pan
sub-retinas, 575
tabelas int emas para
m6dul os de fun~ao,
622-627
personaliZ2odo
interface do usuario, 17
ubelas,98
pesquisa
descri;6es d e camp o, 82
prognmas,67
531
tipo s de
programas de dalcgo,
46
relatorios, 45-46
eveneo at user-command,
655-656
evento de inicializa~,
sinuxe, 654
pushbutton, sintaxe,
655-656
interatividade de, 653-654
programado res,
conhe cime n to da ar ea
fun cional e, 9 "
prognmas
convenliOes para
atribuic;:ao de nome,
47-48
criando
processo pan, 48-50
solucionaodo
problemas, 50
em lore, chaves
estrangeiras e. 152
include
defmi~o, 597
~e
superior,
descrir;ao. 602
segundo (UXX).
des ai~, 602
prop6sito, 8
visio geral, 7-8
RJ3 Analyzer Identifier ,
tipo de objeto, 694
RJ3 Data Dictionary
(ODIC)
campo s. controlando a
47
eventc at
selection-screen, 655
evenrc selection-screen
descri ~o,
salvando alteraes, 54
programas de cliente,
eventc
pools de tipos
cons tant es e, 262
d.fini,.o. 273
pcrta bilidad e
do codigo, 36
objetos de
desenvolvimento.45
posi~o e comprirnento,
especifica;oe.s, li stag em ,
470
posi;io, especifica~o,
instnJ;io write, 468-470
ABAP/4 , listagem, 50
Pri nt Param et ers , t ela,
execu~o, 47
procurando, 67
c opy, n
Save As, 77
programa~o baseada em
659
po ols d e ta bela, descri;io, 98
eveneos, 74.-75
primeiro program;
ABAP/4 Editor, 53
Printer Macros, ti p o de
objeto, 694
processamento de blo cos,
meou
(dicas de ferramenta), 17
ponto Iluruante.fiterais, 240
eventc s, 75
Page Down, seque ncia de
6S4
processos de trabalho, 31-32
Program, comandos do
informa~6es ripidas
de.scri~o ,
~, m
Q-R
exibi~o de, 71
defmilioes, exibindo, 70
descri; io,67
estrururas, 68
objetos, imporUncia de,
96
paisagem de sistema .
quantidade, campos,
definj~o, 170
quebras de pagina,
causando, 530
d.fini,.o, 26
de, 67
eabelas, 68. 70
po si~o
R/3
ambience, natureza
integrada, 8-9
arquite rc ra de siste ma
definindo, 27
servidor de aplicadvo,
24-25
servidor de
apres enta~io,
24-
servidor de ban co de
dados,25
servidores,
configurmdo,
25-26
clienees do sistema de
instala;ao, 36
iniciando, 10
menu principal , 10
area Bas"is, 20-22
utiliz.ac;:6es, 68
R/3 Library help. ABA P/ 4
Editor: Edit Program,
te la, 65
rad iobuttons, instru;io,
parimetro de grupo,
672-673
raise, instnJ~
configurando 0 valor de
sy-subrc co~, 641-644
utilizac;:oes. 716
read table, instruliio
tabelas ineemas,
urilizando com
adi ~o de comparaliio,
372-374
adi;ao de Indice,
365-366
adi c?o de pesquisa
binaria, 370
com a di~ o de chave,
367-370
742
INDICE
r ecursos de referencia
online, 10
refresh, instrucao, sintaxe,
405
registros Mestre do usuario,
status dependence do
clientc.35
regras de conversso,
exi bindo com a
instru~o move, 295
reindexando, in serindo
linhas e, 399-400
relacionamentos de chave
estrangeiras,
esrsbelecendo, 717
r eIacio na m en to s de chave
primdria, tabelas de
exemplo,438
Relation IDs, ripe de
obj eto, 694
relat6rios
componentes, 46
convencoes para
arribuicic de nome,
690
impressio em multiplas
imp ressons de urna
vez, 512
in strUljaO appendsorted
by, 412-413
telas,45
release, fun~o
cance kndo.629
procedim en to para, 628
renomeando m6dulos de
Un~o, 640
Report Writer, tipc de
ob jcto,694
report, instru~o
adi~ line-count, 521
adic;oes, 712
tamanh o de pagim.,
formatando, 508-511
Repository Information
System, tela, 631
Repository Information
System: Function
Module, tela, 632
reserve instru~o, sintax e,
523
Restricting the Vendors
Selected listing. 78
reutilizandc domfnios
oersus criando, 1041 05
Revised, versoes de tabelas
companndo com Active,
222-223
descarundo,223-224
descricso, 222
rodapes e cabegalhos,
513-524
rcdapes, utilizando a
instru~o
skip, 535
rolagem, areas
alocando, 697-698
listagem simplificada, 76
segundo prognma in clude
write, 476-479
exibindo as existentes,
478-479
lista gem, 477-478
re tinas de cc nversao
dentro de domfnios,
476-4 78
salvan do
a1t era~oes de programs,
54
treinamentc , 10
sapgui.exe,24
Save As, comando (men u
Program), 77
Save. botao, 12
Scr een Cams, 44
Scr een s, tipo de obje to, 694
SE16, nave gad cr de dad cs
exibiado dados de eabela
com 0,131-132
fun,oe, do , 132- 134
SE17, navega dor de dad os,
comparando co m 0
SE16,134
SE63, transa ~o , tra duzi ndo
'.
ferra mentas
Application), A BAP/4
Editor, 58
select, ins tru~ o, 72-76
adi~o de campos
ccrrespcndentes,
432-434
area de trabalho expllcita,
77-78
areas de trabalhc de
tabela, 76-77
chaves estrangeiras e, 658
cl:iusuhwhere, 78-79
eabelas in tenus
adicionando linhas
uma a uma, ~34-437
preenchimento,
opcoes, 437
select- toto, in strufiio. ~31
select-o ptio ns, instrufi3o. 672
sequencia de clas:stfica~s'o
bindria, definifiao, 379
seqde ncia do pr ogra ma,
con trolan do
ccmparando com as
instru~oes exit,
contin ue e che ck, 341
continue,
337-339
instro~o exit, 327-328
servido r de banco de da dos,
des cri~o. Z5
188
sintaxe, 426
estrutura 51St, exibindo,
82
instrU~o tables ,
interagindc com ,
269-2 70
processamento cia
inStru~ o
sy-subrc, 79-80
AVI select,
74
processamento de Page
Down, 74-75
sintaxe,72
sy-dbc nt, 80-81
servidores
aplicativo, 2-4-25
irea de rolagem, 28
arquite rura de, 27-36
buffer em dados e
O pen SQL, 36-37
cliente de logon, 32
compo nentes do
processo de
, raballio,31-32
con texte de usuario,
27-28
passos do diilogo, 28-29
passos do dialogo ,
iaiciando, 29
prccessamento
roll-W ra ll-out,
30-31
apresentac?o, 24
banco de da.dos, 25
confi gurando, 25-26
servidores de ap licativo
arquitetura de, 27
area de rolagem, 28
cliea ee de lo go n, 32
componentes do
processo de
trabalhc, 31-32
cont exte de ususrio,
27-28
passos do dialogc,
28-29
passos d? dialcgc,
inicia.ndo,29
processamento
roll -in/roll-out,
30-31
cbelas, tipos, 32-36
trocando dados com
servid c res de
apres enta~ o , 31
descrici o, 24
urilizando buffer em
dados e Open SQL,
36-37
servidores de apresentaclc
descri ci c, 24
tr ocand o dados com
servidc res de
aplicativo, 31
servidcres, configurando,
25-26
sessses, abrindo, 76
set blank lin es, instru~o,
sintaxe, 540
set margins, instru ~ o , 533
seta para baixo , te cla, ajuda
F4 e, 150-15 1
servidores de
apresentac;s'o, J 1
743
r
.;
~
'744
r'
r> r>;
r-
r-
r>;
I
r:
r>
r-.
<:
r>
<.
.....,~. , .
'""'
"
"
"
-e-,
"'
-r-,
--..,
''Ii'
iNOICE
Iiseagem, n
liscagem revisicada, 2 69
Iiseagem simplificada, 76
Short Text, campo
eela Dictionary: Change
Data Elements, 112
instru~o
instrur;:ao on changeof,
instru~o
inStru~ o
collect, ..17-422
compute, 305
instru<?o C ONSTANTS,
262
tela Di ctionary:
Table/Structure:
aintax e
395-39 7
ABAP/4,236-23 7
event o de inicializacao,
instru~o, 560
654
evento selection-screen
pushbutton, 655-656
ins rrucac add, 306-307
inStru<;20
add-corresponding,
307
357: 3,9
processamento do
lo op, 364
instrucio m essage-id,
682-683
inStnlt;aO
move -corres ponding,
303
instru~o
247-248
liaha,
especificacoes de
po si~o
e
cc mprimenco,
341-344
area de rrabalho
explfcita, 77
306'307
matc hco de , 666
Standard, barr. d.
ferramentas, 16
selection-screen blo ck
with frame, 667
ABAP/4 Editor
conero les, 52 -53
recu rso Find and
Rep lace, 54-57
estrurura 51St,
exibindc, 82
426
inscru~o AVI
select, 74
processamento de
Back, 75
processamenco de
sy-subrc, 79-80
instru<;2a selec t single.
83-84
inStrulf20
selection-screen,
673
inStrulfao raise. 642
ins rrucio read table,
pardmeerc de cain d e
seleljia,671
364-36 5
adi<;ao de Indice,
instru<;ao select-options,
672
365-366
adi<;ao de pesquisa
540
binaria, 370
com adi<;iio de chave,
367-370
comparando adi<;ao,
379-382
372-374
sem adi<;5es,
370-372
tran spartanda adi<;io,
374-376
ins tru ljio refresh. 405
"
Application), ABAP/4
Ed itor, 58
bc ee es de op~o,
25 1
adi <;ao de lecras
minusculas,250
253
adies a, 249
com o adi~o de caixa
de sel~o, 250-25 1
reserve, 523
lnstculjio select, 72
adi<;ao d e gropo de
389
contagem de
508-5 09
451-452
241-242,263-264
inserucsc dele te, 408-409
report, tamanho
de linha e adir;:Ocs de
on, 531
instru~o
de dadcs, 134
solucionandc problemas
do~os,criando, 111
objeto, 695
start-of-selection,
automaticamen te
inscrindo Iistagem , 551
Status, comando (m en u
System), 20, 95
elementos de dados ,
criando , 115-116
stop, instruc;ao
inStruc;ao loop at e, 364
strings de ca mpo
atribuicac envolvendo
ajuda Fl , adicionando ,
ucilizacoes, 714
138
navega dor de dados SE 16,
132
programas, processo de
265
defmi lj2o, 263
cria~o, 50
tabelas rransparentes,
defmindo
inscru<;aotyp e, 270-272
ohjeto, 695
694- 695
745
'"'
r> r-
~~~~0rr~rr~0rrrrr~~~r~~~~~~~~~~~~~~~
746
cipos de dados de
caractere,
utilizando.300-301
tipos de dados
numericos,
u tilizan do, 301 -303
Iistagem da adi~ao
variavel,332
p assando para
su b-retinas, 575
utilizando como varidveis
do tipo char, 267-268
strings,localizado todas
ocorrencias de, 56
Structure (DDIC), tipo de
o bjeto, 695
subcampos
instru~ao
syststnu~ture,instru ~ao
58 1-583
passando st rin gs de
select, 82
System, comandos do menu
Status, 20, 95
sy-subrc
configurando 0 valor de
de dentrc de s
587
corpo por referencia,
m6dulos de
valor, ou valor e
642- 643
590-591
instrucio raise,
641-644
sub-retina, 584-5 85
m essage, instrucao
sintaxe, 584
raising, 644-64 8
cabe"lho, 586-5 92
move, 296 -297
inserucaowrire, 471-472
sub-retinas
chamada urn mostradc na
Listagem 18.12, 594
chamando uma sene de
listagens, 560~561
definindo em grupos de
fun c;aovia F Ol ,
627-628
deixando, 561-563
descricao, 558
efeitos de exit, check e
tipcs, 559
comparando com
comparando com m6dulos
charnando, 559-561
passando parametres
p ara , 576-577
rnetodcs, 578-5 83
p or referencis,
57 8-580
par valor, 580-581
comparando co m
ext ernos, 593
definindo e cham ando ,
559-561
deixando, 56 1-563
instrucao, 81
sy-fdpos, 324- 326
campos,adicionando
abordagem top-down,
122- 124
acresc entan do , 126
inserindo, 126
campos, excluindc, 127
campo (Dictionary:
Table/Structu r e:
Change Fields, te la) , 117
tabela, campos
campos de quanridade,
170-171
campos monetarios,
168-169
tabela, dusters, descricio, 99
tabelas
Active, versoes ativas,
comparan do com
tabelas d e banco de
dados, 226-22 7
alt erand o a nom e de, 124
namero de linhas,
389-390
determinando se vazia,
[erramen ta ur ilitdria de
esrrururas para
389
banco de dados,
testando e para
excluindo e re criando
m odificando
cccveocses p ara
atri builiao de
nome, 105
eleme ntos de dados,
102
configuracoes tecnicas
buffer, utilizando ,
196-213
buffer em re sume de
dererminando qual e
u cilizada com a
ferramenta de
195
195-196
res ume, 221-222
tecnicas de u sa de
buffer, 204-2 05
cipos de u sa de buffer,
205-209
cop iandc, 124- 125
criandc, 106-107
instrucac sort,
vantagens, 185
exibindo, 193
403-406
indice, defull~o,3 65
191-193
211-212
408-412
excluindo 0 conteudo,
rastr.eio de SQL,
classes de dados,
de u so de buffer,
bu ffer, 210
21 8-220
dete rm inand o
cornponent es de
deslocamen eo de
defini~o . 68
documentos alcerados,
chave estrangeira.143
193-1 95
sub-retinas in ternes
sy, variavel
internes, definindo e
e,710
de fun,ao, 600
descricio, 592
Iistagem, 562
com in rernas ,
396
sy-tabix, cperacses de loop
in temas, 593
593
sub-retinas extemas
stop dentro de
extemas, comparando
variavel, depois da
--::iH::DI::::.J
CE
conteudo classificando
de, 376-382
con teudo comparando
de do is, 395
cop iandc dados entre,
393-394
copiando p art es de,
392-393
urilizando, 376-382
lend o dados de,
359-376
linh as inserindc em,
397-400
modificand o Iinhas
em, 400-403
passando m6dulos de
fun.,.o, 622-627
preenchend c a partir
de tabelas de banco
de
dadcs, 425-437
preenchendo utilizando
a insrrucio collect,
417-422
processamento de
DDIC,67-68
iccenupcso de
de duster
definind o, 349
controle, 440-444,
definindo a Iinha de
cabecalho, 350
definin dc 0 corpo,
350
445,449,451-458
programa para obter
informecces sabre,
390 -391
747
testando
chaves estrangeiras, 149
modules de fun~o,
629-631
tipos de clados de
caractere, 244
tipos de dados de
comprimenrc fixe,
244
tipos de dados
numericos, 245-246
instrusao if, ordem de
preferenca, 317
rabelas, alrerandc em,
127-128
<
type-pool, instrugac,
contendo tipos e
constantes, Iistagem, 274
U
under addition, instru~a o
write, 472-473
Undo, conrrole (barra de
ferramentas
Application), ABAP/ 4
Editor, 58
unidades de modularizacao
descricso, 545-546
utilizacoes, 546
unit addition , instrucao
write, 484,486-490
User Defaults, comandos
(menu System), 511
User Profiles, tipo de
ohjeto,695
Utilities , comandos do
menu
A BAP / 4 Key Word Doc,
534
Help on, 65
utilizando e alterando sao
identicos em fun~o,
llstagem,579-580
UXX (segundo programa
include), descricac, 602
V
validando dados, 145
valores de componente
gone, 442-444
valores de X, cardinalidade,
155
valores de Y, cardinalidade,
155
valores excluidos
(excludes),633
valores iniciais padrao,
deini~o, 286
valores, excluidos, 633
Value Table, campo
chaves estra ngeiras e,
165-166
acessando incorretamente
antes de definir,
listagem, 243
cabecalhos padraode
pdgina, lisragem, 517
compuuundo, 707
convencoes para
atribuicao de nome,
242
'
rrrrr0~n0~n~~nn~n~n~
i'
I
definindo, 714
instru<;io form,
571 -573
inStru~o
param.eters,
utilizando, 247-251
tipos de dados,
243 -247
descricao, 79
exiblndo, zso
instru<;io describe table,
389
localizado, 283-286
nomes de, 79
sy-dbcnt, 80-81
sy-fdposvoperadores
para, 324
sy-index, 329
sy-subrc, 79-80
varisveislocals, descricto,
563
varredura de intervale
de fndice, definicio,
188
adi~oes
no-zero e
no-sign, 481~482
:ldi<;6es redondas
decimais, 482-484-
w
where, adicio, instrucio
loop at, 362-363
where, clausula
comprimentos padrao,
instruljaoselect, 78
suportada par indices, 185
461-462
desloeando a justificativa,
490-491
especificact o de
comprimento, 470-4 71
especificacao de posicao,
468-470
336-33 7
especificacoes de posi<;ao
Windows, ambiente,
e comprimentc,
iniciando 0 R/3, 10
Windows, eventos,
341-344
interceptando, 31
367370
,\
695
96
versc es de mo dules de
fun ~a o , Ian cando,
62 8-629
versoes d e tabelas
eomp arando Revised e
Active, 223
descanando Revised,
223- 224
ternporfrios, 223
versoes te mporaries de
tabelas, 223
visibilidade
paginando cabecalboe,
514
programas de inclusao e
incluldos, 600
safda no spoo l, 512
write, instru!;ao
adi<;ao de nenhuma
lacuna, 287, 473-474
adiljao de unidade,
486-490
adiljoes de formaeacsc
grafica
como Icone, 501-5 03
como linha, 503-506
como simbolo,
500-501
exibin do simbolos
disponfvel, Icones e
caracteres de
desenho de linha,
506 -507
sintaxe, 500
adi<;oes monetaries,
4 84-486
adicoes monetarias e de
unidade, 484
.'
I,"
exibindo exisrenres,
521-522
478-479
retinas de conversao
dentro de
domfnios, 476-478
sintaxe, 467-468
550
Iormatacio padrao,
465-467
subcampos, 471-472
dOlUS, 463
estouro, 464
u nderaddicioD,472-473
numeros, 464
vezes,4 64
formatando da ta, 479 -481
mascaras de ediljao,
474-476
saidas de ccnversao,
476-479
z
ztxa, grupo de fun~o,
listagem, 622
ztxlfal, tabela, exibindo