Você está na página 1de 386

KEN GRtENWPOD e o'president" da ernpresa de

.\

co nsulto riaern ,SAP Novt.l::; ty1o~us ~ Inc, sediada em


\
Ontario, .~~nada. Ele tam~e~'e instrutor de ' . . .... I
Certificacao em SAP da America's ABAP/4 Academy: . ': Boston; no Lambton Collegeem Ontario
~

. ....

.recenternente lecionou curso~ <!eABf\P/4naSAP .


Americaem Foster City.
-

j -'7

.~

. , .~,

!il,

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

. ,: dados e dorntn ios

. .

t......

".

..'

'.

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

~ . . .,~.. ; .~. . ., UtilJ7e.o Data Di~ioriary p-;;';a-exibir tabelas,


.~' .
chaves estrangeir~:e'indiCes secundarios . .';',i . ~ .
,"
, ~:.~

6/'

_~" . De~e!J'vol~ e. uti U~~~fetjvap:!~oterel.atqrio~


, .. . iru:luiiidG a sua fo'rlnata<;ao"com 'sfmbolos
:."
'
.
.
,
'
"....;' ~......
.grM
icos e .fc_oneS':~ .:
".-:'.'"
,; .,
..

'J

. ~

...."

~,

Crie telas de selecao bern-projetadas e eflclente-

contem: '

. .. ,

'}a Mais de
st;~eric~s "erh 'Y1~~S' tbj~ sess6~:i-e- . .
trelnamento Individuals a que "QCe~pode assiWf e
re\::isar a qualquer rnornento, ilus.t;and9:passq a passo
as p rQcedim,,~ntos cont idos no liv re .' . .. . l
:: ~. ~ ~~( ." . .
. \. ' _.
I,
i! C6digofonteli>m ABAP/4 testado para os prog~as de
exemplo, e~:~.t~ibS e solucoes lnciuldos ~o Iiv o.

'50'

Utillta rfos originai s,

'-

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

....cC

. '
\IV\IV\N. ..

..J

-'-~__1__:;_--'

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

Enlellda a que' um
slslema de RI'J. sua
aparllnda e lunciollamenlo
para0 U5udrio; apreAda
sobfe larqu~e lurl do
slslema emque programas
A8AP/41unclonam,

Cliee modillque programas


ASAPI. sinples;exibaI.WI18

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

tabela e !lC1J CMlelldo

ulilizando 0 Dala Dictionary;


adldone comenl4rio1e
documen t~o. eeus
progllmas.

Crle cha'o'lls ntemas;erie B


u~!Ilelabelasdtt laxlo;
deSCf&va a djrerll~a entre

uma esm nsa I UITl/Illl.bela;


ctIeestruluras no Data
Diclbnaryde FV3.

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

";

"".;'ill )

. ,.;);".;,Dla 6.
Coo e utilI Indices

Apllqul 0 ulW1aria de banco


ee dados para newtar I
vorUlcllt;ao decoerl!nd:l;
atesteInlormaes de
banco dedades espadlicas
de labela; Insira a recra
labelas nobanco dedados.

seQ.Jrxlar!os
apropriedamenle;configure
osalriltJlos16cnlcos para
labolas Iransparenles:
configure 0 usadebuller
para tabelas,

Enlendaos eLemenlOi de
$lntaxe do ABAPI":

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

')

cada lipo; delifUI e utilize


constantes,

')

':'i

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

UIiIlzoa nstM;Aotab 1e s
para dellnlf strings de
campo; ontenda a InstnJ;fto
types eutilize-ap8fa
delinlr seIlSPJ6prios tipes
dedados.

Ulillze VlIIilI.velsde sistema


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

I'

'j ; .Pt ".;!" :~}.1 ',,'; ,


;') ~ :':;':'~'-:~, :
l1:t~~~:" ~.'~~~ 9, ~ >"' !~ ; ~ ,J.l'!i..,:i.:P(~ 1~.:~\\;t:, .',

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

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

\.'1; :l . ~

,{,

,~ :

U~Vze as ~es do

Iormata9io grallca da
lnstrur;io wr i t e (as
sy mbo l , a s icon,
as 11 ne): lmprma
salde de Isla a manlpure I
, aidanospool.

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,

Defina umalabE IaIntema


Reconh~ 0 opefalb de
com ousom umallnhade
corpo delabltla It umze-e
para tester a oxlstllnclade
cabSl;alho;preencl\a essa
labelautilzaooo append
dados emuma labela
ehaves uma irmade
Inlemae compauuo
. conteudo deduas labelas
cab~lt1o Otl um e dreade
. Intemas quanta! Iguaklade.
Ifabalho explidla;
c:lasslnque labeln! kltltmas '
autilize a ad~!o as
text.

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

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


Passe paffimetros dlgiledo!
II nAo lIigilados para
sub-rolinas; passa
parilmetros 116lr ~S
Il'lllIleltas: pol' re'orAnda,
parvalore porvaklrIt
rosullado; pas~6 slrlngs de
campo e labelas tnlemas
para umasuIHotlnl.

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

Enlerda0 ele~o do! \IpOs


de dados nasalda: utlllza
as oP95es de)Ofma la~o

,
:t"

"

,Dla 19 .f

Entonda e utilizea Instr~o


in c 1ude; crIo grupes de
funyao e I'llOOJos de
fun ~D; dannapa!llmellos
deimponaljio, eXpDrlao

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.. "-- . .. ,,;. A_ : 4I'4a. ~ ......

~.

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

J>

, \S

._-----~

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

~~

...

~Y

Ken Greenwood
Consultor Editorial
Ferna ndo Barcellos Ximenes

KPMG Pea t Morw;c;k


Tradu'iao
Edson Furma nkiewicz

"Docware Trodu~6es recnrcos

'lle"o Site

et"

Aprenda

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

N OVIDAOE S. CAOA ST IIIO ,


I.A Nlf'AM ENTOS .
C.OMI"ItAS

~<".

i!b

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

ef!'

Comp leto e

,<>"

21 dias.

SAMS

(2
C'AM'PUS
;

00"""'
sams "

Tead'I Yourwlt ABA P/4 k'l 21 Days


Tradul<Jo .lIlofIz8da do idioma ilglts da edIlWAO publlca da ~
CopyrightCo' 1999 by Sarns

C 1999 , EdilQIlI Camp llS

Dedicatoria

s.ns

uea.

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


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

SIr reproduzidaou transmitida sejamquals rOtem os meles emprllgado5:

. eilltr6nicos. meclrleos, lotogri llcos, grava9!o au quaisque r Quiros.


Tode 0 esfon;a filllelte para romecer . ma is compl ela I al1equlIGa irllom'I.a,.ao.
COnk/do. l(!Ito,... o{.} aul or{lIs) nAo U$Uffi8m responsabilldade
pelos

resultados . US(! da. Inronna~ Iomecida. Reeomendamo. aos


Inlar. 'I11ormat;:4o antn de sua
UIiIIZa<,;:iO.

"d".

~Ionts

"""
ee.-_

Paoo Vrtmlel10

MatiziII
E_
df, AnO'adl
_
Flores
Rio TBXtQ
Reyjsa o G~b

Adriana Kramer
Deborah AOdIger
Pro/elaGraffeo
Edito ra Camp us uce.

A Qualid.dll da Inlormat;llo.
Rua Sell d. Slllembra. 111 - 16' andar
~AlodIlJ_iro RJ Bl1Isil
Tel_lone: (021) 509-5340 FAA{0211507t99,

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


1S8N 85-352-0396-8
(Edil<io orignt ISBN 0-&2-312 17-4).

CIP-Bra$LC.~.forIte.

SlndicaIO N~ ees &litore. de Uvros. RJ


G831 &

Gre_ood, Ken
Aprellda em 21 dias ASAP' .. I Ken Greenwood; tra~lo
Ed, Of1 Futmankiewicz..- RID de Jenllro : Cempus, 1999.
"

(Apr&nda)

Tradul<'ade: Sam's teach )'DUFSell A6AP/41o21 deys


ISBN a5-3S2..Q3;6.6
1. ABA P/4 (Ur.llu~lIfTl d. provamr.,iQ de c:omputador).
2. SAP PJ'J.3. Sislem. clentlllllswttdof.l TftUo. II S~ne.

98-1991

COO-COS.l
COU - SOO.92(ABAPr4)

99 00 01 02

;IBLIOTECAS OA PUCMINAS
~ELO HORIZONTE ,

f GlSTRO 22~.f2-~

Q'
,3.....;

IATA:2 / . / ?'L
ICERVO;Z3 0 2 9 /

'p , l

.. ..

__

Este liuro ededicado a meus pais.


Marian e Vern Greenw ood
Obrigado por tudo.

Dia 20

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

619

D ia 21

T elas de selecao

653

SEMA NA

3 Revisao

Introducao

. 68 7

Apen dice A Convencoes de atribuicao de nome .

689

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

697

Ind ice . . . . . .. . . . . .. . . . . . . . . .

Sumario geral

719

....... 1

Convencoes utilizadas neste livro

Visao geral. . . . . . .

. 5

SEMANA 1

Dia 1

0 ambiente de desenvolvimento

Objetivos do capitulo
que R!3 ?

7
7

Qual ea fun<;ao do R!3?

.
.
.

Por que voce precis a saber isso?


Descobrindo 0 R/ 3
.
Utilizando as areas conceituais do sistema R13
Descobrindo a interface com 0 usuario do RJ3
Enrendendo 0 Basis
.
Entendendo 0 clienre/servidor .
Arquitetura do sistema RJ3 . . .
o serv idor de apresentacao .
o servidor de aplicativo . . .
Descobrindo 0 servidor de banco de dad os
Configurando os servid ores .
Definindo urn sistema R/3
.
Definindo uma instdncia R/3
.
Arquiterura do servidor de aplicativo .
Enrendendo urn contexto do usuario
Enre ndendo uma area de rolagem ..
Entendendo os passos de dialogo ..
Entendendo 0 processarnento roll in/roll ou t .
Descobrindo como os dados sao enviados ao servidor de
apresentacao . . . . . . . . . . . . . . . . . . . . . . .
Entendendo as cornponentes de urn pro cesso de tra balho
Enrendendo os tipos de processo de trabalho . . . . . . .
Entendendo 0 cliente de logon . . . . . . . . . . . . . . .
Entendendo tabelas dependentes e independent es de cliente
U cilizando 0 Open SQL da SAP . . . . . . . . . . . . . .
Pcnabilidade . . . . . . . . . . . . . . . . . . . . . . .
Ucilizando buffer de dados no servidor de aplicativc .
Tratamento automdtico de cliente
Resurno . .
P&R . . .

Workshop
Teste .
Exercfcio 1

8
9

10
10
15

20
22

24
24
24
25
25
26
26
27
27

28
28
30
31
31
32
32
32
36
36
36
37
37
38
38
39

39

.. , ..
XII

"RENDA EM 21 DI AS ABAp/'
SU"'''DGERAl

Dia2

Seu primeiro programa em ABAP/4 . . . . .

Antes de prosseguir
.
Explorando 0 ambienee de desenvolvimento
Descobrindo tipos de prog rama
.
Definindo relatorios
.
Definindo programas de dialogo . .
Descobrindo componen res de rela ta rio
.
.
D escobrindo a ob jeco de tempo de execucac de prograrna
Inrroduzindc as conven co es de atribui'):ao de nome de programa
Criando seu primeiro programa . . .
Exp lorando 0 editor de codigo-fome .
.
Utilizando a Editor: Initial Screen
Explora ndo a funcionalidade do editor de codigo-fo nr e
Obten do ajuda . . . . . . . . . . . . . . . . . . . . . . . . .
Obtendo a ajuda F1
.
O bt endc a ajuda R/3 Libr ary
.
Localizando seus ob jeto s de desenvolvimento .
Introduzindo 0 R/3 Data Dictionary
.
Explo rando as tabelas e as esrrururas
.
Exibind o uma ta bela ou definicao de estrutura
Exibindo 05 dados na tabela . . .
De termin andc campos exibidos .
Entendendo a sintaxe do ABAP/4 . .
Introduzindo a instruci c se 1ect . . . . .
Entende ndo as areas de t rabalhos de tabela
"In trc duzindo a clausul a where
.
Trabalhando com variaveis de sistema
.
Utilizando 0 ope rado r de encadeamenro .
Utilizando a instrucio se l ect singl e . . .
Comentando 0 c6digo e a documen tacao formal
Resumo
.
P&R
.
Workshop ..
Teste . . .
Exercfcios do edito r . .
Exercfcios de prcgramacac

Dia3

o Data Dictionary, Parte 1 ..


O bjetivos do capitulo
.
Descobrindo nfveis de versac do R/3
.
Aprofundando-se no R/3 D ata Dictionary
Explorando os tipo s de tabelas em R/3 . .
Tabelas transparen tes . . . . . . . . . . .
Pools de eabela e tabelas de pool
.
Clusters de tabela e rabelas de cluster
.
Restri<;6es nas tabelas de pool e de cluster.

. 43
43

. Explorando componentes de tabela


.
Mantendo as caractertsticas tecnicas de s campos
.
Determinando quando crier ou reu rilizar dominie s e elementos
de dados
_. .
C onvencoes de atribuicac de nome para tab elas e seus componentes
C rian do uma rabela transparence e seus componentes
Abordagens para criar tabelas .
A tiva<;ao de objetos DDIC
.
Desccbrindo dominies
.
Descob rind c elemento s de clade s
Descobrindc tabelas transparentes .
M odificand o tabelas . . .
C opiando uma tabela
Excluindo uma tabela
Adicionando campos
Excluindo campos . .
Aleerando 0 ripe de dado ou comprimento de urn campo
Trabalhando com dados
.
Acessando a funcionalidade do navegador de dados de dentro
doODle
.
Utilinrios gerais de navegador de dados
.
Exibindo os dados utilizandc seu proprio programa de ABAP/4
Utilizando a ajuda Fl
Resume ..
P&R
.
.
W orkshop
Quescionario .
Exercfcio 1 . .
Exerdcio 2 . .

44

45
45
46
46
47
47
48
50
51
51

64
64
65
66

67
68
70
70
71
72
72

76
78
79
82
83
85
85
86
87
87
88
93

. . 95
95
95
96

97
97
98
99
. 101

Dia4

Data Dictionary, Parte 2 .

. . . . . . . .

Objetivos do capitulo . . . . . .
.
.
. D escobrindo as chaves estrangeiras
.
Acionando a verifica<;ao de chave estran geira
Requisites tecnicos para cria r uma chave estran geira
Criando uma chave est rangeira
.
Des cobrindo a coluna CheckTable
.
Dererminacio automdtica de campos de chave esr rangeira .
Relacionando as chaves esrrangeiras com a seta
parabaixo e a ajuda F4
.
Chaves estrangeiras e programas em lore
Chaves esrrangeiras cornpostas . ..
Entenda a cardinal;dade . . . . . . .
Tipo de campo de chave estrangeira
Chaves esrrange iras constantes e genericas
Chaves estrangeiras adaptadas . . . . . . .

102

104
. 104

105
105
106
. 107
.107

112
.116

. 124
. 124

125
126
127
127
128
128
. 131
. 135
. 135
. 139
. 139
. 140

. 140
141
141

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

. 152
154

. 156
161

. 163

XIII

XIV

SUMARIO GERAl

I APRENDA EM 21 DIAS ABAP"

Definindo uma tabela de valor


Campos especiais de T abela . .
Os campos monetarios
.
campos de qua nridade
.
As esrruturas no D ata Di ctionary
Enrendendo Includes . . . . .
Incluindo a mesma estrutura diversas vezes
Resumo . .
P&R . . .

164
168
168
. 170
171
.1 72
174
. 175
. 176
. 177
. 177
.177
178
. 178
178
179
.180
.180

as

Workshop
Teste .
Exercfcio
Exerclcio
Exercfcio
Exercfcio
Exercicio
Exercicio
Exercicic

Dia5

1
2
3
4
5
6
7 .

o Data Dictionary, Parte 3 .

.. ...

O bjetivcs do capftulc
.
Entendendo as Indices de tabela .
Exibindo indices
.
Consider acbes ao cria r urn Iodice
Criando urn Indi ce secundario . .
Excluin do urn Indice secun dsrio .
D etermin ando qu al Indice esu sendo uti lizado
'Exibindo configuracoes tecnicas
Classe de dados
'. . ':
Ca tegoria de taman hc
.
Exib indo 0 nu mero de extens6es alocadas para uma tabela .
Utilizacic de buffer em um a tabe1a
Res umo . .
P&R . . .

Workshop
Teste .
. Exerd cio 1

Dia 6

o Data Dictionary, Parte 4..

Objetivos do capi tulo


.
H ist6r ico auto mati co de tabela e documentos alterados
D ocumen tos alterados
.
Sabendo quand o ut ilizar hist 6rico automdtico de tabela
Resumindo as configuracoes tecnicas
versees ativas e revisadas
.
Vers6es adicion ais
.
D escartando uma verssc revisada

183
. 183
. 183
186
187
189
.190
191
193
. 193
195
. 195
. 196
.213
. 214
.214
.215
.2 15

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

.. 225
.226

U cilizando 0 utilicirio de banco de dad os


Verificacoes de coerencia
.
Exibindo 0 log de ativacao
.
Exibindo e mcdificando parametres de armazenamento
Excluindo e recriando as tabelas no ban co de dados
Resumo . ,
P&R . . .

.230

Workshop
Te ste .
Exercfcios 1

Dia 7

.\ .

Definindo dados no ABAP/ 4, Parte 1 . . . . .


Objetivos do capitulo
.
o buffer de programa e a area de rolage m
Elementos de sintaxe do ABAP /4
Definindo ob jeto s de dados .
Definindo literais .
Definindo variaveis
Resumo ..
P&R . . .

Workshop
Teste .
Exerctcio 1
SEMANA 1

Revisao

SEMANA 2

Visao geral

Dia 8

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

. 2 57

... .... ..

.259

Definindo dados no ABAP/4, Parte 2 . .

261

. 261
Objetivcs do capitulo
.
. 261
Definindo constantes
.
.262
Sintaxe da instrucao CONSTANTS
.263
Definindo strings de campo . . . . ,
.263
Urilizando a instrucao DATA para definir uma string de camp o .
Utilizando uma string de campo como uma varidvel do tipo char . .267
.268
Utilizando a instrucao TABLES para definir uma st ring de camp o
String de campo defi nida u tilizando TABLES in teragindo com
SELECT
. . 269
.270
Visibil idade de uma string de camp o definida uril izand o TABLES
.270
Definindo ripos
.
.270
Sintaxe para a inserucao TYPES
.272
Tipos estruturados
.
. 273
Grupos de ripe
.
.274
Criando urn grope de ripe
.275
Resume.
.276
P&R
.

XV

XVI

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

Workshop . .
Teste . . .
Exercfcic 1
Exercfcic 2

Dia 9

SUMARID GERAl I

At ribuicg es, conversoes e calculos

Objetivcs do capitulo
.
Antes de prosseguir
.
T rabalhando com variaveis de sistema
Localizando varidveis de sis tema
Instru coes de atrib uicio . . . . .
U tilizando a insrrucao cl ear
Utilizando a instrucao move

Utilizando a instrucdc move -correspondi ng


Executando cilculos .
Atribuis;ao dinamica
Resumo . .

P&R .. .
Workshop
Teste .
Exercfcio 1

Dia 10

Ins trucoes de controle comuns


Objetivos do capitulo .. .
Utilizando a instrucao if .
Sintaxecia instrucao if
Conversao de dados de literais durante comparacdes .
Exibindo convers6es
.
Utilizando el se t f
.
Utilizandc operadores de string de caractere

Utilizando a instrucao cas e .


Sineaxe cia instrucao cas e
Utilizando a instrucao exi t .
Sintaxe cia instructo exi t
Utilizando a instrucio do . .
Sintaxe cia instrucdo do .
Terminando urn loop sem fim
Utilizando a adic;ao varying .
Madificando valores dentro de do ... varyi ng/enddo
Urilizando a instruc;2.o whi 1e . .

Sintaxe da inspucac whil e . .


Utilizando a instruc;ao cont i nue .
Sineaxe da instrucac conti nue
Utilizando a insrrucdc check
.
Sintaxe da insrru cdc check
.
Camparando as instrucoes exit , continue e check

Especificacoes simples de comprimento e posici c cia instrucdo wri te . 341


Sintaxe para especificacoes simples de co rnprimemo e posica c
na instrucfo wri te .
. 341

. 277
. 277
. 277
. 277

Resumo . .

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

Workshop
Teste .
Exercfcio 1

Dia 11

Tabelas in ternas . . . . . ..

349
.349
.349
.350

Obierivos do capitulo
.
Princfpios da tabela interna
.
Definicao de urna tabela interna
Adicionando dad os em uma rabela interns util izando a instrucac
append
.
Lendo 'dados a partir de uma tabela interna
.
C lassificandc 0 ccnteodo de uma tabela intem a
Resumo . .

P&R .. .
Workshop
Teste .
Exercfcic 1

.. 31 5
.315
. 315
.316
.317
.319
. 320
.32 1
.326
.326
. 327
.327
. 328
. 328
.330
.332
. 334
. 336
. 336
.337
.338
.339
.340
.341

. 344
. 345
. 346
. 347
. 347

P&R .. .

Dia 12

Tabe1as internas avancadas, Parte 1


.
Objetivos de capitulo
.
Testando e modificando 0 conreudo da tabela inrerna
Obtendo informacoes sobre uma tabela interna .. ..
Determinando se uma tabela interna esta vazia ..
Deterrninando 0 numero de linhas ern uma tabela interne
Prograrna de exemplo que obtem as informacoes so bre uma

tabela intema

Copiando clades de uma tabela inrem a par.1 um a a utra . . _ . -: .


Copiando uma parte de uma tabela int ema
.
P rograma de exemplo que copia os dado s ~n tr e as tabelas internas
Cornparando 0 conreudo de duas tahelas internas
U tilizando a instrucl c edi tor-ca11 ..

Sintaxe da instru~i o edi tor-ca 11 .


Inserindo linhas em uma tabela interna
Sintaxe da instruc;ao insert ... .
Modificando as linha s em uma tabela intema
Sintaxe da instru ci o modify
.

Excluindo 0 conteudo da tabela interna


.
Utilizando free para excluir 0 conreudo da tabela interna .
conteudo da tabela interna .
.
Utiliaando a instruljao de1ete para excluir as linhas de uma
tabela interna
,
.
Utilizando r ef r esh-para excluir

Uriliaando c1 ear corn uma tabela interna

.353
. 359
. 376
. 382
. 383
.385
. 385
.385
387
. 387
. 388
.388
.389
. 389
.390
. 391
.392
.393
. 395
.395
; 395
. 397
.398
. 400
. 400
. 403
. 403
. 405
. 406
. 408

XV"

{VIII , APREHD A EM 21 DIAS ABAP / ~

SUMARlOGERAl t

C riando Iist as dos 10 melho res uti lizando append so rt ed by .


Sintaxe da instrucio append sorted by . . . . .
Preenchend o um a tabe la intema utilizandc co11ect
Sintaxe da ins tru cjio co 11 ect .
Resume . .
P&R
.

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

Dia 13

Tabelas internas avancadas, Parte 2 . . .


Objetivc s do capitulo

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

. 425
. 425

.
Preen ch end o uma tabe1a in terna a partir de uma tabela de banco
de dados
.
Selecionando rmiltiplas linhas diretam ente para uma tabela intern a
Adicionando Iinhas, uma por uma , utilizando se1ect
Resumindo se 1ect, tabelas in temas e eficiencia .. .
U rilizandc as tabelas de exemplo 1fal , 1fbi , 1f el e 1fe3
Process amento de interrupcao de con trole . . . .
Utilizando as in struc oes at fi r st eat l ast .
Utilizando as instru co es at new e at end of .
Ut ilizando a instrucdc sum
.
Llrilizand o a ins trucio on change of
Resumo
.
P&R
.

Workshop .
Teste . .
Exercfcio 1
Exercfcio 2

Dia 14

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

Objetivos do capitulo
.
Porrnatacao e comprimentos padra o
Co mprim enros padrao
Campos compactados
.
Eormatacao padrao
.
P ro grama de exemplo dem on st rand o a formatacao padrdo .
Adiljoes para a instrucao writ e
.

Ccmpreendendo a especificacdo de posicao


.
Compreendendo a especificacao de comprimento
Trabalhanclo com subcampos . .
Ucilizando a adifjao under . .
Utilizando a adi~ao 'noMgap . . .
Utilizando mascara s de edicac .
Utiliza..ndo as safdas de conv ersao
Trabalhand o com a formatacf c de data

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

Esp ecificando decimals e arr edondamento


Mudando 0 alinhame nto .
Resu mo . .
P&R ."..

Workshop
Teste .
E xer clcio 1

SEMANA 2 Revisao

D ia 15

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

".

. 4 95

SEMANA 3 Visao geral

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

. 461

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

.497

T ecnicas de Iormaracao, Parte 1

499

Objetivos do capitulo
.
. 499
Fo rmatacic grafica com a inscructo write
.
.499
Sint axe paraas adiljoes graficas para a inscrucao write
.500
Utilizando a adic;ao as symbol .
.
.500
Utilizando a adic;ao as i con
.
. 501
Utilizando a adifjao as 1; ne
.
. 503
Exibindo os sfmbclos, leones e caracreres 1i ne-drawdisp onjveis . . 506
Formatando e imprimindo relatorios
.
Contro lando 0 tamanho de pfgina
.
Criando cabecalhos e rodap es de p agina .
Res umo . .
P&R . . .

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

Workshop
Teste .
Exe rdcio 1 . .

D ia 16

Tecnicas de formatacao, Parte 2


O bje tivos do capitulo
.
Ins rrucoes de fcrmaracio de lista ..
U tilizando a instrucao new-l ; ne . . .
Utilizando a instrufjao newpage .
Utilizan do new-page pr i nt
U tilizando a inserucic s ki p .. .
Utilizando a instrucao back
Utilizando a ins rruefo posi t; on .
Utilizando a insrrucio se t blank 1i nes
Resu mo . .
P&R . ..

Workshop
Teste .
Exercfcic 1 . . .

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

k.IX

9
.622
.623

...
.. 559

Deixando uma sub-retina .


Dermmdo variaveis
Resumo ..
P&R . . .
Workshop
Teste .

18

nassanuo

Definindo as sub-retinas em U1U gropo de


Liberando um modulo de
. . . . . .
Testando um modulo de
.
Localizando modules de funcao existentes
Explorandoos cornponentes do seu grupe de Iuncao .
Localizando e corrigindo erros em modules de fun~ao
Configurando 0 valor de sy-subrc no retorno .
Utilizando a instrucao rai se
.
Utilizando a instrucao message. '0 rai si ng
Definindo excecoes na interface . . . . , ..
Inserindo automaticamente a instrucao ca 11 funct ion
Resumo
.

.568

.570
.570
.570

Exercicio 1 .
Mc)duLlaI'lzalGajO:

ng

. . . 561
.563
.568

571

oal~anletroS para

.571
.573
.576
.578

Passando parametros . . . . . . , . . . .
Criando parametros digitados . . . .
Controlando como os pararnetros sao passados ..
U tilizando as metodos de passagem de parametros
Passando tabelas intern as como parametros .
Definindo e chamando sub-retinas externas
. Resumo . .

.
P&R . . .
.
.
Workshop
Teste .
Exerclcio 1

.595
.595
.596
.596

eo'

.597
.598
.600
.601
.602
.604
.605
.605
.607
.608
.. 609

610

.611
.613

Workshop .
Teste ..
Exercicio 1

.592

597
U tilizando a instrucao include . . .
Sintaxe para a instru<sao include
Introduzindo modules de Iuncao
.
Entendende gropos de fun~ao
.
Acessando a biblioteca de fun~ao
Ativando urn modulo de fun<sao . . . . .
Definindo dados dentro de urn
Definindo a interface de modulo de
Passando parametres .,
U tilizando parametros dizi tacos e nao dizitaacs
Chamando modules de fun<$ao . . . . . .
para a instro~ao ca11 functi on .
Executando um modulo de fun<sao de exemplo
Criando urn m6dulo de
Resumo.
.. . . .

P&R

.583

ng .

.628
.629
1
.638
.640
.641

.641
.644
.648
,649
.650
.650
.651
,651
.651

Dia 21
Objetivos do capitulo . . . ' . . .
Programacao baseada em evento
U tilizando 0 evento i ni t i ali zat ion .
Utilizando 0 evento at sel ect i on-screen ..
Utilizando 0 evento at user-command ...
Validacao de dados utilizando chaves estrangeiras
Validacao de dados utilizando matchcodes
Sintaxe para utilizar um matchcode .
Formatando telas de selecao

U tilizando

se1ect i on-screen ..
Sintaxe para sel ecti on-screen block com frame.

Parametres de tela de selecao . . . . . . . . . .

A tela de selecao checkbox . . . . . . . . . . .


Sintaxe para se1ecti on-screen checkbox
A tela de selecao select -opt ion s .
A sintaxe para se1set-opt i ens
.
Botoes de tela de sele~io
.
A sintaxe para urn radi obutton group
Exernplo de programa de tela de

... . . .

.653
.653
.654
.655
. 6~5
,657
.659
.666
.666
.667
.667
,668
.670
.671
,672
.672

.673
.673

-.,.,
,~t..

IXXII

;il~\
v

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

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


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

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

P&R ...

Workshop
Teste .
Exercfcio 1

SEMANA 3 Revisao

687

Apendi ce A Convencoes de atribu i<;iio de nome ..


Convencoes de arribuicao de D.ome de programas
.
Co nvencoes para arribuic do de nomes a relat6rios
.
Convencoes para atribuicao de nomes a p rogramas de dialogo
Inrervalos de nomes de dientes
: . .
Apend ice B Resp ostas as perguntas dos teste s e exer cfcios
Indice

Introdu~ao

689
. 689
. 690
.691
. 691
697

719

"

Tendo ministrado 0 curso de certif icacao em ABAP/4 para centenas de


novatos e desenvolvedores experientes, tanto na SAP como em outras insritui<;oes, conbecc a ripe de prob lemas e perguntas que voce ted. quando aprender
essa linguagem poderosa. Incorporando neste livre todas as m elh ores tecnicas
que enconrrei, espero compartilhar essa mesma expe rien cia de aprendizagem
com voce tambem. Para esse [im, este Iivro e repleto de diagramas detalhados,
imagens de tela in reira, programas func ionais de exemplo, ap resentacoes (sereencams) narradas em ingles e procedimenros passo a passo . Toclos os prcgramas de exemplc tambem sao forne cidos no CD-ROM de modo que voce possa
earregar e executa-los em seu pr6prio sistema. Alem disso, as utilirarios que
Iorn eco para todas as minhas classes eseao incluidos no CD -RO M, mais alguns
novos que desenvolvi especificamente para as leitores deste livro.
o ABAP/4. apesar de toda sua simpiicidade na supe rflcie, euma comple- .
xa lingua gem. Par causa disso, 0 iniciante frequenremente fica desnorteado
com seu comportamento. Entendendo 0 [un cionamen to subliminarmente,
voce sed. capaz de dominar essa linguagem. Entendend o a como e 0 porque,
voce ira adquirir urn conhecimento que poucos tern nesse empolgante campo .
Este livre 0 guiara ao longo das ccmplexidades da linguagem e do
ambiente do ABA P/ 4 urn passo de cada vez. Depois de comp letar cadacapitulo ;
voce praticara atraves de exercrcios para reforcar seu aprendizado. As so lucoes
funcionais sao ofereeida s para todos os exercfcics no C D -ROM.
Como programador es experientes sabem, e as iniciantes logo saberao,
criar programas ABA P/4 freqUentemente significa de senvolver mais que apenas urn programa. Esse trabalho frequentemen te envolve a criacao de ob jeros
de desenvolvime nto para supo na- lo. Os procedimentos para criar esses objetos
sao todos explicados em detalhes ut ilizando uma Iista de passos numerados.
Cada passo contem a titulo das telas que voce encontra e as respostas esperadas
para cada coma ndo. Todos os procedimentos sao acompanhados po r uma
screencam que mostra exatamente como eles sao feito s. Agora. voce nao 56
pode aprender observando-me, como tambem pede adiantar e retroceder.
o enorme volume de informacces necessario para dominar 0 ABAP e
uma tare'[a desanimadora para a maioria das pessoa s, mas selecionei as informaco es mais vitais de que voce precisa e as dividi em 21 part es gerenciaveis.
Com 0 conhecimento que voce adquire utilizando este livre, voce sera capaz
de ramificar as tarefas complexas do ABAP/4 tendo urn entendimento solido
por base.
Se tiver problemas ou perguntas ao esrudar a assume, visite a site da
Internet http ://www.abap4.net. N esse site. po starei respostas a perguntas
[requentes (FAQ s) e pro blemas com que voce pode se deparar que nao foram
abordados aqui.

IIIll<OOU(AC

-Z

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

Espero que voce ache 0 esrud o deste livre tao agrsdfvel quanto achei
escreve-Io. Boa sorte! Eis 0 seu A BA P/4 em 21 dias!

k oove n<;6 e s ut ilizadas oeste lJeiVu[-"o'-

~m

o texro que voce digita e a texto qu e voce ve na tela aparecem em fon te


monoespacada

parect da com est a

para sirnular a forma que 0 texto assume na sua tela.


Variaveis e placeholders (palavras que espelham 0 que voc e realmente
digitara ) aparecem em fonre monoespacoda e em ttouco.
Cada capit ulo econcluldo com perguntas relativas ao assunto do dia, co m
respostas do autor. A maioria do s capftulos tambem inclui u ma se~ao de
exerc fcios e urn quesrionaric pr ojetados para refo rcar as conceit os do dia. (A s
respo stas aparecem no Apsndice B.)
Umo nota op resentc tnformccoe s i~teressontes relacion odos com
disccssco.

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

~o

Um oviso de cvldodc clertc poro urn possfvel problema e oferece


conselbos sobre como evlto-lo.

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

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

que

scmNUMlIltr...

Muitos dos proced imentos neste Ilvro sao demonstrodo s vtilizondo screencoms .
,.. As screencoms s60 como filrn es; mostrom umo sene de telcs, induindo pressionomentos de teclo e movimentos de mouse, com umo ncrrocdo "descrifivo em ingles.

NOYO ...

milo ,.

Termos novas s60 introduzidos utilizcndo a kane Novo Terma .

.,

ENlllOI~

o kane Entrada destoco 0 c6digo a ser digifod o .

Iliol ~

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

INAtIIE~

o leone Analise de signo 0

an alise do oute r, linha por linho.

'.

Sumcirio
.. . . . . .

Inrroducao
SEMANA 1

. . . 1

..

Visco geral . . . . . .

Dia 1

0 ambiente de desenvolvimento ..

. 7

D ia2

Seu primeiro programa em ABAP/4

43

Dia 3

143

Dia5

o Data Dictionary, Parte 1 .


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

Dia 6

o Data Dictionary, Parte 4 .

217

Dia 7

Definindo dados no ABAP/4, Parte 1 .

235

Dia4

95
183

SEMANA

1 Reviseo

.257

SEMANA

2 Visco geral

.259

Dia 8

Definindo dados no ABAP/4, Parte 2 .

261

Dia 9

Atribuicoes, conversoes e cilculos

279

Dia 10

Instrucoes de controle comuns

315

Dia 11

Tabelas internas

Dia 12

Tabelas internas avancadas, Parte 1

387

Dia 13

Tabelas internas avancadas , Parte 2

425

Dia 14

A instrucao write . .. .

461

349

SEMANA

2 Reviseo

. 495

SEMANA

3 Visco geral .

.499

Di a 15

Tecnicas de formatacao, Parte 1

499

D ia 16

Tecnicas de Iormatacao, Parte 2

527

D ia 17

Modularizacao: everitos e sub-rotinas .

545

Di a 18

Modularizacao: passando pariimetros para sub-rotinas

571

Dia 19

Modularizacao: modules de fun,ao, Parte 1 . . . . . .

597

SEMANA

Visao geral
Voce comeca a Semana 1 aprendendo sabre 0 ambiente do R/3,
incluindo 0 Basis, clienees de logon, 0 ABA P/4 Development Workbench e 0 Data Dictionary. Dentro do dicionario, voce cria tabelas
transparentes utilizando elementos de dados e dominios, adiciona chaves
extemas para validar entrada e prepara indice s secunddrios ou usa de
buffer para acelerar a acesso aos dad os. Voce tamb em aprende a criar
ajuda Fl e F4 para 0 usuario, corne ca a escr ever programas ABAP/4
simples e familiariza-se com 0 editor do ABAP/4 .
0 Dia 1, "0 amb ience de desenvolvimenro", explica 0 que e urn
sistema R/3 e sua interface com 0 usuario. Voce aprende sabre
a arqu irerura do sistema em que fun cio nam prograrnas no
ABAP/4.
. 0 Dia 2, "Seu primeiro programa ABAP/4", ensina a criar e
modificar programas ABAP/4 simples. Voce tambem exibe uma
tabela e seu conreudo utilizando 0 D ata Di cti onary, assim como
adiciona com entarios e documentacao aos seus programas.

0 Dia 3, ...0 Data Dictionary, Parte 1", descreve as diferencas


entre tab elas de poo l, tabela s tran sparentes e de cluster. Voce
tambem aprende a criar dominies, elem entos de dados e tabelas
transparentes no Data Dictionary.
No Dia 4, " 0 Data D icti onary, Parte 2", voce cria 'chaves
externas, cria e uriliza tabelas de text c , des creve a diferenca entre
uma estrutura e uma tabela e erie estrur uras no R/3 Data
Dictionary.
Durante 0 Dia 5, "0 Data Dictionary, Parte J", voce cria e
utiliza indic es secundarios apropriadamente, configura os
arributcs tecnico s para tabel as tran sparen tes e ajusra 0 uso de
buffer para tabelas,

I APRENDA EM 21 DIAS AiAP,.

No Di a 6. "0 Data Dic tionary, Parte 4". voce rrabalha com 0 utilitario
~e banco _de dados para execurar verifica~ao de coe renc ia, acess o de
mform a!Soes de tabelas especfficas de banco de dad
.
. d
. d
b
as, m serm 0 e
recnan 0 ta elas no banco de dados.
Depoi s do Dia 7, "De finindo dados no ABAP/ 4 Part I"
,
ente d I d .
,
e , VOce
n e as e ementos a smtaxe do ABAP/ 4 d
.
bi
d d
escreve 0 concerto de
o ~~;~s e dad~s e SU~ : isibilidade, utiliza Iiterais e entende como
co 1 lear ca a np o, definin do e utilizando constantes.

o ambiente de desenvolvimento
Qbjetjvos do capitul....
o'--

D epois de conduir este capitulo, voce devers ser capaz de responder as


seguintes perguntas:

II

0 que e u rn sistema R/3?

e uma inst dncia R/3?


que e 0 Basis?

0 que
0

Que plataformas 0 R/3 suporra?


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

o
1

que

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

'"

lA, .NT. .Dl

VOl

EN'

APRENDA EM21 DIAl ABAP/4

WF

r:w orkflow -

[luxe de trabalho)

Quando voce ve a pclovro SAP por si mesma, ela e pronunciodo


"es -ei-pl". Quando e combinodo com Dutro pclovro, e pronunciodo

IS (Industry Solutions -

sop, como em "teclo sap" . Voce nunce deve dizer "sop" quando se
referlr o empreso SAP. Sempre 0 pronuncie como "es-el-pl". Dlzer "sop"
eo mesmo que dizer lieu n60 sei node sabre SAP".

PM (Plant Maintenance - rnanutencao das insta~a~6es).

solucoes de industria)

HR (Human Resources - recursos humanos) .


QM (Quality Management -

Estes aplicativos sao chamados areas [uncionais, areas de aplicativo ou, as


vezes, modulesfuncionais do R/3. Todos Esses termos sao sinonimos .
Tradicionalmente , as estruturas empresariais desenvolvern urn conjunro
de apjicativos de processamentc de dado s avaliendo produ tos individuais e .
cornprando Essesprodutos separadamente de diversos fabri cantes de software.
Interfaces entre eles sao entsc necessarias . Por exemplo, 0 sistema de geren ciamemo de materiais precisara ser vinculado com as vendas e a dist ribuicao e
com as sistemas financeiros, e 0 sistema de luxo de trabalho precisari de uma
alimentacao a partir do sistema de HR. Uma quantidade.significativa de tempo
e dinheiro de IS e gasta na implementacao e manutencao dessas interfaces.
a BJ3 vern predefinido com os aplicativos empresariais basicos ne cessarios a maioria des grandes corporacoes, Esses aplicativo s coexistern em
urn ambiente homcgeneo. Eles sao projetados para funcionar uti lizando desde
urn unico banco de dados e urn conjunto (muito grande) de tabelas. Os
tamanhos de banco de dados de producao atuais variam de 12 gigabytes a
aproximadamente 3 terabytes. Cerca de 8.000 tabelas de banco de dados SaO
distribuidas com 0 produto R/3 pad rdo.

Demro do R/3 , hi urn ambience de tempo de execucao e urn conjunto


integrado de programas aplicativos escritos em 4GLdo SAP -ABAP/4. Esses
programas aplicarivos foram projetados para atender ao processamento de
clades necessaries para negocios muito grandes. R/3 e seu predecessor Rf2 sao
particularmente populares no setor industrial.
o RJ3 e 0 sist ema em que seus programas ABAP/4 serao executados. A
Figura 1.1 oferece uma representacfo 16gica disso.
Fig ur a

pp

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

inlerpretodo por
executovets Basis, que

por suo vez, s60


execurcccs no sistema
operocionol.

BAS IS

.
por que voce, preCIse

SISTEMA OPERACIONAl

E importante para

QU ai e a fLJo \;oO do R/3?


A unica utilidade de urn sistema RJ3 e of~recer urn conjunto im egrado compacto, de aplicativc s empresariais de grande escala. Alguns desses podem ser
vistas na parte superior da Figura 1.1. a conjuntc padrao de aplicativos
integrados com ceda sistema R;3 e 0 seguinte:
PP (Production Plan ning - planejamento da producao)
MM (Materia ls Management -

gerenciamentc de materiais)

SD (Sales and Distribution - vendas e disrr ibuicao)


FI (Financial Accounting CO (Controlling -

comabilidade financeira)

controladoria)

AM (Fixed Assets Management - gerenciamento de ativos fixos)


PS (Projec t System -

sistema de projetc)

gereneiamento da qualidade)

II

'

S al.l:He
~rU:IS
:ilS'-lO=

VOCe, como urn programador de ABAP / 4, saber p.or que


esses aplicativos sao todos escritos inteiramente em ABAP/ 4. Esses saO os
aplicativos que voce deve entender para ser urn born deserivolvedor de R/3.
Por exemplo, suponha que voce conhece ABAP/4 e tenha recebido a
incumbencia de escrever urn relat6rio financeiro que resum e debitos e crediccs
de cada ano fiscal para cada fabricante na empresa. Talvez voce saiba escrever
c6digo em ABAP. mas voce saberia como comecar a resolver essa tarefa?
au talvez seu trabalho exija urn novo desenvolvimemo em ABAP/4.
Voce e incumbido de projetar urn sistema que ofereca inf ormacoes de estoque
para potenciais compradores. Se voce njio conhece os sist emas de vendas e
financeiro e de disrribuicao, voce nac sabere se esta criando algo que ja. existe
em Rl3. Tampouco voce pode saber se ha tabelas do R/3 que ja contem dados
sernelhantes ou identicos aos ripos de dados que voce que r recuperar. Esses
aplicativos sao altamente integrados. Urn desenvolvedor que assume a abordagem "eu construirei minhas pr6prias tabelas e manterei minh as pr6prias capias
dos dados", pode logo descobrir que seus dados sao redu ndant es e devem ser
rotineiramente sincronizados com 0 resto do banco de dados. Ele construiu

fjguro 1 2

urn aplicativo que nao tira proveito da natureza altam ente inte grad a do ambi-

o kane do R/3 no

= ~ M.

6reo de trcbcfbc-

M encionei isso apenas porque muitos d esenv olvedores qu e des ejam


tomar-se consultores independent es pensam que aprender ABAP/4 erud o de
que eles precisam para se aperfeicoar no sisterna-RJ3. Ecertamente urn grande
infcio, mas e apenas 0 come co. A impcrrancia de treinarnento em uma are a
funcicnal pede ser supervisionada ou desc onhecida par esses interessadcs em
se tomar consultores p rofi cientes d e ABAP/ 4. Obviamente, muito de sse
ap rendizado pede e sera Ieiro na p ratica do rrabalho, En tretanto, espero ilustrar
o fate de que aprendera Iinguagem ABAP/4 esomente 0 comecc de uma longa
viagem dentro do SAP . Se deseja sec bern-sucedido co m o urn cons ul tor
independente, voce acabara precisand o adquirir urn con hecim en to funciona l
da "area.

lce ne

do R/3
Voce pode cprender sa bre as 6reos funcio nois lende 0 referencia o nline
do R/3 (cominho de menu do R/3 Help-> R/3 libra ry). Ela cc ntem
tutoriois e Inicrmccoes de todo s os areas funclc ncls . 5e voce ti ve r
ocesso 0 um sistema com dodos do IDES (Internat io na l Demo and
Education Sysfem), voce tcrnbem pcderc troba lhor co m as exerdcios
do R/3 library. Perc lnformocces sebre-e dispcn'btlidcde de cu rsos de
trelncm entc, co ntofe a SAP (ht tp ://www . s ap. com) o u la mbto n Col-

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

EJgurp

lege (http: / /www .1ambton.on .ca ).

Descobrind"'o!..Co"'-'R>L/.3..'--

Em urn amb ient e do Windows, voce eferua logon no R/3 escolhendo urn
caminho a partir do men u Iniciar, ou dando urn clique duple ern urn Icone R/3,
como 0 mosr rado a segu ir na Figura 1.2.
sistema R/3 solic itara a voc e urn ID de usuario e senha. A tela de logon
apa rece na Figura 1.3. Voce pr eench era esses dois campos eentao pre ssionaci
Enter.
o sistema R/3 entao exibire uma tela de direitos autorais e, quando voce
pressionar Enter, exibira 0 men u principal do R/3 como mos trado na F igura 1.4.

\
i

I!
I

lltiliza ndo as areas conceitlJa is do sistema R/3


A partir do menu principal, vo ce pode ir para tres areas conceituais no sistema
RJ3:
a area Applications

-j

.~.

a area Basis

Development Workbench

._ - -'--

,.. r
12

~1

APIENDA EM21 DIAS ASAP,.


Fig ura J 4

o menu princi pal


do R/3.

1~ R' 9 It
. . . .lcVo'c< - - - ., _ - . , _ _ 1_

:" 1

~.::r~-:+- ~

1,1,,1

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

;: _. -~r_

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

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

.'- ; " ' ".

,EI

ESE

LV

ITC

-'e'.. .1
Figura] 5

a cominho de menu
otuolizo urn
registro-mestre do
fobriconte (porte i ).

o Development Workbench e utilizadc para criar e testar progremas


ABAP/4. Como urn programador em ABAP / 4, voce gastara a maior parte do
seu tempo dentro do Workbench. Para acessar 0 Development Wo rkbench,
escolha 0 caminho de menu Tcols-c-Developrnent Workbench. Entretanto,
seu c6dig o devers ler ou atua lizar as clados de aplicativo e, portant o, sera
des tinado a to mar-se parte cia area de aplicativos. Com isso em mente, vamos
olhar cleona de uma area Applications prim eiro.
Para n osso exemp lo, imagine que voce' e urn atendente que trabalha em
urn departamento de ccntas a pOl gar. Urn fabricanre Iiga para dizer que 0
endereco dele mudou. Voce coloca urn marcador no artigo de revista que estav a
lendo (Visao criminologista dos problemas relacionados com a contabilidade
criatiua} e precede a atualizacao de endereco no sistema R/3. Primei ro, voce
alcanca 0 men u Accou nt s Payable escolhendo 0 caminho de menu Ac counting->Financial Accounring- S-Acccunts Payable [veja a Figura 1.5).
Voce entao cria a rransacic de manutencao de registro-mest re de urn
fabricante escolhendo 0 caminho de menu Master Records->Change (veja a
Fi gura 1.6). Voce vera a tela Change Vendor: Initial.
Na tela Init ial mostrada na Fi gura 1.7, digite 0 rrdmero do fabricante, fafSa
. uma marca de selecao na caixa de selecao Address e pressione a tecla Enter.
Voce entao veri a tela Address (veja a Figura 1.8).
Vo ce altera seu endereco e pressiona 0 botao Save {veja a Fi gura 1.9).
Ao salvar, 0 sistema retorna a voce Change Vendo r: Initial Screen. Ele
tambem exibe um a mensagem de exito dentro da barra de status posicionada
na part e inferior da t ela (veja a Figura 1.1 0).

.lit

Figur a]

A...--

o cominho de me:nlJ
otuolizoo
registro-mestre de um
fobriconle (p orte 2).

14

APREHDA EM21 DIAS ABAPI4


F igura 1 7

A lela Vendor Mosler


Update Trcnsocti on:
Initial.

Fig ura 1 9

@'.: sr
;_

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

[Ill

f! -'

G.- ' _-

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

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

.1.".. ,1

.,::,. _.',.

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

.. ' .. "

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

II"

",:

.-.~ ~i.--<' ; :. " l"'::-

[~;?:;;r~;t~:, '~ . ~I; ~'~~:: .:


.-c{t,~&t~~jTft ~.ft t.
i ~I~li~~;,d;_:: :j~ '5116' , -.f.': ,.~f;~61t;~%~;E~~::!:~;;;'~; ~' ' I . . .
;~~Z~{~~,i~~:$:~J ,. ~
-. :. "1 :, ~ :.'
.

TI1"h....

~, ..ht..

I"]

Io/fIlI';1

.-

.-,'

~.

tf~~~~~}~~~~~~f~;;{t:~}tii~~
E..i..Q..ura 1 8

figur "

A tela Vendor Moster


Update Tronsodion;'

A Initiol Screen

Address .

1 10

, ,"

~':

.1<,, ' >< '

' ~ ,.,.. ...

con ~rmo

q ue 0
o/leroljoo de e ndere'i0
fei feito.

Essa t ran sacao e urn exernplo de muitas das rransacoes no sistema Rl3.
A maioria das rransacoes de dados-mes tres tern aparencia e significado semelhan res.

Desco b rio do a interlace com


A Figura 1.11 mostra
de tela iden tificadas.

usu6rio do R/3

men u principal novamente com as areas importantes

16

APRENDA EM 21 DIAS ABAPi4


Quando voce ccloco a pante iro do mouse sab re quoiquer batao par
alguns segundos , 0 R/3 exlbe ume dice de ferromenta descrevendo
suo fun<;ao. No R/ 3 , isso se chama info rma<;ao rcptdo (quick info). Elo
contern uma breve descricoc do batao e a teclo de f un<;aootribuldo a

Cada t ela do R/3 contem estes elementos :

A barra de titulo: contern

titulo cia tela atua].

A barr~ de menu: a conteudo ciabarra de menu altera-se com cada tela.


P esquisando as menus dentro dele, vo ce pode descobrir todas ' as
fun~6es qu e sao p ossfveis na tela atua]. Os menus System e Help estao
presentes em cada tela e as itens de menu que eles contem nunca se
alte ram.
.

0 campo Command: aqui voce digita comandos a serem executados.


Por ex~mplo, voce po de efetuar 0 logoff digitando { nex nesse campo
e pressionando a teela Enter. A se<,;ao "Utilizando 0 campo Command" descreve esse campo em mais detalhe.

A, ~arra de ferramentas Standard: contem a campo Command e uma


sen e_de ~ot6e~, Eles nunca se alterariio na aparencia, posicao 0';
fun<,;ao, e estarao presentes em cada tela . Algumas podem estar acinzen radas por fora se sua funcionalidade estiver atualmente indis p onfvel..
A b~rra de ferramentas Application: altera -se com cada tela. Ex ibe as
botoes que dec a voce acesso rap ido a irens de me nu des sa tela . .

ele.

Menu de interface: permite que voce pers onalize as caracterfsticas da


interface com 0 usudrio, acesse a area de rrans fer encia do Windows e
gere imagens. A seC;ao a seguir abordara mais profundamente os
recursos do menu de in terface.
Area Screen: esta e a area grande no mei o da t ela que exibe os dados de
relat6rio ou a tela de urn programa de dialogo .
A barra de status: exibe mensagens, 0 ID de sistema, 0 numero de
sessj.o, 0 numero de cliente, 0 indicador do modo inserirl sob rescrever
e a hora! data atua].
Voce pode ativar e desativer a maioria dos elemento s da tela. Se sua tela
nao se parecer au se comportar como descrito neste capit u lo, siga as instrucoes
na proxima sec;ao para corrigi-la.

Traba lhando com


Figura "] 1 1

Barra de

titulo

Compo Command

menu de interface

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

e chamado menu de interface. Com ele, voce pode pe rsonalizar a interface com

Elementos imporfon tes


de emu tela do R/3.

o usudrio configurando cores de tela, tamanhos de Fonte e a co mportarnento


do cursor. Para realizar isso, de urn clique no le on e no canto superior direito
da janela do R/3 (veja a Figura 1.12) . Urn menu aparec era; de urn clique no
item de menu Options.
Figura 1 12

o menu de interface
com 0 item de menu
Options destocado.

Barra de status

18

01.

AI/EHDA EM 21 DIAl ABAP/.

De urn cliqu e na guia Ge neral e altere suas configuracoes para coinc idir
corn . as mcstradas na Figura 1.13. Pazendo isso, voce assegura que a sua
interfa ce com 0 usuririo ficard par ecida e se comportara como descrito ne ste
livre.
A tive todas as barras de [erramentas (fa~a um a mar ca de selecso em codas
elas) e configure Quick Info como Quick. Fac;a um a marea de selecao na
p rimeira e na ultima das caixas de selecao de mensagem como mosrr ado. De
urn clique em Apply.

JA Jll

:Dr

VD'

IEN- .J ~ ..-

Figura 1 14

~!i~i~J,

Calocondo marcas de
selelOoo no caixa de
selelOoa Co lors In

Lists.

.~"",~ ~~ .. ,,, . ~?,

Voce deve dar urn clique no batao Apply ou OK ant es de escother ovtrc
g uio. Se voce nc o fizer issc, sues clterc coes noo tenSa efe ito.

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

. De urn clique na guia Col ors In Lists e fac;a uma marea de selecao na caixa
de selecac Lines In Lists como m ostrado na Fi gura 1.14. De urn clique em OK
para reto rna r.

Exiba tod es as con figurac;6e s de tecto de func;ao (ou teclo ~ do ndo um


cliq ue com botc o dtreito do mouse em quolque r lugor do 6rea de
tela. lsso fundona e m todcs as telas. As tedos de func;ao 1 a 12 estoo
no linho supe rior dos tedos em seu tecla do. As teclcs de fum;ao 13 0
2 4 sa o essos mesmos tedos com a tedo Shiftpressionoda . Por exemp lo,
f13 e Shift+ F1. Pora as teclcs f de 25 a 36 , utilize Or! em vez de Shift.
Para 3 7 a 48 , utilize Alt. Pa ro a s teclos f maiores que 48, mo ntenha
pressionoda Or! e digite 0 nc mero do teclo no teclado nume rlco. Po r
exemplc , po ra F50 , monle nho pressio na do Ctrl e digile 50 no tedodo

F ig u ra 1 13

As opes de Gen eral


Inte rfa ce .

num erico.

Utiliza ndo

Comma nd Field

N a barra de [erramentas Standard est auma ar ea de entrada chamada Com mand


Field. Aqui voce pede inserir comandos de sistema. Para uma lists do s comandos que voce pede inserir aqui, coloqu e seu cursor no camp o de comand o e
pr essione a tecl a FI.
Este ca~po e mars frequentemente utili~do para uuciar uma nova

A opcac Lines In List s ativa ou desativa a exibicao de linh as verticals e

rran sacao.

horizontais em seu relarorio de saida. Essa opr;ao deve estar selecionada para
que voce veja 0 efeito das insrrucoes graficas de linha que voce codificard mais
tarde neste livre .

Por enqucnto, pense em um progromo como ume trcnsc ce o. O s do is


sa o grosseiromente eq uivole ntes. Quando voce inicic umo trc nsocc o,
voce est6 inician do urn progr oma .
Em vez de escolher urn co minho _de menu pora inicior uma tronsac;o~, voce
pe de inserir 0 c6d iga de tronsa c;oo no eampo de eam a ndo. Um c6d!go de
trc nsocoo e um c6digo de 3 ou 4 cc rocteres associodo o ume nc nsocc c - voce pad e
utiliz6. 1o para lnlcic r 0 tronsccoc sem unlucr um ca minho de men u. Ca do trc nsc coo te m
um c6 digo de tronsOf; do (tam bem den orninodo tcode).

NOYO ....

milo"

20

AP' ENDA EM 21 DIAS ABAPI4

Para localizar 0 c6digo pa ra qualqu er transacac , voce invoca a tr ansacl o


e enrao escolhe 0 caminh o de menu Sysrem- c-Status. A tela System:_Status
sera exibida.
codigo de transacao aparecera no campo Transaction.
Por exemplo, a partir do menu principal R/ 3, escolha 0 caminho de menu
A ccounting-c- Financial Accounting->Accoun ts Payab le. Vo ce vera a tela
Accounts Payable. A partir daqui, escolha 0 caminho de menu Ma ste r
Records- >Display. Voce vera a tela Syste m:_Status . Escolha 0 caminho de
menu Systern -c-Srarus . Aparecerf a tela System: _Status. N o campo T ransaction esti 0 codigo de transacio para essa tela: FK 03.
.
Agora que voce tern 0 c6digo de transaca o, pede iniciar essa transacao de
qualquer tela digitando 0 camp o de com ando I n seguido pelo codigo de
transacao.
Por exem plo, re tome ao men u principal (de urn clique no bo ta o Cancel
duas vezes e emac de u rn clique no bono Back). No campo de cornando digite
/ nfk 03, enrac de urn clique na tecla Enter. Voce imediatamenre vera a Display
Vendor: Ini tial Screen.

Em qua lquer tela, voce pode encontrar 0 c6diga de trcnsocco do


troosccec etuel. Pera fozer isso, escolho 0 cominho de menu
System- >Stotus.

Enten d en d o

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 "

--~-

Basis para prograrnas ABAP/4, enquanto a Windows para programas


Windows.
Basis oferece 0 ambiente de tempo de execucao para programas
ABAP /4 . Sem de, programas ABAP/4 nao pod em ser executados. Quando 0
operador inicia 0 R/3, voce pode cons iderar que ele est a iniciando 0 Basis. Ele e
uma colecsc de programas de sistema R/3 que apresen ta uma interlace a voce.
Utilizando essa interface a usuario pode iniciar programas ABAP /4.
Para instalar 0 Basis, urn instalador exe cut a 0 pro grama r3 in st no nfvel
do pr ompt de comando do sistem a operaeional. C om o na maio ria das in stala~6es, essa operacio erie uma esrrurura de diret6rios e copia urn conjumo de
executaveis para ela. Esses executaveis torn ado s juntos com o uma unidade
fo rm am 0 Basis.
Para inieiar 0 sistema R/3, 0 oper ador digita 0 comando starts ap. Os
executaveis d o Basis iniciam e permanecern sendo executado s, aceit ando solicitacoes do usuario para execur ar p rogramas ABAP/4.
Programas ABAP/ 4 sao executados dentro do ambienc e protetcr do
Basis; eles nao sao executaveis que fun ciona m no sistema operacional. Em ve z
disso, 0 Basis Ie 0 c6digo do ABAP/ 4 e os inte rp re ta com o instrucoes do
sistem a operacional.
as programas ABAP/4 nfo acessam fun~6e s de sistema operacional
diretamente. Eles u tiiizam fuDc;oes do Basis para execu rar E/S de arquivo e
exibem dados em janelas . Esse nfvel de iscla m entc do sistema operacional
permite que p rogramas AB AP/4 sejam adaptado s sem modificarao de qualquer
sistem a que suporte R;3 . Esse us o de buffer e. construldo diretamente na
pr6pria linguagem de ABAP/4 e etotalrnente transpar ente para 0 programador.
Basis torna os programas ABAP/4 portateis. As plataformas em que
o R;3 po d e ser executado sao mostradas na Tabela 1.1.

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

o antecessor do R/3 e RI2 . 0

R/2 e baseodo em mainframe e 0 SAP


cdcptou-o para 0 ombientecliente/servidor_Para fczerisso, 0 SAP criou
o Basis. Suo criol;oo permitiu que 0 c6digo em ABAP/4 existente
funcionosse em outros plctoformos.
Se voltar para a Fi gura 1.1, voce podera ver 0 Basis co locado entre 0
ABAP/4 e 0 sist ema operacional. 0 ABAP/ 4 DaO pode funcionar diretamenre
em urn sistema operacional. Ele exige urn conjunto de programa s (coletivam ente .chamad e Basis) pa ra carre gar, inrerprecar e usar buffer em sua entrada
e safda .

Sistema
operational

Hardwa re
suportado

Fro ntaEnd s
suportados

Ban cos d e dados


suportados

AIX SINIX
SOLARIS HPUX

IBMSNISUN

W;n 3.1 /95 / NT


OSF/ Mol;f

Inform lx-Online

D ;g~ol .UN IX

Bull

Windows NT

o Basis, sob certo aspecto, e como 0

ambience Windows. En quanro 0


Windows estive r sendo executado , ele ofereee urn amb ience em que os program as Windows po dem fu ncionar. Sem 0 Windows, 0 programa escrito para
o amb iente Windows nao pede ser executado.

Di gital HP

DB2 for AIX

OS/ 2

O rccle 7.1

Macintosh

ADABAS D

W;n 3. 1/ 95/NT

BulllZen;lh

OSF/ Mot;f

Orode 7.1
SQl Server 6.0

HP (Inlel) SNI

OS/2

ADABAS D

IBM(Intel)

Macintosh

AT&TCompoq

Diqltcl (Intel)
Dcto-Geoerc l

OS/400

AS/400

W;n95 OS/2

DB2/4 00

22

... <

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

Por exemplo , se voce escrevesse urn programs ABAP/ 4 n o Digital UNIX

com urn banco de dados Info rmix e uma interface OSF/Motif, esse mesmo
programa deveria sec executado sem modificartio em uma mdquina Windows
NT com urn banc o de dados Oracle e uma inte rface Windows 95. Ou, ele pode
sec executado em urn AS/400 com urn banco de dados DB2 utilizandc OS /2
com o front -end .
A SAP tambem oferece urn co njun to de [erramentas para adm inistrar 0
sistema do Basis. Essas ferramentas executam tarefas como monitoracao do
desempenho do sistema, alem d a con figuracso e manutencio de sistema. Para

acessar as [erramentas de administracf c do Basis a part ir do menu principal,


escolha 0 caminho To ols-> Adm inistration.
Eis alguns exemplos de [erramentas de adminis n-aci o do Basis:
Para ver urn a lista dos servidores atualme nt e sendo executados em seu
sistema R/ 3, escolha 0 caminh o de menu Tools->Administration,
Monito ring-> Syst em Moniroring-> Servers .
Para visualizar 0 log de sistema atual, escolha Tools-> Administration.
Monitoring->System Log.
Para ver a esratisti ca de desempenho de sist ema, execu te a transacao

,,03 (digite 105103 em Co mmand Field), escolha This Application


Server, Last Minute Load e analise os ultimos 15 minutes. Pressione
o boeao Dialog na par te inferior da tela e voce vera 0 tempo medic de
resposta de usuario para os ultim os 15 minutes (veja em A v , Response

Time).

o Basis foi p rcj etado para ser executadc em uma configuracac clien-

chama uma sub -retina transfere 0 controle para a sub-r otina e nao pode ser
executado em qualquer processamento at e a sub-retina retoma r 0 controle.
Os programas cliente e servidor sao processos independen tes. Se 0 cliente
envia uma soliciracao ao servidor, ele eSta livre para executar outre trabaiho
enquanto espera a respcsta.
A Figura 1.16 mostra as rres configuracoes cliente/servidor padrao . 0
R/ 3 pod e ser modelado para trabalhar em qualqu er uma dessas configuracoes.
Quando 0 programa cliente e 0 servid or sao execu tados no rnesmo
cornpu tador, a cccfiguracao e referida como cliente/servido r em urna camada.
[Uma camada (tier) e 0 limite entre dois computadores.] Quando des sao
execurados em cornputadores diferentes, a configuracao e referida como eliente/ servidor em duas camadas .
Urn programa pode func ionar como urn cliente e como urn servidor, se
ele tanto solicita informacoes como responde as solicitac oes. Quando voce tern
treS programas em comunicaclo, como e mo strado na Figu ra 1.16. a configuraliaO e chamada client e/ servidor em tres cam adas.
A configuracao cliente/ servidor permite que 0 sistema R/3 divida sua
c.arga com mul tiple s computadores. 1 550 oferece ao cliente a capacidade de
ajustar a escala ao poder de processamento do sist ema para cima ou para baixo
simplesmente adicionando Dutro computador a u ma configuracio existence ,
em vez de substiruir urn {mica computador que executa todo 0 processamento,
como ocorre no mundo des mainframe s.
F igmn 1 16

ConfjgLlro~6es
~

NOVO ....
llRIIO

outre [ve]o

Solicitocc c de

Progrom o

die nte

Resposto

dLios e Ires comodos.

s..:.dot ... d.... CI>IftC>do>


DDis , ompvIOllo,u

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

inform oc;60

c1iente/servidor.
Progromo 1

....... .....

Figure 1.15).

AeSSEmOo do sistema

Limo.

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

flgu rg 1 1 5

dienle/servidor em

... _e-acIo

te/servido r.

Entenderidc.c.cliente/serxidcr

23

DlH.O....BIEHlE DEDESENVDLVIMENTD

Progro mo 2
Progromo
servidor

Aqui vemos 0 Programa 1 solicitando algumas informacoes ao Programa


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

..f=f-l-I-- -} -

24

Arqu itetura dQ sistema R/3

0 mimero de process os e seus tipos

A SAP baseou a arquitetura do R/ 3 em urn modele de cliente/servidor em tres


camadas. A'arquiterura de sistema R/3 aparece na Figura 1.17.

~rvidor

de opresentoc;60

A quanridade de memoria que cada processo pe de utilizar


0 perfodo de tempo em qu e urn usuario pode ficar inativo antes de
ser automaticamente desconectado

servidor de opresento~ oo
reo lmente um progroma identificodo como
sapgui . exe. Normolmente, elee insto lodoem umoestccsc de trobolhode uscorio.
Para inicc-lo, a usu6rio d6 urn d ique duple em urnleone no area de trobalho ou escolhe um
caminho de menu. Quando lnkio do, a servidor de opresenfoc;cio exibe a s me nus do R/3
dentro de ume janela. Esso jonelo e comumente coohecidc como SAPGUI, ou como interface
com a usu6rio (au simplesmenfe, interface). A interfoce oceifo entrada do usvoric no forma
de pressionomentos de tecla, cliques de mouse e teclos de func;oo e envlo esscs sclicltccoes
00 servidor de aplicotivopare serem processados. 0 servidorde oplicotivo envio as resultados
de volta 0 SAPGUI que entoc fonnata a soido a fim de exibi-Ia para 0 usu6rio.

NOVO ...

TEmO "

1..

D1A1:0 AMBI'tHTE lit DEStft10lVI/IIl::NTL

APlEHOA EM 21 DiAl ABA'"

servidor de aplicarivo existe para interpretar programas ABAP/4, e eles


somente 5[0 executados nesse servidor - os programas nao fun cionam no
servidor de apresentacso. Urn programa ABAP/4 pede iniciar urn executive!
no servidor de apresentacao, mas urn prograrna AB AP/4 nao p ode ser execurado nele.
Se seu prograrna ABAP/4 solicirar inf ormacce s do banco de dados,
servidor de aplicarivo forma tara a solicitacsc e a enviard ~o servidor de banco
de dados.

Descobrindo

servido r d e ponco de dodos

F i g u ra] 17

0 servidor de banco de dodos e um con junto de execvtovels que oceitc


solicltocoes de banco de dodos do servldor de op licotivo. Essos scllcttccces soo
passodos pora 0 RDBMS (Relation Database Management System). 0 RDBMS envlc os
dodos de volta 00 servidor de banco de do dos , que ente o posse as iniormccces
nova mente 00 servidor de c pllcotivc. 0 servidor de c piiccttvo pa r suo vez transfere essos
inform e~ 6e s pore se u progromo ABAP/4.

KOVO....

A orquiteturo do'

sistema R/3.

Serwdor de
gptl!5 entgO

ServiOor de beeee de dodc

mwo ,.

Hoinormalmente urn computador especjfico dedicadc a abri gar 0 servidor


de banco de dados; e 0 RDBMS pode ser executado nesse computador tam bem,
ou pode ser instalado em seu proprio computador.

Configu rand o os servj do re s


Durante a instalacao, os servido res podem ser configurados de qu atro maneiras
(veja a Figura 1.18) .
DB
Figura] ] 8

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

o servidor de oplicotjvo
NOYO '"

Urn servidor de aplicativo urn conjunto de executoveis que interpreta ccletivomente os progrom os ABM/4 e gerendo a entrada e 0 sc fdo para eles.
Qua ndo urn servidor de cplicctivc e inicioda, todos esses execvtovels inicicrn 00 mesrno
tempo. Quando um servidor de cplicctivo e interrompido, tadas eles porarn juntos. 0
ncrnerc de precesses que sao inidodos quando voce exlbe 0 servidor de ap licotivo e
definido em urn vnico orquivo de confjg urc~ao chomodo perfil do servidor de ap!icofivo.

milD r

Cada servidor de aplicativo tern urn perfil que especifica suas caractertsticas quando ele inicia e enquantc esta sendo executado. Por exernplc, urn perfil
de aplicativo servidor especifica:

26

--

-- - DIAL 0 AMBIENTt DEDESEHVOlVIMENTO

I "RENDA EM 21 nus ABAP/4

Em uma configuracao clienre/servidor em tres cam adas, todos a s servidores de apresenracio, de aplicativos e de banc o de clados sao executados em
mdqu inas separadas. Essa e a configuracao mais comum para sistemas grand es
e e comum na ar ea de pro ducao.
Na dist ribuicao cia configu raclo de apresentacao, 0 aplicativo e a s servi dores de banco de clados sao combinadas em urn co mp utado r e os servidores
de apresenracao sao executados separadam ente. 1550 e utilizado para sistema s
men ores e {requentemente e visro em urn sistem a de desenvolvimento.
Na configuracac cliente/servidor em duas camadas, as servidores de
apresentacao e de aplicativo sao com binada s e 0 servido r de banco de dados e
separado. Essa configuracac e uti lizad a em conjuncao com outros servidores
de aplicativo. Ela eaplicada para urn servidor em lote quando este esta separado
dos servidores online. Uma SAPGUI e instalada nele para oferecer controle

local.

Arquitetura do servidor de.npllcntiza.;

NOVO....

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

URMO

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

Definlndc

uma instfmcia R/3

NOYO ~

Quendo voce ovvir o!guem utlllzcr 0 po lovro insfdncia , no maio rio de vexes
essa pessoo estero se referinda 0 um servldor de ap Jicotivo. 0 le rma instdnci o
sin6nima de servidor de apficatiYo .

TtRMO ~

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

servidor de aplicarivo e servidor de banco de dado~ residem na mesma maquina,


o termo instdncia central refere-se ao computado r em que os dois residem.

a s componentes de urn serv idor de aplicativo saO mostrados na Fi gura 1.19.

Ela con sisce em urn dispatcher e multiples p roc essos de trab alho.
T odas as solicitacoes provenientes de servidores de apresen taci o sao
dir igidas prim eiro eo di spatcher. 0 dispatc her grava-as prim eiro na camada do
disp atc her. 0 dispatcher extrai as soliciracces cia camadautilizando 0 algoritmo
primeiro a entrar, primeiro a sair . Cada solicicacao e entao alocada para 0
primeiro pr oces so de trabalho disponivel. Urn proc esso de trabalho trata uma
solicitacao por vez.
Do servidor de cplicotivo
_

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

A ofquiteturo do
servidorde opJicotivo.

1
I
I
I
I
I

Definindo um sistema R/3


A definicjo mais simples de urn sistema R/3 e <Cum banco de dedos", Em urn
sistem a R/ 3, ha somente urn banco de dados. Para expandir a definicao, 0 R/3
e considerado como sen do to dos as cornponentes anexados a esse primeiro
banco de dedos. Urn sistema RJ3 e compos to de urn banco de dados servidor
qu e acessa urn unico banco de dados, urn au mais serv idores de aplicativo e urn
ou rnais servidores de apresentacao. P or definicao, urn sistema R/3 consiste em
tcdos os com ponentes ane xados a urn banco de dados . T en do urn banco de
clados , voce tern urn sist ema. Se tern urn sistema, voce tern urn banco de dados.
Durante uma imp lementacao, ha normalm ente urn sistema (ou urn ban co de
dados) atr ibufdo para 0 desenvolvimento, urn ou mais sistemas designados para
t estes e urn at ribuido para a producao.

27

Em te rm os mais gerai s, uma instdncia eurn seruidor. UIDa in stan cia eurn
con junto de process os do R/3 que oferecem servic e s ao sist ema R/3.

Figura 1 19

Quando todo s as servidores sao combinadas em uma unica maquina,


voce tern um a configuracao central. Isso raramente evisto porque des creve urn
sistema R/3 independent e com apenas urn unicc usuario .

I
I

I
I
I

Area de rolagem
Mem6rio estel'1dido

I
I

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

Perc a servldor de banco de dodos

P ara executar qualquer processamento para uma solicitacio do usuario,


urn processo de trabalho precise enderecar duas areas espe ciais da memoria: 0
con texte do usuario e a area de rolagem do pro grama . 0 contexte do usuario
euma area da memoria que contem as inforrnaco es sobre 0 usue rio, e a area de
ro lagem e uma area de memoria que conc ern as infor rnacoes sobre a execucjo
des program as.
.

Entendendo um contexto do \lSl!orio


NOYO

r...

URMO ~

Um contexto do usu6rio memo ria alo ca do que co ntem as corcctertstlccs de


urn usucrtc que estc con ecto do 00 sistema R/3. Ele ormozeno as lnformccoes

necessa ries para 0 R/3 sobre a usu6rio, co mo :

~r

,..,

- --- - --- __

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

I,

~~

~~

...

~-- ~~~

DIA I: 0AMBIflffi. DE OEStNVOlYIMENTO

28

J------.-:-----~==:::=.-

APIEHDA EM 21 DIAS ABAP/4

Um posse de di61ogo

Fjgurg 1 20

As configuracoes atuais do usudrio

0 no me dos programas que

Pcsscr do Initiol

FK02

Screen parc 0 Address

As autorizacces do usu aric


0

Quando urn usuario eferu a lo go n, u rn contexte do usuario ealocado para


esse logon. Q uando esse u suario efet ua a logoff, 0 contexte e liberaclo. Ele e
uti lizado durante 0 processamento de urn programa e sua importancia edescrita
em mais detalhes nas secoes a seguir.

Foboccnte 0

~yo ....

pare 0

-,

Processo de Iroholho

-+--+~

Tanto a area de ro lage m como 0 contexte do usuario representam urn


papel importance no processamento de passos de urn dialogo.

Entendendo os passos de dialogo


Um posso de die /ogo

e quolque r clterocc o de tela [vejc 0

\..
\

'

'1..05 I
,

05 consultores de Basis costuma m vscr

lEma r

lnklo do
po sso de
, di6lo go

0 pon teiro d o programa arual

tel utlllzodo.

c:::l

Dispatcher

O s valor es das varieveis

0 termc 6reo de rolcq em


referindo -se a todcs a s 6rea s de rologem pa ra um usu6rio ou oinda
todos os 6reas de rologem em um servidcr de cpllcof ivc. Normalm ente,
voce pode de duzir 0 significad o prete ndido a po rtirdo cont exte em qu e

=
=
= ==

Urno orec de rolcgem e 0 mem6rio que e c locodo po r um pro cesso de trobolho


pora umc instc ncio de um progromo. Elo ormozeno informoc;6es necessc rics
R/3 sabre 0 execvcco do prog romo , como;

T o da vez que urn usuari o inicia urn programa, urna area de ro lagem e
criada para essa instancia do p rograma . Se doi s usuaries utilizarem 0 mesmc
programa simultaneamente, existirao duas areas de rolagem - uma para cada
usuario . A area de rolagem e lib erada quando 0 programa e encerrado.

NOVO ..

As alocacoes de m emoria dina-mica

Enderecc

ADO

c1 Endereco

Entendendo uma area de rolagem


ftRl!O ~

Address Screen

lnif.o IScree n

Screen pode ser .


con siderodo um posso
de die/ogo.

usuario esti atualmente utilizando

29

\
i

Urn passo de didlcgo e 0 proces sarnento nec essario para sair de uma ~e.la
pan a proxima. Ele inclui rode 0 processamento que ocorre de: d.equ e 0 us~a.no
faz uma soliciracao ate . e incluindo, 0 processarnento n.ecessano para exibir a
.p r6xima tela. Por exemplo, quando 0 usuario dol. urn ch~ue DOl tecla Enter n o
Change Vendor: I nitial Scre en, ele in icia urn passe de dialogo e a amp~lheta
apa rece , impedindo out ra entrada . 0 p rograrna sapmf02k recupera as infermacoes do fabricante e as exib e na t ela C hange Vendor: Addr.ess, e.a ~mpulheta
desaparece . 1 550 marca 0 fim do passe de dialogo e agora 0 usuano e capaz de
faz.er o utra solicitacao .
Ha quatro maneiras de

usuario poder iniciar urn passo de d ialcgo. A

partir do SAPGUI:
Pressionar Enter.

Figura 1.20) .

Um posse de di610ga utilizodc pelcs ccnsultores de Basis como umo


vnidode de medida pa ra 0 tempo de respcstc do sistema.

Pressionar uma te cla de funr;ao .

Dar urn clique em urn bono na te la.


Escolher urn item de m enu.
Eim port ante para 0 prog ramador de ABAP/4 conhecer sa bre pass os de
dialcgo porque eles formam uma un idade discrera de processamento para um

programa ABAP/4.

---

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

II

30

OIA 1: 0AMBIEHTE DE DESENVOLVIMENTO

I 'PREND' EM 21 DIAS 'UPI'

Entendendo

processamento roll in/roll out

NOYO Ilrrr..

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

lERMO

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

31

Os progro ma s ABM'/ 4 noo tern a copoddode de intercept or mu itos


eventcs com uns no Windows . Os eventos que gerom rnuitos me nsagens
co mo pressiono mento de urno teclc , chero cees de Ieee e movime ntos
de mo use, noo sao pc ssodcs para prog romos AW/4. Com o um
resultodo, n60 no como executo rolguma s func;6es que sao encontro da s
em o utros prog romos Windows. Pe r exernplo, no ABM/4 , voce n60
pode volidor a ccnteudo de urn co mpo quan do 0 usu6rio pressiono a
tedo Tab . Em vez disso, voce de ve espe ror 0 usu6 rio lnicicr outre posso
d o di6logo.

contexte do usu6rio

safrern roll in pora 0 processo de trobolho. No lim do posse de di6logo, eles sofrem roll
out. Isso e i1ustrado no Figura 1.2 1.
Fi g u r a 1 21

o processo menlo roll


in/roll out.

Descobrindo co mo os do do s sco enviados


ao servidor de aprese nto ~o o
As mensagens trocadas entre 0 servidor de apr esentacjio e 0 servid~r de
aplicativo estao em
[ormato SAP proprietdrio. 0 SAPGUI acena ~s
informacoes de tela enviadas do servidor de aplicativo e [ormatadas a~ropn
adamente para a plataforma em que esta send o executado. Isso permlte ~ue
diferenees plataformas de hardware do usu ario final conectem~se a urn unic o
servidor de aplicativo. Par exemplo, urn PC OS/2 e urn PC Wmdows p odem
cc nectar-se ao m esm o servidor de aplicarivo ao mesmo tempo.

urn

.,.

~~

Durante 0 roll in, as ponteiros para a area de rolagem e 0 contexte do


usuario sao ocupados no processo de trabalho. 1550 permite ao processo de
trabalho acessar os dados nessas areas e entao executar processamento para esse
usuario e tal programa. 0 processamento continua ate 0 programa enviar uma
tela ao usuario. Nesse memento, as duas areas sofrem roll out. 0 roll out
invalida as pocteircs e desassocia essas areas do processo de trabalho. Esse
p rocesso de trabalbo agora esta livre para execurar processamento para ourra
solicitacio. 0 programa esta no memento apenas ocupando memoria e nac
consome nada da C PU. 0 usudrio ve a tela que foi enviada e logo enviara ourra
solicieacsc.
Quando a proxima soliciracjo e enviada do usuario para con tinuar 0
processamento, 0 dispatc her aloca essa solicitacao para 0 primeiro processo de
trabalho disponivel. Este pode ser 0 mesmo ou urn processo de trabalho
diferente. 0 contexte do ususrio e a area de rolagem para esse programa
novamente sofrem roll in para 0 pro cesso de trabalho e 0 processamento
reassume do ponto em que foi deixado. 0 processamento continua at~ a
proxima tela ser moserada, ou ate 0 programa term iner. Se outra tela for enviada,
as areas novamente sofrem roll out. Quando 0 programa termina, a area de
rolagem e liberada. 0 contexte do usudrio permanece alocad o ate 0 usuari o
efetuar logoff.
Num sistema com muitos usudrios utilizando mu ito s prcgramas, apenas
alguns desses programas estarao ativos nos pro cessos de trabalho de cada vez ,
Quando eles nso estiverem ocupando urn processo de tra balh o, des sofrem
roll OUt para a mem6ria estendida e apenas ocupam a RAM. Isso poupa a CPU
e permite ao sistema R/3 alcancar urn alto throughput de transacio.

Entendendo os com po ne ntes de urn processo


de trqbolho
Cada processo de trabalho tern quatro componen tes (veja a Figura 1.22).
FigurA 1 22

Os componentes de
um proceno de

trabo/ho.

Interprefodor do ABAP/4
Handler
de to refo

Interpretodor de telo
Interface de bonco de dodos

Cada processo de trabalho

e composto do seguinte:

Um handler de tarefa
U rn interpretado r de ABAP/4
Urn interpretador de tela
U rna interface de banco de dado s
Todas as soliciracces passam pelc handler de tarefa , que entao afunila a
solicieacio para a parte apropriada do proce sso de tr abalho.
interpretadores interprerarn 0 codig o do ABAP / 4. Note que hi dois
interpretadores: 0 inrerpretador do ABAP/4 e 0 int erpr etador de tela'. Hi

as

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

r------------~--

32

'W .....--

D~ h 0U BiEIffi DEDESENVDl~M", O

APRENDA EM 71 DIAS ABAP/4

realmente d uas varialjoes de ABAP/4. Urna e a linguage m de p rocessamento


de dados do ABAP/4 completamente desenvolvida e a out ra e u ma lingu agem
muito especializada de processamemo de tela. Cada uma delas e processada
pelo seu pro prio interpretador.
A inter face de banco de clades trata 0 trabalha de comunicacdo com 0
banco de dado s.

b"!P

Fjgura 1 23

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

Entendendo os tipos de processo de trabalbo


Hoi sere tipos de processo de trabalbo. Cada urn deles trata urn tipo de
ripe de processo de trabalho e 0 5 tip os de soliciracso
solic iracao especlfica.
que ele trar a sao mostrados na Tabela 1.2.

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


trotom

Tipo de processo

Tipo de solicitooo de trabalho

o IDio log)

Scllcltccoes de di6!ogo

V (Update)

Sclicltccoes para ctuclucr dados no ban co de dodos

B (Background)

Trobolho s de segundo plano

S (Spool)

Imprime so licitac;ees de spool

Fjg ura 1 2 4

Esto lobelo ~

E (Enqueue)

Solicitoc;5es de bloqueio 16gico

M (Message)

Roteio as men sagens entre os servidores de op licotivo den tro

depen dente de
di ente porque 0

de urn sistema R/3

primejro ccmpc

G (Ga teway)

Entendendo

do tipo COO.

Afunila a s me nsagens dentro e fora do sistema R/3

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

Entendendo tobelos dependentes e independentes


de diente
H i da is tipos de tabelas em urn banco de dados do R/3: dependentet de cliente
e independentes de cliente. Um a rabeh e dependente se 0 primeiro campo fo r
do tip o Cl NT. 0 comp rimen tc sempre sera 3 e por convencao, esse cam po
sempre e identi ficadc como ma ndt . Se 0 primeiro campo nao for do tipo ClNT,
a ta bela eindependen te de cliente. Urn exemplo de uma tabela dependente de
cliente e. mos trada na Figura 1.24. A Figura 1.25 e urn exemplo de uma tabela
independente de clien te.

l' -'

g-"

~ _ ,", - . ~

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

I.

33

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

34

":"\

r>

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

--- _ --

;W _

-w

.,....

APRENOA EM 21 DIAl ABAP"

OIA1:0 AMBJENTE DEDESENVOlVIMHHO

laura 1 25
Esto tobe/o e

mecan ismo de clience de logon divide as linh as dentro de uma tabe1a


de dep endenc ia de clien te em grupos distintos. Pa ra acessar urn conjunto
diferenre de da do s, 0 usuerio efet ua lo gon e especifica urn nume ro diferente de'
cliente.

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

e do tipo

__

CLNT.

Os registros-mestres de usu6rio (co ntendo IDs de usu6rio do R/3) sao


de pendentes de cliente. Portonto , pa ra go nhor oce sso a um c1iente, 0
ad minisirodo r de seg uron<;o deve crie r um novo ID de vsvcrio para
voce de ntro desse cllente .

A Figura 1.26 mostra como este camp o afeta 0 usuario.


Na Figura 1.26, 0 usuari o efetua lo gon para 0 cliente 800 e executa 0
programa mostrado. Este programa seleciona linha s de tabela Hal e emite
1fal -l; f nr. Quando esse programa e executado, so men te dua s linhas sao
selecionadas: apenas nos casas onde mandt e igual a 800. 1550 acontece autom aticam ente porqu e 0 primeiro campo na tabela ede tipo CLNT. Hoi cinco linhas
na tabela, mas 0 programa apenas emi te essas linhas onde mandt e igual a 800.
Se 0 usuario est iver para efetuar logon para 0 cliente 700 e executar 0 mesmo
programs, tr es linhas de dados seriam localizadas e seriam emitidas. Se 0 usuario
estiver para efet uar logon para 0 eIiente 900, apena s uma linh a de dado s seria
localizada.
Figura 1 26

o efeito do
dependencio de
cliente.

o ulv6rio

l ela Rl3 log on

elelllO logon e
Clienle

[]QQ]

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

Jcbe lc lFAt

MANDT
700

700
80
800

'
@]
Sardo

:
:

100 :
101 :

lIFNR
I
11

12

100

1 1

Os de senvolvedores e a s testers u tiliz am 0 mec anismo de cliente de logon


para criar e acessa r multiples conjunros in dependentes de dados dentro de uma
unica tabela .
Por exempl o, suponh a que da is tfp icos programadores anti-sociais estao
trabalhan do em urn aprimorament o do sistema de cob ranca. Romeu esta
modificando a rransacao de atualizacao e J ul ieta est a criando urn novo re latorio
para acompanhar as mcdificacoes de Romeu .
Jul ieta co nfigu ra a s clados para seu tes te, executa 0 re latorio e obtem uma
sarde. Romeu trabalh a na sala ao lade, mas deviclo a suas tendencias anti-sociais
esti feliz ignorando que sua tr ansac ao utiliza as mesmas tabe las que 0 relat6rio
de Jul ieta. El e execut a sua tra nsa cac e atuaiiza os dados . Romeu obteve 0 que
ele que ria, ma s Julieta entao modifica seu c6digo e executa seu programa
novam en te. Sua safda difere da ultima e m uitas diferencas nao resultam de suas
alteracoes, ma s das aheracoes de Romeu. 0 que tem os aqui e uma falha de
comunicac t o .
Se as tabelas u tilizadas p or Rom eu e os programas de Julieta fossem
depend ent es de cliente , eles poderiam con ecrer-se a clientes separados, configurar conj untos independentes de dado s e testar seus programas sem jamais
conv ersare m urn com 0 outro. Eles p oderi am execut ar to do seu "teste no
conforto de sua sala e isolado s de seu companheiro de tr abalho.
Par a torn ar suas rabelas dependences de clien te, eles apenas precis am ter
ma ndt co m o 0 primeir o cam po e 0 sist em a R/3 cuid ara do restc. Quando
registros sao adi cionado s a tabela, 0 siste ma automaticamente move 0 cliente
de logo n at ual no campo ma ndt quand o 0 re gisrro for enviado ao banco de dados .
Suas instrucoes se l ect em Open SQL somente retornarao as Iinhas em que 0
numerc de clience na tabela for igual ao seu num ero do client e de logon atual.
As ins trucoes i nse rt, update, modi fy e del et e de ban co de clados Open SQL
tambem ofere cern tratamentc automatico de clienre .
Se todas as tabelas envolvidas forem dep endentes de cliente, poderd haver
mais de urn grupo de restad ores trabalhando ao mesmo t empo ern urn sistema
de teste, D ua s equipes de resr ador es poderao obrer resulta dos de funcionalidade divergences com 0 m esm o con jun to de programas simultaneam ente se

..

35

r
36

-r-

r r

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

~"

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

DIA 1:0AMB\Uffi DE DESEHVOlVIMENTO

efetuarem logon 'com diferentes clientes de logon. As atualizacoes feitas pa r


uma equipe nao alterarac as dados que pertencem aoutra equipe.
Tambem poderia existir no sistem a de teste urn treinamento de cliente.
Os alunos poderiarn conectar-se a urn cliente e as tesradore "s poderiam conectar-se a outre. Os dois teriam executad o 0 mesmo conjunto de programas, mas
a s programas acessariam conjuntos de dados independentes.

de buffer reduz a carga no servidor de banco de dados e no vfnculo de rede


entr e 0 banco de dados e os servidores de aplicativo e pede acelerar 0 acesso
ao banco de dados de 10 a 100 vezes mais.
Servidor de ccltccnvo

F; gllrg 1 27

o ccmponenle de

Processo de frobolho

interfac e d e bonco de

..2

dodos do processo de
A instcloccc mais com um do R/3 tem tres sistema s: deseovolvimento,
teste e producoo . Pa r podroo , cod a sistem a vern co m tres clientes
instolodos: ODD, 001 e 066" Eco mum ter de tres 0 se is c1ient es nos
sistemas de desenvolvlmento e de teste, ma s roromente voce vera mois
de um cliente no producdo.

( Nota

Uti Iizoad 0

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

- - - - - -- -

A primeira vantagem e 0 face de que suas insrrucces de SQL serao portaveis


entre bancos de dados. Por exemplo, se por alguma razao sua empresa quisesse
alternar de urn banco de dados Oracle para urn Informix, 0 banco de dados
poderia ser alrerado e seu c6digo ABAP/4 cont inuaria a ser executado sem
nenhuma alteracao.

Buffer de dodos

Servrdor de

bcncc de
dcdo5

8
Troto me nto o!ltom6tico de c1i ente
A terceira vantagem de utilizar Open SQL eo"tratan:zento automdtico de cliente.
Com Open SQL, 0 campo de cliente automaticamente e ocupado pela interface
de banco de dados. Isso ofereee as suas equipes de desenvolvimento e de teste
muitas vantagens, como a capacidade de executar multiples testes e treinamencos
simultsn eos em urn unico banco de dados sem incerferencia de urn em outro.

Util izo ndo buffe r de dadQS.JJ o servidor de aplicatjvo


A segunda vantagem e que a interface de banco de dados usa buffer nas
informacoes do banco de dados no servidor de aplicativo. Quando as dados
sao lidos do banco de dados, eles podem ser armazenados em buffers no
servidor de aplicativo. Se entao for feita um a solicitacao para acessar os mesm os
registros, estes ja estarao no servidor de aplicativo e a solicitacao sen satisfeita
a part ir do buffer sem necessidade de ir ao banco de dados. Essa tecnica de use

Resu m o
0 R/3 sup~rtamultiplas platafo rmas de hardware, sistema operac ional
e bancos de dados .

Alem de permitir SQL native, 0 ABAP/4 oferece Open SQL. Utilizar


O pen SQL torna seu codigo por tavel, mais rapido e oferece tratamento
autom":itico de cliente.

37

--- 38

W'

'W" _

.w
DIA 1, DAMBIEHTIDE DEIENYDlYIMENTD

APIl:ENDA fM 21 ens ABA P/4

0 cliente de logon perm ite que mulriplos grupo s de dados independentes sejam armazenados ria rnesma tabela. Os dados que voce
acessa dependem do numero de c1ientes que voce digitou quando
efetuou lo gon.

P&R

o
o

o
o

Po sse copiar urn clienr e existente para um novo cliente?

consulto r do Basis pode fazer isso pa ra v oce utilizando urn


utilit ario de c6p ia de clien te. Cada sistema de desenvclvimento
normalmente tern p elo menos urn clienre de refer en cia e urn
clience de trabalho. Seus clados "validos" sao man tides no elien te de refe rencia. Eles sao copiados para eriar 0 cliente de
trabalho. Se voce COHamper 0 clien te de trabal ho, 0 consultor
do Basis pode restaurar seu estado original copiando 0 cliente
de referencia novam en re.
Po sso escrever urn p rograrna que Ie dados de u rn outro cliente
que nolo 0 clien t e a que estou atualmente conectado?
Sim . Voce pede adicionar as palavras-chave clientspecified em
qualquer inst ruc ao de Open SQL. Por exemplo, pa ra ler os dados
no cliente 900, voce escreverie 0 seguinte codigc:
sele ct

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

Teste
1. Eseolha 0 caminho d e menu T ool s-> Ad ministr ation, Monitoring ->System monircring-> User overview. Qual eo c6digo de tr ansa!S3.o para essa transacio?
2. Qual e 0 codigo de transacio par a 0 menu principal R/3 ? (0 menu
principal e 0 primeiro menu exibido ape s 0 logon.)
3. Qual e 0 codigo de transacjlo par a 0 caminho de menu To ols-o-Development Workbench?
4. Se hi treS sistemas R/3 na sua paisagem de siste ma atua], quantos
bancos de dados existem ?
5. Se urn sistema R!3 tern dais servidores de aplicativo, quan tas inst ancias ele tern?
6. 0 que e Open SQU
7. Quais as van tagens que 0 Open SQL of erece sob re 0 SQ L native ?
8. Qual e a parte do processo de t rabalho ut ilizada para implementar
OpenSQU
9. Quando um a area de rolagern e alocada, quando edesaloc ada e 0 que
ela contem?
10. Quando urn contexte do usuario e alocado, quando e desalocad o e 0
que ele contem?
11. Quando ocorre roll out e por que isso oeorre?

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

Entretanro, voce deve saber que voce apenas faria isso se estivesse
escrevendo urn p rograma de sistema. Isso nunca e feito em urn
programa aplicativo; eles sempre devem ser independentes de
client e. Se voce precisa rransmitir clados entre dois cliente s de
producao, deve imp lernen rar a tran sferencia de dados via ALE .

Workshop
o Wo rkshop oferece duas mane iras de voce verificar 0 que aprendeu neste
capjrulo. A Se!1aO T este oferece perguntas para ajudar a solidificar seu ente n dimente do cont eudo aborclado e a selSao Exercfcio permi re que voce pratique 0
que aprendeu. Vo ce pe de encon trar as respostas as perguntas do teste"e dos
'exerc fcios no Ape ndice B, "Resposras as perg untas e aos exercfcios".

clienre?

OU

indepe nden tes de

39

"""""-~----

- ...

0\,1. 1: 0 AMBINTE DE DE5HVOLVIMENTO

40

'PREHD' E." DiAl AB "/4


Figura 1 30

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

Figura 1 31

Fig ura 1 29

, Estctobe/o e
dependente ou
independente de

Esto lobe/a e
dependentt! au
independente de

clienle?

cliente?

': , . l ,

Sf

J,ftj

fIf

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

~".,

1.

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

, ;; -

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

":~. <

41

~ -- - -.- _

.. . -._.

- -_ .

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

Seu primeiro programa


emABAP/4
Depois de completar este capitulo, voce deverd ser capaz de:

e Crier e modificar programas ABAP/4 simples.


Utilizar funlioes padcio n o edito r ABAP/4.

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


Encontrar seus programas utilizando

Object Browser eo editor.

Exibir uma tabela e seus conreados utili zando 0 Data Dictionary.


Utilizar as instrucoes t ables e select.
Encadear instrucoes urilizando

opera dor de encadeamento.

Adic ionar com entarios e documentacdo a seus programas.

Antes de-Prosseg"uLli.Lr

Antes de prosseguir, voce dev e:


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

hllp:/Iwww.comput.eom. bt

....

s_~

_. ~-

44

..........

'W _

Configurar sua interface como recomendado no Dia I, na Se~ao "0


Inte rface Menu", se voce nao river feit o isso ate agora.

uma [erramenta de teste auxiliada por comp utador para regressgo de


teste

Execurar 0 p roced imen ro de instalacao para as ScreenCams no


CD-ROM. Esse procedimento esta descrito no arquivo rea dme . txt
localizado no diret6 rio raiz do CD-ROM.

uma ferramenta de pesquisa de repositorio p ara encontrar objeros de


desenvolvimento

Muitos dos procedimentos neste [ivrcs60 demonstrodos vtilecndc ScreenComs .


ScreenComs s60 como filmes; elos mostram vmo sene de telcs . ind uinclo
pressionomentos de tedo e movimenios de mouse, com umo norro~60 des critivo. Elos
pcdem ser enccntrcdcs no CDROM que vern com este llvro . Vejo 0 orquivo readme. txt
loca lizodo no diret6rio rulz do CO-ROM para mois Infcrrn ocoes.

fxplora ndo
MOYO lit..
H~O

ombiente de desenvolvimento

Um ob jeto de desenvofvimento

e qualquer cclsc criodc por urn desenvclvedor.

Exem plos de objetos de dese nvo!vimento s50 programos, telcs, tcbelos, visuo1i ZQ ~6eS, estrvlvrcs, modelos de dod os, mensoge ns e includes .

NOYO....
TIR.\IO ~ .

0 sistema do R/3 ccntem ferromentos para crier e testar objetos dedesenvclvimento. Essos ferromentos estoo locolizodos no R/3 Development Workbench.
Perc ccesscr quolqu er ferromento de deseovclvlmentc , voce ir6 para workbench.

workbench contem as seguintes ferramentas para ajuda -lo a criar


objetcs de desenvolvimemo:

0 editor de programa ABAP/4 code voce pode criar e modiflcar

ce digo -fonre do ABAP/ 4 e outros componenres de prcgrama

0 Workbench Organi zer para registrar alteracoes em obj ecc s e promove -las na produclo

Todos os objeros de desenvolvimemo sao portateis, 0 que signifiea que


voce pod e copia -los de urn sistema do R/3 para outro. Is50 norrna lmenre efeico
p ;;fa mover seus objeros do sistema de desenvolvimento para 0 sistema de
producio. Se os sistemas de origem e de des tino es-se em sistemas operacionais
diferentes ou utilizam sistemas de ban co de dados diferentes, seus objetos de
desenvolvimemo executarao na Integra e sem qualqu er modificacao. Isso e
verdadeiro para todas as plataformas suportadas pelo R/3. (p ara uma Iista de
hardware e sist emas operacionais suportados, veja a Tabela 1.1.)

Desco b rindo tipos de progJ:QLLmI..lJ.l


O

Hi. dais tipos de programas ABAP/4 principais:


relat6rios
programas de dialogo

--

DIA 2: Sl:U PRUWROPROGWlAEM ABAP/4

HOVO ...

,/

--

APRENDA EM 2.1 DIAS AB APH

ltiMO r"

-~~' --.r

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

Definind o relat6rios

o prop6sito de urn relat6rio eler dados a partir do ban co de dados e escreve -los.
Ele consisre apenas em duas telas {veja a Figura 2.1) .

0 D ata D ict ionary onde voc e pede criar tabelas, est ruturas e visualiza~6 e s

0 mod elador D ata on de voce pode documentar os relacionamentos


entre tabelas
A biblioteca Function onde voce pode criar m6dulos de fun~ao globais

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

ABAP/4 Debugger

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

SQL

0 analisado r de tempo de execu~ao para otimiza~ao de desempenho


do seu programa

uma ferramenta circunstancial para analise de impacto

A prime ira tela

entec as compos de entrada de intervale de dote opareceri om no tela de sele~oo do


relot6 rio.
A segundo tela e a tela de soldo. Elo co nte m a listo. A Hstc e a scldo do relctcrro
e no rmal menfe nee tern nenhum campo de entra da. Em nosso exemplc, elo
cc ntenc urne listo des vendee que occrrercm de ntro do intervalo de doto especficodo.

NOVO

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

echomo da tela de se/e~60 (seledion screen). Ela con tem campos


de entrada que permitem 00 usu6rio inserir critertcs para 0 relot6rio. Po r
exemplo, 0 relctoric pede pradu zir ume listo de vendee para urn dodo interva lo de dotes,

NOVO lrl.r..
TE~O "

h..

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-

DlA 2,SEUPRIMEIRO PROGRAMA EM AMP/.

47

AP"NDA EM21 DIAl ABAP/4


EW=>..-2L..Ll_ _
A tela de setecoc e a
lela de soldo .

liste
[soldo do re lot6 rio)

Tela de selecee
(pcnimetros de e ntra da )

Soles Per Period '

251 .25"Edna Everedge ..


131 .50 Wendy Rose.: .. . '

I1efin.inrlu..p.rrnlim.l.\aJ-'sLd......
e J,d.ui"
q '-'lo~gl"oL-_-------
Os programas de dialo go sao mais flexlveis do que os relat6rios e, portanro,
sao rnais complexes no nfvel de programa. Eles podem conter qual quer numero
de telas e a sequencia de telas pede ser alterad a dinamicamente em tempo de
execucio. Em cada tela, voce pode ter campo s de entrada, campos de saida,
boroes (pushbutton) e mais de u ma area rolavel.

D~-SCQbrim:lQ~ornpon.entes

de relat6rio

Os relat6rios do ABAP/4 con sisrem em cinco componentes (mostrados na


Figura 2.2) ;
0 codlgc-Ionee

Descobrindo 0 obj eto de tem po de execucoo


de-programo
MOVO....
TIRMO~

Os progromos ABAP/4 s60 interpretodos : eles noDsao compilodo s. A primeiro


vez que voce execute um progroma , a siste ma outomotica mente gera um objero
de tempo de execococ. 0 objeto de tempo de execvccc e um formu\6rio pre-processodo
do c6digo-fo nte . Entretonlo, ele noo e um execotovel q ue voce pode utilize r no nlvel do
sistema operacionol. Em vez disso, ele pede para 0 sistema do R/3 lnterpreto-]c . 0 objeto
de tempo de execuccc tcrnbem e ccnhe ctdo co mo formu/6rio gerodo do programo.

Se voce alterar 0 codigo-Ionre, 0 objero de tempo de execucao sera


autom aticamente gerado novamente, na pr6xima vez que voce executar 0
programa .

Introduzindo as convencoes de orrlbulcco


de Dome de programa
NOYOl..
nmO,.
NOVO lrrrrr...

Os atributo s
as elementos de texto

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

voce crtc em :iUO ernprc50 s50 chomodo s progromos-dienfe .


O s objetos de desenvolvirnento de di ente de ve rn segujr as cc nve nca es de
at ri bui ~oo de nome que sao predefinidns pelo SAP, Esses convencees SOO

n~o ~

chomod a s intervalo de nome de elienfe. Pa ro os proqrc rnos. 0 Intervolo de nome de diente


tem de dots a oilo corccteres de co mprime nto e nome do prog rarna de ve lnlcicr com
a letro y ou z. A SAPreserve a s letros de a a x para sevs pr6prios progra mas.

A documentacao
As variantes
Fi gu r a 2 2

Os componentesde
progromo ,4BI>Pj4.

urn

Um progromo ABAPj4 consiste em

Atributos

NOVO....
URMO'-

Dedique urn memento para esco lher urn identificador de tres co roderes especffico pa ro seus progromos. Deotro deste livre, farei refere ncio 0 esse
iden tificodor como sev handle . Ele deve comeccr com urn y ou z. Por exemplo, voce pode
uftliaor 0 letro z seguido por sues duos iniciois. A notc ccc indicor6 o nd e voce deve
utilizer seu hand le. Por exemplo, se voce escolhev zkg e viu 0 direr:;oo HDigite 0 nome de
progrom o abc" voce digitar io zkgabc . Recomendo que, a medida que ovcnccr oeste
livre, voce utilize seu hand le como os primeiros tres corode res de todos objetos de
desenvo lvimento que voce criar . Se voce fleer isso, eles sereo f6ceis de reca nhecer ma is
ta rde e mois f6ceis de lc coluor.
I

As convencces de atribuicao de nome de programa adctadas para este


livre sao as seguintes:
Programas de exemplo do texto de capirulos seguem a convencao
ztxccnn , onde cc e 0 mimero de capfrulo e nn eurn numero sequencia]
Somenre 0 c6digo-fonte e os componentes de atributo de programa sao
exigidos. Os demais componentes sao opciona is.
Todos os objetos de desenvolviment o e seus componentes sao armaze nados no banco de dado s do R/3 . Por exemplo, 0 codigo-fonte para urn
reldtorio e armazenado na tabela dd010s do banco de dados.

de 01 a 99.
Nomes de p rograma ut ilizados em exercfcios seguem a convencao
zt ycc nn,on de cc e0 mim ero de capftulo e nn eurn numero sequencial.
nom e de programa para a solu;ao sera. zt zccnn.

'** -

,c48

APiEN DA EM 21 Dl AS ABAP/ .

01" 2: SEUPRlMEIRO PROGRAMA EMABAPj4

Programas utilirarios oferecidos no C D -ROM seguem a convencao


de atribuicgo de nome y -xxxxxx, onde xn:xxx e 0 nome do utilitario.

programa de in stalacao que cria objetos d e desenvolv imento e os


carregacom dad os pa ra a s exercfcios echamado y-s etup. Se necessaria, ele pode
sec executado de n ovo a qualqu er mem ento para rest aurar a cond icao orizinal
dos dados do exercfcio. Para remover [OdDS as objeros de desenvolvimenro e
dadcs criados pelo program a de inst alacj o do siste ma, execute y- uninst. Veja

o arquivo readme. txt no CDROM para mais informacoes.

Cria ndo seu primeiro pro-Q.LCra.........mJ.JO


........

----'-

que vern abaix c urria descricao d o processo que voce seguirf p ara criar urn
programa.
. Quando voce efetua logo n no R/ 3 para criar seu primeiro pr ograma em
ABAP /4, a primeira tela que voce ve e 0 menu p rincipal da SAP. A partir dar,
voce i.r.i para a Development Workbench e depois para a editor. Voce ira digitar
urn nome de programa e cria-lo. A prim eira tela que voce vera sera a tela
Program Attributes. Af voce deve inser ir os arributos de pro grama e salvd-los.
Voce enuc teci permissdo para pros seguir para 0 editor de codi go-fcnte . N o
editor de codigo -fonte, voce ici inserir o codigo-fonte, salvs-lo e entdo execurar
o programa.
SCRHNW ~ lnicie a ScreenCom " Hew To Crea te Your First Proqrc m" ag ora.

Siga este procedimento para criar seu prim eiro programa. A ajuda para
problemas comuns e oferecida no D iagn6 stico e Solu~ao de Problem as que se
segue a ele. Se voce tiver problemas com qualquer urn dos passos , njio es que ~a
de consultar esse procedim en to.
I. Do menu principal do R/3, sele cione

Tools->ABAP/4 Workb ench. Urn. tel. com


velopment Workbench

2. Press ione

eexibida.

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

botao do ABAP/4 Editor na barr a de ferrame ntas do


aplicativo. 0 ABAP/4 Edi tor: Initial Screen e exibido.

I
I

3. No campo Program, digite 0 nome do pro grarna 0201.


4. Pressione 0 boreo Create. A tela ABAP/4: Program Attributes e
exibida. a s campos que contem pontes de inre rrog acio sao exigidos .
S. Digite My First ABAP/4 Progr am no camp o Tide. Po r padrao. 0
conr eudo desse campo apareceni no topo da lista,
6. Digite 1 no campo Type, a mimer o 1 in dica que 0 programa eurn
relat 6rio .

7. Di gire urn asterisco (*) no campo Application. 0 valor no campo


Ap plication indic a a area do aplicarivo a que esse programs penence.
A lista compleca de valores pod e ser obtida posicionando 0 cursor
ness e campo e en tao danclo u rn clique na seta para baixo adireita dele.
Po r exempl o, se esse pr ogram a perr encesse ao gerenciamento Inventory, voce colocaria urn L no campo App lication . C omo e urn pro grama simples de test e, uti lizei urn asteri sco para indi car que d e nao
pertence a qualquer area especlfica do aplicativo.
8. Faca uma marca de selecf o na caixa de selecfc Editor Lock. Ativendo
o Editor Lock, voce evitara alteracoes no programa per qualquer ou tra
pessoa alem do criador . Para seus exercfcios, fa<,ia uma marca de
selecac nessa caixa para proteger seus programas de modificacsc
acidemal por ou tros. Enrretan to, voce ndo deve uti lizar isso para
blo quear programas de desenvolvim en to reais. Esse recurso impedira
que outros p rogramad ores facam a manu rencao depois .
9. Para salvar os atr ibutos de programa, pr essione 0 bo tac Save na barn
de ferrame ntas Standard. A tela Create Object Catal og Entry e
exibida.
10. Pressione 0 borao Local Obj ect. A tela de atributos do programa e
reexib ida. Na barra de status na parte inferior da tela, a mensag em
"Attribut es for pr ogram saved" aparece. (Nota: a mensagem que voce
ve con tern 0 nom e do programa tamb ern, mas como esse nome varia
para cada usuari o, ele foi deixado fora do texro deste livre. Essa
con v en<.iac de deixar 0 nom e de obieto de desenvolviment o for a cia
mensagem sera mantida ao longo de todo esre livrc.)
11. Pressione 0 batao Source Ccdena barra de [erramentas do aplicarivo.
A tel. ABAP/4 Editor : Edit Program e exibida.
12. Escolha 0 caminho de menu Serrings- > Editor Mode . A tela Edito r:
Settin gs e exibida.
13, Escolha 0 borao de 0P<,i3.0 PC Mode With Line Numbering.
14. Escolha 0 bota o de 0P<,iaOLower Case .
15. P ressioo e 0 bot ao C opy (a marca de selecso verde). Voce agora salvou
suas configuracoes de edit or. (As configuracoes do edit or precisam
'ser configu raclas apenas uma vez.)
16, O llie na linha 1. Se ela nac contiver a mstru<,iao report 0201. ,
digite -a agora, com o mostrado na Listagem 2,1.
17.Nalinha2,digitewrite ' Hello SAP worl d '. Utilize aspas simples e
coloque urn po nto no final da lin ha,
18. Pressione 0 botao Save na barra da ferram entas Stand ard.

49

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

50

--DIA 2:SEU PRIMHROPROGRAlIA EM ARAP/~

APREND' EM21 DIAl AS AP"

19. Para exe cu ta r seu programa, escolha 0 caminho de menu


Program- c-Execure. Urna tela com 0 titulo My First ABAP/4 Pro gram e exibida e as palavras Hello SAP world serao escritas embaixo
dela. Essa e a safda do relatorio, tambem conhecida como lista.

miAOA ~ Lislagem 2.1 Seu primeire pregrome

em ABAP/4

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

Utiliza ndo a Editor' Initial Scree n


A ABAF/4 Editor. InitialScreen emostrada na F igura 2.3. A partir dar,voce pode
exibir au alterar todos os componentes de programa. Par exemplo , para alterar 0
componente de ccdigo-font e, escolha a ba tao de op~ao Source Code e entac
pressione 0 bene Change. Ou, para exibir 0 componente de atributos, escolha 0
batao de op~ao Attributes e entao pr essione 0 batao Display.

NOVO ...
TflMO"

a c6digo na List agem 2.1 p roduz esta safda:


SIIDI ~

51

Pressicncr 0 botao Change exlbe 0 componente se lecionado no modo de


olterc/iao, que cerm tte que voce c ltere 0 componente.
Imprimir lPrinl)

Canceler (ConO!Q

Hello SAP World

Scir (Exit)

Parabens, voce acaba de escrever seu primeiro programa em ABAP/4!


Para retomar 41.0 editor, pressione 0 batao de seta verde na bar ra de [erramentas
Stan dard [ou a tecl a F3 ) .

Vollar (Bode)

Salvor (Sevel
Compo de comclF'ldo

locolizor (find)
locoFizor 0 pr6lcimo(find Null
Prtmelrc p6gino (fin.1 Page)
P6gino onte rior (Previous Pagel
PrOximo p6gino (Next Pagel

Ultimo p6gino (lost Pose)

(Commond field)
lnserir (Enter)

S
Cl
z
o Problema
~
n

0...

.n

1
1
I

'"

,
I

'"
C

l>'

.'"
....
0

'"
~

Fjgu r a 2 3

Esses se c os prob lemas co mu ns e ncontrados no cricccc de urn


prog ra ma e sue s respe ctivcs sc lucoes

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

Sol u!;oo

AD pressionor a batao Create,


voce cbtem umo coixo de di610ga
duende De Not Oecte Objects
SAP Nom e Ronge.

Voce digilou a nome e-rode de progromo . Seus


names de progroma devem inicicr com y ou z.
Pressione 0 bcteo Ccncel {a X e m vermelbol para
retomc r e digitor um novo nome de progruma .

Quonda voce pressiono 0 botcc


C reol e, voce cbtem umo caixa de
di610ga com urn ca mpo de
enfrada que pede uma teclo.

Voce digitou a nome de progromo errcdc. Seus


names de progromo devem inicior com y au z.
Presslcne c boteo Cancel (0 X em verrnelhc] para
retomor e digitar um novo nome de progromo.

Voce esto c btendo vmc tela


Change Request Query pedinda
um Request Number.

No Tela Create Object Catalog Entry, noo digite


um vola r no compo de clcsse. Em vez dtsso ,
press ione 0 botoo local Object.

'"

olterer os
camponenles de
progromo.

No Figura 2.3, note que a ccbc de grupo Object Components envolve


bot6es de cpce c, a batao Display e botcc Change. Quando voce vir
umo coixo de grupo envolvendo bot6es de op;oo e bctces (pushbutto n),
os botoes de OPl;aO determincm a componenfe que ag iu sa bre os botces
. (pushbutton) erwolvldcs. 0 efeilo des bctces de op<;oo llmitodc pelc cc ixo
de grupe; eles 060 tem efeito em botces (pushbutto n) foro do ccbo.

"

Explo ra odo

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

Nesta se~ao, voce apre nders como subordinar


e aprendeni a ut ilizar duas telas nesra secao.
A ABAP/4 Ed itor: Initial Screen
A tela ABA P/4 Editor: Edit Program

poder do edito r do ABAP/4

Ex plora ndo a fllncionalidod e do ed itor de c6digo.fonte


A partir da ABAP/4 Editor: Initial Screen, escolha 0 batao de opcao Source
Cede e pressione 0 botao C han ge. A tela ABAP/4 Editor: Edit Program e
mosrrada, como na Figura 2.4.

52

CIA 2,SEU PRIMEIRO PROGRAIM EMABAPj.

APRE NOA EM 21 OIAS AS APj .

53

1,
' J

, '-

Exibi, < -> Alterer (Display <. > C


Verificer (Check)
Llstc circunstonciol (Where-used lisI)
Pilhe (Stock)
Linhe de insen;oo (Insert line)

r,_l

Figura 2 5

Estes s60 os conlrole s


no barre de
ferromentcs Standard
dentro do editor do

tit
l olI r.oo
'I h

II

....

. --'~""- ,

!.. ~

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

NW/4_

Cortor (CUi)

~'porc o "~' " ' , " ,


Imerir do buffer pnsen From bvf{e ~

EJgllra 2 4

Utilize a tela
ABAP/4 Editor:
Edit Progrom
para olterar
Ivncionolidade
de componenle.

..

.
'!.4.

Selecioncr (Select)
Desfozer(Undo)
, - Ajudo do ABAP/4 (ABAP/4 help)

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

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

....,.

. ...

'C C l C

-- -- ,

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

""'

.'

..:: .~,'

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.

~~. , .,~~',~~,.~:r"iJ~.'1., " ""-,-;c.,~l-y.


"!~-...
. ~1~-1;(~ ~4i-" "."'~""~
W~;;:;,
......a:-.l"i)
.- w.~~> ,i~~""". -,-t";-"'-iff.<'5,Y'
~. -;;-.~;_::' '' :: ., ": .;;,< ,....~..:...::-:5.- , :.:;:'!-.- :i~~
Mu ito s desenvclvedo res ochom a interface com 0 usu6 rio do R/3
cc mple xc e porton to dlfkl l de oprender. Sugiro que vo ce cdote uma
obordagem met6dica que Ihe permito fleer vontode com cede novo
tela. Sempre que voce se deparar com uma novo te la. examine
minuciosomente os itens de men u e bot ees. Comece no estremidcde
superior esquerda da te lo e sigo para ba ixo e perc a direita . Mantenho
o cursor sobre cod a ite m par tempo suficien te para ler a di ce de telo
que a oco mp onha . Gos tor olguns minutes em codo novo telo 0 ojudar6
a se fa milia rizar com as fun c;6e s dtspcofvets.

Explorondo a borra de ferro mentas Stand ard


smEHCAM ~ lrncie

Os ccotrcles
do barre de

C om man d Fi eld: Esse campo aceita codigos de tr ansaci o e vari es


outros comandos .

C anc el: Leva a usudrio de volta aABAP/4 Editor: Ini tial Screen' sem
salvar suas alteracoes. Se voce nao river salvo as alteracc es, voce sera
solicitado a fazer isso.

Print: Esse coman do imp rimirf a c6di go-fon te de seu programa. Quando
voce 0 pressi ona, a tela Print P arameters eexibida. Para recebe r sua saida,
cenifique-se de que a caixa de seles-ao Print Immed. esta ativada.

Find: Proporciona pesquisa e subsrieui a funci ooalidade. Quando voce


o pression a, a tela de Search/Replac e emo strada. Uma explicacio mais
detalhada segu e abaixo.
Find.Next: Esse eum atalhc amao pa ra localizar a proxima ocorrenci a
de uma string.

Firs t Page , Previous Page, N ext P age e Last P age: Esses comandos
permitem que voce role para cima e para baixo p elo c6digo-fome.

H elp : Exibe uma caixa de diilogo a partir da qual voce pode obter ajuda
sabre 0 ed itor e a sintax e do ABAP/4, ent re outras ccis as. Posicion e
o cu rsor em uma palavra-chave do ABAP/ 4 ou em uma linha em
branco an tes de pressionar 0 botao H elp. Para mais informacoe s, veja
a seS-ao intirulada "Obtendo ajuda" ma is adianre oeste capitulo.

ScreenCam Exploring the Standard Tcolbor" ag ora .

as co m ro les de barra de ferramentas Standard sao most rados na


Figura 2.5.
Os _cont roles de barre de ferrarnentas Standard (veja a Figura 2.3), na
ordem, sao :

Back e Exit: Os dois levam 0 usuario de volta aABAP / 4 Editor: Initial


Screen . Se-nao river salvo as alteracoe s, vo ce ser a solicitado a salvd-las.

54

OlA 2, 5EU PRIMEIROPROGRAMA EMABAP/4

"RENDA EM21 DI AS "API'

IFa~a
Solve seu progro mo ante s de digitor urn
cc mc ndo /n no cam po de cc rncnd o.
Coso cootrone , voce perc/ere sue s
clte rcco es.

Para executar uma pesquisa co m curingas, utilize os caracre res + e " ,


o sin al + corr esponderf com qualquer caractere unico e 0 sinal '"
corresponde d . com qualque r st rin g de caracteres. Ent retan to, '" so mente pode ser ut iliz adc como um curinga no comeco a u no fina l de
uma string; dent ro do corpo d e uma string ele na c age como urn
curinga. Por exem plo, a string de pesquisa wo+d loc alizard word ou wood;
a st rin g j ++n corresp on dera co m joh n ou joan , mas njio jan. E van
localizara ia n, joan ou ate an. Uma ve z que " inc or porad c dentro de
uma str ing na o age como urn curinga, para localizar a string select '"
from, digire simplesmente sel ect'" f rom. Nore que uma string que
tern * no corneco a u final produz as mesmos resul tad os que a mesma
String sem 0 *; 0 curinga '" portanto nae e particularmente {nil.

_. : : sao caracteres esp eciais. Se sua string inicia corn quaisquer desses
carac teres, voce deve envc lve-los dentro de delimitadore s. Voce pode
esc olher qual que r urn desses mesmos caracteres para urn delimirador
con tanto que ele nao apare~a dentro de sua strin g de pesquisa. Por
exemplo, : hh com eca com urn caractere espe cial. P ara localizar essa
suing,di gite -:hh-ou .:hh. ou , : hh ou ; :hh; .

0 caractere # tambem e especial. Para localizar uma strin g que contem


# em qual qu er lugar dentro dele . voce deve subs tituir II par cada urn

Nee feche a ic nelo de edito r presslcnc odc


a bctcc X no extremidode superior direlto
do jonelo. Voce perder6 as clte rccoes n60

salvos.

Utilizando os recursos de locc lizc cco e substitu icdo


S(mNOM ~ Inicie a ScreenCom "Using Find a nd Replace.. . ogoro.

Pression e 0 botac F in d na barra de [erramenras Standard e 0 sistema


exibira a tela Search/Replace (veja a Figura 2.6). Insira a string que voce quer
lc caliza r no campo Fi nd.
F igu ra 2 6

Etta e a tela
Seon:~/Reploce.

Bo

permite que voc!


localize e altere slrings

de coroctere em sec

55

# que ocoere na string. Por exemplo , para localizar a string alb, utilize
a string-de pesqui sa all b .

progromo.

lnide

IIrrrrrr..

S(lEENWl JI""

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

Para configurar

esco po pa ra um a Unc;ao de pesquis a ou substituicao,

siga est es passo s:


1. Na tela Sear ch/Replace, digite a string qu e voce qu er localizar no

Hi vfria s op cses n est a tela pa ra contr clar

processo de localizacjo:

campo Find.

A s a String fad. com que sua string seja localizada em qualquer lu gar
no program a.

2. Escolha 0 botio de opc;ao In C urrent Source Code.


3 . E scolha a bono de op~ao Fro Cursor para comecar a pesquisa na
posicic arual de cu rso r. Altemativam ente, voce pode escolher 0 botao

A s a Word [ocalizara ape nas casas em qu e espaccs em bran co ou


p onruacao envo lvem a pa lavra dentro do codigo-fonte .

de opcao Fro m Line e digitar

0 bon o C o ntinu e. 0 cursor e co locado a esq ue rda da


primeira st ring de coincidencia.
5. Pressione 0 pr6xim o botao Fi nd pa ra localizar a p roxim a string de
coincidencia.

4. P ressione

Para pes quisar uma strin g que con tern espacos em br anco inco rporados, sim plesmente digite a string junto co m as espacos em branco no
cam po Find. N ao cc loqu e a String entre aspas. Se fizer isso, as aspas
serao con sideradas parte cia string de pesquisa.

IIrrrrrr..

\CREENCAMJI""

,I

ruim ero s de linha de infcio e de fim

pa ra a p esqm sa.

U pp er/Lower C ase fara a pesquisa dif erenciar letras mai usculas de


min usculas.

o campo Find tern algu mas qualidades incomuns:

I
!

05

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

56

'W'

- . -- ..

DIA 2:SEU PRIMEIROPROGRAMA EMABAP/~ I

APRENDA EM 21 DIAl ABAP/4

Para localizar todas as ocorrencias de uma string:


1. Na tela Search/Replace, digite a string que voce quer localizar no
campo Find.
2. Escolha

botao de opcao In Program.

3. Press ione a batao Continue. Urn resumo das ocorrencias localizadas


eexibido na tela Global Search In Programs.

4. De urn clique duplo em uma linha para ve-la no contexte do codigofonte .

5. Pressione

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

grams.
6. P ression e 0 botao Back mais uma vez para retornar ao editor de
codigo -fonte.
S(mHCAM~ lnkle a SereenCom "How to Search and Replace in the Source Code" ogara.

Para localiz ar e substituir no codigo-fonte.


1. Na tela Search/Replace, digite a string que voce quer localizar no
campo F ind.
2. Paca uma marca de seleliao ern Replace By e digire uma string de
substituicao no campo Replace by.
3. Pressione 0 bouo Continue. A tela ABAP / 4 Editor: Edit Program e
exibida com 0 cursor pcsicionado a esquerda da proxima string
coincidente.
4. Para subsr itu i-la, pre ssione 0 botso Replace. A string n a posicao de
curso r e subs titufda e 0 cursor e posicionado na p roxima string
coincidente.
5. Para ir para a proxim a posicio sem substituir, pressiona 0 bone Next
H it. 0 cursor e p osieionado na pr6xima string coincidente.
6. Para substituir todas as coincidencias restantes da posicao do cursor
atua] para 0 fim do cod igo-fonte, pressione 0 borso de No Confirmation.
S(mNCAM~ lnicie a ScreenCom "How to Seor ch and Replace Via a Summary Screen" agora .

Para pesq uisar e substituir via uma tela de resume:


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

57

3. Escolha 0 boeao de opcao In Program.


4. Pressione 0 botao Continue. A tela Global Replace In Program s e
exibida com a cursor posicionado na primeira str ing coincidente.
T odas as linhas que contem strings coincidente s sao exibidas e as
strings coincidences sao destacadas.
5. Para substituir a string na posicao de cursor, pressic ne 0 botao
Replace. A string na posicao de cursor e substituida e 0 cursor e
posicionadc na proxima string coincidente.
6. Para ir para a proxima posicao sem substituir, pres sione 0 batao Next
Hit. 0 cursor eposic ionado na pr oxima string coin ciden te.
7. Para substircir codas as coincidencias restantes da posicao atual de cursor
para 0 fim do codigo-fonte, pressione a bono N o Confirmation.
Se substituir quaisquer strings, voce devers salvar suas alter acoes antes
de retornar ac editor de codigo-fonre. Para [azer isso, pressione 0 botao Save
na barra de ferramentas Standard e entao pressione 0 bo-ac Back. Sevoce quiser
cancelar suas alreracees, pressione 0 bo-ac Cancel em vez do borso Save.

Explorando a bo rra de fer romentas Application


SCRHHCAM..... lnicie a ScreenCom "Exploring the Application Too lbor of the ABAP/4 Editor"
,.. oqoro.
.

Antes de prosseguir, maximize sua janela (se ela ja nao esciver maximizada). Voce nao .pode ver os botoes na extremidade direita da barra de
ferramentas Application se sua janela for menor que 0 tamanh o maximo.
Os con troles de berra de ferramentas Application sao m ostrados na
Figura 2.7.
Figura 2 7

Os conlroles de
bono de ferromenloS
At:Jplir::otion.

~ ~

---~www_

58

_.

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

D isplay < -> C han ge: Altera a tela de modo de exibicao para mudar
o mo do . Pressio n e-a novamente para altera -la de volta ao modo de

exibicao.
Check: Verifiea a sintaxe do pr ograma atual.
Where-Used List : Q uando voce pressiona esse botao enq uamo 0
cursor esta em qualquer nome de varifvel, ele exibird rodas as linhas

de c6digo que a utilizam.


Stack: Exibe 0 conteudo cia pilha de navegacao atual.
Cut: Exclui a linha que contem

I,

DIA 2:StuPRIMfiROPROGRAMA EM ABAP/4

cursor e a coloca no buffer.

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

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

Utilizan do Cut e Pa ste

N~ mai oria dos aplicativos Windows, ha u ma area de transferencia para operacoes de cortar e colar . No RJ3 , h.1 cinco areas de t ransfere ncias. ATabela 2.1
descreve codas elas.

Tabela 2.1 Buffers de Cut e Poste


Chamado

Utili:r:ado
pa ra

Como Copia r
pa ra ele

Como Colar
a partir dele

o Buffer

Carta e colo
de ntro de um
progra mo

Pressione as botc es
Cut ou Co py no editor

Pressicne 0 batao Insert


From Buffer

as Buffers X,Y,Z

Corte e co la
e ntre da is
progromos

Ccmi nho d e menu :


Block/Buffer- > Copy
to X Buffer

Caminho de menu:
Block/Buffer-> Insert X
Buffer

Area de

Carta e colo
en tre:
- duos sess6e s

Cominh o de menu:
Block/Buffer-> Copy
to Clipboard

disponfvel.

ABAP /4 He lp: Oferece ajuda sabre


geral.

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.

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

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

APRE NDA EM 21 DIA S AB AP/4

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

;I
I
, I

trcnslerenoc

R/3

-:

60 ,

'!='

'!'!'

-DIA2:SEU PRIMEIROPROGRAMA EM ABAi'/4

AP RENDA EM 21 ClASAB AP/ 4

Como Copia r
para e re
- R/3 e outro

Como Colo r
a partir de le
Ceminho de menu :
Block/Buffer- > Insert
from Clipboard para
inserir as ccnteedcs do
area de trcnsjerenclc
como linhos novas no
progromo no pos iCioO
do cursor. Ou Orl+V
perc color no topo dos
linhos exlstentes. Com
Ctrl+V, as dodos seroo
truncodos se tod os eles
noo se o justc rem no tela

opllc oftvos

Windows (p. ex.,


Bloco de Notes)

1,

pora

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


Para..

1- De um clique

ed itor

- copia mcls de
umo linho do
c6digo

2 - Ctrl+Y
3- Arroste e
marque

s.

Escolha a caminho de me nu Help- >Exte nde d He lp.

Obter ciu do de qualquer


pclo vrc-chcve do AW/4

Coloqoe 0 cursor em umc pc lovro-chcve dentro da


c6digo e pressione Fl .

Salvor seu programo

Presslone F11.
Presstone Fa.

Exibiras teclo s de fun ~oo


Mover a cu rsor perc" 0
co mpo de comondo

Pressione Ctrl + Tab.

Troaer quolquer linha pore

De um clique duplo nos espccc s em bronco (no om do


linho) ou ccloque 0 cursor nos espcccs em bronco e
pressione F2.
Pressione a tec lo Enter com 0 cursor no cc mecc ou no
fina l de umo linho .
Ccloqve 0 cursor no linha e presslooe 0 bata o Cut.

lnserir umo Hnhc


Excluir umo linho

Coloqu e

Excluir urn bloea de tlnhcs

F9 (seleciona) . Entoo coloque -o na ultimo hnhc do


bloco e pressione F9 no vornente.
Seledone 0 bloco e press ione 0 bctc o Cut.

cursor no prime ira linho do bloco e pressione

botoo Duplicate line .

Repetir umo ltnho c u blccc

Pressicn e

Dividir umn linha

Posicione 0 cc rsc rno ponto de divisoo e presstcne a


tedo Ente r.
Posicicne 0 cursor no tim do linho e presslone 0 botoc
Concat enate.
Morque urn bloco . Pressicne 0 bctcc Copy To Buffer.
Entoa posicione 0 cursor no ponto o nde 0 c6d igo
devere se r inserido e p ressio ne 0 botoo Insert From
Buffer.

Cop ior os linha s de ntro do


programe otuol

I:
i
I,

.'

I!
I

I
I
I

Marco r um blocc de c6digo

Unir duas linha s

De urn cliq ue com 0 bcfeo d jrelto do mou se em


quolquer lugor no 6reo de tela de urno [cnelo.

a porte superior do tela

(,-

F o~a ..

Obter cjodo no ed it,or

Executor seu programa

4- Ctrl+C

.
N a primeira linha da T abela 2.2 esta 0 buffer especffico do programa,
simplesmenre chamado buffer. Ele permite que voc e copie demro de urn
pro gra~a. Para ut iliza-lo, coloqu e 0 cursor em um a linha au marq ue urn bloco
e preSSlOne as bot oes C ut, Copy ou Insert Fr om Buffer . 0 conteddc do buffer
e perdido quando voce deixa a editor.
as bu ffe:~ X, Y e Z sao utilizados para copia r c6digo de urn pro grama
pa ra DUtro . U tilize a menu Block/Buffer para acessa-lo s. Embora eles tenham
tres buffers separad os, tc dos eles sao utilizados da mesma mane ira. Seus
cont ea dos sao retidos dep cis qu e voce deixa 0 editor, mas d es sao pe rdidos
quando voce efeeua 0 logoff .
A area de tran sferen cia ea m esma que a area de transferenci a do Windows.
Utilize-a para cort ar e colar em outros aplicarivos do Win dows como 0
MSWord au 0 Bloco de Notas. Ela tamb em e utilizada para eop iar texto de
telas de ajuda Pt [veja a seguime sefSao int irulada "Obtendo ajuda") .
Alem dos bo tc es na barra de ferramentas Ap plication e as menus, voce
pode urilizar func oes Windows padrac para execurar opera!;oes de cortar e
colar. Para destacar uma palavra ou linha, arcaste a cursor atraves dela ou
mamenha pressionada a tec1a Shift e pressione as tec1as de seta pa ra a direita

Utilizondo outros funco es co nvenientes do edito r


A Tabela 2.2 contem urn resume das fun~6es do editor cornumente utilizadas.
T odas as fun~6es sao acessadas a partir cia tela ABAP/4 Editor: Edit Program
a mencs qu e observado de outro mo do.

ofvcl.
- coplc e c6d igo
do c jv dc F1

61

ou para a esqu erda (voce apenas pede destacar uma linha par vel. utilizan do
esse metodo). Para dest acar mul tiplas linhas, de urn clique rnais um a vez na tela
com 0 mouse e entao pressio ne C trl + Y. 0 ponteiro mud ara para a forma de
uma cruz . Arraste a cru z para desracar a secac que voce quer copier. Pre ssione
Crrl + C para copiar 0 texto dest acado para a area de transferencia ou pressione
Ctrl + X para cortaro Cole da area de rrans ferenc ia utilizando Cr rl + V.

Tabela 2 .1 Confinuoc;60
Chama d o

7Z

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


62

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

"RENO' EM 21 OIAS ABAPH

Tabela 2.2 Continuo<;oo

Tabela 2 .2 Ccnnnoccec
Para...

FOlj o

Para...

Copter as Iinhas perc


o utro programo

Marque um bloco . Escolha a cominha de menu


BlockiBuffer->Copy to buffer X. Abro urn novo
progroma e escolhc 0 eom inho de me nu
Block/Buffer-> Insert Xbuffer. (Voce tcmbem pode
utilizer os buffers Y e Z do mesma ma ne iro.)

Exduir urn progroma

FOlja...

Do ABN'/4 Editor: lnifiol Screen , escclhc

cominho de

menu Prcqrcm-o-Delete.

Salvor sues olteroc;6es com


um novo nom e de progro ma

Enquonto ed itor urn programc, escolho a cominho de

Exibir dais progromas ao


mesmo te mpo

Iniciondo em quo lque r tela, cbro umo novo [cnelc que


utilizQ 0 com inho de men u Systern-c-Creote ne w session.
No novo jcnelc , ...6 para ABM/4 Ed itor: Initia l Screen,

menu Proqrcrn-c-SoveAs.

C opier pora au do 6reo


de trcnsferendo do Windows

Marque urn blocc. Esco!ho a eom inho de menu


Block/Buffer- >Copy to the clipboard. Entao escolho
cominho de men u Block/Buffer-> Insert clipboard.

Feser um comentc rio

sabre um blccc de linhos

Marque um bloco e escol ho 0 comi nho de menu


BlocklBuffer->lnsert com me nt.

Remover 0 coment6rio
de um blccc de linhcs

Ma rque um bloc o e escolho 0 caminho de menu


Block/Buffer->Delete comment.

Imprimir seu progromo

Pressione

Imprimir sua scldc do


progromo

Enquonto visvcliac 0 soido , escol ha


Systern-> Llst->Print.

lccchrcr e repetir a

Presslcne as bo f6es Find e Find Next.

Compa re r dais pro gro mos


em sistemas dderentes

Co loque 0 cursor no linho a ser rncvidc, no coluna que


voce quer mcve-lo. Entao press ione 0 bcteo Move line
(F6). Para mover um blccc, pcsicicne 0 cursor no
primeira linho e entcc presslcne 0 bo tec Move line.

Salvor umo versec de urn


programa

De dentro do editor, escolha a caminho de menu


Progrom-> Generote ve rsion. 0 prog roma otuol e sclvc '
no ba nco de dodos do ve rseo .

Recupero r uma versoc


do progromo

Da tela Editor Initial, escolho 0 cami nho Utilities


->Version management . A te la Versions Of Object Of
Type REPS ~ exlbldc . Tire 0 sele ce c do verseo ctivc e
Ieee umo marco de setecec no verseo 0 resta urar.
Pressione 0 bctec Retrieve e e ntco pressicne 0 botoo
Bock. Clique em Yes e a versec atual tomo-se a
geroc;eo -1 e uma c6pia do ve rsec se lecionodo tomo-se
a versec at ual.

Comparar versoes do
progromo

A partir do tela Initial Editor, escclh c 0 cominho de


men u Utilities - c-Ve rslon monagement. A tela Versions
Of Object Of Type REPS e exibido. fo cc uma marco de
se'ecec nos vers6 es que voce q uer cc mpc rc r e
pressione 0 batao Compare . A tela Com pe re Programs:
All e exlbidc . Role para ba ixo para visualizer as
diferenccs.
Escolho o cominho de menu Prog rom- > Print. No
pr6ximo tela , especifique umo impressora e foc;o uma
marco de se le1;ao no coixo de se lec;ao Print lmmed.

bctcc Undo . He apenas um nlvel de Undo.

Desfazer a ultimo vcricvel

Pressione

Escolha

caminho de me nu Progrom->Pre!ty Printer.

Fazer download de um
progromo poro urn arquivo
em seu PC

Escolha

co minho de men u Utilities->Download .

Fazer upload de urn


progromo de urn arquivo
em seu PC

Escolhc

eaminho de men u Utilities-> Upload . .

Solver umo e6pia ternpcrcric


de seu programo

Escolho 0 co minho de menu Program->Sove Temp . A


c6pio te mpo r6ria e exd uido q uando voc e sa lvo a
prog romo .

Recuperor 0 c6p ia
tempor6rio de seu progroma

Escolha 0 caminho de menu Prog rom->Get Temp .


Version. Voce pede recuperor a c6p io sclvc de quolquer
nume rc de vezes cte qu: voce solve 0 progromo.

Puler diretomente paro


editor

De qualquer tela , digite / nse38 no compo de eomando


e pressione Enter.

Compara r dois progromos


diferentes

Copiar um progroma

Do ABAP/4 Editor: Initiol Screen, esc o lha


menu Progrom->Copy.

cominho de

Renomeor um programo

Do ABAP/4 Editor: Initia l Scree n, esc olho


men u Prog rom->Renome.

caminho de

no me do segund o progromo e pressicne a

Do ABAP/4 Editor: lnitlol Scree n, escolhc 0 cc mlnho de


menu Utilities->Splitscreen ed itor. lnsiro dais names de
crcqrcrnc e pressione 0 bata o Display. Para exlblr a

primeirc dderencc , pressione a ba tao Next Diffe re nce .


Para cltnhcr as dais prog ram as nc prOxima linho
ldermcc, press ione 0 botcc Alig n.

cominho de me nu

Formotor automotieamente
o c6d igo -fonte

bc tco Display or Chonge.

botco Print.

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

insirc

lmprimir seu progroma

Da ABAP/4 Editor: Initial Scree n, escclh o 0 comj~ho de


menu Utilities->Splits:::reen ed itor . Presslooe 0 botao
Compore Dift Systems. Insira dois nomes de prog ro ma
e urn id de sistema e presslone 0 bctoc Display.

63

64

APIl:EHOA EM 21 OIAS ABAP/~

orA2:sru PRIMEIRO PROGRAMA EMABAf'/4

Qbie.ndo~--"
a4-'iu",-,d.....a",-SmEHUJI ~ lnicie

ScreenCom "Obtendo ojudo" ogara.

Pa ra urn tu torial complete no editor:

I.

v para a tela ABAP/4 Editor: Edit Program .

2. Escolha 0 caminho de menu Help-s-Extended Help. A tela SAP RJ3


Help e exibida.
3. D e urn clique no tex ro ABAP!4 Editor. A tela BC ABAP/4 D evelopmentWo rkbench To ols e exibida.
4. De urn clique em qualquer rexto sublinhado para ob eer ajuda sobre
esse t6p ico.

NOYO ...
TERMO "

ABAP/4.

He dots tipos b6sicos de c judo no editor, 0 oiudo Fl eo oiudo R/3 Ubrory. A


civdo Fl tc mbem e conhecido como documenlo.:;60 de pelovros-chove do

. 'A a;.u.da F1 desc reve a sintaxe de palavras-chave do ABAP/4 e da exemplos


de sua utilizacao. Ela e baseada em texto e reside em tabelas dentro d o banco
de dados do R!3.
A ajuda R/3 Library e muito mais exrensa e contem visoes gerais e
procedim entos para criar objet os de desenvolvimento. Ela euma ajuda baseada
no Windows e reside fora do banco de clados do R/3. normalmente em um
CD-ROM.

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

co ntem exemplos

uteis de c6digo.
Para ob rer ajuda F I:

I. Va para a tela ABAP/4 Editor: Edit Program.


2. Coloque

cursor na palavra-chave ABAP/4 que voce quer ajuda.

3. Pressione Fl. A tela Di splay Hypertext

eexibida.

Den no .da ajuda FI, as palavras destacadas sao vfnculos de hipertexro.


Dando urn clique n elas, voce ob tem mais informacoes.

Voce pede utilizer 0 utilit6rio Findlt no CD RO M pore localizer ma is


exemplos de c6d igo.

Dentro da ajuda ha frequentemen re exemplos de co digo. Para cortar e


cola-lo s em seu programs, pressione Cu-l + Y e entac marque urn bloco de
ccdigo, arrastando 0 cu rsor arraves dele a part ir da extrernidade superior
esqu erda para a ext remidade inferio r direita. Deixe 0 mouse e pressione Ctrl
+ C . Pressione 0 bo tao Back par a reromar ate1aABAP/4 Editor : Ed itPrograrn
e cole em seu programa utilizando Block/Buffer-> Insert Clipboard. au voce
pode colar na parte superiorde seu c6digo utilizan do Crrl + V. (Ctrl + V nao
cola na origem) mas na tela , encso isso nao colard na part e inferior da pdgina

vislvel.}

O btendo a o juda &/ 3 Library


A ajuda R/3 Library esu arrnazenada nos arquivos de ajud a do Windows. Para
visualiza-los:
1. De qualquer tela, escolha 0 carninho de menu He lp- > R/3 Library. A
. tela R!3 System Online Help e exibida.
2. Para ajuda em ABAP/4, de urn cliqu e no rextc Basis Components. A
tela Basis e exibida.

3. De urn clique no texto ABA P/4 Development Wo rkb ench . A tela


ABAP/4 Development Workbench

e exibida.

4. Daqui voce pode ob eer ajuda detalhada em qua se qualquer aspecto de


programacic em ABAP/4. De urn clique no tema sobre 0 qual voce
qu er ajuda.
.
Adicionalmente, a ajuda pode ser obtida do A BAP/ 4 Editor: Initial
Screen. Para visualiza-la:

1. va para a ABAP/4 Editor: Initial Screen.


2. Escolha 0 caminho de menu Utilities - >ABAP/ 4 key word doc. A
tela Display Structure: ABAP/4_SAP's 4GL Pro gram Language e
exibida.
3. Pressione 0 batao Find na barre de ferramen tas Application. A tela .
Search Chapter Titles e exibida.
4. Digire 0 texto que voce quer localizar n o campo Find.
5. P ressione 0 bouo Continue. A primeira linha que contem esse texto
e destacada.
6. De urn clique duplo na linha destacada para exibir mais informacoes
ou pressione 0 botao Continue Search na bar ra de [erramentas Standard para localizar a proxima ocorrencia.
A ajuda tamb em pode ser obtida de denrro do editor enq uanto voce esta
editando 0 codigo-fonte. Escolha 0 caminho de menu U tilities->Help on.
Aqui, voce pode obter os seguintes tipos de ajuda:

65

66

APReHDA EM21 DIAS AS APH

OIAtlEU P'IEI' OP'OGRA.. EM ABAPi<

Aj uda do editor

Se voce estiver procurando urn programa e souber os primeiros caracreres de


seunome, poderalocalizs-lo a partirdeABAP/4 Editor. Initial Screen. Parafazer isso:

Visso geral do ABAP/4


Pa!avra-chave do ABAP/4

1. Va para a AJ3AP/4 Editor: Initial Screen.


2. N o campo Program, digite os primeiros caracreres de seu nome de

Novas recu rsos da linguagem ABAP/4


Exibir modules de funlSao
Exibir estruturas de rabela

Exibir bancos de clados logicos


Exibir objetos de autorizacio
Exibir infotipos

Local iza ndo seus ob jeto s de desenvolvjmento


S(RHN(AM~ Inide a ScreenCam "l ocalizondo seus c bjetc s de desenvclvimento" ogora.

Para exibir todos as objero s de desenvolvimento que voce criou no


sis tema RJ3 :

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

2. Escolha

e exibida.

botao de op <;ao Local Priv. Objects.

3. Pressione 0 bon o Display. A tela Object Browser: Development


Class $TMP e exibida. Aq~i voce veri uma lista de categorias de
objero de desenvolvimento. A esquerda de cada categoria hi urn sinal
de adi!fao.
4. De urn clique em urn sinal de adi!fao para expandir 0 n6 .
5. De urn clique duple em Urn nome de objeto para exibi-lo . Se o objero
em que voce deu urn clique duple era urn programa, uma visualizacao
em arvore do p rograma e de seus componentes e exibida.
6. Para exibir 0 c6d ige-fonte de programa, de urn clique duple no nome
do prog rams na parte superior da more. A tela ABAP/4 Editor:
Display Program e exibida.
Voce esta agora no modo de exibicio no obje to selecionado. Voce pede
press ionar 0 bone Displ ay < -> Change para alrernar no modo de edi~ao.
Esse metodc somente funciona com cb jetos que forom selves como
cbjetos lcc cis. Eles seroc exlbidcs cq ul somente se voce tiver pressionodo 0 bctoo locol Ob ject no telc Creote Object Cotolog Entry
quondo voce crlcu 0 c bjeto.

pr ograma seguidos par urn asterisco. Por exemplo, para exibir eodos
os programas que comecam com z tx , digire ztx *.
3. De urn clique na seta para baixo a direita do campo Pr ogram. A tela
Programs e exlbida. Urna Iista de nom es de programas coinciden tes
aparece nesta tela:A direita de cada no me de programa esn a descricso
Shan dos atributos de programs.
4. D e urn clique du plo n o nome do prog rama que voce quer editar. A
ABAP/4 Editor: Initial Screen e exibida e 0 no me do programa em
que voce deu um clique duplo apar ece no campo P rogram.

Introduzind o
NOYO""""

mllo r

R/3 Data Dictiona ry

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

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

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

1. Va para a tela do ABAP/4 Development Wo rkben ch.


2. Pressione 0 botao ABAP/ 4 Dicti onary na barra de [err am en ta s Standard . A Dictionary: InitialScreen eexibida, como mo strad o na Figura2.8.
0 ODIC estc dentro d o sistema Rl3 . Voce pe de pensa r nele como estondo
ocima de urn banco de dodos como Orocle ou lnformix e ogindo como um
co ntrcle remote, qu e gero e envin jnstrucces de SO Lpa ra ele. Por exernolc , voce pode
crier umo de finio de fobelo no ODIC. Qua ndo voce ativa a definit;oo de to belc , as
instrut;6e s de SQl soc gerado s e enviodas pa ra 0 ROBMS, fozendo co m que ele erie 0
tobelo ree l no ba nco de dodos. Quondo quiser mcdficc r 0 ta bela, voce deve mcdificcr
a defini<;6 0 de tobelo no ODIC. O ucndo ctivor a tobelo novcmente, mois SOL e gerodo,
fozendo coni que 0 ROBMS modifique a tcbelc.

HOYO lll...
fiRMO

Fa~a

Utilize a ODIC para crier e modifkcr


todos os objete s de bonco de dodos.

Noo rncdifiqve urno tcbelc ou quo lquer


co iso no nlvel de ROBMS. A definit;oo Dote
Dicncnc ry nco pede atua lizor a si pr6prio e
elc este ro fo ra de sincronio com 0 banco
de dodos. lssc pede cou sar erros de
c plkctivc e ate lever 0 urno perdo de
integrida de do s do dos.

67

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

68

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

:w:o

... , . _

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

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

DIA 2: SEUPRIMEIROPROGRAMA EM ABAPt.

APRE NDA EM 21 DIAS ABAPH

fig ur e 2 8

A Dictionary:Initiol

Screen.

.':' 4'

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

i,.o

-I .

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

. ~'"

~ 0

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

. ..-'.

. .c,,,,

-rarn
.""

.> }.

Exp lorondo as tabelas e as estrutllros


No RJ3 umo tahe la e urno colecc c de ltnhos. Coda ltnho cc ntern compos ,
tcmbem chama dos de co/unos. Ncrmclmente, dentro de umo tcbelc, coda linho
tem c mesmo numerc de colones, como as outros hnhos do tc belc.

NOVO- lilt..
TiRMO,.

Uma tabela armazena dad os persist entes. Ern outras palavras, se voce
coloca dados em uma tabela, e1es permanecem ai depois que seu programa
finalizar. Eles permanece rao ate serem ahera dos a u exclufdcs par seu pro grama
a u curro. 0 n ome de um a tabela eunico dentro do sistema R/3 inteiro.
Quando voce olha u ma tabe1a no DD IC , esta visualizando a descricto de
uma tabela no banco de dad os subja cen te. Voce nao esta olhando diretament e
a pr6p ria tabela de banco de dados. A Figura 2.9 mostra como u ma definicao
de tab ela aparece no R/3 DDIC.
No R/3 vmc estrutvro e urno descrit;60 de urn g ropo de compos. Elc descreve
os nomes de compo, suo seq uencia e sees tipos e comprimentos de dodos.
Ce do esmnurc fern urn nome q ue e c nicc dentro do sistema inteiro do R/3. Umo estrufuro
nCio pede ter 0 mesmo nome que umo tc belo.

NOYO ....

lIiMO"

Urn nom e de estrutu ra pede ser utilizado de du as maneiras:


Em urn prog rams, urn n ome de estrutura pede ser utilizado par a alocar
mem oria pa.ra urn grop e de campos.
Em uma tabela, urn nom e de estrurura pode ser utilizado p ara descrev et urn conjunto de campos.

F i g ur a 2 9

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

Estritam en te falando, uma estrurura e algo que 56 existe dentro do R/3


Data Dictionary. Se visse a palavra estrutura , voce imediatamenre pensaria na
"est ru rura de DDIC", Entretanro, a docum entacio da SAP ut iliza tambem a
palavra estrutura"para referir-s e a u rn grup o de varidveis dentro de urn programa. A estrutura ema re emostrada na Figu ra 2.10 como urn exemplo de como
uma estrutura ap arece n o DDIC.
Fi g ur a 2 10

A defjnit;dode ODIC
para 00 eslrvturo

emora.

69

4az::;:

cc;:_~

."' -

70

D1AU W PRIMEIRDPROGRAM> EM ABAPi<

APRENOA EM 21 DiAl ABAPH

No R/3, tabelas e estruturassao definidas no DDIC. Voce no tara entretanto, quando as visualiza, ha uma diferenca muito peguena entre elas. Isso e
porgue, no RJ3, uma tabela esomente uma descripio de uma tabela real de banco
de dados. E a estruturada tabelano banco de dados. Entao, tanto tabelas como
estruturas dentro do DDIC defin em urn layout - uma serie de campos. A
diferenca principal entre as duas eque uma tabela tern uma outra subjacente de
banco de dados associada a ela. VIDa estrutura rdo tern,
Algumas pessoas, as vezes, acham a documenrac ao do R/ 3 confuse, uma
vez que a SAP ocasionalrnente utiliza esses dais termos int ercambiavelrnent e.

Nco deixe em bronco 0 cc rnpc Maximum No. Of Hitspara exibir todos


a s registros, 0 menos que voce reolmente pretendo procurar no listo
Inteirc. Para tobelos grondes, isso pode conwrnir muito CPU nos dois
boncos de dodos e servidores de op licativo, clem de tombem ovme ntc r
significativamente 0 tr6fego no rede, fer nando ossim a sistema le oto.
Se um relotcrlo multo grande fo r necessaria, em gem ! ele deve se r
executodo em lote. A obo rdoge m preferida e estreitc r suo pesq uisa ,
digita ndo volores nos cam pos Doto Browser; Table: Selection Screen.
Isso sera a bordado em deto lhe em capitulos posteriores.
E.ig ll r g 2 1 1

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


Para exibir uma tabela au definicao de estrutura n~ DnIC:
1.
2.
3.
4.

r-ra II-!
1_ _

!
[ olt

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


1iolo . 5ol1jroo "lJ"Iiot

""' _ ~ .$""'"

1IftI " , -

A tela Data Browser:


Table Select Entries.

.-

<.

-: :,;,

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

Va para a Dictionary: Initial Screen.


Insira a tabela ou nome de estrutura no campo Object N ame.
De urn clique em Tables ou no bono de opcao Structures.
De urn clique no botao Display. A tela Dictionary: Table/Structure:
Display Fields e. exibida, como mostrado nas Figuras 2.9 e 2.10.

'.

.,l~
"

1~

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

Data
Dictionary, nao a tabela real de banco de dados. No R/3 , apenas a estrutura da
tabela pode ser definid a, jun to com alguns atributos com o os campos de chave
primaria.

Exibindo o s dodos no tabel o

R/3 tambern oferece urn utilitario para permitir que voce exiba os clados que
existem dentro de uma tabela . Para utiliza-lo:

1. Va para a tela Dictionary: Table/Structure: Display Fields.


2. Escolha a caminho de menu Utilitie s-s-Table contents . A Da ta
Browser: Table : Selection Screen eexibida.
3. Para exibir todas as linhas na tabela, pressione 0 botao Execute sem
inserir qualquer crirerio de pesquisa. A tela Da ta Browser : Tab le
Select Entries e exibida (vejn a Figura 2.11).

o numerc de registros 'exibido eIirnitado peIo valor no campo Maximum


No. Of H its na Data Browser: Tab le: Selection Screen.

71

Determ in a n d o compos exibidos


Voce pode con trolar quais campos serao exibidos na D ata Browser: Tab le:
Selection Screen. Para fazer isso:
1. Va para Data Browser: Tabl e: Selection Screen.
2. Es colh a 0 caminho de menu Sertings-> Fields for selection. A tela
Choose Fields For Selection e. exibida.
3. Faca uma marca de selecao nos campo s que voce quer incluidos na
Data Browser: Table: Selection Screen. Desanve qualque r urn que
voce nac quer que aparelia.
4. Pr ession e 0 bo- ac Execute. A Data Brow ser: Tab le: Selection Screen
e exibida e con tem os campos que voce selecionou.

72 APR ~NOA ~M
I

21 DIAS

ABAP/~
DIA7: seuPRIMflROPROGRAMA ~M ABAP/4 ,

Enten dendo a sintaxe do ABAP/4


Ante~ ~e contin.uar, voce agora deve executar 0 utilitdrio de configuracao de
exerctcm fornecido no CD-ROM. Ele criers as tabelas e os dedos necessaries
para. as exercf~ios neste livro . Para instrucoes, veja 0 arqu ivo readme. txt
localizado DO diretcrio raiz de CD -ROM.

73

1060
1070
1080
1090
2000
V1
Vl0

Vll

lntrcduzindo a instru~ao s el e;_,cJt~

---,---,

V12
V2
VJ

A instrucao sel ect recupera registros do banco de dados.

V4

Sintaxe para a instru,fio sel ect

VI

a seguinre c6d igo mostra a sintaxe simplificada para a insrru cdo se l ect:

tn

select .. from tl (i nt o 11'0] (where f l op vI and/or 12 op v2 .. .J [order by f l] .


(other abap/4 s t at ement s)
endselect.

onde:

"

* indica que todo s os campos na rabela devem ser recuperados.


tl ~ 0 nome deuma tab ela previarnenre definida em uma instrucio tabl es.
11 e a nome de urn campo na rabela t l ,
~p eurn dos seguin tes operadores logicos: =
v1 e urn literal ou um a variavel.
and/or e uma palavra and a u uma palavra or.

V9

Lf a1 e 0 to belc-mestre do fa brico nte no R/3. Zt xl f al foi criodo pelc


rotina de configuro~60 de CD-ROM e e se me lha nte a 1fa l, mas e
utilizado poro as exercicios neste livre.
com po 1i fnr 0 ccm po de
n c rnerc de fobriconte .

0202. Digite 0 c6diga como

a codigo na Lisragem 2.2 deve produzir esta safda:


1020
1030

1040

ANAlIS~ ~ Esse progr~mo Iefodos as reg isiros detobelo zt xl fa l e escreve a contecdc do


compo 1 i fnr (0 ncme ro do fob riconte ) em o rdem crescente.

Na Iinha 1, a instrucao report esolicitada como a primeira linha de urn


relar6rio.

Lista ge m 2. 2 Seu segundo prog roma

1000
1010

.
<> > >= < <=.

1- report ztx0202.
2 tables ztxlfal.
3 set ect .. f rom ztxl fill into ztxl fal order by 1ifnr .
4 write / ztxlfal -lifnr .
5 endselect.

SAioA~

V7

va

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

Crie urn novo p rograma e atribua a nome


mostrado na Listagem 2.2.

ENTRAOA~

YO

,
;!

N a linha 2, a instrucao tables faz a~ duas coisas. Primeiro, ela aIoca


uma area de mem6ria (chamada area de t ra balho) ide nt ificada ztx l f al.
A area de trabalho tern a mesmo layout qu e a definicao de DDIC de
rabela ztxlfa l. Segundo, ela da acesso ao p rograms para a tabela de
banco de dados ztxlfal.

,,

i!
I

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

DlH lEU PRIMEIBDPBOGRAMA EM ASAP/'


APRENDA EM 21 DIAl ABAP/4

lVI

lnlcie a NAYI Select Statement Processing'" ogora .

Prossiga os processamen tos como a seguir (veja a Figura 2.12) :


1. P ressione F 8 para executar 0 programa que causa uma solicitacao a
set enviada do SAPGUI para 0 dispatcher no servidor de aplicativo
para executar 0 programa ztx0202.

2. A solicicacao

e despachada

para

primeiro processo de trabalho

disponfvel.
3.

a contexte de usuaric edeslocado no processo de trabalha.

4. 0 prog rama

e recuperado do banco de clados.

5. 0 processo de trabalho aloca uma area de rolagem para armazenar as


variaveis do program a, 0 ponteiro atua l de programa e as alocacoes
privadas de mem oria.

6. 0 programa e int erpretadc pelc processo de trabalho no servidor de


aplicativo e corn elia execu tan do na linha 3. (As linhas 1 e 2 sao
declaracoes, Da O c6digo executavel .)
7. A linha 3 faz com que uma linha seja lida da tabela de banco de dados
zt xl fa l e colocada na area de trabalho identificada ztxl fa I.
8. A prim eira linh a de tempo 4 e executada, uma pagina vir tual ealocada
para a Iista.
9. A Iinha 4 causa 0 campo 1; fnr a ser escrito da area de trabalho ztx l fal
para a pegina virtual.
10. Alinha 5 faz urn loop novamente na linha 3.
11. A pr6xima linha e lida da tabela ztxl fal e e colocada na area de
trabalho zt xl te t, so brescrevendo a linha anterior..
12.0 campo 1; fnr e escrito na proxima linha da pagina virtual.
13. Os passos 9 a 11 sao rep etidcs para todas as linhas J?a tabela ztxlfal.
14.0 loop termina aut omaticamenre quando a ultima linha elida de
ztxl fa l.

15. 0 programa termina, mas a area de rolagem (contendo a pagina


virtual) perman ece alocada .
16. 0 processo de traba lbo determina 0 numero de linhas que a tela do
usudrio ecapaz de exibi- e errvia essas muitas linhas cia pagina virtual
como a pr imei ra pagina da lista para 0 servidor de apresentacao.

17.0 ccnrexro de usudrio e a area de rolagem sao deslocados para fora


do processo de rrabalh o.
Se 0 usuerio en rac pressionar Page Down,
como a segu ir (veja a Figura 2.13):

processamento prossegue

1. Pressionar Page Down [az com que uma soliciracfo seja enviada do
SAPGUI para 0 dispatcher DO servidor de aplicacivo para obter a
proxima pdgina de saida a partir de ztx0202.

2. A soliciracac e despachada para

0 primeiro processo de trab alb o


disponivel.
3. 0 contexte de usuario e a area de rolagem para ztx0202 sao deslocados
para 0 processo de trabalho.

4. 0 processo de trabalho envia a pr6xima pagina para

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

Figura 2 12

SAPGUI (Servidor de cpresel1tol;oo)

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

Mem6riaestendldo

DBS

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

':~~i ;

. .. L

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

17

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

processamento continua assim:

};

Se 0 usuario entao pressionar Back,

1. 'P ression ar Back faz com que uma sclicitacao seja enviada do SAPGUI
para 0 dispatcher no servidor de aplicativo para terminar 0 programa

ztx0202.
2. A soliciracao e despachada para 0 primeiro processo de trabalho
disponfvel.
3. 0 contexte de usuario e a area de rolagem para ztx 0202sao deslocados
no processo de trabalho.
4. 0 sistema libera a area de rolagem para 0 programa.
5. 0 contexte de usuario

edeslocado para fora da tela.

75

-.;

76

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

APR EN OA EM 21 OIAS AB.lP/4

DIA 2, l EU P'W.EliU P' 06RAJI,A EM ABAP/~

F jgura 2 13

Co mp arada a Listagem 2.2, apenas a linha 3 mu dou. Esse programa


funci ona exatamente da mesma maneira e produz a mes ma saida que a anterior.
C omo a clausula i nt o nao foi especificada na instrucao se 1ect, 0 sistema utiliza
a drea de trabalho cia tabela padrsc ztxlfal.

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

Para cop iar urn p ragrama , esc o lhc

cominh o d e men u Pro-

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

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

As.

Uti lizando uma area de traba lho explfcita

L-

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

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

.1..0
de

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

Sintaxe simplifica da para a instrucco data


~

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

Entendend o os areas d e tro bo lhos da tabela


TfRMO~

[NTiAOA~

'f

data

ItO

like tl.

onde:

Ita

e a n ome de um a area de trabalho de tabela qu e voce quer definir

e a no m e de uma ta bela qu e voc e quer para padrjio em sua area de


trabalho de poi s
.
tl

il...

No linho 3 do listog e m 2.2, as polovros ; nto zt xl f al sse opcion ois. Se voc e


debe-los de foro, 0 crec de trobolho co m 0 mesmo nome do tcbelo e uftlizode.
Em outros polovros, 0 linho otuol outomo ticomenfe entre no crec de trobolho ztxl fal.
Per esse rcreo , ela e canhecido como 6reo de trobolho do tobe lo podrt50. Nesse coso , a
c reo de trebo lho zt xl f al e 0 area padrOo pore a tobelc ztxlfal. Por isso, 0 c6d igo no
listogern 2.2 pode ser sirnplificodo como mostredo no listcgem 2.3.

NOVO

Abaixo eSta a sintaxe simplificada para a insrrucio data .

Listagem 2.3 Seu segundo prog romo simplificodo

1 report ztx0203.
2 t abl es ztx lfa l.
3 sel ect > f rom zblfal order by ll fnr .
4
write / ztxlfal- lifnr.
5 endset ect ,

A Listagern 2.4 mostra como utilizar a in srrucao dat a para criar um a nova
area de trabalho.

EKTWlA~ List a g em 2.4 Utilizando sua pr6pria a rea de trobolho de to bela


1 re port zb:0204 .
2 tables ztxlfal.
3 data Wi li ke ztxlfal.
4 select" tree ztxlfal into wa order by l t fnt-,
5 wr ite / ee - j tfnr,
6 endsetect .

77

--- 78

DlA 2:SEU PRIMEIRO PROGRAMA EM ABAPf4

APREN" EM 21 DIAS ABAP/4

c6digo na Lisragern 2.4 deve produzir a me sma saida que as duas


listagens anteriores (veja a saida cia Listagem 2.3). Observe que nesse exemplo
njio e necessaria defini r uma n ova area de trabalha - uma e utilizada apenas
para ilusrrar 0 conceito .

ANlus[ ~

A 1inha 3 define uma nova area de trabalha chamada ~a como a


estrutura zt xl fal de DDIC.
~ A linha-lle uma linha de uma vez cia tabela ztxl fal na area de trabalho

wa em vea cia area de trabalho cia tabela padrao.

NOVO....

Quando voc e explicitcmente atribui names a umo 6rea de trobclho

rrRMO"

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

ANALISE....

Este programa Ie todcs as reqlstro s de tobelc ztxlfal onde 0 nc rnero do


,. fahrican te e menar que 2000 e escreve 0 contecdo do compo 1i f nr (a ncmerc
de fabriconte). No banco de dodos, 1; fn r e urn compo de ccroctere cc nte ndo vclcres
nurr-ericos que estcc exa tcmente [ustificcdos e p reenchtdcs 6 esquerdo co m ze ros.
Portanto, 0 vola r a ser comparedo com 1; f nr deve fer 0 mesmo formata e tipo de dodos
pore evitor o converscc de dodos e osseguror que os resultados desejodos se jam obtido s.

no instru<;6a

e chomodo area de

frobo/he explfdfo .

latro d uzia do a c1ausulo where


Para resrringir 0 n umero de linhas retornadas do banco de dados, uma clausula
where po de ser adicionada a insrrucao select. Par exemplo, para recuperar
fabricantes que tern numeros de fabricante menores que 2000, utilize 0 c6digo .
na Listagem 2.5.

sistema R/3 tome as vcriovels de sistema disponiveis dentro de sev pro groma .
Voce n60 tern de defioir quolquer coiso para ccessc-lcs, elas estcc s.::mpre
disponive is e automaticomente sec ctucluodcs pe lo sistema como cltero coes sue s no
ombiente do progroma. Todos os vcrioveis de sistema comeccrn co m 0 prefixo 5Y - . Par
exemplo, a dote otuol de sistema esto dlsponrvel no ccmpo de sistema sy - datum e a ho ra
otuol em sy-uzeit. Em gerel, eles soo chomados obrevtcdcmente de com pos sy
[prc rw oclo -se "'sci'").

HDVO ...

HRMO'-

Todas as var iaveis de sistema sao definidas na estrutura sys t de DDIC.


Mas nao def ina syst em seu programa; seus campos estao dispo niveis automaticamente dentro de cada programa.

ENTRADA~ Lista gem 2.5 Restringindo os fabricantes selecionad05


as names de vcrtcveis de sistema podem ser codificodcs utilizando 0
prefixo sy- ou syst -. Por exemplc, sy-datum tornbem pod e ser
codiftcodo co mo sy st-datum; eles s60 funciono lmenle equlvclentes .
Sy- e 0 formvlcrtc preferido, embora voce occsionalmente veto sy stem progremos mais a ntigo s. Syst eo unico estrutura que tem umo
duolidade de prefixes . Para todos as outros, voce de ve utilizor 0 nome
complete de estruturo como 0 preflxo.

1 report ztx0205.

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

' 0000002000' order by lifnr.

endsetect .

o
SAiDA ~

<

c6digo na Listagem 2.5 deve produzir esta saida:

1000
1010

1020
1030

1040

..

1 ;

Note que codificar urn caractere literal em ABAP/4 (como '0000002000 I


na linha 3), deve envolver a string de caractere dentro de aspas simples.

Ira bo Ib ad Q co rn veri uxeis,-,d..,e"--,,s,;isut"'eJjrnLLO"'-

A linha 5 emi te a linha para wa em vel. de ztxl fal.

79

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

sy-subt-c

II

sy -dbcnt

I'

I
i

I
![

1050

of

1060
1070

or

1080
1090

Deseobrindo sy-subre
NOVO .... \ Pcro d~:e rmincr s.e a instru<;oo s e lect retor~ou qU~is~uer linhos: teste 0 volar
do vcridve ] de slstemc sy-subrc fprcnunclo-se sol-sub-cre-st"] depois do

HRMO"

instru<;oo endsel ect. Se as ltnhos foram loeo lizodos, a vclor de sy -s ubr c se ra O. Se


nenhuma linho [o! lccclizcdc, a valor sera 4. (Veic a listagem 2.6.)

:f
d

.f

---~~~~~~~~~~~~~~----------'--~---------------~
80

DIA 2:StU PRIMEIROPROGAAMA EM ABAP/4

APRENDA EM 21 DlAS ABAP/4

Depois de endselect. elo reter6 seu volar e entcc ccnterc 0 ruimerc de linhos selecionodos. Por exemplo, pora irnprimir rujmercs seqcenclots 00 lado de coda fobriconte
e imprimir um tolo l do nomero de llnhos selecionodos no po rle inferior do relot6rio, utilize
o c6d igo no listogem 2.7.

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


,.. fora m selecionodos
1
2
3
4
5
6

report ztx0206.
tables ztxlfal .
se lect .. from ztx'l f al where l f fnr > 'Z '.
write / ztx lfet-ltrnr ,
endselect.
H sy-subrc < > O.
7 write / 'No records found' .
B endif.

ENTRADAlItr.. Listagem 2.7 Utilizando 0 sy-dbcnt para co ntor lmhc s retomados do


"

No records found

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

~epois do

o codigo na Listagem 2.7 produz esta saida:

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

a codigo na Listagern 2.6 produz esta safda:


SAiDA

SAiDA
Muitos pclovrcs-chove otribuem vclores a sy -subrc . Algumas polovrcs-chove slmplesmente nco 0 configurorn. Se urne pe lovra-chave
configura sy -subre, as volores oossrvels 500 documentodos no ojuda
Fl para esse pclcvrc -chcve.

Se voce codificou u m a set ect e quiser testar 0 valor de sy-subr-c, seu teste
deve vir depois de en dse 1ect. Por que? A resposta reside no fato de que 0 codigo
entre select e end select e executado uma vez para cada linha retornada do
banco de dados .
Se nenhuma linha (zero) eretornada do banco de dados, 0 codigc entre
select e endselect nunea e executado. Pcrtanto, voce deve codificar 0 teste
para sy-subrc depois de endsel ect.

1
2
3

1000
1010
1020
4 1030
5
1040
6
1050
7
1060
8
1070
9 1080
10 1090.
11 2000
12 VI

21

Des cobrindo sy-dbc nt


NOVO ~

Poro determinor a nume rc de Jinhos retornodo por umo instru<;60 sel ect, teste
a valor de sy-dbcnt decors de endsel ect . Voce tombern pode utilizo-lo como
urn contodorde 100Pi entre sel ect e endsel ect , elcccntem uma soma do itera'ioo otuol.
Pore a prirneiro linho, sy -db cnt se ra 1, durante a segu ndo sera 2 e ossim por dionle .

VI2
V2
V3
V4

V5
V6
V7

22 VB
23 V9
1-3 registros encontrados

ANAliSE~

A linha 4 escreve 0 valor de sy-docn t para ca d a linha que e retomada


pela sel ect . A barra (/) comeca em uma nova Iin h a, eneao cada
sy-dbcnt comeca em uma nova linha.
A linha 5 escreve
sy-dbcnt.

II
I

13 VlO
VlI

14
15
16
17
18
19
20

Sy-subt-c noo e outomot icomente inicializodo como zero quando seu


progromo lntctc. Entretcntc, isso nunco deve ser umo preo cupoceo,
porque voce nee deve venficc-lo ate q ue umo instruceo que oconfiguro
tenhc exeeutado.

HRMO"

81

valor de ztxlfal- l ifnr na mesma linha que

-,;.;.:,

82

APRENDA EM 21 DIA l ABAP/'

Exi bindo

DIA 2:SEU PRIMEJRO PROGRAM.&. EM ABAP{4

es trutura sys t

Por exemplo, para definir duas tabelas, voce poderia codificar isro:

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

tables ztxlfal.
tables ztxlfbl.

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


de qualquer campo sy dentro de seu codigo

Va para

Data D ictionary , insira syst, se1ecione a bctao de 0pljao


Structure e pressione a batao Display

au, voce poderia utilizar

Para localizar C'flmpos dentro cia estrutura, pressione a batao Find na


barra de ferramentas Standard e digire 0 nome do campo que voce quer
local izar.
Se voce nao sabe 0 nome do campo que quer localizar, mas antes deseja
localizar urn par descncao, voce tambem pode pesquisar as descricoes.
S(RHN(AM~ lnicie a Screeotlcm "How to Seorch Through Field Descriptions" ogora.

Para pesquisar par descricoes de campo, utilize este procedimento:

operador de encadeament o, com o esse:

tables: ztxlfal. ztxlfbl.

Funcionalmente, os dais segmentos precedentes de c6digo sao identicos


e ern tempo de execucio nao hi nenhuma diferenca em desempenho. Durante
a gerecac de c6digo, 0 segundo segmento de c6digo e expandido em duas
instrucces. Entao, de um ponto de vista funcional os dois prograrnas sao
identicos.
as operadores de encadeamento devem ser ut ilizados p ara m elh orar a
legibilidade de seu programa. A utilizacao do operador de encad eamenro e
ilustrada na Listagem 2.8.

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

redundcnclc no instru<;:oo write

1. Comece na tela de campos Dictionary: Table/Structure: Display.


2. Escolha 0 caminho de menu Table->Print.. Uma caixa de dialogo
aparece ra perguntando quais compon-entes voce deseja imprimir.

. 3. Faca uma marca em todas as caixas de selecao e pressione

0 batao
Continue. Uma caixa de didlogo aparecera pergunrandc a voce as
parametres de impressao.

4. P ressione 0 borao Print Preview. A caixa de dialogo se fechara e uma


lista contendo uma pequena fonte aparecerd.
5. Escolha 0 caminho de menu Goto-> List Display. A Iista mudara para
uma fonte maier de especc fixo.
6. No campo de comando, digite %sc ~ pressione a tec1a Enter. A caixa
de dialogo Find aparecera.
7. Digite 0 texto que voce quer localizar e pressione a tecla Enter. Uma
lista de coincidencias aparecera e cada ccincidencia sera desracada.

8. De urn clique em uma pa lavra desraceda para pular imediatamenre ate


essa linha na lista. Se voce deseja localizar cutra ocorrencia do texto,
va para 0 passo 6 desse procedimenro.

Utilizondo

Nova... a

ope rodor de encodeomento

sinal de dois-pontcs (: l chamado operodor de encodeomento. Uttllze-c


HRMO""
para combiner linhas de c6digo que cornecom com e mesmo polcvro ou
seqvencio de polovrcs. Coloque a parte comum no comeco do i n stru ~a a seguida par
dois -ponios. Enta o, coloque as partes fmcls das instru<;6es depots dele, coda uma
seporoda par uma virgule.

1
2
3
4
5
6

report ztx0208.
tables ztxlfal.
select * from ztxlfal order bylifnr .
write: / sy-cbcnt , ztxlfal-lifnr.
endselect.
.
write: / sy-dbcnt, 'records found'.

a c6digo na Lisragem 2.8 produz a mesma saida que 0 pro gram a anterior
(veja a saida da Listagem 2.7).

ANAliSE ~

A linha 4 combina as linhas 4 e 5 da Listagem 2.7 em uma unica linha


utilizando 0 op erador de encadeamento.
A linha 6 combina as linhas 7 e 8 da Listagem 2.7 em uma u nica linha
utilizando o operador de encadeamento.

Utilizondo a

jnst[lJ~ao

sel eet si agl e

A instrucao select single recupera urn registro do banco de dadc s. Se voce


conhece a cbave primaria inteira do registro que deseja recuperar, se 1ect s i ngl e
emuito rnais rapida e mais eficiente que select/endselect.

Sintaxe para a lnstrucco select single


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

83

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

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


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

."""".

84

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

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

_ _......._ ...,....,..._ ........_ .......

DIA2: SEU PRIMEIROPROGRAMA EM A8AP/~

APREH D" EM 21 DIAS AB AP/4

III

s el ect

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

* indica que tcdos a s camp os na tabela devem ser recuperados .


tl eo nom e de um a tabela previamente definida em uma instrucao ta bl es .

wa
11

e0

Co me nta nd o

c6 d igo e a

d ocumenta~ao

...._ _ .

85

fo rm al

Ha duas maneiras de colocar comentarios em seu c6dig o:

onde:

~m

.....r-"_ _....

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

e0 nome de urn campo n a tabela tl.

op e urn dos seguintes ope radores


vl um literal ou uma variavel.

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

Urn * (asterisco ) na primeira coluna indica que a linh a inteira e urn


comentdrio. Ela ficare em vermelho dentro do edit or para indicar que
eurn comentario de linha inteira.
II . (aspas duplas) em qualquer luga r em uma linha indicam que a
res tante da linha e urn com entario. 0 com en rario nao ficar a em
vermelho como para urn comen tario de linha in teira.

and/or e uma palavra and ou uma palavra or .

P a r exemplo:
* Isto e um ccnentartc

as seguinte s pontos aplicam:

select si ngle nao corn elia urn loop porque ela apenas retoma uma
linha. Po rtanto, nao co difique uma instrucio endsel ect , Se fiaer i550.
voce obtera urn erro de sintaxe.

Certifique -s e de que uma linha un ica foi retomada, voce deve especificar todos os camp o s de chave prim aria na cldusula whe re. Se voce
nao fize r isso, seu p ro grama ex ecu tara, mas obt era urn aviso. (Para
ex ibir os avis os , es c ol h a 0 caminho de menu Programa Program-c-Check -> Display Warnings.)
A Listagem 2.9 ilustra a instrucao select s t ngl e. Para praticar, erie urn
novo program a e digite 0 c6 digo como mostrado na Listagem 2.9.

fHTRADA~

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

I repor t zt x0209.
2 tables zt xl fa l .
3 sel ect sing le * from ztxlfal where lifnr" 'VI ' .
4 if sy-subrc z o.
5 write : / ztxlfaI l i fnr , zt xlfal - namel.
6 el se .
7 wri t e 'record not found" .
8 endif.

SAiD! ~

o
VI

!NjllSE~

c6d igo na Listagem 2.9 produz esta saida:


Quantity first Ltd .
A linho 31ocolizo 0 fobrkonte VI no to be lo zt xl fal. Como apenos umo linha
foi retornodo, order by noo e necessaria e nem e endsel ect .

ta b' es ztxlfal.

" Isto t ambem e vm cement ar t 0

Nao ha caractere end- comnent (fim de co mentario). Em outras palavras,


quando voce comeca urn comentario, 0 res tante da linha sera apenas urn
comen tdric. Nenhum c6d igo adicional pode entrar nessa linha. 0 comentario
termina no final cialinha atual.
Independenremente dos comentarics, voce pode formalmente registra r
seu c6d igo no componente de document aci o do progra ma. Para fazer isso, va
para a tela Editor I nitial, de urn clique no batao de opca o D ocumentation e
pre ssione Change. Digite sua documentacio e pr essione Save.

Resum o
O s programas do ABAP/4 sao compostos de compone ntes . Os cornponentes sao atriburos, codigo-fonte, vari ante s, elementos de tex to e
documenracao. No minimo, urn programa deve ter atributos e codi gofonte.

Os rela t6rios do ABAP/ 4 devem comecar corn a instrucao re port.

A insrrucao tables aloca uma area de trabalho da tab ela p adrao e


tambern da acesso ao programa para a tabela de banco de clade s do
mesmo nome.
A instrucao se 1ect recupera as linhas de uma tabe la de banco de dad os.
Utilize select si ngl e par a recuperar uma Iinha. Utilize select/e ndse 1ect para recuperar multiplas linhas.
select/endselect forma urn loop. 0 codigo no loop e execu tado uma
vez para cada linha de tabela que sati sfaz a clausul a where. 0 loop
rermina automaticamente quando todas as linh as forem processadas.
Se voce DaO esp ecificar uma clausula ; nto, cada [inha sera colocada na
area de trabalho da tabela padrao e sobrescreverd a linha anterior.
sy-subr-c configurado como 0 se quaisquer Jinhas fo rem selecion adas,
e con figura do como 4 se nen huma linha for selecionada. sy-d bcnt e

.,..
86

- .....

'W' W

_ -w
DIA 2: SEU PRIMEIRDPROGRAMA EMASAP!.

"RENDA EM 1\ DIAl ABAP/4

aumentado sempre uma vez p elo loop e dep ois do endsel ect ele
con tem 0 mimero de linh as recuperadas.

edito r teria acabado. Hoi agora duas vers6es do seu pr ograma no


banco de dados: a versao alterada (a que voce acabou de executar)
e a original. (A versso alrerada e armazenada com urn nome
temporario que consisre em ! e os ultimos sere caracteres de seu
nome de programa.) Sevoc e agora retornar ao edicor e tent ar editar
seu programa no vamente, 0 sist ema detectara 3 presence de duas
vers6es no banco de dad os e exibira um a caixa de dialc go que
solicita 3 voce qual versao voce qu er ed itar, a primeira (salva) ou 3
temporaria. Para exibir a copia rempor aria (3 prirneira que voce
executou) simple smen te pressio ne 0 bo-ac Continue.

0 operador de encadeamento e dois-ponccs (:) . :E urilizado para


reduzir a redunddncia on de dua s ou mais insrrucoes comecam com a
mesma pala vra ou sequencia de palavras.

P&R

o
o

0-

e
o

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.

Quando copio urn programa in teiro, a inst ru cao report ain da


contem 0 nome antigo do relat6ri o. Mas se eu a executa, ele
roda sem erro . Ele nao dev eri a me dar u rn erro?

o nome de p r ogram a n a instrucj.o r eport e~brigat~ri o, mas nao


tern de corresponder com 0 nome real do pro grama. E apenas para
documentaclo.

Toda vez que efetuo 0 logoff do R/3 ob tenho uma caixa de


mensagern que diz "Unsaved data will b e lo st" - mesm o depois
que salv ei tude. POl' que~

H oi u rn r ecurso de AutoSave no editor como no MSWord?


Nso. Mas quando voc e quiser salvar basta pressionar a tecla El I.
As vezes, quando edito urn p rograma, obtenho u rna caixa de
dial ogo com a me n sagem "Program was temporarily buffered
(pos sibly due to a system error/failure) Choose one of the
foll owing op tions" - 0 prograrna ternporariamente teve uso
de bu ffer (possivelmente devido a urn erro/falha de sistema)
Escolh a u m a da s seguintes opcoes . Por que a vejo e 0 que devc
fazer ?
Isso signifies qu e ha duas copias de seu programa no sistema:
uma "rea l" e ou tra temp crdria. A remp oraria e criada quan do
voce executa seu programa sem pri mei r o salvd-Io. N ormalmente e excluida qu ando voce ret crna ao editor e salva suas
alteracbes, mas se voce an ormalmen te sai do editor, ela p ermanecera. Por exemplo, voce poderia modi ficar seu program a
e entdo executa-lo imedi atamente sem salva-Io. Se sen pr ograma produ zisse urn du mp p equ en o, v oce en tao precisaria
pressionar 0 botao Ex it e voltaria ao Wor kbench . Su a sessr c n o

o
o
o

Apesar de sua s p alavras , essa m en sagem njio signifies que ha


dados njio salvos qu e serao perdidos. Ela sign ifies "Se voce nao
salv ou seus dados, eles serdo p erdi dos" . A melhor coisa a fazer
e ap ena s ignora-la. Todo mundo faz issc .
Possa aninhar as in struco es sel ect dentr o de autra?
Sim, pede, mas n a m aicria das vezes voce nao deve, p orque ela
po d e ser extremamen te ineficiente. Uma altern ativ e melhor e
u rilizar um a visualizapi o do banco de clade s.

Wo rksho p
Os exercrcios a seguir oferecem uma prarica para utilizar 0 editor e escrever
progra mas simples que utiliz am as instrucoes t abl es, sel ect e wr it e. As
respostas estao n o Apendic e B, "Re spos ras as pergumas e aos exercfcios" .

87

..,

"::'!!!'-------------~-88

APREHDA EM 21 DIAS AWl'

Teste
1. Quais as duas coisas que a instrucao tabl es faz?
2. A que 0 termc area de trabalho da tabela padrao se refere?
3. Se a inscru cao sel ect esta faltando em urna clausula ; nto, onde
entrarao as linhas?
4. Se uma inst rucao write nao contem uma barra, a safda e escrita na
mesm a linha que a saida para a instrucfo write an terior ou e escri ta
em uma nova linha?
5. Qual e 0 nome da varidvel de sistema que ind ica se quaisquer linhas
for am localizadas pela instrucao select?
6. Qual e0 nome da variavel de sistema que indica quantas linhas foram
localizadas pela insrrucao select?
7. .Veja a Listag em 2.6. Se h a 30 linhas na rabe la ztxl fal, quanras vezes
a linha 4 foi executada?
8. Veja a Listag em 2.6. Se a tabela ztxlfal esdver vazia (se contem 0
linhas), guantas vez es.a linha 4 foi executada?

Exe rcfcio s do ed itor


No exercfcio a seguir, voce copiara urn programa, corrigira erros no codigo,
mesclara novo c6d igo nele, executara, imprimira, carregara, criara uma versao
e comparara versoes . Veja a Tab ela 2.3 quando necessaria.
1. Copie a program a zty0200a para 0 programa 0200a. Para executar
a c6p ia, utilize 0 botao Copy localizado na barra de [erramentas
Application do ABA P/4 Ed itor: Initial Screen.
report zty0200a.
sel ect v from ztx lfal.
write / ztxl fe l-Hfnr .
endsel ect
endsel ect . ~ linha duplicada intencionalmente
r eport zty0200b.
if sy-su brc <> o.
write : / ' no records fo und' .
endif.

2 . Edite 0 programa - 0200a. Corrija 0 nome de relat6rio na insrrucao


report.
3. Insi ra uma nova linh a depois da linha 1. Digite a instrucao tables
apropriada nessa linha.
4. Obtenha ajuda para a instrucfo tables. (Coloque a cursor na instru~ ao tabl es e press ion e F1.)

",.

D1A 2,SEU PRIMEIRO PRDGRAMA EM AMP/4

89

5. Retorne da ajuda novamente para seu programa. (Pres sion e 0 bo rao


Back na barre de ferram entas Application.)
6. Exiba as arribuicoes de tecla de funcio. (De urn clique com 0 bono
dire ito do mouse em qualquer lugar na area de tela da janela.)
7. Traga a linha 3 para 0 tOPO da tela . (De urn clique duplo no espaco
em branco na linha 3, mas nao em uma palavra .)

8. Exclua a Iinha 6. (Cologue 0 cursorna linha 6 e pres sione 0 batao Cut


na berra de ferramentas Application.)
9. Abra uma nova sessao e exiba a programa zty0200b. (Escolha 0
caminho de menu Syst em-> Create session. Uma nova janela de SAP
R!3 e exibida. Escolha 0 caminho de menu Tools- >ABAP/4 Workbench. A telaABAP/4 Development Workbench eexibida. Pressione
o botac ABAP/4 Editor na barre de [erramentas Application. No
campo Program Name, digite zty0200b. Pressione a bocao Display.)
10. Marque as linhas 2 a 4 utilizando 0 botac Select. (Coloque 0 cursor
na linha 2. Pressione a borao Select na barra de ferramentas Application . A linha 2 tom a-se azu l. Coloque 0 cursor na linh a 4. Pressione
o botao Select novamente. As linhas 2 a 4 sao rnarcadas em azul.)
11. Copie 0 bloco marcado para 0 buffer X. (Escolha a caminho de menu
Block/Buffer-> Copy to X Buffer.)
12. Alterne de volta para a jane la em que programs - 0200a e exibido.
13. Cole as linhas do buffer X depois da Iinha 5. (Cologue 0 cursor na
linha 6. Escolha 0 caminho de menu Block/Buffer-> In sert X Buffer.)
14. Marque 0 bloco de linhas 6 a g. (Coloque 0 curs or na linha 6.
Pressione 0 botao Select na barra de [erramentas Applicati on . Coloque 0 cursor na linha 8. Pressione 0 botac Select novamente .)
IS. Mova 0 bloco quarro espacos para a esquerda, alinhe a inst rucao ; f
com a inscrucao select. (Coloque 0 cursor na linha 6 na coluna 1.
Pressione 0 batao Move Line na barra de ferramentas Application.)
16. Escolha 0 caminho de menu Program->Save As e salve seu programa
modificado como > - 0200b.
17. Exiba 0 programa _ . -0200b utilizandc 0 caminho de menu Program-> Other Program.
18. Corrija 0 nome de programa na instruqao repo rt. (Altere _ 0200a
para 0200b na linha 1.)
19. Selecione as linhas 3 a 5. (Cologue 0 cursor na linha 3. Pression e 0
batao Select na barra de [erramentas Application. Coloque a cursor
na linha 5. Pressione 0 batao Select novamente.)
20. Ccpie 0 bloeo selecionado para a buffer interne do pr ograma. (Pressione 0 batao Copy To Buffer na barra de ferram entas Application.)

.,

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

~-

..

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

....~""r-"--....e-"="....,=-....",......,.....

-~~~~---~

. w_

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

I APRENDA EM 21 OJAS ABAP/~

DIA UEUPRiMEIRDPRDGRAlIA EM ABAP/4

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

bordo Undo na barra de

24. Digite 0 seguinte c6digo nas Iinhas 12 a 14. Comece cada Iinha na
coluna 1.

35. Utilize urna teela de funcac para salvar seu p rograma e outra tecla de
funlJao para execun-la. (Pressione F I t. Pre ssion e F 8.)

if sy-dbcnt > O.

write :
endif.

sy-obcnt , ' records found' ,

25. Automaricamente fixe a endentacao, escolhendo 0 caminho de menu


P rogram- > Pretty Printer.
26. Salve seu p rograma. (Pressione

34. Substitua todas as ocorrencias cia s tring zt xlfal nas linhas 10 e 11


com a string ztxlfbl utili zan do a fun~ao Search/ Replace. (Culo que
o cursor na linha 10. Press ione 0 borso Select. C oloque 0 cursor na linha
11. Press ioneo botao Select. As linha s IDe 11 agoraesno marca d as como
urn bloco em verrnelho. Pressione 0 botao Find.. A tela Search/Replace
eexibida. Digite ztxl fal no campo Find. Paca um a marca de selecao na
caixa de selecao Replace By. Digire ztxl fbl no campo Rep lace By.
Pressione 0 botao Continue. A tela ABAP/ 4 Editor: Edit Program e
exibida . Pressione 0 botec No Confirmation . Tod as as ocorrencias
cia string dentro do bloco marcado sao substitufdas.)

botso Save.)

27 . Retcme para 0 ABAP/4 Editor: Initial -Screen e documente seu


programa. (P ressione 0 batao Back na barra de ferramentas Standard.
Escolh a 0 bo tao de opcao Documentation. Pressione 0 bouo
Change.)
28. Salve sua documen tacao e retom e para editar 0 codigo-fonte. (Pressione 0 botao Save. Pressione 0 botao Back. Escolha 0 botao de op~ao
Source Code. D igite 0200b no campo P rogram. Pressione 0
bo tao - p ushbutton - Change.)
29 . Exi ba as componentes cia estrutura SYST clando urn clique dup lo em

urn campo sy. (De urn clique duplo na palavra sy-subrc na linh a 6. A
estrutu ra SYST e exibida .)
30. Rerorne para .edirar seu programa. (Pressione 0 botac Back.)
31. Localize a primeira ocorrencia da string ztx lfal em seu programa.
(Pressione 0 bon o Find. A tela Search/Replace e exibida . Dig ire
ztxlfal no camp o F ind . Pressione 0 bo tao de op~ao From Line.
Pressione 0 botao Continue.)
32 . Repita a pesquisa, localizando cada ocorrencia sucessiva ate que voce
encontre to das elas. (Pressione 0 batao Find Next repetidamente ate
a mensagem "Strin g wri te not found" aparecer na barra de status na
parte inferior da janela.)
33. Adicione a nome de tabela zt x'lfal a instrucfo tabl es. (Alterando a
instrucao de tabe las, de modo que e1a exiba tables: ztx'l tef ,
zl xlfbJ.)
,

36. Salve a saida de lista para urn arqu ivo em seu disco rigido esco lhendo
o carninho de menu List - c-Save- > Fi le. Utilize formate nao convertido.
37. Exiba sua saida descarregada ut ilizando 0 Bloeo de N ota s.
38. Retorne para editar seu codigo. (Pressione

b otao Back.)

39. Faca download de seu prograrna para 0 arquivo c: \ temp\ 0200b. tx t.


(Escolha 0 caminho de menu Utilities- c-Download. A tela Transfer
to a Local File e exibida. Digite c: \ t emp\ 0200b. tx t n o campo File
Name. Pressione 0 botao OK. A mensagem "277 bytes tr ansferred"
aparece na barra de status na parte inferior da jane1a.)
40. Ed ite seu programa depois de fazer download ut ilizando 0 Bloco de
Notas. Adic ione urn comentario de linha inteira dep ois da in stru cao
de relat6rio com seu no me nele . (Insira uma n ova Iinha .depois cia
insrructo report: *Created by Seu nome.)
41. Digite 0 segu inte comentario no final da primeira ins truc io sel ect:

II

read all records from table ztxl fal.


42 . No Bloco de Netas, salve seu program a modificado em disco.
43. Carregue-o, substituindo 0 programa 02QOb. (Alterne para sua
tela ABAP/4 Editor: Edit Program 0200b. Escolha 0 caminh o de
menu Utilities-> Upload. A tela Import Local Fil e e exibida. No
campo File N ame, digite c: \ t emp\ 0200b. txt . Pressione 0 botao

OK.)
44 . Salve 0 programa carregado. (P ression e 0 batao Save.)
45. Imprima seu programa. (Pressione 0 botao Print na barra de ferramentas Standard. A tela Print Paramet ers e exibida. Ce rt ifique-se de
que a caixa de sel e~ao Print Immed. est a at ivada. Pressione 0 botao
Print . Sua saida e enviada para a imp ressora e voc e e ret omado para a
tela ABAP/4 Edi tor: Edit Program.)

91

92

- -D1A 7:SEU PRIMEIRO PROGRAMA EM AIIAP/4

APRENOA EM21 DIAS ABA P/4

55. Remova os com entarios utilizando


Buffer-c-Delete Comment ::-.

46. Execute seu programa e imprima a safda. (E scolha 0 caminho de menu


Program-> Execute. A safda de lista eexibida. Pressione 0 botjio Print
na barra de ferramentas Standard. A tela Print Screen e exibida.
Ce rt ifique -se de que a caixa de selecao Print Immed. esta ativada.
Pressione 0 bene P rin t. Voce acaba voltando para a safda de Iista.)

fxerdcios de

49 . Salve suas alreracoes. (Pressione

botao Save.)

50 . Retorne ao edito r tela inicial e compare as duas vers6es. (Pressione 0


bo tao Back. A ABAP/ 4 Editor: Initial Screen e exibida. Escolha 0
cam inho de me nu U rilities -c-Version management. A te la Vers ions
Of O bject 0200b Of Type REPS e exibida. Eaca uma marca de
selecao na caixa de selecao Version 00001. Pressione 0 bor ao Compa re na barra de ferramentas Application. A tela Compare Programs:
All e exibid a. Role para baixo para visualizar as diferencas .)
5 1. Recu pere a vers ac original. (Pressione 0 botao Back. A tela Versions
Of O bject ' 0200b Of Type REPS i exibida. Remova a marca de
selecso da caixa de selecao Act. Pressione 0 bono Re trieve na barra
de [err ame ntas Application (0 sistema nao oferece uma resposta).
Pressione 0 bon o Back. A tela Res tore Version e exibida . Pressione
o botao Yes. A tela Versions Of Object e 0200b O f Type REPS i
exibida. Pressione 0 bo eso Back. A ABAP/4 Editor: Initial Screen e
exibida.)
52. Edite seu p rograma e m arque as ulrimas tres Iinhas como urn bloco.
(Pressione 0 bono C hange. A tela ABAP/4 Editor: Edit Pro gram i
exibida . Colcque 0 cu rsor na linha 13. Pressione 0 botao Select. A
lin ha 13 torna-se vermelha. Coloque 0 cursor na linha 15. Pressione
o botao Select. 0 bloco e marcado em vermelho.)
53. Comente 0 bloco utilizando 0 caminho de menu Block/Buffer-> In sert Comment ".
5 4. Marque as ultimas tres linhas como urn bloco (veja 0 passo 51) .

caminh o de menu Block!

pro-9
,j.rua.umLJ.lla.l.l~
...
6.l.1o",-

1. Escreva urn programa que recupere todas as linhas da tabela ztxlfb i


onde 0 codigo de empresa e igual ou maier que 300 0. Em cada linha
da safda deve aparecer 0 codigo de uma ernpresa e 0 numero de urn
Iabricante, com 0 primeiro c6digo de empresa. A safda deve ser
classificada primeiro pelo c6digo de empresa em ordem ascendente,
depois pe lo mimero de fsbricante em ordem desce nden te. (Utilize a
ajuda Fl para localizar a sintaxe correta.) Atribua nome a seu programa e0201. Urn exemplo de como sua saida deve aparecer e
mostrado a seguir.

47. Retome para editar programa 0200b e salve uma versao dele no
banco de dados Ve rsions. (Pressione 0 botao Back para retornar para
a tela ABAP/4 Editor: Edit Program. Escolha 0 cam in ho de menu
Program->Generate Version .)
48. Substirua todas as ocorrenc ias de ztxlfbl com ztxlfc3. (Pressione 0
boeo Find. A tela Search/Replace e exibida. Digire ztxl fbI no campo
Find. Faca uma marca de selecao na caixa de selecso Replace By. Digite
ztx l fc3 no campo Replace By. Pressione a batao de opcao In Program.
Press ione 0 bon o Continue. A tela Global Replace In Programs e
exibida. P ressione 0 botao No Confirmation . Todas as ocorrencias da
string sao substituidas. Pressione 0 batao Save. Pressione a batao Back.
Voce e retornado para a tela ABA P/4 Editor: Edit Program.)

93

SAioA~

1000
1000
1000
2000

Y9

YB
Y6

V9

2. Copie 0 progl'ama zty0202 para e02D2 (a listagem aparece a


seguir). Ele nac produz qualquer saida. Localize 0 bu g n ele e corrija-o.
Depois de voce [azer isso, a safda correta deve ser no re cor ds found.
1 report zty020Z.
2. tables 'ztx1fal.

3 select * from ztxlfal where lifnr l ik e 'W%'.


4

5
6

if sy -subrc <> O.

write / ' no records found '.


endt f.

write / ztxlfal-1ifnr.

endsel ect ,

3. Copie 0 programa zty0203 para e02Q3 (a listagem aparece a


seguir) . E le contem urn erro de sintaxe e urn bug. C o rrija 0 erro de
sintaxe e 0 bug. Quando corrigido, eIe deve exibir numeros de
fabricante maiores que 1050 da tabela ztxlfal.
1 report zt y0203.
2 tables ztxlfa1
3 setect > from ztxlfal where 11fnr
4 write / ztxlfa1~ 1i fnr .
5 endse1ect .

>

' 1050' .

4. Copie 0 programa zty0204 para e0204 (a listage m aparece a


seguir) . A safdaestd incorreta. Olhe a saida, descubra 0 que ha de
errado e corrija 0 programa.
1 report zty020 4.
2 tables ztxlfal.
3 select'" from ztxlfal where 1ifnr
4 write I ztxlfal-1ifnr.

>

' 0000001050'.

94

m END> EN 21 DIAS Am"


5

ends! 1ect

6 if sy-dbcnt <:> O.
7 write I 'no reco rds f ound ' .
8 endH .

5. Copie 0 program a zt y020S para e02 DS (a listagem apare ce a


seguir}. A safda esta incorreta. Examine a safda, desc ubra 0 que ha de
errado e co rrija 0 p rograma.
1
2
3
4
5

report zt y020S.
tab les zt xl fal .
setect ... from ztxlfal wh ere lHnr
endselec t.
write / ztx lfal-l ifnr.

:>

' 0000001050' .

6 i f sy - subrc <> O.
7 writ e I ' no records found ' .
B endi f.

6. Copie a programa zty0206 para - e0206 (a listagem aparec! a


segu ir). Simpl ifiqu e 0 programs removendo 0 codigc desnecessario
e palavras inuteis.
1 report 2t y0206 .
2 tables : ztx 'lf al , ztx l f bl . ztxlfc3 .

oData Didionary, Parte 1

3 data we l i ke zt xl f bl.
4 setect > f rom ztxlfal into ztx lfa1.

5 write I ztxlfal- lifnr .


6 wri t e ztxlfal -namel.
7 enese1ect .
8 if sy- subrc <> 0 or sy-dbcnt .. O.
9
write / ' no records f ound i n ztxl fa l" ,
10 endif .
11 ul t ne.
12 set ect ... f rom ztxl fbl int o ea .
13 write / ee- Itfnr- .
14
write wa-bukr s .

Objetivos do capitulo
Depois de coinpletar esse capitulo. voc e devers set: capaz de:
D efin ir as diferencas ent re tabelas transparente, de pool e de cluster
Criar dominies, elementos de dados e tabelas tra n sparen te s no Data
D ictionary
Crier aju da Fl para os campos de uma tabe la e criar vinculos de
hipertexto dentr o ciaajuda F l

15 encsete ct ,
16 if sy-subrc <> O.
17 write I 'no record s found'.
18 endi f .

U tilizar os qua tro navegadores de clades fo rn eeidos pela SAP para


visu alizar e m odificar dado s de ntro de tabelas

7. C opie 0 prog rama zty0207 para e0207 (a Iisragem aparece a


seguir). Ele contem tanto urn erro de sintaxe como urn erro de
prog ramacao. D esc ubra 0 que hi de errado e corrija 0 pro grama . A
safda deve exibir urn un ico registro (fabricance 1000) utili zan do a
est ru rura (co ns tru ct) de programacfo mais eficiente.
1 re port zty0207.
2 ta bl es zt xlfal.
3 sele ct s ingle '" from ztxlfa l whe re lifnr > ' 0000001000 ' .
4
write I ztxlfal -l1fn r.
5 endsetect
6 if sv- suer c <> O.
7 writ e I ' no records f ound' .
8 endi f.

Oe.scobriodo oiveis de versoo do R/3


NOVO....

H6 muitas versees - tombern chemodas niveis de versec - do sistema R!3


em utiliza~6a nos die s de ho]e. A verscc 3.0 foi a primeira, mas desde suo
introdu i)c o, a SAP tcmbem lc ncou as versoes 3 .0 a 3.Of, 3.1 g, 3.1 h e 4.00 0 4 .0c . Voce
pode de terminer a nlvel de versec de se v sistema utilizanda a caminha de menu
System- > Status.

TEUD '"

Este livre foi tes tado em urn sistema 3.of. Seu siste ma pe de ser em Outre
nivel de versao. Embora a maicria das difer encss deva ser menor com referencia
aos temas abord ad os aqui, algum as pod em causar confu seo au most rar infer-

hllpJlwww.ccmpl1$.com.br

----~~--~ - - - ----------- -- - - - - - - - - ~
96

APRE MDA EM 21 DIAl ABAP/~

DlA3:0DATA DlaJONARY,PARTEI

macoes neste livre como incorretas. P or exemplo, caminhos de me nu po dem


ser alterados ent re os nfveis de versao. Sempre que possfvel, as di ferencas que
pod em causar confusao foram observadas neste texto. Entretant o, se a fun cionalid ad e em seu sistema parec e diferir da descrit a aqui, voc e pode cons ultar as
no tas de versao do R/3 , disponfveis online, para det erminar se a diferenca po de
ser atribulda ao nivel de versa-a. Para acessar as notas devcrsao, u tilize 0 segu inte
proc edimen to:

Explorando os tipos de tabelas em R/3


No R/3 ha tres tipos de tab ela: tab elas t ransparent es, de p ool e tabelas de
cluster, Elas sao mos t radas na Figura 3,1.
Fig urQ 3 1

as fr!s tipos de tobelo


no Data Dictionary do

R/3.

Tob./o ~'p<l,.ft"

S(RHH(AM ~ lnicie a ScreenCom "How to Display R/3 Release Notes" ogara .

P ara exibir as notas de versao do R/3:

1. Va pa ra

0 m enu p r i nci p al e es co l ha 0 ca m inho d e menu


T ools->Find->Search Interface. A tela Search Interface: Request
aparece.

2. Escolha

3. Pressione

",b.le>T9

borao de opca o RELN.


0

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

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

Find Release Notes

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

eexibida.

.o<""""",ltmo,"...".o

~,

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


List of Release NOtes

~o<nl!

0 "' belc> DOICIVJ

eexibida.

ITlJ """"-A

Moo"", ..bel",

"" R/3, m<>' "p'"''''


u"'" '" be'a "" DOIC.
At. Ichb. "" IVJpode m
"" hila I., ",,"'pc" d.
e..... . p<imO';"

",b."'T9

"'belode

bo",,"----

ITT]

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

.", 0GnI"",

.o.q....... "'llelcl.> ""


R/3. """.0 Iab.le> ""
booc:"d. dod... .

At. ",bel", I'", pole>

""""" ..."'" e"""


",;",oM ,m """''''''

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


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

5. D e urn clique em qualq uer + (sinal de adicec) pa ra expandir

0 no .
Modifications To ABAP aparecera sob 0 no de Basis, debaixo do
subn6 ABAP/4 Development Workbench.

Aproundando-se no R/3 Data Dictionary


Como uma revisao , por favor espere alguns minu tos e releia a sec;ao no Dia 2
intirulada "Introduzindo o R/3 D ata Di ctionary" nesse mement o.
Os objetcs Data Dictionary sao utili zados na mai or ia do s programas
ABAP/4. A natureza do entrosam entc dos pro gram as em A BA P/4 e objeto s
DDIC tornam 0 conhecimento profu n da do D ata Di ctionary do R/3 uma
ha bilidade essencial de programacao. Portemo, comecand o co m esce capitulo,
voce aprendera a criar objeros DDI C co mo tab elas, elem entos d e daclcs e
domfnios.

Muites cble tcs de dese nvclvlmento ufilizodos com o exemples 0 0 le ngo


de fodo esfe livre (como tobelos, dominios e e lementos de dodos ) sao
bosec dos em oo jetcs reo's de desen volvlmen to no sfstemc R/3. O s
objetos de exernplo te reo a mesmo nome que a s o bletos do R/3 reots,
mas eles serco prefixodos com ztx. Par exemplc, 1f al e umo tabe lo
real em R/3 e a fobela de exemplo neste livre e zt xlfal.

Tobe los transporentes


NOVO ~
TERMO '"

Umo tobeio transporente no dlclcncrlo fern relocionomento um-poro-um com


umo tcbelc no ba nco de dod os. Sua estruturo no Dcto Dictionary do R/3
cor respond e a uma unicc fabelo de ba nco de dodos. Para coda defjnii;ao de tcbelo
fronspa rente no dlcloncrlo, he umo tobela ossociodo no banco de dodos. A tcbelc de
ban co de dodos tem a mesmo nome, a mesmo num erc de co mpos e as compo s tern a s
rnesmos na mes q ue a deflnlccc de fobe la do R/ 3. Quando examiner 0 de finiC;a o de umo
tobelo tronsporente d o R/3, voce po de oche r q ue estc olhando par a a proprio fabela de
banco de dodo s.

NOVO...
Tn.MO ~

As tab ela s trcn sporentes sec multo mois comuns do que as tobelos de pool cu
de duster. Elcs sao utilizad os pa ra a rmazenor dodos de oplicotivo. Os dodos

de cplicctivc sao os dc dos-mestres o u c s dodos de frc nsc coo ufilizodos po rum cpllcotlvo.
Um exemplo de dod os-mestres e a tobelo de fobrico nfes (chomoda da dos-mestres de
fa briconfes) ou a tobe lo de clientes (cham oda dados-mestres de di entes). Um exemplo
de dodos de trcoscceo sec a s pedidos feito s pelcs cllentes ou as ped idos envia do s para
as Icbricont es.

As tabe1as rran sparent es sao provavelmente 0 unico tip o de tabela que


voce criara.. As tabelas de pool e de cluster nao sao normalmente utilizadas para
armazenar dados de aplicativo mas, em vez dis SOl armazenam dado s de sistema,
como as informac oes de configu racao de sistema ou dado s esratlsticos e

historiccs .

97

98

DIU DDATA DICTIDNARY, PAR" 1

"RE NDA EM 21 DIAl ABAP/4

Alguns exemplos de dados contidos nas tabelas de pers onalizacao sao


ccdigos de parses, c6d igos de regiao {esrado au provincia), numeros de conta
de reconciliacao, taxas de cambio, meeodcs de depreciacfo e condicces de
pre c;o. Cada fluxo de tela, validacao de campo e atributos individu ais de campo
sao as vezes ~orientados por tabela via configuracces nas tab elas de personalizac;ao.

Tanto as tabelas de pool como as de clus te r tern relacionamentos rnuieospara-urn com tabelas de banco de dad os . As duas podem aparecer como m uitas
tabelas em R/3, m as elas sao arm azenadas como urna iinica tabela no banco de
dados. A rabela de banco de dadc s tern urn nome diferente, numero de campos
diferente e nomes de campo diferentes dos cia tabela do R/3. A diferenca entre
as dais ti pos permaneee na carac terf srica dos dados que des armazenam e sersc
expli cadas nas se~6es a seguir.

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


",-,'

99

Fig ur a 3 2

As lobe/os de pool

femum

re/ocionome"to

lOYD Il..
illitO "

mvitos-poro-um com

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

pools d" tcbelo. .

tc belo no banco de dodos [vejo as Figuros 3.1 e 3.2). Pore ume tcbelc no
bonco de dodos, ha muitos tabelos no Dota Oid ionory do R/3 . A tobelo no bonco de

-:

dodos tern um no me diferen te do dos tcbelcs no ODIC, tem um ncrnerc de campos


diferente e os compos tornb em tem nomes dlferentes. As tobelos de pool sao umo estruturo
(construct) pro priet6rio do SAP.

NOYO Il..
TfUO"

Quondo exomino umo tcbelc de poo l no R/3, voce ve umo descdccc de umo
fobelo. Entretonto, no banco de dodos, elc e onnozenodo junto com o utros
tcbelcs de pool em umo cntcc tobelo chomodo pool de tobelos. Urn pool de tobe los e
umo tobelc de banco de dodos com umo estruturo especicl que perm ite qu e 05 dodos
de muitos tobelos do R/3 sejom ormozenod os dentro dele. Ele pode openos ormo zenor
tcbelcs de pool.

o R/3 utiliza poo ls de tabela paraarmazenar um grande numero (dez enas


a milhares} de tab elas muit o pequenas (ap roximadamenre de 10 a 100 linhas
cada um a}. Os poo ls de tab ela reduzem a quantidade de recurs os de banco de
dados ne cessarie s quando mui ras tabelas pequenas tern de ser abertas ao mesmo
tempo. A SAP as uriliza pa ra dados de sist ema. Voce pode criar urn p ool de
tab elas se precisar criar cen renas de pe quenas tabelas que armaze na m , cad a uma,
apenas algum as linh as de dados. Para impl ernentar essas pequenas tabelas como
tabelas de pool, voce prim eiro cria a defini~o de urn pool de tabelas no R/3 para
arm azenar to das elas. Quando ativada, uma unica tabe1a associada (0 pool de
tabelas) sera criada n o banco de dados. Voce entdo pode definir as tabelas de pool
dent ro do R/3 e at ribuir t odas etas ac seu pool de tab elas (veja a Figura 3.2).
As tab elas de po ol sao prin cipalmenre utilizadas pelo SAP para armazenar
dad os person alizados.

Durante a implemenracic inicial do sistema os dad os nas tabelas de


personalizacao sao configurados par urn analista fun cional . Es se pro fissio nal
nonnalmente tera experiencia relacionada co m a area de ne g6cio sendo implernentado e recebera treinarnen to ex tenso na configuracso de urn siste m a R/3.

Cluste rs de to bel a e tobe los de cluster


Umo tobe /o de cluster e seme lhante a umo tcbelc de pool. Elo te m um
relocionomento muitos-porn-um com umo tc belc no banco de dodos. Muifos
tobelos de cluster 560 o rmozenodos em umc unico tobelo no ba nco de dodos chomodo
d uster de tobe /os.

HOYO ....
mM.O "

Um cluster de tobe/os e semelhonte 0 um poo l de tcbelos. Ele ormozena muitos


tobelos den tro dele. Tcdos cs tobe los que ele o rmozeno 560 tobelos de cluster.

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

APREIiDA EM 21 OIAS ABAP/4.

OIA 3:0DATA DlGlONARV, PARTE 1

Os clusters de tabela contem menos tabelas que as pools de tabela e,


dif erenre dos pools de tabela, a chav e p rimaria de cada tabela dentra do cluster
de tabelas ccrneca com a mesmo campo ou campos. As linhas das tabelas de
cluster sao combinadas em uma (mica linha no cluster de tabelas. As linhas sao
combinadas com base na parte cia chav e primaria que elas tern em co mum.
As sim , quando uma linha elida de qualquer uma das t abelas no cluster, codas
as linhas relacionadas em todas as t abelas de clus ter t am bem sao recuperadas,
mas apenas uma {mica E/S e necessaria .
Urn cluster e vantajoso no caso em que as clados sao acessados a partir
de multiples tabelas simultaneamente e essas tabelas tern pelo menos urn de
seus campos de chave primaria em co mum . As t abelas de cluster reduzem 0
numero de leituras do banco de dad os e assim melhoram 0 de sempenho.

Ccbeco lhc do pedido

dodos de

1000
1000
2000
2
2000
3000

PK
1000
2000
3000

0. c/adm0P'l"'''''''

Header Data
Hec er Data
Header Dolo

no R{.!"""", so

,",I~ ....

. ", ."..

'-

IObolo, .. ~,.do,.

0"""'.""'"

01
02
01

clII1lor: ~

CDHDR

I
I

Cluster !able

Change document header


Field nama

03
01

Variable lenght row....... r


1000 Order Heoder Dote 0 1 ITEM 1DATA
2000 Order Heeeer Dote 0 1 ITEM10ATA
3000 Order Header Data 0 1 ITEM10ATA

-'-

02
02

COpa s

Field name
MANDANT

OBJECTCLAS
OBJECTID

CHANGENR
TABNAME

CHNGIND

Key Typa

l engtll

171 CLNT

13

[7 1

CHAR

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

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

fUNiTrs

~:~;~~: ~ I~:~ R

ICUKY_NEW [71 CUKY 15

VALUE..NEW

Tabla Cluster

CDClS

Change document header

....

ITEM20ATA
fTEM20ATA

Cluster table

Change document Items

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

ITEMl DATA
ITEM2DATA
ITEM 1DATA
ITEM20ATA
ITEM30ATA
ITEM 1DATA

:-:::~~ --~~

M"

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

I
I

T EXT_CASE

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

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

fern os

do tobelo

vc rtes lobe/os
bcseocos nos compos
de chove prim6rio que
e/os fern em comum.

cdpos

Detolhe do pedldo
do tobelc
PK

Figurg 3 3

Os clusters de lobe/a
orm ozenom

Fi g u r a 3 4

As fob e/os cdhdr e

101

03

I
I

Fieldname.

171 CHAR

[II

.:
VALUE_OLD

CHAR

J2i4
J2i4

MANDANT

OBJECTCLAS

IOBJECTlO

Per exemplo, como mostrado na Figura 3.4, os quatro primeiros campos


de chave primaria em cdhdr e cdpos sao identicos. Eles rornam-se a chave
primaria para 9 cluster de tabelas com a adiliaOde urn cam po pad rao de sistema
pageno para assegurar que cada linha e(mica.
Como outro exemp lo, suponha qu e os dados de cabecalho d o pedido e
as tabelas de itens do pedido sejam sempre nece ssaries ao mesmo tempo e
ambos tenham uma chave primdria que cornelia com 0 mimerc do pedido.
Tanto 0 cabecalho como os itens poderiam ser armazenados em uma (mica
tabela de clus ter porque 0 primeiro campo de su as chaves prim arias e a m esm o.
Quando implementado como urn cluster, se uma linha de cabecalho for lid a,
todas as linhas de item para de tambem serao lidas p orgue rodas elas sao
armazenadas em uma unica linha no clust er de tabe1as. Se urn uni cc item for
lido, a cabecalho e rodos os irens tam bern serac lid os, porque eles sao armazenados em uma (mica Iinha.

I
IPAGENO

CHANGENR

ITI MESTMP

I
IVARDATA
PAGElG

Restric;6e s no s tob.elo.s...de..p.ool e de cluste r


As tabelas de pool e de cluster sao n orm alm ente u tilizadas somente pela SAP
e njio utilizadas p or clien tes, pr ovav elrnente p a r caus a do format o proprietario
dessas tabe las den rro do banco de dado s e p or causa das resrricoes tecni cas
colocadas scbre su a utilizacao dentro de progra mas ABAP/4. Em um a tabe la
de pool au de clus-ter:

,i

~~J


102

-.v

v v.v

w. w

--

w.tW. w:ww _ _

Da D

-~103

As lobe /os 560


co mposlos de
com pos, que 560
compostos de
elementos de dodos,
que pa r suo vaz 560
compostos de
dom inios.

V oce DaD pede ut ilizar SQ L nativo.


Voce nac pode especifi car no mes de campo depois cia cldus ula or der
by. A unica variacao permitida e orde r by pr i mary key.

I"

Compo

Eo

cc mcostc de um

"

co ntem r6tulos de com po

Elemento de dod os

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

-,

e docum entocc o o nline {ejude Fl)


preci ~e

de urn

des creve ccrcct ertsuccs

tecnkc s. (p. ex.,


Do mlnio

utilize plenomente a s fe rromentos de relat6 rios indep end entes se eic s


leem tabelas diretom ent e do bonco de dodo s, porque a s ta belos de
poo l e de closter-tern urn fo rmato prop riet6 rio do SAP. Se suo emp reso
q uer utilizer ferrome ntos indepe nde ntes desse ttpo, voce pe de querer
buseor olternotlvos an les de crier tobelas de po ol au de du ster.

lipo e com primen!o


dos do dos)

'~
F jgurg 3 6

Um exemplo de
praiela utilizondo
tobelos, ele mentos
de dodos e dom lnios.

Par causa dessas restricoes nas tabel as de pool e de cluster e par causa de
sua utilidade limitada, este livre concen tra-se na criacao e u tilizacao de tabel as
transparentes. A criacao de tabelas de pool e de cluster na o e abordada .

Explorando co mponentes de tabeloL-

HI
0"

F igura 3 5

podem ser criad os.

Voce: DaD pede utilizar as estrururas (constructs) do ABA P/4 sel ect
dt sti net ou grou p by.

(Cuicfudo

'W ' & _

DlA 3:0 OATA OIITIONARY, PARTE1

" m DA EM 21 DlAS AWl'

Os indic es secundarios

Compos de Cu stom e r Tobie

Ele me nto s d e do dos

Domfn io

~
Zphonew
ROtu\o: numern comerci ol

Voce ja sabe a que as tabe las transparentes sao e as dif erencas entre tabel as
transparentes, tabe las de pool e de cluster. Agora, voc e apr enderd as co mpo nentes que sao necessaries para criar tab elas.

phonew

Zpho nel

Zphon.

phonef
phoneh

R6tulo: lo~

loxlipo: cnor
comp.: 12

I'

Zphoneh
RO fulo: telelone ridenciol

Umo tobelo e compostc de campos . Para crier um compo voce precise de um


e leme nto de dodos . 0 eleme nta de dodos conte m os rctvlcs de ccmpo e a
docwnentccoc online [tcmbern chcmcdc ojuda FJ) para a ca mpo. Ele e purome nte
descritivo; co ntem as ccrccterlst'ccs sem enticcs para 0 compo , tcm bem co nhecidas como
"co ntexte do neg6do"' . Os rotulos que voce oferece dent ro de um ele mento de dod os
seroo exlbidos no tela 00 lodo de um compo de entrada . 0 ele mento de dodos tcmbern
contem docomentccec que e exlbidc quando a vsuc ric pede c judc nesse compo
pressionand o a tedo Fl .

NOVO....

ifRMO"

Par a crier urn campo, voce normalmente inicia criando urn dom inic para
ele. N este caso, voce pode criar urn dominic generico de numero de telefone,
chamado zphone e dar a ele urn tipo de dado de CHAR e urn comprimento de 12.
Isso seria u rn dominic generic o de numero de relefone : a maioria de s ripos de
mime ros de t elefone poderia ser armazenada ut ilizando-se esse dominie.
Como esse, ele pede ser ut ilizado para definir tipos especrficos de num eros de
telefone, co mo fax ou nu meros de tel efone residencial.
Dep ois de criar 0 do mfnio pa ra armazenar a descricao puramen te tecnica
de urn cam po, voce entac cria urn elemento de dados para armazenar a s
atr ibutos descritivos do campo . N o elem en to de clades, voce deve digitar 0
no me de u rn domini c par a dar-Ihe a caracterfst ica tecnica . Entao, voce insere
os r6tulos e a documentacto (ajuda F1 ) para d escr ever as dado s que voce
armazenara. N esse exemp lo, voce provavelm en ce criaria nes elem en tos de
dudes, urn pa ra cada numero de telef one resid encial, comercial e fax. Em cada
elemento de dad os, voce di gitaria ro rulos de campo descrevendo 0 tipo de
numero de te lefone que voce arma zen ara co m ele e a ajuda Fl pa ra a usuario

NOYO ~

Umo defini'ioo do eleme nte de dodos eXi ~ e um dom;nio (veia a Figura 3.5). 0
dam inio co ntem a coraderfstico tecnco de um ca mpo, como 0 co mprimenta
do compo e 0 tipo de dado.

HRMO"

O s domtnios e as elemen tos de da do s sao reutiliz ave is . U rn domfnio


po de s er utilizado em mais de urn elemento de dados , e u rn elemento de
dado s pode ser utilizado em mais de urn campo e em mais de uma tabela.
Par exemplo, imagine que voce ' precise pr ojetar um a tab ela de informacoes de cliente chamada zcust que deve canter os nti meros de te lefo ne
ccmerc ial, fax e residencial (veja a Figura 3.6) .

final.

---- w_ - -----
104

w _

-~

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


~

OIuoomOlmOHARY,PARTE l

APiENOA EM 21 OIAI ABAP"

Te ndo criado a s elem entos de dados, voce agora p ode criar a tabela, Voc e
p od eria criar treS camp os de ndmero de telefone na tab ela {residencial, comercial e fax) e arribuir 0 elemento de dados corresp ond ence a cada campo. U rn
eleme nto de dados eat ribufd o a cada campo. 1 550 oferece informacoe s descritivas do campo do elemento de da dos e informacoes te cnicas do do minic a que
e1e faz referencia. Quando 0 campo e utilizado em uma tela, ele obtem urn
rotulo e a documentacao de ajuda Fl do elemen to de dad os e seu com primento

e ripo de dado formam

domini c deruro do elemeneo de dadcs .

Em outre exemplo, voce pode pre cisar armazenar urn no m e da pes soa em
tres tab elas diferentes: tab elas de clientes, [abricantes e empregados. Na tabela
de clientes, voce q uer arm azenar urn nome de cliente: na tabe1a de fabricante
urn nome de fabrican te e na tabela de empregado urn nome de empregado. Par
isso, e uma boa ideia dar 0 mes mo rip e de dado e comprimento para todos as
campos de nome de pessoa: voce pod e criar urn unico domlnio generico de
nome d e p essoa , par exemplo zper sname. En rao voce pode criar urn eleme nto
de dados para carla urilizacfo de neg6ci o de urn nom e da pessoa: p ara 0 n om e
de clienr e, 0 nome de fabricanre e 0 nom e de emprega do . D entro de cada
elemento de dados voce referencia seu dominic zpersname pa ra da r a todos eles
a m esma caracterf srica. Voce en tao pode urilizar esses eleme ntos de dad os para
criar camp os denero de cada tab ela.

Ma nte n d o as caracterfsticas tecnicos d os ca m pos


Se voce precisa alterar 0 comprimen to do camp o depois qu e crio u uma tabela,
voce apenas precisa altera-lo no dominio. Se 0 dominic e utilizado em mais de
urna rabela, a alteracao eautom aticam ente propagada para todos os campos que
utilizam esse dominio.
"
P a r exem plo, se os an alist as de neg6cio solicicassem que voce aumentasse
a comprimento de seu camp o de nome de pessoa de 12 para 15 caracreres, voce
alteraria 0 comprimento no dominic zpersname. Quando vo-ce ativar sua alreracio, a s cornp rimentos de rodc s as campos de nom e 'baseados nesse
do min ic (nas tabelas de clienre, de fabricanre e de empregado) tambem
mudarao.

Determ ina ndo quando criar ou reul ilizar domini os


e elementos de dodos
Cada sistema R/3 vern co m mais de 13.000 dom inios preexist entes criados pe1a
SAP. Q uand o voce cria urn novO camp o, voce deve de cidir se cria urn no vo
domini o o u reutiliza urn existente. Para tomar essa clecisao, detennine se a tipo
au co mprimem o de dados de seu campo deve ser dependeme de urn campo
existente da SAP . Se seu camp o precisa ser in depen dent e, erie urn novo
dominio. Se seu camp o cleve ser depend ente, reuti lize urn domin io de SAP
existente. De forma similar, voc e deve reutilizar elem entos de dados se seus
rotulos de campo e docu m en ta~a o alt erarem quando a SAP alterar os de1a.

105

Po r exemplo, im agine que voce deseja cria r uma nova tabe la que co nrem
informaco es adicion ais de fabri cante. Quando voce p rojeta a tabela, voce deve
associar as fab rican te s em sua tabel a com esses na tab eia de SAP .
Em sua tab ela, erie um a chave primdria con tendo 0 mimero de fab ricante.
Utilize 0 elemen to de dad os exist ente para cria r seu campo. As dua s rabe las
estjo agora ch aveadas no campo de numerc de fabricante de SAP urilizandc
os mesmos elem entos de dados e do mlnios. Se a SAP alterar 0 tipo de dad o ou
o comprim en to do seu camp ?, 0 seu mudara au to rnaticamente.

Convencoes d e ctribuicco d e nome para tabe las


e seus compon entes
As tabelas, elementos de dados e dominies cria dos no site de cliente devem
seguir convenc oes de atribuicjo de nome da SAP para objetos de cliente. E stes
estao delineado s na T abela 3.1.

Tabela 3.1 Convencoes de otribu i~50 de nome para tobe los, compos, ele me ntos
de dod os e do minios criodo s pelo cli ente
Prlmeiro eereete re
permitido

Tipo de objeto

Comprimento
max. d e nome

Tobelo

10

s, z

clemente de dodos

10

v, z

Domlnio

10

r, z

Compo

10

Quolquer ccrcctere

T odos os nomes tern urn m aximo de 10 caracte res de comp rimenro.


Os nomes de todas as tabelas, dominios e elem ent os de dados que voce
cria devem iniciar com 0 caractere y ou z, Voce nao p od e utiliz ar qualquer outro
caractere no comeco; todos as outros sao reservado s peia SAP . 0 sistema RJ3
imp oe essa convencio: voce obterd uma mensagem de errc se tentar criar u rn
c bjeto que tern urn nome qu e na c se adapte a essas convencoes.
Os n om es de campo podem comecar co m qual quer caractere. Entretanto,
cert as palavras sao reservad as e njio podem ser u tilizadas com o names de
campo. A tabela de DDIC t rese cc ntem a lis ra completa das palavras re s er~
vadas. 0 conteudo de t re se pode ser exib ido utilizando 0 procedim en ro do
Dia 2 na seiSao intitul ada "Exib indo os clados na tabela" .

Criando uma tabela transparente e seus


.c.omp.onlJ;;elLnutJ;;:
e.:.s

Nas sec;6es a seguir, voce cria ra dominio s, elemen tos de dado s e, por fim, sua
primeira tabela transpa ren te - ela sera um a versao escalada para baixo da
tabela-mestre de fabricante fornecida pela SAP iden tificada Hal.

-_.

e.w
106

w __

._~_~_

-01' " ODATA DICTIONARY,PART1

",," OA EM 21 OIAS ABAp/'

Para as prcpcsitos deste livre, porto do pressupostc qu e a siste ma R/3


j6 noo armoze na quoisq uer Informocoes-mestres do fob riconte . Ima g-

ine que a tobe lo Hal noo existe, nem sevs elementos de dodos, nem
seus dominios. Portonto, nestes exerdcios nos as crlcremos.

Para armazenar informacoes-mesrres do fabricante voce criara a tabela


-1fal. Ela contera campos para urn mimero de fabricante, urn nome, urn
c6digo de regiso e urn ccdigc de pais. Os nomes de campo e as caracterfsricas
tecnicas que voce utilizara sao mostrados na Tabela 3.2. Urn x na coluna de PK
indica campos que formam a chave primaria . (0 procedimento de instalacao
criou uma tabela identificada zt xlfal em seu sistema R/3. Ele e muito semelhante a tabela - - -Lfal . Utilize-a como uma referencia enquanto Ie esse
capftulo.)

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


Nome
de ca mpo

PK

Nome

Nome

de DE

de OM

Tipo
de dado

1ifnr
namel
regio
1andl

- 1 i fnr
-- - namel

" lifnr

regi 0

- -name
- reg i 0

landl

-land!

CHAR
CHAR
CHAR

CHAR

~o

Comprimen10

N60 altere as na mes mostrodos oclmo. Os exerclclcs mois adian te


neste livre contcrn com esses names de compo como mostrodo. Se
voce n60 utiliza esses names exctcs, as exerclclos sobseoueroe s nco
podem funcionar.

Como essa tabela contem cladas de aplicativo, ela dev e ser dependenc e do
cliente. Portanto, 0 primeiro campo deve ser mandt. (C a nsult e 0 Capitulo 1 se
voce precisar revisar as tabelas dependentes de cliente.)

top-down

Atjyo<;oo de objetos ODIC


MOVO ...
T,ijlO ,.

Antes de oprender sabre objetos ODIC profunda me nte, voce deve sober sobre
otlvoceo de cbjetc. A otivccco cplico-se a todos a s cbjetos de dicion6 rio.

Depois de criar urn objero Data Dictionary, vo ce 0 ativara. Ativar urn


o bjeto e simples _ voce simp lesmente deve pres sio nar 0 botao Active. 1550
alrera 0 statu s do obj eto para ativo .
Urn objeto deve est ar ativo antes de pcder ser ud lizado. Por exernpl o, se
tent ar utilizar urn e1emento de dados inativo 01.0 criar urn campo, voc e obtera
uma mensagem dizendo qu e 0 elemento de dados na o exisce nem esra ativo.
Sua respos ta seria ativar 0 elemento de dados.
Se voc e altera urn o bjeto, deve ariva-lo n ovamente para as alreracoes
to rnare m -se efetivas. Se voce salvar as alteracoes mas n jio ativar 0 objero, os
o bjeros que se re ferem a ele nao "saberao" da altera~ao.

De sco brind o dominios


Ant es de realrnente criar urn domlnio, descreverei a tela que voce ut iliz ara para

cria r tobelas

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


bottom-up

Lernbre-se, quand o crier qua lque r dos objetos neste livro, utilize seu
hand le ( -j como os primeiros tres cc rocteres do nome de c bjeto.
[Os corocte res represe ntam seu hand le. 0 handle foi desc rlto no
Ca pitulo 2, no secco intituloda "Introdu zindo convencces de otrtbuke c
de nome de progroma".)
Nee utilizeat x como os primeiros tres ccrc cteres. Se voce utilizer ztx,
sera muito difidl dete rminar quais 5 6 0 as se us cbjetcs.

10
35
3
3

Esses names de campo e suas carac terlsticas tecnicas sao beseadcs em


campos reais da tabela Hal.

Ab..~pa ra

107

Na abo rdagem bottom-up, voce primeiro cria as domini os, dep ois os
elemento s de dados e per fim a tabela.
N a abo rdagem top-down, voce cria primeiro a tabela e depois cria os
eleme nto s de dados e os dominies a medida qu e vo ce avanca.
A abordagem bottom-up emais intuitiva para 0 alun o iniciante, mas rapidamente to rna-se incomoda. A abordagem top-down e muito mais facil de utilizar
depois de voce se familiarizar urn pouco com a pr ocesso de cria~ao de tabela. P a r
essas razoes, demonstrarei as duas tecnicas, iniciando co m bo ttom-up.
Q uando ler as secoes a seguir , voc e primeiro ap rendera sob re urn objeto
_ como um do min ic - e encao criara urn. Os ob jetos qu e voce cria ra sao
descriros na Tabe1a 3.2.

mandt

mandt

...

cris-lo .
Na Fi gura 3.7 esta a tela que voce utilizara para eriar urn dominio - a
tela Dict io nary: Maintain Domain. Nessa tela, voce especifica 0 texto curtO, 0
tipo de dado, urn comprimento de camp o e opcionalmente urn comprimento
de saida. Estes iteus sao explicados naS se~6es segu intes.

~- TT

108

Wo w
o_ W

W Yo W Woo W

w.

W W WWW.WWWi

---

--

--- -

--- -

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


DIU D"T' DiCTlONARY, PARm

' ' ' EN D' EM 21 DIAl ,SAP/.

Tabela 3.3 Tipos de dados comumente uflllzodos

f.i.g..u.r.a 3 7

A tela DidionOlY:

Maintain Doma in e

Tipo

Descr isa o

uti/Jzoda pora error


um domfnic.

CHAR

Strings de cc roctere (maximo de 255 ccroctere s]

DEC

Vclores decimais (cornprtmento maximo de 31)

OATS

Compo Dote

TIMS

Compo Time

INTI, INT1 , INT4

Volores inteiros

NUMC

Compo de coroctere que pa de canter epenes nurnencos

Voce cleve sempre pressionor a tecla Ente r depo is de preencher a


compo tipo de dodos. Pressionor Enter ceuso a cltercc oo do tela
bcsecdc no tipo de dodo que voce especificou. Se 0 tipo de dodo e
urn tipo numertco com sinal, uma coixo de seleceo Sign opcrecero.
Para compos que permilem decimais , urn campo Decimal Places
oporecerc . Pere campos de coroctere, uma ccixo de selece o Lowercase
Letters c pcrecero .

o campo Sho rt Text

o campo Shor t Text contera uma descrlcac do dominic. 0

us uario final nunea


a ve j ela e exibida apenas par a os desenvo lvedores . Voce a vera quando abrir
uma lista de do minies , com o em uma pesquisa.
N esse campo , voce des crevera as tipcs de dados que voce quer que 0
dominic cont enha. Por exempl o, a descr icao de u rn domin ic de numero de
telefone reutilizavel pode ler "Nemero de telefone generico" ou "Ncrnero de
telefo ne geral".
Adicionor a pclc vrc "dcrnlnic" no finol do descrtce c de texto curto e
red undonte e deve ser evltc do. Por exemplo, 0 texto curto "Ncmero de
telefone de dominic qenericc" devero ser evttodc. Em vet dtssc, digite
"Ncme rc de telefon e gene rico".

o campo Da ta Type
o

campo D ata Typ e especifica a repres entacao utilizada internamenre pelo


banco de clados par a arma zenar 0 valor desse campo. Para alguns ripos de dados,
e1e tambem dete rmin aa validacfc de formato de entrada e formate de saida do
camp o. Po r exemplo, campos do tipo de dado OATS (data) e TlMS (hora) sao
automaticamente fo rmatados com separadores em uma de saida de lista ou
quando sao exibidos na tela. Na entrada, e1 es rambern devem estar no formato
de data ou he ra ou um a mensagem de erro e emitida para 0 usu ario.
Os tipos de dados mais comumente utilizados sao iistados na Tabela 3.3.

Os campos O utput Le ngth, Decimal Places e Lowercase


Letters

campo Output Len gth indica 0 ntimero de bytes necessa rie s para dar saida
ao campo para uma Iista ou para u ma tela, incluindo virgulas , p on to decimal,
sinal e quaisquer outros caracteres de for matacao. Por exemplo, na saida, os
campos de data e de hora sao automaticamenre formatados com separadores.
Internamente, uma data earmazenada como oiro caracteres (sem pre YYYYMMDD),
mas a comprim ento de saida no dominic deve ser especificado como 10 para
permitir que dais separadorcs sejam ins eridos. Se 0 campo Output Length
estiver em branco, seu valor automaticamente sera calculado pelo sistema
quando voce pressionar Enter.
Para campos decimais, voce pode especificar 0 nume ro de decimais
cclocado no campo D ecimal Places.
Os campos de caractere sao normalmente convertidos em letras maiusculas antes de serem armazenado s no banco de dados. Voce pode desativar essa
conversao desmarcando a caixa de selecao Lowercase Letter s.
A maioria dos desenvo lvedores nao tern problemas em entender a representacio interna de caract ere ou campos im eiros. En tretanto, a pos icjic do
ponto decimal nos campos decim ais efrequentemente urn campo de confus6es,
por isso descrevemos esse assumo aqui.
Para campos de tipo DEC, 0 ponto decimal nao earmaze n ado no banco de
dados. Sornente a parte numerica e armazenada; nao 0 decimal. Na saida, a
posicao do decimal edeterminada pelo valor que voce colocano camp o Decimal
Places do dominic.

109

_,~~t2}~'

~.~ll<~ O .

APREND A

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

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

campo seja adequadamente exibido, voce deve especificar

urn comprimento de saida que in c1ua urn byte para 0 ponto decimal e outro
para cada separador de milhar que pos sa ser exibido. Entretanto, 0 sistema
calcu lara 0 comp rim ento de saida se voce simplesmente deixar em branco 0
campo O utput Length e pressionar En ter.
.

Problema

Possivei s sint omas

Nee posso criar

Qu and o voce pressiona


Creole, nodo ocontece .

o dominio

SolUliCO
0

botco

Olhe no barro de status no porte


inferior do janelo e pressione 0
balao novomente. Epr cvc vel
que voce vera umo mensogem

cl.

Cria ndo um do minio


Nesta seciio, voce aprendera a abo rdag em bottom-up para criar urn dominic .
S(mNCAM~ Inid e a ScreenCom "How to Crea te

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

Q uand o pressiana a ba tao


Creole, voce ve a me nsagem
"Syste m change o ption
do e s not allow cha nge s to SAP
o bjects".

Altere a name de dominio


pa ra y au z.

Q ua ndo pressiono 0 batao


Cre ate , voce ve a me nsa ge m
" Enter occess key".

Altere 0 name de domrnlo


pora inicior co m y a u z.

Q uan do presslonc a bctoc


Create, voc~ ve a mensoge m
" You are not authorized to moke
cha nges".

Soltcito outcrizoccc de

Q uonda pressiono a botcc


Creole, vo ce ve a mens agem
"a lrea dy exists".

o nome que voce digitou j6

"W: {calculate d output length is


sma ller tha n specified)."

Deixe em bronco a ca mpo


Output Length e pressio ne
Enter e depois Activate,

"E: Value table doe s not exist."

Delxe em bronco a ca mpo


Vclve Table, presslone Ente r e
depois Activate.

nome de domin io no campo O bject N ame.

3. Escolha 0 batao de 0PliaODomains.


4. Pression e 0 batao Create. Voc e entac ve a tela Dictionary: Maintain
Domain. as campos contendo pontos de in terrogacao sao campos
obrigatorios.
5. Digite uma descric ao do dominio no campo Short Tex t.

6, Preencha no campo Data T yp e. Voce p ode colocar 0 cursor nesse


campo e pressionar a seta para baixo a fim de exibir uma lists de tipos
de dados permitidos . Selecione urn ripe cialista ou digire urn.

de senvolvimento do sev
odm inistrodor de seguron<;a

existe no Data Did iona ry.


Escalho urn nome de domfnio
diferente.

.Obtendo dccumentocco de SAP nos dom inios


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

domfnios.

7. Digi te urn comprimento de campo.


8. Pressione 0 botco Active na barra de [erramenras Application par a co
mesmo tempo salver e ativar 0 domfn io. A tela Create Object Catalog
Entry e exibida .
9. Pressione 0 botao Local O bject. Vo ce
tionary: Maintain D omain ,

O btendo
mensa gem

e levado de volt a a tela D ic-

10. Pressione 0 botao Back na barra de ferramen ras Stan dard. 1550 0 leva
de volta para onde voce comecou nes se procedi mento, a tela
Dictionary: Initial.

111

Se voce deseja ver a do cumentacao que descreve todos os ripo s de dados


e suas u tilizacces, coloque a cursor no campo Data T yp e e pressione Fl . Voce
vera uma caixa de dialogo cam en do campos destacados. De urn clique nesses
camp os destacados para mais detalhes.
Vo ce pode tambem consultar a ajuda da biblioteca do R/3 para encon rrar
docu me nt acao adicional sobre tipos de dados e outras proprie dades do
dom fnio, Para visualizar essa documenracao, a partir de qualquer tel a escolha
o caminho de menu Help->R/3 Library. Voce vera o menu principal da
biblio reca do R/3 , A partir daf de urn clique nas seguintes guias: Basis Componen ts- > ABAP/ 4 De velopment Workbench- > ABAP/4 Di ctiona ry- > New
D evelopments In The ABAP/ 4 Dic tionary In Release 3.0.
Para ainda m ais documentacdo sabre tip os de dcdos no dominic, de
dent ro do do minic escolha 0 caminho de me n u Help-> Extended help . Entao

I,
:~

112 t...==:...:::..:::...:.:.::.:..::.:::.:.:..:...
APREHDA EM 71 OIAS AB AP/4
de urn clique em C reat ing D omains e depois de urn clique em External Data
Type.
Para obeer doc urne ntacao que descreve 0 mapeamento de tipos de dados
de d ominic par a cipos de dad os do AB AP/4. exiba a ajuda Fl para a palavrachave "tables" . (Par a fazer isso, dent ro do editor de ABA P/4, colo qu e 0 cursor
napalavra t abl es epressioneFl.)

Descchrindc elementos de dodos


Antes de realmente criar urn elernento de dados , descreverei a tela que voce
utiliza ra para crif-lo.
A Figura 3.8 mos tra a tela utilizada para criar um elem ento de dad os. Aqui
voce esp ecifica 0 texto curto, no me de dominic, r6tulos e urn cabecalho, que
sao explicad os nas selioes seguintes. A documentacfc tambem pode ser criada
depois que 0 elemento de dad os foi salvo.
F i g ur a 3 8

A lela Dictionary:
Chonge Dolo

Element,

j-

~==~~'_'_
0143:0 DATA DIOlONAR'f, PARTE 1

113

Os ca mpos Field Label e Header


A parte inferior da tela rnostrada na F igura 3.8 conrem quatTO campos de texto.
as prime iros eres sao rctulos de campo. Quando qualquer camp o aparece em
uma te la (como u rn campo de entrada em uma tela de entrada), urn dos campos
cur tos, medias a u longos ap arece rao aesquerda del e como urn rotulo de campo.
o programador escol he urn des ses r6tul os de campo quando ele cria uma tela.
o conreudo do cam po H eader aparecera como urn cabecalho de coluna no
tapa das listas,
Se os campos que voce cria com esse elernentc de dado s nao aparecerem
em quaisquer telas , desative a caixa de selecso Ma int ain Field Labels e pressione
a teela Enter. Voce nao veri mais os campos Fie ld Lab el e Header. Voce tera
de pre ssionar Enter duas vezes para [aze r a s campos desaparecerem se esses
camp os contiverem valores.

A documentccdo de elementa de dodos


Depois que voc e salve 0 eleme nto de dados, urn bouo Docum entatio n aparece
na barra de ferramentas Application, de modo que voce possa armaze n ar te xto
na forma livre. 0 usu drio ve esse texto quando solicita ajud a Flo E m outras
palavras , quando urn campo de tabela que utiliza ess e elemen tc de dados e
exibidc em uma tela) 0 usuario pode colocar 0 cursor ness e campo e pressionar
FI para exibir a documentacao que voce digi tou aqui .
Quando voce ve a tela Documentation, a primeira linh a con ted as
caracteres &DEFINITION&. Isso e urn titulo; nao alte re essa liaha. Digite sua
documentacio comecando na linha da is.

e frequ entemente muilo util


progro mad or. l endo esse elu de Fl , 0 progro mod o r pode
determiner 0 utilizo<;oo de neg6cio dos dodos, Pcrtc ntc, voce sem pre
deve crior o juda Fl para 0 usu6 rio otraves do batao Docume ntatio n.

A docornen tcceo de elemento de dodos

para

Crianda um elemento de dodos

l
t
/

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

o cam po Shari Text

de dados.

campo Short Text descreve urn co ntexte de neg6cio para urn dominic. Po r
exemplo, urn "n ume rc de tel efon e de cliente" e urn contexte de neg6cio
especifico para urn dominic "n um ero de te lefone gener ico" , en rjio ele seria uma
descric ao apropriada para urn elemenro de clades. 0 usuario fin al vera essa
descrica c se solicitar ajuda Fl para urn campo que foi criado ur ilizan do esse
elemento de dados .

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

Exec~t e esse prc cedi mento du as vezes para criar os elementos de dados
edada no diagnosrico
e solucjo de problemas qu e se segue. Se voce tiver problemas com qualquer u rn
dos passes, nao se esqueca de consultar a Sclucac de pr oble mas.
"

. , i fn r e " ' namel. A ajuda corn proble mas comuns

I
I

114

DlA3, ODATAOlCTIOHARY,PARTE 1

AP ' EN DA EM " DiAl " ,P/4

1. Comece na Di ctionary: Initial Screen. (Para chegar ai a partir do menu


principal SAP, siga 0 caminho de menu Tools->ABAP/4 Workbench, Developmen t-> ABAP/ 4 Dictionary.)
2. Digite 0 nome de elernentc de dados no campo Object Name.
3. Escolha 0 borso de op~ao Data Elements.
4. Pressione 0 bo-se Create. A tela Dictionary: Change Data Element
aparece.
5. Digite rexto curto para 0 elemento de dados.
6. Digire urn nome de dominic e pressione a tecla Enter. Se 0 dominic
existe e ests ativo, seu tipo de dado e comprimento aparecerao. Se
voce nao vir urn tipo de dados e comprimento depois de pressionar
Enter, verifique 0 nome de Data Element. Se a nome estiver correto,
verifique se esta ativo abrindo urna nova sessao (utilize 0 caminho de
menu System- >C reate Session) e exibindo-o no Data D ictionary.
7. Insi ra rotu los de campo nos campos Field Label Shorr , Medium, Long
e Header. a valor no campo Short deve ter no maximo 10 caracreres,
o Medium deve ter no maximo 15 e Long deve t er no maximo 20. 0
valor no campo H eader deve ter 0 mesmo comprimento ou ser menor
que a comp rimento de saida no dominic .
8. Pressione a bono Save na barra de [erramentas Standard. A tela
C reate Object Catalog Ent ry e exibida.
9. Pressione 0 botao Local O bject. Voce e levado de volta a tela Dictio nary: Change Data Element . as campos Status con tern os valores
New e Saved e a mensagem "Saved without check" aparece na parte
inferior de janela na barra de status. a bccso Documentation (entre
outros) aparece na barra de ferramentas App lication.
10. Pressione 0 borso Documentation. A tela Change Data Element:
Language E e exibida. Aqui voce pede digitar a documentacio de
usuario final. Essa documentaci o e exibida quando 0 usuario solicita
ajuda F1 para os campos criados utilizando esse elemento de dados.
A primeira linha contem os caracreres &DEFI NITION&. Isso eurn titulo;
nao altere essa linha. D igire sua documentacao comecando na Iinha
dois. Pressione a tecla Enter para comecar cada novo paragrafo .
11. Pr essione 0 borao Save Active na barra de [erramentas Application
para salvar seu texto. A mensagem Document was saved in active
status" aparece na barra de status .
12. Pressio ne 0 botso Back na barra de ferramentas Standard. Voce e
levado de volta atela Dictionary: Cha nge Data Element.
13. Pressione 0 bordo Active na barra de ferramentas Application. a
valor no campo Status altera-se para Act . e a mensagem "was
activated" aparece na barra de status.

14. Pressione
Screen.

Problema

botao Back. Voce

115

e levado de volta aDictionary : Initial

Possive is

SoluCjoo

stntem es
Nsc posso

Q uando voce pressiono a botcc

crier elementos

Crecte, nade acontece.

de dodos

Nne posso
otivcr elementos
de dados

0 1he no borra de stotus no


parte inferior do jonelo e
~ressi on e 0 botco nova mente.
E prov cvel que voce vejc umo
mensag em.

Quando pressiono 0 botoo


Create, voce ve 0 mensagem
"System change option does
not a llow changes to SAPobjects".

Altere 0 nome do elemento de


dod os pa ra inicior com y ou z.

Quando presslono 0 botcc


Create, voce ve a me nsoge m
"Enter access key".

Altere 0 nome do elemento de


da dos per c inicior com y ou z .

Quando pressiona 0 botoo


Create, voce ve a mensa gem
"You o re not authorized to make
changes" .

Soliclte a autori zOl:;oo de

Quando pressio no 0 batao


Cre ate, voce ve a mensogem
"'olreodyexists".

o no me q ue voce inseriu i6

Aporece a mensog em "No act ive


domoin exists with nome".

V6 a te la Dictionary: Change
Dolo Eleme nt e de um clique
duplo no nome de domlnio.

Voce enteo vera uma coixo de


di610go o u a tela Dictionary:
Display Domain.

nome de dominio que voce


d igitou no lela an terior n60 exlste
ou ':l0oestc ctlvo.

desenvolvtmento do seu
od minislrodor de sequronco.

existe no Dota Dictiona ry.

Escotho um nome de dominio


difere nte.

Se voce vir a ccixc de di610go


com 0 iftulo Create Domain, 0
dom inic nee existe. Verlfique 0
no me cuidadosamente. Voce
inseriu 0 nome e rrado ? Pode
ser uma boa ldelc obrir uma
novo sesscc e exibir as objetos
que voce criou usando Object
Browser. (No Die 2, vejc 0
se~o o "Locolizondo sevs
o bjetcs de desenvolvimento".)

I
I
\

I
I

I
~,J

&

!!

116

DlA 3:0DATA ormoNARY, PARTE 1 )

APRE NDA EM 21 DIAS ABAP /4

Problema

Possiveis

Fig u r a 3 9

Soluljao

A tela Dictiona ry:

sintomas

Toble/ Structure:

Se, de pais de da r urn clique


duplo , voce vir a tela
Dicti on ary: Display Domain,

clh e no ca mpo Status nesso

tela. New

e urn status? Se for,

a dominic precise ser ativodo.


Pressione 0 batao Activate e
entoo pressione 0 botoo Bock
para retarnor 0 0 eleme nto de

Chonge Fie lds cnvc


fexto curta, otribu los
e nam es de compo 0
serem inse ridos.

.~ : iFol.

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

:,,1

TYIn1

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

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

"I~~~~~1t;~'jf
Fwi'n~ j(.~

UtI

.1.~. TYi'f l.ng~h cb.~kI~bl. -Sh or t. ~.~.~~ _, . ,<, :: ~~:, .. . " ' ."':"- ;t. , ~ ,

.. s:::'.'

dodos e tente ctlvo-lo


novomente.

Obtendo

"Mainta in field lobel."

Insiro a s rctclos de campo


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

mensa ge ns
IIW: Length was inc rea sed to th e

adual text lenqth."

o texto de cc becolhc que


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

contcmd-lc, simplesme nte


pressione Enter e de pais al ive.
Ne e posse

digifor r6fulos
de compo .

Compos de entrodo estoo


perdidos no tela .

Alive a co ixe de seleceo


Mainta in Field Labels e
pression e Enter.

Descobrindo tob e los transparentes


A Figura 3.9 mostra a tela utili zada para criar uma tabela transparente. Aqui
voce especifica a texto curto, a classe de remessa, os nomes de campo, urn nome
de elemento de clados para cada campo e seleciona as campos de chave primaria.
As secoes a seguir explicam esses itens em mais detalhe.

o ca mpo Short Text

o campo Short Text e utilizado para

os mesmos pro p6sitos que os campo s


Short Text de dominic. 0 usuari o final mo vera essa descricao em qualquer
lugar, mas 0 desenvolvedor veri quando trazer a to na um a lista de tabelas .

o campo Delivery Class

o valor no campo Delivery Class identifi es 0 "proprietario" dos dados nesta


tabela. 0 proprietario e responsavel pela manutencao do con teudo cia tabela.
Nas tabelas de cliente, voce deve sempre inserir urn A aqui , que indica que a
tabela cont em dados de aplicativo po ssuldo s apenas pelo cliente . Ou tro s
valores inseridos no campo sao cre is somente para a SAP e ind icam que ele
possui os dados ou a SAP e 0 clienre em con jun to pos su em os dados.

Par a uma listc co mplete de vclores v61idos e seus significa do s, cclcque


o cursor no ca mpo Delive ry Closs e cresslcne Fl .

Ocampo Tab.Maint.Allowed
Marcar a caixa de selecso Tab.Maim.Allowed faz com que 0 caminho de menu
U tilities-> C reate Entries seja ativado. Depois de arivar a tabela e esco lher esse
caminho de menu, a tela Table Insert e exibida, permitindo que vo ce digite
dado s em sua tabela. Eutil para tes te e en trada manual de quantidades pe quenas
de dados. Se a caixa de s ele~ao T ab.Maine.Allowed estiver em br anco, 0
caminho de menu U tilitie s- >Create Entries esta ra acinzentado.

A coluna Field Name


N a metade inferior da tela voce pode inserir nomes de camp o na colun a Field
Name. Os camp os de chave pr im aria devem aparecer primeiro nesra lista e
devem ser in dicados por um a marc a de verificaclo na coluna Key. Urn nome
de elemento de dad o'S d eve ser ins erido adireita de cada nome de campo. Depo is
de preencher no s nom es de campo, pression e 0 botao Next page na bar ra de
ferramentas Standard se voce quiser inserir campos adicionais.

Cria ndo umc tabela transparente usa ndo dom inios


preexistentes e elementos de dados
Nes ta s e ~ao, voce aprendera a abordagem bottom-up para erial' uma tabela
transparente.

117

===
118 I

--

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

DIA 3: 0 DATADICTIONARY, PARTE1

APRE!fDA EM 21 DIAS ABAP /~

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

SCREENCAM,. Domains and DOlO Eleme nts" a gora.


Execute esse procedimento pa ra criar a tabela " 'Hal. N esse procedimento, criaremos a tabele, mas apenas incluirem os os primeiros tres campos
(menot, " '1 i fnr e ," name l ) nele. Mais tarde, adicio narem os os camp os
restantes u tilizandc a abordagem to p-down.
A ' ajuda com problemas comuns e dada no Diagno sti co e solccso de
pr obl emas que se segue a esse procedimento. Se voce tiver p roblem as com
quaisquer urn dos passos, nao se esqueca de consulta-l o.
1. Comece na Dictionary: Ini tial Screen (para cheg ar af a par ti r do menu
principal SAP, utilize 0 caminho de men u T ools-> ABAP/4 Wo rkbench, D evelopment- > ABAP/ 4 Dictionary).
2. Digice 0 nome de tabela 'Hal no camp o O b ject Name.

3. Escolha 0 batao de 0Pl1ao Table s.


4. Press ione 0 bots o Create (pushbutton) . V oce vera

"

atela Dictionary:

Table/Structure: Change F ields.


5. Digite 0 texto curto para descrever a tab ela.
6. Digite urn An o campo Delivery C lass.
7~ Faca uma marca de verificacao na caixa de selecao T ab .M aint.Al lowed.
8. Na coluna Field Name, di gite 0 no me do primeiro campo cia tabela.
9. Falia uma marca de ver ificacao na coluna Key se ela faz parte da chave

primaria.
10. D igite a nome de urn elem ento de dados na coluna Data Elem .

11. Pression e a tecla En ter.


12. Olhe na berra de Status. Se voce vir a mensagem "Data element is not
active", 0 elemento de dados nao existe ou foi ativado. Estas sao as
pos sfveis raz6es por que voce pode ver essa mensagem:
Ele nao foi criado.
Urn erro de ortografia ocorreu quando voce criou
dados.

elemento de

Se voce agora estiver olhando 0 elem en to de dados, observe 0 valor


campo Status deve co nter Act . para indicae que
no cam po Status.
est a ativo . Se na o esti ver, pr essione 0 bo tao Active e verifiqu e se 0
status esca agora Act . (Se e1e nao fun cionar, arive 0 Diagno stico e
solccao de problemas associado com 0 proc edim ento para criar elem en to s de dados.) U ma vez que 0 elemento de dados for ativado,
press io ne bor do Back para retomar a tela D ictionary : Table/ St ructu re : Change Fi elds.

13. Repita os passo s 8 a 12 para cada urn dos campos restantes na tabela

,(' - -1; fnr e _ neme f) ,


14. Pressione 0 bono Save na barra de fer ra men tas Standard. Vo ce entao
vera a tela C reate Object C atalo g Ent ry .
15. Pressione 0 b atao Local O b ject. Voce entao e ret ornado a tela
D ictionary : Table/S truc ture: Change F ields .
16. Pressione 0 bot ao T echni cal Settings na barra de [erramenras Application. A tela ABAP/4 D icti onary: Maintain Technical Sett in gs e
exibida.
17. No camp o Data C lass) digite APPl O (APPlO com urn zero, nao com a

letra 0 ).

Pro ble ma

Possivei s
sintomas

Nco posse

Qu a ndo voce presslonc


Create, nada oco ntece.

crier a tobela

Sol ufjao

batao

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


mas nao esta ativ o.

!iI,
'I

"

Il

I;

Ii

I,
I

18. Digite 0 (z ero) no campo Size C at ego ry.


1'9. P res sione 0 bono Save.
20. Pressione 0 botao Back. Voce e levado de volta a tela Dic tio nary :
Ta ble/ Stru ctu re: Change Fields.
2 1. Pressione 0 botao Active na barra de ferrame n tas Applicatio n. Se a
ativ aliao for bem-sucedida, a mensagem "was acti vated" apare cer a na
barra de Statu s e 0 campo Status tera 0 valor Act .
22. Pr ession e 0 bo tao Back para re tornar a D icti on ary: Initial Scree n .

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

Verifique 0 nome cuidadosamente. Se a ortografia esciver correta, de urn


clique duplo sabre a nome. Se urn elemento de dados desse nom e nao
existir, voce vera uma caixa de dialogo intitulada Create Data Element.
Se a elemento de dados existir, 0 proprio elemento de dados sera exibido .

119

Q ua ndo voce pressiono 0 batao


Create, voce ve a mensagem
"Enter access key".

O lhe no barra de status no


pa rte inferior do [c nelo e
pressione a botoc novomente.
Eprcvovel que voce veja uma
mensagem.
Altere a n~me do tobelo poro
que passe a lnlclcr com y au z.

i!

w.w --~~---~-~~~-~-~~--120

DIA 3,0DATA DICTION" Y, PARTEl

"RENDA EM 21 DIAS ABAP/4

Problema

Possiveis
sintomas

Solu~60

Problema

Posslveis
sintomas

SoluCjoo

Quando presslo no 0 bata o


Create, voce ve a me nsagem
"Syste m change option does
not allow changes to SAP o bjects".

Altere a nome do to bela par a


qu e posse a Inlci c r com y ou z.

Mensoge ns
exibidos em
verme lho

"E- Field (Data eleme nt or domai n

Ve ja a linha "Nco poss e otivo r


a tobelc", cnterlcrrnente .

Quanda press iona a batao


Create, voce ve c me nsoge m
"You are not au thorized to ma ke
changes".

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

Quando pressio na a ba tao


Create, voce ve a mensag e m
"already exists".

Nco posso
c tlvor a tobelo

Aporece a me nso gem "E-Held


(Data element or domai n is not
active or does not exist)".

o nome que voce

digito u ia
exlste no Da ta Dictionary .
Escolho um no me de dominic
diferente.
Volte pa ra a tela do tobela
Dictionary: Ta ble/ Structure
C han ge Fields . De um clique
d uplo no no me do elementc
de dodos. Voce vera uma
cclx o de di6logo ou a proprio
ele mento de dodo s.
Se voce vir uma co ixo de
d i61ogo com 0 titulo Creote
Data Element, a elernento de
dodos noo exlste. Verifique 0
no me coidcdoscmente . Voce
digito u 0 nome errado? Pode
ser um o boa ideio abrir umo
nova sesseo e exibir os obietos
qu e voce criou usando 0
Ob ject Browser . (No Dia 2,
velo 0 seccc "locchzondc seus
o bjete s de desenvolvimento".)
Se voce puder exibir a
elem e nta de dodo s, examine a
co mpo Stat us. New e um
stat us? Se nco, 0 elemento de
do do s precise ser cttvcdo.
Presslone 0 botdo Activote e
e nloe presslo ne a ba tao Back
para retornor a tabela .

Venda

tela

ABAP/4
Dictionary :
Ma intai n

Technlccl
Settings

O s ctrtbvtos tec nfco s fora m au


nao lnseridos a u selves. Insira
entoc as otnbutcs tecnlcos,
pressionando a bctcc Save e
par ftrn pressione Back.

is not act ive or does nat exist} ."

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

Procure mais e mboixo umo


men sagem (em vermelho)
scbre 0 Data Closs au a
categorio Size.

"E Error in co de ge neratio n for

Proc ure odio nte umo


mensogem (em vermelhoJ
sa bre Data C loss ou cotegorio
Size.

creating ta ble in the DB"


"E- Ta ble (Sta teme nts coul d not
be ge ne rated)."

Procure adiante uma


me nsogem (em ve rmelho)
sobre Da ta Closs a u categor ia
Size.

"E- Field Size cat egory (Va lue


no t permitted)."

"E- Field Data clcss (Volue not


perm itted}."

Voce dig itou um va lor invalido


no co mpo Size Category des
confiqurocoes tecoicos .
Pres sione Back seguido de
Technica l Settings e mude c
Size Category para 0 (zero).
Voce digitou urn valor inv6!ido
no compo Size Category des
configurac;6es tecnlcos.
Presslone Back seg uido de
Technica l Settings e mude 0
Da ta C loss pora APPLD (use
um zero no fina l de APPL}.

"E- Key is a lready de fined ; field

Oe campos de chove prim6 rio

ca nnot be in the key."

es e sao cdiccentes para co da


um. Pressione Bock e
cerf ff ique-se que seus ca mpos

de cbove prim6ria esteo todos


corneccndc a parti r do tobe la
com nenhurnc tntervenc ec

nem compos choves. [Tados as


marcos de verificao;oo no
colune Keydevem este r juntos
no comeco de to belo .)

121

DIA 3, 0OATAOICTIOHARY, PARTE1

122

123

" mOA EM21 DIA S A'AP/4

Problema

Possiveis
sintomas

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

A tobelc preciso ser convertido.

be adjusted

Solu~ao

Voce mud au a tobelc e cqoro


umo eonverseo de tobel o deve
ser feita para completer a
ctlvccoc. Escolho um flpc de
processa me nto Online e
pressione 0 botoc Adjust..

in the

datab as e.
Voce tentou remover um
compo delxcndo-c em bronco.
Nco se pa de fozer lsso: voce
deve excluir os cam pos usonda
o bctcc Cut no borro de
ferromentos. Pressiooe Cut ate
voce ver a mensogem
"Selected entries were copied
to the clipboard" no parte
interior do [cnelo no borro de
status.

Aa oparecer a
mensogem no
porte inferior
do tela "Initial
va lue not
permitted as
the field nome"
ou: e impassivel
desloccr-se
para cimo au
nco e pas sive!
ver os com pos
d igitodos
Nee consiqo

lr para outro
mensa ge m

Uma mensog em ca mec;ando com


os corccteres "W:" oporece no
borro de status e voce n60
pode prosseg uir.

Pressrooe a teda Enter para


responder a me nsogem.

Criendo urno tobelo transparente sem do minios


preexistentes e e lementos de dodos
Nes ta se'iao voc e aprendera a adicion ar campos a um a tabela utilizando a
aborda gem top -down . Voc e adicionara os dois campos restantes (. - - reg; 0 e
landl ) asua tabela --Hal.
U tilizand o a abordagem top -down, voce pode edicionar campos a uma
tab ela antes de criar os elem ent os de dad os e do min ies. Voce po de simplesmen te criar elementos de dados e dominies a medida que avancar .
Para fazer isso, voce ira inserir urn elemen to de dados ou nome de
dom fnio e entac dar urn cliqu e duplo nele. Voce sed. levado a tela Creation. A
part ir dai, vo ce cria 0 domtnio ou 0 elemento de dados, ativa-o e entac pressiona
o batao Back para retornar aonde voce estava.
o que se segue e 0 procedimento para adicionar campos a uma tabela
transparente sem primeir o criar os dominies e os elementos de clados.

--t..

<.:...:~..

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


,. Dornotns and Data Elements ogoro .

1. Comece na D ictionary: Initial Screen (para chegar at a partir do menu


principal SAP, utilize 0 caminho de menu Tools->ABAP/ 4 Workbench, Development->ABAP/4 D ictionary ).
2. Digite 0 nome de tabela - H al no campo Object Na me,

3. Escolha a botao de op~ao Tab les.


4. Pressione 0 botao Change. Is50 0 leva a tela D ictionary: T able/ Stru cture: Change Fields.
5. Pr essione 0 botao New Fields. Linhas ern branco-aparecem na parte
inferior ciatela e as campos existentes de tabela sao rolados para cima.
6. Na coluna Fiel d Name, digire 0 nome do camp o que voce deseja
adicionar.
7. FalSa u ma marca de verificacao na coluna Key se ela e parte de chave
primaria. (Os campos -- - regia e - - e Land l nao sao, mas esse procedimentc e escrito gener icamente para que seja utilizado em situa'i0 es gerais.)
8. Digite 0 nome dos elem entos de dados associa do s na coluna Data
Elem.
9. Pressione a recla Enter.
10. O lhe na barra de status. Voce deve ver a mensagem "D ata element is
not active, porque 0 elemento de dados nac exist e.
11. De urn clique duplo n o no me do elemento de dados . A caixa de
dialo go C reate D ata Elem ent sed, exibida. No camp o Data Element
estar a a nome do elem ent o de dados a ser criado. Este naturalmente
sera 0 eiem enro de dados que voce deseja criar , entao a menos que
esteja incorr eto, nao 0 altere aqui .
12. Pressione 0 batao Continue . A tela Dictionary: C hange Data Element aparece .
13. Digite 0 te xro curro para 0 elemento de dado s.

14. Digice urn nome de dominic .


15. De urn clique duplo no nome de dominic para cria-lo. A caixa de
dialcgo Create D omain sera,exibi da. No campo D omain N ame estara
a nome do dominic a ser criado. Este naruralment e sera 0 domfnio
que voce deseja criar, entao a menos que esteja incorreto, nao 0 altere
aqul .
16. Pressione 0 botao Continue. A tela Dictiona ry: Maintain Domain e
exibida.
17. Preencha os campos Short Text, Data Typ e e Eield Length.

I'

I,
I

f
I

;xxn I!. !:J I


124

~. _'I .

. .. . . . .

* w

'W

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

125

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

18. P ression e 0 bo rao Active na barr a de ferramentas Application.


19. P ressione 0 botsc Local Object. Voce e levado de volta a tela Dictionary: Maint ain D omain. 0 valor no campo Status se alter-a para
Act. e a mens agem "was activated" aparece na barra de sta tus .
20. Pression e 0 batao Back na barra de [erramentas Standard para retornar a tela Di ctionary : C hange Data Element.
21. Digire os campos r estant es no elemen to de dado s (v eja 0 passo
mimero 7 do Procedi me nt o de Criacao de Elemento de Da dos na
se~ao "Criando urn elem ento de dados" ).
22 . Pressione 0 bot ao Active n a barre de [erramentas Application . Voce
entao vera a tela Create O bject Catalog Entry.
23. P ressione 0 bo tao Local Object. Voce e levado de volta a tela Di ctionary : C hange Data Elem ent . 0 valor no campo Status se altera para
Act . e a men sagem "was activated" aparece na barra de status.
24 . P ressione 0 bo tac Back na barra de ferr amentas Standard. Voce e
levado de volta a tela Dictionary: Table/ Str ucture: Change Fields .
Nao havera nenhuma m ensagem na barra de Status ,
25. Repita os passos 5 a 23 para cada novo elemento de dados que voce
quiser crier.
26. Depois que voce criou to dos os dominios e elemento s de dad os,
pressione 0 botac Active na bar ra de [erramentas App lication. Se a
ativacao for bem-s ucedida , a mensagem "was activate d" apar ecera ria
barra de status e 0 campo Status ira ca nte r 0 valor Act .
27. Pressione a botao Back para retomar a. D ictionary: Initial Screen.

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

copia-la

exclu i-la

adicion ar mais camp os nela


excluir os campos dela
alterar os campos dent ro dela
Essa secao descreve como executar est as fcncoe s.

Copiondo umo tobelo


Se uma tabela estiver ativa no DD IC, voce pode copia-la. Voce pode querer
fazer isso se a tabela que voce quer criar for muitc semelhan te a uma que ja
existe no banco de dados. Ou, voc e pode querer experimentar alguma funcio-

nalidade de dicionario qu e ePOllCO con hecida para voce , sem querer modificar
uma tabela exisrente.
Para cop iar uma tabela, siga est e procedimento:
1. Va para a Dictionary: In itia l Screen . (Pa ra chegar ai a partir do menu
pri ncipal SAP, utilize 0 caminho de menu Tools- >ABAP / 4 Workbench, Development->ABAP/4 D icticnary.)
2. Esc olha 0 botao de 0Pliao T ables.
3. Pressione 0 borao Copy na barra de [erramentas Application.
4. Digite 0 nome das tabe las F rom e To.
5. Pressione 0 be-eo Continue. Voce elevado de volta para a Dictionary:
Initial Screen e a mensagem + + aparece na bar ra de Status na parte
inferior da janela.
6. Pressione 0 botao Active na barra de ferr amentas Application para
ativar a nova tabela.

As tabelas noD padem ser renomeadas . Pa ra cltercr a nome de umo


delcs, 'lace deve co plo-lc para umo tabe la diferente com 0 nome
desejodo e entcc exclulra tab ela original. Se 'lace preclscr fozer isso,
certlftque-se de copiar tonto a estruturo como os dodos do tooele.

Esse procedimento copia apenas a estrutura de tabel a, nao 05 dados. Para


copiar os dados de tabela, escreva urn programa pequeno de ABAP/4 de sua
propriedade.

Excl uindo u ma tobela


Voce pode excluir ta belas existentes de DDIC . Voc e pod e querer fazer isso
quando uma tabela existen te nao for mais necess aria ou se voce tiver criado
um a tabela para os propds itos de experimentar funci onali dad e de dicion aric
que epo ucc ..c onheci da para voce.
Para excluir uma tabela, siga este pr ocedimento:

1. Va par a Dictionary: Initial Screen. (Para chega r af a partir do menu


principal de SAP, utilize 0 caminho de menu Tools- > ABAP/4 Workbench, D eve!opment-> ABAP/4 Dictionary.)
2. Digice 0 nome de tabe la no campo Object N am e.
3. Escolha 0 botac de op ~ao T ables.
4. Pressicne 0 bono De lete na ban-a de [erra men tas App lication. U rn
pop-up pedira a voce a confirmacao do pedido de exclusao .
5. Verifi que 0 nome da tabela que voce digitou e pression eYes se desejar
continuar.

I
~
i'
.j!

-~~~~"""'~'m"'"~"""
".~-"",;;:..~::_=_-=-:,,,......,...-....,. . ...W-.~W.---~_.
...~.....,............r-...........,....,r....r-.r-...........,.....r
126

W._ WW W 9&* _

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

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

Adicionando

camp~Ol:>S

DIA3,DDATADICT1DN' RY,P, RTE I


_

H a duas maneiras de adicionar campos para uma tabela existente:


inserir

acrescentar

Inserir urn campo permire que voce posicione urn campo antes de outre
existente .
Acrescentar urn campo permite que voce adicione novos campos no fim
da tabela, depois de todos as campos existentes.

Inserindo um campo
Para inserir urn novo campo acima de urn campo existente, execute esse
proce dimento:
1. Co mece na Dictionary: Initial Screen. (Para chegar afa parti r do menu
principal de SAP, utilize 0 caminho de menu Tools -> ABAP/ 4Workbench, D evelopment - > ABAP/ 4 D ictionary.)
2. D igite 0 nome de tabela no campo Object Name .
3. Escolha 0 bata o de opc;ao Tabl es.
4. Pressione 0 botsc Change. Isso 0 leva para a tela Dictionary: Table/St ructure: Change Fields.
5. Posicione 0 cursor em urn campo.
6. Pressione 0 ba tao Insert Field na berra de ferramentas App lication. :
U ma nova linha aparecera acima da posicao do cursor.
7. erie seu novo campo na linha que voce acabou de digitar.

Ac rescenfando um campo
Para acrescentar urn campo no fim de uma rabela, execute este procedi menta:
1. Comece na Dictionary: Initial Screen. (Para chegar aia partir do menu
principal de SAP, utilize 0 caminho de menuTools->ABAP/4 Wo rkbench, D evelopment- > ABAP/4 Dictionary.)
2. Digite 0 nome de tabela no campo Object Name.
3. Escolha 0 botao de op~ao Ta bles.
4. Pr essione 0 bono Ch ange. Is50 leva voce para a tela D ictionary:
Table/Structure: Change Fields.
5. Pressione 0 boec New Fields na barra de ferramentas Application .
N a metade inferior da tela, os campos existentes rolam para permitir
que voce digite campos adicionais no fim.
6. Crie seus novos campos nas linhas que voce acaba de digitar.

"'!!!!""""'!!!!....I!!!'~~""l;!i!

Excluindo campos
Voce pode excluir campos existentes de uma tabela. Voce pode desejar fazer
isso se 0 campo nac for mais necessario na tabela au se voce tiver criado urn
campo para os propcsitos de experimenrar funcionalidad e de dicionario que e
pouco conhecida para voce.
Para excluir um campo de uma tabela, compl ete os seguintes passos:
1. Va para Dictionary: Initi al Screen. (Para chegar af a partir do menu
principal de SAP, utilize 0 caminho de men u Tools- > ABAP/4 Wo rk bench, Development-> ABAP/4 Dicricnary.)
2. Digi te 0 nome de tabe1a.
3. Escolha 0 borao de opc;ao Tables.
4. . Pressione 0 botao Change.
5. Coloque 0 cursor no campo a ser exclufdo.
6. Pressione 0 bcrac Cut na barra de ferramentas Application ou escolha
o caminho de menu Edit-s-Delete Field.
7. Ativ ea tabela. A tela Adjust Table eexibida. Pressione 0 botao A djusr
para converter a tabela no banco de dados.

~o

Para excluir um compo de umo tabela , nco de ixe em bronco a nome


de compo. Em vel disso, coloque 0 cursor sa bre 0 nome e pressione
o botdo Cut. Se voce simplesmente de ixar em bronco 0 nome, 0
mensagem " Initial value not permitted as field na me" cp crecer o no
porte inferlcrde suo tela no barro de'status e voce nco poderc continuor
ate que exdua 0 linho que voce deixou em bronco.

Alterando 0 tipo de dado ou comprimento


de urn campo
Voce pode alterar 0 tipo de dado e/ou comp rimento de campos existentes em
uma tabela. Voce pode querer fazer isso se 0 comprimento de campo pr ecisar
ser aumentado para armazenar valores mais longos ou se as regras de validacao
de campo mudarem e 0 tipc de dado nao for mais adequado para os novos que
devem ser inseridos no campo.
Complete os seguintes passos para alterar 0 ripe de dado ou compri men to
de urn campo:
1. Va para Dictionary: Init ial Screen. (Para chegar ai a partir do men u
principal de SAP, utilize 0 caminho de menu T ools- > ABAP/ 4Workbench, Developme nt->ABAP/4 Dictionary. )
2. Digite 0 nome de tabela.

127

128

Din 0 DATA DICTIONARY, PARTEI

"RENDA EM,l DIAS ABA'"

3. Escolha 0 bocao de opclo Tables.


4. Pressione 0 ba tao Display .
5. De urn clique duplo no elememo de dados correspondente ao campo
que voce quer aItera r. 0 elemenro de dados sera exibido.

6. De urn

clique duple n o nome de dominic no elemenro de dados . a


dominic sera exibido.
7. Pressione 0 batao D isplay < -> Chan ge na barra de [erramentas
Application. Voce agora sera capaz de alterar os atributos do dominic.

8. Deixe em branco 0 campo Output Leng th.


9. Altere 0 tipo de dado e/on compriment o.
10. Pr essione 0 batao Ac tive. A tela Please note! e exibida para mostrar
uma lista de todas as tabelas e estrururas que utilizam esse dominic .
Elas scrao todas afetadas . Para continual', pressicne 0 batao Co nnnue.

fun cionalidade

utlllzcm.

da tela Dictionary: Table/ Structu re (no modo de

exibicjn ou alteracac), esco lha 0 caminho de me nu U tilities- > Create Entries.


Escolher esse caminho de menu e urn atalho - ele cha mara urn navegador de
dados, mas pulara a tela inici al e 0 levard dire tamente a tela que permitira que
voce insira novas linhas em uma tabela.
Se esse caminho de menu est iver desativado, faca u ma marca de verifica ~a o no camp o Ta b.Maint.AlIowed e reative sua tabel a. Consulte a secso
anterior neste capitulo intitulada "Campo Tab.Mai nt. Allow ed." para uma
explicacao desse campo.
Esco lher esse cam inho de menu automaticame nte executa estas tarefas
em ordem:

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

e a partir

129

Gera urn programa espe clfico atualizad o de A BAP/4 para sua tabela
que urn navegador de dados pede chamar. (Ess e pr ograma de ABAP/ 4
so m ente egerado a primeira vez que vo ce acessa esse carninho de menu
para uma tahela dad a e toda vez qu e voce 0 acessa depois que uma
alteracao foi feiea na tabela.)
Chama

navegador de dados que. por sua vez, chama

programa de

ABAP /4 recentemente gerado.


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

Tro bo lho ndp com dodos

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

Table" agora .

Se voce ja nao fez isso, erie sua tabela agora e ative-a antes de prosseguir.

NOVO...

Dentro do R/3 estec 05 ufilit6rios fornecidos pe lo SAP chomodos nov.I?90dores


TERMO ~
de dodos que permitem que voce monipule os dodos dentro dos tcbelos: Embora
a pclcvrc novegodor implique que voce openos ler6 os dodos, os novegadores de dodos
podem ser utilizodos tonto para ler como pa ra ct collzcr.

Voc e pode ut ilizar os utilitarios de navegador de dados para exibir ou


modificar dados den tro de tabelas das seguintes maneiras:
proeu rando e exibindo as Iinhas que en contram criteria especificadc
adicionando novas linhas
. modificando linhas existentes
excluindo linhas
Esta se<;ao descreve como u tilizar os navegadores de clados pa ra executar
essas fun~5es.

Acessando a funciona lida de do navegador de dados de


denim do ODIC
Como obs ervado antes, urna das fun<;6es de urn nav egador de dados e ins erir
novas linhas em uma ta bela. Uma mane ira Hcil e rapida de acessar essa

Execute esse procedimento para adic ionar clados asua tabela. A ajuda com
problemas comuns e dada no D iagnostico e solocso de probl em as que se segue.
Se voce tiver problemas com quaisquer urn do s pas sos, nac se esque<;.a de
con sultar 0 Diagnostico e solu<;ao de problemas.
1. Va para Dictionary: Initial Screen.
2. Digite

nome de sua tebele no cam po O bject Name.

3. Pressione 0 botao Display. A tela Di ctionary: T able/ Stru cture: Display Fields e exibida.
4. Escolha 0 caminho de menu Utilities- c-Create Entries. Observe a
barra de status na parte inferior de sua tela quando voce escolhe 0
caminho de menu; vo ce pode ser capaz de ver a m ensagem "Compiling.
.". Essa mensagem indica que 0 sist ema esta gerando a
atualizacao de programa. A tela Table Insert e exibida. Nessa tela, ha
urn campo de entrada para cada campo em sua rebels . A esquerda de
cads campo de entrada, aparece 0 no me de campo . Os campos de
chave primaria apare cem primeiro, seguidos po ruma linha em branco,
depois seguem as campos restantes da tabela. Para ver 0 programa
que foi gerado, escolha Utilities->Creat e Ent ries e depois escolha a

._., ~

'J:fr

'. oil

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

130

,....,.....

r- ,..

...,

caminho de menu System -c-Status. 0 nome de programa aparece no


campo Program (Screen).

Problema

Fl '~

Se voce coloco 0 cursor em qualquer campo e presslcno a tecla


telo Help - Ta ble Insert e exlbido. Nessa tela, voce vera a documentac;co que voce digitou no elemento de dodos. Para reto ma r tela
Table Insert, pressione botcc Continue ou Concel.

5. Preencha os campos com as dados que voce quer digirar em sua tabela.
6. Pressione 0 botso Save na barra de ferramentas Standard. Voce vera
a mensagem "Da tabase record successfully created" na barra de
status.
7. Repita os passos 5 e 6 para cada linha que voce quer inserir.
8. Pressiorie 0 botao Back para retornar a tela Dictionary: Table/Structure: Dis play Fields.
9. Escolha 0 caminho de menu Utilities->Table Contents para exibir as
linhas que voce acabou de criar. A tela DOl ta Browser: Table: Selection
e exibida.
10. Para exibir todas as linhas na rabela pressione 0 botao Execu te sem
inserir qualquer criteri o de pesquisa. A tela Data Browser: Table
Select Entries e exibida e as novas linhas que voce inseriu serao
mostradas em uma lista.

Po ssive is
sintomas

Nso posso
adicianar dodos

o item de menu Create Entries


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

DlA3: 0 DATADICTIONARY, PARTE I

APRENDA EM 21 DIAS ABA P"

Problema

r-..,.....

Possiveis
sintom as

SoluljOO

Quando presslcno 0 botoc


Save , voce ve 0 mensagem
II A data record with the specified
key a lready exists" na porte inferior
do [onelc.

A tob elc ;0 cc ntem um reqlstro


co m 0 mesmo chove prima rio
que a primeiro que voce
estcvc tentondo salvor. O s
compos de chove prirnorlo sec
os prlrneircs grupos de
ca mpo s que oporecem no tela.
Hd urn espoco em bronco no
telo sobre 0 ultimo camp o no
chove primcric . Altere 0 va lor
no primeiro des compos ocimo
do espoco e tente solver seu
registro novomente .

'131

Utilit6rjos gerais de novegodor de dodos


A funcionalidade que voce acessou na se~ao prec edente esom ente uma fun~ao
de urn unico navegador de dado s.
sistema R/3, hi quatro utilitarios gerais
de navegador de dados: SE16, SE17, SM30 e SM31. Eles sao similares sob alguns
aspectos e ainda oferecem varie s tipos de funcionaliclade.

No

Utiliza nda

SE16

o SE16 e 0 mais utilizado programa de utilitaric de navegador de clados com


prop6sito geral. Com de, voce Rode pesquisar tab elas para linhas especfficas e
exibi-las, arualiza-las, exclui-las, copia-las, adicionar novas linh as e fazer outras
tarefas. Ele pode ser acessado de qualquer uma destas duas maneiras:

A ca ixa de seleceo
Tob.Moint.Allowed nee estc
otivada. Va para a tela
Dtctlcncry: Table/Structure:
Change Fields (para chegar
ate 16 exiba a tobelo e clique
no bcteo Display -c-c- Chonge
no borro de ferromentos
Application ate que os compos
seja m modificcdos) . Adicione
umo marco de verlficcccc em
Ta b.Moint.Allowed. Pressione
o batao Activate.

D a tela Di ctionary: Table/Structure: C hang e Fields, escolha


minho de menu U tilitie s-c-Table Contents.

ca-

iI

Digire /nse16 no campo Command.


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

1.
2.
3.
4.

Digi re / nse16 no campo Command.


Pres sione a tecla Enter. A Data Brow ser: Initial Screen aparece.
Digire seu nome de tabela no campo Table Name.
Pressione 0 batao Table Contents na barr a de [erram entas App licatio n. Se a tabe1a contiver mais de 40 campo s, voce vera a tela Ch oose
Fields For Selection. Se voce a vir, coloque um a marca de verificacao
ao lado dos campos pelos quais voce quer ins erir a s crireri os de
pesquisa e pressione 0 batao Execute. O s campos que voce ativou

-~-

-':--'-~.""~"O"'''''''''''"--;;'=~~~-'!!!"""",!,!!,"",'''''''''''''''''''''''''''''''''''''''''''''''-''''''-''''''''''--~,,,,!,,----------------------------~~~======~
132

DIU 0OAT' olmoNARY,P' RTE I

'P RE Ho , EM 2J DiAl ' ' ' PI'

serao mostrados na pr oxima tela - a tela Data Browse r: T able:


Selection. Essa tela ena maioria das vezes simplesment e chamada tela
de selerao. A qui voc e po de inserir os criterios de pesquisa para locali z ar as linhas espedficas na tabela. P ara exibir todas as Iinhss, D aD digite
qualqu er crirerio de pesquisa. Se hellyer m ais de 500 Iinhas que
coincida m com seu criteria e voce quiser exibir codas elas, deixe em
branc o 0 valor no cam po M aximum No. Of H its.
5. Pre ssione 0 bo tao Execu te na barra de [erramentas Application. Voce
eneac vera a tela Da ta Browser: Table Select Entries. T odas as linhas
que coincidem com seu criteria serao exibidas ate 0 numero maximo
de linhas espec ificadas no campo Maximum No . of H its.

Solusao

Node c contece quan do


voce pressiono 0 botdo Exec ute.

Voce intenciona lmente au acid entalmente deve


ter digitado a lga em um campo no tela de
seleccc e nenhumo linha coincidiu co m esse
criteria de pesquisu. Deixe e m bronco todos as
compos no tela de selecc o e presstcn e Execute
novorn ente.

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

scldo do que voce inseriu no tobela

Voel! inseriu dodos no tabela?


Voce pressionou Save depois de coda regi stro ~
Voce iosenu vclcres de compos de chove
."; '
primc rio para code registro?
Voce intencionol ou oclde ntclme nte digitou
olga em um campo no tela de sele<;60e nem
tcdos os registros eoincidem co m esse c-iteric
de pesquisa. Retorne para 0 tela de setecec ,
delxe em bronco fodo s os campos e pressic ne
o bat ao Execute nova mente.

Do mesrnc forma qu e a caminho de menu Utilities->Create Entries,


Utilities->Table Contents tombern gero um prog romo, e le e ge ra do
novamente se voce cltercr 0 estruturc de tab elo. Poro exibir 0 progromo
q ue ele gem , c pa rtir do fela de sele<;60 escolha a cominho de menu
System- > Status.

S(RHNCAM ~ Inicie

Screen Cam "Dote Browser Functionolitl ogara.

Na tela de naveg ador de dad os voce pede fazer

Role

a esquerda e a direita.

De urn clique dup lo em um a linha para ver mais campos de uma vez .

Cri e uma n o va linha es colhe ndc

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

Altere as mulriplas linhas ma rcando-as, escolhendo 0 caminho de


menu Table Ent ry- > Chang e e entao pressione os bot6es Next Entry
e Previous Entry na barra de fer ram entas Application.
Copie uma linha existe nte m arcando -a e entjio escolhendo
de menu Table Entry-> C reate w/reference.

Problema

He menos registros no lista de

Ro le para cim a e par a baixo.

caminho

Copie as mulciplas linhas marcando-as, escolhendo 0 caminho de


menu T able Entry->Change e cntsc pressionando os bo roes Next
Entry e Pr eviou s Entry na barra de ferramentas Application.

Exclua uma linha ou mais marcan do-as, escolhendo 0 caminho de


menu T able Ent ry- c-C reare w/ refer en ce e coeac pr essiona nd o 0 boteo
Delete Ent ry na barra de fer ramentas Application para cada linha que
voce quer excluir.
Selecione todas as linhas e tire a selecso de rodas as linhas pressionando
os bot6es correspondentes na ba rra de ferramentas Ap plication .
Im prima a lista pressionando
Standard.

botso Print na barra de ferramentas

C lassifique a lista colocando 0 cursor em uma coluna para classificar


e entao pressiona ndo os bo t6es Sort Ascending ou Sort Descendin g
na barra de fer ramentas App lication.
Localize um a st ring pression ando 0 ba tao Find n a barra de [erramentas Standard. D igite a st ring, pressione Find e entao de urn clique em
uma area dest acada para visu alizar essa linha.
Palja download cia lista para urn arqu ivo em seu disc o rigid o es colhendo
o caminho de menu Edit-> D own load. Voce: pede esco lh er ASCII,
form ato de plan ilha ou Rich Te xt F orm at.
Selecione os campos que vo ce quer vel' na lista esco lhen do
de menu Setrings-> List fo rm at-> C hoose fields.

caminho

Varies outrOS parametres de Iista m ilium 0 caminho de menu Settings-> U ser parameters. Aqui voc e pode configurar a largura de safda,
o mimero maxim o de linhas que pode ser exibido, ativar saidas de

133

DtAJ: oDATA DlOiONARY, PARTE 1

conversjo ou exibir 0 nu mero real de linhas que coincide com 0 criterio


de selecsc. Voce tambem pede alterar os tftulos de coluna para utiliz ar
os r6t ulos de elementos de dados em vez dos nomes de campo das

tabelas.

nolo sera capaz de utili zar 516 se a tabela river urn malogo de manuten~ao
padra o. Ness e case, use 0 SM3l.
A maneira mais simples de dizer se voce deve utilizar S 16 ou SM31 e
aimplesmenre experiments-los. Se urn deles nao funcionar, enrsc 0 OUtrO
pr ovavelmente resolved. Se nenhum funcionar, recorra ao SM30.

Utilizanda 5M3l e SM30


5M3 1 e SM30 tamb em p od em ser utilizados para exibir e at ualizar dados de
tabela . SM31 euma versao mais anriga de SM30 que tern menos func ionalidade.
campo de entrada ria primeira tela de SM30 e. suficien temen te longo para
acomo dar qualquer nome de tabeIa; no SM31 ele tern apenas cinco caracteres
de comprimemo. An tes qu e voce possa utilizar qualquer urn, urn programa
espe cial chamado dialogc de manu tencac padrac deve ser gerado para a tabela
que voc e quer exibir.

Um di6/ogo de monuteno podroo e um progromo ABAP/4 qu e voce gero .


Qu a ndo voce choma 5M31 a u SM30, 0 novegodor de dodos c uto rncficcme nte
lccchzc e corrego esse pragroma gerodo. He oferece umc interface mois campfe xc e
mois funciono lidode do que 0 5E 16. Poro mois informa lioes sobre di61ogos de
monutencec e procedimento po ro eric-los, consulte a e lude R/3 Library.

NOVO lrl...

niMO r

Para localizor as informo<;6es em di6!ogos de mcnuten ceo no R/3


library, escolh a 0 com inho de menu Svstern-> R/3library Help. A partir
da l, de um clique nos seguintes guias: Basis Components>ABAP/4
Deve lopment wcrkbench-> Extended App lica tions Funct ion U
brary->E xle nded Table Maintenance.

Comparanda

SEl 7 cam a5El 6

Exibi ndo os dodos utilizando seu pr6prio prog ro mo


de ABAP/4
Em vez de utilizar urn navegador de dados, e mais facil escr ever urn programa
pequeno de ABAP/4 para exibir os dadcs em sua tabela. Teate criar urn agora.
Projere seu programa para escrever uma men sagem aprop riada se nenhuma
Iinha existir na tabela.
U rna solu ~ao de exemp lo e mos trada na Lista gem 3.1. Experim enre criar
uma por conta pr6pria antes de olhar na solucs o.

ENTRAOA~

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

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

a 5E17 emuito semelh ante ao 5E 16 no sent ido de qu e pode ser u tilizado para
pesquisar linhas especjficas dentro de uma tabela. Enrretanro, 0 SE17 nao pode
ser utilizado para atualizacoes. U tilizando 0 5E16, voce pede especificar
criterio de pesquisa complexo para urn maximo de 40 campos p or vez; com
SE17, voce . pode especificar criterios de pesqui sa simples pa ra qualquer
numero de campos de urna vex. 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.

Somando as navegadores de dodos


Em casos especiais, para exibir dados som ente onde voce precisa especificar
multiples criterios de classificacsc, utilize SE17. En treranro, para a maioria das
arividades rotineiras de exibiljao/atualiza~ao de dado s, utilize 0 5E16 . Mas voce

Utiliza ndo

qjuda El

A ajuda Fl e a documenracjo vista pelo usuario para urn' campo. Para obra-la,
o ususrio coloca 0 curso r no campo e press iona Flo A do cumentacao e exibida
em uma caixa de dialogo. Voce utilizara 0 seguinr e proc edime n to para modificar a ajuda F I que voce cri ou ant::riormente para 0 campo 1i fnr.
SmtHCAM~ lnicle a 5creenCom "How to Crea te or Mod ify Fl Help" oga ra .

Adicion anda a juda Fl para urn cam pa


Para adicionar ajuda Fl para urn campo:
1. Comece na tel a D iction ary: Tabl e/S tructure (no modo de altera~ao
ou exibicao).

135

,1
t
l

"'l!'"

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

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

~'~i ~:C

OIA3,0 DATA DICTIONARY,PARTE 1

2. Localize 0 campo para 0 qual voce quer edicionar ajuda e de urn clique
duplo no nome do elemento de dado s correspondence a esse campo.
A tela D ictionary: Disp lay Data Element sera exibida.
3. Pressione 0 botao Display < -> Change na barra de ferramentas
App lication. A tela muda para 0 modo de alreracao.
4. Pressione 0 borao D o cumen tation na barra de ferramentas Application. A tela Change Da ta Element: Language E e exibida.
5. Digite 0 texro que 0 usu erio deve ver quando ele solicitar ajuda para
esse campo. A primeira linha contern os caracteres &D EFINITION &. Isso
e urn titulo; nao altere essa linha. Digite sua documenracao comecando na linha da is. Press ione a tecla Enter para comecar cada
novo pardgrafo.
6. Press ione 0 botao Save Activ e na barra de ferram entas Appl ication
para salvar suas alreracoes . A mensagem "Document was saved in
active status" aparece na barra de status .
7. Pr essione 0 batao Back na barra de ferramentas Standard. VocS e
levado de volta a tela Dictionary: Change Data Element.
8. Pressio ne 0 botao Back mais uma vez para retomar a tela Dictionary:
Tab le/Structure.

Testo rido a ajuda Fl

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


NOVO ~

Vrnculos de hiperlexto perm item que voce cliq ue em urnu pclcvro destocodo au
HRMO "" [rose no elud e Fl e exibo ojudo edicione J pore esso pclov ro ou [rose. Pora
adicionar vlnculos de hipertexto, voce primeiro eric um doc ument o 00 qual voce quer
criar um vinculo e ento c deve inserir umo referencio a esse documento no texta do cjudo.
Os names de dccumentos devem inicior com y au z. Voce pade indui r hiperlinks e m seu
novo documento tcmbem e vincu!er 0 portir dol pore outro dccumentc, ad infinitum.
ScreenCom "How to Create

3. De urn clique na seta para baixo do campo Document Cla ss. U ma


lisra de classes de docurnento e exibida.
4. De urn clique duple em General Text . a campo D ocu ment C lass
agora contem 0 valor Genera 1 text e u rn campo identificado Gen eral
Text e exibido na parte superior cia tela Document Maintena nce. (0
campo Documentation Type ja deve conter 0 valor Orig; nal us ervSe
ele nao contiver, de urn clique na seta para baixo no fim do campo e
o ahere. )
S. No campo General Text, digite 0 nome de urn documento que vo ce
quer criar. 0 nome deve iniciar com y ou z. LEMBRE-SE DESSE

N OME.
6. Pressione
e exibida.

ba tao Create. A tela Change General Text: Language E

7. Digite seu doc umentc aqui. Pressio ne a tech Enter no final de cada
paragrafo.

exibida.

1. Come ce na tela Dictionary: Table/Structure (no modo de alteracao '


au exibicao).
2. Escolha 0 caminho de menu Urilities-> Create ent ries.
3. Coloque 0 cursor no campo com 0 texto de ajuda modificado.
4. Pressione Fl. 0 sistema exibird sua documentacao modificada.

2. Escolha 0 caminho de menu Utilities- >Docu mentation. A Document Maintenance: Initial Screen e exibida.

8. Pressione-o botec Save Active . A tela C reate Object Catalog Entry e

Para testar sua ajud a F l :

S(RHN(AM~ Inicie

1. Comece no menu principal do R/ 3 e escolha 0 caminh~ de menu


Too ls->ABAP/4 Development Workbench. A tela ABAP/4 Development Wo rkbench e exibida.

Hypertext link in F1 Help" ogora.

9. Pressione 0 bo-se Local Object. Voc e elevado de volta a tela Change


General Text e a mensagem "Document was saved in active st atus"
aparece na barra de Status.
'10. Pressione 0 batao Back para retornar a tela D ocument Maint enance:
Initial.
11. Pressione 0 batao Back novamente para ret omar
Development Workbench.

a tela de ABAP/4

12. Entre no Data Dictionary e exiba seu elemenro de-dado.


13. Pressione a batao D isplay < -> Change na barra de {erramentas
Application. Sua tela altema-se para alrerar 0 modo.
14. Pressione 0 bono Documentation na barra de feITa~emas App lication. A tela Change Data Elem en t: Langua ge E e exibida.
15. Coloque 0 cursor na posicao ern que voce quer inserir urn hiperlink.
16. Escolha 0 caminho de menu Inc1ude->Reference. A tela Insert Link

eexibida.

17. De urn clique na seta para baixo no fim do campo Selected Reference.
A tela Title e exibida: note que ela conte m uma lista de classes de
do cumentc.

"'
137

138

DIA3: 0 DATADIGlONARV, PARTE 1

APmDA EM 71 DlAS ABAP/4

18. De urn clique duple em General text. 0 campo Selected Reference


agora contem 0 valor General text e urn campo rotulado General

Resumo
a Data Djctio~ary e uma ferramenta utilizada por program as em
ABAP/4 para cnar e man ter tabelas . Hi tres ripos de tabelas: transparente, de pool e de cluster. As tabelas transparentes sao as mais comuns
e sao utilizadas para armazenar dados de aplicarivo. As rabelas de pool
e de cluster sao principalmenre utilizadas pela SAP para armazenar
dados de sistema.

Text e exibido no topO cia tela.


19. No campo Gene ral Te xt, digite

nome do documentoque voce crio u

no passo 6,
20. N o campo Name In D ocumen t, digite 0 texto de hipe rlink. Esse e 0
tex to que sera. dest acado e no qual 0 usuario sera capaz de dar urn
clique par a reeeber ma is ajuda.
21 . Pressione 0 batao Continue . Vocee levado de volta para a tela Change
Data Element: Language E e urn link aparece na posiceo do cursor ,

Para criar uma tabela, voce pr imeiro p reeisa de dominies e de elementOSde dados . a s domfnios ofere cern as caracteristicas recnicas de urn
campo; os .elementos de dad os ofere cern os r6tulos de campo e a ajuda
FI. as dois sao reutilizaveis.

22 . P ression e 0 botao Save Ac tive na barra de fer ramentas Application.

23. Voce pode experimentar seu novo hiperlink imediatamenre escclhendo 0 caminho de menu Document-c-Sc reen Output. A tela
Display D ocument ation e exib ida, seu texto de ajuda aparece e seu
hi perlink devera ser desta cado.
24. De urn clique no h ipe rlink. A tela Display Hypertext: e exibida e seu
doc umento prov avelmente aparecera.
25. P ressione Back tre.s vezes para retomar para a.tela Dictionary: Table/St ructure.
. 26. Para testar seu hiperlink, exiba sua t abela e escolhao caminho de menu
Uriliries- c-Create Entr ies. A te la T able Insert e mos tr ada .

27. P osicione 0 cursor no campo n o qual voce criou a ajuda Flo


28 . Pressione Flo Seu textc de ajuda com 0 hiperlink devers ser exibido.
29. D e urn clique no hiperlink. Seu novo documento deve ra ser exibido.

..

o
E
'j;l,
o
c

'"
-e
~
III

'"

....

Problema

Sol u ~ ao

Nee posse loca lizer Gener al Text


no llsto de classes de docvmento.

Aparece a mensagem
"Chonqe relevant to trcnslotlo nt"

Aparece 0 mensogem "Dote


element is not used in on ABAP/4
Dictionory structure.

o~ .objetos de .dieiomirio devem estar ativos antes de poderem ser


utilizados. Se fizer uma alteracao para urn objeto de dicionario, voce
deve reativar 0 objero para que as alteraqoes tome m-se efetivas .

a s n avegadores de dados permitem que vo ce exiba e modifique os


dados dentro de tabelas. a SE16 e 0 navegador mais geral de dados.
o SEll, 0 SM30 e 0 SM31 sao os out ro s navegador es que oferecem
capacidades variadas.
~oce po de erial' ajuda Fl dentro de u rn elemento de dados pressl~nando 0 bordo Documentation. Dentro dess a ajuda Ft, voce pode
cnar vfnculcs de hipertexto para outros docum entos de aju da FI.

P&R

Role pore cirnc.

Presslone 0 botoc Save Active no bo rra de


ferromentas Application , noo 0 bctco Save no
borra de ferromentos Standard.
~ Altere a closse de docu mento po ra General
Text.

Estou pressionando 0 botco


Documentation no tela de elemente
de dodes, mas nado cccntece.

0 titu lo do tela e Didionary: Display Doto


Element? Se for, voce est6 no modo de
exibi~oo. Voce precise ester no modo de
clterccoo. Pressione 0 batao Display <->
Change e entec tente novome nte.

Se deixo 0 comprirn ento de urn campo menor alt era n do 0


do mfnio e, se esse campo e ut ilizado em uma tab ela que ja
con rem dados pree n ch en do 0 comprimento in tei ro do campo,
o qu e acon t ece?
Q uando voce ativa a domfnio, 0 sist ema ten rar a ativar as tabelas
qu: sao dep~ndentes desse domfnio. A ariva cao das tabelas que
teriam perdido dados falharia e um a lis ta d essas rabelas seria
m os rrada para voce. Se voce en tao p rosseguir e ativar essas
tabelas, 0 sistema au tomaticam en te converte d. os dad os nelas e
os dados na coluna referenciada pelo domla io serao rruncados .
Como voce sabe qu ais tabelas serac af~tadas an tes de alterar urn

dominic?

139

140

- - __ v

I APRENDA EM 21 DIAl ABAP/4

w-- . . . . = _ .
DIA 3, ODATADJCTlONARY, PARTE 1

Paca uma list a W here-use d no domlnio. Para f~ zer i.sso, exiba


a dom inio, pressio ne 0 ba tao Where- Used ~lSt na barr~ de
ferramentas Application, selecione Other Objects ~ pressione
Continue. Uma lists de drvore sera exibida. De urn clique duple
na linha em que esta escrito Table. A lista de.nomes de ta~e~a e
exibida. De um clique duple em qualquer linha para exiblr a

rabela.

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

Sim, e possivel criar urn campo de tabela sem u tilizar urn


elemento de dad os au domtnio. Exiba a tabela no modo de
alteracio e en tao escolha 0 caminho de me~u Edit-c-Direct
Type Entry. Voce entac pode inserir 0 compnmento de campo
e ripe de dado diretamente. Esse metoda ndo erecomendado para
campos que aparecerao na tela; ele e apropriado soment~ para
campos que nunca secio vistas sob~e a tela e nao terao qU;;l.ls~uer
relacionamenros de chave est ran geira com outras tabelas (veja a
seguinte capit ulo para uma explicacao de cheves estrangeiras}. A
SAP uciliza esse me todo de criar tab elas para tabelas que armazenam as in formacoes de sistema como ID s de cursor de banco ,
. de dados . Voce po de udliza-lo na visualizacio (staging) de. tab ela
,que arm azena dados brutos em transite den rro ou fora do s;:}e,ma
R!3. H a duas desvantagen s principais nesse metoda. Pr1IT~el~O~
nenhum eleme nto de dad o e utilizado e, ponamo. nao exrsnra
nenhum rotulo de campo ou ajuda FI. Segundo, nenhum dominic
e utiliza do e entao as chaves estrangeiras nao podem ser criadas.

de dad os au domin ic? Isso parece muito trabalhoso pa ra crrar


para eada cam po.

Works hop
Os segu intes exerclcios proporcionarao. a voce pratica para c~iar objetcs no
dicionaric de dados e urilizar esses objetos em prcgramas SImples com as
insrrucoes tabl es, sel ect e write. As respo stas estao no apendice.

141

5. 0 qu e sao os c6digos de transacao d os quatro navegadores de clados?


Qual e 0 mais comumente utilizado e qua l nao pode ser uti iiz ado para
atualizar dados?
~

I,

I
~

I!
!

II

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


ou uma tabela de cluster ?

Exerd cio J
Adicione os campos mo strados na Ta bela 3.4 em S1..1<'I tabela 1 f al . Nenhum
desses camp os ted. urn X na coluna Key porqu e eles nao faze m pa rte da chave
pri maria. 0 propdsito desses campos e co nter urn segundo nome para 0
fabr ican te, a data e a hora qu e a linha foi criada e 0 ID de usuario do usudrio
que criou a regi stro. Crie urn n ovo elemen to de dadcs p ara todo s os campos.
Reutilize 0 dominic do campo namel para a camp o name2. Para 0 resto dos
camp os, utilize os nomes de dominies existences do R/3 mostr ado abaixo.
Do cum ente esses campos utilizando 0 botao Docum ent ation no elemen to de
dad os. Depois que voce ativou suas alceracoe s, utiliz e urn navegad or de dados
para atualiza r as linhas existences em sua tabela e col oque os dados nos novos
campos. Enquanto voce esta arualizando as Iinhas, te ste sua ajuda F lo
Ta b e la 3 .4 Novas compos e suas cc rccterlsticos pa ra a tab ela ztx lfa l
Nome do campo

Nome de DE

Nomede DM

name2
erdat
ert i m
ername

" name2
." -e rdat
ertim
ernam

name
datum
time
usnam

Exerd cio 2
C rie uma tabela transparenre knal para conter dad os-mestr es de clienres,
co mo mo strado na Tabela 3.5. Utilize urn na vegador de dados para adicionar
da do s at abela. eri eurn novo programa e0302 que Ie os dados dessa tabela
e os escr eve ern uma Iista.

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

elemento de dados contern ?

3. A quese refere

termo dados de aplicativo?

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


do campo?

~ ,' -,,'

142

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

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


D e sc ri ~a o

N ome

de ca mp o

PK

No me

Nome

de DE

de OM

Tipo

Len

Chente
mafldt

mandt

Numero de c1iente

kunnr

kunnr

Nome de clente
name~

knamel

Ctdode
cityc

ci tyc

Regioo

regio

"r egi o

Pels

1andl

, and l

oData Dictionary, Parte 2


Objetjyos do capitulo
Depois de completar est e capitulo, voce sera cap az de:
e Criar chaves estrangeiras.

U tilizar 0 campo Value Table no do minic.

Criar e utilizar tabelas de texto.


Descrever a diferenqa ent re uma estrutura e uma tabela e criar estrutu ras no Data Dictionary do Ri3.

Criar tabelas e estruturas con tendo campos monetdrios e de quanti-

dade.

Aninhar est ru tu ras dentro de ourras estrutur as ou t ab elas.

De sco b rind o as chayes e strang"'eCLiruaoLs" -

Umo chove estrongeiro e um compo em umo tobelo que estc coneetodo a outra
HiMO
tcbelo via um rela ciono mento de chcve estrang eiro. prop6sito do relocionomento de chc ve estrongei ra e vchdc r as dodos sendo inseridas em uma tabelo de
verificccc c co ntra um conjunto vdlido de vclores em outre tobelo. A tcbelo que contem
a chove estrongeira e chcmado tobelo de chove estrongeiro. A tobela que contern a
cc ojvnto vclido de vclcres e chemo do tobete de verifico<;6c [ve]oa Figura 4.1) . 0 compo
que e va lida do e em que a relodonamento de chove estrangeiro e criodo e chomodo
chove estrangeiro.

NOVO -....

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

-------------~~~~~~w~~~144

.. -....

APREH DA EK 21 DIAl AB AP/ '


Figura 4 1

A tcbetc de chcve
estrongeiro e 0 tobelo

YWWYW W .

DlA 4: QOATA OIcnONARY. PARTE 7

Tabelode move

Tobelo

estronge.ro

de yermco<;Oo

de verificor;60.

l MOOS
land l

rth lfo1

cbc ve ~ lan d l
estrongeiro
~

Ii
US
CA

cA
~

US
US

IT

DE
DE

JP
-'-

nome do tob ela

nome do compo
reloctonc mentc
de chove eslrongeiro

Esto to belc contem umo


lisle de c6digos

ta~6es de inr egri dade sio mantidas no banco de dados. Portanto, urn programa
em ABA P/4 incorretamente escrito pode violar a inregridade referen cial; ele
pode inserir valores invalidos nas ta belas de banco de dados . P or ess a razao,
pr ogram as em ABAP/4 qu e precisam atu alizar 0 banco de dados com dado s
proven ientes d e uma out ra fon te qu e nao a in t erface com 0 usuari o n orm almente passaro esses dad os p or u ma interf ace com 0 usuario a fim de

valids-los.

de pcis v61ido$.

US

Para mo is lnfcrmccces sabre utilizoliCio do interfa ce com 0 usvcnc pora


vcltdcr dodos, consulte os programas de ajude do R/3 library para
BOC (Botch Data Communication). Para visuolizor esso documentcceo,
o partir de qvclqc er tela escolbc 0 co minho de menu Help->RJ3
library. Voce vern 0 me nu principal do blbltctecc do R/3 . A partir del,
de um clique nos seg uintes guias: Basis Components->ABAP/ 4 Develo pment Workbe nch-> Basis Programming lnterfcces->Tronsferring
Data With Botch Input.

"-

Q uando voce odic:iono dodos a esto


tcbelc, umc verificot;60 , feito para
'o'er se a c6 digo do pa is que voce estc

lentando inserirexiste no tcbelo de verifico<;60 (ztxO05).

P or exempl o, sua tabela - 1f al contem c6d igos de pafses em urn campo


chamado landl . Voce pede cri ar um a segunda tabela, por exemplo t OOS, e
preenche -la com uma lista de codigos de parses validos . Encao, se vo ce cria um a
chave estran geira como a mostra da na Figura 4.1, uma verificacf o automaticam en te sen. feiea contra a tab ela de verificacao para urn valor valido. C om essa
chave esrrang eira no lugar, 0 usudrio nac po de in serir codigcs de parses
invalidos na tabela - - "l f al ,
U rna chave esrrangeira ob tem seu nome do fat o de que ela semp re deve
verificar urn campo na chave primaria de outra tab ela.
.

Acionando a verifi ca ~ao de chave estrongeii-a


A verificacjo de chave esrrangeira ~ executa da pelo usua rio cia in te rface do R/3 .
Quand o voce digita urn valor em u rn campo e p ressiona a t ecla En ter, nos
bastidores a interface com 0 usuario formula uma instrucao sel ect para validar
o camp o de chave estrangeira e envia-la ao banco de dad os. Se uma linha
coincidence njio foi la calizad a na tabela de verificac ao, 0 u suario ve uma
me nsage m padrso indicando que 0 valor que ele digitou einvalido . Se u ma linha
coinci dence existe na tabela de verjfica~ao, os valores inseridos na tela tern
permissao para passar para 0 programa em "ABA P/ 4 subj acen t e. Ass im, as
chaves estrangeiras jii sao verificadas ant es de 0 pr ogram a receber os valores .
Alem da tecla Enter, as chaves estra ng eiras tambern sao verificadas quan do um a
teela de fun~5.oJ urn bota o (pu shb utton) ou urn ite m de men u eselec ionad o.
As chaves estrangeiras sao verificadas apenas pda int erface com 0 usuario.
Elas nao existem no banco de dados e DaOsap verificadas se vo ce sim ples mente
em it ir uma instru~ao updat e de banco de clados. ~en huma refer encia a limi-

Raquisi tos tecnicos para criar uma ch ave estrongeiro


Para criar um a cbave esrrangeire:
A verificacao deve ocorrer em relaljao a urn campo dentro da chave
prim dria da tabela de verificacao.

Os no mes de dominios do campo de ehave estrangeira e 0 campo de


rabela d e verificacao devem seros mesmos.

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

No Figura 4.2, os dais compos utilizom 0 mesmo e lement o de dodos .


ossim como 0 mes mo domlnio.lembre-se de q ue noo e tmpre scindlvel
qu e as dois utlllzem 0 mesmo elementc de dodos - somente as
dornlnlcs de vem ser os mesmos.

Como esses campos compartilharn urn dominic em com um, aintegridade


da comparacao entre os dcis campos e garan tida, porque seus tipos e comprimente s ~e dados sempre coincidirao.

145

- ...

......

146

- ---

.. -

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

APRENDA EM 21 VIAS AB AP/4

CIAt 0 DATADlmONARI, PARTE 2

Fig ur a 4 2

Tobela de

Este e urn diogromo

verifico<;oo

do compo de chc ve
estrangeiro, do compo

de tobelo de

,",,005

tcbelcs

landl

land1

com pos

do
dominiccomum que
eles comportilhom.

"

"

I, pe:
n: 3chcr

"" /

A seguir apresen tamos 0 procedimento de criacao para a tabela de verificacao


- - tOOS. Se voce tive r problemas, cons ulte a se<;ao de diagn6sti co e solucao de
problemas relative ao p rocedi men to de criacio de tabelas rransparentes para
dominies preexistentes e elementos de dados no Di a 3.
S(mNu.M~ lnicle a ScreenC a m "How to Create Check Ta ble ' . tOOS" agora.

Para criar sua tabela de verificacao :


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

Estes carocteristicos
sao herdodo s
do dominic

type: chc r
len : 3

ztxlcnd l

2. Digice

3. Escolha

elerne nto de dodos

nome de tabela no campo O bje ct N ame .


0

bo tao de opcao T able.

4. Pressione 0 bocao Create. A tela Di ction ary: Table/Structure:


Change F ields e exibida.

ztxlondl

TYPE : CHAR
LEN,3

147

Procedime nto de criccco de ta be lo de verificccuo

mlto 1

verificoc;lio e

5. D igite urn textc cu rto, escolha a classe de entrega A e colo que uma
marca de verificacao em Tab. Maint. Allow ed.

dominic

6. Di gite os n om es de campo e de e1emento de dados na parte inferior


de te la.

Criando u mo ,h o ye est ra O.Q"e"i"r a"---

Agora estd na hora de voce criar um a chave esrrangei r a simples. Este exemplc
p ermi tird que voce se familia rize com as telas envolvidas no processo; todos os .
cam po s nessas relas serfo explicados em deralhes mais adian te neste capitulo. "
Os pro cedimenrcs a seguir demons tram como criar a tab ela de verifieafac
zt xt 005 e dep ois uma chave estrangeira em zt xlfal - l andl ut ilizan do ztxt 005
como a tabe la de verificaclo. D epois de visualizar esse procedimento, vo ce sera
solicitado a erial' sua pr6pria tabela - - -tO OS e entao criar urn relacion am ento
de chave esrran geira de - - - lfal -l and 1 para tabela de verificacao - - - t OOS.
Antes de erial' uma chave est ran geira, voce deve prim eiro te r um a tabe1a
de verificacao. Emb ora ja haja uma tabela de c6digo de pafses n o R/3, para
pra ricar voce criara e ut ilizara a sua propria tab ela. A tabe la d e verificacao se
cha mar a - - - tOOS e ira conter os campos e utilizar os elem entos de dad os
mostrados na Tabela 4.1. (Urn x na coluna PK indica campos qu e fo rmam a
chave primaria. )
Tabela 4. 1

as campos e sues ca racterfsticas para a tabelo

Nome d e cam po

PK

mandt
l andl

No me de DE

- --TOOS

7. Coloque uma mar ca de verificacao nos dois campos para indicar que
eles formam a chave primaria.
8. Pressione 0 b c tao Save na barra de [errament as Standard. A tela
Create Obj ect Ca talog Entry aparece.
9. Pressione 0 botao Local O bject. Vo ce e levado de volta
tion ary: Tab le/ St ruc ture: Change Fields.

a tela Dic-

10. Pressione 0 botao T echnical Settin gs na barra de ferr amentas Applicatio n . A tela ABA P/4 Dictionary: Ma intain T echnical Settings e
exibida.
11. No campo Data Class, digite APPLO (APPLO com urn zero, na o

APPLO com a letra 0).


12. D igite

a (zero)

13. Pressione

no campo Size Category.

batao Save.

14. Pressione 0 batao Back. Voce e.levado de volt a pa ra atela Dictionary:


Table/St ructure: C han ge Fi elds.
15 . Pressione 0 botao Activate n a barra de [erram en tas Application. A
mensagem "was activated" apa rec e na berra de sta tus e 0 campo Status
contem 0 valor Act. .

mand t
- -1 andl

Escolha 0 caminho de menu Utilities- c-Create Entries para inserir c s


dados em sua tabela de verificacao recentemen te criada. Insira seis linh as com
valores 1andl de us, CA, DE, rr, J P e AU.

I,

~..--.d

w ...
148

........... w

wv

APRENDA EM 21 DIAl ABAP/4

DJA4: 0 DATADlcnmURY, PARTE2

Proced imento de criocc o de chave estrangeira

Fi g u ra 4 3

S(RHNCAM~ Inicie

A tela Create Foreign


Keyeobe compos de
tobela de verificaqdo e
seus compos de chove

V . W ! ' ' I..;

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

esfrangeiro ossociodos.

Para criar uma chave estrangeira:

1." Comece na Dictionary: In itial Screen .


2. No campo Object N ame, digire
a chave esrrange ira ( - - -1fal).
3. Escol ha

n om e da tab ela que


.

e para conter

boeso de op~ao Table.

4. Pressione 0 botao Change. A tela Dictionary: Table/ St ru cture: Chan ge Fields e exibida.
5. . Posicione 0 cursor no campo que esci para torn ar- se a chave estrangeira (l and2).
6. Pressione 0 botao Foreign Keys na b erra de fer ra m entas App licati on.
A tela Create F oreign Key sera exib ida (veja a Figura 4.3).
7. Digite urna descricao da chave estrangeira no camp o Sho rt T ext , por
exemplo, Country Code val idat i on.

8. Digite a nome da tabela de verificacto ( - - - t0 05) no campo Check


Table ou de urn cliqu e na seta para baixo e escolha cia Iista.
9. 0 pop -up Change Foreign Key aparece. Ele declara Check ta ble name
was created or changed. Generate a proposal for fi e 1d ass i sn- ,
ment? Pressione

borso Yes.

10 . Voce elevado de volta atela Create Foreign Key. Os names de ca~~o


de tab ela de veri ficacao e os nom es de campo de chave estrangeira sao
exibidos. (Os names de campo de tabela de verificacao sao - - t005mandte - - - t005 - l and!. O s nomes de camp o d e chave est ran geira sao
.- - l fe l -mand t e - -lfal-landl. )
11 . Pressione 0 botac Copy. Voce e levado de vo lta a tela Dictionary:
Table/Structure: Change Field s e a mens agem "Fo reign key was
transferred" aparece na barra de Status . O s campos Status contem os
valores Rev; sed e Not save d.
12. Pressione 0 batao Activate na barra de fer ramentas Application . A
mensagem "was activated" aparece na barra de status. as valores nos
campos Status sao agora Act . e Saved.
V oce acaba de criar urn relacionamen tc de chave estrangeira entre as
tab elas - H al e - tOOS. ---Hal-landl e o campo de chave estrangeira e
- - - tO05 e a tabela de verificacao. A interface com a usu ario validara a valor
dentro do campo _. -Hal-landl con tra os valor es na colun a - - - t 005-landl.

Testa ndo

relacionamenta de chave estrangeira

Se vo ce encontra problema s, 0 seguinte procedimento e descrito em mars


detal hes n a pr6xima seC;ao. P ara test ar sua ch ave esrrangeira:
1. Inicie na tela Dicti ona ry: Table/S tru cture (qualquer alreracdo ou
modo de exibicso) .

2. Escolha 0 caminho de menu Utilities-> Crea te entries.


3. D igire um valor no campo de chave estr angeira (c6digo de pais). ,
. 4. Pressione a te cla Enter. Se a valo r nac for localizado na tabela de
verificacao, a mensagem "Entry do es not exist (please check your
en t ry) " e exibida.

Desco brio do a coluoa CbeckTable


Dep ois de criar um a chave est ran geira, a nom e da tabela de veri ficacao aparece
na coluna C hec kTable na tela Di cti onary: T able/ Stru ct ure. Se urn campo for '
uma chave estrangeira, a co luna Ch eckTable co nrera 0 nome da tabela de
verificacac desse campo.
O lhe em sua tabela agora. Vo ce deve ver 0 nome de sua tabela de
verificacao na colona C heckT able.

D ete[rn i o a ~60

autorn6tico de.compos de chave estraogeira

Quando cri ou a chave est rang eira, voc e nfio teve de especificar os campos que
devem pa rricipar no relacionamen ro de chave estran geira - 0 sistema as
deterrn in ou au romaticamente. Esta se~ao explica como 0 sist ema determine
esses n a mes de campo .

149

. ..'-.

150

,PRENDA EM 21 DIAS "'P/4

DIA4;OOATADlaJONARY, PARTE 2

Durante a cria~ao de uma chave estrangeira, voce colocou 0 cursor no


campo de chave estrangeira e pressionou 0 botao de chave estrange ira e 0
sistema gero u uma p roposta de chave escrangeira consistindo em pares de
campos. Em cada par, urn campo se o rigina da tabela de verificacao e 0 outro
da tabela de chave estrangeira. 0 num ero de pares eigual ao numero de campos
de chave primaria da tabela de verificacao. Todos os campos de chave prirnaria
da tabela de verificacio devem ser incluidos no relacionamento de chave
cstrangeira
o sistema pesquisa nesses campos de chave primaria 0 primeiro que tern
o mesmo dominio que 0 campo de chave estrangeira e 0 emparelha COm sell
campo de chave estrangei ra.
Se houver diversos campos na chave primaria cia tabela de verificacao, 0
sistema tentara localizar uma coincidencia de cada urn dos campos resrantes.
Urn a urn, 0 sist ema tentani localizar urn campo na rabela de chave estrangeira
que tern 0 mesmo do minic que a campo de tabela de verificacao. Se isso nso
funcionar, ele tentard localiz ar urn campo que tenha 0 mesmo tipo e comprimenta de dados. Se ele encon trar ma is de uma coincidencia, selecionara urn e
advertira vo ce de que a atrib uicac e ambigua. 0 processo e repetido ate que
todos os campos de chave prim aria da tabe1a de verificacao sejam emparelhados
a urn campo da tabela de chave estrangeira.

Rel aci o'na nd o as chaves estran geiras com a seta


pa ra baixo e a ajlJdo F4
NOVO...

titulo de co luna e a lorguro nos listos de entrodas pcssfvefs vern do


campo Header no elemento de dodos para 0 ca mpo de tobelo de
verlftcccoo exibido.

Acompanhe 0 procedimento a seguir para testar 0 relacio namento de


chave estrangeira que voce criou em - - -1 fal- 1andl . Se sua chave estrangeira
nao funcionar, tente esse procedimenro urilizando ztxlfal, entao compare
ztxl fal com sua tabela para dete rminar 0 problema.

1. Comece em qualquer tela.

2.
3.
4.
5.

No campo Command, digire /nse16.


Pressione a tecla Enter. A Data Browser: Initial Scree n e exibida.
Digite - - - 1fal no campo Table Name.

Pressione 0 botao Create Entries na barra de ferramen tas Application. A tela Table Insert e exibida.

6. Digire qualquer valor no campo de numero de fabricante, por exemplo, MY-V!.

7. Posicione

cursor no campo Country Code (landl)..Em bo ra uma


seta para baixo apare~a no fim dele, nao a pressione ainda.

8. Digite

valor xx no campo Country Code.

9. Pressione 0 borso Save na barra de [erramentas Standard. A mensagem "Entry XX does not exist (please check your ent ry)" aparece .

Alem do ojudo Fl. voce tcmbem pode oferecer alga chomodo oiudo F4.pora
a vsucrlc. A ojude F4 e ume listo de vclores volidcs que 0 usvcric pe de digitor
em um compo. A flm de obter ojudo F4, a usuoria posiciono 0 cursor em urn ccmpo e
presslon c Q teclc F4. A elu de F4 tc mbe m e conhecidc como possfveis entrodos de oiudo,
porque consisfe em umo listc de entrodos permltidos no compo. Os dais termos s60
vtiluodos intercambiovelmente pelo SAP.

Seu cursor esta posicionado no comeco do campo que contem 0 valor


incorreto. Urna seta para baixo aparece no fim do campo.
10. De urn cliq ue na seta para baixo ou pressione a tecla F4. Urn pop-up
contendo as colunas de chave primdria de tabela de verificacac
- - -tOos aparece.

e automaticamenre

11. De urn clique duplo em us. 0 pop-up desaparece e 0 valor n o campo


c6digo de pais muda para US.

lERMO

Quando voce cria uma chave estrangeira, a ajuda F4


ofe rec ida para esse campo.

$CRHHCAM

lnlcie a scree nco m "Using

Foreign Key to Provide F4 Help" agora.

Em uma tela, se voc e coloca 0 cursor dentro de urn campo de chave


estran geira , um a seta par a baix o aparecera no fim do campo de entrada. Essa e
a ajud a F4 . Se voce der urn clique na seta pa ra baixo ou pressionar a teela F4, .
uma Iista de p ossiveis en tradas vdlidas eexibida. Essa lista e0 conteudo da tabel a
de ve rificacao. N essa lista, as colunas de chave primaria da tabela de verifica~ao
sao exibidas, excluin do mandt.

151

12. Pressione 0 botjc Save na barra de [erramentas Standard. A mensagem "Database record successfully created" apar ece na barra de
status.

relacionamento de chave estrangeira oferece urn mecanisme para


validar os dados inseridos pelo usuario na tela . Se 0 campo fo r urn campo de
chave estrangeira, 0 valor ecomparado contra a tabela de verificacao. Se 0 valor
nao existe na tabela de verificacao, e exibida uma mensagem de err o padrao.

I
II
I

I
!

~~j

152

DlA 4: 0 DATA DICTIONARY, PARTE 2

AP RENDA EM 21 DIAl ASAP"

C h aves e strangeiras e p rogTIlLLm


UUOL:lsc..!eOW
mLllo
Wt!e Os programas em late que leem arquivos sequenciais au outras

origen~ de
dados que nao a tela e atualizam 0 banco de dados diretamente devem validar
os dados. U rn programa desse ripo deve ser codificado de uma destas rres
manerras :

0 programa deve passer as dodos per uma interfac~ c~m ~ usuario


chamando uma rra nsacao qu e contem as telas. 1550 efeitc mterramente
em segundo plano. Os clados sao automaticamente "chaveados" par a
os campos de tela a fim de fazer com que a verificacao de chave
estrangeira seja executada. Essa tecnica e chamada EDe (Batch Da ta
Communications) e foi mencionada anterio rmenre na se~ao "Desccbrinclo as chaves est rangeiras". BDC e a tecnica padrao utilizada para
impo rta r dados no sistema Rj3 .
Ele pode canter in srru coes se lect que executam a verificacao de chave
estrangeira. Essa tecnica e menos confidvel, porque os programas
devem ser atualizados se novas chaves estrangeiras forem adicionadas
au se existirem alteracoes.
Ele pe de passar os dados para m6dulos de funljao especiais que
executam as duas verificaco es de chave estrangeira e atualizacoes de
banco de dados. A SAP cria esses modules de funljao (chamado BAPIs
ou Business APIs) e os forne ce com 0 sistema R/3 .

Chaves es t ro ng e iro s compostas

Umo chove estronge jro comp osta e umo cbcve estrongei ro composto d~':dois
mAIo ~ ou mcis cam pos. Em o utros polovrcs, umo verificcccc e feito para comporar os
dols compos no tcbelo de cbove estrangeiro com as dois compos no tobelo de verificoccc.
A ccmblnocdo de vclcres deve existir no tobelo de verlflcccoo antes de eles poderem ser
inseridos no tobelc de chove esfrcnqeiro . Entretcnto , somen te urn compo no tela ocionor6
a verlflcococ de chove estrongeira composto.
NOVO 'rr....

MOVO ~

Quando voce eric umo chove estrongeiro composto, 0 compo em que voce
rea lmente define a chove estro ngeiro echcmodo compo de verifica<;ao. Some nte
um volor nco nulc no compo de verificc cc o adona a veriflcccec em relccec 0 tobela de
verificac;ao. Um valor em quolquer dos outros compos de ntro do chove estronge iro
composto noo ocionar6 a volidoc;oo.

URMO ~

Por exemplo. 0 campo reg; a em zt xl fa l deve conter apenas 0 estado valida


ou os c6digos de provincia. A cornbinaljao de regi a e 1andl juntos deve ser valida.
Portanto. urna tabela de verificar;ao (ztxto05s) comendo cornbinaljoes vili das de
regia e l andl e necessaria. Depois de eriar essa tabe1a de verificar;ao. uma chave
estrangeira composta e necessaria em ztxl fal para validar a combinaljao de regia
e 1andl em re1ar;ao a tabela de verificar;ao. Comumente, ztxt005s- 1andl tambem
deve servalidado contra ztxtOOS - l andl (veja a Figura 4.4).

figmg 4 4

Uma chove
estrangeira compo sto
volidondo a .
combino; oo de regioo

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

Iobelo de chcve

Tobela d e

estrongeiro

v e rifi ca ~60

ztxllal

ztxt005

LOOrr
us FL
CA
ON

US
A
US GA
DE
DE

02
01

LOrEr
CA
CA
US
US
US

ON

DE
DE

01
02

153

relacionamento
de chove estrongeira

NS
AK
Fl

GA

chcve estrongel r a "


composto
cc mcc de verflcocco. Umvalor nesse
compo a d ona a verthcocec

Voce cria urna chave est rangeira composta quase exatamente da mesma
maneira como voce cria uma chave estrangeira cont endo urn un ico campo. Voce
comeca posicionando 0 cursor em urn campo , nesse caso zt xl f al- r eg; 0 e
depoi s press ionando 0 botao Foreign Keys. C om o 0 cursor esta em reg; 0, e1e
se torn a 0 campo de verificafiio da chave estrangeira composta. Embora a chave
estrangeira seja composta de divers os campos, apenas urn desses campos
acionard uma verificacao contra 0 banco de dados . Como re g; 0 e 0 campo de
verificacao, urn valor inserido nele na tela aciona urna verificacao. Se 0 campo
de verificacao nao est iver branco quando a usuario pressionar a tecla Enter.
uma verificacf o sed executada contra a tabe1ade verificacso comparando todos
os campos cia chave estrangeira. Se 0 campo de lverificar;ao estiver em branco,
nenhuma verificacfo e feita mesmo se as outros campos contiuerem oaiores.

I,
,
f

,,t
;

Como com a chove estrangeira simples, os names de dorofnlo do


campo de verificac;ao e seu compo ossoclc dc no tcbelc de vertficocco
devem cai ncidir. Entretcntc, quando a chcve estrongeiro e criado, as
demais names de domin ios no chc ve estra ngeira composto nco tem
de coincidirj a chove estrongeiro pode ser crlcdc se 00 menos seus
tipos de dados e comprimentos coincldirem. Mois tarde, se 0 tipo de
dodos au comprimento em um desses domlnlos for alterodo, os campos
ndo mois coincldiruo e os resultados da verificococ de chove estrongeiro serao imprevisiveis. Por essa roz60 , emboro 0 R/3 nao
imponho q ue todos os names de dominio de umo chove estrangeira
compo sto coincidom, isso e basto nte desej6veL
Em geral. quando a lterar 0 tipo ou a compnmento dos dodos de um
campo em umo outro chave estrange ira composto que nao 0 compo de
verifico~oo, voce deve confenr se a chove estrongeira e os campos de
tobelc de verifica~oo estoo vfilizondo 0 mesmo dominic. Se naoestiverem,
voce deve otuoliz6los para ter 0 mesmo tipo e comprimento de dodo.
Umo falho nissoresuhor6 no operoc;co imprevislveldo chove estrongeiro.

II

154

DIU 0 DATA DICTIONARY, PARTE 2

" RE NDA EM 21 DIAl ABAP /~

Se voce criar urn relacionamentc de chave estrangeira para u ma tabela de


verificacao con tendo mais de urn campo na cbave primaria, todos os campos
de chave primaria da tabela de verificacio deverao ser inc luldos na chave
estrangeira. Nero todos precisam ser verificados [veja a se~ao "Chaves estrangeiras genericas" a seguir) , m as todos devem ser incluidos.
Como a maioria das tabelas de verificacao conrem 0 campo mandt, esse
campo e parte da maioria das chaves estrangeiras (veja as Figuras 4.5 e 4.6).
In c1uindo ma ndt na tabela d e verificacao, conjuntos de valo res validos e
independentes po dem ser d efini dos para cada cliente de logon e eles podem
d iferir entre clientes. Essa capacidade ebastante desejsvel para sepa rar as dados
entre clientes e assegu rar que eles sejam completamente independen tes urn do

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

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

1: Se 0 prograrna aplicativo exclui uma linha da tab eia de verificacao,


tambem excluini as Iinhas correspondenre s da tabela de chave esrrangeira. Por exemplo, se 0 programa de aplic acao remover 0 valor us
da tabela de verificacao, ele excluira todas as linhas da tabela de chave
estrangeira .o nd e 1andl '" US. Em outras p alav ras , se houver urn valor
na tabe la de chave estrangeira, havera sempre uma e apenas uma linha
tendo esse valor na tab ela de verificacao.

C: E possfvel excluir da tabela de verificacao sem exc1uir as linhas


correspondenres na tabela de chave esrran geira. Em out ras palavras,
po de haver valores na tabela de chave estrangeira sem valo res correspondent es na rabela de verificacao,

MANDT LANDl REGIO tv\ANDT lANDl R.EGIO

mandt .
I

700
800
800
800
800
900
900

I
I
I
I
r
r

I
I

I
I
I
I
I
I
I
I

US Fl
US GA
US GA
CA NS
CA ON
DE
DE

01
01

700
700
800
800
800
900

CA ON Volores v6lido$ no clteete 7~


US Fl I~
CA NS
Volores v6lidos no cliente 800
CA ON

US

GA

DE 01 } Volores vclldos no cllente 900

as valores de Y sign ificam :

cutros

compos

1: Hi sempre uma e, somente uma, linhana tabela de chave estrangeira


para cada linha na tabela de verifica cao.

C: Ha, no maximo, uma linha na tab ela de chave estrangeira para cada
Iinha na tabela de verificacao.

Entenda a cardinalida de
NOVD ....

N: H a sempre pelo menos uma linha na tabela de chave estrangeira para


cada linb a na tabela de verificacao ,

TEilID

A cordino/idode do relccloncmentc de cbove estrongeiro descreve , para coda


valor no tcbelo de verifico~60, quonfos linbcs de dodos soa perm itidos no tabela
de chcve estrongeiro. Ela e Inserldo no tela Create Foreign Key {veja 0 Figura 4.3}. A
ca rdinolidode e descrita como X: Y, onde Xse refere a fcbela de verifico ~oo e Yse refere
a tobelc de chcve estrongeira. X pode cpe ncs ter as vclores 1 ou C e Y pede ser 1, C, N
au eN.

CN: Pede au nao haver Iinhas na tabela de chave esrrangeira para cada
linha na tabela de verificacio.

A cardinalidade ndo imposta pelo sistema R/3 . Especificar a cardinalidade

e opcional e a siste ma nao verificara a cardinalidad e pa ra determiner se

1:>5

44 . ....

156

APREH DA EM 21 DIASABAP/4

essa atualizacao tern permissao para acontecer quan do urn prograrna em


ABAP/4 atu aliza uma tab ela. A (mica vez que a cardinalidade e utilizada e
quando voce cria urn objeto agregado n o DDIC.

OIH OO'T'OICTIONARY, PARTE ' I

Urn o bjeto ogregado e um cbjetc ODIC co mposfo de mois de ume fabe la. Um
exemplo de urn ob jeto egr egedo e umo visua Hzot;oo.

chave estrangeira, a ripe correto de chave estrangeira sen do tipo campos/can didatos -chave.
A o criar uma chave esrrangeira, voce deve escc lher carnpcs/candidatoschave se 0 campo de chave est rangeira for urn dos campos de chave primaria
da tabela au fo r urn candidato-chave. Caso contrario, escc lb a campos/candidat os nao chave.

Quando voc e cria uma chave estrangeira vo ce deve especificar a cardina lidade . Se nao espe cifica-la, voce sera incapaz de incluir a tahela em urn ohje to
agregado.

o sistema R13 suporta diversos idio m as e, ponanto, permice que os usuarios

NOVOlio..
lElI',O "

Iipo de campo de chove estrangeira


o ripe de campo de chave estr angeira tambem deve ser especificado na mesma

Campas-chave de uma ta bela de lexla

se conectem utilizando 0 idioma de sua preferencia. Por causa disso, ...s


descricoes rio R/3 sao armazenadas em rabelas especi ais dependenres do idioma
chamadas tabelas de texto .

tela que a cardinalidad e quando voc e cria a chave estrangeira (veja a Figura 4.3) .
Ele pode ser urn dos segui ntes valor es:

as usu6rios podem configurar se u pr6prio idioma de logon pcdrec.


Isso e feito no perfil de usu6rio escolhendo a cominho de me nu
System-> User profile- > User defaults. A c ftercce o do seu pe rfil de
usua rio s6 se tom o efetivo no seu pr6ximo logon.

Campos/candidaros-chave

Campos/candidates nac chave

Campos-ch ave de um a tabela de texto

Campas-chave
Escolha Key Fields/ C and idate s seo campo de chave est ran geira fo r urn dos
campos de chave primar ia da tabela de ch ave estrangeira. Escolh a Non-Key "
F ields / C andidates se nao fo r. Por exemplo, suponha que a tabela tl seja
co m posta de campos fl a fl Oe qu e seus camp os de chave primaria sejam fl,; f2
e f3. Se voce fosse definir um a chave estrangeira no campo f3, Key F ields/C andidates seria 0 tipo correro, porque f3 e pane da chave primaria. Se v6ci fosse
definir u ma chave estrang eira rio campo f S, Non-key F ields/Can didates seria
correto, po rque f S nao eurn dos cam pos de chave primdria.

Candidalos-chave
Urn condidcto-dtove e urn co mpo em urno tobelo que , por si mesmo ou em
con junt;oo com outro compo que n60 foz porte do cho ve prim6rio, pede ser
utilizodo poro identificor de mon eiro unico urno linho no tobe lo. Em o uiros polovros, se
houver umo mo neira de selecion or umc linhode"umo tobelo sem utilizer compos de chove
prim6rio, existem condidotos-chove nesso tebela. as candidatos-chove s60 os compos
que noo se encont rom dent ro do chove prim6rio que podem ser otilizod os unicomente
pore identjficor umo linho de mo neiro unicoi bosicc me nte e les podem se rvir como umo
chove prim6 rio alterna tive .

NO
VO'"

TERMO ""

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

Umo tobelc de fexto e urna tcbelc que contern descnce es 'n c lingua fa lodo' de
vclo res em umo tobe lo de veohcccec. Essos descricees 56 0 ormoze nad os em
v6rios ldlomcs. A chove prlrncric do tobelo de texto e c mesmo que 0 chove primcrlc do
tobe lo de verlftcocec , com a edie;oo de umo colune spras (idiomo).

NOYO .....

rmlo "

Por exemplo, a tabela ztxtOOS po ssui c6digo s de patses nela. Os nomes


dos palses sao armazenados em uma tabela separada chamad a ztxtOOSt
(m ost rada na Figura 4.7). po rque voce realmente precisa de muitos nomes para
urn c6digo de pars . Como ela armazena descricoes espe cfficas do idioma de urn
c6d igo generico, ztx t 005t e chamada de tab ela de texro .
A chave primaria de ztx t00 5t co ntem os mesmos camp os que a chave
primaria de ztxtOO S, com a adi ~ao de urna coluna spras (idio m a}. 0 cam po
spr-as contem 0 c6digo de idioma e ativa essa tabela para conter uma descricao
de divers os id iomas de logo n.
A chave primaria de qualquer tabela de text o e compost a dos campos
mandt e spras, seguidos pelo campo de validac;ao (ou campos); Urn QU mais
campos de descri~ao seguem essa chave primaria.
Urn relacionamento de chave estrangeira e definido em ztxt OOSt- l andl
para a tabela de verifica c;ao ztxtOOS. 0 tipo de campo de chave estrangeira deve
ser campos -chave de urna tabela de texto.

157

DlA ~:

0OATA DICTIONARY, PARTE 2

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


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

landl

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

us

mandt, spros,

DE

CA

landl, landx e
natio.

IT

JP
AQ
CC

Ta bel a 4.3 Conte udo do tobela ztxt OOSt


s pras

l andl

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

propriedades esped ais:

JP
JP
AQ
AQ
CC
CC

Relocionando as tabe las de te xto com a ajuda F4


HOVO
TIiMO ...
"

Quando as linhas cia ta bela de verif icalSao sao exibidas em respcsta a


uma solicitalSao de ajuda F4. 0 primeiro campo de clescrilSao da tabela
de textc apar ecera na mesma lista, como se fosse uma parte da tabela

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.

Por exemplo , a tab ela de texto ztxt005t contem urn relacionamento de


chave estrangeira de ztx t 005t- l andl para a tabela de verificacao ztxt005 e a tipo
e"key fields of a t ext table". Quando voce chama a ajuda F4 em ztxt005 -l andl,
o us ua rio ve as colun as de chave primaria da tabela de verificacao ztxt005, mais
o conteudo da primeira colu na que segue a chave primaria de ztxtOOSt. Scmence
as linhas onde spras igual ac idioms de logon atual sao exibidas. resultado
e que 0 usuaric ve as descricoes em seu idioma de logon para os codigos em

ztxl f al.

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

e 4.3.

E
D
D

lan dx
Canad a
Kanada
Germany
Deutsch' and
United States

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

$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

4. Posicione a cursor no campo Country Code {l andl }.

_,I

_______J

.,~'

160

APREWO A fill 21 OIAS ABAP I ~

5. Pressione a te cla F4 a u de u rn clique na seta para ba ixo no fim do


~amp o. Urn pop-up aparece exib indo colunas das duas tabelas ztxt 005
e ztxt005t . Observe qu e a col una 1andl da tabela ztxt005 e exibida e
as descricoes de lingua in glesa da tabela ztx tOOSt sao exibidas.

I
,

6. A gora efe tue logon novarnen te (voce nac precisa efetuar 0 logoff
primeiro ). Dessa vez , digite 0 par a Deutsch e (alemao) ern Language
Field de tela de lo gon do R!3,

7. Repita as passos 1 a 5 em sua nova se<;ao de logon.


8. Note que dessa vel. as descricoes da tabela zt xtOOSt sao exibidas em
alemao.

DIA 4:0DATA DICTIOHARY, PARTE 2

161

Chave s estIlmgeiros canstantes e genericas


Lembre-se ~e q~e, quand o voce cria u rna chave estran geira, todos os cam p os
de chave prim aria de tabela de ve rificaca o d evem ser in c1uidos no rela cio n amente de chav e estra nge ira . Entretanto , as v eze s, voce po de nao que rer exe cutar uma verificac jo em rela<;ao a to dos esses camp os . Em ourras situacoes, voce
po de desejar verific ar em rela cio a u rn valo r constan te. Em qualquer urn d esses
casos, voc e pode defin ir uma chave estran geira gen erica ou consrante.

Chaves estrangeiras genericas


NOVO llr..
ltRMO"

Uma chove estrongeiro generi co e umo chove estrongeira no qual um dos


compos de cbove prim6rio de s ca mpos de tobelo de verificccoo e morcodo
como generice . Qu ando urn cam po de chc ve prim6rio e morcodo como generico, ele
nco tern urn corresponde nte no tobe lo de chove estrongeira e nco porticipono venficcceo.

Criando uma tabe la de texto e uma cha ve estrangeira para e la


Agora' e uma boa hera para tenter criar sua propria t abela de texro. U tilize
ztxt005t como urn modelo. Sua t abela de tex to sera ch ama da - - - t 005t e
conterd os campos que utilizam os elemento s de dad os e do mini o s mostrad os
na Tabela 4.4. Voce rambem ted de criar a elernento d e dados - - -1 andx. Utilize
o dominio SAP existence textl5 p ara seu novo elemenro de dados. U rn x na
coluna PK indica os campos que formam a chave prirnaria.

P or exemplo, dentro do ap licarivo M at erial s Management, a tabela mara


e a tabela Material Ma st er. Ela com em a lista-mestr e de ma teriais utilizad os
par a fabricacao e os atri buros de cada ma te rial.
o programa de configuracfo p ara este livro crio u u ma tabela ztx ma ra
sem elhante a mara. Os campos de zt xmar a sao mos tr ad os na Figura 4.8.
F igur g 4 8

A tobeloztxmaro e

Nome d e campo

PK

N ome de DE

Nome de DM

mandt
spras
1andl
1 andx

x
x
x

mandt
spras
- - -1andl
- - -1andx

t ext1 5

semelhonte alobe/a
mara de the R/3
MaterialMosler.

;,

'

Depois de ativar - - -t005t , digite os dados n ela utili zando 5E1 6. Utilize
o s dados de exemplo mostrados na Tabela 4.3.
Agora erie uma chave estrangeira em _. - t005t -1 andl. Siga 0 procedimento de cria<;ao de chave estrangei ra forn ecido an t eriormen te. Utili ze
- t005 como a tabela de verificacao. Na t ela Create Foreign Key, especitique
urn tipo de campo de chave estrangeira n os campo s Key de uma ta bela de rext o .
Voce pode querer revisar a scr een cam "H ow to Creat e a Foreign Key " ant es
de comecar.
Depois de criar su a chav e est rangeira, siga 0 prc cedimen t o p ara t est ar 0
relacionarnento de chave estrangeira em - 1f al - 1andl. No pa sso 11, note que
a descricao de ztxt005t tambem e exibida. Agora, efetue logon novamenr e,
d essa vez esp ecificando urn idi oms de logon 0 (alem ao) e repita 0 teste. D essa
vez, voce devers ver as descricoes alem as no passo 11.

""

1.-"

...t,,

;,J,.

.'

Ocampo ztxmara- s t of f con t em 0 numero de urn material de risco . Se 0


campo nao est ive r em branco, 0 mat erial exige tratamento especi al; 0 nu me ro
d e stoff indica 0 tip o de tratamento exigido. O s n um eros de rraramento sao
definidos na tabela ztx mgef, qu e est ailus trada n a Fi gu ra 4.9. No nosso exemplo,
sup on ha que zt xmg ef con ten ha uma linh a com st off igual a 1. Essa lin h a indica

.. .

'W'W'W''W''W

.........

...
~

162 ,pm" EM

DIA ~ :

" DIA S AB AP/ '


Figura 4 10

urn procedimento de tr atamento que exige luvas. Atualizar urn material e


colocar 0 mimero 1 no campo ztxmara-stoff para 0 . mate rial ind ica que 0
material exige tratamento esp ecial com luvas.

Umo ma rco de

verificor;oo no coixo
de selet;60 Generic

indicaque um compo
deve ser ignorodo
durante 0 verificor;oo

_1;,1",1

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

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

~"

,..

-.,"

'

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

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

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

0 DATA DICTIONARY, PARTE 2

de chc ve eslrongeiro .

.,
i

Quando essa chave estrangeira e verificada, somente a combinaci o d e


mandt e s toff deve existir na tabela de verificacao. 0 r eg; a e os cam pos 1and l
sao ignorados.

Chaves estrangeiras co nstontes


A tabe la de verificacao pa raz txmara-s toff eztxmgef. A definicsc de chave
est rangeira e mos trada n a Fi gura 4.10.
Essa chave esrrangeira valida as valores inseridos em ztxmara- ~t~off e
assegu ra que apenas num eros de tratamento validcs existem na tabela at xme re.
I nfeliz mente, regu lamentos d e rratam en t o podem variar de aco rdo com as
regioes geogrd ficas. Por tan to , a chave primariade : t xmg e: compo_sta de sto,f:,
r eg; a e 1andl .Entretanto, ztxmare n ac ccntem qUalsquer informacces geograficas - essas informacoes en contram -se nas ta belas da fabrica.
Lernbre-se , uma ch ave estrangeira deve incluir todos os campos de chave
primaria da tabela de verificacao. Portanto, regia e 1andl de ztxmgef ap arecem
na definicac de chave est rangeira . E ntretanto, para os proposiros de zt xmar a,
vali da r zt xma r a-s t aff contra zt xnlg ef - st aff e suficiente, as inforrnacoes de
posicao n ao exis t em em ztxmara e nao imporram para essa validacao . Basta saber
que 0 mimero de t ratamen t o espe cial especificado existe.
Nesse relacionamento de chave estrangeira, os campos reg ia e lan dl na
chave primdria de zt xmqef estao sendo ign orad os. Para garantir que esses
campos serao ignorados durante a validacao, d es sao definidos no re lacionamento de chave esrrangeira como genericos. A rnarca de verificacao na caixa de
selecao Generic n a tela Create Foreign Key faz isso.

HOVO.... Chaves es/-rcngeiras canstonfes sao chcves estrang eiros compostos em que um
TERMO ~
des names de compo de tobelc de verthcocoo e substilufdo par um voter
ccnstcnte. Essevolar constcnte e inserida no lela Creole Foreign Key (~ej a a Figura 4.11).
Por exemplo, imagine que voce p recise criaruma nova t ab ela de fabricante
ztx lfalus como ztxHal contendo ap en as os fabri cante s dos EUA, mas, par
razoes de compat ibi lidade, voce quer que des tenharn exa tamen te a mesma
estrutura que ztxl fal. 0 c6digo de p ars nessa rabela semp re se ra.us. Vo ce po de
criar uma chave estrangeira constante para restringir os valores na tabela
ztx lfalus. Urn exemplo da definicao e mostrado na Fi gura 4.11.

Chaves estrangeiras odopto dos


NOVO....
TtRMO~

Nem lodos as compos de choveestrangeirode uma chcve estrongeiro composta


precisomresidirno mesmatabela . Se eles nee residirem, ISSO econhecido coma
uma chave estrongeiro adaptodo. Par exemplo, assumo que a c6digo de pols para a
fobricante n60 este]c no finol dos centes ormozenoclo em ztxlfal, mas em vez disso em
ztx1falcc. Quando voce fosse crier a chove estrangeiro no compo de regioo, voce
clteroric 0 compo de tobelc de verificalioo de 1andl para zt xl f al cc-l andl [ve]c a Figura
4.12 }. A vohdcceo no compo reg i a verlflcor io se a ccmbincceo de mandt e re g; 0 existia
em zt xt 005s e se 1and1 existia em quolquer Hnha de ztxt 005cc.

163

...

'!' '!' '!' 11 !!f 'I' .. 'I' ... .. .. .. ... ... ... ... ... ... ...
164

"II!"

-- --- w w

'W

- -- -- - - - - - -

DIH 0DATA DICTIONARY, PARTE 2

APR!NDA! M21 OIlS A BA P / ~


Fi gu r a

4 11

o compo

pots como
umo chove estrongeiro
ccostonte.

Sempre que voce cria urn relacionament o de chave esrrangeira, 0 sistema


olha no campo de rabela de valor. Se houver u rn nom e de tabela af, ele propoe
esse nome como a tabela de verificacao.
Alguns Ieirores terao difieuldade com esse conc eiro, entac YOU explica -lo
co m det alhes na se~ao a seguir.

Entendendo

campo Value Table

A fim de entender 0 prop6sito do campo Value Table, voce deve estar familiarizado com 0 "q uadro geral'' do projeto e des envolvirneneo do banco de clades .
Com ecarei descrevendo esse qu adrc geral .
Antes de erial' qualquer tabe la no DDIC, vocenormalmente fara algum
projer o de banco de dados . Ess e projeto descreve as tabelas que serao criadas,
seus relacionamentos e os tipos de dados que cad a um a contera. Ele normalm ent e designarf certas tabel as para serem tabelas de verificacgo a fim de validar
os dados dentro de outras ta belas. POl' exemplo, um a tabela de verificacao de
c6dig o de pals pode ser necessaria para validar c6digo s de pafses para todas as
tabelas onde os codigcs de pajses serao armazenados. Quando voce cria urn
conjun to de tabelas dentro do R/3, voce normalmenre criara as tabelas de
verificacao primeiro.
A principal fina lidade de voce erial' uma tabela de verificacao e validar
dad os. Voce pode erial' diverscs relacionamencos de chave estrangeira vinculando muitas outras tabelas com uma unica tabela de verificacao. 0 campo
Value Table no dominio existe para simplificar a taref a de erial' esses relacionamentos.
Antes de continual', suponha que 0 campo Value Ta ble dentr o do dominic
tenha umnome completamente diferente . Limpe 0 termo "V alue Table" de sua
mente e im agine que esse campo e chamado "Default C hec k T able".
Para simplificar 0 exemplo, nossa tabela de verificacao tera urn umco
campo de chave primaria, ilustrado na Figura 4.13. Para ilustrar esse conceito,
descreverei 0 processo que voce iria erial' para essa tabela de verificacao e utilizar
em urn relacionamento de chave estrangeira.

Fjg ura 4 12

Exemplo de

umo

chove eslrongeirc
odoptodo .

ztxtOOS

Fi g u r a 4 13

a compo Value Tobie

Defini nd o um a tabel a de valor


11010

ll.

Dentro d o domlnio esta 0 cc mpc lobe/a de volor. A tobelo ldentificodo den tro
desse compo oferece a s segu intes fun<;6es para 0 do minic :

Ela e automaticamente proposta como a tabela de verificacfo quando


cria uma chave est rangeira

Ela oferece uma lista de valores para a ajuda F 4 (posslveis entradas),


mas nac oferece validacao

URIIO"

tcbelc de verifico~oo

dentrodo dominio
contern 0 nome de
limo tabelo de
verincolioo.
Elemento de dodos

Domlnio

'165

0111 t 0 DIITA DICTIONARV,PARTE 2

166

167

'mHO' EM 21 OIAS "AP"

Quando voce cria uma tabela de verificacio, voce deve primeirc criar um
dominic. Voce sempre criaria urn novo dominic especificamente para uma
tabela de verificacao . Voce entac criaria 0 elemenro de dados e depois a propria
tabela. Dar, ativaria a tabela. Entao, voltaria ao dominic, no campo de chave
primaria, e colocaria 0 nome da tabela de verifica~io que voce acabou de eriar
no campo Value Table-mas lernbre-se de que 0 chamamos de campo Default

1. Comece na Dictionary: Initial Screen.


2. No campo Object Name, digite 0 nome da tabela ( * * *Hal ).
3. Escolha 0 batao de opc;ao Table.
4. Pressione 0 boco Change. A tela Dictionary: Table/S t ructu re:
Change Fields e exibida.
5. Posicione 0 cursor no campo de ch ave estrangeira (' andl }.

Check Table.

6. Pressione 0 botao Foreign Keys ria barra de {erramentas Application.


A tela Change Foreign Key e exibida.
7. Pressione 0 batao Delete (a lixeira) na parte infe rio r da janela .

utilizariam 0 mesmo dominic.


Agora voce criaria a chave estrangeira para validar 1andl. Voce colocaria
o cursor no campo ztx l f al- , andl e pressionaria a batao Foreign Keys, Quando
voce fizer isso, 0 sistema olhara no dominic no campo Value Table (lembre-se
de que a chamamos de campo Default Check Table) . Se houver urn nome de
tabela af, 0 sistema automaticamente ira propor esse nome como 0 nome da
tabela de verificacao . No nosso ceso, 0 sistema localizaria ztxt005. Portanto, 0
sistema iria propor ztxt005 como a tabela de verificacfo - exatamente 0 que
quererlamos . A pro posta de chave estrangeira seria mosrrada, e entao po-

8. Voce e levado de volta a tela Dictionary: Table/Stru cture: Change


Fields. A mensagem Foreign key was deleted apar ece ri a barra de

Agora, voce criaria Dutra tabela, no nosso exemplc e ztxl fal. Voce criaria
ocampo 1andl e utilizaria o elemento de clades ztxl andl e entdo as dais campos

deriamos salva-la.
Nesse exemplo, 0 sistema automaticamente criou a chave estrangeira para
nos, porgue colocamos 0 nome da tabela de verificacfio no campo Value Table.
Dando tres cliques de mouse, criamos uma chave estrangeira! 1sso, em essancia,
ea principal razjio para 0 campo Value Table. Ele existe para fazer a criacao de
chaves estrangeiras mais Iacil.
Para resum ir, 0 campo Value Table
sistema:

e utilizado

de duas maneiras pelo


.' '"

A tabela de valor {lembre-se de imaginar a Default Check Table)


automaticamente e proposta como a tabela de verificacao quando se
cria uma chave estrangeira.
A tabela de valo r ofe rece uma lista de valores para a ajuda F4, mas
nenhuma validacao e feita nesta lista.

o campo Value Ta ble como proposta de Check Table

Nessa se~ao,.voce adicionara uma tabela de valor para urn dominio e observarf
seu efeito na cria~ao de uma chave estrengeira.
-E dite urn domlnio _. -Landl agora e digire ** *tOOS no campo Value
Table, ativando depois 0 dominio.
Agora voce excluira a chave estrangeira no campo - * *Hal-landl e entao
a criara novamente de modo que voce posse vel' 0 efeito do campo Value Table
no processo de criacao de chave estrangeira. Para fazer isso, siga 0 procedimento abaixo.

status.
9. Com 0 cursor ainda posicionado no campo de chave estrangeira
(1 andl), pressione a batao Foreign Keys novamente. A tela Create
Foreign Key e exibida. Ela Ie Foreign key does not exist. Generate
proposal with value table as check table? Voce ve essa caixa de men sagem porque 0 sistema olhou no dominic e localizou urn nome no
campo Value Table. Ele responde exibindo essa caixa de mensagem.
10. Pressione 0 batao Yes. A tela Create Foreign Key eexibi da e 0 campo
Check Table contem a tabela de valor do domlnio. O s campos Check
Table e-as campos Foreign Key sao pre enchidos.
11. Pressione 0 borao Copy. Voce e levado de volta a tela D ictio nary :
Table/Structure: Change Fields. A mensagem Foreign key was trans ferred aparece na barra de status. as campos Status exibem 0 texto
Rev; sed e Not saved .
12. Pressione 0 botao Activate. A mensagem "was saved apare ce na barra
de status. as campos Status Ieem Act. e Saved.
Com urn nome de tabela no campo Value Table no do min ic voce po de
rapidamente e com confianca erial' chaves estrangeiras.

Redescabrindo a cal una de CheckTable


A coluna CheckTable na tela Dictionary: Table/Structure executa duas
func;6es:
Se urn campo for urna chave estrangeira, a coluna CheckTa ble con tera
o nome da tabela de verificacao para esse campo.

Urn asterisco (*) nesra coluna significa que uma rab ela de verificaqao
nao foi definida para 0 campo, mas uma tabela de valo r exisre no
domfnio.

"': I. It t.1Jt:I,X::X:XI" I . II
168

w w w

w ..
DlA~ : 0DATADICTIONARY, PARTE 2

APRENDA EM21 DIAl AB AP,.

O s campos m onetarios tern esses requisit e s:

Hoi uma excecao para 0 segundo ponto acima. Se voce atualmente est iver
exibindo um a tabela de valor, 0 asterisco DaD aparecera no campo cujo dominic
se refere a tabe la de valor qu e vo ce esta visualizando.

0 ripe de dado no domlnio deve ser CURRo


Ele deve es tar vinc ulado com urn campo do ti po CUKY contendo a chave
moneraria, como USD (d6lares norte-am ericanos), CAD (dolares
canaden ses}, ITL (lira italian a) e assim par diant e.

Ulilizando a labela de valor como uma lisla de possive is


va la re s
Se urn campo con tiver uma tabela de valor mas DaD for uma chave estrangeira,
quando esse campo aparecer em uma tela nenhuma valid ?t;;ao sera [eira no
campo. A tabela de valor nao executa a validacao. Som enre uma chave es-

A chove mone t6rio e con hecido como comp o de refe r@:ncio Trata se de outro
ccmpo no mes rno tobelo au em outro tabela. Esse co mpo d'eve ter-a fipo CUKY
(chove mon et6rio) no do mfnlo. Ele indica a chove monet6rio pa ra a campo monet6 rio
relere nctcdc.

NOVO ~

n~\O r

trangeira valida as valor es.


Com apenas uma ta bela de valor, urn seta para baixo nao apa recera no fim
do campo como acontece para urn campo de chave est rangeira. Entretanto, se
voce colocar 0 cursor no campo e pr essionar F4, a tecla F4 ainda exibira uma
lista de valores da tab ela de valo r. N ee hi nenhuma indicacao na tela de que a
funcional idade F4 esta dispo n fvel t: nenhuma verificacao efeita se urn valor for

Por exemplo, imagi ne que voce criou uma t abela contendo uma [ista de
pagamentos feitos aos fabricantes. Voce precisaria de um campo de quantidade
de p agamento (nome de campo wrbtr) e urn cam po- ch ave monetaria (normalmente waer s) para indicar completarnente a qu an ridade e a chave m onetaria
utiliz~das nesse pagamento. Para vincular as do is campos entre si, voce dari a
urn clique duplo no nome d e campo monetario na tabe la e entao inseriria a tabela
de chave m one raria e a nome de campo no s campos Refe rence T able e
Reference Field (ve]a a Figura 4.14) .

inserido no campo .
Essa fu ncion alidade pode ser uti! quando voce qui ser oferecer ao usua rio
uma lists de valores sugeridos, mas quer permitir que OUtrOS valores sejam
digitados no campo tambem.

Campos especiais de Tabela


Dois ti pos de campos de tabe la precisam de tratamento especial :

os campos m on ect rios

as campos de qu antidade

...;'"

O s campos mooet6rios
NOVO ~
TtRMO "'-

Imagine que voce qu eira ir 00 ba nco e pedir 1.000. 0 coixa provave lmenle
perguntoria NMil a que? " Voce pode responder NMil delo res". Ou voce pode
ser ate mois especffico e pedi r "'1.000 dolores norie-omericnnos". Quontios monet6rias
no R/3 sao ormozenad as em dots campos: um armozena a quentia nurnerico real (l.DOO)
e outro ormczena a moneloria {USDJ. 0 compo nomerlco de quentio e chcmodo compo
monercn c e a outre compo e cha mado compo-cbcve monetOrio .

o que

muitos pessoo s se referem como monet6rio realmente urn


c6dig a mon et6rio (USD para a d6lor a merica no, CAD para 0 do lor
cc node nse e ossim par diontel. A SAP utilize a pclovro "chove" como
urn sin6nimo para "c6digo N, entoo ela chama a co mpo que conte rn a
c6diga mon et6rio "chcve manet6rio", isso se cpltcc 6 rnoloric dos
compos de c6digo no R/3; 0 c6digo de pais e chamodo chave de pa is,
a c6digo de regia o e a chove de regioo e ass im por dionte.

Elg ll r a 4 14

Os compos de
referen cio no lela
Display Field.

~!! i~ ; !t! ~~;.. ?~t'.'im1(= _JLt-;'\"t~'.! N~j~ ~ -=-2~, ,, ;.- ;,)5 !i' -!~!:J
. , :1

8;' ~ ,~

-.~

H' ~ {) ~

-~ ~ '-:i~l.:H>~~~'-i~~\(~2~, C

169

I.J

.,
I
~~~~~~--------------lHf!
.os ca mp os de qu-oanoIlti.od.o
.ou;dlfeL..NOYO....

milo r

Urn compo de quantidode

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

exemplo, esse compo pede conter uma medid~ de peso, co~pnmento,. tempe ratura ou eletricidode. Pa ra se r significativo, umc unrdade de rnedidc co mo librcs,
polega dos, grous Fahrenhe it a u q ullovolts devem ocomponh? -]o. Os compos de quantidod e tern estes req uisites :

li

rl
~I

OIH 0DAnOICT10NARY, PARTE 2


Figura 4 16

Esses soo os o/ributas


de compo poro 0
compo ntgel'f. Note
que cs dois compos

Reference Tobie e
Reference Field
ofere~m 0 vInculo

perc

0 tipo de dado no do min ic dev e ser QUAN.

Ele deve estar vinculado a urn campo do tip o UNIT.

campo UNIT 0 campo de referencia para 0 campo QUAN. 0 camp~ UNIT


pode estar na mesma tabela ou em outra tabel~. 0 cam po UNIT co ntern a unidade
de medida para a medida no campo de quantldad,e.
, .
Por exernp lo, na ta bela ztxmara, 0 campo ntgew cont.em 0 p eso ~qUldo de
urn material e 0 campo g~wei contem as unidades, como libras au qUllo~ramas
(veja a Figura 4.15) . 0 camp o ntgew te ,:, urn t ipo de dado d e QU~N e 0 tlpO de
dado de gewei e UNIT. Se voce der urn clique duple em nt~ e~, ver~ que a tabela
de refe rencia e ztxmara e a campo de referencia e gewei (veja a Fi gura 4.16).

compo UNIT.

.>

As estruturas no Data Dictionary


NDVD ....

TWO '"

Alem dos tobelcs, as esfruturos tcmbem podem serdefinidos no Data Dictionary.


Como voce poderia espera r, umo estrutura co rrespo nde 0 umc serie de campos

ogrupodos sob um nome comurn . Emuito semerhonte a urno tc belc. C o mo urno tobelo,
era po de se r vtillzcdc dentro de urn progr a ma no instru; oo tab l es para definir urnc 6reo
de trabolho.

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

17

APRENDA EM 21 DIAS ABAPI4

11-----~~~
DIA 4: 0 DATAOlCTIOHARY, PAm2

Nenhum atributo tecnico pode ser especificado, como classe de dados,


caregoria de tamanho a u usa de buffer.

Entendendo Includes
UIDa estrutura pode canter outra estrut ura, Em outras palavras, voce pod e
aninhar estruturas uma dentro da outra. Isso pode ser urilizado p ara reduzir a
manutencao agrupand o campos juntos em uma estrut u ra e enrac inclu indo essa
estrutura dentro de outra estrutura ou mesmo dentro de uma tabela.
Por exemplc, urn endereco de uma pessoa e composto de urn conjunto
de campos como rua, cidade, regiao, pais e ccdigc postal. Voce pede precisar
mante r esse endereco em diversas tabelas. Dentro da tabela do fabricante voce
pode querer manter 0 endereco do fabricant e, na mestr e de cliente a endereco
do cliente, e na tabela de empregado ender ecc do empregado. Se voce criar
uma estrutura para agrupar os campos que juntos formam 0 en dereco, voce
pode entao incluir essa estrutura nas definicoes da tabela. Quando a tabela e
ativada, as campos da estrutura sao adicionados e existem na tabela de banco
de dades como se fossem definidos dentrc dela. Eles terao o mesmo no me que
a nome na estrutu ra. Para incluir uma estrutu ra dentro de uma tab ela, (a u
dentrc de outra estrutura), digite . INCLUDE na coluna de nome de campo e insira .
a nome da estrurura na coluna de elemento de dados.
Na Figura 4.17, a tabela zt xempl (tabele de empregado) inclu i a estrutura
ztxa ddr (veja ;1 Figura 4.18), que consisee em campos de endereco stras (rna),
artDl (cidade); reg; 0 e l andl . A tabela ztxempl .portantc, contem estes campos:
zt xemp l -stra's; zt xempl - ortOl. ztxempl reqt 0 e zt xemp1-1andl.

NOVO ...

A codeic de estrvturos cricdo incluindo umo estrvturo dentro de outro ' h


d
r b 1codeio
de indudesoA profundidode maximo de oninhomento no e c ome ,0
od
.

TEi.UO

.~ :j,'

Eigur g 4 17

A tcbelo de
z t xemp l ccntem
um I NCLUDEpora
fazer com que os
campos de
ztxaddr seiom
odicionodo s a ela.

!~ "

1... 'r.

It 'd 1: diE it '


~:bo. j/Moo ' ~ ~ ..... ~

; ::" :' ''';~~;'''' '_,; ; __<.1 -'".:t~. _.,:

. ;,

-(.~~.,.

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

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

'iI' j
~

~~~~i~=~~i~II
~~!~:~~i1~;~~1t:flwt~~~~~tie;f2.t~~~~~::
. ...:u.~ du~"f~~~"PU~l tn1lt.(~.";~.tr~u~tb"

Nhl .'

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

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

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

ve e sc me nte

umc t~ e ~ p e se r mclu:do em umo codetc de includes. Em outros pclcvros, voce nc o


po de :ndu:r vmo tc belo de ntro de outro.
.E.ig.1l..l:.a..-':

1a

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

a i ncl udes expandida dentro cia definiicao


cia propna
. . ta beIa,
JhPara visualizar
.
~
esco a 0 caminho de menu Extras-> Substructures- > Expand All Substr.
Todos as nomes de campo de uma est rutu ra inc1uida aparecerao embaixo de
INCLU DE, como mostrado na Figura 4.19.

ztxemp l.

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

APRENDA EM 21 DIAS ABA P/4

'''I

FigurQ 4 21

Indui nd o a mesmo estru tu ro d jyersos yezes


Vo ce pede incluir a mesm a estrutura diversas vezes dentro d e urna tabela se,
em vez de . INCLUDE, voce utilizar .1NCLU- XXX. 0 xxx representa sua escolha de
quaisquer [reS caracreres . Esses treS caracte res serao acr escen cados em cada
nome de campo que e inclufdo para roma-lo unico.
Por exemplo, imagine qu e voce precise armazenar dois enderecos em
ztxempl : urn endereqo de casa e uma lisra de end ereco. C omo mosrrado na
Figura 4.20, ztxe mp12 inclui a estrutura zt xaddr duas vez es. A primeira inclui ,
. INClU-Ol , [az com que U01 " seja acrescen tadc a cada urn dos n a m es de campo
cia estrutura. A segunda, . I NCLU -0 2, acr escenta "02" a ca da u rn. 0 resulrado,
mostrado na Figura 4.21, pode ser visto escolhendo 0 caminho de me nu
Extras- c-Substructures-> Expand All Subsrr.

51

if &hi ei"lt4E

if L._.

. _'3 ; ~

"1, 1,,1

c- --; " I-~,.~~';' >;.', ."\-":'t::"''''''-=.>l./:- -:>t:~,'';r:-...l''_ ''


o 4: 'Xn M'rt . t~l ~ E'-- -~ -{ {.;~<~~~._;--;;:~~: ,::.: ~

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

Escolhe r 0
caminhode menu

Ilolo 7 ~-:,:;r

Ex/ro->
Substructures- >

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

rsra
F i g u ra 4 2 0

, .,..

.-.'4- .. .... ;-- ......,, - . -. ;': : - -.-., .

Alobelo z tx empl2
uti/izo

mrmu/6rio

.INCLU XXX do
instru~O o incl ude
de modo q ue

Resumo

ztxoddr po sso ser


inc/uldo duos vezes

A s chaves est rang eiras asseguram a integridade de dados execurando


validacoes n a tela e oferecem ajuda F 4 para 0 usu i rio co rn Iisea de
valores pe rmissfv eis.

sem dup/icor 05
nomes de. compo .

A tabela de valor oferece u.ma proposta para a tabe la de ve rificac go e


oferece ajud a H .

e As tabelas de text o ofer~cem suporte de diverscs idiomas p ara descricoes no R/3 e especialment e p ara ajuda F4.

,i

'!

Ii

Dentro de uma tabela, cada camp o mon eta rio deve ser vinculado com
urn campo-chave monetario e cada campo de qu an ridade deve ser
yinculado com urn camp o que ccntem as unidades de medida.

As tabelas e as estrutura s sao muito semelhanres. A diferenca p rincip al


e que uma tabela tern um a tabela su bjacente de banc o de dado s e uma
esrrutura na o .

As estrvtvrcs e tc belcs no R/3 50 0 too semeihc ntes que, q ua ndo voce


olha a definic;oo de coda Doto Dictionary, e dlfkll diferenci6las. Pora
determine r quo l v oce estc olho ndo, olhe 0 direito do compo de nome .
N voce v ere ume tobelc Transporent ou Structure.

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

_ !

" " ' D' EM ' 1 DIA l " ""

P&R

o
o

Urn programa em ABAP/4 ped e ignorar relacionamcntos de


chave estrangeira e inserir Iinhas que violarn a integridade
referendal?
Sim. Entretanto, na maiaria das vezes, as dados vern pa ra seu
p r ogram a vi a um a in terface com 0 us udrio . A in te rface com 0
u suario valida as infcrmacoes antes de voce inseri-Ias no banco
de da dos, po rtanto
chaves estran geiras ja foram verificad as.

Nao. Apenas Key Fields Of A Tex t Table empr ega fu ncionalidade de sistema. a s outros nao [azem nada acontecer - eles
servem prin cipalm enr e para documentacao.

As estruturas podem ter definicces de chave estrangeira?

Sim . Isso normalrnen te e feito porque uma tabela que inclui


uma estrutu ra pode herdar defini co es de chav e est rangeira deb.
Se quiser, voce pode desativar essa heranca ao incluir a estru-

as

tu r a.

Mesmo quand o impor tar dados de sistemas ex ternos, voce deve,


u tilizer BDC para arualizar as tabelas. Isso tam bern impoe
inte gridad e re feren cial sim ulan do sessoes de u su drio e passando
as dados ao programa via in ter face. Entr etanto , se vo ce atualiza

o banco de dados sem passar as dad os pela interface com

as seguintes exercicios darso a voce pratic a na cri acao de chaves estrangeiras,


campos esp eciais e estr uturas.

usufrio, seu p rogram a ern ABAP/ 4 deve ser escrit o cui dad osam ence de mo do que ele Dao tr ansgri da a integridade

Workshop

Teste

referen cial.

1. P ara urn a chave estrangeira ser criada, 0 que 0 campo de chave


estrangeira e a campo de tabela de verificacic devem ter ern eornum?

Se quero garantir a integridade referendal de meu banco de

2. Qu al e a sintaxe para inclusao cia estrutura zs l dent ro cia tabela ztl?

dados, posso ir para 0 nivel de DBMS e criar Iimitacoes de


integridade? Como isso afetaria 0 Rt3?

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


s6 deve utilizer 0 DDIC do R/3 para alter ar as defini coe s dentro
do banco de dados. Se voce atu alizar 0 banco de dad os rtia~ua1
mente, as defini coes de banc o de dados e as definicoes de DDIC
do R/3 serso inconsistences e os resultados serao imprevisfveis.

3. Q ual e a prap6sito de urna tabela de texto ?


4. Assuma que a tabela de verificacsc ze exisre e tern uma chave primaria
consistindo em mandt , fl e f2 . Quais devern ser os campos de chave
primaria de uma tabela de rexro para zc?
5. Se voce cria urn campo mcnetario, que tipo de campo ele deve

referenciar?

Exercfcio 1
e rie uma tabela de veri fica~ ao de co digc de pals charnade toOS. Ela sera
. utilizada para validar todcs os codi gcs de pajses inse ridos em suas tabelas. As
especificacoes aparecem na Tabe1a 4.5.

Se exc1uo uma linha de uma tabela de verificacao, possa fazer


com que as linhas que tern 0 mesmo valor sejam automaticamente excluid as da tabela de chave estrangeira tambern?

Nso. Esse recurso e normalrnen te definido


clusao" e D aO esta disp onfvel no RJ3 .

Descri~ao

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

Nome de campo

que 0 sistema se com porte diferentemente. Os outros tipos de


campo de chave estrangeira tern qualquer funcionalidade par
tras deles?

Cliente

"cascara em ex-

Tabela 4 .5

as ca mpos e sues corocterfsticas pera a tobela

mandt
Chove do pafs
1andl

-tOOS

PK

Nome de D E

mandt

-1 andl

178

"RENDA EM!1 DIAl ABAPI4

DIU 0 DATA rncnoNARI. PARTE!

Depois que voce ativou essa tabela, va ao domfni c - 1andl e digite


- tOOs no campo Value T able, entao ative-o. Utilize SE16 para adicionar
c6digos de parses asua tabela.

e rie uma tabela de verificacao de c6digo de pais:chamada t 005s. Ela sera


utilizada para validar todos as c6digos de parses ins eridos em sua s tabel as. As
especificacoes aparecem na T abela 4.6.
Tabela 4 .6 Os campos e'sues ca raderistices pare a tabela tOOSs

mandt

PK Nome

Nome

de DE

d e OM

Tipo

Len

Tabela de
verificD ljOO

Cliente

mandt
Chove de-pels
landl

mandt

l andl

regi o

ct t yc

- - -tOOS

C6dig o de reg ioo

rect o

Descriscio

C liente

Descri ~ a o

N om e
de camp o

Exerdcio 2

Nome de compo

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

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

Nao se esqueca de criar os relacion ament c s de chave estrangeira nos


campos land1 e regie.

Cbcve de pais

, andl

t005

C6di go de regioo

regio

Depo is que voce ativou essa tabela, va no dominic - - - regi 0 e digite


- - t 005s no campo Value T able, entao ative-o. U tilize 516 para adicionar .
c6digos de regijo para sua rab ela. Teste sua chave esrrangeira em 1and! rentando
inserir urn codigc de pars invalido.
,.'

Exerdcio 3
Ad icione relacionamentos de chave esrrangeira aprop riados para 1andl e para
campos regie em sua tabela - - -lfal. Util ize 5E16 para atualizar as linhas
exist ences dentro de - - - 1fa 1 e insira ccdigcs de paises vslidos de regiso.

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

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

APRE NDA EM21 DIAS ABA P/4

Exerdcio 7

Tabela 4.8 Connnuocdo


Descrit;ao
Nome

PK

de campo

Nome
de D E

Nome

Tipo

Len

Tabela de
ve r i f i ca~a o

de DM

C6digo de cidode
cf tyc

-t005g

cityc

Descrtcco

bezei

bezei 20 text20

CHAR 20

Adicione mais dois campos para a tabela knal. As especificacoes sao


m c st radas na Tabela 4.10.
Tabela 4 .10 Compos odiciono is e sues coroderistic as para ta bela knal

Descrisao
Nome
de cempo

.Nome
de DE

Nom e

Tipo

Len

Decimal

de DiY".

Tahela de
verifi(a~ao

li mite de Credttc

o relacionamento de chave estrangeira no campo ci tyc deve ter 0 Foreign


Key Field Type "Key Fields Of A Text Table". Utilize SE16 para criar
descricoes para cada codigo de cidade. erie essas descricoes em dais idiomas:
E (ingles) e D (alemao). T est e sua tabela de texto criando uma nova entrada
ern knal e pr essio nando F 4 no campo ci t yc. As descricoes de cada c6digo
de cidade devem aparece r na lista, mas some.nte em seu idio ma at ual de logon.
F aca 0 logon em elemao e teste novamenre para ver as descricoes em alemao.

Exercfcio 6
erie uma est ru tura chamad a - - - t el . As especificacoes apare cem na Tabela 4.9. ,
Ta b e la 4 .9 Os campos e sues caraderisticas para estruturo - - -tel

Descr isao
Nome de campo

N ome de DE

Primeiro nemerc de telelone

tel ft

te1fl

Segundo nemero de telefone

telf2

telf2

Numero de fox

telfx

telfx

Ncmero de telex

te 1 xl

~I
:J

telxl

Inclua essa estrutura no final de SUilS tabelas - - - knal e - - -1 fal. Utilize


SE16 para atualizar alguns de seus registros existentes e adicion e mimeros de
telefone a des .

cr editl

cred it creditl CURR

12

C hcve monet6rio

waers

waers

tcurc

Ocampo eredi t 1 cont era 0 limite de credit c do cliente. 0 campo waers


contera a chave m onetdria pelo qual 0 limite de crediro ser valido. Nao esque~a
de adicionar 0 relacionamento de chave estrangeira atab ela de verificacio tcure .
e rie ajuda F I para 0 campo ereditl pre ssionand o 0 botao de documentacao
no e1emento de dados.
Depois de adicionar esses dais campos, de urn clique duplo em credit',
no campo Reference Tab le digite _ knal e, no campo Reference Field, digite
cred i t1. Entao ative sua tabela. Utilize 5E16 para atua lizar registros de cliente
e adicione urn limite de credito para cada urn . Visualize a ajuda Fl que voce
cnou.

181

www

~ ---

w---~~~--

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

oData Dictionary, Parte 3


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

Entendendo os indices de tabela


Urn indice e urn mecanismo de eficiencia para localizar rapidamente .linhas
dentro de uma tabela. Ele e necessaria porque os dados sao armazenados em
lima tabela na ordem em que foram adicionados (a ordem de chegada ).
Imagine voce rasgando tod as as paginas deste livre e enrao jogando-as
para cima e misturando rude. Voce cneso as junta em uma pilha sem considerar
qualquer ripe de ordem. Se voce fosse pr ocur ar urn uma pagina especffica
dentro dessa pilha, como faria?
Algumas pessoas poderiam apenas procurar aleato riament e na pilha esperando ter a sorte de encontra-la logo no comeco. Estou convencido de que
a maioria logo desistiria e entao iria folhear as paginas um a a uma. Obviamente,
esse trabalho seria mais facil se as paginas esrivessem rodas na ordem. Com as
paginas em ordem, voce poderia iniciar a buses em algum lugar no meio e
sabendo como virar as pdginas, rapidamente pcderia alcancar a desejada.

hltpjlwww .ca mpu ~. cam . br

'I""'!!''!!'''!!f'W _ ..

184 I

~_

0" s,oDATA OICTIOHARY,PARTE 3 I

APUNDA EM 21 DUS ABAPI4

examinar minuciosamente a tabela do inicio ao fim procur and o todas as linhas


onde 1and1 ;: ' US' . A tabela na Figura 5.1 e muito pequena, mas esse e urn
processo que consumiria mu ito tempo em uma tab ela maior.

Imagine que voce agora co loco u as pdginas de volta na ordem. Procurando


aleatoriarnente no livro recentemenre ordenado, talvez vo ce co mece a procurar
a psgina que desc reve 0 SE16. Po r cnde voce cornelia a procurer? Voce nao sabe
a numero de pagina, entac olha 0 tndice remissivo. Este contern as palavras
m ais importantes classificadas em ordem alfabetica. Voce rapidamenre encontra SE16 no Indice e cbtem urn mimero de pagina. Lltilizando isso, voce
pesquisa 0 livro para localizar essa pagina.
Para criar um Iodice, 0 editor duplica informacoes importanres e entao
as classifies, colocando-as no fim do livro, separado do corpo. Quando voce
olba essas informaco es, esn olhando nas informacoes originais ? Nao, e claro .
Voce esta olhando em uma c6pia das informacces originais; elas foram duplicadas. a livro ocupa urn pouco mais de espacc em sua estante por causa do
Iodi ce, de aumenta urn pouco 0 prelfo do livro por causa do tempo e esforc c
exigido para crid-lo, mas nioguern se queixa disso, porque economiza muitas
horas quando voce quer localiaar alga.
Uma tabela no ban co de dados emuito parecida com esse livre. Para cada
linha e dado urn nurnero sequencial quando uma linha e adicionada a uma
rabela, de manei ra mui to parecida com urn numero de pdgina. As colunas
importantes sao copiad as em urn Ind ice e c1assificadas de maneira seme Ihante a urn Indice remissivo. Para localizar qualquer parte dos dados, a
sistema pesquisa primeiro 0 Indice para encontrar 0 mimero de linha e enesc
rapidamente localiza a linha.
Cada tab ela do R/3 tern urn Indice primdrio construfdo na chave primaria
da tabela. Esse Iodice e necessaria porque os dados na tabela sao arm azenados
na ordem que [cram adicionados a tabela. Quando uma linha e adicionada,' as
informacoes-chave sao classificadas e copiadas no Iodice, junto co m urn pon
tei ro na linha o riginal, A Figura 5.1 mostra urn exemplo utilizando a tabela
ztxlfal. Os dados do campo 1Hnr em ztxlfa1 sao capiados no indice, classificados alfabeticameme e arrnazenados junto com 0 numero da linba original.
(0 campo mandt foi deixado de fora para simplificar 0 exemplo.)

Figura 5 1

Urn indice de lobe/a Ii

ormozenodos em
ordem clossifjcoda
com pan/eiros para as
linhos originals.

I'

.,

,
"

'I

.,I

II

LI

e assim a ut iliza automaticamente. sistema encontra 1050 no indice e obtem


o numero de linha 2. 0 siStema entao procura na tabela 0 numero de linha 2.
Agora, suponha que a instru)ao select * from zt xlfal where landl ;:
I US I foi executada. 0 .in dice e c1assificado por 1i fnr, nao por 1andl . A coluna
landl nao esta em qualquer ordem especffica na tabela. 0 sistema tera de

nOdo

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

.,

.3
.6

, .,
3

.2

.7

6
7

.s

.,

Ag ora, pense novamente no exemplo de livre . As vezes, urn livro tern


m ais de urn Indice . P or exempl o, urn livre sobre ut ilizacces med icinais de ervas
p od e ter 0 Indice normal, alem de urn Indice somente pa ra nom es comuns de
planta, o urro apenas para nomes de boesnica e urn terceiro apenas para efeitos
medicinais , Para crier esses indices, as informacoes pr ecisam ser c1assificadas e
duplicadas em mais tres lugares no final do livre. En eso, ha quatco maneiras de
localizar urn numero de pagina rapidamente: por meio do Iodice comurnente
utilizado ou por -qualquer dos tres indices adici onais .
.
~
0 fndice comumente utllizcdc e on61090 0 0 Indlce prim6rio de umo tobelo. Os
rIt~O
indices cd icloncis s60 cnclcqos 0 indices secund6rios. Para suporter uma
clc vsvlc where em um campo de chove n60 prlmc ric, pode-se definir urn lndice
secund6rio. Umo tobe la pede fer multiplos ind ices se cund6rios.

MOYO

Quando a inStru)ao select * from ztxlfal where 1Hnr :. '0000001050'

Icbe'e mile I

pe rc m Ho 1

umo c6pio de umo au


mcis ca /unos

numero de linho infernomenle otribuido pelo bonco de dodos ;


voce nunce 0 ve no ODIC. Ele e utilizodo pe lo indice porc opon tor de
volta para a linno original, do qual as dodos vierom.

eexecutada, 0 sistema reconhece que ha uma 1i fnr ja classificada em urn indice

IndIce primoria

,I

A Figura 5.2 ilustra urn indice secundario em ztxl fal-l and!.


Urn indice aumenta 0 desempenho tremendamente. Em uma tabela
comendo urn milhao de linhas, urn select em uma coluna comendo valores
unicos que nao sao suportados por urn indice leria, em m edia, 500.000 registros
para localizar a primeira correspondencia, com uma visao pessimista de urn
rnilhao de compara~6es.
Se voce adiciona u rn indice, 0 sistema pode utilizar urn algoritffio billario
de pesquisa para localizar 0 registro, depois co mparan do uma medi a de apenas
10 registros J com urn cen:irio de piar CasO de 20 registros! 1sso e 50.000 vezes
mais rapido. Por essa razao, deve assegurar que oscampos em urnacUusula where
sempre serao suportados po r urn fndice . Isso pode ser feito exibindo indices
existentes, e entao organizando sua logica para utilizar esses campos ou criando
urn indi ce secundario.
.

185

. .,5 , ..'"
E1.gurQ 5 2

Indice prim6rio

Tobelom lfo1

Urn Indice

seclJnd6rio
permite que voce

pesquise ropidomente

em outros co/uno!>
o/@m dessos no chove
prim6rio.

n.O do

., ,

nnr

.2
.3

.,

linho

linna

limr lond1
.3 US
.6 CA

, .,.2

.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

. ..... (. ' .... 1MOO

o in<!ice Z

.ne

.oC", :_:~-"~'~"":"
:10:>-..:" _'1.:""-.f'"7"" ~~ ' ",:.T. -, ,~- .~.

~~~i~;~~j;~~;~~0r:;:; :.~ ~~./~5 '.

3
7

Exibin d o ind ice s


Cada Indice em R13 tern urn unico para tres idenrificadores de caractere, ou id.
Iodice primfrio sempre tern urn id de 0 (zero) . Urn id de Indice secundario
pode ser qualquer Dutro n umero ou urn caractere alfabetico .

_.__ "" ........_...... ...


~

SnE EN(ij ~ Inicie a ScreenCam "How to Display Se-condaryIndexes" agora.

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

caminh o de menu Goro-> Indexes. ~.~..

3. Se existirem indices secundarios, sera exibida uma Iista dele;-em uma


caixa de dialogo. Se D a O existi r nenhum, sed'exibida uma mensagem.
4. Para exibir urn deles, de urn clique duplo nele . 0 Jndice e exibido na
tela ABAP/ 4 D iction ary: Ta ble: Display I ndex, como mosrrado na
Figura 5.3.

o status do Indice eexibido no campo Status. A existencia do Indice no


banco de dados e ind icada po r uma mensagem que aparece embaixo do campo
Status. No campo DB Ind ex Name esd. 0 nome do Indice como e conhecido
no banco de dad os. 0 nome de indice no banco de dados efo rmado peIo nome
cia tabela, seguido po r su blinhados e depois pelo id do Indice. Na pane inferior
cia janela, esrdo os campos que abrangem 0 Indice . A ordem de ripe do Indice
~ a mesma que a ordem d e campo.

...,..

---:..;. ~

..

~ "'. -=.;;-_ ~

. . _l

procedimentc precedence somente mc strara indices secundsrios . 0


Indice na chave p rimfria (Indic e 0) DaO aparece nessa Iista .
smENW~ Inicie a ScreenCam "How fa Display All Indexes" a gora .

Para exibir todos as indices, incluinde

primario, siga estes passes:

1. Exiba a tabela.
2. Escolha 0 caminho de menu Utilities->Database Utility. A tela
ABA P/4 Dictionary: Utiliry for Database Tables e exibida.
3. Escolha 0 caminho de menu Extras-c-Databa se Object- s-D isp lay.
U rna lisca de todos os campos na tabela e exibida e embaixo deja esd.
uma Iista de eodos os indices com seus camp os, incluindc 0 Indice O.

Considero<;6es
NOYO .....
TtU.O "

00

crier lim Ind ice

Urn Indice pede co nsisfirern mois de um campo. Pa r exemplc, construindo urn


lndice secund6rio em landl e re gi e ofivc select * f r om ztxlfal where
landl = 'US' and reg ie = ' HA l o loccllzcr ropidarnente linhas cc rrespcndentes.
Quando existem multiplos indices (urn prim6 rio e urn ou mais indice:; secund6rios), 0
RDBMS ufilizo urn otimizador para selecionar a melhor. Para escolher urn Indice, 0
ofimlzc dc r examine as names de campo na cl6usulo where e entcc procure urn indice
que contenha as mesmos ~ames de cam po no ordem especlbcodo no d6usulo where.
Partonta, ce rfifiq ue-se de que 0 sistema escolho 0 fndice que voce pretende, espedfique
os campos no cl6usufa where no mesmo oroem que eles oporecem no fndice.

188

APR ENDAEM 21 DIAS ABA PH

indice s e MANDT
Se urna rab ela comeca com 0 campo mandt, seu s indices tambem devem com ecar
com esse campo. Se um a tab ela comelja com mandt e urn Indice nao, 0 ot imiaado r pode nao ut ilizar 0 Ind ice.
Lernbre -se, se voce pre cisar, do recu rso de tr atamento automdrico de
clien re do Open SQ L. Q uando select *" from ztxlfal where landl ;: ' US' e
executada, 0 SQL real enviado ao ban co de dad os e select *" fro :n ztxlfa l
where 0 mandt = sy-mandt e 1andl ;: 'USI Sy-mandt contern 0 cliente atual de
lo gon . Q uando voce seleciona Iinhas de uma tabela utilizando Open SQL, 0
siste ma au to maricame nte adiciona sy-mandt aclausula where, que faz com que
apenas as linhas que pert enc em ao cliente atual de logon sejam localizadas.
Quando voce cria urn indice em uma tabela con tendo mandt, tambem deve
incluir ma ndt no Indice. El e deve vir primei ro no Iodice, p orque sempre aparecera p rimei ro no SQ L gerado.
No resta nre dessa discussao, par ta do pressuposto que mandt esra inc1uido
em todos os indices.

Codifique um Sel ect para utilizer urn dado indic e

NOVO ....

Sevocecodilicc sel ect *" from ztx lfal where regia" ' MA ' , precisa haver
urn indice iniciondeemmandt e regi 0 para cssegurarque 0 otimizodoroutilize.
Se voce ccditicc sel ect *" from zt xl fa l where lan dl ;: IUS' and regia " ' MA',
deve haver umIndice que conternmandt, 1and! e regia. 0 Indice ideal tcmbernas terio
nesso mesmo ordem. Se ndc houver um Indice nessa ordem, mas hoover outro
ccmecondc com mandt e 1andl, a otimizodor a utilizar6 para cc rrespcnder os primeircs
doiscamposdo c16usulo where e entco execvtor umvorreduro de intervo/o de fndice pdro
localizer uma ccrrespondendo em regio. Uma vorreduro de intervolo de indicej ! umo
busco seqcencol por uma porte de um fndlce.

Tn.ll.O ~

ind ices se letivos e a efic6c ia do fndice


Se a clf us ula where cont iver mais campos que 0 Indic e, 0 sistema utilizara 0
Indi ce para esrreitar a pesquisa. 0 sistema entao leri os registros da rabela e os
varrera p ara localizar corr esp ondencias. Par exemplo, se urn Iodi ce for comp osto pelos campos Fl e F2e voc e codi fies wher e Fl = 1 and F2 '" 2 and F3 '" 3,
o sistem a somente p oderf utilizar 0 Indice para local izar regisrr o s em que Fl=l
e F2==2. Ele lera esses regisrros da tabela para saber quais tern F3=3. Portanto, 0
Indice sera apenas parciahn en te eficaz. Ele teria mais eficacia se contivess e
todos os campos: Fl, F2 e n .

NO
VO....
TWlO ~

Qual 0 grau de efic6cia do fndice com F3? Depende do moneirocomoos dodos


distribufdos no fabelo. Se a combina<;ao de F1 e F2 for muifo especifico (ou
se/etiva) e resultar em apenos a lgumas linhos correspondentes, a inclice i6 sere muifo
eficcz. Adicionor F3 00 indice nesse coso pode 1"100 ser vontajoso pe r causa do overhead
do fndice durante as atua l izo~6 e s de tabela. Se a combina ~oo de Fl e F2 resultar no
sele<;oo de um grande nvmero de linhas da tobelo, a Indice 1"160 estoro muito seletivo e
adicionar F3 provovelmente oumentora 0 desempenho e reduzir6 a consumo de recurso.
500

D~

s.o DATA DlenOHARY, PARTE 3 J 189

Ao criar ou modificar Indi ces, rente nao utilizar urn camp o que ji esn em
urn deles. Ha uma chance, quando urn programa pree xist ente for execurado,
de que 0 otimizador va escolh er 0 novo Iodic e e urn programa preexisrente
po de tornar-se mais lent o.

Diret rizes para crior urn Indice


Via de regra, siga estas diretrizes quan do voce criar urn Jndice:
Nao ren te adicion ar indices desnecessarios. Per gunte-se como voce
pode esc rever a ccdigc para utilizar urn Iodice existen te.
Tente evitar indic es que se sobrepoem; em outras palavras, evite in cluir
o mesmo campo em multiples in dic es.
T en ce fazer indices mu iro seletivos, mas nao inclua camp os que au mente m a seletividade em apenas poucos nfveis.

H6 um maximo de 15 indices secundc rtos pe r tcbelc permltrdcs pelo

R/3.

Cri o ndo urn Iodice secun da rio


S(REEHCAM~ Inicie a ScreenCam "How to Create a Secondary lodex" agora.

Para criar u rn Indice secundario:

1. Exiba a tabela.. Voce deve comecar na tela Di ction ary: Table/ St ru cture: Di splay Fields.
2. P ressione a batao Indexes. . . na barra de ferram entas Application
(ou escolha 0 caminho de menu Gorc-e-Indexes. . .)
3. Se os indices secundsrios ja exisr irem, uma lisra deles sera exibida em
uma caixa de dif logo identificada como Indexes for Table xxxxx. Para
criar urn Indice, pr essione 0 ba tao Create. A caixa de dialogo Create
Index se ra exlbida.
4. Se nenhurn Indice secundaric exisrir, voce nao veri uma Iista de
indices. Em vez disso, vera a caixa de diaIogo Create Index imediatamente.
5. Insira u rn id de fndice no cam po Index rD. Os indices de cliente
dev em comelja! com You Z, embora 0 sistema nao imponha isso.
6. Pressione 0 botao Continue. A tela ABAP/ 4 Dictionary: Ta ble:
Maintain In dex e exibida .
7. No campo Short T ext, digite uma descri~ao do fndice.

I AP RENO A EM 21

eus ABAP/4

D1AS, OOATA DlCTJONARY. P" IT3 I

8. Na coluna Fl d Name, digite os campos que 0 Indi ce deve abranger na


ordem em qu e eles deve m ser classificados.
9. Se os valores nesses cam p os, quando reun idos , devern ser sempre
un icos, facsa uma marca de verificacao na caixa de seleclo Unique
Index.
10. P ressione 0 botao Save na barra de [erramentas Application . as
valores nos campos Status sao ago ra Newe Saved e di retamente aba.ixo
deles c mensagem Does not exi s t in t he database aparece. Tarnbern
aparece a mensagem Index xxx to table xxxxx was sa ved na p arte
in ferior da janela na barra de sta tu s.
11. Pression e 0 batao A ctivate na barra de ferramentas Application. 0
sistema gera a SQ L e envia pa ra 0 RD BMS, criando 0 Iodice no banco
de dados . Se bem-sucedido, os eampos Status exib em Ac t 1ve e Saved
. e, ebaixo dos campos de status , aparece a mens agem Exists in t he
database. a campo DB Index Name conrerf 0 nome do Iodice no
banco de dados. Alem disso, e exib ida a mensagem Index xxxxx was
success fu l ly activated. na barra destatus.
12. Pressione Back. A t ela Indexes for Tabl e xxxxx e exibida.
13. Pres sione Cancel para retorn ar a tela Dictionary: Table/S tructure:
Display Fields.
Voce aprendeu a criar urn indice secundario. O s indices melhoram a
eficiencia da insrrucao sel ect.

Se voce fizer umo morco de verificoC;ao no coixo de seleccc Unique


Index, c ccmblnoccc de compos no indice eseguromente fundomen tal;
isso imposto pe lo RDBMS, Umc instrvC;a o de inse rC;ao o u modificoc;oo
folhora se 0 cc mblnc cc c de vclc res nos compos de Indice jo estiver
presente no tabe lo.

Excluindo urn Ind ice secund6rio


S(mNUM~ Inide a ScreenCam "How to Delete

a eabela, entao vo ce nao pcders excluir n enhu m. Se cs indices


secondaries ja existire m, uma lista deles sera exibida em uma caixa de
diilogo chamada Indexe s for Table xxxxx.
3. De urn clique dupl o no indice que vo ce quer excluir. A tela ABAP/4
Dictionary: Table: Display Index e mostrada.

4. Pressione 0 batao Display < - > Change na barra de [erramentas


App lication . A tela alterna pa ra mod o de alteracao e 0 titulo da tela e
ABAP/4 Dictionary: Table: Maintain Index .
5. Esco lha 0 caminho de menu Ind ex- > Delete. A caixa de dialc gc
D elete Index D efinicion aparece p edin do para coofinn ar a solicitacao
de exclusao.

6. Pressio n e 0 batao Yes para excluir 0 in dice. Voce e Ievado de volta a


tela Dict ionary: T able/Structure: D isplay Fiel ds . A mensagern Index
xxxxx deleted aparec e na barra de status.
No pass o seis, pres sionar 0 botao Yes faz com que 0 Indice seja excluido
do banco de dad os. Ao rer ornar a tela Dictionary: Table/ Structure: Display
Field s, voce nao precisa salvar a tabela. Note tam bem que voce DaO pode
desfazer a exclusso pre ssionando a batao Cancel na te la de exibicac de tabela.

Deterrni no n do qual ind ice est6 sendo utilizodo


Quando uma instrucao sel ect eexecutada, a oti mizad or tenta escolher 0 indice
mais apr opriado para acelerar a recuperaclo de da dos. Se voce river varies
indices em uma tabel a, como voce pode dizer qual Indice est a realmen te sendc
utilizado ou me smo se urn deles esta sendo utili zado?

~o

Somente uma pessoo pode execut or um rostrea mento de SQl de cede


vea, lembre-se 'de deso tivor 0 rastreomento quando terminor. 0
rastreome nto de SQl 1omo lentc 0 sistemo.

Para fazer isso, voc e pode utilizar a ferramenta de rasrreamento de SQL.


0

Secondory Index" ogoro .

Para excluir urn Indice secundario:


1. Exiba a rabela. Voce deve comecar na tela Dictionary: Table/Structu re: Display Fields
2. P ressione 0 borso I nd exes. .. na barra de [erramentas Application
(au escolha 0 caminho de menu Go to->Inclexes . . .) . Se voce vir a
.caixa de dialogo Create Index, ne nhum Indi ce secundario existira para

S(RHNUM~ lnlce 0 ScreenCom "How to Use SQl Troce to Determine the IndexUsed" ogora .
Para dererminar qual Iodice esta sen do utili zado por uma instrucio
se lect:
1. erie urn pequeno programa em ABI\.P/ 4 que contenha apenas a
ins trucao select. Antes de prosseguir, tesre-o pa ra certificar-se de
que funciona.

191

192

DIAs,oDATADlcnDHARY,PARTE ' I

I APREHDA EM 21 DIAS AW l'

2. Abra esse programa no modo de edicsc pan. que ele esreja promo e
espe rando para ser execu tad o.

15. D igite %s c no camp o Co mm and e pressione a tecla Ent er. A caixa de

3. Abra uma nov a scssa o utilizando


ate sessron.

16. Di gite 0 no me da tabela que voce esta rasrreando no campo Search


For. (Essa e a tabela identificada na instrucao sel ect em seu programa
em ABAJ.'/ 4.)
,

caminho de me nu Syst em- > C re-

4. Execut e a tra nsacio STOS (digit e I n stCS - zero-cinco, e ndo O -cinco


- no campo C o m m and o u esco lha 0 ca m inho de m en u System -> Urilities->SQL Tra ce) . A tela T race SQ L D atabase Requests

e exibida.

dialcgc Find e exibida..

17. Pr essione 0 bono Find. V ma lista de resultados de pesqui sa devers


ser exibida com seu nom e de tabela dest acado.

e levad o
de volta a tela T ra ce SQ L: List Database Requ ests. Seu cursor e
posieionado na primeira linha qu e co ntern seu nome de tabela. A
direi ra dele, na coluna O peration, deve estar a palavra PRE PARE , OP EN
ou REOP EN.

18. D e urn clique no primeiro nome destacado da tabela. Voce

5. Se a caixa T race SQL Starus Information exibe Tr ace SQl is switched


off, va para 0 passo 7.
6. Nesse p ontO, a caixa Tra ce SQL Status Information con tem Trace
SQ l switc hed on by, seguido pelc id de usua ric qu e ativou 0 rasrreamento e a data e a ho ra que fo iiniciado. Voce deve altern a-lc antes
de poder prosseguir. Se 0 rastreamento foi iniciado dent ro da ultima
hera, e pcssrvel que ainda este]a sendo utili zado . Ent re em con tat o
com 0 usufrio indicado ou rente novam ente mais tarde. Se 0 rastre amentc foi inicia do hi hora s ou dias, 0 usuario pr ovavelm ente 0
deixou ativo por erro e ele, com s eguran~a, pede ser desativado. Para
desligar 0 rastreamento, pressione 0 bono Trace Off. A mensa gem
na caixa Trace SQL Statu s In fo rmation agora dev e ser Trace SQL is
switc hed off.
7. P ressio ne 0 botao Trace On. A caixa de didlogo Trace SQLDatabase
Requests eexib ida. 0 campo DB -Trace for User deve center seu ID
de usua rio. Se seu ID de usuario nao estive r nesse camp o, insi ra-o
agora .
~_::.'
8. Pressione 0 botao OK. Vo ce e levado de volta a tela Trace SQ L
Database Requ est s e as informacoes de sta tus exibem Trace SQL
'switc hed on by. indicando qu e voce ligou 0 rasrream ento.
9. Aherne de volta para a janela que contern sua sessso de editor (aqu ela
com seu programa esp eran do para ser executado) .
10. Press ione F 8 para executar seu programa. (Apenas pressione F 8, nao
fa~a mais nad a, nem mesmo p ressione 0 bo tio Back.)
11. Quando seu programa t iver side execut ado e a ampulheta nao estiver
mais sendo exibida, alt em e de volta ajan ela de rastr eam en to.
12. Pressi one 0 botao T race Off. As inf ormacce s de status leem Trace
SQL is switched off.
13. Pression e 0 ba tao List Tra ce. A caixa de diilogo T race SQL Database
Requests e exibida. Os campos nessa tela jacon terao os valore s.
14. Pres sione 0 botao OK. Vo ce pode precisar espe rar urn pou eo, no
maximo doi s minutos. A tela Trace SQ L: List D atabase Requ ests e
exibida.

19. P re ssione 0 bcrac Explain SQ L na barra de ferr amen tas Application.


A tela Show Exec ution Plan for SQL Statement e exibi da.
20. Role para baixo ate
exibi do em azul.

plan o de execucao. 0 Indice utilizado sera

Voce aprendeu a executar urn rastr eamen to de SQL Isso ajudad. voce a
determinar qual Indice esd. sendo urilizado.

Exibiodo coofig uro(;oe S fecoicas


P ara exibir as configuracoes tecnicas de uma tabela, exiba a tabela e pr essio ne
o botac Technical Settings na berra de ferrame n tas Application . (Se 0 bo tac
na o estiv er af, sua janela pode estar muito estreita. T en te alargar sua janela ou
utilize 0 cam inho de m enu G orc-e-Technical Settings.) Para modificar essas
co nfiguracoes, pression e 0 bor ac D isplay <-> C hange na barra de [erramentas
Application. A tela ABAP/4 Dictiona ry : Ma in tain Te chnical Settings eexibida,
como mostrado na Figura 5.4.

Closse de dodos
A cosse de dodos determino a tablespoce 0 que 0 fobelo e ctribuldo. (0 termo
"tcbt espoce" se cplico 0 bancos de dodo s Oracle. Pora lnformix, substituo pelo
termo "'DBS spa ce"'.) Um tabJespoce e um orquivo fisico no disco que e uttlucdc para
crmczencr tcbelcs . Coda tc belc eotribuida a um toblespoce. As tabela s com corocteristicos seme lho ntes nc rrnc lmente sao agrupoda s em urn tab lespace, ossim toblespcces sa o
as unidad es a dministrotivos utilizada s pelo DBA pa ra gerencior 0 ban co de dodos. Pa r
exernplo, a s tobelas que cresce m rcp idomente esto roo ogrupodas em urn toblespoce em
urn disco com muilo espo<;olivre.

NOVO'"

TftO ~

Ca da classe de dados tern urn tablespaee associado. Quando voce ativa


uma tabela. ela e criada no tablespac e associado a essa c1asse de dados. Se voce
alte ra a elasse de dados quando a tabela est a ativa, oada aco m ece; ela nao se
move para outro tab lespace .

193

.w..
194

w.w.w

---~-----D1A5: 0 OATADIITIONARY,PARTE 3

I APRENDA . M21 DlAS AD AP/'


E.i.o.u-t:a-5 4
'!'i ii @ Hg ! ffl ft' 9\ [ ,
.:>.!L.-__ ~ : t.-- JIloiloo '.~ '''II<\; ' ._. ~' . ,

~~,.;._~f"~"

\;. :,';...r_;"~:: .'-c-:. .:., ,',-.,> _

, -~. ;:' ,. ',

_1" 1>:1

"" .' '''

No telo A.B.AP/4

,. 195

Alem de ssas categories, p ode haver classes de dados USER tambem. Estas
sao criadas par seu DBA, que 0 dirigira na esc olha delas nas hora s apropriadas.

Catego ria de tamanbo


o camp o Size Category permite

.- ~-~.~~;~ .~.,~~.: .".<:~) ,~~~%~.~\,~,~,

i_~ 'i~i'f.;"'!$C~~?" ?*;~~~n'::.l


:I~W-ID'; ~:;- l:, :)'~ :;" '; .:1:.-t(,9,~~f~:;;:'

*~""-'~~~::j;.~;r~.~ ' "~"~~~i{~l:ll~

que vo ce esp ecifique 0 mimero maximo de


regist ros que espera que essa tabela arm azene. Vo ce ira con figurar 0 tamanhc
da exten sao ini cial e das pr 6ximas, assim como 0 nu m ero maximo de extens6es
permitidas por essa tabela. VIDa eaensso e a quantidade de especc alocado para
uma tab ela. A extens fio inicial ea quantidade de espa<;o alocado pa ra um a tabela
quando e criada. Se uma tabela consome esse espa<;o, out ra exte ns ao sera
alocada, fazendo com que 0 espa!jo de tab ela seja est endido .
As cacegorias de tam anh o sao sempre de 0 a 4, mas a namero de re gist ros
espera dos em carla categoria de tamanlro mudare de acor do com cede tabela
baseada n o co mprim ento de uma linha. Esco lha uma categoria apr o pr iada
baseada no numero m aximo de registros qu e voc e espera que a tab ela arm azen e.

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

As classes de dados imporrantes sao:

~o

Q uando escolher umc ca teg orio de tomonho, se jc ge neroso . No R!3


melhor supe restimar, que subest imor esse pcrernetrc . Se a
cotegorio de tomonho e muito peq ueno e a tooele cresc e mois que a
clccccec inicicl, 0 RDBMS oloco outra extenseo. Extens6es seccn dcrlc s
redvaem 0 dese mpen ho e exigem uma reorqc nlzocec do lable spoce
para sere m remcvidos. As reorgcnizocoes podem se r muito diflceis de
banco de do dos g rond e, especiolmente e m urn que
executo r e m
exijo a lto disponibilidode. t muito mois focll reduzir uma ca tegorio de
tom onho excessivome nte qeneroso do que ournentor umo subestimodo .

e muito

APPLO au dados-mestres . Escolhendo APPLO (dados-m est res) , signifies

que a tab ela nao e atualizada com freqeencia e cresce lentamente. Ela
sera colocada em urn tablespace com tab elas semelhanres. 0 mestre
do fabricante e as tabelas-mes tres do cliente sao bans exem plo s de ,
dados -mestres.

APPLl ou dados de transaoio , Escolher APP LI (dados de traqsj.<;ao),

significa que a tabela se destina a ser atualizada com frequencia e


crescer rapidamente. Pedidos feitos a fabricantes e pedidos recebidos
de clientes sao bons exemplos de dados de transacoes. As eabelas que
contem essas ordens terao uma classe de dados de APPLl.

urn

dodos de personalizacso. Escolher APPL2 (clados de personalizacao), significa que 05 conteudos cia tabela sao determinados
am es da implementacio e njio alteram com frequencia depcis disso .
As tabelas de verificacao e suas tabe1as de texto associadas, como
ztxt005 e ztxt OOSt , sao bons exemplos de tabelas que devem ter uma

APPL2 OU

classede dados de APPL2.

Exibindo 0 numero de extensoes alocadas para


umo tabela
Voce po de exibir a ndmero de extens6es aIoca das para uma tabel a ut ilizando
a seguinte proce dim ento.

smENCAM.... lnicie
"

a Scree rrCom "How to Display the N umbe r of Extents Used by a Icble"

a gora.

Para exibi r a mimero de extens6es para uma tabela:

1. Ex ecute tr ansaclo DB02. (Digire / n d b02 no campo C ommand e


Outros classes de dodos podem se r exlbtdos pressfcncn do-se 0 seta
perc ba ixo no fim do compo Doto Closs e ernoc press ionondo-se a
bctcc System Data Types. Esse s classes s6 devem ser vtllizodos pe lo
SAP; elcs serve m pa ra as tcbelcs de sistema do R!3 que c rmoze norn,
par exemplo, as roforrrocees de Doto Didi on o"ry e a c6 digofonte do
progromo.

pressione a tecla En ter.) A te la Database Performance: T ables and


Indexes e exibi da.
2. Pres sione 0 bctao D etailed ana lysis. Uma caixa de dialogo Memory
Ma nagem ent: T ables and Indexes e exibida.

.*.

wwww ww _ ~-- -

~ ~
DIA 5:DDATADICTIONARY, PARTE3

APRENDA EM 21 DIAS ABAP/4

3. Digite

nome cia tabela no campo Tables e pressione


VIDa tela M emory Management: Tables and Ind exes
nome de tabela apa rece ria lista.
0

batao OK.

e exibida. 0

4. De urn clique duplo no nom e de tabela. Uma caixa de dialogo Memory


Management: T ables and Indexes eexibida.
5. Selecione 0 ba tao de opcao Extents.
6. Pressione

botao OK. Uma tela Memory Management: Tables and


Indexes e exibida, contendo a Iisca de exrensoes, seus nomes de
tablespace, n umeros de extensao, mimero frsico de arquivc, tamanho
de bloco, tamanho de extensao e mimero de blocos na extensao. Ha
0

um a linha nessa lis ta para cada extens ao.


Voce aprendeu a exam inar 0 numero de extensoes alocadas em uma
tabela. I sso informara se a t abela p rec isara ser reorganizada au nao.

lliiJi za ~ii Q

de buffer em um a tg be lo

Como mencionadono Dia 1, as dados podem ser colocados no buffer na RAM


no servidor de aplicat ivo. Isso e contro lado individualmenre e especificado nas
configuracoes tecnicas para cada tabe la {veja a Figura 504).
Sempre que uma instrucao Open SQ L e utilizada para ler urn regis tro, 0
buffer de dados e verificado p rimeiro para ver se os dados estao ai. Se nao
est iverem, as dad os sao lidos do banco de dados. Se as atriburos cia t abela
indicarem que os dad os devem ser cclocados no buffer, 0 regis tro e salvo n~ :
RAM no servido r de aplicativo em buffers de dados. Mais tarde, se esse registro
for lid o novam ente, ele sera lid o atraves do buffer, em vez do banco de dados.
Urn diagrams desse processo e mostra do na Figura 5.5.
Elg ll r g 5

no

CD

Os dodos podem ser


colocodos no buHer

Progromo em

WI. do servidor ABAf'l4

do oplicotivo.

sendo
exeectcdc em
um procl!SSO
de trcbclbc

(2)

Colocando os dados no buffer, voce aum enta


maneiras significativas:

0 prccessc de trobolho
verik o 0 buffer perc ver
se es dodos eslo o ui. Se
nco esuverem.

ele obtl!lm 05 dodos do banco

desempen ho de duas

Os programas que udlizam os dados no buffer sao execut ado s mais


rapido porque eles nao precisam esperar as informacoes chegarem do
banco de dados . Isso reduz os arrasos d e espera pelo ban co de dados
e a rede que as conecta.

Os outros programas que preeisam acessar a banco de dados sao


executados mais rapido porque hoi men os carga no ba nco de dados e
menos trafegc na rede.
Colocar uma tabel a no buffer pode fazer com que uma sel ect execut e 10
a 1OOvezes mais rapido ou mais . A princfpio, pode pareceruma boa id eia u tilizar
buffer em cada tabela no sistema. Entretanto, as buffers sao armazenados
inteiramente na RAM, assim 0 especc e limitado pela qu antidade de RAM
disponfvel. De faro, a quantidade de dados e dio superior a de RA M que as
tabelas devem ser co locadas no buffer prudentemenre para evitar overruns . Se
acc nt ece urn overrun em urn buffer, ele pode fazer troca (swap) para 0 disco,
que pode apagar qualquer desempenho ganho pela utilizacao de buffer.
As tabelas contendo tipos de dados numericos ria ehave primaria nao
podem estar no buffer. Os tipos de dedos numericcs -de DDIC sao CURR, DEC,
FLTP, INTI, INT2, INT4, PREC e QUAN.

A trcnsoceo 5T02 exibe buffers e estctleflcc de usc. No tela Tune


Summary, os buffers de dodos sao chcmodcs Generic Key e Single
Record. Urn clique duplo em coda umc desscs liohas exibir6 umo
analise detclhcdo. A partir del, os cbietos no buffer podem ester
exibidcs pressloncndo -se 0 botoc Buffered Objects no borro de ferromentes Application.

consultor de Basis 0 responsavel par monitorar a s buff ers e evitar


que a falta de buffer tome lema 0 sistema. Antes de utilizar bu ff er em u ma
cabela, e uma boa ideia conversar com seu consultor de Basis.

de dodos e

preenche

buffer.

Acesscs subseqiienles leem os


dodos do buffer.

Sincronizac;cio do b uffer
NOVO ~
Se voce fiver dais servidores de cplicctivo, 0 mesmo reqistro pode ser cclccod c
TtR1!O ~
no bufferem code servidor. lsso n60 serlo um problema para ele, noo fosse 0
foto de que os dodos podem ser otuolizados. Se um registro colocodo no buffer for
otuolizodo, as clterccoes devem ser comunicodas 00 outro servldor de cpllcctlvc. Isso e
feito em um processo conhecido como sincron;zo~oo de buffer, que ocorre em intervo los
de 1 a 4 minutes, dependendo do configuro~60 do seu sistema.

197

~ . Y W W W W W W W W

198

W . W W W . W . W

--

_:w:

__

__

Dl's,o DATADICllDN'RY, PARm

mEHO' EM 21 DIAS"AP"

Por exemplo, como mo strado na Figu ra 5.6, supo nha que 0 usud rio 1
esteja conectado ao servidor de aplicat ivo 1 e 0 usuaric 2 esteja conectado ao
servidor de aplicarivo 2. 0 usuario lIe 0 registro 1. 0 registro 1 e colocado no
buffer do servidor de aplicativo 1.
N a Figura 5.7, 0 ususrio 2 Ie 0 registro 1. 0 mesmo registro esta agora
n os buffers dos dois servidores de aplicativo.
.
Na Figu ra 5.8,0 usudrio 1 atualiza 0 regiscro 1. A atu aliza cao e refletida
n o banco de clades e no s buffers do servidor 1, mas 0 regist ro an tigo aind a esd
no serv ido r 2. Uma entrada e feita no log de siruronizaoio n o servid or do banco
de dados indicando que 0 registro 1 foi atualizado.
"F i g u r a 5 6

Posso A 0 usu6rio
J Ie 0 registro J,

fozendo com que ele


seio colocodo no
buHer no seNldor de
oplicolivo J"

--

l egendo:
AS: Servidcrde oplicotivo
DB5 : 5ervidorde banco.de dodos
SP: Processo de sincronimco c

-'

L!o====...J I

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

. ..

Na Figu ra 5.9,0 usuario 21e 0 registro 1. A versjio auriga do registro 1 e


encontrada n o buffer, enrso 0 usuario 2 ve os dados ant igos. 0 usuario 2 nao
ve a nova versao do registro 1 ate qu e uma sinc ronizacao de buffer ocorr a.
.
N a Fi~ra 5.10, a processo de sincronizacao de buffer detecta que 0
l~terval? de_ smcroni~a(jao expirou e com elSa a sinc ron izacao. Ele Ie 0 log de
smcromzacao no servidor de banco de dados e determine que 0 regist ro 1 esta
fora de sincr onizacao. Ele entao marca esse regist ro como invalido no buffer.
Ele ainda ndo atua liza 0 registrc n o buffer do banco de dados.

I
SYNC lOG

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

HREND" EM71 DIAS ABAP/4

Na Figura 5.11, 0 usuario 2 Ie 0 registrc 1 novamente. Dessa vez, 0


regis tro 1 foi marcado como invalido no buffer, entao ele e buscado do banco
de dad os, atuali zando assim 0 buffer no servidor de aplicativo 2.
Como most rado nas Figuras 5.6 a 5.11, sincronizacao de buffer utilize
urn processo de sincroni zacao em cada servidor de aplicarivo e urn log de

sincron izacao no servidor de banco de dadcs. Em urn intervale predefinido,


cada processo de sincronizacao ver ifies 0 log para ver se quaisquer clados que
esrejam colocados no buffer fo ram modificados. as dedos modificados sao
marcados como invalidos no buffer. Da pr6xima vez que as dados forem lidos ,

I
,f

DIA 5: 0 DATAD10IONARY, PARTE 3

!
I

Para checar, uti lize a transaclo RZ10 como a segu ir:

Inicie a transacao RZ10 (digite /nrzlO no campo Command e pressione a recla Enter). A tela Edit Profiles e exib ida.

Escolha 0 caminho de menu Gcto-> Profile Values-> O f a Server. A


tela Active Application Servers e exibida.
De urn clique duplo em urn servidor de aplicativo. Voce vera urna Iista
de todos os valores de paramerro de perfil par a esse servidor.
Digite %sc no campo Command e p ressione a tecla Enter. A caixa de
dialogo Find e exibida.

eles serao atualizados a partir do banco de dados .


o consultor de Basis configura a medida do intervale de sincronizacao
de buffer utilizando 0 pa rametro rdi sp/bufreft i me.

D igite rdisp/buf no campo Search For e pressione a tecla Enter. as


parametres de buffer sao exibidos e destacados.

Ei g ma 5 10

De urn clique na pa lavra destacada rdi sp/buf r-e f t fme .

Passa E: 0 processo
de sincronizo~do do

0 tempo de atualizacao (em segundos) e exibid o no lado direito da


lista,

buHer involido 0
registro J no buHer

do servidor de
2.

oplicoijvo

Atuolizondo as tobelos colocodos no buffer


Se voc e codificar um a transacao que atualiza uma tabela colocada no buffer,
voce devers estar sempre segura de ir ao banco de dados e obt er as inform acoes
mais arualizadas, antes de permitir que u m usuar io as altere. 0 seguinte
exemp lo ilus tra esse ponto. 0 bloqueio de registro e mencionado no paragrafo
.
seguinte para completar 0 assunto.
Suponha que a registro 1 contenha campos Fl e F2. D essa vez, 0 usuario
20 Ieprimeiro, faz.endo com que ele seja colccadc no buffer no servidor 2 (veja
a Figura 5.12).
Eig,jra 5 12

Fig mQ 5 11

Posso F: 0 usv6rio 2
tenlo reler 0 regi slro J
rue s tile esrc morcodo
como inv6Jido no

buHer. 0

registro

Posso A a usu6rio
2 Ie 0 regislro 1,
fozend o com q ue eJe
sejo colaco do no

buHer no seNidor cia


oplicofivo 2.

entoo e atuolizodo do
banco de dodos.

DBS
Fl

F2

[ATI]

201

_. O~ 5.00ATAOlcnONARY. PAR1E '

202

203

APm" EM 21 01 AS ABAP I'

Utilize bypassing buffer no insfru~oo se lect quando voce prectsor de

MOYO.....

a usuario 1, agora querendo atualizar 0

registro 1, bloqueia-o e 0

le (veja

a Figura 5.13).
.
usudrio 1 altera Fl, escreve -o ao banco de dados (veja a Figura 5.14) e

destrava-o.
Nesse ponto. 0 buffer no servidor de aplicativc 2 ainda tern a copia original
do regisrro 1 com 0 conteudc original de Fl. Se 0 usuario 2 bloqueia 0 registro 1
eo le (do buffer), altera F2 (veja a Figura 5.15) e entao salva-o no banco de dados,
as alreracoes feitas pelo usuario 1 serao perclidas [veja a Figura 5.16).
E.ig..urq 5 13

UiMO"

informccees mais atua lizodos, par exem plo, select * fram zt xt lfa l by0 buffer seic ignora do e 05 dodos
sejcrn lidos diretomente do banco de dodos. Voce deve utilizer issc se mpre que estlver
Jendo para aNalizar, lsto e, lendo urn registro que ser6 otuchr odo e gravo do de volta no

pass; ng buffer. Fozendo isso, voce consegue que

bc nco de dados.
Figura 5

15

Posse D: a usuario 2
Ie 0 registroantigo I e
o bloqueio.

Usu6rio 2

Posse B: 0 usu6rio
1 bloqueio e Ie 0
registro urn, fozendo
com que ele sejc
co/ocodo no buffer
no servidordo .
op!icolivo J.

AS2
Fl

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

do usuario 1 nao teriam sido perdidas.

204

m EN DA EM 71 DIAS AWl'

DIA H DATA DlmDN,"Y, PARTE 3

o bypa ss do

buffe r para otualjzo~6es oferece melhor equilibria entre


seguron<;o e velccldcde. Entrelonlo, se voce puder fer certezo de que
todes as atuolizo <;6es seroc [eitcs em urn cnlcc servidor de oplicctivc,

nCio prectscrc codihccr pore fczer bypass do buffer. Seu byposs toma
lentc a proc esso de otuolizm;ao urn pouee, porque um ccessc de bonco
de dodos e exigido . Se voce preciscr de quontidocle m6ximo de

velocidade pa ra otocllzocoes e puder fer certezc de que openos um


servidor de oplicotivo ser6 utilizodo, esso cltemctlvc pede funcionor
po ra voce. Converse co m seu consultor de Bosis perc sober se issc
pade ser providenciodo .

Resumindo as abor dagen s de utllizccco de buffer


com atualiza ~6 es
Hs eres abordagen s de urilizacso de buffer para tabelas que podem ser atuali zadas. N a ord em do m elhor p ara 0 pior desempenho, elas sao as segu in tes :
U tilize buffe r na tab ela, DaO use bypass 1ng buffer e assegure -se de qu e
to das as atu alizacoe s foram [eitas a partir de urn unico servidor de

. aplicarivo.
U tilize buffer na tabela e use bypassing buffer.

Nac utili ze buffer na tabela.


Se uma tab ela sera atu alizada com freqaancia, nao utilize a abcrdagem
bypas si ng buffer. C arla atualizac;ao fad. com que os buffers em todos os outros
servidores de aplicativo sejam recarregados na proxima sincronizacio. Nesse
caso, a utilizalSaOde bu ffer realmente pe de aumentar 0 trffego total de rede e~
vez de diminuf-lo.
~
." ",/

Buffering Not Allowed em umo tobelo SAPslqniflcc que voce nee deve
onvcr 0 cclcccccc desso tc belo no buffer. Se fleer isso, voce pode
cou sa r umo operc ce c fcltvel dos oplicofivos do R/3 e tolvez perdo ou
corrvp o de dodos.

Tecn icos de

uti liza~ii o

de buffer

A met ade inferio r da tela Techni~a1Se ttin gs {mosrrada anreriormente na Fig ura
5.4) conrem as controles para configuracoes de buffer. Ao criar urna tabela,
voce tern controle complet e sabre essas configuracoes. Para alterar essas
configuracoes em urna tab ela de SAP. voce precisa obrer urna reels de modificac;io da SAP .
Voce pode configu rar a utilizalj:io de buffer para uma tabela quando voce
a eria, au voce pode mo difid-Ia mais tarde. Alterar as configura!joes de buffer
nas ta belas de SAP exige uma tec1a de modificac;ao, que voce pode obter da
SAP.

Esses rres bcroes de opc;:ao ativarn e desativam a utilizacao de buffer:


Buffering Not Allowed

Buffering Allowed But Switched Off


Buffering Switched On
Escolha Buffering Not Allowed se nao se puder usar buffer na rab ela, 0
que ocorre no seguintes casos:
Os usuaries devem sempre ter informacoes 100% exatas e 0 ma is
atualizadas pcsstvel para conseguir Ier e gravar . Esse pode ser 0 caso
para consultas muitc sensfveis como cotecoes de bois a de valores o u
sistem as de controle de te mpo real como movirnentos de mer cad ori a
em armazens .
Os registros da tabela sao atualizados com a mesma frequencia com
que sao lidos. fazendo com que a urilizacjo de buffer seja inad equada
(veja a seguir).

Escolha Buffering Allowed But Turned Off ou Buffering Turned On se


os usuaries desses dados puderem tolerar uma latencia de buffer de 1 a 4
minutes. Njo se esquelj:l1 que esse larencia nao existira quando atualizar dados
porque voce codificara bypassing buffer para cbter as ul~imas informa coes.
utiliza~iio de buffer
Como mostrado na tela Technical Settings na Figura 5.4. rres ripos de utilizaci o
de buffer sao possiveis:

Tipos de

Comp leta

Generics
De regis tro unico
Embora voce utilize uma caixa de selecao para indicar 0 tipo de utiliza~ao
de buffer) somente urn tipo pode ser selecio nado por vez. Se voce escolher m ais
de urn, uma mensagem de erro sera exibida.
Ha dois buffers de dados em cada servidor de aplicativc e a ripe de
utiliza~3o de buffer escolbido det ermine qual buffer sera utilizado. Em urn
servidcr de aplicarivc hi:
0 buffer de registro generico

0 buffer de regisrro Unico

o buffer de registrc generico echamado TABL (abrevia~ao para "tabela") .


o buffer de registro enicc eTABl P ("pn significa "parcial-).

205

-=------206

lPHNOl EM 21 OIl S ABAPI4

Ut il iza~ao

DIAS, DDATA DICTIONARY, PARm

de buffer completa

Para ativar 0 tipo de utilizaci o de buffer completa, fac;a uma marca de verificac;oio na caixa de se1e~ao Full. Quando ~ feita uma tentativa de ler os dad os de
uma tabela com utilizacio completa de buffer, 0 sistema exam ina 0 buffer TABL
para ela. Se ele nao for encontrado af, todasaslinhas serao carregadas do banco
de dad os em TABL [veja a. Figura 5.17). Isso acontece sempre que uma inserucao
se lect e executada, independentemente de quanto s re gist rcs correspondam a
cldusula wh ere. Mesma se nenhum regi str o co rresponder, todo s sao carr egados
no buffer se a tabela Olinda DaD estiver al ou se ela estiver invalidada devido a
sincronizacao de'buffer.
E gura

Todescs linhes de

TBI
REel

ume lobelo com

ulilizor;60 comp le/o de


buffer s60 corregod as
em

TABLP

TABL

5 17

REC2
REC3
REC4

TABl

I~
Select ' from I'D1 where...

TB I
Technical Setting5:
.-

"

/'
Full Buffering

-,

./

Se umo instrul700 seledonada e executod o, ma s mcitc s vezes nee


enconfro dodos no tcbelc, a utiJizol700 complete de buffer aindo pade
toma r 0 ocess o a tobelcs mots eliciente . Como 0 tobelo lntelrc estc no
buffer, 0 sistema pede de terminor se os registros exlstem a ntes de ir 00
banco de dod os, a ssim ele evitc urn ocessc de ba nco de dod os porn
e ncontra r as dodos .

Utiliza~ao

ge nerica de buffer

C om a utilizacao generi ca, urn grupo de regisrros e carregado em TABL em vez


cia tabela int eira . Para at ivar esse tipo de utili zacao de buff er, falia uma marca
de verificacio na caixa de selec;ao Generic e colo qu e urn numero n no s No. of
Key Fie lds de m odo que os n campos a esquerda da chave prirnaria agruparac
regist ros . Qu ando urn registro e lido e n e 1, todos os registros con tendo 0
mesmo valo r no primeiro campo de chave primaria sao carr egados no buffer.
Quando urn registro e lido e n e 2, t odos os registrcs contendo 0 mesm o valo r
nos primeiros dois campos cia chave primaria sao carregad os no buff er. Isso e
ilusrrado na Figura 5.18.
Figura 5 18
Ufilizo o generiea de
buHer. n deve ser
menor que D num ero
de campos no chove
prim6ria.

TABl
C I 1
C
2
C
3

TABlP

rec4
..05
re , 6

TB I

RECl
REC2
REC3
REOI

Select' fromtb1 where f1 = 'C


~

carregamenro de TABL nao ocorre com as instru coes sel ect s tn ql e:


somente sel ectJendse 1ect faz isso. Se a tabe la estiver com utilizacao completa
de buffer e um a instrucao sel ect single for execurada, n enhum registro sera
carr egado ern TABL. Enrretanto, se a tabela ji estiver carregada em TABL, select
5 i ng1e [er fi os regis tros de la.
Durante a sincronizacio de buffer, a tabela inteira einvalidada se qualquer
registro dentro dela se aiterar. D a pr6xima vez que dado s fo rem lidos, ;I. tabela
inteira sed. recarregada.
A utili zacao de buffer completa e apropriada para pequenas tabe las que
raramente se alteram. As tabelas de verificacao e suas tabelas de texto, como
ztxtOOS, ztxtOOSt, ztxt005s e ztxt005u. devem t er u tiliza~ao co mpleta de
buffer. Elas sao configuradas com urn conjunto inicial de valores validos e
d escrj~6es, e raramente sao mo dificadas dep ois .

f'--TBI F1

~i

A
B
C
C
C
D
D

/
F2
1
2

I
1
2
3
1

reel
ree2
re,3
ree4
fecS
rece
ree7
recS

TB 1 Technica l
SeMing5:

12] Generic Buffering


Number of Field5:m

---

Em outre exemplo, suponha que voce escolha a utilizacao generics para


a tabeIaztxl fal e configure N o. of Key Fields com o 1. Como o primeiro campo
e mandt. todos os regi str os para urn cliente sao carregados no buffer de uma
vez.

207

:1
,..1
.,i:

:I" '

__ ...

' W ' ~ _ ~

208

__

"RENDA 1M 21 DIAS ABAp/'

ous.o DATA maiDNAR!, PAm 3


FI g u r a

Se voce especthccr vtilizOliOO complete perc ume fobelo dependente


do cbente {tendo rna ndt no primeiro coluna}, 0 sistem a autome ticcrnente a utilize gen ericomente com n igua l 0 1. Isto e, quando um
registro elida, cpenos as registros que tern 0 mesmo neme rc de diente
sec ca rrega da s no buffer. Voce noo pod e ver issc refletido nos
configurolioes tecnlcos: elos cc ntinuom a indice r utilizaliQO complete.
lsse simplesmenle ocontece "nos bosndcres" .

TABL

5 19

TABLP

Com c ulilizo o de
buffer de regislro

I I1I

unicooti'lodo,

",3

selec.ione regish'os de
corregomenlounico
de ume vez porc 0
bufferTABLP.

Select single <from tb1


where rJ = 'B'e f2.., '1'

A utilizacj o generic a de buffe r eadequada para tab elas em qu e os regisrros


sao nor malmente acessados em conj untos ou grupos. Ela eadequada se, quando
urn regisrr o do grup o e acessado, grande parte des acessos normalmente seja
par a registros do mesmo grupo. Po r exernplo, se urn usuario efetua logon em
ingles, e muito prova,:el que sornente descricoes em ingles sejam lidas por esse
usudrio e par outros usuaries no mesmo serv idor de aplicativo. As tabelas de
tex to, 'c nde as descricoes sao arm azenadas, sempre te rn mand t e spr as (0 c6digo
do idioma) como os primeiros dois campos . Portanto, a uriliza cdo generics de
buffer com n iguaI a 2 eapropriada.

r-;
TBl F1

A
A

~
F2
1

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

Coda grvpo de reg istro no buffer exiqe-overh eod od mlnlstrcuvc . Tente


fer um nvm erc reletivamente grande de registras por grv po . Co m a
utilizOliQO gen erico, se voce ccobc corregondo 0 moioric dos hnhcs de
ume tcbelc e e los sao co rrego da s em muitos grupos pequeno s, urno
tcbelo colocodo completa me nte no buffer ser6 mais efkie nte.

dados.

. '

Mesmo se urn regiscro 1740 for loca lizado, ainda assim urna ent rada efeita
no buffer de regisrro unico. A entrada indica que 0 registro ndo exisce no banco
de dados . D a pr6xima vez que esse regist ro for solicitado, a bu ffer p ode sec
utiliza do p ara resolv er a solicitacao e urn acesso a banco de dados nao sera
necessa rio .
Por exemp lo, suponha que 0 fabrican te Xl nac exista no banco de dados.
Execut ar sel ect s i ngl e * from ztxl fal where lifnr : : ' Xl' facia com uma
entrada fosse criada no buffer de registro unico para indicar que 0 registro Xl
nao existe no banc o de dad os. Da pr6xima vez que 0 fabr icance Xl for solicitado,
o sistema exam ina 0 buffer.e desccb re que nao exisre e nao pr ecisa ir ao banco

D urante a sincronizagdo de bu ffer) se um a tabela' for colocada no buffer


genericamente e urn registro estiver invalidado no buffer, todos os registr os
no grop o tambe m serjio invalid ados. A pr6xima leitura de qualquer registro
n esse grupo fara com que 0 grupe inreirc seja recarregado.

Utilizac;ao de buffer de regi stro unlco


Co locando uma marc a de verificacao na caixa de selecsc Single Records, vccs
ativa a ut ilizacao de buffe r de regist ro dni cc. Co m esse ripe de utilizact o de
buffer, se l ect s1ngle seleciona urn registro no buffer de registro Unico TABlP,
como mostr ado na Figura 5.19. Com esse tipo de utiliza~ao de buffer, os
regist ros sao apenas colocad os no buffer quando a instru ~ao select s i ngle e
execuuda. Sel ect/ends el ect nao carrega nern Ie TABlP.

de dados.

A u~iliza~ao de buffer de registrc unico e apropriada par a tabelas muito


grand es em qu e uma por cent agem pequena dos registros e lida com freqiiencia.
Para a utiliza~ao de bu ffer de registro unico funcionar, os registros devem ser
lidos utilizando .a instru~ao sel ect s i ngl e.

Resumo dos t ipos de utilizac;ao de buffer


Em resumo, h;i dois buffers: TABL (0 buffer generico de regist ro) e TABLP (0
buffer de registro unico) . H i tambem cluas variedades da instru~ao select:
select e select sing le. A ins tru~ao sel ect carrega TABL e a ins tru~ao select
single carrega TA8LP

209

w __ .. __
210 , .lPRl:ND.l EM

21 DIAS ABAPj4

DIAl, DlllTADlmDNARY,PARlIJ

Durante a leirura, se lect somente Ie TABl ; ela ignora TABlP. A inst ruci o
select s ingle Ie os doi s buffers. Es se comporramento e resumido na Figur a
5.20. Lembre-se de que urn regist ro somen te pode estar em urn buffer de um a
vez po eque um a tab ela ape nas pede t ee urn tipo de urilizac ao de buffer.
FlgurQ 5 2 0

Bufferde
reg istro:

Como 05 instroC;6es
seledonodos
interogem com as

buHers.

Buffer de
registro
unico

generico

Select Single

Select

SOMENTE

CARREGA
E LE

lE

CARREGA
E lE

NAO lENEM
CARREGA

Perc limper 0 conteudc de TABl e TABlP, digite I Sta b no ca mpo


Com mand e pressione c teclo Enter. Voce ped e cttlbor esse metcdc
depois que desativa r 0 utilizo~cio de buffer pora limpor os buffers cotes
de testor a d iferenc;o de desemp enho de um prog rama. Note que issc
pode dlmlnuir 0 desempe nho do sistema, em gerol olll d uos ho ros, ate
que as buffers sejam novo mente preenchldcs.

Subsfituicco do buffer
Se lASlP esdver compleca e urn novo regisrro precisar sec car re gada, os antigos
serao jogados fora para dar eepacc aos novos. Os mais antigos sao aqu eles que
ha mais t empo estao esperado se r acessado s.
Em l ABl, os registros antigos nao sao desc art adcs qu ando os nffVos sao
carregado s. Em vez disso, tabel as in teiras sao periodic amente descarregadas do
bu ffe r. 0 com primen to de te mpo ent re descarreg ar e quais tab elas 'sao descarre gadas e det erminado par urn algori t mo de cache den tr c d o R/3. Esse algoritmo com plexo e baseado na quantid ade de espas:o utilizado por uma tabela
no buffer versus 0 numero de acessos de leirora oele no pedodo anterior e
t ambem Daquantidade de espa~o livr e disponlvel no buffer e na qualidade atu al
de aces so do buffer.

Dec idindo se

e ne cessa rio utilizo r 0

o obje tivo da utiliza~ao d o bu ffer ere duzir 0

buffer

numero de leituras de banc o de


dados e a qu antidade de td .fego de rede do banco de dados para os servidores
de aplicativo. As ses:6es a segu ir listarao cenarios com tabelas de utilizas:ao de
buffer que DaO sao atualiza das, junto com utiliza~ao de buffer e inclexa~ao.

Ta be las de utilizac;ao de buffer que ndc sec otualizad a s


Se uma tabela e aces sada co m frequencia mas rae atualizada co rn frequencia,
ela deve ser colo cada no buffer. Voc e p recisara consulter seu administrad o r de
Basis p ara saber se ha espa~o sufic iente no buffer para adiciona r su a tab ela. Se
nao houver e sua tabela for acesseda com frequencia, e po ssivel aumentar a
quantidade de RAM alocada para os buffers. Altemativamen te, o urra t abela
acessada com menos frequencia que a Sua pode ser alterada, de m odo que nao
seja mais colocada n o buffe r.
Ulilizo~ii o

de buffer e indices

Os regis tros em urn bu ffe r te rn seu proprio Indice primario criado na RAM .
Quando os registros sao necessaries , 0 Iodice eut ilizado para posiciona-lcs no
buffer da m esma maneira que 0 Indice primario no banco de dados e utilizado
para posicionar regisrros em uma rabela. Entrerant o, in dices secunddrios ndo
sao criados no buffer, tampoucc indices secundarios de ban co de dados sao
utilizados para acesso a dados colocados no buffer. Portanto, quando codificar
uma instrucao s el ect. . . where em uma tabela colocada no buffe r, utilize
campos de ch ave pri mari a na cldusula where comecandc com 0 primeiro campo
de chave primaria e utilizando 0 maximo de seqnsacias de chave primaria que
voce puder. Se 0 pr imei ro campo da chave primaria eseiver ausente na clausula
where (nao ccntando mandt), uma varre dura complete da tabela no buffer sera
execu tada . P o r "exemplo, se a rabe la zt xlfal foi colocada completam en te no
buffer, sel ect * from ztxlfal onde lifnr = ' Vl ' sera supo rt ada pelo Indice
pr imdrio do buffer. Select * from ztxlfal where la ndl '" ' CA' causara uma
varredura complera da tabela no buffer.
Ser in cap az de utilizar in dices se cundarios resulta em um a p ecul iar situa~ao sem safda, se voce utilizar buffer de modo complete em tabelas grandes
que tem indices secundarios. C olo car um a tabela no buffer dessa maneira fad
com que selects no Indice primario acelere, mas possivelrnen re tcrnara selects leDta em in dices secu nda rios . U rna instru~ao selec t em uma tab ela
grande (categoria de tamanho 1 ou maior) que e completamente sup ort ada por
urn indice secundario no ban co de dados pode ser execu tada mais lent arnent e
COntra 0 buffer po'rque urn ind ice secundario nao esta disponivel at. 0 quanto
mais lento (se for mais len to) dependera da quantidade de dados na tab ela. Para
compensar es'se problema, evite 0 buffer e utilize os indices secundarios,
adicionando bypassing buffer para a instrU~ao select onde urn indice
secu ndario deve ser utilizad o.
Por exemplo. a tabela TSTC contem mais de 12.000 linhas, e da categoria
de tamanho 1, e completame nte colo cada no buffer e t ern urn fndic e sec undirio
em seu campo pgmna. As medidas mostram que se1ect * from tstc bypass i ng
buffer where pgmna = I ZTXTEST I executou 18 vezes mais rapido em media que
se1ect * f rom tstc where pgmn a " ZTXTESl I mesmo sea tabe/a. fOT comple-

211

I',
!

...

~~

212

-~

~-

--

OlAs,oOITADlcrJOHARY, PARTE 3

AP REN DA EM 21 DIAS ABA PI4

tamente colocada no buffer. A primeira sel ect foi resolvida n o banco de dados
utilizando urn indice secundario no campo pgmnaj a segu nda executou uma
varredura complera de tabela no buffer.

~o

Sejo muito cuidodoso quondo utilizor bypass de buffer em tc belcs


colcccdos no buffer que tcmbem 500 otcolucdcs. Se voce utilizo em
ume instru~o o sel ect, deve utiliz6lo em todes cs instrv~6es select
peru esse !obela e todes as tobelos relocicncdos dentrode uma vnlco
trcnsccoo. Coso ccn trcdc, voce de feto estero misturondo dodos
cclccodos no buffer e fore dele. Isso pode cousar lncoere ncics dos
dodos em sev progromo e possivelmente no banco de dedas, se seu
programo tombem firer o tu el i zo ~oes .

Resu mo do utili za ~fio de buffe r

seguinte pontos devem ser lembrados em relacao


buffer e indic es:

a tabelas colocadas no

As tabelas colocadas no buffer podem fazer seus programas serem


executadcs mu ito mais rapido. Entretanto, se urilizadas de forma
negligeme, a colocacio no bu ffer pode rer 0 efeit o opos to.
Os buffers esperam na RAM do servidor de aplicativ o, ponanto 0
espaljo no buffer e lim itado. Urna tabela que nao e acessada com
freque ncia nao deve ser cclocada no buffer para conservar especc de
bu ffer e evit ar estouro.
A s tabelas que sao pequ enas (categoria de tamanho 0), acessadas com
fr equen cia e raramente atualizadas devem ser completamenre'colocadas no buffer.
A s tabelas que sao gran des (cate gor ia de ta manho 0) e acessadas com
freq uencia ut ilizam sel ect sing le devem ser colocadas no buffer no
m od o de registro unico.
U rna tab ela onde os regist ros de urn grupo sao acessados juntos devem
utilizar buffer de m aneira gene rica. Urna chave primaria parcial deve
id entificar 0 grupo.
As tabelas que saOatualizadas com frequencia nao devem se r colocadas
no buffer se sua confi guraljao tiver multiplos servidores de aplicativo.
Fazer isso aum enta 0 trifego de rede porque os dados devem ser
recarregados nos buffers nos ou tros servidores de aplicativo toda vez
que eles se alte rarern .
Se a tabela foi co locada no buffer, utilize bypass ; ng buffer para obter
os dados m ais re centes antes de perrnitir que sejam atualizados.

Se possfvel, utilize os campos do Indi ce prim erio em urna chusul a


where nas tabe las colocadas no buffer. Se isso nao for possfvel e a tabela
for grande (caregoria de tamanho 0), adicione bypas sing buff e r e
utilize os campos suportados por urn Indice secundario no banco de
clados.

Resu m o
Urn Indice euma c6pia de colunas especfficas de um a tabela cIassificada
em ordem crescente.

as in dices aceleram as insrru coes select. Urn a instrucao sel ect


sempre deve ser suportada po r urn Indice.

Vo ce pode criar in dices secu ndarios em uma tabela. C rie urn quando
voce nao puder utilizar as campos de urn Indice exisren te em sua
clausula where.

Os campos em uma ch usula wh ere devem se r lisradc s em seu programa


na mesma ordem que apa recem no Indice.

A transacao 5T05 pode ser u tilizad a para m ost rar qual Indice, se algum,
foi utilizado por uma dada insrrucio sel ect.

Configuracoes tecnicas da tabela po dem ser uti lizadas par a ccntrolar


a classe 9.~ dados, categoria de tamanho, tipo de urili zacio de buffer e
se a coaexao esta ativada.
A classe de dados determine em qual tablespace a tabela sera. criada .
As classes mais importances de dados sao APPLO (dados mestres) e
APPLl (d ado s de transacao}.
A catego ria de tam anho determina 0 tamanh o das extensoes inicial e
pr6ximas da tabela e 0 n dmero maxim o de extensces permitido. Isso
deve ser escolhido de m od o que a exren sac inicial seja suficientem enre
grande para arm azenar a tabela in teira. Extensoes secundirias deixa m
o desempe nho de siste ma lento e tornam a reorganizacjo necessaria.
A utiliza~ao de buffer acelera a acesso de dados par fazer cache dos
clados m ais freqUentem ente utiliz ados na RAM no servid or de aplicativo . 0 espaljo de buffer e limitado, entaO as tabelas devem ser
colocadas no buffer prudentemente.

213

I'
i

K_I ... I'" .. I .....


214

APR!"A EM21 DIA, 'ABAP/.

~
IFa~a

----J_

Coloque as compos no c16usula where


no mesmo ord em em que eles aporecem

Nao codifiqce umo 5e' ect que nao sejc

suportada per um fndice.

no fndice.

Seja generoso quando escolher umo


categoric de tomonho.

Nao escolho umc categ o rio de tomonho


que focc umo tabe la exigir umo extenseo
secund6rio.

Utili ze bypcss de buff er quando ler um

registro para ctucluc r de ume tabe lo


cclocodc no buffer.

...-...:-.I_..._......
DIH DDATArncrIDl<ARY, PARTE 3

Teste
1. Po sso especificar em algum lugar 0 Indice exaro se quera utilizar uma
instrucao select?
2. Posso criar indices secundarics em tabelas de SAP au ccloc a-Ios no
buffer ?

3. Posse diz er que meu programa e executado mais rapido com tabelas
colocadas no buffer do que fora dele?

Exe rd cio 1
Q ual e a classe de dados para as tabelas MARA, LFAI e KNA I? Qual
categoria de tamanho para MARA , LFA I e KNA1?

P&R

N so posso exibir algumas telas mencionadas neste livro . Obtenho a m ensagem de erro You" are not authorized to use
t ra nsacti on XXXX. C omo posso vcr essas telas?

o
o

Peca aurorizacao a seu administrador de segurania.

Quando cxiba os buffers de dados utilizando ST02. vejo muitos


outros buffers ai, ta mbem. Para que servem rodos eIes?

05 bu ffers de dados sao apenas dois dos mu itos buffers mantidos no servidor de aplicativo. Os narnetabs (objet os de tempo
de execu ctc de ta bela) sao todos colocados no buffer, assim
como tod os as pro gra m as, men us e (tam bern conhecido como
status e UA au Gill), barras d e ferramentas, relas e calen dsrios.
.
Todos esses buffers sao re lacionados aqui.

Wo rksh op
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A seljao Teste oferece perguntas para ajudar a solidificar seu entendimento do conrecdo ebordedo e a seljao Exerdcio permite que voce pratique a
que aprende u. Voce pode encontrar as respostas as perguctas do quesriomrio
e aos exercfcios no Apen dice B, "Respos tas as perguntas e aos exercfcios".

ea

~ -y

215

6
o Data Didionary, Parte 4
Objetivos do-capitulo
Depois de completer este capitulo, voce devers ser capaz de:

Exibir e comparar versees revisadas e ativas de objetos DDIC


Usar 0 utilitdrio de banco de dados para executar verificacoes de
coerencia, exibir informacoes de tabela especlficas de banco de dados
e eriar e reeriar tabelas no banco de c1ados

Hist6rico auto m6tico de tabela e documentos


alterados

iD"
M
O
IH.

As cherccees de dodos dentro de umo tobelo poclem ser outomoticamente


registrodos. Esse re gistro (log) outom6tico de o ltera~6es e chomodo hist6rico
Qutom6tico de fobela. Pore otivar 0 Jog, marq ue a ccixe de seleo log Dota Changes
no tela Technical Settings (veia a Figure 5.4) . Se clnd c n60 fiver feito issa, 0 consultor de
Basis tombem deve especfflccr o (s) numera ls) do di ente pelo qua l 0 log e ossumido no
por6metro de perfil de sistema rec/ eli ent .

Perc exibir 0 co nfiguroQio rec/cl t ent em seu slstemc, si90 0 prccedimento utilizodo pora exlblr rdi sp/bufreftime no se~co lntitulcdo

"Slncronuc ccc de buffer- no Dio S.

'nttp;II_.compVJ.CQm.br

...... I

-114.............- .- .. I

218

Pore coda jnse~o o, otua l izo~o o ou exd usOo de umo tcbelc ctivcdc pora

hist6rico outom 6tico de tobelc, um registro e criodo no tobe la dbt abprt.

Coda

DELse a registro foi exclufdo .

U tilizand o 0 c6digo de tran sacao SCU3 ou OY1S (veja a Figura 6.1), voce
pode exibir as documen tos alrerados e cornpara-los com as valo res atu ais na
rabela. Nso hi nenhuma difere n~a ent re esses dais codigos de transa?o; ambos
execu tam 0 mesmo program a.

com hist6rico

de tohelo

otivodo.

;.

A partir da tela Ta ble H istory as seguin tes funljoes:

C hoose Function, voc e p e de execurar

P ara exibir os documentos altera dos de dia atual , escolha 0 bo n o de


op~ao Change Docs: Daily Analysis e press icne 0 batao List. Uma
Iista e exibida contendo todas as alteracoes do dia atu al.

Para pesquisar docum entc s alterados po r intervale de dat a eu no me


de tabela, escolha C han ge D ocs: ba tao de apljao Selective e pr ession e
o borao List . A tela An alysis of Table Log Database e exibida. Digire
seu criterio de pes quisa e pressione 0 batao Execute. Uma lisea de
docum ent os alrerados para 0 criteric especificado e exibida. Na parte
sup erio r da lista esta urn resume das informacoes sabre a list a, depois

_~

219

Para exibira lists de tabelas pela qual 0 hist6rico autom dricc emantido,
escolha 0 batao de op~o Tables With H istory Mana gement e pressione 0 bono List . Essa lista most ra todas as tabel as que tSm uma
marca de seleljao na caixa de selecao Log Data Changes.

P ara campa rar valc res de campo em documentos alteradcs com valores atuais de campo em uma tab ela, escolha 0 batao de 0pljio History
<-> Curre nt e pressione 0 bo uo Compare. A tela Table H istory e
exibida. Insira. 0 criteria de pesquisa para. os documentos alterados e
pressione 0 bone Compare. A tela Table History - Comparison
Wi th Current State eexibida. A chave primdria de cada registro apar ece
a esqu er~ e as diferec cas aparece m adir eita (veja a Figura 6.4).

documentos
eltercdos de Iobelas
elJ1omatico

Para exibir 0 mime ro total de documentcs alte rados na tabela


dbtebpr-t, pressione a bo n o Total N o. D ocu ments na barn de ferra mentas Application.

.!!ix!
.........
.,..

F igu ra 6 1

P ara exibir um a comagem do mi mero de documentos alterados que


exine para urn dad o int ervale de da ta ou intervale de tabela , pression e
cs bo no No.of Docs. (Select) .

reg istro e chomodo documenfo a /terado. Codo documento oltercdc ccnte m a da ta e a


he re do a lterCl;a o, a userid do usucrio que fez a clterccco, 0 c6digo do transac;oo e 0
nome do progroma utilizodo poro fazer a olteroo, e 0 tipo de c lterecoc executodo. 0
tipo de olte rm;60 sera I NS se 0 registro foi inserido, UPD se 0 reg istro foi ctcclhcdc ou

A tronSCI~60 Tehle
History eJCibe

]I

uma seljao Notes e depois a analise . Para cada tabe la, os campos dela
sao exibidos prim eiro (veja a Figura 6.2) e os documen tcs alterados
para ela se seguem (veja a Fi gura 6.3).

Docu mentos olterados


M
OYO til...

...... ..

D~""DATlDlrnoNARY, PAR1H

AP RENDA EM 21 DIAS ABAP I'

TUllO'"

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

Sa bendo quando utilizar bist6rico autom6tico de tabel a

o histcricc automatico de tabe la deve ser ut ilizado em tabelas qu e con tern


informacoes imponantfssimas e quando ada altera~o deve ser mcnitorada
sem [alha, independentemente da arualizacfo do p rograma utilizado. Infelizmente, arualizacoes para tabela sao lentas, porque urn registro e escri to pa ra
dbtabprt para cada registro alte rado. N a rnaioria dos casas, quando 0 hist6rico
da tabela e necessario, Change D ocum ent Objects oferece uma alternativa
eficienre e mais rapida e portanto seria utilizado no lugar. Para mais infor -

m' c;6es sobre Change Document Objects, veja a R/3 Library (caminho de
men u Help->Rl3 Library, Basis Components, ABAP/4 D evelopment Workbench, Extended Applicatipns Function Library, Change D ocum en ts.}

~o
F igura 6 4

)qui. cs dodos em
dbt abpr t sOo
comporodos cos
conteudos otuois de

coda reg isll'o.

Se c chave prim6ria de sua ta bela for maior que 86 bytes

au se

restante da Iinha for meier que 500 bytes, voce n6c pede utilizar
htstoricc cutcmotlcc de tobelc . Voce receber6 um erro quan do tenter
ctlvcr a tobe lo e cherccces n60 senSo registrodos. A rozeo dessa s
restrir;5es est6 no tabelo dbtabprt . 0 compo vkey ccotem a teclc do
registro que foi olterodo e tem 86 bytes de comprimento. 0 campo
vdata contem 0 reslonte do reg istro e tem 500 bytes de com primento .

Resu mi nd o as configurac;6es tecnicas


o que se segue res ume as ccafiguracoes tecnicas para a bufferiza~oJ exeeesoes
de tabela e 0 log automatico de informacoes arualizadas:

A dasse de dados determine 0 tab lespace em que uma tabel a 6 criada.


o administrador de banco de clados utiliza tablespaces para organizar
e manter 0 banco de dado s. Escolher 0 tablespace adequado torna a
administrac ao de banco de dados mais facil, aumenta 0 desempenho
de sistema e ate, em certa medida, aumenta a disponibilidade do
sistema, perque 0 banco de clados ~ n ormalment e colocado em estad o
offlin e para reorganizacoes.
0 tamanho da extensao inicial e
exte nsoes proxim as, assim como 0 numero de poss iveis ext ens6es
proximas. Escolher urn numero muito baixo fara urna ou mai s extens5es adic ionais .s erem alocadas. VID a eabela que envolve varias
exteosoes diminui 0 desempen h o do siste ma, aumenr a a
manutencfo do banco de dadcs e reduz a disponi bilidade de sistema,
novamente porque 0 banco de dados normalrnente 6 colocado em
estado offline para reorg anizace es.

A cat egoria de tam anho determina

A chave primdria aparece ern rurquesa c a metade esquerda cia tela. A


metade direita esta dividida em valores aruais e valores de hist6rico. As linhas
acinzentadas indicam que exist e um a diferenca. Para exibir 0 significado dos
ccdigcs na coluna mais a esquerda, cclcque 0 cursor aI e pressione FI. Esse
relarorio mostra que quatro registros existe m na tab ela EKPA mas 'nenhum
hiscorico de regist ros existe para des.

A bu fferizacao aumenta 0 desempeahc do sistema [azendo 0 cache de


dados Iocalment e no servidor de aplicativo. Quando feito adequada-

'.

w w W'

222 , AfUNDA

ww w w w

W W T'Ir T T

EM 21 DIAS ABAP/4

W'

01' 6, 0D'T' DICTI~ARY, PAR1H I

mente, menos acessosde banco de dados sao exigidos,porque as dados

3. Para ver urn resume das alceracoes, pressione a ba tao D elta display
na barra de ferramentas Application. A lista e atualizada para conter
apenas as diferencas entre as duas vers6es.

mais frequentemente lidos sao armazenados na RAM DO servidor de


aplicativo. Bons candidates para bufferizacao sao tabelas que raramente sao atualizadas e frequentemente lidas.
Ativar 0 log automatico do recurso em uma tab ela fara. com que urn
documento alterado seja criado coda vez que tabela e aleerada. Esse

recurso diminui as arualizacoesde tabela e portanto eutilizado apenas


para tabelasque content dados vitais.Nas tabelas nao vitais, devem ser
utilizados objetos de docurnento alterado.

Figurg 6

Qu end o Limo tooele


eve /em Lime versec

revisodo e exibido.
voc~ ~ 0

versec

revisodo por podr6o .

Yers6es ativas e revjsadas


NOVO...

Podem existirduos versoes de uma tabela (au qua lquer objeto OD!C): a verscc
revisoda e 0 versec alivo. Se voce altere umo tcbelc e pressiona a bctec Save
sem pressloncrAcfivcte, criou uma verseo revisodo dotobelo que ccntem suas clterocces.
A versdc otlvc ainda existe; a ultima verseo que foi ativada. Progromas em ABAP/4
utllfzc m openos versees otivas. A presence de vers6es revisodos nee as ofeto.

YERMO"

A versao revisada existe para permitir que voce prepare urna alteracao
antes de e1a ser necessaria e eneac a ativa quando for necessaria. Tambem
permite que voce altere muitos objetos e enesc as ativa todos simultaneamente.
Quando voce os ativa, as vers6es atualmente ativas sao descartadas e suas
versees revisadas toma-se ativas e as substituem.
A versao revisada e exibida, se e1a existir, quando voce exibe uma tabela
(0 campo Status conterf Rev;sed). A barra de ferram entas Application tera urn
botao Active Version (veja a Figura 6.5) . Se voce 0 pressiona, a versao ativa
sera exibida e a botao na barra de ferramentas mudara para a versio revisada,
permitindo que voce pressione 0 botao novamente e retome para a exibicso
anterior.
SmEHtlM~ lnicie a ScreenCam "How to Compare Revisedand Active Versions" agora.
Pa~a comparar as vers6es ativas e revisada.s:

1. De tela Dictionary: Table/Structure: Display Fields, escolha

Vers6es adicionais
Independenternente das vers6es revisadas e ativas, voce tamb em pode criar
versoes temporaries de uma tabela. Para fazer isso, escolha 0 caminho de menu
Table->Generate version. A mensagem Temporary verst on of act ; ve object
stored. aparece na. parte inferior da janela, Essa versso temporiria e mantida
ate que a tabela seja transportada para a prcducao. Para visualizar a nova versao,
escclha 0 caminho de menu Ueilities->Version Management . A versac com 0
na m ero mais alto e a primeira que voce criou.

Descartando umg versOo revisada


0

caminho de menu Utilieies->V ersion management. A tela Versions


of Object e exibida. A primeira linha contem a palavra mod .. Esse e a
versac revisada. A proxima linha contem act . . Essa e a versao ativa.
2. Para comparar as duas versoes, falia uma marca de selecac nas duas e
pressione 0 bono Compare. A tela Version Comparison for Tables
eexibida. As liohas alteradas sao indicadas na margem direita. <- only
ecttv significa que a linh a somente existe na. versao ativa. <- only
modi f significa que a linha apenas existe na versac revisada.

Para descartar uma versao revisada sem ativa-la, voce deve primeiro gerar um a
versac tempordria da versao ativa e entio restaura-Ia, como mostrado no
seguinte procedimento.
SCifENOM~ lnicie a ScreenCam "How to Discord a Revised Version" a gora.

Para descartar uma versao revisada e restaurar a versao ativa:

W'

223

"1J

~I
224

WWWWWW_

-- -

' PREND' EM21 01" ,", PI'

OIA 6:0DATA D1mOMARY,PAiTE"

1. Da te", Dictionary: Table/Structure: Change Fields, escolha 0 caminho


de menu Tebl e- c-Generaee Version. Uma caixa de dia.logo aparece

Usond o

contendo a men sagem Version of act ive object stored.

IOU .

2. Pressione 0 botao Continue. Voce elevado de volta it. tela Di ctionary:


Table/Structure: Change Fields e a mensagem Temporary versi on of
activat e object stored e exibida na parte inferior cia janela.
3. Escolha 0 caminho de menu Utilities- > Version management. A tela
V ersions Of O bject e exibida. H aven uma marca de sele ~io ao lado
da palavra act . .
4. Remova ~ marca de se1e~o do lado cia palavra act ..
5. Coloqu e uma marca de sele~ao embaix o de Version (s) In The Version

lERMO ,.
dodos.

I
I

I
i

utilitaric de banco de dados:

2. Digice urn nome de tabela no campo Object Name.


3. Pression e 0 bctao Display.
4. Selecione 0 caminho de menu U tili ties- c-D atabase Utility. A tela
ABAP/ 4 D ictionary: U tiliry for D ataba se Tables ~ exibida, como
mcstrado na Figura 6.6.
Figura 6 6

8. Para verificar se a versao revisada coincide com a versac ariva, coloque

Todos'os objetosDD IC, como domini os e elemencos de dados, possuem


versoes revisadas e ativas. Todas elas podem ser exibidas e comp aradas da
mesma maneira. Os objetcs podem ucilizar versoes apenas ativas. Por exemplo,
se voce modifies urn domini o e cria uma versso revisada, elementos de dados
que a utilizarn continuam a utilizar a versao ativaate que voce ative 0 dominio.

1. Comece na D ictionary: Initial Screen.

7. Pressione a ba tao Yes. Voce ~ levadc de volta a tela Version s O f


Object e a mensagem Restored ver sion must be acti vatedl aparece
na pane inferior de janela. H averf uma marca de selecac 010 lade cia
palavra act .. A ver sao revisada ~ agora a mesma que a do botao Active.

ScreenCom "How to Access the Dctcbcse Utility- agora.

Para acessar

6. P ression e 0 batao Retrieve na barra de ferramentas Application. VIDa


caixa de dialogo aparece coneendo a mensagem vers i on nnnnn is now
new revi sed (nonactive) version . Proceed?

Dentro do ODIC extste umo ferromento de utilit6rio de bc ncc de dodos .


Utilizondo-o, voce ped e exa minor e modifieor tobelas no nivel de ba nco de

S(mNW ~ lnlcle a

Database: line beside the highest version number.

uma marca de selelji o ao lado d.a palavra mod .. As duas linhas act . e
mod . agora esta.rio com uma marca de sele~ao.
9. Pressione a ba tao Comp are na barn de ferramentas Application . A
tela C omparison For Tables e exibida.
10. Pressione 0 batao D elta D isplay na barn de ferramentas Application.
A Iista deve ce nter uma linha que exibe 0 text o Genera1 attri butes :
Unchang ed e ourra Iinha que exibe 0 textc Fi el ds : Uncha nged. Voce
agora confirmou que as vers6es revisada e ativa coincidem.
11. Pressione 0 borac Back n.a barra de ferramentas Standard. Voce e
levado de volta a. tela Versions of Object:
12. Pressione 0 batao Back na barn de [erramentas Stand ard. Voce e
levado de volta atela Dictionary: Table/ Structu re: Change Fields.
13. Pressione 0 bou o Activate na barn de ferramentas Application. 0
campo Status con tem Act. e a mensagemxxxxx wa s acti vat ed aparece
na parte inferior da janela.

utjlitCirio de banco de d o d os

Utilizondo 0 tela
A8AP/4 Dictionary:
Utility for Database
Tobles,
voce pOOe se
comun;cor
diretomerrtecom
o banco de cJodos
pe ra exihir au alteror

umolobe/a.

D aqui voce pode:


Verificar a coerencia das definicoes de DDIC de R/ 3 em rela~o ao
banco de dad os.
Visualizar 0 log de ativa<;ao para ver as instru~6es de SQL reais
enviadas ac banco de dados:
Exibir e modificar a s parimetros de armazenamento do banco de
dados .

225

.. -226

DIA6:0DATADICTlONARY,PARTE 4 I

'PREHD' EM 21 DIAS "'Pi<

Excluir urna tabela excIuindo-a temporariamente no banco de dados,


ou esvazia-la excluindo-a e recriando-a no banco de dados.

NOYO....

iEUlO"

Figura 6 7

Umo veriDcoode
coer!ncio com 0

banco de dodos
confirmo que 0
dennio DOIC R/3
do tobelo ztxl f al
e 0 definit;60 do

bancode dodos s60


identicos.

de R/3 e, sob certcs aspectos, como

um progra mo trodidonol. Elo

formul6rio campi/odo que e utilizodo em tempo de execucec , cho modo obieto de tempo
de execur;60 . 0 cbietc de tempo de execUl;60 e criado qua ndo voce ct ivc a tobelc e
tombem e conhecido como nornetob.

Ve ri fi co (;6e s de coerencio
A definicao de uma tabela trans parente existe em dois lugares: no diciomrio
de dados de R/3 e no banco de dados. Para verificar a coerencia entre os dcis ,
a partir de dent ro do utilitario de banco de dados escolha 0 caminho de menu
Extras-> Da tabase Object->Check. A versac ativa da tabela ecomparada com
a tabela de banco de dados. A tela Table xxxxx: Check Database Object ,era
exibida, e uma mensagem na parte superior da lista indicant se 0 objero de banco
de dados e coerente (veja a Figura 6.7) .

Umo tabela

exlste em dois fcrrnulerics : na "fonfe" que vocA pode exibir e mcdificcr e no

Quando urna verifica(f3.o de coerencia e executada, 0 nametab e com parade com 0 banco de dados .
Voce pode exibir 0 nametab do utilitario de baccc de dados escolhendc
o caminho de menu Extras-> Runtime object-> Displa y. A tela O bject xxxxx:
Display Active Runtime Object eexibida (veja a Figura 6.8) . Na parte superior
esta 0 selo de tempo do camerab seguido pelas informacoes de cabecalho. Ele
con tem 0 tipo de tabela (T para transparence], a forma da tabda no banco de
dados [n ovam en te, T para rransparente), 0 ndmero de campos na tabela, 0
comprimento em bytes do regisrro, 0 namero de campos chave, 0 comprimenta dos campos chave em bytes , as informacoes de bufferizaclc etc. (Para
informacoes detalhadas sabre os campos de cabecalho e seus valores, exiha a
estrutura X030L.) Embaixo do cabecalbc esd. uma lista dos campos, sua posilj3.o
na tabela, 0 tipo de dado , 0 comprimento, a namerc de casas decimais, 0
deslocamento desde 0 infcio do registro, 0 comprimento exeem c cia tabela de
refereacia, a tabela de verificaljao etc. Os atributos recnicos cia rabela sao
completamente descritos pelo nametab.
FlliJurQ 6 8

O nometob ~ 0
objeto de tempo de
e:cecuo pora umo

lobe/a. E/e cantem


todasos
caroderisticos
hkn icos do tobelo

comonamesde
compo. Hpos de

dodose

As incoerencias podem surgir se:

compri~ntos.

A defini(faoda tabela foi alteradano nfvel de banco de dados. Isso pode


acontece r se alguem manualmente alterar a definicao de banco de
dados ou se um programa em ABAP/4 alrerd-la utilizando ccdigc SQL
native .

a banco de dado, for danificado.


Voce pede fazer urna verificacao de coerencia se, quando testar urn
programs, obdver urn erro de SQL incomum ou obtiver resultados incorretcs
de urn c6digo que deveria func ionar bern mas, inexplicavelmente, nao funciona.
Encontrar urna incoerencia indica que a origem do problema pode estar fora
de seu programa.

o popel do nametab nos programas em ABAP/4


Como aprendeu no Dia 2, quando voce cria urn programa em ABAP/4 que
seleciona dados de uma tabela, voce deve codificar uma instI1Jljao tables. A
insrrucao tables torna a estrutura da tabela conhec ida para 0 programa.

227

-~
228

w._--- -

APIENDA EM 21 DIU ABAPI4

Entretanto, quando voce,gera 0 obieto de temp o de execucjo para 0 programa,


a defini~o da tabela nao esti incorporada a ele. Em vez disso, quando 0 objetc
de tempo de execucic do p rograma e executado, ele faz uma ch ama da para a
narnetab a fim de determinar a estrurura em tempo de execucio da tabela. Isso
permi te que voce altere uma tabela (ou estrut ura) sem ter de gerar novam ent e
todos as progranw: em AIJAP / 4 que a utilizam. Eles detenninam dinamicamente
as caracterfsticas da tabela em tempo de execuc j o chamando a nametah.
Embers voce DaO tenha de gerar novamente to dos as program as sempre
que um a altera~ao far feita ern uma tabel a, certas alteracoes (como renomear
ou excluir urn campo) exigirjo qu e voce fa~a altera~6es no c6d.igo do ABAP / 4.
N esses casas, voce pre cisarf ene ontrar to dos as programas que a utili zam.
S(REOlCAM~ inicie a ScreenCam "How to Perform ~ Where-Used List on a Toble" cqcro.

Para localizar todos a s progr arnas que utiliz arn uma da da ta bela:

DIHOIlAU DIGIOORY,PARTH

Extras- >Runtime O bject->Check. 0 objeto de tempo de execucgo e camparado aos objetcs [onte de DDIC. A tela Object xxxxx: Check Active .
Runtime Obje ct sera exibidaeuma mensagem na parte superior da Iisraindicard
se 0 objeto de banco de dados e co erenre. A s Figuras 6.9 e 6.10 mostram urn
exemplo de uma incoe rencia no narnetab para a tabela zt xl fal.
Se urn dominic for alcerado e a reativacf o cia tah ela falhar, uma incoerencia
pode exisrir entre 0 nametab e 0 dominic.
.

No caso cia Figura 6.10, a verificacac descobriu que


campo 1i fn r

3. Pressione 0 bctac Where-Used List na barn de ferramen tas Appli'.


cation. Uma caixa de dialogo Wh ere-Used List apar eee.
. 4. Escolha a botao de opere Programs .
5. Pressioneo botao' Continue. A tela Table xxxxx in P rogra ms ~
exibida. Uma lists de todos a s programas que utilizam a tabel a
apareee.
6. D e urn clique duplo em urn nome de program s para exih ir todas as
linhas de c6di go em qu e a tab ela e utilizada .
7. De.um clique duple em uma linha p ara exibir a c6d.igo que inicia dessa

linh..
Verifica ndo a coerenci o do nametab

o nam et ab obrem suas caract erfsticas dos elemen tos de dados e dominios que
compoem a tabela. :E po ssrvel que a defini~o do n ametab esteja fora de
sincronizacio com os elementos de dados e dominios. Por exemplo, quand o
voce ariva uma altera~ao em urn dominic, as rabelas que 0 contem tambem
devem ser reativadas para receber essas altera~oe s . Embora isso acont eca
autom aricamente,'em certas situa~6es uma reativa~ao pe de falh ar po r causa de
urna restri~ao do banco de dados au porque a tab ela conrem dados e deve ser
cc nverti da. Essa situa!jao p ede ser detectada executando uma verificat;ao de
co erencia no ob jeto de tempo de execucgo.
Para veriflcar coerencia en tre a narnetab e as objetos D ata Dictionary, a
partir de dentro do utilitario de banco de dados escolha 0 caminho de menu

echar

tipo de dado de

10 no nametab e i nt 4 no domfuio.

Os programasem ABAP/ 4 utilizam apenas 0 aametab. Portanto, des cae


saberac sobre as incoerencias e assim njio sio afetad cs por elas no sistema
Develo pment. T ran sportar as oh jetos de DDIC antes de corrigir as inccerencias p ode cau sar probl emas durante a imporraci o para Q/ A ou para a producac
ou mesmo fazer com que pr ogr amas em AJiAP/ 4 nesses ambientes produzam
resul tados incorretos. A raz ao disso reside no fato de que as alteracoes nao
afetaram os pro gram as em ABAP/ 4 e, portan to, ainda nao for am testadas .

1. Comece na Dictionary : Initial Screen.


2. Di gite a no me da tabel a no camp o Object Name.

Fig u r a 6 9

Nestatela, umo
de
indica
umomensogem de

lIerifiCIJlj6 0
coe~ncio

~rro ~m que 0
compritrn!!nto d~

r~gjstro,

comprim~nto

do

<hove. 0
olinhomenlo do
tobelo s6 0
inroerentes.

229

230

"""1"0-

APR EN DA EM 21 DIAS ABAPI'

DIU DDATAD1cnDlIARY, PAJ<l"

Figura 6 1 0

FiGura 6 12

Rolor porabaixo no
llsto mostraos
campos do nomelob
eo raz60 do

Este li 0 restonte do
log de affva~60

mostrodo na
Figufa 6.1J.

ineoerendo .

II
I
!
Exibindo

log de otiva!foo

A partir do utilieario de banco de dados, voce pode exibir 0 log de ativa/iao


pressionando 0 boeio Object Log na barrade ferramentas Application. Esse
lo g som ente e gerado se a ativa~ao fizer 0 c6digo SQL ser gerado. (Em alguns
casas, uma a lteracao de tabela pode ser ativada sem afetar 0 banco de dados,
por exemplo, uma alteracac para. 0 texto curto.) 0 log contem a sequencia de
passos realizada e todas as instrucoes de SQL enviadas ao banco de dados
durant e a ultima ativa/iao (veja as Figuras 6.11 e 6.12).
F ig ura 6 11

o Jog de oHvoo
exibe

0 seq ~n cio

de possos reolizodos .
durante 0 otivo ~ao e

o e6digo SQL que


foj gerado. Esse log
mostro que durante
o olivoo, 0 tohe/o
fai exc:lufdo
temporariomente no
bonco de dodos e

reer/odo .

Para exibir asinformacoes em detalhe que descrevem qualquer mensagem


no log, posicione 0 cursor na mensagem e pre ssione a reels F I.

Exibindo e modificando pa ram etros de o rmazen a me nto


Pressiona r 0 boteo Storage Parameters de dentro do ueilitario de ban co de
dados (veja a Figura 6.1) exibe a tela DB Utility: Transparent Tables D atabase Parameters. A Figura 6.13 mostra como essa tela se,parece quando
urn banco de dados Oracle e inscalado. Essa tela se presta princip almente it
utilizacio pelo DBA para alterar os parametres de armazenamentc de dentro
de R/3 depois que uma tabela foi ativada. Ela e apresenta da aqui para tornar a
discussao complete.
Informacoes especfficas de banco de dados sobre os parametres de
armazenamento da tabela sao exibidas aqui. A coluna Src indica a fonte dos
valores. DBS significa que esses sao os valores reais no banco de dados. eMP
significa que esses valores sao compurado s a partir da caregoria de tamanho e
a partir das classe de dados. A linha USR permite que voce defina os valores de
Next E, MaxE, Pf e Pu e os aplique imediatamente pr essionando a bono Apply
Parameters Next E, MaxE, Pf e Pu Inmedt atel y. Na maioria das vezes, as linhas
DBS e eMP serge as mesmas, a menos que os parametres de armazenamento para
a tabela de banco de dadcs forem alterados manualmente depois que, a tabela
tiver sido ativada.

231

TII
232 ,p",o, EM21
F jgura 6

......-.-~

.............. -w w'W

...........

~ ---.-..

233

OlA 6; 0 DATA DlcnotWY,PAm"

OI'S Ai'P /4

caixa de di:ilogo sen exibida para confi rmar sua solieita~o. A nbela e seu

'3

Pcrdm~tros

coneeodo serac excluidos do banco de dadcs. Paracrid-lo novamente, pressione

espedhco s de banco
de dodos sOO
mostrodos no tela
DB Utility:
Transparent Tobles

o borac Create D at abase T able. A tabela sera recriada para util izar sua versa c
ativa. Vo ce pede utilizar 0 utilitdrio de banco de dados para fazer isso em vez
de escrever urn programa em ABAP/4 para excluir todas as linhas.

- Database
Porameters. Essa
h!1c mostrc que cs

Excluirtempororiomente umo tcbelofez com que todos as dodos dentro


de la sejcm permonen temente perd idos. E umo boo ideio fcaer umo
c6 pia de bock.up do tobelo a ntes de exd uf-Io. Se voce copier 0 tcbelc
monua lmente, le mbre -se de copier to nto 0 definil;oo do tobelo co mo
a s dodos.

poro metros de
orm ozenomenlo

pore

tobe/o

. ztx lfal

{oram

oherodos depois do
OMo, porq ue as

/inhos OBS e eM?

Se 0 ta belo fiver mais de umo extensoo, exd uir temporariomente e


reeder umo tobe lo e a moneira mois rcprdce f6cil de reorganiz6-lo.
Voc~ precisorO sa lvor a s dodos em outro tabela tempor oriamente antes
de exdui-Io e depo is co pi6-lo de volta.

nee coincidem.

Resum o

As colunas InitExt e NextExt con rem os tamanhos (em blocos) das


exeecsees inicial e p ro xima. A s co lunas HinE e Max Econtem 0 nd m ero minima

As alteracoes para dados crfticos podem ser aut cmaticamente registradas em do cumencos alteradcs. Para dad os nao vitais, obje ros de
documentc alreradc devem ser urilizados no Iugar.

e maximo dasext ensoes permiridas. 0 nome de reblespacevern depois, seguido


pew cc lunas FGe i r, que ccntem 0 ndmero de gropes de list a livre e 0 mimero
de listalivre em urn grup o. (Essas duas colunas sao apenas utili zadas se 0 Oracle

Uma versso revisada de uma tabela e criada quand o voce a modifica


sem ativa-la. Somence a versac ativa de urn cbietc pede ser utilizada.

estiver sen dc utiliza do no modo de pr ocessamento paralelc.) As co lunas Pf e


Pu contem a po rcentagem de espa~o livre e a porcentagem de especc utilizado
nos blocos dedados.Para maisinformacoes sabre qualqueruma dessas colunas,
pos icione 0 cursor nela e pre ssione Fl.
Em b ora os unicos p ardme tr os que podem ser alterados sej am NextExt,
Hax E, Pf e Pu, voce deve preencher completamente a linha antes de pres sionar
o botao Apply. Por exemplo, para alrerar 0 tamanho cia proxima extensdo para
64 e configurar 0 numeromaxim o de ext ensoes como 4, priin eiro selecione 0
bo tao de op~o USR. D epois di gite 64 na co luna NextExt, digit e 4 na coluna
"axE, copie 0 restc dos valores da linha OBS e enrac pressione 0 batao Apply.
Suas alteracoes sao imediatamente aplicadas ao banco de dados quando
voce pressiona 0 borso Apply. Par a visualizar as resultados, pre ssion e 0 batao
Back a fim de retomar atela ABAP/4 D ictionary : U tility for Database T ables
e entao pression e 0 botao Sto rage Parameters na barra de ferram.ent<lS Application. A linha que t~m DBS na coJuna Sr c conted. as valores atu aliu dos.

Usando 0 urilitaric de banco de dados , voc~ pod e examina r a name tab


e comparar sua coerencia com 6 D ata Dictionary e com 0 banco de

dados.
0 u tili tario de banco de clados tambem permire que voce visualize

P&R

o
o

Excluindo e recriando as tabelas nO bo nco de dodos


A maneira mais nipida de excluir os dados de uma labe la eexclui-Ia temporariamente (drop ) e entao reeria-Ia. Para fazer !sso com urna tab ela, a partir do
utilid.rio de ban co de dados pression e 0 batao De lete Database Table. Urna

log de ativa~ao para uma rabela, os pardmetros de armazenamento e


drope e recrie uma tabela no banco de dados.

Onde urn DBA in a alterar 0 pacam etro de armazen am en to de


u ma tabela ativada de den tro do sistema de SAP R/3?
V a para 0 utilitirio de banco de dados e p ressione
Storage Pa rameters.

bo tao

234

APRENDA EM21 DIAl ABAP/'

Workshop

Workshop ofer ece dua s maneiras de voce verificar 0 que aprendeu neste
capfrulo . A se~o T este oferece perguntas para ajudar a solidificar seu entendimenta do conte udo abordado e a se~ao Exercfcio permite que voce pratique 0
que aprendeu. Voce pode encontrar as respostas as perguntas do teste e ao
exercfcios no Apsndice B, "Respostas as perguntas e aos exercfcios" .

Teste
1.

E possfvel

que a defini<;ao cia tabela e do s elemento s de dadcs e


domfnios passaro estar fora de sincronizacac ?

Exerdcios 1
1. Qual e a maneira mais rapida de excluir as dado s de uma tabel a?

1.1a 7
Definindo dados no ABAP/ 4,
Parte 1
Q bjetjvos docapftulo
Depois de completer este capitulo, voce devers sec capaz de
Explic ar a area de rolagem do programa e seu conteudo.
Entender as elementos de sintaxe do ABAP/ 4.
Descrever

conceito de ob jeeos de dedos e sua visibilidade .

U tilizar os literais e entender como codificar cada tipo .


D efinir e utilizar

as constantes.

Utilizar a insrrucfo data para definir varidveis e strings de campo .


Encender tipo s de dados do ABAP/ 4 e ser capaz de iden tificar
caractere e os tipo s de dados numericos.

Entender a definicac do ABAP/4 de ripos de dados comuns de D DIC .


Antes de prosseguir, volte 010 Dia 2 e dedique alguns minutes para reler
a analise da sec;ao "En tendendc a sintaxe de codigo" agora.

http://www.ccrrpus.com.br

r I I I I I I I -IT I T I I I I I I
236

I III

I .- I ........ ..-

w w w

D~]'oEFIHIHDOOAOOSHOABAP I4,PAR1I1

I APR ENO" . 21 OIAS ABAPI4

o buffer de programa e a area de

ro lagem

O s programas sao colocados no buffer no servidor de aplicativo em urn buffer


de programa. Quando urn usuari o faz uma solicitacl o para executar urn program a, um a pesquisa efeita no buffer de pr ograma para ele. Se ele fo r localizado
e se tiver sido modificado no banc o de dados, a c6pia colocada no buffer sera
utiliz ada. Caso contrario, a u se a cop ia no banco de da dos for rnais nova, 0
programa e recarregado .
U rna c6pia separada d o programa DaO efeit a na mem6ria pa ra cada usua rio
que a execut a. Em vez disso, to dos as usuaries execut arn a mesma c6pia do
pro grama. 0 fator de diferenciacso e uma alocacf o de memoria separada
chamada area de rolagem. Uma area de ro lagem e alocada po r execucac de
usuario p orprograrna. 0 sist em a utilizaa areade rol agem para armazenar to das
as informacoes sobre a execucao atu al do p rogram a e todas as alocacoes de
memoria. Todas as informacoes , como as variaveis e seus valo res, 0 po nteiro
at ual do programa e a safda de Iista, sao manti das na area de ro lagem. P or
exemplo, suponha que urn usudrio executa urn pr ograma e uma area de rol agem
ealocada. Se, sem esperar ele term inar, 0 usuario mu da para ou tra sessao e inicia
o m esmc programa novamente, ou t ra area de rolagem ealocada pa ra a segunda
execucao desse programs. 0 usuario tern d uas areas de rolagen s, uma para cada
execucao do programa. Se 0 usuario em vez disso tivesse executado urn
programa diferente, ele aind a teria duas areas de rolageos, um a para cada
programa.

Elementos de sintaxe do ABAP/4


Coda programa do ABAP/4 e compa sta de uma ou mois instrut;oes. Coda
YERMO" instruo contem uma vcri edcde de polavras seporodos por pelo menas um
esp cc c . A primeira pclovro de uma lnstruccc IS a pclovrc-chcve. Umo instrut;oo pode
indui r uma a u mais odit;oes e se mpre termina ca m urn ponte.

NOYO....

N a Listagem 7.1, as p alavras-chave sao select, wr i te e endse lect. D ua s


adic;5es aparecem na instruclo select : where e order by. Tudo 0 que norm alm ente e chamado de cltiusula em outras lingu agens e chama do de adifao no
ABAP/4: ou seja, e qualquer palavra ou grope de pa lavra.s depois de palavrachave que modificam 0 comp ort ame nto da insrrucao.

EKTRADA~ Lislogem 7.1 1I", lro, 50 do sinlox. be,i co do ABAP/4


1 sel ect from zt xlfal where l1fn r > ' 0000001050' order by l ifnr .
2 write : \ ztxlfal- lifnr, ztxlfal - namel, ztx lfal-landl.
3 endse1eet.

237

Uma instrucao pode comecar em qualquer coluna e pode girar qualquer


mimero de linhas. Para continuar uma instrucao em outre linha, quebre a
instrucio entre quaisquer duas palavras. U rn caract ere de continuacac nao e
necessario. P or exemplo, 0 c6dig o na Listagern 7.1 pede ser refo rmatado como
moseredo na Listagem 7.2.

ENTRADA.... Listagem 7.2 Este c6d igo e 0 mesmo do Ustogern 7.1, ele apenos foi
,. forrnatodo de maneiro diferente
1 sef ect " from zt xl fa l
2 where 1i f nr > I OO~OOO IO SO'
3 order by lifnr.
4 wri t e : \ ztxlfal-l 1fnr,
5
ztx lfal-namel,
6
ztxlfal -1andl. endsel ect.

c6digo do ABA P/4 nao faz disdncso ent re maiusculas e minusculas.

Definindo objetos de dodos


KOYO.....
TERMO"

Os ob;etos de dodos sao posit;oes de mem6ria que voce utilizopa ra ormozenor


dad os enquo nto 0 programo est6 sendo exec~tado. H6 dais t~pos de .~biet~s
de dodos : mcdlfkoveis e noo-mo dific6veis. 0 tipos de cbje tos de dodos neo-mcdfflccvets
sao literais e constontes. Os ob jetcs de dodos modific6veis s50 a s vcrievels, strings de
compo e tobelos internos. Uma string de campo IS 0 equivo lente do ABAP/4 de umo
estruturo. Umo tob elo Interne e 0 equivalente do ABAP/4 de um a rroyo

Quand o 0 p rograma e iniciado, a aloca<;ao de mem6ria para cada objeto


de dad os ocorre na area de rolagem do programa. Enquanto 0 pr ogram a esta
sendo execut ado, voce pede ler 0 conteu dc de urn ob jet o de dados nao-modificevel ou colocar os dados em urn o bjeto de clados modif idvel e emso
recupera-lo. Q uando 0 programa termina, 0 sistem.a libera a mem6ria para
todos os objetos de dadc s e seus conteudos sao perdidos.

NOVO....
YERMO"-

cbjetos de dados t~m ires nlveis de visibjJidode : local, global e extem~. A


vlsibllidode de um cb jeto de dados indica em qua l loco I do progromo c objetc

Os

de dodos IS ccess'vel.

Obietcs de dados localmente visfveis sao acessfveis apenas a partir de


dent ro da sub -rotina em que d es sao definidos. Objetos globalmen te visiveis
podem ser acessados de qual quer Iu gar dentro do progra ma . O bjetos ext~rna
m ente visiveis sao acessiveis de fora do pr ograma por outro prograrna. A FIgura
7.1 exibe esses treS nfveis de visibilidade pict ori camen te.
Na F igura 7.1, os objetos de dados locais na sub-ro tin a lA estao visiveis
somente de den tro dessa sub -rotina. Qualquer ins truc;ao fora deja nao pode

~I

238

O~ HEIlNINOO OAOOSNO ABAP/l.PARTE I

AP RENOA EM21 OIAS ABA PI4

acessa-los. De forma semelhsnte , as objeros de dados locais nas sub-retinas lB


e 2A DaD estaoacesstveisem qualquer lugar, somente dentro dessassub-re tinas.
Qualquer instru~ao no p rograma 1, indiferente do local onde a .instru~ao
aparece, p od e acessar as obje tos de dados globais no programa 1. De form a
similar, qualquer instru liao n o programa 2 pe de acessar as objetos de dados

globais no progruna 2.
f lou r a 7 1

A visibi/idodede um
ob;eto de dodos
indi ca

SIlO

ocessibilidode. ~
lor loco/mente
vislve!, ele e
ocessivel openos de

dentroumo

for
wsNd.

svb-retina. Se
globalmen~

Ar eo de mem6ria extem o

~: Dodos extemas
~",,:"i@ . Obietos

emmomltnte vislve/,

e ocesslvel de foto
do progrcmo. par"
DUtro

Literais de string de caractere


as litcais de string de caraetere sao strings que diferenciam letras maifisculas e
minuscules de qualqu er comp rimen tc inclufdas entre aspas simp les. Pa r exemplo, I JACKI e urn literal de string de carac tere que contem som ente caracteres
em letras maiusculas. 'Eaesar the cat I e urn literal de string de caractere que
contem uma mistura de caracteres em letras mindsculas e maiasculas. Seu
primeiro programa utilizou a literal de Strin g de caractere I Hel l o SAP worl d I
Como urn literal de string de caracte re e inclufdo entr e aspas. voce nio
pode utilizar aspas simples pa r si mesmo no valor do literal. Para representar
uma aspa simples. voce deve utilizar duas aspas simp les ccnsecutivas. Por
exemplo, a insrrucio wri te I Caesar I IS ta t l ' . escreveri cees er- ' 5 tai 1. mas a
instrucao wr; t e ' Caesar 5 t eil ' causarau m erro de sin taxe por'que elaconcern
uma aspa simpl es den tro da pr6pria string . A instrucao wr ; te I I I I fara com
que um a aspa simples seja escrita na pagina de safda, po rque as duas aspas
'consecutivas dentrc das aspas sao tr aduz.idas como uma aspa simples . Por fim ,
write : I I I . 'Hello Caesar ' "". escrevers 'Hello Caesar I
Eis alguns exemplos de literals de string de caractere icvdidos e a maneira
correta de codified-los . "Samant ha" esta in correto; ela deve estar inclufda entre
aspas simp les. cia aspas duplas e. po rtanro, devem ser codificadas I Samantha I .
Em I Never end; ng, a aspa da direita esta faltando e assim deve ser codificado
I Never end; ng' . I Don I t b1 t e I deve canter duas aspas simples con secutivas; ela
deve ser codificada I Don' 't bi t e ' .
I

Progroma 1

Progromo 2

~J::i!i'.ts.1-"f:i!. Dedos globois

r~ ; Dodos global

~~ Obiete!

~:M' .

ele e oceu fvel de


quo/quer fugor
dentro de um
progromo. Se for

239

Sub-retina lA

m~

O bjelos

Sub-retina 2A
Dodos laea is

~iMl'~_, Ob jetos

~. Dodos locois

!#ci#~

Ob ietos

progromo.

Sub-reline 1B

~. Dodos lcccrs

$~~

O bjetos

Os obje ros de dados ext emos pod em ser acessados de qualquer instru~o
no pro grama 1 ou 2. Na realidade. se eles podem ou nao ser acessados dependeri
do tip o de area externa de me m6ria util izado e do relacionarne nto ent re os dois
programas . O s deulhes disso sao descr itos nas se~6es sob re a rnem6ria

SPNGPA e a mem6ria doABAP/4 .

Definindo lite rais


U rn literal e urn objcto de dados nao modificavel. O s literais podem aparecer
em qualquer lugar em urn p ro grama e eles sao definidos m eramente sendo
digit ados ood e necessa ria . H a quatro ripos: String de ca.ractere. numerico. de
ponto flu ruan te e h exadecimal.

~o

Q ua ndo um litem] esfiver en va lvido em uma ccmpcrccoc, de modo


gerel voce sempre d~e utilizor lefrcs mclvscutcs entre ospas. As
ccmpc rccces com litereis de string de ccrcctere sempre diferenciom
letrcs rncicscvlcs e minuscules, enta~ e necess6rio certlficcr-se de
utillacrc cckc correto para obter 0 resultcdc dese jado. Se 0 coixa noD
cc incidir, no rmolme nfe 0 progromo oinde sera executodo, mas 'lac!
obtera umo soldo incorrefo au nenhuma seido no final dos contos. Em
99,99% das vezes, os valores de seu life ral de string de ccredere serOo
comporodos e esteroo em lefras maiuscules. Portanto, sempre digite
. . a lor pare um literal de string de coredere em letros maiuscules, a
menos q ue saibe que ele de'le aparecer de meneira confr6ne . Por
exemplo,select s ingl e from ztxlfal wh ere lifnr c I v i l noo
loca lizorO um registro. mas select s ingle f ran ztxlfal where
1ifnr ' Vl ' loceliza r6 urn registro , Voce notou as letrasmjnuscu las ~

Lite rais numericos


Litu ais numericas sao valores numericos codificados manualmente com urn
sinal a esquerda opcional. Eles no nnalmente nio sao inc1ufdos entre. ~pas.
Entretanto se urn literalnum erico contiver urn decimal, ele cleve ser codiflcado
como urna' st rin g de caractere induida entre asp as simples. Caso contMO,

... ,

240

D1AloDEllNINDOlWlOSNOABAl'/VAlTE 1

APUlDA EM21 DlAS AlAP/.

ocorrera 0 erro de sintaxe Stateme nt x is not def ined. Please check your
spell i ng.. A Tabela 7.1 mostra as maneiras erradas e certas de codificar literals.
Por exemplo , 256 ~ urn literal numerico, assim como 0 e-99, '10 .5' eurn
literal numericc que contem urn ponto decimal; portanto, ele e incluido entre
aspas simp les. Urn literal pe de ser utilizado como 0 valor padrao para uma

Tabela 7.1 Mc neiras erradcs e certos de codificcr [itercis


Certa

Erra da

Explica sa o

-99

99-

o sinal a dire ita ndc permitido em um nume ricc a


me nos que este]c dentro de as pos.
Nurnenccs entre ospos podem ter sinal c
esquerda a u a dtrelto ('12 _ '].

, ~ 12 '

variwel ou pede ser utilizado para fornecer urn valor em uma instru~ao .
Exemplos de literaisinvalidos sao: 99- (sinal de subt raci c adireita), "Confi rm
(incluido entre aspas duplas} e 2.2 (contem urn decimal mas nao esta incluldo
entre aspas).

literais de ponto f1 utuan te


Literais de ponte f/utuante sao especificados denero de aspas simples como
' cmant i ssa> E<expoente>'. A mantissa pede ser especificada com urn sinal a
esquerda e com au sem espaccs decimais e 0 expoent e pade estar com sinal ou
sem sina l, com ou sem zero s a esquerda. Par exempla, '9.99E9 1 , ' -10E-32 I e
1+l E09 ' sao literai s de ponto flu tua nte validos.

Numericos con tendo um ponto decimal devem se r

lZ.3

' 12. 3'

lncluldcs entre os pos simples.


Aspos du pla s na o sdc perm itidos.

' Hi I
' Can' It'

HP
' Can' t

' Hi'

'Hi

A ospo

71

Valores de ponto flutuonte devem ser ind uid os


entre a spas .
letras mlncsculcs se c perrnitidos para lltercis de
ponto flutuonte.

17E1 '

'] e1'

Para representor umo as pa simples, utilize duos


ospo s simples consecctbcs.

a d ireito est6 fcltcndo.

Literais hexadecimais

' OAOO'

' OaOO'

Urn literalhexadecimal e especificado dentro de aspas simples como se fossem


um a string de caractere. Os valores permitidos sio 0-9 e A-F. Dev e haver urn
mesmo mimero de caracteres na String e todos as caracreres decem estar em

Letros minusculos e m litera is hexcdeclmcls doo


resultodos tnccrretcs.

' OAOO'

'AOO'

Um numere lmpor de drgitos hexadecimois d6


resulta dos lncorretcs . .

' OAOO'

X'OAOO'

letras maiNsculas.

~o

Se v od! espedfi cor um literal hexadec ima l utilizando ccrccteres em


letros mincscvlos, v eel! n60 reeeber6 qualquer a v lee ou men sagem de
errc . Entretant o, quando seu progromo for executodo , a volar do literal
estar6 e rrado.

Um ccroctere, sejo coloca do antes ou depois, ndo

e perm itido porn lite rois hexodecimcis.

Definindo yoricyeis
Duas instrucoes sao comumente utilizadas pa ra definir variiveis em urn pro. grama do ABAP/4 :
data

Exemplos de Iiterais hexadecimais validos sao ' 00 ' , 'A2ES' e 'FlFOFF'. Os


exemplos de literais hexadecimais invilidos sao' aleS ' [contem caracteres em
letras mimisculas}, ' 0 ' (coutem urn numero de caract eres Impar}, - FP (ioc1uido entre aspas duplas ) e x' OO' (nio deve ter um x no infcio).

vc lc res hexcde cimc ts soo roromente utilizodos noA BAP/ 4, porque eles
soo normolmente depende nte de moquinc . 0 usa de urn valor hexodecimal que eria dependenclo de mcq vinc de ve ser e....ita do.

Utilizando a instru~a o data pa ra definir vari6veis


U tilizando inStrUliio data, varidveis podem se r declaradas par a 0 programa.
Variiveis definidas na instru~ao de clado s sao atribuidas a urn tipo de dado e
tambe m podem ter padrces .
Sintaxe para a instruCjoo data
A seguinte e a -sintaxe para definir um a variavel que utiliza a ins tru~ao
data:
~
d.ta , 1[{l )] [type tJ [dec' ...." d) [,,1 ve x,,].

til
A Tab ela 7.1 desc reve maneiras erradas e cert as de codificar de literais
hexadecimais e numericos.

parameters

...
m

au

241

242

Hmo . EM 21 OI.S ABA P/!

DIA 7,DEFININDO DAOOS NO ABAP/t PARTE 1 I

data vl like tl2 [val ue 'xxx ' ] .

0 val or inicial padrjo

e0 nome da verievel.
v2 e0 nome de uma variavel previamente definida no programa ou e0

If 1

ea especificacso int erna do com primento.

(l )

It! 0 tipo de d~do.

de 0
I

xxx I

numerc de espacos de decimals (utilizado apenas com

ripe p).

eurn literal que fomeee urn valor padrao.

A List agem 7.3 mos tra exemplcs de variaveis definidas com a instrucac

data.

ENTUDA~ Llstagem 7.3


1
2
3
4

Exemplos de vari 6veis defjnidos com a

instru~ao data

data flel) ty pe c.
data f2 like fl .
data ~ax_nl u e ty pe t ve'lue 100.
data cur_dat e t ype d val ue ' 19980211' .

Os nomesde varisvel po dem ter de 1 a 30 caracreres de comp rimento.


Eles podem ce nter quaisqu er caract eres, exceto ( ) + : e devem conter pelc
men os urn caracte re alfabetic o.
A SAP recomenda que no mes de variaveis semp re deve m co me car com
urn caract ere e nio devem com er urn hrfen . U rn hrfen tern signi ficado espec ial
(veja as strings de cam po abaixo). Em vez de urn brfen, voce deve urilizar urn

sublinhado

de dado c. que esu em

U.

A adi!;3.o val ue somente aceita urn literal au ccnstante (veja ahaixo):


voce nio pode uti lizar uma variavel para [ornecer um valor padrjio .

Quando utilizar a adi~ao 1i ke, a varia-vel que for definida obtem seu
eornprimento e ripe de dado da variavel referenciada. Voce nao pede
"especificf-los na mesma ins tru c;ao com 1ike .

nome de urn campo que perte'oce a uma tabela ou estrurura no Da ta


Diction ary.
.

e 0. excero pa ra tipo

branco.

onde :

Quando u"tilizar a adiCjao 1; ke, a valor nso e obtido da variavel referenciada, Voce pede espe cificar a adic;io value para dar a variavel urn
valor padrio. Se voce nao fizer isso , e atri buido urn valor inicial padrao
de 0 [o u em braneo para urn tipo de dad o Characte r ).

A instrucio data pede apa recer em qualquer lugar em urn programa. A


defmi'iao para uma variavel deve vir fisicamente ante s da~ inst rucoes que a
acessam. Se voce colocar uma instrucic data dep ois do c6digo executavel, as
insrrucoes acima dela DaO podem acessar as vari dveis que ela define. Para urn
exemplo, veja a Lisragem 7.4.

ENTRADA'" Listagem 7.4 Exe mplo de umo vori6vel que e inco rretomente acessoda

a ntes de ser definido

1 report zt I0704.
2 data fl(2) vej ce ' Hi ' .
3 write: fl, f l .
4 data f2(5 ) val ue ' t here' .

ANAUSE Iirltr... A vc rieve l F2 e definido no linho 4 e 0 jnstru~oo wrl t e no lmho 3 esto tentcndc
~ cce ssc-lc. Isso ge rero um erro de sintoxe. A instru~oo dat a no Hnhc quotro
devero ser movido ontes do linho 3.

~ boa pr6tico de progremoJ;Qo colocor todos cs defini~bes de dodos

juntos no topo de seu progre mo ontes do primeiro jnstru~ao executavel.


Noo utilize USING nem CHANGING como nomes de vori6veis. Emboro
eles sejcmsintcticcm ente corretos, podem ccuscr prob lemos se voce
tenter posse -los pore sub-refines.

Os seguintes pontos tambem aplicam para a instrucfo dat a:

0 co mprimento pad rjo depende do tipo de dad o. (C omprim entospa drao sao Iistados na Ta bela 7.2.)

0 tipo de dado padrf o e c (caractere).

Ti pos de dados do ABAP/4


Hd duas categories pri ncipa is de dados no ABAP/ 4: caractere e numerico.
Variaveis recebem tratame nro espe cial pel o processador do ABAP/4 com base
em sua categoria que vai alem do tratamento normal dad o pa r ourras linguagens. Portan to , eespecialmenre importance para voce ser capaz de reconhecer e distinguir entre as tipos de dados de caractere e numericos.

243

244 I APRENDA EN 21

DIAl IBAP/'

DIA 7:DEANIHOO DAnOS NOABAPl4, PARTE 1

Tipos de dodos de coroctere

as vclcres de sy-datum e sy-u ze! t sao configurcdos no comecc do


execucdo de progromo e n60 o ltero m ate que 0 prog rorno termine. Se

O s tipos de dado de caractere sao mostrados na Tabela 7.2. Note qu e eles


inc luem 0 tipo n, Compriment'os intemos sao dadcs em bytes. Urn hffen na
coluna Max leng th aparece pa ra tipos de dado de comprirnento fixo.

voce precisaracessora data e a he re mais cruel durante a iniciolizoc;:Cio


de um progromo em execuo longo, utilize a instruc;:oo para obter a
. horo. Ela ctucllzc as vclcres de sy-detum e de sy- uzel t para refletir
a data e 0 horo ctucis.

Tobela 7.2 Listo de tlpos de dodos de ca roctere


r ipo d e
dado

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

Valores abscluros de hera que tern precisgo de milissegundos nao sao


utili zados no R/3 . Entretanto, valores de tempo relativos esnc disponiveis para
precisac de rnilissegundos. Para obter estes , utilize a ins trucao get run time e
os armazene utilizando 0 tipo de dado 1. Veja 0 capitulo sobre analise de tempo
de execucao para mais detalhes.

rwmerlcc

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.

Representc ceo interno de vori6veis


As variaveis numericas de texto sao chamadas variaveis numericas de caracrere
e armaz enam intei ros posi tives sem sinal. Cads dfgiro ocupa urn byte e
intername nte cada urn dele s e armazenado como urn caractere. Esse e urn tipo
de dado de caractere. Ele apenas pode conter os caracteres 0-9.
U tilize texto num erico para armazenar cameros que sao utilizados como
identificado res especfficos, como e 0 caso do s numeros de documento,
numeros de cont a e num eros de pedido . AMm disso, utilize-o para variaveis
que arm azen arn urn num erico extraidc de urn ripe de dados de caractere. Por
exemplo , se voce fo r extrair 0 mes de do is caracteres de urn campo de data e
precisar de urna varisvel para arma zena-la, voce devers utilizar urn campo de
tipo n.
A data e a hora sao tip os de dados de comprimento fixo . Voce nao deve
esp ecificar urn co mprime nto na instrucac dat a para elas. Os valo res para
var isveis de data e ho ra sao sempre armazenados internamente como YYYYM\1DD
e HHMMSS, respecrivamente. A data atual esrs disp onive l no campo de sistema
sy-datum e a hora arual em sy-uze i t .

Tipos de dodos numerices


O s tipos de dados numericos sao mostrados na 'Fabela 7.3. U rn hifen na coIuna
Co mprim en to maximo indica que 0 comprimento nao pode ser alterado. Urn
asterisco indica que 0 atributo e dependence de maquina.

Tabela 7.3 Tlpos de dodos

numericos

rlpo de
dodo

Descrh;:&o

Comprimenlo Comprimenlo Decimals


Intemo
miudmo
miodmos
padrao

Va loNs
'Icliidos

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

CIA 7:DEAHIHOO DADOS NOABAP/4, PARTE 1


"RENDA EM 2\ DIAS ABAP/'

Figurg 7 2
Va/ores decimais
empocotodos s60
armazenodos em dais
drgilos par byte. 0

byte finol

Ta b e la 7 .4 Ccntlnuccdo

data fl(4) type p.

Elm"'tRl ~"'I

Descri~ao

Definiljao de
dados do ABAP/ 4

cuky

Tecla de monetcnc

c(s)

Tipo de dodos

6~ ~~m

de DDIC

p decima ls 2.

e vmo

curr

Monet6r io

dec

Decimal

p L+2) /2 )
p L+2)/2)

flt p

Ponto flutuante

ormozenodo e

i nU

Inteiro de 1 byte

(nenhum)

portonto n60 ocvoc

i nt 2

lntelrc de 2 bytes

(nenhum)

espotjo no compo; ele


e parle do definic;60.

i nt4

Inteiro de 4 bytes

lang

Unguogem

numc

Texto nurnericc

elrCeC;aOi ele
ormozena urn

un;CO
d;gito eo sinal. a
ponto decimal naa e

Variaveis de ponte flutuantes sao sempre aproximadas. Elas podem ser


utilizadas par a calculos que exigem valores muito gracdes au muitos espaccs
decimai~. A precisac de ate 15 espacos decimais e possfvel, mas isso e dependente de hardware.

~o

Tenha cuidodo quando voce especlflccvclcres iniciois no instruc;oo de


dodos utilizondo a cdlcec de volar. Esses vclores nee soo volidodos

prec

Prectsec

quan

Quontidode

uni t

Unidodes

pL+2) / 2)
c (L)

Utilizando a instru~aa parameters para definir vari6veis


NOV{) ~

Um pc rem etrc e um tipo de vcr tove l especial que e definida utilizando 0


tnstrucec parameters. Esse instruc;60 e muito porecida co m a'instruo data,
mas quando voce 'executor 0 programa, 0 sistemo exibirc as pcrcmetrc s como compos
de entrada em umo tela de sele<;ao antes de 0 programo reolmente ccmeccr 0 ser
executado. 0 usucdc pode digitor ou modificor sees vclores e entao press ionor 0 batao
Execute pare inido ra execucec de progroma. Voce pode utilizarta nto parameters come
data no mesmc programo. k. regros para as names de pcremetrc sao as mesmas que
os names vori6veis, exceto nos cases:

Utilizando a odic;:ao de valor, voce pode otribuir vclcres Invclldos pora


inteiros, vorioveis de tempo e de data, texto numerlcc, vori6veis
decimois empocotodos ou vari6veis de ponto f1utvantes, octdentclmente ou intencionolmente. Os resultados dessa otribuit;oo sao dependente s de mc qulnc e sao indefinidos.

Tn.110

Mapeando lipos de dodos de ODIC para lipos de dodos do


ABAP/4

Descriljco

Definiljco de
dados do ABAP/4

de DDIC
char

Ccroctere

c(L)

clnt

Cliente

c(3)

dats

Data

tims

Tempo

0 comprimento maximo e de 8 caracteres, em vez de 30.

Os tipos de dados no Data Dictionary sse construfdos a partir dos tipos de


dados do ABAP/4. A T abels 7.4 mostra os tipos de dados comuns no Data
Dictionary e as correspon demes definic;6es de dados no ABAP/4. leo
comprimento especificado n o dominic. Para uma lista complete, consulte a
ajuda Fl para a ins trucac tab' es.

Tipo de dodos

c(l )
n(L)
x(2)

para vlsvcluc r se eles seo au nc o ccmpctlve ls com a tipo de dodo.

Tabela 7.4 Tipos de dados no Data Didionary e sews correspandentes no ABAP/4

V
d

Alem de litera is e constantes, voce tambem pode utilizar uma varavel


para definir urn valor padrao.

CII

Sintaxe para a instru<;ao parameters

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

DIA 7:DEFlNINDO DAOOS HO ABAP/4, PARTE 1

APRENDA EM 21 DlAS AUPI4

e0 nome.de paramerro.
1'1 e 0 nome de uma variave l ou pardm etro previamente definidos au

pl

eo nome de urn campo que per tence a uma tabe la a u estrutura no D ata
Dictionary.

(l)

ea especifi cacfo intema de comprimento .

teo tipo de dado.

d e 0 mimero de espacos decim ais (utilizado apen as co m tipo p).


I xxx I e uma variavel literal au pr eviamente definida qu e Fomece urn
valor padrao.

r b2 radi obut t on group gl ,


8
rb3 r adi obutton group g1.
9
10 wri te :/ 'You ent ere d:' .
pI -" , pI ,
11
/
p2 -", p2,
12
/
p3 - ", p3.
13
/
chI-', cbi ,
14
/
cb2=" , cbz,
15
/
r bIs ' , r bI ,
16
/
17
/ rb2" '. rb2.
r b3z ' , rb3.
18
/

M adic c es para a insrrucs o par amete r s sao descritas na Tabela 7.5.

A Listagem 7.5 mostra exemplosde pardmetros definidos com ainstrucao

Tabela 7.5 Adir;6e s pa ra a instrur;o o para meters e suos utilizoc;6es

parameters.

Utilizasao

ENTRADlllr. Listagem 7.5

Exemp los de pordmetros definidos utilizo nd o a instrucd o

,. parameters
1
2
3
4
5

par amet e rs
parameters
parameters
parameters
parameters

pl (2) t ype c.
p2 like pI.
mall_valu e type ; default 100.
cur_date type d def eul t '19980211' obl ; gatory .
cur_date 11ke sy-da tum def ault sy- dat um obli gatory.

Um progro,!,o de exemplo utilizanda para meters e dodo no listogem


1.6 e tela de entrcdc que ele gero c pcrece . H6 duos vori occ es do
i n s1 rv~ea parameters: parameter e parameters . Operacionalmente,
n50 h6 nenbcrnc dlferencc entre as duos; elcs sdo completamente
intercombi6veis. Entretanto , se voce tento obter a juda Fl no instrv; 60
parameter, nenhum a ser6 encoofrcdc. Per esse rczec, recome ndo que
voce utilize ope nas a instrut;aO paramet er s .

type

Mesmo que a instrut;50 data.

decima ls

Mesma que a instrvt;oo data .

11 ke

Mesma que a instru ~e o data .


Mesma que a odic;.oo valu e no instruo data.

default
obligatory

o usucric deve inserir um volar no compo a ntes de 0

lower case

progroma se r executado.
Impede que vclcres seja m troduzidos em tetras ma juscules.

as chec kbox

Exibe

radiobu t ton group

Urn progra,made exemplo eapresentado na Listagem 7.6)e a telade entra da


que ele gera aperece na Figura 7.3. Por favor, execute esse relatorio agora.
ENTRADAlrrrrr.... Listagem 7.6 Exemplo de urn proqrcmc que ocelto poru metros de
,. e ntrada utilizondo 0 lnstrucco par amet ers
1 report zt x0706.
2 parameters: pl(lS) type c,
3
p2 l i ke pI obligatory l ower case,
4
p3 1; ke sy-datum defa ul t 5y-datum,
5
cbl as checkbox,
6
cb2 as checkbox,
7
r bl radi obutton gr oup gl defa ult 'X',

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.

compo de entra da como umo coixo de selecec.

Exibe a campo de entrad a como um bofec de opc;.60


pertencend o 00 grupo g.

249

250 [ APRENDA EM 21

DIAS AIAP/4

Da7,DEIlNINDDD'OOS HO ABAP/I. PAml I

O s seguintes pontes tambem se aplicam

ainstru~ao parameters:

Quando a tela de sele~ao emostrada, campos obrigat6rios contem urn

ponte de inrerrogaclo. Estes indicam ao usudrio que os campos devem


ser preenchidos antes de continuar.

0 tipo de dado padrao e c (caracrere).

0 valor padrfo e 0, exceto pua tipo de dado c. que esta em branco.


adi~ao val ue aceita urn literal, uma varisvel sy ou uma varisvel
previamente definida, no programa.

Quando utilizar a adi~ao 1i ke, 0 parametro sendo definidc obtem seu


comprimento e ripe de dado da varidvel referenciada. Voce Dao pode
especifica-los na mesma instru~ao com 1ike .

Quando utilizar a adi~ao 1 ike, 0 valor nso sera obtido da varidvel


refereociada. Voce ped e especificar a adi!jao val ue para dar urn valor
padrio ao parimetro. Se voce nao Fizer isso, sera. arribufdo urn valor
inicial pad rgo de 0 (ou em branco para urn ripe de dado de caract ere).

Como data, a insrructo parameters pede aparecer em qualquer lugar


em urn programa, mas a defini~ao deve vir fisieamente antes das
instrucoes que a acessam.

Os parametres apar ecem em uma tela de sele~ao na mesma ordem em


que sao definidos no programa.

Todas as instrucoes parameters, independentemente de onde elas


aparecem no prograrna, sao agrupadas pelo inrerprerador do ABAP/4
e exibidas na tela de sele!jao ao mesmo tempo. Mesmo se voce colocar
uma instruci c parameter no me io do programa, esse partmetrc ainda
sera exibido ria tela de sele~ao antes de 0 programa ser executado.
Os parametros sio exibidos em urn formato SAP padno. Para modificar sua aparencia, por exemplo, moYa 0 campo de entrada para a
esquerda ou moYa 0 r6rulo para a direita, utilize a ins tru!jao sel ect1onscreen, descrita no Dia 21.

Ulilizanda a

adi~ao :

lelras minusculas

Todos os valores digitados em urn parimetro sao traduzidos em letras maius cu1aspor padn.o. Para desa tivar essa tradu~o, utilize a adiljao l ower case. Essa
adilj3.o apenas se aplica a campos de caractere.

Ulilizando a

adi~ao :

como caixa de

sele~a o

Uma em a de sele~ao tern somente dai s estados: marcado e limpo. Voc e os


utiliza quando quiser apresentar ao usuano ligado/desligado (in/off) ou tip o

de escolha verdadeiro/falso (true/false) . Voce pode utilizar mais de uma caixa


de seleljio em uma tela. Se voce river rmilriplas caixas de selecac em urna tela,
elas operarao completamente independentes uma da outra.
Para exibir urn paramerro como uma caixa de sele!jio, utili ze a adiljao as
checkbox. Voce nao pode especificar um tipo ou comprimento de dado; ele sera.
configurado como 0 padrao ripe c e.comprimento 1. 0 parlmetro contera uma
letra maitiscula Xse a caixa de sele~aa estiver marcada; e estara em branco se a
caixa de selecac estiver limpa. Se a caixa de se1e~io inicialmente deve center
uma me-rca de verifica!jio, utilize um valor padrio de letra X maiuscula. Execute
o programa ztx506 para ver a caixa de seleljao.
espaco e a capital X sao os deices valores validos. Nenhum out re valor
evalido para uma caixa de selecao.

Ulilizando a

ad i~ao:

radi obut ton group g

Como as caixas de selecso, urn boeso de 0P!jao tam bern tern dois estados:
se1ecionado e nao selecionado. Diferente das caixas de sele~io, as bc toes de
o p~a o nunca operam sozinhos, eles operam somente em gru pos. Voce pede ter
qualquer mimero de boeces de op~:ao em urn grupo, mas apen as urn ped e estar
selecionado de cada vez . Eles sao utilizados quando voce precisa apresentar 010
usudrio uma lista de altemativas em que apenas uma 0pljio po de ser escolhida.
Para exibir .um parametrc como urn bctac de 0p!jao l utili ze a adi~io
ra diobutton group g. Voce nao pode especificar urn ripe de dad o ou comprimenta; ele sera padrao configurado como 0 padrac tip o c e comprimento 1. 9
e urn nome de gropo arbitraric de urn a quatro caractere s de comprimento.
Voce pede ter mais de urn gropo em urn programa.
parametro camera uma letra Xse a batao de op~o estiver selecionado;
ele conrera uma lacuna se nao estiver selecionado. Para esta r selecionado
inicialmente, 0 botio de op~ao deve conterum valor padrao da letra x.Nenhum
outrO valor e valido par a urn botao de opljio. Exp erimen te isso iniciando 0
prognma ztx006.

R6tulos de campo de e ntr a da de para metra


N a tela de sele!jao, aesquerda de cada campo de entrada do pa.rametro, eSta urn
r6tule. Por padrao, 0 r6tulo e 0 mesmo que 0 nom e do par ametro . Vo ce pode
confi gurar esses r6tulos manua!mente. Para parametres defmidos como cam pos de Data Dictionary, voce pod e recuperar 0 r6ru.lo automaticamen te do
clemen to de clados.

Allerando rclulos de pa rametro


sctEEN CAM ~ Inide a ScreenCom"How to Change Input Field labels" agora.

251

T I . . . ... W_JI"I
252

O~ 7,OEFINIHOODADOS HO 'B'P/!, P'RTE 1 I

APRENOA EM 21 OIAS ABAP!4


Par~.alterar urn r6rolo de campo de entrada do para-metr o:

1. C omece na tela ABAP/4 Editor: Edit Program.


2. Escolha 0 caminho de menu Goto->Text Elements. A tela ABAP/4
Text Elements e exibida. N o Program Field esta seu no me atual de
programa.
3. Selecione 0 borao de 0Pliao Selection Texts .
4. P ressioae 0 borao Change. A t ela ABAP / 4 Text Elem ents: Change
PARAMETERS/SELECT-OPTIONS e exibida. Aqui, voce po de

Apesar de mudar no D D IC , a r6 tulo na tela nso e automaticam en te


at ualizado. P ara altera-Io, vo ce deve ir para a t ela ABAP/4 Text Elem en t s:
Cba nge PA RAMETERS/ SELEC T-O PTIONS e escolher 0 caminho de menu
Utilities-> Copy DD Text ou Utilities-> Copy D D Texts .

A cdlcc c val ue no instru<;iio par ameter s, como com data, noo e


volidodo pora compotibilidode com 0 tipo de.dodo.
Atribuir a ume cclxc de seleceo a u um batao de opc;ao um outro valor
pcdrcc que noo espccc ou X mclcsculc noo e vclldc. Emboro umo
avolioc;ao superficial posso noo expor problemos, testes oprofundados
revelorom comportomento imprevisivel nos progromosde teste.

inserir ma nualmente rotulos na coluna Text.


5 . Digite rotulos de campo na coluna Text.

6. Para urn parame rro definid o como um campo DDle, voce pede
reeuperar rcrulos do elemenro de clades. Para recu perar urn rd rulc do
elemento de dados para urn dnico campo, posicione seu 0 cursor no
campo e escolha 0 caminho de menu U tilitie s-> C opy DD Tex t. 0
r6tulo de campo de comprimentc medicprovenien t e d o elemento de
dados aparece, 0 campo Text esta prot egido e 0 campo Type se altera
para conter os caracteres DOIe. Na parte inferior da janela, a mensa gem
Oiction ary texts transferred f or select io n xxx aparece.

7. Para remover a protecao de urn unic o campo, posi cione seu cursor no
campo e escclha 0 caminho de menu Utilities- > No DD T ex t. 0
campo Text torna-se desprotegido e os caract eres ODIC desaparecem
do ca~pa Type. Na parte inferi or da janela, aparece a m en sagem Text
for xxx no long er transferred. from Di ctionary ..
8. Para recuperar r6tulas de cam po para rodos os parametres que sao
definidos como campos de DDIC, escolha 0 caminho de menu
Utilities->Copy DD Texts. O s r6tulos de campo para todos os
campos de DDIC sao recuperados e prot egid os. Quaisquer valore s
existentes na coluna T ext sao sobrescritos. Na parte inferior da janela,
aparecea mensagemAl 1 selec ti on t ext s t ransferre d from Di cti onary .
9. Pressione 0 batao Save na barra de ferramen tas Applicat ion. N a parte
inferior d a janela, aparece a m ensagem Text el ements f or progra m
xxxxx in 1anguage E accept ed.

10. P ressione

Efeito de definic;:6es de parametro : t yp e versus 1i ke


Sempre utilize a adifilo likepara definir um parametTo . Quando voce a utiliza,
o pargmerro ad quire os seguintes atri butos d e Data Dictionary:

A ajuda Fl
de dados.

eadquirida a partir do botsc Documentation no elemento

A ajud a F4 e adquirida se seu pargm et ro for como urn que tern uma
t abel a de verificacac.

Urn r6tulo de CaInPO

ead quirido do eleme n t o de dados.

Al em das van t agens fomecidas pelo as aspectos acima,

Urn r6tulo de cam po obtido do D at a D ictionary e garant id am ente


co ere nte com 0 r6tule d e campo aprese ntado por outrcs p ro gramas
para 0 mesmo campo (des de que des tambem os obtenham do
DDIC) . 1sso elimina a confu sac d e t er dois campos que sao rotulad o s
de m ane ira dif erente e referenciam os mesrnos clades.

As modificacoes no tip o ou comprimen tc de dad o no D D 1C autom ati camen t e sao refl etidas por seu programa.

Na visualizacl o de todas essas vantagens, voce sempre deve utilizar a


adi!jao 1 i ke para definir urn pad-met ro . Isso se aplica mesmo pa ra as caixas de
selecac e os b c toes de opcso. Se necessdrio, voce deve criar urna estru ru ra no
DDlC d e modo que voce p ossa ut ilizer 1i ke e) pelo menos, obter ajuda Fl.
Note qu e a ajuda Fl esca disp onfvel ate para bot6es de 0Pljao e caixas de selecao.

0 batao Back na barra de ferramentas Ap plication duas


vezes para re tomar para seu p ro grama.

Se voce quiser anular 0 rotulo de DDIC para alguns campos mas nac
outro s, digite seus r6tulos na coluna T ext e endo escolha 0 caminho de menu
U riliries -c-Supplement DD Tex ts . T od os os campos T ext em branco serao
preenchidos a partir do Data Dictionary , deixando apenas os valo res que voce
in seriu.

';""'f-

tt:~~,-

Efeito de uma tabela de verifi cccdo em um parametro


Se voce define urn parfimetro utiliz ando 1i ke st-fl e s t -f l te rn u ma tabela de
verificacao e u ma seta para baix o aparece no fim do campo de en trada quando
voce exec uta 0 programa. Voce pode pressiona r a seta para baixo para obter

253

aW
.
-"a .W
254 I

.. WI

_ .
_

.WW

OIA7: DEANINDODAOOSMOAWH,PARTE l

APRE ND A EM 21 DJAS ABAP/4

Os valores digitados nos campos de ent rada de pardmetrc sao por


padrac corrvertidos em letras maiiisculas. Para.inrerromp er a cooversao, utilize a adic;ao l owe r case.

uma lists de valores vili dos para esse campo . Eneretan ro, 0 valor inserido em
urn campo de en trada de pararnetro nao e validadc contra a tabela d e verificacao.
A valida~o somente ocorre para telas de didlogo como as vistas na transacao
se16. 0 usuario pade digirar qualquer valor no campo de ent rada e isso sera
pass ado para 0 programa quando pressionar 0 batao Execu te.

Voce pede executor sumi pr6prios volidoC;6es de tela de setecec. Elos


deta lhados no Die 2 1, 'Telos de se l~co .

sOo

Os programas sao colocados em urn buffer de programa no servidor


de aplicativo. H :i so mente um a c6p ia, portanro uma area de rolagem
enecess aria para cada execucao. A irea de rolagem contem os valores
de varidveis do programs e 0 pontei ro arual do programa.

U rn programa do ABAP/ 4- e compasto de insrrucoes, cada uma das


quais comeca com u ma palavra-chave e termina com urn pon to. As
insrrucoes podem comegar em qualquer coluna e podem ocupar varias

linhas.
. U m cbjetc de dados e um a posiljao de mem6ria que contem dados
du rante 0 tempo de execufiao do program a. 0 5 obj eeos de dados
njio-modificiveis sao literais e constantes. O s ob jeto s de dados modificaveis sao variaveis, strings de campo e tabelas intemas. as o bjetos
de dadcs sao alocadcs na area de rolagem do programa e liberados
quando programa termina.

as objeros de dad os tern tres nfveis de visibilidade: local , global e


lugar a partir

exrema. A visibilidade d. urn objeto d. dados indica


de onde 0 o bjeto de dados e acessfvel.
.

Os Iiterais sse dados qu e sao muito codificados em seu pr ograma. As


constantes podem ser utilizadas para substituir Iite rais, facilitand o
assim a manu tencio do programa.

Voce pede alterar as r6tulos de campo de entrada de pardmerro por


meio do caminho de menu Goto- >Text Elements.

IFa~a
L....:.-

- - " _

Utilize urn sublinhado pore to ma r seus


nomes de vcrlevel mais mceis de ler.

Resumo

Os tipos de dad es sao dividido s em duas cate gorias amplas: caractere


e numerico. Os tipos de dad os de caract ere sao c, n, d, t e x; a s tipos
de dados numerico s sao i . p e f.

As varidveis po dem ser definidas utili zandc as instrucoes dat a e


paramet er s. A diferenlja e que , quan do 0 programa e ex~cutado, 0
sistema exibe urn camp o de entrada para cada para metro em um a tela
de sc:leljao. 0 usuano pode digitar n ovos valores ou a.lterarvalo resMpa-

dr.i:o.

, 255

Nco utilize hlfen em um nome de vari6vel;


um hifen de limito os componentes de umo
string de compo.

P&R

Par que pre ciso codifi car em letras maiusculas entre aspas?
Como saberei se precise codificar em letras minuscules?

N. maioria das vezes, 0 sistem a automaticament e con vene os


dados p ara letras m aia scul as an tes de ser arm azenado no banco
de dados. Essa co nversao e ex ecu ta da pelo dominie. Voce pode
determina r se a s dad os sao ccevertidos pe squ isando no dominio. Se 0 tipo de dado do camp o for CHAR e se a caixa de
selec;a.o Lower C ase esriver marcada, ennc 0 campo ap enas
contera m aiuscula s e m inuscul as mistu radas.

Posso defmir urn par.imetro que aceita mdltipios valores do


usuano ?

Sim , a in st ru ljaO de opcee s selecionada permite que a usuario


digice multipl e s valores e criterio s complexos.

W o rksh o p

o Works hop oferece duas man eiras de voce verificar 0

que apre ndeu ne ste


capitulo. A se ljao T este oferece perguntas para ajudar a solidific ar seu enrendimento do co nt eudo abordado e a seljao Exe rci'cio pennite que voce pratique 0
que apr endeu . Voce pode c:n cont rar as resp ostas as perguntas do T este e aos
exerdcios DO Apen dice B, GRe spostas as perguntas e aos exercIcios".

256

APREH OA EM21 DIAl ABA PH

Teste

o que hi de em-do com estes Iiterais, se eque algaesci errado? (Pede havermais

SEMANA

de urn erro em cadaurn e algunsnao tern erros.] Escreva as defini~6es corretas.

1. Literal de strin g de caractere: Don I t bi te , II

2. Literal de po n to flut uante: I +2.2F03. 3 I


3.. Literal numeric o : - 99

4.
S.
6.
7.
8.
9.

Literal hexadecimal: x

ooaOf'

Literal numerico: 9.9-

Literal de ponto [lutuante: ' 1. 1308


Literal hexadecimal: HA
Literal de String de caractere:
Literal de String de caractere: r
I

Reviscio

I I I I

I I . I I I

N a semana passada, voce completou as seguintes tarefas:

aprendeu sabre 0 ambience R/3, incluindo Basis, clientes de logon,


o ABAP/4 D evelopm ent Wo rkbench e a Data Dictionary

1. data firstname(5) type'c.


2. data fl type character .
3. data fl (20) typ e c.
4. data 1a(5) type i.
5. data per -cent type p val ue 55.5.
6. dat a fl(2) type p decteeta 2 value ' 12 .3' .

qu e hi de err ado corn est as definicoes de dados? (Pa d e haver mais de


urn erro em cada urn e alguns nao t ern erros.] Escreva as definiljoes corretas.

escreveu programas simples de ABAP/4 e fam iliarizou-se com

ABAP/ 4 Editor
criou tabelas transparentes, elementos de dados e dominios

criou cbaves estrangeiras para oferecer ajuda F4 para

usuario

documentou elemen tos de dados a fun de oferecer ajuda F l

Exerdcio 1
Escr eva urn programa utilizan do parame tr e s par a a Figura 7.4.

.'

criou indices secun darios e bu ffers para acelerar a acesso de dados

--- w

'W'

w:

SEMANA

Viscio geral
Na Semana 2, voce aprende a criar ob jetos de clades variaveis e fixes
utilizando os tipos de dados predefinidos e definidas pelo u suario. Voce
aprende as regras cia sintaxe ABAP/ 4 e as inscucces par a contrclar 0
luxo do programa, as insrrucoes de atribuiliao e as regr as de conversso.
Voce tambem define as tabelas internas, preencbe-as utilizando areas de
trabalbo implicitas e explfcitas, executa 0 processarnentc de imerru pcac
de controle e otimiza as ins rrucoes se 1ect, a fim de pre encher as tabelas
intemas, direta e eficientemente. Finalmente, voce utiliza as opcoes de
[ormatacic da insrrucao wri te, conhece os efeieos do tip o de dado sobre
a salda, emprega as safdas de conversao e detecta sua pre senlia dent ro de
dominies .

No Dia 8, "Definindo dados DO ABAP/4 , Pane 2", voce utiliza


a instrucio tabl es par a defmir as strings de campo, compreende
a instrucjo types e utiliza ess a Insrrucdo para defini r seus pr6prias tipcs de dados.

0 Dia 9, Atribuilioes, conversdes e calculos", en sina a utilizar


Il

varidveis comuns do sistema e a ser capaz de exibir ou localizar


qualquer variavel do sistema, prever e executar cc nverszes de
dados utilizando as instrucoes de atribuicjo e a codificar expressoes matematicas.

No Dia la, "Insrrucoes de controle com uns", voce aprende a


codificar as insrrucces de controle com uns if, ca se, do e whi 1e;
a controlar a sequencia do programa utilizando exi t , continue
e check; e a codificaras especificacoes de comprimento e posili3.0
simples na instrucao wri t eo

No Dia 11, "Tabelasiorernasr voce apr end e a de fini r uma tabela


interne, com ou sem uma linha de cabecalh o, a preencher uma
tabela inrema utilizando append ao lan ge de um a linha de ca-

;.

AP REND A EM 21 DIASABA P14

becalho a u uma area de trab albo explfcita, e a d assificar as tabelas


in rem as e utilizer 0 complemento as text .

Duran te 0 Dia 12. "Tabelas internas avancadas .Parte 1", voce aprende
a reccnhecer a op erador do cc rpo da tabela e utilizar esse operadar
par a testar quanto a existencia de dados em um a tab ela int erna, e a
comparar a igualdade do conteadc de duas tabe las internes.

0 Dia 13, "T abelas internas avancadas, Pane 2'" ensina a preencher
uma tabela in terna a p art ir de uma tabela de banco de dados utilizando
as consrruco es mais eficientes: e executa a processamen to de interrupcao de controle em tab elas intemas u tilizan do at e on change of .
Durante 0 D ia 14, "A inStIllliao Write", voce aprende a entender 0
efeiro dos tipos de da dos na safda, a utilizar as opcoes de formatacao
cia ins tru~o wri te, a urilizar as safdas de conversio e a derecear sua
presen ce dentro de domini es.

Definindo dados no ABAP/4,


Parte 2
Qb jetivos do capitulo
Depois de conduir este capitulo. voce devera ser capaz de:

Utilizer a instrucao t abl es par a definir as strin gs de campo e compreender a diferenca en tre as strin gs de campo def inid as utilizando-se
data e as defmidas utilizando-se tabl es
Compreender a instrucao types e utilizar essa instrucio para definir
seus pr6prios tipos de dados

Defi nindo constantes


U ma con stan t e e quase identica a uma varifvel, exceto quanta 410 fato de que
seu valor nao podera ser alterado. Para definir uma constante, voce utiliza a
instrucao constants.
U tilize um a constante quando precisar incluir 0 mesmo literal varias vez es
em urn programa. Voce pode defini r uma cons tante com a mesmo valor do
literal e utilizar a constante no corpo do progra ma em vez do literal. Mais tarde,
se precisar alterar 0 valo r do literal, voce po der.i simplesmenre alterar 0 valor
da cc ns tant e, fazendo com que seu valor seja atu alizado onde quer que seja
util izado no prcgrema.

hItpJI-.compus.com.br

I I I .I ~ I I I ~
262 I

'If

w . - -

.....--.-

- -

- ~ - -- ----- -- D~UEA"N DODADOS ND I.BAI'/4. PARTE I I

APlENDA E' 21 DIAS ABAP"

Definindo strings d e com po

ABAP/ 4 tern uma coastame predefinida: SPACE. C orresponde a urna


constante com urn valor igual aos espacos, Voce pcdera utiliza-la no Iugar do
literal ' I .

Sintaxe da
en 0 c6digo

jnstru~oo CONSTANTS

a seguir dem ons tra a sintaxe para a definic;ao de urn a cons tan te. E
semelhant e a instruc;ao data ; entr etan to , a adiCjao value se faz ne cessaria. Em
-I ro dos a s outros modos, as constantes concordam com as mesmas regras das
~ varisv eis definidas com 0 u sa da insr ru cio data. Veja a Lisragem 8.1 quanta a
m exemp los das deficicoes de con stante.

consta nt s cl [{l) ] [ typ e t ] [deci mals II] va'lue 'xxx'.

ou
const ant s c1 l1 ke cv value ' xxx ' ,

!j
!

cl

e0 nome da con sta nte.

cv

e a nom e de uma constante ou varisvel previament e definida ou e

o nome d e urn cam poque pertence a uma tab ela ou estrurura rio D ata
Di ctionary.
{l}

D uas icsrrucces sao geralmente utilizadas para definir Strings de cam po .

em um programa ABAP/4:

teo ripe de dado .

'xxx I

numero de casas decimais (utilizadas apenas com a tip o p).

eum literal qu e fomeee 0 valor cia const ant s.

I
1

1 cons ta nt s cl12} t ype c valu e ' M' .


2 const ant s c2 like cl value 'BB' .
3 const ants error_t hre shol d t ype t value 5.
4 constan t s amal gamatio n_dat e l i ke sy-dat um value ' 19970305 ' .

t abl es

Sinlaxe para a definiccc de uma sIring de campo uliliza ndo


a i n slru~Ci o DATA

III A seguir, veja a sintaxe para a defini~o de uma string de campo utilizando a
Z instnl/Sao dat a.

...

1 ft .

ENIRADA ~ Lislagem 8.1 Defini,6e s de consta nts

data

Uma st ring de campo definida com 0 usa' da instrucio data corre sp onde a um
objeto de dada modificavel, Ela pede ter visibiliclade local ou global.

ea especificacjo intema de eomprimento.

de0

Utilizc ndo a instrucdo DATA para defin ir urno string


d e campo

code:

Uma string de compo correspond e a um lipo de vcricvel e e 0 eq uivole nte de


umo estrutura no ODIC, porem e definido dentro de um programa ABAP/4 .
Como umo estruturo, umo string de compo corresponde a umo serie de co mpos
ogrupo dos so b um no me comum. A diiere nco principal e 0 lugor ern que reside 0
definilioo . A estrutura de te rmas no R/3 se c pllcc apenas a urn c bjetc do Dato Dictionary
cante ndo um cc nluntc de ca mpos. A string de compo de termo se oplico a um con iunto
de compos definido ern urn progrorna ABAP/4 .

IlOYO ...

mMO "

data: begi n of /sl.


jl [(l )] [t ype
/ 2[(1) ] [ty pe

el
tJ

[decimals d] [value ' xxx '] .


[deci mals d) [val ue ' xxx ' ] ,

end of /sl .

ou
dat a begin of i sl .
data fl [(l }] [type t] [deci mals d] [val ue ' xxx'] .
data i 2 [ (0 ] [type t] ,[ deci mal s d] [value 'xxx '] .
[i ncl ude structure stl . ]
data end of t st ,

As constcntes podern ser definidos em urn poo l de tipos. Quando


definidos, elc e podem sercompa rtilhodo s por dfverscs prog ra mos. Para
mois tnicrmocoes , co nsulte a secs c "Pools de tipos" no fina l de ste
ca pitulo.

ou
data is1 1; ke i s2.

onde:

e 0 nome da s~ring de campo.

j51

f1 e j2 sao os camp os [tambem denominados componenres) da string

de campo.

263

264

DIA l : DEfININDO DAOOS NO ABJ.1/4, PAm 2

.PREHO. EM 21 DI.S .BAP/4


! 52

e0

ea especificacac int erna de comprimento.

nom e de uma string de 'campo previamente definida au


nome de uma tabela ou estrutura no Data Dic tionary.
( I)

ea

t eo tipo de dado.

de 0

' xxx I

ndmero de casu decimais (utilizadas apenas com a tipo p).

eurn literal que fornece urn valor padrio',

stl e 0 no me de urna estrutura au tabela no Data Dictionary.

As strings de campo seguemas mesmas regras das variaveis definidas com


o usa da instrucio dat a. Pa ra referi r-se a urn compo n ent e individu al, seu nome
deverd ter como prefixo 0 nome cia string de campo e urn trace (~ ). Por
exemplo, para escrever 0 componente number cia string de campo cust_info,
voce utilizaria a instru~o write cust in f o-number .
A instrucio include nia faz parte cia instru ci o data : ela e uma instrucao
independente . Portanto, ni a pe de ser encadeada em urna instrucao data . A
instrucao precedence a ela deve ser concluida com urn ponte.
Os exernplos de programas que definem e utilizam as strings de campo
sao mosmdos nas Lisragens de 8.2 a 8.6.

EmAOA"

Listagem 8.3 Umo string de campo pede conter umo o utro string de

"

compo
1 report ztxG803.
2 data : begin of names ,
3
namel
li ke
4
nameZ
like
5
end of name s.
6 dat a: begin of cust _i nfo ,
7
number (10) type
8
nm
li ke
9
end of cust_info.

ccmc uma string de campo

14

15 ....tte:
16
17

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

Listagem 8.4 Uma string de compo pode ser


,. um o tobela ou estruturo do DDIC
1
2
3
4
5
6
7

9 totals_I -debits = 100.


10 totals_I -count .. 10.
11 t ota ls _2-debHs .. 200.

r eport ztx0804.
data: my_l fal l 1ke %tx l f al,
my_addr like ztxa ddr .

deftntdc exotamente como

como uma tabela no ODIC


como uma estrutura no DOIC

ll\Y_l fal-n amel'" ' Andrea Mille r'.


my_lfal - t elf l .. ' 1-243- 2746'.
my_addr -landl '" 'CA' .

9 write : I lly_ltal - namel ,


10
l'Iy_lfa l - name2.
11
my_addr-landl.

12

I t ota ls _I -regi on. t ota l s_I - debit s , totals_I- count .


totals_2- region. t otals_2-debit s , totals_2-count .

.... A linho 2 inicio a definio do string de compo to t al s 1. Elo cc ntem ires


ca mpos, 0 primeiro des tres e inid olizado com a valo r ' unk nown'. No Hohc 7,
a string de compo totals 2
definido exctornente como to t a l s 1.
volar de
total s l- r egi on n60 e propagodo perc total s 2-regi on. Nos linh;s de 9 a 11, os
volores-;oo otribuidos oos co mpo ne ntes des string-; de compo e nos linhos 13 e 14, os
vclcres de todos as compo nentes sao totolmente escritos.

,lj1.lJ.IS~ ,.

10

EIflRADA"

I report ztx 0802.


2 data: begin of t otals I,
3 :
r egion(])
;alu e 'unknown',
4
debits(lS)
type p,
5
count
type t ,
6
end of totals_I,
7
t otals_2 l i ke tot als _I.

n,
names,

11 cU5t_in fo- nlUllber .. 15.


12 cust _1nfo- nm- name l . '" 'Ja ck'.
13 cust_1nfo- nm- name2 '" ' Gordon'.

ENTRADA'" Listagem 8.2 Um exernplo simples de umo string de compo definido


,. com a use do instruc;oe data

13 write :
14

at xknat - neeet ,
ltxknal -nameZ,

No linho 2, lnY_1fa l e definido exctcmente como a tc belc do ODIC. ztxl fal.


e my_addr e definida como 0 e strufuro do ODIC, ztxadd r .

265

.... -_ ..... _--266

------

- - - -

--

,01A I: DEFlNINDODADOS NOABAP/~. PARTE 2

APRENOA EM 21 0lA5 ASAP"

Perc visuolizor 0 definil)oo do ODIC do tcbelo ztxlfo 1, d~ dois diqu es


no nome dele no seu c6digo-fonte.

ENIRADA~

List a gem 8.S As tobelas e est ruturos do ODIC pad em tc mbem ser

tnclvtdos em umo string de compo

1 report ztx OB05.


2 data
begin of fsL
3 include structure ztxlfa1.
4 data :
extra_f ield(3) t ype c .
5
end of fs L
6

7 fsl -lifnr
12.
8 fsl -extra_f ield ' xyz ' .
9

10 write : / fsl -l1fnr.


11
fsl-extra_f i eld .

AMAuSE"

A llnhc 2 inido 0 definit;oo do string de campo fsl. A instruc;Oo termino com


,. urn ponto, porque inc lude structure noo e porte do instrut;60 data; e umo
instruo independente. No Ilnhc 3, a estrvturo do tc belc ztxl fal e incluldo em urno
string de campo . Na linho 4, um outro compo e indul do no shjng de compo depcls des
campos do tc belc zt xl f al. Qu a isquer ne meros de compos podem ser incluidos, como
tombem mais estruturas podem ser inckndcs oqui au qualquer comb inot;60 dos dais.

ENlRADA~

Lista gem 8 .6 Se voce utilizor 1i ke em vez de Include, voce obter6 urn


resu ltodo d iferen te. as names d os ca mpos inclufdos sao prefixodos par urn
nom e de co rnponente intermedi6rio .

1 r eport ztx 0806.


2 dat a: begin of fs 1.
mylfal l tke ztxlfa1.
3
4
extra_field(3) type c.
5
end of tst ,
6

7 h1-mylfal-l1fnr 12.
8h1 -ext ra_fi eld
' xyz' .
9
10 wr i t e : / h1 -mylfa1- l ifnr .
11
fs1 -extra f ield .

ANAUSE"

Alinho 2 inicic o defink cc dc stringdecompo 1fa1_with_extra_fi e1d.Ainstrut;60


,. terrnlro com um ponte, porque i ncl ude structure nCoe porte do instrur;oo data;
e urnc inst~60 independente. No llnhc 3, a estrvhJro do fcbelc ztxlfa1 e inclufdo no string
de campo. No linho 4, um outro campo e induldo no string de compo depois dos campos
do tobelo ztxl f al. Occlsqcer numeros de campos podem serind cldos, como tombem rncis
estruturaspodem ser incluidas oqui au quolquer ccmbtnccoc dos dois.

Utilizando uma string de cam po co mo uma voricve l


do tipo char
Voce nao apenas pede enderecar comp onentes individuais de uma string de
campo, como tambem pede ec derecar todos as eomp onentes de uma s6 vez,
como se fosse m um a (mica variavel do tipo char. A Listagem 8.7 ilustra esse
conceito.
.... List ag em 8. 7 Urn exemp lo do ut ilizo~ao de umo string de compo como

EHTUOA,.

diversas vori6veis e como umo (mica vo ri6vel do tipo char

1 report ztx 0807.


2 data : begi n of fs1,
3
c1 value ' A' ,
4
c2 value '8' ,
5
c3 value -c- ,
6
end of hI.
7
8 write : / fs1-c1, fs1 -c2. fs1 -c3,
9
I fs!.
10

11 151 'XYZ'.

12
13 wri t e : / fsl c1, fsl-c2, fsl c3.
14
/ fsf.

o c6digo na Listagem 8.7 deve produzir esta saida:


SAlOl ~

ABC
ABC
XYZ
XYZ

AKA

.. As linhos de 2

0 6 definem a string de ca mpo f s l. Esso string possui tr!s


componentes, coda urn com um vclc r podnSo. No linha 8, coda componente
e escritc individualme nte. No linho 9, a string de compo e escritc como se fosse uma
unico vori6vel. Conseq Oentemente, a soido mostro 0 contecdc de f s1 como se fosse umo
unico vori6vel definrdc como char 3. No linha 11, a vclcr 'XYZ I e otribufda a string de
compo , novomente trotando -o como uma vcricvel char. A scfdc resultante mostro que
coda componente reflefea clterocoo, porque este c acessondo 0 mesmo armozenomento .

USE ,.

Uma string de campo pede ser atributda a uma c u t ra, se ambas tiverem
a mesrna estrutura, como pode ser visto na Lisragem 8.8.

267

268

.APREND A EK ! 1 DIASABAP/'

EIITRADA'" Listagem 8.8 Urn exemplo de atribuit;60 envolvendo duos strings de


~ campo
1 report ztx0808.
2 data: begin of 1s1.
3
cl value ' A'.
4
c2 value 'B',
S
c3 value 'C'.
6
end of hI ,
7
152 like fs l .

e 0 nome cia string de campo. Urna tabela ou estrutura com a


mesmc nome deve existir no Data Dictiona ry.

151

ENTiADA'" Listagem 8 -,9 Exemplo simples de uma string


,. usa do instru~co tables

de compo definida co m

1 report ztx0809.

2
3
4
5
6
7

a
9 152 z 151.
10 write: I tsz -cf, rsz-ea, 152-c3 .

o c6digo na Listagem 8.8 deve produzir esta saida:

sliol ~

269

. DIAl, DEANINDODADDS ND ABAP/4, PAm!

tables ztxlfal.
zt xlfal-namel 'Bugsy ' .
zt 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

liIl... As linhas de 2 a 6 definem a string de compo fs1. A linhc 7 define a string de


ANAllS~'" compo f 52 exatomente como 1s1. No linho 9, fs1 e movida pora fs2, como
fosse umo unicc vcrtcvel do tipo char. No linho 10, as componentes de f52 sao
totclmente escritos.

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!

~ ..

Umo string de campo contendo tipos de dado num erlccs requer


ccns'derococ especial durante as atribuic;6es. Esses ccnslderocees
se reo obo rdados no Die 9, no secec "Atribuic;6es
H

String de compo definido utilizando TABLES inte rog indo


com SELECT
A instrucao tables faz mais do que apenas definir uma string de campo. Ela
realiza duas a~6es:

Utilizan do a instr uc;iio TAB LES para definir umo string


de compo
A string de campo definida com 0 usc cia instrucac tabl es corresponde a urn
objetc de dado modificavel. As strings de campo definidas com 0 usa cia
instrucac t ab! es seguem as mesmas regras das strings de campo definidas com
o usa cia instruc io data. Urn exemplo de urn programa que utilize urna String
de campo tabl es aparece na Listagem 8.9.

Sintaxe para a deflnicco de umo string de compo utilizondo


a instrucco TABLES
A seguir, veja a sintaxe para a definicio de urna strin g de campo utilizando a
ins trucfc tabl es.
tabl es [sl ,

onde:

Define uma String de campo.


Farnece ao programa 0 acesso a uma tabela de banco de dado s com
mesmo nome, se uma existi r.

o primeiro exemplo da instrucio sel ect ereproduzido na Listagem 8.10.


Voce pede agora analisa-lo sob uma nova persp ect iva.
~NmDA~ Listagem 8.10 Seu segundo progra mo, revisitodo
1 repor t ztxOBlO .
2 tab les ztxlfal.
3 sel ect * from ztxlfal into z lfd or der by l ifnr .
wr1"te I z lfa l -11fnr .
4

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

~f -"' '' '' '' '''


'"

270

WW

-- CIA I, DfIN1NDO DADOS NOw.Pf4, PARTE 2

'IiEND' "EM21 DIAS ABAPH

sel ect. Sempre que a linha 3 e executoda, um registre e lido a partirdo tobelo do banco
de dodos ztxlfal para a string de campo zt xl f al. Pora coda registro, 0 vclc r do
compon ente ztx l fal -l i fnr e tota lmente escrito (Iinna 4).

onde:

tl

vl

e 0 nome do tipo.
ea nome de uma varisvel previamenre defmida no pr ograma au e0

Visibilida de de uma string de cam po definida utilizando

nome de ~m camp o que pertence a uma tab ela ou estrutu ra no Data

TABLES

Dictionary,

U rna string de campo definida utilizandc tab 1essempreUTa avisibilidadeglobal


e externa, independentemente dolocal ondeedqinidanoprograma. 1S 50 signifies
que se voce colocar u rna inStru?o tabl es em uma sub-retina, a definic;ao sera
global e voce DaD poderf ter uma c utra definiljao para a mesm a string de camp o
em qualquer local dentro desse programa.
A string de campo tambem evisfvel extemamente. Is50 significa qu e se,
em urn programa de chamada e em urn programa chamado, a mesma instrucac
tabl es aparecer,essasStringsde campo compartilharao a mesma memoria, Esse
conceito eilustrado n a Figura 8.1. Quando 0 programa chamado for executado,
ele "veri" 0 valor em ztxlfa1 a partir do primeiro programa. Se ele alterar
ztxlf a1, 0 programa de chamada avera" afaltera~6es quando recupe rar 0
controle.
F lgur n 8 1

/ve o de mem6rio

As cle finifjOes de
tobe las id'nticos em

um programa de
chomado e em um

Progl'Clmo de chcmcdc
Tobelas m.lfo1.

c:omportilhodo

Progrcmo c:homodo
Tabelas ztxlfo 1.'

compornlhodo por
essos strings de

ea especificacao interna de com prim ento.

t eo tipo de dado .

de 0 mimero de casas decimais (utilizadas apenas com 0 tipo p).

As Lisragens 8.11 e 8.12 mostram exemplos de pr ogramas que definem e


utilizarn. seus pr6prios tipos de dados .

ENTRADA'" Listagem 8.11 Simples exemplo de um tipo de dodo definido pelo

~ usu6rio char2

1 report ztx0811.
2 typ es char2 (2) t ype c .
3 dat a: 1,'1 t ype char2 val ue ' AS' .
4
v2 t ype char2 value 'CD '.

s
6 write: 'Ill. 1,'2. :' .

programo chomado
fat com qce 0
mem6rio sejo

(l)

o c6digo no Listagem 8.11 produz esta saida:


(choma outro
progl'Cl mo)

SAiD! ~

AS CD

compo.

..... A linha 2 define um tipo de dodo denominodo char 2.

Eum compo

char de

,lJ(lI.lSf,. da is bytes. Nos linhos 3 e 4, as vari6veis vI e v2 stio definidos como compos


char de dois bytes utilizondo 0 tipo de dodo charl o Elos recebem vclcres-pcdrec e, no
linha 6, esses vclcres s60 totalmente escritos.

Definindo tipos
Voce pede definir seus pr6prios tipo s de dados utilizando a instru~o t ypes e
basea-los nos tipos de dados existentes.

Sintoxe para ci instr!J~ 60 TYPES

!!!

A seguir, veja a sintaxe para a definicac de um tipo utilizando a insrrucio t ypes.

typu t1[(l)] [type t] [decimal, d] .

~..r '

au

"'

type s tl like -r .

EIfTUDA ~ Listagem 8.12 A utilizac;a o de tipos poder6 tomor seu c6digo mois
clc ro e mcis f6cil de ler
1 re port ztx0812.
Z t ypes : doll ar s( 16) t ype p deci mals 2.
3
lira(l6}
t ype p decimals O.
4

5 data : I::iegin of ameri ca n_sums .


petty_cas h t ype dollars.
6
7
pay_outs
t ype dollars.
l lJ'1lp_sums type dollars,
a

10

end of ll'ller1can_sums.
begi n of i t ali an_sums,

"e li r a 1ta 11ana nilo tern dectna t s

271

272

OIA 8, OEANINOD O'OOS NO ' 8'P14. P'RTE2

mENO' EM 21 DIAS ,mH

11
12

petty_cash type li ra,


pay_outs
t ype l 1ra,

13

lump_sums type lira .


end of 'ital ian_sums.

"15

16 american_sums- pay_outs .. ' 9500. 03 I


urn decimal
17 italf an_ sums -l ump_sums .. 514l.
18
19 write : / amer1can_sums -pay_outs .
20
/ i t ali an sums - l ump sums .

"espes necess ar-ies quando l iteral

_ con t~m

o c6digo na Listagem 'S.12 produz esta saida:


9,500 .00
5,141

siiDI~
~NAlIS~""

A linho 2 define urn tipo de dodo denominaclo dol lars como urn campo
,.. decimal compa d odo de 16 bytes co m duos casas decima is. A linho 3 define
um tipo de dodo semelhcnte denom inodo 1i ra co;" 0 coso decima l. Nos llnhos de 5 a
14, duos strings de compo sa o definidos co m 0 usa dos novos tipos de doclo . Nos llnhcs
16 e 17, urn volo r e otribuldo 0 urn compo nente de coda e, nos linhos 19 e 20, ell'S soc

escr itos.

Considere urn tipo definido pelo usuario como uma variavel,masurn tipo
que voce nao posse utilizer para armazenar clados. Elepodera apenasserutilizado
para coo outrasveriaveis. As mesmasregrasse aplicam aos tipos, da mesmaforma

as

as

que se aplicam varidveis e strings de campo. N a mes de tipo , como nomes de


vari fvel, tern de urn a 30 caracteres de comprimento, mas, diferentememe das
vari dveis, seus names nao podem incluir a s caracte res - < >.

Tipos estruturodos
Urn tipo definido pe lo usu6rio pede ser boseodo no defini ~o o de umo string de
campo. Ele e conhecido como um fipo estruturodo. A Usta gem 8.13 mostro
como vo ce pede reduzir 0 tc mcn hc de um prog romo vtilizonde um tipo estruturodo.

NOVO ...

HilIO"

9
10 data: customer_addr typ e address.
vendor_addr: t ype address ,
11
empl oyee_addr ty pe address,
12
shipto_addr typ e address.
J3
14
15 cus tomer_add r~street '101 Memory l ane' .
16 employee_addr-country ' Transyl vani a'.
17
18 write: I cus tomer _eddr- st reet ,
employ ee_addr -country .
19

lilt... h linhos de 2 a 8 deflnern um tipo de dodo de nominodo addr ess que ccntem
cinco comp os. Nos linhas de 10 a 13, quotro strings de campo sdc definidos

ANALISE,.

com a uso do novo tipo. Sem 0 no.. . o tlpo, essos defini~oes teriom utilizado 24 linhos
ad icionais de c6digo . Alem disso, a mcnutencoo fica mois f6cil: se umo clterocec nos
deflnlcce s da s strings de compo de en derecc for necessaria, ope nos a definiIYoo do tipo
preciscrc ser oltera do.

Grupos de tipo
HO~O llr..
TERl{O"

Uma in stru~ao t y pes pod e se r ormoze nodo em um grupo de fipo . Urn grupo
de tipo (to mbe m con hecldo como um pool de tipo) corresponde a urn objeto
do Data Did io na ry que existe rnerome nte para canter uma ou mots insfruIYoes types au
constant s. Utilizondo a in stru~oo t ype-po ol s em seu programo, v eee aces sor6 tipos ou
consta ntes a pa rtir de um gru pe de tipo e"uflllzcre as mesmos em seu progromo. Muitos
program as pode m co mpa rtilhor um grup o de tipo, propordonondo a voce a hobilidade
de crier definiIYoes ce ntralizod a s. A Fig ura 8.2 ilustra esse conceit o. A Listagem 8.14
ccnt em urn exemp lo de um grupo de tipo e a Ustage m 8. 15 opre senta um exemplc de
um prog ramo utilizondo types e constants de tal grupo.
Grupo de tipo ztxt.

Fig ura 8 2

Urn gropo de tipo

e"

um cont~inar pore as
;n$~6 es

types e
constants. Ele pode
ser comporlilhodo

enee cs progromos.

ENTRADA.... Listag~m. 8.13 A utilizac;oo de :ipas e.st~tu.rodas pode reduzir a


,. redonde ncrc e tamar 0 monutenc;oo mots faed
1 report ztx0813 .

2 t ypes : begin of address.


street (25)
c1ty( 20)
5
region {7l .
6
count ry (l 5) ,
7
posta 1_code(g) .
8
end of addres s .

,
3

Progromo 1

Progromo 2

type-peols ztxt .
data fl t ype _ztxLdoll ar-s .

typ e-pools zt xt .
. dat a fl type.z.txt:...dol1ar s .

273

274

D~ UEfiNINDO DADOS ND .wP/'. PARTE 2

. PRE '" EM71 DIAS . U P/<


m.HNCAM~

EMTRADAlrrItr.. Listoge m 8.14 Urn exemplo do lnstrvcdc type -pool contendo tipos e
,. constontes
1 typ e-pool i txl .
Z types :
ztxl_doll ars (16)
ztxl_li r a(l6)
J
4 constant s : ztxl_'Ilarn1"9_th reshol d
ztxl_ama 1gamat i on_date
5

Type Group'" ogara .

Para criar urn gropo de tipo;


type p decimals

t ype p decimal s O.
t ype 1 valu e 5000.

1. Comece no D ict ion ar y: Initial Screen (ca min ho do menu


Tools- > ABAP / 4 W ork bench, D evelopment- > AEAP/ 4 Dictionary).

l1k e sy -d etue value ' 19970305' .

2. Digi te a nome de seu grupo de ripe no campo Object N ame.

ANAUSE'"

A linho 1 indica 0 com ecc do grupo d e tipo e the cfribui um nome. As linhos
,. de 2 c 5 defin em t ypes e constants que podem ser utilizodos em quolquer

progromo .

1 re port ztxOSlS.
2 type -pcc l s ztxl.

3 data: begin of amer ican_sums .


4
pet t y_cash type ztx l_dollar s.
5
pay_out s typl! ztd _dollars ,
6
llll1p_sums t ype ztxl_dollars .
7
end of ameri can_sues ,
8
9 amer1ca"_sums-pay_outs ' 9500.03'.
10

11 if l/lll!r i can_sums-pay_outs > l u I_warning_t hre shol d.


12
write: I ' Warn i ng' . amer1can_slIIlIS -pay_out s .
13
' exceeds th res hol d' . ztxl_warning_threshold .
14
end1f.

defi~i~6es

exibida.

10. Pressione 0 botao Back na barn de ferrsmentas do aplicativo para


retorn ar a D ictionary: Initial Screen.

~~

linho 2 ,ind ui a s
do grup o
tipo zt xl no prog roma .. As ltnhos de
r AA3 linho
a 7 definem umo string de
utllhcndc a
zt xl _dol l ars do grupo
9 ctribul um valor para pay_outs e esse valor e compcrndo com
co mpo

3. Selecione 0 botso de op~ao Type Groups.


4. "Pressione 0 bcrao Create. A tela Typ e Group:c:o:t: C reate Text sed
5. Di gite uma descricac de seu grup o de tipo no campo Short T~xt.
6. Pressione 0 bono Save. A tela Create Obj ect C atalog Entry sera
exibida.
7. Pressione 0 borso Local Object. A tel. AEAP/ 4 Editor: Edit Type
Group sera exibida. Na primeira linha, a instru~ao t yee- pee1 r ,
aparecers, onde te o nom e de seu grop o de tipo . Se 0 nome nao
aparecer, voce devera digita-lo agora.
8. Nas linhas subseqilen tes, digit e as instI11~6es constants e types .
Todos os names devem comecar com t_, onde t e o nome de seu pool
de tipo.
9. Pressione.o bono Save na barn de [erramen t as do aplicativo.Na parte
inferior da janela, a mensagem Typ e group saved sed. exibida.

ENTiADllio.. J.Istagem 8.15 A utiliza~lio do grupo de tipo reduz 0 dcpltcccec de


,. c6digo para tomc r mois f6cil a mcnutencco

iHAUSf '"

lnicie a ScreenCom "'Howto Crea te 0

Par a excluir urn grupo de tipo, siga os passos de 1 a 3 do pr ocedimento


anterior e, em seguida, pr essione 0 boeao D elete na barra de ferrament as do
ap,licativo.

tipo

de tipo .

cc nstonte ztxl _warni n9_th r e sho l d do grvpo de tipo no linhc 1 1.

Se 0 grupo de ripo ja river side inclufdo, tentativas subseqaeotes para


incluf-lo serso ignoradas e nao causarao urn erro.
O s nomes do gropo de ripe podern ter de urn a cinco caracteres de
comprime nto e devem comecar com y ou z. Os tipos e constantes incluidos
em urn programa com a usa cia inst ru cjo typ e- pools sempr e terio visibilidade
glob al.

Criando urn grupo de tipo


Para criar urn gropo de tipo no Data Dictionary, utilize a seguinte proce diment a .

Resumo
As strings de campo sao com o as estrururas definidas dentro de seu
pro grama. Voce pode definir as strings utilizando data au tabl es. As
strings de campo definidas utilizando tables tern visibilidade global e
extema.
vccepode defmir seus pr6prios tipos de dados, ate mesrno tipos
estrururado s, utilizando a instrof:jao types. Os ripos definidos pelc
usuario reduzem a redu ndancia e tornam mais facil a manut encao.
Voce pede defmir urn gropo de tipo no D ata Di ctionary para fazer
com que os tipos deflnidos pelc usuario e constantes sejam reurilizfveis.

275

".. . w _ _ ...

276

'W'

'W'

..

__

"!'!""

CIA I, OEAttlMOO OADOS NOAS""',., PARTE 1

APRENDA 1M 21 DIA SABA'"

----'---------

IFa~a

Utilize um sublinhodo para foci litcr c


lelturc des names de vc riovels.

Nco utilize um trccc em urn no me de

vori6vel; um trccc delim ito os compo nenfes


de um o string de compo.

P&R

Workshop
o

Wo rksho p oferece duas maneiras de voce verificar 0 que aprendeu neste


capitu lo. A se~ao Teste oferece perguntas para ajuda r a solidificar seu entendimente do con teu do a.bordado e a se~ao Exer cfcic permire qu e voce pratiqu e 0
que aprendeu. Voce ped e enco nt rar as respostas as perguatas do teste e ao
exerclcios no Apendice B, "Respostas as perguntas e aos exercfcios".

Teste

o
o

Por que preciso criar strings de campo? Por que n ao posso


apenas utilizar simples variaveis?

As Strings de campo propo rcionam a voce urn mo do de organizar


suas variaveis em grup os. Quando voce river cente nas de varifveis
em urn prcgrama, a organizacao dessas varuveis em strings de
campo fad.com qu e a rela~ao entre as varieveis se to me ainda mais

para

clara. Utilizar strings de campo


agrupar as camp os tambe m
permitirf que voce execute uma .op eracao em urn grup o de
variaveis como se elas fossern con siderada s u ma dnica variwel,
Assim, por exemplo, se voce precisar mover 100 varifv eis, sed
possrvel, em geral, cadificar uma Unica in s tru~ao a fim de executar
o movim eoto de um a string de campo para uma ourra, em vez de
codificar 100 instrucoes de atribui~ao para cada variavel. Mover
uma dnica String de camp o sen tambem mais eficiente do que 100
insrrucoes move, com isso seu programa executara mais rapidamente . Voce vera nos capfrulo s que estao par vir que muitas
instrucoes po dem utilizar uma string de campo com o urn operando. Se voce puder utilizar as strings de camp o, voce tera
vantagens sabre as mesmas , send o assim elas econo mizarao tempo
para depura ~ao, bern como urn c6digo muito exte nso.

o
o

Por que devo utilizar meu pr6prio ripo estruturado em vez de


uma estrutura do DDIC? Eu Da O posse criar strings de campo
com ambos?
.

Sim, voc e pode. A funci on alid ade das esrru ru ras do DDIC e
bern mai s imporran te qu e a oferecida pel os -tip os estru rur ados,
po rque podem forn ecer r6 tulos e ajuda P I a F4. En tr etan to,
ty pes pede serutilizada para definircipos estru turados e aninhados
que ccntenham rabelas int ern as. 0 que nao acontece com as
estruturas do DDIC . Isso sera demonstrad o no Capfruic 12 na
se~ao sobre as tabelas int ernes.

1. Qual e a consta nte predefinida qu e pe de ser ut ilizada em urn programa ABAP. Q ual e 0 seu equivalence urilizandc urn literal?
2. Q uais sao as tipos de instrucao t ype que podem ser utiliza dos equal
eo ripe que pode ser definid o no Data Dictionary?

Exerdcio 1
Qual ea ourra forma de se declarer a variavel abaixo urilizando uma declaracac
-type"?
data : begin of usd_alllOunt.
hot el
type p decimals
r ent car t ype p decimals
pl ane
type p decimals
food
type p decimals
end of usd_aJIlOunt ,
begi n of &meX_pt.
hot el
type p dectee l s
re nt car typ e p decteat s
plane
type p cectsets
food
type p decimals
end of amex_pt.

2,
2,
2,
2.

2,
0,
O.
0,

Exerd cio 2
Qual e 0 resultado desre pro grarna?
report zb0816 .
dat a: begi n of f Id_stgl,
var l value ' 1' ,
va-z valu e ' 3',
var3 valu e ' 5' ,
var4 valu e '7',
ve-s val ue '9'.
var6 val ue ' 4' ,
var7 value' S',
varS value '6',
end of fld st gl.
f ld_stg2 11ke fld _stgl.
fld_stg2 fld _stgl.
write:
write :

I
I

f l d_st g2-var l, fld stgl -var2 , f ld stg2-varti . fld stgl- var3.


fl d_stg l -va rS. fl ( st g2-var 7, fl(stg2~var4. f l (st gl- varS.

277

9
Atribui~oes,

conversoes e ccilculos

Qbjetivos do ca pitulo
Depo is de concluir esee capitulo, voc e.sera capaz de:

Utilizar variaveis comuns do sistema e ser capaz de exibir au localizer


qualquer variavel de sistema

Utilizar a instrucao c1ear e comp reender seu efeitc sobre as varidveis

e Strings de campo

Execucar atribuicces utilizandc as instrucoes move e move-corre spondi ng

Prever e execu tar convers6es de dados utilizando as insrrucoes de

atribuic;ao
Codificar exp ressoes maremdricas

Antes de prosse guir


Os programas oeste enos capltul os subseqa ec tes utiliza m [crmaros de entrada
e saida que sao confi gurados com 05 padr6 es do usuario e podem ser dif ere ntes
de usuario para usuario. Ante s de prosseguir, seria um a boa ideia configurar
seus padr6e s de usufrio para que corresponclam co m os existences oest e livre,
de mod o que sua saida coincida com as listagens de salda apresentadas neste
livro.

http://_ .compUJ.com.br"

---- - 280

- - - -- DIA UTRIBUI(DES.CDHVERSOES Ec.ll!UlDS I

" RE NDA EM21 DIAS ABAr/4

Configure se~ padroes de usu ario agora, seguindo este procedimento:

1. Se voce estiver atualmente no sistema R/3, salve todo a seu t rabalho


agora.

2. A parrirde qualquer tela, selecione 0 caminho de menu System-> User


Profile-> U ser D efaults . A tela Ma i nta i n User: Oefaul ts sera exibida,
3. Na caixa de gropo Date Fonnat , selecione a bouo de opcac
YYIT!MMIDD.
4. Na caixa de gropo Decimal Notation, selecio ne a bcrso de op~o
Period.
5. Pressione a bono Save na ba rra de ferrameneas Application. Na pane
infe rio r da janela, a m ensagem Va l ues for user xxxxx saved sera
exibida, As alteracoes feitas em seu perfil de usuaric nao terao efeitc
.at e voce eferuar seu pr6xim o logon.

Figura 9 1

Esto e a estruturo
syst . f lo contem as
definil;6es de lodas
05 vori6veis de
sistemo. 0 boICo
Column Right;
Next role ume

co/unopor vel patO


o direita, fozendo
com que 0 extensao
totof

deShott Text

sejo vislJOlizodo.

6. Selecione a caminho de menu System-c-Log Off. A cain de dialogo


Log Off sen exibida,

7. P ressione 0 bono Yes. Voce esd. ccaectadc ao sistem a.


Seus nov os padree s de usudrio terao efeiro na pr6xima vez que voce
eferuar logon.

Tra balba ndo com va riaveis de sistema


NOVO lit..
TERMO"

Existem 176 va ridve is de sistema dispcnfveis dentro de coda programo ABAP/4 .


Voce noDpreciso defini-lcs: elce sec cvtomctlccmente definidas e estcc se mpre
d isponfveis.

Para exibir uma lista de variaveis de sistema, exiba a estrutura do DDIC,


syst. Voce pode exibi-la u tilizan do D ictio nary: Ini tial Screen (t ela inicial ) a u
de dais cliqu es no no m e de qualqu er variavel de siste m a em seu pr ograma . A
prim eira pagina de sys t e apr esentada na Figu ra 9.1.
Na Figura 9.1, os names de campo apa recem na primeira col una e as
descricees eseao a direita na co luna Short Text. Para visualizar a descricac
inteira, ro le para a direita ciando urn clique no ba ta o Column Rig ht; Next . . .
na pane inferio r da tela.
Par a localizar urn campo pelo nome. pressione a b atao Find na barr a de
ferramentas Standard. A tela Find Fi eld aparecera, solic itando 0 nome do
campo que voce deseja localizar.
alias de syst
sy (pronuncia-se sai). Em seu ccdigc, voce podera
utilizar as dais nom es. P ar exemplo, voce pode codificar sy-datum ou syst-da tum; sao exatamenre equivalentes. A maioria dos programadores utiliza sy. A
Tabela 9.1 contem uma pequena Iista de vari aveis de sistema comurnente
utilizadas. Variaveis adicionais serfo apre sentadas por todo a livro.

Tab ela 9.1 Vori6veis de sistema co mume nte utilizodos


Nome

Des(ri ~ao

sy-datum
syuze1t
sy- uname
sysubrc
sy-mandt
sypagno
sy-co1no

Data atuo l

sy-l tnno

Nu merc do linho de llstc de soldo atuol

sy-vline
sy-ul i ne
sy- rept d
sy-cprog
sy t code
sy-dbcnt

Horo ctuc l
Id do usu6rio otuol
Ultimo c6digo de retorno
Cliente de logo n
N umerc da p6gino de soldo otuol

Nurnero do coluna de SOldo atuol


Linho vertical
linh a horizonta l
Nome do relot6rio otuol
Nome do progrom o principal
C6digo do transol;0o otuol
Dentro de select, ccn tem a co nta dor de iterol;oo ctucl. Depots de

endse1ect , ccn tem a neme ro de linhcs que correspondem a


cl6usulo where.

A Listagem 9.1 mo st ra urn programa de exemplo que utiliza as variaveis


de sist em a.

281

282

APRENOA EM 21 OIAS ABA P'.

OIA UTlIIBU1\'El,CONVERsOEl EcALCUlOS

fHTRADA~ Listagem 9.1 Utilizondo vari6veis b6sicas de sistema


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

report zb0901.
ta bles ztx lhl.
parameters "landl
vr-tte : I 'Current
/ ' Cur ren t
/ ' Current
/ 'Vendors

date :' . sy-detum,

A linha 12 escre ve

0 mimero de ite raliao atual a partir da variavel de


sistema sy-d bcnt e urn nu mero de fabricante a partir de cada registro.

time : '. sy-uaet t ,

user: I . sy-uneme ,
~l ~nd l.

A linha 13 marca

where landl .. "land]


or der by 1f tm-.
wr ite : I sy-dbc nt , ztx lfal-l 1fnr.
endselect.
lli rite : / 5y- dbcnt, 'records found',
if sr-subrc <> O.
write: / ' No vendors exist f or count ry" ,

final do loo p sel ect / endsel ect .

Na linh a 15, 0 c6di go de retorno a partir de sel ect, existence na variavel


de sistema sy-subr c, e testado . Se zero, os registros foram encontrades . Se njio zero, nenhum registro foi encontrado e uma mensagem e
esc rira na lin ha 16.

~l andl.

endif.

c6digo na Listagem 9.1 produz esta safda:

Current
Current
' Cur r ent
Vendor s

A linha 14 escreve 0 ntimero total de iteracces do loop se l ect . Esse


mimero eigual ao mim er o de re gistros que coincidiram co rn a clausula
where utilizan do a variavel de sistema sy-dbcnt.

select * fr om ztxlfal

date: 1998/02 /22


time: 14:38 :24
user : KENGREEN'~OOD
having country code US
1 1040
2 1080
3 1090
4 2000
5 VI
6 V2
7 V3
8 V4'

9 V5
10 Y7
10 records found

INjllSE ~

A linh a 11 faz com que as registr os sejam classificados em ordem


ascen dent e po r 1i fn r (num ero do fabricante).

t.

17

siiDI ~

A linha 10 res rring e a s el e~ao de registros somence para as que tern


urn codigc de pais igu al ao inserido na tela de selecao.

li lce ztxlfal -l andl obl igatory def ault ' US' .

having country code ' .

A linha2 define uma st rin g de campo zt xl fal exaram en te igual atabela


com 0 mesmo nome.

A linha 3 define urn anic o parametro de entrada "Iendt.

N as linhas de 4 a 6, a data arual, hora e id do usua ri o sao totalme nte


escritos a partir das varidveis de sistema sy- datu m, sy- uae t t e sy- uname .

A linha 7 escreve 0 c6di go do pais, que foi inserido no campo de


entrada de pardmetro "1andl , na tel a de selec ao .

A linha 8 escreve uma linha em branco.


A linha 9 seleciona regis t ro s da tabela ztxlfal e os coloca, u rn por vez,
na strin g de campo zt xl f a l.

' . d sistem
.
La ca Iza o d a yanayelse
a
" deran do urn c6digo de entrada como urn pararnerro de entrada, suponha
Consi
que voce prec ise escre ver urn programa qu e escreva a descri/iao do pais a part ir
da tabela ztxt005t no id ioma de logon atual do usuario. Como voce deve se
lembrar , ztxt005t e uma tabela de texto contendo descricees de c6digo de p ais
em diversos idiomas. A chave primaria e mandt, spras (idioma) e la ndl. U ma
SOIUiao de exemplo e m ostrada na Listagem 9.2, m as esta faltando uma pa rte
cru cial de info rmacfo na linha 5: 0 valo r do idioma de logon atual.
N a Listagem 9.2 esta faltando uma variavel n a posii ao indicada pelo po nto
de inrerrogacao. Gerahnente, quando estive r tr abalhando com 0 ABAP/ 4, voce
podera se deparar com 0 desafio de localizar variaveis contendo as inf orm aqdes
nec essdrias.

ENTRADA ~

Lista ge m 9.2 Um program a 'd e exemplo com umo vari 6ve l sy faltando

1 r eport zt x0902.
2 tab 1es ztxt0 05t.
3 par ameters landl l i ke ztxlfal -landl obligatory default 'US ' .
4 select s i ngle * f r om zt xt005t
5
where spr as ?
Yid ioma de l ogon atu e l
6
and 1and1 "landl.
7 ; f sy-subrc = O.
8
write: 'Descri ption:', ztxt005t -l andx.
9 else.
10
write: 'No description exi st s for', "l andf.
11
endif.

283

284

..

.. - .....

~ ~

.... "!I" -

'"4!!!'" -

- -"'!W- OIA 9,ATRIBUI\OES, CDNYERSOES EcAlQJlDS

APRENDA EM21 DIAS ABApt!

iNius~ ~

A linha 2 define uma String de campo ztxtOOSt exatamente igual a


tabela com a mesmo nome.
A linha 3 define urn unico pardmerro de entrada "l andl .
As Iinhas de 4 a 6 se1ecionam um Unico registro a partir da tabela
zt xt 005t par a a Strin g de campo ztxt005t urilizan do 0 idioma de logon
atual de uma fonte ainda desconhecida e 0 c6digo do pais do paramer ro
"landf . Nao ha endselect ji que se trata de uma ins trucio sel ect
sing 1e. Ela retoma apenas urn unico regisrro: nenhum loop e criado.
A linha 7 verifica o c6digo de retorno a partir de s elect e, se urn
registro civer sido encontrado , escreverf a descricfo na linha 8. Se urn
regisrro nio tiver sido enc ontrado, a linha 10 escreverd uma mensagem
apropriada.

idioms de logon atual esta disponfvel a partir de uma varisvel de


sistema. Infelizmente, para ut ilizar 0 batao Find na barra de [erramentas
Ap plic ation, voce precisardsabe r 0 nome do campo. Se voce nao sauber 0 nome
do campo , entaO 0 bene Find naa tera grande utilizacio. Em vez disso, utilize
a seguinte procedimento par a localizar as descrifoes da esrru tu ra SY5t.
Este proced imento emuito prntico, po is pede ser utilizodo pora local ize r
as descricces de quo lq ue r estrvturo ou to belo.
~REEHCAM. 1Ilr.. Inide .ogora a ScreenC om "'How to Searc h the Descriptions of

,. Table .

8. Pressione a t ecla Enter. A tela Find sera exibida.


9. No campo Search FOf, digite uma string de caract ere s a ser localizada.
Se voce estiver procur ando 0 idicma de logon atual, _devers digitar
1anguage. Caraceeres curiaga DaO sio permitidos.

10. Pressione 0 boti o Find. Vma segunda tela Find aparecera mostrando
as linhas que con tern 0 texto di git ado. As corr espondencias sao

realcadas.
11. Para selecionar uma correspondencia, de urn iinico clique em uma
palavra realcada. voce retornara a tela Print Preview for XD:t'j a lista
sera rolada para a linha par voce selecionada e a cursor sera posicionado n aquela Iinha.

12. Para [ocalizar novamente, pressione a seta para baixo ao final do


campo C ommand na barra de ferramentas Stan dard. Uma caixa
sus pe nse aparecerf contendo as comandos rec entemente digirados.

13. Role, se necessario, para

comando esc e de urn clique nele. esc

aparecerf no campo do comacdo.

14. Pressione a teela Enter. A tela Find sera n ovamente exibida..


15. Press ione 0 bot i o Find . A busca e executada ccmecandc na linha
atual. A segunda tela Find sera novamente exib ida e as correspondencias serio mos tradas .
16. D e urn unico clique em qualquer palavra realcada p ara exibi-la.

Structure o r

Para localizar as descricoes de um a estrutura a u ta bela:


1. Co mece na tela do D ictionary: Tab le/Structure: Display Fields.
2. SeIecione 0 carninho de menu Table- > P rint. A tela Prin t Table
Manual sera exibida. Aq ui voce especifica quais deta lhes deseja ver.
3. Marque to dos os camp os e pressio ne 0 botac Continue. A tela Print:
sera exibida.
4. Se 0 campo O utput Device estiver em branco, posicione 0 cursor no
campo, pressione a seta para baixo e se1ecion e qualqu er dispo sitivo de
saida. (Nao imp ona qual dispositivo sera selecionado; ele D aO sera
ut ilizado .)

5. P ressione 0 botao P rint P review na parte inferior da tela. A tela Pri nt


Pr eview for xxxx Page 00001 of nnnnn sera exibida.
6. Selecione 0 caminho de menu Goto > List Display. A tela Print
P review for %D:t' sera exibida.
7. Dig ite %sc no campo Command cia barn de ferramentas Standa rd.

Pora referenda futuro, voce pcdero sa lvor a listc de Print Preview for
xxxx em um crqvivc de textc na sua unida de de disco ngido. Pora isso,

a pa rtir do tele Print Preview for lOOCX, selecicne 0 co minho de menu


System-c-Llst-c-Scve -c-Lcccl File. Ne tela Seve Ust in File ... ,seledone
o boroo de o~oo Unconverted e pressione 0 borec Continue. No tela
Tronsfer list to e local File, digite 0 nom e d e um orquivo de textc, por
exernplc, c: \temp\syst.txt e, em seguld o, presslone 0 botec OK.
lsso crioro 0 crq uivc em sue unidade de disco rlgido. Voe! pode obrir
e pesquisc-lc ufilizondo 0 WordPed em qualquer me me nto, sem fer de
utilizer 0 procedimento "'C o mo localize r os descri c;6es de ume estrvturo
ou tabelo'" mostrodo odmo .

Seguindo 0 procedimento anterior, voce pede p ercebe r que 0 idioma de


logon atual estava armazenado em 5y1 angu. 0 programa complete apuece na
Lisugem 9.3.

285

286

D~ 9,mIBUI\05,CONVElS05 EckrulDS

APREN DA EM21 DIAS ABAPH

ENTRADA'" Listagem 9.3 A Ustage m 9.2


,. foltondo no linha 5

com. a

cdtccc do vcne.. .el sy que estova

1 report 2tx0903.
2 tables ztx t005t.
3 par~te rs "la nd! 11ke ztxl fal -landl obligatory default 'US'.
4 sel ect single" froll ztxtOOSt

continua
where spra s .. sy-langu
and land! .. "lendt ,

Sintoxe do instrucco cl ear

!!!

i di oma de l ogon atual

A seguir, veja a sintaxe cia ins tru~ao c1ear.

clear vI [with -e : wit h 'A' : with HUll]

onde:

1ft

. 'A'

7 1f sy- subrc .. O.
9

else . "

S.\iOA ~

o ccdigo na Lista gem 9.3 p roduz esta salda:

Utilizando a adi~o wi th v2, a pr imeiro byte de 1'2 sera utilizado pan


pr een cher 0 ccmprimento inteiro de vl , Se vI foruma strin g de campo,
ela sera tratada como uma variwel do tipo c.

Descript1on : United Sta t es

JJ1.i.uSE'" A tinho 5 limite a inst rUl; ao se l ect 0 retomor openos as registros de ztxt 005t
,. que tAm um c6digo de idio mo iguol 00 ldlc mc de logon atu a l. Pelo fota de
mandt set outomotico mente od icio na do no cornecc de codo wh er e, a chc ve primario e
ogora co mpletome nte espedficodo e um enicc e exclusive regi5tro e retom odo. Observ e
que a Indice prim6rio suporto esse instrui700 selec t , portonto as compos do c16usulo
where fora m espedficodos no mesmo o rdem em que oparecem no fndice prim6rio .

Instru<;6 es de atribui<;oo
NOVO...

lERMO,.

Utilizando a adit;ao wit h 'A', ' 0 comprimento inte irc de vt sera."


preenchidc com 0 uso do prim eiro byte do lit eral ' A' .

U tilizando a adit;ao wi th NULL,


comprimento inteiro de 1/1 sera
preenchido c,om zeros hexadecimais.
A Lisragem 9.4 mostra urn pro grama de exemplo que limp a as variaveis
e st rings de campo.

Umo ;ns tru~oo de otribu; o ctrlbul um vo lar perc umo vcrio vel ou string de
ca mpo : Tres lnstrucoes de atribuit;oo sao co mumente utilizodos:

A listogem 9.4 utilizo umo novo odil;cO denominodo no- ga p no


instrut;c o wr; teo No-gap fez com que a proximo volar de sctdo sejo

move

move-corresponding

clear

Utilizando a
NOVO...
HUD~

eum literal de qualquer comprimento.

Se vl for uma varisvel do tipo c, sem quaisquer ad.i~6es, ela sera


preenchida com espaccs em branco. Se 1/1 for de qu alquer outre tipo
de dado, ela sen preenchid a com zeros. Se vr for uma string de campo,
seus componentes serac configurados com espar;os em branco ou
.
zeros depe ndecdc do tipos de dado de cada urn.

write: '!'to desc ription e xists for', " l andl .


endif .

10
11

e v2 sao ac m es de strin g de campo au variaveis.

O s seguintes pontos se aplicam:

write: 'Description :' , ztxt 005t - l andx.

vt

instru~ao

escrito imedioto mente depois do otuol sem urn espccc interven'ente .

c l ear

A instrui700 c l ear co nfig ura a volar de uma vori6vel au umo string de compo
como zero . Se 0 tipo d e dodo for C, 0 volar, par sua vez, ser6 conf igurodo como

espccos e m bronco. Os espoccs ern bronco e zeros 500 conhecidos como va/ores inid ois
podr6o . Frequ entemente, e co mentodo que cl ear otribui velcres inicia is podrcc a
vori6veis. '

EII1UOA~

Listagem 9.4 Vari 6veis configurodcs para espccos em bronco o u zeros


pete lnstrucoo cl ear

1 repo r-t zt xD9D4.


2 tab l es zt xlfal.
3 data : fl {2} type c
4
f2
type i
5
f3
type p
6
f4
type f
7
f5 (3} typ e n
a
f6
type d
typet
9
f7
10
fa
type x

value ' AB' .


valu e 12345.
value 12345 .
value 'lEl',
valu e '7 89' .
valu e ' 19980101' ,
villue'1201'.
val ue ' M' .

287

288

- - - - - _- _

- _

.- _

__

-..
- =c--"-=---

D~ HTllIBUI\OES,CDNVERSOES EtiLruLDS

APR ENDAEM21 DIAl AWl'


11
begi n of 51,
12
f1(3) type c valu e 'XYZ',
13
f2
type 1 val ue 123456,
14
end of 51.
15 zt xl fa l - l1 f nr - 'XXX'.
16 ztxlfal-landl 'CA' .
17 write : / 'fl-' " no-g ap, fl no-gap,
,
18
/ ' f 2- ' " no-gap, f2 no-gap . I ' l l
19
/ ' fJ-' " no-g ap, f 3 nc-qep, "~'I
20
/ '14-' " no-gap , f4 no-gap ,
21
/ 'f5- '" no-gap, f5 no-gap,
22
/ ' f 6- ' " no-gap. f 6 no-gap,
,
23
/ ' 17_'" no-q ap, 17 no-gap, ""
24
/ 'fa- '" no-g ap, f8 no- gap.
25
/ 'sl -fl- '" no-ga p, s l-fl no- gap,
,
26
/ 'sl-f2- ' " no~gap. 51-12 no-gap, ",.
27
.I 'ztxlfal-li f nr- '" no- gap. ztx l fa l - 1i f nr no-gap,
28
/ ' ztx lfal-landl-", no-g ap. ztx l f al - 1andl no-gap,
29 char: fl , rz, f3 , f 4. f5, rs, n , f8 , 51, ztx l fa l.
30 wri te : / ' fl - ' " no-g ap, fl no-ga p,
31
/ ' f2-' " no-ga p, f 2 no- gap.
32
/ ' f3-' " no-ga p, f 3 no-g ap,
33
/ ' 14-' " no-qap, f 4 no-gap,
34
/ 'f5-'" no-gap, 15 no- gap,
35
/ 'f6-' " no-gap, f6 ac-qe p, " ",
36
/ ' f7-' " n o ~ g a p . n no- gap,
37
/ ' f a-' " no-gap , f a no- gap,
38
/ 'sl-fl - ' " no-gap, sl -fl no-g ap,
39
/ ' slf2-'" no-gap , :;1-12 no- gap,
40
/ 'z txl fa l -1i f nr-' " no-gap. zbl fa l - lf f nr no-gap,
41
/ 'ztxlfal-landl- ' " no-gap, zt xlfal-landl no- gap,

o c6digo na Lisragem 9.4 pr oduz esta saida:


SAiD! ~

fl - 'AB'
f 2- '
12.3 45 '
f3 -'
12,345
f4 -' 1. 000000000000000+01 '
f 5-'789'
16- ' 1998010 1'
17-' 120100'
fa-'M '
sl -fl-'XYl'

sr-rz-:

123 , 456

zt xl fa l- 1i f nr- ' XXX


ztxl f al - 1andl - ' CA
fl-'
f2-'
0 '
f3'
0 '
f4-' O. OOOOOOOOOOOOOOOE+OO '
f5 -'000 '
f6 - ' 00000000 '

17- ' 000000'


fa -'OO'
s l-fl-'
s lfl-'
0
ztxlfal - lifnr= '
ztx lfal-l andl- '

llil5! ~

Alinha2definea stringdec.mpo zt xlf. 1.

As linhas de 4 a 10 definem as varifveis de cada tipc e lhes atribui


valores-p adci o.

Outra string de campo, s1, edefinida na linha 11, com valores-padrao


para cada componente.
Sao atribufdos valores a dois dos compone nt es da string de campo
zt xlfal nas linhas 15 e 16.
Todas as variaveis e componentes de strings de campo sao configurados com zeros e espar;os em branco pela instrucao clear na linha 29 ..
Tambem se pe de dize r que codas as variaveis e compone~tes sao
configurados com oelores iniciaispat/rao.

I ll'

As insrrucoes wri te que co megam na linha 30 descrevem totalmente


as varisveis e os componentes que Ioram ~POSI dentro de aspas
simples e sem espaccs in te rvenientes entre as aspas e os valcres ao seu
redor.
-

A Listagem 9.5 mostra urn pr ograma doe exemplo qu e preench e asvaraveis

e 05 componentes de st rings de campo com valores diferentes de espalios ou


,','

zeros.

EMTRADA'" Listagem 9.5 Vo ri6veis preen chidos com cora de res difere ntes de

espOl; os em bronco o u zeros utilizondo a adi<;60 wi th do instrur;ao c1 ear

1 r epor t ztx0905.
2 tab l es zt xl fa l.
3 data: fl(2) type c value 'AB ',
4
f2(2) type c,
5
f3
typ e i val ue 12345,
6
begin of sl,
7
H(3) type c val ue ' XYZI ,
8
f2
type 1 val ue 123456.
g
end of sl.
10 writ e: / 'fl '" no-gap, fl no-g ap, -" " ,
11
I 'f2>< '" no-gap. f2 no~gap . "" ,
12
/ ' f3'"" no-gap, f3 no-gap , " " ,
13
/ 'sl~f1-' " no-gap, sl-fl no-gap,
14
/ ' sl f 2" ' " no- gap, sl-f2 no-gap .
15
/ 'ztxlfal-l1fnr=' " no- gap, zt xlfal - 1H nr no-gap,
16
I 'ztxlfal-land l-' " no- gap, zt xlfal~1a nd l no-gap.

""

289

290

, m N"

D~ UTl<lBu~6ES, CONVEISOES EtllrulDS

EM 21 DIAl U'PI4

17

/.

Utiliza ndo a inst ru <;tio move

18 cl ear: f1 with 'X'.


19
12 with fl .

20
21
22
23 write :
24

25
26
27
28
29

f3 with 3.
51 with 'X'.
ztxlfal wi t h O.
/ ' 11'" nc-cep , fl
I .' fl ' " no- gap. f2
/ ' f3. '" no-gap, f3
/ 's l-fl. '" no-gap,
/ ' s l -12. 1 1 1 no-gap,
/ 'ztxlfal-lffnr."
/ 'ztx lfal~lll.ndl=' "
I

no- gap, "".


no-gap,

no-gap, I " '.


sl-fl no-gap,
sl~f2 no-gap,
no-gap, zt xlfal-l 1fnr no-gap,
no-gap, ztx lfal-lll.ndl no-gap,

o c6digo na Listagem 9.5 produz esta salda:


SAiDA ~

fl 'AB'
f2'"

f3'"
12.345 '
sl-fl ' XYZ
sl -f2. > 123,456
zt"l f a1- 11fn r- '

1ft

Sintaxe do i nstru~ii o move


A segu ir, veja a sintaxe da iD:stnJt;ao move. Os operadores e operan dos devem
ser separados por espaccs. Atribui t;io multipla ocorre da direita para a
esquerda.
move vI t o '112.

ou

vz "

'Ill.

'112 'Ill "'vm 'lin

ztxl f al - linen-'

ou

n 'xx'

IIICIve rl[+N(L )] tov2[+N(L )] .

ou

51-fla ' XXX'

51f2'1482184792 '

,2[+N(L)] , 1[+N(L)] .

ztx l fa l -11 fnr- ''"""'" ,

onde:

ztxl ta l - landl- '11#'

Ul

ou

f Za lXX '
13'50, 529,027

ANALISE

Para mover urn valor de urn campo para outre , utilize a instrucao nove. 0
conteddo ~teiro ou urna pane do coneeudo pode ser movida. Em vez de move,
voce pede utilizar 0 operador de atribuicio "', como mostrado a seguir. Ambos
sao referidos como um a in struca o move.

A Iinha 18 preenche fl com a letra X.


A linha 19 preenche f2 com

primeiro byte de f t, tambem urn X.

A linh a 20 preenche f3 com 0 primeiro byte do lit eral 3. Urn literal


numerico com ate nove dfgitcs de eomprimento e armazenado como
urn inteiro de quatro bytes (veja a sCliao seguinte "C enversac de
clades"). f3 epreenehido com 0 primeiro byte desse inteiro de quatro
bytes, atribuindo essencialmenee lixo a f3.

A linha 21 trata s I como uma varifvel do tipo c eo preenche com x.


o componente fl e do tipo c, portanto recebe valores validcs. 0
componente f 2 e do tipo 1, ponanto recebe valores invdlidos.
A Stringde campo zt xl fa l epreenchida com 0 primeiro byte do inteiro
de quatre bytes de valor 0, preenehendo-o com lixo. 0 Iixo, neste case,
e exibidc com indicadores de mimero (I ,.

e a variavel ou string de campo de envio.

vI

e a varifvel ou String de campo de recebimento.


N e urn deslocamento a partir do inicio cia variavei au string de campo.

Le o namerc de bytes que devem ser movido s.

v2

Na Tabela 9.1, dois exemplos si o .mostrados cia maneira correra e cia


maneira incorreta de codificar as instrucoes de atribui~o. A codificacsc incorreta resulta em urn erro de sintaxe.

Correta

Incorreta

fl - f2 .
fl -f2 -f3.

n-ra ,

n- ra-ra.

291

292

CIA 9,ATRIBUI\OES,COHVERSOES EckcuLDS

"mDA E. 21 DlAS A'AP/!

Convers6es de dados
KOYO'"

lERMO~

Se duos voricveis tiverem tipo s de dodos au com primenfos diferentes , as dodos


seruc ccnvertldos quando movidcs. Esse procedlm ento
deno minoclo umo

Do tipo

Para

odoptor;oo Qutom6 tica. Se as comprimentos dos vcrlcvels de en vio e de recebimento ndo


correspo nderem, umo odc ptocec cutcmcticc do comprimento sera executoda . Se ostipos
de dodos noo cor responclerem, umo cdcp tccec outom6tica de fipo sem exec utoclo.

pade ser visto na Tabela 9.3.Nessa tabela,0 campo de envic e 0 campo "From".

Tipo

Quando otribuir para um


campo menor, 0 valor
' from sera:
Truncodo a direita

c
x

Preenchldc

c direito com zeros

Tru'ncodo

n
p

Preenchido
Preenchido

c esque rdo com zeros

Truncodo a esque rdo


Atribuido se 0 valor numerico se
odeq uor 00 compo I to I

c esquerdo com zeros

a direito

compo de envic deve canter openos umo dafo v6lido no


forrncto YYYYMMDD. Se e sse noDfor 0 coso, um erro noD
ocorre~6 ; em vez disso, um valor lnvcfldc sere otrrburdc 0 0
compo de recebimenfo. as re sultodo s do ufilizor;oo desse
volor sao lndefinidc s.

o ca mpo de envic deve ter openos um hcrcric va lido no


formoto HHMMSS. Se esse ne e for 0 coso, urn erro nco
ocorre r6; por suo vez, urn vclo r lnvclldc sera otrtburdo 00
compo de receblmento . as resultodos do utilizor;oo desse
volar sao indefinidc s.

o compo de envlc e ono lisad o do esquerdc paro a direita e

Os tipos de dados restantes (t , i, d e t ) sao todos de urn comprimento


fixo, de forma que os campos de envio e de recebimento terao sempre 0 mesmo
comprimento se fore m do mesmo tipo de dado.
As regras para adaptacoes de tipo sao fornecidas na Tabela 9.4. As regras
de conversac para 0 tipc i sao iguais as regras para 0 tipo p. Entre elas escio
inclufdas as convers6es com comportamento incomum. Os pontos que devem
ser observados SaO:
A compactacfo peculiar executada para as tipos de c a n.
A capacidade de atribuir valores invalidos aos tip os d e t.
0 tratamento desigual de caracte res invslidcs durante a conversao dos
tipos de c a x.
A utili~o inesperada do byte de sinalreServado em convers6es de ppara c.
Urn campo c completamente em braneo e converti do par a urn campo
p com urn valor zero .

o compo de envic pode cante r openos ncme rcs, um cnicc

somente os d rgitos de 0 a 9 seruo transferidos pore a cam po


de recebimento (a linha do a direito) e, cle m dissc, sere
preenchido esquerdo com zeros. Tados as outros coracteres
soo simplesmente ignorod os.

Se 0 va lor nurnericc for grande


demois para 0 compo de
recebimento, um curto dump
ocorrer6 .

0 usa de * para indicar estouro em CODversoes de p para c.

Regras de eeevereee

a direito com espc ccs

Preenchtdc
em bronco

tipo

seporodor decimol e um sina l opcio nol. 0 sinol pode ser


inlciulou final. Os espor;os em bronco podem oporecer nos
do is lodos do valor , E alinhodo a direito e preench ido a
esque rdo com zeros. Um campo de envio completcme nte em
bronco e cc nvertido poro zero.

Se as tipos de dados dos camposde envio e de recebimentoforem as mesmos,


mas as comprimentos nao, uma adaptaciode comprimentcseraexecutada, como

Quando atribu ir pa ra
u m campo maior, 0 valor
'from' sera:

Os valores v6lidos poro 0 ca mpo de envio sao 0-9 e lefros


moiusculcs A-F. 0 valor e olinhodo c esquerdo e pree nchido
direitc com zeros au trunco do a d ireito. lodos os ccrocteres
ap6s 0 primeiro va lor lnvclldc no compo de envlo sdc
ignorado s.

o valor ealinhodo (] dtreitc no co mpo de recebirnentc , co mo


byte mois (] direilo reservcdo paro um sinal finol. a sina l

somenfe sere exibido se 0 nvrnerc for neqofivo: portanto,


numeros positives seriio alinha dos c direito com urn onico
espoco em branco final. Coso VOCE! tente mover um valor
positivo que contenho a mesrnc quon tido de de digitos
suportoda pelo comprimento do ca mpo de recebimento, 0
sistema utilizora 0 comprime nto inteiro do compo de
recebimento para o rmozenar 0 valor sem reservor 0 byte mots
a dlreitc poro 0 sinol. Depois de conside ror 0 que foi
explicodo, se a valor "no campo de envlc noo se adoptor 0 0
compo de recebimento, 0 numero ser6 fruncodo a esq uerd c.
Se 0 truncomento tiver oco rrido, 0 slstemo indicor6 lese
substituindo a digito mois a esquerdo po r um asterisco (*l. Se
o va lor se odaptor 00 com po de rece bimento, os zeros iniciais
serOo suprimidos. Se 0 camp o de envio for iguol a zero, 0
compo de recebimento re cebera um unico zero.

293

294

DIA 9,,mBUI\05,CONI'R5ii5 EcALCUlOS

mE'" EM 21 DIAS " " "

26 fe
27 fc
28 fe
29 fe
30 fe
31 fe
32 fp

Tabela 9.4 Confinuccdo


Do tipo

Para

tipo

Regras de eenve reee

o ncmerc e interpretc do como 0 nc me ro de dios desde


000 1/01/01, convertidc em umo doto e a rmczen odo
intemomente no fo rmctc

YYYYMMDD.

meio-nolte, convertido em 24 heros e a rmazenado


A dote

HHMMSS.

e convertida em um valo r que repre sento 0

silDi ~

numero de

dlcs desde 000 1/01/01 .


t

writ e:
write :
write:
write :
writ e:
writ e:
wr1te :

/
/
/
/
/
/
/

fp1,
fp2,
fp3.
f p4.
fp5 ,
fp6,
' "

, tc, 'ri ghtmost byte reserved fo r sign'.

>,
>,
>,
>,
>,
>.

tc ,
t c,
f c,
t c,
t c,

' only negati . . e nUlllbers use i t , but ' .


'+ ve nurns th at need it use it t oo' .

'o.. . er fl ow i ndi cat ed by lead ing *' .


'l eading zeros are suppressed' .
'z ero in zero out ' .
f p, ' bla nks i n zero out ' .

o numero e interpretado como 0 ncm erc de seg undos desde


intem omente no fcrmct o

.. fpl.
fp2.
.. fp3 .
;; fp4.
.. fpS.
.. fp6 .
;; , ".

a hor6r io e convert ido em urn nvmerc que repr esento 0


numerc de segundos desde meio-nclte.

Para urna lista completa de regras de conversao, consulte a documentacio

de palavra-chave do ABAP/4 para a instru cao move. 0 procedimento para


exibi-la segue na proxima se!Sao.
A Listagem 9.6 contem urn progra m~ de demons rracao que executa
\,
co nvers6e s de dados de exempl o.

EHTRADA~ Listagem 9.6 Convers6es de dodos de exemplo


1 report ztx0906.
"define uma constante denomin ada '> '
2 const ants >(3) value '..>' ,
3 data: fc (10) type c . . al ue '-AIB2C3 . 4' ,
4
fo (10) type n,
5
fp
t ype p,
6
fd
t ype d,
7
ft
t ype t ,
8
f x(4) t ype x,
9
fel (5) type e alue '_1234' ,
10
fe2(5) type e al ue ' 1234- ' ,
11
f pl
type p val ue 123456789;
12
fp2
t ype p al ue '123456789-' .
13
f p3
type p alue 1234567899,
14
fp4 '
type p alue 12345678901,
15
fp5
ty pe p atue 12345,
16
fp6
type p value O.
17
18 f n .. f e.
writ e: / fc , s-, fn, "ncn-rturte r-t c chars are i gnored' .
19 fd > ' ABCDE '. write : / fd, ' dat e and t ime f iel ds are invalid '.
20 ft .. ' ABCDE' . write : / f t , ' when you lo ad t hemwith junk' .
21 fp " sy-datum. wri t e: / sy- datum, >. fp , ' d->p: days since 0001/01/01 '.
22 fp" sy-uzert , write : / sy- uzet t , >, fp, ' d->t : sees sinc e m1dnig ht' .
23 fx " ' M B4' . write: / ' M B4' , >, fx, 'i9nOre all after in valid char ' .
24 f p fel.
write: / fe1, >, t p, 'allows le adi n9 si9n ' .
25 fp ;; fc 2.
write : / f e2, >, f p, ' also all ows tra il in9 si gn' .

ccdigc na Listagem 9.6 produz a seguinte said a:

-A182C3.4 > 0000001234 non-numer ic char s are ignore d


E ABCD date and t ime fi el ds are in va11d
ABCOEO when you load them wit h j unk
1998/02/22 ..,
729.443 d->p: days sinc e 0001/ 01/0 1
14:57:05 . ,,>
53,825 d->t: sees since midnight
.4.484 > .4.4000000 ig nore all af ter in.. . a11d char
-1234 >
1,234- allows l eading sign
1234~
1,234- al so allows trailing sign
123, 456, 789
> 123456789 ri ght most byte reserved for sig n
123,456,789- > 123456789 only negative nwnbers use it , but
1,2 34,567, 899
> 1234567899 + e nurns that need t t use it t oo
12. 345, 678,901 . 0 '*345678901 o erflow i ndi cat ed by l eadi ng *
12.345 u>
12345 lead i ng zeros are suppresse d
o .. a>
0 zero in :s zero out
>
0 blanks in zero out

.... lnicle o~oro 0 ScreenCom "'How to Display the Conversion Rules in the ABAP/4
Keyword Documentation"'.

SCRHNCAM,.

P ara exibir as regras de conversjio na documentaqac de palavra-chave do

ABAP /4:

l. Comece no ABAP/ 4 Editor: Ini ti al Screen.

2. Selecione 0 caminho de menu U tilities- > ABAP/ 4 Key Word doc. A


tela D isplay Structure: ABAP/4 SAP 's 4GL Programming Language
sera exibida.
3. P ressione 0 botao Find na ber ra de ferramentas App lication. A caixa
de dialogo Search C hapter T itl es sera. exibida.

4. No campo Fin d, digite move.


N a caixa de gru po Type of Search} selecione 0 botao de opcsc From
Stru ct. Start.
6. Pressione 0 bot ao C ont inue. A caixa de dialogo desaparecerd e a linha
move sera realcada.
7. De urn clique duplo na linha real<;ada. A tela Dis play H yp ertext: se ra
exib ida.
infcio da tabela de
8. Pressione a te cla Page Down duas vezes.
coeversao sera exibido .

S.

,
l

295

296

APR U DA EM21 DIAS AIAP/4

Subcampos
NOVO ...

1IIlIO ,.

A porte de um compo referendodo pete esped fico<;oo de um deslcccmentc


e/ou comprimento e denominodo subcompo .

Sintcxe de um subccmpo
'1 ["][( Lll ,2[-c ][(Lll.

8 fl (1)
9 'ltr1te
10 fl (1)
11 'It1"He
12 fl+4
13 wr ite
14 fl( 3)
15 srtte

onde:
vl e v2 sao nomes de string de campo ou de varifvel.

0 deslocarnento au comprimento
presentes.
Se 0 deslocamento
come cc do camp o.

IUO

camp o de envio ou de

e opcional , Ambos podem estar

for especificado,

Se 0 cornprime n to nao for especificado,


final do campo.

subcampo iniciara no

subcampo se estendera ao

Nenhum espa~o pode ser utilizad o dentro da especificacao do subcampo.


0 deslocamenr o, quan do presenre , sempre serap recedido por um sinal
de mais (+).

0 comprim en ro, quando pr esente, sempre estara entre parenreses.


A Listagem 9.7 mostra urn programa de exemplo que re~liza atribuicdes
e utiliza sub campos.
ENTlADAIilIrr.. Listagem 9.7 Movendo umo porte de um compo utilizondo umc
" otribui~60 de subcompo
1 r epor t ztx0907.
data : fl(7),
f2(7).

f1

.. 'BOY '.
f2
.. ' BIG' .
fl+O(l) .. ' T' .
'!trite / fl .

fl .
f1.
12(3).
fl.

BOY BOY
BIG BOY

IHius!~

U rn subcampo po de ser especificado para


recebimento ou para amb os.

2
3
4
S
6
7

I n.

mesmo que: fl+O(l) .. 'J'.


,
mesmo que: fl(l) f2 (1).
-fl agora contem 'BOY
lIl@Smo que : fl+4(3) .. fl (3 ).
fl agora cont~ '60Y BOY '.
-mesmo que: fl+O(3) f2+O (3).
-fl agora contem 'BIG BOY ' .

.f1 agora contern 'JOY

TOT
JOT
BOT

eurn deslocamenro baseado em zero desde 0 inicio do campo.


L e urn comprimento em bytes .

Osseguinres pontos se aplicam:

' J' .
fl .
12.

o c6digo na Listagem 9.7 produz esta safda:

-meSllO que: mover ' BOY ' para fI.


-Ilesmo que: ee ver ' BIG' para f2 .
fl agora c ont~m 'TOY

Na linha 6, urn des locamento de 0 e urn compriment o de 1 sao


utilizados para especificar urn subcampo consistindo apenas no primeiro byte de fl. Atribuir a tetra IT I. portantc, pr eenchera somente
o primeiro byte de fl.
Na linha 8, 0 d eslocamento de 0 e ign o rado. 0 e 0 padrao , portanto
subcampo sed 0 mesmo que 0 da linha 6.

Na linha 10, 0 mesmo subcampo eutilizado, mas dessa vez a arribuicac


e a partir de f 2. Somence 0 primeirc byte e trans~erido de fZ, porq~e
o subcampo de recebimentc tern apenas urn U01 CO byt e de comprtmente.
Na linha 12, urn deslocamento de 4 especifica que 0 subcampo em f1
comeca no quinto byte e continua ate 0 final de fl, to mando-c tr~s
bytes mais comprido. 0 campo de envio efl , faaeodo com que os tr~s
primeiros bytes de fl sejam duplicados nas pc sicoes de 4 a 6.
Na linha 14, os tres primeiros bytes de f 2 substituem as tres primeiros
bytes de fl.

Utiliza ndo move com strings de campo


Com move, urn no me de String de campo especificado sem urn nome de
componente e tratado como sendo uma variavel do tipo c. A Figura 9.2 e a
Listagem 9.8 ilustram este po nte.

298

O~ 9, All"BUI~OE5. CONYRSOES EcllCUlOS

l PRENOl EM21 OilS ABl P/~

doto f1 (4) value 'ABeD'

Figlltg 9 2
Utilizor move em umo
string de compo, se m
tJtj/izor um nome de:
componente, farO corn
q ue: a stringse;o
tratodo como umo
vori6vel do tipo c.

f1

Movimentos do string de campo envolve ndo campos nurner icos

IlfA~ lr-:-,yI;i<.~ I~"c-'" l

Se 0 campo de envio for de caractere de categoria (ripos c, n, d, t ou x) eo alvo


for um a string de campo con tecdo urn campo nu m erico (ripos t. p ou f),
nenhuma con'Versao de dadossera executada. 0 mo vimen to ocorreria se ambos
fossem considerados simp les caracteres. 0 inverse tambem e verdadeiro.
N enh uma co~versao sera executada ao mo ver u rn numericc para u ma string de
campo ccnrendo urn campo de caractere. Em amb o s a s cases, as resultado s
serao invaIidos e indefinidos.
A Listagem 9.9 mo stra urn programa de exemplo que execut a uma
ccnversfc invalida de urn campo numericc para um a st rin g de campo de

~ '.-.:".. ~.

.,,&_';) ';:'

oata begin of fs1,


eI O)

e2(2) .
e{ 3 } .

end of fs1.

,,
mo ve

f1 to fs l .

caractere.

f1

ENTRJ.DA~ Li st a g e m 9.9 0 movimentc de urn compo numerico pare umo string de


,. campo de curuct ere e inv61ido
.

EtmADA ~ Lista g em 9.8 A instru;ao move t-ete urn nome de string de co mpo sem
urn nome de componente como umc vcrtcvel do tipo c
1 repor t zt x09OB .
2 datil : flC.) value ' ABCD ' .
3
begin of 51.
4
el(l).
5
e2{Z).
6
' 3(1) ,
7
end of s L,

su

10

n.

s write: / 51.
10
/ si -ci , st -ez, si -cs .

- 51 ~ tretedo como uma var1 !v e l de 4 "cer ect er es


"escreve ABCO
"escreve A BC 0

o c6 digo na Lisragem 9.8 produz esta salda:


SliDI ~

ABCO
A Be D

A linha2 define f1 como uma variavel de qua tro bytes do tipo c.


As linhas de 3 a 7 definem 51 como uma string de campo com eres
eomp.onentes: fl, f2 e f3. 0 comprimenrc total de 51 e calcu lado pela
so ma do comprim ento de seus cornponenres: 1+2+1 =4.
A linha 8 move a valor de f1 para 51, byte p ar byte) como se foss em
ambos varidveis de ripos c.
A linha 9 escreve 51 como uma varifvel de quatro caracteres.
A linh a 10 escreve

1 report ztx0909.
Z data : fe(5 ) t ype e.
3
begin of s,
0\
f i t ype t ,
5
endofs.
6
7 fe '1234'.
"ce-c, nenhllnia converss c exee ut ada
8 s - fc.
_"escreve ju nk
g writ e s- f i.

conreedo dos ccmponentes de

51.

11 s~fi 1234.
l Z fc-s .
13 write I fe.
14
15 s- f 1 - 1234.
16 f c - s-ff .
17 write / fe.

"at r1bu1 urn val or v&1 1do


-ce -c, nenhuma ccnversjc execute de
"escreve junk
"atr1bu1 urn valor val t dc
nee.; eonverslio execut ada
"escreve 1234

Na minha maquin a, 0 codigo na Listagem 9.9 produz a seguin te saida .


Seus result ados talvez possa.m variar nas p rim eiras du as linhas de saida devido
as atribuicoes invalidas realizadas.

SliDI ~

B75770, 417

0...
1234

lIIiUSE ~

N a linha 2, fl .e definido como urn inteiro com urn valor de 1234.

Nas linhas de 3 a 5,51 e defini do como urn unicc componente ct , do


ripe c. comprimento 1.2.

299

~ .. -.- .

300

w - w w

---

.....-- -- -- -- - - - - - - - - - - --D~ Um BUI~OEs. CONVEISOES EcllaJLOS

'PREND' EM21 DIAS "'PI'

o c6digo na Listagem 9.10 produz esta saida:

Nalinha 6, f1 emovidopara 51. Nenbuma cc nversao eexecutada porque


s 1 euma String de campo, portanto

erratadc como sendo do tipo c.

e escrito e as resultados sao lixo.


Na linha 8, para s t - et eat ribuida urna stri ng valida de caracrere 11234
N a linha 9, s1 ernovido p ara fl . N enhuma cocverssc e executada.

Simi ~

Na linha 7. st- et

A linha 10 escreve f1 e, novame nte, as resultados sao lixo.

e atribuldo urn valor vilido de 1234.


e at ribuidc a s1-c1. Pelc fato de a atribuicic ser pan

Na liaha 11, para f1

Na linha 12, f1

o componente e ca c para a String de camp o, a conver sao sen executada


e a linha 13 escrevera urn valor vdlido.
Voe! nee deve mo ver urnc vcr tevel do tipo c porn umo string de ccrnpc

ou de uma string de compo contendo urn tipo ncrner ico . as resultados


dependem do m6quino e, porto nto , soo indefinidos.

Movendo de uma string de campo para uma outra utiliza ndo tipos
de dados de carodere
Voce poderi utilizar a instrucao move em duas strings de campo, se ambas
contiveremsoment e componentes de tipos de dado s de caracrere (c, n, d, t e
x). A Lisugem 9.10 ilustra este conceieo.

ENTRAOAIlrrrrr.. Listagem 9.10 Ufilizondo move com duo s strings d e


, . inteiramente de tlpos de dodos de ccrodere vdlld o s
1 re port ztx0 91O .
2 data : begi n of 51,
-S
type d value '1 99S0217 '
dl
3
-4
"(,) t ype n value ' 1234' ,
-I
value 'A' .
5
-I
,2
val ue 'B'
6
end of 51,
7
b~1n of 52.
8
-4
,1(4) type n,
9
-2
.,(2) type c.
10
-2
d1(2) type n,
11
-2
12
" (2) type c ,
-4
ct (4) type c,
13
end of 52.
I'
15 52 .. sf .
16 write: I 51.
17
I 52.
I ,1 -dl . sl-nl . 51-ct . sr-cz,
18
19
I 52-11. 52-mI. s2- dl. 52- nl , 52- cl .

199802171234AB
199802171234AB
19980217 1234 A B
1998 02 17 12 34A8

"

byt es
byt es
byte
byte

bytes
byt es
bytes
bytes
bytes

compo compostos

i1itISE~

As linhas de 2 a 14 defin em duas strings de campo compostas inteiramente de campos do tipo caractere. Cada st ring de campo tem, no
total. 14 bytes de comprimenro.

Na linha 15, 51 emovido para 52, tratando cada string de campo como
se fosse de urn unico camp o do tipe c com 14 bytes de comprimento.
N as linhas 16 e 17, ambos sao escritos como campos de caractere.

Nas linhas 18 e 19, os compone ntes de cada string de campo sao


totalmente escritcs. s l - d1 foi dividido entre s2-yl. ml e dl. Os primeiros dois bytes de s1-n1 foram para s2-n1. Os bytes remanescentes de
51 foram para 52-c1.

Movenda de uma string de campo para uma Dutra com tipos de


dados num ericos
HO'O Ilr....

A maiorte-dos sistema s operocionc is reqv er c ende recc de m6quina dos compos


nume ricos a fim de concordor com as regrcs esce e ftccs. Per exemplc, 0
enderecc de um inteiro de quotro bytes pede ser necessaria pare que sejo divisive! por
dois. Gernlmente, esse regro
impa sto como "urn inte iro de quotro bytes deve ser
olinhodo em um limite de byte regular". Assim, a regrn com a qua l con cordo 0 enderecc
de um co mpo e den o minodo o/inhomento.

TaMO"

NOVO ....

A fim de ctender oos requisito s de olinha mento , um compilad~ r tipico inserir6


bytes de preenchimenfo a ntes de um campo que req ue r olmho mento. Por
exemplc, se se u inteiro de quotro bytes comer;or no deslccc mentc 0003, desde 0 infcio
de urn progromo, urn byte de preenchirnento sera necessa ria porn a linh6-lo em um limite
de dots bytes. 0 cornpilodor eo locorO urn byte noo utilizcdo no deslocomento 0003, de
modo que a inteiro cc mece no deslocomento 0004, fozendo com que sejc cdequcdcmente o linhod o. Os bytes de preenchimento sOo lnvisfveis 00 progromador, mas seus
efeitos pcdem, as vezes, ser vista s.

TEtMO "

Se vo ce criar um a string de campo com uma mescla de campos nurnericos


e de caractere, bytes de pree nchimento, alguma s vezes , serao inseridos pelo
sistema para 0 alinhamento de campos numericos. Se voce tentar utilizar uma
instru~ao move em tal string de campo a fim de mover seu conreado para uma
out ra, eases bytes de pree nchimento podem causar resultados inesperados.
Portanto, voce podera somente utili zar move se uma das seguintes for
verdadeir.a:

301

... ...I ..... - - - - - - -

302

- -- _.

APR ENOA EM21 OIH AUP/4

As duas Strings de campo consistem inteiramente em campo s de


caractere (ripos C, n, d. t e x).

DIA 9, A1iJBUI~OES, CONYERSOES EcAlCULOS

SAiDI ~

s t-et tern apenas urn byte de comprimento, port ant o c2 tera urn deslocamento desigual desde 0 inicio da string de camp o e necessitard de preenchimento na maioria des sistemas, fazendo com que s1 se tome mais comprido
do que 52. Quando s1 for atribuido a s2, c3 nae sera alinhado e alguns dos
s1- c2 temiinarao no comeco de s2-c3 . Entretanro, 53 corresponde exatamente
com 51, dessa fonna 0 movimento na linha 14 ocorr erd perfeitamente.
Esse exemplo mostra que voce nao pode ign orar os efeitos da existencia
de campo s numericos dentro de uma estru tura. 0 fate de cada camp o de
recebim ento ter 0 mesmo mimero de bytes que cada campo de envio nao e
suficiente para garantir 0 alinhamento dos component es.
As regras de alinhamento variam de acordo com 0 sistema operaciona],
de modo que 0 ndmero de bytes de preenchimento e suas posi~5es irao variar.
O s resultados de move em urn sistema operacional po dem ser diferences em
outro. Portanto, para garantirque seus programas sejam portateis, nunca ccnfie
em bytes de preenchimento e cao os considere du~te os movi mentos. Cada
strin g de campo deve ser composts inteiramente de tipos de dados de caractere
ou todos os componentes de cada strin g de campo devem ser exatamente
correspondentes (exceto quanto ao nome) .

Os tipos de dados, comprimentos e posi~ao de todos as componentes


nas' duasstrings de campo ,sao exatamenrecorrespondences (as nomes
dos componentes DaO p recisam ser correspondentes).
Se as campos de envio e de recebimento fore m inteiramente composto s

de campos de caractere,nenhum byte de preenchimento existiri. e 0 resultado cia


utiliza ~io de move sera previsiveL Se existir uma mescla de caracteres e tipos
numericos, as bytes de preenchimento pcdersc existire 0 resultado da utilizacio
de move podera ser imprevisfvel. Urn exemplo e mo strado na Listagem 9.11 .

A instrut;60 move-corresponding pode set utillzcdc pora move r as


strings de compo que ten hom umo mescla de tipos de dodos nume riccs

e de ccroctere. 1550 sera descritono seguinte seo;oo.

ENTUJlI~

A 1110 I
A
1,234

Listage m 9.11 as bytes de preenchimento pod em ca use r resultad os


inesperc dos 00 mover dodos entre strings de ca mpo

1 r eport ztx0911.

2 data : begi.n of 51,


3
4
5
6

7
8

c1 value 'A',
CZ type 1 value 1234,
c3value 'B ',
end of 51,
begin of 52,

ei ,

9
e2(4),
10
es,
11
end of 52,
12
begin of 53,
13
u.
14
x2 ty pe i ,
15
xJ,
16
end of 53.
1752 -51.
18 write : I sz-ct , sz-cz, sz -ca .
1953 -51.
20 write : I s 3~x1, s3- x2, 53-x3.

" \.Ill byte


quat ro byte5, ern geral prectsa de ' preenchteenec
urn byte

Para executar urn movimento de uma string de camp o par a uma outra, em que
os tipo s de clados e/ou comprimeatos nao correspondam, ut ilize a instrucao
move- cor r es pondi ng. Ela gera instrucoes move para com ponentes com nomes
correspondentes. as componentes na String de campo de recebimento qu e na o
tenham urn nome correspondente na String de camp o de envio nie sers o
alterados. Isso e ilustrado na Lisragem 9.12.

" \111 byt e


"quat ro bytes, sen preench1mento
"urn byt e

"53 ccrre speede exetaeente can 51:


"- tipos de dados igua i 5
II~ nCln;ero de CillllP05 19ual
". ei1Jl105 na mesrna ord em
(05 neees nlio pr ect 5il1l corresponde r )

Em meu sistema, a cod igo na Listagem 9.11 produz a seguinte safda. Ern
seu sistema, os resultados podem variar para os campos com atribuicoes

invalidas.

Utilizando a instru<;iio move-correspond ; ng

Sintoxe do

instru ~Ci o

move-correspondi ng

III A seguir, veja a sintaxe cia instruqao move. O s op eradores e operandos devem
Z ser separados por espacos. MUltipIa atrib uicao ocorrera cia direita para a

esquerda.
nove- cc r r es pcndt nc .v1 t o vz,

on de:

vl

v2

ea variavel ou string de camp o de envio .


ea varifvel ou st ring de campo de recebimen ro.

303

OIA 9,ATiIBUI\OES,<OHVEiSiiES EclliuLOS

EHTRADAlirll.. ~is~~ger.n 9.12_ A lnsfrucdo move-:orresponding gera instrucces move


,. individucls e entdo executa converseo de dodos
1 report zt x0912.
2 data: begin of 51,
3
cl
type p deci mal s 2 value '1234.56 '.
4
c2(3)
value 'ABC'.
5
c3(4)
val ue '1234' ,
6
end of 51,
7
begin of 52,
8
" (8) ,

x2(3)

value ' XYZ'.

mul t t pl y a u multi ply-corres pondi og

divide au div ide-corre sponding

ea insrrucfo u tilizada co m mais frequencia para execut ar ctlculos.

Sintaxe da instrucno compute

III A seguir, veja a sintaxe da instrucio compute. Os operada res e operandos devem
Z ser separados por espacos. Mais de urn operador par instrucao e permitido.

compute v3 vl op v2 [op vn ].

In

au

v3

= v2 op v2

s2 before scv e-c crrespondt nc:


XYZ
s 2 after move- cor r es pondin g: 1234. 56 XYZ

v3

vr, v2 e vn sao as ope ran dos.

op

... A linho 14 gero duos instrulioes move; por questoc de dcrerc , elos se o
ANALISE,. mostrodosdentro de co mentc rlc s nos linha s 15 e 16. Normolmente, voce neo
pode ver asses Instrocces move; 0 sistema as gero e as executa outomoticomente "!'nos
bcstldores". Uma instrulioo move sera gerodo para coda componente de string de compo
de receblrnentc que tenho 0 mesmo nome de um componente no string de compo de
envio . Nesse coso, c1 e c3 fem os mesmos names, por isso duos instruc;6es move se c
gerad as. As convers6es de dodos sao executados , como seriam se voce mesmo five sse
codtficcdc essas lnstrvcces. 0 cornevdo de c2 permcnecerc inolterodo depots de
cond ufda a instruc;60 nove-cor-responding.

Se duos strings de compo forem exetamente correspa ndentes, noo


utilize move-co r -respond! ng para mover os dodos de umo porn outra.
A utilizoc;oo de move e mois ehclente.

Execufondo c6lculos
V oce pode executar calculos utilizan do as seguintes instrucoes:

add au adc- cor re spondt ng

e urn ope rador matemarico.

0
1.23~

comput e

e a variavel de recebimento para a res~ltada do calculo.

1. 234.56 ABC 1234

51

[op vn ,..l,

onde

a c6digo na Listag em 9.12 produz esta safda: .

Utilizando a instrucco compute

15 * move st- et to 52-c1.


"execut a ccnversao
16 *" move sl- c3 t o 52-d .
"execut a ccnversxc
17 write : 1 's2 after lOOve- corresponding: ' . 52. cl ; 52-x2, 52-c3.

s ubtract au s ubtract -corres pondi ng

Compute

10
c3
t ype i.
11
end of 52.
12 write: / '51
: ' , 51-e1, si -ea , 51-c3.
13 wri te: / ' 52 bef ore move- cor r espondi ng:' . s 2~c l . 52-x2, 52-d .
14 move-corresponding 51 t o 52. cod1f 1cat;l o i gual as duas t nst r uczes a seguir

IliDI.

A Tabela 9.5 contem uma lista dos operadores validos.


Tabela 9 .5 Operadores v6 lidos po rc a
. Opero dor

instru ~aa compute

Opera ~ao

Adi;oo

Subtrocec

Multiplicac;eo
Dlvtscc

**
DIV
MOD

Dlvisec de inteirc
Restodo divisdc de inteiro

Expcnencicccc

Alem disso, existem funcoes predefinidas. Para uma lista, obtenha ajuda
utilizando Fl p ara a palavra-chave comput e.
A precedencia do opera dor e cia for~a coma segue:

Funcces prede finidas sao avaliadas ,

em seguida a expone c ciacac,


em seguida ", / , DIV e MOD, na ordem em que ap arecem na expressao,
em seguida + e - na orde m em que apar ecem na expressao.

305

~~

...... ,...

-- - - ----. Il"'''''"'IDES,

v2

ea varisvel sendo adicionada.

v1

e a varifvel adicionada a v2.

A sintaxe de subtract, mul t f pfy e div i de

,.",usO" "AlCULOS

e semelhante.

Sintoxe do instrucco add-co rrespondi ng

III Abaixo estli a sin taxe da instru~ao add- correspondi ng.

add-cor respo ndi "g 51 to 52.

onde:

52

sl

e a string de campo sendo adicionada.


ea strin g de campo adicionada a 52.

VIDa instrucao add e gerada para cada p ar de componen tes com 0 mesmo
nome em 51 e 52. As conversoes de dados sao executadas da me sma maneira
que oco rre com a instruc i o add. Subtract-corres pondi ng, multlply-ccrres pendin g e divide-corresponding operam de forma semelhente.
Exemplos sao dadcs na Lisragem 9.13.

ENlRIDi~

Listagem 9.13 Utilizondo as lnstrucoes add, subtract, multiply, divide e


correspond ; ng

1 report ztx 0913.


2 dat a: fl type i val ue 2,
3
f 2 typ e i value 3,
4
begfn of 51,
S
cl typ e 1 value
6
c2 ty pe f val ue
7
c3 ty pe 1 val ue
8
end of 51.
9
begf n of 52.
10
c1 ty pe i val ue
11
x2 .typ e f value
12
c3 t ype f valu e
13
end of 52.
14 add
fl
15 subt r act
fl
16 llIIltipl y
f2
f2
17 div i de
18 add- corres pondi ng
51
19 subtract corr e5ponding sl
20 mult i ply . corre spond1ng s2
21 divi de-c orresponding s2

10.
20,
30.

100,
200.
300,
t o f2 .
f rom f 2.
by f lo
by fl .
t o 52.
f rom sz,
by 51.
by s1.

write
wr t te
write
write
write :
write :
wr ite :
wr 1t e:

I
I
/
/
/
/
/
/

f2 .
-fl fica i nalterado
rz .
f2 .
f2 .
s2-c l , 52-x2, 5 2~ c3 .
sz- ct , sz-sz, s2- c3.
sz- ci , s2-x2 , s2-c3.
sz- ei . s2-x2, sa-cs.

307

308

HRENDA EM 21 DIAS ABAP/4

DIA9:ATRIBUltOES,CONVERSOES Eti.LfUlOS ,

configurado co mo '01 ' . Jo1 que as datas sao sempre arm azenadas
utilizando 0 formato inte mo YYYYMMDD, 0 valor de dia da data em
d2 e. co nfi gurado como ' 01' . 0 resu lt ado e. que d2 contem u ma data
igual ao prime iro dia do mes atu al.

c6digo na Listagem 9.13 produz esta saida:


5
3

6
3
110

200

330

100

ZOO

300

1,0 00

200

9, 000

100

ZOO

300

Na linha 12, a diferenca em dias entre a data atual e a data de fusio


(almagamation)

Cclculos de dolo

~NTlADA'" Listag em 9.14 Colculos de doto que util izam a vcr tcvel de data dentro
,. de um c61culo

sy-datUlll.
dl,
p.

wr ite / dl.
write / ez .
write / d2.
~

-data de ont ea
-pr1meiro dia do ~s atual
-Olti lllO dia do ~s anteri or

ztxl_amalgamation_dat e .
"numer o de diu desde ztxl amalgamation_date

N a linh a 2, a ins rruc ao type -pool s faz com qu e a constante ztxl_amalgamat ion_date seja inclufda no programs.

N a linha 6, a data arual

2
3
4
5
6
I

c6digo na Listagem 9.14 pr oduziu esta

354

IHius~ ~

Urn sfmbo lo de compo e urn indicad or que voce pode dinarnicamen te atribuir
a um cam po. Depois do ctribuicc o, voce pode utilizer a sjmbolc de compo em
quolquer luga r de seu programo em vez do nome real do campo. Utilize 0 instruc;:60
fi el d- symbol para definir urn sfmbolo de compo e utilize assi gn para otribuir urn compo
a ele. 0 nome do simbo lo de campo deve ccm eccr e term inor co m a sinal de menor que
e sinal de mo ior que . A Ustogem 9 .1 5 contem urn exemplo simples.

NOYO'"
lUKO~

e uma referenda

para urn outro

,. compo

1998/02 /21
1998/ 02/ 01
1998/ 01/31

Atribuic;ao dinamica

ENTUDAItrrr.. Listagem 9.15 Um sfmbolo de campo

No die 22 de fevereiro de 1998,


saida:

S.liDI~

e. calculada. 0 resulrad o e atribuldo ao campo come. totalmente escrito na linha 13 .

pact a dc num_da ys e

Uma variavel de data (tipo d) p ode serutilizada dentro de express6 es mat emdticas. Atribu ir a resultado de urn cdiculo de data a uma varidvel compacrada dara
a diferenca em dias. Urn exemplo e dado na Listag em 9 .14.

I report ztx0914 .
2 t ype- pools ztd .
3 data : dl
like
4
d2
li ke
S
nurn_days t ype
6 dl d2 " sy ~ d atum .
I
8 subtract I f rom dl.
9 d2+6 ' 01' .
10 subtract I f rom ea.
11
12 nlml_days .. sy~datum
13 write / nurn_days .

Na Iinha la, 1 e sub tr aido de d2, considerando a data do ultim o dia no


mes an te rio r.

e atribufda a dl e d2.

report ztx 0915.


dat a fl(3) value 'ABC'.
field -symbol s <t> ,
-<f::o pode agora s er usado no lugar de fI
assi gn fI to <f ::o.
write <t> .
"escreve 0 ccntenco de fI
-a t r i bui urn novo val or a fI
<f::o ' XYZ'.
write / fl.

o c6 dig o na Lista gem 9 .15 produz esta saida :


SAiDI ~

ABC

IHilll~ ~

A linha 3 define urn sfrnbolo de campo denominado <f>.

XY2

A linha 4 at rib ui a campo fl ao simbolo de campo <f >. <f> agora indica
o arm az enam enro da variavel fl e pode ser urilizado, em vez de fl, em
qualqu er lu gar do programa.
A linha 5 escreve <f>, fazenda com que

conteudo de fl seja escrito.

Na linha 8, a data de ontem e. calculada subtraindo-s e 1 da data atu al.

A linha 6 mo difies

Na linha 9, urn subcampo em d2 no desl ocamento 6 co m urn comprimento de 2 (comprimento obeido a partir do camp o de envio) e

A linha 7 escreve

co nteudo madificad o de fl.

conteudo de <f> , mas . na verdade, modifies fl.

309

-- ....... _... .
310 , API ENDA EM

21 OIlS ABAPH

Voce pode ut ilizar stm bolcs de campo para criar programas muitc genericos. Suponha, par exemplo, que voce queira criar urn pr ograms que aceite urn
nome de tabela como urn parimetro de entrada e exiba 0 conreedo. Voce DaO
poderd codificar os nomes de campo na instrucao write, porque eles serao
diferentes em cada tabela. Em vez disso, voce podera utilizar urn simbolo de
campo na instrucao write para referir-se 010 campo de uma tabela .

Resumo
As varidveis de sistema sao arm azenadas na est rut ura sys t. Voce pode
pesqui sar as descricoes dos campos e seus elemen tos de dados a fim
de localizer 0 campo desejado. Esse procedimenro pode ser utilizado
para localizar arraves dos campos de qualquer tabela.

DllH TRIBUI\OB, (OIffiRSOB Ec.ltrulOS

IFasa

311

Utilize compos do mesmo tipo de dodo,


quando possivel, po re evitor cc nversees.

Nao move vclores inv61idos para campos.

Utilize move-cor -respond! ng para mover


os compos de uma string de campo
para umo outre, quand o as
compon entes tern 0 mesmo nome mas
os tipos de dodos e com primentos nco
coincidem .
Utilize a instrulScO clear para otribuir
volores iniciois podreo a uma vc ricvel
ou string de campo.

As instrucoes de atribuicao sao cl ear, move e mov e-co rresponding.


Cl ear atribui valores iniciais padr ao a uma varifvel ou st ring de campo.
Voce tambem pode utiliza-la para preencher urn campo com qualquer
caracrere ou com NUlls.
A instrucao move tambem pode ser escrita com o ". Mulriplas atribuicoes em urna unica linha sao permiridas, como vl " v2 " v3. As
con versoes sao automaticamente executadas, quando necessario. U rn
nome de string de campo sem urn nome de componente e tratado
com o uma varidvel do ripe c.
Para mover c s dados ent re strings de campo, que correspondem
exatamen te em numero de componen tes, tipo de dado e comprimento
de cada componente, utilize move. Para mover os dado s en tre str ings
de campo com componentes que tern (peIo menos urn component e}
o mesmo nome , mas com tipos de dados diferentes ou comprimentos,
uti lize move-corres pondi ng.

P&R

o
o
o
o

Para acessar os bytes individuais do valor de urn campo, utilize urn


subcampo . Urn subcampo pode ser utilizado como urn campo de envio
ou de recebimento ou ambos .
Voce pe de executar calculos com utilizando compute, add, subtract,
mult ipl y,di vide,add -c orrespondi ng, subt ract- cor re spondi ng, mul t i ply -c or re spondt og e divi de- cor r espondi ng.

Posso utilizar a instrucsc clear para configurar Urn valor com


espacos em branco ou zeros, ma s existe uma instrucao que pode
configurar um a vari avel com 0 valor an terior) por mim especificado, utilizando a adi~o value na instrucao data ?

Nee, infelizm en te nao hi.


Possa utilizar a instrucao move com strings de campo de co m pri mentos diferentes?
Sim , pede. Ambas serao tratadas com o va riaveis do tipo c. 0
valor de envio sera truncado ou pr eenchido no final com espaco s
em branco, se necessario, antes da arribuicao astring de campo de
recebi mento.
Por que precise saber sobre byte s de preenchim en to ? 0 sistema
cuidara disso, caso eu siga todas as regra s?

DaO

Te cn icamen te, sim, cuidara. En rr eran ro, a medida que voce


co difies m ais pr ogramas, as vezes, voce podera inadver tid am ente atri buir uma string de campo de forma incorreta util izan do move. Se conhecer os byt es de preenchimentc e como eles
afet am sua satda, talvez felizmente voce seja capaz de reconhecer
a causa de seus pro blemas e nao precise recorrer a urna "modificac;ao" para fazer com que 0 programs opere adequadam ente.

312

APR EN DA EM 21 DIAS ABA PI4

o
o

Parece estranho 0 faro de eu poder atribuir valor es invalido s as


varidveis. 0 qu e acontecerd se eu utilizar urna dessas variaveis
que tenha urn valor Invalid o?
Q ualquer coisa p oderf acontecer. Eu nao escreveria urn programa que con fiasse intenciona lmente em val ores invalidos.
Por exemplo, nao ren te uti lizar urn valor de data especial de x
para indicar algo especial como uma data ausente. 0 comporramento de seu pro grama toma-se imprevisivel quando voce ultrapassa os limites admissiveis do idioma.
As mensagens de sintaxe geralm ente nao indicam 0 que hoi de
erra do com meu program a. E minha culpa ou 0 verificador de
sintaxe, as vezes, deixa a desejar?

D~U""U1(OES, [QNV"SIiE" c.\LCUlOS I

Duas coisas esrao erradas com

o
Wo rkshop

o .Workshop oferece duas maneiras de voce verificar 0

que aprendeu neste


capitulo . A se~ao Teste oferece perguntas para ajudar a solidificar seu entendimente do cont eddo abordado e a se~ao Exercicio permite que voce pratique a
que aprendeu. Voce pode encontrar as respostas as perguntas do teste e ao
exercicios no Apendice B, "Respostas as perguntas e aos exercjcios".

Te ste
1. Qua l seria a outra for ma de mover urn valor de uma variavel para
outra?
2. 0 que deve separar operandos e operadores para que 0 calculo ocorra?

Exerdci o 1
U tilizando 0 proced imento denominado "Como localizar as descricoes de uma
estrutura au tabela" para localizar:

1. 0 nome do campo de bloco Payment na tabela lfa l.


2. 0 nom e do campo chave Gro up na tabela knal.
3. 0 nome do campo de sistema que contem a localizacao de uma string .
4. 0 nome do campo de sistema que conrem a ID da mensagem .
5. 0 nome do campo de grupo de material na tabela mara.

programa na Listagem 9.16. Quais sao

EHTRADA.... Listagem 9.16 Este c6digo ilustra a utillzoc do de algumas vcricveis


b6sicas de sistema

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

Vamos apenas dizer... nfo e sua culpa. Minha mensagem favorite


exxxx i s expected. Na verdade, significa "xxxx ndo e esperado".
Encto, quando essa mensagem aparecer, insira a palavra nao e ela
ficara corre ra.

elas?

313

10
Instru~oes

de controle comuns

O b jetivos do capitu lo
Depois de concluir este capitu lo. voce sera capaz de:
Codificar as insrrucoes de con tro le comuns; f, case, do e whi 1e

Controlar a sequencia do programa utilizando exit, conti nue e check

Codificar especificacoes simples de comprimento e posicao na instrucao wr; t e

Utiliza nd o a instruc;a o if
A instrucdo if no ABAP /4 te rn operadores relacionais para igualdade e desigualda de e op erado res relacionais especiais para cornparacoes de string e para
mascaras de bit.

As comparoc;6es de bit nco s60 frequen ternente utilizodos no ABAP/4


e, po r isso, noD s60 a presentados oqui. Entretonto, s60 obordodas com
deto lhes no dcc vrnentc cco de pclc vrc -chcve do ABAPI4, sob 0 titulo
"O perodores relac ionois para ma scara s de bit".

http:// ,,,,,,,,,,,,,CCmpus.ccm.br

316

APREN DA EM 21 DIAS ABAPH

D1Al UNSTRD~6" DE CDOTRDLE COMUNS

Sintoxe do instru..ao i f

Tabela 10 .1 Ccnnnvcccc

'" A seguir, veja a sin taxe da instrucac if.

if [not] exp [ and [not] exp ] [ or [not] exp ] .

[elsei f expo
]

---

[el se .

---J

Compara fjao

Formas a lternativas

Verdadeiro quan do

vl >'" v2

GE, :>

vl for moior que ou iguol a v2

vI <: v2

LE, :<

vl for menor que ou iguol

v2

vl estiver entre v2 e v3 (inclusive)

not vI between v2

vl ultrapossar a fa ixa de v2 a
v3 - (inclusive)

and v3

endif.

vi between v2 and v3

onde:

e um a expre ssao lo gica que avalia quanta a umacondicaoverdade ira


au falsa.

exp

--- representa qualqu er numero de linhas de c6digo. Ate mesm o zero

linhas sao permitidas.


Os seguinres pontes se aplicam:

C ada if clever ter urn end; f correspondente.

else e elseif sao opcionais.

O s parenteses p od em ser utilizados. Carla paren tes e deve ser separado


por urn espa~o. Por exemplo, if ( f1 = f 2 ) or ( f l :: f3 ) esta
corr eto e if (fl "' f2 ) 'or (fl "' f3) esta inco rreto.

A s variaveis po dem ser comparadas com espa~os em bra n co au zeros


utilizando a adi~ao i s in it ial. Por exemplo, if fl i s in itia l sera
verdadeiro se fl for do ripe c e estiver em branco. Se fl for de qualq uer
outro ripe de dado, a instrucac sera verd adeira se fl co nt iver zeros.
Para uma negacao, not dev e preceder a expeessac 16gica. Par exemplo,
if not fl i s in itial esta corr eto. if fl t s not in iti al est3.
incorreto.

As variaveis podem ser comparadas com valo res nulos utilizando a


adiljao ; s nul l. Por exemplo, if fl is nul l.
O s operadores 16gicos p ara operan dos de qualquer tipo sao list ados na
T abela 10.1.

Ta bela 10. 1 Cornporoco es comu ns e suas formas alternativas


ComparoCjoo

Fonnas alternativas

Ve rdadeiro quando

vI v2
vI <> v2
vI > v2
vl < v2

EQ

vI for iguol a v2

NE, ><

vI nco for iguo l a v2

6T

vl for moior qu e v2

LT

vi for menor que v2

Na Tabela 10.1, vl e v2 pode m ser variaveis, Iiterai s ou strings de campo.


N o caso de variave is a u lit erais, a conv ersao automatica sera executada, se 0
tipo de dado ou co mprime nto nf o corresponderem. A s Strings de campo sao
tratadas como variaveis do ripe c.
A co mparacao de da is valores que nao tern 0 me smo tipo de dado resultara
em uma adaptacao de ripe automatica e in tern e de urn ou de ambos os valores.
Urn tipo tera p rec edencia e ditard que tipo de conversao sera executada. A
ordem de preceden cia e:
Se urn campo for do tip o f.

outre sera convertido p ara 0 tipo f.

Se urn camp o for do tipo P.

outre sent convertido pa ra 0 tipo p.

Se urn ca~po for do ripe t , 0 ou t re sera convertido para

tipo t.

Se urn campo for do tipo d, 0 outro sera convertido para 0 tipo d. Os


tipos c e n, entretanto, nao serfo convertidos. Eles sao diretamente
co mp arados.
Se urn campo for do tipo t , 0 ou tro sera convertido pa ra 0 tipo t. Os
tipos c e n, en tretanto, nao serao convertidos. Eles sao diretam en te
co mparados.
Se urn campo for do tipo n, ambos sersc convertidos para 0 tipo P
(nesse ponto, 0 outro campo po derd ser apenas do tipo C ou x).

Nesse pont o, urn campo sera do tipc ceo ou tro sera do tipo x. x e
convertido par a 0 tip o c.

As conversoes seguem as mesmas regras daquelas que sao realizadas pela


instrucao move. As co nve rs6es de tipo sao completamente detalhadas na documentacao de palav ra-c have do ABAP/ 4, sob 0 titulo "Relational Operators for
All Data Types".

ConversOo de dodos de literais dura nte compora..6es


as literais sao arm azenados intemamen re com tipos de dados, como pode ser
vista na T abela 10.2.

317

318

' PRE '" EM21 OIlS

"API'

O~ 10, INmlJ(OES DE ( OKTiOl COMUNS

o c6d.igo na Lisugem 10.1 produz esta saida:

Ta bela 10.2 Tipos de dodos de [itercis


Descri~ao

Tlpo de da do

, .,

SAiDI ~

Xis between X and Z


51 <> 52

N emeros de urn a nove d igito s de comp rimento


N c mercs de 10 au ma is d igitos de com prim ento

Todos os outros

A s co nversees de tipo para [iterais segue m a mesma ord em de p reced encia


e as me smas regra s de conversac sao apl icadas.
A Listagem 10.1 m ostra urn prograrna de exemplo utilizando os operadores
comuns de comparacio. Uma conversac inesperada tambem e demc nst rada.

ENTiADA~ Listagem 10 .1 Urn exempl0 do utiliza<;60 de if no progromo


1 report ztxlOOl.
2 data : begi n of 51,

x value 'X' ,
4
Y valu e ' Y' .
z val ue '2 '.
5
6
end of 51,
7
begin of 52,
8
x value 'X'.
9
z val ue 'l '.
10
end of 52.
11
12 1f sr -x 52x.
13
wri te: / 51- x. '. ' , 52-x .
14 else .
15
.... ri t e: / 51-x, '0'. 52-x .
16
endt f.

o ' ,

INiuSE ~

N a linha 12, 51-x e comparado com 52- x. Ambos sao do tipo c,


comprimento 1. Nenhuma conversjc e executada e os dois sao iguais.
A linha 18 esemelhanre, mas utiliza 0 operador bet ween. 0 valor Xfica
na faixa de Xa I e, sendo assim, 0 teste sera verdadeiro.
A linha 24 compara as strings de campo 51 e s2 como se fos sem
varidveis do ripe c. 0 valor de 51 e portanto XYI e 0 valor de 52 e Xl.
Eles DaO sao semelhantes.
Na linha 30, a literal 0 e comparado com urn espacc- 0 zero e
armaze nado intern amente como ripe i, 0 outro como tipo c. De
acordo com a ordem de preceden cia, 0 tipo c e convertido para 0 ripe
t. Converter urn espacc em branco pa ra urn inteiro resultara em urn
valor zero e a comparacio provara ser inesperadamenre verdadeira .

Exibind o convers6es
IOYO '"

TEUO "

utilize

Ao executor umo on6 fise de prog rorno, voce poderc determiner onde ocorrem
as ccnversces dent rode urn programo . Para executor umo on61isede progroma,
segu inte procedimento.

5CREENillI.~ Inid e og oro a ScreenCom

"Howto Perform a Program Ana lysis".

17
18 1f sf -x bet ween sz-x and s2- z.
19
write : / sl - X, 'i s between', sz-x, ' and' , sz-e .
20 else .
21
write: / s l - X, 'i s not bet ween' , sz-x, 'and' . sz-a .
22
end1f.
23
24 1f sl s2.
compa rando st rings de campo , byte per byte
25
write: / 'sl s2' .
26 els e.
27
write : / ' s l<> s2 ' .
28
endi f.
29
30 i f 0 = ' ".
"At en<;!o par a 0 que segue
31
write: / '0
32 else.
33
write: / '0 <> "
34
endif .

I. Comece no ABAP/ 4 Editor: Initi al Screen (Tela Inicial).


2. D igite 0 nome do programa a ser analisado no campo Pro gram.
3. Selecio ne 0 caminho de menu Ur iliries-c-Program An alysis. A tela
Conversions: xxx:o: sera exibida.
4. Pressione 0 borao Conversions . A tela Conversions : x;cca: sera
exibid a. T odas as convers6es sao resu midas nessa tela. A primeira
coiuna conrem tipos de campo co mparados.
5. De urn clique dupl o em qualquer linha para visualiza-la dentro do
programa.

A primeiro coluno no telo Conversions: lOOOOC nlio mostra qual conversec e executodo. Mostro simplesmente os tipos de dodos erwclvldcs
no converse o.

319

O~ 10, INSTRIlI'" OECONTROlH OMUNI

320 [ APR ENOA EM21 DJAS A BA P/ ~

Utilizando

fl Sf;

321

'Iltillzandc operodores de string de caroctere

Voce utiliza el seif para evitar 0 aninhamento de its. 0 aninhamento de its


pede dificultar sua pr6pria leitura e manutencao . (Veja a Listagem 10.2.)

ENTRADA.... Listagem 10.2 A utilizCl;ao de el setf e mais dc rc do que a utiJizac;ao


,. de its oninhodos

O s operadores especiais para as strings de caractere sao mostrados na Tabela


10.3.

Ta bela 10.3 O peradores especiais pore strings de ccroctere


Ope~..

1 repo rt ztxl002.
2 parameters: fl def ault 'A',
3
f2 default 'B' ,
4
f3 defau lt 'c.

vI CO v2

Sig nifl(o

Co nl6m se rneree

V. ..dodelro

Ha d lsti "iCJo entre

q ua nd o

mahi.culas
mi nUsculo.l

V1 for com posto

Sim

Nco

5im

Noo

'm

",,0

Sim

Nco

",,0

'm

NOo

Sim

NOo

Sim

NOo

Sim

Os "pa~os e m
branco finol.
sbo Ign Ot'o dos?

sc mene de
ce recte-es em '12

I
6 if

fl f 2.

7 els e1f

fl f3 .
f 2 .. f3 .

write: / n. ',, ' f2 .


write: / n , '. ' rs.
write: / f 2, I ", ' f3 .
write : / 'all fields are different' .

'1 1 CN '1 2

not '11 CO '12

v1 pod, cooter
coracteres que

8 elseif
9 else . "
end1f.
I.
11
12 - es l1nhas 5-9 fazem 0 mesmo Que as li nhas 14 26
13
14 if fl f2 .
15
write : / fl . ' . ' f 2.
16 else .
17
if n f3 .
write: / fl, ' .', B .
18
19
else.
20
if f2 .. f3 .
21
write: / f2 . ''' ' , f3 .
else .
22
23
wri t e : / 'all fi elds are diff e rent ' .
24
endif .
25
endt f.
26
endif.

ntic 'st60 em '12

'1 1 CA '12

Cont em q uolq uef

v1 pode ccorePIlle mlIOOs um


ccrecee em '12

'11 NA '12

not '11 CA '12

.,1 nlio pod.


conler nenhum
torodere em '12

'11 CS '12

Contem stril'lg

... 1 pod. tonI .. 0


string de ee reeere
~ ,2

'11 NS '12

not '11 CS '12

...1 n60 pode


co ni.. 0 string
de corcceere
em '12

'11 CP '12

Cont6m podriio

v1 pede center
o pad rtlo em '12

'11 NP '12

not '11 CP '12

...1 ntio ped e


co nter 0 padrOo
em Y2

c6digo na Lisragem 10.2 produz esta saida:

siiDI ~

all f iel d$ are different


al l fields are different

INitISE ~

Se fl

Es ses operadores podem ser utilizado s em qualquer expressao de co mpara~ao. Os operadores CS, NS, CP e NP ignoram os espaCiOs em branco finais e

nio disringuem maiusculas de minasculas.


Embora voce p os sa utilizar variaveis, co ns tantes ou [iterais com ope radares relacionais para as strin gs de caractere, a Listagem 10.3 utilizara apenas
literais para umaexemplificacao mais clara . Ale m disso, para mais clareza, as
ins tru coes i f, aqui apresen tadas , ocuparn uma unica linha cads.

= f2 , a linha 6 sera verdadeira.

Se f1 = f3 , a linh a 7 sera verdadeira.


Se f2 = f3, a linh a 8 sera verdadeira,
Se nenhuma das ant erior es for verdadeira, a linha 9 sera verdadeira.

As linhas de 14 a 26 fazem 0 mesmo que as linhas de 6 a 10. Elas for am


incluidas, de for ma que vo ce p ossa ver as dua s recnicas, lade a lado.

--~----

322

APREHDA EM 21 OIAS ABAP /4

DIA 1000Sl1U\OB DECDNTlOLl COMUNS

fHIRADA~ Lislagem 10.3 Um pregreme dx.mple .mpregende co, CN , CA NA


1

A linha 18 e falsa porque I ABCD' nao contem nenh um dos caracteres .


'XVI' .

report ztx IDD3 .

na e equivalente a not vI co v2.Portanro, as linhas 22 e 24 sao a negaljao


Ic gica das linh as 16 e 18.

Z .. ope r ador: co
3 wri te / " ' AABS" c o " AB " ' .
4 if ' AABS' c o 'AS'.
write 'True '. e lse. write ' Fa ls e ' . end 1f .
5 write / " 'ABCD" co "ABC"' .
write ' Tru e'. else . write ' Fa lse ' . e nd1f.
6 i t 'ABCO ' co 'ASC' .

7
B .. ope r ado r: e n
9 write / " ' AA BS" en
10 if ' AABB' en ' AB' .
11 write / "'ABCD" en
12 it ' ABCD' en 'ABC' .
13
14 .. ope r ado r :
15 write / "' AXCZ" ca
16 if 'AXCZ' ca ' AB'
17 write I " 'ABCO' , ca
18 if ' ABCD' ce 'XYZ' .
19
20 .. ope r a do r : na
21 write / " ' AXCl "
22 if ' AXCZ' na 'ABC'.
23 write I " ' ABCO" na
24 if 'ABCD'
'XYI' .

"

"

"AB" ' .
write 'True' . e lse . write ' Fals e' . e ndif.
" ABC" '.
wri t e ' Tr ue ' . else . write ' False '. e ndi f.

AHALISE~

co
co
en
en
ea
ca
' AXCI ' na
'ABCD' ne

Tabela 10.4 Op. roder.s CP. NP

Caradere

Utllizado pa ra

Pode co rrespo nder qua lq uer seq uencia de cc rocteres.

Pode co rresponder um cntcc caractere .

Pode interprete r 0 pr6ximo ccroctere, llterclmente .

" ABC' ''.


write ' Tru e ' . else . write ' Fals e' . end if .
" XYZ' , , .

# e 0 caracrere de escape. U rn unico caract ere seguinte sera interprerado


de forma exata. Urn significado especial, se exisrir, sera perdido. Voce tambem
podera utilizar ' -para fazer uma pesquisa com distincdo entre maiiisculas e
minusc ulas ou para pro curar os caracter es ", + ou I. A Tabela 10.5 mostra
exemplos de como voce poderf utilizar esses caracteres. 0 caractere de escape
sera necessario quand o voce quiser executar uma pesquisa com disnncao entre
maiiisculas e mimisculas utilizand o C5, N5, CP ou HP. Voce pod eci tambem
precisar do caractere de escape, se quiser executar uma pesquisa de padrao (CP
ou NP) para uma string contendo ", + ou #.

write 'True ' . else . wri t e ' Fal s e' . end; f.

o c6digo na Listagem 10.3 produz esra saida:


' AA BB'
'ABCD'
' AA BS '
' ABCD'
' AXCl '
' ASeD'

Ret omando a Tabela 10.3, os operadores CP (conrem padrao) e NP (nenhum padrao) executam uma pesquisa de string que permire caracteres com
cor respondencia de padrao. A expressao vl CP v2 sera verdadeira, quan do vl
contiver uma String que corresponds com 0 padrao em ,,2. A expressao vl NP
v2 sera verdadeira, quando ,,1 nao contiver urna string que corresponda com 0
padrao em ,,2. E equivalente 3: not vI cp vz. Os caracteres com correspondencia
de padrao permitidos em v2 sao fornecidos na Tab ela lOA.

wr i t e 'T rue' . else . wri t e 'F als e ' . end i f.


"XYZ ' " .
write 'True ' else . write ' Fa lse ' . end ; f .

" AB''' .

"

SAiDA ~

'AB' Tr ue
' ABC' Fa ls e
'AB' False
' ABC ' True
' AB ' True
' XYI ' False
' ABC' False
'XYI ' True

Tabela 10.5 Utilizondo corccteres


Instrul!ioo

Ve rd a deira q ua ndo

vl CP ' A+C'

A linha 6 efalsa porque ' ABCD' contem urn D, que DaOesta em ' ABC' .

vl pode conter "a" na primeira posic;ao e "c" na tercelrc. Os dots


cc rocteres podem ester em letrc mcic sculc ou em letro minuscule .
O vclqver ca ractere pod e a pa recer no seg unda posic;oo.

,,1 CP '* Ab*'

A string -ab- ped e occ rrer e m qua lquer lugar dentro de "1. Os dois

As linhas 10 e 12 sao 0 oposto das linhas 4 e 6 porque cn e 0 mesmo


que not ,,1 co v2. Portanro, os resultados sao invertidos. A linha 10 e
falsa e linha 12 e verdadeira.

,,1 CP ' *I Alb*'

111. pode conter uma letra A motusculc seguida por vmo letrc b
minuscule.

vl CP ' *" .'

v1 pod e conter urn ,.

co e 0 operado r que contern exclusivamem e. A linha 4


porque 'AABB' contem apenas caracteres de ' AB'.

e verdadeira

ce e 0 operador que esd. comido e a linha 16 sera verdadeira se 'AXCZ '


contiver quaisquer caracteres de 'AB I t verdadeira po rque contem A.

ca raderes pode m este r em letra rnciu sculc o u em letro mlnusculo .

323

324

DIA 'UNSTRU\OES 0, CDNTROlE COMUNS

APRENDA EM 21 DIAS ASAP/.

A utilizacao desses ope rad ores sempre configu ra a variavel de sistema


sy-fd pos. Se 0 resultado cia comparacfo for verdadeiro, sy-fdpcs ira center 0
desloca menro com base em zero ciap rimeira correspondencia ou car actere sem
correspondencia, C aso contrdrio, sy-fd pos ira canter 0 comprimento de vj. 0 .
valor atribuido a sy- fdpos p or cada ope rado r sera descrito na Tabela 10.6.
Depois de uma com paracao, sy- f dpos ira comer urn deslocamenro do
primeiro caractere au 0 compriment o de v i. Nesta tabe la, " 1st char(vl)"
significa"o deslocamento do primeiro caractere de (string ou pa drao) vl ".
Entao, por exemp lo, onde esra " 1st char(v l) in v2", significa "0 deslocamento
com base em zero do pri meiro caractere de vi, que esta rambem em v2n
Length(v l) significa "a comp rime nto de vl". Observe que somente a primeira
ca lun a contem as insrrucoes do ABAP/4.
Tab ela 10. 6 Valor atribuida a sy-fdpos par coda operodor
Compa rafjoo

if TRUE sy-fdpos

if FALSE sy-fdpos :

vi CO v2

length (v1)
1"chor (vi) in v2
lslchor (vi) in v2

length (v1)

length (v11
P'c hcr (v2) in vi

P'chcr (vi ) in v2
length (v1)

length (v1)

T'chcr (vi) in v2
length (v1)

vi CN v2
vi CA vz
vi NA v2
vi CS v2
vi NS

vz

vi CP v2

1"chcr (v2) in vi

1"chor (vi) not in v2

15 if 'ABCD' en ' ABC' .


16

18 * operador: ea
19 write / "'AXCZ" ce " AB" '.
20 if 'AXCZ' ce ' AB' .
write 'True'. else. write 'False' . endif .
write: "sy-f dpcs", sy-tepcs .
21
22
23 write / "'ABCD" ca "XYZ"'.
24 if 'ABCD' ea ' XYZ' .
write 'True'. else. write 'False'. endif .

25
26
27

write: 'sy-fdposz' . sy-fdpos .

28 * operador: na
29 write / " 'AXCZ" na " ABC' "
30 if 'AXCI' na 'ABC' ,
write ' Tr ue ' . else .
write : 'sy-fdpos' .
Jl
32
33 write / "'ABCD" ne " XYZ' "
34 if 'ABCO' na 'XYI'.
write ' Tr ue ' . else.
write: "sy-fdpos>",
35

write ' Fal se'. endif .


sy-tdpcs ,

write ' Fal se'. endif .


sy-fdpos.

length (v1)

ENTRADA~ Lista gem 10.4 Utilizando sy-fd pos para ver a deslocamento do primeiro
cc roctere correspondente au do coroctere sem correspondenclc

"AB'"

write 'True '. else . write 'False '. endt t .


write: ' sy- f dpos=' , sy-fdpos.
" ABC'"

write 'True' . else. write ' Fal se '. endif.


write: "sy-fdpus", sy-fdpos.

"AB' ''.

write ' Tr ue ' . else. write 'False' . endt f ,


write: "sy-fdpos>", sy-fdpcs .
"ABC'"

write 'True'. else. write ' Fal se '. endif .


write: 'sy-fdpos"' . sy-fdpos.

17

o c6digo na Listagern lOA produz esta safda:


'MBB'
' ABCD'
'MBB'
'ABCD'
'AXCl '
'ABCD '
'AXCl'
'ABCD'

A Listagem I DA esemelhante a Listagem 10.3, mas algum as linhas for am


adicionadas para exibir 0 valor de sy-fdpos depois de cada comparaclo.

1 report ztxl004 .
2 * cperacor r co
3 write / "'MBB " co
4 if 'AABB' co 'AB'.
5
6 write / " 'ABCD" eo
7 if 'ABCO' eo 'ABC' .
8
9
10 * opera dor: en
11 write / "'MBB" en
12 if 'AABB' en 'AB '.
13
14 write / " 'ABCD" en

325

INillS~ ~

co
eo
en
en
ea

'AB' True sy-rdpcs'ABC'. Fal se sy-fdpos 'AB' False sy-fdpos"


'ABC' True sy-fdpos=
' AB' True sy-fdpo s"
ce ' XYZ' False sy~fdpos=
na ' ABC' False sy-fdpo sz
na ' XYZ' True sy-fdpos=

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

DIA 10, INITRU(OEI DE CO""OLE COMUNS

APRENDA EM 21 DIAl ABAP/<

resultado dard falso. Sy-fdpos e configura da para 0 deslocamento com


base em zero do primeiro caractere em ' Axez qu e tambem est a em
' ABC '.

EMTRADA~ Lista gem 10.5 A j nstru~a o case exe cuta uma serie

de

327

compara ~6es

1 report ztxlO05.
2 paramet ers fl type i default 2.

A linha 34 e, novamente, uma negacao 16gica de urn teste de ca. ABeD


nao con tern urn valor de ' XVZ' e. po rtanto , urn teste de ca seria false.
Negar esse resultado dara verd adeiro. Sy- f dpos e configura da par a 0
comprimento de ABeD ' .
I

3
4 case fl.
when 1.
5
when 2.
6
when 3.
7
when others .
8
endcas e .
9

Utilizando a instruc;a o case


Sintoxe do instrU!;fio case

13
14

A seguir, veja a sintaxe da insrrucao cas e.

case vr ,
when ,,2 [ or vn ].

else.

16

end; f .

SAioA~

--- I

endcase.

onde:
vl OU '12 podem

seruma variavel, literal, consrante ou string de campo.

ANiuSE ~

Sornen te as instrucoes apes a prirneira corresponden cia wh en serso


executadas.
when others corre spondera se nenhurna when pre ced ente corr espo nder.
Se when ot he rs nao estive r codificada e nenhuma when cor resp on der,
o processamento continuard com a primeira instrucao apes endcase.
As expr essoes nao sao permiti das.

pardme tro de urn unic o caractere com urn

A proxima linha executada e a linha 12.

Utiliza ndo a instruc;a o ex; t


A instrucao ex; t impe de que processamentos posteriores ocorram.

Sintoxe do instru\joo ex; t

CA

A s Str ings de campo sao tra tadas como sendo variaveis do tipo c.
semelhante a if/ els eif. A un ica diferenca

A linha 2 defi ne fl como


valor padrac 2.

A linha 6 faz a corr espo ndencia e executa a instrucao wr -t te imediatam ente depois dela. As insrrucoes when rema nes cen tes sao ignoradas.

a s seguintes pontos se aplicam :

e mu ito

fl = 2
fl .. 2

N a linha 4, comeca a inscrucao case e fl ecomparado com 1, 2 e 3, ern


seque nci a.

--- representa qualquer mimerc de linhas de c6digo. Ate mes mo zero


linhas sao permitidas.

Case

elseif fl ,,3.

write/ 'fl" 1' .


write / 'fl 2'.
write / 'fl z 3'.
writ e / 'fl i s not 1, 2. or 3' .

a codigo na Listagem 10.5 pr oduz esta satda:

[ when ot hers.

fl "'l.
elseif fl .. 2.

15

when 1'3 [ or vn . ] .

is not 1. 2. or 3' .

11 * 0 c6digo a seautr e equtvalente a instrlll;ao case aci ma


12 if

.. 1'.
'" 2' .
" 3' .

10

A instrucao case executa uma serie de cornparacoes.

wri te / ' fl
write I ' fl
write I 'f!
write / 'fl

e qu e em cada

t f /el s ei f, voce pode esp ecificar uma expressgo complexa. C om case, voce

pod e especi ficar somen te urn anico valor a ser comparado e os valores sao
sempre comparados quanto a igualdade. Urn exemp lo sera. for necido na Lista gem 10.5.
.

S
m

exit.

10

...
328

I APRE NDA EM 21 DIAS ABA PI4

OIA10: INSTRU~6B DE CONTIl:OLE COMUNS

A Listagem 10.6 mostra urn programs de exempl o utilizando exi t.

EHTRAOI~

Os seguintes po nt os se aplicam:

3 exit .

Os loops do podern ser aninhados por urn numero ilimitad o de vezes.

write: / ' There' .

Sliol ~

Voce pode criar urn lo op infin it o p ela co dificacao de do sem qualquer


adiljao. Nes sa situacao, utilize exit dentro do lo op para terminar a
processamento de lo op .

Hi

Exit impede 0 processamento posterior, sendo ossim, exit no linho 3 impede


que a linha 4 seja executado.

ex; t ~ode ser ut ilizada em varies situacoes. Essa ins trucao p ode ter

diverso~ efeiros, dependendo do loc al onde aparece no codigc. Entretanro, ela

~empre_lI~pede processamentos pos teriores. Dentro de estruturas de loop, tal


instrucao rgno ra 0 proces samento de lo op introduzido pelas instrucoes com o
, ~op, se l ec t , do e wh'i I e. Dentro de sub -retinas, ignora as su b-retin as introduzida s por FORM. Seus efeiros em outras situacoes. serao com plet ame nre
explorados a medida que surgirem.

Utilizando a

instru~ao do

A insrrucao do corresponde a urn me canis m o de loop basico.

Sintoxe do instruljOo do
A seguir, veja a sint axe da instru cao do.
do I vI ti mes] I vary ing 11 f rom s-cl next s-c2 ( varying 12 from s2.cl
next s2-c2 . .. ] ].

lexft .I

enddo.

onde:

e um a variave j. literal a u const ante.


s e uma string de cam po com as componen tes c1 e c2.
vI

11 ~ uma varidvel. O s componentes de s podem ser convertidos para


o tipO de dado e comprim en t o de 11.

ext t imp ede a processamento de loop posterior e sai imediatamente do loop


atua]. Nao tennina 0 programa quando dentro de urn loop do. 0 proces samento contin uaci na pr6xima instruclo execuctvel depois de enddo.

c6 digo na Listagem 10.6 produz esta saida:

IHiuSE ~

- - - representa qu alquer numero de lin has de ccdigo.

Listagem 10.6 Utilizondo ex; t para interromper a co ntlnuccco do


processomenfo

;:

. . . representa qualque r numero de claus ulas varying completas.

1 report ztx~006 .
2 write: / ' Hi' .
4

!!

Modificar
de loop.

valo r de vl dentro do lo op nao afetard

pr o cessam ento

Dentro do lo op, sy- t ndex contera a numero de iteracao atual . Por


exemplo, a primeira vez at raves do lo op , sy- in dex sera 1. A segunda vez,
sy-i ndex sera 2 e assim por dianee. Depoi s de enddo, sy- i ndex ira co nte r 0 valor
que tinha an tes de entrar co m 0 lo op. Com lo ops do aninhados , sy- i ndex ira
conter 0 mimero de iteracio do lo op em que e util izad o (veja a Listagem 10.7) .

EHTRADA~ L1sta g e m 10.7- Sy- in dex co nte m a nume ro de iterac;oo otuo l


1 report ztxl007 .
2 ' sy-t ndex = 99.
3 writ e: / ' before l oop, sy-t ndex
4 do 5 t imes.
5
wrt te sy-t ndex.

6
enddo.
7 write: / 'after

=' ,

sy- t ndex, / "

loop, sv- tndex . ', sy- f noex, / "

8
9 do 4 times.
wr i t e: / 'out er
loop, sv-tnoex =' , sy-tndex ,
10
do 3 times.
11
write : / ' in ner loop, sy-in dex - ", sy -f ndex.
12
enddo.
13
endoc,
14
15
"neve f t nhe
16 write : / " .
17 do 10 times.
18
write sy - f ndex.
19
if sy- index = 3.
20
ex; t.

21
22

endi f.
enddo.

329

330

D~ Ie INmll\OEI DE CONTROl! CDMUNI

,HREN D'" EM 21 OIlS l U PI4


6

o codigo na Listagem 10.7 produz esta saida:


IliDI ~

before l oop. sy-index ..

loop,
l oop,
l oop,
loop,
l oop,
loop,
fn ner l oop.

after
. oute r
inn er
inner
inne r
outer

sy- i ndex "


sy - t ndex "

sy- i ndex =
sy-tndex =
sy- t ndex =

sy-index ;:
sy- t ndex ..

inner l oop, sy-t ndex


inne r loop .
loop ,
inne r l oop,
inner l oop.
in ner l oop.
out er l oop,

outer

sy-i ndex ..

sv- tnoex =
sy-tncex ..
sy- tn dex

sy-i ndex ..
sy-t acex ..

i nner loop, sy-tndex "


i nner loop . sy-t ndex "
i nner l oop. sy-tneex ..
1

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

Para terminar urn loop sem fim :

1. Quando efetuar logon pela primeira vez, selecion e

Em rc ros oc oslees, a nec essldcde de "mete r tempo" surg ir6 em um


program a. Voce no o dever6 utilizar urn loop vcnc par a recllzc r issei
a CPU ser6 consu mida desnecessoriamente , se voce [izer isso. Em vez
dissc , voce dever6 chamar 0 m6dulo de fum; oo rzl_51eep .

pede agoIil testar os programas com impunidade.

3. Agora execute urn prog rama que contenha urn loop sem fim, como
ztxlooa. Voce vera uma arnpulheta quando seu ponteiro estiver sobre
a jan ela. Observe 0 num ero de sua sessao na barre de status na parte
inferior da janela.
4. Mantenha pressionada a TeclaAlt e pressione Tab vi rias vezes ate que

Existir jo oc asioes em que urn programa em execucto tera urn loop inte rminavel. A Listagem 10.8 mostra tal programa.

so vber interrompe-lo
I r eport thIOQ8.
2 do.
3
'Ilrite sy-teeex .
4
if sy-1ndeK .. O.
5
exit .

se

caminho de

2. Minimize sua nova sessao e a deixe no fundo ate precisar dela. Voce

Term inando um loop sem f im

ENTRADA ~ Lista g e m 10.8 Urn loop sem tim poder6 ser frustrcnte

menu System-s-Create Session .

o foco fique no leone R3 representando sua out ra sessao .

voce n60

5. Solte a tecla Alt.


6. Digic e / 0 no campo Command na barra de [erram entas Standard.
7. Pressione a Tecla Enter. A caixa de diilogo Overview Of Sessions
aparecera. Ela contem uma lista de suas sessoe s, A esq uerda de cada
uma esta 0 numero assoc iado de sessao.

331

-~

334

-~

--

-- - --- -

I " RENDA EM 21 DIAl ABAP/4


cl typ e i
c2 type i
c3 type i
c4 ty pe i
c5 t ype i
c6 ty pe i
end of s ,

7
8
9

10
11
12
13

DIA 10: INSTRU~OES DECDHTROLE COMutiS


val ue
val ue
val ue
val ue
valu e
valu e

I,
2,
3,
4.
5,
6,

12
13 write / "
14 do 6 times varyi ng fl from s-et next s-cz.

15
16
17
18
19
20

"

15 do 3 times veryt 119 fl from s-e t next s- ea


16
varyi ng f2 from s-ez next s-ea.
17
write: / fl, f 2.
18
add: fl TO tott ,
19
f2 to t ot2.
20
enddo.
21 wri t e: / ' - ~ - -- - - - -- -- - ---- ---- ' ,
zz
/ toU , tctz.

21
22
23

IAiDA~

o c6digo na Lisragem 10.11 produz esta saida:

SAiDA ~

AHillSE~

12

AHilll~ ~

fl recebe quolque r outro componente de s comeccndc com 5-c 1 e f2 recebe


qvclq uer o utre compo nente ccmeccndo com s-cz.

Modificando valores denim de do . .. varyi ng/e nddo

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


Q uando a insrrucao enddo e executada, 0 valor atual de 11 e retornado ao
component do qual oeio, independentemente se foi modificado ou nso. Na
Listagem 10.11, 0 relat orio ztxlO l 1 iiusrra essa funci onalidade.

fNTRADA~

L1stagem 10.11 0 valor otocl de fl e escrito novamente no


componente de envio quando enddo e executada

1 rep ort zt xlOl l.


2 data : fl ty pe f ,
3
begin of s ,
4
cl typ e t
5
cl typ e t
6
c3 typ e t
7
c4 typ e i
8
cS typ e i
9
c6 type;
10
end of s .
11 fi e l d- symbols <f>.

valu e
val ue
value
val ue
val ue
value

if sy-index .. 6.
s -c6 .. 99.
else.
fl=fl*l .
endif .
ass ign component sy-tndex of structure s t o <f:> . H< f> i ndfca agora
write <f>.
Hum componente de s
enddo.

24 write / " .
25 do 6 times varyi ng f l f rom s- et next s-cz .
26
wrfte f1.
27
enddo.

o c6digo na Listagem 10.10 produz esta saida:


1
3
5

I,
2,
3.
4,
5,
6,

335

1
2

2
4

3
6

4
8

5
10

99
6

Na linh a 14, os valores sao lidos dos componentes da string de campo


s para fl-, urn por vez.
A lin ha 18 modifica o valor de cada fl, multiplicando esse valor por 2.
ultimo valor de f1 nao modificado. Em vez disso, ao componente
de envio e atribuido 0 valor 99.

A linha 20 atrib ui urn com po n en re de s ac sfmbolo de campo <f>. A


primeira vez atraves do loop, 0 componente 1 (cl) e atribuldo a <f>.
Na segunda vez, 0 componente 2 (c2) e atribuido e assim por diante.
A linha 21 escreve 0 con teudo do componente que enviou seu valor
para f l. Na listagem de saida, voce pode ver 0 conteudo de cada
componente de 5 antes que enddo seja executada.
Quando a instrucao enddo e executada na linha 22,
substitui 0 con teudo do componente de envio.

conteudo de fl

Novamente, variar atraves do loop (linhas de 25 a 27) exibira 0 novo


.conteudo de S . Isso mostra que 0 valor de f1 den tro do loop sobres creve sempre 0 conteudo 'd o componente de envio.
Uma instrucao ex; t dentro do loop ndo impedira qu e 0 conreudo modificado de f1 seja escrito de volt a para 0 campo de envio. A iinica maneira de
deixar 0 loop sem 0 conted do de fl. sobrescrevend o 0 campo de envio, e
executando uma instrucao stop ou um a in srru cac de mensagem de erro dentro
do loop (ambas abrangidas em capitulos posreriores) .

336

D~ lD,lN"'"IIiB DECDNTROlE (D.UNS

APRENDA EM 21 DIAS AlAP/4

ENTlADA ~ Listagem 10.12 Urn exemplo do usa do

Utiliza ndo a inst ruc;ci o whi 1e


A ins truc i c whi 1e corre sponde a urn mecanisme de loop semelhante ao do.

Sintoxe do instruc;ao whi1e


en A seguir, veja a sintaxe da insrru cao whi 1e.

S
m
~

whi 1e exp [ vary f1 f rom s-c1 next s- et [ vary i 2 fro m s2-cl next s2-cZ .. ]

extt ,

endwhl 1e.

onde:

exp

euma expressso logica.

euma String de campo co m os componentes c1 e c2.


fl e urna varidvel. Os componentes de s podem ser con vert idos para

. . . represent s qualquer numero de clausulas vary compleras.

-- - repre sent s qualquer numero de linhas de c6digo.

14

endwhil e .

15 write: / p,

sliol ~
AHiuSE ~

a s seguint es ponte s se aplicam:

whi 1e

1 r eport ztx l 012.


2 data : 1, _
"caract eres tnt ct et s
3
r,
"cerect er es f 1na1s
4
done.
"f l ag de ccnctu r dc
5 par amet er s p(25} default'
Vendor Humber ' .
6 while done s ' ,
"a expressac e aval 1ada primei r o
7
vary 1 from p+O next p+l
"em segui da . as atr ibu1~ 6es vary sao executadas
8
vary t f rom p+24 next p+23.
9 1 f l " andt ..
10
l a t := ' -' .
11
e lse .
12
done ' X' .
13
endif .

o tipo de dado e comprimento de fl .

instru<;6 0

c6digo na Listagem 10.12 pr oduz esta safda.

p-- - Vendor Number

As linh as 2 e 3 definem duas variaveis com urn de ice caractere 1 e t.


A linha 3 defin e urn flag para indicar quando processamento e conduido.

Os loops whi 1e podem ser aninh ados por um mimero infinite de vezes
e tambem podem ser aninh ados dent ro de qualquer ourro tipo de loop.

A linha 5 define p como caractere 25 corn urn valor padrao.

exi t impede 0 processamento de loop posterior e sai imediatamente


do loop atual. 0 processamento continua na pr6xima instrucao execaravel depo is de endwhi 1e.

N a linha 6, a expressdo na instrucl o wh i 1e eavaliada ern primeiro lugar.


Retoma verdadeiro, pela prirneira vez, atraves do loop. As atribuicoes
nas linhas 7 e 8 sao ent jc executadas. A linha 7 .atribui 0 primeiro
caractere de p para 1 e a linh a 8 atribui 0 ulti mo caractere para t .

D entro do loop, sy-t ndex ira center 0 ndmero de itera~ao atual.


D epois de endwh i 1e, sy-i ndex ira center 0 valor que tinha antes de
entra r com 0 loop. Com loops wh i 1e aninhados, sy- t ndex ira center 0
numero de iterar;ao do loop em que e utilizado.
endwh i 1e sempre copia
envro.

valor de 11 de volta para

cornp one nte de

Em urna inStrUCI3.0 wh i 1e contendo urna expresssc logica e uma adicao


varyi ng, a expressao logica e avaliada primeiro.
while e muito semelhante a do. Aqui, ela e utilizada para colocar urn
num ero igual de traces em ambos os lados de uma string.

Se 1 e t estiverem ambos em bran co, a linh a 10 atr ibuira urn trace aos
do is. Se nao estiverem, a linha 12 atribuira urn ' X' ao flag done.
N a linha 14, endwhile copia os valcres de 1 e t de volta ao p.

0 loop whi le sera novamente repetido a part ir da linha 6, desde que 0


flag done esreja em branco .

Utilizando a instruc;60 conti nue


A instruc ao cant 1nue ecodificada dentr o de urn loop. Ela atua como uma goto,
passando 0 controle imediatamente a instrucao de terminacao do loop e
cc mecando uma nova passagem de loop. Na verdade, faz com que as insrrucoes
abaixo dela, den tr o do loop, sejam ignoradas e um a nova passagem de loop
comece. 0 efeito da insrru cao continue e mostrado na Figura 10.1.

337

338 I

DIA 10: INSTRlIl;05 DE (QIlTROLE COMUNS

APREHDA EM 21 D'A5 ASAP"

(Igu ra 1 0 1
A instro~Oo

cont inue

pula pore 0 finol do


loop, ignorondo todas
as jn~6es depois
delo pore 0 possogem
do loop cwa l.

do 10 times.'
if sy index between 3 and 8.'
continua,' - _

endif.,
write sy-index.'
enddo.

o c6di go na Figura 10.1 produz esta saida: :


IAiDA ~

Z
-t

"
IAiDA ~

AHiuSE~

c ode:

A Lisragem 10.13 esemelhante a uma instrucao goto. Ela executa urn salto
para 0 final do loop arual. Est e programa remo ve caracteres duplicados, como
dois-pontos e barns invertidas, de um a string de entrada.

ENTiADA ~ Listagem 10 .13 Urn exemplo do uso do instruc;oo continu e


1 report ztxlD13.
2 peree et ers p(2D) def ault 'c:: \ \ \ xxx\ \ yyy' .
-cerect ere atual
3 data : c,
proxl mo ceractere
4
n.
S
6 do 19 ttees varying c from p+(l next p+l
varyin g n from p+l next p+2 .
7
i f c na ' :\ '.
8
cont i nue.
9
end1f.
10
if c n.
11
wr i te : /'duplicat e ' , c , 'found', ' at position'. sv-tndex .
11

5
10

postttcn

A linha 2 define urn pardmetro de entrada p com 20 caracteres de


comprime nto e atribui a ele urn valo r padrao.
0

caractere depois dele

primeiro

eatribuid o a n.

loop

Se a linha 8 nao for verdadeira, a linha 11 sera executada e sera


verdadeira se 0 pr6ximo caract ere for 0 mesmo que 0 caracte re atu al.
A enddo co pia os valores de c e n de volta para p e 0 loop
vezes de urna s6 vez.

Os seguinres po ntos se aplicam:

cant i nue nao tern adicoes.

: ou I.

._ ~ representa qualq uer num ero de linhas de c6digo.

posit ion
position
posi t ion

A linha 9 pula diretamente para a linha 14, faz.endo com que


seja repetid c utilizando 0 proximo caractere.

[enddo/ endwh11eI endse1ect j end' oop)

cont i nue pode somente ser codificada dentro de urn loop .

at
at
at
at

A linha 8 sera verdadeira quan do c contiver urn caracrere diferenre de

conti nue .

found
found
found
found

caractere de p e at ribuldo ace

[do/ whil e/ select/l oop]

dupl1cate:
duplicate \
duplicate \
duplicate \

A linha 6 inicia urn loop. Na prim eira passagem do loop,

do, while, select ou l oop. (A instruciio l oop sera abrangida n o pr6ximo


capirulo.)

enddo.

o c6digo na Lisragem 10.13 produz esta safda:

1 2 9 10

Sinta xe do instrUl;60 cont i nue


en A seguir, veja a sintaxe ciainsrrucfo conti nue. Pod e ser utilizada dentro de um a

endtf ,

13

Utilizando a

instru~a o

erep etido 19

check

A instrucac chec k e codificada dentro de urn loop. Ela pode atuar de fo rma
mu ito semelhante a cont inue, passando 0 con trole imediat amen te ains rrucio
de terminaqao do loop e desviando das in strucoes intermediaries. Diferente de
cont i nue, ela aceita um a expre ssjio l6gica . Se a expressao for verdadeira , nao
fara nada. Se for falsa, pularf para 0 final do loop. 0 efeito da instru cao cheek
emostrado na F igura 10.2.
Fi g u r a 10 2

A instru o check e

do 10 times.
check not sY_,-index between 3 and 8.

umoin~60

write sy-index.

continue

enddo.

.~

... -;.""

condition al. f lo
soltor6 poro 0 final do
loop se a expressoo
l6gica lor Io/so.

o c6d igo na Figur a 10.2 produz a mesma safda daqu ela apr esenr ada na
Figura 10.1:

339

340 I

OIA 10: tNSTR~6ES DE CONTROLE COMUNS

' PREND' EM21 DIAl AB APf ~

SAioA~

1 2 9 10

S
Z

A se guir, veja a sintaxe cia insrru cao check. Pode ser util izad a dentro de um a
do, wh ile, sel ect au loop. (A ins rru cso loop sera abrangida no proximo
cap ft ulo.}

Compara ndo as instru c;6es exit, cant i nue e

check

[do/ whi 1el se1ect/l oop]

Tabela 10.7 Comparando exi t , continue e chec k

[enddo/endwhi l e/ endse1ectjendl oop]

onde:

exp

euma expr essao Iogica.


representa qualquer num ero de linhas de c6digo.

N a Listagem 10.14, check se comporta ra como uma instruc ao conti nue


qu ando a expre ssao logics for falsa. Quando for verdad eira, na o fara nada .
~NIRAOAllo.. L1stagem 10.14 A listag e m 10.3 la i navamente cadili cad a a lim de
,.. utili zer instrucdo check em vez de contin ue

5
6
7

o c6 digo na Listagem 10.14 produz esta saida:


SAioA~

cat e:
cat e \
cat e \
cate \

fo und
f ound
fo und
fo und

at
at
at
at

pos i t i on
posit ion
posi t ion
position

2
4
5
10

,
lrrrr.r.. As li nhos de 8 a 10 no Lisiogem 10.13 foram substituidos pelo lin ho 8 no
ANALISE,. Lisiogem 10.14. 0 progromo trobolho exotomente do mesmo maneira.

Efel to

exit
contin ue
check exp

Sai do loop otuo l.


Faz urn sclto incondicionol para a fino I do loop.
Soltero para 0 fina l do loop se exp forfaJsa.

A instruclo wri t e pennite a especificacao de urn eo rnprirnento e posicio de


saida.
Embora a ins trucao writ e permita muitas especificacoes complexes, as
especificacces regu lar es de comprimento e p osicao serao apresen tada s aqu i a
firn de pe rm itir que voce eri e relatorios basicos nesse e no capitulo a seguir.
Urn tr atamen to det alh ado da insr ru cac write aparece ra posteriormente no
Capitulo 14.

1 re port zt xl014.
par amet ers p(20) defa ult 'e ::\ \ \ xxx\ \ yyy' .
"ceract ere atua l
3 dat a: c,
"pr6xi mo
cer act ere
n,
4
do 19 t i mes vary i ng c f rom p+O next p+l
var yi ng n from p+l next p-z,
check c ca ':\ ".
8
i f c = n.
9
write : I 'du plicate '. c. ' f ound '. 'at positi on'. sy-tnoex .
I.
endt f.
11
enddo .
12

Instru~ao

Especificac;6es sim ples de co m primento


e posi C;Cio da instruc;Cio wr i te

dupl
dupl
dupl
dupl

Na Tabela 10.7, as insrru coes exit, cont i nue e check serao cornparadas.

check exp o

341

A ut iljzo~60 de check ou continue dentro de um loop select pode ser


multo inefkiente . Voce deverc , sempre que possfvel, modlflccr 0
c16usulo where a fim de selecionar menos registros, em vez disso.

Sintaxe do instruc,;Oo check


III

Sintoxe pa ra especificocoes sim ples de comprimento


e posic,;co no instruc,;co wri te
en A seguir, veja a sint axe para espe cificacoes simples de comprimento e posicao
.
- wr-r.t e-.
Z na mstrucao

write [IJ [P][ (L)] vI.

onde:

vi

P e urn num ero que in dica u ma po sicao na lin ha aru al de saida.

e uma variavel, literal ou eonstante .

ie urn

numero que indica


saida de vi .

numerc de bytes aloc ado na Iisra para a

342

'm HO' EM 21 DIAS

'BAPH

OIA10: INSTRUtOES DE CONTRCLE COMUNS

10
11
12

/ 2(1) ' Hi'


' There'
/ 2(3) ' Hi '
' There '
' Hi', 10(3) 'Ther e '
/2

I, PeL devem ser codificados sem quaisquer espaco s intervenientes.

1J

A Tabela 10.8 mos tra as maneiras correta e inccrreta de codificar as

14
15
16

Os seguintes pontes se aplicam :

/ comeca uma nova linha,

esp ecificacoes de comprimento e posi~a.o na instru~o wri t eo


Ta b e la 1 0 .8 Moneiros co rreta e incorreta de codificcr as es peclflcocoes de
comp rime nto e posicco no instruC;ao wri t e
Correta

IncorTeta

write /10 (2) ' Hi'.

write / 10( 2) ' Hi ' .

/ (3)
/ (2)

o
. SAiDI ~

write / 10 (2) ' Hi'.

write / 10 e2} ' Hi ' .


write / 10( 2) ' Hi' .
write / 10( 2 ) ' Hi' .

write 10 'H1' .

Hi There
HiThere
HThere
There
Hi There
H There
Hi There
Hi
The

123
123-

123

write 10 ' Hi ' .

Se voce deixor um espccc entre / e a especificocco de comprimenlo

ou pcslcco, 0 verlficcdcr de sintoxe poder6 outc mcticc mente corriqi-lo

para voce. Simplesmente pressione 0 bctec Correct no parte inferior


do [onelc de mensogem quando ere cpcrecer.

A Listagern 10. 15 ilustr a 0 usc das especificacoes simples de cornprimenta e posic;:ao na in st rucao wr ; te oMost ra tambern algumas das armadilhas.
A linha 3 representa um a regua de modo que po ssa ver a s mimeros de coluna
na safda.
Ilrlt... Listagem 10.15 Ut ilizoc;oo des e.spec tftcoc oes simpl es de com prim ento
EHTRADA,. e pos ic;oo no instru c;oo wri te
1 re port ztxlOl5.
2 data : f1 type p val ue 123.
3
f 2 type p val ue - 123.
4 write : / ' . ... +.. .. 1 +.. .. 2.... +.. .. 3.... +. 4 .
5
/1
'Hi '. 4
'There '.
6
/1
' Hi'. 3
' Ther e '.
7
/1
' Hi' . 2
There ,
8
/1
' Hi' . 1
' Ther e ' .
9
/2
'Hi ' .
"r her e" ,

INlllSE ~

f 2.
f2 .

c6digo na Lista gem 10.15 prod uz est a saida:

write ' Hi' (2) .


write ' Hi' 10.

+ 1 + 2. + 3. . . . + 4

write (2) ' H1'.


write ( 2 ) ' Hi

fl.
fl.
fl.
f l.

123-

A linha 4 representa um a regua de modo que voce possa claram en te


ver as colunas na lista de saida.
A linha 5 escreve Hi comecando na posic;:ao 1 e There comecacdo na
posic;:ao 4~
A Iinha 6 escreve Hi com ecand o na pcsicao 1 e There comecando na
posicao 3.

A Iinha 7 escreve Hi comecando na pcsicsc 1 e There comecando na


posic;:ao 2. There sobrescreve a ult im a posicio de Hi .
A linha 8 escreve Hi comecando na posic;:ao 1 e Ther e cornecand o
tambem na posicsc 1. There so brescreve Hi completamente e voce na o
p o de nem ao menos diz er se Hi foi escrito na lista.
A linha 9 escreve Hi com ecan do na p osic;:i o 2 e There depois de la. Wri t e
deixara urn espaljo entre os valores se voce nao especificar uma pcsicsc
de saida.

A lin ha 10 escreve Hi ccmecando na posicjo 2 para urn comprim ent o


de 1. Isso escreve so m ente 0 prim eiro caractere: H.

A lin ha 11 escre ve Hi comecando na pcsicac 2 para urn co mprimento


de 3. Urn espaljo inre rmediaric vern depois, tomando da is e, em
seguid a, There.

A linha 12 escreve Hi comecando na pcsicao 2 e There na posicsc 10


para urn co mp rim ent o de 3, fazen do com que The aparec;:a na lista.

343

344

Oil 10: I NSTR~bES DE (OHTROlE COMUNS

HRENDl EM 21 OilS lBlP/4

A linh a 13 escreve as cam pos deci mais compactados f1 e fl , em


sucess ao.

check exp sahara para 0 fin al do loop se exp for falsa. Quando exp for
verdadeira, check nao fara nada.

A linba 14 tambem escreve f1 e f l. Dessa vez, fl e escrito comecando


na posj~ o 4. O s espacos iniciais que comegam na posicjo 4 scbrescrevem 0 valor de fl, fazendo com qu e somente f l apa reca na safda.

Na insr rucac wri te, a posi c;ao e 0 comprimento podem ser imediatament e esp ecificad os antes d o valor de saida . N enh um espaco

A linha 15 escreve fl e aloca apenas tres byte s na lisra de safda para 0


valor. f1 aparece na lista cornecando na posicao 1; ele preenche co mpletamente 0 campo de safda .

A Iinha 16 escr eve f1 e alo ca apenas 2 bytes na lista de safda para 0


valor.
valor de fl n ao pode ser exibido em tres bytes, entao urn
asterisco (*) aparece na pr imeira coluna para ind icar 0 esto uro.

Resu m o

As instrucoes de comparacac sao i f e case.

case proporciona uma eapaeidade semelhan re a if/ elseif, mas campara da is valores somente quanto a igualdade .

As convers6es oco rrem ao com parar tipos diferentes de clados. A


ferram en ta de ana lise d o pro gr am a acertari as eonvers6es sempre qu e
elas ocorre rem.

Operad ore s especiais estao dispcnfveis para comparacces de String.


Utilize CP e NP para corresponder as strings co m os pad roes. Sy- f dpos
e configurado depois de cada com paracao.

A s insrrucoes de loop sao do e whi1e.

intervenie nce deve aparece r en tre eacla especificacio.

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

IFa~a

P&R

Por que as op eracees de bit n ao sao muito urilizadas n o


A BAPi 41 0 que e utilizado em seu lu gar?

o us o de um a op eracao de bi t cria uma dependsncia do sistema


op eracion al. Isso re duz a portabilid ade, portanto. ela njio e
u tilizada a m en os que seja necessaria . Em vezdisso, uma variavel
co m u rn un ico caracter e e utilizada para rerer urn uni co va lo r
ativado/de sativado. C ornu men te . 0 "X" representa urn va lo r
"ativ ad o" e espaco rep resen ts um va lor "desativado".

sy-index contem sempre 0 contador para a pa ssagem d o lo op atual.


De pois de concluldc 0 loop, seu valo r ereinieializado para 0 que tinha
quando do inicio do lo op . Embora vo ce possa alterar sv-t ndex, seu
valor sed. reinicializado co m a proxima passagem do loop.
Utilize vary i ng para atribu ir

pr 6xim o valor de uma ser ie para um a

variavel. Se voce modificar a varisvel, enddo ou endwhi 1e copiarf 0 valo r

m od ificado para 0 lo cal de onde veio.


Utilize um a outra sessao e

comando /

Nao utilize check ou continue dentro de


um loo p select para Hltrcr registros. Em vez
disso, utilize a d6usula where pora filtrc-los.
Nao [eio op6s 0 final de uma voriovel ou
string de compo corp a adir;Cio . . aryin g.
Excecces de proter;ooe comporto mento
lmprevisfvel poclem cc orre r.

Abro duos secees sempre que efetuor


logon, de modo que voce posso
termine r um loop infinite.
Utilize . . aryi ng para ler uma serie de
compos eqOidistantes a partir de uma
string de campo.

Por que X e a tecla de espaco sa o u til izados para representar os


valores binaries ativado e desativado ? Acho que 1/0. T /F o u
Y I N deveria ser utilizado, como e 0 comum na area de pro-

gramacao.

para t ermin al' urn loop sem

fim.
Utilize as ins rrucoes exit, continu e e check para modifiear
same nto de lo op.

proces-

exit termina 0 proc essam em o de loop e continua a execucic na


primeira in strucio ape s 0 loop.

ca nt ~ nue salta im ediatame nte para

final do loop.

Ess a convencau e para compatibilidade co m as inter faces de


u su ario baseadas em caractere. Escrito, valor X indica uma
selecao p resen ce e 0 espacc indica nac presente.

E reco rn endada

a abertura de mulriplas sessoes sempre que


efetuo logon. Isso nao urn despe rd fcio de recursos? Se todos
fizessern isso , a veloc idade do servid o r do aplicativo nac cairia ?

345

346

"PREMDA EM 21 DIAS ABAP j4

o
o

o
o

DIA lG: 1NmutOEs DE COmOLE (OlliUNS

o re curso mais precioso ea CPU. :E verdade que um a cap acidade


pequena de mem6ria adicional e requ erida no serv ido r do ap licativo para acomodar cada nova sessao. Enrretanro, nenhuma
CPU sed utilizada p ela sessao livre, sen do assim, isso nao
diminui ra a velocidade do serv idor. Se voce escrever urn program a ini ciando urn loop, ele cons um ir a uma en or m e capacidade de recursos, principalmente a CPU, e isso, sem dc vida
algum a, degradarf 0 serv idor no memento em qu e esriver sendo
executado. Se voce njio cons eguir inter romper a loo p , voce nac
conseguira moder ar a desperdfcic de recursos. Sem verificacso,
o prog rama executa rf possivelmente por cinco ou dez min u tos,
ate qu e exceda sua capac idade de CPU e, dep ois disso, termi nara. Da pr6xi ma vez que voce 0 executar , ele podera n ovamente fazer 0 me sm o. Em resum o, abrir uma outra sesssc sera
a melh or 0P!rao escolhida.
De que fonna as byt es de preenchimento afetam 0 usa de
varyt ng? Tenho que pr estar aten!rio quanto a qualquer coisa qu e
eu fa~a, qua n do do m ovim ento a partir de strings d e campo e
para strings de campo?
A maneira mais faei! de garantir 0 sucesso de vary ; ng e ter certeza
cia sequencia exata em que os campos se rep etem. Se a mesma
sequencia de campos erepetida, 0 mesmo mimero de byres semp re
os separara. Desde qu e voce siga essa regra, nao haven nenhuma
necessidade de se preocupar com os byte s de preen chimento.

Posso utilizar uma variavel para indicar


posi!rao em uma instruci o writ e?

Teste
1. N a seguint e se!rao de c6d igo, alter e as instrucoes if para uma instTU!rao case .
write ' The number is fiv e. ' .
endt f.

if vI eq 10.
wri te 'The n~ber t s t en.'.
endt f .
i f vI <> 5 and vI <> 10.
write 'The number is not fhe or t en.'.
endi f.

2. Q u ais operadore s de comparacao de string utilizam os tres caract eres


*, + e#?
3. Q uais sjo as tres instrucoes de controle de programa discutidas oeste
capitu lo ? Quais sao as diferencas entre elas?

Exercicio 1
Escreva urn programa que produza a safda da Figura.

"r" .."x
"".
1

' 1 2'"

S 6 .L ' ;

.. 12' _5."
'
~ L.I ".

1 ' t "
,t

u
U.

"

' : ' .561" ' .

, I,,, S. , . ,.
'ZJ "~"

I"

tZ' .:;"

'~

1:1111I1"" "

j: 1 2 , . S ' ~ "

S
" ". S. l "
, 1Z .... ~'~

11 11:'''S. ' .., _


1 . ' 2 S .. '

11

,~ '

U. ' ~'

".,

,,'n1il('o,

. S.1

~ t, .

""

''l . 'lr"'5 ' ' ' '.

'l, sl
l . '
1".SS "". .J,.'" ,_...

.. 1.l"

'5 'J''''''1' '-

'1'11."'5 ' 1 ' 9 .

comprimento e/ou

Sim. A instruqao wri te sera apresent ada com detalhes no Capitulo


14 e as especificacoes d e varidveis serdo abrangidas em tal capitulo.

Wo rksho p
o Workshop oferece duas maneiras de voce verificar 0 que aprendeu neste
capitulo. A se~ao Teste oferece perguntas para ajudar a solidificar seu entendimento do conteudo abordado e a se!raoExercfcio permite que voce pratique 0
que aprendeu. Voce pode en contrar as respo stas as perguntas do Test e e
exer cicios no Apendice B, "Resp oscas as perguntas e aos exerctcios".

N ac codifique como strin gs. Em vel disso, calcule as numeros e as


escreva co m urn uni co byt e por vez, ou uti lize a tabe la syst.

347

11
Tabelas internas
Objetivos do capItulo
Depois de conduir este capitulo, voc e sera capaz de:

Definir uma tabela interna com ou sem uma linha de cabecalho


utilizando as instrucoes dat a e ; ncl ude structure.
Preencher uma tabela intem a uti lizand o append ao long o de uma linha
de cabecalho ou uma area de trabalho explfcita.
U tilizar loop at e l oop at . .. wher e para ler 0 con teddo de uma tabela
inter na e utilizar sy-tabix para det er miner 0 Indice cialinha atu al.
Lo calizar uma uni ca linh a em um a tabela interna ut ilizan do read t able
e suas variacoes.
C lassificar as tabelas intern as e utili zar a adicic as te xt.

Prindpios do tobelo inte rn o


e

NOVO Ilrrrrrr..
Uma tobe/o interne umo tobelo tempo r6rio armozenoda no RAM do servtdor
TIlMO '"
do cplicotlvc. Ela criode e preenchido por urn progromo durante a execulj;oo
e e descortodo quando a programa termina. Como umo tobela de banco de dodos, uma
tobe lo interne co nsiste em umo ou mois linhos com uma estrutura identica, mas,
diferentemente de uma tobelo de banco de dodos, ela noo pod e armazenor dodos opes
a termlnc do prog rama. Utilize a tabelo lntemc como um ormozenomenfo tempor6 rio
poro a rnc nlpulccc o de dodo s ou co mo um buffer privado tempo r6rio.

hllp:// www.compU$.com.br

350 I

APIENDA EM Zl DIAS ABAP/4

DO lU/JruS IHTERJiAS

Defini..ao de umo tobelo interno


Urna tabela inr ern a cons iste em urn ccrpo e urna linha op cio nal de cabecalhc
(veja a Figura 11.1).

NOVO.....
TUllO r
refe re-se

a corpo a rmazena os linha s de tcbelc tntemc. Todes 05 linhas dentro de le tem


a mesmo estrutura . Geralme nte,
corpo do tc belo Interne.

te rmo "tobelc interne", propriamente dito,

00

351

que voce adicione wi th header 1t ne dep ois da clausula occurs. Isso sera
ilustrado nas linhas de 2 a 10 da Lisragem 11.1.
A unica ocasho em qu e voc e criaria um a tab ela interna sern um a linha de
cabeca lho seri a n o caso de uma tab ela interna aninhada. Urna tabel a in te ma
aninhada nao pode ter urna linha de cabecalho.

~NnADA'" Listagem 11 .1 Ma neiros bosiccs de definir tab e la s inte rnes com e sem
,.. umo linha de cc becclbc

A linho de cab~o lho e umo string de compo com 0 rnesma estrutura de uma
TERMO
llnhc do ccrpc, ma s pede ope nas arma zenar umo linho (mica. E urn buffer
utilizodo pora a rmozena r coda registro ontes que ele sejc cdicionodc ou coda registro
ossim que ele e recuperodo do tobelc Inte rne.

NOYO .....

Neste livre, umo ccn vencec de ot ri bui~{i o de nome e utilizad a pora


tobelos internes. Para prog rama s sirnples com apena s umo unica tobelo
interne, 0 nome do to belo interno normalmente sera ; t (de internal
table - tobela internal. Se existire m v6rias to belcs Inte rnes. 0 nome de
ced e umo norma lmente comecc ro com it.

A Figura 11.1 mo stra a defini cao de u ma tabela"in terna denorn inad a it.
Fi gura 11

A definif;oo d" vmo


tobe/o int"ma
denominoda t t e

mostrodo no porle
svperiO;d" sto ngvru.
A Iinho de co~olho
e 0 corpo tombem sec
mostrudos.

data : begin of it occurs 3,


fl(l) ,
12(2).
end of i t .

1
2
3
4
5
6
7
8
9
10

report ztxllOI.
data: begin of 'i tl occurs 10,
fl.
f2 .
f3,
end of HI.
data i t 2 like ztxl fal occurs 100.

"t en uma Hnha de cabe~a l ho

"'nao tem uma linha de

ca be~a lho

data i t3 l1 ke ztx lfal occurs 100 with Header li ne . "agora stm

o c6 digo n a Lisra gem

11.1 nao produz nenhuma safda.

A linha 2 comeca a definiljao de uma tabela intema denominada i tl.


E uma tabela intema por causa da presenlja da clausula occurs. Tern
tres co m ponentes: fl. f2 e fJ . Cada urn e do tip o c, comprimento 1.
Essa tab ela intern a tern um a linha de cabecalho porque a defmiljao
ccntem as palavras begi n of.

it

A linha 8 define a tabela interne i t2 . T ern os mesrnos component es da


est ru tura do DDIC , ztxlfal. N rc t ern urn cabecalho porque n ero
begi n of nem wi th header 1t ne aparecem na definicao.

it

A definicso de it 3 na linha 10 e quase a mesma da definiljao p ara ; t2


na linha 8. A unica dife renca ea ad ic;aowi th header 1i ne. Isso, eclare,
[az com que i t3 tenha uma linha de cabecalho.

Esclarecendo a fonte principal de confusec em torno de


ta be los internas
Para definir a corpo de urna tabela in te ma, uti lize occurs n na definicao
de qualquer stri ng de campo, excero tab l es . occurs erie a ca rpa da tabel a
intem a. A mern6ria para 0 co rpo nao sera alocada ate que a p rirneira linh a seja
adicionada nele. Sem occur s, voce te ra sornente um a str in g de campo .
Pa ra defin ir urna tabe1a in terne com urna linh a de cabec alho, voce devera
inc1uir begi n of ou wi th header 1i ne na defini~ao. Urna linha de cabe~alho sera
au to maticament e criada se beg; n of aparecer na definil;jao. Se voce ut ilizar 1i ke
em vez de begin of. a tabel a interna nao teci uma linha de cabeljalho a menos

A Figura 11. 1 con tern urna tipica dein iljaa de tabela in tern a. D efin e duas
coisas: 0 corpo de u ma ta be la interna e urna linha de ca b ecalb o . A
confusao surge porque ta nto a corpo como a 1inha de cabe cal h o sao
denominado s it. it e 0 n om e do co rpo e ; t e t am bem 0 nom e cia linh a
de cabecalho. 0 loc al onde voce coloea 0 nome i t em seu c6digo determina
ao que voce esti se refe rindo.
Q uando utilizado em uma ins tru~ao de atribui~ao, it sem pre ira se refenr
alinha de cabeljalho. Por exernplo. i t -fl '" I AI refere-se ao co rnponente fl da

~I

I I I I I I I I I I TTT-.-W -.-. -.- -. -TT-. If Y-y-I-.-I.....- .- Y'- ~- ~ ~-~~- ~,

352 , APRENDA EM 11 Olio SABAP/4

DlA 11:TABalS IHTEiNAS

Iinba de cabecalhcdenominada it. Ou em f3 it -fl, a linha de cabecalho it


tambem refere-se 010 componente fl .

As linhas de 2 a 10 sao as mesmas das linhas na Listagem 11.1; elas

esrao inclufdas aqui para sua revisao.


Na linha 12, i t4 e defmida como a String de campo den ominada t t3.
naa como a tabela intern a 1t3. As sim, uma adic;ao occurs e requ erid a
para toms-la uma tabela int erna; esta nao tern uma linh a de cabecalho
porque begi n of ou wit h header 1i ne ni e existe.

Exemplos dos definicoes de tobelo interno


Para defiair as tabe!as intemas com e sem linhas de cabecalho, utilize os
formulari os recomendados na Listagem 11.2.

As linhas de 14 a 16 mostram a maneira antiga de defmir uma tabela


intema. It 5 eigual a it3 defmi da na linha 10. A adi~o 1; ke foi somente
incluida na versao 3.0; programas anteriores utilizam as defmi!joes

ENllADAIlrrr.r.. Lista g e m 11 .2 Estes defln tcces criom tobelos intemos com e sem umo
,.. linho de cc becclhc
1 .report ztltll02.
2 dat a: b~9in of itl occurs 10,

n,

4
5

f2 ,

6
1

end of

"t en

UI1lI

l1nha de

como as apresentadas b.a po ueo . Includ e structure nac e utilizada


agora. excetc para os casa s da seguinte defini~ao de i t6 . (Nesse
momenta, voce pode querer reviser a inStnl~O i ncl ude structure

cabe~a'ho

abordada pelc no D ia 5, '0 Data D icti onary, Parte 3' .)

f3 ,

ru .

Esse seria 0 unico motivo pr atico em que voce utilizaria a instrucio


includ e, agora (depois da versto 3). Ela permite que voce erie uma
string de campo com todos as componen tes de uma estrutura do
DD IC, mais alguns componentes adicionais. A defmi~o de i t6 contern as componentes de ztx lfal e dais campos adicionais que sao
delfl ag e rowt otal. Essa tabela inte rna tern uma linha de cabecalho
uma vez que voce pode ver begi n of na defmii i o.

- n~ o t !lll uma l1nha de cab~ a lho


9
10 data it) like ztxlhl occur s 100 with header li ne'. -agora tell

8 data 1t2 l i ke ztxlfa1 occur s 100.

1J

12 data 1t4 like it) occurs 100.


13

n~o

beg1 n of itS occurs 100.


14 data
structure ztxlfal.
15 i ncl ude
.end of itS .
16 data
11
beg1n of 1t6 occurs 100.
18 data
structure ztxlfal.
19 include
20 dat a:
de1flag .
rcetctel ,
21
end of it6.
22
23
24 data : begin of i t 7 occurs 100,
Z5
s l f ke ztxlfal,
26
end of it7 .
28 data HS l 1ke sy-tncex occurs 10
29
with header l ine.

"ten uma l1nha de

tern lIIIII l1nha de

cab ~ al ho

ca be~alho

,.
"esse ~ 0 motivo per que v . deve uti l1zar
"a i nstru ~ lo inc lude

As linhas 'de 24 a 26 mostram a maneira incorreta de utilizer 1i Ice. Os


comp onentes dessa tabela interne comecam todos com i t7- s, por
exemplo, it7 -s-lifnr e i t7 -s-landl. Embora viavel, provavelmente,
niio e 0 pretendido e produz urn myel desnecessario nos nom es de
componente.
Ao definir uma tabela intema que tenha apenas urn componente, sera
possfvel utilizar a declaracio na linha 28 ou a declaracto na linha 31.

" n~ o fat;a tssc des se maneira


"os nomes de component e se r ae
"preflxados cem it7 -s rno LIST " 27

3.
31 data: begin of 1t 9 occur s 10,
32
f1 li ke sy~ i nde x .
33
end of 1t9 .

c6digo na Listagem 11.2 nao produz nenhuma saida.

Adicionondo dodos em umo tobelo interno utilizond o


a instru~6a append
Pan adicionar uma unica linha em uma tabela intema, voce podera utilizar a
instru~ao append. append copia uma unica linha de qualquer area de trabalho e
a coloca no corpo 41 0 final deslinhas existent es, A hell. de trab alho pe de ser a.
linha de cab e~alh o au qualquer outra string de campo com a mesma estrutura
de uma. linha no carpo.

353

354

OIA l),J,,,UlIHTERNAS

,," PREMO ,," EM 21 Ol,,"S. ABAP/ ~

EHUADAlilrr.. Lista g em 11.3 Este progra ma adiciona tres linhas em umo tabe la

Sintoxe do Instruceo append

!:!!

A seguir, veja a sintaxe da instrucio append.

append [1m t o] [in i t ia l Tine to] it.

on de:

In

1'10

it

e 0 n ome de uma area de tra balho.


e 0 n ome de uma tabela in tema pr eviamente definida.

inte rne it a pa rtir do lmhc de cobecclho

1 report ztx l103.


2 data: begin of it occur-s 3,
J
fl(1),
4
'2(21,
S
end of it.
6 it-fl ,. 'A'.
7 it-f2

oS

'XX'.

8 append 1t to it .

wo deve te r a mesma estrutura de uma linha do corpo.


wo pode ser a linha de cabecalh o a u pode ser qualquer string de campo
. com a mesma estru tura de uma linh a no corpo.

Se voce nao especifiear uma area de trabalho, 0 sistema utilizara a linha


de cabecalho como padrao. Na verd ade, a linha de cabecalho e a area
de t rabalb o padrao.

"ecrescente ali nha de cabece1he IT ao ccrsc IT

9 write: / "sy- t ebf x - ': sy- t ebt x.

05 seguinte s pontos se aplic am :

-,

10 it-fl 'B'.
11

1t~f2

'YY'.

12 append it .
"0
13 write ~ / 'sy-tabix -" ,
14 it-fl 'e' .
15 append it.
"a
16 write: / "sy- tebtx ~',

mesmo que a li nha 8


sy-tebtx .

tebel e tnte me ccneen agora tres l i nhas .


sy- t aet x.

D epois de append, sy-tabi x e configurada com 0 ndme ro de linha


relativo da linha recem-acre scen tada. P or exemplo, depois de acre scentar a primeira linha, sy-tabi x sera configurada como 1. D epois de
acrescentar a segunda linh a, sy- t abi x sera configurada como 2 e assim
por diante.

SAlOl ~

sy-tabix ..
sy-tebtx

1
2

sy-tebtx

A instru/iao append it t o i t acrescenta a linha de cabecaiho den omin ada

INlllSE~

A lin ha 2 defin e u ma tabela intema denominada ; t e um a linha de


cabecalho denomin ada it. As duas possuem dais componentes: f1 e

i t ao corpo denominado it. A instrucio append i t faz a mesma coisa, po rqu e


a ar ea de trabalho padrao e a linha de cabecalho. Sendo mais sucin to, a ulti ma
ea normalmente utilizada.
Uma 6 rea de trobolho me ndenodo expllcttc mente no instru<;6e append e
de trobo/ho exp/(cila . Qu alquerstring de com po com
a mesma estrvtura de umo linha do tcbelc interne pode ser utilizodo co mo umo 6rea de
trobo lho explkltc. Se umo 6rea de frcbclho n60 for mencio noda, a area de troba/ho
imp/kilo (0 linho de cobecclho) ser6 utilizodo.

NOVO lrII...
m.MO'"

ccnhecldc como umo a rea

A instrucao append init ia l li ne to i t acrescenta uma lin ha contendo


valo res in iciais (espacos em braneo e zeros) atabela interna. Equivale a execu tar
as duas insrrucoe s a seguir em seq uen cia: e1ear it e append it.
A Listagern 11.3 mos tra urn programa de exemplo que acrescenta tres
lirihas em uma tabela interna.

O c6 d.igo na Lista gem 11.3 produz esta saida:

f2.

As linhas 6 e 7 configuram 0 coneeudo dos campos de linha de


cabecalho f1 e f2 (co mo pode ser vista na Figura 11.2). Aqui, it se
refere

alinh a de cabe calho.

A linha 8 copia 0 contee d o da linha de cabecalho den ominada it pan.


coepo denominado it (como po de ser visto na Figura 11.3).

Figura 11 2
Estoss60 os 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

",PR EMD" EM11 DIU ABA P/4

As linhas 10 e 11 atribuem 0 novo coarecdo aos componentes cia linha


de cabecalho, sobrescrevendo 0 coneeado existente (com o pede ser
visto na Figura 11.4) .
append 1t to i t.

Fi gura 1 1 3

append it.

Fig lirA 11 . ,

A crec de trcbolho
padrfJo i 0 Iinho de
co~rno. Aqui,

ltnhc de ccbecclbc

it[l]~
11
f2
...

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 ~

A linha 15 acresceata urna terceira linha a partir d.a linha de cabecalhc


. ; t ao corpo it (veja a Figura 11.7) .

~~

A linha 12 acrescenta 0 no vo cc ntec dc cia linha de cabecalho ao corpo


(veja a Figura 11.5) . Essa instrucic e-funcionalmenee equivalente a
inStru~o na linha 8.Ja que uma area de trabalho nie recebeu urn nome ,
a area de trabalho padrac - a linha de cabecalho - sed utilizeda,
1t-fl ' 8'.

Figura 11 4

1t~ f2

Estos instru~6es de

cmbuio;oc
sobrescrevem 0
conteUdo existente do
linho de cobeljOlho i t .

1t-fl

Figura 11 6
o valorcJo
componente do linho
d. a>bo<olho It-Il
~ sobrescriio. 0 yo/or
de it- f Z permonece
inolterodo.

' E",

linho de ccbecclbc
it .

,]

fl

f2

'yy' .

linha de ccbecclhc

1t~~1
fl
f2
CO"",

it

. .
~~
~~
~ ~2!

.. .

append i t .

Figura 11 7

Aqui,

conteVdo do

6reo de trobe/ho
imp/fcifO ~
oaescerdodo 00

""PO.

A linha 14 altera
F igura 11.6).

valor de it-fl e a deixa apen as em itf2 (veja a

Utilizcndo c c di~Ci o occurs

occurs nao limita 0 mlmero de linhas que po de ser adicionado atabel a intema.
Por exemplc, se voce especificar occurs 10, sera pos sfvel ccl ocar m a is de 10
linhas na tabela interna. numero de linhas qu e voce pe de colocar em uma

357

D~ lUABlLlS INTERNAS I

tabela interns, teoricamente,

e apena.s limitado pela quan ti dade

describe tabl e ap resentada co m de ralbes no pr6ximo capitulo ou at raves cia


exibicac de Field no depurador.) Quand o a primeira linha e adicicnada na tabela
interna, a m emo ria e aloc ada da area d e rolagem do programa. A quanridade
alocada e igual ao tamanho calcul ado da tab ela inr ema. Se esta quantidad e for
excedida, uma quantidade igual sera alocada e 0 p rocesso sera repetido ate que
o total exceda 8 KB . Q uando isso aco ntecer, as alccacces subseqaentes obter ao
pfginas de 8 KB cia area de paginac;ao.
Se voce especificar occurs 0, todas as alocacoes serio feitas na area de
pagina~ao) faze nd o com que uma pagina de 8 K.B seja alocada de um a s6 vez.

de memoria

virtual dispoajvel no servidor do aplicativo.

No reolidode, seu consultorde Bosisconfigura um limite considerondo


c quontidcde m6ximo de mem6ric estendidc que vmc tobelo intemo
pode olocor. Se voce exceder esso quontidode, seu progrnm.o olocorc

a mem6rio privodo do processo de trnbolho e este noo ser6 mois copoz


de continuor seu progremo. Isso faz com que 0 processo de trobolho
tome-se indispc nlvel pore uso por outros progremos ate que seu
progremo termine completomente 0 processomento. Poro evitor esse
problema, voce deve utilizor umo c6 pio.

Se

adicionad a na tabela intema, mem 6ria su ficiente e alocada a fun d e armaze nar
o numero de linhas especificado oa clausula occurs. Se vo ce utilizar recursos
alem da capacidadedessa memoria, mais sera aloc ado, conforme necessdrio.
Altemativamente, voce pode especificar occurs o. Se fizer isso, a sistema
alo ca.cl paginas de mem6ria de 8KB d e uma s6 vez, Entretanro, Dio hi nenhuma
vanragem em utilizar occurs 0 a na o ser pelo fate d e que eurn p ou co mais facil
codificar occurs 0 do que estimar 0 tamanho da tabela intema.
Para maximo des empenho e mfnimc desperdfcio d e me m6ria, escolha urn
valo r occurs semelhante ao numero maximo medic d e linhas na tabela. Por
exemplo, se na maioria das vezes a u bela interna for preenchida co m urn
maximo d e 100 Iinhas, mas de vez em qu ando fo r p reen chi da com u rn maxim o

Ha dais m etodos que

sistema utiliza para exe cutar alocac;oes. N o


p rimeiro. occurs e dif erent e de zero e 0 tamanho cia tabela intema (calculado
a partir d o numero de bytes por linh a d e occurs 11-) e Menor que au i gual a 8
KB. (0 numero de byt es par Iinh a po de ser obtido ur ilizando a ins truc;ao
0

sistem a ira

Duas instruc;6es sao comum en te utilizadas para a leitura dos dados a partir de

uma tab ela int ema:

loop at

read tab le

Utilize loop at para ler vdrias linhas da tabela interna. Utilize r ead tabl e
para ler u ma enica linha.

Lendo verics Iinhas utilizando a instru~cio l oop at


Para ler algumas ou todas as linhas de uma tabela interua; voce pede u tilizar a
in st ni c;ao loo p at . loo p at Ie 0 cc nt ea dc d.a tabela intema, colocando as linhas
do conteudo) urna.p or vel., na area d e trabalba.

Nee utilize occurs 0 se voce esperc armazenor menos que 8 KB em


umo tobela intemo. Se nzer isso, 0 siS1ema alocar6 8 KB do 6reo de
poginoljoo. A mem6ria ser6 desperdic;odo e a poginoljoo poder6
oumentor, resultondo em menor desempenho.

8.192 byte s).

t ama nha caIculado da tabela interna for ma ier que 8 KB ,

Le nd o dados a partir de vma tabela interna

de 1.000 linhas, configure;' valor occurs para 100.

D epend end o da clausula occurs e do camacho da ta bela intema. 0 sistema


alo cari. a mem6ria da area d e rolagem do p ro grama ou cia area de pagin a~aa do
sist em a, a u das d uas. Os acess as de mem6ria na area de rolagem podem ser urn
pouco mais rapidos que os acesso s n a area de pagina~ao . As aloca 'ijoe s na area
d e pagina'ijao tedio sempre 0 ta manho de urna pagina (n orm almente 8 KB ou

alrerar a valor de occur s p Wl zero quando a p rimeira. al0C3<j3.0 for realizada e


tcdas as alocacces atingirao seus objetivos a partir d.a area de paginac;ao. Voce
pede ver a alterac;i o de occurs utilizando a insrruc ac deser-tbe table depois da
prim eira alccacac e exibinda 0 valor de sy- toccu. Essa insrruci o sera descries
no Dia 9, ..Atribuicoes, convers6es e ct lculcs".

o sistema utiliza a clausula occurs apena.s como uma direrriz para determinar quanta memoria deve ser alccada, N a primeira vez qu e um a linha

359

Sintexe de

.!!!

E
m

instru~lio

loop at

A segu ir) veja a sint axe da instruc;ao loop at .


l oop at i t [into am] [fran _] [to n] [where u p].
endloop.

onde:

it e 0 nome de uma tab ela in terna.

wa e 0 nome de uma irea de trabalha.

,
I

360

D~ lUABEllS INTERMAS

APHM DA EM 21 DIAl ABAPH

men sao !iterai s de inreiro, constantes ou varidvels que representam


urn mimero de linha relative. Por exemplo, 1 significa a primeira linha
na tabela, 2 significa a segunda e assim por diante.

exp

euma expressac 16gica que restringe as linhas que sao lidas.

~ _ M representa qualquer nrimero de linhas de codigo. Essas linhas sao


execuradasuma dnicavez para cada linha recuperada cia tabela interna.

As linhas sao lidas cia tab ela intema, uma por vez, e col ocadas em
sequencia na area de trabalho. As linhas de ccdigo entre l oop at e endloop sao
executadas para cada linha recuperada. 0 loop termin a automaticamente
quando a ultima linha e!ida e a instru!jio ap6s endl oop e entao execurada.
Os seguintes pontes se aplicam :

wa deve ter a mesma esrrutura de uma linha do corpo.

wa pode set a linha de cabecalho a u qualquer string de campo com a


mes ma est rutura de uma linha no corpa.

Se vc cs nio especificar u ma area de trabalbo, 0 siste ma utilizari a linha


de cabecalhc como padrao. Por exempl o, l oop at i t into it Ie as
linhas da tab ele intema it, colocando -as uma po r vez na linh a de
cabecalho it . Vma instru~ao equivalence e loop at it.
Se from nao for esp ecifi cada,
da primeira linha.

padrac sera com ecar a leitura a partir

Ap6s endloop, sy-subrc sera zero se quaisquer .linh as tiverem sido lidas.
Sera difer ente de zero se nenhuma linha tiver sid o lida a partir cia tabe la interne.
A Listagem 11.4 e expandida a partir da Lista gem 11.3, executando urn
loop e escr even do as linha s da eabela intema.

.... Listagem 11.4 Este p rogramo od iciono 3 linhos no tobe la Interne i t do


ENTliDA,- li nho de ccbe~olho e, em seguido, as escreve de volta novomente
1 report ztxll 04.
Z data : begin of it occurs 3.
J
f1(l),

f 2(2) ,
5
end of it.
6 1t~ fl ' A' .
7 1t - f Z ,. 'XX ' .
8 append it t o it .
"ecrescente a linha de eabee;alho IT ac coree IT
9 1t ~fl 'B'.
10 1t-f2 'VY '.
11 append i t.
0 mesmo que a li nha 8
12 i t -fl ' C' .
13 append it.
"e t abela ln terna agora cont bJI t res H nnes .
14 sy-tabix sy- subre 99.
15 l oop at it.
. 0 me5mo que: lo op at it into i t
16
write: / sy-tabix. it-fl . it-f2.
17
endlo op.
18 wr1t e : / 'done. sy-tebt x - ", sy-tabix .
19
/ "
sy-subrc -" , sy-subre.

Se to njo for cspecificada, 0 padrao sera ler ate ~ ultima linha.


Os compo n enres de i t especificados na expressac 16gica nso devem
se r precedidos pel o n om e da tabela intema. Por exernp lo, where fl :::
'X' estol. co rre ta, mas wh ere i t -fl .. I Xr causara urn 'err c de sin taxe.
exp pode ser qualqu er expressjo logica. Entretanto,' 0 primeiro operando de cada cornparacjo deve ser urn cornpo nent e da tabela interna.
Por exemplo, se it contivesse um comp onente f l) ea u o where f1 :::
' X' estaria correta; where 'X' ::: fl est aria incorre ta e causaria urn erro
de sintaxe.

A s adi~6es from, to e where poderso ser mis turadas, se assim for


desejado.
Dentro do loop, sy-tabi x con tern 0 numero de linba relativo do regis tro
atu al. P ar exemplo, durante 0 proces samemo do p rimeiro registro na tab ela
in terna, 0 valor de sy-tab i x sera 1. Du rante 0 pr ocessam ento do segundo ,
sy- tabix sera 2. Depois de terminado 0 loop, 0 valor de sytabix sera 0 0vamente configurado para seu valor origin al qu and o do infcio do loop. Se os
loop s estiverem aninhados, 0 valor em sy- ta bix estacl relaciona do ao-Ioop

amal.

o ccdigc na Listagem 11,4 produz esta said a:


SAiDI ~

1 A XX
2 B YY
3 C YY

done. 5y-tab; x ..
sy-subrc .. .

IMius!~

99

A s linhas de 2 a 13.sao as mesmas das existences na Listage m 11.3. Etas


adicionam erzs linhas na tabela interna,
A linha 14 configura sy-tabi x c sy- subr c para urn valor arb ieraric .
A linha 15 comeca urn loop que Ie a primeira linha da tab ela interna
dcn ominada it, coloc ando -a na linha de cabclialho it.
A linha 16 escr eve

valor de sy-tabix e os valor es nos comp onentes

d>. linha de cabe~o.


A linha 17 mar ca 0 fmal do loop. Re torna a linha 15.

361

. _- _...
362

-~

..

I APRENDA EM 21 DIAS ABAP/4

--:-~~

DIA 1UABEUSINTEWS

A Iiaha 15 novamente executada. Dessa vez, a segunda linha ciatabela


interna e coloca da na linha d e cabecalho, sob rescreven do 0 coneeddo

ant erior.
A linha 16 e executad a, novamente escrevenclo as valores cia linha de

cabecalho.
Na linha 17, 0 loop sera repetido ate que codaslinhas sejarn recuperadas
da tabela interna. Q uan do a Ultima linha tiver sido Iida, ela ira parar 0

,
I'

363

25 loop at f t f rOlll 2.
"mesmo que: loop at it f rom 2 t o 3.
26
write: / sy-tebtx, i t - fl . It - f 2 .
27
endloop.
28 s kip.
29
30 l oop at it from 2 where fl 'C' .
31
write : I sy-tebtx , it-fl. it-f2 .
32
endl oop.

loop.

o c6digo na Listagem 11.5 produz esta safda:

Na linha 18, sy- tabix foi restauracla para seu valor original antes da
execucao do loop . Sy-subrc contem zero, indicando que as linhas
. for am recuperadas da tabela interna pela instrucao loop at.

2 B YY
3 C YY

SliDA ~

1 A XX
2 B YY

Restr ing indo as linhcs lidos do tabe la interne

2 B YY
3 C YY

Utilizan do as adicoes from, t o e where, voce podera restringir o n dmero de linhas


Iidas da tabela intema. A Listagem 11.5 e expandida a partir cia Listagem 11.4,
executando urn loop na tabela intema por quatro vezes. Em cada vez, ela escreve
apenas determinadas Iinhas.
ENTRADA~ Listagem 1 1.5 Este programo

IMiuSE ~

e semelhante ao da Ltstoqern 11.4, mas

1 report ztxl105 .
2 data: begin of it occurs 3,

5
6
7
8
9
10
11
12
13

A linha 18 pula uma linha na safda, na verdade escrevendo um a linh a


em branco.

fI(l).

f2(2),
end of it .
it-fl. 'A' .
it-f2 'XX'.
append it .
it-fl '8 ' .
1t f2 ' YY'.
append it .
1t ~f1 ' C'.
append it .

As linhas de 2 a 13 adicionam tres linhas na tabela interna.


As linhas de 15 a 171eem samente as linhas da tabel a interna onde f2
t ern urn valar semelhante a 'yy I Somenre as linha s 2 e 3 satisfazem os
criterios.

,. openas algumas linhas sdo lidos

J
4

C YY

As linhas de 20 a 22 leem somente as linhas 1 e 2 cia tabela interne.


As linhas de 25 a 27 leem somente as linhas 2 e 3 da tabela interna.
A linha 30 faz a leitura comecaado a partir da linha 2, procurando po r
todas as linhas com urn valor fl de ' C'. A linh a 3 e a tinica linha
correspondente nessa faixa.
" c o nt ~

Se voce tiver certeza de que 0 ripe de dado e 0 camprimento do campo


em exp correspondem exatamente com 0 campo da tabel a inrerna, nenhuma
conversao sera executada. Isso fad. cam que seu loop seja executado mais
rapidamente. Se a conversao for necessaria, ela sera executada em cada passagem
de loop e isso pcderf diminuir a velocidade do processamento de forma
consideravel. Utilize 1i ke ou constantes para evitar a con versso.

agora tres li nhas

14

15 loop at i t where f2 ' VY ' . "f 2 esU ccrretc, it-f2 esta rfa t nccr ret c aqui
16
write : / sy-t ebtx, it-fl , it-f2.
17
endl oop.
18 skip.
19
20 loop at it to 2.
"mesrno que: loop at it from 1 to 2.
21
write: / sy- t ebt x, it -fl . it-f2.
22
endl oop.
23 skip.
24

~o

Embora where retorne um subcc njuntc do cco teudc de tobelc, ume


vcrreduro total de tcbelo ser6 sempre executodc .

'---

--1

-.

-.. -T "
364

-.-..-.-.

I -I

I 'I-I " I I .. I I I. __ I

I .I"" . ~..._.
DIA lUABELlSIHTERH<5

APR EHDA EM21 DIAS ABAP /.

Se ta nto comp ari ng com o tran sporting estiverem especificadas, compar i ng devers vir primeiro .

UtiJizando exit, cont i nue, sto p e check


A Tabela 11.1 ilust ra 05 efeiro s de exit, continu e e check qu an do ut ilizadas
dentro de uma estrutura de loop at / endl oop.

Os seguintes po nt os se aplicam :

Tabe fa 11.1 lnstrucees que podem altero r a processa mento de loop pa ra tobelos
inter nes
Instru~ao

Efeito

Termino

ext t

wa deve ter a mesma est rutura de uma linha do corpo.

'flO pode

Se voce nao espe cificar uma area de trabalho, a sistema utilizard a linha
de cab ecalhc como padrac. P or exemplo, r ead table it into it l~
uma linha d..a ta bela intema it, colocando-a na linha de cabecalho ; t.
Uma inserucio equivalente e read table ; t .

0 loop imed iotomente. 0 proc essamento con tin uo no

lnstruccc imed iatomente op6s endl oop.

Voi imedia to mente pc rc 'c instru~50 endl oop, desviondo fodos as


instrUl; 6es seguintes dentro do loop.A pr6ximo linha e refomodo do

continue

tobelo intemo e a processomento continue a pa rtir do inld o do

loop. Se na o existirem mois linhos a serem recuperado s,

ser a linha de cabecalho au pode ser qualquer string de campo


corn a mesma estrutura de uma linha no corpo.

processomento continuar6 no primeiro instruc;oo ap6s endl oop.

check exp

Ulilizanda a

Se exp fo r verdcdelrc , 0 processomento ccntln ucrc como se essa


instruc;Cio ndo flvesse side executodc . Se exp for folso, seu efeito ser6
o mesmo de cont inue.

a di~oo

index

NOVO...
m.MO r

0 {ndice de linha de uma tabela intema corresponde 00 seu numero de linho


relotivo. Per exemple, 0 primeiro linho no tcbelc tem 0 indice 1,0 segundo tem
o Indlce 2 e ossim po r dio nte . No instruc;Oo re ad table, se index i esfiver especificcdc,
o sistema ir6 rec uperar 0 t o linho do tob e lo interne e cclocc -lc no a rea de trobolho. Por

Lenda uma unicc linha utilizanda a instru ~aa read tab l e


Para localizar e ler uma unica linha de uma tabela interna, utilize rea d t abl e.
Ela Ie uma unica linha que co rresponda co m os criterios especfficos e a coloca
em uma area de trabalho.

example, r ead t ab le i t i ndex 7 1& a setimc llnho do tcbelc lntemc e a coloco no Hnhc
de ccbecclhc. _

Se a leitura for bem-sucedida (ou seja, se a linha i existir), sy-subrc sera


configurada como zer o e sy- t abix sera configuradacomo i (vejaa Listagem 11.6).

Sinlaxe da instruc;oo re ad t ab1e


A seguir, veja a sintaxe da instrucio r ead tabl e.
read t abl e it (i nt o wa] (i ndex 'f ] with key keyexp (binary sea r ch] ]
[comparing cmpexp] (transpor ting texp].

on de:

e0

it

'flO

i
verisvel que representa urn
mime ro de linha relative . Pa r exempl o, 1 significa a p rimeira linha na
t abela, 2 significa a segunda e assim p or dian te.

nome de uma tabela in t erna.

e0 nome da area de tr abalho.


e urn literal de in teiro, constant e ou

e
cmpexp euma expressao de co mpa racao que represe nta u rn teste a ser
keyexp uma expressjio que representa urn valor a ser localiz ado.

executado na linha locali zada.

texp um a expr essso que representa as campos a serem transportados

para a area de trabalho depois que urna linha elocalizada.

EIl1lADA ~ ListCi gem 11.6 A odi<;ao ; ndex no instru<;ao read ta bl e locclizo uma .
.

unice linhe por seu numero de linho relativo


1 r eport ztx1106.

2 data: begin of it occurs 3.


fl(2) ty pe n,
3
4
5
6
7

f2
ty pe f.
f3(2) type c,
f4
type p,
end of it.
wa like it.

s
10
11
12
13
14
15
16
17
18

it~fl = ' 10 ' . it-f3 'M'. it-f2 i t - f 4 1. append it.


1tfl ' 20 '. it-f3 = 'B8' . it- f2 " 1t-f4 '" 2. append i t .
It-fl = ' 30' . it-f3 'CC' 1t- f2 " 1t-f4 = 3. append i t .

rea d table i t index 2.


write : / "sy- s ubr c -", sy- subrc,
/ ' sy-tabix - ", sy-ta bix.
/ it-fl. it-f2, u-rs. i t - f4 .

365

I
366

APiE' OA EM' 1 DIAl ABAPI4

0lA 1UABEUS lh'1IIHAS

19 read table it i nto wa in dex 1.

20 wr ite: I .
21
/ 'sy-su bre -" ,
22
I "sy- ta bt x - ",
23
/ it-fl . it-f2 ,
24
/ wa-fl , wa-f2 .

Utilizanda a adi<;aa wi t h key


Se w1 th key keyexp fo r esp ecificada, 0 sistema localizard uma linha que correspanda com a. express sc key e a colocari. na.1inha de cabecalho, A Tabela 11.2
descreve as express6es keye seus efeitos. Utilizando uma expr essao key. voce
podera especificar uma rinica linha a se r recuperada. Se mais de um a linha
corres po nde r co m a expressao, a prim eira localizada (a que tiver a menor
Indice) sera re tom ada.

sy- subrc ,
sy- ta bh..
ft - f 3. it f4 .
..a- f 3. wa-14.

21

. 26 re ad table i t i ndex 4.
: '27 wri t e: I .
28
I ' s1-subre - ", sy-suerc,
29
I ' sy- tlbix -", sy-tabi x.
30
/ i t -fl . it-f2, u -rs, it-14,
31
/ wa-fl . wa- f2 a- f 3. wa-t4.

Expn:ssao ke y .

c1

vi c2

Efeito

v2 . .

o e6 digo na Listagem 11.6 produz esta safda:


SAiOA~

sy -s ubrc

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.

As linhas de 10 a 12 acrescentam [reS linhas a tabela intema.

A linha 14 1. a segunda linha. Ja que nenhuma area de trabalho est.


especificada, 0 conteudo e colocado na linha de cabecalho. Depois cia
Ieit ura, sy- subrc sera configurada como zero. Is50 indica qu e a linh a
existia e que sy-tebt x foi configurada com 0 mimero cia linha.
A linha 19 Iea linha 1 na area de trabalho wa. a conteddc da linha de
cabecalho permanece inalteradc depois da leitura.
A linha 26 tent a ler a linba 4 na linba de cabecalho. Nao b. nenhuma
linha 4, entjic sy-s ubr-c e configurada como 4. sy-tab1x como a e a
linha de cabecalho e a area de trabalho wa fiearn inalteradas.

o mesmo que 0 a nte rior, pc rem f1 e umo voricvel que


cc ntem 0 nome do comp onente 0 ser comporod o. 0
volor em fl deve este r em letro mcicscolc . Se f1 estiver
em bronco, a ccmpcrocdc sere ignorodo .
wa e ume area de trnbe lho identico em estruture a urno
linho do tobelo inferno . Esso expresseo key localizo o
primeiro Iinha no to be lo intemo exotcmente iguol 00
cc ntecdc de wa. as espccos e m bronco sao tratodos
como volores a sere m loca lizodos; eles n60
correspondem Q quo lque r outro va lor diferente de
espcccs em bronco .

w.

wa e ume area de trobo lho id!ntico au rnenor que Q


estrutura do ta belo Interne. Se wafiver compos n, os
cam pos de wa cc rrescooderee com os primeiros compos
n de umo linha do to bela intemo. Esso expressOokey
lccclac a primeira bnhc no tobe fa inferno, em que os
primeiros compos n co rrespondem com 0 conteudc de
wa. Os espoc;os em bronco sOo trotodos como ve lores c
sere m locolizodos; e les noo corres ponde m 0 quo lquer
o utro vclor dtlerente de espoc;os em bronco.

2
1

As linhas de 2 a 7 definem uma tab ela inre rna co m uma linha de

v2

locol izo 0 primeiro linhc no tobe la intemo em que 0


componente c1 tern 0 vola r vi e 0 componente c2 tern
o vclc r v2 e ossim po r dionte. vi eo um literal, ccnstcnte
ou vcrtovel.

. w.

0
2 8B
1 AA

20

w__ w w w -

No verseo 4, as co nversees necessaries poro c s tr&s primeiros 8)(pressOes key no Tabelo 11 .2 sOo executodas no mesme ordem de
precedenclc des utilizodcs poro os expressoes 16gica s. Em sistemos
onterio res, os ccnversc es ercm executodos convertendo 0 valor a
direita paro 0 tipo de dado e cornp rimento do componente a esquema.

A Tabela 11.3 descreve as valores de sy-subrc e sy- tabix depois de


executada read table it with key

367

~. I I I I
368

HRENO' eM 21 01"

.. I I

..

"

'

O~ l UlSEUS INlIiNlS

Resultodo

sy-s ubrc

sy-t abi x

le ituro bem-svcedtdc (uma linho


correspondente foi locolizado)
Leitu ro molsucedido, mas

Indice do

Indice do linho

linha correspondente

com 0 pr6ximo

umo Iinho com umo key moior que

umo solicitodoexiste

key meier

Leitcrc molsucedido e nenhymo

ncmerc de linhos

em1t + l

linha foi lccchrc dc com umo key mo ior

A Listagem 11.7 ilustra

32 clear wZ.
33 w2~fl - '10' . w2-f3 .. ' M ' . w2~f2 .. w2-f4 .. 1.
34 T'l!ad table it with key - . '112 .
35 write : t,
36
I ' s1 - suhr e - ", sy-subre,
37
/ ' sy ~t a b h: . ', sy-tebtx ,
38
I it-fl. it-f2. it-f3, it-f4.
39
oW w1-fl .. ' 20 ' . w1-f2 .. 2.
41 read table it into w2 with key wI.
42 write:
43
/ "sy-subrc - ", sy-subre ,
44
/ ' sy- t abfx -'. sy.tabix.
45
I it~fl. it-f2 , u-n. it-f4 .

t,

usa de express6es key.

o c6digo no Listagem 11.7 produz esta safda:

Listagem 11.7 Utiliz ondo uma expressdo key, voce pede procure r por
urne linhc espeoftcc ndo um valo r em vez de urn Indice

.,

1 report ztx l107.


2 data: be;;n of 1t occurs 3,
3
fl(2) type n,
4
f2
type t ,
5
f3(2) typ e r ,
f4
type p,
6
1
end of it ,
8
begin of wl,
fl 1ik!! f t -f l ,
9
10
f2 11ke u -rz .
11
end of wI,
12
'112 l1ke it ,
13
f(8).

sy-subre ..
sy-tab'l x ..
30

a
3
3ee

II

II

II

23

24 f .. ' F2' .
25 read table it into w2 with. key (f ) .. 2.
26 write: t ,
21
I ' sy- subre ..', sy- subre ,
28
I ' sy- t abb - ", sy-tebtx,
29
I i t - fl , it-f2 , it-f3, it-f4.
30
I w2-fl . w2- f2. w2-fJ , w2-f4.

"deve ester em l etra maiiiscula

AHlllSE ~

0
2
3 CC
Z 88

30
20

15 it-fl .. ' 10'. it-O


' M ' . 1t-f2" it-f4 - 1. append it .
16 it-fl
' 20' . i t-f 3 " ' BB'. it-f2" it-f4 " 2. apPl!nd it .
11it-fl .. ' 3D'. i t -f3 .. 'ec'. it -f2 - it-f4 - 3. append i t.
lS
19 read table it with key fl
'3 0 ' f 2 3.
20 write: / 'sy.subre - ", sy-subrc,
21
/ ' sy-tabix - ", sy- t ebtx,
22
/ it-fl, it-f2 , it -n. it- f4 .
II

l.\iDA~

sy-suarc ..
sy - tabix ..

14

31

"'PH

Tabela 11.3 Volores atribuidos a sy-subrc e sy-t abi x

EHTRlDA~

"

51-suhre ..
sy-tabh ..

10

loA

sy-subrc ..
sy-tabix ..

10

loA

3
2

As linhas de 2 a 7 defin em uma tabela interna corn uma linha de

cabecalho.
. A linha 8 define uma area de trabalho wi semelhante aos dois primeiros
campos d.a linha de cabecalho i t .
A linha 9 define uma area de trabalho w2 igualao cornp rimen to inteirc
da linha de cabecalho it.
As linhas de 15 a 17 acrescentam tres linhas

atab ela in tema.

A linha 19 Ie uma linha com 0 valor' 30' em f1 e 3 em f 2. Sy-suorc 6


configurada como zero a fun de indicar que uma linh a correspondente
foi localizada e sy-tabix econfigurada com 0 rnimero da linha. Ja que
nenhuma area de trabalho esta especificada, 0 conteudo ecolocado n a
Iinha de cabecalho.
A liclIa 25 p rocura por uma linha com urn valor 2 na coluna f2. A linha
Clocalizad.a e e coiocada na area de trabalho w2. 0 conteudo da linha
de cabecalho pc:rmanece inalterado depo is da leitura.

369

370

JI' ~ 1J

........

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

APiEH DA EM11 DIAl ABA P/!

DIA lU ABEUS IKTERNIS

A linha 34 procura por uma linha com as valores especificados em


todos as campos de w2. Com essa sintaxe, w2 deve corresponder com
a estrutura inteira de it. 0 conteado cia linha corr esp ond ence e
cc locadc na linha de cabecalho. Os campos com espacos em branco
sao procurados na tabela: eles nao correspondem. com todos valores
como acontece quando se faz pesquisa com 0 usc de Default Key (veja
a p r6xim a secac).

A linha 41 procure por uma linha com as valores especificados em


todos as campos de wI. C om essa sintaxe, wI po de sec menor que it.
o com eodo da linha corr espondente ecolocado na linha de cabecalh o.
Co mo dito anteriormente, a s valores em br aneo sao tratad os como
valores a serem localizados e correspondem apenas com eles mesmos .

Utilizando a

adi~ao

bi nary search

Sempre que utilizar a adiliao with key, voce tambem devers utiliz.ar a acli~o
bi nary search, 0 que faz com que a linha $eja localizada com 0 uso de urn
algoritmo binario de pesquisa, em vez de uma varredura de eabela linear. Isso
resulta nos mesmos ganhos de dese mpenho dos alcancados com a pesquisa de
um a tab ela de banco de dados arraves de urn Indice . De .an tem ao, a tabela deve
se r classificada em ordem ascendente pelos componentes especificados na
expressao key (veja a seguin re se~ao sobre a classifica~o) .

371

A Listagem 11.8 fomece urn exemplo.

Usta g e m 11.8 Este programa localize u ma linha com os mesmos


espocos em
volores dos compos Default Key no Iinha de ccbecclho.
bronco em um compo Defau lt Key fczem co m que uma coluna seja

as

ig no ra d a .
1 report ztxllOS.
2 data : begi n of it occurs
3
fl(2 ) type n,
type f.
4
(2
5
f3(2) type c .
6
f4
type p,
1
end of it .

3.
c a ~o de cerect er e
campo nltlll(!r1 co campo de carac t ere
campo nLnt!ri co -

par t! de default
nao (! part! de default
parte de default
nlo f: part e de default

key
key
key
key

"8
9 i t - fl '10' . it-f3 - 'M' . it-f2 - it-f4 l. append it.
10 it- fl ' 20' . 1t -13 ' BB' tt-fz it-f4 2. append it .
11 i t - fl ' 30 '. i t~ f3 ' CC'. it-f2 - i t-f4 '" 3. append 1t.
12
13 sort it by fl f 3.
14 clear it.
15 i t(2) ' ". 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- '.

'14. ', it-f4.

ccdigc na Listagem 11.8 produz esta safda:

sy-suhrc
sy-tahi x fl 20 rasy-s'ubrc sy-tab1x fl 30 f2=

lIIillSf ~

u-ra,

2
2 f3- B8 f4-

3
0 fl - M f4 "'

As linhas de 2 a 7 defmern uma tab e1a interna com uma linha de


cabec;illlo. F1 e f3 sio as opos de dado s de carac tere e assim form am
o Default Key.
As linhas de 9 a 11 acrescentam tres linhas

atabela intema.

A linha 13 classifica it par f1 e f3 em ordem ascen dent e.

~ ,

...

-'_

.~

,~

~ ..-y

372

..- ..- ..-

-. -Y-:Jr-'"

..

D~ IUABEill INTERNA5

APIEHDA EM 21 DIAl ABAPI'

A linha14limpa 0 conteud o cialinhadecabecalho, configurando todos


as componentes como espacos em branco 'e zeros. f1
assim sendo, e configurado como zeros.

e do

tipo n e,

Utilizando urn sub camp o, a linha 15 fOflia espaljQs em bran co para a


campo fl, de modo que correspoadam com todos as valcres. outre

Cmpe.xp

fI f2 . .

Depois de locolizodo umo llnbc , 0 vclor de fl no linho locolizoda e


compcrado com 0 volar de f1 no 6reo de trobo lho . Entao 0 vclcr
de f2 e com porodo com 0 vclc r de f2 no 6rec de trobolho e ossim
par dionte . Se todos forem ig uois, sy-subrc ser6 co nfigurodo como
O. Se a lgum fo r dtlerente, sy- s ubr c se m configurodo como 2.

all f ields

Icdcs cs compos sdc compo rados , com o descritc para f1 f2 . . . .

no fi el ds

Nenhum compo

campo Default Key (f3) e configurado como ' BB'.


' A linha 16 executa uma pesquisa biniria quanta a uma linha que
contenha ' B8 1 no componente ra
Depois da pesquisa, a safda mos trari que sy- subrc foi configurada

como zero. indicando que umalinha,ccrrespondente com as criterios,


foi localizada. Sy-tabi x contem 2, au seja, 0 numero de linha relative
cia linha corr espo nden re. A linha de cabecalho foi preenchi da com
conteddo da linha correspondence e foi escri ta,

e compo rodo . Esse e 0 pcdreo.

A Listagem 11.9 fomece exernplos.

Listagem 11.9 A odit;co comp aring ir6 configuror


como 2 sempre que: as ca mpos forem diferentes

A linha 21 limp a a linha de cabecalho.

A linha 22 coloca urn '30 'e ' AA' nos campos D efault Key fl e f3 .
A linha 23 executa uma pesqu isa biriiria qu anta a f1 .. '30 ' e f 3
' AA' . 0 valor de ret orno de sy-subrc e 4. Isso ind ica. que uma linha
correspondente nao foi encont rada e sy- ta bi x contem 3 - 0 ndmero
conteudo da linha de cabecalho p erm anece
de linhas na tabela.
inalterado, au seja da mesma forma como estava na linha 22.

Nesse exemplo, a tabela interna contem apenas algumas linhas, sendo


assim bi nary search nao produ ziria uma melhora mensuravel no desempenho.
Poi apenas inclujda p ara ilustrar 0 modo como deve ser utilizada.

Utiliza ndo a

1 report ztxl109.
2 data: begin of it occurs 3.
3
fl(2) type n,
4
f2
type t ,
5
f 3(2) t ype c.
6
f4
type p,
7
end of it , .
8
wa 11ke it~

9
10 it-fl ... ' 10' . i t -f3 'M ' . t t -f2 it- f4 1. append it .
11 it- f l ' 20' . 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

A i nstrv~ao read table pede openos ser utilizoda para 0 Ielturc de


to belos Internes. Nee funciono com tabelos de bonco de dodos. Utilize

14 read t abl e it i ndex 2 cOOlparing f 1.


15 write : I 'sy-subrc - ", sy-subrc ,
16
/ "sy-tebtx -". sy-tab1x ,

em seu luga r sel ect s ing le.

17

odi~ao

compa ri n9

comparing detecta as diferencas entre 0 ccnteudo da area de tra balho e de urna


linha que foi loca.lizada antes de ser colocada na area de trabalho. Utilize-o
jun tam en te com inde x au with key. Se, dep ois de localiz.ada uma linha, 0
con eee dc da Irea de trahalho for 0 mesmo da linha localizada, sy-s ubr c sera O.
Se 0 conteudo for diferente, sy-subrc sed 2 e 0 contecdo sed sobrescrito pela
linha localiz.ada. Se a linha nao for localizada, sy- subrc sera 2 e 0 conteudo
permanecera inalterado.
A Tahela 11.4 descre ve as valores para a expressao de compara~ao (cmpexp
na sintaxe para read table).

/ it-fl. 1t -f2. it- f3, tt-f4.


18
19 r ead tab l e it i nto wa ind ex 1 compar ing f 2 f4 .
20 ...r ite: I .
21

/ "sy-sucr c - ", sv- subr c,

22

"sy-tebt x . ', sy- t abix ,

23
/ i t - fl, i t-f2. it-f3 . 1t.f4.
24
I wa- fl , wa-f2. wa-f3 . wa-f4.
25
26it wa.
27 reed tabl e it with key f3 ' M' cOlIIpar ing all f1eld s.
28 write:

I,

29
30
31

/ ' sy- subrt: .'. sy- subrt ,


/ ' sy- ta bi x . ' , sy- ta bilt ,
I it-fl . it-f2 , it-f3 . it-f4 .

32

/ wa-fl, wa-f2, wa-fl, wa-f4.

va lor de sy-subrc
.

373

lI!!!r Y

..

I
314

1J!II'

-----

!!'

!!!

I 'PREMD' EM21 DIAS ,UP/'

20

2
2
2 BB

sy-subrt: ,.

sy-hbix ..
2D.
2 BB
10
I M

IHillSE ~

sy-subrc ..

sy-tab1x ..
10
10

M
M

Tabela 11.5 Formo s de expressao de tronsporte no instruc;oo read table


Cmpexp

Descri ~ Ci o

f1 12 .. .

Depois de lccclbcd c umo linha , 0 valor d e fl no linho iccclhc dc e


sobreposto 00 vclcr de fl no c rec de trobalho. Em segu ida, 0 valor
de f2 e sobre posta 00 valor de f2 no 6reo de trnbo lho e ass im por
d ionte. Some nte os componenfes identificodos op6s transporti ng
serdo movldcs. Ta dos os c ufros co mpo nentes permcneceroc
Inc iterodc s.

all f i el ds

Todos os compos sdo tro nspo rtodo s. Esse e 0 pcdrec e tern 0


mesmo efeito de ignore r a ocliC;do t ranspor t i ng.

no f ields

Nenhum compo it tronsportodo. Ne nhum des co mpos no creo de


t rc bclhc e cltercdc.

2
1

Na linha 14, index 2 [ocaliza a linba 2 em it. Antes d e a linba ser

copiadapara a linha de cabecalhc, 0 valorde fl no corpo e cornparado


com 0 valor de fl na linha de cabecalho. Nesse case, a linha de
. cabecalho ainda ira canter 3 (valor inalterado depois de ser acrescentada a ultima linha) e a linha localizada ira conter urn 2. Sao diferentes ,
eedc sy-subrc sed configurada como 2. 0 cocceadc da linha ~ tabela
interna e eneto copiado para a linha de cabecalho e e sobreposto no
conteedo existente.

N. linha 19" Iinha 1 eIocalizada. Os valores de f2 e 14na Iinha 1 do


corpo sao comparadoscom as ccmponentes cia linhade cabecalhocom
o mesmo nome. A linha de cabecalho con tern a linha 2 (recuperada
pela instrulSao 14) e, panamo, sao diferemes. Como resu ltado, sysubre econfigurada como

A linha 26 transfere

2:

conteddo de wa para a linha de cabecalho.

Na linha 27, .uma linha com f3 : 'AA I e procurada. A linha 1 e


corres pondida, conforme po de ser vista pelos valores de sy- subr c e
sy- tabix na safda. A linha 1 ja esta na linha de cabecalho, portanto
to dos os campos sao correspondidos em valore sy-subrc econfigurada
como O.

Uliliza ndo a
transporti ng

D~IU"EUSlllmNA5

o c6d.igo na Listagem 11.9 produz esta saida:


sv -s ubrc ..
sy-ta b1x ..

--

nd i~c'io transporting
afeca 0 modo como campos sao movid os da linha localizada para

a area de trabalho, Se for especificado, somente os valores do s co mpo nentes


especificados serio movidos para a area de trabalbo . Se urna linh a Ili o for
localizada, transporting nao fara nada.
A Tabela 11.5 descreve as valores pan a expressac de cc mp araci c (t exp
na sintaxe para read table) .

Essa adi~ao sera uril,se voce quiser apenas testa! a existencia de uma linha
em um a tabela interna sem alterar 0 conteddc cia linh a de cabecalho , Por
exemplo, ant es de acrescentar uma linha, voce pcdera querer determiner se a
1inha ja exis te na tabel a interna. A Listagem 11.10 fo meee urn exemplo.
MlADAIItrr.. Listagem 11 .1 0 A mo ne iro mo is ejlclente de lnserir linh c s em umo
,. tcbelc interne clcssrhccdc ma ntendo a orde m de c1 ossificac;oa.

~p ort

ztxlllD. _. .

2 dat a: begin of it occurs 3,


3
n(2) type n,
4
f2
type t ,
5
f3 (2) type c,
6
f4
type p,
7
end of it.

a
9 1t ~ fl .. '4 0' . it-f3 .. ' 00'. 1t - f 2 .. itef4 .. 4. append it.
10 i t -fl .. '2 0' . i t - f 3" ' BB'. i t - f 2 " it-f4" 2 . append it .

u
12 sort it by fl .
13 do 5 t te es.
14
i t -fl .. sy- i ndex ... 10.
15
itef3 'XX'.
16
it-f2 it- f4 = sy- tndex,
17
re ad ta ble i t
18
with key fl .. i t -fl
19
binary sea rch
20
t ransporting no field s.
21
t f sr -s ubrc <I> D.
22
. in s ert i t i ndex sy- t ebt x,
23
endif.
24
enddo.
25

315

376 I

D~ IhTABElAS lNTERltAS

"lENDA EM 21 DIAS ABAPH

26 loop at H .
27
~rit! : I it-fl .
28
I!ndloop .

u -ra,

Os seguintes pontos se aplicam:


it-f3 . 1t - f 4.

ascend;ng e a ordem padrao de classificacao.

o c6digo
SAiDA ~

DOl Listagem

10
20

11.10 produz esta safda:

IXX
lBB

1
2

30

3 XX

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 12 classifies i t por fl ascendente, de modo que a r ead table


seguinte pos sa utilizar a ad.i~o bi nary search.

A linha 13 executa urn lo op eineovezes . Cada vez que ocorre urn loop)
ela eria uma nova linha para it e a cc loca na linha de cabecalho (linhas

14, 15 . 16).

"

As linh as 17 e 21 determinam se urn.. linha ja exis re com 0 mes mo


valor de fl existente na linha de cabecalho. Se tal linha nao for
localizsda, sy-subrc sera co nfigurada como diferent e de zero e syt abi x sera configurada como a Indi ce da linha com 0 pr6xim o valor
mais alto au para 0 rnimero de linh as na tabela intern a m ais 1.
A linha 22 insere a nova linha ant es da linha in dicada por sy- tebt x.
Isso mantem a ordem atual de classificac ao.

Classificando

conteudo de wooo lobela interno

Para classificar a conteado de uma tabela interns, utiliz e a instrucao sor t. As linha s
podem ser c1assifieadas par urna ou mais colunas em orde rn ascen dente ou
descendente. A pr6pria sequ encia de classifica~o po de tam bern ser modificada.

Sinloxe do

2!
Z

instru~ao

sort

A segui r, veja a sin taxe da in strucao sort .


sort it [descending] [as t ext] [by /1 [ascend1ng ldescend1ng] [lIS text] /2 .. .] .

on de:

it eo no me de uma tabela interna.

. . . repres enta qualque r numerc de names de campo opcionalmente


seguidos por asc ending) descend ing, e/ ou as text.

Se desc end; ng aparecer depois de sort e antes de qualqu er nome de


ccmpoaente, ele se tornacl 0 padrac e sera. aplica do em rodos os
componentes . Esse padrio pede ser anulado em urn componente
individualao se especificarascend;ogdepois do nome do componente.

11 e /2 sao os compcnentes de i t.

A ordem de classificaljao para linhas com 0 mesmc valor nao eprevisivel.


A s linhas que tern 0 mesmc valor em uma coluna classificada podem aparecer
em qualquer ordem depois da classifica~ao. A Listagem 11.11 mostra exemplos
da instrucao sort e tambem ilustra esee ponto .

ENTUDA IIltr.. Li st a g e m 11 .11 Utilize 0 instrut;60 sort para reorganizer as lin has de
~ uma tobelo intemo
1 report ztxllll .
2 data : begi n of. it occurs 5.
3
i 11ke sy- t ndex,
4
t,
5
end
it.
6
alpha.(5) value ' eBARB' .
7
S do 5 t 1mes vary i ng it-t from a.l pha+O next alp ha+l .
9
1t -1 "' sy- tncex.
10
append it .
11
enddo.
12
13 loop at it.
14
write: / f t - t , it-t o
15
endloop.
16
17 skip.
lS "sort i t by t.
19 loop at i t .
20
write: / tt-f , it-t o
21
endloop.

of

"

23
24
25
26
27
28
29

ski p.
sort it by t .
lo op at it .
write : / t t -t , it-t.
endl oop.
skip .

377

378

APREND. E. 21 DIAS .8lPH

DlA 11< TABELIS UCTElHAS

30 sort ft by t i.
31 loop at it .
32
write : / 1t -:i . t t-t .
33
endtccp .
3'
3S s kip .
36 sort 1 t by t des cendi ng t
37 --meSSJO que: sort i t descend i ng by t 'I as ce ndin g.

INillS! ~

A s linhas de 2"a 5 definem urna tabela. intern a com dais componentes:


t e t . A clausulaoccurs e5 porque a tabelaintem a sera. preenchidacom

cinco linhas.
A linha 6 define alp ha com o uma variavel do tipo c, comprimento 5,
e the d. urn valor padrao.

As linhas de 8 a 11 acrescent am cinco linhas i tabela intema. Cada u rna

38 l oop at i t .
39

sort it.
44 *mesmo que: sort i t by
45 l oop at 1t .
46
wri t e : I i t - t o
43

47

ira conter urn a letra de al pha e 0 valo r de sy-t ndex quando a linha for
acrescentada.

write: l i t -i. it- t o


end loop.

40
41
42 skip .

t.

endlo op.

o c6digo na List agem 11.11 produz esta saida:

,,
1 C

SAIDI ~

3 A

4 ,

S ,

,,
A

., ,,
3 A

S ,

1 C

,,,
A

A s linhas de 13 a 15 escrevem 0 conteddo da eabela interna. 0 mimero


cia linha de sy-tebt x aparece a esquerda cia safda . As linhas cia tabela
intema estao em sua ordem original, sendo assim os valores de sy- t ndex e sy-tabi x sao correspondentes.
A linha 18 reorganiza as linhas, de mo do que os va.lores de t fiquem
em ordem ascendente.
Na linha 24, a eabela interna e classificada n ovamente utilizando a
mesma instrucio. Observe que a ordem relativa das Iinhas que tern urn
valor I BI eao ~ mantida. Sevoce quiser que as valores em uma coluna
fiquem em uma ordem part icular, sera preciso especificar isso na
instru~ao sort. A ordem cia linhas que contem valores idec uc os nac e
conservada durante urna classifica~o.
N a linha -30, a tabela interna ~ classificaclapor t em ordem ascenden re
e, em seguida, por i em o rdem ascen dent e.
N a linha 36, a tabela interna Cclassificada p or t em ordem descendence
e, em seguida, par i em ordem ascend ente.

A linha 37 mostra uma sintaxe alternariva que ating e a mesmo efeiro


da Iinhe 36. Nessa instrucio, colocando descending depois de it faz
com 0 mesmo fique sendc 0 padrao. 0 com ponente t e, portanto ,
c1assificado em ordem descendente e no componente t . 0 padrf o e
anul ado com a adi~o ascendi ng.

o A linha 43 classifica a tabela intern. pelos campos Default Key (tipos


c, n, d, t e x). Nesse case, hi somenre urn campo em Defaul t Key, t ,
assim sendo a tabela intema classifica em ordem ascendente apen as
par t.

, ,,

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 APlEN DA EM 21 DIAl AUP"


9 tt-t ' Nubbl e ' .

Quando uma linguagem contem caracteres acenruados, hi urn valor


nurnerico atribuldc para representar cada forma acenruada de urn caractere.
Por exemplo, 0 e 0 (0 com urn trema) sao diferentes e, ponanto, caracteres
indepe ndenres, cada urn com urn valor numerico individual. (Em ASCII, 0
valor de 5 e0 decimal 246.) Q uando voce classifies dados contendo caracteres
acentuados, as formas acentuadas devem aparecer com as formas njio acentuadas. Por exemplo , 0 e ti devam estar juntos e, em seguida, p. Entretanto, as
valores bicsrios dos caract eres acentuados e naa acentuados nio seguem uma
sequencia numerics. Portanto, sed necessaria um a maneira de alterar a ordem
de classifica!rio, de modo que as caracteres acenruados sejam corretamente

11 write: I 'sy-l angu-' , sy-langu.


12 sor t 1t. "cla s s i f i ca per Default Key. t ! do ti po c, portant o class1fica por t.
13 l oop at a.
14
wr ite: I it-t o
15
endl ccp.

I'
skip .
set loc al e la nguage '0 '. "Equival ent e I ace n t ua ~ ! o em alemlo
wri te : I ' sy- la ngu- ' , sy- bngu.
sort it as text.
"as te xt aqui se ap11ca a todos os componentes de t 1po c
*mesmo que : sort i t by t as t ext .
Z2 loop at it .
Z3
wr a e: I i t-to
Z4
endl oop.

17
18
19
20
21

classificados.
A adiliao as text modifica a ordem de classificacao, de modo que as
caracteres acentuados sejam corre tamenre classificados. Com as te xt , a
sequencia de classificacic binaria mo eurilizada, Em vel. disso, a ambiente de
text o determina a sequencia de classificacac.

o c6digo na Listagem 11.12 produz est a safda:

0 ambiente de texfo e um eonjunto de cccccerrsnccs cssccicdcs C linguogem


de logon do usu6rio. ~ determinado pelo e6digo de tdio rnc que voe! digita
quando efetuo logon e eonsiste prindpalmente do eonjunto de eoraderes do idioma e
do sequencia de lntercclccoo. Voce tcmbem pede olterar 0 amb iente de texto em tempo
de execvo utilizondo a instru o set locale. Esse instru o configura 0 valor de
sy -Lanqu , 0 conjunto de caraderes atva is e 0 sequencia de inte rcoloc;Oo para a
linguoge m escecffccdc.

NOVO...
illMO "

sy- l angu- E
H19g1e

Hoffman
Hubbl e
HOl lilian
sy-l angu- 0
H19!lle
Hoffma n
HOll man
Hubble

as seguintes ponros se aplicam para a adi~ao as text:

Pode ap enas ser utilizado com campos de tipo c.


Pode ser especifieado dep ois de sort e antes de quaisque r no mes de
componente. Ne sse case, se apliea a todos as componentes de tipo c
utilizados pela classificafjao.

IHiJ.ISE~

A linha 12 classifica it par Default Key na sequencia de classificacfo


bicaria .de acordo com a linguagem de logon atual. A saida mostra que
ij vern por ultima na sequencia de classificaci o.

A Listagem 11.12 fomeee urn exemplo.


Lisfagem 11.12 A dassificoc;ao de corocteres ccentuados requer a usa
do odic;oo as t ext

1 report ztxlll2 .
2 data: begin of it occurs 4,
3
t (30).
4
end of it.
S

6 i t - t 'Niggle' .
7 f t-t ' Hoffman
8 f t-t 'H6l1man'
I.

append it .
append it .
.Ippend i t.

As linhas de 6 a 9 adieion am quatro linhas na tabela intema. A da linha


8 coneem urn 0 (0 com tr ema).
A linha 11 escreve a linguagern de logon atual.

P ede ser especificado dep ois de urn nome de componente individual .


Nesse case, se aplica somente aquele componente.

NTlADI~

append i t.

10

,.

Set l ocal e na linha 18 altera 0 ambiente do programa; produz urn


efeito semelhante a acentuacao em alemao. Sy-1 angu e configurada
como D e a conjumo de caracteres do idioma aleruao, bern como as
sequencias de inrercalacio sao urilizado s desse p on te em diant e no
programa.
A linha 20 utiliza sort com a adi~ao as t ext depcis do nome da tabela
interna. Isso faz com que as text se aplique a todos as compon ent es
do tipo C. Na saida, 0 e 0 aparecem junt os.

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

382

-.. -

~o

Depo is de cicssificcr as text, n60 utilize read table com a odilWoo


bina ry se arch. As linhos ndc serec clcssftccdc s em ordem bin6rio,
sendo csslm umo pesqulsc bin6ria ter6 resultodos lnco rretos. Pora
utilizor a pesquiso bin6rio com b ito, consuhe a docomentccec de
pclc vrc-chove do ABAP/4 sabre 0 instru<;oo conv ert ; "to sortabl e

code.

As seqiiencias de classificacic variam de acordo com as plataformas. Ao


transp ortar de urn sistem a operacional pan outre, as unicas sequencias garan-

---J_
DlA l1:TABEUS lNIDHAS

" PUND.. EM21 OIAS ABA P/4

IFa, a

L--.:-

Utilize a odio bi nary search no


instru o read table. Elo c vmentcrc
muito 0 desempenho do pesquiso.

383

Nee utilize occurs 0 para tobelos infernos '


com menos de B KB. lsso resulta em
superclccccec de memoria e diminui 0
de sempenhc.

Utilize a adit;aa index no instrut;oo


read tab le , sempre que passive!. Eo
maneira mois ropldc de localizer uma
enicc linha .

tidas de classificacac sao A-Z, a-z e 0-9, mas n~o necessariamente nessa ordem.
Utilize a instrucao r ead table para [ocalizar urna unica Iinha na tabela
inte rna. Utilizando a adi!;ao inde x, voce pa den. lo calizar uma unica
linha peio numero de linha relative . Essa e. a maneir a mais eficiente de .
localizar uma linha. Utilizando a adi !;ao wit h key, voce poderf localizar
uma linha especifica ndoum valor a ser localizado. compari ng derermina
se os valores na area de tra balho sac diferenees dos valores na linha
localizada, transporti ng impede atribuicoes desnecessarias au

Depo is do dassificoc;ao, voce pede exd uir duplicoC;6es de umo tobelo


interne vtilhcedc a insfruc;oo del ete adjacent dupl i cates , descrito
no dccumentocdc de pclcvrc-chcve do ABAP/4 .

Resumo

Uma ta bela interna euma cole~o de linhas armazenadas na RAM no

.tribui.6es indesejadas da linha localizadapara a :irea de trabalho.

servidor do aplicatlvo. Consiste em uma linha de cabecalho e urn


corpo. A linha de cabecalho e cp cional. A linha de cabecalho e a :irea

A instru~ao sort classifica uma tabela interna por componentes ideatificados . Se nenhum componente t iver urn nome, a tabela sed classificada por seus campos D efaul t Key (t ipos c, n, o, t ex).

de trabalho impHcita da tabela interna.

A existencia da clausula occurs cri a uma tabela interna, Ela e utilizada


c om o uma diretriz pan 0 sistema alocar mem6ria. Ela nao limita 0
nume ro de linhas qu e v:~ce pede adici onar em uma tabela interna.

P&R

Utilize a instrucao l oop at para recuperar mdltiplas linhas de uma


tabela interns. Cada linha ecolocada na linha de cabecalho ou em um a
are a de trabalho explfcita, um a por vez. U tilize from, to e where para
esp ecificar as linh as a serem reto madas. Dentro do loo p, sy-tebt x iri
center 0 mim er o de linha relative com base em 1. Depois de endl cop,
sy-subrc sed zero se q uaisqu er Jinhas riverem side processadas no

loop.

D entro de urn lo op , a andamento do processamento pod erf ser


alterado por uma in Stru !;aO exit, cont i nue ou check. Exit termina 0
loop e continua com a instru!;ao ap6s endloop . Continue de svia as
ins tru!;6es rema nesc entes do lo op e com e!;a imediatam ente a pr6x.ima
ite ra!;ao. Check, dOl mesm a form a qu e continue, tambem co me!;a uma
no va itera!;ao, mas fara. isso so men te quando sua expressao lo gica for
fa lse.

Em al gu ns pr cgramas, vi u rn tipo definido pelo usudrio que tern


um a clausula occurs. 0 tipo e en tdo utilizado para definir um
tip o de tabela interna e subsequentemen te uma tabela intema,
como a apresentada na Lista gem 11.13. Porque isso efcito dessa
maneira? Nac se pode sempre definir a tabela inte rna com a
instru ~ao data? Qual e 0 motivo da introdu ~o da instru~ao
types ?

OOI.lDI~

Lista g e m 1 1.1 3 Definindo umc tobelo Interne com urn tipo definido
pe lo usu6rio

1 report zt xl1l3 .
2 t ypes: begin of my_type,
3
fl .
4
f2 .
5
end of my_type.
6
t _1t type. lIy_ty pe occurs ID.
7 data i t t ype t_ 1t.

--- -384

"PRENO" EM 71 Dl"S UAPI4

OIAll :TAI!8.ASJNTERHAS

Nac hi nenhuma vanta gem em utilizar os ti pos de tabela in terns da m ane ira m ostrada na Listagem 11.13. Os rip os serao
a teis som ente se vcce os uri lizar p ara definir mais de urn obj eto
de dados. Nessa li stagem, ap en as u rn objeto de dados e defi nido
do ripo t_it. Seria mais simples, nesse caso, tirar as instrucdes
type s e criar toda a definic ac utiliz ando data.
Teoricamente, os tipos serdo uteis se voce precisar definir multiples cbjer cs de dados que sejam iguais. A List agern 11.14 most ra
tres maneiras de definir multiplas tabelas intern as: utilizan do
apenas data (clades), utilizando t ypes e utilizando uma estrutura
doDDIC.

!N1IlDI~

Listagem 11.14 Deflnir multip les tc belcs internes com t ypes simplificerO
o~ definir;o es

1 report ztxl113.

disponlve l para reutilizar;oo denf ro de multiplos prog romas . Em minho oplnlcc , utilizor
uma estrofvrc sere bem melho r do que utilizer umo definir;oo types .

Existe apenas uma coisa que urn tipo pode fazer e uma estrurura nao: ele
pe de canter a defini~o pa~ uma tabela int ema aninhada. Som ente n esse caso
eu utilizaria urn tipo. Em rodos os outros cases , um a estrutura data begi n of
ou l t ke a no DDIC seria ideal.

Workshop

o Workshop oferece du as maneiras de voce verificar 0

que apr en deu n esre


capitulo . A s e~ao Teste oferece perguntas para ajud ar a solidificar seu entendimenta d o coctecdo abordado e a :Se~ao Exercfcio permire que vo ce pratique 0
que aprea deu. Voce p od e encontrar as respostas as perguntas do teste e ao
exercfcios no Apecdice B, "Respostas as perguctas e aos exercfcios".

Teste
1. 0 qu e confi gura urn limite para a qu antidade maxima de mem6ria
est en dida que pede ser alocada por uma tabela -intem a?

3 Defi ne 3 tabelas tntemes 1 d ~ nti ca s ut il iza ndo epenas DATA


4 dat a: begin of t t _l a occurs 10,
5
fl .

2. P or que nao utilizar occurs 0 se voce pretende arm azenar menos que
8 KB em uma tabela intema?

f2.

6
7

end of it_la ,
t t_lb li ke i t _la occurs 10 wtt h header li ne,
i t _Ie l 1k.e i t _la occurs 10 wt tl! header l i ne.

3. Voce pode utili zar a instrucao rea d tab' e para Ier as tabelas de ban co
de dados ?

I.
11 Defi ne mats 3 tabelas internas 1denti cu ut ll i zando TYPES
12 types : begin of t _ ,
13
fl ,
14
f2 ,
15
end of t _,
16
t_it t ype t_ occurs 10.
17 data : it_21 type t_tt.
18
it_2b type t _it ,
19
i t _2c t ype t_1t.

Exerdcio 1
Exiba e explique as convers6e s que oco rrem
Listagem 11.15).

i
l
r

~o

programa zt x1l 10 (veja a

Listagem 11.15 Conve rs6es (Dice: Progrem . > lv1olysis)


1 repert ztx l lID.
2 dat a: begin of it occurs 3,
3
fl (2) type n,
4
f2
type i,
5
f3(2) ty pe c,
6
f4
type p,
7
end of f t .

,.

21 Define mafs 3 utilizando urna


22 data: 1t_3a 11ke ztx _it occurs
23
i t _3b like zt lUt occur s
24
ft _3c l i ke ztx_it occurs

estrutura do ODI C
10 with oI!eader 11ne,
10 with header I t ne,
10 wit h header Hne.

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

g 1t-fl .. ' 40 ' . it-f3 ' 00' . 1t- f2 .. it-f4 .. 4. append it .


ID 1t -fl '20'. it-fJ ' SS' . it- f2 it- f4 2. append it .
11
12 sort it ?y fl.
13 do 5 times .
14
it-fl sy l ndex . 10.
15
itf3 '" 'XX '.

385

~ - 386'" ..... .....- ~....- ..... ".-............ -.-.- ~ -.., ~ -- -

-- -

-- -

-- -

. PREHO... EM 21 DIAS ABA P!4

16

ft-t2

11
18
19

r ead table 11
~th key fl ,; tt-fl
binary searc h
transporting no fi eld s.
11 sy-subrc <> O.
insert it i ndex sy-tebtx .
endif.

20
21
22
23

t t -f4 sy- t ndex.

2.
enddo .
25
26 loop at it.
21
write: I it-fl. it-f2 , u-n, f t - f 4.

zs

endloop .

12
-,

Tabelas internas avan~ada s,


Parte 1
Qbjetivos d""o'--!Clo.!'O.ljPflJ[L!'tUl,Ll.IOL-.l

De po is de con cluir este capitulo, voce se.la capaz de:

Reconhecer 0 operador de corpo ,d~:: tabela e ~tiliza-lo para testar


quanta a. existencia de dados em J i?a tabela interna e comparar 0
con teado de duas tabelas interna s para igualdade

Determinar a numerc de linhas em uma tabela interna utilizando


deseri be e sy-tfi 11

Copiar 0 conreudo de uma tabe la interna para uma ou tra ut ilizando 0


operador de corpo de tabela e as"instrucces append lines e i nser t
lines
Visualizar e mcdificar as tabelas internas utilizan do edi t or- cal l
~tilizar as instrucoes i nsert e modi fy par a alterar 0 contecdo da tabela
mtern.

"

Excluir as linhas de urna tabela interna utilizando del et e, delete


where, clear, clear i t [ J, refresh e f ree
Preencher uma tabela interna utilizando append sorted bye call ect

hIlpJ I_.CDmpus.com.br

I I I I II~li .... I I " . . . . . I -. . . . . . _._~ I . . . .

~'i '" ., .~ -
~
.....0

"

..5t

388 I

APRE MOA EM 21 DIAS ABAP/4

OIA12 "BElli INTERNASAVAHIA" ' , PARTE 1

389

Testa ndo e modificc ndo


inte rno

conteudo da tabela

Utilize as seguint es estruturas para tester e modificar


internes:

Determinondo se umo tgbelo interng est6 vgzig


Se 0 corpo de uma tabela intema contiver apenas valores iniciais (espacos em
branco e zeros), eia estar.i vazia. Portanto, para determinar se uma tabela
int ern a contem quaisquer Iinhas, fal$a urn tes te do corp o com a seguinte
instrucao:

conteudo das tabelas

0 ope rador de corpo de tabela

if i t[ ) ts tntttel .

describe t abl e

append 1i nes

in sert li nes

editor- cal l

ins ert

Se 0 te ste for verdadeiro, a tab ela interna estara vazia. Q uando false, ela

ici ce nter p elo menos uma linha.

Determ inando
interng

fre e

del ete

0 numero de linhas em uma tabela interna, utilize a varidvel


sy-tfi 11.Ela e configurada pela ias truclo descri be t abl e.

Sintaxe da instrucco descri be table


en A seguir, veja a sintaxe da instrucao descri be table.

clear

re fr esh

append sor t ed by

S o n de:

ca ll ect

o carpa de uma tabela in terna erepresentado pela sintaxe it [ I , onde it


e0 nome de qualqu er tab eia in terna. i t [ ] significa "0 corpo cia tabela in tem a
i t ". Nao podehaver nada entre os colchetes; eles devem ser escri tos exatamente
da fo rm a como mos trado. Voca pode util izar essa sintaxe para executar operac;6es efici entes de tab ela qu e nao req ue rem 0 usa de uma linha de cabecalho.
Essas operacoes serao descritas por todo este capftulo.
Se uma rabela intema nao tiver uma lin ha de cabecalho, 0 pr6prio nome
da tabela interna representara 0 corpo. Po r exemplo, se a tabela interna it njio
tiver urna linha de cabecalho, voce podera utilizar tanto it [ ] como i t para
rep resentar 0 corpo ; eles sio equivalences.

O bte nd a informo<;6es sabre umo tobelo interno


Voce p ede obter as seguintes informacoes comumen te necessarias sobre uma
tabel a intema:
Se a tabela interna conrern dados
Quantas linhas ela ccntem

numero de linhas em uma to bel a

Para de terminer

modi fy

descri be table it [lines i] [occurs j].

t e j saO variaveis numericas.

it

e 0 nome de urna tabela int erna .

Essa insrrucfo preenche as tres varidveis de sistema mo stradas na "


Tabeia 12.1.

Ta bela 12.1 A instru<; 60 describe tabl e preenche estes vori6veis de sistema


Varlavel

sy-t f f l l
sy.tleng

Namero de linhe s
Ccmprimentc de ume llnhc em bytes

sy-tcccu

Velor ctuel de d6usule occurs

Os seguintes pontes se aplicam:


Se a adic;io 1i nes i for especificada, 0 rnim er c de linhas sera colocado
ern sy-t f t l l e f.
Se a adiC;ao occurs j for especificada,
sera colocado em sy-toccu e i.

tamanho da clausula occurs

I
I'

I
\

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

11'

11'

11'

O~ lU ABElAS IHmH>S AY'"YlOA5,PAm1 I

Ho somente umo insffincio em que sy-toccu ire dife rir do clousulc


occurs no definic;c o de tobelc . Quando sy-tl eng * sy-tcccu > 8192
e depots que umo linho for cdtclcncdc a fobelo intemo , sy-toccu sem
zero. 1550 indica que a rnem6rio esfd sendo a!ocodo em blocos de 8
KB porn esse tob elo interne .

Progra ma de exem plo que obtern as informac;6es sobre


um a tabera interno
A Listagem 12.1 mostra urn programa de exemplo que ob tem as informacoes
so bre uma tabela intern e.

~NTRADA'" Lista ge m 12 . 1 A instrucdc describe table utilize os vcrlovels de sistema


,. pora quontfkor 0 ccnteudc de tabela

INltIS~ ~

A linha 7 campara 0 corpo cia tabela intema utilizando 0 operador de


corpo de tabela com valores iniciais. A tabela int em a ainda nao con tern
Iinhas, entia 0 teste e verdadeiro.

A linha 11 utiliza 0 operador d e cadeia (:) para acrescentar tees linhas


identicas a it.

A linha 13 faz novamente urn test e do corp o. Dessa vez, 0 teste e


prec edido por urn not logicc. A tabela intem a contem dadcs, entia
esse test e everdadeiro.
. Depois de cada instrucfo append, 0 valor de sy-tebt x sera configurado
com 0 mimero de linhas na tabe la in tema. A linha 17 escreve seu valor.
A linha 18 utiliza a instrucao descri be para obrer 0 mimero de linhas
e o coloca em sy-tfil1. Tarnbem obtem 0 comp rimento e a tamanhc
cia linha da clausula occurs e as coloca em sy- t l eng e sy-toccn,

1 report ztx1201 .
2 data : begi n of it occurs 3,
3
fl val ue ' X' ,
4
end of it,
5
n type 1.

Se voce precise- openos sober se a tobe lo ccntern dodos, ndo quontos


linhos elo possui, utilize 0 operador de corp o de tabe la. He e mots
efldente do que 0 instrw;ao describe ta bl e.

6.

7 1f H [ ] is i nitia l .
writ e: I "tt is empty ' .
8
endif.
9

10
11 append: tt , it , tt .

Copiondo dodos de umo tobelo interno para


uma outre

"seee t hent e a escrever 'append i t' 3 vezes

12

13 ;f not H [ ] i s i nit ial .


14
write: / ' it i s not empty'. "
15
endif .

Se duas tabelas internas tiverem a mesma estrutura, ut ilize a seguinte insrrucao


para duplicar D conteudc de uma tabela interna em Dutra:
m[

j tl [ ] .

16

17 wrtte: I
18 describe
19 write : /
20
I
21
I

' number of rows f rom sy- tebtx" ,


t abl e 1t li nes n.
'n~er of rows from sy-tfn 1: '
' l engt h of a row from sy- tleng:' ,
'oc curs val ue
f rom sy-toccu:' ,

sy-te btx.
sy-tfil1 ,
5y-t1eng,
sy-tcccu .

o c6dig o na Listag em 12.1 produz esta safda:


SAiDA ~

it i s empty
it i 5 not empty
number of r ows from
number of rows from
l engt h of a row from
occurs val ue
from

sy-tabix:"
5y-tfi 11:
sy-tl enq:
sy-tcccu .

Duos tobelos internos terec 0 mesmo estrutvro se 1) ambos tlverem 0


mesmo numerc de componentes e 2) 0 tipo de dodo e comprimento
de codo componente fore m iguois 005 do compo nente correspondente
do outro tobe la inteme . Somente os names de componente ndc
precisom corresponder.

A inscrucao anterior copia 0 conteudo do corpo de it! e 0 coloca no corpo


de ; t2. Qualquer conteudo existente em i t2 sera sobrescrito. 0 conreado das
linhas de cabecalho, se uma das tabelas intemas river uma linha de cabecalho,
permanecerf inalteradc. Essa e a maneira mais eficiente de copiar 0 conteudo
de um a tabela intema para outra.

..1."' __
391

~IIIIIIIIIII - - - - l
oa12,lABEUS IKTEl<NASAVAN\ADAS, PAm1

APREND! EM 21 0lA5 ABAPI4

Sintoxe do

Copiando umo porte de umo tobelo interno


Se voce quiser copiar uma parte de urna tabela interna para ou tra, OU se voce
quiser deix ar 0 conteddo cia tabel a alvo, utilize as instI11~6es append 1i nes e
i nse rt l ines.

Utilizondo

0 instru~cio

append 1i nes

U tilize a instru~o append 1ines quando quiser acrescentar linhas ao final da


ta bel a alva .

III

Sintoxe do instrucco append 1i ne s


A seguir, veja a sintaxe da inst ru cao append 1i nes.
append l1 nes of ttl [from nf] [to nt) to it2.

!,

cede:

t t l e i t2 sao as

nf e nt sao con stantes,literais au variaveis numeric as.

tabelas internas com au sem linhas de cabecalho.

O sseguinres pontes se aplicam :

As estruturas de itl e itZ devem corr esponder.

nf eo Iodice da primeira linha

a ser copiado de t t l . Se a adiljao fr om


nao for especificada, a c6pia cornecaraa parti r daprimeira linha de i tl .

ea indice da ultima linha a ser cop iado de ttl. Se a adilJao to nao


.
for especificada, a c6pia continuara ate a ulti~a linha de ttl.

nt

Se nem from nem to forem especificada s, a tabela inte ira sen acrescentada.
.

Depois que a instrucio append 1i nes for executada, sy- tebt x iracanter
o mimero de linhas na tab ela.

c.n

Utilizondo

0 instru~cio

insert 1i nes

U tilize a instrucio i nsert 1i nes quand o quiser inserir as linhas em um Ingar


dif er en re d o final cia tab ela-alvo.

insert 1i nes

i nse rt lines of ttl [f l'Oll nil [t o nt] into tt2 [index nb].

onde :

nf, nt e nb sao cons tantes, litems ou variaveis num ericas .

i tl e i t2 sao as tabe1as in tern as c~m ou sem

l.inhas de cabecalho.

Todos as pont os que se aplicam a instrolJio append li nes tambem se


aplicam aqui . A diferenca e que as 1inhas de t tl sao inseridas em tt2 antes do
ntimerc da linha nb. Se a valor de nb for 0 na merc de 1inhas em i t 2 mais 1, a
linha sera acresceo ra'aa ao final de tt2. Se nb for maier, a linha Dio sed.
acres centada e sy-subrc sera confi gurada como 4. Se nb for menor que 1, urn
erro em temp o de execuljio c corr era,
Voc e pede utilizar essa instrucio den tro au fora de loop at tt2. Se
utilizada fora. voce devers especificar a adiljao ind ex. Se utilizada dentro, 1ndex
sera opcion al. Se a adilJao Dio for especiflcada, 0 rnimero dalinha are al em i t2
sera assu mida.

Progra ma de exemplo que copia os dados e ntre as


tobe los internos
A Listagem 12.2 mostra urn prograrna de ex emplo que copia os dados de uma
tab eia interns para outra .

ENTRADA'" Ustagem 12.2 Este pragrama copia as dodos de umo tabelo interne
~ para outra utilizondo os instruc;6es append lines e i nsert lines
1 r~port ztx1202.
2 datil : best n of i tl occurs 10,

Utilize r append l t nes sera de tres 0 quotro veees mois rOp ido do que
utilizor append poro odicio nor os linhos umo de codo vez.

instru~ao

A segui r, veja a sintax e cia insrruga o 1nsert 1i nes.

fl.

end of lU
HZ 1i ke i tl occurs 10 with header 11ne,
alph a(lO) val ue ' A"BCOEFGHIJ ' .

8 do 10 t tee s varyi ng 1tl-fl from al pha+Q next al pha+l.


append t t f ,
enddc.
to

11
12 append lines of it! fTOll 2 to 5 t o it2 .
13 l oop at ttz ,
14
write uz-n .
15
endloop.
16
17 i nsert j tn es of it! fJ"OOl 8 i nt o it2 t ndex 2.

393

~~~~~~~~~~~~ I I I I

'"

394

A/ RENDA EM 11 D'AS AU/ /.

DlllUABlliS INlERNASAVAll(AIlAS.IARTn

18 ski p.
19 loop at ttz ,

Compo rg ndo

20
wrtt~ itl-fl .
21
endloop.
22
23 l oop at 1t2.
24.
if t t Z- fl >. ' E'.

26

27

i f itI[] i t 2[

end1f.

endloop.

29 skip.

30 l oop at tt2.
31
writt!! 1t2-f1.
32
endloop .
33
34 sk i p.
35 i t2 [ ] i tl [ ] .

Utiliza ndo a

endloop.

1.

instru~ao

edi tor- ca l l

A instru~ao edt t or- call exibe 0 co c ceudo de urna tabela interna para 0 ususrio
em urn editor se m elhanre 41.0 edit or de c6digo-fonte do ABAP/ 4. E uti! para
depura.~o e como uma interface simples a fim de permitir 41.0 usuirio digitar e
modificar os dados em forma de tabelas.

c6digo na Lisragem 12.2 pr oduz esta saida:

8 C0 [

BH IJCO E

Sintoxe do instruljo o ed i tor- call

B A H A l A J CD A E

!!!
Z

A BC D E F G H I J

AHiLlS~

As linhas de 8 a 10 preen ch em i tl co m 10 linhas con te nd o as primeiras


.
10 letras do alfab eto.
A linha 12 acrescen ta as linh as de 2 a 5 de i tl para i
quatro linhas contendo as let ras de B a E.

comeadc de

A instrulioo If - Equal t o e 0 moneiro mcls eficlente de comporar 0


contendc de duos tobe los intemos.

36 loop at ill.
37
write rez-n.

Para utilizar essa estrurura, as tabelas intemas deverac ter a mesma


estrutura, Se elas n io tiverem a mesma estru rura, voc e tera. que com pari-las
manualmente, linh a po r linha .
.
Essa ins t ru~ao sera verdadeira quando iti e H 2 contiverem 0 mesmo
mime ro de linhas e 0 conreado de cada linha for 0 mesmo.

28

38

conteudo d e duos tobelos internos

Voce pode u tilizer 0 operador de co rpo de tabela para comparar


duas tabelas intemas, co mo pode sec visto a seguin

insert l ines of i tt to 1 into tt2.

25

tZ. i t 2 tern agora

N a linh a 17, a adi~ao t o nao esti especifica da, entdo 0 final de i tl e


assumido. Is so ins ere as linhas 8, 9 e 10 de i tl em 1t2 antes cia linha

2.
Na linha 24) se a Ietra em it2-fl for maior que au igual a E, a linh a 1
de itl sera ins erida an tes cia linh a atual de i t2 . (A adilj:io f r omnio esta
especificada, entao 0 inicio de 1t 1 eassumido.) 1550 resul ta na inser~io
de quatro linhas . Na saida, sio os valcres I A' .
A linha 35 copia 0 conteudo de i tl para it2, sobrepondo com pletamente 0 conteddo exist ent e,

~
m

A seguir, veja a sin taxe da ins tru~ao editor-call.


editor-call for it [title el [display mode]
onde:

it ~ 0 nome de urna tabela in tem a.

eum literal, constante ou variavel.

Os seguintes pontes se aplicam :

it pode apenas conter com ponen tes do ripe c.

0 comprimeato maximo de uma linha e de 72 caract eres.


te o te xto exibido na barra de tfrulos da janela do editor.
A adi<jao di spl ay mode faz com que os clados sejam exibidos no editor
em modo de exibicsc . 0 usuario sera. capaz de p esquisar e rolar, mas
nao sera. capaz de alterar a cc nteud o.
Depois de visua lizar ou mo dificar 0 conteudo da tabela inte rna atraves
do editor, 0 usuario pressionara um destes botoes: Save, Back, Exit ou Cancel.
Save grava as alteracoes feitas 41.0 con teddo da tabel a inrern a e retorna 41.0

395

~!.I

XXIIIIIIIII I
396

II

APREH OA EM ' 1 DIAl ABAP/'

... ----- -- D. 1UABElAS INTElHAS AVAH\ADAS. PARTE 1

programa. Back, Exit e Cance l saem do editor e retomam ao programa. Se


alreracoes tiverem sido feitas, sera solicitado 010 usudrio salvar au cancelar as

alceracoes.
Depois que a instrucac edi tor-call for executada, sy-subrc sen configurada com as valo res mostrados na T abela 12.2.
Ta bela 12.2 Volores de sy-subrc depois do instruc;oo editor-cal l
sy-sub rc

Significado

Uma grovoo foi executcdc . 0 ccntecdo do tcbelo interne pode ou


nOD fer side olterodo.

o usu6rio noo executcu urne aC;Cia solvor. 0

23 loop It it .
24
\IIrHe: I it-to
25
endloop.

Se nenhum dado tiver sido digitad o quando 0 editor foi exibido , 0 cedigo
na Listagem 12.3 produzirf esta safda:
Data was not changed
Haee

conteudc do tobelo

Address
Phone
F~efo l"lll

Text

interno est6 inolterodo.

. A Listagem 12.3 mostra urn programa de exemplo que utiliza a instntc;ao


edi tor -ca 11. Nesse exemplo, a tabela interna e preenchida corn cinco linhas e

e exibida no editor.

de modo que a usuario possa modificar as dados. 0

conteddc e entao escrito e uma men sagem-tambem


se uma alten!;aO foi execurada.

e escrita a fim de indicar

Listagem 12.3 Utilize a instrw;co editor-call paro visualizor, editor e


depurcr 0 ccnteedo de uma tcbelo inte rne .
1 report ztxI2.03.

z
3

I
6

'j
I
1.1

Ii

.
I'
I

7
8
9
10
11

dat a: begin of it occurs 10,


t(i!),
end of it,
save_it l1ke 1t occurs 10.

"t ext o
"ira center a c6pia do or ig ina l

tt -t > 'Na~
:'. append it.
it t 'Address
: ' . append i t.
1t-t ' Phone
: I .
append it.
1t -t = ' Freeform Text
append 1t.
append It .
clea r it-t with ' -'.

12

13
14
15
16
17
18
19
20
21
22

save_i t - H[] .
"sese t hente a: save_it [ ] H [ ] .
editor-ca ll for it t i tl e ' Freefonn Entry' .
if sy- subrc 4.
"0 usuartc n~o executou uma al;~o server
write : I ' Data was not changed'.
elseif save_it[ ] < > i t [ ] .
-0 usuario executou IJlIIa alj:ao salvar
\IIrHe: I ' Data was changed'.
else .
\IIr1te : I 'Data \liAS not changMl '.
endif.
write: I sy- ul1ne(72).

As linhas de 2 a 4 definem urna tabela intema que tern urn dnic o


componente t, comprimentc de caractere s 72.
A linha 5 define uma segunda tabela interna igual aprimeira. Ela sera
utilizada para armazenar urna c6pia de referencia dos dado s em it. Ela
nao tern uma linha de cabecalho. A linha de cabecalho foi ignorada ja
que nao era necessaria nesse programa.

As linhas de 7 a 11 acrescentam cinco linhas

a tabela intern a a partir

da linha de cabecalho.
A linlla-13 copia 0 corpo de it para 0 corpo de sa ve_H. ] i que save_i t
nao tern uma linha de cabecalho, 0 lade esquerd o da atribuicao pode
ser escritc com ou sem colchetes.

A linha 14 exibe

conteedo da tabela interna no edi tor com

titulo

Freeform Entry.
A linha 15 verifica 0 valor de sy-subr-c para determinar se 0 usuirio
executou urn a~o salver. Se ele nao executou, provavelrnente os dadcs
nac foram alterados e uma mensagem sera escriea.
A linha 17 compara 0 novo cocteedo de it com a c6pia de referencia
em save_it . Se forem diferenres, uma mensagem sed escri ta. Se forem
iguais, a linha 20 escrevers uma mensagem para qu e isso seja indi cado.
A linha 22 escreve urna sublinha com 72 cara cte re s de comprimenrc.

As linhas de 23 a 25 es crevem

0 novo conteudo da tabela in terne,


incluindo quaisquer modificacces feitas pelo usuario.

Inserindo linbos e m um o to be lo interno


Para inserir uma tinica linh a em uma tabela interns, utilize a instrucac i nsert .

397

..-. . . . . . . . .&.&..&...-..-....

I I I I I I -I . . . . . . .

.. --- --- -

Sintoxe do instrU!;oo insert

16

U't A seguir, veja a sintaxe da instrucic insert.

at i t where fl
19
1t - fl - 88.
i nsert it.
20
21
endl oop.
22
23 skip .
24 l oop at it.
25
write / 1t- fl .
26
endl oop.

insert [11'0 1nt o] i t [i ndex II]

cede:
wa eum a area de t rabalhc com a mesma estrutura de uma linha cia tabela
int ema i t.

n eurn constante. Iiteral au varisvel numerics.

Se Il'Q for especificado, 0 comeddc de va sera inseridc em it . 'fila devers


tee a mesma estrutura que it .

,
5
1

linhan se tomara enta o a linha n+ 1.

"88,

A ins tru~o i nser t p ede ser utilizada dectrc au fora de loop at it.
Se urilizada fora, a adi~o index devera ser especificada . Se utilizada
derrtro, i ndex sera op cional. Se a adi~io Da O for especificada, a linha
atual sera assumida.

,
5

6 do 5 t i mes .
It - fl sy-tnde x,
7

,
8

append it.

codigo na Listagem 12.4 produz esta safda:

993

Se index for especificado, a nova linha sera inserida antes da linha n. A

1 r eport zt x1204.
2 data: begin of i t occurs 5,
fl l1ke sy-tneex,
3
end of it .

4.

especificado.

Llstagem 12.4 Utilize a instruc;ao insert perc inserir uma (mica linha
em uma tabela intema

:>.

Se Il'O nao for especificado, 0 comeedc da linha de cabecalho sen


inserido em i t . Se it nao civet uma linh a de cabe~allio,ll'a cle ver! set

EH1IJDA~

885

illUSE ~

As linhas de 6 a 9 acrescentam cinco linhas contendo os numeros de


laSemi t.

Alinha 11 atribui ao componente de liaha de cabecalho itfl urn valor

~-~.

A linha 12 insere a linh a de cabecalho de it com o uma nova linha no


corpo de it antes da linha 3. A linha existence 3 tcrna-se a linha 4
depois da insercso.

A linha 18 recupera essas linhas da tab ela in terna que tern um valor f1
maier que ou igual a 4. Antes de cada linha, a linha 20 inse re uma nova
linha a partir da linha de cabecalhc de it. Antes da inser<;ao, a linha 19
alte rou 0 componente fl para que 0 m esmo contivesse 88.

eneeo.

I.
11 it f1 -99.
12 i nsert it ; ndex 3.
13
14 l oop at 1t.
15
wrt te / it-fI.

399

endloop.

17
18 loop

Os seguintes pontos 5C aplicam:

A Listag em 1 2.~ con rem urn prognma de exemplo que utiliza a instrucio
i nsert.

.~ lHABELlS IIITERH.lS AVAN(AO.\S, PARTE I

APR EN DA EM21 DIA S AU P/4

Depois que coda instnH;60 1nsert for eecveec, 0 sistema indexa r6


navome nte todas as llnhcs cbcixc do inserida. lsso introduzir6overhead
q uando voce Inse rir linhas pr6ximos 0 0 inicio de umo grande tebelc
interne. Se voc e precisor inserir um bloco de linhos em umo grande
tobelc Interne, prepare u ma outre to belo com as ltnhcs 0 serem

-.
400

. -.~.

_ -

UREH DA EM 21 DIA SABA P/4

Os seguintes pontas se aplicam :

inseridos e utilize insert lines porsuo Vel . As linhos no tobelo a lve senSe
nova mente indexodos apenos umo unico vez, depois que esse instruc;ao
for execvtedo.

Se from va for esp ecific ada, a linha sed, scbrescrita com

Ao inserir urna n ova linha em it dentro de loo p at it. a inser~ao eao

Modificoodo as Hobos em umo to bela inte rno


Para m odificar 0 conte6do de uma au m ais linha s de um a tebela in tema, utilize
a ins t ru~ ao modi fy.

Sintoxe do instruc;cio modify

tn

~
m

...

A seguir, veja a sintaxe da instruci o modi fy.


modify i t [f rom 11'!1] [ind ex n] [transporting cl c2 [where exp] ]

onde:

it e0 nome de um a tabelaintem a com au sem uma linh a de cabecalho.

va e uma area de tr abalh o co m a mesma estrutura de uma linha no


corpo de i t .

n e uma cons tante, variivel au literal numerico.

c1 e c2 sao compenente s de i t.

exp uma expressaa logica envelveodo componentes de it.

conteudo de

Se from vo me forespecificada, a linha sera sobrescritacom 0 conteedo

d. linha de cabecalho.

afetari imediaumente a tabela interna mas, em vez disso, elase tomara efetiva
oa pr6xima passagem do loop. Ao inseri r urna linha tkpois da linha atual, a
tabel a sed novamen te indexada em endloop, sy-tebf x sera incr emen tada e a
pr6xima passagem do loop pr ocessara a linha indicada po r sy- t abix. Por
exemplo, suponha que voce esra. na terceira passagem do loop e ins ere urn
regiscro antes da linha 4. Quando endl oop ~ executada, a nova linha se toma a
Iinha 4, a l.inha 4 anti ga se toma a linh a 5 e assim por dian te. Sy-te bfx e
incrementada em 1 ponto e a pr6xima passagem do loop processa 0 regisrro
rece ntemente inserido.
Set den tr o de urn lo op , voce inserir uma linha antes cia linha atual, a tabela
sed novamente reinde xada em endlo op. D essa vee, entr etanto, sy-tebtx e
incrementada par 1 mais a ntimerc de linbas.inseridas antes cia linha atu aL Da
pr6 xima vez que ocorrer 0 loop, a linha depois da linha atual sera processada.
Suponha, por exemplo , que voce insira na terceira pas sagem do loop uma linha
an tes ds linha 3. Em endl oop, a nova linh a se torna a linha 3, a linha 3 se torna
a linha .. e assim p ar diante . A linh a que voce acaba de processar agora ted um
Indice de 4. sy- t abi x eincremea t ada per 2,0 que cia S. A linha 4 fo i reindexada
para 5, sen do assim sera processada na pr6xima passagem do loop.

00 .

Se i ndex n fo r especificada, n identificari a n6 mero cia linha que foi


scbrescrita,
modify i t pede ser especificada dentro ou fora de 1cop at it. Se
especificada fora, i ndex n devers ser especificado. Quando especifl .ada dentro, ind ex n sera,op cional. Se nao fa r especificada, a 1inha atual
sed modificada.
transport i n9 especifica quais compenentes devem ser sobrescritos. Sem
ela, todos eles sersc sobrescritos . Com ela, sornente os compcnentes especificade s serac sobrescri tcs. 0 restante p ermanecerf inalterado.
Especificar uma condicacwhere depois de transport l ng fara com que as
componentes especificadas sejam sobrescrieos em todas as linhas que sarisfazem a clausula where. 0 lade esquerdo de ada parte de exp deve especificar
urn componente de it . 0 mesmc componente pode ser espe cifi cado depois de
transporting e em exp o
VocE. nio podera utilizar modify it com where:

Dentro de lo op at i t

Com a adi~ao in dex


A Listagem 12.5 m ostra urn pr ograma de exemplo que m odifica
teadc de uma rabela interna.

EHTRAOA~

coo-

Listagem 12.5 Utilize modify pa ra sob rescrever 0 conte udo existente de


uma ou mais lin has de uma tabela inte rne

1 report ztx120 S.
Z data: begi n of it occurs 5,
fl 1i ke sy-tndex,
3
f2 ,
4
end of it.
5

alpha (5) val ue ' -'BeDE' .


7
8 do 5 time s varyi ng it-f2 f rom al ptla+O next alpha+l.
it-fl .. sy-index.
9
append 1t.
10
enddo.
11

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.

A linha 30 mo difica 0 coneea do do cornp onente da linha de cabecalho


. f2, at ribuindo a ele urn.valo r de 'XI.

2'

A linha 31 modifica todas as linhas n o corpo onde fl njo eigual a 10.


Somente 0 valo r de f2 e copiado da linha de cabecalbc e scbrescreve
as valores de f2 no corpo. fl permanece inalterado no corpo e na linha
de cabecalbo.

25 ski p.
26 l oop at i t .
27
write: I it-fl . H-fl.
28

endloop .

29
30 1t -fZ 'X'.
31 modify it t r ansporti ng f2 where fl <> 10.
32
33 skip .
34 l oop at It .
3S
write: I it-fl . it -f 2.
36

As linhas de 20 a 23 executam urn loop por todas as linhas de it,


colocandc cada linha, uma de cada vez, na linha de cabecalho . A linha
21 mu ltiplica po r 2 0 conteudo do cemponente da linha de cabecalho
flo A linha 22 copia 0 conteudc da linha de cabecalhc de volta para a
linha atual no corpo de it, sobrescrevend o-o.

16 l oop at 1t.

write: I n - n, it-f2.

.. .. ..

O~ 12. lABIUS IH1WIAS AVAHIAOAS.PAmI

APREN oA EM 21 nus ABA P/4

17

Excluindo

conteudo do tobelo interno

Para excluir 0 conteddc de uma tab ela in tem a, voce pcderd ut ilizar as seguintes
insrrugoes:

endloop .

free

refre sh

o c6digo na Listagem 12.5 produz esta saida:


Sllol ~

clear

1 A

delete

2 B

3 C
5 2
5 ,
2 A
, B

Utiliza ndo free para excluir 0 conte udo da tabela


inte rna
Utilize a instru~ao free para excluir tcdas as linhas de uma eabela interna e
liberar a mem6ria associada.

6 C
10 Z
10 E

2 X
,

Sintoxe do

instru~ao

free

A seguir, vejs a sintaxe da instruc;ao free.


f ree it.

6 X
10 Z

onde:

10 ,

tt

eu ma eabela intema com au sem urna linha de cabecalho.

As linhas de 8 a 11 adicionam cinco linhas em it. C ada linha contem

urn mimero e Ietra do alfabero sequenciais.


A linha 13 modifica 0 con teddo de it-f2, dando a ele urn valor de IZ' .
t t-f l DaD foi modificado, enno ainda conterd 0 ultimo valor adicionado na tabela: 5.

A linha 14 sobrescrevea linha 4 corn 0 comeodc da linha de cabecalho,


alterandc f 1 para 5 e f2 para 2.

Os seguintes pont os se aplicam :


Todas as linhas sao exclutdas e toda a mem6ria urilizada pelo corpo. da
tabela interne e liberada.
A linha de cabecalho, se exisrir, permanecerd inalterada.

. -.

403

~ . I.-I

404

I I"'I I I -I I -I I I I I -.

. -.

- - -- .. - -- - -

DIA lH'BELAS INIDNAS'V"(ADAS. PARTE 1

'PIEND' 1M 21 DIAS"",.

Emboro c memoria para as tc belcs internes seja cctcrncflccmente


libe rcdo durante fino l jzo~oo de seu progromo, se voce mesmo a llbercr

sere normo lmenfe mois eficiente. A raze o disso recc i sa bre

que quando a se ide for exibido para

fato de

usu6rio, tecnicomente seu

prograrno oinde noo tero sido finolizodo . Todos as recursos permcneee eee o locodos e 0 progro mo nOo termincrO ate a usu6rio pressionor
a bettie Bock. lsso, finalme nte, terminc se u progro mo e Hbe rc tcd c 0
ccn tevdc do tcbelc infe rno. Voce poder6 ltbe rcr a s tobelos Internes

antedpodomente colocondo as instruc;6es free

00

final de seu pro-

Utilizando refresh pa ra excluir 0 conte udo do tabela


interno
U tilize a instn1~ao refresh para excluir toda.s linhas de uma tabela interna, mas

deixe a memoria alocada,

Sintoxe do

instru~6 0

refresh

A seguir, veja a sintaxe da inStru~o refres h.

grama. contecdo do tobelc interne ser6 liberodo ante s de 0 usuc ric


ver a listc e nco depois d isso .

r ef resh

tt ,

onde:

Utilize free quando terminar de urilizar urn. tabela interna.


A Listagem 12.6 mos tra como utilizar a instro~ao f ree.

ENruOA~

T odas as linhas sao excluidas. T oda a m em o ria utilizada pelc corp o cia
tab ela interna permanece alocada.

umc tobela interne e hbercr a mem6rio ossociado

A linha de cabecalho, se exiscir, permaaecer f inal terada,


U tili ze refresh quando quiser excluir to das as linhas, mas quiser pr eencher a eabela intema novamente. Por exemplo, se esti ver produzindo urn
relat6rio de vendaspor departamento, voce podera preencher a tabela in tem a
com todas as vendas de urn departamento, processar os dados e, em segu ida,
escreve-los. E nrao, depois de r efre sh, voce poderf preench er a tab ela interna
co m os dados do proximo depart amento, escreve-lcs e assim po r dian te.
Se voce quiser pr eencher uma tabela imediatamente depois de [impa-la,
refresh sera mais eficiente do que free ja que impede alocacoes des neces sarias

I'
15 fr ee 1t .
16 1f H[ ] is initial.
17
write: / ' no rows exist in it after free '.
18
end1f .

o co digc na Lisragem 12.6 produz esta saIda:


IAIOA ~

euma tabela intema co m ou sem urna linha de cabecalho.

05 seguintes pontos se aplicam:

Listag em 12.6 Utilize a instru.;co free pore excluir tcd cs as linhos de

I report ztxl206.
2 data: begin of it occurs 3.
3
11 11ke sy- t ndex,
end of i t.
5
s do 3 ttees ,
it -f1 .. sy- t ndex,
7
Append ft .
8
enddo.
9
1D
11 l oop at it.
12
wri t e it-flo
13
endloop .

it

no rows exist in 1t after f ree

ANALISE ~ A linho 15 exclui tod as as linhas do tob elo lntem c e hbere 0 mem 6rio ossociodo .

de mem6ria.
A Listagem 12.7 mos tra co mo utilizar a insrrucao re f resh .

ENllAOA~

Listagem 12.7 Util ize a instrur;o o refresh perc excluir tod cs as linhc s de
um a tobe lc interne

1 r@port ztx 1207.


2 dat a: begin of it occurs 3.
3
11 11k@sy-t ndex,
4
end of it.
S
11k!! sy-i nd@x.

s
7 do 3 t tees .
t sy-t neex.
8
do 3 times.
9
i t -fl i * sy- tndex.
lD
append it.
11
enddo.
12

40S

II"

406

I -.""" .....-......--. __ ... - ... __ ...

-_ ...
D~ IU A8El.\S INTEiHASAVIJl(ADAl, PAmI I

APiE .DA EM21 DIAS AIAPH

16

write: I " .
l oop at it.
write it-fl.
endJoop.

17

ref resh it.

18

enddo.

13

14
15

Sintaxe da
interna

on de:

o c6digo na Listagem 12.7 pr oduz esta saida:

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.

Se i t tiver uma linh a de cabecalho, c1ear i t [ ] excluiratodas as linhas.


c1ear it limpara a Iiaha de cabecalhc.
Se it nao river um a linha de cabecalho, as duas fortnas excluirac todas
as linh as e deixario a m em6ria alocada.

loop interne aninhado.

A linha 8 armazena 0 valor atual de sy-t ndex do loop enema.


A linha 9 cornelia a loop interne.

\,

Na linha 10, 0 mimero cia passagem do loop interne


pelc mimero da passagem do lo op externo.

e mulciplicado

A linha 11 adiciona cada linha na tah ela intema.

A linha 13 cornelia uma n ova linha de safda.


As linhas de 14 a 16 escrevem

it

Os segu intes pontos se aplicam :

A linh.a 7 ccmeca urn loop que e executado ues vezes. Ela con tern urn

cl ear quando utilizada com uma tabela

III A seguir, veja a sintaxe da instru~ao clear quando ut ilizada co m u ma tabela


intema.

19
20 free it .

SAloA ~

i n stru ~ao

o efeito de cl ear em uma tabela ia terna esta. resumido na Tab ela 12.3. 0
efeito de cl ear varia,dependendo se a tabelainterna tern uma linha de cabecalho
ou nao.
Tabela 12.3 Efeito de clea r em umo to belo intemo

Instru4jGo

con teud o da tabela in terna.

A linha 17 exclui todas as linhas cia tabela inrema, mas DaD Iibera a
memoria. Refresh sera utilizada aqui em vez de f ree ja que 0 loop

cle ar i t
cl ear it(

-Se it liver uma


linha de cabe~alho

Se it nao IlYer uma

. limpor6 a linhe de cc becclhc

Exduir6 todos as lin has

Excluir6 todes as linhos

IInha de

cab~l h o

Excluir6 toda s as tinhas

ext~rno se repete e imediatamente preenche de novo a tabela interna.

A linha20 excluitodas aslinhas e libera a memoria para a tabela intema


antes que a lista seja exibida. Isso faz com qu e 0 programa se tome
mais eficienee.

programa na Listagem 12.8 ilustra a usa cia instru ci o clear com uma
tabela interua.
Listagem 12.8 A lnstrucdc clear pode ser utilizada pa re limpar a linha
de cobecolho au excluir 0 conteudc de umo tobe lo intemo

Utilizando cl ear com umg tgbelg interng


Voce pode utilizar a instru~ao c1 ear para execu tar um a das seguin tes a~6es :
Excluir todas as linhas de um a tabela interna e deixar a memoria
alocada .

,.

Limpar a linha de cabecalho (definir seus compone n tes para espacos


em branco e zeros) .

1 report ztxl208.

2 data: begi n of it occur s 3,


3
4

5
6 it-fl-'X' .
7 append: it . i t .
8
-1t teen
9 clear it .
de cabelia1ho
10 wr1t e: 'fl-' . it-fl .
11

"

fl ,
end of i t .

Ina

l i nha de cabet;aloo . 1ss i .. sendo l1mpar.!o a li nha

407

";.J

408

DlA12,TABEUS INltRNASAVAN~DAS, PART! 1

409

AP REN DA EM 21 DIASABAP/4

onde:

12 write : I I I .
13 l oop at i t.
14
write ie-n .
15
endloop.
16

n, fn e tn sao constantes, varidveis au lite rais n umericc s.

exp e uma expressac 16gica envolvenclo a s componente s de

17 clear tel ] .
18 loop at i t .

Os seguin tes pontos se aplicam:

write it-fl.
20
endloop.
21 writ!!: I ' sy- subrc- ' , sy-subrc.

Todas as adi~6es depois de t), (bl e (c) sio opcionais .

Somente lim a adi(jao de (a), (b) ou (e) po ders ser especificada.

del ete it, sem quai squer adi(joes, podera sc mea eeser utilizada dentro
de l oop at it. Nesse case, exclui a linh a atual.

Se in dex n for especificada, a a-esima linha de it seri exclufde.

o c6d.igo na List agem 12.8 produz eSt41 saIda:

,,

flo

sy~s~bn:.

IHlJ.ISE ~

it .

"serethente a: refres h it.

19

linha 6 coloca X n a linha de cabecalhc de i t.


I

A linha 7 acres centa du as linhas em 1tj -ambas tern I XI em f l .

Se from i for especificada , as linhas serao excluidas comecandc com a


i-esima linha.
Se to j for especificada, as linhas serac exclufdas ate a j-esirna liah a,
inclusive ela,

A linha 9 limpa a linha de csbecalb c de it.

Se from Dao for especificado com t o, from 1 sera assumido.

A linha 10 escreve espacos em branco, mostrando que a linha de


cabecalho de i t esd . limpa.

Se t o

As linhas de 13 a 15 produz em a safda, a fun de mostrar que a tabela


inrerna ainda contem duas linh as.

A expressao exp deve tel' urn componente de i t DO lade esquerdo de


cada comparacao. POI'exernplo, se i t river as componentes f1 ef2, exp

A linha 17limpa a corpo de i t, excluindo efetiva.mente todas as linhas


e deixando a memoria alocada. 0 conteado da linha de cabecalho

pennanece inalterado.

DaO

for especificado com from, a ultima 1inha na tabela sera

assumida.

pcdera ser where fl 'A' and f 2

B' .

A Ilstagern 12.9 mcstra urn programa de exemplo que exclui as dados de


uma tabela interne ut ilizando a inst ru (jao delete.

A s linhas de 18 a 20 nao produzem uma saida porque a tabela interna

esd. vazia.
A linha 21 ma st ra 0 c6 digo de ret o rn o depois do loop. Isso novamente
confirma que n enhuma linha existe na tabela int ern a.

Utilizando a instruc;60 delete pa ra excluir a s linhas de


uma tabelc.Internc
_
Utilizando a inStnlr;ao del et e, voce podera excluir uma ou mais linhas de uma
t abela in tern a.

Sinlaxe do lnstrucao del ete


A seguir, veja a sinraxe cia instrucfc del ete.
delete it

(a) [indeK n]

(bi [f"",

'J

[to j ]

(c) [where exp]

1 repor t ztx1209.
2 data: begin of it occurs 12,
fl .
3
end of it ,
4
alp ha(12) val ue ' ABCDEFGHIJ KL' .
5

6
7 do 12 t imes varying it-fl f rom alpha.+O next alp ha+L
append i t.
8
enddc ,
9
lD
11 loop at it .
12
write : I sy-tabix , u -n.
13
endl oop.

14
15 del et e it tn dex 5.

ITT

"'I~'- I
:.

410

.~ .T-TT~I

~ I . . . . . .

T . ~ ... . . .

'!I!

'!I! '!I! ~ ~ ~ ~ ~

D
5 F

6 G
7 H
8 I
9 J

writl!! : I sy-tabix . it-flo


endloop .

2'

27 delete i t where fl between ' B' and ' 0 ' .

ID

28 s kip.
29 lo op at it .
30
write: / sy- ta b1x. i t - fl .

11 L

I A
2 B
3 C

end loop .

32
33 loop at it where fl between 'E' and 'J '.
34
delete it.
35
endloop .

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 7 a 9 preenchem it com 12 linhas contendo as valores de


'A' a I L' .

As linhas de 11 a 13 escrevem
1 A

21 delete i t frtm 6 to B.
22 s ki p.
23 loop at it .

o c6digo na Listagem 12.9 pro duz est a sarda:

1 A
2 B
3 C

enetccp.

51
endloop.
52
53 tr-ee it .

11
12 L

20

31

16 skip .
17 loop at it.
18
write : I sy-t abix . it -fl .

Z4
25

D~lUABElAS IMTERNAS AVAH(ADAS. PAm l r

"m DA EM 21 DI A5 ABAP/,

19

conteedo da tabela interne.

A linha.15 exclui a quiara liah a, removendo 'E' cia tabela. A sexta linh a
se to m a a quinta,"a serima se lorna a sexta e assim por diante.

2 B
3 C
, D

A linha 21 exclui cia sexta linha ate a oitava linha, removendo G, He I

5 E

A linha 27 exclui as linhas que tern as valores fl en tre B e ' 0' )


inclusive. Is50 faz com que a segunda., terceira e quarta linhas sejam

7 G
8 H
s I

10 J

da tabela. A nona linha se coma a sexta e assim po r diante.


I

excluidas.

'!If - ....

411

~ --

---- -.- -412

. ...I ....

"'[NDA EM 21 DIAl ABAP/4

D~ lUABEUS IIffiRNAS AYAll(ADAS, PAmI

A Iinha 33 recupe ra as linhas que tern urn valor fl entre I EI e I J "


inclusive. As linha s 2 e 3 atend em as crit erio s. A ins trucio del et e na
linha 34 DaD tern quaisquer adiljoes, assim sendo exc lui a linha arual
em cads passagem do loop. Is50 faz com que a segunda e terceira linhas

sejam exclufdas.
I

e executada ja que sy-subre e zero.

Ela exclui a linha 2,

removendo I K' da t abela interna.

Semelhante is insercc es, as exclusoes dent ro de loop at it Ilia afetarao


imediatamence a tabela inte rna mas, em vez disso, se rcmarao efetivas na
p r6 xima passagem do loop. Ao excluir uma linh a depois da lin ha atual, a tabe la
sera novam ente indexada em endl cop, sy-t abix sera incrementada e a pr6xima
pass agem do loop pro cessard a linha indicada por sy-tabix. Por exemplo,
suponha qu e vo ce est i na te rceira passagem d~ loop e exclui a linha 4. Quando
endl oop fo r executada, a linha sera exclufda, a linha 5 se tornara a lin ha 4 e assim
par diante. sy- t abix sen increm en tad a em 1 e a pr6xima passagem do loop
processara 0 pr6xim o registro.
.:Se, demro de urn loo p, vo ce excluir uma linhaa nU s da linha atual, a tabela
sed no vamente reindexada em endloop. D essa vez, entretan to, sy- t abix e
increm ent ada em 1 ponte, menos a ml mero de linhas exclufdas antes da linha
atual. D a pr6x.ima vez que ocorrer a loop, a linha depois da linha atual sera
pro cessada. Sup onha, par exemp lo, que voceexclua na terceira passagem do
loop a linha 3. Em endloop, a linha 4 se tcm a a linha 3 e assim por diant e.
sy- tebt x ~ incre mentada em 0 p ontes , resultando em 3. A linha 4 foi rein dexada
para 3, sen do assim sed pr ocessada na pr6xima passageII!' do loop.

Criando listas dos 10 melhores utilizando


append sorted by
Imagine que lh e seja solicit ada a criayao de urn rel.at6rio dos 10 melhores
rep resentantes de venda de su a empresa. Panindo do p res supostO de que voce
tenha uma mane ira de obter 0 total de vendas de cada representante, sera
possivel executar uma das seguintes a~6es :
Acresceote todos as rep res eotantes e 0 tOtal de suas vendas em uma
tabela intern a.
C lassifique -os em ordem descendente par vendas.
Escreva os 10 m elhores.

Essa parece um a maneira 16 gica de prcceder. Enrretanto, a utilizac;ao da


instru~ao append sorted by com fr equ encia pcdera produzir 0 mesm o res ul-

tado e ser duas vezes mais eficiente.

Sintoxe do instrur,;oo append sorted by

A linha -tz localiza a linha com urn valor f1 de 'K Emb ora i t contenh a
apenas tres linha s, bi nary search foi incluida para um a me lhor exem plifica~o. A linha 2 e correspondente, entaD sy-subre e configurada
a zero e sy-tebt x econfigurada a 2.

A linha 45

A seguir, veja a sintaxe da in srru cio append sort ed by.

append [11'0 to) it sorte d by c.

onde:

wa ~ uma area de trabalho com a mesma estrutu ra de uma Iinha. cia tabela

t teo nome de uma tabel a interna.

interna.
c

e urn componente de f t .

Os seguintes pontos se aplicam:

Se "fa to nao fo r espec ificado, a linha. a ser acrescentada sera obtida a


partir da linh a de cabecalho.

Se wa to fo r especificado, a Iinha a ser acre scentada sera obtida a partir


da area de tra balho wa
So me nte urn componente c pede ser especificado.
, A instru~o append sorted by obtem uma linha da area de trabalho e a
insere na tabela interna no local em que pertence na o rdem de clessificacao. Ela
tern duas propriedades in comuns :

0 mi m ero de linbas qu e pede ser acrescentado e limit ado pelo valor


na ckusula occurs. Por exemplo, se a clausula occurs for 10, urn
maximo de 10 linhas poderao ser acrescen u das a tabela interna. Essa
~ a unica situac;ao ern que occurs lim it a 0 Dumero de linhas que pode
ser adi ciooado em um a tabela intern a.

Someote c1assifica em ordem decrescente.

o efeito rea1euma -listadosn primeiros" onden e o nu.meronacliusulaoccurs.


Com cada append, 0 siste ma pesq uisa 0 conteudo da tabela existente para
determinar onde se en ema a nova linha. A ordem de classificaiao edescend en te
po r c. Se existirem menos linhas na tabela interna do que a quantidade especificada p orn na c1ausula occurs, a linha ted a o rdem de classifica~ao. Se existirem
n linhas na tabe1a intema, a linha sera ins erida pela ordem de classifica~ao e a
ultima linha sen descanada. Se 0 valor em c ja existir na tabela interna, a nova
linha sera sempre acrescentada depois das linhas existen tes que tern 0 me~mo
valor. P ortanto, se occurs for 3 e a linha 3 cootiver I X I em c, urna nova linha
com I XI em c nao sera acrescent ada.

413

-414

APR!.'A EM II DIAl ABAP/l

DlllUABB..\I INTElHAl AVAlI(AOAl, PmEl

A Listagem 12.10 mostra urn prognma de exemplo que em. uma lista dos
tres melhores representantes de veada.

mRlllA~

As linhas 7 e 8 atribuem valores l. linha de csbecalho.


A linha 9 pesquis a i t quanta ao local correto pan inserir a nova linha.
A tabela interna esti vazia, entao a linha e simplesmente acrescentada
(veja a Figura 12.1).

1 report ztxl2 10.

2 data :

5
6

7
8
9
10
11
12
13

of it occurs 3,
sales type p decimals 2.
name(lO}
end of it .

b~ 1n

it-sal es

100.

i t-name

' Jack' .

Figu rg 12 1

append it sorted by soles

Quando nenhumo
I;nho exis1e no lobe/a

sales

nome

primeil'D /lnl1o Ii
simple.smf!t11e

ocnsantodo.
it-sales

50.

i t -name

' Jfll'.

linho 1

append it sorted by sales .

"

50 vem depois de 100 quando a orde m de c1assifica~ao e decresceate, entio a Iiaha 13 insere a nova linha depo is cia exiseenee
(veja a Figura 12.2).

i t - sal es
75.
1t -namt
' George' .
append it sorted by sales.

F igura 12 2
A segundolinha e

it-sales

. ZOO .

inserido no s~iifncjo
comto de
do u mca o, de modo
que elo venne depois

i t-name

' Gina' ,

do primeiro linno.

Iinho 1

append it sor ted by sal es.

26
27 it-sales
100.
28 i t - naJnl!!
-' Jeff ' .
29 append 1t sorted by sa les .

30
31 loop at f t.
32
write: lit-sales , it-name.
33
endloop.

o c6digo na Listagem 12.10 produz esta saida:


SAiDA~

linho de ecbecclhc

Intemo, enll50 0

append it so rted by sales .

15 tt-setes
150.
16 1t-nillll!:
'Jane'.
17 append it s orted by sales .
18

19
20
21
22
23
24
25

As Iinhas de 2 a 5 definem uma tabeh. intema com um valor occurs de

3. Se essa tabela interna for preenchida ucilizando append sorted by,


o mimero mhimo de linhas nessa tahela intema sera Iimitado a tres.

Listagem 12.10 Utilizando append sorted by para localizer as tres


melhores representcnt es de vendo

415

200.00 Gina
150. 00 Jane
100.00 J ack

150 vem antes de 100, entao a linha 15 inse re a nova linha ant es da
primeira linh.a. A tabela int ema agora contem a mimerc maximo de
linhas : treS linhas (veja a Figura 12.3).
append it sorted bysoles

Fig ura 12 3
Dessa vw. 0

linha de ccbecelhe

seqiifncio de

dossiliClJ'o dita que

tt

o novcr linho dfNe ser


inserido ontes do
primeiro.

150

Jcne

corpo

linho 1

150

Jone

100 - Jode

50

Jim

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

ma.--_416

_ -- -

- -

D~ ILTABruSIII1UIlASAV"~Al, PARTE 1

"RENDA EM21 DIAS . " P/4

Nao misturar append sorted by com quaisquer outras ins truc;6es que
adicionam dados em uma ubela interna (como insert ou append) . Se voce
preencher ; t com append sorted by, esta deved sa a Unica. io.stru~o a .ser
utilizada, Misturar essas instruC;6es resultard em comportamento imp revisfvel.

75 vern depois de 100, en tao a linha 21 insere a nova linha depois da


segunda Iinha, fazendo assim com que a nova linha se torne a
terceira linha. A t erceira linha deveria se tamar a qUafta, mas it
somente pa de armazenar tres linhas, enesc a quart. sera descartad..a
(veja a Figura 12.4).
200 vern antes de 150, entio a linha 25 a insere antes da primeira linha.
o restante das lin.has edisposto abaixo e a Ultima linha e descartada
(veja a Figura 12.5).
Fi gu r a

append sorted by sera mcls ehctente quand o voce estiver ccrescentondo uma linhc per ....ez em umo tabe lo intemo. Se voce j6 fiver os
dodos em uma tabela de banco de dodos e simplesmente quiser
localizer as 10 vclcres superiores sere mais efiden te inserir as linhos
utilizondo uma 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 .)

append it sorted by sales

12 4

Esso lin"o se eeeeee

dapoi5 do segundo.
ent60 ala, inserida
16. Atobe/a inferno
pode onnazenor um
m6Kimode 1r& linhos.
ent60 0 quam linno Ii
desccrtodo.

linno de cebec;olho

it

I I
75

George

Jinho 1 150

Jane

2 100

Jaa

50

Dena vez, 0

nOva

nOoocrescentado
\ porql.Je~63
I e it ja contem

I 3 linhas

Jjm

--<F la" rn 1 2

..,

append it sorted bysoles

Utilizando a instru~o co11 ect, sera pcssfvel criar totais den tro de uma tabela
interns amedida que voce a preenche.

Sintoxe da instru~aQ coll ect


en A seguir, veja a sintaxe da instnlc;ao co11 ect.

~
m

exis1enfes 560

desccrlodo.

collect

I;nho dtNev;r
prim eiro. As };nhos
disposlas o~ e a
ultimo Iinha Ii

Preenchendo uma ta bela interna utilizando

linna t 200

Gino

2 150

Jane

3 100

Joclt

1..5 t: :!iri J

col lect [wa '1nt o] it.

onde:

i t ~ uma tabel .. intema.

va eurna area de trab~o que tern a mesma estrutura de it.

Os seguintes pontos se aplicam:

100 ve:m depois de 150, mas ja existe 100la. A linha29. portaato, tenta
icserir a nova Iiaha depois do valor existente de 100. 1550 a tornaria a
linha 4, ent.ao a linha nio einseridaabsoiutamenre (veja a Figura 12.6).

Se 11'0 ; nto for especificado, a linha a ser coletada sed obtida da area

Fl g u r n 12 6

ap pend it sorted bysales.

&so novo finho


seguim todos as linhos
eJristente5 que tern a

linoo de cab8l;0lho

Se 'fiO into nao for especificadc, a tabela inrema deveri ter uma linba
de cabecalho. A linha a ser coletada sed abtida da linha de cabec;alho
para. it.

me.smovalor. IS50 0

Iomorioa linho 4,
en160e/o noo e
Inserido.

il~

...

,
\

co<po

Iinho 1 200

Gino

2 150
3 100

Jane
Ja, k

I t'IIio ocrescenlodo

-<-

,I

de trabaIho expljcica we. Nease case, a Iinha de csbecalhc da tabela .


interna sed ignorada, se existir.

Quando collect for executada, 0 sistema formad. uma chave a partir dos
campos de chave pad rgo na irea de trabalho. Os camp os de chave padcio sao
as campos de can,ctere (tipos c, n, d. t ex) . PortantO, a chave sed composta
des valores ,de codos as campos do tipo c, n, dJ t e x. Nio imp oru se estio urn .
ao lado do outro, au se estaa separados urn do outro por outros campos.

417

sp-5 - 5
I

418 I APR'NDA ' M11

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


500.
' Jim '.

' 19980101' .
600.
'Ja ne' .

'19980102' .
.7110.

par te da chave padrlo


-nao ! parte da cheve pa dr~ o
pilrt@ da ehave pad r~ o
-nao ! parte dl chave padra o

D ~ IUAB' lAS IffTERNAIAVAJlIADAS,PARTE I

41 tt-neee
.2 eel teet it .

so

'Jack'.

" loop at i t .
. 45
46

wr ite: I it-date,
endloop.

1t ~tot_s a l e s ,

tr-neee, tt- num_sales.

codigo n a Listag em 12.11 produ z est. saida:

19980101
19980101
19980101
19980102

800. 00 Jack
700.00 J im
600 . 00 .Jene
700.00 J ack

3
2
1
1

As I.ioha.s de 2 a.7 definem urna ta bela interna com quatro componenres. Dois sao do ripe caractere (dat e e name) e dois sao do tipo numeri co
(t ot_sal es e riurn_s ales ). A chave padrao ~J portanto, comp ost a dos
comp onec tes date e name.

As Iinhas de 9 a 11 atribuem valores aos componenees de linha de


cabecalhc dat e, tot_sal es e name. nurn_sal es ainda tern urn valo r padrio
de I, arrib utdc na Iinha 6.

A linha 12 pesquisa 0 corpo de it q u anta a urna linha que tenha a s


mesmos valores em date e name (campos de chave padrio) daqueles na
linha de cabec;alho. A tabela interns esta vazia, entia nao ha correspondsncia de linhas. A linha de cabecalho e, portaotO, acrescentada a
"bela intern. (veja a Figu ra 12.7) .
f ig " r " J 2 7
$@oChov.podr6o
tl60 for/ocolizodono
corpo. 0 /inno sero
oc:rescentodo. A chave
podmo ecompostc d@
Iodos os compos

collect it.
~n ho de eebe celhe

nOo-numericos, @nt6o
n@ss!& diogroma, elo

comi!SpOlldea
c:ombinoo de date
(prim@lrc compoJ @
name (ten:eiro compo).

A linha 17 se comporta como a linha 12. A eabela intema te rn urna

linha, mas as valores nos campos date e name nao sao correspoodentes,
entio a lioha de cabecalhc eacres centa da arabela interna (veja a Figura
12.8).

419

._~==----=-=-===-==-420 [ APRENDA EM 21

~=-.---~------

Ii

DIAS ARAP/.

a num_sales (veja a Figura 12.11).


Na linha 37. os valores em dat e e name (campos de chave pamo) cia
linha de cabecalho nao correspondem a quaisquer linhas em it) en rso
um~ n ova linha eacrescentada ao final ciatabela (veja a Figura 12.12).

entOo em /jnho
tcmbem e

ocrescentcc/o.

W'M~ 'J~_ Wg\i;~


[!8~~I~

.'

200'

I) ;

F igura

~:<;"'~~ ;,::)~. "

A linha 22 pesquisa a tabela intem a quanta a uma linha qu e tenha


' 19980101 ' no campo date e ' J ack ' no campo name. A linha 1 e a
correspondente, eneso os campos nume ricos sao junt amente adicionados. 0 campo tot_sal es d.a linhade cabecalho contem 200. Esse
'valor eadicionado no campo t ot_sales na linha 1, dando urn total de
300. 0 valor no campo num_sa l es na linha de cab ecalhc e tambem
adicionadc no campo num_sales na linha 1. ciando um valor de 2. A
linha 1 e atualizada com esses valores. 0 conreudo da linha de ca-

becalhc permaneceinalterado (ve]a Figura 12.9).

correspondenles do
~rimejro

linho de cobei71lho

Iinh a.

odicionodos nos

compos
correspondentes do

primeiro Jinho.

coiled it.

linno de cabeljOlho

compos'
corresponc/entes do
segundo linno.

Flgu rn 12 1 2

A cnave podroo n60


CCHTesponde com
nenhumo "nho cle S5CI
ent60 urno novo
linna e ocrescentado.

coiled it.

linha de c:abel;olho

~ ~~mm

l?!.?J"~ ' 2

~ ; 2!lO~ ~'&t

l!SIl

~ ~~
A linha 42 tambem faz com que uma nova linha seja acresce.otada a
tabela internal jii que os valores em date e nameDaO correspondem com
nenhuma linha de it (veja a Figura 12.13).

.y

aos campos numericcs da link localizada (veja a FigUJ:' 12.10).


Novomente, a chcve
podroo corresponc/e
com a primeirolinho
do lobe/a. Os compos
numericC5 no area de
troba/ho sec

Dessc vet, a chove


pac/reoCOfTesponde
com a segundo linho
do tobe/o. Os campos
numencos no area de
trobolho s60
oc/idonadosnos .

A linha 27 procura par uma linha com uma data 119980101 1 e urn nome
' Jack 1 A Iinha 1 e a correspond ente, entao 0 conteudc dos campos
numericos (tot_sales e num_sales) nalinha d e cabecalho sao adicionados

Fl g u r n 12 10

11

~ S~:.J

\J9,9JtljJ }oo'

compos

12

vez.

coiled it.

F ig urn 12 0

A linha 32 e correspon dida na linha 2 e adiciona 1500 I a t ot _sa1es e 1

Na'lomente, 0 chave
podrtion oo e
focolizoc/o no tabelo,

Dessc vez, 0 chcve


pac/r6o corresponde
com 0 primeiro Iinho
c/o lobe/a. Os compos
numericos no 6reo de
trobo/ho s60
odicionodos nos

- - - ~ ~- - -

DIA lHABELlSIKTlRNAS AYAH\ADAS, PARTE 1

collect it.

F igurn 12 8

- - i'

F lg urn 12

,~

collect it.

/J.5 chaves pac/roo


nevemenre nee

corresponc/emcom
nennumolinno, enroo
oulm Iinho Ii

eellect it.

ccescencee.

,.

ccrpc

~@t<@

e@

, 8 00 ~

~~

'200"

~
~

=i

,__4~

~~'i~~Ff
.'

~\~;::~ 't~{

~ 'i<i!t~

~>~,'~
~ ,i,~.1~

421

E c c ... c .. . _
422 I

APif HDAEM 21 DIAl ABA1/4

Se voce utilizer col lect pa re od icionc r linhos a urnc to bela interna , e


tod e s as linhos deveriio set odidonodos com a usa de CD11ect. Voce

noo deve combiner coll ect com append au com quolquer outre

"i'

- ....

" "

II

D~ IHABEUS IHIDHAS AVAII(ADAS, PARTE 1 I

U tilize append sorted by para criar Usus dos 10 melhores em vez de


acrescentar linha par linha e, em seguida, classificar.

Utilize coll ect pan samar contagens e totais dentro de uma tabela
intema amedida queestiver sendo preenchida. Essa inStnleraOtambem
pode ser utilizada para garantir a exclusividade de todas as entradas.

instrvC;60 que od icion o dodos em umc tabelo intem o. Os resultados


sere c lmprevisfvels. A cnlcc instrur;oo que voce pede utilizer para
moclificor a cc ntec dc de urno tobelo lntemc preenc:hida otraves de

collect

e modify

. . t ransportin g fl f 2 . " onde 11 e f2 sdc

compo s rurrnericcs so mente (compos de chov e noo podre o).

Resumo
0 operador de corpo de eabela proporciona UIIU maneira eficienre de
eesnr quanto a. existencia de dados, comparar duas tab elas intemas
pan igualdade au duplicar urna tabela int erna.

A instrU<;ao descri be t abl e coloca 0 namerc de linhas da tabela


inte rna em sy-tfi 11, a largura de uma linha em byt es em sy-tl eng e
o tamanho cia clausula occurs em sy- t occu.

Para cop iar uma pane de uma tabela interna de uma pan. outra, utilize
append 1i nes of au i nsert 1i nes of .

editor-cal l exibe 0 conteudc de uma tabela int erna em urn editor.


Permite ao usuariomodificar as dados e etambemuma uti! ferramenta

- =- - ---- -'-

IFa~a

Utilize a instn.u;60 free 00 finol de seu


prog romo porn todas as tob elas
intemos. Essa instru~o ir6 llbemr
explidtomente 0 mem6ria q ue noo sere
mois vtilizado no mo menta em que 0
usuerio estiver visualizondo a sardo.
Utilize 0 operador de corpo de tabelo
perc tester 0 existence de dodos.
Utilize a irutru c;c o oppend sorted by
qua ndo crior listos dos 10 melbcres, a
menos que a listo je existo e precise
apenos se r d os5mcqdo .

Nao acrescente ou insiro a s linhas, umo


par vez, se elcs podem ser processodos
como urn grvpo com 0 usc de insert
11nes of ou append 11nes of.

de depura~ o.
in sert adiciona uma linha em qualquer posierao de uma tabela intema.
A pasi~o pode ser especifieacia urilizan do urn Indice ou pode operar
na linha arual dentro de urn loop.
modify modifica a conreado de uma au mais linhas. A linh a pede ser
especificada util..izando urn Iodice ou pode operar na linha atual dentro
de urn loop. Utilizando a chusula where, voce poderf modifica.r 0
ccneeado de muitas linhas .
defet e remove uma ou mais linhas. Quaado utilizada dentro de urn
loop sem adic;oes, exclui a linh a atual. Voce tambem pode especificar
urn deice Iodice, uma faixa de rndices. au uma clausula where.
c1 ear it limpa a linha de cabe~alho de it. Se nao exisUr uma linha de
cabec;alho, todas as linhas serio exclUldas. clear it[ ] sempre exclui
todas as linhas de it. A mem6ria da tabela interna permanece aloca&.
r ef res h sempr e exclui todas as linb.as e dew a mem6ria alocacla. E
eXatamente equivalente a c1 ear 1t [ ] . sera ut ilizada se a tabela interna
tiver que ser novam ente preenchida com dados.
f ree i t exclui fodas as linhas de 1t e libera a me m6ria. Deve ser
colocada no programa imediatamente ap6s 0 termino do processamento da tabeIa interna.

P&R

Nest e capitulo, aprendi vdrias maneiras de realizar tarefas semelhantes. No ABAP/4, parece que sempre existem muita s
maneiras de fazer a m esma coisa, Estou apenas apre nd endo.
C onsigo me lembrar somente cia. existcncia de muitas maneiras
de se executar alga. Por que mio se mostra apenas a melbor
maneira e simplesm ente se esquece 0 resto?

Aprecio sua pre ccu pacdo. Quando possfvel, eu omi to metcdos


re petidos, raramente utilizados, ineficientes e arcaicos. Mas hi
du as raz6es muito boas para incluir as varia;oes que descrevi
aqui : 1) eficiencia e 2) compreensao do c6digo existen te. Devido
aquantidadede dados que reside em urn sistema R/3 J a eficicncia
ea principal preocupa!rao em programas AB AP/ 4. Voce deve se
esfon;a r em utilizar a fo r ma mais eficiente de cadainstru~ao em
urna d eterm in ada situ a!rao. 1S50 pode resultar em melhoras
drasticas de desempenho, nao some nte para seus programasJ
mas tambem para a sistema in teir o. E comum ter que regravar
o codigo depois que 0 mesmo alcan~ar a produ ~o, ji. que tera

423

424

APREN OA1M21 OIAS AUPI4

urn grande impa cro no desempenho do sistema. Quanta ao segundo ponte, as programadores freqa eceeccec ee gastam mais
tempo Iendo a c6dig o existence do que criando urn novo ccdigo,
assim send o vocE: precisa comp reender as vOlriac;oes sum dessas
instrU~5es. Elas sao muito utilizadas no c6digo de SAP. Se voce
nie compreender 0 c6digo de SAP , voce ni e sera capaz de com-

preender como as dados chegam ao seu eseado presence ou como

pode -se chegar a uma det ermina da salda.

Workshop
o Workshop oferece dues maneiras de voce verificar 0

que aprende u neste


capitulo. A se~o Teste:oferece pergunt as para ajudar a solidificar seu entendimente do con teudo abordado e a se~o Exercfcic permite que voce pratique a
qu e aprendeu. Voce pede encontrar as respostas as perguntas do questionirio

13

e ao exercfcios no Apendice B, "Respostas as pergunus e aos exercfcics".

Teste

Tabelas internas avan~adas ,


Parte 2

1. Se eu modificar a valar de sy- t eb'lx deotra de urn loop. isso ira alterar
a linha atual? Par exemplc, as inStrulSoes insert. modify e del ete
operariam na linha da hea de trabalho ou na linha indicada po r
sy-tab1 x?
2. Quando devo utilizar 0 valor de sy- t occu? Por que pr eciso saber a
valor cia c1iusula occurs em tempo de execu~o ?

Exerdcio

Q bjetivos do capitulo
Depais de coucluir este capitu lo, voce sera capaz de:

P reencher uma t ahela intern a a partir de uma tabela de banco de dados


utilizando as estru turas mais eficientes

Leia a coateadc de ztxlfal em uma tabela interna (utilize select i nt o t able).


Em seguida, modifique a coluna 1andl, de modo que a terceira linh a cont enha
US' (utiliz e modify transport ing where). AIem disso, modifique as regices,
alcerandoMA para TX (utilize modi fy transporti ng Where).

Executar 0 processamentc de inte rruPIia.o de controle ern tabelas


intemas utilizando at e on change of

Preen che ndo uma tabela interna a parti r


de uma tabela de banco de dodos

!I
'l

Freqiientemente no ABAP /4 . os dados que voce coloca em um~ tabela intema


pr oveem de uma au mais tabelas de banco de dad os. Esta secao apresenta as
melhores maneiras de se fazer isso,
As rnaneiras de preenchimen to uma tabela intema a partir de urn banco
de clados se dividem em duas categorias:

Selecionar mdltiplas liahas diretamence para


inte rna

corpo de uma tabela

.1IlI. . . . . .lIIII. . . . . . .lIIII. . . . . .lIIII. . . . . . . ._ ...._ ..._ ....

426

. ._ ......

. ._ .....~~_ --..___ __ _

acrescentar (append)

Seleciona ndo multiples Iinhas diretamente para uma


ta be la interna
Para selecicnarmulciplas linhas diretamente pan 0 corpo de uma tabela intema,
utilize aa di!fao in to tab l e da instrucfo sel ect. Eta obtem as linhas selecionadas
e as coloca no co rp o d e urn a tabela intema com urna tini ca operacfc conhecida

como oper:a!fio de array. Nenhuma area de trabalho sera utilizada, nem mesmo
sera necessaria.

NO
YO..... Uma opertJ!;oo de arroy correspo nde a qualquer instruc;60 que executa ume
TrulO "
c cerccsc em multiploslinhas de ume tcbelc interne, em vezde ume unice linhc
de coda VeL h ccerccses de arroy sao sempre mois eficentes que as operc~6es de umo
unica llnhc.

A seguir, veja a sintaxe da adiliaO 1nt o tabl e da instruljao sel ect.

III

fa) select
(b) s~ll!!c't 11

/2 .
from dbtab 1nto [campos eor re spcndent es dl!!] t abI e t t .

on de:

,. dodos diretarnente pa ra umo tabe lo inferno

re port ztx 1301.


ta bl es ztx l fa 1.
3 dab i t l1 ke ztxl fa l occurs 23 ""ith header- li ne .
4
-nllo cod1fica urra enesetect
S se l ect'" f ran zt xl fa l i nt o tab le i t .
6 l oop at it.
""ri t e: / 1t-lifnr , it-nallll!!l.
1
endloop .
a
I
10 select fJ'Olll zt xlfal into tabl e it
11
whl!!re 1i fnr between ' \12 ' and 'V5' .
12 s kip.
13 loop at i t .
14
""Mte: /1t ~1i fnr. it- name1.
15
endloo p.
16 free It .
I

o c6digo na ListagemId.I produz est> safda:


IArDA ~

VI
1000
1010
1020
1030

1050
1060
1070
VIO
V6

dbtab ~ a nome de uma tabela de banco de dados.

va

f1 e fZ sao campo~ dentro de dbt ab.

V12

it

e0 no me de uma t abe la interna.

Os seguinres pontes se aplicam:

V1l
1040

IOSO
1010
2000
VI

V,

it pede tee uma linha de cabecalho.

V3

O ut ras adilj6es, como where e order by, podem vir depois de ft .

VS

endsel ect nac e utiliaada com t nt c t able . select in t o t abl enioinici:z.


urn loop, conseqiien'temente, endsel ect nso e necessaria.

A inStruljaO select into tabl e coloca to das as linbas selecionadas diretamente no coepo de ft. Em prim eiro lugar, a coareado da tabela intema
existence edescanado. A Listagem 13.1 contem urn program a de exemplo que

utiliza sele ct i nt o tab le.

--

OORADA'" Ustagem 13.1 Este progromo l~ as [inhos de uma te bela de banco de

sel ect i nt o t abl e e a mcneiru mois eficlente de se preencher vmc


tobe !o infemo a portir do banco de dodos .

Sintaxe da adic;oo into t able da instruceo se ject

O~ IH ABELlS umR HAS AVAH\AIlA~ PARTE '

APREN OA EM 21 OI AS ABAP/4

Selecicnar uma tini ca linha pan u rna area de trabalho e, em segui da,

V4

V1
V2
V3
V4

VS

Code Now, Specs l at er l t d.


Parts Unlimited
Industrial PUAlPS Inc .
Chl!lllical Nation Lt d.
Chic kenFe~d Ltd.
The Bit Bucket
Me:nory tane Ltd.
Fl ip My Swit ch Inc .
Duncan's Mouse Inc .
Anna Banana Ltd.
Smile When You Say That ltd.
Wei ner Schnl ttsel Inc .
Saur kroute n
Mot herboards Inc.
Sil icon Sandwich Lt d.
Consune Inc.
Moni to r s and Marl!! Ltd .
Quanti ty First Ltd.
Over Pri ced Goods Inc .
Fl uffy Bunnies l t d.
HoD 1ike a Cow Inc .
Wolfman Sport Accessories Inc .
Tile Breakfast Club Inc .
Over Pri ced Goods Inc .
Flu f fy Bunnies l t d.
Moo like a Cow I nc.
Wol fman Sport Acces sories Inc .

427

428

APlEMOA EM21 DIAl AUPH

A linh. 5 recuperA todas AS Iiahas a partir da tabela de banco de dado,


zt xlfal e as coloca diretamente no carpa cia tabela interna it.A linha
de: cabecalh o nao

e utilizada e seu con teedo perman ece inalte rado.

A linh; 10 e semelhante alinha 5, anao ser pelo fate de que elaapenas


recupera a s mimercs dos fabricantes entre V2 e V5. a conreado
existence de i t

e descartad o antes de ser preenchida.

Figu r a

13 1

A tebelade banco
de dodosztx1302
contem Ires compos:
f1,/2. f 3. f1 tem
urn linico byte, f2
fem dois bytes e f3
/em urn byte.

Noo utilize endse lec t com se l ect into tab l e. Um errc de sintaxe
cccrrerc.

sel ect i nto table e clcssificccco


Suponha que seu prograrn a ja fa~ a leirura dos dados pan uma tabela interna.

Se es~es dadosprecisarem ser classificados, utilize ainstruc;ao sort. Nao utilize


order byem sel ect , mesmo se esses campos forem suporcados por urn Iodice.
Em urn sistema independence media, test es de medicao revelaram que a

inStruc;a.o sort e urn pouco rom rapida, M~m o se estivessem em urn mesmo
myel, sort seria ainda 0 raetcdc preferido ji que essa in structo faz urn offload
dos ciclcs a partir do servidor de banco de dados pua 0 servido r de aplicativo.

Figura 13 2

* faz com que todos


cs compos ~;om

~.

Nco utilize order by com select into table. Em vez disso, utilize

sort no tobelc intemo.

Os campos que voce seleciona devem se ajustar na tabela


interna
Imagine este exemplo:
Uma linha

erecup erada de dbt ab.

Urna linha e aloc ada em t e.


A linha de dbt ab 6 mo vida, byte por byte, para a nova lioha em it.

Cada Iinha de dbt ab e movida, byte par byte, pArA urn. novalinha de it,
que e exatameate igual a atribuir uma St ring de campo para OUtra. H oi som ente
uma diferenca entre esse procedimemo e uma atribui~.io de st ring de campo :
dbtab pede ser mais curta (em bytes) que i t, mas cao pede ser mais longa que
it. Se for mais longa, urn dump curto (erro SAPSQL_S ELECT_TAB_TOO_SMALL)
ocorrera. Os tipos de dados e comp riment os de cada campo de envio em dbta b
devem corresponder com 0 campo de recebimento em t t . Quaisquer campos
remanescentes em it sao preenchidos com valores iniciais (espacos em branco
ou zeros). As figuras de 13.1 a 13.4 ilustram esse ponto.

selecionod04 em
m e,", do tobelo de
banco de dodos
ztx1302. f /es se
aiustarn exatcmente
em coda Iinho de

tt.

{6 que a
estruluro de i

13

~WJirt.~?
~~~~?1~{;i~~
'~~.,,,,~: .<. :~..zr-LT2~~-"':~ ~'-"''''

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

coda hnhc de :tx1302

cofTesponde com a
estrvturo do tabala
de banco da dodos.

Fig ura

tables ztxl302.
. dati it l ik e ztx1302 occurs s .

d. i t

12

13

12

f3

torno-se umo linhc no corpo de it

. .-

tab les ztxl302 .


dati it l1te ztxl302 occurs 5.

~~2~~f2~'1iitjn~(t~
"-~'"t-i"'b"1_ ')"!~1U~-~'"'1
',
.~~:r.-~~.;'~ ::..:;. !-'r.-~~.,.r.--=~~~~~

corpo de i t

fl

f2

f3

2 compos de code linnade lotxl302


tcmem-se uma linha no cerpo de 1t

'"

,:>..:oIo~ i ni~~j~ pcIar6o-_-; -

i (~,s ~~~ em ~.~. ~ ~~J

_L.._ _ _
430

_~_

___

__

__

1
2
3
4
5

uma ordem diferente

doqvelo em que

report ztx1302.
tables ztxlfal.
data
i ncl ude structure
datil.:

6
I

oporecem no 1a~1o

intema. tssc fonS


com que as dodos
flquem donificodos

quando colocodos
byt. por by1e em
coda linhode t t.
ft -!I recebe 0
prlmeiro byte de/2

ett-JZrecebeo

ultimo byte de f2 e
um by1e de /I .
\

A T abela 13.1 resume as regras para autilizacjo de selectcom into tabl e.


O s campos selecionados devem ajustar-se na ube1a intema. Esta tabela descreve ~ restrir;oes com as quais voce ir.i se dep arar.

Quais campos
Tcdos csccmpcs no tobela de

banco de dodos

Restrlsoes

/ 1 do tobelo de banco de dodos

pelo menos o mesma

A tobela Interne deve cc rneccr


com urn compo semelhante a
/1 cu ter ope nos tim compo e
ele deve ser semelhon te 0/1.

As lisragens 13.2 e 13.3 ilustram esse conceito.

..

b!gin of i t occurs 2.
ztxlfal.
fnvoice_amt type p,
end of ft .

VII
VI'

DE_ ..97
OE

14

V8

DE

03

Vll DE
V12 DE
VB DE

A tcb elc intem o deve conter

quontidade de campos que 0


tobela de ba nco de dodos e
eles devem ser seme lhontes
005 compos do tobelo de
banco de dodos.

,.

431

o ccdigo n a Lista gem 13.2 produz est. saIda:

sao selecionados?

Sel ect / 1

.-.

~....-..

8 select ... from ztxlfal fnto tab1l!: it where hndl .. ' DE' .
9 l oop at it.
10
write : I it-lifnr, it-landI, it-regfo, ft-1 nvoice_ilJl't.
11
endloop.
12
13 skip.
.
14 select lifnr land; regi0 frtllll zu:1fal into table it wheN! landl .. 'DE'.
15 loop at ft .
16
"rite: I ft-mandt , tt-I tfnr, it-landI, ft -rtg1o.
17
endloop.
18 free ft .

Tabela 13.1 Regros para a utiliza ;60 de select com i nto t able

Sel ect *

...-..

ENTUDA'" Lista g e m 13.2 a que acontecer6 sa as estruturos de tcbelc diferirem


,. quando da vtilizol,;oO do instruc;oo sel ect -tnto

FIgura ]3 4

Instruljao

-.J<_
..

D~ lU AiElAS lllTERNASlYAH(AIlAS, PAm2

A/ REN DA EM 21 DIAl ABAP/4

Novomente. cs dais
primeiros campos
sao sefecionodos do
Icbelo de banco de
dodos ztx1302
mes,. eessc vez, em

.'

INluSE~

o
o

07 .
14
03

A linha 3 defin e i t como se tivesse todos os campos de zt xlfa l da


estrutura do DDIC, mais urn campo adicional.
A Iinha 8 seleciona rodos os-campos de ztxlfal. Eles preenchem 0
ccmecc de cads linha em i t. Invoi ce_amt ! configurada como zero .
A linha 14 selecions Ii fn r land I e regt 0para a primeira. parte de cada
1inha de it. En rretanro, it comega com eandt, nao lifnr, porque
ztxl fa l cia. estrurura DDIC corneca com mandt. A safda mostra que os
primeiros treSbytes de 1ifnr terminarn em 1t-mandt, que t t - 1i fnr e
movido pan a esquerda em tres bytes e tambem conrem 1and l e que
regia estl vazio.

.'

432

APiENDA EM21 DIAS ASA P/4

Ustagem 13.3 Seu proqrcmc produzir6 urn dump curto se voce tentor
co loco r mois campos em umo tabe lo interne dos que j6 existern nessc

lobelo
1 report ztxl303.
2 tables ztxlfal.
3 dat a: begin of it occurs 23,
4
l1tnr l ike zt xlfal l 1f nr .
landl 11ke ztx l fa l - la ndl .
5

o c6digo na Listagem 13.3 produz a saida como

de uma unico atribuio pare 0 linho lntelrc , sendo ossim cd iciona


overhead a instru o sel ect. Voce dever6 utiliro1a somente qua ndo
necess6rio.

estreita dema1s.

O s seguintes pontos se aplicam:


A ordem des cam pos de envio e de recebimento ni o tern impcrdncia,
a qu e pod e ser vista na

Figura n .s,

Os campos de envio que nso t~m urn campo de recebimento correspendente sao descartadcs.

Os camp os de recebimenro que DaO tern um camp o de envio ccrrespendent e permanecem inalterados .

Fig"'" 13 5

Esm dump OJrto


ocone quando vod
t xectlttl' c ztx1303
de relot6rio. use
e eeerece Qvondo
voc~ seleoono mois
compos do que a
quontidode que SI!
oiusto no Iobe-Ia
interno.

A Listagem 13.4 mostra as utiliza~6es eficientes e ineficientes dessa


adi~i.o.

fNTUOA.... Listagem 13:4 Utilizendo e edifice corresponding fi elds para


,. preencher tcbelcs internos e pcrtlr de ban co de dodos

A linha 3 define uma tabela interna que tem dais compcaentes. 0


comprimento total de 1t

corresponding f iel ds executa uma otribu ic;oo por campo, em vea

"esse I Wll cainpo com 10 cerecteres


"esse ~ UII campo COllI 3 cerecteres

6
end of it .
7
8 111. prtixilla ltnha causa. tJlI dtlnp curtc A tahe14 interna
9 select f ro. ztxl fal in t o table it .

IKiuSE ~

e comprimento, voce poderf utilizar a adic;io correspo ndi ng f iel ds. Essa.
a.di~i.o tem 0 mesmo efeitc da instru cao move correspondi ng em um a string de
campo: ela move a s campos cia tabela de banco de dadcs para as campos com
o mesmo nome 'n o corpo da tabe!a intern a.

e 13 bytes.

Alin~a 9 selecion a t odo s as campo s dez t xl fa l em i t. 0 comp rimento


total de todos esses campos tern mais de 13 bytes. Coase quen temente,
urn dump curto o corrers.

Utilizanda a adi~cia corres pondi ng fi el ds


Se os co mpo n ent es da tahela interna nio estiverem na mesma ordem dos
componentes do banco de dados au se eles Daa tiverem a mesmo tipo de dado

1 report ztx1304 .
2 tables ztx lfal.
3 data: begi n of itt occur s 23.
lifnr
l1ke zt xlfaJ-lifnr
. 4
lifnr_l!xt like ztx lfal - l 1fnr.
5
landl
like ztxlfal-landl.
6
end of t t l ,
7
begi n of 1t2 occurs 23.
8
like zu lfa1-11f nr.
l1 f nr
9
la ndl
ltke zUlfaJ- Iandl .
1D
end of tt2 .
11
12
13 + Esta ~ a uti1iz a~lo ett cte nte :
14 sel ect l1fnr landl from ztx lfd
into corresponding fiel ds of t able 1t 1
15
16
where l i f nr between 'VlO' and ' Vl 2'
17 loop at i t1 .
18
write : / ftl-lifnr, itt-Jandt.
19
endl oop.
20
21 + Esta ~ il t nettctente r
Z2 select + f rom zulfat
23
i nto corresponding f i el ds of t able i t2

OIA 13, 'A'EIAS IHlmAS AVAH(AOAS, PAm ,


24
where l ifnr between 'VIO' and ' VIZ' .
25 s kip.
26 loop at f t t ,
27
write : / ttt -j ttm-, itllandl.
28
endloop.

A Listagem 13.5 mostra alguns exeroplos da. utilizacjo de select para


adicionar Iinhas, uma por vez, em um a tabela inter na.

ENTRADA'" Lista g em 13. 5 Utilizando sel ect com a lnstrucdo append para preencher

29

30 ... Em vez disso, escreva :


31 se lec t lifnr la ndl f rom zt xlfal i nto tabl e HZ
3Z
where l i fnr between ' YlO ' and 'V12 ' .
33 s kip .
34 l oop at ttz ,
35
write: / it2-1ifm::, 1t2- 1andl.
36
endl oop.
37 free : ftl , 1t2 .

1 report ztx1305.
2 t ables ztxlfal.
3 dat a it like ztxlfal occ!lrs 2 wit h header line .
4
5 "'Fa"a desta f orma
6 set ect > fr om ztxlfal i nt o it "observe que ' t abl e ' ~ OIlIiti do, dessa forma a
where l andl ' DE'.
"lt nhe vet para a l tnhe de caber;alh o de it
7
append it .
8
endsel ect.
9

o c6digo na Listagem 13.4- ptoduz esta salda:


SAloA ~

ANALISE~

'0

cc

VIa
Vll

. OE

vl 2

DE

VlO

CC

Vll
V12

DE
DE

. VI0
Vll
Vl2

CC
DE

11 loop at it.
12
write: I it-l1fnr , i t -landI , ft -regio .
13
endloop.

14 refr-esh it.

'5
16 "Ou desta f orma
17 select'" from ztxlfal
18
wher e 1andl .. 'DE'
19
append ztx l f al t o it .
20
endsele ct.

DE

A linha 14 faz a leitura dos campos lifnr e l and! a p artir da tabela


zt xl fal para os campos 1i f nr e 1andl da t abela in tema t t i . A tabela
interna tern 0 campo 1i f nr_ext entre 1ifn r el and!, dessa forma vces
nao pcdera utilizar into tabl e. Se i t! exigir que os campos fiquem
nessa ordem, a utiliza~a.o de cor r esponding f ie lds sera apropriada
aqui.

A linha 22 seleciona eodos os campos da tabela zt xlfal para apenas


dois campos da tabel a i t 2. Isso eineficiente. Em vez dis so, a linha 31
mcstra que 01 0 seleciona r apenas os camp os necessarie s na ord em
correta, sera passive! utiliza r i nt o t abl e.

tobelas internes

..

"nl!;o hot ' in to ' , dessa forma a li nha vai para a


"i rea de t rabalho da tabela padrao
"e, em seguid a, e ecrescented e a it

21
22 skip.
23 loop at i t .
24
write : I i t - l ifnr , tt- Iendi , it-regi0.
25
endl oop.
26. refresh 1t.
27
28 "Hio des ta f orma
29 sel ect > f rom ztxl fal
"a l tnhe vai para a aree de t r abalh o da tabela
padrlo
30
where l andl ' DE ' .
31
it = ztxlfal.
"em segufda, e atr1bufda a l tn ne de caber;alho
32
append ft .
33
endsel ect ,
34

Adiciaoeoda liobes, limo pa r umo, util izoodo se] ect


A utiliza~aa de select para adicionar Iinhas , uma pc r vez, req uer 0 usc de uma
area de trabalho e de uma segunda instruclo, como append, ins ert ou col l ect.
Omirir a adi~ao tabl efara com que a linha seja atribufda a uma area de trabalho.
E comum urilizar a linha de cabecalh o de um a ta.bela inte m a com o uma area
de trabalho expllcita , Par outro lade, voce pode utilizer a area de tra balho da
tabela padrac (definida utilizando t ables).

. 35 skip .
36 loop at it .
37
write : I it-lifnr, it-la ndI , it'-r egie.
38
endloep-.
39 fr-ee it.

o c6digo

na Listagem 13.5 prcduz esta salda:

43S

436

OIA lUABEUS IHTERHASAVAHIADAS. PARTE 2

APREHDA EM 21 DIH AIAI/4

SAioA ~

Vll

Yl2
V8

2D

DE D7
DE 14
DE D3

21 1I'Hao desta fonna:


22 sel ect " from ztlclfal
23
where 1andl 'DE
24
move- corresponding ztx lfal t o it .
25
append it .
26
endselect.
27
28 ski p. .
29 l oop at it .
30
write : !. t t -I'l fnr, It .ro w_i d. it1and l".
I

DE D7
DE
DE D3

Vll

Yl2
V8

"

DE D7
DE
DE D3

Vll

Yl2
V8

ANAliSE~

"

N a linha 6l t abl e n ao aparece antes de it, sendo assim as campos de

31
endl oop.
32 fr ee ft.

ztxl f alvao paraalinha de cabecalhc de it. A linha 8 acrescenta a linha

de cabecalho a i t .

o c6digo na Listagem 13.6 produz esta saida:

Nalinha 17, Ilia existe a clfusula into, sendo assim cadalinha val para a
area de trabalho da tabela padrao ztxlfal. A linha 19 acrescenta aarea de
m balho zt xlta l atabela interne (a linhade cabecalho nilo eutilizada).

V11
VI Z
V8

A linha 29 coloca cada Iinha na areade trabalho ztxlfal . A linha 31

Yl1

move ztx l fal paraalinhade cabecalho de i t antes de acrescentar. Esse


0 metoda men os eficiente.

13.6 mastra como.

ENTRADA.... Listage.m 13.6 Como 0 adi<;co correspond ing fields 'pera a instru.;;ao
~ sel ect produz 0 mesmo efeito do instru.;;ao move-corresponding
1 report ztx1306.
2 ta bl es ztxlf al.
3 data: beq1.n of it occurs 2,

4
5
6

row_1d

l i f nr

like ztxlfal-lifnr.
like sy-tnd ex,

landl

lik e 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

"obser ve que 'table'

16 loop lit H.
17
write : / tt-l tfnr-, tt-rov 1d. it-landl.
18
endloop .
19 refresh ft .

V8

ANAUSE~

N a linha 11,a adiliio table e omitida antes de i t , sendo assim, a linha


vai par~"o cabecalho. 1i fnrvai para it. lifn r e land 1 vai pan t t- 1and l.
A linha. 7 acrescenta alinha de cabecalhc a. i t .

A linha 22 move as linhas para a area de nabalho ztxl fal. A linha 24


utiliza urna in5trutjao adicional - move-corresponding - a fun de
cransferir a area de trabalho para a 1inha de cabe..Iho it. A linha 25,
em seguida, acrescenta alinhade cabecalbo ao corpo de i t . Isso d.a 0
mesmo resuleadc da primeira instruljao select, mas envolve u~a
instrllljao adicional e, portanto, e menos eficiente.

Resurnindo seJ ect tabelas internes e eficim cie

where l andl " 'DE ' ,


append it.
endseleet ,

D DE
D DE
o DE

Yl2

into corresponding fi el ds pede tambem serutilizado para colccar dados


em uma area de trabalho em vez de no corpo cia tabela intema. 0 efeito e
se me lhante ao ds inst'rur;3.0 eove-co rrespcnd tnc e emais eficiente. A Listagem

D DE
D DE
D DE

A Tabela 13.2 contem uma Iista das varies formas de sel ect quando utilizada
. com as tabelas internas e sua. eficiencia pertinente. Sao apresentadas em ordem
decrescente desde a melhor ate a menos eficiente.
~

om1ti do

Tabela 13.2 Varies formos de sele ct o ~ preencher urn o tebelo interno


I nstfUljOo(oes)

Escrita 00(0)

sel ect
select
select
sel ect

table i t
corresponding f ie lds of table it

Corpo

it

Unho de ccbeccihc
Unha de ccbecelbc

into
into
i nto
i nt o

corresponding f ields of it

Corpo

437

438

D~ IJ,TIBEL\S Im RHAS IVI N(AOO, lAm 2

IIREN DI EM21 Dil l 1. 1// .

Utilizando as tabelas de exemp lo 1fa l , 1fb l,


lfc l e lfe3
Antes de discutir 0 proximo tema, sera lltil se familiarizarmais com as nbelas
de exemplo ztxl fal, ztxl fbI , ztxl fel e zt xl fc3j elas serge frequentemente
utiliza das nos exemp los e exercfcios a seguir . Essas tabelas sao baseadas nas
eabelas de Rl3, que sao 1fal, 1fb I , 1fel e 1fc3. Favor reviser estruturas dessas
tabelas 'dentrc do DDIC, assim que ler as descricoes abaixo.
A SAP desenvclveu 0 &/3 a fim de sec utilitivel por urn conglomerado
que consiste em md lriplas empresas. Durante a configura~:io inicial do R/3,
um ccdigc de empresa earribufdo a. cada empress no conglomerado. 0 c6digo
de em~re~a forma parte cia chave primaria em muitas t abelas de dados-mestres,
qu e permreeac con glo mera.do manter as inform~5es de codas as suas empresas
em urn Unico banco de dados. 0 gerenciamento pede executar rela.t6rios para.
urn c6dig o de empress individual, assim como relate rios consolidados
abrangendc multiplas empresas.
A eabela 1fal ccntem as informa~6 es -m~stres sobre fabricantes, que sao
ccrrentes em todas as empresas.Ignorando mandt, SU2 chaveprimdria consisrira
apenas em 1i f nr, que representa 0 mimero do fabricanre. Os campos de 1fal,
par exemplo, apresentam a nome do fabricante e endereco, nemeros de
telefone, idiom. falado e atividade (definida pd o tipo de produto comerciaIizado'p ela empress, como produtos qutmicos, agrfcolas e assim por diante).
A tabela 1fbI contem 2S iaformacoes-mestres sobre fabricantes, que SaO
especrficas de uma empress. Sua cbave primfria consiste em 1i fnr e bukrs : 0
campo de ccdigc de empresa (ve;aa Figura f3.6).Armazenados.dentro de 1fbl,
estao 0 numero da conta d.a emprcsa com 0 fabricante, 0 numero cia conta de
reconcilia~o, as ioforma~6es sobre.impost os retidos, urn indicador de caIculo
de taxa de ;uros e assim por diante.

as

F igura 13 6

campos
de cnove prim6rio
,
-_ _.A-_
_,\
A

Re/ofiOo ~ tre os

cnoves primarios.

lab elos-mestres de comerciolizoo

A Figura.13.6 representa a rel a~ o entre as chaves primdrias das eabelas


de Hal a lfc3. Tom elas ccmecam com lifnr, e lfal 0 utiliza como a chave
primiria iateira. lfb i utiliza a mimero do fabricante e 0 c6digo d.a emp ress,
1fcl utiliza 0 mimerc do fabricante, 0 c6digo da empresa e 0 ano fiscal. 1fc3
utiliza esses mesmos campos, alem de urn indicador de GIL especial.
A tabela 1fc I contem os resultados das tnIls',oes do GIL (livro-razgo) .
Cada Iinha armazena 0 valor de um ano fiscal dos resultados <Us rransacoesde
um fabric.a.nte dentro de uma empresa. A chave primaria consiste em 1i f nr,
bu1cr s e gjahr, no ana fiscal.
.
o conjunto de campos denominados umNNs, umNNh e umHNu erepecido 16
veees dentro de uma linha 1fcl. Cada urn dos primeiros 12 conjunto s concern
os Iancamentos de debito, Iancamentos de credito e vendas de um pertodo de
Iancamento (normalmente urn mes) do ano fiscal. Os ultirnos quaere conjuntos correspondem em periodos de fechamento adicionais utilizados para.
conter ajustes de contabilidade do final do ano .

Podehover12 au 13 perfodos de lcnccmerrtc em um ana fiscal. lsso

edeterminado quando 0 sistema einiciolmente configurado. Se hoover


13, entao somente trfls periodos de fl!chom ento odicio nois existirtio .

A rabela lfcl contem resultados de trans.<;oes do GIL especial. G/Ls


especiais ut ilizam uma ccnta alternativa de reconciliacac no Iivro-razac. Cads
linha de 1fc3 armazena urn resume dos G/ Ls especiais de urn ano fiscal inteiro
em tres campos: sald v, 50 111 e habn1. Esses campos contern 0 balanlSo obtido
e encaminhado e 0 total de la.nljamentos de debito e credito durante 0 ano fiscal.
A ch.ve primm . e mesm. de 1tel, alcm de um indic.dor de GIL especi.l :
shbkz. 0 valor nesse campo indica qual conta de reconcilialiio alternativa e
utilizada.
A maioria das tabelas de clados-mestres utiliza urn mo delo semelhante
para suas estru turas de chave primi ria.
Neste livro, vers6es sirnplificadas dessas tabelas sao utilizadas: zt xl fal,
zt xl fbI) ztxl fel e zt xl fc3. Elas foram criacla.s e foram preenchidas pela rotina
de conguraC;ao.

Processome nto de interrup<;oo de control"'e'---

Depois de preencher uma tabela intema com clados, em geral, voce precisari
escrcver os dados. Freql1entemente, essa saCda ira conter as informal$oes de
resumo (como tows) DO infcio au termino do relat6rio. Alem disso. poderio
existirresumos intermediarios (como subtotais) dentr o do corpo do relat6rio.
Por exemplo, suponha que voce precise escrever os resultados do GIL cia
ztxlfcl para cada fabricante, com subtotais por ano fiscal e urn total geral ao
termino do relat6rio.

439

"'!--~

440

DIA 1',TABEUSINmNASAVAN\.lDAS,Pl m l

APIEHDA EM21 DIAS ABAP/4

Para isso, voce pede ler as dados em urna tabela int erna e. em seguida,
dectro de l oop at, utili ze as seguint es ins tru~6es :

at fir st nio precisa vir antes de at last. A ordem dessas instrueroes


pede ser tr ocada.

Essas ins tru~6es podem aparecer multiples vezes dentro do mesmo


loop. Por exemplo, voce pode ter duas instroljo es at first e tres
instrucoes at la st deatro de urn loop e etas podem aparecer em
qualquer orde~.

at f i rst / endat
at 1ast / endat

at new / endat

at end of / endat

sum

Esses instrucces nio devem ser aninhadas um a dent ro cia outra (ou
seja, at 1ast njic deve ser colocada dentro de at f i rst e endat ).

on change of I endon
NOYO lilt...

lERMO "

N so existem adic;6es pan essas instrucoes.

A primeiro instruo de coda urn desses poresde instruc;oo - exceto sum -

co ntrola quando sera exeanodo 0 c6d igo que reside entre e les. Esse tipo de
con tro le de ncml nc-se uma interrvpo de confrole. Seu prop6sito e execute- 0 c6digo

entre eles, sempre que uma condil;oo espedfico nos dodos , detedodo, durante

process omento do loop.

Utilizando as instruc;6es at fj rst e at 1ast

Na primeira vez que ocorre r 0 loop, as Iicbas de e6digo entre at f i r-s t e


endat serso executadas. Na ultima vez que ocorrer a loop. as linhas de e6digo
entre at 1ast e endat serio executadas. Se existirem mulriplas ocorrencias de
at first, todas e1as serso executadas. at l ast se comp orts de uma forma
semelhante.
Utiliz e at fi rst para:
Executar

Utilize as insrru coes at f i rst e at 1ast para executaro processamento durante


a primeira au a. Ultima passagem do loop por uma tabela interna.

loop do prccessamenrc de inicializacio

Escrever as [obis no ini'cio de um relat6rio


Escrever cabecalhos

Sinlexe des
III

i nslru~oes

at f i rst e at 1ast

Utilize at last para:

A seguir, veja a sintaxe das instru;oes at fi r st e at 1ast.

Execuiu

l oop at ft .

at f i rst .

...
m

endat
at last .
endat.

a loop do prc cessamento de tertninacio

Escrever os totals ao eermlnc de urn relat6rio


Escrever rc dapes
A Listagem 13.7 mostra um programa de exemplo que utiliza essas
estrutu ras.
EHTRlDI" Llsta ge m 13.7 Utilizanda at fi rst para escrevercabe<;alhas e at l ast
,. para sublinhar a ultima linha

. endloop.

onde:

it

euma rabela interna.

- -- represents qualquer numero de linhas de c6digo (ate mesmo zero).

O s segcictes pontos se aplicam:

instrUl,joes s6 podem ser utilizadas dentro de l oop at ; elas nao


podem ser utizadas dentr c de sel eet.

Es5:lS

1
2
J
4
S

report zt x1307.
tables zt xlfc3.
data it l1ke ztxlfc3 occurs 2S with header line .
s elect" from ztxlfc3 into ta bl e it where stlbkz 'Z' .
loop at it.
6
at f i rs t.
7
wr1te: I ' Vendor' .

8
. 9
10
11
12
13

12 ' Cpny '.


17 ' Year ' .
22 'Bal

c/F' .

ul1ne .

encat,
wri t e :

t t - It f nr,

441

------442

DIA 1>. TABElASIJITERHASAVAH\ADA5,PArTE2

AP.REHDA EM 21 DIAl AW l'

16
17
18

OOWlA~ Listagem 13.8 Co nteudo dos compos do tebelo intemo e ntre at e endat

12 it-bukn.
17 it- gj ahr,
2Z i t - sal dv.

"15

at las t .

20

write : /
12
17

21

11

19

'

..

----,
'

22

eneet ,
23
endloop.
24 free it.

o c6digo na Listagem 13.7 produz esta safda:


Cpny Year

Ba l

1000

1000 1995
1000 1996
lOCO 199B
4000 1997

0. 00
5,000.00
4.000 .00
0. 00
1.000. 00

1000

1000
1040
1070
1090
VI
VI
VI

2000
2000
1000
3000
3000
4000
2000
4000

V.

V6
V6

IHiu5E ~

elF

Vendor

1997
1997
1991
1990
1994
1997
1997
1997

250 .5 0

1.00 0. 00
1.000.00

1.000 .00
100.00
1.000.00

D.DO

As linhas de 6 a 11 sao apenas executadas na prirneira ocorrencia do


loop. Esse exemplo escreve cabecalhos seguidos por um sublinhado

1 report ztx1308.
2 t ables zu lfc3.
3 data it l i ke ztxlfc3 occurs 1 wi th header line .
4 sele ct 11 up to 1 rows from ztxlfc3 into table it .
S l oop at it.
6
wr ite: I 'Before " at f irst ": ',
7
I t t- Htnr , tt-bukrs , tt- gj ahr , it-shbkz. it-saldv,
8
tt- sclll ,
9
at ff r st .
10
write : I ' Inside "at first ":',
I i t - l itn!" , 1t - bukrs. 1t - gj ahr . it-shbkz. 1t-saldv,
11
i t - sol n.
12
it- litnr ' XXXX ' .
13
endat .
14
write: I ' Between " at fi rst" and " at la st ": ' ,
IS
I i t-H f nr , f t-bukrs. It-gjahr, it-shbkz, t t -saldv,
16
1t-sol11.
17
at las t .
18
write : I ' Inside "at last " :' ,
19
I i t -l1fnr . it- bukrs, 1t -9jahr, it- shbkz. 1t - saldv ,
21l
i t - solll.
11
i t-l1fnr ' XXXX' .
11
endat .
23
write: / ' Afte r "at last" :',
14
I it~l'tfnr , 1t-bukrs, i t . gja hr . it- shbkz. it -saldv,
15
it-soll l.
16
27
endl oop.
28 fre e ft .

(linha 11).
As linhas de 13 a 16 escrevem
executadas para cada linha.

A5 linhas de 17 a 22 sao executadas apenas n.aUltimaocorrencia do loop.


Esse exernplo escreve urn sublinhado ao final de cada uma das colunas.

Utilizando

o c6 digo na Listagem

conteadc de uma linha. Elas sao

UiDl ~

inesperado : va lores de com ponentes vaz ios

Entre at first e endat ou ent re at l ast e endat , a s valores de compo nentes


da linha da irea de rrabalho nie con terso quaisquer dado s. O s campos-cbave
padrjo serac preenchidos ccm " (ast eriscos) e os campos numericos serso
configurados como zeros. A instruljao endat restaura 0 conteudo para os
valores iniciais que 0 rnesrno tinha antes de entrar em at. As alteracoes na area
de trabalho denrro de at e endat serio perdi das.
A Lisragem 13.8 demonstra que os componentes dos campos-chave
padria serso preenchidos com asteriscos e que a s campos nao-chave serso
preenchidos com zeros, dentro de urna instruljao at ou endat .

IHillS~ ~

Bef ore ' at f irst ':


1000 1990 A
1000
Insi de ' at fi rs t':

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

13.8 produz esta ,aida:


1, 000.00

soe.oo

0.00

0.00

Between ' at first' and 'at last' :


1,000.00
1000 1990 A
lDOD
Ins1df! ' at last' :

._..__..... .....

500.00

0.00

0.00

Aft er ' at last ':


1000 1990 A
l DOO

1, 000.00

500.00

A lin.ha 4 seleciona urn registro de ztxl1c3 para it.


Denno do loop que ccmeca na linha. 5, a comeede da linha e escrito
primeiro. E1e e en tao escrieo novamente dentro de um.a at fi:st e
endat . A salda mostra que os campos-c have padno cc ntem astenscos
e as demais ccntem zeros.

443

-~--

444

--...--.

--

...... -_ . DIA13: TABB.AS I NmN AS AYAN~DAS, PAiTE 2

AmMoA EM 11 DlAS ABAPH

Essas instrulioes Ilia devem ser aninbadas uma denrro cia outra (ou
seja, at end of IUO deve ser eolocada dentro de at new / endat ).

A linha 13 atribui urn novo valor para t t - l i f nr.

Depois de endat na linha 14, a salda mostra que to dos a s valores foram
re~uurados para a area de trabaIho. As alte raCjoe.s n a linha de cabecalho
feitas deatro de at / endat sers o perdidas.

N io existem adi~oes para essas ins troCjoes .

linha. 18 mostra que at l ast exibe 0 mesmo compo rt am ento .


A linha. 27 sai do loo p na prim eira passagem para man ter a. salda

simples.

Utiljzao d o a s i nstruC;6 es at newe at end of


Utilize as instru~oes at new e at end of para deeecear um a a1teraliao em uma
coluna. de uma passagem de loop para a pr6xima. Essas instrulioes permitem
que voce execute 0 ccdigc no inicio e fmal de urn gropo de regis tros.

Sinlaxe dos inslru~6es at new e at end of


.A seguir, veja a sintaxe das instnl~6es at new e at end of .
sort by c.

loop at f t .
at n@w c.

endat ,
at end of c.

endat.
endloop.

onde:

eum a tab ela intema.


c eurn comp onente de it.

- - - representa qualquer mimero de linhas de c6digo (ate mesmo zero).

tt

Os seguintes pontos se aplicam:


Essas instrUCjoes podem apen a.s: ser utiliz.adas dentro de loo p at j elas
nao podem ser utilizadas den tro de sel ect.
at new nao precisa vir antes de at end of. Essas ins t ruCjoes po dem
aparecer em qualquer ordem.

usasinstrUCjoes po dem aparecer multiplasvezes dentro do me smo loop .


. Par exemplo, voce pode ter duas insuuCjoes at new e tres ins tIUCjOes at
end of dentro de um loop e elas pode m aparecer em qu alque r ordem.

445

Ulilizondo at new
Cada vez que 0 valor de c for alteradc, as linhas de c6digo entre at new e endat
serio executadas. Esse blo co sera tambem executado durante a primeira pas
sagem de lo op au se quaisquer cam pos i esq uerda de c forem alrerad cs. Entre
at e endet , as campos num ericos i dire ita de c serio configurados como zero.
Os campos Dio numericos serso preenchidos com asteriscos (*). Se houver
mUltiplas ocorrencias de at new, codas elas serac executadas. at end of se
compo rta d~ uma forma semelha.nte.
Urn nfve/de contro /e co rresponde 0 0 cornponente identificodo em umc in~c5o
de interrupt;c5o de eontro1ei ele regulo 0 interrup;c5o de controle..Po r exemp lo,
no seg uinte frog mento de c6digo , f2 e urn nivel de eeeecle porq ue opo rece no i n~60

.oYO lrrrl...
TEDO

at new.
loop at it .
at new f2.
"( deve extsct r alg l,lll cOd1go aqui )
endat.
endl oop.

Dizemos que uma ineerrupcao de controle sera acionada se 0 nfvel d e


controle fcealterado. Isso significa que quando a conteudo do nlvel de controle
for alterado, 0 c6digo entre at e endat sera executadc .
Uma ineerrupcte de contrc le tambem sed. acionada se qualque r urn dos
campos antes do nfvel de contrele na estrutura for alterado . Portanro, voce
deve definir a estrutura cia tabela interna para cornelia! com as campos que
formam seus nlveis de controle. VatS tam bem deve clas sificar por todo s os
campos antericres a c, incluindo c.
Entre at e endet, as campos nurnericcs dir eita do nfvel de cont rol e serio
zero e os camp os nao numericcs serso preenehidos com asterisco s.
As figuras 13.7 e 13.8 ilustram a utiliza~iio de at new.
Este programa fome ee urn exemplo pritico da.s figuras 13.7 e 13.8. Ele
ilustra a ponto em que uma inter11lp~ao de con trole sera acio nada, sempre que
a mvel de controle for alterado au qualquer campo antes d o nfvel de contra Ie

for alterado.

1ll.l 13.TABlUS 1N1BHA5 lV"'~ PART! 1

,7;<~lg"rA

J3 I

&to figure mostra que


o n!velde controle ~
od onodo quando 0

va/orde II e
alteredo. AJ~m elisso.
eta mostro que 12
contem um osterisc:o
dentro do inle l11Jpo
de contrele (entre at
e endat).

Figura J 3

f2

~m
~~
~~
~~

Scrdc 1

3
_ -:..

; '~'

..

f2 contern urn cstertscc,

porque it se enccmrc c
direito do nivel de ccntrcle
~1 1

Esto figure mostro que


o nrvel de centro/e ~
o do node quando1 2
o u 11 Ii a /teredo. 'sse
ceenrec e porque 11
vem antes de /2 no

eslruturo de it.

conteVdo de it

fl

o codigc na Listagem 13.9 produz esta safda: .

12

~~
~ ~.0;
~~
:W

--

@B ~

SAIDI
Sardo: 1 A

3 A
I B

2 B

EN1lADllli. Lisla gem 13. 9 0 c6digo nos figures 13.7 e 13.8 e reproduzido em um
exemplo pr6tico

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

A linha 12 c1assifica it por f1. Na liaha 14, at new e acionada na


primeira ocorrencia do loop e sempre que f1 e alte rado.
A linha 19 classifies it per f2. N a liaha 20, at new e acionada na
primeira ocorrencia do loop, ou sempre que 0 valor de f1 ou f2 seja
a1t~rado. 1550 acontece porque um nfvel de coa tro le sera acionado
sempre que f2 for alte rado ou qualquer campo antes de f2 tambem
tenha sido alteradc.
A linha 26 classifica it por fl e f2. Na linha 28, at newe acionada
sem pre que 0 valor de fl e alterado e na linha 31, at newe acionada
sempre que fl ou f2 ealrerado.

"it agora se perece cocn a Figura 13.8

..

..-

.~

~~

,'.
"1'.

;;".:

448

AmM OA E. 21 OIAS AlAP/4

DllIH\IIEUS IIrnWSA'IJIIADAS,PAI1l7

Utilizende at end of
As linhas de c6digo e~[re at

A Iinha 12 classifies i t por f l.


end

of e endat sersc executadas:

Na linh a 14, at newe acicna da sempre que f1

Se 0 nivel de contro le for alrerado.

ealterado.

Na linha 1B, at end of sed acionadase 0 nfvel de controle for alterado,


quando a pr6xima linha for Iida ou se essa for a ultima linha.

Se qualquer campo antes do nfvel de cont role for alteradc .

Se essafor a Ultima linha cia eabela.


A Listagem 13.10 iIustra essa instrucao.

Usta g e m 13.10 Como at new e at end of sao ocionados pelos


clteroc;oesde compo e o ltera~6es de nfvel de ce ntrale
report ztx1310.
I data: begin of it occurs 4,
3
fl.
4
fl.
5
end of i t.
6
I

7
8
g
10
11
12

17
18
19
20
21

05

efeitos

~l!rCo imprevisiveis.

in stru ~ci o sum


Utilize a insuu!rao sum para calcular os totaisdas linhasde um nivelde controle.

Sintexe de

instru~ao sum

A seguir,veja a sincaxe da instrucao sum.


at f1 rstf1 ast/nl!w/I!nd of .

i t ' lA' . append t t . "Preen che it com dado!


it .. 'JA' . append ft .
it .. 'lB' . append 1t .
it '28' . append it.

wri t e:

estrvturo l oop at i t where j

Utilizando a

,....
endat.

onde:

sort it by fl .
13 l oop 'at it.
14
at new fl.

15
16

Noo utilize as instrur;6 es de interrup o de controle dentro de umc

\..CUldado

-- - represe~ta qualquer mimero de liohas de c6digo.

I ' st art of:' ,

it-flo

endat.
wri te : / 4 f t af l.
at end of fl .

wri te : f ' end

Sum calcula urn total do valor arualdo ntvel de conerole que a contem. Isso
ficm mais clare se YOCe considerar que essa instrul$io faz a seguinte:
of: ' . it-f lo

Localiza codas as linhas que tem os mesmos valores dentro do campo


de nfvel de conrrole e toda s as campos aesquerda dele.

endet
endl oop.
22 free i t.

Soma cada coluna au merica adireita do nIvei de contrcle.


Coloca os totals nos campos correspondences d.a area de crabalho.

o c6digo n~ Listagem 13.10 produz em sald.:

5J.iDi ~

A Listagem 13.11 ilustra essa iostru~o.

start of: 1
I
1
end of : 1

st ar t of ; 2
I

I!nd

of: 2

st art of: 3
3

end

of: 3

Usta g e m 13.11 Utilizcndo a instruc;oo sum porc cclculcr as tatais de urn

EN1UDl~ ~.".:.::~=--nivel de- contrale

1 report ztx 1311.


2 dati: begi n of it occur s 4 ,

3
4
S
6

fl.
12 type t ,
13- typl!: 1.
end of it.

7
8 1t fl" 'A' . it-f2 " 1. i t f3 " 10 . apPl!:nd i t .
9 it-fl" ' s'. 1t -f2 " 3 . i t f3 30. append i t .

449

450

DlA 13: TABEUS INTERNASAYAHVo0AS, PARTE 2

APRENDA EM 21 D1AS ABAP/4

Esto figure i/ustrtr

sliol ~

3
1
2

total:B

IHlJ.ISE~

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

a c6digo na Lisragem 13.11 produz est a saida:


total: A

ccntecdcs do ltnhc
de cobec;alho

Flg u rg 13 9

10 1t-fl .. 'A' . 1t-f2 .. 2. it-f3 " 20. append i t.


11 it~fl .. ' 8' . it-f2 s 4. it-f3 .. 40. append i t.
12
13 sort it by flo
Mit agora se pare ce com a Figura 13.9
14 loop at it.
15
at new fl .
16
SlII1 .
17
write: I ' total:' . it-fl, it- fl. it- f) .
18
endat .
19
write: / 11 it- f2, it-f3 .
20
endloop.
21 free it .

A linha 13 classifica i t por fl em o rd em cre scente. 0 cc nterido depois


da classificacao aparecera da forma como mostrado na Figu ra 13.9.

Na primeira ocorrencia do loop, a c6digo entre as linhas 15 e 18 e


executado. 0 nfvel de controle contem

valor

Esta figure mom 0


que cccrre no
segundo vee que a
intelTUpo d~
centrale e odonodo e
o ins1nlo sum e
ex.ewtodo.

sort i t by flo
loop at it.
at neW' f L

sum .
wri te

de ccbecclhc
ANTES de sum
DEPOIS de SUIl

endat
endl oop,

IA I .

Antes de a linha 16 ser executada, a s campos cia are a de tra balh o

direita do nfvelde controle irsc conter zeros. A instru/.iao sum localiza


f1
12 13
centecdes de 1t

todas as linhas adjacentes que tern urn 'A I em fl. E1a soma as colunas
numericas a direita do my el de contrale e coloca 0 result ado na are a

de trabalho (veja a Figura 13.9).


Na segunda iteraliao do loop,

Utiliza nd o a inst ru<;60 on c hange of

at newnao e acionada.

Na terceira iterali2.0 do loop, f1 contern IB I e at new (linha 15)

U ma outra in strucio que voce pode utilizar para executar 0 pro cessamento de
a on change of , Tal instru; ao se comp ort a de uma
maneira seme lha nte a at . new.

icterrupcso de controle

acionada.
Antes de a linha 16 ser executada, os cam pos cia area de trab alho a
direita do nfvel de controle irao conter zeros. A instrucio sum lo caliza
todas as linhas adjacenres qu e t ern urn I BI em fl. Ela soma as colunas
numericas a direi ta do nfvel de controle e colc ca 0 resultado na area

de trabalhc (veja a Figura 13.10).

A soma pode resulter em overflow (estouro), por que 0 to tol colocodo


em um compo do mesmo comp riment o. 0 overflow fez com que um
dump curto oco rra com 0 erro SUM OVERFLOW. Ao util izor sum, evite 0
prob lema aume ntando 0 comprim; nto dos campos nurnerlccs ontes
de preencher a tobela intemo.

Sintcxe de instru~Cie on change of

III A seguir, veia a sintaxe da instrucf o on change of.

on change of v1 [or v2 ] .

[e lse,

---)
endcn.

o nde:

vl, e v2 sao no mes de st ring de cam po ou variavel.

451

452

D1A 13,TABELAS INTERNAl AVAN\ADlS, PArn2

APRENDA EM 21 DIAS AWl!

. . . indica que qualqu er mime ro de condicees or poderf vir em


seguida.

- -~ represen ta qualquer ntimero de linhas de c6digo.

. J6 que os compos e udllc res globeis nco existem fo ra de urn loop, voce
nco pode utilizer on change of fore de urn loo p.

Sempre que on change of fa r executada, a conteudo de seus ca~pos sera'


comparadc com 0 conte udc do s campos auxiliares globais. Se fo~em diferentes,
on change of ser a acio nada e as campos auxiliares serio atualizados com .05
novas wares. Se forem as mesmos, 0 c6 digo denrrc de on change of nio sera.

O s seguintes pontes se aplicam:

S~ 0 V2.1o r de qualquer uma das variaveis (vI, v2 e assim p a r diante) for


alt erado de urn teste p ara a outre, as instrucdes depois de on change
of sersc execu tadas.

executado.
Esse conceito

Se nenhuma alteracio fo r detect ada e el se for especificada, as instru~6es depois de el se serso execu tadas.

e graficamenre ilu str ado nas figuras de 13.11 a 13.16.


Compo ol,lXiIlor
globel porc nf2

Figura 13 11
Esse ea primeira
a~ncia de um loop
com a utilizoo de

on change of difere de at newnos seguinces aspectos:

Eta pode ser utilizada em qualquer estrutura de lo op, nao apenas em


loop at. Par exemplo, p ode ser utili zada dentro de se l ect e endsel ect,
do e enddoa u while e endwhile, be rn como dent ro de even to s get .

_ . t. '

on change of.

Uma unica on change of pe de ser acionada po r uma alt eraCjao den tro
de urn au mais camp os identificados depois de of e separa dos par or .
Esses campo s podem ser camp os elementares ou strings de campo . Se
voce estiver dentro de urn lo op, esses campos nao precisarao pertencer
ao loop.

No primeiro possogem pelo loop, itf2


diferedes conte(idos de comp05. o ux.iliores,
en!l3o on change of 6 aclonado.

Quando utilizada de ntro de urn loop, uma a1tera~ao em urn campo a.


esquerda do nivel de co ntrole nao acionara um a interrupcfo de cont ro le.

FlgurR 13 '2
Quando on change
oj eacionado. 0
compo auxiliar e
atvolizado.

Quando utilizad a de ntro de urn lo op, as campos a direita ainda irao


conte r seus valores originais; eles nao sao alte rados pa ra zeros au

Voce pede utillzar sumcom on change of. 1550 soma tcdos os campos
numericos, exceeo o (s) identi ficad o(s) depois de of.

!2

as 'conlll(idos de itf2 soo copiodos


perc 0 compo ouxilior, e os inJirulls
dentro s60 executodos.

Compo ouxilior

globel poro af2

Figura 13 13
Esser e 0 segundo
possogem de loop. 0
confeudodo campo

Q uaisquer valores aleerados dentro de on change of permanec erf o

alterados depo is de endon. 0 ccnteudo da linha de cabecalho nao sera


restaurado ja que pertence a at e endat.

c
per Ires de on change of

11

~~
~~

Voce pode ueilizd-la com l oop at it where. . ..

Q uando urn loop comeCja a execu cao, 0 sistema cria urn campo auxiliar global
para cada camp o ident ificado em uma instru cfo on change of con tida pelo loop.
Na criat;ao, esses camp os rece bem valores ini ciais padrao (espacos em branco
au zeros). Ele s Sao esvaziados quan do do termino do loop.

. q;;;;;Ii-~ 7

SiHI

Voce pede ucilizar el se entre on change of e endon.

o que he

Compo avxilior
global perc jff2

~0

asteriscos,

453

auxilior

correspoodido e on

change of nco ~
acionode..

- ..

.. '

!., . ;: :~

lt

11

!2

~~
~0
WI!
"
~~

.\ , ~ 1

Ne segundo passegem pelc lo?~,. itf2

e es conteudos dos compos au xtho res


sao os mesmcs, ent60 on cha nge of
.
nco e ocionodo.

.J
v

li;';~~

r:

454

DlA 13~ TABELl51HTRHAS AYAH~ PAm. 2

AP IENOA EM21 DIAS ABAP!4

- -~~~ -

possogem de loop.

Usta gem 13.12 Utilizcndo on change of de duos mcneiros diferentes:


dentro de loo p at e dentro de sel ect

EN1iADI~

Compo ouxiliar
global porn iff2

Eig u rp 13 14

Esse e 0 lerceiro
On change of e
odonodo.

1 report ztx1312.
2 tables zo.lfal.

3 data : begin of 1t occurs 4,


f1 type i
12.
5
f3 type i,
6

No.Ierceiro possogem pelo loop, it-f2


~~~~

dlle re dos cc raecdcs dos compos

ouxiliores, enlfio an change, of


, ocionodo .

,4qui, 0 cam po olJrilior


e atUolizodo.

1t -f2 .. ' A' . it-f3


1t-f2 .. 'A'. it-f3
1tf2 .. 'A'. it.f3
tt-f2 .. 'A' . it-f3

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

instnJes demn;l s60 executcdcs.

Compo ouxilior
global pera itf2

f lu u ra 13 16

ea quorlo

possogem peto loop.

end of it .
..
..
..
..

''11 '. append it.


'X' . append it .
'y' . apllend it.
' Z' . append it.

14
15 loop It it.
16
on change of it-f2 .
17
write: lit-fl, 1t-f2, itf3, it-f4 .

o cent.Ucla d. jf.1'2 ecopioclos

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.

No l1/timo pOssogem pelo loop, itf2


c:::omeUdos de camposauxiliares
~S;~~ 160 os mesmcs, enIOo on challge of
O!

n60

e odonodo.

Utilizando on change of
A Lis tagem 13.12 ilus t ra a utilizaC;i o "d e on change of.

CaJqJO aux ainda cont~ ' A'

23 loop at tt.
24
at first.
25
mte: I 'looping without a reset '.
26
'endet ,
27
on change of i tfZ.
28
wr1te: I i t .fl, 1t.f2, i t f3 , it-f4.
29
30

else.

write :

' en changl! "of not t rigge r ed for row', sy-t1bix.

31
endcn,
32
endloop.
33 wrtte: I 'End of loop'

3'

35 .reconf1g\,lra

campo aux para espal;os em ereecc

36 clear 1tf2.
37 on change of it-f2.
38
endon.
39 loop at it.
40
at first.
41
write: I 'Looping after reset ".
42
endat .
43
on change of it-f2.
44
write: lit-fl, it-f2, it-f3, itf4.
4S

endcn ,

endloop.
47 write: I 'End of loop'.
46

456

""'\AD'" PARTE 2

A tabela intern a nio e utilizada depois da linha 31, en ta.a aqui it


esvaziada. Isso exclui todas as linhas e libera a mem 6ri.a.

48 f ree it.

4'

50 sel ect" fnn zb:l f l1 where land! .. 'US'.


Si an change of zt xlfal1andl.
52
write: I ' l andl"' . zt xl f al - la ndl.
53

54
eees et eet ,
55 write : I ' End of sel ect ' ,
56
57 "executa r I IM!!sma tn stru ~&o sel ect novamente sen
58 select .. fran , t x1fa l wheN! landt .. 'US' ,
59
on chang! of ztxlfal - landl.
60
write : I 'landl-'. ztx lfa l - l and!.
61
endcn,
62
endsel ect.
63 ...r ite: I ' End of sel ect.".

Em um ambience 3.0F e posteriori


esta safch:
1 All "
End of loop
l oopi ng wit hout a reset
on change of not t ri ggere d for row
on c:hange of not t ri 9gered f or row
on change of not tri ggered f or row
End of ' 09P
Loop1ng after reset . ..

Embora essa ins tru!jio sel ect retorne 23linha.s, como pode ser vista
pela ultima linha de safda, somente cinco valores exclusive s de 1andl
existirio e serso escritos.

lima re cQn f i 9' urar;~O

f unciona be'll

c6digo na Listagem 13.12 produz

2
3
4

11 W

End of loop
l andl - US.
End of sele ct
landt- US

End of select

AlillSE ~

A linha 33 selecicna todas as linhas de zt xl fal na ordem de 1andl.

endon.

1 "A

457

OIA lU'BELlS INTIl<NAS

' mNO' EM21 DiAl ,",P/ 4

As linhas de 10 a 13 pre enchem a tabela interna com dado s. i t - f2


co ntem a valor I A I em codas as quatro linhas.

A linha 16 escreve cada linha assim qu e ela e prccessada.


As linhas 17, 20, 23 e 26 sao acionadas na primeira ocorrencia do loop .
Issc acontece porque os campos auxiliares con rem zeros ou espacos
em branco, entac diferem dos valoresna primeiralinha. O s valores cia
primeira linha sao co piados para as campos auxiliares e as valores sao
escrit os pew ins t ru co es wri teo
A linha 20 nao e acionada novamen te porque em todas as passagens
de loop sobseqaenres, o valor de itf2 e IAI eo campo auxiliar global
tambem contem I A I Observe que um a alteralj-ao no valor :a. esquerda
de f2 mo acionari on change of como ocorre com at new.

Utilizando

pe rigo ocu lto em on change of

e criado com
valores iniciais {espacos em braccc ou zeros). Se a primeiro valor em urn loop
for am espa!i0 em bran co au zero. on change of aia sera acionada. A Lisragem
13.13 ilustra esse problema e oferece urna solulj-a.o.

Na primeira ocorrencia de urn loop, a campo auxiliar global

OOiADA~ Ustag em 13 .13 linha do loop #1 noo ad ona on cha nge of


1 re port ztxl313.
Z data: begin of i t occurs 4 ,
3
f1 typl!!! i ,
4
end of i t.
5
6 it.fl - O. append

it:

7 1t-f 1 - 3. apPl!!!nd it.


8 1t-fl - 1. append t.t..
9 1t f1 2. append it.
10
11 l oop at it .
12
ert t e: I 'aanew row aa ' , 12 i t ~fl .
13
on change of i t - fl .
14
write : I 'fl changl!!d: " lZ it-fl.
15
endcn.
16

"loop 11

end'lccp .

17
18 skip .
19 l oop at it .
ZO
wt-t te : I 'a- new rown ' 12 i t - fl.
Z1
on changl!! of it-flo .
22
write : I 'fl changed: lZ u - rr.

"l oop 12

I.

Z3
24
zs

26

el se,
if sy-tabix a 1.
write: I ' fl changl!d:' . 12 it-flo
endif.

27

Z8

endcn.

endl oop.

Zg f ree it.

o c6digo na Lisragem 13.13 produz est> safda:

458

APR EMO A EM21 DIAS ABAPl4

SAiDA ~

-new row....
new row".

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

Utilize at e endat para acionar 0 processamen to "baseado em um a


aIteraljio na coluna de urna tabela inrern a ou qualquer coluna a sua
esquerda.

f1 changed:

AHluSE ~

O~ !3,TABElAS IMTIRMAS AV~Yl0AS, PAm2

As linhas de 6 a 9 preencbem a tabela interna com qu atro linhas. 0


valor de i t -fl na primeira linha e zero.

U tilize a adiljao i nt o corresponding f iel ds se as camp os da tabela


interne estiverem em uma ordem diferente ou estiverem separ ados urn
do outre par campos nao selecionados da tabela de banc o de dados.

Utilize sum dentro de at e endat au on change of para caIcular totais e


subtotais.

Na linha 13, a primeira passagem de loop nao aciona on change of ,


porque 0 camp o auxiliar global contem zero .

Utilize on change of dentro de loops para acionar 0 proc essemento


baseado em uma altera<;ao em uma das colunas selecio nadas .

-As linhas 23 e 24 [o ram adicionadas ao loop #2 para derectar 0 erro .


Ob serve que at fi rst n ao pede sec utilizada para detectar esse

problema, ja que todos as camposnumericos na area de trabalhoserdo

Nco utilizesel ect e append. Sempre que posslve l, utillze sel ect into

configurados com o zero dentr o de at fi rst e endat.

table.
Nee utilize order by co m se lect into t abl e. Em vee dnse, utilize

sort no to bela lntemo .


Em versses anteriores

a 3.0 F, somente

as instru t;oes sel ect e get

reconfiguram oufom oticamenfe as campos ouxlhcres glob ois. Entre.

fonto, se voce mesmo as reconngurar, sera posslvel utilizor on change


of em quolquer tipo de loop. Utilize esse c6d igo "para executor a
reconfiguro<;;:60: c1ear fl . on change of fl. endon. deor move os
volores iniciois para fl. onchong eofcompara fl com 0 compo cuxlllor
global. Se forem diferentes, a on change of vozio scbrescreverc it com
vclc res iniciois. Utlllre-c para preenche r as ccmposcuxlllores cam
quolque r valor de f l.

Resumo
Uma oper acao de array e a mane ira mais eficienre de preencher uma
tabela intema a partir de uma tabela de banco de dados. Ela Ie as linhas
da tabela de banco de clados diretamenre para 0 corp o ciatabela interna
sem utiliz ar quaisquer areas de trabalho. E implementada atraves da
adiljao i nt o tabl e na instru ljao select.
A tabela intern e deve ser suficientemente grande para acomodar as
colunas po r .voce selecionadas a partir cia tabela de banco de dados .

P&R

A primeira parte deste capitulo parece colocar muita enfase na


eficiencia, Estou apenas aprendendo e con sid ero todos esses
metodos confusos. Issc realmente faz muita di ferenca, ou voce
esci se prcocupando com minucias!
A experiencia ensinou-me que os alu nos que aprendem corretamente pela primeira vez ganham muito. Em geral, os pro
gramas em ABA P/4 processam uma enorm e quan ticlade de
dadcs, portanto, par infelicidade, urn a c6digo facit " frequen remente results em "overhead over head overhead". Se voce
aprender apenas os merodos facei s no in fcio, eles se tornarjio
hsbiros e serac diftceis de se descartar. Urn c6di go p obre afeta
o desempenho de seus program as e do sistema.

459

460

APREHDA EM 21 DIAS ABAPI4

Workshop

o Workshop oferece duas maneiras de voce verificar 0

que aprendeu neste


capitu lo. A se!rao Teste ofer eee perguntas para.ajudar a. sclidificar seu entendimen te do conteu do abordado e a. sc)3.0 Exercicio permite que voce pratique 0
qu e aprendeu. Voce pede enconerar as respostas perguntas do Testee aos
exercicios no ApecdiceB, "R espcstas is perguntas e aos exercfcics".

as

Teste
1. Quais sao as mores dos campos
as instrucdes at e endet!

adireiea do nivel de controle entre

Exerdcio 1
C op ie 0 programa ztxlllOpara e1301. Alte re-c de modo que se uma lioha
for lccali zada e 0 comeedc de quaisquer camp os na linha localizada diferir do
que existe na linha de cab ecalhc, a linha localizada seja sobrescriu com 0
conceudo arual da linha de cabecalho . A saida deve se pareeer com a seguinte:
10
. 20

1 XX
2XX

40
50

4XX
5 XX

1
2

Dia 14
A instru~ao wr; te

4
5

Dica: Utilize a adi~ao comparing na instru~ao rea d tabl e.

Exercicio 2
o pr ogra ma a seguir preduz urn dump CUrto. Descreva c pr ob lema. copie (,
pro gram s para e1302 e so lucione esse problema.
M!port zt y1302
tab le s: zb. l h l.
dilta: begtn of it occurs la,
lHnr li ke zt xl f al -l1 fnr .
la ndl li ke zt xlfal .1andl .
end of it.
sel ect * frca ztxlfal in t o tab le it.
lo op at it .
write: / tt -If rnr-,
t t -I endt .
endl oop.

D epois de concluir est~ capitulo. voce sera capaz de:


Enrender

efeito dos tipos de clades na safda

Utilizer as ops:oes de formata!jio, da ins trU~io wri te


U tilizar as safdas de conversio e deeecrar sua presen!ji dentro de
dominies

Eormoto\;fi o e com primentos podrOo


formata~ia au comprimenro
quando utilizar a instru!jaa write, 0 sistem a adocad. urn comprimento e formate
padria baseados no tipo de dado de cada variavel escrita. As seguintes sece es

Se voce nao especificar quaisqu er 0Pfioes de


descrevem esses padroes.

Comprimentos padrijo
MOYO ....
TEUO r

a comprimento de sa ido de um campo corresponde 00 n(imero de cc rccteres


vtilhcdc s pora

exibiioo do valo r dcq uele compo . 0 comprimento de scfdc

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

- - - -- --

- --_._- _ ._- -- D~ lU INSTRU(iO WRITE I

Tabela 14.1

o tipo de dodo do ABAP/ 4 determino 0

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

Zeros sup rimidos

Finol

11

Zeros suprim idos

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

padroo herdodo dos


IipO$ de dodos do

/>YPi<.

fldlen

iniciois suprimidos

A esque rdo

Determinado pelc

pcdrec do usu6rio
t

A esq uerdo

Aesq uerdo

HH,MM,SS

6
2'fldlen

a s campos do Data Dictionary tern tipos de dados do ODIC, como DEC,


CHAR. CURR e assim. por diante. Todas eles sao baseados em tipos de dadcs do
ABAJ'/4 e herdam 0 formate e 0 comprimento padrao do tipo de dado do
ABAJ'/4 . Para determinar 0 tipo de dado do ABAJ'/4 e, por conseguin te, 0
formate de safda padrao, consulte a documentacao de palavra-chave do
AJ!JAP/4 quanta a instrulja o tables . Para isso, colaque seu cursor em uma
instruc;io tabl es decrro de seu c6digo e pressi on e a eecla Fl.
Alem disso, as campos do DDIC tern seu comprimemc de safda e
mimero de decimais definidos no dominic. Esses campos anulam 0 padrfo e
sao mostrados na Figura 14.1.
comprimento de safda e as casas decimals si o herdados por todos os
campos criados a partir de :LIm dominic. P or exemplo, na Figura 14.1. 0
comprimento do campo e15, indicando que 15 digitos podem serarmazenados
em qualquer campo utilizando esse dominic. 0 comp rimento de saida e 20.
entia a safda permite espacc suficiente para urn ponto decimal, urn sinal e treS
separado res de milhar.

Compos cornpododos

comprimento de saida padrjo de urn campo do tipo p du as vezes 0


comp rim ento de campo definido. Se casas decimais forem definidas, 0 cornprimento de safda padrio sera aum entado em 1, equivalend a entac a 2 *
comprimemc do campo + 1. A T abela 14.2 mostra os comprime ntos de saida
padrio de exemplo para os cam pos do tipo p.

Ta bel a 14.2 Comprim ento de scrdo podrao pa ra os campos deci mals


ccmpoctodcs
Defini~60

d.t.
d.t.
d. ta
data

de dados

TAB TEXTD(4) t ype p.


f 2(4 ) type p declm. ls 2.
f 3(5) t ype p.
f4{S) type p decimals 3.

Comprimenta de saida padriio


8
9
10
11

Eo rrnatOl; c o pad ni o
a formato padrjo derivado do tip c de dado da variavel. A Tabela 14.1
descreve co mo a saida sera. fonnatada para cad a tipo de dado do ABAP / 4. A
saida de cam pos numericos (ripos p, f e f) ealinha da adireita com zero s inici ais
suprimidos e para 0 restante e alinhada a esquerda. Formata~ao adicional
especffica ao tipo tambern se aplica,
Form oto ~a o de dota pcdreo
Os vaIores de data irao gerar uma safda de acordo com a configura~o de Date
Format em U ser D efaults , contan to que e comprimento de saida seja 10 a u
maior. 0 comprimentc de sa!da pad rio cS, entao voce devers aume nti -lo para
pelc menos 10 ante s que a s separa de res possam servistos. A defmilii o de uma
variavel utilizando 1i ke (por exemplo, 11 ke sy-dat um) fari co m que a ccmp rimenta de sai'da seja retirad o do dominio.

463

_ _464

- _..

....

_~

APR ENOA EM21 DIAl ABAP"

OIA IH .11ilJyi0WRITE

Formc tccco de hora pcdreo

Program a de exemplo demonstra ndo a form c t ocd o


padrti o

O s valo res de bora irac gent uma safda no formato HH:MM::SS,contant o que
o compri mcnt o de saida seja 8 au maier. 0 comprimento de salda paddc e 6,
en tia voc e devera aum en ta-lo p.ara pelc men os 8 an tes que a s separado res
possam ser vistcs. A defmi~ao de uma variavel utilizando 1ike (por exemplo,
1; ke sy- uzet t .) fm com que 0 comprimen to de safda seja retiradc do domlnio.
Fo rm ata~ao

A Listagem 14.1 ilust ra a formatac;ao e 0 comprimento padrao. Tambem ilustra


o tratamento de nUm.eros pr6ximos ao estouro do campo de saida.

OORADI~ Listagem 14.1

nurnericc pcdrco

N e America do Ncrte escreve-se um mimerc como 1,234.56. Em outros pafses,

5
6
7

8
9
10
II
12

Vod de ve efewcr sign off e efetuor ncvc mente sign on no sistema Rf3,

'-.\UlaaaO pore que as a lterecs para

13

podriio do usu6rio tomem-se efetivos.

"IS
A Tabela14.3 mostra 0 efeito da ccofiguracac Decimal N otat ionna saida

16 write :

numerica.

17

18
19

Tabela 14.3 A configuror;;60 De cimal Notation no podroo do usu6rio meta a s

20
21

Ic rmcto s de seide num erlcc


Conflgura~ao

Saida de exe mplo

Virgula
Ponto

, ,234.56
1.234,56

o formate

de safda padrio pan variaveis de ponto fluruante [tipo f) e


atraves de nat.rra o cientifi ca. Ele pode ser modificado utilizando uma mascara
de edic;ao au safda de ccnversso.
Formata ~a o de estouro (overflow)
Ao lidar com ntimeros qu e sao grandes demais p ara a camp o de safda,

sistema

coloca u rn asterisco na prime ira celuna de safda a fim de indicar estouro,


Enrretanro, antes que isso ocorra, 0 sistema tenta gerar urn. said. de todos as
dfgiros, se possfvel, Os separad ores de milh ar irao so men te gera r urna saida se
existir espacc suficiente n o campo de safda. Se Dao exi sr ir espacc suficiente,
eles sersc removidos, urn de cada vez, come cand c cia esque rda do campo e
seguindo para a direira. Se a ndmero for positivo e se ajustar a safda com a
utilizaliao do cam po de sinal, 0 sistema 0 utilizaIi.

report ztx1401.
t ype t
val ue
11ke sy- uzet t
t2
value
dl
t ype d
val ue
val ue
like 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

como a s da Europa e aqui n o Brasil, 0 mes mo mime rc eescrit o como 1.234,56


0 usa de vfrgula eo usa do decimal sio alterados em rela~io 010 padcio
. no rte -americana . 0 R/3 perm ite que cada usuario individual especifique urn
desses fo rmatos atraves da configura~io de perfil do usudrio Dec imal N otation
(a partir de qualquer tela, selecione a caminho de menu System-> U ser Pr ofile- > User Defaults).

~c
'd d-

Comprime ntos e formato,co podrao

I
i

22
. 23

2.
25
26

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: defa ult output ll!ngth 6',


t: inc reas ed output length to 8',

t:
t:
d:
d:
d:
f:
1:
i:
1:
i:
1:
n:
p:
p:
p:
c:
x:

1ncreesee output 1ength to 12' ,


defaul t output le ngth 8 (from domain) ' .
defau1t out put l ength 8 '.
in creased output 1engt h t o 10'.
def ault output l ength 10 (from domai n) ' .
default out put l ength 22',
def ault out put length. 11'.
same output 1ensth, more d1gi ts '
S!Jll! output l ength, even IIICIre dig i ts ',
smal le r ootput l engt h, negative nLlllber ' ,
smaller output l engt h. pcsf tt ve nllllber ' ,
default output l ength fie l d len gt h' ,
default output l ength . 2 leng th 10',
output l ength i ncreased to 12'.
out put len gth inc re ased to IS'.
out put l engt h f ie l d l enqth (l eft ju st) '.
default output l ength 2 l ength"" 4' .

o c6digo na Lisu gem 14.1 produz esta safda:


siiDI ~

123456
12:34:56
12:34: 56
12:34: 56

type
ty pe
ty pe
ty pe

t:
t:
t:
t:

default out put length


inc reased output leng t h
i ncreased output length
default out put length

6
to 8
to 12
8 (from domain)

465

466

19980201
199B/D2/01
199B/02/01
-1.234000oo000oo00E+03

12,345,678123456,789 1123456789*23456789-

1123456789
00123
123456789123 .456 .789~

123. 456, 789- .


ABC
ACSO

lHALISE~

type
t ype
type
type
type
ty pe
type
type
type
type
type
type
type
type

d: default output length 8


d: increased output l engt h to 10
d: default output length .. 10 (frCll1 d0ll\41n)

A li.nha 26 aumenta novamente 0 mimero em urn dfgito, fazendo com


que a segundo separador seja remcvido.

default output length 22


default olltput length " 11
_same output l engt h, more dig its
sill:e output l engt h. even ecre dig its
slMl ler outpu~ length, negati ve number
smaller output. length, positive nllliler
default output l engt h " field 1I!ngth
default output length 2 length 10
output length increased to iz
output length tncreesed to 15
output 1ength .. field length (left jus t)
default output length Z length 4

A 1i.n.ha 27 escreve 0 mesmo namero, dessavez diminuiodo 0 ccmprimente de safda em 1 e 0 indicador de estouro e vista no primeiro
caractere do campo de saida.

f:
1:
1:
1:
1:
1:
n:
p:
p:
p:
c:
type x:

A linha 28 escreve 0 mesmo nUmero utilizando a mesmo com primente, mas dessa vex 0 mimero e positive. 0 sistema altera corretamente 0 ndmerc e utiliza a campo de sinal para impedir estouro.

Alinha 16 escreve uma variavel do tipo t utilizando seu comprimento


padcio de 6. Nrc hi espacc para as separadcres, de modo que eles113.0
sao escricos,

A linha 18 mostra que se 0 campo de saida for maior que 8 caracteres,


a campo de hera ira gel":lI' uma safdaalinhada a esquerda decerc desse
campo por padrso.
A linha 19 escreve urn campo defmido como sy-uzett. Dentro do
dominio para sy- uzeit, 0 campo Output Length econfigurado como
8.Portant o, 0 comprimento de saidapara a.campo t 2 etambem 8) que
famece espaco suficienre para escrever eambem cs sepa.radores.
A linha 20 escreve urn campo do tipa d que tern urn ccmprimento de
safdapadrio de B. Nr c hi espaljo suficieme pan as separadores, entao
ocampo Ilio contem separadores. Entretanro, a ordem ano/mes/dia
ainda e dererminada pelo padrdo do usudrio.
A linha 21 escreve a mesmo campo de data, dessa vez aumentando
compriment o de salda para 10 a fim de permitir os separadores.
A linha 22 escreve a campo d2. 0 comprimento de d2
dominio para sy-dat um.

A linha 29 escreve urn campo numerico mostraod o que 0 mesmo


alinhado adireita e preenchido a esquerda com zeros iniciais.

A linha 30 escreve urn campo decimal compactado mostrando

comprimentc de saidapadrio e a remo~o dos separadores.


As linhas 31 e 32 aumentam 0 comprimento de safda para 12 e para
15, mostrando os separadcres e 0 alinhamento i direiea.
A linha 33 mostra urn campo de caractere alinhado

A "linha 17 escreve a mesma varidvel utilizando urn comprimearo de


saida de 8, que foi especificado na instruljaowriteoEsse comprimento
de saida anula 0 comprimento de saida padrio e fomece esp~o
suficience na saidapara incluir os separadores.

';:

467

D~ 14>4 llISTRU(i.o WRITE

APlEMDA EM 21 DIAS AUP/'

.A linha 34 mcstra a saId2. a. partir de u,m campo hexadecimal.

8di~6es

para a

A linha 25 escreve urn inteiro maior utilizando 0 mesmo cornprimento. 0 primeiro separador de milhar erernovido para pe.nnitir que
o digito extra seja escrito.

write

ser utilizadas com a instIU~ao writeo

!!!

-e

:J>

><

...

Sintaxe da

instru~oo

wri te

A seguir, veja a sintaxe da inStruljaO writeo


wrfte ret]
(I )
(2)
(3)
(4)
(5)

Up(l)) "['0(,1))

under '12 : no-gap


using edit mask _ : usi ng no edit lMsk
m/'d/yy ' ' '/",,/yy
mf'd/yyyy' " /m/yyyy
"""yy
, '_y
, yymd'
(6) no-zero
(7) no-sign
(8) decimals n
(9) , round n
(10) currency c J unit u
(11) left-justified: centered : ri ght-Just i f ie d

e obeidc do

A linha 24 escreveurn inteiro utilizando 0 comprimento padrio de 1I.

instru~cio

Est. ,e~o detalha algumas das especificacoes especfficas de said. que po dem

A linha23 escreve urn campo de ponto flutuante mostrando a nOtaljaO


cientifia e um sinal inici&!.

a esquerda no

campo de safda.

onde:

'11

eurn nome de string de campo. variivel ou literal.

P, l e n sao literais numericos ou variavc:is.

pea especifica~ao de posi\Sao. Ident ifica a coluna de saleta na qual


campo de salda cleve comeljar.

468

-.-

- .-

- - - -

.,.--

- -.-

_. _

...

D~ lH IN5Tl<U(i.o WRITE

APRE NDAEM 21 DI Al AWl'

e a especificaclc

de comp rimento . Identifi ca

comp rim ent o do

campo de safda no qual 0 valor deve ser escrito.

eurn. especificacac de deslccamenec de subcampo qu e pe de conter

somente literals numericos.

ENTUDA..... U.st a g e m 14.2 Umo sen e de instruc;oe s write pora ilustrar 0 efeito do
escecth cc cec de colune de sctdc

1 r eport ztx 1402.

2 data f1(4} t ype p val ue 1234.

sl eurn. especificacso de comp riment o de subcampc que pede center


somente literal s numeric os.

me uma mascara de edi~o.


c e uma chave monetdria (da tsbela tcurc).

u.

uma unidade de medida (cia eabela t006).

n e urn literal numericc a u variavel.

3
4
5
6
7
8

write:

' 12345678901234567'.

/ 1 ' X'.
'll'

2 'll ' .
3 ' ABC '.
4- fl.

7 fl .
'Z .

o c6digo na Listagem 14.2 produz esta safda:

Se p au I for uma varifvel, a palavra at sera requeri da.


U rna barn. (I) ccmeca um a nova linha antes de se escrever

I '... -+- -- -1-- -+ - -'.

.I

skip .
writ e
write
write
9 wri te
10 write
11 writ'e
12 writ e

Os seguintespontos se aplicam:

469

____+_w__ l
0

valor da

+__

12345678901234567

variavel.
Se nenhuma adic;ao for especificada e du as inst ruC;6es wri t e forem executadas (como write: vt , V2 ' ) 10 valor de vz apare cerf DOl mesma linha de v I

separado dele por urn especc- Se 0 valor de vZnie se ajust ar ao restante da


linh a"arual, ele apare cera na pr6xima Iinhs. Se a comprimento de saida de v2

for maier que a cornprimento cia Iinba,a saida sera truncada adireite. Se 0 valor
gerar uma safda alinhada a direita (como acontece com as variweis do tipo p)
antes de ser truncado adireira, ele sera deslocado para a esquerda, ccntanto que
existam espafJos em branco iniciais para impedir que ele seja truncado. Os
separadores serac rambsrc removidos, se necessaria, a fim de impedir a truncamento.
Uma novo linho de soldo sempre cc mecc re no infci c de um novo
eventc. a s eventos serec obrongidos no Cap itulo 17,

Compreen de nd o

e specificoljiio de posiljiio

Referindc-se asintaxe apresectada acima.c especificaa coluna de saida. 0 valor


de said a pede sobrescrever to da a u parte de uma instrUfJao wri te anterior. 0
programa na Listagem 14.2 ilustra a efeito de uma s~rie de instrulioes wri t eoA
Tabe la 14.4 mostra a efeita cumulativo de cada write, em sequen cia, para

mostrar como chega a saieh..

XYA 1 1. 234 Z

IMluSE ~

As linh as 3 e 4 escrevem uma regua, de mod o que voce possa ver as


colunas de safda.
A 1inha 6-iscreve urn x' comegando na coluna 1.
I

A linha 7 escreve I VZ ' comecandc urn esp~o dep ois de ' XI.

A linha 8 escreve ' VZ comecando na coluna 2. Isso sobrescreve


espa~a e 0 ' Y' que havia side escrito.
I

A linba 9 escreve I ABCI cornecando na colun a 3. Isso sc brescreve os


dois I Z's, mais urn espar;o.
A linha 10 escreve f1 comecando na coluna 4. 0 comprimento de safda
padr.io de fl e 8j a forma to padrs o e alinhado a direita com 0 ultimo
caractere reservadc para 0 sinal. as tres espa~os em branco iniciais
sob rescrevem a safda existen te comecan dc na coluna 4.

A linha 11 escreve fl novamente, dessa vez comegando na coluna 7.


A Iinha 12 escreve 'Z' urn especc d epois de fl. N a salda, parecem
existir dais espacos. 0 primeiro espacc depcis de 4 e a campo de sinal
para fl . Entia , urn espaco ~ escrito e, depois, ' Z' na coluna.16.

...........................

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

470

D~ lU IHSTIlIJIiDWlltTE

APlEHDA EM 21 DIAS ABAP/'

Instruljoes

Sa ida cumulativa

wr ite 1 ' X' .

write

S.liDI~

----+---1--+--

12345678901234567

' YZ'.

X YZ

wri t e 2 'YZ'.

XYZZ

write 3 'ABC'.
write 4 fl.
write 7 fl.
wri te
' Z' .

XYABC
XYA

1, 234

XYA

1 1,234

XYA

1 1, 134 Z

Correspo nd e ao ndmerc de caracteres na Iinha de safda utili.zado para rerer 0

valor de salda.
As especificacoes de posiC;a.o e comprimento sao sempre opcionais. A
pcsicao e 0 comprimeoto podem sec especificados utilizaadc-se tanto urn

literal quanta umavariavel, Sc um dos dais faruma varifvel, deveserprecedido


pela palavn at. at sera op cional se a posifiao e

compri ment o forem ambo s

Iiterais, mas secl exigida se urn dos dais for uma varidvel.
Se u ma barn (f) preceder UIIl2 especificact c de co mprimento au po sir;io,
Ilia poderi .existir urn espaco entre eles. A Listagem 14.3 forn eee exemplos.

EHTU~~ Lista~em 14.3 II.ustrondo o utilizoc;ao dos especlflcccees de '


co mpnmento e POSIC;CO

I r epor t ztx1403.
2 data : n (4) t ype p value 1234,
p
type 1 value 5,
3
1
type 1 val ue B.
4
5

7
B s kip.
9 write
10 write
11 write
12 write
13 write

XY
XlZ ABC
1234
1, 234

A linha 7 escreve I XYZ I utilizandc quatre caractere s de salda. A


formata~o padcio e utilizada, entio a valor e alinh ado a esquerda e
preenchido l direi ta com espaeos em branco.

Na desc ri~o desintaxe da inst ruliao writ e, 0 especifica 0 comprimento de satda.

6 write : 1 '

12345678901234567

A linha 6 escreve os primeiros dois caracteres de XYZ I.

Cornpreendendo a especifica~ao de cornp rirnento

--+---1--.. -

1 +__ 1 ,

1 ' 1Z34567B901234567'.
1 (2) 'XYZ' .
1(4) 'Xl Z' .
'ABC'.
15{4) 11.
at I p(l) f 1.

o codigc na Listagem 14.3 p roduz esta safda:

A linha 8 e~creve 'ABC' urn espacc depois do valor anterior. 0 valor


anterior foi pre enchido adire~ta com urn espalio em bran co. U m ou tre
espac;o em branco eadicianada e. em seguida, I ABC' eescrito.
A linha 9 escreve fl em urn campo que tern quatro caracteres de
comprimento comegand o na coluna 5. 0 sistema rem ove as separadores para fazer com que a valor se ajusce em quarro caractere s,
A liaha 10 escreve fl em urn campo que tern eire caracteres de
comprimento ccm ecaad c na coluna 5. VaIjav eis sio utilizadas, entjic
a palavta at e exigida. A formata~o padrto se aplica, entao 0 valor e
alinhado ~ dire ita com zero s iniciais suprimidos e. ji que exisre espalio
suficiente, separadores tambem sac escritos.

Trobolb a ndo com slJbcarnpos


Voce pode especificar urn subcampo na instru~ao wri t e utilizando as especificalioes de deslocamento e comprimento imediatamente depo is do valor sem
"urn. esp2.~O intermed.i.irio. (Se necessaria , consulte a se~ao anterior sabre as
adi~oes para 2. instrUl;ao writ e.) Voce nao pode utilizer um su bcampo com urn
literal au um campo num ericc (tip os p, i e f ). A List agem 14.4 fornece
exemplos .
.

EIl111DI~ Lista ge m 14.4 Utilizondo subco mpos


1 r eport zt x1404.
2 data 11(4) t ype c value 'ABCO'.
3
4 writ e:

/' ..+

1__ +_ ' ,

5
/ ' 12345678901234567' .
6 ski p.
1
I fl (2)
8 write 1 n-ita) .
9 write: 1( 2)

wr",

n-au), n.

471

DI. ,HlMmU\ADWRlTE I

o c6d.igo na Listagem 14.4 produz est a saida:


SAiOA ~ .

;{[f;
~:,~

12345678901234567

ANlllSE~

A linha 7 escrev e a primeiro e 0 segundo cara ct ere de flo

US

Moth erboards Inc .


64 BitBus Blvd.

adi"ao under

1 rt!!port zt x1406.
Z data f l(4) ~ al u l!: 'ABCD' .
3
4 write: I fl. fl,
5
I fl no-g ap. n ,
I "", fl, " ",
7
/ "", 2 fl . 6 " " .
I " " no- gap, fl no~gap .
B

s ki p.

endsetect .

a ccdigc n~ Listagem 14.5 prod uz esta satda:


1000

CA
E

Parts Unl imlted


111 Queen St.

10lD

CA
E

Industri al Pumps I nc .
1520 Avenue Rd .

CA
E

Chemi cal Nation Ltd.


123 R1 ver Ave.

1020

.!

,' ,'

o c6digo na Listagem 14.6 produz esta safda:

25 ztx l fal-name1,
I ztxlfal-spras under zt ll,lfa1-land1,
zt xlfa1-st r as under zb lfal -namel.

10

1 report ztx1405.

11

odi"a o no- gap

EH1RAOA~ Listag em 14.6 Utilizondo no-ga p

2 hbll!:s: zt xlfal.
3
4 select * up to 5 rows from ztll,lfal order by 1f fnr.
S
write : 11 ztxlfal-11fnr,
IS ztll,lfal~1andl,

A utili za.~ao de no-g ap ira. sup rimir a espacc intermediirio, colocado automaticamen te depois de urn campo, se 0 campo se guint e nao river nenhuma
especificacac de coluna. A Lisragem 14.6 ilustra 0 usa de no-gap .

L1stagem 14.5 Utilizondo a od1iYoO under

A linha. 7 escreve 0 campo namel cc mecacdc na colona 25.

Utiliza ndo

Utilizar under fad. com que 0 primeiro caract ere do campo seja posicionado na
mesma coluna do primeiro caractere de urn campo anterio rm ente escrieo. Voce
nio podera utilizar under com urna especificaclo explrcita de p osi~3.o . A
Listagem 14.5 mostra exemplos.

A linha 6 escreve 0 campo 1and1 comecandc na coluna 15.

A linha 9 escr eve a camp o s t ras comecando na m esm a coluna de name l .


Portanto, e escri eo comecando na col una 25.

A linha 9 escreve a terceiro cara ct ere de f1 comecando em u m a nova


linha em urn. campo q ue tern dois caracteres de comprimento .
alinhamento ea esquerda nesse campo e este e preenchido a dir eita
corn espa~os em branco. Eta escreve entia a conteddo inteiro de fl
com urn espa'i0 em brancc inicial intermediario.

Utilizando

SAloA~

1040

A linh a 8 escreve 0 campo spr as comecandc namesma coluna de 1 andl .


C on sequenteme nte, e escrito ccmecac dc na coluna 15.

A linha 8 escrev e 0 segundo e 0 ter ceiro caractere de fl.

ENlRAOA~

Ch1 ckenFeed ltd .


a71B Wishbone t ene

C ABCD

ANlUSE~

CA
E

~---+---- l----+ ~

AS
BC

",

1030

473

.,

SAloA~

ABCD ABCD
ABCDABCO
, ABCD '
' ABCD '
ABCD,

ANlUIE ~

A linh a -4 escreve fl duas vezes na mesma linha. J a que nao existe uma
especificacac de posit;ao para 0 segundo fl, urn unicc espaco intermediirio sera.escrieo antes dele.
A linha 5 tambem escreve f l duas vezes. A ut ilizacao de no-gap depois
do prim eiro fara com que as da is valores aparecam na saida sem urn

espaco-intermediario.

-SJ " y
;".s.'1!" .:' .

_-__ - ~ -1

o.

.,, _~1' '

~ _ ~~ ; 4" APRE HDA EM21 e rAS U IP/4

f?~""

Dll IH INmtJi.\OWR ITE I

. Ies nos dcis


A linh a 6 escreve fl co m aspas SlIIlp
OIS ladas. 0 5 espacos

"f:""
"

interme diari e s apacecern scm

Se houver mais sub linha.dos do que os caracteres existentes do campo de


origem, 0 efeito de LL sed alinhar a esquerda 0 valor 01 saicla; RR alinhari a
direita a valor (veja Lista gem 14.7 para obte r urn exemplo).
U ma mas cara de edic;ao comecando com urn v, quando aplicada a urn
campo numerico (tip os 1, p e f) , fan com qu e a campo de sinal seja exibido no
corneliO. Se aplicada a urn campo de caractere, urn V ser f a pr 6pria satda,

usa de no-qap.

A linha 7 escre ve f1 entre aspa s simples. As especificacce s de posicio


fazem com que as aspas aparcCiOlm scm esp_liDS inrermedidrios.

'.

A linha 8 utiliza no-gap p:a.ra gerar a mesm a safda.

Utilizando mascaras de edi,.oo

475

I
!

OOUDA~ Lislag em 14.7 0 eleile de va rios mascoros de edi~50

As mas caras de edic;ao perm item :


1 report ztd407.

Inserir caracteres na saIda.

Mover

2 data: n(4) nlul! IABCO '.


3
f2
t ype i val ue 11234'.
4
5 writ e: I ' 5. ' . fl,
5
I ' 5, I, (6) 11 using edit mask 1_=_:_' ,
I ' 7. ", fl using edit maslc ILL_:_' .
7
8
I ' B. I , f1 usin g edit mas k 'RR_:_' .
" f2 usi ng edit mas k 'lLV_ _ ",
/
I 9.
9
10
I ' 10. ' . f2 using ed1t mlsk 'RRV_ _ ",
11
I '11. " f2 using edit maslc ' RRV_ , _ ' .
1Z
I 'IZ . ", f2 using edit Nsk 'LlV_, _',
I 113. " fl using edit mas lc IV_I .
13

sinal p~ 0 inicio de um campo numerico

Inserir ou mane ardficialmence urn ponto decimal

Exihir urn nrimero de ponto flutu ante scm a utilizac;ao de no taljao


cientffica
Em qualquer lugar denuo de uma mascara de edilijio, a caractere de
sublinhado U possui urn significado especial. No comecc de uma mucan de
edi ljao, v, LL. RRe:: tern urn significado espec ial. T oda s a s ou tros caracteres
sao transferidos para a safda scm qualquer alterac?0'
Os subIinhados demrc de uma mascara de edi~o sao substirufdos, urn a
urn, pelc s caracteres do campo de origem (0 campo que voce esd. escrevendo).
mi mero de caracteres reti rad o do campo de origem seri igual ao mirnero de
sublinhado s na mas cara de edi ~ao. Par exemplo , se existirem tres caracteres na
mascara de edi~ao, no maximo tr~s cara cteres do campo de ori gem irs o gerar
u ma saida. Todos os outros caracteres na mascara de edi~o sers o inseridos na
safda. Ncrmalmente, voce tambem pr ecisarf aumentar 0 comprimento do
camp o de safda para acomcdar os caracteres extras.ins eridos p e1a mascara.
Por exemp lo , a instru~ao write {6} IABCDI usin g edi t ma sk 1_: _ :_1
escreve A:BC:D. OS caracteres sao re cirsdos, urn porvez, do campo de origem
e as caracteres da m ascara de edi ~o sao inseridos DOS locais indi cados pels
mascara.Ains t ru~aowrit e IABCDI usi ng edi t mask I : : I somenee escreve
A:BC po rque 0 comprimento de saldapadrsc eigual ao ~omp-rimento do campo
de origem (4).
Se existissem meno s sublinhados na mascara em rela~ao aos que estao no
cam p o de orig em, 0 padrac seriaobeer os caracteres n mais aesqu erda do campo
de orig em. onde n e igual ao mimerc de sub linhados na mascara de edi~ao. Isso
p ede tarnbem ser explicitarne nre espec ificado ao preceder a mascara de edi~ao
com LL. Porexemplo, write IABCD I using edit mask ILL : ' ob tem as tr es
caracteres rnais a. esquerda e escreve AB :C. Utilizar RR, po~";;' vez, obter.i os
tres caracte res mais a direita , entao write IABCD ' using edit mask IRR_:_ I
escrevera BC :D.

o c6digo na Listagem

IAfDA ~

s.

ABeD

6.
7.

A:BC :D
A:BC

8.

9.
10.
11.

14.7 produz esea so.lda:

B:CD

1234
1234
1.23 4

12.

123,4

13.

VASe

A linha 5 gera a safda de f l sem quaisquer mascaras de edicao.


A linha 6 gera a sucia de todos as quatro caracteres de f1 utilizando
doi s pontos pan separi-Ios .
Existem t res sublinhados na mascara de edi~ao na linha 7. mas quatro
caract eres em flo Po rtan to, os tres primeiro s caracteres de f1 sao
utilizados na mascara de edi~ao.

..

A linha 8 obtem os tres ultimos caracteres de f1 e os apJica amascara


de edi,.o.

Exis tern seis sublinhados na mascara de editiao na linha 9, mais que os


quaero ca;acteres de flo 0 valor de fl gera uma sai'da alinhada a
esqu erda com urn sinal iniciaL

I
I

II

476

"PR EMD" EM 21

nus AUr/ 4

DIA 14: ArH~ WRITE

Na linha la, 0 valo r de f1 gera uma saida alinhada

a direita com urn

aquele dominio e sed automaticamente aplicada quando a valor for escrito. A


Figura 14.2 mostra que a dominio zt x1 i fnr utiliza a retina de co eversac ALPHA.

simi icicial.
As linhas 11 e 12 mostram. 0 efeitc da combina~o dos caracteres
inseridos com alinhamento. as caracteres inseridos Ilia sao movidos
em rela~o

010

Figura 14 2

Observe 0 conteVdo
c/o camp o Convers.
Routine.

campo de safda.

A linha 13 mosrra 0 efeiro da utilizacfo de urn V com urn campo de


caractere. 0 pr6prio V ea safda,

Utjljzo ndo os sordos de cooverso o


HOYO ...
TElltO "

Uma saf da de conver-s j o 6 umo retina cha modo que formato a sc ldc. Umo

mascara de edj~o o que ccmecc com seguido pa r um to de quatro corederes


cho ma um m6dulo de func;co que formato a sc fdc. Urn 10 ossim de quofro ccrccteres e
canhecidocomo umc se ide de cc oversec au refino de conversec. (O s m6d ulos de func;oo
serec obordodos em um cap itulo segu inte, mas, par e nquonto, imag ine um m6d ulo de

func;oo como urno subrotina dentro de um outro progromo.) 0 nome do m6dulo de


fu ~ o sere CONV ERSION EXIT XXXX OUTPUT, cnde XXXX e a 10 de quotro ccrcceres
depois de . ~. Por exemplo, writ e ' 000 01000 ' using' edit mas k ' ''~ALPHA ' chcmc 0
m6dulo de fun o CONVERSION_EXIT_ALPHA_OUTPUT. A instruc;oo write possa , em
primeiro luga r, 0 vo lor pore 0 m6d ulo de func;oo, que 0 a ltere confo rme desejado e, em
seguida, retorno 0 valo r e hercde e, entec, tol valor e escntc . Esse scldc em porticular
(ALPHA) exc rnlnc 0 valor a fim de determiner se 0 mesmo consiste lnteircrnente em
numeres. Se esse for 0 coso, zeros iniciais serec retiredos e 0 nu mere ser6 al inhodo a
esqverdc. Os vclcres que contem noo-numericos nco sOo o lterodos par ALPHA. A SAP
fomece o proximoda me nte 60 soldos de ccnversec pore v6rios terefe s de formotoo.
Depois do CopfhJlo 19, sobre as m6du los de fun o, voce sober6 0 suficiente perc ser
capez de crior suos pre pr icsscldcs de ccrwersec .

As safdas de conversao sao particularmente ateis para tarefas complexas


de fcrmancac que sao necessari es em mals de um programa.. Para ilustrar, a
saida de conversjo CUNIT convene automaticamente 0 c6digo que representa
uma unidade de medida em uma descricao significativa no idioma de logon
atual. Por exemplo, dentro de R/3, 0 c6digo para uma caixa de materiais ~ KI.
(KI ~ um a ah reviarura de Kiste, pal avra alema para "caixa"".) Earretanrc, CUNIT
converte KI no mn em e nicc ing les CR. Portan t o, quando co nect ado ern ingles,
write : 'I' . ' KI ' using edi t mask '==CUNIT' . escreveraI crt.Para umususrio
coneceadc em alemao, a safda seria 1 KI. U rilizar tal safda de conversao
permicinique um ccnjunto padrso de c6digos armazenado no banco de clados
sejaauromaticamente convertido para que sejasignificativo no idioma de logon
arual sempre que gerar uma saida para urn relat6rio.

Rotinas de converseo dentro de um domlnio


Uma saida de conversio pode tambcm ser colocada em Converso0 campo de
rotina em urn dominic. A safda sera herdada por todos as campos que utilizam

Portaneo , secipre que ztxlfal- lifnr for escrit o, a valor passara, em


primeiro lu gar, pelo m6dulo de funo;ao CONVERS ION_EXI T_ALPHA_OUTPUT, 0 qual

remove os zeros iniciais dos wares numericos .


Uma sa1da de eocversac dentro de urn dominio pode ser desativada
especificando-se us i ng no edt t mas k na instI1l<;ao write.
A Liscagem 14.8 ilustra 0 uso das safdas de conversao.
EHll.lIlA~ Ust agem 14.8 Uti lizanda scldos de converse o
1 report ItxH 08.
2 ta bles : ztltlfal , ztxmara.
3 data : fl(lO) value '0000001000' .
4

5 write: / fl,

/ fl usi ng edi t mask ' ''-ALPKA'.

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

r 'PREiD. EN 21 DIAl '''PH

DIA lH INSTRlI(iD WRITE

Hi skip.

SCiEENOM~ Inicie agora

17 select single from ztxmara wher-e matnr ' MI03',


18 write:: I
ztxmara-matnr ,
19

(10) ztxrr.a ra- brgew.

20
ztxmara-gl!:we i . o dCJllfnio cont&n converso Saia cle CUNIT
21 set locale la nguage ' D'.
22 wrHe: /
ztXlldra-matnr,
23
(10) ztXllara-brg ew,
24
Ztxlllara-gewe1 . o domfni o cont~ convers o Saia ee CUNIT

lDOD

1000
0000001000

VI
VI

1lI1USE ~

H103

50.000

1. N a tela Development Workbench, selecione 0 caminho de menu


Overview-> Repository Infosys. A tela Repository Information
System do AJ3AP/4 sen exibida.
2. De urn cliqueno sinal de mais (+) ao lado de Programming. A more
sen expandida.
3. De urn clique no sinal de mais (+) ao lado de Fun ction Library. A

4. De urn clique duplo na linha Functi on Modul es. A tela Re.p~sitory


Information System: Func tion Module do AJ3AP/ 4 sed exibida.
S. No campo Function Module, digit e CONVERSION_EXIT_ _
OUTPUT (0 campo ede rolagem; voce pe de digitar urna quantidade
maior de caracteres do que de pede exibir).
6. Pressione 0 botac Execute na barn de ferrame neas Application. A

0000001000

50.000 CR

ScreenCom "How to Display Existing Conversion Exits".

m ore ser::i. expandida,

o codigc na Listagem 14.8 produz est. saida;

H1D3

tela Function Modules sed exibida, Tow as saIdas de conversao que


podem ser utilizadas na instrU~io wri te serio listadas aqui.

KI

Trabalhando com a fo rmataljCio de data

A linha 5 escr eve 0 valor de fl.

. A Iinha 6 escreve 0 mesmo valor, mas aplicaa safda de coaversac ALPHA.


Antes de ser escrito, fl e passado para 0 m6dulo de fun~io CONVER-

SION_EXI.T_ALPHA_OUTPUT, 0 qual detects que 0 valor e inteiramente


numerico, remavend o os zeros Iniciais e alinhan do -o aesquerda.

As especificacces d~ .formata!jio de data, na maiori a da.s vezes, n40 faz;e~ 0 que


vqcC imagina que elasdevemfazer. A maioria tira seu formato da especificacso
Date Format no padrac do usuario (caminho .de menu Sys eem- > User Profile-> User Defaults).
.
A Tabela 14.5 contem uma descricac do efeiec de cada urna delas.

A linha9 recupera dois registros de ztx l fa la nd e escreve 0 campo 1i f nr


duas vezes para cada,
0 dominio de zt xl fal- l i f nr contem a safda de conversio ALPHA, enuc
a linha 12 escreve 1i f nr utilizando tal safda de conversac,
A linha 13 escreve 1ifnr, mas desativa a saida de coovers jo. Isso faz
com que 0 valor real na tabela seja escrito .
A linha 17 seleciona um tinico registro de zt xmara.

g,.,j

A linha 20 escreve
(unidade de peso) utilizando a safda de
cocversfo CUNIT no dominic.
A linha 21 altera 0 ambience de textc para alemao. Isso
a se coaectar em alemao. .

eequivalenre

A linha 24 escreve 0 mesmo valor gewe i, mas dessa vez CUNIT exibe 0
mnemonico alemao.

Exibindo os sordes de conve rsno existentes


Para exibir as saldas de conversao exisrentes, utilize 0 seguin re procedimen to.

Formato

Efeito

Ilffl/dd/yyyy

Escreve 0 data vtilizando 0 formata especficcdc no pe rfil do usucrio.

dd/Ilffl/ YYYY

Esse e 0 podreo, sendo ossim esses formotas rea lmente n60 Iozern

ncdo.
rrm/dd/yy
dd/Ilffl/YY

Escreve a data odotondo um ona com dais coroderes u1ilizondo 0


formoto espec ificodo no perfil do usv6rio. Os dais fczem 0 mesmo

cotsc.
nmddyy
ddnmyy
yynrndd

Escreve 0 data odotondo um ono com dais corocteres u1ilizondo a


formoto
Especificodo no perfil do usvorio, sem seporodores. Os dais fozern 0
mesmo coisc.
Escreve a da ta no formata yym mdd se m sepc rod ores.

479

480

DIA lH INSTRU(ADNRITE

APREND AEN 21 DIAl ABA PIl

o co digc na Listagem 14.9 produz esta saida:

As sofdos de conversec IOATE e SDAlE prod uzem fe rmata s de data


diferentes. Alem disso, 0 m6dulo de fum;oo RH GET DATE DAYNAME
retorno 0 nome do die do semana relative a ~mo -data -; idiomo
especificos. C omo alternative, DATE_COMPUTE_DAYretorn o urn ncmerc
que representa

SAiD! ~

1998/11/23
1998/11/23
1998/11 / 23
98/ 11/23
98/ 11/23
981123
981123
981123
1998NoV23
1998/ NOV/ 23
23/11 /1998
11/23/1998

die do semono.

A Lisragem 14.9 ilustra. 0 usc das especificacoes de formate de data.


fHTRADA~ Listcgem 14.9 Utilizondo as especificac;6es de formate de data
1 report ztx1409.
2 dlltll: fl 11ke sy-datum val ue ' 19981123' ,
begin of f2,
3

4
5
6

!HilIS~ ~

y(4).
m(2J.
d(2)
end of f2,
begi n of f3.
d(2) ,

21

I
I

"perfil do usu!r10 fmt

ex1 bido adot ando um enc com 2

df g1t os
- perfil do usui r i o fmt, ! exfb fdo adot ando um ano cce 2
23
/ fl dd/",/yy .
dfgi t os
"perfil do usuar -t c fmt, anc corn 2 dlg i t os, s en
24
/ fl omld" .
separadores
"perfi l do usuar t c fmt, ana com 2 dl gitos. sem
25
/ f1 dcmnyy.
separador es
26
/ fl yynmdd .
"f ormat o yyrrrndd, sern separ edcres
27
/ fl using edi t mllsk I-!DATE',
28
/ ( 1) f1 using edit mas k I u SoATE ,
29
30 f2 - 11.
31 II'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

~.

~\, ~

As linhas 22 e 23 fazem ambas a mesma coisa: escrevem fl utilizando


a fo rm ate especificado no perfil do usufrio, mas utiliz am um ano com
dois dfgitos.
As linhas 24 e 25 fazem ambas a mesma coisa: escrevem fl utilizando
o formate especificado no perfil do usudrioadotando um anocom dais
djgitos, mas sem separadores.
A linha 27 formataa data utilizando a safdade conversso IDATE. A saida
de IDATE tern 0 formato yyyymmmdd.
A linha 28 formata a datautilizando a safda de conversao SDATE. A safda
de SDATE tem 0 formato yyyy/mm m/ dd.
As linha.s de 30 a 33 mostram como criar seu proprio formate de safda,
Se voce mesmo tivesse de fazerisso,seriamelhor coloca.r esse c6digo em
uma saida de conversdo e)entjo, atribuir urn nome asafda de conversao
na instru~ao write. Voce nao apenas simplificaria seu codigo , como
tam bem de ficarla disponfvel para voce e para codas as outros programadores para uma aplicacto imediaca em qualquer programa.

f1 dd/rrrn/yyyy, -e perfil do usuAri o conf i gura 0 f OrN t o

fl rrm/dd/yy,

linha 2 define fl como sy-datum. 0 comprimen to de safda no


domfnic para sy-dat um e 10) entac separadores serao exibidcs quando
o valor de fl for escrito .

As linhas 19, 20 e 21 fazem todas a mesma coisa: escrevem fl utilizando


o fo rmate espec ificadc no perfil do usufrio.

7
8
9
10
m(2) .
y(4)
II
12
end of fJ.
13
begfn of f4,
m(2).
14
d(2)
15
y( 4) ,
16
17
end of f4.
18
19 write : I fl.
0 perfil do usulri o confi gura 0 formata
20
I f l rtmjdd/yyyy, 0 perfil do usulr10 conf igu ra 0 f ormat a
22

481

.,.

odi~6es no-zero e no- s i gn


A adiiao no-zero suprime os zeros iniciais quando utilizada com variaveis do
tipo c ou do tipo n. No case de urn valor zero, a salda sera t otalmente gerada
com espaios em branco.
Aadi<;ao 00 - 5; qn,quando utilizada com varidveisdo tipa t, pau f , suprime
a saida do caractere de sinal. Em outras palavras, numero s negatives nao terac
urn sinal e apare~erio como se fossem positives.

Utilizondo os

>..:::.::::=::.:. .==-=::..:..' --- - -- - - -- - - -t


A Listagem 14.10 ilustra 0 usa dessas duas adi~6es .

ENTRADA~

Listagem 14.10 Utilizondo no- zero e no-si gn

1 r eport ztx 1410.


2 data: cl( lO) type c
3
nl(10) type n
4
n2(10) type n
fl
type 1
5
6
i2
type 1

value
value
value
value
value

'000123' .
123.
D.
'123-' .
123.

7 write : I er ,
20 "type c",
8
/ cl nc-eere, 20 ' t ype c us Ing
9
/ nl .
20 ' t ype n",
10
/ nl no-zero, 20 "t ype n usi ng
11
/ nz,
20 ' t ype n: eere
12
I n2 no-zero , 20 ' type n: zerc
13
/ 11.
20 'type 1' .
14
/ 12 no-sign. 20 l type 1 using

rc -zerc - ,

no-zero ' .
value ' .
value using no-zero ',
no-sign' .

ENrnDA.~ List a g em 14.11 Utilizando as odi<;6es deci mal s e round


c6digo na Listagem 14.10 produ z esta , aida:

000123
123

0000000123
123

000000000o

t ype
t ype
t ype
t ype
type

1 report ztx1411.

c
c usi ng no-zero
n
n using no-zero
n: zero val ue

2 data f l type p decimals 3 val ue


3 wr ite : I fl ,
4
/ fl dec1ilals 4,
5
I fl d~i lla1s 3,
s
I fl dec;lnals 2,
7
I 11 eectnal s 1.
8
I fl decimals O.
g
If1 d e c i ma1s~l ,
10
I fl round 4.
11
I fl round 3.
12
I 11 round 2,
13
/ 11 round 1,
14
/11 round 0,
15
I 11 round - I ,
16
I fl round ~ 2.
17
1 11 round 3 dec1mals I,
18
I fl round 3 deci mals 3.

type n: zero value using no-zero


123123

t ype 1
type 1 using no-s i gn

Especificando decima is e a rredo nda me nta


Duas instrucces executam

arredonda mentc e

decima l s

variavel de origem ni o seri alterad o, somente a saleh aparecerf diferente. Se


voce aumenur 0 mimer o de decimals, zeros seno acrescea ta dos ao final do
valor. Valo res negatives de n mo veri o 0 decimal para a direita, multiplicando
efetivamen te a mimero por Farores de 10 e, enno, fazen do 0 arr edondamea to
ant es da exibicso.
A adi~io r ound n faz com que a safda seja multiplicada por fatores de 10
e, entaO, arredondada antes cia exibicao. Esse procedimenrc tern 0 mesme efeito
de multiplicar por l O"'*n. Valores n positives movem 0 decimal para a esquerda
e as valores n egatives 0 movem pan a. direita. Isso sera. util, p ar exemplo ,
quando voce quiser gerar uma said a dos valcres pU2. 0 milhar mais pr6ximo.
A diferen~a en tre de cimals e round e que decimals alters 0 numerc de
digitos depois do p ooto de cimal p ara n c) enu a ) executa 0 arredon damento.
round move a ponto decimal para a esquerda ou para a direita pa r n, manten do
o ofunero de di gitos depo is do decimal e, entao, execu ta. 0 arr edondamento
.
para 0 rnime ro de digitos de cimais exibidos.
A Listagem 14.11 ilu st ra 0 us a de deci mal s e round:

round

T res instrucdes sao ut ilizadas para especificar 0 mimero de casas decimais


na safda:

' 1575.456 '.


20 "ea-ts ",
20 'd ~ c 1 ma ls 4',
20 'decimals 3' .
20 'decillllh 2',
20 ' decimals 1',
20 ' deci mal s a',
20'decimal s-1 ',
20 ' ro und 4' .
20 'round 3' .
20 'round Z' .
20 'round 1',
20 'round 0' ,
20 'round 1 ',
20 'round -2 ' ,
20 ' ro und 3 dec1mals 1'.
20 'round 3 dl!c1lnals 3 ' .

decima l s

currency

unit

Utilizanda a s ad i~6es deci rna15 e round


A adic;ao deci mal s n pede ser ueilizads para aum entar ou diminuir 0 ndmero
de casas decimais exibidas na lisa de safda. Se voce diminuir 0 ntimerc de casas
decimais, 0 valor seri arredondado ant es de ser escritc na lists, a valor cia

...

c6digo na Listag em 14.11 produz esta saida:

1.575 .456 as-i s


1.575 .4560
1,575.4 56
1, 575.46
1,575.5
1,575
158

decimals
dl!c illals
decll:1.a1s
dec illlah
decimals
deci mals

3
Z
1
0
-1

484

CIA lH IHSTltU\iOWRITE

l PR EN DAEM 21 DIA5 AB AP /4

0. 158
1. 575
15.755
157.546

round
ro und
round
round

1.575.456

round
round
round
round
round

15. 754.560

157 .545.600
1.6
1.575

ztxlf c3 ~ armazenada no campo ztxt001-waers. Voce pode descobrir isso


clando urn. clique duplo em qualquer urn desses campos. Por exemplo, se der
um clique duplo em zt xlfc3-sal dv, veri a tela Display Field ZTXLFC3SALDV.mostrada na Figura 14.3.
A ubela de referencia e a campo de referenciaindicamque ztxt001-waers
con tfm a chavemoneciri.a..

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_

No linha S, 0 od ic;codecimal s a nOo eorre dondoda para clmc porque a pa rte


frocion6ria do ncrnerc e menor que .5.

A adio dec imals onulo as casas dedmois de finidos no do minio.

Indep end entem ente do Iocol de onde a espedfico~co declmcls e


proven iente, elo ounce indicaro um ponto decimal rea l no nUmero. 0
numerc se re semp re crmczencdc como um valor inteire. A instru o
deci mal s e uma espeoucccec de fonncto aplicoda 00 nemerc an tes
que a mesmo seic utilizedo em qua lq uer lugar, par exemplc, no
instruc;c o wri t e au em um cclcclc. "

A tabela ztxtOOl contem os atributcs de todos 0$ c6digos cia empresa;


sua chave primaria e bukrs. Se voce recirar 0 valorde ztxl fc3- bukrs e pesquisar
a Unica 1inha em zt xt001 que corresponder, waers ira center a cha:ve monetaria.
A Listagem 14.12 ilustra esse conceito.

Os tipos do ODIC. CURR e QUAM, sOo boseodos no ti po de dodo p do


ABAP/ 4 (decima l com poe:tedo).

Util izando as adi~6es curre ncy e unit


As adic;oes currency e unt t correspondem a uma maneira alternative de indicar
a posicsc do ponte decimal para urn campo do tipo p. Elas nao podem ser
utilizadas com a adiliao dec"imal s.
Utilizando a adi~ao cur r ency
Q uando escreve uma quan tia mon erdria, voce tambem deve u tilizar a adiC;2o
currency. N ormalmenre, tais quantias sao recuperadas de u rn campo do tipo
CURR em uma ..bela de banco de dados.
Utilize currency em vez de decimals a fim de especificar a mimero de
casas decimais para os campos de quantia monetiria. Diferent emente de
decimal s, em que voce especifica a numero de casas decimais, com currency
voce especiica urn c6digo monetfrio, como usn (dclares nort e-americanos},
ITL (lira italiana] au JPY (iene japcnes). 0 sistemaentia pesquisa esse c6digo
monetario na tabela TCURX a fim de determinar a mimerode casas decimaisque
deve ser utilizadopara exibir 0 valor. Se 0 ccdigc mcnetario nao for localizado
em TCURX, um padcio de duas casas decimals sed utili:z.ado.
Normalmente, 0 c6digo mccenric tambem e armazenado na mesma
tebela de banco de dados ou em uma outra tabela relacionada. Por exemplo, a
chave monetaria pan. as campos do ripe CURR (sal dv, 50111 e habn l ) na tabela

EIiIDDI~ Usta g e m 14.12 Ulilizondo 0 adi<;oo currency


1 rl!port zt xl 412.
2 tabll! s: ztx1fc3.

3 data: fl type p deci mals 1 value '12345. 6' .


4

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 ,

o c6digo na Listagem 14.lZ produz esta safda:

485

486 I IPREH OI EM71 nus lBAP/4


SAiDA~

!I

123,456

1. 234.56

usa

123 . 456

ITL

100.00
100.00
100.00
100 . 00

usa
usa
usa
usa

100,000 ITl

25,050 III
100,000

ITl

100, 000 J py
300,000 J PY
. 250. 50

CAD

200. 00 CAD

1.000.00 CAD
100.00 CAD

AMluSE ~

D1I IH INSTRU~O WRITE

487

decimalsque nao tenham zero. AMmdisso, nunca aumentara 0 numero exibido


de casasdecimais. Par exemplc, se 0 valor for 12. 30 e decan for I, a safda sera
12 .3. Se 0 valor for 12.34 e decan for 1, a safda sera. 12.34.
andec acrescenrara zeros depois que decan river sido aplicado. 0 namerc
exibido de drgitcs decimais deve ser multiple de endec. Se necessdrio, andec
preenchers 0 valor a direita com zeros, Se andec for zero, nenhum zero sera.
acrescen tad o. Por exemplo, se 0 valor for 12.34 depois que decan river sido
aplicado e 0 valor de andec for 3, deverao existir 0, 3,.6 ou 9 (au qualquer outre
numero multiple de 3) digitos decirn.ais. 0 valor de saida, .partanto, sen
preenchido com zeros para se tamar 12.340. Se 0 valor depois de decan for
12.3456, a safda secl 12.345600. Se 0 valor depois de decan for 12.30 e andec for
2, a safda sera. 12.30.
A Tabela 14.6 contem mais exemplos dos efeieos de decan e andec no
formato de safda,

. A linha 5 escreve 0 valo r de flo

Tabela 14.6 Como as campos decan e andec do tobela t 006 ofetam a fc rmctoc oo
de scfdc de urn campo

A linha 6 escreve 0 mesmo valor,masprimeiro pesquisa ' usn na tabela


TCURX a fim de dererminar 0 mimero de casas decimals. 0 valor USC'
I

DaDesta na tabela, entao a saida eformatada utiliz.a.ndo0 padrdo (duas

casas decimals).

Quando a linha 7 e executa da, a tab ela TCURXindica que III caa tern

casas decimais e, entio, formata

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

valor sem quaisquer decimais.

30.1
30. 1234

A linha 10 seleciona as registros cia tabela zt xlfc3 em ordem de c6digo


d. empre,. (bukr s) .

3D
30
30.1

A linha 13 eacionada sempre que 0 c6digo da emp.resa e alterado.


A linha 14 pesquisa 0 c6digo da empresa na tabela ztxtOOl a fim de
[ocalizar 0 valor monetdric daquela empresa. A chave monetaria esta
disponfvel no campo ztxtOO l-waers.
A linha 16 escreve 0 balance obtido utilizando 0 mimero de casas
decirn ais indicado pela chave monetaria no campo ztxtOOl-waers.

2
3
3
3

o
o

30.100
30.123400
30
3D
30.1

N orrnalmente, a. adiliaO uni t eutilizada com as campos do tipo QUAN que


sao armazenados no banco de clados. Cada campo deve ter urn campo de
referenda do tipo UNIT; A unidade de medida para 0 valor no carD;pa QUANestara
armazenada Iii. A Figura 14.4 mostra que 0 campo de referencia de ztxmarabrgewe ztxmara-gewei.

Utilizanda a ad i~ao un it
A adi~ao un i t e utilizada para especificar a numero de decimais exibido para
urn campo de quantidade. As unidades, como cm (centfmetros) ou l b (libras),
dererminam 0 mimero de casas decimais a ser exibido. 0 c6d.igo, como 1% 1
(por cento] ou lKM 1 (quilcmetros) e especificado depois que unit e automaticamente pesquisada na tabela t006. Em seguida, as campos decan e andec
determinam quantas casas decimais serjo exibidas. Os dais eoni sm urn valor
numerico.
decan especifica 0 mimero de valores decimais estimados em zero que
devem ser truncados. Ele remove os zeros fmais e nunca truncard as casas

Entrada

488

D~ lH INSlRU\lO

A'RENDA EM 21 DIA' ASAP"


Figura] 4 4

ztxmara- brg ew unit ztxmara-gewei,

33
34
3S
36

Se vod der um clique


duplo no compo

ztxmara-brgew,
ven5umo tela
indicondo a tobelo d e
referfndo e 0 compo.

zt xmara-ntqew,
ztxmara-ntgew unit ztxma.ra-ql!wef,
. ztXlllara-gewei,
85 tOO6-decan.

37

38
39

.,m

91 tOO6-andec.
endse'lect ,

o c6digo na Listagem 14.13 praduz esta salda:


99 .OO

A Lisugem 14.13 ilu stra 0 uso dessa adi>ia .

99.1234
99. 1234
99.1200
99.1 2
99.1
99.1

EN1iAnJ.~ L1slagem 14.13 Ulilizendo e ed iC;ao un!t


1 re port ztxl(1) .
2 tabll!s : ztxlMra . t OO6.
1 data : f1 type p dec1M.1s .. vetue '99 .oo'.
f 2 type p deci mals 4 i lul! '9 9.1234' .
5
13 type p deci mals 4 value ' 99.1 200',

6
7

,
9

(4 type p decimals 1 value ' 99. 1',


",rH.!!:

I n,

MI00
HI0l
M102
M103

'as-i s' ,

/ fl unit 'Hl', 'ml - ml1 l il iters eecen 3 andec 3'.


/ 11 uni t '%' . '% percent
eecen 2 andec 0'
/ n 'unit ,
- i nches
decan 0 endec ) ' :

..

10
II
12
/.
13
/ f2,
'as-1s' ,
14
I tz unit '%' , '% ',
IS
'15-15 '
/ fl.
16
/ 13 unit ' %' , ''1;' ,
17
/ fI,
' es-t s ' ,
18
f4 unit
'% '.
19
20 skip .
21 wr1te: /1 2 ' br gew as-is ',
22
31 ' -nth units' ,
23
48 ' ntgewas-is ',
24
67 'with units '
2S
79 'unit s' .

26
85 ' decan', .
27
91 'andec .
28 ul tn e ,
.
29 select frtlCll ztxma l"'l .
30
sel ect s i ngle t r Oll t 006 whe r e llIS ehi
31
write : /(5) ztxmara-mat nr
32
ztxma ra -bi'Ql!w.

es-ts

99.000 .1 ~ 1I111 111ters eecan 3 eneec 3


99 .00 , - percent
eecan 2 andec 0
decen 0 andec 3
99
- 1nch!!5

AHlllS! ~

as-Is
%

as- is
%

as-is
%

brg ew I s- is

w/un1ts

102. 560
10.100

1. 000

102. 560
10. 100
I

50. 000

SO

nt gI!W

as-is w/units units decan eneec

100.000

10.000
0.000
0.000

100 M3
10 PAL
o ROl
o CR

a
0
0

o
o

A linha 8 escreve fl sem utilizar a acllljaO unt ts.


A linha. 9 utiliza a un idade ML (mililitr os). Uma. pesquisa e automati camen te realizada na tabela t006 quanta a ML. Essa liaha conrem decan
3 e andec 3. decan 3 faz com que os zeros depois da terceira casa decimal
sejam remcvidos. andec 3 faz com que a ndmero de -decimais seja um
na me ro multiple de tres. Nesse ponto, ele ja ~ entac a saida.eexibida
utilizanda tres decimals.

A llnha 10 farmata f l utilizando a unidade %(por cento), que tern decan


2 e andec O. decan 2 essabelece que as zeros finais depais do segundo
deci mal devem ser remo vidos. andec 0 indica que naa hi mais nenhuma
medificalji o e, entia, a saida sen de duas casas decimais.
A linha 11 uriliza a unidade [polegadas}. decan 0 indica que todes as
zeros de cim ais devem ser truncados. andec 3 indica. que 0 ncm erc de
decimais deve ser p reenchidc com zeros para tres casas decimais.

ztxmara-gewI!1.

N; linhas de 13 a 18 [o rmatam de

t2. t. utilizando a unidade %

Na linh a 14, decan 2indica que as zer os finais depois do segund o dlg iro
decimal devem ser rru ncsdos . Nrc existe nenhum, entia nada sera

489

490

D~ lUINSTRU(iO NRlTE

APRENDA EM 21 DIAS AUP/!

t runca do. andec 0 indica que me haven ma.is nenhum preenchirnento,


pcrtanto, a saida sed jcrmatada utilizandc qu arrc dtgirc s decimals.
Na linha 16, decan 2 fu. 0 truncamento dos zerosfinais.

49\

AB
. + 1. + . 2 +.3. .. . +. . 4
1234567890123456789012345678901234567890
AS

Na linha 18, decan 2 m o faz nada porque mo ha nenhum zero final a


ser trunc ado. endec e 0, entia ncnh um zero sera acrescentado ao final.

A linha. 29 seleciona todos as registr os cia tabela ztxmara.


Paraada, a linha 30 seleciona 0 registro de tOO6 que contem a unidade
em zt xmara -gewei. Observe que issa nie ! normalmente feito. E
apenas fcito aqui para mostrar as valoresde decan e andec.

As linhas 3, 4. 9 e 10 escrevem UIIU. regua, de mod o que p ossa ver os


mim eros cia colun a D.2. saida.

A linha 5 escreve f1 utiliz.anda a formata~o e a comprim ento padrao.


A fOI1I1a.Uljio padrio para uma varisvel do tipo c espe cifica um alinhamento

Nas linh as de 32 a 35. as valores gewei e nt gew sio escritcs de dUOlS

maneiras. Primeiro, sio escrieos como sio e, entao, sse reescritos


utiliz and o-se a adi~io un1 t a fun de mostrar 0 antes e 0 depois.

As linhas 37 e 38 escrev em as valores decan e andec que cram utilizados


para form atar cads

Mudgndo

linha.

glinhamento

Com a ut.iliza~o de l eft -justifi ed, centered e right-justi fie d, voce! pede
mudar a valor de saida denero d o espa ljo distribuIdo p ara 0 campo de suda.A
Listagem 14.14 ilus tra esse conceito.
ENTRADA'" Listagem 14.14 Utilizando as cdil; 6es de alinhamento para a instruc;co

a esquerda,

entao a. safda apareced alinhada i esquerda

dentro de seu comprimenro de saidapadrsc (6).


A linha 6 produz a mesma saida porque tambem especifica
nhmlent.o a esquerda.

ali-

A linha 7 centraliza 0 valor deat rc do com prim ento de saida pad.rio


de 6.
A linha 8 alinha a direin 0 valor dentro do comprimento de safd..a.
padrac de 6.
As linhas 11, 12 e 13 especificam urn comprimento de saida de 40. 0
valor e entao alinhado a esquerda, cenrralizadc e alinhado a direita
dentro daquele co mp rimento.

,.. write

Resu ro o
1

rep ort ztx1 414.

2 data : 11(6) val ue ' AB'.


' .... +.... 1' .

3 write : /
4
/

' 1234567890 I
fl.
f1 left-justified,

5
6
7

/
/
/

8
9
10

/
f1 r1ght .j usti f 1ed.
/ ' .. .. +.. . 1. . . +. . 2 +. . .. 3. + .. .. 4',
/
' 1234567890123456789012345678901234567890 ' ,
/(40) f1 left -just i f i ed.
/ (40) 11 centered.
/(40) fl r19htju s t i f i~ .

11
12"

13

de dados do AEAP/4. O s campos do DOle s.o baseados nos tipos de


dado s do AJ3A P/4 e, assim sendo , herdam

fl cent ered ,

o c6digo na Listagem 14.14 produz esta saida:


+.. . . 1
1234567890
AS

A.
A.

Se voce nio estabele cer qualquer especificacac de formato ou de


comprimento na instru~ao wr1 te l 0 formato e 0 comprimento padrao
do campo seraoutilizadas. Es ses padroes sao originados a partirdos tipos
0

formato e a cc mprimenro

padrac. Alem disso, as especificacces de formate, como ntim ero de


casas decimais e comprime nto de saIda eambem podem ser especificades no domfnic; estes anul am os vaIore s herdad os.

Os cam pos de dat a e hera serac exibi dos com separadores, se exiscir
espacc suficiente para eles no campo de sa.!da. Se nao existir, os
separadores serio completamente removidos . Em um campo numerico, os separadcres de milhar sio removi dos, urn par vez, comecandc cia esquerda do campo em direljaO a direita a fim de exibir
mais djgit os. A te mesmo 0 campo de sinal sen utilizado se 0 mesmo
estiver em branco.

Para a maioria cbs especificaljoes de form a.t o de data, 0 pad.rio do


usuano defmiri. peto menos em parte, como os campos de data

.:8

492

APREMD'" EM 21 etAS UAP/4

OIA lU IHSTllU\lOWRtTE

deversc ser formatados. De tcdas as especificacces de formato de data,


somenre yyrrmdd anulari ccmpletamente 0 padrao do usudrio.

P&R

U rna mascara de edi'iao pede ser utilizada para inserir caracteres na


safda, Eta tambem pode solicitar uma saida de cocverssc que ici

formatar a valor, utilizaodo 0 c6digo do ABAP/4 . Uma safda de


converssc ~ como urn conteiner reutilizavel que concern urn c6digo
para formatar urn campo.
.

o m6dul o de fun~io INPUT E chamado sempre que urn valor E


inserido em urn campo, desde que 0 domfnio daquele campo
especifique uma sarda de conversto. A safda de cocversso INPUT
conven e a ent rada do ususrio para um novo formate antes que 0
programa a receba. Eurilizada pan reduzir a quantidade de c6digo
repetitive necessaric para farm atar novament e urn valor de entrada, de modo que a prognma que 0 utiliza nao tenha que fazer

Utilize no-zeropara suprimir zeros iaiciais nos campos do ripe n e tipo


c.

Utilize no-sign para remover 0 campo de sinal final "da exibi~ o.


Utilize decimals para especificar
devem ser exibidas.

mimerc de casas decimals que

isso.

Utilize round para. indicar a posifiao do ponto decimal no valor.

o
o

Utilize currency para especificar 0 numero de casas d.ecimais para os


campos de quantia moneciria. currency pesquisa 0 c6digo monetaric
na ubela tc urx a fun de determinar 0 numerc de decimals. Se 0 c6digo
nao for Iocalizadc, urn. padrao de duas casas decimais sera utilizado.
Utilize un i t para [ormatar as campos de quantidade. A uaidade e
pesquisadana rabela t006.decan determina 0 ndmerc de zeros decimais
a ser remcvido e andec determina 0 namerc de zeros a ser adicionado.
I?fgitos decimals diferentes de zero nunca serao removidos.
Utilize left -just ified, centered e right-justified para alinhar
valor dentro do comprimento do campo de salda,

---=-------

I Fa~a

Permitc que cs usudrics es pec fi quern


sevs pr6prios fonnotos de ~oto.
Utilize as scldcs de ccrwersec para
executor torefos de formotec;oo
repefitivcs, especiolmente se forem
com plexes.

Nao ccdlfiqve demcis decimals 2 perc

quon tios em d6la r. Por suo vez, utilize a


odic;oo currency,
Nao ccdrhq ue demais duos casas
declmcts para % ou parc quo lquer outro
unidade de medidc . Por suo vez, utilize a
odiC;ao unit.

Observei que existem tambem modules de fun~o com os


nomes CONVERSION_EXIT_XXXJO(_INPUT . Para que servem?

Como criar um a salth de conv ersio?


Se nao souber como criar um m 6dulo de Un c;ao, voce precisara
pr imeiro ler 0 capitulo relacionado com esse assunt o. Se voce
souber como criar urn m6dulo de fun fiao, erie urn com a nome
CONVERSION_EXIT_XXXXX_OUTPUT cede XXXXx ccrrespocde a urn
Dome-com cinco caracteres por voce definido. Deve haver urn
parlmetro de iraporracac denominado INPUT e um pargmetro de
exponac;aodenominado OUTPUT. 0 valor original passado da instnlfiaO write erecebido arraves do parnneer o INPUT. Voce pc dera
formaef-lc novamente e ao final do m6dulo de funC;ao, atribuir 0
novo valor 200 paramerrc OUTPUT. Uma boa maneira de comecar e
copiando urn existente.

Workshop
o Workshop cferece duas maneiras de voce verificar 0

que aprendeu neste


capjtulo. A seljaoTeste oferece perguntas pan ajudar a solidificar seu entendimento do coneeedo abcrdadc e a se~o Exercicio permite que voce pratique 0
que aprendeu. Voce pode encontrar as respostas as perguntas do teste e aos
exercfcios no Apendice B, "Respcstas as pergun tas e aos exercrcios".

Teste
1. 0 que voce precisa fazer pan garantir que as altera~6es no padrio do
usuirio entrem em vigor?
2. 0 que acontecera quando um.a ma-scara de edifiio que come~a com
urn Vfor aplicada. a urn campo numerico ou a. urn campo de caractere?

493

3. Com quais tipos de varisveis a adiljao no -stan pode ser utilizada para
fazer com que urn mimero negative .aparelja como se fosse positivo?

Exercfcio 1

SEMANA 2

Esereva urn programa que produza a seguinte said.:


., . + 1 +. 2 :+. 3 + .. 4
First
December

January

First

Revisao
Na semana passada, voce realizou as seguintes tarefas:

criou os objeros de dados vuiiveis e fixos utilizando os tipos de


dados predefinidos, bem como os definidos pelo usuirio
aprendeu as regras de sintaxe do AB~/4 e as instruljoes para
ccntrolar 0 and.a.mento do programa
descobriu as instrucoes de atribuiljao e as regras de conversac
definic as tabelas intemas e as preencheu utilizando areas de
trabalho implfciras e explrcitas

otimizou ainstru(jao sel ect a fun de preencher de form a direta


e eficiente urna tabele interna
executou
internas

processamento de quebra de controle em tabelas

urilizou as 0pljoesde formatilrsao da instruljao wri te e observou


as efeito s de tipo de dado sa bre a saida
empregou assaldasde ccnversac e detectou sua preseclia denrro
do dominic

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

No Dia 15, "Tecnicas de formatatjao, Pa rte 1", voce utilizard as


opcoes de fo rmatafiao grifica da instrutjao sr-t t e (as symbol, as
icon, as line), impressjlo lista de saida e manipu la a sai'da no
spooL
Durante 0 Dia 16, "Tecnicas de formatacio, Part e 2", voce
utilizard as instrugoes comuns de formatac;ao new- I i ne, newpage, ski p, back, pas; t i on e set bl ank 1; nes; e enviara safda para
e spool que ueiliza new-page pri nt.
Dentro do Dia 17, "Modularizacao: event os e sub-retinas",
voce utilizari as eventos init ial izati on, start - af-s el eetion e
erd-cf-s electtcn, definira sub-retinas int ernas e extemas; e
definiri verifveis locais , globais e estdticas e areas de trabalho

de tabela.
Durante a Dia 18, "Modularizacao: passando pardmetros para
sub-retinas", voce passara pardmetrcs digitados e n jc digitados
para sub -retinas; passard parametres de tres man eiras: por referaacia, par valor e par valor e resultado; e pass ard strings de
campo e tabeles internas
uma sub-rotina.

para

498

APR EHDA EM 21 DIAl ABAP"

Durante Dis 19, "Mcdularizaclo: modules de fun~ao, Parte 1", voce


entendera e util izara a instrucac i ncl ude, criard gropos de fun~o e
m6dulos de funr;ao e definira parametres de impcrtacao, de exporta~o e aiterdveis.

No Dia 20, "Mo dularizacao: modules de func;ao, Pane 2", voce


entenderd as compone ntes e as estrurura de urn gropo de fun~ao e
definir:i dadcs globais e sub-retinas dentro de urn grupo de func;io.
No Dia 21, "Telas de selecic ", voce ccdificaei telas de selec;ao que
interagem cern 0 usudrio, utilizara elementos de formatacso para criar
telas be m-projetadas e eficientes de selec;ao e utilizara telas de se1ec;:io

para manter integridade de dados,

Di 15
Tecnicas de format a~ao, Parte 1
O bjetjvos do capitulo
Depois de completar este capitulo,voce sera capaz de:
Utilizar as opcoes graficas de fonna taljao da instrucio write (como
simbolos, leones e linhas).
Imprimir uma Iiseade saida e manip ular a saida no spoo1.

Criar cabegalhcs e rodapes (no standar d page heading, top-of-pace,


end-cf-peoe) .
Utilizar a instrulj:3.0 r eserve para manter grupos de linhas junt os na

Iistade safda.

Eormotoc;6 0 gr6fico com a instruc;60 wri te


Escr evendo imagens simples voce pede utili zer as trSs adilj:oes mos tradas na

Tabela 15.1. .

Efeito

as symbol
as icon
as 11 ne

hllpJ l www.corTlPus.com.bl.

Exibe urn simbolo em pretc-e-brcncc


Exibe um ko ne"decor
Exibe urnccrcctere de desenho de linho

........

-FFFFFee
~

_~

500

enmnnn

-~~

nn

APREHDA EM 21 DIAS ABAP/4

' t axe p a ra as a d'u;oes


'
- wrJl t e
S 10
g ra' f leaS
pa ra a ,lOSt rU~ao
~

write n1 (a)

(b)

IS

icon.

(e)

IS

line .

illS

/4 sYD'_ fi1led_squaT"l!

11

iymbol.

iI.S

s)'lllbol, ' KHAl ' ,


'KHBl',

/4 sym_fill ed_square as symbol.


/ 4 s)'lLfilled_square as symbol.

10

'KNCl'

lZ skip.

13 ul tne .
14 se lect liP to 5 rows f rom ztxlfal.
15

onde:

As adic;oes (a) , (b) e (e) sao mu ruamente exclusives.

nl

e 0 no me de urn sfrnbolo, {cone au caractere 11ne-dres.

write : / ztxlfal - l1 f nr ,

16
17
18
19

ztxl f al-namel ,
sytl.Jlhon e as symbol,
ztxlfal- t elfl.

endset ect .

o ccdigo D' Listagem 15.1 produ z a sald. mcs trada D' Figura 15.!.
Utiliza od o a
lOyD ....

m.o ,.

Urn

adi~ao
s{mbolo

as symbol

e urno figure

blcclcr simples

de

As linhas 4 11 escrevem urn. lista de Domes de rabela dificil de


codificar na forma de marcadores.

urn simbolo comum como urn

quoclrcdo, urn d rculo, urno po sta ou urn documento. A moiorio dos sfmbolos
ocupa um unico ccrcctere no liste de so ido, emboro a lguns poss om ocupor do is espcccs,
por exemplo,o slmbclc de urne moo opontondo pora a esquerdo (sym_1eft_hand). Umo
instrui;oo de exernplc serio write sYDI_l ef t_hand as syrrtlol .

A fim de escrever um sfmbolo, voce deve incluir uma das duas instrucoes
seguintes na parte su perior de seu program a:
inc:lud. <syrd,lol:> .

As linhas 14 a 19 escrevem codigcs, nomes e c ame ros telefcnes de


fabricantes precedidos pelo simbolo de telefone.

Utjlizaodo a

ad i~aQ

as i con

Um fcon e_tsemelhonte 0 um sfmbclc , excetc pelo fato de que e umo nguru


multicolorida qU!I pode epereeer no listo de scjdc. A maioria dos leones ocupo
dois espocos no Iistc de scldc, emborc alguns ocupem mois. Um exemplo de umc
instrvo write que escreve urn leone serio write 1con_l ed_red as 1con.

IOVO ....
lEUO "

ou
i ncl ude <list> .

Tcdos as s!mbolos sao imprimfveis. Isso significa que se voce enviar sua
safda p ara a impresscra, eles aparecerio no papel exatamen te com o voce os ve
online .

M
OYO....
TEi.ll:O"

5
6
7
B

ou
t nclll de <l1st>.

ccntem um

ENTRADI ~ ListCl gem 15,1 Sfmbolos porc exibi~iio


2
3
4

include <icon>,

0 nome entre slncis de maior e menor e urn progroma ind ude. Esse progromo

conjunto de instruc;oes que defineos names dos simbolos que voce


pode utilizer. 0 include <symbol > conMm s6 os dennic;6es de srmbole. 0 include <1 i st>
co ntem sfmbolos, leones, ccrccteres de desenho de linhc e definit;Oes de cor. A llstcqern
15.1 contem um progromo de exemplo que utilize simbolos .

Para escrever u m leone, voce deve incluir uma das duas insrrucoes
seguintes na parte superior de seu programa:

re por t ztx1501 .
include <syrrtlol>.
t ables ztxlfll.
wri te : I sy:nJllus_box as symbol , ' Vendor Ma ster Tables',
/4 sym fi ll ed circl e as symbol , ' LFAl' ,
/ 4 sym)111e(cin::le as symbol, ' LFBl' ,
/ 4 syrn f i ll ed ci r cle as symbol , ' LFCl ' ,
/ sym~l us_b~x as symbol , 'Customer Ma st er Tabl es ',

N em todos os leones sio imprimfveis. 0 procediment o para determinar


quais podem ser impress os segue mais adiante oeste capitulo.
A Listagem 15.2 escreve alguns Icones de exemplo.

EKTUD.l~ Lista gem 15.2 Como escrever kones em uma listc


1 rtport zo.1502. .
2 in cl ude <icon> .
3 tables: ztxmara, ztXllgef .
4 data f co 1i ke i con_generate .

5
6 write : / 'checkmark '.
7
/ ' r ed x" ,

15 ico n_checked es icon ,


15 ico n_tncOJlPl ete as icon,

,...-,
77

502

euIS.TtCNICASDE FORMATA\lD,PAlm1 503

APRENDA EM !1 DIASABAP/4
8

9
10 s kip .
11 ul tne.
12 skip .
13 wr1te :
14 ul1ne .

I
I

' o'll!!!n 1@w '.


15 icon_overview as .1con,
' t i lDe peMod'. 15 ic onJll!Mod as teen.

F i g u r a 15 2

Este e IHTl exemplo


de sardo de listo
ccn1endo fccnes.

' U st of Materi a15 wi th Rad;cect t ve Jndi cat or -s '

15 select * f l"Olll l txmara .


16
clear tee.
17
18
19
20
21
22
23
24
25
26
27

1f not ztxmarastoff 15 initia l.


select sing le * from ztxmgef where stoff " ztxmarastoff .
if ztxmgef-lagkl .. 7 .
1co .. ico"_!ll!neratl!.
end;f.
endi f .
wrfte : lieD as teen ,
ztxmara-matnr.
zt xmaraellt art ,
ztxlIIara.matkl.
Itxmara -brg!'W.

ztxmaraentg!W.

28
29

30

SiiDI ~

ztXll\ilri!l9~i .

As fuLhas 6 a 9 escrevem um exemplo de quatro leones diferentes.

eneseteet .

A linha 4 define um a varifvel identificada como i co para canter urn


leone a ser escrito, Qualquer nome de Icon e pode aparecer depois de
like.

o c6digo na Listagem 15.2 produz a safda mostrada na F igura 15.2.

A linha 15 seleciona registros cia tabc:la de materiais ztxmar a. Pan cada


regis tro, alinba 17 pesquisa a ndmero do material de risco em ztxmgef.

Figura 1 S 1

A linha 19 deeermina se 0 material e radioativo. Se for, endo


id entificado como i con_gener at e e at ribu ldo avaridvel tcc.

Este e um l!xomplo de
sardode listo
COllftondo

sfmbolos.

Iccne

A lioha 23 escreve a valor de 1co utilizando as ; con para fazer com


que 0 valor seja inrerpreradc com o urn leone. Campos adicionais de
zt xmara tambem sao escrito s.

Utjlizando a

adi~6a

as 1 j ne

Um coradere de desenho de linho e um ccrcctere que pod e ser utilizodo para


desenhor bnbcs em umo listo. Voce pede utiliz6-lo pa ra crier linhas horizonta is
au verticcis, umo ccixc, uma grade ou umo estnJturo do tipo ervore.

NOYO '"
TElMO r

>

.,"~" ;;-, _,., ",;_ ._~ _,, ~,:,; ,; , ; ; .;. cjili>!!~


c

. .. ."

Em geral, para criar uma linha horizontal, voce utilizaria sy-ul i ne. Simplesm ente escreva-o e especifique 0 comprirn ento nec essaria. Po r exemplo,
para escrever uma linha ho rizontal que corne lia em posiliao 5 para urn comprimenta de 10, voce codificaria write 5(lO} sy-ul i ne. Pa ra eriar uma linha
vertical, utilize sy- vl i ne: par exemplo, wri te: sy-vl i ne , X sy-vli ne escreveria uma linha vert ical em qualquer lado de urn X. Se houver uma interse~ao
I

I ,

_ _ aa
504

A,m DA EM 21 DIAl ABAP/4

de linhas na salda, 0 sistema. inseriri 0 caractere apropriado de conedo. Per


exemplo, onde a borda de uma lioha horizontal e vertical se encontrarn, urn
canto de caixasera desenhado . Para proporcionarcontrole absolute de: desenho
de linha ha caracte res 1t ne-draw adicionais disponfveis .

mm

D~ 15,OOIGlS IlE FORMA14>,O,' Arn 1

o c6di ga na Listag em 15.3 praduz a safda mostrada na F igura

15.3.

A linha 2 inclui as defini~6es para to dos as s!mb olos e caracteres de:


desenho de: linha de modo que possam ser utilizados oest e programa.
A linha 4- define duas variaveis qu e podern arm azen ar caracteres de

Lis ta gem 1 5 .3 Sfmbolos e corod eres l ine-draw


1 report ztx1S 03.
2 i ncl ude <list> .
3 tables : Ztll fal, ztxlfhl . ztltlfc3.
4 dat a: l 1nel l1ke I 1ne_hor izontal_line ,
5
l1ne2 11k1! li ne_horizontalJine.
6

7 select 'It fl"Olll ztxlfal.


select singl e " fl"OOl zulfbl where l H nr ztxl f al l1fn r.
8
if sy-subrc " O.
9
10

11
12

13
14

15
16
17

18
19

20
21

22
23
24

25
26
27

28
29
30

31
32

33
34

35
36
37

38
39
AD
41

42
43

wrtte: I sr - vl f ne , s)'Ill_ope"_fold er as s~o1.


else.
write: I sy-vltne , sY"Lfolder as symbol.
endif.
writ e: ztxlftl -l1 fnr. 30 sy- vl tee .
select" from ztAlfbl where 11t nr ztxltal11tnr .
select single li fnr f1"Olll ztxlfbl i nt o (ztxlfbl -lf fnr)
where 11 fnr ztxl fbl -lt fnr
and bukrs > ztxlfbl-bukrs .
i f sy-subrc O.
Hnd line_1eft _nri ddle_corner.
l1neZ l1ne_vertiea l_l1 ne.
else;
li ne! l tne..bottclIUeft_corner.
cle ar l tnez,
endif.
write : /
sy-vBn e.
4 li nd as lt ae,
zt xl1bl-bukrs,
30 sy- vj tn e,
select * from zt xl fc3 wher e 11fn1' '" ztxl f bl l1 f nr
and bukrs ztx1fbl-b uk1's .
write: I sy-vttne,
4 l1ne2 as l i ne,
8 li neJ eft_lli ddl e_comer as line,
ztx l fc3-gj ehr, ztxl fc3-shbkz.
30 sy~vl fne.
endsetect ,
if sy-s ubre O.
write 8(Z) line_b ott cm) eft_corner as li ne.
end1f.
endselect.
write: /(30) sy-ult ne.
endseleet ,

desenho deliaha,

A linha 7le todas as linhas de zt xlfal.


A linha 8 Ie zt xlfbi para ver se ha qualquer registro-filho para a
registro ztxlfal atua].
Figura 15 3
EsIe Ii urnexemplo
de safda de listo

contendo corocteres
de desenho de linha.

Se existirem registros-filhcs, a linha 10 escrev era uma linha vertical e


urn slmbolo de pasta aberta. Se nc nhum fa r lo calizadc, serio escriras
urna linha vertical e pasta fechada.
A linha 14 escre ve 0 ntimerc de fab ricant e na mesma linhae entaa uma
linha vertical. na posi~ao 30.

A linha 15 11 as regisrros-filho s de zt xlfbl.


A linha 16 olha na fre nte para determiner se este ~
filho au se hi rnais.

rr

ultimo registro-

Se h ouver mais regisoos-filhos, a linha 19 configu ra a variavel 1; nel


para armazenar urn caractere de desenho de linha de canto esquerdo
de meio, e l i ne2 para armazenar uma linh.a vertical. Sy-v1tne poderia
ter side utilizade aqui em vez de 11ne_vert1ca1_1t ne.

505

--------4-----------------.f
506

DIl lS,ITCNIClS DEFO....Tl(lO,p'mI

I 'PRE NO' EM 21 nus "'P"

!l

I.

~I:

1 re port zo 1504.

As linhas 30 a 37 escrevem as filhos do registrc ztx lfbl atu al utilizando caracteres de desenh o de linha aprop riaclos.

2 include el tst>. -def1n1t;lles para {cones , sflllbolo s + desenl'lo de linha

3 t abl es: zUlfi l. ztx lfc3 .


4 data : it 11ke ztxlfc3 occur s 100 wit h header line .
S
;co_' 11ke 1con..9ree n_' ight.

A linha. 42 escreve urn subliohado com urn comprimento de 30


caracteres.

6 setecr v from zb1fc3 i nt o table It.


7 sort it by lifnr bukn gjahr shbkz.

Exibindo as simbolos, leones e ca racteres 1; ne- draw


disponiye;s

8 l oop at it .
g

1f tt - se'lev

Utilize os pass os 1 a. 8 do procedim ento a seguir para exibir os sfmbolos, leones


e caraceeres de desenho de linha disponfveis. Seguindo to dos os pass os, voce
ira gerar uma instruCJao write que escreve 0 item selecionado na lists .

10
11
12
13
14

1. . C omece edinndc qu alquer program. no ABAP/4 Editor. Vace deve

15

1coJ 1co"_gre en_li ght .


el set f 1t~sa ld v betwffi' 1000 and 3000-.
fcoJ .. 1conyellow_l1ght.
else.
1coJ i co!,!_red_l1ght.
end1f .
at new 11 fn r.
ff sy-tab1X ~ 1.
write: / 5(82) sy-ul1ne .
19 lfne_bottOlll_m1ddle _corner as li ne.
21 l1ne_bottlJll_middle_corner as li ne.
s lt:1p
endt f ,
write: /S{lS ) sy-ul t ne,
/ S-sY- vl1ne . sYIK_docurr.ent s IS symbol .
ft. ltfnr. 19 s1-vt.ine.
/ 5(82) sy-uli ne.
19 line cross as Jtne ,
21 l1ne=top_middh_corner as line .
endat .
write: / i co_l as icon.
5 sy-vt t ne, ft bukrs. sy-vltne.
it-gjahr. U mU ef tJ l iddl e_comer as line no-gap.
1t - shbkz no-gap, l1 neJ1 ght _1I1ddle_coTner as li ne.
t t -saldv,

1.6

estar na tela ABAP/ 4 Edi tor: Edit Program XXXXX.


2. C oloque seu curs or em u ma linha em bracco.

3. De um clique no boeso Pattern au escclba 0 caminho de menu


Edit-> Insert Statement. 0 sistema exibe a tela In sert State ment..
4. Selecione 0 botao de opCJio Write.

5. De urn clique n o bc tac C on tinue. 0 sistem a exibe a tela Assemble a


Write Statem ent.
6, Escolha Symbol. Ico n ou Line.
0 cursor no campo de entrada a direirado batao de op~ao
que voce eseolheu.

7. Coloque

8. Pressione a reels F4. 0 sistema exibe urna lista dos itens disponfveis.
0

lev.

de volta atela. Assemble a Write Statement.

10. De urn cliqueno borao Copy.Voceeaeac volta a tela ABAP/ 4 Editor:


Edit Program XXXXX, e uma instru~o wri t e einserida qu e escreve
o item .

~o

507

EHTiA DA ~ Listagem 15.4 Simbolos, leones e caraderes li ne-draw

A linh a 26 escreve a varisvel I ine l utilizando a adiljio as 1i ne de modo


que 0 valor seja interpreta do como urn caracrere de desenho de linha.

9. D c urn clique duplo em urn para escolhe-lo. 0 sistema entjio

Nem todos os leones podem ser impresses. Q uando voce as edbe


utililondo as possos cntericres, voce pede ve r que as imprimiveis estOO
mercedes no llstc.

11
18
19
20
21
22
23
2~

25
26
27
28
29
_.30

31
32
33
34
35
36
37
38
39
40

SliDA ~

<

1000.

it-son 1,
1t -hebnt , sy-vl t ne.
at last .
write / 5(84) sy-u 'l t ne.
endat.
end1 oop.

o c6digo

IU.

Listagem 15.4 produ z a. saida mostrada na Figura 15.4.

Formato odo e impri mi od~oLlJre;<Jl",aut~6t.LruiQ....s,,-----

Est a seCjao abraage as seguintes tecnicas de formata~ao de relat6rio:

H
'~ .

508

I APlEHDA EM 21 D[A5 ABAP/4

DO ls,r!cH[CAS DE fORMATA(.iD.PAm 1 [

Controlar 0 tamanho de pagina


Titulo! de relatorios, cabecalbcs e rodapes

k especifica 0 mlmero de linhas reservado para urn rodap e na pa.rte


inferior de ca.da pagina.

Nao ccloqce t , j ou k entre aspas.

Posi~o comum e ic.stru~6es de formata~io


Fiou r a 1 5 4
Este iii um exemplo
de sardo de listc
contendo sjmbolos.

Utilizando 1; ne- s t ze e 1; ne-count


Por padrso, a largura cia lista de safda ~ iguall. Iargura maximizacla cia jaaela,
Par exemplo, se sua janela estiver maximizada antes de voce executa! um.
relaterio, 0 sistema uti1iz.a.ra essa distincia como moddo pan a largura de safda
do seu programa. Se sua janela for redimensionada para menos que 0 maximo,
o sistema aincia utiliza.ri a tamanho maximizado. Urna barn de rclagem
aparecerd na pa.rte inferior cia janela permitindo a voce rolar para a direiea ever
o resto do relat 6rio.
Para anular esse comportamento, voce especiflca a largu ra da.lista de saida
utiliz.ando 1tne-s iz e. Valores validcs sao 2 a 255 .

fconrs e eereeees

de desenho de /inno.

A melena dos lmpressc rcs noo pode imprimir me is de 132 ccrecteres


par Iinho. Se voce sabe que se us uS!Jcrios poe/em querer imprimir a
Ij~~ de sardo, noo tente excede r esse limito o.

o numero da pdgina e impressa no canto superior direiro da lisra. 0


mimerc padriio de Iinhas por p agina ~ 60.000 - 0 maximo permitido. Voc!
pode utilizar 1i ne-count para anular esse ndmero. Por exemplo, peraesp eciflcar
55 liahas por pdgina, digite re por t line- count 55. Especificar 1i ne-count 0
. significa utilizar 0 maximo (60.000).
usu dric pode esp eciflcar 0 ntime ro de linhas por pfgina que apropriado p ara a imp ressora qu ando imprimir 0 relat6rio.

Controlondo a tomonbo de p6g ino


Para contr olar
instru~ao

tamanho da p f gina de safda, utilize as seguintes adifioes na

report:

line-si ze

11 ne-cou nt

A adifiio , i ne- s1ze con trola a largu ra da lista de saida; 1i ne-c cunt ca ntro la 0 mimero de linhas por pagina.

Sintaxe das
report

adi~6es

1i ne- s t ze e 1; ne-count para a

Vocetcrnbem pede configurar 11 ne-count no meio do relat6rio, assim

i nstru ~60

A sintaxe das adifioes l i ne-s ize e li ne-count para a instrucic r eport


segue :

p6ginas diferentes podem fer numercs diferentes de linhas de sclde .

Para fozer isse, utilizec instnJ o new-page (obordada mais cdlcnte).


Esta tcmbem pede ser utilizada para configurcra numerc de llnhcs per
pcgina a ntes de quolquer scldc ser gerodo.

e como

r eport ltne-st ze 1 l1ne-count j(t) .

onde:

t ,J e k sao con stan tes num ericas. Variaveis nio sio permitidas.
i especifica a largura cia lista de saida (em caracteres).
j

especifica 0 numero de linhas por pagina na lista de saida.

"

1t ne-count mo ncrmalmente ueilizadc com rela t6rio s que sio visualizados online. Por exemplo, suponha que a R/3 incrementasse a numera~a.o de
pagina cada vez que voce pressionasse a tecla Page Do'NIl. Se 0 ususrio gerar
urn relatorio, rolar para a. pagina 3 e entao redimensionar a jaaela, ele ainda
estari na pdgina 3? Obviamente, 2. capacidade de redimension ar a janela torna
dificil fazer regras sabre Dumeros de pigina online. vocep oderia tentar deixar

509

._ .;. ~:.

~p'rR~D-A. EM 21 DIASABAP/4

~.::~~'-'

~ ~, .

DIA 15, TtoHCAS DE FllRliATAIiD, PAm 1

INluSE ~

wnanho de paginaiguala altura de janela quando 0 relat6rio for execuradc.


Mas se 0 usudric redimensionar a janela depois que a relatorio foi gerado , as
quebras de pdgina eao mais correspoaderao com a altura da janela, 0 usu drio
0

~7,-:" }'

veri lacunas na salda e no inicio de paginas no meic da janela, Pan evitar esses

visao a direita,

problemas em relat6rios online, utilize a valor pad rsc para 1tn e- count.
A Listagem 15.5 mostra urn programa de exemplo que ilus tra 0 usc de
li ne-count el ine-size.

EHTU.OA~ LLstagem 15.5

Na linha 1, 1i ne-cou nt configura 0 numerc de linhas par pigina como


55. Iss o caus a urn p rob lema.quan do 0 ususrio role para baixo, que nie
ocorr eria se 0 valor padrfc pan 11 ne- count tivesse sido utilizado.
Outre prob lema pod eocorrer quando 0 usudrio imprime a Iista, Se a
imp ressora eac imprimir exatame nte 55 liohas por pagina, 15 queb ras
de pdgina sairao iaccrretas. N cvamente, uti.l.iundo 0 padrac 1inecount , esse problema pode ser evirado, porque 0 usuario especifica. 0
mimero de linhas por pigim quan do selecionar uma impressora.

li ne~ co unt eline-s ize

1 report ltx150S line- si ze 132 li ne-count 55.


2 tables ztx lfc3.
3 select 1I'"0Il ztxlfc3 order by l t t nr bukrs gjahr shbkz.
4
on change of ztxlfc3-1ifnr.
5
write I ztxlfc3-1ifnr.
6

7
8

eoecn.

write: / 20 ztxlfc3-gjahr.
ztxlfc3-shbtz.

12

ztxlfc3~saldv .

13

ztx1fc3~sol11.

14

sllDI ~

ztxl fc3-habnl.
endsetect ,

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

5
Este l! 0 efe/todo
FIgura 15

odi)60

l me-count,

saida de lisla

Inicie a ScreenCam "How to Print list Output - agora,


P ara imprimir a. saf&t da Listagem' 15.5, prime iro execute a relat6rio e
entio siga este procedimento:

endon.

10
11

15

Imprimindo

on chanYI! of ztx1fcJ-gja hr .
wri te / 10 ztx l fc3-bukrs .

N a linha 1, li ne-size configura 0 mlmero de cclucas de safda co mo


132. Isso configura urn mimero fixe de colunas de safda in dependentemente da largura da. janela de saida.. 0 usudrio pode urilizar
a barn de rolagem na parte inferior cia. janela pan ver a sarda fora de

1. Da.lista de safda, de urn cliqu e no batao Print ria barrade ferra mencas
Application. Se nao estiver disponfvel, escolha 0 caminho de menu
System->JJst->Print. A tela Print Scre en List sera exibida.
2. No campo Output Device, digite a
dOl sua impress ora. Voc! pode
obter uma lisa de codas as impressoras defini das para seu sistema
colocando seu cursor nesse campo e enta~ pression an do F4.

3. Coloque urn rnarca de sele~ao na caixa de selecao Print Immed.


4. De urn clique no batao Print na barre de ferrament as Application .
Voc! volta para. a lista, e a mensagem Spool r equest (number nnnnn)
created "aparece na parte inferior cia jace la.

Seu consultor de Basistcmbem pode definir uma maquino de fox como


urn dest ino de impressoo. Para envierurnrelot6rio porfox, esped flqce
Choose 0 FaxMachine 10 em vez de um Printer 10 no compo Output
Device.

As configura coes padrao de impr essora sao espec ificadas no seu perfil de
usudrio. U tilize 0 caminho de meou Profile- > UserDefaults para altere-las.
Essas configuracc es sersc utilizadas sempre que voce imp rimi r urn relat6rio.

511

512

D~ 15,OOICAl DE FOWnl.io.PAJrrE 1

APlENDA EM 1I DIA' ABAPI4

Se voce Ilio co locou a mara de seleCjao D elete After Print na tela Print
Screen List, a saida permanecerd no spool. Isso permite a voce reimprimir mais
tar de. Isso ~ l1w se sua impressora ~ m.wta personalizada,

Pore envier urn rel0t6rio para multiples impressoros 00 mesmo tempo,


pecc para a seu consuher de Basis instclcr um poo l de impressorcs

(ere deve executer 0 rel0t6rio RSPOOO51 primeiro,e entao definir umc


impressorc do tipo P - 0 poo l - utilizondo umo tronsoo SPAD).
Entaa, co imprimir, voce escolhe esse poo l de impressora no lista de

'(jgndo cobe<;jglhg5 e rOdg pe5 d e paging

impressoros. Essa funcionolidode esta disponrvelno versec 3.0F e mois


recentes.

Tra ba lha ndo com

513

Pa r padrsc, a tela Print Screen List a.parece como a tfrulo a u ~bc.c;alho na parte
superior do seu relatorio. Voce pode eriar seus pr 6prios titu los au cabecalhos
utilizando urn destes dois metodos:

spool

Quando voce cia urn clique no batao Print, sua saidaeenviada primeiro pan.. a

Cabecalhos de paginapadrso

spo ol do R/3 e entio p:ara a sistema operacional. Se voce cac cclocou um a


marca de se:1e~o em Prin t Imrned, a saida de lista e armazenada no spool do
R/3 - elanaa e enviadapara a spoo l do sistema cperacional. E aI fica ate voce
a. excluir au imprimircom a opc;ao de exclusao ativada (acaixade selecac Delete
After Print na tela Print Screen List), ou iite que envelheca a suficiente pan

Evento top-of -page

Criando ccb ecclh os de p6gina pad roo


Uti!izar cabecalhosde paginapadrao E a maneira mais facil de criar cabecalbcs
de relateric. 0 procedimento a seguir descreve essa maneira.

um tnbalho de limpeza exclui-la. Os tnbalhos de limpezasao agendadospelo


consultor do Basis; eles no rmal mente excluem a s arquivos de spool com mais
de 2 semanas. Para saber 0 tempo exato em seu escrit6rio, entre em ccntatc
com seu consultor de Basis.
Para. ver a safda no spool. utilize 0 seguinte procedimento.
SCiEEHo.M~ Inide 0 ScreenCam -Worlcing with the Spool- og~ra.

1. A part ir de qualque r tela, escolha 0 caminho de menu System- > Services-> Print Requests. A tela Spoo l: Request Screen e exibida.
2. D igite as crite rios para localiz ar sua safda. Sell Id de csuaric (Inser ido

no campo User N ame), e as campos Client e From Date em geral

Esse procedimento rico funcionorO ~ voce chercr seu progremo e


tentor esse procedimento sem sa lvor suos o lte ~Oes primeiro. Quando
voce escciher a cam inho de menu pare od ic::iono r os cobec;olhos,.em
vez disso voce ver6 umo ccixe de dielogo que indica que voc6 ~o
pede olterer um progromo do SAP. IS$O oc ontece se voce nCo fiver
sa lvo SUO$ olteroCioes, porque dessa forma no reclldc de est6 executendo urnc c6pio tempororio do origina l - urno que ccntem suos
a ltero<;oes. 0 nome dessc c6pio noo initio co m Y ne m Z, entao R!3
noo 0 deixor6 eltere-le.
... lnicie a ScreenCom "How to Cre ate Standard Report Heo de rs from the Us!" .

SCRE!HClM,. ogo"' .

sao suficien tes .

3. Pre ssion e Enter; A tela Spool: Requests e exibida. Ela contem uma
Iisu das ent radas que correspondem com 0 spool.
4. Para exibir a saida para uma entrada, cclcque urn marca de s ele~io ao
lado deb. e entaD de urn clique no batao Display.
5. Para exibir a. safda para miiltiplas entradas, coloque urna mara de
selec;io ao lado de Multiple Entries ou utilize 0 caminho de menu

Edit-> Cboose All. Entio de um cliqueno botio Display. A primeira


entrada e ex.ibida.Para ver 11 pr6xima entrada, de um clique no botao
Next Spool Request na barra de ferramenus Application. Para ver a
entrada de visualizac;rao, de urn clique no botao PrevoSpool Request.
6. Para imprimir uma entrada. de um clique no b otio Print.

I . lnicie a partir da tela AJ3AP/4 Editor: Edit Pro gram.


2. Se voce mer qua.lquer alterac;ao, salve seu relat6rio . Como mencic nado DO Ultimo quadro de Cuidado, voc e tkve fazer isso para as
passes seguintes funeionarem.
3. Execute a relatorio. Vo ce entio ve a sa!da de lista.
4. Escolha a caminho de menu System- > List-> List Header. Os campo s de en trada aparecem na parte supe rior do relat6rio - om para a

cabe?1ho e quatro pan cabe<;alho. de cohm.a.


5. Digite uma lista e as cabec;alhos de coluna n os campos de entrada em
branco.
6. D e um clique no batao Save na barn de ferramentas Application. A
mensagem Changed texts act i ve f r am next st art of xxxxx in

D~ l5,1lo<"" DEfO""TA\lo, PAm I

1 anguage E apuece. Isso signifies que voce veri as novos cabecalhos


cia pr6xima vez que execurar esse programa.

7. De urn clique no botio Back duas vezes. Voce volta a tela ABAP/ 4
Editor: Edit Program.
8. Execute 0 relat6 rio acvamenee. Voce vera seus novas csbecalbcs na
parte superior da said a,
Voce po de estar se perguntando: afinal, onde esses cabecalhcs sao armazenados ? E mesma se nao estiver, voce descob~iri isso de qualquer jeito a
segurr.

NOVO....

Os ccbecclhce qu e voce cccbou de fnsertr see ormozenodos com seu progromo

como elementos de texto. Um e lemento de teste e quolquer string de ccrectere


qu e exibido no soldo de ltstc . Tclvea c pc recc no parte superior como um ccbecelbc,
no meio (como umo string de corcetere que n60 vern do banco de dodos), ov no porte
inferior Como um redcpe. A SAPgostc de proporcionor copocidodes de multiplos ldic mcs
em seve programos, de modo que quo lquer co isc que possc precisar ser tradlJlido (por
exemplc, ccbecelhcs de relot6rio) sl!!lio crmceeocdc seporodo men te do c6dige>-fonte
como elementos de texto. Esses elementos podem ser traduzidos sem o ltercr 0 c6d igofonte . Neste s~60, estamos trotondo especiftcerrerrte dos elemen tos de texto de relctoric
e ccbeccthcs de cclu nc , mos tombem he outros que serna trotcdos mc ls odlcnte.

lEUO

I
!

I
I
i,

4. Pressione 0 bon e Save para salvar suas alter:u;6es.


5. Pressione 0 botio Back. A tela AJJAP/ 4 Edito r: Edit Program 6
exibida.
6. Execute seu program a. Seu tftulo e os cabecalhos novos aparecem na
parte superior do seu relat6rio.
Os elementos de texro tambem podem ser acessados a partir cia ABAP / 4
Editor: Initial Screen escolhendo 0 bcuo T ext Eleme nts, e en tia dacdc um
clique no bou"o Change. Voc! pede achar util revisera se~ao nos componentes
de um programs de ABAP/4 neste ponto (veja a Figura 2.1 no Die 2, "Seu
primeiro programs em AJJAP/4") .
FigurA 15 6

&to tela c:ontem OJ


elemenlos de IeldO

idles eo Headers
podr60.

Uma vez que as cabecalhos padrio SaO armazenados como elementos de


tex to, voce pede vs-los e mo difier- los a.cessando as elementos de texto do
pro grama. Estes eStaOccnti dcs na tela ABAP/4: Text Elements: Change Title
and Heading, mostr ada na Figura 15.6.
Utilize 0 seguinte procedim ento para ver, alterar au criar cahecalhos
padra o.

scmNCAM....

lnrcle 0 Scree nCam "How to Create Stonda rd Report Headers Via Tex! Elements"
,. a go ra.

1. D a tela ABAP/4 Editor: Edit Program, escolha

caminhc de menu
Goto->Text Elements. A tela ABAP/ 4 Text Elements 6 exibida.
2. Escolha 0 bou o de op,ao Titles and Hea.d~rs.
3. De urn 'clique no ba tao Change. A tela Al3AF/4 Text Elem ents:
Change Title And H eading 6 exibida. 0 campo Title conrem 0 texto
do titulo que voce digit ou na tela ABAP/4: Program xxxxx A n ributes. Se a campo List Header estiver em branco, 0 campo Ti tle e
exibido na p u te superior cia lisra. a campo List Header permite
anular 0 campo Title e especificar um cabecalho diferente do titulo
do relat6rio . Insira urn cabecalhc de !ista ai e, na pane inferior da tela
nos campos Co lumn Header, insira as cabe~alhos de coluna. De urn
clique nos botoes na parte inferio r direita da tela para rolar para a
esquerda e para a direita. ate urn maximo de 255 caracteres.
0

Para reviser, na tela AJJAP/4 Text Elements: Change Title An d Heading,


se 0 campo List Header nio esciver em branco , ele esd, sendo uti.1izado como
o cabecalho. Se estiver em bracco, 0 campo Title eutilizado como cabecalho.

Traduzindo as elementos de teldo


C riar d tu los e cabecalhcs como elementos de tex to permite que des sejam
tnduzidos em idiomas estrangeiros, norma.lmente po r alguem especializado
na tradu~ao de termos tecnicos au especlficos d.a. indus tria. Nesca secio , voce
pede experim entar isso se tiver uma ideia do pr ocesso.

515

I
;1

il
t,

j!
1

o pod nio da SAP e alinhar C esq uerdo 0 cobecolho no lista de scrdc.


Como resultcdo, 0 ccbecclhc noo pode ser centrollzcdo. Mesmo se
voce cenlrcllee-lc ma nuolmente colocondo espcccs no frente, ele
opo recer6 olinhodo a esquerda no sotdc.

DIA 15, TtOlICASOHORlllTAIio. ' AIUE 1

funciandria que foz a troduc;ca normalmente utilize a tronsa<;co


SE63. Esta oferece urn conjunto de programos que permlteque tcdcs
os testes no sistema seicm trcdvzidos. Por exemplo, as descnce es dos
elementos de dodos, Indices, 1extosde seler;oa em progrcmos e os sim
par dionfe podem ser trcduzidos cqui. Comec;ondo no tela ABAP/4
Development Workbench, 0 ccminho de menu e Utilities-> Translotlcn-c-Shcrt/Lcnq Texts.

S(mNCAM~ Inicie a ScreenCom "Tronsloting Titles and Headers- agora.

1. A partir da tela ABAl'/4 Text Elements: Change Title and Heading,

517

Utilizando v~riaveis em ccbecolhos de pagina padnio

escolha 0 caminho de me nu Gorc-e-Translation. A tela Target Language For Translati on e mostrada.

4. N os campo s que con tem urn caractere de sublinhado, digite a textc


da sua tr aduljao para. 0 alemso. Se voce nao souber a idioms, simples mente substirua to dos as.Ietras C par K e utilize diversas frases que
terminem com Strudel ou que contenham a nome Wolfgang.

Voce pode utilizar a.te 10 variaveis nos tftulos de pdgina padrac para urn
programa. Em seu programa, atribua valores as variaveis identificadas como
sy-tvarO ate sy-tvar9. Nos tirulos, utilize os nomes de varisveis &0 a' &9
correspondentes as varaveis sy dentro do seu programa. Por exemplo, se no
programa voce codifica sy-tvarO = I M I e sy-tvarl = I BB I , &Oseclsubsu tu ido
par AA e &l sera substiruido por BB no cabecalho.
Embora. cada varavel sy-tvar possa armazenar urn valor com ate 20
caracteres, 0 comprimento de salda da varidvel e 2 por padrio. Isso signifies
que, por exemplo, onde quer que &0 apareca no cabecalbo, exatam,en,te dois
espacos sao reservados para. ~ valor de sy-tvarO. Se 0 valo r em 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

5. De urn clique no batao Savena barra de [erramentas Standard. Se dyer

ABAP/4 Text Elements: Change Title and Heading.

2. No campo Target Lan gua ge, escolha 0 idioma para

0 qual voce quer


tr aduzir seus elementos de rexto. a idioma escolhido anteriormente
pre cise ter sido ins talad o em sell sistema peIo seu consultor de Basis.
Deutsch (alemao) ~ instalado em cada sistema, porque e a linguag em
Mestre para to dos os sistemas R/3. Portanto, escolha D (Delf.tsch).

3. DS urn clique no bcu c Translate. A tela Translate Title And Headers


Fo r Program xxxxx ~ exibida..Nessa tela esca, 0 nome do campo, urn
campo Remark em.que a tradut or pode inserir comentarics, seguidos
pelo texto original e urn campo de entrada. para a traducio. Quando
em branco, esse campo de entrada contem urn caracte re de subli-

nhado.

mais traducoes a faze r, vccs permanecera na mesma tela. De urn


clique no bosao Back para v.er a proximo conjunro. Quando nao
houver mais texto a ser tradu zidc, 0 sistema 0 levari de volta a tela

ABAP/4 Text Elements: Change Title and Heading.


6. Agora efetue logon novamente, mas dessa vez digite 0 no campo
Language na tela de logon.
7. Execute seu programa. as tftulos traduzidos aparecerao. Se exibir os
arriburos de programa, voce vera 0 titulo traduzido na tela ABAP/4:
Program attribute xxxxx.
Todas as tra ducoes sao armazenadas em urn pool de propostas, do qual
voce p ode recupe rar traduqoes an teriores de uma palavra ou frase . Se voce
inserir uma tradu<.iao que difere das armazenadas no pool, 0 sistema automaticarnente lhe oferecera as tradufioes anteriores. Voce entaa deve salvar a nova
au selecionar uma anterior.

EHTRADA~ Listagem 15.6 Voriove;, em cobe,olho, de peg;no podr60

,I
i,
,i .

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 ,

OL\ I~ rtCHlClS OEFORlIATl\AO, PARTE 1

portJ 0 progroma

ztxJ506.

il
,

o c6digo na Listagem 15.6 produz esta safda:


sliol ~

KEHGREENWOOO

' 1998/ 05/ 05 19,40,Ja

Country Code: US

1040
1080
1090
ZOOO
VI
V2

Mot her baarns Inc.


Si li con Sandwich ltd.
ConSlIlle Inc.
Moni tors and More ltd .
Quanti t y First Ltd .
OverPriced Goods Inc.

V3

Fl uf f)' Bunni es Lt d.
Moo l 1ke a Cow Inc.

V4
VS
V7

WolfJnan Sport Accessories Inc.


The Breakf ast C1 ub Inc .

A linha 3 define p_1andl e solicits ao usudrio urn valor.

519

Na Figura 15.7, &0 . . . . .. .. indica o nde 0 valo r de sy-tvarO apare.cera. Os pontos aumentam 0 comprimento cia safda da variavel de 2
para 12. &1 indica onde 0 valor-de sy-tvarl aparecera, &2
indica onde 0 valor de sy-tvar2 aparecera e &3. 0 valor de sy-tvar-S .
Os pontos .aument am os comprimentos de safda para 10, 8 e 3,
respecrivamente.

Flgnrn 1 5 7
A leTa N3N'/4 T~
EletTWMIs: Otonge
Til/I! andHeading
"

A linba 4 atribui 0 Id do usudrio arual a sy- t varO.

A instru~ao writ e C Ol linha 5 move 0 valor de sy-dat ue para sy-t vert .


Urn a instru~ao comurn de auibuic;ao (u tilizan do = ) teria movido 0
valor sem form aci-Io. Utilizar write faz com que 0 campo seja fo rmatado co m separadores de acordo com 0 perfil do usuaric.

Criando cabe~a l h os de pagina manuais


Cabecalhcs de pfgina padrgo sse faceis de criar, mas tambem tem algumas
limita~oes. Eles sao limitados a um a linh a para 0 cabecalhc de pfgina e a quatro
linhas para os cabecalh os de coluna. Urn m aximo de 10 variaveis pode ser
utilizado, ada com urn comprimeoto minima de dois caracteres. 0 cabecalho
6 sempre alinhado a esque rda e as co res sio padrao e eac po dem ser alteradss.
Tteulos manuais, entretanto, nao tern essas limita~5es.

Pa.ra ~.titulos manuais,voce precise

I
i

Utilizar 0 -eveaeo top-af-page para criar ueulc s personalizados.


Para desa:tivar as atulos padrio de pdgiaa, voce adic ion a no standa rd page
headi ng ao fim cia instnl~ao de relat6rio.
Um evento no ABAP/4 ~ como uma sub-retina em o utros linguogens. Trctc-se
de umc seo independente do c6d igo; elo executa umo torefa e entOo retorno
para 0 ponto de chcrnedc. Entretonto, 0 0 ccnt rcrlc dos svb-rctincs, voce nco codifico a
chomodo pora um eveotc. Em vez disso, 0 sistema adono 0 evento po re vocA quondo
umo condi;ao espedfi co surge.

NOVO ltrr...

lUIO

I
i!

Desativar cabecalhcs de pagina padrio.

o evento t op-of - peqe e acion ado quan do a primeira ins truliao write 6
executada. Antes de quaisquer valcres serem escriros na Iista, a sistema ramifica
pan 0 c6d.igo qu e se segue a to p-af-page e executa. Entao ele retorn a para a
instro~o wri t e e escreve os valo res. A Listagem. 15.7 e a Fi gura 15.8 ilustram

esse processo.

EHIDOA~ Ust agem 15.7 0 evento top-at -page


1 report zt.d 507 no standard page heading.
2 data fl( 5) val ue 'lni t'.
3 11 'Title '.
4 writ e: I 'Hi' .
5

A linha 6 fermata a data/hera atual e mov e pan sy- tvar2.

, top-of.page.

wnte :

u11ne .

A linb a 7 atribui

valor que foi inserido pelc usuario a sy-tvar3.

' My ', f1.

A s linhas 8 a 10 escrevem urn relat6rio simp les de fabricantes.

"j.
c.....

r7ti:

.A-

,.0.

---:.~

520

IlIA ,s,r!a<IClS DE FOiMATA(lD. PAm1

APIEHDA EM21 DIASAWl<

SAiD.l~

A Figura 15.8 mostra a. safda para a Listagem 15.7.

ANiusE ~

Na I.i.o.ha I , a instru~io repor t contem a adic;io no standard page

head; ng J assim cabecalhcs padrao Dia sao escritos,


A linha2 define fl com o comprimento de caractere 5 e lhe atribui um
valor inicialde I l oit I .

!i

As linhas 7 e 8 enti a SiD executadas, fazendo com que My Tit l e seja


escrito na primeira linha da lists, seguido por urn sub linha do (escrito
pela ins trulii o 1I1i ne n.a Iinha 8) . 0 processamento entia reto rna para
a instrur;io wr t te na linha 4 e Hi ~ escrito para a linha 3 da lista de safda.
0

progr:una termina e a saida

Reservar espacopara 0 rodap' na pane inferior da p'gina utilizando a


adi~o

1i ne-count na

instru~o

rep ort.

Do evemo end-of-page.

A linha 3 atribui 0 valor T1 t 1e ' para fl.


A instru~:io write na linha 4 aciona 0 evento top- cf-peae na linha 6.

D epcis que linha -4 foi executada,


moscrada.

Os relat6rios em late normalmente sao impresses e assim terj o urn


tamanho de pagina definido que nfo se altera depois que 0 relat6rio ~ criado,
dessa forma. ecrac des po dem ter rodapes de pagina.
Para. eriar os rodapes de pdgina voce precisa:

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.

Tec:nicamente os eventc s podem opo recer em quolquer ordem ou


pOsic;oodentro do sec progroma . Porenquo nto, codifiqu~osconforme
mostrcdo. Um capitulo scbseqcente explicorO mois sabre como ccdlncar eventcs .

EMTiADA ~ Lista g e m 15.8

Note que 0 valor de f1 escrito na pane supe rior cia psgioa e 0 valor no
memento em que a primei ra inStfUljaO writ e foi dada, nio 0 valor n o come~o

do program..

Criando roda pes de p6gina


C omo discutida am erionnent e, depois que urn relat6rio online foi gendo, 0
usu ario pode alterar 0 tamanho da sua janela. Para eviur quebras no melo cia
pagina, os relat6n os online sempre consistem em uma unica pagina virtualmuito
longa, de modo que ter radapes nao faz muito sentido porque haven a s6 urn.

as eventos tap -of -page e end-of-page

1 report ztx1508 line-count 20{3) no st andard page heading.


2 do 80 t i mes .

write: / 'Please kid me ' , sy- i ndex, 'ti mes ' .

enddo.
5
6 t op-af-p age.
write : / ' CONFIOOOIAL' ,
7
/ ' Thi s page begins wi t h number' . sy-1ndex.
8
9
uli ne.
4

10

521

O~ l s,r!CNIC.lS DE RJRMATA(Ao, PARTE 1

-APRE HDA EM 21 DIAS ABAPH

escritas no rodape. A inst rucao top-of -pace na linha 6 eneso

11 end-ef- paae.
12

13
14
15

write:

I
I

5Y-II1 tne,
'The nl.ll1ber of kicks at the t op of the next page will be ",

' Copyr i ght 1998 by t he ALA (Abus e lovers Of America)'.

e execu-

tada, e as linhas 7 a 9 escrevem 0 ttrulc da pagina na parte superior da


proxima pagina. Entao ela retoma 0 controle para a linha 3 e a
instrul$ao wr; te escrevea quarta linha na pagina 2 .

sy- t ndex,

Nenhum rodape de pigina eescritc na par te inferior da ultima pagina.


A primeira. pane da safda para a Listagem 15.8 apar ece como segue:

SliDA ~

This page begi ns with nunber


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

P1 ease k1ck me
Pl ease [(1 ck me
Pl ease k1 ck me
P1 ease ki ck me
Ple ase kick me
P1 ease k1 ck me
Ple ase kick me
Pl ease k1ck me
Pleas e kfek me
P1 ease k1 ck me
P1ease k1 ck me
P1ease k1ck me
P1u se k1 ck me
P1ease k1ck me

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

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

times
ti mes
times
t imes
t imes
7 times

2
3
4
5
6

8
9
10
11

Please
Ple ase
Pl ease
Please

kick me
k.ick me
ki ck me
kick me

t11OO5
times

t imes

14 ' t imes

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

~%.~~-

agrup ada informacoes re-

proxima linba, e as ndmeros de telefone na linha seguinte. F aria sentido manter

Sintaxe para a iristruC;60 r eser ve

CII

_-.----15

15 times
16 t imes
17 times
18 tfmes

A linha 1 suprime a u sa de cabecalhcs de pdginapadrso porque n6s


s6 queremos que os cabecalhos manuais de pdgina sejam mostrados.
Elatambem configura 0 mimero de linhas na area de rodape como 3.
o mimerc de linhas por pagina 6 configurado como 20 para que
possamos rester 0 rodape de pagina para exibicsc online. Normalmente urn relaeorio online nao especifica 0 mimero de linhas por
pagina.
Na prirneirapassagem peloloop, alinha2 acicna 0 evento top-of-pace
na linha 6, fazendo com que as linhas 7 a 9 escrevam duas linhas de
cabecalhoseguidas por urnsublinhado. 0 contrcle retcrna paraalinha
3 e a instruc;:ao wr; te escreve a quarta linha na lista de saIda.
Depois de fazer 0 loop 14 vezes, a 15L instruc;:aa write aciona a
instruc;:ao end-cf-paqe na linha 11. As linhas 12 a 15 sao executadas,

"i :

reserve

essas linhas juntas como urn grupo na saida,e impedir qu e elas sejam.divididas
em duas paginas.
U tilize a instrucfo reserve para manterum gropo de linhas juntas na lista
de saida.

t1.Jnes
12 t imes
13 times

--_

instru~cio

Iacionadas que se distribuempor vdrias linhas.Par exemplo, vocepede escrever


o mimero e 0 nome de fabricante em uma linha., seguidos pelo endereco na

1 times

The nlll'ber of kicks at the top of the next page w1 11 be


Copyri ght ~998 by t he ALA (Abus e Lovers Of hnerica)
CONFJOENTIAl
This page begi ns with number
15

INllIIE~

Utiliza ndo a

As vezes, voce pede precisar escrever de maneira

CONFIOEKTIAl

rese rve n 1 tnes .

onde :

n eum literal numericc ou variavel.

Quando a. instrucfo reserve e executada, 0 sistema verifica se ha n linhas


disponfveis na pfgina atual. Se houver menos qu e n linhas sobrando na pdgina
atual, uma quebra de pagina e gerada. Isso aciona 0 eventc end-of-page (se
existir), seguido pelo evenec top -of-page (se existi r) .. A instruCja6 wr; te

seguinte comeca na pme superior cia nova pigina.


Se pelo menos n linhas estiverem disponfveis qu an do a instruCjao reserve
for executada, a c6digo 113.0 faz na da.
A Listagem 15.9 mostra urnprograma de exemplc que util iza a instru~a.o
r eserve.

ENIRADI~ Listagem 15,9 Ainstru<;oo reserye


1 report ztxl509 line-count 18(2) no standard page headfng.
Z tab l es ztxlfal.
3
4 sel ect .. from. ztxlfal.
reserv e 3 1; nes .
5
wrft e: / ztxlfat-lifnr , ztxlfal-name l.
6
/ 2t xlfal -stras . ztxlfal -reg1D, ztx l f al-l andl .
7
/ ltxlfal-tel f l.
8

523

524

D~ lHECHICAS DE FOiMATA\AD. PAm1

APREKDA EM 21 DIAS ASAP"


9
10

skip .
endsel ect ,

Resumo
Voce pode criar said: gdfica simples na lisa utilizando as a.di~6es as
symbol, as i con e as line na instnlc;:ao write. Quando utilizar estas

11

12 top-at-page.
13
wri te I Vendor Report '.
14
ul 1ne.
15
16 end-af-page.
17
uf tne,
18
write: I 'Report'. sy-rep1d. ' Created by '. sy-uname .

adic;:oes. voce deve utiliza.r a instruc;ao include pa.r.a trazer defini~oes


de sfmbolo,{conee caractere de desenho de 1inha. para seu programa,

o
siiDI ~

Utilize aadiliao 1i ne-s1 ze na instrucio report para configurar a largura


da lista de saIda.. Utilize a adi~o 1i ne-count para configurar a mimero
de linhaspor pfginana lisra de safda, Voce tambem pode utilizl.-Iapara
especificar 0 niimero de linhas reservadas para a rodape, Voce mo
pede utilizar variaveis na iostnl~o report, entdo utilize a instruc;ao
new-page para essas adic;:6es se quiser configurar esses atributos em
tempo de execucgo.

c6d.igo IU Listagem 15.9 produz a seguiote saida:

Vendor Report
1000

Par t s Unlimited

111 Queen St .

O' "

Para. mar cabecalhos de pfgina,vocepode utilizar tanto urncabecalho


de pa.gina padrac como a instrUc;ao top-af-page.
.

ON CA

Ate 10 variiveis podem ser utilizadas em cabecalhos de pigina padrgo.


Os valores atribufdos is variweis sy-tvarO a sy- t var 9 substituem &0
por &9 na lista. Utilize pontos para estender 0 cc mprime nto cia safcia

416-255-1212

1010
Industrial Punps I nc.
1520 Avenue Rd.
416-535 -2341

1020

dessas variaveis de substituicio.

Chemical Nation ltd.

123 River Ave.

ON CA

Para suprimir a safdado cabecalhc padrao de pagina, utilize a adi,iio


no standard page headi ng na msrruc;:ao report.

416"'51-7787

Se voce inc1uir 0 evento top-af-page em seu programa, ele sen


acionado quando 0 primeira instruc;aa wri t e for executada, As instrulioes seguintes sio executadas, e enta~ a controle retorna para a
mstrU/iao wri teo

---_....-._. ------------_._.----_.-.. -..------Report ZTX1209

Created by KEHGREENWOOO

Vendor Report

1030
ChickenFeed Ltd .
8718 Wishbone lane

Utilize

0 eventc end-of- page para criar rodapes. Voce tambem deve


utilizar 1i ne-ceuet na instrU~o report ou new-page para especificar 0
admero de linhas e reservar espac;:o na pagina para 0 rodape.

AB"

393-565-2340
1040

525

Utilize a instruc;ao reserve para manter um gropo de linhas juntas na

Motherboards Inc .

64 BitBus Blvd.

MA US

lista.

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

e mais flexrvel, a m aioria des pro-

gramadores prefere utilizar esse metoda. Desde que voce utilize


simbolos de texto para seus Iirerais de texto , ambos podem ser
mduzidos enti.o Ilia hi qualquer vantagem para variaveis sy-tvar.

"

526

APlEN DA EM21 DIAS ABAPI4

Workshop

Workshop cferece duas maneiras de voce verificar 0 que aprendeu neste


capitul o. A sCliao Tes te ofere ce pergunt.s pan ajudar a solidificar sell emendi-

menta do coareudc abordado e a seljao Exerdcio permire que voce pratique 0


que apren deu. Voce pe de enccntrar as respostas as perguntas do Teste e aos
exerdcios no Apendice B, "Respastas is perguntas e aos exerclcios".

Teste
1. Quais sao as treS adi<;oes gr.Hicas que sao utilizadas com a instru clo
write? Qual instruc;:ao nm bem deve secieclufda a fim de escrever as
adic;6es graficas? Dc um exemplo de uma instruc;:ao include.
2. Qu ais sao as duas adic;:6es que sao ueilizadas com a instruc;ao report
pan ccc trclar 0 tama.nho da pigina de saida? A variivel urilizadapara
as duas adif:loes pede ser vanavel?

16

Exercfcio 1
Escreva urn programa qu e exiba as seguintes simbolos: quadrado, losango ,
cfrcu lo, ~culos, lapis, telefon e, nota e pasta.

Tecnicas de formatasao,Parte 2
Objetjvo s do capitu lo
AItlUSE~ Depois de conduirestecapitulo, voce sere copaz de

Utilizar as instru!joes de formataqao new-l i ne, new-page, s ki p, back,


positi on e set bla nk lin es.
Envi ar a safda para

spool utiliz ando new-page pr i nt ,

InstruC;6 es de formatac;60 de Iista


H oi viria.s ins~!ioes comumen.te necessaries panl forma tar uma lista:

new-line
new- page

ski p

back
positi on
set blank Tines

http;/I_ .campl,Is.com.br

-- 528

D~ 16,OOICAS DE fORMATA(Ao. PARTE 2

APlEHDA EM 21 DIAl ABAP/4

Utiliza nd o a

i n stru~a o new-J j ne

Utilize a instru<;ao new-l i ne para [azer com que a safda cia proxima inStru~o
write cornea: em uma no va linha. Diferentemente de sktp au wr ite l. instru~6es consecutivas new..1ine nao fazem com que urna linha em branc o
apareca na Iista de saida.

Sintaxe pa ra a

'!!!

instru~a o

1020

1030
1040

new- J i ne

new-line [no-scroll ing].

...

Utilizondo a

O.DO

2.000. 00
0.00

0 .00

Chi ctenreec ltd .


Mot her boards Inc .
1000 1990 A
1000 1997 A
2000 1997 A
2000 1998 A
3000 1998 A

100.00
100.00
0 .00
1.000 .00

D.DO

3 , 000 .00
1,5 00. 00
500.00
300.00
2 , 400.00

C aus ar a sU'da cia seguinte instrU'iiO write para comec;ar em uma nova.
pigina. Instruc;o es new-page consecutivas nao geram em paginas de
branco.

report :tx1601 Hn e- s1ze 255.

endsel ect ,

Ativar e desarivar a impressio.

1000 1996 Z
1000 1998 Z
3000 1998 A
Indust ri al PI.IftPS Inc.

Sintcxe para a

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

o c6d.igo na Listagem 16.1 produz a seguinte saida :


1000

Aciva.r e.desativar tirulos e cabecslbcs.


Variac a contagem de linha au tamanhc de linha de uma pf gina para a

III

t ndstl ect.

1,000 .00
0.00
1.000.00
0.00
0 .00
1,000 .00
0 .00
1,000.00
5.000.00
4.00 0 .00
0.00

500.00
5 .000 .00
11.000.00
10 ,000 .00
1. 000 . 00
1. 150.00
9,000 .0 0 '
50.00 0.00
0. 00
0 .00
10,000 .00

instru~Qo new-page

Utilize a instnujio new-page para

Lis'C1gem 16.1 A instruo new-line

2 tables: ztxlfal . ztxlfc3 .


3 select 'It fran ztxlf4l.
4
nev-l tne na-scroll ing.
writ! : ztxlfal..l1fnr, ztxlfal -namel. -t h1s l i ne won't scroll right
5
6
select'" f rom zt xl fc3 where lifnr ztx1fal-l1fnr.
7
write : / 14 ztxlfc3-bukrs. ztxlfe3-gjahr . zt xlfc3.s hbkz,
8
40 ztxlfc3.saldv, ztx lfc3-so 1n . ztxlfc3.h abnl .
10

1, 000.0 0
1. 500.0 0
0.0 0

, . Rclcr pare c direitc permite a voce ver a porte direitc des linhas, mas 0 nome e 0
numero de fobriccnte peerrcnecem dentro do 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

newpage Inc-t t tl e : w1th t i tl e]


[no- head1ng : wi t h- head1 ng]
[l i ne-ccunt 0 nem)]
[line- s iz e k]
pr i nt

[pri nt on :

off]

ande:

n,me k sao vanaveis num ericas ou Iieerais.


Os seguintes ponte s se aplicam:
new- page pode serutilizad a em qualquer lu gar no programa. Voce:pede
utilizi-l a mes mc ante s da primeira instru'i3.0 write para ca nfigurar as
caracterlsticas da said a de lisea. Com6 aceita variaveis, ela ~ mais
lexIvel que adic;oe s semelhantes na instnl'iio repo rt .

529

APIElfDA HI 21 DIAS ABAP/4

no-t itle desativa 0 titulo padrsc nas p:iginas seguintes. (0 titulo e a


primeira linha dos cabecalbcs padrac de p:igina.) with:"title ativa-a.
nc-he adt n9' desativa os cabecalhos-padrjo de ccluna para. as p:iginas
seguintes. wi t h-headi ng os ativa..

DlA lH EcHICAS OfroRJIATA\!O, PARTE 2


Figura 16 1
A tela Prim
Parameters.

1ine-count configura 0 mimerc de Iiahas por pdgina e 0 mimero de


linhas reservadc na parte inferior de cada p:igina para urn rodape.
Qu alquer urn desses valores, ou as dais, podem ser especificados. Issa
foi abardado antericrmente oeste capitulo.
1t ne-stz e configura. 0 nd mero de colunas de saida para as paginas
seguintes. O.padrao ea largura atual de janela,

pri nt-on faz com que a saida da.s instrU'Soes write seguintes sejam.
enviadas para 0 spool, em vez da lists. Os usuaries mo veem essasafda a
menos que olhem no spool. (Visualiza'Sao e impressfo cia sarda de spool
que foi abordadamaiscedo oeste capfrnlo.} print-otf fax 0 eontriri o.
Instrucces new-page consecutivas nao geram piginas em braneo.
new- paqe nao aciona 0 evento end-ct-pace. Portanro, urn rodape nao
sera impresso na parte inferior da pagina atual se voce emitir a instru ~ao new-page.

til
Se V'Cld quiser fazer uma quebrc de p6ginc e adonar 0 evemc end-ofpage, c:odifique linhas sy-lind reseoes. sy-I i net ceotem 0 numero atuol

de linhos per p6gino. A scldc do pr6:.cime write cporecero no porte


superiorde uma novo p6ginc e 0 eventoend-cf-peqe sere odonodo de
cntemec, fozendo com que urn rodope de p6gino sejo c:riodo.

Utilizando new-page pri nt


A.s vezes, pre cisa-se de urn relat6rio que tanto escreva para a.lista de safda e ao
mesmo tempo enviea salda para a impressora. Por exemplo, voce pede desejar
escrever urn re1at6rio que mostre urn resume para a usudrio online enquanto
envia um relat6rio de detalhe pan a impressora. Utilize new-p eqe pri nt on para
fazer isso, A safdade todas as instrucces wr1 te que seguem 'new- pace pri nt on
nao apa recerf na lista, Em vez disso, sera enviada para 0 spool. A instruiao
new-page pr i nt off elimina esse efeito. A safda de todas as inst rucoes wri te
seguintes serao n ovam ente vistas na Iisra,
Toda vez que new-page print on e executada:
0 sistema exibe a tela Print Parameters para o usuario {mcsrrada na
Figura 16.1). Ela soliciraao usudric pargmerros como 0 ID de impressora e 0 formate de saida (Output Format).

Se, na tela Print Parameters, houver uma marca de sele'Sao no campo


N ew Spool Request) ela eria urna nova solicita~ao de spool. Isso
significa uma nova lista separada no spool.

Sintaxe para a

instru~ao

new- page print on


[no dialog]
[new section]
(1nned1atelr
(destination
[copies
[la yout
[1ht name
[sap cover page
[cover text
(departlll!nt
[receiver
[keep i n spool
[dataset expi ration
[11ne-ccunt

[l1ne- siz e

new-page print on

tmtdflog]
destfd]
nt.llJCopfes ]
layout~d]

lt stnane]
caverpagejlag]
tttle]
do!'p't]
n c ievernGl'llt]
ktepfIag]
ntmfoys]
l tnes~rpage]

nJ.IllCo ltmu]

onde:
Quaisquer names em itllico no c6digo de pro cedimenro podem ser
urn literal ou uma variavel.

O s seguintes pontes se aplicam:


Utilize no di alog para suprimira exibi~io da tela Print Parameters que
soliciea ao usudrio parametres de impressao. O s padroes do usuario
Sao utilizados em vez disso. Se 0 usuario nao civer preenchido urn ID

531

D~ lU!OiICAS DE FeRMATA"', PAm,

APREMD A EM 21 DIASABAPI4

de impressora.em seus padrc es, a tela Print Parameters sed mosrrada


mesmo qu ando voce esp ecifi car no di alog .

Utilize new se cti on para reiniciar a numeracio de pf gin a, co meqando


novamente em 1.

Utiliz.e hrmediate ly ' x' para fazer com que a liSta seja Impressa
imediatam ente. 0 padrio e 1mned1ately , ', que armazena a Iisra no

Parametres a.dicionais sic documentadas na documentaci o de palavra-

chave de ABAP/4.

Qua ndo envlc a scfdc diretomente para 0 spool lJfilizando new-page


pri nt on, voce tombem pede utilizer duos instrues odicionois. A
instrvt;oo set margins permite que voce controle a s morgens durante
.a impresseo. A instru o print-control possibilito 0 envio de c6digos
de controle de impressdc diretomente pora a impressora. Utilizando
print -cont rol, voce pode controlor qvclsquer caroderisticas do
impressora, como CPI (carodere par polegoda), l PI [linhos por polegada) ou fonte. Essos instn.u;5es n50 tem nenhum efeito em listos
impressos via a batao Print ou via a apo de menu List Printj elcs s6
ofetom Ilstcs impressosvia new-page pr1nt on. Eles nao inte~m no
moneira como a listo Ii exibido no tela. Veja 0 dacumenta o de
pclc vrc-chcve de ABAP/4 pa ra mois detclhes .

spool.
.

Utilize dest1 nati on para especificar um ID de impressora.


Utilize copies para especificar a mimero de copias a imprimir.

U tilize 1ayout para especificar um layout de im presson . 0 layout de


impressora determineas caracterfsricas de impressora como a mimerc
de linh as per pagina e 0 mimer o de co lunas p or linha. Vace pe de ver
. as layouts de impresson definidos para s~ instalacao, imprimindo
urn arquivo e olhan do no ca mpo Format na t ela Prin t List Output.

Utilize 1i st name para especificar urn nome para a lista enquanto no


sp ooL Voce pede utilizar isso para procuri.-Io mais tarde DO spool.
(Digite esse valor no terceir c cam po ao lado de Spool Request Name

on the Spool: Request Screen)

U tilize sap cover page para. controlar a impressao de uma pagina de


capa com a salda, Uro valor em braa cc suprim e a pigina de capa,
enquaoto I x' faz com que uma delas seja impressa e '0 1 indica que as
co nfigur.u;6 es de impresso ra devem determinar se um a pa-gina de capa
sera ou nao impressa.
Utilize cover text para especificar a titulo a ser imp res so na pagina

de capa.

U tilize department para especificar uro ID de depanamento a ser


impressa na pagin. de capa..

Utilize recet ver para especificar 0 nome da pessoa que deve receber
o relat 6rio. E~e ~ im pressa na pdgina de capa.

U tiliz e keep i n spool IX' para fazer com que a solicital;3.0 de spool
perm aneca n o pr6 prio spool depcis que 0 relat6rio fo i impresso. IS50
p ermite ao ususri o reimprimir a lista sem executa r novamente a
rela.t 6rio.

U tilize data set expi ra t i on para especifica.r quantos dias a sclicitscac


de spo ol deve pe rm anecer no spool. Quando a solicita~o expirar, ela

sen exclulda do spool.

U tilize 1i ne-cou nt e l i ne s1ze para espec ificar 0 numero de linhas


por pagina e 0 numer o de colunas par linha.
4

A Listagem 16.2 ilustra a usa cia inStruliio new- page pr i nt.

!HIDIl,\~ Usl a g em 16.2 A instruo ne.-page pr int


1 report ztx1602.
2 ta bl es zt xlfal.
3 pari5n!ters: prt_1d --l1ke estwospooldest obligatory.
~

5 new-page pr1nt on
no dialog
6
i Jmll!dia t el y ' X'
7
8
destinatfon prt_1 d.

i.o uhct from zulfd .


11
write: I ztx1f1.l 11fnr.
12
Mdse1ect .
13
14 newllage pr int off .
15 wri te: I sy- dbcnt , 'li nes sent t o printer'.

o ccdigc na Listagem 16.2 produz a seguinte saida:


23 lines sent to pri nter BOS4

A linha 3 solicit a ao usuario urn ID de impresscra. 0 campo estwospooldest tern urn relacionamento de chave estrangeira com a eabela
que contem os IDs de impressora, endc uma seta p ara baixo e exi bida
no campo de en trada. 1550 permire ao usuano exibir uma lista dos IDs
de impressora disponiveis.

533

534

IllI. 1~ OOIC.l5 OfFOiMATA(lD. PAm 1 I

A/ i ENDA EM21 DIA l Am/4

A linha 5 redireciona a safda para as ins truco es wri te subseqUentes. no


dialog suprime a. exibiljao cia tela P rint Param eters. Em vez disso 0 5
parimetros sao torn ados do perfil de usuario e des parimetros espeeificados nas linhas 6 a 8. tnmedt at ef y ' X' faz com que a safda seja

Sem quaisque r a.di'io es, s ki p geea umalinha em branco. Slci pn gera n linhas
em branco . Se n for men or que 1, n enhuma linh a em branco sera geuda. ski p
no fim da pdgina atual causari uma quebra de p~ ski p gerari .l.i.nhas em
branco depois de qualquer instruliio wr i te, na parte sup erior da prim eira

impressa imediatamente. A linha 8 passa 0 ill de impressora inserido


pelo ususric na tela de sele~o.

pagina e na parte superior de qualquer pfgina comecada pela instru~ao newpage. Ela nio gerardlinh.as em branco no cornelia de qualquer au tra nova pagina,
nem no fim da Ultimapagina da lisra, Por exemplo, se houver espaliopara mais
duaslinhas naparteinferior d.a pagicaarual, ski P 5 gerariduas linhas em branco
o.a parte inferior da pdgina atual, mas nenhuma na pane superior da pr6xima
pfgina, Isso acontece porque a n<;JV3. pfgina nid era a primeira e nao foi gerada
por uma instruliao new-page.

A safda das linhas 10 a 12 eenviada diretamente para a impressora. Ela


naa

evista na lisra de saida.

A linha 14 remove a indire/iao EF, e a sa1d~ das instrucoes writ e


subseqiient es aparece M Iista.

Exibindo a documentcccc de pa lavra-chave de ABAP/4 para

new- page Ppint


Norm almente, a ajuda Fl

naomc srrard a do cumen tacio

Se voe! quiser um rcdcpe no ultime p6g ino de seu relot6rio, codifique


ski p sy- 11 net como a ultimo instruljoo em se u progrcma. Esso
instn.n;lio escrevere rcdcpes. Se voce qclser ccloncr umo novo p6gino
e fer um rodope no parte inferior do p6g ino cruel, co difique skip
sy-I i net em vel de new page.

new-page print. Para

exibi-la, utilize 0 seguinte procedimento:


1. Comece no ABM / 4 Edit or: Ini tial Screen.
2. Escolha 0 caminho de menu Utilities-> ABAP/4 Key Word Doc.
Voce eneac vera a tela Display Strucrure: ABAP/4-SAP's 4GL Programming Language.
3. De om clique no bctao Find na barn de ferramentas Stan dard. A tela
Search Chap ter Titles sera exibida..
4. No campo Find , digire new page print .
5. De urn clique no bacia Con tinue. Voce sera levado de volta a tela
anterior e seu curso r eposicionado na linha new-page pri nt .
6. De urn clique duplo n essa linha. A documenracfo para new-page pri nt
sed exihida.

Utilizando

insfrw.Co ski p

A iostru/iao ski p permite que voce

Gere linhas em branco.


Movaa posis:io arual de said. para eima ou para baixo dent ro da pagina
atual de saida.

Sintaxe para a instrucdo ski p

III

ski p [n : t o 11n!! n] .

c nde:
n eum literal numerico ou uma vanavel.

ski P to 11ne n faz com que a posicac atu al de saida seja configurada no
ccmeco de 1in.ha n d.a paginaatual A safda da seguinre instruc;rao wri te comecara
nessa posic;rao. Por exemplo , skip to 1i ne 3 faz com que a saida da instrUc;rio
write seguinte comece na coluna 1 dalin ha 3. Uma instnlc;rao skip to lin e que
coatenha um mimero de Iinha maior qu.c 0 mimero areal de liohas pa r pagina
sera ignorada.

A Listagem 16.3 ilustra 0 usa cia ins truc;r~o skip.

EHTIlD.\~ Listagem 16 .3 A inslru,ao skip


report ztx1603 .
tabl es ztxl fal .
datil n t ype 1.
setect " frDlll ztxlfal order by land1.
on change of ztxlfal- landl.
6
if sydbcnt > 1.
7
n sy-l 1nno ~ l.
S
skip t o f tne n,
9
write 35 ' ' ' l ast Vendor With This Country Code ."' .
10
end1f.
write / z t x l fa l ~1a n d l.
11
12
enden.
13
wri t e: / 4 ztxlfal-l1fnr. ztxl fal-namel.
14
endselett.

1
2
3
4
5

o cadigo na List.gem 16.3 produz a seguinte said.:

535

536

HR END'" EM 21 OIlS AIAP/4

SAiDA~

ANILlS!~

CA
1000
Parts unl tntted
1010
I ndust ri al P\II1PS Inc .
Chemi cal Hatio n ltd.
1020
1030
ChickenFeed ltd.
1050
The Bit Bucket
1060
Henery Lane Lt d.
1070
Fl i p M1 Switch I nc. . ... Last Vendor With Thts
-Count ry Code
CC V9
Code Now, Specs Lat er- l td.
no
Duncan 's Mouse Inc Last Vendor With This
-.country Code ....."
DE Vfi
Anna Banana Ltd.
Vll
Wiener Schnitzl!l I nc.
V12
Sauer kraut AG
Last vender- Wi th Thi s
-Count ry Code ..US va
Smile When You Say ~ha t ltd .
Motherboards Inc .
1040
l OBO
Si ltcon Sandwi ch ltd.
1090
Consume Ltd .
2000
JlIon1t ors and Mor e Lt d.
Vl
Quality First Ltd.
V2
cverprtced Goods Inc .
V3
Fl uffy Bunnies Ltd.
V4
/11.00 11lce a Cow Inc.
V5
Wol fman Sport Accesso r ie s Inc.
V7
The Breakfas t Clu b In c.

Toda vez que 0 valor de ztxl f al -l andl se drerar

linha 5 eacionadaroda vez que 0 valor de 1and! for mudado.


Na linha6, sy...dbcnt e 0 cantader de passagemde loop atual. Quando
A

o primeiro registro escl. sendo processado, d e t ern urn valor de uma


unidade,e entia 0 c6digodentro de i f IUO eexeeuradc pa ra 0 primeiro
registro, mas para cada registro sucessivo.

Pa ra registros sucessivos, m linha 7 5y1 i nno contem 0 mimerc da


linh a de lista are al. Istc e, ele e 0 mimero de linha. que a pr6xima
instrUljio write escreverd. Uma unid ade e subuafda dele e isso e

atribuido a n.

A primeira saida de linha depcis de uma instru~ao rese rve fei emirids.

Sintaxe para a

A llnha 9 escreve nessa linha, colocando flagno Ultimo fabricanee de


cada grupo.

Utilizando a

instru~ijo

back

Utilize backpara rerornar a posic;:ao areal de safda para:


A primeira Iinba da pagina atual (a primeira linba depois de t op-ofpage foi processada).

back

UI

back.
onde:

back: emirida de dentro do evemo t op-of-page retorna aprimeiralinha


escrita dentrc de t cp-cf-p ece.

T-- - - - - - - - - - --

Explicando ainda mais, sevoce especificou no standard page headi ng na


instruc;:i o report , ela retoma para a primeira li.nha. dapdgina. Se voce tiver urn
tltulo-padrio de pfgina, a po,ic;io de safda e configurada como a linha da
primeira l.inh.a que segue 0 csbecalhc-padrac.
Urn programa de exemplo e mostrado na Listagem 16.4.

EN1lADA~ Listagem 16.4 A instru<;co back


1 report ztx1604 no standar d page headin g.
2 data n type 1.
3 do 4 t imes.
write: /(4) sy_-1ndl!!x.
4
5
enddo.
6 back.

7 do 4 times .
8
n 51- i ndex; 10.
g
write: j 10(4) n.
10
enddo.
11

12 top-of-page.
l3
write : I 'This was lily t itle' .
14
ul tne.
15
back.
16
write 6 '15
17
skip.

A linha 8 move a posic;:ao de safdapara 0 comeco de linha n, que e a


Iinha previamenre escrita,

i nstru~a o

o seguinte ea sinuxe para a mstruc;:io back:

o c6d.igo na Listagem 16.4 produz a seguinte saida:

SAiDA ~

This 15 r.y title

I
2
3
4

10
20

30
40

AP lfflD A E1iI 21 DIAS AIAP/4

IHillIE ~

A primeira execucgc da linha 4 aciona a linha 12 (0 even to top- ofpage).

enddo.

10
11 skip .

A linha 13 escreve um titulo e a linb a 14 a sublinha.

12 do 4 ttees .

A linha 15 configura a posi~io atual de safdapara a primeira linha na


lista de safda,

13

do 4

14

15
16
17

position sy- t ndex.


write ' A' .
endcc,
sk1p.

18

enddo.

A linha 16 sobrescreve 'was I com li s I.

A linha 17 move a posi~io de saida areal para. baixo de uma linha. A


segunda linha da lista de safda esd. agora na linha de saida areal.

0 centrale retorna a1inha 4. Ela emite urn novo caracrere de linha e


a primeiro valordesse loop ~ a safda para a terceira linha de safda, Os
valores restantes sao a saieianas l.i.nhas suc essivas.

ttees ,

o c6digo na Listagern 16.5 produz a seguinte saida:


WA
WA
WA
WA

A linha 6retorna a pcsicao de saIdaatualpara que ela fosse a primeira


"1 escrever depois do processamento t op-af - page (linh a de [ist a de
saida 2).
0 loop na linhas 7 a 10 sobrescreve a lista de saIda comecandc na linha
3. Esse dados sio escritos a direita dos dados existentes, comecando
na coluna 10.

Utilizando a instrUl;ao posj tjon


Utilize ainstrutji o posi t i on para especificar a pr6xima coluna de saida na linha
atual. Par exemplo, ski p to 1 i ne 2. pos i t i on 3. wri t e I Hi I esc reveria Hi na
Iinha 2 , comecaadc na coluna 3.

-Z

Sintaxe para a

III

lHilIsE ~

instru~ao positi on

position r1.

onde:

...

A Listagem 16.5 ilus tra a usa cia ins rruc io position.


Lis1agem 16 .5 A instruc;oa positi on

I re port zb1605.
2 data n t ype t ,

3 do 4 t1mes .
do 4 t imes.
5
posi ti on sy- tedex.
6
writ e ' A'.

7
8

eeeee.
new- li ne.

A linha 4 comeca urn loop minhado do.A linha 5 sempre configura a


posil;iia de saida arual igual aiteratjio atual de loop. Entia, em primeiro
lugar, a posi~ao arual de saida e configurada como 1. Depois, e
configurada como 2 e assim pa r dante. Isso faz com que a linha 6
escreva a leera A quatro vezes, nas colunas 1 a 4.
A linha 8 move a posi~o de saIda para baixo em urna linha. Isso resulta
na safda sendo escrita nas linhas suc essivas, comecando na linha
seguinte nos cabecalhos-padrac .

vI ~ uma varifvel numerics au lite ral.

EH1RADI~

A linha 3 comeca um loop do.

A linha 11 d. saida em uma linha em branco.


As linhas 12 a 18 si o as mesmas que as linhas 3 a 9. excet o que, em
vez de new-I i ne, ski p eutilizada na linha 17. Isso tern o efeitc deinserir
linhas em branca entre as linhas sucessivas de safda.

Utilizer e instrw;co positi on seguido imediotomente per umo write


at (obordodo no capitulo
anterior).

e equivelente 0 emiti r umo instru~co write

540

0016, lliHKASDEFORllATA(lo,PARTE 2 r

APRENOA EM 21 DIA5 AUP/4

Utilizo ndo

Text 1
Text 2

inst rui;oo set bl ank 1i nes

Nc rmalmente, se seu programa emit e uma instro~ao wr i te qu e resul ts na safda


de um a linha em branco, essa linha sera suprimida.. P or exemplo, quand o
escrever uma variivel que eontenh a espaccs em branco, voce nao veri uma
linha em branco nil. lista. U tilize a ins tru liao set blan k:: li nes para alterar esse

Text 3

comp crtamento.

-Z
~

Sintaxe para a instru,cio set bla nk 1; nes

Text 4
Text 5
Text 6

set bla nk li nes on : off.

CIl

I
I

Os seguintes p ontos se aplicam:

A cocfiguracao padrdo escl desativada,

As linhas em branco geradas pel. instru~ao skip Dio

SaO

suprimidas.

As linhas em branco geradas por write I sem uma variavel nao sao
suprimidas. Por exem plo, wri t e [, sempre genra. uma linhll em
brancc.Write / ., ' .56 gerarauma linh aem branco se set blan k 1i nes
on river sido executada de antemdo.

I
!

A instru~io ski p sempre escreve linhas em brancc e dessa forma., a


linha 6 gen uma 1inha em branco.
A linha 8 permite que a. in stru ~ao write escreva linhas inteiramente
em brane o na lista.
A linha ffconfigura li.nhas em braneo novamente.

EH1RAOI~ Lista g e m 16.6 A instru, oo set blank l ines


report zt x1606.
datil: fl . ra , n .
write: I 'Text 1' .
write: I fl. I f2,
write : I 'Text 2'.
sk.ip.

Por padr ac, linhas em braneo que resultariam da tentativa de escr ever
espacos em bran eo sao suprimi das. Port anto, a linha 4 nao fn com
que quaisquer linhas em braneo sejam escritas.

A linha 10 escreve treS linhas em branco.

A Lista gem 16.6 ilustra a mstruliao set blank lines.

1
2
3
4
S
6
7
B

A linha '2 define tres varidveis. Todas tern 1 como comprimento de


caractere e um valor inicial padrio de espacos em braneo.

A linha 14 gera uma linh. em branco.

A linha 16 nao gera linhas em bran co.

Resum o

fJ .

Utilize new..line para cornecar uma nov a linha au blo quear urna linha
especjfica no Iugar. Ela pede prevenir ro lagem horizontal de qualquer

linhaindividual.

set blank l i nes on.


s wr i t e : I ' Text 3' .
10 write : I fl . I f 2. I f3.
11 wr-tte : I 'Text 4 ' .
12
13 set b1.llnk. l i nes off .

Utilize newpage para gene uma quebra de pagina, acme au desarivar


d tu los e cabecalho s, alterar a contagem de linha ou tamanho de linha
entre paginas ou enviar saida para 0 spool.

14 skip.

15 write:
16 wri t e:
17 write:

I
I
I

' Text S' .


fl , I f2,
'Text 6'.

f3 .

Utilize ski p para gerar linhas em bnnco nil. safda.. skip t o 1ine
configura a posil$io de saida para uma linha espe cffica.
Utilize back:: para retomar pan a parte supe rior d e urna pagina au para
o corneco de urn gropo de linhas.
Utilize pos i ti on para especificar a proxima ccluna de saida.

o e6digo na Listagem

16.6 produz a seguin te saida:

Utilize set bla nk lines para permitir que linhas em branco sejam
criadas escrevendc varhveis q~e contenham esp aco s em branc c.

541

542

APIEH DA EM21 DIAS ABAP/4

IL...-:...Fa~a

OORlOI~ List a gem

- - - - ' _

Utilize sfmbo los e kones e m seu relc tcric

Nao codflque excessiyomente um

perc cementer a reodopta bilidade.

tomonho de p6gina. Permitc a os usucr ics

16.7 top-of- page, position e skip

report zty1607.
data n type t ,
do 4 times.
do 4 times .
positi on sy-tncex.
write 'A' .
enddo.
add 1 to n.
s kip to line n.

espe d fic6-lo quando jorem im primir 0


relot6rio.

Nao erie relot6rios mois lorgos que 132


coroderes no coso de 0 usu6 rio querer
imprimi-Io . A moloria dos impressoro s 000
pode imprimir p6g inas mcls largos que
1"32 ccrccteres.

enddo .

t op-of-page.
n sy-11nno.

P&R

Realmente, nao cntendo a difereuca entre skip e new-I ine . Elas


mio UCID com que a pr6xima wri t e va para uma n ova linha?

o c6digo na Listagem 16.7 produz a seguince safda:

sllol ~

prop6sito de ski p ~ gene uma Iinha. em branco na. saida.


new..l1 ne faz com que apr6xima linhade safdasejaescrita parauma
nova linha e Da O gcra linhas em branco.

Workshop

o Workshop oferece duas maneiras de voce verificar a que aprendeu neste


capltulo. A sCliao Teste oferece perguntas para ajudar asolidificar seu entecdimento do comeudo abordado e a sec;ao Exerdcio permite que vocs pratique a
que aprendeu. Voce pode enccntrar as resposras ~ perguntas do Teste e aos
exerctcios no Apendice B. "Respostas as perguntas e aos exercfcios".

Teste
1. Qual instruc;ao voce pode utilizar para sobrescrever a mesma linha?
2 . Quando voce devers preferir uriiizar ski p sy-l i net em vez de new-

page, se quiser urn rodap~ ?

Exercido 1
Explique a fluencia de ccntrole no seguinte programll. e como d e funciona.

I
;

i,

AMA
AMA
AMA
AMA

17

Modularixasao: eventos
e sub-rotinas
Depois de concluir este capitulo, voce sera capaz de:

Cochecer as tipos de unidades de- modularizacio disponiveis no

AJ3M/4
Entender as eventos de ABAP/ 4

Utilizar eventos initi a11 zation, start-of-selec ti one end-or - set ec


ticn
".. Definir sub-retinas enemas e internes

Deflnir variaveis global, local e estaticas e areas de trabalho de label.


Eceecder 0 efeito de ex1t, check estop dentro de eventos e sub-retinas

Unidades de modulariza <;oo no ABAP/4


Umo unidcde de moduJc rizo~a o e como urn shell em que voce pode colocor
c6digo. Elo pennite 0 VOC! separor urn grupo de Iinhos de c6digo do restante
e entao execute-los em urn tempo especifico. M linhos de c6digo d entro de umo ~idode

IDVO...
TEiKO"

de modulorii o o comportcm-se de mcnelrc muito semelhonte 0 urn miniprogramo Clue


pede ser chomado de o vtro programe.

D ABAP/4 cfeiece tres ripos de unidades de modu larizaci o:

hltp;l!_

.cDmput ,COm,br

/t

Even tos

A linha 2 identifica 0 come cc do evento initial i n t i on.

A linha 3 escl associada com

Sub-retinas

M6dulos de fun,ao
Esre capfrulo explica eventos e sub-retinas. 0 proximo capftulo trata de

m6dulos de Unljaa.
Utilize asunidades de modularizacao para eliminar 0 c6digo redpndante
dentrc de seu prognma e para toma-lo mais facil de ler. Per exemplo, suponha
que voce eenba uma sene de instrucdes que formatam urn endereco e precise
farmatar enderecos em mas lugares diferentes em seu programa. Em vez de
duplicar 0 c6digo dentrc de seu p rcgrama, euma boa ideia cclccar esse c6digo
em uma unidade de modularizacao e chamd-lo sempre que voce precisar
farmatar urn endereco.
.
r

Defin indo eyentos


Um eveote ~ um tog que identifica umo seo de c6d igo. A seo de e6digo

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

EKTRAD.\~ Listagem 17.1 Tres evenlos b6sicos

A 1.inha 9 perte.nce ao evento end-of-selection.

limite inferior do c6digo que pertence a end-of- select i on esti


marcado pelc fun do program.

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

Urn progroma de driver um progromo que contro lo outro progromo {driven,


que que r dizl!!r controlodo}. ASAP, fcmece programos de driver co m a sistema
de R/3. VocA fomece a progromo contr%do. Quando voc! inicia Sl!!U software, urn
progrcmo de driver sempre tere sido inidado onteriormente e entcc otivarO as eventos
em seu prograrno: Para reltercr, urn progromo de drivl!!r inicio rC primeiro e enmo
contro lar6 quando se u progromo obtiver a co ntrole. Esse sempre foi 0 coso de todos as
progromos que voce escreveu ote ogara; openos n50 esteve ciente disso ofe agora.
Cerflflque-se de ler este porngrofo ccidcdcscrnente. Repetindo, quan do voc~ Inlclc seu
software, um progromo de driver terO iniciodo primeira e contro lor6 seu progroma,
chomondo eventcs dentro dele.
Seu p~rc mo

o progromo de driver
eos IlYentos que ere
2.

3.

Sliol ~

Z
3

c6dig o na Listagem 17.~ produz a seguinte saida:

'~ -'ita rt:~o{ . se1~~i'{~n'~

~i.:.:~ ~h# r~.t"i

4.

8 end-ot -select ion.


9
write I '] '.

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

5 sta rt -c f-select t cn.


write

A linha 6 pertence ao evento star-t-cf-sel ect icn.

evemc

A linha 8 marca 0 limite inferior do c6digo qu e penence ao evento


start-of-selection e 0 limite superior do event o end- ct-se t ect tcn .

FigurA 17 1

1 report ztx1701.
2 fnitial1zation.
a write I 'I'.

400

A linha -4 marca 0 fim do c6digo que pertence a in it ial iza t i on e


ccmecc do eventc start-of-selection.

Eventos
Ao contririo da prim eira impressao, as programas de Al3AP/4 sao baseados
em eventos. Urn born entendimento sabre eles e a chave para. um bom
eatendimento de ABAP/4.

rom linhas

0 evectc initialization. Se
de ccdigo seguirem essa primeira, eodas elss pertencerac
infti ali zatten.

c6digo associado com urn evento acionado por uma instI1l<jio em


urn programa de driver. Os eventos sao acionades pele programa de driver em
urna sequencia predefmida e previslvel. A Figura 17.1 ilustra es~e ponto. .
AFigun 17.1 tempseudoc6digo dentro do programade driver. 0 e6digo
mostradC? DO programa i direita e 0 ~6digo real. Quando 0 programa ztxl701

O~ 17dIODIJWl1.lyio,eVEHlOSE SlJ8.R011JUS

.~ execueadc, 0 driver a esquerda ten iciciado primeiro. 0 prognma entia


segue esta sequencia de passes :

Aciona 0 eveaec i ni t ia li zat i on, fszeado com que 0 c6digo que pertence a i ni ti al i zation seja executado. Se voce nio river cod.i.fi~do
urn evento in i t ia l i z ation em seu programs, 0 programa de dnver
pulari esse passe .

Mostra a tela de sele~io para seu programa. (Uma tela de selcr;ao


con eem as camp os de ent rada pua suas icscucoes de parimetro.) Se
seu programs DaDtiver uma tela de sele'iao, ele pulara esse passe.
Aciona 0 event o s ter-t-o f -sel ect t cn, fa.zendo corn que 0 c6digo que
p errence a esse event~ seja executado. Se voce aao tiver codificado urn
evento sta rt-of- selecti on em seu program a, ele pulara esse passo.

Aciona 0 evento end-of- sel ecti on em seu programa, executando todc


. 0 c6digo que pe rt ence a ele. Se vo ce nao tiver codificado urn end-ofsel ect ten, d e pularf esse passo .

Mosua a lista de safda para

usudrio.

A ardem de execucac dos eventos edererminadapelc programa de driver.


nao por seu progranu.. Po rtanto, voce pede codificar os evenros em qualquer
ordem. e a ordem de execucgo ainda sed a mesma, A ordem de eventos em seu
pro grama ni o importa; des sempre serio acionados na mesm~ seqiiencia pela
programs, de driver. A Listagem 17.2 ilustra esse ponto.

1. fl
2. fl
3. f l .

549

1
Z
99

. lItiUSE ~ Quando voce inicia ztx1702, 0 programa de driveriaiciars primeiro.


Ele aciona

I
I

evento i nitial iza tian.

0 c6digo associado com 1niti al 1zat ian eexecuudo (linhas 12 e 13).


o valor de f1 e escrito e 1 e adicionado a ' ele. 0 con trcle entao

reromara para

progra ma de driver.

0 prcgrama de driver procurara uma tela de seler;ao. Como nao existe


nenhuma para esse programa,ele ira procurar urn evento sta rt -of - selection. Ele a Iocalizari na linha 7 e entao ira ramificar para ztx1702
comecando na linha 8. As linhas 8 e 9 serac executadas e a contrcle
enta~ retcrnara para 0 driver. .

0 programa de driver eneso procurar.i um evenec end-af - sel ect i on.


Localizando-c na Iinha 4, ele transferiri 0 controle zo1702 comegandc
na linha 5. Somenre a linha 5 pertencerd ao eveae c end- af-sele ct i on,

I
i

entaa ela sen. executada e 0 controle entia iIi reto rn ar para

driver.

0 driver entio exibiIi a lisa para. 0 usuaric.

. Esse ezemplo ilustra que voce! pode colocar os evento s em uma ordem

diferente, mas a seCJ.iiencia de execu~ao naa sed alterada. A sequencia de


execu~ao ~ sempre i nit ial izati an, start-of-sel ectton, end-of- sa l ect i on. Hi

outros eventos tambem; alguns ocorrem depc is de in itialization e outros


ocorrem entre start-of -selecti on e end-of-sel ect i on.
Os programado res nc rmalmente pa sicionam eventos na ord em em que
eles sao acionados para deixarem seus programas mais faceis de entender.
Hi onze event os d.iferentes no ABAP/4-, caregorizados na Tabela 17.1 de
acordo como eles sao acionados.
.

.... Listagem 17.2 "Eventos ccion odos no ordem ditodo pelo programa de

ENTiADI,. driver

1 report ztd702 .
2 data fl type 1 val ue 1.
3

4 end-ct- selecrt cn.


5
write : I '3 . fl'. fl .

Tabera 17.1 Eventos de ABAP/4

6
7 start-of- se1eet1on.
8
write:: I ' 2. fl . '. fl .
fl 99.
9

Co1egoria

Event os

Driver

initiali zati on
at selection-screen
start -af -select ion
get
end-af-s election
at line- selection
at pfn
at user-conmand
top-af -page
end-of-pag.e

10
11 initialization.
Ii! write : I '1. fl' . fl .
13 add 1 to fl .

Usu6rio

o c6digo na Listagem 17.2 produz a seguinte safda:


,.

Progromo

.Ir
I

Os evenros de driver sao acic nados pelc programa de driver. Os evenros

Esse acionamentc duplo nao causa normalmente nenhum problema com seu

de usuario sio acionados pelc .:usu ario atraves da interface com ele. Os
evenros de programs sao as acionadcs de dentro de seu programa. Este
capitulo detalhs a usa de i ni ti al i zat ton, start-cf -se1ect i on e end-af-se-

programs ou com sua safda, porque


Voce nao pode ver a saiclade writes emitida. ant es de uma s ele~o ser
mostrada, entia normalmente nie as codifique ar.

lection. Note que alguns desses eveneos ocorrem entre stert-ct-selecttcn e


end-a f-s election.
No capitul o anterior, "Tecnicas de formatacao, Parte 2/' voce aprendeu
sabre os eveetos top -at-page e bottom-af-page. As informafioes nesre capitulo
tambem se aplicam a eles, mas esses sao aciceados par inStnlfiOeS dentro de
seu prognma, e nao do driver.

Considerccoes espeCiois

00

0 evento top-cf-paqe cc sruma somene conter insrrucoes write e a


safda do primeiro acicnamento e descartada, de modo qu e nenhum
dane e caus ado quando de e aciocado duas vezes.

utilizor write dentro de eventos

Os eventcs tern dois efeieos incomuns na inStrllfiaO write:

Padronizando start-of-Sf] f ct ; on

Se urn programatem uma tela de selefiao e voce emite uma inStrufiao


write em um eventc acionado antes de start-of-sel ectton, voce nao
vera a saida dele. Por exemplc, se river uma instrU~o parameters em
seu programs, uma tela de selefiao sen criada para. seu programa
permitir que a usudrio digite 0 valor de parl.metro. Set nesse programa,
voce emitir urn wri t e em [ oi ti al i r et t on, nao veri a saida da instrulfao
wri t eo

A varia<> write to de instru o ."ri te nCio ad ona top-of-page.

Um' novo evento sempre come)il em uma nova linha na saida. Por
exemplc, se voce emi te uma instruljaO write em start-af-selection,
urn write em end- ot- se l ect i an come~ em uma nova linha.. Voce
pode utilizar skip ta line se for necesssrio continuar escrevendo na
mesma linha.

I
I

Se a primeira instrur;ao execurwel em seu programa nao for precedida par um


nome de evento, em tempo de execur;ao 0 sistema. aut cm aticamente insere
sta rt-af-selection antes cia primeiralinha de c6digo executavel, Pott ant o, se
voce nao civer quaisquer eveatcs codificados, au se nao river colocadc c6digo
na parte superior do programa sem atribuir name s a: urn evemc, sta rt -of - se lection e inserida. A Lisragem 17.3 oferece urn exemplo disso, em urn programs que contern tanto uma tela de selefi30 como evecros. Ele tam-bern
'. contern urn. eveaeobaseadc em programs - top-of-page.
ENTlADAt.. U~ta~e~ 17.3 "sh .rt -af - sel ect ion outomaticoment~ inserido antes de
pnrnerro linho de c6dlgO

1 report ztx1703 no standard page headfng'.


2 parameters pI(8) .

Acion ondo top-af -page


Esu ser;ao descreve quando top-at-page e acionada em rela~o aos eventos de
programa de driver. Se seu programa nao tiver uma tela. de selefiao, a primeira
instrUt;aO wri te executadascions top -af-page. Se seu programa riveruma tela
de selecao, e passive! que top-of-page seja acionada duas vezes:

Pela primein. instru~ao write executada antes de a tela de sele~ao ser


mo stra da

Pela primeira instru~ao wr i t e executada depois que a tela de se1efiao


mostrada

Somente se estiver fazendo algo incomum em top-of-page, como abrir


arquivos ou inicializar clados, voce precisari ter cuidado com 0 efeito de
acio narne nto duple.
Se top -of-pag e for acionada duas vezes. voce somente vera a saida de
instrur;oes writ e dentro dela na segunda vez que ela for acionada.. A safda criada
pelas instru~6es wri-te durante a primeira va que ela e acionada e descartacla .

3
4 wrtt e:
5

'p1 .'. pI.

6 ini t iali zati on.


pl 'I nit'.
S
9 end-of-se l ect1on.
10 write: J(14} sy-uline.
11
I ' End of program'.
7

lZ
13 top-of . page.
14 write: I ' Thi s is My Title ' .
IS skip .

o c6digo na Listagem 17.3 produz a seguinte safda:

I
I

.J
"

D~ 17.MDDUURllAlAo,[VENTOS E5U...onNAS

UlENDA EM 21 DIU ABAP!4

( st ert-et- selectt cn.

This i s My Titl e
pl - IIHT

End of progr am

.;.'

ANlusE~

Q uando voce exec uta

fl - 'A'.

7 1fn- 'A'.

pro grama ztx1703, urn p rogr.una de driver


inicia primeiro. Desde qu e haja c6digo no ccmecc do programa que
m o pertenca a quaisquer evenros, uraa start -of-select ion auto maticamente e inserida na linha 3.
0

0 programa de driver aciona a eventc initialization. A linha 7


exe cuta e attibui 0 valor' Ini t' para pl. 0 cone-ole reroma ao prognm a de driver.

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,

0 usuaric pression a Execute na tela. de seles:ao . 0 contrale retoma ao


programs de driver, qu e enrao acio na a event o st art-o f-se lect i on.

Desde que start-of-sel ecti on seja inserida na linha 3, a controle


passa para ztx1703 iniciando na

1i.nha 4.

A linh. 4 ~ executada. Como esta ea primeira instruljio wri te execu tada depois de start-of-se lectian, ela aciona a event o top-of- page.

D controle transfere para linha 14.


A lioh. 14 escreve urn titulo . A linha 1S escreve uma linha de branco.
'controle rerorna pua linha 4.

A linha 4 escreve a valor de pI.


0 driver entao aciona
para a linha 10.

eventc eec-ot-setect t en. 0 controle passa

o A linha 10 escreve uma linha horizontal de 14 bytes.


A linha 11 escreve End of pro gr am. 0 controle retoma para a programa
de driver.

0 driver exibea lista para 0 usudrio.


V o ce nao pode colocar uma condiljio em volta de urn even to ne m colocar
urn even t o dentra d e urn loo p. Fazer isso caus a urn eITO d e sintaxe. P or
exemplc ; c codigo na Listagem 17.4 causa u rn eITO d e sintaxe.

ENlli.DA..... Listagem 17.4 Nco cclo que um eve ntc dent ro de umo condit;ao ou de
,. um loop
1 report ztx1704.
2 data fl .
3

siiDI ~

o c:6digo no Ustogem 17.4 produz este erro de sinfoxe: Incorr ect

nesti ng:
bef ore the statement ' EN D -O F ~S ElECTION' 1 the structu re introduced
by ' IF' mus t be concl uded by ' ENDI F'.

..... Os nomes de evento tem prioridodemclsa ltaque outrnsinsfT'u(;6es de AWN.

ANALISE ,.. A instnu;:oo ; f no linha 7 pertence 0 0 eventc st ar t of - sel ect1on. A instrue;oo


end; f no linho lO pertence 0 0 eventc end- of-sel ect ; on. Voce fechotodos as condir;;oes
obertos e cs loops dentro do eventc oos que eles pertencem. Pcrtcntc, esse progromo
deve ter uma end1f ontes do eventc ene-e t -setecet en. Como he tombem umo endif
dentro de end-of- sel ection no linho 10, oquela endi f feria de ser remavido ontes de
o progrnmo ser executodo.
.
Voce n ao deve colocar defini c;6 es de dados dentro de eventos. Embora

isso nio cause u rn erro de sintaxe, rrata-se de urn estilc de programa~ao pobre.

Tow as defini~6es de dados seriam feitas na parte superior do programa..


Cada evecec tern um prop 6sit o especfficc e e a ece sssric realizar uma
tarefa de programacac especifica.. Quando surgir a necessidade, irei refereacialos no m ate rial que se segue. Se voce nao vir quaisquer eventos em um
pro grama, sempre lembre-se de que ainda exis t e u m - start-of-set ection.

553

DlA 17: MODU~O: EVEHTDS ESUB-ROllNAS 555


APRlNDA lM 21 DIAS ABAP/4
554 ~=..::::...o:"'::'::=-"------------------.jl------ ---- ----====
==~

Sgjnd o d e urn eyento

Nco utilize stop nos seguintes eventos: i niti ali zation, em selec t io n-screen output, top-of-page , and end-at- page. Tecnicemente, stop pode fundonor com top-of-page e end- at - page, se
voce evltcr utilizer a 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.

relat6rio mostrado na Listagem 17.5 permire a voce experimenter as


efeitos dessas instrucdes dentro de varies even eos. Co pie-a e remova a s
comendrios de uma. vez para experimenter as poasfveis variacoes.

ENmDA~ Lisfagem 17.5 Os ~feitos de exit, chec k e sto p dentro de evenios


1 r eport ztx1705 no standard page heading l ine-count 6( 2).

Emborc nesse ponto somente tr&s eventos tenham sido opresentados


e m deta lhe , esto se<;oo foi escrito em urn sentido qercl, de modo que

2 *em eventos antes de start-of-selection:

elc se a plique iguolmente bemdepois de voceoprender a utilizartodos

3 ..

- exit e check. ti!m 0 mesmo comportamento. t l es dei xam 0 eventc

*
5 *

- stop vai diretamente ec eventc end-ct- select t cn

05

even tos.

processenentc contfnua com

prOx1mo evento ou al :l.o.

Em tod os as eventos:

6 *
7

checkimediatamente deixa 0 evento arual e 0 processameotc continua


com 0 pr6ximo evento ( 0 1,1 aliao, como exibir a tela de selecac ou lista
de safda).

8 *em ste rt-cf-selecttcn e eventcs sUb seqllentes :


9 * - exit termina 0 relatOrio e IIlOstra a lfsta de salda
10 *
excec;!o : top:'of-page: exit detx e 0 evento
11 * check. detxa 0 evente e 0 processamento continu a com 0 prOximo .
12 * stop vet diretamente para 0 evento end-ct- setectt cn

stop imediatam ente deixa 0 evento atual e vai dir etamente para 0
evento end-at-s election. Executar stop dentro de end-at-s election
deixa 0 evento . N so causa urn loop infinito.

Em even tcs que ocorrem antes de start-ot-sel ection ,


exi t e check tern 0 mesmo compcrtamento. Eles deixam 0 evento
imediatamente e 0 processamento continua com 0 proximo evento
(au 01.<;3.0 , como exibicio da tela de selecac).
Em start-ot-sel ect i on e evencos que ocorrem depois dele:
exi t te rmina a relat6rio e mostra a lista de saIda. Existe uma unica
exce<;aoj dentro de tcp-of -paqe, exit ccmpcrta-se como check.
check deixa 0 evento e 0 processamento continua com a pr6x.imo
eventc (au alJao l como exibi<;ao da lista de saIda).
check, exit e st op nso configuram a valor de sy-sub rc, Se quiser configura-la, voce pode atribuir urn valor numerico a ela antes de partir.

(nao utllize stop em tnt tf al taetton ou na sal da de se lect t cn- screen)

13

"execut a

14

lIIl:

15 parameters: eXit_sos r-adtubut'tcn group gl, "exit em st art-of-sel ect ion


eXit_eos radiobutton group gl . "exit em end-cf- select fon
16
17
18

chck_sos radiobutton group gl. "check em sta rt-of- sel ect i on


chck_eos radlabutton group 91, "cheek em end-cf- setec t t on
stop_sos radiobutton group gl, "stop em st art-es-se 1ect i on
st op_eos radiobutton group gl, "stop em end-of-sel ecti on
none
radiobutton group 91. "sem stop, exit ou check

19
20
21
22
23 initiali zat i on.
24 * exit .
25*

check l Z .
stop.
eher_sos .. ' X' .

"h6 evento
"h6 evento

"nlio taz 1550


26 *
27
Z8
29 at selecti on-screen output.
"M evento
30 " exit .
"h4 evento
31 * check 1 '". 2.
"nio taz 1sso
32 * stop.
message s789{zk) wi th 'at set ectton-sereen output ' .
33
34

557

APR ENDA EM21 DIAS UAP/4

A linha15 defineurn gropo de boeees de op~o. A escolha de um dele,


fm com que a instru~o mencionada no comentdric seja executada
como indicado. Por ezemplo, escolher exit_50S faz com que a instru~ao exit seja executada no evento start-at-s ele ct i on.

35 at sel ectten-se-een on radiohutton group gl.


36 '"' exit.
- hi evente
37 check 1 .. 2.
- hoi evento
38. stop.
-vai pari end-of -select i on
39
message i 789(zk) with ' at select ion-sc reen on rbg'.

check 1 '"' 2 e muito codificado entao sempre reto ma urn resultado


negativo.

40
41 at set ect f cn-screen.
"M evento
42 exit.
"M eventc
43 check 12 .
"vai para end-cf-selecttcn
44'"
st op.
45
message 1789(zk) wi th ' at sel ect i on- scr een'.

Voce pode querer incrementar a contagem de linha para tornar a saida


mais Iegfvel. isso e configurado para que 0 evento bottom-at- page seja
acionado.

46
47 s tart-ot sele ct fon.
48
wri t e: / 'Top of SOS' .

49
50

51
52
53
54
55

Retornondo do liste

exit_50S " ' X' .


exit .
elseif chck_50S.o ' X' ~
check 1 2.
elsei f StOP_50S " ' X'.
stop .
endif.
write: / ' Bot t om of 50S'.
if

56
57
58 end-of- sel ect i on.
59
~1te: / ' Top of EOS' .
60
11
nit_t!05 'X' .
61
exit .
62
el seif chck ees ' X'.
63
check 1 : 2.
64
el setf stoP_eDs .o 'X' .
65
sto p.
66
endif .
67
wr1t e: / ' Bottom of EOS ' .
68
write : / '1' ,
69
/ '2 ',
70
/ ' 3' .

"hi

rehtOrio

- hi evento
"vai para end- of-se lect i on

-I'll rel atOr10


~h!

relatOrl0

-h&reletet tc

71

7Z top-of-pag e.
73
write : / 'Title' .
74'"
exit .
75'"'
check ' X' ' 1' .
76'" st op.
77

instru~ ao

writ e

" tom. para a 1n.strul;.lio write


-!lot o end-of- sele ct ion - ni o escreve depois dina

-ha event e

II!

ultne .

78
79 end-at-page.
80
ul1ne.
81 exit .
82 check 'X' 'y'.
S3'"
stop.
84

"M evento e retcme para a

write: / ' Footer'.

-M relat6ri o
-hI event o e retorna para a i nst r,ul;! o write
"goto end-of -selection - naQ escreve depois dis so

Vejamcs row de perto os evenros no contexte de urn relat6rio que tern uma
tela de sele ~ao. (Lembre-se de que a instruc;:ao parameters gera uma eels de
,e1e>10.)
Quando 0 usuirio executa 0 relatorio, 0 driver aciona i nit; al i zati on e
entio mcstra a tela de sele~o. Depois de pressionar 0 botio Execute. 0 driver
acionaos evenecs restantes, 0 programa termina e 0 uscsrio ve a lista. 0 usudric
pressiona 0 botao Back para retomar. 0 driver entio reiaicia 0 processamearc
comecando na parte superior da lista de evento . Ele ad ona 0 evenro initial izati on e entio todos cs eventos subseqaectes seguem novamente em sua
seqiiencia normal. 0 -resultado e que 0 usudrio ve a tela de sele~iio depois de
pressionar 0 bone Back. Ha uma diferenca no processamento, porem, quando
ocorre urna reiaicializacio.
A tela de se1e~ao tern sua pr6pria c6pia de todas as variaveis que sio
exibidas nela. N a primeira vez que 0 re1at6rio executa e 0 programa de driver
recupera 0 controle depois que 0 evento i ni t i al i zat i on terminou, ele copia
as valcres das varidveis do programa. para as varidveis corre spoodentes Il2 tela
de sele~io e as exibe. 0 usuaric pede modificar os campos de entrada. Quando
o usuaric pressiona 0 botio Execute. 0 driver armazena as valores cia tela de
se le~io em duas areas de dados: uma penencente i tela de s ele~ao e entio em
suas variiveis do programa..
Entretanto, essa aljao dual somente ocorre na primeira vez que voce.
executa 0 programa. Quando 0 ususrio pressiona.Back na lista, ini ti al ; zation
eacionado novamente. Quando a controle rercrna para 0 driver, ele nao copia
suas variaveis de programa para a area de dados cia tela. Em vez disso,ele exibe
os valores exisrentes da area de dados da tela; ele aincia contem os valores que
o usuario digitou. 0 resultado e que 0 usui rio ve. os valores que insenu por
ultimo. independentemente do que fai alterado em seu pr ograma. Entia,
depois que 0 usuino pressiona 0 botao Execute, os valores na tela sio copiados
para a area de clados da teta e entaO para seu program a. sobrescrevendo
quaisquer diferen~as. Por exemplo, se voce configura valores durante a 1nHi al i zati on, esses valores serao vistas na tela de se1eCjao quando iniciar a

S58

-I---

!PREMDA EM 21 DIASABA P!4


~=~:"':::::"::::':':"-

---====== ~~

p rograma. Quand o voce pre ssiona 0 be tte Back na tela de sele~aol initial;
zat ion executarf, mas as valores configurad os dea tro dele nao sen e mosrrados. 0 usuaric em vez dissoverd as valcres que ele digirou.

A linha 10 executa.
A Iinha 11 retorna controle para a linha 6.

A linha 7 executa.
Hi dais tipos de sub-retinas:

Sub-rotinas
MOYO ....
TWKI ~

Uma

sub-retina e umo se~ao de

c6d igo reuti liz6vel.

Sub-retinas intemas

Ecomo urn miniprogramo

que pode ser choma do de cvtrc ponto em sev progroma . Derrtrc dele voce
pede defioir vcrlcveis, execvtcr 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.

Definindo e ,harnando s ub- re tinas internas


As defini~5es de sub-rotina normalmente sao colocadas no fun do programa,
depcis de to dos os even ros. A instru~ao fonn define 0 fim do evento p recedente
e 0 ccmecc de uma sub-retina. As sub-retinas nio podem ser aninhadas no
interior de eventos.

Pan chamar um a sub-retina, utilize a instnu;ao per f onn.


~ Listagem 17.6 oferec e urn programa de exemp lo qu e define e chama
uma sub-retina.

EN'WDl~ Ustagem 17.6 Definindo e chornando umo subrotino


1 I"tpo.rt ztx1106.
2
3 write: j ' BefoT"@ call 1' .
4 perlonn subl .
5 writ e: j 'Before call 2' .
6 perfonn sub1.
7 writ e: j After cal ls",
8
9 form sual..
10
write : j ' I nsi de subl' .
11
endfonll.

o c6digo na Listagem 17.6 pr oduz a seguinte saida:


SAiDA ~

AHiuSE ~

Before call 1
Insi de sub!
Before ca11 2
Ins ide sub!
After calls

559

en

Sintaxe para a

instru~aa

form

f orn s [tables tl t2 . . . ]

[using ul 'falue (u2) .. . J

[changing c1 'falue (c2) ].

1ft

endfonll.

code:

e 0 nome da sub-retina,

tl, u, ul, cz, c1 e c2 sao parametres.


tables pertnire que as eabelas internas sejam passadas como
metros.

para-

A adi~ao value cao pede serutilizada depcis de t abl es .

A adi!j3.o val ue pede ser aplicada a quaisquer variiveis passadas via


us ing ou chang ing .

~ -- representa qualquer ntimerc de linhas de c6digo.

A linha 3 executa.
A linha 4 transfere ccnt role para a linha 9.

Os seguintes pontos se aplicam:

A linha 10 executa.

Tod.as as adic;oes sao opcionais.

A linha 11 trans fer e eontrole de volta pan..a linha 4.

e Quando etas sao codificadas , as adi~oes devem aparecer na ordem


mostrada aqui. Se codificadas, tab l es devers vir prim eir o, e depois dela

A linha 5 executa.
. A

linha 6 transfere con trole pan a linha 9.

using e cha nging .

.s

560

oa 17, MOOUURlll\AHIETfTOS ESU~Ron"AS 561

A'REM OA EM 21 DIAl ABAP/4

Cada a~~o somen te pede ser especificada urna vez. Per exemplo, a
adi~ao tab les somente pede aparecer uma vez. En ereranto, tabelas
mriltiplas podem aparecer depois dela,

Nao utilize virgulas pan separar pargmetros.


tabl es somente permi te qu e tabelas internas sejam passadas -

Die

tabelas de banco de dados.


Uma sub-retin a pode chamar Dutra sub-retina.
A recursio e supcrtada, Um a sub-retina pede chamar a si mesma au
uma sub-re tina que a chama de volta.

As definicoes de sub- rorina nao podem ser aninh;cias. (Vae!:oio pode


definir uma sub-retina dentrc de ourra.)

Sintaxe para a instru,Cio perform

CIl

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:

s. 51. 52. 53, sao nomes de sub-re tina.


n eurna variavel numerica.
a) e b) sao mutuamente exclusives.

tables, using e changi ng podem aparecer com a} au b}.

A adi~ao value( } nao pode ser utilizada com perform.

10 form 52.
11
write : I 'Hi from 52' .
12
endfoT"lll.
13
14 for'll 53.
15
writ e: I ' Hi from 53'.
16
endfortll.

o ccdigo na Listagem 17.7 produz a seguinre ,aida:


Hi from 51
Hi f rocn 52
Hi f rom 53

A linha 2 comeca urn loop que executa treS vezes. Sy-index e o


comador de loop e e incremenudo em um a cada passagem do loop.
Na primeira vez que 4linlu 3 eexecutada, sy- index tern
Portanto, a primeira sub-retina (s 1) e executa-cia.

valor de 1.

Na segunda vez que a linha 3 executada, sy- t ndex tern 0 valor de 2.


Portanro, a segunda sub-retina (52) e executada,
Na te rceira vez que a linha 3 e executada, sy- Index tern
Pcrtanto, a terceira sub-rotina (s3) executad a.

valor de 3.

Deixa ndo umg sub-rating


Voce pode sair de uma sub-re tina a qualquer bora utilizando as seguintes
instruc;5es:
exit
check

Utilizando a sintaxe b) voce pode especificar que uma sub-re tina de uma
lista de sub-retinas seja executada. A n-es ima sub-retina na Iista de names
seguindo of eexecutada. Par exempl o, se n for 2, a segunda sub-rotina na Iist a,
ela sera execunda. A Listagem 17.7 ilustra esse sintaxe.

EHTlI.DA~ Listagem 17.7 Chcmondo uma serie de sub-retinas


1 report ztx 1707.
2 do 3 t imes.
3
perfornl sy.fndex of 51 52 53.
4
enddo.
5
6 fonn d .
7
write: I 'Hi from 51' .
8
endfonn.
9

stop
Os panigrafos a seguir descrevem 0 efeito de check e exit quando elas
sao codificadas denero de uma sub-re tina, mas fora de urn loop. 0 efeito de .
stop dentr o de uma sub-retin a e 0 mesmo, independent emente se ela for ou
aac codificada dentro de um loop.
Em sub-retinas:
check e exi t imediatamente deixam a sub-retina e 0 processamento
contin ua com a. pr6xima instru~ao execuuvel depois de perfonn.
stop imediatamente deixa a sub-rotina e vai direrarnente para 0 evento
end-of-se'lection.
check, exit estop nao configuram 0 valor de sy- subrc. Se voce quiser
configuri-Io, atribua urn valor numerico para ele antes de deixar.
.
A Listagem 17.8ilustra os efeires dessas instrU~6es dentro de sub-retinas.

562

APiEHOA EM 1I DIAS ABAPH

EHTRADA~

Lista ge m 17.8
sub-retina

as efeitos de exit,

o c6digo na Liscagem 17.8 produz a seguinte s:lfda:

check estop dentro de umc

In sl
sy-s ubl"'C
In sZ

1 N!!!port ztx17OB .
2 data fl value 'X'.

sy-subre

3
4 clear sy -subrc .
5 perfoT'll s1. write : / ' sy-subr c
6 perfonll 52. write : I'sy-subrc - ",
7 perform 53. write : / 'sy-subrc -'.
8 perform 54. write : I ' sy ~s ubrc -" ,

.t.

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

A 1mb.5 traasfere 0 controle pan linha 17.


A linha 18 comelja urn loop. A linha 19 sai d o loop, m as Dio da
sub-retina.

A linha 22 ~ai da sub-retina, 0 controle retorna para Iiaha 6.


A linha 6 transfere a contrcle para linba 26.
A linha 28 trans'[ere

controle para linha 274 vea es.

A linha 32 dew a sub-retina, 0 contrale retoma para a linha 7.


A linha 7 transfere a controle para a linha 36.

19

exit.

A linha 39 transfere 0 conrrole diretamente para a linha 10.

20

enddo.

A saida da linha 11 inicia. em uma nova liaha, porque urn novo evenro
comeccu.

21
lZ

write ! 'In 51'.


exit .

23
24

wMte I 'After Exi t


endfonn .

25
26 form 52.
27

28

31
3Z
33
34

Definindo yari6veis locois e g lo bois

do 4 times .

check II .. ' Y'.


write / sy-fndex.

29
30

enddo.

write I'ln 52' ,


check fl .. 'y' .
write / l After Check'.
end form.

Umo vari6vel g/ob~1 e cqueic que e definidc foro de umo sub-rotlnc vti1izondo
a instruc;oo tabl es ou data . Elc pode ser ocessodo de quolquer ponto no
. progromo, se je dentro de um eventc ou dentro de uma sub- retina. ~ boo prcticc de
prog romoc;Oo colccor definic;6es de vori6veis globo is no porte superior do progromo, em
olgum lugar an tes da primeiro llnho de c6d igo executevel.

MOYO'"

ID.MO,.

Umo vcri6vel 'ocal e definidc dentro de ume sub-rotinc vtilizondo 0 in~ruc;60


lecal, data au statics . Dizemos que elc e locol ~ sub- rotina . As vori6veis
definidos ufi~zondo local sOO ccessfvets de foro do sub-retina: os vari6veis definidos
utilizondo data ou statics n60 eec. Assim, se a sub-retina cha ma out ro sub-retina,
vc rievels deflnldcs utilizonda 1oca 1 s60 vislveis de dentra do sub-retina chomada vari6veis definidos utilizondo data ov statics n60 sdc.

NOYO til...

TWO"

35
36 fonn 53.
37
do 4 times.

38
39

sy-subrc .. 7.
stop.
write I sy-index .

40
41

42

A linha 13-sai do evemo e a lista e mostrada.

enddo .

endfonn.

43
44 forti 54 .

45

write: l'In 54'.

46

endfol"'lll.

Para variaveis

locais definidas

utilizando

local

ou

da ta,

a memoria C

alocada toda vez que a sub-retina echamada. Essa memoria eliberada quando

asub-retina termina, e entia os valores dentro dele sao perdido s. Para stati cs,
a mem6ria ~ rerida, Esses caracteristicas serio descritas pr ofun damente neste
capitulo .

,A"PRtHOA EM 21 DIAS ABAPI4

O~ 17, .OOUURI~O, EVENTOI EStJS.ROTINAS I

Definindo uma area de trabalho tab l es


As var isveis definidas que utiliz am a instrucio tables sao sempre globais.
C olocar ainstrUliao tables na parte superior de urn programa define uma string
glo bal de campo. Colocar a mesma instrucao den tro de tima sub -rotina tambem
define uma String de campo 91oba1 desse nome. Portanto, voce nao deve utilizar
a instrucac tables demro de uma sub-retina, uma vez que a defini liao csempre
glo bal; essas definicoes globais devem ser colocadas na parte superior do
programa.
Para definiruma :irea de trabalho de tabela local den tro de urna sub-retina,
utiliz e 1oca1 em vez da instrucao t abl es: A sintaxe 6. a mesm a que t abl es, mas
ela define uma string local de campo, em vez de u ma glob al. As vsrisveis
definidas por utilizer local sao visfveis den tro cia sub -retina e tadas as sub-rotin as que a chamam.

Para ser precise , ume vcr icvel somente cc nhecldo dentro de um


programa depois do po nto em que e definido. Per example, se voce
definisse ume vc ricve l no Jinho 10, yoct! eer ie capa z de ocessc -lc da
Jinho 11 em d ionte, mas noo an tes da linho 10 . No coso de umo
definic;oo loccl, voce pode cc esscr a versec gro bal do va riovel em
quaJquer ponfo ant es do definio local.

write: I ' 52-A' , zt xlfa l-l 1fnr.


sel ect si ngl e'" f rom ztxlfal whe re li fn r . 'V2' .
writ!!: I' 52- B', ztx lfal-l ifnr .

21
22

23
24

endform .

o c6d.igo na Lista gem 17.9 produz a seguinte saida:


\AiOA~

*~----V9

Sl -A V9
51- 8 VI
52-A VI
52-B V2
Sl~C

V2 .

Sl~~~V9

S2-A V9
52-B V2
*S2- --V2

IHlllSE~

A Iinha 2 define uma area de tra balha global identi ficada ztxl fal .

A linha 4 seleciona urn unicc regist ro de tabela zt xl fal eo caloca na


area de trabalho global zt xl f al.

A linha 5 escrevea valor V9 a partir daareade rrabalho global ztxlfal.

A linha 6.p.assa 0 controle para linha 11.

A Listagem 17.9 ilustra a instrucao l ocal.


EN1RADA~ Listagem 17.9 A ;nslru<;co l ocal
1 r eport ztx1709.
2 tables zt xlfal.
3
4 se lect si ngle from ztx1fal whe re lifnr ' V9' .

5
6
7
8
9

write : /

' ''-~ - - ~ '.

zt xlfal-li fn r.

pertann sl.
wr1te : /

'''Sl ~--' .

ztxlfal-l1fnr.

perform s2.

wri te :

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

51-C'. ztxlfal -l ifnr .

A linha 12 escreve a valor de 1ifnr da area de trabalhc global ztxl fa 1.

A linha 13 define uma string local de campo ztxlfal. (E boa prarica


de pro gramacao colo car essa defini<.rao na p art e superior da sub-retina.
Para as p rop6sitos desse exemplo, ela ecolocedadepois de wri te para
demonstrar completame nt e 0 efeito de 1ccal .) Uma nova posi<.r ao de
mem6ria ealocada tendo 0 nome ztx l fa l . As referen cias para ztxl fal
depois desse ponto na sub-re tina e em eodas as ourras chamadas faria
referencia a essa defini'iao local de ztxl fal, nao a global. A global estd
agora ina cessfveL
A linha 14 selecion a urn anicc regist ro e coloca-o na area de trabalho
localztxl fal.

o A linha 15 escreve um valor apartir da area de trabalho local.Ele e Vl.


A linha 16 trans fere ocontrole para a linha 20. A m emoria local fica
aloceda e ainda sera visfvel den tro de 52.

A linha 21 escreve a partir da area local de mem6ria definida em s1.

A linha 22 seleciona urn novo valor na local ztxl f al .


A linha 23 escreve a partir cia local ztxl fal.
A lin ha 24 retorna a controle para a linha 17. A m emoria local fica
alocada e inalterada.

56S

566

"RENDA EM 21 OIA' ABAP"

A linha 17 escreve 0 valor colocado na local ztxlfa l por 52.


A linha 18 retorna 0 controle pan a Iinha 6. A memo ria local eliberada

e 0 valor V2 e descartado.

0 valor de l t fnr. Ela e agora V9 que teve quando sl fei chamado.


'

A linha 7 escreve

A linha 8 transfere

mesmo valor

controle para.a linha 20.

Antes de executar a linha 21, urna defini~o local de ztxl f al cia foi
. criada.. Portanto, a glob al ztxl fal -l i fnr e escrita,
A linha 22 selecion a urn r egisrro na area de trahalho glob al ztxl f al.

o A linha 23 escreve V2 a partir da area de traballio global.


A linha 24 reroma 0 co ntrole para a linha 8.

o A linha 9 escreve V2 a partir da area de traballio global.


Se voce defmir uma variivel local tendo 0 mesmo nome que uma variwel
global. a va.riivel local assumira a precedencia dentro d.a. sub-re tina, Conseqfient emente, voce mo sera, capaz de acessar a varifvel global do mesmo
no me dentre dessa sub-retina. Tcdas as referencias serso para. a varisvel lccal.

Definindo dodos
As varidveis definidas pela instrU~o data na parte superior do progr ama sao
globais. As definiljoes de data denrro de uma sub-rotina sao locai.s para a
sub-re tina, A mem6ria e aloca da para essas variaveis quan do a sub-retina e

chamada e e Iiberada quaodo ela retorna. Com variaveis definidas utilizaodo


1ccal , os valores nessas variaveis dat a serso perdidos quando a sub-retina

retornar,
Utilize a instruliao statics p ara CM variaveis locais qu e Ili o sejam
libertadas quando a sub-retina termina, A sintaxe para sta t i cs ea mesma que
a sintaxe para. a instrucio data. A rnem6ria para. urna varisve l estdtica ealocada
na primeira vez que a sub-retina e chama da e e r erida quand o a sub-retina
rermina . Entretanro, uma varia-vel esti tica e visivel somente d e dentre da
propria sub-retina, e nio de dentro de sub-retinas iniciadas par ela. Da pr6xima
vez que a sub-retina far chamada, a rnern6ria para essa variavel torna-se visivel
nov amente. 0 valor dentro dela sera 0 mesmo de quan do voce river retom ado
dessa sub rorlna da ultima vez.
A memo ria de um a vwvel estinea p ertence i 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.

o c6digo na..ustagem 17.10 produz a seguinte sarda:


51:
51:
51:
51:
after 51:

before
insi de
ins ide
inside

6
.1
1
1
8

9
1
2
4
9

'2-

'52-2-

8
8
8

9
9
9

o As linhas 2 e 3 definem as varisveis globais fl e f2.


A linha 7 transfere 0 contro le pan a linba 11.
A linha 12 aloes nova memoria para a. variivellocal fl e atrib ui a ela.

urn valor de 1.
A linha 13 aloca nova memoria para a vanavel escl.tica f2 e atribui a ela
urn valor de 1.
o A linba 15 mnsfere

controle para a linha 19.

A linha 20 escreve a partir das varifveis glo~ais f1 e f2.

A linha 21 retoma 0 controle para a linha 15.

o A linha 16 ntultiplica f2 por 2 e atribui 0 valor para fl e f2.


linha 6. A ~~m 6r iade fl eliberada,
A linha 17 ret orna 0 controle para a
e

mas a de f2 eretida. Entretan to, ela nio sera Vlslvel novamen te at a


pr6xima vez que a sub-rotina. for chamada .

DIA 1HODULWl.I\AlHVEHTOSESlJ8.ROTlfW r

voce deve memorizer sew nomes, assim como guardar as palavrascbave em instru~5es.

0 loop inicia e a linha 7 novament e traas fere a ccntrcle para a linha


11.

A linh a 12 aloca nova m em oria para fl e atribui urn valor de l.

A linha 13 faz com que a memoria antericrmente alocada para f2


tcme-se novamen te vistvel com essa sub- rotina. 0 valor em fZ ~ Z,

Posso ver 0 programa de driver? E possivel escolher 0 driver?


Posse criar u rn driver? Quais sao as diferengas en tre as programas de driver disponiveis?

como era quando a sub -retina terminou da ultima vez.

1010 ~
1!I.iO ,.

Resumo

0 ABAF/4: tern tres ripos de unidades de modularizacio: evectcs,


sub-re tinas e m6d ulos de fun~ao.
Existem eventos em todos os programas, Se nenhum for codificado,
o evento padr jo sta rt-of- s el ect ion sed automaricamenre iaserido.
. in itial izati on e frequenremence utilizado para atribuir vaIores a
parfmetrcs que aparecem em urna tela de sele~aa. end-of-selection e
usado pua limpeza do programa, resumes ou rorinas de rerminacao
ano rmal. O s event os sao acionadcs pelo programa de driver. 0 driver
semp re inicia antes de seu programa e controls quando os evenros sao
execundos. Voce Dio pode colocar urna condicac em volta de urn
nome de evento . Toda s as eventos sao acionados no vamente quando
a usuirio retcma da lista. En tr etanto, as variaveis de tela de sele~o
.cia sao pre enchidas de novo a partir da irea de dados do programa.

Util ize.ext t, check e stop para deixar urn evento.

P&R

o
o
o
o

o que acontece se eu river dais eventos de mesmo nome denerc


do m esm o programa?

progum a de dr ive r chamado banco tk dado, 16gico. Voce


pode esco lher 0 programa de driv er preea chen dc n os campos de
banc o de dados l6gicos na tela de atributos de programa. Se' voce
nao espec ificar u m, urn padri.o e au romaticamente atribufdo. A
acica vez que voce icl. querer escclher a driver sera quando quis er
Ier as dados a partir do ban co de dad os e Iorcecs-los para seu
programa auromaticamente. Os bancos de dados 16gicos padrjo
nao leem a partir de b anco de dados - eles apenas acionam as
eventcs. Independentemente do driver que voce escolher, os
eveneos sempre serao acionados na me sma crdem relativa. Mesmo
Sf voce criar seu pr6prio programa de ban co de dados 16gico , nao
poderf alrerar a sequencia relativa de eventos, nem seus names.
nem poded criar novas. Pan ver um p rograma de driver , inicie de
dentrc do edieor de codigo-fonte, Escolha 0 caminho de men u
Utilities-Help On. Selecione a bod e de op~o Logical Database
e digite um id de banco de dado s 16gico (KDF, par exemplo). Vo ce
entao veri a estrutura da banco de dado s 16gico. Escolha a caminbo de menu Gor o-Daesbase Program para ver a pro gnma de
driver . Lembre-se, 0 codigc mestrado denero do driver n este
capitulo era urn pseu doccdigo, entia voce nao vera as instrucoes
de como acionar a inicializacic at. Os banc os de dados J6gicos sao
urn tema complexo e exigem mu itos capitulos para serem descritos
completamente.

Se voce river du as instru gdes codi ficad as de mesm o nome den do m esmo programa, qUa.D.do 0 ev ento for acionado a
sistema executara os dais na ordem em qu e eles aparecem em
seu programa.

Se coloco uma instru~o write em urn evento que vern an t es .d e


start-of-selec:tion) eIa func:iona somente quando nao h oi um a
tela de sele~o. Se houver uma tela de sele~o, mo vejo a saida.
Par que?

Co mo passa saber a diferens:a entr e urn nome de evento e uma

R/3 uti liza alga denominado contexto de tela pan aceitar


entrada e exibir suda para voce. Voce pode pensaI em contexto
de tela como uma tela. Cada contexto de tela eprocessado em duas
fases: a fase de dialogo e a fase de lista. A fase de dialogo semp re
ocorr' primeiro. seguida pela lista. A fase de dialogo e utiJizada
para exihir campos de entrada para a usumo, como aqueles gera-

teO

instro~io?

Se voce vir uma un ica palavra segu ida p ar u rn pedodo, isso e


normalmenteum even to . AI6n disso, a s even tes nae tern quaisquer ou tras caractersticas identificaveis que seus n ames. Eles
sio simplesmente palavr.as rese rva das e p ara re con hecer u rn

569

570

APR"DA EM 21 DIAS AUP/4

dos po r uma instrU~ao de pargmetros. A fase de lista e utilizada


para exibir a safda da instrU~ao wri t e para 0 usuario. As duas fases

utiliz am 0 mesmo contexte de tela, portanto uma sobrescreve a


out ra. A fase de dialcgo, ent retanto, interrompe a entrada de
usuirio e eerao perml te a si mesma ser mostrada antes de a lista
ser mostrada. En tao, se voce emite uma instru~a.o wri te no evento
init ialization e se a tela de sele~o e most rada, a tel a de sele~ao
sobrescreve a safda da write e essa sa!<b. e p erdida. Voce en tia deve
escclber Execute na tela de s ele~o e, se as instrucoe s write entia
forem emitidas , a lista sob resc reve a tela de selc!jao e voce veri a
saida. Entretantc, se naa river uma tela de selc!jao. as gravar;oes
que ocorrem em in itial i zati on ainda poderac ser vistas.

Oi 18

Wo rkshop

o Worksho p oferece duas maneiras de voce verificar 0

que aprendeu nesee


capitulo. A se~ao Teste cfer ece perguntas para ajudar a solidificar seu entendimente do co nteado aboedado e a sec;:ao Exercfc io permite que voc e pratique 0
qu e aprecdeu. Voce pede en contrar as respostas as pe rguntas do Teste e aos
exercfcios no Apendice B, "Respostas is peegunus e aos exercfcios".

Modulariza~ao: passando

paramelros para sub-rotinas

Teste
1. A varia~o write to cia instru~ao write acicna top-of-page?

D epois de completar esse capitulo, voce sed capaz de

2. Que eventcs voce nao utilizaria.em stop ?


3. Em que po nt.o uma variavel econhecida denero de urn programa?

P assar pardmetros digieadcs e eao dig itado s para.sub-retinas


Passer parametres de tres mane iras: por refer ecci a, por valor e po r
valor e resultado

Exercicio 1
erie u rn rela.t6rio que aceita urn parimeteo de entrada chamado p-landl.
Defioa-c como ztxl fal~1andl. Preencha esse campo com a valor padrio US em
tempo de execu~o, utilizando 0 even to Init ia l i zat io n. Seu programa principaldeve tee uma Unica instru~ao para. chamar uma sub-retina que selecioca
regisrros de zt xl fal , onde a campo 1andl igualao pardmetro p_l andl. D entro
de sel ect, chame outra sub-retina para escrever a registro . Utilize 0 evento
tcp-of-pape para criar 0 titulo do eelat6rio . Escreva 0 valor do campo p_landl
no titulo.

Pass u strings de campo e ubelas internas para. uma sub-retina

En t end er como as variaveis sao compartilhadas entre sub- ro tin as


externas e int ernas

Passando para m et ros


Alem de definir variaveis utilizando t abl es , local, data e stati cs, tambem
podem ser definidas variiveis na propria iru; tru~ao fOI}Jl. Estas sao conhec idas
.

como parametres, que podem see locais au referencias para variaveis globais.
A mem6ria de parametres locais e alocada quando a sub-retina e chamad a e

Iiberadaquando finalizada.
Se vc cs definirvariaveis na instrU~ao form, a instrucio perform deve passar
urn valor para cada urna dessas varisveis.

htlp:J/wwN.CIJlTIP'Jt,com.br

572

'PREND' ,M 21 DIAl AB,P/4

A linha 14 define tres variiveis: fl, f2 e f3. Ela atribui 0 valor de fl a


fl, 0 valor de f2 a f2 e 0 valor de f3 a f 3.

Os nomes de pcremetrc que oporecem no instrv~co form seo chcmodcs


por6metrcs formais . Esse termc e IOcil de lembror, porque "former possu i 0
rod~ol "form". Par exempla, no instrulo fom 51 using pI changing p2 p3, as
parametres pl, p2 e p3 sao chomodos pcremetrcs fonnois .

NOVO ....

tRiO

A linha 16 escreve as valares das vuiiveis defmi das na linha 14 na


instrulSao form; fl, f2 e f3.

A linha 17 retorna a controle para a lin.ha 7.


Revise a sintaxe das IDstIlllSoes form e perform antes de continu ar. Con-

NOYO ...

Os nomes de pordmetros que oporecem no instruo perfonn soo chcm cdos


porOmefros recrs. Par exemplo, no instruc;co perform 51 using fl changing
f 2 f3, as parametres fl, f2 e f3 soo chomodos pcrametros reels.

TWO

U rna maneira de definir varidveis como parfmetros

suite a sC!jaa "Definindo e chamanda sub-retinas Ineemas", no Capitulo 19.

e ilustrada na Lis-

tagem 18.1.

~-----

IFa~a

EHTRADA~ Listage~ 18.1 Passcndo pa ra metros pora uma sub-ratine


1 report ztx l BOl .
Z data: fl value ' A' .

3
4
5

12 val ue 'B',
fJ value C' .

6 perfom: 51 using fl 12 ra ,
52 using fl 12 13 .
8
9 tOrrt 51 using pI p2 p3.
10
vrtte : I fl. f2. 13.
11
/ pl. pl. p3.
12
endform.
13
14 torn 52 usi ng fl 12 f3 .
15
skip.
16
write: / f l . f2 . rs.
17
endform.

Utilize pcremetrcs formais digitodos,

Nao passe tabelas inte mos par val or, nem

eles sOo mo is eficientes do que as

per volar e resultado, a me nos que voce

parflmetros noo digitodos.

reolmen te precise de uma nova c6p io do


tcbelo intemo. Posse pa r6metros par
referencia sempre que pc ssfvel.

Criondo pommetros digitod os


MOVO....
TEUO ,.

as pardmetros formais nao digitados permitem que voce passe uma

varUvel de qualquer tipo de dado ou comprimentoparaole. 0 parametro fonnal


utiliza os atri butcs do parimetro real. Por exemplo , se vocs passa urn inteirc
de quatro bytes para urn parfmetro formal DaO digitado pi, este torn a-se urn
inteirc de quatro bytes. Se voce passa uma string de caractere de comprimento
igual a 3 pan 0 me~mo parimetro, ele se tamara a earactere 3.

a c6d.iga na Listagem 18.1 produz a seguinresatda:

A 8C

A linha 6 transfere a cantrole para a 1inha 9.

A linha 9 define treS varifveis: pI, p2 e p3. Ela atribui 0 valor de fl


pan pI, 0 valor de f2 para p2 e o valor de f3 para p3.
A linha 10 escreve as valores das variiveis pl, p2 e p3 e as varisveis
globais fl . f2 e f3.

A linha 12 retorna

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~

Os porern_~s formats podem ser digitcdos au nOo. Urn porbmetro O'9itcdo e um


por6metroformal que tem urn tipo de dodo seguindo seu nome no instrvo fonn.

contrcle para a linha 6.

A linha 7 transfere a controle para a linha 14.

I
I

Sintaxe para pcrdmetros digitad os

CI'

fom sl using u1 type t value(u2) type t


ch""gi ng cl type t value (e2l t)'lle t .

cede:

ul, u2, c1 e cz sao parametros formais.


t~. tantoum tipo de dado de ABAP/4, como um tipo de dadodefinido
pelc usutrio.

51

e urn nome de sub-retina,

574

DlA lUODUU~lAlio , PASSAHDO PARiMmOS PARA SUS-R1lll'AS

APRE,,, EM 21 DIAS ASAP/'

IHiUlE~

Os seguintes pontos se aplicamr

Somente urn tipo de dado pede ser especificado na instnu;ao form. Urn

linhas 2 a. 5 definem qua.trO va.riivei s tendo varios tip os de dados.


F3 edo tipo c e ccmprimeatc iguala. 8, com um comprimento de safda
igual a 10 (definido no domfnio de syst-datum). Fa e do ripe c e
comprimento 6 com urn comprimento de saida. de 8 (definido no
domlnio para. sy-uzef t }.

As

co mprim ento Ilia pede ser especificadc..

Se voce define urn pargmerrc forma.! urilizsndo urn tipo de dado de


comprimento fixo (esses sio tipos d, t, i e f). 0 comprimento do
parametro real deve corresponder ao tipo de dado do parimeuo
formal Esse enormalmente 0 case,

A linha 10 rransfere 0 conerole pan. a linha 12.


Na 1inh.a. 12, pI aceita somente parsmet rc s reais do tipo c. fl edo tip o
c e comprimento igual a. 3, entia urn comprimentc de 3 unidades e
atribuido a pl. Se f1 nae fosse do tipo c, urn errc de sintaxe t eria
ocorrido. p2 eum tipo de dado de comprimentc fixo ; 0 tipo i esempre
de comprimento iguaI a 4; f2 tambem e, eerao as parimetros corr espondem-se complewnente. p3 e p4 tambem sao tipos de dados de
comprimento Iixc, come sao seus parimetros reais.

ja que voce normalmente prcjecara

seu p~ogram~ de tal forma que as tipos de clades dos parametres


form~5 e rears conesponderio entre si, Voce normalmente mo passa.
. urn txpo de dado.para um outre ripe de dado diferente.

.. Passar ~~a variavel com 0 ~po de dado au comprimento errado para urn
pa::metro digitado causa urn erro de sinnxe. A Listagem 18.2 mostra como

utilizar padmetros digit ados.

As linhas .16 a 19 escrevem os valores de pI a p4. N ote que

0 comprimento de safda DaO e passado do parimetro real para. 0 form al 0


comprimento de safda. dos pardmerros formais e confi gurado como 0
padrao para. cads tipo de dado. Issc faz com que a safda de data. e a
hera nao tenha separadores.

!HlliDI~ Listagem 18 .2 IJnlizondo porOmetros digitodos


1 r~ort ztxlOO2 .
2 data: f1 value 'A'.
3
f2 type 1 value 4,
4
f3 l tke sy~datUli.
5
f4 like sy- uzef t.
6
7 f3. 5ydatum.
8 f4 5y- uzef t .
9
10 perfonn sl using fl f2 f3 f 4.

Os pardmetros digita.dos tem treS vantagens:

'.

11
1Z fo rm 51 usi ng pI ty pe c
pZ t ype f
13
14
15
16
11

wr1te:

18
19

ZO

p3 type d
p4 type t.
pI,
p2.
p3.

I
I
I
I ...

164836

Ajudam a. prevenir erros de codifica.l;jao. Ji que voce MOpod e passar


urn parlmetro de tipo incompatfvel, 0 verificador de sintaxe indicari.
o eITO para voce se ten tar passar urn parametr o incompatfvel.

Possondo strings de campo

voce pede passar uma string de campo

cia mcsma maneira que qua.lquer outrO


parimetro. Entrecantol se voce quiser a.cessaros cemponentes cia. strin g de cunpo
dentro cb. sub-retina, voce deve fazer a estrUtut'2. cia string de camp o conhecida
para. a sub~rotina, por meio de urna. desw duas a.di~6es ainStruliao .f orm:

a c6digo n' Listagem 18.2 produz, seguin" , aida:


19960510

fun

Sao mais eficientes. Enecessaria mencs CPU a


de alocar memoria
para. urn parimetro digindo, que pan. um nio digitado.

Ajudam a. prevenir erros de tempo de execul;jao. Par exemplo, se seu


programa aceitar uma variavel nao digitada e executar nele um a operal;jaO aritmecica, e posslvel passar dados de caractere pa.ra essa subretina, Se isso acontecer em tempe de execu~ao, um dump curto
a.contecera.

endform.

MA.

575

like x

structure x
A qui, x pode ser uma string de campo au um a estrutura de DDle ou
tabela. Porexemplo, form sl using h I structure zt xlfa l defin e fs1 co m o

tendo a estrUtura de tabela DDIC ztx! f al.

576

D. lU DDUURIlA\AD, /ASSAIl" pARiMETlDSPARA SU6R011N.4S

AP RENDA EM 21 DIAS ABAP/4

Co nt rol a ndo como as pardmetros sao passados


H i eres maneiras de passar as p arimetros pan. uma sub-retina:

18

19
2D

577

changing p3 val ue(p.) .


write: I pI, pZ. p3, p4.
endfol"Ul .

21

Passer por referencia

22 form s2 us ing pI value(pZ} va ll1e(p3) p4


23
changing value(pS) p6.

Passar por valor


Passarpor valor e resultadc
A sintaxe na instruc;ao form determine como as varidveis slo passadas. A
sint axe em perf orm mo faz isso. 0 seu significado sen explicado na proxima
Seli3.a. A primeira coisa ne cessaria e aprender a. codificar each metoda.
A Tabela 18.1 mostra a relacionamento entre sintaxe e meeodcs de
passagem.

24
wri te: I pI , p2. p3. p4. p5, p6.
2S
endfc re.
26
27 t om s3 using value{pl}
28
30

endfol'1ll.

o c6digo na Listagem 18.3 produz a seguince safda:


A BC 0
A, 8 C D E F
A BC

Meto da
chang ing

Passe por

vt

refe~ncic

using val ue (vl)

Posse por refer!ncio


Posse por valor

changing val ue(vl)

Posse por valor e resultado

Embora a sintaxe em form e perform possa diferir, por causa da clareza de


programa elas devem sec as mesmas.
A Listagem 18.3 ilustra como codificar essas adi<;6es.

ENTRAOI~

Lislagem 18.3 Como codifica r adi, ,,e, de parOmetra

1 report zt xl80J.
2 data : fl value 'A' .
3
4

5
6

7
8
9

10

f2
13
14
f5
16

value 'B' .
val ue
value
value
value

IMlUSE ~

A lichs 9 passa quatrc parametres para a.sub-retina s1. A sintaxe na


linha 17 det ermina como des sao passados. f1 e f3 sio passadcs por
referenda; f 2 e passado por valor; f4 e passado per valor e resultado. .
A linha 9 passa seis parimetros para. a sub-retina 52. fl, f 4 e f 6 sio
passados por referencia; f 2 e f3 sio passados por valor. f 5 e passado
par valor e resulrado.

A linha 12 passa tr es parametres para a sub -retina 52. f 3 epassado par


valor, f3 epassado par reierec cie e ';5 6 passado par valor e resultado.
Embora a instt1.1iaOperf orm apenas especifique using, a instru ci o form
pe de diferir. Ela especifica tanto usi ng como changing. A sintaxe na
instt1.1c;ao form assume precedencia e determina a met oda pelo qual a s
parirnetros sao passados.

Lembre-se do seguint e:

' C' .
' 0' ,
' E'.
' F' .

perfonn e form devem cant er 0 mesmo niimero de parametres.


A sintaxe nas instrucoes perform e form podem diferir.

perform 51 using f1 f2
thanging

p2 val ue(p3 ).

write: I pl . p2. p3.

Ta bela 18.1 As cdlcoes de instruc;60 form e 0 metodo resultcnte de possogem de


panlmetro

usi ng vI

cha nging

Z9

13 f4.

11
12 perform s2 using f1 12 fJ 14
13
cllanging 15 f 6.

l'
15 perforlll s3 using fl f2 fl .
16
17 tom 51 usi ng pI val ue (p2)

A sint axe na instru~io f orm determina apenas 0 meto da pelc qual urn
paramerro epassado.
A adic;ao ve1ue ( )nio pede ser utilizada na instru c;io perfo rm.
using deve vir antes de changing.
A adi~a ust ngs6 pede ocorrer uma vez em uma instruc;ao. A mesma
regra se aplica a changing.

578

APIEi DA EM 21 DIAl AUP/4

Utilizando

OS

DIA 11, IIOD1JUR1ZA(AO, PillIJIOO PW.mOS PARA51Ja.R1J11NAS

metodos de possagem de pardmetms

A Tabela 18.2 resumidam ente descreve as [reS metodos de pa.ssagem de


parametres.

7 f oT'll s l using pI.


8
pI - 'X'.
9
endf orm.

o ccdigc na Listagem 18.4 produz a seguinte saida:

Tcbela 18.2 Metodos de passogem de parametres


Metodo
Por referenda

Descri~ao

Vantag ens

Posse um po nteiro po re a

Muito eficiente

posit;oo de mem6ria o riginal

Alcco umo novo posic;oo de


mem6rio pa ra utiliza~co dentm

Pcr vclcr

do sub-retina. A memoria

ANluSE ~ . A linha 2 aloca mem6ria para a variavel flo Por esse exemplo, vamos
partir do pressuposto que a posiliaOde.mem6ri a e 1000.

Impede olte rac;oes no

A linha -1- trans fere ? contro le para a linha 7.


A linha. 7. faz com que fl seja passada par refergncia. Portanto, ,,1 e
urn ponreirc para posiliao de mem6ria. 1000.

variey!!!" possodo

liberndo quando a sub-refine


termina.

Porvalore resultodo

Similar 0 po ssor por vclcr, mas


o conteUdo do nova membria 6
cop iodo de volta para a mem6rio
original antes d e retornor.

Passanda para metros por referenda


Quando voce passa um parimetro po r referenda, a nova mem6ria nae ealccada
para a valor. Em vez disso, urn pont eiro para a posi~ao original cia mem6ria e

passado. Todas as referencias para 0 parimetro sao referencias para posi~ao


original cia memoria, Altera~6es na varidvel dentro cia sub-rotina anializam a.
posi'iaa original da memoria im ediatam ente, A F igura 18.1 e a Listagem 18.4
ilustram como isso funciona.
Figura

possocJopor
refer~ndo ofela a
posio original do
mem6ria.

eoderecede mem6rio 1000

18 1

Como um pon5ml!trO

report zt x1804.
~,
~
ntes de c:homodo de 51
data f1 valu e 'A' . .
_
,Q

~t ~~bUiC;OO 11m 51

perfonn 51 us i ng f1
I f1 sc ldc : X

wr1t e

..- ..- . , .

- ..: . ;.'-'. ~' , .,

linha. 8 modifica a posicfc de memoria 1000, fazendo com que a


mem6ria para f1 se altere para X.

Permite oltero<;6es e

permite umo reversec


(rollbock)

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

EIlTU.DA ~ Listagem 18.4 a efeito do possogem par refen! ncio

A linha. 9 retoma 0 ccctrole para a. ~ 5.

A 1inha. 5 escreve 0 valor X.


Com sub-rotinas ineemas, In pouca diferenca ent re passar parametr e s
por referencis, e acessar varU.veis globais de dentro cia sub-rotina. Ambos
permitem que voce altere 0 valor de uma variavel global direeamec re. Nas
sub-retinas externas e m6dulos de fun,ao (veja 0 CapItulo 19, "Modulariza,ao:
m6dulos de fun~o. parte 1"), a passagem por referencia. e mais ut i!. Mesmo
assim, passar pargmerros para uma sub-retina - seja ela interna ou externa~ urn born estilo de prcgramacio, que tcrna a. manutencdo mais facil e melho ra
o readaptabilidade de seu progrema.
As duas adi'ioes us; n9 f l e chang; n9 fl passam fl por referenda - elas sao
identicas na fun,ao. A =io paraque asduas exisram e que- utilizadas adequadamente_ podem documentar quando a. sub-retina. mudara. urn. pardmetro ou nac.
Ao codificar changi ng com parimetros, a sub-ratina se alt er a, Voce deve
mer a codifica.c;::io us; n9com parimetros que Dio sejam aleersd os pela sub-rotina. A Listagem 18.5 ilusua esse ponto. .

EllflADI~

Lista gem

18.5

using e changing seo idl nticos no func;eo

1 re port ztxI805 .
Z dat a: fl val ue 'A'.
3
f2 value 'a' .

2 data fl value 'A' .

5 wri te : I fl.

3
4 perfonn sl usi ng fl .
S 'IIrae I 11.

6 perform sl using 11
changing f2.
7
8 write : I fl . f Z.

report ztx 1804.

f2 .

579

580

A"ENDA EM 11 DIAS Am/4

o c6digo na Listagem 18.6 produz a seguinte " ida:

10 fo m 51 using pI
changi nri p2.

11
12
13

X
A

pl pZ - 'X' .
endforlll.

A linha2 alOC2. mem6ria para a varisvel f l.


. A linha. 4 transfere

o c6digo na Lisragem 18.5 p roduz.a seguinte saida:


SAillA ~

ANiliSE ~

AB
XX

fl automaticamente

por refer!nci.a. Voce deve codificarseus pardmetros de modo que usi ng e


c~angi n9 documentemapropriadamente sua ucilizaliio desses paclmetros.

A linha 10 retorna a controle para a linha 5.

A linha 9 escreve

Fi g ur a 1 8 2

Com o urn porfrmetrc .

pos sa do per valor


a/ceo umo novo

posio de

report ztx1 806.


dat a: fl val ue ' A' .

en tes do chomoda a 51
~
op6s a otribui~50 em s1

perform 51 using f lo
I f1. soldo: A

writ e

ormazenomeTJto

Independente do

original.

Lisla g e m 18.6 0 efeito de possegem por volor

1 report zt:d8 06.


2 data: fl vat ue ' A'.
3

perlol"lll 51 IIsi ng fl .
I fl .

5 writ!!
6

7 fonn sl using val ue{pl) .

~i~;

B
9

write / pI.

lD

endfonn.

pI ' X' .

einalterado.

valor X.

A linha 5 escreve a valor A.


U tiliz.e a passagem por valor, quando voce precisar de uma c6pia local de
uma varavel que possa ser alrerada sem afetar a original. A passagem por
referencia ~
eficienee que a passagem por valor. Utilize 0 metoda por
referencis, a mencs que voce precise de -um a c6pia local independente cia
variivel

rom

Passando as para metros par valor e resultado

ilusuam como isso func iona.

~~i~

e copiadc na mem6ria para pI.

A linha 8 modifies a mem6ria para pl. fl

Quando vcea passa um parimetro per valor, uma no va mem6ria ealccadapan.


esse valor. Essa memoria e alocada quando a sub-retina e chamada e liberada
quando a sub-ratina retoma. Porranto, as refereacias para. 0 parimetro sao
voltadas para uma Unica area cia mem6ria que e conhecida apen.a.s dentr o cia
sub-retina; a posi~ao original d.a mem6ria esta separada, 0 original estd
inalterado se vccz alterar 0 valor do parimetro. A Figura 18.2 e a Listagem 18.6

contrale para linha 7.

fl e f2 sao passados por referencia para. sl. Portanto, pl e p2sao ponteiros


para fl e f2. As altera~6es para pl e p2 sao imediatamecte refletidas em fl e
fl. Esse exemplc 56 ilust ra qu e epcssfvel alterar qualquer parimetro passado

Passando pa rametros par valor

EIlTlADA~

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

ccndicac manna! su rge, stop. e executads. Esta descarca as alterac;oes para


variaveis de valor e de resulradc e adona end-of-sel ect ton, onde as procedimentes de limp eza sa.o errdo executados.
Utilize a passagem por valor e resultado para pargmetros que voce quer
alterar, pois pode haver uma possibilidade de que voce queira descartar as
alterac;oes se uma condicl o aoorm al surgir em sua sub-retina.

A instruo message e seu efeito sab re a s sub-rctincs sOo obordados

no Capftulo 21, 'Telos de seleo.

e resultado.

Como urn par6metro


possadof'Ol' valor ~
resultado olocc urno
nova posio de

report ztxl807 .
dati: fl value ' A' .

c6digo na Listagem 18.7 produz a seguinte sai'd a:

St opped. 11 :' B

A linha 2 aloes mem6riapan a variavel f l.


A Iinha 4 transfere 0 controle para a linha. 9.
A linha 10faz com que f1 sejapassadopor valore resultado. Pcrtan to,
pI se refere a uma nova posiljao de mem6ria que ~ independente de fl.
o valor de fl eautomaticamente copiado na mem 6ria para pt.
A linha 11 modificaa mem6ria para pI. fl einalterado.

A F igura 18.3 e a Listagem 18.7 ilustram pardmetros passados par valor

Fig u r a 1 8 3

enderer;o de memoria 1000


antes do chcmcdo a s1
s de retcmcr de 51

perfonl: 51 "using f1
writl!: I fl. safda: X

A linha 12 copia 0 valor de pI de volta em fl , Libera pl e transfere


controle para a linha 5.
A Iinhe 5 passa 0 controle para. a linha 14.

A linha 15 alters

valor de pI para B.

indepe ndente do
original e copio 0

valor de vol'"

A linha 8 escreve 0 valor B.

novam~e.

Possando tobelos internos como porcimetros


OORADA~ Listagem 18.7 0 efeito de passagem por valore resultodo
1 report ztdB07 .
2 data: 11 value ' .... ".
J
4 perform: 51 changing fl .
5
s2 changing 11.
6

7 end-ct -selecttcn.
8

wri t e: / 'Stopped . 11 "", fl.

s
10 form sl changing value(pl).

11

pl 'B'.

12
endfonn.
IJ
14 form s2 changing value(pl) .
15
pl ' X' .

16
17

stop .
el'ldform.

A linha 14 faz com que f1 seja passado por valor e resu ltado. Uma
no va area de memoria ~ alocadapara pI e 0 valor de 11 ~ copiado nela.
A linha 16 emite a instru)ao stop . Ela Iibera a mem6ria para pI e
valor alte"cado ~ perdido. 0 centrale ~ transferido para a linha 7.

ormozenoml!!nto

sa3

DIA 18:MODWRlZA~O: rASSANOO pARlMm:os PARA SUB-Rn1lNAS

APRENDA EN 2t DtAS ABAP/4

Talvez sejauma boa ideia revisar tabelas internas agora,especialmente a sintaxe


de tt[ ] .
Voce pede utilizar urn des dais metodos para passar uma tabela interna
para uma sub-retina:
.

I. Passar com a linha de cabecalho


2. Passar apenas 0 cerpo

Sea tabela interna riverumalinha de cabecalho, a merodo 1passa as dais


para a linha de cabecalhc eo corpo para a sub-retina. 0 metoda 2 passa 56 0
corpo para a sub-retina.
Se a tabels intema me tiver urna linha de cabegalho, voce pode tambem
utiliza r as dois merodos, Entretanto, 0 rceecdc 1 se comporears urn pouea
diferenee - ele automaticamente criara uma linha de cabecalhc para a tabe la
inrerna dentro da sub -retina.
Nesse pccto, voce pede estar se perguntando, "Per que eu iria querer
passar uma tabela interna sem uma linha de cabecalho?" Na mai oria das vezes,
voce nao vai querer fazer isso. Entreranro, se river urn case especial que exija
uma tabela intema sem uma linha de cabecalho, pre cisari passa-la sem uma

linhade cabe~o. voce ter:i quefazerissose utilizartabelas internas aninhadas

584

D ~ 11, MDDUWlZA>'Do PASSAHDO PARAMrnDS PARA SIJ8.R011NAS

APRf HDA EM21 DIAS ABAP/4

- uma tabela interna aninhada DiD pede ter uma l.i.nlu de cabecalho. Tabelas
intemas aninhadas sao util.izadas rom freqiientementc Il2. vers ac 4, entia essa
tecnica sera necessaria com mais freqiiencia em sistemas mais novos.
A Tabela 18.3 resume a efeiec de cada Urn destes meeodos em tabelas

tabela in terna serjo desconhe cidos dentro da sub-retina. Acessar qualquer


componente dentro cia. sub-retina entia resultari em um erro de sintaxe.
A sintaxe de que voce pr ecisa depende do metodo que utiliza para. passar
a tabela interna. A Tabela 18.5 mostra a siceaxe apro priaciapara. cada. metoda.

internes com e sem linhas de cabecalho.


Tabela 18. 5 A sintaxe para desaeve r a tobelo inte rno pera a sub- retina

Tabela 18.3 Metodas e resultados de possogem em umo tobelc interne pera umo
sub-retina

Metodo

Com Iinhc de

Se a ta bela Inte ma
tiver uma linha de cabesalho

Se a tabela inte rno


nao fiver uma linha
de cab~alho

Possa ambos

eric umo linha de


ccbeccthc dentro do
sub-re tina

cc becclhc

Sem t.nho de
ccbecclbc

Posse 56

ccepc

Posse

Metoda

Sintaxe

Valores v6lidos para x

Com linho de

tables it stru cture x

Uma string de compo

ccbecclhc
Umo estrutura de ODIC
Uma tab ela de DDIC
Uma tabelo interne com umc

tables it li ke x

corpo

llnhc de ccbecolhc
Umc tcbelc inferno sem uma
linha de ccbecclhc
Um corpo inferno de tobe la

(i t [ ]1

A TabeIa 18.4 mos rra a sintaxe pua cada metoda de passagem em uma
tabela intema para uma sub-rotin a,

Sem linhe de
ccbecelhc

using it [

111ke

Uma tabel a interne sem linho

ccbecelhc
Um cerp o Interne de tabelo

Tabela 18.4 A sintoxe de codo metoda de possogem em umo tcbela lntemo para

(it [ )J

umo sub-refine

Metodo

Sintaxe

Com linhode ccbecclhc


Corpo openes

form sl
form '1
form ,1
fo rm ,1
form ,1

Como passodo

t ables tt
using tt[ ]
changing ut ]
u'i ng valu.(lt[ ]J
changing value (ft [ 1J

Pe r referende
Per referAnde
Per referend e

Pcr vclcr
Po!" valor e resvltcdo

Se a tabela iaterna tiver uma linha de cabecallic, 0 primeiro metodc na


T abela 18.3 passa tanto 0 cabecalhc como 0 corpo pan a sub-retina. 0 resto
dos mercdos passa somen t e a corp o.
Se a ubela intema nio civer uma linha de cabe~a1ho, 0 prim eiro metoda
naTabela 18.3passa 0 corpo e cria uma linha de cabe~a.lho cleotra cia sub-rotina.
o resta passa somente a carpa.

Tornando os componentes de uma ta bela intern a


conhecidos dentro da sub-retina
Mer amente passar uma tabela interoa Ilio e normalmente suficiente - voce
tambem deve descrever a estrutura cia tabela interna para a sub-ratina. Se nao
descrever a estnl tura cia tabela intema na instru~io f o"", as componentes da

A adi~a.o structure esperaurn nome de strin g de campo depoisdela. Aqui,


coclifique 0 nome de qualquer string de campo, estrutura DDIC, rabela ou 0
nome de uma tabela inter na que tern uma linh a de cabecalho.
A adi!rao1; ke espera urn corpo de tabela depois dela.Aqui, codifique uma
refersncia para 0 corpo de um a eabeb inte rna. Se a tabela int ema que vocf
deseja atribuir names aqui nio tiveruma linha de cabecalho , tanto it au it[ ]
ira se referir ao corp o de it. Se it river uma linha de cabecalho, scmente a
.
sintaxe it [ ] podera ser utilizada para referenciar 0 corpo de it.
Se voce passa soment e 0 ccrpo, nc rmalm ent e preeisar.i de uma area de
trabalho dentto da sub-rotina para edicionar e recuperar registros da tabela
interns, P ara defmir isso, voce pede utilizar local, data au stat ; cs, Se uma area
de trabalho global ja estiver disponivel, voce pode utiliza-la, embora seja menos
deseji.vel. porqu e acessar variaveis globais de dentro de urn. sub-rotina toma
a miUluten~o de programa mais dificil. Se voce escolher utilizar a instru.!rio
data para defmir sua u ea de trabalho, a adiC;ao l ike line 01 ttabbodyestari
disponiveL Etadefine umastring de campo utilizando somente 0 corpo .de uma
tahela intem a. A strin g de campo resultante ~ exatunente como urna linha do
corpo cia. tabela interna i. t abbody . Par exemplo, data fs l ike lin e of it[ J
define uma string de campo chamada 1s. Ela tem a mesma estrotura que uma
Unica linha de ; t .
.

585

586

APiENDA EM 2\ DlAS ABAP/'

Possondo umo lobelo interne com Iinho de cobecclh o

A linha 5 define a tabela intema it com uma linha de cabecalho.

Se urna tabela intema river uma liriha de cabecalhc e voce quiser passar tanto
a linha de cabecalhc como a corpo pan uma sub-rotins, utilize a sintaxe
mostrada na primeira linha da Tabela 18.4. Isso passari ambos, Iinha de
cabecalho e ccrpc, que serso passados por referencia, Portaorc, altenC;6es
Ieieas em uma linha de cabecalho au no corpo da tabela intema dentro cia

A linha 7 preenche a rebels intema com Slinhas da tabela zt xlfal.


A linha 8 transfere a contrcle para a linha 13.

A linha 13 faz com que a eabela interns seja passada junto com sua
linha. de cabecalho.Ela epassadapor refe rencia, encao pt eurn ponceirc
pan a original, structure enecessaria para tornar a esrrurura da tabela

sub-retina imediatamenre serio refletidas na original


A Lisugem 18.8 ilustra essa sintaxe.

ENTUDA~

interua conhecida para a sub-retina. Sem ela, qu alque r acesso a urn

componente da tabela interne causaria urn erro de sintaxe.

Llstc g e m 1 8 .8 Co mo passer umo tabelo Interne que tern uma hnho de

As linhas 15a 19mcstram asescalhas disponfveispara fazer a estrutura


it conhecida deaero da sub-retina.

ccbecclhc com sua Iinho de ccbecclhc

A linba 20 Ie a linha 3 de pt e a eoloca na linha de eabec;alho. Sern a


adiliaO structure na Iinlu 13. essa linha teria causado urn errc de

l report ztdBOS .
2 Aqu1, IT E IIIIla tabela. tnterna que tern uma l 1nha de cabet;alh o
3 Este programa IlOstr a CQIl'lQ passar a l1nha de cabecathc e a ccrpo.
4 tables ztxl fal.
5 data it l tke ztxlfal occurs 5 with header Jtne.

sineaxe.
A linha21 altera c valor de 1i fnr nalinha de cabecalho. Cemo a ubela
int erna foi passada com a linha de cabecalhc por referencia, isso
modifica. 0 ccnteudc da linha original de cabecalho.

s
7 select * up to 5 rows from ztxlfal fnto table it order by l ifnr .
. 8 pl!!rfonn 51 tables it.
9 loop at i t .
10
write I 1t1ffnr.
11
end1oop.

A linha 22 scbrescreve a linha 3 da linha de eabec;alho. Como a tabela

ineema fai passadapor refersacia, isso modifica 0 conteu do cia tabela


interna original.

lZ

13 forti 51 tables pt structure zulfal. ut l1iz e a st ring de campo ztxl la l


14
"ecut , vod pode ut iltzar:
15
'l!!strutura fs
l uma str1ng de campo
16
"estrutura dd1cst -una estrutura ou tabela. ddic
17
"est r utu r e it
-qualquer tabela 1nte rna com l1nha de
cabe~al ho
-like 1t .
18
-OK se ttab nlo t1ver l1nha dl! cabl!~alho
'11k. 1l[ ] .
-qualqul!r ta bel a 1ntl!rna .
19
20
read table pt 1ndex 3.
21
Jlt-lifnr 'XXX' .
lIOd1fy pt t ndex 3.
'2
23
endfonn.

o e6digo na Listagem 18.8 produz a scguinte salda:


IliDI ~

1030
1040

' ..

As linhas 9 a 11escrevem 0 cccteedc databela interna. A saidamostra


que 0 conteddo se aleerou.

Se urna tabela interns nao riverumalinha de cabecalho e voce quiser passer


a carpa. criando uma linha de cabecalbc na sub-retina, pede tambem utilizar
i sintaxe mostrada na prirneira linha da Tabela 18.3. Issa passa 0 corpo por
referencia e cria um.a linha de caber;alha localmente na sub-rotina. Alteralioes
feitas no corpo da ube:la iocerna dentro d2. subrotina sao imediacamente
refletidas na original.
A Ilstagem 18.9 iluscn essa sintaxe.

EN1lADA~

' ; A linha 4 define urna uea de trabalho global ,txl fal. Essa uea de
trabalho eurna Stringde campo tendo a mesma estrutura que a tabela
de ODIC ztxlfal .

Lisfagem 18.9 Como passar uma tabela interna sem umo linha de
cabe~alho para uma sub-rotina e automaticomente cria r uma linha de

eobe<;olho

1000
1010

XXX

INluse ~

A linha 23 -retOrna 0 concole para a linha 8.

1 re port ztx1809.
2 .. Aqui, uma tabela i nt erna que nao t ell Imi 1i nha de ca belil l ho
3 l pasuda com l1nha de cab~alho
4 tables ztx1fal.
5 data: f t like ztxlfal occurs 5.
-nlio tell uma l1nha de cabe'W alho

7 select up to 5 rows fl'Olll ztxlfa1 i nt o table i t order by l ifnr .

588

APIENOA EM 21.0 1"'5 ABAP/4

o.

8 perform sl tables it .
9 loop at it into ztxlfal.

A linha 18 sobrescreve a linha 3 da linba de cabecalho local, Como.


tabela intema foi passada por referencia, isso modifica 0 conteddo da
eabela .intema original
.

"prectse utf1i zar a Area de trablllho per-que

eli
n lo tee lIna linha de cabelial ho
wr1te I ztx 1fal ~ l ifnr .
10
endloop.
11
12
13 form sl t abl es llt st ructure ztxlfal . 00 vocf pode utillzar:
l'
IS
16
17

18
19

11ke it
11ke U[

o c6digo na Liscagem 18.9 produz a seguinte salda:


1000

1010
XXX

1030
1040

A linh. 4 define uma irea de trabalho global ztx'lfa l. Essa irea euma
suing de campo que tern 2. mesma estrutura que a tabela de DDIC
ztxlfal.

A linha 5 define tabela interna it sem uma linha de cabecalho.


A ~ 7 preenche a tabela interna com 5 linhas de tabela ztxl f al.
A linha 8 tnnsf:re

A linha 19 retorna

controle para a linha 13.

A linha 13 faz com que o corpo da tabela interna seja passado e


automaticamente cria uma link de cabecalho para ele. 0 corpo e
passado par referzncia, 'entio pt se toma um ponteiro para 0 corpo
original e para a linha de cabecalhc local. structure . utilizada para
tomar a estrutura da tabela interna conhecida para OJ. sub-retina. Sem
ela, qualquer acesso pua urn componente cia tabela interoa causaria
urn erro de sintue.
As linhas 14 e 15 mostram as outras escolhas disponIveis para fazer a
estrutura 1t conhecida dentro da sub rotina.
A linh. 161hlinh. 3 de pt e a co10ca n. linh. de cabe..,lh o 10c:U. Sem
a adi'iao structure na linha 13, essa linha tena causado urn erro de
sintaxe.
A linha 17'!tera 0 v.!or de 1i fnr na linha de cabe,alho. Com o . tabela
intema ori~al nao tern urn;a, linha. de cabe'ialho, isso nao rnodifica
nada fora da sub-rotin a.

controle para a linha 8. A memoria para a linha

de csbecalho local eIiberada.

As linhas 9 a 11 escrevern 0 conterido dol tabela Interne, Como i t nao


t em uma linha de cabecalho , a string de campo ztxlfal e utili zada
como uma area de erabalho explfcita, A saida mostra que 0 conteedc
se alterou.

read tab le pt 1ndell. 3.


pt-li f nr 'XXX' .
modify pt index 3.
endfonn.

l UOO~O, PASSAHOO PAR.lMmOS PARA sua-iunH.4S 1

Se uma eabela int ema Dio tiver uma linha de cabecalho e voce quiser
passar 0 corpo sem automaticamente criar uma linha de cabecalho na sub -rotina, p ede utiliz ar a sintaxe mostrada nas linhas dais a cinco da Tabela 18.4.
Utilizando essa sintaxe, voce pede passer 0 ccrp c por referencia, por valor ou
por valor e resultado . Se voce passar 1t por referenda, as alteracoes feius no
corpo da tabela int eraa dentro da sub-retina imediatamente serio refletidas na
original. Se voce passar it por valor, uma c6pia local de it sera criada - as
alte~oes serac descartadas no final da sub-retina quando a mem6ria local de
it for liberada. Se YOCe passar 1 t par valor e resultado, as alteralioes serso
copiadas: de volta para a originalquando endf onn for executada, Uma instru~o
stop dentro da sub-retina descartars todas as aItera'i0es para it e tra.nsferiri 0
conerole diretamen te para end-of-sal ecti on.
A Listagem 18.10 ilustra esses merodo s.

EIITI.\OA~

Listagem 18.10 Como posser umo teb elo interne sem ume linhc de
ccbecolhc para uma sub-retine
.

.1 report ztx 1810.


2 .. Aqui. uma tabela Int erne que nl o tee III'Ia 11-nha de cab~alho
3 .. ! passada Sell! criar lJl'Ia lfnha de ca bt! ~al ho automaticamente
t ables ztxlfa1
S data : 1t li lee ztxlfal occurs 5.
"nlo t em ilna l1 nha de cabe~alho
6
7 select " up to 5 rows from ztxl fa1 into t able it order by l1fnr .
8 perlonll: 51 usin g i t ,
9
s2 usi ng it.
s3 using it, .
10
11
"ntei tout tab les it .
12
13 end-of-se le ction.
14 write : I 'In End-Of-Select ion'.
15 perfonn write1to ut tables i t.
16
17 fOnl s l usi ng val ue(pt ) like i t. pusa por valor
18 "
voti! tarnbe. pode ut 111zar: como it[ J.
19
data Wl like line of pt.

589

590

20
21
22

you can also use:


data wa like ztxlfal.
data 'Il'a 11ke li ne of pt[ ] .
l ocal ztxlfal.

73

2'
25
76
27

28
2.

vod: ut1 11za fs so,

sera zt xlfal. n,so

Will.

SI!

ncrne da aree de t r abalho

read t able pt i nto wa ind ex l.

30 form s2 using pt li ke i t. passa por


31
data Wi like. line of pt .
32
read table pt in to Ill! in dex 2.
33
wa-lifnr "tyr o

nfer~n ch

34
m di fy pt from Wi i ndex 2.
3S
endfona.
36
37 form s3 changing value(pt}" like it. passa por valcr e res ultado

38

data "a 11ke line of pt .

39
40
41

read tabl e pt i nto Wi i ndex 3.


wa-l 1fn r 'ZZZ'.
modify pt from Wi index 3.

42

stop .

43

endform.

45 form wr1tel t out tab tee 1t structure ztxl fal.


leop at i t .
wrfte / 1t - l 1f nr .
48
endloop .
49
endfam.

46
47

o c6digo na List agem 18.10 produz a seguinte safda:


siiDI ~

End OfS~1 l!ct1on

1000
yyy
1020

1030
1040

AlAUSE ~

com qu e uma e6pia separada cia eabela interna seja criada, enta o pt se
refere a uma c6pia local cia tabela interns, 1i Ice enecessaria para dcfinir
pt como uma tabela in tern a. Scm 1i ke, pt seria u ma varidvel simples e
um errc de sintaxe ocorreria.
A Iinha 18 mo stra a cutra escolha dispc afvel para definir pt como uma
tab ela interna.

wa-11 f nr 'XXX' .
modify pt frOll Wi i ndex l.
endfoT'lD.

tn

591

O~ l B, MOOULARIZAIAO, P",,"OO PAlAMETlOS P.... SU'-ROTINAS

lPRENO. EM 71 OIAS ABAP/4

A linba 4 define uma are> de trabalbo global ztxlfal. Essa area de


tnbalho euma String de cam po tendo a mesma est rurura que a tabela

de DDIC ztxHal.
A linha 5 de fine a tabela intern a i t sem uma linha de cabecalho.
A linha 7 reside na tabela interm com 5 linhas de tabela zt xlfal.

A linha 8 transfere 0 controle para a ~ 17.


A linha 17 faz com que 0 eorpo dOl u bela inte rn a seja pass ado por valor
c nao em. urna linha de caber;alho para ele. A p assagem par valor faz

A linha 19 defin e uma area de trabalh o local wa que tern a rnesma


estrutura que uma linha de pt. As linhas 20 a 24 mostram as ou tras
escolhas disponiveis para de finir urna arca de trabalho local par a pt .

A linha 25 Ie a linh a 1 de pt e a coloca em wa.


A linba 26 altera 0 valor de 1i fnr 03 area de trabalho wa.
A linha 27 sobrescreve a linha 1 de ee. Como a tabela intema foi
pass ada por valor, isso modifica 0 cc n eeud c cia c6pia local. A original
pe rmanece inalterada.
A linha 28 retorna a cc ntr ole para a linha 8. A mem6ria para pt
liberada e a alterac;io eperdida.

A linha cj traasfere a controle para a linha 30.

A linha 30 faz com que 0 corpo da tab e1a int em a seje passado por
referencia e naa cria uma linha de cebecalbc p ara ele. pt agora se refere
aoriginal 1i ke enecessario para definir pt como uma tabela intema.
Sem 1ike, pt seria uma variavel simples e urn erro de sintaxe ocorreria.

A linha 31 define uma area de trabalba local wa qu e te rn a mesma


estrutura que uma linha em pt .

A linba 321. a linba2 de pt e a coloca em wa.

A linha 33 altera 0 valor de 1i fnr na area de trabalho wa.


A linha 34 sabrescreve a linha 2 de w!. Como a eabela interna fo i
passada por referencia, isso modifica 0 con tea do cia original. A original
agora esta alterada.

A linha 35 reto:na.

controle para a lin ha 9.

A linha 10 transfere 0 controle para a linha 37.

A linha 37 faz com que 0 corpo da rabela intema seja pass ado per valor
e resultado, mo criando uma linha de cabecalbc para ele. pt agora se
refer e a urna c6p ia cia original. 1i ke e necessaria para definir pt como
uma tabela intema. Sem 11ke, pt seria uma variavel simples e urn err o
de sintaXe ocorre na .

A linha 38 defin e urna area de trabalh o loal wa que tem a mesma


estrutura que uma 1inha em pt.

592

D~ lU DIlIJURI2A,.i<" PIll'HOO PlIl.iMETRDSP.... SU~HAS

APREN DA EM 21 DIAS ABAP/!

Urn erro de sintaxe em qualqu er lugar no programa extem c causara


urn erro de tempo de execuc;ao, se ele estiver dent rc au fora da
sub-retina extema.
.

A linh.a 39 1 Iinha 3 de pt e a ccloca em wa.


A linha 40 altera 0 valor de lifnr na irea de trabalho wa.
A linha 41 sobrescreve a linha 3 de wa. C omo a ta bela interna foi
passadapor valor e resultado, isso modifies 0 coneeedo da c6pialoC2.1.

A original ainda nao foi alterada.

As sub-rotinas externas sao mui to semelhantes a sub-ra tin as internes:


As duas permitem que as parlmet ros sejam passados .

As duas permitem parimetros formais digitados.

A linha 42 desvia da instru~ao endfonn - ela tr ansfere 0 controle


diretamente para a linha 13. Isso faz com que a copia local seja

As duas p ermitem que as parametres sejam passados par valor, par

descartad a, Se a in s tru~o stop naa executar, endfonn fari com que a


c6pia local sobrescr eva a original e a altera~o seja mantida,
A linha 15 rraasfere

valor e resultadc e par referencia,


As duas permitem defmic;6es de variaveis locais.

conrrole para a linh a 45.

A Figura 18.5 ilustra as difere ncas en tre sub-retinas exte mas e internas .

A linha 45 faz com que a tab ela intern e seja passada por referzncia e
uma linha de cabecalhc seja auto maticamen te criada.

As linhas 46 a 48 escrevem 0 conreudc da tsbela interna, A anica


altera~o esti: na linha 2 e foi executada em 52.

Fig ur a

18 :'jj

As d~re~ enln!
svb-n:JIinos eJdemos e

mesmc area

reportttx1811 .
tcbles zlxllo1
dota 11 .

CJ

in1emos ,

lEUO "

Umo sub-retina extemo

FigurA 18 4

~ po rt

zt x1811.
perfonn sl (ztxl812) .

=r
~

?
endf onn.

Uma vwveI global que tern' 0 mesma nome nos dais programa.s e ~
defin ida utiliza.nda a instru~o tab les nos dais pragramas e co mu m
aos dais pragramas. U ma alterac;ao para essa variavel em um prcgrama
afeta 0 ou tre, Na Fi gura 18.5, a uea de memoria chamada ztxl fal e
compartilhada entre as dais programas. Qualquer alteralja.a nessa uea
de tnbalho evista imediatameme pdas dois program..s.

Quando urn perf orm ch ama um a sub-rotina enema


0 pragrama en ema que con tem a sub-retina e carregado.

0 pragrama exeem c int eiro everificado quan ta asintaxe .

a controle etransferido par a 0 fonn no programa exte rno .


As instruc; 6es deotra da sub~rotina extema sao execu tadas.
A endfonn tran sfere a co ntrole de volta para a insuuc;ao que s~ segue
a perform.
.

fato de a verificaC;ao de sin taxe ocorrer em tempo de cxecutj2.o


imp ortante, pebs duas razee s seguintes:

c:::J

Uma varifvel glob al definida utilizando data ~ conhecida somente


dentro do prcgrama que a defin e. Par exemplo, na Figura 18.5 a
instru~a data f1 apar ece nos dais pro gramas. Ess a ins truljao define
duas areas de memoria chamadas fl . A f1 definida den tro de ,tx1811
e'penas acesstvel de dea erc ,tx181l . A fl defiaida den ero de ,txl8l2
eapenas acessivel de den tro ztxl81 2. T ow as referencias a fl dentro
de ztx18 12 sao referen ~ias a fl defmid as dentrc de ztx1812.

report ztx1812.
fom 51.
-

d;fe..nte

repartzix1812.
tabl., zlxllo1.
dote 11 .

As seguint es sao diferencas en tre sub-retinas intemas e externas:

e oquelc que reside em um.prog romo dlferente que a

insnyo perfom que a che rne . A Figura 18.4 ilustro ume sub-rotina enema.

Umo ilustro o de
umo sub-lOfino~, .

demem6ria

- I -... CJ+--lareas de mem6rio

Definindo e ,hernando sub-rotinas externas


HOYO ...

593;

Se 0 parametr o formal for digitado, urn parametro real oao corresp90~


dente causm urn erro de tempo de executjao em vez de urn erro de
sint axe.

As listagens 18.11 e 18.12 ilustram uma cbam ada a um a subrotina

externa.

EHliADI~ Listagem 18. 11 (homondo a sub-rolino mostrodo no Uslogem 18 .12


1 report ztx1811.
2 tables ztx1fal.
3 dat a f1(3) value 'W ' .

e
5 ztx lfat-1 1fnr" '1000'.

..

594

APR ENDA EM 21 DlASABAP/4

DIA 1.: MO OULARI~O: PASSANOO PARAMETROS PARA. SlJ8.ROTINAS

6 perfann sl (ztxIB12).
7 write : I 'f! .', fl .
B
/ 'l ifnr II', ztxlfal-lifnr.

!NlRADI~

Resu m o
Os parlmetros podem ser passadcs de tre s maneiras: por valor, par
valor e resultado, e par referencia. A sintaxe na instrucfc f onn deter-

mina qual meeodo e utilizado.


0 coepo deuma tabela interna pode ser passadovia usi ng au chang; ng.

List ag em 18.1 2 A sub-rotina <hamoda do programo no listogem 18.11

1 r eport ztx 1812 .


2 tabl es ztx lfal.
3 data fl(3).
4
5 fonn 516
fl .. 'ZU' ,
7
ztxlfal- l1fn r '9999',
8
endform.

corpo (e a linha de cabecalho, se pre sence} pade ser passado via


tables . Se a tabela intema nao tiver uma linha de cabecalho, tables
cria uma dentro da sub-retina.

Para acessar os ccmpcnectes de um a stri ng de camp o ou sub-retina


conhecida dentro da sub-retina, a estrutura deve ser declarada na
instru~io form.
A s sub -rotiD.as extemas sao muito semelhantes is inremas. Com as
sub-retinas externas, as variaveis definidas utilizand o dat a sao conhecidas somente dentro do programa que as define. As varidveis
tendo 0 mesmo nome definidas utilizando ta b1es sao comuns aos dais
programas.

0 c6di go na Listagem 18.11 produz a seguinte-safda:

SAlol ~

fl AM
l 1f nr .. 9999

INllIS~ ~

N 05 dais programas, a linha 2 define uma area de trabalho global


ztxlfal. Essa area

e com partilhada entre as dois programas.

N os dais programas, a linha 3 define urna variavel de trabalho global


fl. Du as areas independentes de memoria sao definidas, urna para cada
programa..
Em zt . ISll, a linh a 5 atribui urn valor de 1000 a zt.1fal-' ifnr.

P&R

Por que precise conhecer todes as vana'ioes de passagem de uma


tabela intema com e sem linha de csbecalho! T odos os casas nao
sao ahrangidos por apenas algumas dessas varia~o es ?

Em ztx1811. a linha 6 pa ssa 0 controle para a linha 5 em ztxlB12.


Em ztx1812, a linha 6 atribui ZZZ
em zt x1811 MO e afetada.

avariavel global" fl para ztx1 812. fl

Em ztx lB12, a linha 7 atribui 9999 a ztxlfal .


programas.

1550

afeta as dais

Em ztx1B12, a linh a 8 retorna 0 controle para a linha 6 em ztx1811.


Em ztxIBll, as linhas 7 e 8 escrevem as valores de fl e ztxl fal- 1ifnr.
f1 permaneceu inalterada, enquan to 1i fnr foi alterada.

Utilize a instrulioo local dentro de svb-rctincs extemcs perc evitcr


comportilhomento de areas de trobolho de tobelos .

Se voce eseivesse meramente eriando pr ogram as em ABAP/4,


nao precisaria conheeer todas essas variac;6es . Voce poderia
eodificar a maioria de seus programas com ap enas algumas
variacdes simples. Entretanto, a m aior parte do tempo de urn
programador em ABAP/4 norm alrnente n ao e gasta na criac;ao
do c6digo em ABAP-e gasta na leitura . A pass agem de tabelas
intern as para sub -rotinas e urn assunto complicad o e 80% de
seu tempo serao gastos len do 0 codigo qu e faz essas coisas
complicadas, enquanto menos de 20% de seu t emp o serao gastos
.crian do seu pr6prio ccdigo. Esse triste desequ iHbrio determine
que voce deve aprender as varia~6es utilizadas pela SAP, para
qu e possa gastar menos tempo arranc an do cabelcs enquanto
t en ta entender 0 c6digo de SAP. 15 50 deixara voce com mais
t empo para escrever se~ p r6p ri o codi gc e com mais cabelo.

596

APRENDA EM 21 DIAl ABAP/4

Workshop

o Workshop oferec e duas maneiras de voce verificar 0

que aprendeu oeste


capi tulo. A se~ao Teste oferece perguntas para ajudar a solidificar seu entendimenta do conteudc abordado e a se<;ao Exercicio permite que voce pratique 0
que apren deu. Voce ped e encontrar as respostas is perguntas do Teste e ao s
exercicios no Apsndice B, "Resposras as perguntas e aos exercrcics".

Teste
1. Quais sao as parametres que aparec em na instruc;ao form chamada?
2. 0 que causa a passagem de uma varidvel de tip o de dado au compri-

menta errado para urn parsmetro digitado?


3. Quando voce passa urn pargmetro por referencia, nova mem6 ria e
alocada para a valor?
4. Q ue efeito as adi coes using fl e c"hang ing fl tern na maneira como
as p arametre s sac pass ado s?

Exercfcio 1
Execute

programa mostrado na Listagem 18.13. Comente a instrucio pa-

ramet ers e execute-a novamen te. Descreva a sequencia de eventos que ocorre
em cada case .

ENlliDA~ Lista ge.m 18.13 Expllque a seqllenclo de eventos que ocorre neste
prcqrcmc
report ztxl813 no standard page headfng .
ztx18 13 data: flag,
ctr type 1.
parameters pl.
i nf t ia11 zat ion.
flag '1'.
write : I 'in !nitialization'.

stert-cf-se 1ect 1on.


flag .. '5'.
write : I 'i n Start-Of-Selection'.
I 'pt >', pt.

Ii 19
Modularizalao: modulos
de funlao,.Parte 1
Depois de conduir eseecapfrulo, voce sera. capaz de:
Entender e utilizar a instru~ao i ncl ude
Criar grupos de fun~.o e m6dulos de fun~.o
D efln lr parame tres de importacao, expo rta/iao e altera/iao

Utiliza nd o a instruc;;Cio j Dcl ude

Urn progromo que indui o utro

milO ,..

ul t ne.

;'

.:.

~?~V;.~.

Um programa include urn ap licotivoem que 0 ccnteedc projetodo pore ser


utilizede per eutro pregrerna. Norrnalme nte, ele ndc e completo sozinho. Em
vez d isso, outro progromo utilize 0 c6digo que 0 progro mo include ccntern , copiendo as
linhos de c6digo do progrorno include pore eles pr6 prios, A c6pio e executodo em te mpo
de execu~a o vic lnstruce c i ncl ude. Urn progrcm o include tombem e con hecido como
um progroma indu/do (induded program).

NOVO ...

tcp-ot-peae .
add 1 to ct r.
write: I 'Top of page, fla g . ', f l ag. 'ctr .' , ctr.

KOVO....
TERMO"

h"p://www.compus.com.br

e conheddo como um programc de inc/usco.

598

D~ 19, MDDUl.\R~o, MODUlOS DE FUM\AO, PAmI

, PREMD, EM 21 DI,S ABA P/4

OOIAOI~ Lisla g e m 19.1 Um progromo de inclusoo

Sinlqxe para q inslrw;Co j Del ude


~ 0 seguinte ea sintaxe panla insrruci o include.

1 repo rt zn1901 no st a ndard page heading .


Z tables: ztxlfal. ztxlfbl.
3 par ameters p_li fnr like zt xlfl1-l 1f nr obl1 gat ory defa ul t '1000'

include ipgm.

onde:
tpgm e um program . do tipc 1.

include: ztx19 02.

ztxI903 .

o seguin tes POntOS se aplicam:


Urn progr ams include deve ser do ripe 1. Voce especifica 0 programa
do tipo no campo Type na tela Program Attributes quando voce cria
o program a.
Urn programa include pede estar incluido em urn au mais programas
de iaclcsjc (including programs).

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

Indude ZB. +f---~"


Write 'Hr.
lnclude Zc.
l_

insfru o i ncl ude.

Q uando 0 progroma
gero do, este Ii )
resulta do do

EH1UOI~ Lista gem 19.2

Este progromo ~ incluldo em zt xl 901

1 .... INCLUDE ZTX190Z.


* f r'Olll zt xlfal where l1fnr p_l1fnr .

Z sel ect s i ngle

EHTliDA ~ Lista g e m 19.3 Este progromo ta mbem est6 ineluido em ztx1901


1 -INCLUDE ZTX1903 .
Z select .. from ztxlfbl where l1 f nr ztxlf&1- 11fn r.
3
write: I ztx l f bl- bukrs .
4
enesetect

Programo ZS

Report lA.

Umc ilustrofiOo cio

8 top-of - page.
9
write : I ' Company Codes for Vendor ' . p_l 1f nr .
10
ul tn e.

Progrbma

ze

o c6digo nas Listagens 19.1 a 19.3 produz esta safda:


SliOI ~

Write 'There'.

c6digo-fonte.
Report lA
write 'Hr.
Write 'There '.

Na Figura 19.1, za eo programa de Inclusao. Os prcgramas include sao


zb e r c. No mem en to em que za egerado, 0 ccdigo-fonte para zb e zc einserido
em za, f:a.z.endo a programa ser mastrada na part e inferior d.a figura.
As lisragens 19.1 .19.3 ilustram prognm as include.

COIl'+Jany

Cod ~ s

f or Vendor 1000

1000
3000

. INluSE lI..
,.

No moment o cia ge",ao de zt xl 901, a linha 5 copia 0 ccdigc do


program. ztxl902 pas. zt xl 901. 0 codig c inserido substitui a linha 5.

Ainda dur ante a gera~ao de programa de ztx1901, a linha 6 copia 0


c6digo do program> ztx l903 par. ztx l9 01. 0 c6di go inserido substitui
a linha 6.
Quando 0 programa executa. zoc1901 comp onase como urn nnicc
prograrna. como se as linhas de c6digo dos programas incluidos
tivessem sido digiudas direeamecte em ztx 1901.

A SAP utiliza includes para reduzir a redundincia de c6digo e dividir


prognmas muito gnndes em unidades men ores.

599

OIA 19.MODUlARIZA(.io, .6 00'05DE FUN(.iO, PAm, ,

Enquonto visuolilO um progroma de inclusOo, voce pede observer a


ccntecdc de um progromo inclufdo, simplesmente dondo um clique
duplo em seu name . Per exernplo, enquonto edito ztx1901 no tela
ABAP/4 Editor: Edit Program, de um clique duplo no no me ztx1902
au em ztx 1903. 0 pragro ma incluldo ser6 exibida imediota mente.

101

Entende nd o grupos de fun!;oo


Como declarado anteriormente, urn grop o de fun!tao ~ urn programa que
contem m6dulos de funCJao. Com cads sistema de R/3, a SAP fornece mais de
5.000 grupos de fun~ao preexistentes. No total, eles ccntem mais de 30.000

modules de func;iio. Se a funcionalidade que voce exige j' oiio e abordada por

esses rn6dulos de funiio fornecidos pela SAP , voce tambem pod e coo seus
Se vocA quiser ver a c6cligo resultonte com fad e s a s inc ludes in-line
expondidos, execute a programa RSINCLOO, No te lo de selecoc para
RSINCLOO, no campo Program, digite a nome de um progromo que
inclui outros progromos. Coloque urn X nos compos Program Source
Code e Expand Include lines e pressione Execute. Umo listo do
c6digo-fo nte resultonfe sem exibido na proximotela .

pr6prios grupos de funC;iio e m6dulos de func;iio.

NOYO.... Code grupa de ,fvnl;oo e ca nhecido pe r urn ;~entificodor ~e quotro corode~s


lWiO"
chomodo 10 de -gropo de fun~60 . Se voce cno seu pr6pno grupo de fun<; oo,
deve escclher um ID de grupo de fvn~oo qu e ccmecc com Y ou Z. 0 ID deve ser
exotcmente de q uotro corocteres de comprimento e ndo pode confer lccunes nem
cc rccteres espec lcls.

Introduzindo m 6 d ulos de fun'i;oo


NOVO....

lruIO
aspectos :

Um module de fu n~o o e a ultimo des quctro vnldc des principe is de rncdulcriza~oe do ABAP/4 . Ele e multo semelhante a uma sub-refina extema sab esses

~o

Ambos existem dentro de urn programa extern o.


Ambos ativam os pardmetr os a serem passados e r etornados.
Os parametres podem ser passados par valor, par valor e resultado,
au por referencia.
As diferencas importantes entre m6dulos de fun/iao e sub-retinas externas sao as seguintes:

Os m6 dulos de fum;ao tern uma tela especial utilizada para definir


parametres - os parametres nao sao definidas via ins tru~6e s de
AJ3AP/4.

As areas de trabalho tab l es nao sao compartilhadas entre 0 modulo


de fun~ao e 0 programa de chamada.
Para chamar urn m6dulo de fun~ao, e utilizada um a sin taxe diferente
da empregada para chamar urna sub -retina.
Para sair de urn m6dulo de fun CJao, eueilizada a instrucio raise ern vez
de check, exi t au stop.
Urn nome de module de funCJao tern um comprimento minim a pra rico
de tres caract eres e urn comprimento maximo de 30 caract eres. Os m6dulos
de fun~ao de cliente devem com eliar com Y_ ou Z_. 0 no me de cada m6dulo
de fun/iao eunico den tro 40 sistema de R/3 int eiro.

Nos ve rsc es onferiores a 3. 0F, 0 sistema de R/3 permite que voce


es pec ftqoe um ID de grupe de fum;ao menor que qoctrc carocteres,
au utilizer espccos denfro de le. Enfretonfo, 'loci n50 deve fozer lase,
porque as ferrcmemcs que monipulam m6d ulos de funlioo se ccrnpcrtcrec irregulormenfe co m esse gru po de func;o o.
'

Para ilustraros gropos de fun~ao) descr everei resumidam ente a processo

de cri' c;iio de um grupo de func;iio e de um modulo de func;iio dentro ~ele.

Vamos partir do pressuposto que nenhum gropo nem m6dulo de fun~:ia ainda
existam.
Voce ccmeqa crisndo um m6dulo de fun~ao. Quando cria.urn m6dulo,
sistema primeiro peclir.i a voce um ill de gropo de fun~ao . Esse ill informs ao
sist ema onde armazenar 0 modulo de fun~ao.
Quando voce fomecer olD, e se ainda ele.nao existir, 0 sistema criardi

Urn programa principal


Urn include superior
Um inc lude

ux:x

Um m6dulo de func;iio include


Coletivamente, esses componentes sao conhecidos como grupo de fun ~ao . Seus relacion amentos sao ilustrados na Fi gura 19.2.
nome do programa principal sera sa plfgi d, on defgid

seu ill de gropo


de fun~o de quatro caracteres. 0 sistem a automaticamente colo.ca duas
ins truCJoes ; ncl ude nele:

incl ude ljgidtop.

incl ude ljg iduxx.

602

I A'RENDA EM II DIAS AWI4


Flg u r Q 1 9

Top Ind vde

Figuro 19 3

A fundion Ubrcry

Esse 4 0

Injfjol~ .

re/oclonomento

hier6rquico dos

Proqmmg Principa!

componMmsde urn
grupo de luno.

function . pool fgid.

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

ljg tdtop - eccnhecdc como 0 fop indude.


Dentro dele voel!pode cclcc cr defin i1jOes globaisde dodos. Estossao definic;6es

0 primeiro progromo include -

de dcdcs que seo globois pe rc tcdos as m6dulos de funJ;oo dentro do grupo.


0 segundo progromo inc:lude - lfgtduxx - econheddc como UXX.A voce
noo e permitido mod ifieor 0 uxx. 0 sistema ovtomaticomente colcccro umo
instruc;co i ncl ude no UXX porn coda m6dulo de func;oo que voce crier nesse grupo de
fvnljoo. Para 0 primeiro m6dulo de fvn~oo, a instruc;6o 1nelude lfgiduOl ser6 inserido
no uxx. Quondo ....oce crior um seg undo m6du lo de fun~co nesse grupo, 0 sistema
od idonor6 umc segundo instru<;Cio: i ncl ude lfgidu02. Todo vez que voc~ cdlcioncr urn
novo m6dulo de funr;o o 0 0 grup o, a sistema cdlclcncrc urn novo instruil;co 1ncl ude pora
o UXX. 0 nnmero do i ncl ude ser6 01 para 0 prirneiro rn6dulo de fun<;Oo criodo dentro
do grupe, 02 durante 0 segundo, 03 para 0 tercelro e cssim per dionte .

KOYO .....

ltUO

r.

Por exemplo, para acessar 0 programa principal do grupo de func;ao,


escolha 0 botao de opc;aoMain Program e entio pressione 0 bat i o Display. 0
program' principal de grupo de fun'iao ztxa emostrado llll Figura 19.4.
F igura 19 4

Oprogromo
principal de grupo

de futHj:Oc ztXQ.

Dentro de cada include mencianado no UXX esta a codigo-Icare para


urn m6dulo de fun"o.

Acessando a bibliotecQ de

fu n~ao

NOVO ...

Os grupos de runr;oo slio onnozenodos em urn grupo de tobelos dentro do


banco de dodos chcmado biblioteco de funr;oo . Acessondo a biblioteco, voce
Jcmbem pede ocessor os ferramentos pelos qua is voce mon ipulo m6d ulos de func;o o e
grupos . Para ocessor 0 btbllctecc de funr;co do Development Workbench, pressione 0
bateo Function li brary no berra de ferramentos Applicotion. 0 c6digo de tronsor;oo

TWO ,.

5E37.

Cada um des compon enres de urn grope de func;ao pede ser acessado a
partir da Function Library Initial Screen mostrada na Figura 19.3.

A Figura 19.5 mostra 0 UXX p.n

grupo de fun'iao ztxa.

604

OIA 19,MOOUlA'lZA(.io, MOOUlOS O!fUNlio.PAm1

APRE NDA EM 21 DIAS AB AP!4

urn m6dulo de func;ao antes de trabalhar nele, alterar 0 c6digo e entao executar
uma verifiCa~o de sintaxe nesse m6dulo tinico antes de reati vs-lo. Dessa
maneira, os demais m6 dulos de fu nc;ao ainda podem ser cham ad os, mesmo se
voce estiver trabalhando em urn deles.

Definjndo dodos dentro de urn mod ulo de

Na Figura 19.5, voce p ade ver esse grupo de fun~o zt xa que contem dois
modules de fun~ao: z_t x_1901 e z_tx_1902. a primeiro esta ativo, 0 segun do
nao (seu nome e comentado).

Atjva ndo urn modulo de

fun~a o

Urn m 6dulo de fun~o deve ser ati'lJado antes de ser iriiciado. H:i um. batao
Activate na tela Fun ction Library Initial Screen. Pres sionando-o se ariva 0
modulo de fun, aa .
Q uando 0 modul o de fun~ao river sido criado pela primeira vez., a
instru~o i nc1ude para de dentro do UXX sera comentada. Acivar 0 m6dulo
de fun~ao faz com que 0 sistema remova a comennric da instruci c i ncl ude.
a m6 dulo de fu.n~ao estara entao disponfvel para ser chama do de outre
program a. Se voc~ alterar 0 c6digo demro do m6dulo de fun c?o, ele Ilia
p recisara ser ativado ?ovamen te. Por ou tre lado , reativar naa causard qualquer
dane.
Se quiser, voce pede desativar urn m6dula de fun,aa. De ABA:F{4
Function Library: In itial Screen, escalha 0 caminho de menu F un ction Medul e- > D eactivate. A escolha desse caminho de menu insere urn come ntdrio na
instru~ao i nclu de para esse m odu le de fun):io dentro do UXX.
Todos os m6dulos de fun~ao que pert encem a urn de ice grupo existem
dentrc do programa prin cipal : sapl! gid. Por causa disso, urn erro de sintaxe
em qualquer urn desses m6du los de fun~ao fara com que 0 resto se tome
inoperante; a execu)ao de qualquer urn deles resultani em urn erro de sintaxe.
As fun)o es Ac tivate e Deactivate permitem que vace trabalhe em qualquer
mo du lo de fun~ao unic o de urn grupa sem afet2.f 0 resto. Voce pade desativar

fun~60

fu defini<;5es de dadas denerc de modules de fun,aa sao semelhantes l.quelas


de sub-retinas.
Dentro de urn mod ulo de fun):ia J utilize a instrllc;ao dat a para definir
variweis locais que sio reiniciilizadas toda vez que 0 mod ulo de fun~io e
chamado. Utilize a instrucfo stat i cs par a defmi r varUveis Iccais que saO
alocadas na primeira vez que 0 m6dulo de fun~o e chamado. a valor de uma
variavel esutica e lembra do ent re chamadas.
Defina parfmecros dentra da interface de m6dulo de fun) i o para criar
deini~oes locais de varifveis que sao pass adas no m6dulo de func;i o e retcrnadas dele (vejaa pr6ximase,aa).
Vace nao pade utilizar a instI11c;ao 1oca1 dentro de urn m6dulo de func;:ao.
Em vez disso, parimetros de int erface glab alizados servem para 0 mesma
prap6sita. Veja a seguin te seliaa sa bre definic;ao de dados globais para aprender
sabre parimetros de interface globais e lccais.

Definjndo a inte rface de mo dulo de

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

D~ lU ODUURIl.l(.io, M6DUlOSDE FUH ~.PAm l

AmMDA EM 21 DIAS lBAPH


Fi gurq 19 6

A tela Imporl/Expott

Porometer Interfoce.

NOlO...

1Bl!O ~

passodos no m6dulo de fv ~oo do progra mo de chamodo . Esses vclcre s


originom foro do m6d ulo de func;oo e se o importodos pare cleo

58

NOYO ...
lFlMO JII""
retomados do m6dulo de fun o. Esses vclcres se originom de dentro do
m6clulo de funr; oo e sao exportodos pore fora dele.

1i10 ...

mMO "
que seSo pcssod os no m6d ulo de func;oo, olterodos pelo c6d igo dentro do
m6dulo de furn;oo ee ntec retom odos. Esses volores se originom de foro do m6dulo de
func;eo, que a s recebe e a s passe de volta.
Pcnimetros de tabe/a sOc tc belcs internes que sOo passcdos pore 0 m6d ulo de
fun~co, a lterados dentro de le e retomodos. As tobe/os infernos devem see
definidos no progromo qu e cha ma .

NOlO ...
TrulO ~

Umo exc~oo e um nome para urn errc q.ue ocorre dentro de um m6dulo de
fu no . As exce~6es soo descritos em detolhe no pr6xima re~oo .

A tela Table Parameters/Exceptions Interface emostrada na Figura 19.7.

NesS1 tela voce pede:


Definir parimetros internes de tabela
Docurnentar as excecees

Passando pardmetros
as metodcs pan passar psrjmetros para modules de funliao sao maito semelhante s aquel es para passu parfmetros para sub-retin as enemas .
Par padract--.

Fi gurp 1 9 7

Os pargmetros de expcrtacfo e impona~ao sao passados po r valor.

A tela Table

as parametres de altera~ao sao passadcs por valor e resultado.

Parameters!
Exceptions Interface.

As tabelas inremas sao p~sadas par refereacia.


Voce pode fazer com que a importacjo, exportac jio e parametre s de
alteraiiio sejam passades po r referenda, colocando um a m arca de verifica~io na caixa d e selecac Reference na tela Impo rt/Export Parameters (veja
a Figura 19.6).

o cc ncelto de um pordmetro de expo rtc c;o o sendo possado per valor

e um poueo esfranho poro a moiorio doe programadores . Pense desto

moneiro: quo ndo possod o per valor, 0 me m6 rio porc um pcr e rnet-c
de exporto~c o e definido de ntro do m6du lo de fu~ao. A instT:v ~o o
endfunct1 on ccpic 0 volar do po rdmetro de exportoc;oo de dentro do
m6du lo de funlioO para a vori6vel ofribuldo a ele no progroma de
c:homodo. Se a instruo endfunct 1on noo for executodc (porex emplo,
se voc e deixa 0 m6clulo defunc;o o ono rmolmenfe ufilizando a instru~oo
rai se ), 0 volor noo co piado e Q vcrievel do chomodor permc nece
lociterodc.

Voce digiu 0 nome do parimetro na primeira coluna e os aeriburos do


parimet ro nas colunas restantes. Digit e urn parimetro por linha.

607

Oil19, MDDUUlUZA(AO,M6DUlOS DE fUN~ D, PAm1


"_"".,r,.--'1'"~"I:,~Id'
:,;~.:;ijt:."H:::D~A.:cE~M~11:.D:::r:AS:;::A::'~AP,,'",-4----------------------~--l_--------------------=:::.:::::=~:::::==:::'::3:=='-'
609

.~1r-r'

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

'F

d
dos
Utiljzondo porometrosigito
as se noo d llgito d as
Como as sub-retinas, os parametres dem6dulo de fun!ja.o podem ser digitados
au nio digitados. A digita!?o funciona para m6dulos de fun!jio da mesma
rnaneira como fun ciona.para sub-retinas . Os parametres Ilia digitados adotam
tcdas de suas caracrerfsticas tecnicas cia passagem de parimctro. Por exemplo,

se a pargmetrc passadc

e do

tipo c, tendo a comprimento 12 e sendo a

parimmo de m6dulo de fun <;,o nao digitado, 0 parimetro de m6dulo de


fun~o toma-se tipo c com comprimento 12.
Parametres digitados para m6dulos de fun!jio seguem as mesmas regras
que parimetros digitados para sub -retinas. Hi duas maneiras de especificar
parametres digiudos na tela Impo rt/Export Parameters:

Especificar um tipo de dado de ABAP/4 na coluca Reference Type

Especificar 0 nome de uma estrutura de DDIC au componente deuma


.estrutura de DDIC na coluna Reference Field

Voce nao pod e ut ilizar as dois meeodos ao mesmo tempo para um Unico
parimetr o . Voce deve utilizar ou urn ou outre.
A o utiIizar 0 prime iro me todo, simplesmente especifiqueum tipo de dado
de ABAP/4 n a cc luna Referen ce Typ e na tela Import/Export Parameter,"Po r
exemplo, na Figura 19.8, pl e p2 sao paramet res digirados que tern urn tipo de
da do definid c 0 0 ABAP/4 como i (iaceiro} , P3 tambem e digitadc, ten do um
tipo de dado p, 0 tipo i e um tipo de dado de co mprimectc fixo e p ortanto
tern urn comprimento de 4. a tipo p eurn tipc de dado de comprimento varhvel
e assume 0 comprimento e 0 mimero de casas decimals do pardmetro que e
. passado para ele.
Ueilizacdo 0 - segundo metodo, sim plesmente di gite 0 n ome de uma
estrutu ra de Data Dictionary na cc lun a Reference Field. Os parametres sao
defmidos como se voce tivesse ut ilizado a adiC;ao 1i ke na instruC;a~ fom em
uma sub-retina enema.
a s paramerro s tamb em podem ser opcianais e a eles podem ser fomecidos valores-padrao. Para fazer uma importaC;ao de parimetro opcional, coloque
urn marca de verifica~a na coluna Optional (veja a Figura. 19.7). Se m er uma
imp ort ac;ao de parimetro c pciccal, voce nao ted de atribuir names a de na
instruc;ao cal l funct i on quando cham ar 0 module de func;ao. as parametres
de exportacio serio sempre opcionais. Por isso, eu quero dizer que voce nao e
obrigado .a codificar nenhuro pargmetrc de expona~o na instrucao call
function. Por exemplo. se 0 modulo de fun~o z_xyz retoma ues parimetros
de exporta~io, el , e2 e e3 e voce quer s6 e2, en tia 56 codifiqu e e2 na instruC;io
.cal l function. Simplesmente omita 0 resto .
Para atribuir urn valor padrao para urn parimetro de imPOrta~ao, digite
.
um valor na caluna Proposal, cenifique-se de colo c.r as valores de caract ere
entre ispas simples. a s names de variavel sy tambem sio permitidos. Se voce

especificar uma propcsta, 0 sistema automaticarnente colocard urna marca de


verificac;i o na coluea Optional.
.T odos os parlmetros que voce define na interface eambem aparecem na
pan e superior do c6digo-fonte dentro de comentirios especiais. Cada linha
especial de comentirio comeca com os caraceer es "", Toda vez que voce altera
a in terface a sistema automaticamente atu aliza esses comentarios especiais para.
refletir suas alteracoes.

Nco a ltere nem exduo .esses co mentOrios; eles sOo gerod os palo
sistemo. Se voce os alteror, 0 m6d ulo de 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.

3 write: I ' Bef ore Call' .


4 call funct i on ' Z_TX_1901' .
5 wri t e : I ' After Call' .

610

O~ l,,"OOUlARllA(l o,MOOULOS DE FUH\IO. PAITE 1

611

AP' EH OA EM . l 0lA5 ABAP/'

Utilize a ins tru Cjio call f uncti on para transferir controle para urn m6dulo de unCjao e especific ar puimetr os. A Figura 19.9 ilustra como as pao.
rimetros sao passados e recebido s do m6dulo de

o c6digo na Listagem 19.4 produz est>. su da:

funcsa

B ~fal'1! Call
Hi f rom Z TX 1901

After Call

IlI.luSl ~

A Iinha 4 transfere controle para. 0 ccmecc de modulo de funlSi a


2_ tx _1901 . Nesse exemplo, 0 m6dulo de funljia exine dentrc do grupc
de run"o ztxe, sap! atxe e0 program. principal desse grupo de fun" o
e age como container para z_t x_1901.

Figura 10 9
Esta figure ilU5fJ'(J
CCIT10 05

data : v1, , 2, ,3.

par6metrDs

possodos e
recebidos do m6dulo
de fun;oo.

sOc

para valores exportodos pa re 0 mOdulo


de func;60' 0 atribuiQio e do dlreito pore
o esquerda.
para valores importodos pora 0 m6d ulo
de fun o, a otribuio Ado esquerdo poro
o direi'o.

0 ccdigc dentro do m6dulo de fun"o executa.


A Ultimalinha do m6dulo de fun~o reto rna 0 conerole pan a instnl~o
call function. 0 processam ento continua com a pr6xima instru/iao
depcis call function.
.

Siotaxe para a iostrUl;QO call f unct j On


en
Esta e a sintaxe para a in stru~o cal l functi on:

Z
:a::-

,...

><

call f unct ion 'F'


[exporting pl '" , 1 . . . ]
[1mport t ng pZ .,Z . ]
[changing

[tables

p3 r3 ]
p4 it .. . ]

[excepti ons xl n [other s n] ] .

onde:

F e 0 no~e de modulo de funljao.


pI a p4 sio as nomes de parfmetros definidos na int erface de modulo

de fun,ao.

.'

vI a v3 sao as variaveis au nomes de strin g de campo definido~ dentro


do programa que chama.
.

euma tabela interna definida dentro do programa que chama.


n e qualquer inteiro literal; n nio pede ser urna variwel.
xl eurn nome de excecso levann dc dentro do m6dulo de funtSao.
tt

names de par6metro

o esq uerda de _

vari6veis
0 direita

Na instru~o call functi O"J exportatS0es e importacoes existem do ponto


de vista do pro grama. O s valores que sjc exportados par call funct i on sao
import.dos pelc modulo de fun"o. Os valcres expomdos do m6dulo de
funfiao sao impo rta dos pela instrut;i o call function.
A esquerda do operad or de atribui t;ao (-)J esta.uma lista dos nomes de
paramet ros defmid os na int erface do m6 dulo de funt;io . A dir eita, esti o as
variiveis definidas den tro do programa de chamada. A atribui~ao depois de:
export; ng ocorre d~direita para a esquer da.. A atribuiCjio depois de import; ng
ocorre da esquerda para a direita. A atribuit;io depois de changing e tables sjo
bidirecionais. Antes da chamada, a atribui~ao 6 da direita para a esquerda. No
retorno, 0 valor de retorno e aeribuldo cia esquerda para a direita.
Vamos utilizer a Figura 19.9 como urn exemplo. Quando voce chama 0
m6dulo de funtSao Z_XXX, a valor de varidvel v1 eatribuldc ao parametr o p1 e 0
valor de varii vel v2 e atribuid o a p2. 0 ccntrcle entao 6 rransferidc para 0
m6dulo de run , ao. N o retorno, 0 valor de p3 e atribufdo a v3.

Neste ltvrc, 0 ferme "pa rflmetres de importoo" por si mesmc (se m


referendo , se far do ponto de vista do progroma a u m6d ulo de func;6o)
refere-s e 0 por6metros impo rtodos no m6du lo de funo.
termo
"parametros de exportol1co se m uma referenda refere~se a parometros exportodos do m6d ulo de fun o.

Os seguinte s' pontos se aplicam:


T odas as aditSoes sao opcionais.
call f unct i on e uma instru tSao especrfica. Nao coloque pontos ou
virgulas depois de parimetro s ou Domes de excetSao.

0 nom e do m6du lo de funtSao deve ser codificado em tetras maru.sculas. Se for codificado em minusculas J a fuot;aonao sera localizada e urn
dump curt o acont eceri.

Exec uta o d o urn modulo de fuol;QO de exem p lo


Nesta se.l:?o, ilustrarei uma chamada para urn m6dulo de fun tS ao de exemplo
z_t x_di Y, que simpl esmente divide dais numeros e retorna 0 resultado d.a
divisio.

612

APREMOA EM 21 DIAl AUPH

A Listagem 19.5 cham. z_tx_di' e pass. parametres. A Figura 19.7


mosera a tela ImportlExport Param eters pan. esse modulo de fun~ao e a.
Listage m 19.6 mostra 0 codigo-fonee para ele.
.

EHTRADA~ Listagem 19.5 Utilizondo' a instru'oo call function com parametres


1
2
3

.I
6
7
8
9
10
11

report ztxl905.
parameters: apt type 1 defa ult 2.
. op2 type 1 default 3. .
data rslt ~y;J1! p dec1llllls 2.

,t

oper and 1
oper and 2
art"sult

call function 'Z_n_DIV'


exporting

pI
p2

- opl
op2

Na Lisragem 19.6, a linha 10 executa uma divisfc simples.

importing

p3

0 modulo de funl;jao "reeom e a con trole para a lic.ha 6 da listagem


19.5.0 valor de p3 eatribufdc il. varidvel rsll .

r sl t ,

12

13 write : / opl.

'I' . opl. I.' .

A linh. 6 transfere controlepara 0 m6dulo de fun"o Z_TX_D I Y. valor


cia vaxUvel opl ~ arribuldc ao parimetro de importacgc pl e 0 valor de
op2 ~ arribuldo ao pardmetro de impcreacac p2. Na tela Export/Import '
Parameters, urn Reference Type eespecificado para. esses pargmetros,
o que as terns parfmetros digitados. Como esses parametr es sao
digitados, eles nao obtem seus atributos tecnicos de pI e p2. Em vez
. disso.os tipos de clados de opl e op2 devem corresponder aos tipos de
dados de pl e p2. opi e op2 sao definidos como inteiros, po n ant o os
tipos de dados correspondem. P3 ~ tipo Pieurn parimetro parcialmence
digitado. Ele obtem seu comprimento e ruimer c de de cimais de rs lt.
Os vaJores de opl op2 sio transferidos para 0 m6dulo de fonlj.ao e 0
controle e transferido pan a linha 1 daListagem 19.6.

rslt .

A liaha 13 escreve

fKIDDA ~ UstClgem 19.6 0 c6digo.!onte pora 0 m6dulo de run,co z_tx_di'

l Local i nterlace:

."'-

IMPORTING
. VALUE(Pl) TYPE I DEFAULT 1
VALUE(P2) TYPE I
EXPORTING

C[jendo um modulo de. fu nc;a o

VALUE(?3) TYPE P
fr

__ __

__

10 ,3 ,1 / ,2 .
11 endfunction.

o c6digo na Lisragem 19.6 echamado da linha 6 da Listagem 19.5.


o c6digo na Listagem 19.5 produz esta saida:
2 /

result adc da divisio.

Pressione 0 botoo Pattern no tela AW/4 Editor. Edit Progrcm para


inserir automaticomente 0 instruo _cal1 f unct io n em seu c6digo.
Voce sera perguntcdo sobre 0 nome de m6dulo de func;6o e ovtomaticci"niente ele coclificora 0 lodo esqverdo de todos as atribuies de
porometrode inte~ce pore voc6.

1 function z_tx_dh .
2 . ... -- ------ --.----- -----.-.-. ----__.
4
5
6
7

Utilize

SCRHHo.M~ Inide a Scree~CC!m "Howto Creote.o Function Module- cgorc.

D. tel. de ABAP/4

Developm ent Workbench, pre ssion. 0 bode


Function Library na barra de fem..menus Application. A Fun ction
Library Initial Screen emostrada (veja a Figura 19.3) .
2. Digite 0 nome de seu modulo de funl;jao no campo Fu ncti on Module.
nome deve comeear com Y_ ou Z_.
3. Pres~ione 0 batao Create. A tela. Function Mo dule Cre a.te: Administration e mostrada (vej Figura 19.10).

1.

A linha' -4- define uma varidvel nomeada rs lt ripo p com duas casas
decimais.
.

seguinte procedimento para criar um m6dulo de fun~ao. Para um

z_tx_di Y. Inicie 0 sen z_ - dt v e coloque-o em gropo de fun~o z a Qembrese de subscituir 0 com as dois caracteres que voce escl utilizando p~
identificar seus programas).

0.67

Na Lisragem 19.5, as linh as 2 e 3 defiriem duas varifveis, op1 e op2.


C om o essas varidveis sao definidas. utilizandc a instru~ao par amet ers,
o ususrio ~ solicitado a digiur valores para. elas quando 0 programa e
executado.
"
.

exercfcic, siga este procedimento e erieurn m6dulo de funl;jio exatamente como

~.

614

DIA 19, MODU1.4RI1A~ O, MaOUlOSDEFUH~D. PAm 1

APREMDA EM 21 DIAS A8A P/4

615

II

Figu rn 19 10
Esso ea tela
Function Module
Crecre:

4. Digir e 0 nome de urn gropo de fun~o no campo Function Group.


. n ome de grup o de fun~ao deve ter de quatrc caracreres de comprime n ta e deve comecar com You Z.
5. .D igite urn 5 no campo Application. Esse campo e utilizado para
indicar qual a :irea de func;ao que utiliza a modulo de fuoc;ao. Nessa
funcionalidade nao e utilizada por nenhuroa area fuocional, trata-se
simplesmenre de urn exemplo, eneao qualquer escolha servird, (5 .

Administration.

indicaque a m6dulo de fun'ia,o contem funcionalidade necessariapara


a Basis.}
6. D igite uma descricao do m6dulo de funtj3.o 00 campo Short Text . 0

conteudo desse campo evista quando se exibe uma Iista de m6dulos


de fun,ao.
7. Pressione

ba tao Save na barn de ferramentas Application.

8. . Se a grupc de func;ao ji mio existe, urn pop-up informard iS50 a voce


e perguntard se voce quer cria-lo. Pressione 0 batao Yes para criar a
grupo de fun~ao. A caixa de diilogo Create Function Group aparecera, Digite uma descricl o no campo Short Text e pressione a bono
Save. A tela C reate O bject Catalog Entry aparecerf. Pressione 0
botac Local Object. Voce voltara para a tela Function Module Chango: Administration.

Agora stria urn boa hora para criar u:". pro~a de AJ3AP/4 a fim de

chamar seu m6dulo de fun~ao e tentar exibi-lo. Cne um progr ama como 0
mostrado na Lisragem19.5. Dentro de seu programa, certifique-se de c?difica.:
o nome do m6dulo de fun~ao em letras maiusculas. Caso contrano, voce obtera
urn dump curto, porque 0 sistema nio sera capaz de loealizar 0 m6dulo de

9. P ressicne a batao Source Code na bam. de ferram entas Applicati on.


A tela Functio n Module Edit sera exibida (veja a Figura 19.8).
10. Digite a c6digo-font e para seu m6dulo de funliaO. Nso altere as linhas
de comennrio geradas pelo sistema sob qualquer circuastjlncias! Seu
m6dulo de fun ljao pede ter urn erra de operacao se voce fizer isso.
11. Pressione a ba tao Save na barra de [erramentas Application. A mensagem Progr am xxxxx saved aparecers na barra de status na parte
inferior cia janela.
12. Pressione 0 borac Back na barra de ferramentas Application. Voce
volt ara para a tela Function Library Initial.
13 . Se voce quiser definir parametres de exportacio ou de impcrtacio,
s elecicne a batao de op~ao Import/Export Parameter Interface.
P ressione a batao Change. Aparecers a tela Import/Export Paramet ers (veja a Figura 19.6). Digite os nomes de seus parametres na
prim eira coluna e insira quaisqueroutras caracterfsticas desejadas para
cada pargmetr o. Quando voce estiver terminado, pressione 0 bene
Save e depois 0 bono Back.

14. Por fim, para ativar seu m6dulo de fun~ao: pressione 0 bono Activate
na barra de ferrarnentas Application d.a. Fun ction Library Init ial
Screen.

fun, ao.

.
Utilize 0 Object Browser perc lister as modules de fonr;60 que \ICC!
locol Pdv. ObjBd s e
pressione 0 botec Display.

criou. A partir do Obj ect Browser, escolha

Re_5umo

Ve cE pade utilizar a instru~ao include .pa~a dividir seu c6digo em


partes menores gerenciaveis. Os programas include :~m u:n pro gram a
do ripe t , Seu codigc ecopiado para 0 programa de mclusao no ponto
cia. instrucao i nclude e a substitui completament e.

Os modules de funliao sao unidades de modularizaliao com nomes


especificos que podem ser charnadosa partir de qualquer pr~~ama em
todo 0 sistema de R/3. Eles armazenam 0 c6digo que eutilizado par

mais de urn programa .


Urn gropo de funlSao euma colecao de prograrnas e tern uma est~tura
predefinida. Todos os n0I11:es de progr.ama dentrc do g~po contem 0
ID do gropo do funljao de quatro caracte res.

616

DIA lUDDUlARIZA(iD, MODUInS DE FUN(iD,PARlE 1

APR EN DAEM21 DIA S ABA P/~

ainda muitas em utilizaclc no sistema de R/3. Tamb em e mais facil


ent ender modulo de fumiao se voce soub er como as sub-retinas
extemas funcionam. Em vez de sub-retinas externas, utilize medulos de funt;io. include deve ser utilizado para simplificar a
estrutura do Sell programa e agrupar componen tes sem elhant es.
Eles nac devem ser utilizados como conteineres para c6digo
reutilizsvel que ~ inc1uido em rmiltiplos pragrama s. P ar exempl o,
voce pode colocar todas as declsracoes de seus dados em urn
i ncl ude, seus evento s em outre, suas sub-retin as em urn terceiro
e suas chamadas para modules de fun~ao em urn quarto.

A interfa ce de urn m6dulo de funfjao contem as definicoes para .


parametres de impcrtacao, expcreacso e alceracao, assim como a
documentacao para excecoes configuradas dentro do module de
fun~ao.

Parametres digitados e njio digitados pcdem ser especificados e passados por refersncia, p er valor au por valor e resultado.

I Fa~a
Utilize possoge m pa r refe ~ ncjo pore
pardmetros de importOl;fic . Emois
efidente . Ten ho cuidado quando
uti Jiz6~ lo co m param etre s de exportocdo.
Os volores de pordmetros po r referend a
seo cltercdce imediotomente no
cham ada. Se voce alteror parametres de
exportccec antes de emitir 0

instruc;oo

configurcdo, voce retc rncre , mas as


vclc res j6 tere c side olterad os no
progrc mo de chama da .

Oocumerite todos os excecees no


interface de m6dulo de func;oo e
documente todos os pon5metros no
componente Documentotion do m6dulo
de funJioo.

Nao a ltere as coment6rios gerodos pelc


sistema no.porte superior do c6digo.fonte
do m6dulo de func;oo.

reutilizar urn existente?

Nao importe vclcree de que voce n60


precise de urn m6dulo de func;oo.
Simplesmente cmitc importoc;6es noo
necess6rios do instruc;oo cal l functi on.

Nao utilize stop, ext t ou check dentro


de um m6dulo de func;oo. (check e ext t
nee re presentom problema se estiverem
dentro de um de loop no interior do
m6dulo de func;oo.)

Solve seus dodos de teste, de 'modo que


voce posse testor novomente seu m6dulo
de fvnc;oo depois de modificoc;6es que
utilizom os mesmos dodos.

Como decide em qual gropo de fun~ao colocar urn novo


m6dulo de fun~aa? Quando dev o criar um nov o e quando

Coloque m6dulos de funt;io que tem fun cionalid ade semeIhan te no mesmo grupo de fun4j:ao. Par exemp lo, vo ce pede
colocar todos os m 6d ulos de funli3.0 que calcularn depre ciacac
em urn grupo de fun<;ao, todos os qu e executam fu n4j:oes de
calendaric em outro gro p o de fun4j:ao e aquel es qu e ofere cern
interfaces de comunicacao externas em urn terceirc.

Wo rkshJ./.
oj.L
p

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

o Wor kshop

oferec e duas maneiras de voce verificar 0 que apr endeu oeste


capitulo. A se<;ao Teste oferece perguntas para ajudar a solidificar seu enrendimento do con eea do abordado e a se4j:ao Exercfcio permit e que vo!=c prat iqu e 0
que sprendeu. Voce pede encontrar as respostas as perguntas do teste e aos
exerclcios no Apendice B, "Respostas as pe rguntas e aas exercfcios".

Teste

P&R

Co mo decido se utilizo urn include, uma sub-r~tina interna


uma sub-rotina extema OU u~ modulo de fun~o para implementar meu c6digo?
Se. ~ c6digo nao fa.r u:ilizado par n enhum outre programa,
,utIlIze u ma su b-rotma mterna. Se 0 c6digo pode ser util para
outros program as, utilize urn m6dula de funliao . Voce nao deve
criar ~ub.rotinas externas . Elas s6 foram abardadas no capitulo
antenor para que voce soubesse como ut,iliza-Ias, porque ha

1. Verdadeir o au Falso : Urn pargmetrc de imporracao qu e tern uma


proposta e semp re opcional.
2. Ve.rdadeira au ~a1so: Tados as parametre s de exportaca c sao opcionars.

Exercfcio 1
U tilize a fun<;ao T est dentro da Function Library para testar 0 m6dulo de
fun,ao PO PUP_WITH_TABLE_OISPLAY. D epois de te star esse m6dulo de fun~ao,
examine 0 progr~a. a seguir e fa<;a urn progn6stico do seu comportamento.

617

...........

618

""N D' EM 21 DilS 'Bl P/~


report zt x1910.
dat a: be~1n of it occurs S.
data{lO},

end of it.
result (lO}.
perform: f111 tabl e tabl es H,
call-fin ta bles i t changing result .
writl!!! : I 'Result- . res ult .
form fill tabl e t abl e s it 11ke i t.

move- 'Sel ect' to it-data. append it .


move ' One'
t o it-data . append it.
move 'Opt10 n' to i t - data . append it .

endfonn.
form call fm ta bles i t changing result .
call function ' POpup_WmtTABLE_D ISPLAY'
1 ~o rt 1ng

endpos col " 30

endpos row

.. 30

startpos_col = 1
startpos _row .. 1
t1tletut

uporti ng
ctctse
tl.bles
valuetab
endfonn .

.. ' Look Ha, a Wi ndow'

.. resul t
.. i t .

Modularizaicio: modulos
de funicio, Parte 2
Depois de conduir este capitulo, voce sera. ca.paz de:

Entender as componentes e a estrutura de urn grupo de fun~:io


Definir dad os globais e s~b-rotinas dentro de urn grup o de fUn~ao

Definindo dodos globais para m6dulos de


fun~60
NOlO...

Da is tipos de dodos

globois podem ser definidos pore um m6d ulo de func;oo :

!ElMO ,.
As defini~6es de dad os colocadas no tope de i ncl ude sa o acessrveis a
partir de todos os modules de funliao e sub -rotinas dentro do grupo.
Esse ripe de dado global e persistente entre chama das de modulo de

func;ao.
As defiaicees de dad es den tro da interface sao conhecidas apenas a
partir do m6dulo de funliaO. Se a interface for definida como in terface
global, as definicoes de paxametro sao tam bem conh ecidas dentro de
todas as sub -retinas que 0 m6dulo de fun~o chama . Esse ripe de clados
globais nao epersistente ent re chemadas de m6d ulo de funli ao .

nllp ://~.compus.CDm.br

~~~

620

~~~

.a_

A'IE",A E' 21 DIA S ABAP/'

Os dados globais definidos dentrc da parte superior de i nc1 ude sao


acessfveis a partir de todos as modules de fun~ao dentro do grupo. Eles sao

analogos as definil$oes de dadcs globais na parte superior de urn programa em


ABAP/4.
Os parimetros definid os dentro de uma interface global sao acesslveis a
partir de codas assub-retinas chamadas do modulo de fun~ao . Elessao anilagos
is varifveis definidas dentro de uma sub-re tina que uriliza a instru~ao lo cals.
Os pa.clmetros defmidos dentro de uma interface local sao inacessiveis a
partir de sub-retinas chamadas do m6dulo de funCiaa. Eles sao analogos as
varisveis definidas dentro de uma sub-re tina que utiliza a instruc;:ao data . Por
padrao, as interfaces sao locais.
Para tornar global um a inte rface, a partir da tela Function Mo dule
Ch ange: Import/Export Parameters, escolha 0 caminho de menu Edit-Globalize Parameters . Para toma-la local ncvamente , escclha 0 caminho de menu

Edit-Locilize Parameters.

~o

Se um pcreme trc com 0 mesmo nome existe em dois m6d ulos de


func;oo dentro de um grupo e as d uos interfaces sao globois, as
definic;6es de dodos desses pa rametres devem ser identicos.

D~ 2UDDUURIZA(.iD, .ODULOS DE FUH(AD. PARTE 2

,.

10 f'~o...
~c;;.~111 f11I;;;I;2-. - -- - - - - - - - - -- - - - - -cal l functfon 'z TX 2002'
expcrtt ng
p_i n
. parvU n
exceptions
oth er s 1.
endform.

11
12
13
14
15
16
17

18

is f';orm
;;;-:c;;.:l111_'fm:;I~3-.- - - - - - - - - -- - - - - --

20
21
l2
23
24
25

irport1ng - p_out fl
excepti ons
oth ers 1.
endform.

ENIllDI"'. Ustagem 20.2 Este

t errmnar.

Os dados globais definidos fazendo a interface global s' o reinicializados


toda vez que 0 m6dulo de fun!jao e chamado.
As listagens 20.1 a 20.4 ilustram a persisrencia de dados globais definidos
dentro de urn tapa include.

EHTlADA~ Listagem 20.1

Este prog romo ilustrc a persisfencio de do dos globois

5 per fom: cal l _flIlIl ,


6
call _fml3.
7 write: I' tl . ', fl.
8

e0

codigo-fonte do primeiro modulo de fun<;oo

cha modo do listogem 20.1

1 function z_t x_2002.


2
_-

__

.~

3 *Local i nt er face :

IMPORTl NG_ ".


5
VALUE(P_I N)
6
7 gl IUn.
8 endf unct fon.

mRADA.... Listagem 20.3 Este e 0 codlqo-fc nte do segundo m6d ulo de func;oo

'" chomodo de Ustogem 20.1

..---_.

1 f uncti on z_tx_ 2003.


2
--~
- -- ------ - ~-3 local in t erface:
EXPORTING
5
VALUE(' .OUT)
6

-----

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

- - - - ~

1 report zh2001.
2 par ameters pann_1n(l0) defaul t 'XYZ' oblig ato ry.
3 data fl( 10) val ue ' HUT'

- -

eau function 'Z TX 2003'

-- - ~-- --- ~

Dados globais definidos dentrc da parte superio r de in cl ude sao alocados


quando urn programs faz sua primeira chamada pan qualquer m6dulo de
fun~ao de urn grupo . Ele permanece alocado, contant o que 0 programa de
chamada permane~a ativo. Cada chamada subseqa ente para um m6dul o de
fun~ao dentro do mesmo grupo ve os valores prevics demrc da area global de
dados. Os valores na area global de dados pers istem ate 0 programa de chamada

. .....

7 p_out g1.
8 endf unct1on.

621

-.

~. .. .. .. .. .. .. ~ .. "!II' .. .. .. ..

.. __

.-.~

APRE NDA EM 21 nus lBAPH


622 L:;..::.:.=:.:::.:::..:.::::..:.:::::..:.:..

!Hl1ADA~

Listagem 20.4 Este e 0 incl ude supe rior para 0 grupo de fun~ao zt xb
- ztxb que cc ntern as m6d ulos de fun~ao mostrodos nos listagens 20 .2 e
20 .3

1 f uncti on-pool ztxb.


2 dat a gl (10) .

SAiDA ~
AHAliSE ~

o c6digo nas lista gens 20.1 a 20.4 produzem esta saida:


11 XYZ

Na Listagem 20.1, a linha 5 transfere contrale pan alinha 10, e a linha


11 chama 0 modulo de fun~ao z_t x_2002, que existe no grup o de
fun~ao ztxb . 0 valor de pann_in ~ pass ado para p_in . 0 contra le e

transferido para a linha 1 da Listagem20.2.


Na Lisragem20.2, a linha 7 move a valor de p_in para a varifvel global
gl. 91 e defmida na p arte superior de i ncl ude na linha 2 na Lisragem
20. 14. 1S50 a coma visfvel para todos as modules de fun\=ao, e 0 valor
epers istente entre chamadas para mod ules de fun~io desse grupo. 0
contro le retoma para a linha 11 da Listagem 20.1.

Na Listage rn 20. 1, a linh a 16 transfere 0 controle para a linha 5, depois


para a linha 6 e enta o para a linha 19. A linha 20 chama os m6dulos de
fun~ao de z_tx _2003, qu e tambem existem no gropo de fun~ao ztxb.
o controle etransferido para a linha 1 cia Listagem 20.3.

Na-Listagem 20.3,a Iinha 7 move o valor cia variwel globalgl para o_out.
91 ainda contem 0 valor colocado nela pelc m6dulo de fun~o anterior.
o controle rerorna para 0 programa de chamada e 0 valor eescrito.

Passando uma tabela interna para um modulo


de fu n ~ao
Passar u ma tabela interne para u rn m6dulo de funiiao segue as mesmas regras
que passar uma tabela intema para uma sub -re tina . Hoi dois meeodos.
Via a parte tabl es da interface. Isso eequivalence a passa-la via adi~ao
tables para a mstrut;ao perform.
Via a parte da interface i mporti ng ou changing. A primeira e equivalente a using na instruliao per f orm e a ultim a e equivalen te a changing
em perform.
Para retornar uma tab ela interna que se origina de dentr o de urn m6 dulo
de funt;io, utilize urn dos seguintes :

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

--/

D~ 2UOOUWJZA>\UODUlOS DE FUN>\D, PAm I

Passando lima ta be la interna via tab] es


Se voce utiliza a parte cia interface tables, pod e passar a tabela intema junta
com a linha de cabecalho. Se ela nao civer um a linha de cabecalho, automaticamente adquiriri uma dentrc do mo dule de fun~ao . as parametres tabl es
sempre sao passados por referencia.
Para utili zar esse metodo, a panic de F unctio n Library Initial Screen,
esco lha 0 batao de op~ao Table Parameters/Exceptions In terface e enno
pr essione 0 botao Change. Voc~ ven a tela Paramet ers/ Excepti ons. Na metade
superior cia tela sob a coluna T able Parameters, digite os names de para met re s
int ernos da tabela.
Se a tabela interna eurn tipo est ru tu rado , na coluna Ref. Structure, voce
pode opcionalmen te digitar 0 nome de um a estrutura DDIC. Somen te os
no mes de estrutura DDIC podem ser inseride s aqui. Se voce nao especificar
um a estrutura DD1C ness e ponte, nao sera capaz de acessar nenhum dos
compon entes da tabela intema den tro do m6dulo de funliao. Fazer isso caus ard
urn erro de sintaxe.
Se a esbela interna nao for urn tipo estruturado, voce pode inserir um ripe

de dado do ABAP/4 na colnna Reference Type.

Passa ndo uma tob ela interno via export; ng/i mpor t t ng
e changi ng
Se voce utiliza a parte da interface export ing / impor t i ng ou changi ng, voce s6
pede passu 0 corpo de urna tabela intema, Entretanto, essas partes da interface
permitem qu e voce escolha se pass a 0 corpo interne de tab ela par valor (0
padrao) au por referencia. Quando u tilizar esse metodo, voce deve especificar
table na coluna Reference Type.
As figuras 20.1 e 20.2 e as lisragens 20.5 e 20.6 ilustram as rnaneiras de
passagem tab elas intemas p~a urn m6dulo de fun~aC?

tmADA..... Ustag~m 20.5 Esse prog ramo passe tob elcs internos pore urn m6dulo
de fun~oo

1 report ztx2 005.


2 tabl es ztxlfal.
3 data: it_a li ke ztxlfal occurs 3.
-nao t em uma 'ltnhe de
4
it_b like ztxlfal occurs 3.
- nao tem uma linha dt
5 select fI up to 3 r ows froo ztxlfal in to t able ft _a.

7 call f unction ' Z_TX3 006 '


export i ng
8
9

i t!

A parte da in terface tables

10

importing

A parte da in terface exporting

11
12

tab le s

1t2

c a be~ J.lho

cabt~al ho

623

t':,"_ 0-

AAa~.A . a . . .

A.

_-.....,-

..,'t:' ........

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

,-

624

D~ 20,MDDULlRlZAyiD, llliOUlO5 DE FU.yiD, PARTE 2

"RE'DA EI 21 DIA' ABAP/4


l t4
changing
1<3
excepti ons
others

13
14
15
16
17

9 ."
10 It11 ...
12 It.

it_a
it_a[ ]

.~

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

13 data wa like lfd.


14 write I ' In :' .
15 loop at itl in to wa.
16
wri te I ve-t ifnr.
17
endl ccp,
18 loop at it3 into wa .
19
wa-l1f nr sy - t ebtx .
modify it3 fl"Olll wa.
20
21
endloop.
22 uj tne .
23 write: I ' IT4: '.
24 loop at 1t4.
25
write I it4-11f nr .
endl oop.
26
27 ult ne.
28 1t2[ 1 ,t1[ 1.
29 endfunctio n.

i.

18
19 write: I 'AFTER CAll ',
20
/ ' IT_A:' .

21 loop at ft_a into ztxlfal.


22
write I ztx lfa l-l1fnr.
23
endlo op.
24 ultne.
25 write / ' IT_B:' .
26 loop at it_b into ztxlfal.
27
write I zt xl fal -l 1fnr.
28

IT4 STRUCTURE LFAI


CHANGING.
VAlUE(IT3) TYPE TABlE

endl oop.

Porcmelefs mostro
como pa ssor 0 Corpo
do tobelo inlemo.

Fi g u r A 20

Parameters/
Exceptions mastro

~ ;0~ '

g;-;

;- x ;,_

~' .

. ~f?:.";'>r.-~ .._~,,":."'~ -::o::.-' 'G: ~~' ~'"

,,-

~~~i

"
.....g)':riI;:~,""eu;
....
"..- . ~ .-....

i;"

-' " . . - ~d"'IIC.,~ - -

com $UO Iinhe de


cabe~olho.

m
; "! ......"'~ ....,~."'.

EMTRIDI.... List agem 20.6 Esse. 0 codlqo-ionte para


chomodo 0 partir do Ustogem 20.5

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~~;~",",,~""

~.

1o~/a in/eme junlo

,n

~ ;- :

como cesser tlma

'lo-"..... '....,t.~...-it

~~::tjt'_'S*'.III'lo"-~~~

- L __

A telaTobIe

o c6digo nas lisragens 20.5 e 20.5 produz esta saida:

625

... . . . ....
""'""'

626

D~

APR EN DA EM 21 DIAS AWl'

SAioA ~

As linhas 26 a 28 mostram que


it_ b pelo modulo de fun,ao.

1020

AFTER CALL
IT_A:
1

,a, MDDUURI2A(lo, M6DUl OS DE fUN(lO. PARTE2 627

contecdc de i t_a foi copiado par a

Voce pode chamar sub-retinas externas e internes de dent ro m6dulos de


fun l$ao. As chainadas para sub-retinas externas para module s de funljao sao as
m esmas que para relat6rios.As sub-rotinas internas devem ser definidas dentro
de urn include especial. 0 F 01.
FOl ~ incluldo no grupo de fun,ao editando 0 programa pri ncipal e
inserindo a instrucac i ncl ude L!gid FOl. Assirn, a aljaO de dar urn clique duplo
no nome do i ncl ude 0 cria automaticamente. Dentro dele, voce pede colocar
sub-retinas acessfveis par todos m6dulos de fun(jao dentr o do grup o. Ha,
entretanto, uma maneira mais facil.
A maneira mais facil de definir 0 F O1 e codificar sua chamacia para a
sub-rotina e entfio dar urn clique duplo no n ome de sub-retina na in st ru C,jao
perfo nn. 0 procedimento a seguir ilustra esse processo .

2
3
IT_B:
1000
1010
1020

Na Lisragem 20.5, it_a e it_b sao tabelas intemas sem linhas de

cabecalho.
A linha 5 coloca tres linhas em it_a.
A linha 8 passa 0 ca rpo de ; t _a para i tl por valor, para i t3 po r valor
e resulrado, e para 1t 4 per referencia com linha de cabecalho (it4
adquirira um a linha de cabecalho dentro do module de fun,ao).

~a Listagem 20.6 e dentro do modulode fun~ao, ; t1 e ; t 3 sao c6pias


lD.~~pendentes de ; t _a. A linha 13 define urn area de trabalho wa para

u tiliza cso com it1 e i t3 porque estas njio tern linhas de cabecalho.

As linhas 15 a 17 escrevem

conteudo de it! urilizando a area de

t rab alho wa .

As linhas 18 a 21 modificam 0 conteudo de i t 3. Essa ta be1afoi passada


por valor e resulta do, entao 0 conteudo do original sera alterado
quando a instru cao endfuncti for executada.

on

As linbas 24 a 26 escrevem 0 conteudo de it4. Note que a linha 25


acessa urn componente de it. Isso s6 epo ssivel porque a coluna Ref.
Structure na tela Param eters/ Excep tio ns contem 0 nome da estrutu ra
D D IC 1fal. IS50define a estrutura de it dentro do m6dulo de fUnlfaO .
Se acoluna Ref. Structure esnvesse em branco, urn erro de sintaxe teria
ocorrido na linha 25.
A linha 28 copia

- .-

D efin ind o as sub-rotinas em urn grupo de f u n<jo o

1010

Na Listagem 20.5, as linhas 21 a 23 mostram qu e 0 conteudo de ita


foi alterado pelo m6dulo de fun,ao.
-

Ill:
1000
1010
1020
IT4:
1000

ANALISE ~

. --.

conteudc de itl para i t 2.

A linha 29 copia 0 conteudo de it3 de volta para i t _a no programs de


cham ada e 0 controle retorna para a chamada.

s(REEMCAM~ lnlcie c ScreenCom " How to Create Subro vtines with in a Function G roup" agora .

1. Inicie a partir da Function Library: Initial Screen.

2. Selecione 0 bono de 0piSao Source Code.


3. Pressioae a botao Change. A tela Function Module: Edi t emostrada.

4. Digire uma insrrucao perf orm no c6digo-fonte do modulo de fun~ao.


Por exernplo, perform subl.
5. De urn clique dup lo no nome da sub-retina. Nesse exemplo, voce
daria urn clique duplo em subl. A caixa de dialc go Create Object
aparece, perguntando se voce quer criar a su b-retina.
6. Pressione a botao Yes . A caixa de dialogo C reat e Subroutine aparece.
o nome de sub-rotina aparece no campo de Subroutine. 0 nome do
include l!gtdfOl aparece na caixa Inclu de Choice, e 0 b otso de 0Pljao
a esquerda dele automaticam enre ~ selecionado. .
7. Pressione 0 bono Co ntinue (a maroa de verificacao em ver de) . Uma
caixa de dialogo Warning aparece, in dicando qu e 0 pro grama principal
sera modificado e uma instruiSao i ncl ude l! gi df Ol sera inserida nele.
8. Pressione 0 botao Continue (a marca de verifica(jao em verde) . Vo~e
ve a caixa de dialogo Exit Editor indicando qu e seu codigo-fonte
alterou e perguntando se voce quer salver as aheracoes.

~&A " A A A A" a a~a


628

.".a..-.. . . . .

a .I I_ X.,,~,--; w -a ....... I I a ~.~

HRENDA EM, 1 DIAS ABAP /4

DIA ' U DDtllARllA\AU ODlJlOS DE flJN\AD, /AiTE, ,

9. P ressione 0 batao Yes . A tela Function Module Editor e mcstrada.


Voce agora esta.editando 0 FOl . Codifique a sub-retina aqui.
10. Quando tenninar a co dificacsc de sua sub-re tina, pressione Save e
depois Back. Voce vol ta para 0 c6digo-fonte do m6dulo de fun )ao

code comegou.
Para ver 0 include que acabou de criar, rerome para a tela Function Library

mensagem Function module has been r el eased tambe m aparecera n a part e


inferior da jan ela. Entretanro, se quise r alterar a interface, voc e s6 precisara
pressio n ar a bo rac Display C hange e ter a. permissac para alcera-lc de qualquer
maneira que quiser, Lembre -se, ent retanto, que voce nao deve fazer alteracoes
que po dem fazer com que programas existences termin em an ormalmente ou
resulte m em resu ltados diferen tes.

Initial. Escolha 0 batao de 0p/iao Main Program e pressione a batao Change.


Voce vera a tela Fu nction Module: Edit . N a parte inferior. aparecera a instru/iao
i ncl ude ljgidfOl. Essa instru/iao foi inserida pelo passo 7 do procediment o
aeima. Se voce dec u rn clique duplo nessa linha, veri sua sub -re tina,

Se voce a ddento lmente liberor um m6dulo de fun.;ao e quiser cancelar


a libe rot;60, v6 pam 0 tela Fundi o n Module Display: Administration,
pressio ne 0 bottio Display Change e escclho 0 cominho de menu
Functio n Modu le -Relea se-Can cel Releose. Depcis de escolher esse
cominho de men u, pressio ne e tede Enter para comp leter 0 processo
de cance!omento.

Liberandc urn modulo de fun\;oo


A fum;60 releas e od iciono um nlvel de profec;60 a interface de um m6dulo de
fun.;co protegen do-o de modifico~oo. Se tiverc ompletado o teste de seu m6du lo
de fvn.;oo, voce pede querer libera-/o pora indicor que e seg ura pora o utros desenvclve dores utilizor em seu c6digo. Fozendo tssc, bosicomente voce est6 prometendo noo oJtera r
os parametres edstentes do interface de nenhu.mo moneira que posso causer problemas
pora q uelquer progromo q ue che me seu m6dulo de fvn o. vccs est6 prometend o
estobilidede de interfoce.

MOVO

JEiMO

i.:.

Po r exemp lo, depois de liberar urn modulo de fuD~aO, voce nao adicioDaria urn parameero obrigarorio, DaO alteraria as propostas e nem rem overia
urn pargmetro. Caso conrrario , quaisq uer chama da.s existente s para seu m6dulo
de fum;ao poderiam falhar ou funcio nar de maneira diferente.
Depois de liberar, voce ainda po de alterar a interface, mas precisa dar urn
passo extra para faze lo.
Para libera r urn rn6dulo de fU1?'~ao, utilize 0 seguinte procedimento.
scmNCAM~ lnicle a Sc~eenCom "How to Releose a Functio n Module- ogoro .

1. Comece na Function Library Initial Screen.


2. Esco lha

bono de op~ao Administration.

3. Pressione 0 borso Change. A tela Function Module Change: Administration ~ mostrada. No canto inferior direita cia tela, na part e
inferior da caixa Ge neral Da ta, voce veri Not Rel eased.
4. Escolha 0 caminho de men u Function M odul 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

Testando urn mOdulo de fu n\;oo


Se voce quiser testar urn m6dulo de fun~ao sem escrever urn programa
ABAP/4. vo ce pe de faz e-Ic utilizando 0 amb iente de teste den tr o daFunccion
Library. Utilize 0 seguinte pr ocedimento para acessar 0 amb ience de teste.
SCiHNWI.... Inid e 0 ScreenCom "How to Use the Test Enviro nmenf for Function Modules"
,. a go ra.
- --.

1. Comece na Function Library: Initial Screen. D igire

0 nome do
m6 dulo de fun~ao que voce quer te stae n o campo Fun ction Module.

Pressione

bo rao T est, Yoce veri a tela Test Environment For

Function Mo dules (mom ada na Figura 20,3).


3. Digite os parametres que voce quer forn ecer para 0 teste. Para.
preencher um a tabela in tema, de urn clique duplo no nome interne
de tabela. V ma tela sed mo strada, permitindo qu e voce digite as
dados na tab ela intema. (Se voce especificou uma Ref. Stru ctu re para
a ta bela intema, as colunas da. est ru tura serro mostradas.} Di gite seus
dad os e pres sione a teela Enter. Voc e voltara para a t ela Test Environment F or Function Modules.
4. Pressione 0 batao Execu t e na barra de ferram entas Application para
exectitar a m6dulo de fun~ao. Vo ce veti Tes t Function Module:
Result Scr een (veja a Figura 20.4) . A safda de instru~oes write dentro
do m6 dulo de func;ao aparece prim eiro. Na Figura 2004. You passed
A e a resultado de uma inStrUl;ao wri t e denn o do m6d ulo de fun~io.
Entao, a tempo gasto para executar a m6dulo de fun~ao (em micross egun dos ) e mostra do. Em seguicia, os valor es dos parametros
sao mostrados e tern do is valores : a de an tes e dep ois. Para parametrOS
changi ng, a valor "'antes" ~ mos trado primeiro e 0 valor "'depois

629

..............
630

_~~--

-- -

APiEM DA EM21 DIA5 ABAP"

DIJ. 2UDDUWIll>'. d'ODIlOSDE FUM>" , '.uTE 2

aparece embaixo dele. P ara parametres tabl es, as conreedos "depois"


ap arecem acima dos cccteudos "antes" (original). Na Figu ra 20.4, a
tabela inte rna i t cootinha duas linhas depois do pro tessamento e trSs
linhas antes . Para ver as conteudcs ant es ou depois cia tabe la intema,

Perc sclvor seus dodos de teste e/ ou resultados, pressione po'botOo Save


no tela Test Environment o u no te la Result. Para recuperor sues
lnfcrmccces salvos, pressione 0 bctec Test Data Directory em quolquer

tela . As seqaenc lcs de teste tcmbem podem se r ccos trurdc s utilizondo


o bctoc Test Sequence. .

de urn clique duplo em qualquer linha,


Figura 20

A tela Test

Environment lor
Function Module s.

Localiza nd o m6dulos de fun<;Cio ex istent es


Co mo mencionado antericrmente, a SAP fo rne ce mais de 5.000 gropos de
fun~o p reexistentes , contendo mais de 30.000 m6dulos de fun 'iao. Frequentemente, a funcionalidade que voce exige ji e abracgida per esses m6dulos de
funfiao fomeeidos p ela SAP - s6 eprecise lo calizar 0 corre ro . Para achar urn
module de fun~o existence, utilize 0 sistema Rep osit ory Inform ati on . 0
seguinte procedimento the mos tra como fazer isso.
SOHNUM~ lnicie 0 ScreenCom "Hew to Searc h for Functio n Modules oqom .

I. D. tela AJ3AP/ 4 Development Workbench, escclha 0 caminh o de


menu Overview -> Repository Infosys. Voce ve a tela ABAP/4
Repository Inf orm ation System mostrada na Figura 20.5.
Figura 20 5

Figura 20 4

A kla Test FundiOfl

Module: Result

A te/o 1VJ.4P/4
Repository
Infetrnotion System
como oporece

in;ciolmente.

mostro os yo/ore s
a ntes e depo is pam
os pa l'6metros

changinge

tables.

2. Expanda a linha Programming dand c urn clique no sinal de .di,ao


(+ ) a esquerda dela. U rna subirvore e mo strada embaixo dela.

631

632

I APRE MOAEM21 DIAl A'AP!'


Figura 20 6

A tela ABN'/4
Reposjtoly
Info rmation System:

Function Module
com os m6dulos de
UnCiao expostos.

DlA211: MOOULARIZAtA0: MOOUlOS DEfUHtAO, PARTt z

l,

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.

3. Expanda a linha Function Libra ry clicando no sin al de adi~ao (+ ) a


esquerda dela. U rna subarvore emostrada em baix o dela. Sua tela ago ra
deve se parecer com a Figura 20.6.

4.

De urn clique duplo na linha Function Modules. A tela ABAP/ 4


Repository Information System: Function Module emosrrada. Pr es.
sione o ba tao All Selections na barra de [erramen ras App lication para

exibir todos as possfveis campos de selecao. Sua tela agora deve


aparecer como mostrado na Figura 20.7. Essa e uma tela de selecac
em que voce pede inserir criteri os de pesquisa para localizar modules
de fun;ao. Todos as campos ndc diferenciam maiasculas e minris culas, com a excecic do campo Short De scription , que diferencia caixas
altas e baixas!
5. Para pesquisar urn m6dulo de fun<;ao, tan to palavras com o string s de
caracteres podem ser inseridas nos campos de p esquisa. Utilize + e Ie
como caracteres curin ga. + corresponded a qualqu er caract er e uni co,
e I;' correspondera a qualquer sequencia de caracteres. P a r exemplo,
digite *DATE* no campo Function Module. Isso Iocalizara todos os
m6 dulos de fun<;ao qu e contem os caracreres DATE em qualqu er lugar
em seu n0!TIe. Ou, voc e pode tanto digirar "Dare" como "dare" no
campo de descricto curt a (apenas uma string e perrnit ida nesse
campo ).
6. P ara digitar mais de urn valor para pes quisar, pressione a seta no fim
do campo. A tela Multiple Selection e mos tra da (veja a Fi gura 20.8).
a s valores que vo ce digit a nessa tela devem ser separados pa r OR.

7. P re ssion e a batao Options para espec ificar operadores de sele<;ao


como igual, difer ente, maior que, menor que e assim par diante. Voce
vera a te la Main tain Selection Optio ns, como mo strado na Figura
20.9. P ara ser capaz de espe cificar P att ern or Exclude Pattern , seu
valor deve canter urn caracte re coinci dence com 0 padrao: tanto +
como ". Pressione 0 ba ta o Copy para retomar pa ra a tela Multiple
Selection.

8. Na tela Mult iple Selection, pr essione 0 botao Comple x Selection. A


tel a M ult iple Selection e mostrada n ovam en te, mas dessa vez ha uma
barra de ro lagem n o lado direito e as campos Ranges aparecem (veja
a Figura 20.10) . Para especificar valores que deverac ser exclufdos cia
pesquisa, rol e para baixo e as digire dentro da caixa in titulada ...But
N ot (veja a Figura 20.11) . Esses valo res sao conhecid os como valores
excluldos ou , simpl esmente, excludes.

633

A& A AA AA

A~A

AA A

A~

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

634 , "fUND'" EM21 el..,s AUP/4


Figu ra 20 8

Figura 20 11

A tela Multiple
Selection.

A ceee ...&11Not.

."

Fig u r g 20 9

9. Pressione 0 batao Copy para capiar seus criterios de selctjao de volta


para a tela de sele>io. Voce volt t el. ABAP/4 Repository In form stion System e, se voce inseriu mdlripl cs criterios de sele~ao. a seta no

A ~Jo Maintoin
Selection Options.

fim da linha estari verde para mostrar que mais de um criterio -de
sde,'o existe (vej Figura 20.12 ).
Figura

2 0 12

A tela ABAP/ 4
Rep05itory

/nfonnationSystem.
A seta verde no fim

Figura '0

10

Atela Multiple
Selection com umo
barre de roJogem no
Iodo direffo e
camposRanges.

do linha m05tro que


mais de urn criteria

de seJe o existe.

10. Para comecar a pesquisa, pressione 0 bono Execut e. Os resultados


de pesquisa sao dererminados como se pesquisas separadas tivessem
sido [eitas para todos as criterics de inclusao, e tambem para todcs

... A.

636

AA

.~.A

A A ...
&

DIA 20, MOOUlAlJ2A(.iO, MODUl.Ol DE ru""D, PArTE I

APlENDA EM11 DIAl ASAP"

as resultad os OR. Emao, se a exclusac for especificada, eles serfo


aplicados em uma entrada depois da outra. Por exemplo, no campo
Short Desc ription. sup6e-se que voce tenha especificado as inclusoes
"Date" e "date" e"Update" e"update",Todasas descricoes que contem
"D ate" serso lccalizadas, e entac todas as descricces que contenham
"date" serac OR junto do prim eiro conjun to de resultad o: Logo. todas
as descricces que contenham "Update" sersc removidas e enuc codas
aquelas conten do "update" serfo removidas. 0 result ado conrera
st rings "Date" au "date" scm "U pdate" e "update". Voce vera as
resultados na tela Function Modules (veja a Figu ra 20.13). 0 num ero
de m6dulo s de un,;:o localizado e indicado na barra de titulo a
esqu erda dele entre parenteses.
11. Para exibir urn m6d uIo de func;ao, de urn clique duplo nele. A tela
Function Module Display: Documentation emostrada (veja a Figura
20.14). Essa tela mcstra a voce todos os parametres de interface e sua
documentaclo. Para ver mais sobre documentaqao, de urn clique
duplo em urn nome de paramerro (veja a Figura20.15). Para retomar a
dccumentacao deinterface,pressione 0 bo n o Back.Para retornar a lista
de modulo de funliao, pressione 0 botao Back novament e.
12. Para testar urn rn6dulo de funliao, coloque seu cursor nele e pressione
o batao Test/Execute. Voce vera a Test Environment Screen para esse
m6duIo de fun,;:n.

'.

- 'l4!l & . A & a & ~

F i gura 20 1 4

A tela Function

Module Display:
Documentation.

Nem tcdcs cs porametros tern doccmentocoo odicionol. Se 0


pcremetrc em que voc! deu um clique duplo 000 fiver mois doccmentao, nodo ocontecer6 quondo voca der um clique duplo nele.
Figu ra 20 1 ,

Figura 20 13

A docvm emo~Qo

A ~fa Fundion
Modules.

pa nimetro.

od id onol para urn

III!-

637


638

APREN" EM 21

eus ABAP /~

PIA 2UDDULlRIlA(AD,MODUlDS DEfUN\iO. PARTE 2 I

Se, quando voce olhc r no barre de titulo no tela Function Modules, 0


ncrnerc de m6dulos de fvnc;oo encontrodo for exotomente 500, enta~
prcvcvelmente tera ccesscdo 0 tomanho m6ximode listc. Retome pam
a tela de seler;ao e procure no compo Maximum No. of Hits. Se ele for
fombem de 500, voce estero acesso ndo 0 m6ximo. Voce pode ester
tenfondo oumentar 0 numerc maximo de ccessc, mas ;550 roromente
sem produtivo , porque

voce provo velmente noo !ere urno

listc inteiro

~~~~~!!1~~~;);!;~~!;!!!;!@~~

Figura 2 16
Esse e 0 modo como B~===
tela Function
Module Creote:

(:I

Adm inistration

oporece depais que


o m6du/o de fvno
foj criodo.

de 500 m6dulos de funr;60. Refine seus criterics de pesq uiso pa ra


reduzir a nCrmero de ocesso.

Explorando

OS

componentes do seu grupo de

un~Cio

D epois de criar seu primeiro m6dulo de fun~ o, utilize 0 seguinte procedimento e gastc alguns minutos para explorar a s componente s do gropo de
func;ao. Voce deve se familiarizar com a estrutura que acabou de criar.

SClHNWI ~ lnlciea 5creenCom MExploring the Components ofYour Function Gro up ogoro.

1. Comece na Function Library Initial Screen. Se jaeac estiver af digire


o nome de seu m6dulo de fun~ao no campo Function Module.
2. Escolha 0 botao de op ~ao Administration e entao pressione a batao
Change. A tela Function Module Change: Administration e exibida
(veja a Figura 20.16). N a parte superior da tela, no C:iUIlpO Function
Group, voce pede ver 0 ID do grupo de funr;ao a que esse m6dulo de
fun~ao pertence. N a extremidade inferior direita no campo P rogram,
voce pode ver 0 nome do programa principal para 0 grupo de fun r;ao.
No campo Include esta 0 nome do incl ude que conrem 0 codigcfonte para a m6dulo de fun~ao. 0 ultimo campo mosrra 0 status do
m6dulo de fun~ao: Active au Inactive. Pressione 0 botao Back para
retornar para a tela Function Library Initial.
3. Escolha 0 bono de op ~ao Import/Export Parameter Interface e entac
pressione a ba tao Change. A tela Import/Export Paramete rs e
mostrada . Pression e a bone Back para retorn ar a tela Function
Library Initi al.
4. Escalha a batao de op~ao Table Parameters/Exceptions Interface e
entaD pressione 0 batao Chang e. A tela Function Modu le Chan ge:
Parameters/ Exceptions emcstrada. Aqui voce pode inserir au alterar
parametres internes de tabela e na mes de exce~ao. Pre ssione 0 bono
Back para retomar.

5. Escolha 0 borso de op~ao Documentation e eneac pressione a ba tao


Change. A tela Function Module Change: D ocumentation e
mosrrada. Aqui voce pode inserir uma descricac curta para cada
parfmetro e excec;ao na interface. Pre ssione 0 batao Back para retornar.
6. Escolha a botao de op~ao Source Code e entia pressione 0 botao
Change. A tela Function Module : Edit emosrrada. Pressione 0 botao
Back para retom ar.
7. Escolha 0 batao de op~ao Globa l Data e entac pressione 0 batao
Change. A t ela Functi on Module: Edit e mosrrada. D essa vez,
entretanto, voce estara editando i nclude superior. Ob serve 0 nome
do i ncl ude superior na berra de tfrulc. Ele se adapts aconvencfo de
nomeacao 1fgid top, on defgide 0 nome de seu grup o de func;ao. Aqui
voce pode definir varisveis globais e areas de trabalbo tables que sao
comuns a todos as m6duJos de fun~ao dentro do gropo de funr;ao. Se
seus modules de fun~ao utilizam a instrucdo message. voce tambem
pode definir a classe pednc de men sagem [na instrucao f unctf onpool). Pressione 0 batao Back para rerornar.
8. Escolha 0 bors o de opcso Main Program e pressione 0 botso Change.
A tela Function Module: Edit e mostra da. Dessa vez, voce estara
editando 0 program. principal (veja a Figura 20.17). Observe que a
nome dentro da barra de nrulo comec a com sap1 seguido par seu ID
de grupo de fun~o. As duas ins truc;6es i nclude incorp~ram 0 incl udesuperior e 0 UXX no progr.ama princi pal. Dar ~m clique.duplo
no nome i nclude superior permitid que voce a edire, Pression e 0

639

640

.......L..A......._

..&...JL

a~

APR ENDA EM21 DIAl ABAP"

DlA2UDDU,","UIAD, MODULOI DE FUNIAD. PARTE 2

bcuo Back para retomar ao programaprincipal. Dar um clique duplo


em UXX exibiri 0 ccdigo-fcme de programa include - ele contem
as instrucoes que incluem as m6d ulos de funCiaO no grupo. Seus
no mes sao indicados dentro de comenedrics no fim de cada instrucio

641

Fig u r a 20 1 B

Um erro de sinloxe
detedocJ em tempode
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

~_' . H. :~-:-o;.~~~_ .~_ ;,1',. '~~:~

~- :;- 4 x "

"J 11 .); .. if .

..

;~

~.

II

;..~~~~-'_

!i-~d~~..~,",

'9i.1Iti;o ,~, . ~.... ..........

:w-... '.~_";;"

Denerc dessa caixa de diilogo SAP R/3 estio as informacoes sufi~ien~es


para descobrir a posi 'iao exata e a causa do erro. N a Figura 20.18, 0 pnmclro
campo concern 0 no me de programa 1ztxau02. Esse e 0 programa incl~de que
contem 0 erro. 0 segundo campo diz a voce que 0 errc oco rreu na linha 10.
N a parte inferior cia caixa de dialogo esta 0 erro real. N esse case, 0 erro Ie .
expected after P2-.
.

Para corrigir

erro, utilize a seguinte procedimentc.

... lnicie a ScreenCom -How to Fix on Error in 0 Function Module- oga ra.

5mENCAM~

1. Comece na ABAF/4 Edit or: Initial Screen (t rans;ujao SE3B) .


2. No campo Program. digite 0 nome de programa do prim eiro campo

da caixa de diilogo, nesse case Iztxau 02.


3. Pressione 0 ba tao Ch ange. Is50 mostrara 0 c6digo-font e de modulo
de fuoc;ao que conte m 0 erro.
t ion,,Vodee
4. Pressione 0 bone Check na berra de ferramentas APplicad
deve ver a mesmo erro qu e foi most rado na parte inferior a caixa e
Pora copter, renomear au excluir urn m6dulo de fu n~oo, utilize as
bot6es Copy, Re name, a u Delete no Fundion li brary: lnltlcl Screen.

Lo caliza ndo e corrigind o erro s em modu les de


f u n!;o o

A ma neira mais faeil de corrigir en-os ern urn m6dulo de fun~ao execu tar uma
ve['ifica~ao de sintaxe quando voce estiver dentro do m6dulo de func;aa. Voce

ped e fazer isso n.a tela Functi on Module Edit pressionando 0 bata o Check na
barn de ferramentas Application. Ate agora, voce 56 criou urn modulo de
funlji o, entac voce sabe por onde procurar se ele nia funcionar.
Entr etanr o, depo is de criar muit os m6dulos de fun~o. voce pe de termi nar na situaljio em que esta, chamando urn au mais m6dulos de func;ao dentr o
de urn grupo, com 0 sistema dizendc a voce que hi.urn erro desintaxe em algum

lugar. A mensagem de eITO que talvez vocevejaapareceem uma caixade didlogo


SAP R/ 3 como a mcstrada na Figura 20.18.

dialogc SAP R13.

5. Corrija 0 erro . Fr equen temenre, voce pe de simples~e.n~e presslOnar


a borac C or rect e a sistema aut omaticamente corrigtra 0 err o para
voce.

Confi gu ran do

valo r de sy-subrc no retorno

Normalmen re depois de retornar de urn m6dulo de fuoiSaO, 0 SIstema. automaticamente configura a valor de sy-s ubrc como zero. Utilize uma das duas
seguintes instrucoes para configurar sy-subrc para urn valor nao zero:

rai se

mess age

raising

Utilizando a instru(;fi o r aj se
_rat
. se para sair
.... do m6dulo de fun,ao e configure 0 valor de
U t ili ze a .mstrucac
sy-s ubrc no retorno.

A.
642

.- .

..

. ..

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

. .. ... . . . . . . . . . . . . . - . .
D~ 2'1. MODUWlL\(.i D,M6~ DE FUNIAD. 'AilE 2

APRENDA EM 21 DIAl ABUII

Sintaxe para a

instru~ao

r a'i se

CIl

A seguinte e a sintaxe para a instruc;ao raise.

raise xname .

10
11

12
13
14
15

onde:

xnume e 0 nome cia excecso a serconfigurada.

643

exceptions
er ror_a - 1
error_b 4
eTTOr_c - 4
othe rs 99.
write: I ' sy-subrt - ", sy-su brc,
I I vout - ", vout.

EMmDI~ U.lagem 20.8 Isla e a m6dula de lun~1ia chomoda do Listogem 20.7


Os seguintes po nte s se aplicam :
de ser pr eviam ente de finida em qualquer lug ar. Ela pede ter ate 30
caracter es de co mp rimen to . Todos as caracteres sao permitidos, ex-

1 function z_tx_2.0oa .
2 - -- -- --- ----- . ----- ------- ----- .--- -- -- -- -- -- -- -,-3 " " lo cal i nt er f ace :
4
IMPORTING

ceeo " ". e :.

xname ped e ser qu alquer nome que voce tenha composto, Ela DaD [em

-N ao coloque xnane dentro de aspas.


Q uando a.instru~o r at se eexecutada, 0 contrale retorna imediatamente
para a instIU~O ce11 function e urn valor e atribuido a sy-subrc baseado nas
excecoes que voce listou af. Os valo res atribuidos a parametres de exportacio
nao sse copiados de volta para 0 prognma de chamada. As list agens 20.7 e 20.8
e a F igu ra 20.19 ilustram co m o isso acontece.

9 c6d igo no m6dulo de fun~c o mostrodo no listogem 20.8 e meremente po ra fins de exemplo; normolmente tc rnbern haveria um c6digo
que Haesse olgum process omento real of tcrnbem.
F igura 20 19

;ns1ru~6o

raise .

coli function I Z
~
XXX: l
fundion Z_XlOI..
exceptions
raise error_b.
error_A ~ 1
= 2+- este valor e
~ .
error_B
other
... 3
otribuldo a
endfundron.

sy-svbrc

EHTUDA lrItrr.. U st ag em 20.7 Como config ura r 0 vclc r de sy- subr-c


". de urn m6 d ulo de fum;co
.
1
2.
3
4
5
6
7
a

it..,

"'''
'','''' .....'"
~~

rep ort ztx 2.007.


parameten panrL1n defa ult 'A'.
data vout(4) value ' I NIT' .
call funct ion 'Z_TX_ZOOB '
exporting
exname pann in
importing
pout. vout

VAlUE(EXNAME)

EXPORTI NG

xname DaO pade ser uma variavel,

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

Na Listagem 20.7, a linha -4 pega 0 valor de parm_i n e 0 passa para 0


rn6dulo de fun~ao z_t x_2007. 0 controle e transferido pua a linha 1
da Lisragem 20.8.
Na Listagem 20.8. a linh a 14 atribui urn valo r para 0 paramerro pout .
Esse parimetro e passado por valor. entao a altera~ao e apenas para a
defini~'o local de pout. 0 original ainda n' o loi modificado.
N a Listagem 20.8, a linha 15 examine 0 valor passadc via a parametro
exname. 0 valor e B, entao a linha 17 - raise e rror_b - eexecutada.
controle transferido para a linha 9 da List agem 20.7. Como a

. . -644

---

- -

- -

APiEHDA EM 21 DIAS ABAP'1

Se a excec;ao identificada depois de r-atsing for tratada pela instroc;ao


call functio n, uma men sagem nac e emitida para 0 usu drio. Em vez
disso, 0 conrrole retoma para a insrrucio cal' function e a exceliao e
tratada da mesma maneira que a instruc?0 rai se .

instruc io ra i se foi exe cutada, 0 valor de pout nio foi copiado de volta
para 0 pro grams de chamada, assim 0 valor de vout nio sera alterado.

Na Lisragem 20.7, 0 sistema varre as linhas 10a 13 :lte ele localizaruma


correspondencia para. a excer;ao identificada pela instrucio ra i se
recem-executada. Nesse case, ele esti procurando error b. A linha 11

corresponde ao erro.

Na linha 11, 0 valor no lade direito do operador de igual e atribuldc a


sy-subrc, 0 controle entia e,transferido para a linha 20.

o nome especial ot hers

na linha 13 cia Listagem 20.7 corresponded. a

todas as excecoes ni o explicitamente identificadas na adir;iO exceptions. Por


exemplo, se a linha 7 cia Lis tagem 20.8 foi executada, a cxcer;ao error_x seria
configurada. Essa exce!rao nio foi identificada na Listagem 20.7. entia others
correspondera e 0 valor de sy -subrc sen configurado como 99. Voce pede
codificar quaisquer cameros que quiser para c6digos de retorno de excecao.

Sinlaxe para a

Ul

. Se urn parimetro de exponac?o fai passadc p ar valor, depois de urn rai se


seu valor permanece inalterado no programa de chamada, mesmo se urn valor
river sido atribuldo dentrc do m6dulo de func;io antes de a instrucao rai se ter
sido executada. Se 0 p arfmerrc foi passadc por referencia, ele sera alteradc no
cha mador (ele tern 0 flag Referenc e ativado na tela Export/Import Paramet ers}.
Esse efeiro emost rado na List agem 20.7. 0 valor de pout eaherado no m6dulo
de fun~ae e, se uma ins trucac rai se for executada, 0 valor alt era do me e
copiado de volta para 0 programa de chamada.

onde:
teo tipo da mensagem (e, w, 1, s, a au x).

e0 nutnero da mensagem.
(ee) e a c1asse da mensagem.

'11 e '/2 sao o s valores a serem digitados no texto cia me nsagem.

nnn

Utiliza nd o a instru IYiia me ss age ... rai si ng


~ instt11C;io message. . . raisi ng t ern dois modos de operaliao:

Se a exceliaOnomeada depois de r a i si ng nao for tratada pela instruc;ao


call f unct i on e others nae ecodificada, umamensagem eemitida para
o usuari o.

e0

nome

cia excec;ao a ser configurada.

o seguintes pontes se aplicam:


xnome e urn nome de excecac como descrito para a in struliao ra 1se.
Se a classe de mensagem nao estiver especificada aqui, ela d eve ser
especificada na inStnl'ii0 functi on-poo l no i ncl ude su perio r pan 0
grupo de func;io via a aeli~io message-id.
As seguintes varidveis sy sao confi guradas:" sy-msqf d, sy- msgt y,
sy-msqno e sy-msgvl par sy~msgv4. Estas podem ser examinadas dentrc
do programa de chamada (depois do retorno).
Quando a instrugao message . . rai sing e executada, 0 luxo do con t role
depende do tipo da mensagem e de a condicac ter sido ou ni o tratada pelo
chamador (0 que eespecificado na lista de excecoes do programa de chamada ).

check, exit e stop tern 0 rnesrno efeito que m6dulos de fun~Oo em


sub-retinos extemos. Entretanto, eles nao devem ser utilizodos dentro
de m6dulos de fun<;Oo. Em vezdisso, 0 instru<;oo rai se serio utilizodo
porque ela ativa 0 chamodor para configurar0 volar de sy-su brc no
retomo.

message .. raising

message tnnn{cc) [with vl '/2 . J raising xncne

xname
Se voce nee ccdlflccr ot hers e uma excecec for configurada dentro
do m6dulo de fun<;oo que noo foi nomeodo no odi<;oo except i ons, 0
progromo ser6 obortodo e cccntecere um dump curto que tern 0 errc
de tempo de execu<;oo RAISE_EXCEPTION.

inslrv~ao

A sintaxe para a instru~ao message . . . rais ing e a seguinte:

Se a condicao for tratada pelo chamador, 0 controle retomani para 0


chamador. Os valores das vsriaveis sy-Ilsg sao co nfi gura dos. a s valeres de exportac;6es pass ados por ~alor nao serio ret omad os.

Se a candi<;ao naa far t ratad a pelo chamador, e para tipos de m ensagem


e, w e a, 0 m6dulo de fun<;ao sofre saida e 0 programa d e ch am ad a e
terminado imediatamente. A mensagem e exibida e a !ista de saida
aparece em branco. Quando 0 usuario pressiona a t eela Enter, a futa
em branco eremovida e 0 usumo eret omado i tela da qu al 0 programa

foi chamado.
Se a condi~ao nao foi tratada pelo chamado!, nem para 0 t ipo de
mensagem i , a mensagem sera exibida para 0 usuario em uma eaixa de

D~ 20, MDDUURlU"D, M6DUlDS DEFUN" D, pure 2

APRENDA EM21 DIAS ABA P/4

dialogo . Quando a usu dric pressiona a tecla E nter, 0 controle ret om a


para 0 m6dulo de fun~ao na instrufj3.0 seguindo a instrufjaq message.
o m6dulo de fuD~O con tin ua processando e, na inStru~o endf unct fcn, 0 cont role reto m a para 0 programa de chamada. Os valores ells
variaveis sy-msg SaOconfigurados e os valores de expc rt acoes pass ados
por valor sao reto rn ad os.

i~ o rti n9

23

pout

2'

l!!!rror_e error_w .,
error_i er ror_s error_a er ror_x =
oth ers -

26
27
28

29
3D

S7 a condicao Ilio for tratada pelo chamador, e para ripe de mensagem


s, a mensagem sed armazenada em uma are a de sistema. 0 controle
continua dentrc do m6dulo de fun~o na instrU~o seguin te ainstrucac
message. 0 modulo de func;ao continua processando e, na instrucio
endfunct tcn;o centrale retoma para 0 programa de chamada.
valores
das variiveis sy-msg sao configurados e os valores de exportacoes
passados por valor sao retomados. Quando a lista e exibida, a mensagem aparece na barra de Status na parte inferior da lista,

as

Sea condicaonjiofoi tratada pelo chamador, e para 0 ripo de mensagem


x, 0 m6dul o de fun~o sofrera safda e 0 programa de chamada e
terminado imediatamente. Urn dump CUrto
o usudrio.

e gerado e e exibido para

As listagens 20.9 e 20.10 ilustram 0 efeieo cia instrufj3.0 message . .


raising.

~NTRADA~ L1stagem 20.9 Utilizando a i nstru~o o message .. . ra ising


1 repor-t ztx2009.
2 par amet!rs : P_!tyP! default 'E ' .
" t nsf re os t 1pos de mensagem E WI S A X
3
p_handl e default 'Y ' .
"se Y. trate a excet;lo
4 data vout(4) value ' I Nn' .
5
6 if p_hand1e - 'Y .
7
perform call _and_handle_except fon.
8 el se .
9
perform call_and_dont_handl e_except fon.
10
endif ..
11 wr1te: / 'sy-subrc - ", sy-scbrc,
12
/ ' veut -" , vcut ,
13
/ ' sy ~ ms g ty' , sy-msgty.
14
/ ' sy-ms9i d'. sy ~msgid.
15
/ ' sy-msgno' . sY-lllSgno .
16
/ ' sy-msgvl' . sy-msgv l.
17

18 . _ ---..,: --,-,---::_ _,..,19 form call_and_hand1l!!!_except 10n.


. 20 call function ' Z_TX_20IO'
21
export ing
22
msgtype - p_l!!!t ype.

31
32
33

34
35
36
37

38
39
40
41
42

vcut

exceptt ens

25

1
2
3

4
5
6
7.

endfonn.

.:_---..,.,.----,--,....,-.,.--====
ca1l_and_dont _hand1e_excepti on.

tOT"lll

call funct ion ' Z_TX_2010'


expert! ng
msgtype z p_et ype
importi ng
.. vcut ,
pout
endfol"ll.

ENIRADI" L.ista g em 20.10 o c6digo-fonte perc 0 m6dulo de funlioo chomodo "do


,. Llstc qem
1
2
3
4
5
6
7

20 .9

f unct10n z_tx_2010:-
- - - . ~ - -~-~~. --- ---_. -------- -- -------- - - ._-. -- ~- - -- ---- - --""-lo cal interface:

....
""

."
~
9 ."
10

IMPORTING
VALUE(MSGTYPE)
EXPORTING
VALUE(POUT)
EXCEPTIOtiS
ERROR_E
ERROR_W
11
ERROR_I
12
ERROR_S
13 ..
ERROR_A
14 .ERROR_X
15 --- -- ---- -- -- -- ------.- ---- ----------- --. -- --- -- - -.--- - -----16 pout .. ' XXX' .
17 case msgt ype.
18 whl! ! n 'E '. message e991(zz) with ' Error E' rai sing er ror_e .
19 when 'W ' . message e992(zz) with ' Error W' raisi ng error_w.
20 when '1 '. message e993(zz) wit h ' Erro r I' rats i ng l!!!rror_i .
21 when'S'. message e994(zz) wi t h 'Error S' r ai sing error_s o
22 when ' A'. message e995(zz) with ' Error A' rais i ng l!!!rror_a .
23 when 'X'. message e996(zz) with 'Error X' raising l!!!rrOT_x.
24 eeeeese ,
25 l! ! ndf unct 1on.

647

A A A
648

. .. . . . . -- - - - - - - - - - OL\ 21> MOOUl.lRlll(.io, .60ULO' DE FU'\AO. PAm2

AmHOA EM21 OIA' ABAP"

Utilizando as vslo res de parfrnetro padrao, 0 c6digo nas listagens 20.9 e


20.10 pro duz esta saida:

SAiDA ~

sy- subrc

you! INlT

sy ms gt y E
sy-msgid ZZ

649

4. Pressione 0 botio Change. A tela Function Module Change: Table


Parameters /Exceptions ~ exibida.
5. Na metade inferior cia tela, na seljio Exceptions , digiee os names das
excecoes que aparecem no codi go-fonre do m6dulo de fu oljao.
6. Pressione

bota c Save e

bot ao Back. Vo ce volta

a te la

inicial

Function Library.

sy-msgno 991

sy-msgvl Er r or E

AMius! ~

Na Liscagem 20.9, qu ando se utiliza as valores padrac para a lllilia 6


as pardmetros sao verdadeiros, en no 0 con rrc le e transferidc para a
sub-retina call_and_handl e_exception.
A linha 20 transfer e co ntrole para a linha 1 da Listagem 20.10.
Na Lista gem 20.10, a linha 16 atribui urn valor para 0 pardmetrc local
pout . Esse valor e definido como passado por valor, enr j c 0 valor de
vout no chamador ainda nao foi alter ado.
A linha 18 cia inst rucao case e verdadeira e a inst rucac mes sage .. .
ra i 5 i n9 e execu tada. Is50 aciona a excefjao error_e.

A excefjao er r or_e

e tratada

pelo programa de chamada, entaa a

mensagem ndo eexibida pan. 0 usuario. 0 controle retorna para a linha


25 cia List agem 20.9. 0 valor de vout nao ~ alteradc; as variweis sy- msq
sao atrib ufdas a vaIores.
Na Listagem 20.9, a linha 26 atribui 1 para sy- subrc.
A linha 33 ret o rna

controls para a linha 11 e os valores sao escritos.

T ente executar 0 programa em ztx2009. Especifican dc urn valor p handl e


de N, vo ce vera as men sagens de erro produzidas.

Definindo excec;6es no interface


Sempre qu e voc e configura uma exce~ao em urn m6dulo de funljao, voc e
deve docu ment ar esse nom e na interface do m6dulo de fuotjao. Os nomes de
eXCeljao tambem aparecerao aurom aticament e na parte superior do fonte do
m6dulo de fun ljio dentro dos comentdrios gerados pelo sistem a. 0 seguinre
procedimento des creve como documentar suas excecees.

SCRHHOMltrr.. lnicie a ;creenCam "How to Docu ment Exceptions in the Function Module
~ Interface agora .

1. Come ce na Function Library : I nitial Screen.


Z. Digite seu nome de m6dulo de fu oljao no campo Function Module
se ele ja nao est iver af.
3. Esc olh a 0 batao de 0pljao Table Parameters/Exceptions Interface.

Inserindo automaticamente a insrrucco ca11

functjon
Em vez de digital a insrrucio call f unct ion em

Sell c6 digo -fo nte, 0 sistema


aut omat icam en te pode gera -la para voce . Quando voce faz dessa maneira, os
nome s de exce~ao qu e voce docum ent ou na interface serso automaticamente
inseridos em seu c6digo tambem.
IIlrrr...

SCREENCAU"

lnkle

ScreenC om "How to Insert a call fund ion Statement into Your ABAP/4

Progrom" cqcrc .

Para ver os efei tos de sua documentacio de excetjao l erie UJ;11 pro gram a
de ABAP/4. E m vez de codificar da pr6pria in strucao cal l fu nct i on, util iz e
o seguinte procedimeoto para genr automaticamente a instrucao call fu nct f on :

1. C omece na tela AEAP/ 4 Editor: Edit Program.


2. Posicione seu cursor dentro do c6 di go- fo nt e na Iinh.a depais da
primeira onde vo ce quer qu e a instrufiao cal l fun cti on apare ca.
3. P ressione 0 botao Pattern na barre de [erramentas Applic ation. A
caixa de diilogo Insert Statem ent aparece .
4. 0 batao de 0pljao Ca ll F unc tion ja estaria escolhido. Se n jio estiver,

selecione-o.
5. Digite 0 nome de seu m6dulo de funr;ao no campo de entrada adireita
de Call Function.
6. Pressione 0 batao Continue (a marca de verificaljio verde). Voce
vol ta a tela Edit Program. U rna in strucio call f uncti on aparecera no
c6digo-fonte na Iinha acima da primeira que voce posicionou seu
cursor. A ins t ruf:iao comecar a na mesma coluna em que seu cursor
est ava. Os pardmerros e excecces qu e vo ce id entificou na int erface
aparecerao. Se um para metro estive r ma rcado como op cional na
interface, ele sera com entad o e 0 valor padrac ap arecera adireita dele .
7. Preencha os valores a dire ita do s sinais de igu al. Sinea-se livre para
alterar 0 codigo a u remover quaisquer linhas qu e se seguem aadi~ao
importi n9 se voce Dia precisar desses valores de ret o rn o.

650

AP IEND AEll 21 OIAS ABA PI4

D1A1D, MOouURll.l(.lO, M6oULOS OER,">,O, PARTE ,

Umo d6usulo importi ngvazio ccusc um errc de sintoxe . Se nOohewer


nenhu m nome de pordmetro seguindo a po lovro importing, ou se
tod os e lesfor em ccmen tcdcs.vcce deve remover a po lovrn importi ng.
mesmo tcmbern verdode iro para 0 exporto~oo .

Resumo
As varidveis globais podem ser definidas em dois niveis. Q uando
definidas no i ncl ude sup erior, elas sao globais para tod os os module s
de fun'iao dentro do gropo e Iembram de seus valores entre chamadas
a m6dulos de fun'iao dentro do grupo, contanto que 0 programa de
chamada continue a executar. Globalizando a inte rface, os parametres
sao visfvels dent ro de sub-re tinas chamadas a partir do modulo de
fun,an.
As sub-r et inas definidas dent rc deum gropo de funi?o sao codificadas
DO include Fo I.
O s m6dulas de fun'iio podem ser Iiberados pan. denotar que a interface 6 eseavel e nenhuma altera'iio significativa sed feita para ela,
P Ort"" O, ela ~ Iiberada pan dispooibilidade geral e ~ "segura" para ser,
utilizada em c6di go de prodc cao.
0 ambience de teste oferece uma maneira convenie nre de executar
modules de fuo'iiOsem escrever qualquer ccdigc de ABAP/4 .
M6dulos de fun'iao existen tes podem ser localizados com a ajuda de
Repository Information System.

P&R

o
o

Par que voce passaria urn panim etro de im portacdo par referencia? Se voce especificar que a s parimetros de irnp ortagao e de
exportacao devem ser passados par referenc ia, eles nio serio os
mesmos ? Por que exist e 2 capacidade de fazer isso?
Vma passagem por refe rencia e mais eficiente que um a passagem por valor. Voce deve util iza-la para eficienc ia. Entretanto, as palavra s Im port e- Export oferecem documentacio
im portance reference ao papel que cada parjim etro desempenha
dentro do modu lo de fun~ao. Voce nao deve alte rar parametres
Imp ort. des sempre devem ser passados sem alt era!ii o pela
m6dulo de fun~io. Tarnpou co voce deve aceitar valores no
m 6dul o de fun!iaoviaparfm erros Export . O valo r de urn Expor t
sempre deve se origin ar den tro do m 6dul o de fun'iao.

Work.:>J
sh
wo
~p.L-

o Workshop

oferece duas maneiras de voce verifica.r 0 que aprendeu oeste


capitulo. A se!jio Teste ofereee perguntas para. ajudar a salidifica.rseu entendimemo do contecdo aborda.do e a sec;io Exercicio permite que voce pratique 0
que aprendeu. Voce pode enca ntrar as respo stas is perguntaS do Teste e aos
exercfcios no Apendice B, "Respostas as pergun tas e aos exercfcios".

Teste
1. Se urn pargmetro de mesmo nom e exisee em dois m6dulos de funC;io
dentro de um grop o e as duas interfa ces sio globais, as definicoes de
dados de dois desses pargmetro s devem ser identica s?
2. Sevoce acidencalmenre liberar urn modulo de fun'iao e quiser cancelar
a Iiberacac, qual caminho de menu voce pede utili z.ar?
3. Se voce DaO codifica others e uma excectc e configurada dentro do
m6dulo de fun'iao que nao foi nomeada na adi~ia except i ons, 0 que
acontece?
4. CheCK, exi t e stop tern 0 mesmo efeito com m6d ulos de func;ao que
tern nas sub-retinas externas. Eles devem ser utilizados denrr o de
m6dulos de fun,aol

Exercicio 1
Copie 0 m6dulo de fun'iao z_tx_div eo modifique para configurar a
exce'iao zero_di vi de, se 0 valor de p2 for zero. (para copier um m6dulo de
fun!jao, utilize 0 botac Copy na Function Library: Initial Screen.)

651

21
Telas de selelGO
Objetivos do capitulo
Depois de completar este capitul o, voce deve ser capaz de

Codificar telae de selecdo que interagem com

usudrio.

Entender como as chaves esrrangeiras podem ajuda r a validar entr ada


de u suario.

Entencler como as matchcodes (c6di gos de combinacao) sao ut ilizados em programas ABAP/4.
Utilizar elementos de formataclo para criar telas de selel,fao bern
prcjetadas e eficientes.
Utilizer te las de selec;ao par a manter a inr egridade de dadcs .

U tilizar mensagens para oferecer comunicacao efetiva.

Prog ra ma <;a o baseada em evento


H oje em dia, com 0 surgimento da World Wide Web e tude que isso exige, 0
c6di go de programa deve ser capaz de interagir e se comunicar co m 0 usuario
final. 1550 e feito no ABAP/4 utilizando even tos que sao chamados pel as ac;oes
des usuarie s.

Irttp;/I_

.compus,com.br

Jl:- .
654

II

APR END' EM 11 DIA S ' U P/4

'IAIU ElAS DE smll'

Os blocos de processomento s50 definldos pe las po lovros-chove de evento e


sdc assim executodos no tnvccccec de certos eventos relevontes .

Utilizando

0 evento at selection-screen
0 evento at user-corrmand

Utilizando

0 seguint e c6digo most ra a sintaxe para

report ywhatyr.
tab les : marc, mvke.

Utilizando
0

eye nto at use r -command

Os botoes, assim co mo muitas outras opcees de tela de seleljao baseadas em


evento, podem ser muitc uteis na manutencio da interacac com usuario e na
validaljaOde entrada do usuario. Na pr6xima se~o, voce ira explorar a utilizacao
de bo toes para chamar 0 eveneo at user-cceand e estu dar urn exemplo de
com o os b otoes podem ser utilizados para processar a entrada de usuario.

eyento ; n; t; al ; zat ; on

!a

eye nto at sel ec t; on- s cr een

a evento t ntt f et taat t cn

655

evectc at se lect ion-screen processado dep ois cia entrada do usuario na


tela de seleljao ativa. Isso pede ocorrer quan do a usu i rio pressiona uma teela
de fuoljao ou da urn clique em urn bono, bern como no caso de mui tos outros
elementos que podem interagir com a usudrio. Alem da verificacao de validaljoes de dadcs, mensagens de aviso, alteraca o do sta tus GUI e ate rnesmo
janelas pop-up podem ser abertas utilizandc 0 evento at sel ection -screen.
Voce vera mais dest es exemplos mais adiante neste capitulo. quando estudar
~ telas de seleljao de [ormatacio e os eventOS envolvidos co m elementos de
{ormatacao de tela. Par enquanto, entretanto, vamos examinar urn botao em
uma tela de selecao e descobrir como as eventos at sele ct i on- s cr een e at
user- conmand sao utilizados no proximo exem p lo .

Por padrao, 0 evenro sta r t -of - sel ecti on e anexado a todos as eventos
no ABA P/ 4. Em seus pro gramas, voce pede definir urn bloea de processamen to e anexar esse bloco a uma palavra-chave de evento.
Par a 0 c6digo genericameate facit de ler, euma boa pratica definir blocos
sequenciais de processamento na ordem em que d es mais provavelmente serdo
acionados durante execucic cia tela de selecao. Eo fundamen tal tambem ut ilizar
as eventos mais imp orrantes para programacdc cia tela d selecao. Esses eventos
7
sao:

eventc init i al ization:

data: p_year for sy-datum.


1n1tia 11 zati on.

Sintaxe pa ra oevento se1ect i on-s cr een pushbutton

o seguinte c6digo mcstra a sintaxe para a event o sel ect i on-screen

if sy-datUIII ge '01012000'

pyear .. ' 2000' .


else . .

pushbut-

t on:

p"year ' Yest eryear ' .

sef ect t cn-screen pushbutt on

e Xil~ l @l

user-comnand 1234.

endif .

Nesse exemplo, quando ~ execuudc 0 programa pa..ra 0 qual uma tela de


sele~ao estol definida, esse bloea de processamento i n; ti a 1fzat ; on executado,

configunndo 0 campo de parametro p_year como igual a urn valor dependendo


da data de sistema no momenta de execuci o. E esse blocc no qual voce

especifica as valores-padrjioiniciais de sua tela de selecao, com base no fate de


as criterios serem au ndo necessaries para manter a integridade de clados
digitados pela usuano. Alguns exempl os inclue m a configura~ao de barras de
titulo, atribuiljao de elementos de text c a elementos de interface gcl fica do
usuario (GU I) e status de c6digo de fun<;.o.
Vo ce viu como 0 evento 1ni t i al izatioo func iona, entao agora e hora de
chegar mais proximo e obs ervar algumas utilizaljoes do s eventos at se1ecti 00screen eat user-cOIlVMnd.

Essa instrucao, quando utilizada junto com 0 comando at sel ect i onscreen, e uma excelenre maneira de interagir corn 0 usuario quand o este digita
dados. A sintaxe esemelhante i de urn sel ect i on- screen corrment, exceto pelc
fatO de qu e os dad os sao passados quando 0 usuario pre ssiona 0 bono. A aljao
de pre ssionar 0 batao aciona sccrfi el ds -ucomn n o evento at sel ect ton-screen
e os cam pos de entrada sao importados. Esses dada s entao p odem ser validados
e uma mensagem pode ser exibida para 0 usudrio dependendo do prop6sito do
bo tao. Ess e e urn exemplo de como voce pode utilizar do is borees para
determiner quallinguagem informari os dad os selecionados.
III
o seguinte c6digo mostra a sintaxe para dois botoes que sao utiliudos
Z para escolher urna linguagem:

~m

se1ec t 1onscreen pushbutton lO(20} text-D03 user-ccxrmand eng1.


sel ect ion- scr een pushbutton SO(20} text-004 us er- carmand germ.

at se lection -s cree n.
at us er- COllll'.and.
cas e sy- ucOlllll.
when ' engl'.
/.
-~

-J
~"

~ .~

656

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

.. --

-----.

"mo. EM,I DIAS AB." .


lange nglis h ' Y'.
when 'genii' .

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.

D~ 'UillS D< SRf\.iD

Valida c;a o de dodos utilizando chaves


estrangeiras
o modelo de dados relacionais do ambience de SAP p ode center muitas tabelas,
visualizacoes, estruturas e tabe las vineuladas. As chaves estran geiras, como
pcde-se dizer, define m esses relacionamentos entre rmiltiplas tab elas. As
funljoes qu e as chaves estran geiras executam incluem fomecim ento de dados
de ajuda e criacac de ob jetos de diciondrio, mas essa funljao que vo ce focalizara
estara na area de valida~ao de clado s. Afinal de comas} 3. m anut enlj.ao de
integridade de dados eurn do s principais objetivos quando se definem telas de
seleliio e a utilizacic mais importante des chaves estran geiras.
Urn campo de chave esrrangeira e, por definiCjio, limi tado a valores que
correspondem aos da chave prim aria cia tabela de verificacao do campo de
ent rada. Iss o eco mo fazer urn vinculo entr e duas tabelas. Uma tabela, FORKEYl}
poder ser entendida com o a tabeIa de chave estrangeira (ou dependente),
principalmence porque ela inclui campos de chave estrangeira que sao
atribuidos a campos de chave primaria em CH ECKl}que e referido como a tabela
de verificacio (ou referencia) .

o campo de chove estrongeira e 0 chove prim6rio de umo tcbelc poi


deve m comportilhor 0 mesmo dominio e umo tobe lo de vclor pa ra esse
dominio tcmbem deve ser especificoda. Isso estende , de certo mcnefrc,
a verific.o ~Q o do integrida de dos dod os normolmente fomecida openos
celc tobe lo de volar.

Algumas tabelas 'de veoficacac podem ter mul tiples campos de chave
primfria. N esses casa s, as atribuicoes devem ser feitas para cada campo quando
se iniciam relacionam entos de chave estrangeira. r res op~6es sao:

Utilizerurna chawestrangeiraparcial. Nesse case, alguns campo s DaO


Voce pode tc rnbe m crior ate cinco bctces no ba rre de ferromentos
Application. Esses bat6es no barra de ferromentos Selection Screen 50 0
ossociados a teclos de func;oo espedficas e 500 limitod os a teclas de
fum; ao de 1 a 5.

serio urn fator ao se validarem valores aceitaveis para entradas no


campo de chave estrangeira. Certos campos sao marca dos como
genericos nesse caso e assim ignora dos peIa siste ma na valida~ao.

Utilizer urna ch~'Ue estrangeira constants. A fim de a entrada de campo


ser vdlida, 0 valor deve co rresponder ao cia constance na tabela de
verificacio.

NOYO....
ltiM:O "

Agora que vod op rendeu um pouco sabre vcldccec de dodos utilizondo


ev entcs noAW/4 , e he re de excm'nc rclqcm cs tecnlccs de vclidccec de dados
que s60 no moioria montida s e definidos pelo sistema. Voce primeiro vera chcves
estrangeiros. Umo chave estronge iro significo um ou mois compos que representom a
cbove prim6rio de urna segundo to belo.

657

Criar uma atribuirao campo a campo. Essa e a mais complete das tres
escolhas . Cada camp o de chave prim:iria na tabela de verificacao
corresponde a urn campo na tabela de chave estrangeira e todos os
campos-chave sao endc utilizado s para determiner entradas validas na
tabela de chave estrangeira.

1,

...

658

~ ~ -~

!I

........... . . . -""'D~ 2UElAS DE SElf\.lD I

APmnA EM 21 DIAS ASAP"

Basicamente, 0 modo como uma chave estrangeira Unciona se parcee


com uma instru~ao select em cpc sicac a ube la de verificacac d o campo com
a chave esrrangeira, Mais especificamente, quand o urn campo de ve rifi ca.~o de
chave esrrangeira e preenchido, a insuur;ao select que foi gerada pelo sistema

daSAP)quandodefiniua chaveesrrangeira, eenviada peloprograma.Seatabela


. retorna um valor dessa selecac, a entrad a sera vdida. Se
localizado, a entrada de campo se torna invalids.

registro nao for

o c6digo a seguirmostra a sintaxe para uma instrucao sel ect geradapelo

campo de entrada contem urn valor especffico no campo chave cia tabela de
cia insrruca o se l ect , o campo constante e
verificado em conrraposicao ao campo de ch ave primdria que contem 0 valor
fixe.
verifica~ao citada . Na consulu

(Dj;..

sistema:
set ect

11

from table 1 where table 1-exam! f lc examl


and table).exam2 fk::exarn2 .

Esse pequenoc6digo mostra urn exemplodeumainStrur;ao sel ect gerada


pelo sistema, que e chamada quando a s dados sao inseridos no campo com a
defmi'iio de chave estrangeira. Nesse cemrio, uma entrada em tal campo de
tela e permitida somente se a instructo sel ect produzir dados validos a partir
da tabela de verifica~ao utiliundo as enrradas de dado s feitas nos campos
tk_examl e fk_exam2 como chaves.

Uma COISO de q ue vod deve se lembror 0 0 cnor relodcncmentcs de


chcve estm nge irc e a cordinolidade . A card ino lidode de umo chc ve
estrcnge iro, junto com seu tipo, ereferida como os otributos sern6nticos
do chove estrcnqelrc. Coda cordinalidode de umo chove estrongeira
dessos entradas e op d onal. Entretonto, a cordinolidade ndo deve ser
supervisionodo, porque a entrada e boo prefico e tomo -se necess6rio
qua ndo voce quisercriar certos tipos de og regodos como visvcllzccoes
de c judc , por exernplo.

NOVO ....

Cordinolidode umo descrtcec do relodonamento entre um a u mois elementos


de dodos para um a u mo is elementos de dodos . Se ume chove estra ngeira
vinculo duos tobelos que foram definidos, a registro do to belo de chove estrongeira se
refere 0 urn registro do tobe le de verificac;do. Esse refel1mcio e construfdo se atribuindo
compos de umo tabe loa umo tobe lo de chove estrangeira, aos co mpos de chove pomaria
do outro tobe lo e 0 tobelo de verifica rydo.

mo "

o relacionamento s6 exine se os campos de chave estrangeira forem do


rnesmo tip o de dado e comprimento que as campos de chave p rim m a correspondentes. Urna v erifica~ao - au tabela - pai e referenciada pela pr6pria
chave est rangeira. Esta e normalmente urna u bela de valoT) mas tam bem pode
cons istir em urn subconjuDta do conteudo de uma tabela de valor. Uma tabela
de valor governa as valores validos que sao atribu i'dos ao dominio do elemento
de dados .
Em alguns casos, uma chave estrangeira constante pod e ad aptar~se melhor as suas necessidades. Esse e 0 caso quando toda s as ent radas validas no

E boo

pr6tico de prog ramoc;do utilbcr ccoveocees de otribuic;oo de


nome que sdo descritivos e om ig6veis para a usu6rio. Alem disso, a
SAP adotou 0 pcdrec de nunco cc mecc r 0 nome de um objetc de
desenvolvimento com as letrcs Z a u Y. Se voc! cr ier todos seus objetos
com nomes q ue comecem com umc desscs duo s letros, 'lac! se
certificor6de neo ter nenhum prob lema co m co nflitos de nome quan do
otuo lizor seu sistema SAP.

Yolidoc;a o de dodos utilizondo motchcodes


KaYO ....
TaMO r

Outro ma neirc Util de manter a integridode de dodos dura nte 0 entrada do


usu6rio Ii utilizor mctchc cdes. Urn matchcode e urn c bjetc que e utilizcdc pe rc
lccclccr reg istros de dodo s no Data Dictionary do .SAP. Mois especificomente, os
. ,mo1chcodes ocessom regisfros de dodos de moneira seme lhonte a um fndice e m que
todos os cam pos-chove nCo sao necess6rios, mas diferem dos Indices no senfido de que
as mptchcod es podem conter mois de umo tcbelc no intervolo de se lecec .

Veja comcele funciona: primeiro urn objeto match code e definid o com
as tabelas secundarias e prim frias pertinenres e campo s significativos designados. Ess e objeto enno identifica tcdos os pcssfveis caminhos para .os
registros de dadcs exigidos . Em seguida, os ID s de matchcode sao criad os
mapeando urn caminho definido pelo obje rc matchcode. Os unicos'campos de
dados que sao admissfveis nesse ill sao baseados int eirament e no objeto
matchcode. Pelo menos urn ill deve ser declarad o para cada objeto matchcode.
Os ohjetos matchcode sao armaze nados como urn pool de ube1as, que auto~
maticamente e gerado para cada ID de matchcod e que voce declara.
Um pool de dodos e uma tabe lo l6g ico de pool que e utilizodo pelo SAP pore
ormazenor intemo mente dodos de co ntrole . Esse dodos , que noo sao pemnentes
extemomente, sdo mopeodos como um nume ro de tobelos de banco de dodos para umo
tobe lo do SAP.

NOYO ....

mMOr

Urn matcbcode pode ser configurad o (assembled) de doi, modos diferentes:

Fisicamente. N essa configura~aoJ os dados sao armazenados em urna


tabela separada no sistema SAP. Os tipos de atualiza~ao A, P eS sio
rnantidos em tabelas ffsicas.
Logicamente. Essa op~ao configura dados de matchcode temp oraria~
mente durante 0 acesso ao matchcode. Esse acesso ~ gerenciado por

659

..

660

~.

. .. . . . . . - - - - - D~ 2J,1HASDE SELE\lO

'PREHO' EM21 OIAS "AP"

5. 0 pr6ximo passo no processo de cria~ao eativar 0 obje to matchcode.


status do objeto New e Saved (veja a Figura 21.6).

uma visualizaeio do banco de dados. Nesse casa, a metoda logicce 0


mes mo que

arm azena mento transparence.

1550

inclu i apenas tipos

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.

Na tarefa seguinre, voce aprendera a seguir 12 passos faceis para criar


e manter objetos marchcode. Inicie pela tela Data Dictionary mostrada na
Figura 21.2 e complete as seguintes passes:

1. Escolha urn nome p ara sen novo objeto, de urn clique no bono de
0Plii o Mat chcode e pression e 0 bon e Create.
2. Digite 0 texto descri tivo , quando for inserir sua tabela primdria na
tela Attributes mostrada na Figura 21.3, e pressione 0 batao Save. A

tabela primaria representa a origemprimariapara a pesquisa de campo


subs eqeenre. As tabelas secundarias tambem podem sec mantidas
nesse ponte dando urn clique duplo na tabela primdria au pressionando a bone Table. Esses tabelas devem vincular-se com eabelas
primarias pa r chaves esrrangeiras.
3. Nesse pon te, vo ce tern a opcso de criar a macchcode como urn cbjetc
local au anexs-lo a uma soliciracfo de transporte. Depois de fazer isso,
de urn clique no bo eac Save (veja a Figura 21.4).
4. Quando a barn de status refletir, os campos-chave obrigat6rios sao
transfericios automaticamente (veja a Figura 21.5 ). Se quiser, voce
pode pressionar 0 batao Fields e [azer a manutencac de qualquer
campo de seIe~ao que quiser. Nesse ponte, voce precisa dar urn clique
na seta verde para voltar a tela Maintain Attributes.

6. 0 status esta agora configurado como Active e Saved. Logo, voce


precisara criar urn ill de marchcode au seu ob jeto estara inc omp lete
(veja a Figura21.7). Parafazer isso, dS: urn clique no batao Matchcode
IDs.

Figura

21

A tela Creo~ Obied

CatalogEntry.

"""",~<~;''';'i'.JI_,:=: .'J:- -'''''' L.ol;

;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

a Figura 21.8). Para fazer isso , de urn clique

Os otributos de
matchcodeanles do

DO

bo tao Yes.

Figu rA 21 8

Qtivoo.

Urn aviso Creote

Obi""

8. Na tela Create Match code ID mostra da na Figura 21.9,especifique


urn mimero de ill de ma tchcode, entradas validas que variam desde
todo 0 alfabeto a qualquer numero. Voce tambem p ede dar urn clique
na seta para baixo para visualizar urn intervalo de entradas vaIidas.
Figura 21 9

A co ixa de dia/ogo

Create Matchcode 10.

9. Vamos visualiza r algumas possfveis entradas (veja a Figura 21.10) .


Como voce pede ver, essa janela de Iista mostra urn mi mero de IDs
de matchcocle e uma descricsc curta de cada urn . Escolh a urn e de urn
clique na seta verde .

663

A -a
664

.A"'~ I...I~

. - - -- 01. 2UnAS DE sa(.lO

.PRENO. EM 21 01.1 ASAP/.


Figura 21 10

Figurg 21 1 2

Umo listo ele cc essc

A caixo de di6/09o
Maintenance

Motchcode.

Selection Conditions.

10. Siga. as passes que aprendem os para manter as campos de sele~o para
"esse ID de m archcode, cerrifique-se de inserir um tipo Update e de
urn clique em Save (veja a Figura 21.11). Discutirei ainda sabre tipos
U pdate mais adiante nesta selSao. N esse ponte, voce pede inserir rnais
crirerios de selecao pr essionando 0 bono Selectio n C riteria.

12. Agora rude qu e voce tern de faze r eativar seu ill de matchcode e seu
novo objeto esta pronto para utilizar (veja a Figura 21.13).

F igurp 2 1 J 1

A monufeno de
oIribvtos motdl~e.

Figur A 21 13

Gere e utilize 0

matchcode.

11. Na tela M aintain Selecti o n Conditions, voce pede inserir e manter


campos e criterics de seleljao para seus IDs de matchcode. Eis urn

exemplo de urn requisite de urn Material Number que nso

e maior

que 0 valor de 8888 (veja a Figura 21.12). Quando terminar, de urn


clique em Save e na seta verde para voltar.

A subtelo Index noo precise ser man tido, porque essas c:eraderfsticos
sao meromente para fins de documenta~oo no versec atua l do sistema
SAP. Simplesmente debe esse lacuna e ignore 0 a viso subseqOente que
cpcrece no log de otivao do seu ob jeto.

665

666

D~ 2UElAS DE sElf\.iD

APREHDI EM21 DIAS I 'I P/.

N esses 12 passos Hceis , voce criou urn matchcode qu e ago ra pede utilizar
para m an ter a integridade dos dados, Vace aprendeu como as cbaves prim arias
ajudam a verificar possiveis valores de tabelas vinculadas e 0 conceito de urn
pool de campos de dados. Lembre-se, a m aneira com o a s dad os de m aechco de
sao organiz ados varia de acordo com que tipo de arualizacao foi selecionado

as relot6rios que tAm logical Database anexodos a eles s60 otribuldos

a telas de selecoc pre-projetodos. Esses crttenos de selecec podem ser


modificodos para melber se odoptorem as sues necessidades. as
relot6rios que ndc tlverem as telos predefinidos devem ser rncnfidoa
pelo programador do relat6rio. Essas interfaces do usucrlc personali
zodos podem ossumir qualquerforma e combinerquoisq uere lementos
que voce, 0 programodor, quiser.

durante a crialJao inicial. Eis uma descricio de cada urn desses cinco ripos:

1- Organizado pelo banco de dados arribufdo.

5-

Organizado pela inte rface do banco de dados.

A - Aut o-o rganizado pelo pro grarna de sistema SAPM ACO.

P-

K - Tambem organizado por urn pro gram a aplicativo.

Utilizando instrw;;6es sel ecti on- scr een


NOVB'" as elementos de tete de seeceo podem ser combinadas em unidades cceslvos
lHW ~
chomodas bleeos. Esses blocos 16gicos s60, em essendo, um recursocosmetico
de tela que encopsulo uma ccmbrnc cec de elementos de entrada de tela e pede ser
criodo com um trtulo de frame descritlvo. Blocos 16gicos ojudom a tornar as cposes de
seleceo mois f6ceis de entender e ufillzor.

Organizado por urn programa aplicarivo.

Sintaxe para utilizar urn matcbcode

!:!!
Z

A seguir esta a sintaxe para utilizar matchc od es para valid acso de entrada de
parameero de tela de selecso:

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

Esse exemplo utilize 0 exame de ob jeto m atchcode, que ja foi definido


com urn ID de matchcode, para valid ar a entrada de da do s no exem plo de campo
de pardmetro. Esse exame de cbjerc armazena os dados de relacio namento
necessaries para manter a integridade da entrada de usu ario.

Sintaxe para sel ecti on- screen bloc k com frame


en A seguir esta a sintaxe para urn sel ect i on-s cre en bl ock com frame:
Z
selection-screen begin of block bl ockO with f rame title text-DOO .

S
In

T
INilll!~

Alem do instruc;co blo ck, os telos de seleccc podem ser personolizodas


utilizondo elementos de formotcl;co como os seguintesinstrvcces sel ect i on-

screen:

Eormatando telas de sele<;Cio


A gora que voce explorou algumas ferramentas para validar clados de entrada
no ABAP /4, vamos dedicar algum temp o para aprender mais sobre com o
projetar formatos efetivos de tela de selecjo. Ao definir telas de entrada par a
utilizacao na informacdo de dados, vari e s elem entos de selecao podem ser
combinados para manter a integrid ade d os dad os e ainda cont in uarem faceis
de se utilizer. Esses elementos in c1uem campos de entrada padrac como
opcoes de seleljao e parametros, assim co mo outros, tais co mo caixas de
selecsc, borees de opcac e bot6es pushbutton . A seliao seguinte m ostrara cada
um desses individualmente e dara alguns exemplos de onde eles sao me lb e r
util izados. Voce ted uma oportunidade para combine-los no Exercicio 1 no

final do capitulo.

sel ection-scr een com:nent leliao.


sel ect i on- screen uline -

C olo ca urn cornentario na tela

de se -

C oloca urn sublinhado na tela em uma

posi~ao especificada para urn comprimento especificado.

se l ec tion- screen posi ti on - U ma ferram enta muitc util qu e especifica urn come ntario para a pr 6ximo parametro de campo na t ela. E
util par:a se lect i on- opt ion s assim como para parameters .

se1ecti on-sc reen begi n-of - l i ne e se l ecti on-screen end-e f- t i ne Todos os cam pos de entrada definido s entre essas du as instruce es sao
colocados urn do lado do ou tre na mesma linha.

selecti on- screen s ki p 0 n-c- Essa instrucio cria umalinha em branco


para as n linhas na t ela de selecao .

A mai cria dos elem ent os inclufd os na se~ao anterior edo ripe cosrnet ico;
na pr6xima se~ao, vo ce vera algun s elemen tos de tela de selecsc que sao mais
especfficos para p roce ssament o de entrada de dad os.

667

~ ~_A & .I _A _ _A .~
668

-- -- -

APIEHDA EM 21 DIAl A1AP"


Figura

Parametres de t ela de sele<;60

21

14

A tela inidol

A instrU~o parameter nas telae d e selecac cria uma esrrurura de dados no


pr ograma que armazena a entrada inserida no campo Parameter pelo usudrio
em te mpo de execuclo.
Os para metres sao melb er utilizados quando a entrada de campo exigida
eurn valor unico, em oposi~ao a urn intervale de valores. 0 intervale validc de
valores pede ser determ inado pelo usuario dando urn clique na seta para baixo
ou pressionando F4 enquanto 0 cursor esti. no campo geradc pela instrutiao
para meter . Essa tabela de valor pede sec mantida pelo programador para incluir
valores persorializados para tra nsa gdes especjficas ou relatorics. A maneira
mais sim ples e direta de configurar a ajuda F4 e alocando uma eabela de
verificac fo para 0 dominic de campo no dicionaric do AEAP/4.

Domains.

Um domlnio descreve a s propriedodes dos compos de umo tobe lo. He define


lntervolc de vclo res velidos de dodos pore urn compo e caraderisticos de
compo especfficos.

NOVO

IItrr...

mWO ,.

Os dominios det ermtncm otributos como tipo de compo, comprimento


e posslveis relocionomentos de chcve estrange ira. A modifico ~oo de
um dominio outomoticomente o lterar6 as otributos detodos os elementos de dodos o nexodos a esse dominio. Isso e devido 00 fato de que
as elementos de dodos em urn domfnio herdom tcdcs os propriedodes
do dominio 0 que eles se referem.

Figura 21 15

A tela Domains

Display.

P ara visualizar ou executar a<;oes em um dominio, inicie na t ela de Data


D icti onary (veja a Figura 21.14). Verifiq ue 0 botso de op<;ao correspondence
a Domains e escolha 0 bouo para as a<;oes que voce quer iniciar .
Nesse exemplo, voce escclheu 0 modo de exibi<;3.o (veja a Figura 21.15).
Como pode ver, as caract erfsticas de dom inio sao exibidas na tela.
C om a instrur; ao par amet er , voce pede induir palavras-chave que podem
restringir a entrada com certas opcoes. Essas tre s palavras-chave sao as seguintes:

lower case - C om isso inclufdc na instrucio de selecao, 0 valor em


letras min usculas inserido no c~po de entrada nao e automaticamente convertidc para letras maiasculas, ao contrario do que aeontece para to dos campos de entrada no ABAP /4 em tempo de execucao.

obl igatory - Prolbe campos de entrada em branco.

defaul t -

Mantem urn valor padrao inicial para

parametro.

Os elemen tos de teste devem ser montidos pa ra elementos de tela


como Para meters a fim de oferecer a o usu6rio umo boo explicac;o o do
que 0 compo de entrada Selection Screen recresentc no contexte do
programo. Esses elementos de textc s60 independentes de idioma e
s60 exlbidos no idioma de logo n do vsvc ric.

~.- .:.I
670

..

]I - -

--- - - --

DIA 2UEUS DE sru\iO

I "RENDA E. 11 DIAS ABAP/4

Par a manter elemen tos de texto em suas telas de selecao, escolha 0


caminh o de menu Gorc-e-Text Elements do ABAP/4 Editor. Voce pede
manter todcs as tres tip os de eexrc pan seu programa a partir desse
ponto. Agora, verem os urn exemplo de edicsc de simbolos de texto (veja
a Figura 21.16).
A Figura 21.17 mostra a tela que permite a voce editar a s sfrnbolos de
texto que voce criou em seu programa. Se voce quiser adicionar m ais, digite urn
ntimero e seu textc e de urn clique n o batao Save. Tambem observe 0 re curso
Where U sed, que realmente muito uti!.

Figura 2 1 1 7

Mantendo sfmboJos

Mf' f ?!i ffl ii

Hie life

1:"'~[jf."tii*; lM'Or.JI."""""'",~iWJI.~.?"<t",,~:7'..,

Iii,.!
~~, :""4"'::. i-~~ "': ' ,:':';~.~ .;':"".""='.~

de fexto.

A tela de selec;oo checkbox


as parametres podem ser criados como campos de cla dos que contenham

apenas urnvalor de entradae tamb em podem sercriadoscomo caixasde selecto .


Q uando as Paramet ers assu me m a form a das caixas de seIel$ao. eles sao
declaradcs com o ripe C e dessa forma armazenam a valor de Xqu ando verificades e da tecla Espaco quand o Ilio verificados. Uma bo a utilizaclo do
parimetro checkbox e scliciear ao ususrio para indicar se ele qu er que certos
componentes de urn relatoric sejam exibidos.

Sintaxe pa ra selection- sc reen checkbox

Figura 21 16

A tela inicial

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

e melho r utilizada quando

se solicita urn deice valor de entrada . Se a entrada. requerida e melhcr representada em urn intervale de valores, a instruqao sele ct- opt i ons e.um campo
mais eficiente para se utilizar.

10YO ..

1Ib0 ,.

A instru ~o select-options gem umo tobelo inferno de setecec que ccnte m


o entrcdc pore os entrcdos de compo otribvidas.

AJ.elo de selec;oo sel ect -opt i oos


A instru~ao selec t- opt i ons e ut iliza.da. de maneira semelhante a instru~ao
paramet er s, no sentido de que cria criterios de selecac para urn campo de banco
de dados. A diferecca principal entre as duas e que a inst ru ~ao select-opti ons

671

672

APiENOA EM 21 DIAS " ../4

cria dais campos de ent rada qu e contem tanto urn campo FR()II com o um campo
TO. em oposi~io a somente uma Unica entra da de campo.

A sintaxe para se l ect -o pt i OOS


!!! A sintaxe para essa instrucio e aseguin te:
~

select-opt i ons ex sel l! for tabl e-fie ld default ' VAl UELOW ' to 'VALUEHI ' .

... A inslruc;oo select -optfo ns exlbe umo linho que normo lmente tem dots

ANALISE
compos para dados de entrada . Isso pode ser restringido para um 56 campo,
utiliza ndo a cl6usula no-i ntervals no sintaxe select -options . Par exemplo, se seu
progromo nao requer um compo TO perc entrada no linho de instruc;oo sel ec t - cpt t ons,
mas voce oindo quer utilizer a instruc;60 select-optio ns, ind uirio lese no dcvsulc

no- i nt er val s. Esso cldusulc, ossim como a no-e xtens i on, ser6 mois oindo explorodo

no exemploque cpcrece no fmc l destc set;60. Por enquonto, entretcnto, nos voltcremos
pore umo dlscussdc sobre 0 formata do tobelo de seleccc interne sele ct -opt ; ons.
Essa tabela intema e mantida com a seguinte form ate de campo, se 0
usuario clicar na seta para a direita do campo TO da sel ect -opt t ons. Clicando
nessa seta. voce abre uma tela de entrada Multiple Selections que preenche a
eebela intema de selecao. Essa tab ela enuc arm azena os atributo s-chave dos
dados de entrada, incluindo 0 valor SIGN, OPTI ON, lOWe 0 valor HIGH. Esses
recurs os da instrucao sel ect - opt i ons podem ter as seguintes ccndicoes:

SIGN - Pode significar INCLUSIVE, que e a padrao, au EXC LUSIVE, que


p ode ser mar cada na jane la Complex Selections.
OPTION- P ede armazenar valores 6T (entre), CP (contem padrac), EQ
(igual para) e GE (maior que au igual a).

lOW -

Arrnazena a entrada de valor no cam po FROM.

HIGH -

Armazena a entrada de valor n o campo TO.

Esse multiple select- opt ionpocle ser excluldc ufilizcndo-se 0 d6usulo


no-ext enst cn como dedorado onteriormente neste ccpuvlc.

BotPes de tela de

sele~ao

Alem do campo parameters e select-opti ons, a ins trucio de tela de sele~3.o


radi obutton e uma excel enee maneira de manter a integridade dos dad os
durante 0 processamento da en trada do usuario em tempo de execuclo. A fim
de criar Parameters como bot oes de 0p c;30, voce deve declare -los urilizando a
cliusula r-ed tcb ut tcn gro up.

A sintaxe pora urn radi obuttoo group

Ul

~m

A sintaxe para urn grop a de pardme tro radiobutton ea seguin te:


selection- sc r een begi n of bl ock r ad_blk with frame t i tle text-COO .
parameter s: red ext radiobut to n group one,
ra(exZ rad iobutton grouP. one,
rad ex3 radiobutt on group one .
selection - scree; end of bl ock rad_bl k

- - - - -- - - - - -- Esse exemplo gera urn gropo de trss parametres co mo bo roes de op csc.


Como voce pade ver, esses botoes de 0P~30 sao agrup ados em u rn blo co na
tela. Essa e uma boa prarica de programacao, porque ajuda 0 usu irio a. per cebe r
que tod os per tencem 010 mesmo gropo de sc licincac de entrada. Esses
pardmetros sao melhor utili zados para seleci onar urn unico valor de urna
configu ralj3.o de varias opcces e devem center p elo menos do is bo toe s par

grupo.
56 um desses tres botoes de exemplo pode.ser selecionado em tempo de
execuljio devi do a sua inclusac em urn gru p o. A integndade des dados e
mantida, porque essa e uma boa maneira de solicitar entrada muruamen te
exclusiva ao usudrio. Isso sed demonstrado mais ainda na se~o a seguir, em
que hi urn exemplo de um a tela simples de selec;.ao que utiliza muitos elem entos
de tela de selec;ao qJJ~ voce apren deu.

Exemplo de prog rama d e tela de sele~ao


A seguir est a 0 c6digo de exemplo para uma tela d e selec;ao envolve a maioria
dos elementos b:isicos:
report YJACOBJX message-id Y6.

* Database Table Def in it i ons


tabl es : mara.
select ion-s creen skip 1.
sel ect i on- s cr een begi n of bl ock blockO with f rame t it l e t ext -GOO.
sele ct i on-s cree n skip 1.
selection-s cr een begin of l1ne .
sel ecrtcn - screen pushbutton 10( 20) te ll:t- 003 user-conmand engl .
set ecttce- screen pushbutton 50(20) t ext -004 user-COlllMnd germ.
selettion- streen end of line.
set ect f on-sc reen end of blo ck blockO.
* Sele ction par ameters
selection- screen s ki p 2.
sele ct ion-s creen begin of block blockl with f rame t 1tle t ext -OCI
no in t erval s .
selection-s cr een begin of line.
parameter s : p ex! radi obutton group radl
.sel ect i on- scr; en conment 5 (30) text-ext .
selecti on- scr een end of li ne.
par ameters: p_jdatel t ype d default sy-datum.
. selecti on-sc reen skip 1.

674

L..IL...I

- - 0\l2HELlSDE Sllf\AD

APRE NDAEM 21 DIAl ABA f( '


selec tion-s cree n begin of line .
par aJleters: p ex2 rad 1ob;Jtto n group ra dl
se lection-sc reen COIlIIlent 5(30} t ext -exz .
se tecttcn-sereen end of line.
select -opt ions: s_jdate2 for mara- la eda.
selection-screen skip 1.
selection-screen begin of l1ne .
par arr.et ers: p ex3 ra d1obutto n group radl.
selection-screen carment 5(20) te xt -exa .
sel ecti on-screen end of line.
paramet ers : p jdat!3 li ke eere -teeda .
selecti on-screen ski p 1.
51!1ecti on-screen begi n of 11ne.
parameters : p ex4 rad1obutton group radl
se l e c ti on-sc ~en conrnent 5(30) t ext-exa.
selection-scree n end of line.
sel ect-opt ions: 5 jdate4 for Illata-lieda no-extension no i nt ervals.
se lecti on-screen end of block blockl.
selecti on-screen skip .
s el ect i on- screen begfn of bl ock bl ock2 with f rame t itl e t ext-CO2
no i nterval s .
set ectt on-screen begin of line.
parametl!!rs : P I!!x5 IS checkbox.
se1ecti on-s c~l!!n Camll!nt 5(30) text-exs ,
sel ectt en- screen end of l tne,
se tecttcn-s creen skip .
setectt cn-s creen begin of l i ne.
parameters: P ex6 as checkbox.
selection .s creen corrrnent 5(30) tex t-exs.
setecttca-screen end of tt ne.
se lection-screen s kip.
sel ecti on-s creen begi n of line.
paramet ers: P ex] as checkbox.
se le ction -screen corrment 5(30) te xt -e x7.
s el ect i on-s creen end of l i ne.
selection-screen end of block blo ck2.
AT sele ct i on-screen.
AT se lec t i on-s creen.
1f ( P exl - 'X' ) and
( ( pjdate l '" ' tEO?' ) or ( p_Jdate1 is initial ) .
message E017 w1th ' Sel ect i on Opt i on with Default fi eld has no val ue ' .
elseif ( p ex! - ' X' ) and
not ( ( p j"datel - ' l EO?' ) or (p jd at el is initial
message- tOp with ' We are now using Exampl e 1' .
endif.
1f ( p_ex2 - ' X' ) and
( ( s_JdateZ ' lEO? ' ) or ( s_Jdat e2 is 1nit141
message E017 with ' Sel ecti on Option using f or f i eld has no valu e'.
else1f ( p ex2 .. 'X' ) and
not { ( s JdateZ - ' l EO? ' ) or (s j dat eZ i s 1nitial
message-1017 with ' And now ExarJllle Z i s selected'.
endi f.
if ( P ex3 - ' X' ) and
( ( pj date 3. ' IEQ1' ) or (p_Jdate3 t s init1al
mess age EOI1 wi t h ' Parameter w/ l1 ke sta t ement field has no val ue' .
elseif ( p_ex3 - ' X' ) and

).

).

not ( ( p_Jdat e3 - ' l E01' ) or (p_Jd at e3 i s init ial


JIlessagl!! 1017 with ' We are now usi ng Ex~le 3'.
endt f ,
i f ( P ex4 - ' X' ) and
( ( s jdate4 - 'lE01' ) or ( s Jdate4 is initial
mess age E017 with ' Sel ect io n- Opt i on wi th no in t erval has no valu e' .
ets et f ( p ex4 ' X' ) and
not ( ( sj dat e4 - 'lEO?' ) or ( s_Jdat e4 15 i nitial
IM!!ssage J017 with 'We are now usin g Ex~ le 4'.
endi f . .
1f p_ex5 - X'.
per f onn getJlrice _data .
else .
message 1017 with 'No Pri cing Data sel ect ed ' .
endi f.
if p ex6 - ' X' .
perfortll get _cost_d ata.
else .
message 1017 with '/'(0 Costing Dat a selected ' :
endif .
1f p ex7 - ' X'.
perfonn getJevenue_data .
else .
mes sage 1017 with ' No Revenue Data selected' .
end1f.
form get _cost_data.

endf ol'1ll .
fonn get Jevenue_qata .
endfonn.
fonn getJlr1ce_dat a.
endfonn.

... Com o os botoes de 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

APRE NOAEM21 OIAS AUP/4

O.2UWSD SBfI,io

inserir multiplasselecoesau urn inrervalo,simplesmente de urnclique no ba tao

F i g ura 21 20

de seta branca (veja a Figura 21.22) .

as pot6me'ros e a
solidlo~60 de seta

F igura 21 18

pore baixo.

A tela Selection com


um"bIoeo relevonte
de decis60.

Fi g u ra

21 21

Escolho um volor
v6/ioo.
F igura 21 19

A telo Selection sem

b/ocos.

f lgllra 2 1

22

As ope:s Selection
com Extension.

677

ww
678

ww

------- - D~ , \,TILlS DE " lIlD I

APIEHDA EM ' 1 DIAl AB AP/4

Nesse ponte, voce pede inseri r todos as seus criterios de sele~ao e dar
urn clique no bon e Copy (veja a Figura 21.23).
Como pode vel', a seta mu dou de cor e agora everde (veja a Figura 21.24).
Is50 reflete 0 fate de que voce selecionou mrilriplas selecoes par a esse campo
e essas entradas preenc herao uma tabela de se1e~ao em tempo de execucgo.
Se urili zar as clsus ulas nc- extens t ons e no-trrterva1s na instrucao se l ectoptions, voce obtera urncampo de entrada que[uncionade maneira semelhante .
a urn cam po de pardmetro, co mplete com uma teela de seta pa ra baixo para ver
entrada, validas (veja a Figura 21.25). "

679

Flgur9 21 24

A tela $@o/edion com


o mo verdeativodo.

Tenha euidado ao utilizar valores-padrac paraas campos se1ect -opt ion.


Como pede ver na Figura 21.26, se voce preencher urn campo select-option
com urn valor padrao, 0 camp o DaD permitira que vocs veja as entradas vslidas.
A seguinte tela mostra urn exemp lo de uma rotina de valida~ao de dados
que utiliza uma rnensagem de in forma!ioes no formuIario de uma janelapop-up
que emeramen te informativo e sim plesm en ce pausa 0 programa. Isso emelhor
utilizado para comunicar status de evea tos no processamento de dadcs (veja a
Figu ra 21.27).
F lgur9 21

23

Insiro seus exig~ncias

de seleo.

Figura 21 2 5

A tela Selection sern


extens60 OIJ

inl'efYOios.

Voce tambe m p ede u tilizar um a mensagem de texto do tipo erro . Esse


ripe de mensagem acrescentara a programa e emitira uma meosagem de texto
na barra de status. Isso eutilizado principalmenre para validar dados na entrada
inicial (veja a Fi gura 21.28) .

aa
680

D~ 2UEUS DE SElf(.lD

APREHDA EM 21 DIAl ABAPH


FigurQ 21 26

select -option
comvalor podr6o.

Esse exemplo mo stra muitos element os de telas de SeICIi2.0 combinada s


em urn forma te simp les e eficiente . Examin e ocodigc que criou essa tela de

seleliao nos paragrafcs que precedem esse passo.

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

IFasa

lembre-se de utiliwr os elem entos de


te la de se'~ao pore a s torefos mois
odequodos pore elc s.
Projete sues te las de selecec o justondo
seus requisitos de entrcdo de dodos de
uma maneiro que sejo

Nco se esqvecc de ind uir bem-eloborodos


retinas de volidoc;60 de dodos que vtiJizem
as co pocidodes de evento do ABM'/ 4.

f6cil de ser

entendido pelo vsucric.

Como mencio nado nesse ultimo exemplo, e boa pratica utilizar instrU~5es de mensagem como avisos de valida~o de entrada em tempo de
execut;ao.
Figura 21 27
M ensogem pop-u p

vfjlizoda pore
vofjdo o de dodos.

Fig ura

21 28

h mensogens de
erro no borre de
status.

Utilizando a

instru~cSo

message

As mensagens sao rnantidas e armazenadas na tabela noo e podem seracessadas


a partir do ABAP Workbench. Urn prograniador efetivo emitemens agens que
sao descritivas e ajudam a usudrio a entender a natureza do fluxo do programa.
.E posswel atribuir a cada instrucao de mensagem tipos de mensagem que
tern diversos efeitos no resultad o do programa.

S-

Success, essa mensagem


seguinte.

e exibida

na linha de status da tela

A - Abend, a tranSa'iaO atual e interrompida e uma mensagem


exibida ate que 0 usuario confirme-a.
E - Error,

ususrio deve inserir dsdcs para con tinuar.

W - Warning, a usuario pode tanto modificar os clados de entrada


coma pressio nar Enter para prosseguir.

1- Information, 0 usuario deve pre ssionar Enter para continuer no


mesmo P OntO no programa.
Voce deve especificar uma instru 'iao de informe message-id no comecc
de seu programa.

681

.... .... . .. . . ... .. .


. ~.

682

D~ , I, 1WS DE s<lE\-iD

APREHDA EM 21 DIAl AB AP/4

Sintaxe para a instrUl;tio me s sage -i d

!:!!

A sin taxe para uma instrucio message id em UJ'J} relat6rio e a seguinte:

re port ",,,,1. f tne-ccunt 65 Itn e-st ze 13' .....,.-id rs .

FigurA

21

. ~.

683

30

A tela Oth~r
Development
Ob;eds.

Esse ID de dais caracteres e urn mimero de mensagem de rres dfgitos,


junto com 0 idioma, determinam as classes de mens agens. A SAP tom ou a
inclusso de instrucoes de mensa gem em seu prog rama rnais facil utilizando
camanda de instru~ao insert no ABAP/4 Edit or.
A Figura 21.29 ea tela facilmente acessivel que aparece quando se da urn
clique dup lo no nrlmero de ID de uma mensagem no p.,:,AP/4 Editor.
Vamos ccm ecar pelo O bject Browser e escolher Other Objects na parte
inferior da lista (veja a Figura 21.30) . Voce pod. pular para a tela Maintain

Individual Messages clando urn clique duplo no numero de ill cia niensagem
no AJiAP /4 Editor.
Em seguida , insira uma classe de mensagem e de urn clique no Jcone para
a a~o que voce quer executar. Nesse exemplo, de urn clique no modo Create
(veja a Figura 21.31).

. Agoravoceve atelaMaintain MessageClass; eaqui que voce pode inserir


os atributos da classe de mensagem que esta editando (veja a Figura 21.32). De
urn clique no botao de Messages para manter as mensagensindividuais.
Agoravoce esd no modo de edi~a o, 0 que corresponde a urn item na lists
de elementos de texto de mensagem. Depois que fizer as alteracoes necessaries,
de urn clique no.batao Save e sua mensagem estara pronta para ser utilizada.
Flguro 21

29

T~Ia jnicial ObjKt


Browser.

F igurA 2 1 3 1
A tela Mointcin
M essage Doss.

;...........~:.-~~"'"""_M~~~_~I:0~ ~ ......

I
I
I

II
,I

I
I

~~

684

I I I I I J,.-:I-. I I I I - I I I .I I

. .. .. ... .. ..........
~

"FIEND. Ell 21 DIU ABA PI4

D~

Figura 21 3 2

,"'".15

Of SRI\AD

685

As mensagens podem ser utilizadas para comunicar 0 st atus do programa e a validade dos dados inseri dos, bern como para inreragir com
o usudric de uma maneira que permira processar os dados mais
eficientemente.

A tela Moinloin

Individual
Messages.

Os elementos de texto devem ser mantidos para elemento s de tela de


seler;ao, de tal modo que 0 usuario tenha urn born entendimento do
uso dos varies objetos de campo para criterios de seler;ao.
Com

ABAP/4, voce p ede personalizar e modificar telas 16gicas de

sele~ao de banco de dados existentes para arender as suas nece ssidades

especfficas.

P&R

ddinida?

--'----------'-

IFasa

Lembre-se de utili zer mensog ens de uma


mcneiro que ajude a u$u6rio a Iraerir as

Nao se esquecc de especificor a


message -id ccrretc no Inklc de seu

dodos de modo mois eficiente.


FOl;O born usa dos classes existentes de
mens ogem de sistema a ntes de crier as

rel0t6rio.

suos pr6prias.

Campos adicionais que sao adicionados achave prima ria de uma


tabela de verificacso de chave estrangeira sao marcados como
genericos e, ponanto, ignorados pelo siste ma ao validar dados
icseridos no campo de cbave esrrangeira.

E. pcssfvel inserir vanaveis como mensagens de erro de sist ema au

o
Resumo
0 ABA P/ -4 e uma linguagem de programacfo baseada em eventos e
voce pede tirar p rovei to desse fato utilizando as eventos at se1ecti on-screen e i n; t i al i zati on, assim como 0 evento at user-conmand,
para vaLidarentrada do usuaeio utiliz.ando urn namero de tecnicas.
As chaves estrangeiras podem set utiliz.adas para verificar a integridade
de dados de entrada urilizando os campos de chave primaria de uma
tabela de verificaclo.

Os matchcodes u tilizam dados de pccl logicc para validar entrada de


usuaric baseados em criterios especificados de sele~ao quando utilizados em conjuncac com pardmetros de tela de selecac e opcoes de
sele~ao.

o que acontece se u rn campo de chave primdria eadic ionadc a


uma tabela de verifica~o depois que uma chave estrangeira foi

c6digo s de retorno em uma mensagem de texta?


Sim. Basta voce colocar urn "e" comercial (&) no lugar em que
voce qu er que a variavel apare.~a DO texto da mensagem e cham ar
a mensagem passan do pela variavel, de maneira semelhaaee a uma
instrucdo perform.

Workshop
o

Workshop oferece duas maneiras de voce verific ar 0 que aprendeu oeste


capitulo. A se~ao Teste oferece pergunus para ajudar a so lidificar seu entendimento do ccnteddc abo rdado e a se~ao Exercfcio permite que voc e pratique 0
que aprendeu. Voce pede encontrar as respostas as perguntas do Teste e aos
exerclcios no Apendice B, "Respostas is perguntas e aos exercfcios".

Teste
1. Como os dais tipos de matchcode trabalham juntos com
armazenamento de dados de matchcode?

rela~ao ao

-,

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

2. Se voce alterar as caracterfsticas de urn dominic, as caracterfsticas


vinculadas dos elementos de dados tambem irac se alterar?
3. Qual ea principal regra para estabelecer urn relacionamento de chave
estrangeira?

SEMANA

Exerdcio 1
Crie urn relatcric de tela de selecso que lisre eodos as compooentes de urna
ccnta de materiais em diversos idiomas. Construe campospara selecces de urn
intervale de combinacoes de materiais e plantas. Lembre-se de utilizar as
elementos que aprendemos oeste capitulo que melh ar se adequarem as tarefas.

Revisao
Na semana pass ada, voce realizou as seguintes tarefas:
produziu relatorios que utilizam sfmbolos grafi cos e leones

anexou titulos e rodapes a listas

enviou salda para


pr int

spool de Impressao utilizan do new-pase

familiarizou-se com as evenros in iti al izat i on, start -at-sel ecti on, end-cf-sel ect ton, t op-of - page e end- at- page
codificou sub-retinas extemas e internas e m6dulos de fun~ao.
e passou parimetros digitados e nao digitados para d es por
valor. valor e resultado e por referencia
estabeleceu excecoes dentro de urn modulo de fun~ao para
configurar 0 valor de retorno de sy-subr-c
criou telas de sele~ao utilizando a instrucic select-opt ions

A
Conven~oes de alribui~iio de nome
Convencoes de atribuic;ao de nome de
programas
Ha dais tipos de programa:
Relat6rios

Programas de diaIogo
Carla tipo de programa tern suas pr6prias convencces de atribuic j o de
nome. A Tabela A. I con tern as caracteres qu e nae sao permitidos em nome s

de program',
Tabel a A.l Corocteres inv6lidos para names de progromo
Cara ctere

Descri~60

Ponto
Vlrgulo

r,

Lacuna

()

Pcrenteses
Aspos simples
Aspas duplos
Sinol de iguaJ
Asterisco

Sublinhodo

..

Sino! de po rcentagem

Aeo s u os

Coroderes com trema e "'s duple clemco"

htIpJt-.mmpus.tom.br

~ I I" .I I .I I . 690

--

'PRE'" E. 21 DIAS ABAP/4

Conyen..6es para atribu i..60 de nomes a relot6 rios


as n om es de relato rio d e clien re segue a convencio

Yaxn:xxx au Zcccecce, onde:

N a mes de pragrarna de dialogo de c1iente segu e a convencfo

0 primeiro cara crere deve sec urn Yau Z.

0 compr:imento maximo de programa

e 10.

o segundo caractere ea fonna curta para a irea de aplicativo (vejaTabe1a

tern duas formas comumente utilizadas, a forma curta e a longa. H i tambem


urn c6digo utilizad o sa mente para nomes 16gicos de banco de dados. Esses

Ccntobllldcde finance ira (Finan cial Accounting)


Ge renciome nto de materia is
(Materia ls Management)

curta

FI
MM

Vendos e Distribuio (Sales a nd Distribution)

SO

Plcnejcmentc de produt;oo e centrole


(Produdian Plonning a nd Ccntrcf

PP

Tesou roria (Trea sury)

TR

Ge renciame nta de qua lidade


(Q ua~jty Mona gement)

OM

Sistema de proietc {Proiect System)

PS
PM
WM

Monutene;oo de planla (Plant Ma intenance)


Gerenciamento de estoqve
('Na rehouse Management)

Fonna

Forma
longo

O s dlcimos tres caract eres podern ser qu aisquer caracteres validos.

Programas escrieos p a r SAP devem seguir a convencao SAPMaxxx, onde a


a forma curta para uma area de aplicat ivo .

Intervalos d e nomes de c1ientes

Forma
LDB
F
M

mesm o quiser criar urn ob jero de desenvolvimentc, deve cris-lc no interualo


de nom e de cliente. As convencces para intervalos d e Domes de clientes sao
mostradas na Tabela A.3.
Tabela A.3 Intervclos de nomes de cllen te s pora todos o s o bjetos de
desenvolvimento do R/3

3
4

npo de objeto

5
6

ABAP/4 Query
Q uery

Appe nd Structure

10

Y* Z

10

YYZZ

i,

Appen d Structures

11

Contabilidade de ativa (.Asset Accounting)

Control ling 12

Atividod es de processo (Process Industries)

PI
1M

13

Area Menus

14

Avthorizotion s

LO
IN

21

CA

23

Desenvclvlmento Intemociona l (Internationa l

22

Development)
Funcionalidade ctroves de op licotivo
(C ross Application Functionality)

Object

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)

loglstico (Ge raij {logistics (Ge ne ra l))

I
I

Append Structure Fields

10

Notas

I
I

Fundion Gro up

HR

ConYen~ao

d e atribui'ioo
de nome

Recursos hvmcncs (Humon Resources)

G erenciamento de investimento
(Investment Manogement)

Comp rim.

Max.

Functional Area

SAPM.

o sistema de R/3 contem rnu it os tipos de objetos de de senvolvimento. Se voce

Tabela A.:2 C6d igos pare as 6reos de oplicotivo no R/3


Area de a plica~ao

O s p rimeircs quatro caracteres devem ser

0 quinto caractere deve ser u rn Y ou Z.

A.2). Por exemplo, urn relat 6rio de cliente para a Tesouraria seguiria a conv en c;ao Z5.:a:x.o:x, enquanto u rn relat 6 rio logfstico seria nomeado Z21xxxxx.
C ada area de aplicati vo pede ser representada po rum c6digo. Cada c6digo

c6d.igos.sao mostrados ~a T abela A.2.

SAPMYxxx au

SAPM2=, oDde:

0 segundo caractere represents a area de aplicativo.

Convencoes para otribuicco de nomes a programas de


di61ogo
.

NOo permitido no
2Q pos it;60

.I
692

~I-I

_I . - ..-. . . .- .-... - _ ~ _ --..-_

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

" PIENDA EM 21 DIAS ABAPH

APt,DIU A, CO'VE'IOB 0' ATRIBUI>\ODE 'OM'

Tabela A.3 Ccnft nucceo

Tabela A..3 Conti nuot;oo

Tipo de eblete

Comprim.
M6x.

Conven!roo
de atribul!rCio
de nome

C hange Docu ment Objects

10

Codepoges

Y or Z
9'

Notas

Data Elements
Dot e Element

10

Data Elemenf Supplement

y. Z

9'

Se 0 SAP criou 0
ele mente de dodos

Data Models
Doto Model
Enfity

10
10

Develo pment Closses

DialogModull!s

30

y. zy. t:
y. Z
Y ZtRP_*

M6x.

ConvenCjQO
de atribuiCjQo
de nome

Field Exit Func Module

30

FIELD_EXIT.:

User Exit Func Module

30
30

Conversion Exits
Se 0 diente crlou
o elemente de

"dodos

SAP Supplement

Tip o de ob (eto

Comprim.

GUI Status

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'

Dccurre ntction Modules

General,Text (TX)
Test Run Description

Mo;n Chopter(BOOK)
Chapter of lMG
Chcpter (CHAP)

Chopter Note (NOTE)


Release Information

Structure
O nline Text
Domains

Includes (Programo)

28
20
20
20
20
26
20
12
28
10

y. Z

y. zy' Z'
y. Z
y. t :

y. z
y. z:

Enhancement
Fund ion

Menu Exit

8
8

y. Z

y' Z'

Y z
ZffffUnn

Info Types

lock Object

10

logical Data bases

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.

User Exit Function Grp

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.

Enha nce me nts


Enhancement Project

Nota s

Y_ Z_

Message Classes
Message Numbers
Module Pools

ffH

= func group

Q = 6reo do
op licotivo (forma
LOB, vejo Tobelc
A.2)

693

-...
694

II!' !!!! II!',

-- - - - - - - - -

AP ~NOICE A; COHVENtOES DE ATRIBUJ9,O DE NOME

" 'REHOA EM 21 OIAS AUPI4

Dialog Module Pools


Screen Module Pools
Info Type Module Pools
Subroutine Module Pools
Update PgmModule Pools
Number Range Objects
Parameter Ids

Comprim.

Conven~ao

Max.

de atribuiCjoo
de nome

8
8
8
8
8

SAPDY' SAPDZ'
SAPMY' SAPMZ'
MP9'
SAPFY' SAPFZ'
SAPUY' SAPUZ'

10
3

Printer Ma cro s

Relation Ids
R/3 Analyzer Identifier

2
20

Reports

y. zy. z

Report Cat egory

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

1a corodere ndc 0-9

Pora tobelcs de
pool no pool
ATAB paro tipos
de informco de
cllente

P9'
PA9' PB9'
PS9'
HRT9' HRP9'
HRl9'

Tobie Pool Nome


Table Cluster Name
Titlebcrs
Tronsad ion Codes
Type Group
User Profiles

10

10
3
4

II
I'

y. t:
y. z

y. z
y. z

12

c ny

Pare soido de telc pora


progromos de di61ogo

Views
View Cluster
View Name

HelpView
View Maintenance Data
View Content
Table Content
Worlcflow O bjed Type

10
10
10

:I
I'
,I I
I

_ nee permitido

y. z
H_Y H_Z
reservodo no TRESC
reservoda no TRESC

10

Y' Z'

I,

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

Tabela A.3 Contlnuocuo

Tabela A.3 Conftn uocoo


Tipo de objeto

~ .- .- I- Y

696

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

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

"REND AEM 21 DIAl ABA PI<

Vo ce descobrirf que existe m poucos ob jetos SAP dentro dos intervalos


de nome de diente e que, portanto, violam as conven cc es de atribui~ao de no me
des critas aqui . Esses objetos foram criados ant es de as convenco es precedentes
serem adotadas. Uma lista dessas exceco es pede ser encont rada na tabela TOKZ.

B
.

Respostas cis perguntas


dos
,
testes e exerclclos
Die 1. " Q embiente de desenvolvimento"
Re spQsta s do teste
1.

SM04 (utilize 0 caminho de menu: Syrttm ->StatNS)

2. 5000
3. 5001
4. Tree. Hi urn banco de clados por sistem a de R/3 .
5. Tres: dais para os servid ores de aplicativo, mais urn para
de banco de dados.

servidor

6. O p en SQL e0 dialet o ANSI SQL da SAP. Eurn subcon junto e um a


vari.<;ao do ANSI SQL.
7. 0 Open SQL tern eres vantagens:

Eportatil p orque autom aticamente econvertido em SQL nativo


p elo compon ente de interface de banco de dad os do pr oc esso de
tr abalho .
Sopo rta tabelas de u tilizaci c de buffer, faz endo as programas
que 0 utilizam serem execun dos mais rapid am en te.

Oferece tratamento automdticc de clien te.

8. A pane de interface de banco de dados do processo de t rabalho


implement. O pen SQL.
9. Uma nov a area de rolagern c alocada sempre qu e urn prognma e
executad o, e c d esalocada quando 0 programa termina. A area de

hrtpJ I_

.campvs.c;om.br

-.A.A .
698

- -- - - - - -

- --

APEHDlCE 8. RESPOSTAS IsPER_ASDOS 1ISTES Emooos

APREH DA EM 21 DIAS Am"

rolagem con tern as valores das variweis para esse programa e 0


ponteiro atual do pr ograma.
10. Urn context e de usudrio e aloeado toda vez que urn usuario eferua
lo gon, e desalocado quand o esre eferua 0 logoff. Ele comem as
informacces sobre 0 usuario, co mo autorizacoes, con figura coes de
perfil e endereco de TCP/JP.
11. 0 roll-out ocorre no fim de urn passo do dislcgo . Ele libera 0
pr ocesso de trabalho para prepara-lo para Dutra sclicieacso, de
mo do que 0 pr ograms nao utilize a CPU enquanto espera pela
entrada de usuario.

diferenca na safda para esse programa, especificandc ou Ilia as aspas.


Entretantc, para evirar conversoes e uma boa prari ca de programacfo
e toma 0 programa mais eficienre.
1 report zt z020l.
2 tables ztxlfbl.
3 select * from zt xlfb1 where bukrs >- '3000'
4
order by bukrs lifnr descending.
5wr i t e : / zt xl f bl- bukrs , ztxlfb1 -1ifnr.
6
endset ect ,
7 If sy-sub rc <> O.
B
wri t e / ' no recor ds f ound' .
9
endtf ,

2. M ova 0 teste para sy-s ubrc depo is de endsel ect, como mos trado aqui:

Resposto do exe rcfcio 1

1 re port ztz02 02.


2 ta bles ztxlfal.
3 se le ct * from. ztx l fal where lifnr l tke ' IA' .
4
write / ztxlfall1fnr.
5
endse 1ect ,
6 if sy-subrc <> O.
7
wr1 t e / no records found' .
8
endif.

N as figu ras 1.28 e 1.31, 0 primeir o cam po nie tern 0 ripe CLNT;ponanto, a tabela
eindepe ndence de clien te. As instru\roes Open SQ Lopenrio em todas as linhas dentro
dessas ta belas. Nas figuras 1.29 e 1.30, 0 primeiro c:unpo na tabela e do tipo CLNT;
portanto. a tabela e dependence do clienee. As instrulioes Open SQL s6 operarao nas
linhas que tem 0 mesmo numero de cIiente que seu ndmero de cliente de logon arual,

Die 2 , "Sew primeiro programe em ABAP/4"


Respostes do teste
1. Al oca um a are a de tra b alho padra o para a tabela e da para
acessc a tabela de ban co de dados do mesmo Dome.

programa

2. A area de trabalho de tab ela padrac ea area de mem6 ria alocada por
uma insrrucac tabl es . Essaarea de mem6ria ternome smo nome e a mesma
estrutura que a tabela ide nti ficada na instruci o ta bl es. A instru cj c sel ect
utiliza-a par padrao se nao h ouver a clausula into.

3. N a area de tra balb o de tabela padrao.


4. P ara a mesma Iinha que a saida da instru~ao write anterior.

5. sy-subrc
6. sy-dbcnr
7. A linha 4 sera executada 30 vezes, uma vez para cada linha recuperada.
8. N enhuma vez. A linha 4 nao ser.i executada se a tab ela estiver vazia,

Respostos do e xerd cio de

programa~ao

1. Este relatorio exibe todos as nu meros e ccdigcs de emp resa do


fabricante da ta bela ztx l fb l , on de a c6digo de empresa e maier que
a u igual a 3000. N ote que bukrs e urn campo de caractere. Se voce DaO
cclccsr 0 valor 5000 entre aspas simples, a sistema automaricamente
a converted em caracrere paD a-comparacao. Nao hi nenhuma

..f: . .-

3.

Ha urn ponte ausente no firn da instrucio tables, e a rnimero do


fabrican te deve ser preenchido aesque rda com zeros porque de eurn
campo de .caractere no banco de dados. (Esse componamento e
inteiramente explicado no capitulo sabre con vers oes.)
1 report ztz 0203.
2 table s zt xl fa l.
3 sel ect * f rom ztxlfal where ll f nr
4
wt-tte / ztx l fa l - 11f nr .
5
endsel ect.

>

'0000001050 '.

4. A ultima linha da said. sera no r ecords found, mesmo se as registros


forem loc alizados . 0 problema esti na linha 6. 0 test e deve ser para
igualdade, n'o desigualdade .
1
2
3
4
5
6
7
8

report ztz0204.
tables zt xlfal.
select - fl"Olllltx lfal where l ifnr
wrf te / ztxlfal -l1fnr .
endse\ ect .
i f sy-dbcnt - O.
wri te / 'no records found' .
endif.

> 'OO0010 50'.

5. A instrucao write deve estar dentro do loop select .


1 r eport zt z0205.
2 tab les zt xlfal.
3 sel ect * f rom ztxlfa1 where lHnr
4
write / ztxlfal- lifnr .

>

' 0000001050' .

699

ri
I

.......................Aua.....--.JII.-A-~ 700

. - -

- - . -

,P!!lOlU HBPOOAS IsPERGUHTAS DOS 1ISTI5 EElIRdoos

' PiE' O' EM2101' S " ""

Dia 3, "0 Data Dictionary,. Porte ) "

5
endse lect.
6 1f sy-subrc <> O.

write I no records found

end if.

6. Veja 0 program. original , .atab ela zt xl f c3 ndo ~ utilizada: a d efini~o


para eta pod e ser removida da linha 2. 0 into ztxl fal na linha 4 naa
e necessaria , uma vez qu e zt xlfal e. a ,an a de trab alho padrao. As
linhas 5 e 6 podem ser encadeadas juntas. A segunda exp ress sc que
utiliza sy-dbcnt na linha 8 e redu ndante e po de ser re movida. A linha
12 nao precisa de uma area de trabalho explfcit a, enrao pode ser
removida. Consequentemente, as linhas 13 e 14 devem ser alterada s
para escrever ztxl fb l, e a linha 3 DaO e mais necessaria. As linhas 13
e 14 podem ser encadeadas junta s. 0 pro grama simplificado segue:
1 report ztz0206.
2 ta bl es: ztx lfa l . ztx lfb l.
3

4 S!1ect * f rom ztx lh l .


5
write : I ztx lfal- l1f nr,
6
ztx lfa l-namtl .
7
eedse 1ect
8 i f sy-subrc <0 O.
9
wr;te I ' no records found in ztx l fa l ' .
10
endif .
11 uj t ne.
12 sele ct * from ztx lfbl.
13
write: I ztxl fbl- l1fnr .
14
ztx lfbl- bukrs .
IS
. eneselect
16 11 sy-subrc <0 O.
17
write / ' no records found' .
18
end; f.

7. 0 erro de sintaxe e causado pela endsel ect na linh a 5. Ele deve ser
removido. Vo ce tam bem pode corrigi r 0 erro de sintaxe removendo
a palavra s i n91e cia in struqao se 1ect na linha 3. Enrr etant o, essa e uma
solul;ao menos eficiente, uma vez que apenas uma linha sera lida. 0
operador de comparaclo na linha 3 tam bem esta incorreto. Ele deve
ser .
report zt zOZ07.
tables ztx lfal.
select sing le * fro m ztxlfal where lHnr '0000001000'.
wri t e I zt xlfal- lifn r .
if sy-s uerc <0 O.
write I 'no records found ' .
endi f.

Respostos do teste
1. 0 do minic d.a a urn camp o suas caracterlsticas recnic as, como tipo de
dado e comprimento.

2. 0 elemento de dados con tern um nome de dominio, r6tulos de campo


para telas e listas, e a dccurnentacac de ajuda Fl.
3. Os dados de aplica tivo se refere m a da dos utilizados pelos aplicativos
de R/3 co mo SD (Sales e Distribution ) ou MM (Materials Manag eme n t) . Hi dois tipos: dado s de transacio e dad os-mest res. Exemplos
de dados de aplicativo sao ordens de compra (urn exemplo de da dos
de rran sacao) ou as inform a~ 6e s de fabricante (urn exemplo de dadosmestres). H i tam bem clado s de sistema, como dad os de configuracio
ou meradados de D D IC, alem de dados de aplicariv o.
4.

Nso, a posi~ao do ponto decimal e pane da descricao do campo. Ele


esta co ntido no domlnio, nao arm azenadc com 0 valor.

S. SE 16, SE17, SM30 e SM3l. SE16 i mais comumente utilizado, e SE17


nao pode ser utilizado pa ra arualizar dados.
6. Uma tabel a transparente tern urn relacionamen to urn para urn com
uma tabela no banc o de da dos. Tab elas de pool e de cluster tern
relaciona mentos muitos para urn com tabelas de banco de dados.

Resposto do exerddo 1
Para essa solucao, veja a tabe la ztz l f al do sistema R/3.

Re sposto do exerdcio 2
Para ver a solucao para a tabel a .. knal , veja a tabela zt zknal do siste ma R/3 .
A solu r;ao para 0 reLat6rio e a seguin te:
1
2
3

4
5
6
7
8
9

10

report zt z0302.
tables ztz knal.
select ... from ztz knal.
write: / ztaknet- kunnr , zt Zknal-namel ,
ztzknal-cityc , zt zknal-regi o,
ztzknal-1andl.
endsel ect .
1f sy- subrc <0 O.
wrl te / ' No rows found' .
endif .

701

~LA~.I_. _.I

I I I - I
,

.&.PENDICE B: RESPOSTAS As PERGUNT.lS oos TESTES EEXERdclOS , 703


-;,- ---------------"'==::::..::=:.:.:::===~=~

APRE!'lOA EM 21 DIA SABA P/4

Dia 4 , II 0 Data 0 ictioOl.la:ury+,.rP:l.aurt~eI;;U2,,-1_'

Re sposto do exercfcio 7
Para a soluca o desse exerclcio, visualize a tabela zt zknal onlin e do sistema R/3 .

Respostos do teste
1. Eles devem utilizar 0 mesmo dominic.
2. D entre de tabela ztl, digite . INCLUDE no campo de nome de campo e
zsl no campo de nome de elemento de dados, no ponto cia rabela code
a est rut ura deve ser incluida.
3. Urna tabelade text o ofere ce descricoes para c6digos contidcs em uma
tabela de verificacsc em multiplas linguagens.
4. mandt, spras, fl e f2.
5. Cada camp o de tip o CURR deve fazer referencia a urn campo de chave
monetaria (tipo CUKY).

Respostos d o teste
1. N so. Voce njo pede "unir" urn Indice a uma insrrucac select. 0
otim izado r semp re escc lherd urn Indice em tempo de execuclo.
2. Sim, mas voce deve aplicar a um a tecla de modificacao da SAP para
fazer isso. Pode ser feit o pelo ass. 0 Online Service System.
3. Sim, voce pode ut ilizar a ferramenta de analise de temp o de execucac
para me dir a difere nca.

Re sposto do exerd cio 1

Resposto do exercfcio 1
Para a sc lucic desse exerctcio, visualize a tabela ztzt005 online do sistem a R/3.

Resposto do exerclcic.Z;

Dia 5. 110 D ata Dictiona ry . Part e 3"

Para a sclucso desse exercfcio, visualize a tabela online ztzt005s do sistema R/3.
Nao se esqueca de comparar a cardin alidade e 0 cipo de campo de chave estrangeira
do relacionamentc de chave estra ngeira com aqueles especificados online.

Resposto do exerdcio 3
Para a solucso desse exercfcio, visualize a tabela online zt zlfa l do sistem a R/3 .
N so se esquelja de comparar a cardin alidade e 0 tipo de campo de chave esrrangeira
dos relacionamentos de chave est rangeira com aqueles especificados onlin e.

Resposto do exerdcio 4
Para a solucao desse exerctcio, visualize a tabela online zt zknal do siste ma R/3.
Nao se esqu eca de comparar a cardinalidade e 0 tipo de campo de chave
estrang eira de cada relacionamen to com aqueles online.

Resposto do exerdcio 5
Par a a solucao desse exerclcio , visu alize as tab elas online ztzt005h e zt zt005g
do sistema R/3. Nee se esqueca de comparar a cardinalidade e 0 ripe de campo
de chave estrangeira de suas chaves est rangeiras com aqu eles on line.

Resposto do exerdcio 6
Para a soluc;ao desse exerctcio , visualize a estrutura .. t el e as tabelas online
zt zl f al e ztz knal do siste ma R/3 .

Va para a transacao Data Di ctionary (c6digo de transacao SE12) e exibaastabelas.


Examineas configuracoes tecnicas.
A classe de dados qua nt o ao seguinte:
MARA: APP LOdados-mestres, tabelas transparentes (veja a Figura 5.21)
LFAI: APPLOdados-mestres, tabelas transpar entes (veja a Figura 5,22)
KNA 1: APPLOdados -rne srres, tabelas transparentes (veja a Figura 5.23)
A caregoria de tarnanho quanta ac seguinte:
MARA: a.regist ros de dad os esperados: 57.000 a 4.600.000 (veja a Figura
05,21)
LFAI: 3 registros de dados esperados: 11.000 a 44,000 (veja a Figura
05.22)
KNA1 : 3 r egistros de dados esperados: 9.600 a 38.000 (veja a Figura
05.23)
As figuras a seguir ajudam a explicar:
A cat egoria de tamanho de termine 0 requisito de espacc provavel para
uma eabela no banco de dados . Pressione F4 na caregoria de tam anh o de campo
par a ver 0 nti mero de registros de dados que pode ser mant iclo em suas
categorias individuais cia tabela sem complicacoes. Essas complicacoes podem
ser, por exemplo, uma reo rganizacao que toma-se nec essaria po rque 0 espaljo
maximo a ser reservadc para a tabela foi ex cedido, devid o a caregoria de
tamanho ma ntida.

I~

- . .-. .--."""". - -- - - 704

- ~ - - - .-"

'P~D1CE U ESPOSTAS ISPER.DNEM DOSTESTES EEXERdoos

'P REN D' EM 2101'S ,",PI'

1_. B'

h
~
~ '~ '-l*w ."" llOo"i. ~ "' ';''; '''' ';;
II

'

Ax

....~_::i:irW-'-.:

-H::I.t'JnO

- ".: :;':
- ~'-"

~~....

.Id '"

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

Dio 6. "0 Data Dictionary, Porte 4 "


Resposta s do teste
1. Sim. Q ualquer alteracao no domlnio ex.ige que ele seja reativado. A
tabela tambem deve ser reativada e uma verifica~ao de consistencia
deve sec executada,

Re sposta do exercicio 1
1. N o utilitdric de banco de dados, de urn clique no bono Delete
Database T able. 1550 "derruba" a tabela, que com 0 con teudc sera
exclufda. Voce pede recriar a tabela pressionando 0 bono Create
Database Table. A tabela sen recriada utilizandc a versso ativa da
tabela. Voce pede utilizar 0 utilitario de banco de dados. Seja cautelcsc quand o fizer isso em uma tabela na SAP.

Dio 7 . "Definindo dodos no ABAP/4 . parte ]"


Resposta s do teste
As solul1oes sao as seguintes :
1. A defIDi~o correta e ' Oon 1 I t bite.' Eta dev eria ter sido colocada

entre aspas simples e ela exige duas aspas cons ecut ivas dent ro dele.
2. A defmi~ao corret~ e 1+2 .2E03 ' . 0 caracrere de expoent e e E, DaO F.
e os decimais DaOsao permi tidos em urn expoente.

705

L&

.......II!!!!!!!Iool

706

-.....,L~

-.-.-.-- .~

.lPEHDlCI B: RESPOSTAS As PERGUHTAS DOS nsns EEXRClCIOS

APiE NDA EM 11 DIU AU r /4

3. A definicac esd correta.


4. A definiljio co rr eta

OOOOOF I . Nio deveria haver u rn titulo x. Urn

mesmo mimero de caracteres deve existir e deve estar em letras


maitisculas.

5. A definic;ao correta e ' - 9. 9' . Lite rais numericos que con tem d ecim ais
devem sec envolvidos em aspas simples e 0 sell sinal deve predo minar.

6. Valo res de POntO flutuante ni o pode m exceder 1+308.

7. Hnio eurn caractere hexadecimalvdlido. Os caracteres vdlidos sao A-F


e 0-9.
8. A defiaicic esta correta. V ma aspa simpl es e representada, Se escrita,
a saida se ria

.,. _

I.

9. A defwc;ao esti correta. V ma aspa dupla denrrc de aspas simples e


representada. Se escrita, a saida seria

I . I

As sclccoes sao as seguintes:

1. A defini,:;io correta e dat a st_f1(S)type c. Urn hife o Dio deve


aparecer na definiljio de urn nome de varidvel. a caractere sublinhado
deve ser utilizado no lugar dele.
2. A defini ~o correta

edata

fl type c. a tipo de dado para. cara crere

eC.
3. A definiliio correta e data f l (20) t ype c. N ac deve haver urn espalio
ent re 0 nom e de campo e iL espe cificacjo de comprimento.
4. as nomes de variav el nio devem iniciar com um numerico, e urn
comprimentc nso epermicido com 0 tipo 1.A definic;ao co rreta ~ data
al t ype t

5. A definict o corr eta e date

cent type p decimals 1 val ue ' 55. 51


Urn hifen na c deve se r utili zado em urn nome de varidvel. U rn decimal
eespecificad c no valor, mas a adic;ao decimal s esd. faltand a. 0 valor
con tern urn decim al, mas nia esd. colocado entre aspas .
per

6. A definiljao escl correta. fl pede armazenar tres digit os porque


(L'Z)-1 (Z'Z ) -1 3.

Resposta do exercicio 1
re port ztz0707.
par amet er s: p dat e li ke sy- dat um def ault sy-derem,
p-fie ldl ty pe c.
chckboxl as checkbox.
chckbox2 as checkbox.
radbutl radt obut t on group 91 dl!faul t ' X',
radbut2 radt obut t on group g1.

Dio 8 . "Definindo dodos no ABAP/4.. Parte 2"


Resposta s do teste
1. A primeira constante predefinida e SPACE e 0 format e literal equivalen re e I " ,

2. Os tipos de insrruco es que podem ser u tilizados sac dados e tipo de


estrutura. O s definidos pelo usudrio sao definid os no Data Dictionary para facilitar a manu tencao e aju d ar a reduzir redundan cia.

Re sposta do exercicio 1
t ypes : dollar (16)
p01nt(16)

t ype p deci mal s 2,


type p decimals O.

"pontes de carUo de

c r~ d i

to

dat a: begi n of usd amount.


hotel type dollar,
rent car type dollar ,
plane
t ype doll ar ,
food
t ype dol la r .
end of usd_amount .
begt n of arnex pt ,
hotel - type p decimals 2,
rent _car type point .
plane
type point.
food
type poi nt,
end of arnex_pt.

Re sposta do exerdcio 2
Out put:
1 3 4 5
9 8 7 6

Diq 9 , "Atribuil,;6es, convers6es e c6 Icu l...o"'sL"

Re spo sta s do teste


1. Vo ce pode utiliz ar eq au =. Par exemplo, move vara to verb. eo
m esmo que varb = ver a. au varb eq Yar d.
2. Os operadores e operan dos devem ser separados por espacos para que
as variaveis possam ser compu tad as.

Respostg do exerdcio 1
1.

sperz

2.

konzs

3. fdpos

707

..... ....
-

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

-.-.-. -. -

lPENDla B: RESPOSTAS is PERGUNTAS DOS rum EEXERdoos

"PREMOA EM21 DIAS ABAP/.

4.

-~~

709

Dia 11. "Ta be la s inte rn a s"

msgid

5 . matkl
As duas coisas erradas no programa sio a declaracac de ubela de ztxt 005t
e as aspas simples an tes cia variavel, 1and!. Declare a. tabela ztxt005t e remova
as asp as simples antes cia variav el 1andl .

Dia la, "lnstruC;6es de co ntro le comuns"


Respostos do teste
1. A resp osta ea seguinte:
case vi .
write 'The numbl!!r is five . ".
wr; t e ' The number 15 ten.'.
when ot hers. wri te 'The number 15 not f i ve or t en. ".
endcese.
when 5.

when 10.

2. Os operado res de strin g sao CP [ccntem padrao] e NP (nao contem


padrao).
3. As [ r e S instrucees de contrale de p rcgrama SiD exit, continue e
check:

A instrur;io ex; t eutilizada para prevenir que mais p rocessament OS ocorram nas instruljoes loop, select, do e while e nas subretinas introduzidas par fonn.

A instrucic conti nue e utiliaada para pular tawas instruljoes na


passagem areal de loop e ir pan a final do loop . Ela pede ser utilizado
com as instruo;oesloop, se lect , do e wh il e.

A instruci c check ecomo a instrucao conti nue mas pode cent er


uma expressao 16gica.

Resp ostos do teste


1. N a realidade, seu consultor de Basis configura urn limite para a
quantidade maxima de mem6ria estendida que uma tabela interna
pede alocar. Se voce exceder esse quantidade, seu pTograma alo cara
mem6ria privada do pr ocesso de trabalho e nao ma is sera capaz de
fazer roll out do seu programa.

2. Se voce fizer isso, 0 sistema alocara 8 KB da area de paginacao. A


mem6ria sera desperdicada e a paginao;:ao pod erf aumentar , resultando em baixo desempenho.
3. A insrrucao read ta bl e pede ser utilizada apenas para ler tabelas
int em as. Ela nao funciona com tabelas de banco de clados. Utilize
select single em vez dela.

Resposto do exerdcio 1
N os sistemas anteriores, as convers6es cram executadas convertendo a
partir do valor i direita do tipo de dado e 0 comp rimento do compone nte i
esquerda.

Resposto do exerdcio 1
report zt zl ool .
dat a: 11(2) typ e c.
do 20 ttees ,
write I sy-tndex.
do 10 t imes .
11 sr-tndex,
writ e 11.
enddo.

endee.

A conversdc oco rre no programa da seguinte forma:


I

- ->

C ZTXIOOI 000060

Ll SY-INDEX.

Nas linhas 9 e 10, havia uma conversao de c para n (de caractere para
numerico] e entao uma conversao de p para I (de pardmetr o para inteiro).
Na linha 16, havia uma conversao de p para I (de pararnetrc para int eiro}.

.'1

..~ Jl _I

710

.3
~.

I _ .. I

. . . 11 .. I

~.

. ~. ~. -.

..

I APRENDA E. " DIAS ASAP/'

Dio 12. 'Tobelos internos

-.

-.

APblDICIUESl'OSTASAs PlRGUNlAS DOSTES1I5EE1Etd aos I

oyon~odas.

Parte 1"

Respostos do teste
1. Sua alteralja o para sy- tab ix seria ignorada e as instruc;6es operariam
nalinha na area de trabalba . sy-tebt x ecomo sy-t ndex- modificando
qualquer urn naa iria afetar as operacoes de loop. Alem disso, 0 valor
de sy-tabt x ereinicializado no endloop, e a pr6xima passagem do loop
prossegue como se 0 valor nunca tivesse sido alterado.
2. A tinicacoisa que sy- toccu pede dizer a voce que outras variaveisDaO
podem e se sua tabela interna esta inteiramente na area de paginafjao.
Se for zero. ela esrara inteiramente na area de paginaclo . Isso oaa tern
nenhuma utiliz:lc;ao em urn sistema de producao, mas voce pede
acha-lc uti! durant e 0 desenvolvimento para confirmar sua expecta, tiva de como a memoria e alocada para uma tabela inrerna. Se, par
exemplo, voce espera que a tabela interne este ja na area de rolagem,
mas sy-toccu contem zero (indicando que esd, na area de paginacao),
voce pode precisar dar ma.is uma o1hada em sua clsuscla occurs para
determinar se ela esti. correta.

Resposta do exerdcio 1

report ztz1301data: begin of it occurs 3.


n(2) type n,
ty pe t ,
f2
f 3(2) type c,
f4
type P.
end of it.
it-fl '40' . it-13 ' 00'. 1t -12 a 1t -f4 4. append i t.
it-11 a '20'. It-13 .. 'SS' . it-f2 1t-14 2. append i t .

sort 1t by f1.
do 5 t imes.
1t -fl a sy-tneex 10.
1t-f3 a ' XX' .
1t -f2 a It -f4 .. sy-tnde x.
read table 1t
wit h key fl .. it-fl
binary s earc h
compa ri ng f 2 f3 14
transporti ng no fields .
if sy- sucrc 2.
modify it i ndex sy-tabix.
e1seif sy-subrc <> O.
in s ert it index sy-tab1x .
enddo.

s ele ct f rom zt xlfal i nto t abl e it.


n~o codif1que urn endselect
l oop at it.
write : I sy-t ebtx, ft - l andl , i t - regi a.
endloop.
ul t ne .

it- la ndl .. ' US '. modify tt in dex 3 t ra nsporti ng land1.


'it - regi o ' TX' . IIIOdify it transporti ng regio where regia " 'MA ' .
l oop at i t .
write: I sy-t abl x. t t -t andt , tt -reate.
endl oop.
free 1t.

ayan~odos,

Resp osta do exerdcio 1

endt f ,

r eport ztz 1201.


t abl es ztx l fa l.
data it 11ke ztxlfal occurs 23 with header li ne.

Dio 13, "Tobelas infernos

Parte 2"

Respostas do teste
1. Campos nu mericos (tipos 1 p e f ) saopreencbidos com zeros. 0 resto
dos campos a direita do nivel de controle sao preenchidos com
asteriscos.

loo p at it .
write : I it -fl , 1t -f2, 1t -13 , it-14.
endloop.

Re sposto do exerdcio 2
Eis uma maneira eficiente de corrigir 0 problema:
report ztz1302 .
tables : ztx lfa1.
data: begin of it occurs 10 ,
lifnr 'lf ke ztxlfal -1ifnr,
landl Hke zt xlfal-landl.
end of i t .
sele ct l 1fnr l andl from zt xlfal into table i t.
loop at it.
write: I i t-Hfnr-,

tt- tendl.
endloop .

.~.~

711

... . . .- -.-.- - a .. a a ........... a -a


712 , m HO'

W OlCEHESPDnASls PERGUHT,S DDSTESTEl EEXERdaos

EM21 01'5 " ""

Die ] 4 , II A instru!;oo wri te"


Respostos do teste
1. Voce deve desconecrar-se e conectar-se novamente no sistema R/3
para que as alterac;6es nos padroes do usuario tenham efeiro,
2. Uma m.is= de edi",o come" com urn v, quando aplicada a urn campo
numerico (tipos i, p e f), fazendo com que 0 campo de sinal seja exibidc no
ccmeco. Seaplicada aurn campo de caractere, a saida e realmenteurn V.
3. A adic;ao no- si gn, quando utilizada com variaveis de tipo i , p ou f,
suprime a saida do caractere de sinal. Em outras palavras,os numerus
negatives nao eersc urn sinal e apar ecerac como se fossem positivos.

Re sposto do exerdcio 1
1 report ztzl 40l.
2 write: /
. . . . + 1. + 2 + 3. . + 4'.

' Fi rst ' ,

40

/ 16

/30

'beceeee r-",
'January'.
' Fi rst '.

Di e 15. IITecnices de formete!;o o, Perte ]"


Respostos do teste
1. As erss adi~6es graficas sao symbol s, ic on e 1i ne. 0 pro grams deveter
uma instrucl o i nclu de, i ncl ude < >. par a cada urna das adicoes
graficas a fim de utiliza-la. P a r exemplo:
i ncl ude <symbol> for symbols ,
1nclude <1 con> for ico ns .
i nclude <line> for li nes .

2. As duas adic;6es ut ilizadas com a instruc;ao re port sao tamanh o de


linha e contagem de linha. As varifveis utillzadas para as adic;6es
devem ser numericas, po rqu e ccntrolam 0 tamanho da pagina.

Die 16. IITecnices de formote~oo , Perte 2"


Re sposta s do teste
1. A inscrucl c back pode ser uti lizada para reeornar a posicsc de saida
atu al.
2. U tilize 0 ski p sy- 1i net em vez de new- page quando quiser configu rar
uma n ova pagina e quis er urn rodape n a parte inferior dess s psgina
atual.

Resposta do exerdcio 1

sy-1 inno sempre contem a num ero da.linha atual da lista. Nesse ponte,
ele e configurado como a linha que se segue aos titulos padrao da
pagina. A linha 13arribui esse valo r avarifvel. 0 ccntrole retom.a para
a linha 6 e Aeescrito. Em cada sucessiva passagem p elo loop, a hnha 8
incrementa a valor de e a linha 9 co nfigu ra a linha de saida atual. Isso
resulta nas linh as escritas sucessivamente na safda,comecando na linha
segu in do as titulos padrao.

Re sposta do exercfcio 1
report zt:1501.
i ncl ude <symbol> .
write : / 4 sym f i ll ed square as symbol . ' square' ,
/ 4 s)'lll) i ll e(dla mond as symbol , ' di amond' ,
/4 S)'lll f1ll ed ci rc l e as symbol , "ct rct e ",
/ 4 syr'I-gl assei as symbol, ' gla sses' ,
/ 4 SyrI- penci1 as symbol , 'p enci 1' ,
/ 4 S)'1llyhone as syrnol , 'phone',
/ 4 S)'II note as syrrbol, ' not e'.
/ 4 S)'lIl)older as symbol . ' fol der' .

A linha 3 comeca em urn loop do. Na primeira passagem par ele, a


instru~o write na linha 6 aciona 0 evento top-of-page. 0 valor de

A linha 4 comera em urn loop aninhado do. A ca.da pass agem par ele,
a linha 5 configura a posi~ao de salda atual como igual a iteracao do
loop atual . A posicac atual de salda e co nfigurada como 1 na primeira

713

714

APREHDA EM 21 DIAl ABAPI4

AP!NDlCE UESPO\TAS 'SPER'UHTAS DIB1IITES HXERdolB

vez.Na segunda vez e configurada como 2 e assim por diante. Isso faz
com que a linha 6 escreva a letra A quaere vezes , nas colunas 1-4.

Dia 17,. "Modulariza~oo ; eyentos e sub-rotinas"


Respostos do teste
I. Nao.
2. Nao utilize stop nos seguintes eventos: i nit i ali zat1 on, at sel ect i onscre ~ n output, top -of- page e end-af-page. Tecnicamente, ele pede
funcionar com tnp -cf-paqe e end- cf-paqe se voce nao utilizar as
insrrucoes wri te dentro de end- af - sel ecti on, posteriormente.

3. Para ser preciso, urna variavel somente e conhecida dentro de urn


prog:ama depois do POntO em que e definida. Por exemplo, se vo ce

definisse uma variavel na linha 10. seria capaz de acesss-la na linhas


11 e mais tarde, mas nae nas linhas 1-9. No case de urna definiciof ocal , voce po.d: acessar a vers ia global da variavel em qualquer ponte
antes da definicgolocal,

Dia 18, "Modulariza c;oo: passa ndo pornrnetros


para sub-roti na s"
Respostas do teste
1. Os names de pardmetro que aparecem na instrucic fonn sao ch.amados
parJm etrosftmnaiJ. Esse termo eficil de lembrar porque formalpossui 0
radical form . Por exemp lo, na instrucao form s l using pt changing p2
p3, a s parametres p l, p2 e p3 sao chamados param etre s formais.
2. Pas sar uma varia vel do tip o de dado errado ou comprimento para urn
pargmetro digitado causa urn erro de sintaxe.

3. Nova mern6ria Ilio ealocada para a valor. U rn pont eiro para a posic;ao
original da memor ia epassado, em vez disso. T odas as referencias para
o parimetro sao referecciasa posic;:ao original cia memoria. As atterac;:6es na varia-vel dentro cia sub-retina atualizam a posic;:ao original
da m em6ria imediatamente.
4. As duas adic;:6es usi ng f1 e changing fl passaro fl par referencia

c-,

elas

Resposta do exerdcio 1

utilizadas adequadamente, elas podem dccumentar se a sub-retina


alterari urn pargmetro ou na o.

. REPORT ZTZ1701 NO STANOARD PAGE HEAD I NG .

TABLES ZTXLFAI .
PARAMETERS P_LANOl LI KE ZTXLf Al- LANOl.

Resposto d o e xercicio 1

INITIALIZATION.
P_lANDl 'US'.

A seguinte saida

e gerada:

Top of page, f la g S ct r

START-OF-SELECTION.
PERfORM CREATE_REPORT.

i n Start -Of-Sele ction


pi :::

FORM CREATE REPORT.


SELECT * FROM ZTXLfAl WHERE WDI P lAMD!.
PERFORM WRITE REC .
EHDSELECT. EHDFORM.
f ORM WRITE_REt.
WRITE: I ZTXLFAl-LIFHR. ZTXLFAI-NWI. ZTXLFAl -lAMOl.
ENDFORH.

TOP-Of- PAGE.
FORMAT COLOR COL HEADING .
WRITE: I 'Vendors wit h Country Code ' . P lANDI.

Ull NE.

SaO identicas na func;:ao. A ratio pela qu al as du as existem eque,

A se'ia-o de inicializacfc Ilio e executada porque nenhurn criterio de


seleliao esta pr esence no programa. 0 evenrc Sta rt-Of-Sel ect i on eexecutadc.
Quando 0 programa obtem a primeira instrucao wri te, 0 controle no programa
e passado com a evento Top-of-p age . Quando 0 evento Top- of -p age esd.
complete, 0 controle e passadc de volta para 0 event o Start-Of-Select ion.

Dia 19, "Mod ula rizac;oo: mod ules de funcco,


Parte 1"
Respostas do teste
1. Verdadeiro. Vo ce nunca precisa especificar u rn valor para urn pa ra-metro de imporracao que tern uma proposta.
2. Verdadeiro. Voce nunca precisa codi ficar param et ro s que sao exporcade s do m6dulo de fun~ao.

715

A.-I""'" .... -._....

::A' .....
716

-I

. - .- -..~

- . -. -

APt'D'" So RESPOOAS IsPrn;uHTAS DOS 15TES'ElERCiaDS

APRE'D' E. 21 01'5 ABAP/4

Rasp.osta do exercfcio 1
programa executa, a tabela interna e pre enchida e 0 modulo de
com 0 coareudo cia tabela intema
apar ecerd. D ep ende ndo cia entrada escolhida pelc usuario , eta entao imprimira
utilizando a insrrucic writ e.
Q uando
un~ao

e chamado. Urna janela pop-up

Dia 20, "Modulariza ~co: modules de funcco,


Parte 2"
Respostas do te ste
1. As definiJ;oes de clades de dais dos parametres devem ser idecticas.
2. Utilize 0 ca.rninho de menu Function Module-Release-Cancel Release.
3. . 0 programa sera. abortado e resultard urn dump curto que tern 0 eITO
de tempo de execucto RAISE_EXC EPTION.
4. Elas DaO devem ser utilizadas dentro de m6dulos de fun93.0. Em vez
disso, a insrrucio rai se deve ser utilizada porque eta ativa 0 charnaclor
para confi gurar 0 valor de sy- subrc no retorno.

Resposta do exercfcio 1
I" function z_tz_dh .
2 .-- ------ - - --.-- - --- - - - - - -. ------ -- .-- --------- -
3 local interface:
4
lKf10RTIHG
5
VAlUE(Pl) TYPE 1 DEFAULT 1
VAlUE(P2) TYPE I
6
7
EXPORTING
VAlUE (P3) TYPE P
8
9
EXCEPTIONS
10
ZERO_DIVIDE
11 .... - - - - - - - - - - - --- - - -- --- - - - - - --- --- - - - - - - - - - - - - - --- - - --12 if p2 D.
13
rais e zero _dlYide .
14
endlt.
15 p3 pI / p2.
16 endfunction.

Dia 21 , "Telos de sele<;co"


Respostas do te ste
1. Os dois tipos de marchcc de configurado sao ffsico e icgicc.
Eisicamente, os dados sao armazenadcs em uma tabela separada.
Lcgicamente , os d ados sao gerenciados pela visualizacao de banco
de dados, qu e ~ a mesma que 0 armazenamento tra nsparente.

. . . - - - - - --

2. Sim, as caracterfsticas de urn dominic vinculado com elementos de


dados tambem sersc alteradas, porque as elementos de dados em urn
dominic herdam todas as propried ades de urn dominio que sao
referenciadas.
3. A regra primaria para eseabelecer urn relacionamento de chave estrangeira e definir e vincular urn relacionamento entre multiplas

tabelas.

Resposta do exercfcio 1
report ztz2101.
tables : mara , tOOlw .
Selection parameters for 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

ajudaR/3 Library, 64buffers Cut and Paste;


59-60

cont rcles de barra de


ferramenw
Application, 57-58
contrcles de b21T2 de
ferramenw .
Standard, 52-56
fun~6es, 61-63

hllpJt-.cumpus.com.br

tutorial ,63
tela inicial
ajuda, obtendo, 6S
prcgramas,
p rocu ran dc, 66
u tiliza~es,

50
ABAP/ 4 Key Wor d Doc,
ccm and o (men u
U til ities). 520
ABAP/ 4 T ext Elements:
Change Ti tle and
Heading. tela, 503
abordagem bottom-up
dominios, criando,
110- 111

elementos de dadcs,
criando, 11 3~ 11 6
tabelas, criando, 107
eabelas transparenres,
criando, 117-122
abordagem top-d own,
tabelas
adicionando campo a,
122-113
crian do, 107
Accou nting, menu,
comando Accounts
Payable, 13
acessand o
biblioteca de fun~o. 586
Ierramenta urilitaria de
banco de dados,
218-2[9

now de versac, 96

acrescentando campos a
tabelas, 126

Active, versoes de tabelas


comparan do com
Raised,2 17
comparando com tabelas
de: banco de dados,
2 19-220
descri ct o, 2 16

adapt2!roc:s automaticas e
iostru'iao move. 285-287
ad2 pta~oes de comprimento
e tipos de dado.
instru'.?o move, 285
ada pta~6es de tipo e tipos
de dados, instru~o
move, 286-287
adi~ao arre don dada,
instru~o write, 470-471
a di~ao bina ria de pesquisa,
instru~o read table, 359
adi,?o de campos
correspondentes, 421-422
adi~ao decimal, instru'.?o
wri te, 470-471
adi~ao e correspondences,
instrucoes, sintax e, 299
adi~o monetiria, instru~ o
wri te, 471-473
adi~ao. subtr.l,?o,
multipllcaeio, divisao e
ccrrespondentes,
instru~6es, listagem, 299
adi~Oes graflcas, tipos, 697

720

AP REND A EM 21 nus ABAP/4

a d i ~oes, descricfo, 236


Adm inistration, ccmandc
(m enu Tools), 21

aju da Fl
campos. adiciorando a,
135-13 6
docu m enta~ io de

elementc de dados, 113

elemen tos de dados e, 102


inserindc linh as em
u belas, 130
links de hiperrexto,
adicionando.1 36-138
tela ABAF/4 Ed itor. Edit
Program, 64
tesrandc , 136
a juda, po ssiveis entradas,
150
ajuda, sistema de
ABAP/4 Edito r
ajucUF l , 64
eodigcs-fonte, ajuda
ao editar, 65-66
Initial Screen, 65
Rl3 Library, 65-66
tut orial,64
ajuda Fl
campos, adicionando,
135- 136
elementos de dados e,
102
inserindo Iinhas em
eabelas, 130
links de hiperte xrc,
136-13 8
testa ndc, 136
ajuda F4, chaves
estran geiras e, 150..1 51
ireas fun cionais, 10
diilogos de manuten';i o.
134
dominios, 111
alinb3m ent os, 30J

INDICE
alccandc dados glcbais, 620

alter.tndo

fl. ucilizalj6es, 715


nomes em eabelas, 125
padrces do usuf ric , 712
parametres, descricrc,
607
pane de interface. 623-627
ambiente de texto,
defini~o, 380

analise de programa.
realizando, 319
aninhandc estrutu ras, 172
ani nhando loop s do, 713
ano s fiscai s, pertodos de
publica;ao, 439
aplicarivo, areas, c6digos
para , 690
ap licativo.dadosde
defmi~o, 97
tipos , 701
apl icativos , conjuoto
padrio, 7
ap pen d lines , inst.ru'iao,
392
app end sorted by,
instrUc;ao, 413-417
A ppen d Structu res, tipo de
obj eto, 691
append. ins tru cio, e tabelas

int ern as
adic;:io de ocorre ncias,
357-359
sin taxe, 354
APP Ll, classe de dados,
desc ricio, 194
APPL2, classe de dados,
descri cac , 194
Appl ication Logs, ti po de
obj eto ,691
applicatio n, barn de
ferrame ntas (ABAP/ 4
Editor ). 57-59

A pplicatio n, berra d e
ferramentas, 16
batao Foreign Keys,.liS
bo de O bject Log. 230

botio Technical Settings,


193
criandc bcroes em, 656
Applications, area do menu

principal , 10
APPLO, classe de dados ,
descri~o , 194
ar ea de tela de m enu
principal . 17
Command Field, 19-20
In terface Menu , 17-19
ar ea de ~balho de tabela
padrio,descrlc;ao,698
area funcional ,
conhecimento, 9
Area Menus. tipo de objeto,
&91
areas de pagina;ao.
sy-toccu e, 710
areas de trabalho expl fcitas,
77,354
areas de trabalhc imp licitas,
354
areas de trabalhc, exp llcitas
versus im plfcitas, 354
areas fu ncionais (m6 dulos )
Ionres de inf or m2'ioes
em, 10
visio geral, 8
areas trahalho de tabela,
76-78, 354, 564-566. 698
arredon da m en to,
especific ando, instru 'i:\o
wri te, 482-490
at end of, instru'iio,
440-441, 448-449
at firs t, insttuc;:ao, 440-444
at last, i ns tru ~o, 440-444
at new, ins truc;io. 444-447

at selection-screen, even to,


&55
at user-com mand, evenro,

buffer em dados no
servidcr de aplicativc

655-65&
ativando

definindo 0 sistema Rl3

m6dulos de funlSio,
&04-605
.objeros, descri~o, 107
atribuip,o di.n.amica,
simbolos de campo,
309-310
atribuip,o. ins tru;6es

clear
corn adic;ao, 289-290
sintaxe, 287
codificando.291
descri~. 286
move, 291-303
adaptac;oes
automancas.292
regras de cc nversjo,
exibindo, 295
strings de campo,
297-303
subcampos, 296-297
move-corresponding,
sintaxe, 303
arua lizando tabelas com
buffer. 201-204
AVI select, in s tru~a o,
proc essamen to, 74

B
Back, controle (barn de
[erramentas Standard).
ABAP/4 Editor, 53
back, ins tru ;io
sinraxe, 537
utiliuc;oes,713
Back, tech. pression.ando,
75
banccs de dados

no Open SQ L, 36-37
com o, 26

portabilidade de ecdigc,
36
prcjeeandc e
desenvolvendc, campos
Valu. Tobie, 165
suporudos pelc R/3, 21
barra de sta tus , 17
barns de ferra m entas
Ap plication (ABAP /4) ,
57-59
Application, 16
bode de Log de
c bjetc, 230
bot i o Foreign Keys,

148

bcu c T echnical
Setting s, 193
criando botbes em, 656
Standard (ABAP/4
Di ctionary),67
Standard (ABAP /4
Editor)
cont roles, 52-53
recu rso Find and
Replace', 54-57
Standard, 16
Co mmand Field, 19
Fin d button, 280
barns de menu, 16
barras de tfrulo, 16
Basis, area.do menu
principal, 10.20-22
Batch Data
Com mun ications
(BDC) , chaves
estrangeiras e, 152
bibl ioteca de fu n~o ,
d es cri ~o. 602

bl occs (elementos de
se le~io de tela),
dcscric;,io, 667
botoes de 0 P~oJ efeieos em
caix2s de grope, 51
buffer em registro unicc,

208-209
buffer em tabelas,
u ti lizando, 196-213
atual izandc Infc rrm cees,
201-204
buffer em sincron izacsc,
197-201
bypass de buffer, 204
eecsrics, 211-212
deslocamencc de buffer,
210
resumo.212-213
resumo das ccnfiguracees
tecniC2.!,221-222
tecnicas .204-205
tipcs de uso de buffer
cheios, 206-207
genericcs, 207-208
registrc unico, 208-209
resurno, 209-210
buffer, slncronizacio
descricsc, 197
intervale, configurando,
200
buffer. urilizaljao completa,
20&-207
buff er, uriliZ2~o generics ,
207-208
bu ffers Cut and Paste
(ABAP/4 Editor), 59-60

buffers de programs,
descri;ao, 236
bypass de buffer para
tabelas, 204
bytes de preenchimeato,
301,303

721

..... I

722

I _I I

mensagen s de erro,

psg ina

centr.dizando,516
format ando c imprimindo
cabecalhos manuais de
pagina, criando,
519-52 0

cabecalhc s padrio de

pagina,
arm azenandc , 514

cabecalhcs padrio de
psgina, criando,
513- 515

cabecalhos padrao de

pagina,tradualadc,
515-517

cabecalhcs padrio de
pagina., utiliundo
varifveis em, 517-519
csb ecelhos padri o de
pagim,
visualizando e

modificando,
514-515
rcdapes de pagina,
criand o, 520-523
cebecalhos e rodapes,
formatando e
imprimindo
cabecalhos manuaisde
pigina,criando, 519-520
eabecalhos padrio de
pagim
~azenando,5 14

criando, 513-5 J5
m.duundo, 515-517
utili zando variaveis
em, 517-519
visualizan do e
modi ficando,
514-515

i!a

- . -. -. - ~ I I

...
INOlO'

cain de didlogc SAP Rll,

cabecalbos e rodapes de

~'

~ .~ .- .-

APlEN DA EM21 DIAS AUP/4

: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

corr espond ences,


sin taxe, 306-307
calculos , reallzandc
adicione e adicicne instru ~6es

correspondences,
sia taxe, 306-307
data, 308-309
insrru~o

compute.
op eradores para, 305

ins tru~o

compute,"
sineaxe, 305
call function, instnl~a o ,
609-611

inserin do
auromaricamente, 613,
649-650
Iiseagem de parimetros,
6 12

sineaxe, 610-611
camadas (tien), dd uu(io, 23
cam pos
ajuch Fl
.2.dicionando, 135- 136
links de hipenexto ,
adicionando, .
l3 6-m
links de hiperte:l.:to,
solucionando

p roblemas, 138

reseandc, 136
alterandc 0 comprimento
de, 10<, 127-128
campos de quaneidade,
requis ites, 170
campos mcneurios,
168-169

chaves estrangeiras,
detennina~o

auro mdrica de. 149-150

controlan do a ex ib i~o
de, 71
convencees par:l. auibu i~o
de nome, 105
criando dom in ies, 103
elementos de dados, 102
instru~i o select. em
adi~o de eabela, 430
pcntos decima is, 701

ca.m.pos-chave

descricac, 156

I:

padri o, instrU;io read


tab le, 370
tabelas de textc, 157-160
Cancel, ccntrole (barra. d~

ferrame ntas Standard),


ABAP/4 Editor, 53

ScreenCams, instalando ,
44
utilitirio C opylt, J24- 125
centralizando cabe;al.bos de
pagina, 516
chamandc m6dul os de

luD(io, 609-6 13
dado. glob';', 619 -622

cancelando a versao do
m6 dulo de fun~o, 629

execu tandc urn exemplo,


611-6 13

cand idatos chave, des cri~ao,


156
cara ctere, literals de string
de, 239
caractere, operadores de

instru ~o

string de. instrU~o if,


321-326
caractere, tipcs de dado
descri~,2#

call function ,
609-611,613

Change Document Objects,


eipo de objeto, 692
Change Vendor. In itial,
te la, 12
change. documentos,
21 8-220
change, m od o, defini~o, 5 J
cbaves estrangeiras

vaU~ de dados,

vertl5~d o, 144-145
cbaves estrangeiras

adaptadas, defini~o, 163


chaves estrangeiras
compostas, 1521504
chaves esrrangeiras
constantes, defini ~o, 163
chaves estrangeiras

Value Table
chaves estrangeiras e,
164-165
como proposta Check
Table , 166-167
prcposito, 165-166
sem chaves
esrran geiras, 168

Search/Replace, 55
caracteres especials, t ela

cardinalidade de. 154, 658

siataxe, 340-341

Search/Repla ce, 55
caracteres hexadecimais, 706
caracteres inv aIidos em
no mes de programa, 689

colun a CheckT able, 149


cornpos~, 152-15-4
constance, defmi~o , 163
criando, 1-46, 1049

ueilizacces, 708

cardiaalidade

descri~o, 144, 656

cam pos de referenda.,

defiD.i~o. 169
cam pos d e sist ema. data
areal e tem po . 244
cam pos empacota dos,
comp ri me n tos de saida.
463

cam pos m on ecl n os. 168


campos numericos, 299, 710

chaves escaogeiras, 15-4,


658
descri~,

658

nlores de X, 155
valores de Y, 155

case, instru~o. sintaxe.


326-327

CA17 F lows, tipo de


objeto , 691

CD-ROM

achpada, d efini~o, 163


campo Value T able.
164- 165
como prcpcsta Check
Table , 166 167
pr opcsitc, 165-166

determina~o aurcmatica

de camp os, 149-150


genericas, d efini~ao,
161-163
programas em lote e.
152
testando, 149
tipos de campo, 156-160
carnpos-chave, 156,
157-160

1 61

chaves pri.marias . indi ces,


184
Check. Table, proposta,
campo Value Table
como, 166-167
Check, controle (barn de
[erramentas

movendo de um.astring
de campo para outre,
300-3 01
caracteres eceueuado s,
classifiando, Iistagem,
380- 381
caracteres cu.ringa, tela

Application), ABAP/ 4
Editor, 58
check, instru~o
comparando instru es
exit e continue, 341
instru~ao loop at e, 364

Check.Table, coluna (tela


Dictionary:

Table/Structure ]
chaves estrangeiras e. 149
fun c;6es de. 167-168

CIA, CN, CA e NA,


lisbgem 322
classes de dados, 194
cJassificando instnJ~o
select em adi;a o de

"'bela, 428
clear. instru~ao
com adi~o, 289-290
sintaxe, 287, 0407

util i.zand.o para,


657-659

genericas, defmi~o,

723

candidatos-chave.
156-157

refereaci a, defini~o, 169


rabelas, adicionando a
abordagem top-down,
122-124
acrescent ando , 126
inserin do , 126
tabelas, excluindc de, 127

ajuda F4 .. 150-15 1

A A A A
724

A.a a a A ~ ~ - , . -. - -.-. . -.- - - - - i

APRE II DAEM21 DllS HAPH

cliente de logon, definiio,


32

clien te/servi dor de duas


eatnad2s,descri~o,23

cliente/servidor em tres
eamadas
des cri~,23

RJ3 arquieetura de sistema


servidor de aplicativc,
24-25
servidcr de
apresenta~o, 24
servidor de banco de
dados.25
servidcres,
configunndo,
25-26
clieare/servidor single-tier,
dcscricrao,.23
Cl iente/Servid or, 222 3
clientes, sistemas de
inrtaIac;:ao R./3 c~ 36
Clipboards, AJ3AP/4
Editor, 59-60
Codepages. tipo de objeco,
692
codificando
express6cs matem:i.ticas,
306
ins~ao write,

342
instrUc;oes de a ttibui~o,
291

c6digo
areas de eplicaeivo, 690
colocando comentirios
em, 85
exemplcs, cortando e
colando do sistema de
ajuda, 65
pcreabilidad e de, 36
c6digos de tranSayao,
definicrao, 19
ccdigos-fonte

AJ3AP/ 1, Editor; Edit


Program. tela. sjcda
enquanrc editando ,
65-66
corcendrics, parirnetros
1:, 609

pesquisando e
robstiruindo em, 56
collect, instru~o
combinando linbas
confonne elas sao
adicionadas a tabclas
intem as,lisugem,
418-419
sintax e, 04 17-0422
commdos
menu A ccountin g,
Accounts Payable, 12
menu Gore, Text
Elements from th e
AJ3AP/4 Edit or,
670
mcnu Program
C npy, 77
Save As, n
menu System
Create N ew Session,
76
Status , 20, 95
menu Tools
Adminism tion, 22
D evelopment
Workben ch, 12
menu U tilities
ABAP /4Key Word
Do c, 534
Help on, 65
comentarios
c6di go, substituindo em,
85
codigo- fome, parimetros
e, 609
Command Field, 16, 19-20

Com mand Field, con trole


(barn de Ierramentas
Standard), A:BAP/4
Editor, 53

como adi~o de leon e.


instru ~o write, 5015 03
como adi~o de linha,
instru~o write. 5 03~506
como adi~o de simbolo,
instrU!;ao write, 500-501
como adi~o de tcxto,
instrocrao sort, 3793 82
comparaliOcs
instrUc;ioif, conversces
de dado s de lieerais
durante, 317-319
crdem de precedecciapan
eipcs de dados, 317
comparac;Ocs e suas formas
altemativas, 316-317
comparando adic;:ao,
instru-ra o read table, 373.
375
componcntes, grupos de
fun,.o, 638-640
comprimento fixes, ripos
de dado, descri~o, 244
comprimentos de saida
campos de DDIC, 462
campos empacotados,
462-463
desaic;ao, 461
compute. instnl~O
operadores pan, 305
sintaxe, 305
Concatenate, co ntrole
(barn de [erramentas
Applica tion) , ABAP/ 4
Editor, 58-59
confi guracoes tecnicas
exibindo, 193-213
. bufferiz.ando resumo
de tabelas, 212-213

IHDlCI

bufferizando tabelas,
196-213
campo Size C ategory.
195

ceaarios com rabelas


de usn de buffer,
211-212
classes de dadcs,
193-195
deslocamentc de
buffe r, 210
ntimerc de exteas ces,
195-196
tlenicas de usc de
buffer, 20+206
tipos de usc de buffer,
205-209
resume, 221-222
confi gurando matchcodes
lo gicam en te, 659-660
confi gur.mdo padrOes do
usuario, 280
consistincia, v erifi~6es.
utilizando a fcnamcnta
u tilittria de banco de
dados, 226-230
em nametab, 228-230
papel de nsmeeab, 227-22 8
constantes. 261262
CONSTANfS, instruc;:ao,
sintaxe, 262
consu ltorcs, conhecimento
fun cional da :irea e, 10
ccatag em de Iinha, adicrao
e lisugem de umanho de
1inha, 510
instrul;io rcpon, 508-513
rodapes,criandc,
520-523
sintaxe, 5085 09
utili.ando,509-511
contextos do usuUio
alocando, 698

d efini~o.

27

c ontU1ue) tns tru ~io

companndo com

instrUl;oes exit e
check, 341
instru~o

loop at e, 364

Iistagem, 338-339

sintaxe, 338-339
utiliza!;Oes, 708
controlando a sequen cia do
programa
comparando com as
instrUC;Ocs exit,
continue e check. 304-1
instru~o check, 339-3041
insauc;ao continue, 337-339
instroc;io exit. 327-328
controle Help (barn. de
ferramentas Standard),
ABAP/4 Editor, S3
controle, instruc;oes
case, sintaxe, 326-32 7
do
sintaxe, 328-330
. terminan dc loops
infinitos, 330-332
varying addition,
332-334
vuying/enddo
additi on, 334-335
elseif,320
if. 315-326
ccnversj c de dados de
literal durante
comp aracees,
317-319

conversees, exibindc,
319
opcndores de string
de caractere, 321 ~3 2 6
operado res logiccs
para c peraados,
316-317

crdem de precedencia

para tipos de dado,


317
sin taxe, 316-317
while. sintaxe, 336-337

contrcle, iaterrupci o,
prccessamento
in stru~o on change of,
451-458
loops e, 452-0454
utiliz.a.ndo, 454-458
instru!;io sum, 4049-0451
insuuC;6e:s at first e at
last, 44Q....4
instruc;oes at new e at
end, 444-449
controle, ineerrupcces,
descri~o, 440
con trole, nIveis de,
descri \;io. 445
conversees de dado s
insuucrio if
exibindo. 319
Iiterais duran te
co mpancr6es,
317-319
instrucrao move
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

I "PIEND'" EM 21 DllS AUP/4

Copylt, utilitirio,
CD-ROM, 124-125
carpa (tabela internal, 350
Create Foreign Key, tela,
148,163
Create: New Session,
comando (menu
System). 76
criando

ubeI",,106-107

tabelas eraasparentes
abordagem
bonomup.1t7-122
solucionando
problemas. 119-122
tela Dictionary:

Table/Structure:

Data Browser: Table::


Selection. tela, 70
Data Dictionary (RIj Data
D icti onary)

=npos
comprimeneos de
,arch, 462

ccntrolandc a

botoes na barn de
ferramen tas
Appli cation, 656

Change Fields, 117


curses de treinamen to, sites

exibi~o, 71
defuli90es,exibUldo,70

d. Web, 10
C ut and P aste, bu ffers

descricac, 67
estrururas, 68

campos, dominios, 103


chaves eseangeiras, 146,

(ABAF/4 Edi tor), 59-60


C ut, controle (barra de

H9
domfnios
abordsgem
bottom-up , 110.111
tela Dictionary:
M:ain~ Domain,
108
ieutiliz.ando,
104-105
elementos de dados
aboedagcm
bcrtcm-up, 113-116
solucionando
probl emas, 115-116
WTSJ4S

tela Di ctionary:
Change Data
Element, 112
grupo s de ripe, 274-275
indices , 187-189
indices secundsrics,
diretrizes para, 189-190
m6dulos de func;ao, 601,

613-615
objeeos raatchcode,
660-665
programas
processo para, 48-50
solucionando
problemas, 50

[erramen tas
Applicati on ), ABAP/4
Editor, 58

0
da dos
de tabelas, copiando,
124-125

defiaiado, 566-568

exibiadc
modificando e,
127-128
ucilizando seu pr6prio
prognma. 135
globais, cipos, 619
linhas inserindc em

tabelas
navegadores de dados ,
utiliz.ando, 128-131
solucionando
problemas, 129-130
validandc com a interface
do ususrio, 145
dados e estattstica, lis tag em,

567
dados globais
alocando, 620
tipos .619

objetos
ativando, 107
impcrdncia de, 96
posi~o de. 67
tabelas , 68, 70
rabelas e'estrutu ras,
incluindo na Listagem
de string de.campo,265
ripos de dados , mapeando
pan ti pos de dado
ABAP/4 ,246-247
utiliz.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

data, formatando, instroc;ao


write, 479--481
DB Utility: Transparent
Tables: Database
Para m et ers , tela, 231-232
deci din do quando urilizar
navegadores de dados,

134-135

Decimal Places , campo (tela

Dictionary; Maintain
Domain). 109
defini~6es de dadcs dentro

Delivery CW~ campo {tela


Dictionary:
Table /Sttucture: Change
Fields),l1('-117

de m6duJos de fun~o,
605
definindo
constant es, 261-262
puametros pan.
interfaces, 605
strings de camp o
instru~o de dados,
263-266
instro~o tables,
268-269
instru~o tables,
int en gin do co m
select, 269-270
insuu;ao tables,
visibilidadc, 270
utilizando como
vu1aveis do ripe -__

desativandom6dulos de:

char, 267-268
sub-retinas
definindo e listagem
de chamada, 558
em grupos de funCiaO,
627-628
tipos com a instr:u~ao
. type, 270-272
varii veis, 714
inStru~o de dado s,
u""""",do,241-243
ins trU~o parameters,
utilizan do,
<
247-254
tipos de dado s,
243-247
deixaadc
eventc s, 55-4-557
sub-retinas, 561-563
delete, instn1~o, slntaxe,
408-409

204 -205
tipos de us o buffer,
205-209
desenbo de Iinha, care cte res
defini~ao, 503
exibindo, 506-507

fun~o. 604

descartaadc versoes
Revised de tabe las,
22)-224
describe able, instru~ao,
sintaxe, 389
descritioes de campo,
pesquisando, 82
desempecbo, aprimorando
buffer em resume de
ubclas,212-213
buffer em tabelas, 196 ~2 04
cerWios com ubelas de
usa de buffer, 211-2 12
deslocamento de buffer,
210
t~cnicas de usa buffer,

desenvclvedcres,
conhecimento funcional
de area e, 9
deslocamento de buffer,
descri~o, 210
Development Classes, tipo
de objeto, 692
Development Workbench

area de menu principal, 10


compon entes , 44
cbjeecs de
desenvolvimento,
exibindc , 66
Dialog Modu les, tipo de
objeto, 692

d ialog o com 0 ciien te,


programa, _conven~6c:s

pan atribui~o de: nome,


691

diaIogo, passos
defini~o.28

iniciando, 29
d idlogo , pro gramas, 46,691
Di ctionary : Chan ge Data
Element, tel a, 112
Dictionary: Initial, tela, 67
Dictionary: Maintain
Domain, tel a
campo Data Type,
108-109
campo Decimal Places,
109-110
campo lowercase Letters,
109-110
campo Output Length,
109-110
campo Shon Tex t, 108
crian do dominios, 107
Dictionary:
Table/Structure, tela,
. coluna CheckTable, 149,
167
Dictionary:
Table/Structu re :
Change F ields, tela, 117
Display Symbols. Hsta gem,
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

APRENDA EM 21 DIAS lBAPI4

varying, adi'iao, 332-334


varyinglenddo, adi<;io,
334-335
do, loops, 713
documentando excecses na
interface do m6dulo de
funl'jio,648
Documentation Mo dules,
tipo de objeto, 692
Domains Display, tela, 669
Domains, ripe de objeto, .
692
domfnios
p649

altera~es n~

earaceerjsticas, 717
campos
alteraado

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

relaeorios com telas de


selcljio,557-558
rornando padrio para
inicio cia selecfo,
551-553
Dup licate Line, contrcle
(berra de ferramentas
Application), ABAP/4
Editor, 59

E
edit or- call, instru!jao,
sintaxe, 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

elseif in$tnl~o. 320


enddo, listagem 334-335
eadform, instJut?o,
utiJiu~o de, 558
end-of-page, evento,
521-522,530
Enter, contrcle (barn de
ferramentas Standard),
ARAP/4 Editor, 53
erros em m6dulos de
fun!jio, corrigindo,

640-641
escopo da pesquisa,
configurando, 55
escrevendo Icones na HSb,
Iistagem, 501-502
especificg!jao de
comprimentc, instru!j<io
write, 470-471
especiflcando posi~o e
comprimento com a
instru~o write, 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

estru turas, testando e


modificando conteudc
interne de tabela, 388
estru turadcs, tipos,
utilizando, 272-273
evento de inicialiZ2~o,
sintaxe, 654
eventos
des cri~o, 519
efeitos da safda,
verifica~o e parada
dentro cia listag em,
555-556
efeitos na instru!jw writ e,
550
envolvendo condi.liio ou
loops denrrc de
I istagem, 552-553
Iistagem do Basis, 546
programas de driver e, 547
acionando em ordem
ditada pela listagem
do programa de
driver, 548
acionando tapa de
pagin>,550-551
deixando.554557
ordem de execc cac de
eveneos, 548
relat6ri os com eelas de
sele;ao, 557-558
tor nando padrio par.l
infcio da se1e~o,
551-553
exce~6es

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

configuracoes, 221 -222

E
FO I, include, deflnindc
sub-retin as em gropos
de fun~o com , 627-628
F4, ajucb, chaves estrangeiras
e, 15C-151,154
fax, envi an do rebt6 rios
par, 511

Ierrsmenta de rastrelc de
SQL, determlnandc qual
Indice e uti1izado,
191-193
Ierram eata utili tUia de
ban co d e da dos
acessando, 225
excluindo e recriaadc
tabelss, 232-233
fun es, 225-226
log de ativali1o, exibindo,
230-231
parfmetros de
armazenamento,

exibindo e
modificando, 231-232

ueilizando, 225-226
verificacces de
cca siseenc is, 226-227
em aameeab, 228-230
papel do nameeab,
227-228
Fiel d Label and H eader,
cam pos (tela D icti onary:
Change Data Elemen t),
113

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

- ~-

-i.DlG , 731

, APlENDA EM.!1 DIAS AU P/4

extensOes

Field Name, coluna (tela

Di ctionary:
TobI, /SttUctur" Change
Fiolds),11 7
Find Next, contro le (barn
de Ierramen tas
Standard), ABAP/4
Editor, 53
Find, bou o (barn de
ferram entas Standard )
ABAP/ 4 Edit or, 53
campo s de variiveis de
sistema, loca1iz.ado, 280
1, listage m, 715
form, instru~ o
definicdo variiv eis em,
571
nome s de parimetra ,
715
sinuxe, 559
utilizal'o de 558
fo rma gerada de programas,
47
fOnIl2b~O de Iista,
instru ~6es , 527-541
marg ens configuradas, 5~3
new-line, 528-529
new-page, 529-530
new-page print. exibindo
do cumenta~io de
palavra-cbave pan. 53-4
new-page print on ,
530-534
position, siceaxe, 538
set blanklines, sincaxe,
540
skip, sintexe, 534
forma ta~ o grifica e
in stro ~ o write, 499-507
como a di~o de leone,
501-503
como adirri o de linha,
503-506

como adi~o de stmbclo,


500-501
exibindo stmbolcs, leones
e caracteres de

desenho de linha
disponiv eis, 506-507
sineaxe pu:l adi~oes, 500

formatando

cebecalhose rodapes de
pagina
csbecalhos manuais de
pagina, criando
varidveis em,

519-520

ccpiand o,
renomeando e

set blank lines, 5~5" 1


set margins, 533

skip, 534-536
U.DUnhO de pi gIDa;
contrclaadc, 508-511

eecnicas, 507-508
eelas de sele~a
instru~io de bctoes de
oPl'o, 672-673
instruli10 param eters,

668-670
instnl~o

cabecalhcs padra o de
pl gitu,
armazenandc , 514
cabecalhos padrio de
pagina; criando,
513-515
,,",.~os padrio de
p:5.gina. traduzindo,
515-517
cabecalhos padrio de
p:5.gina. utiliundo
variiveis em,
517-519
cabecalhcs padrsc de
plgin a,
visualizando e
mo dificando,
514-515
rodapes de plgitu,
crian do, 520-523
instru~io reserve. 523-524
ins uuCioesde formata~o
de lis", 527
back, 536-538
new-line, 528-529
new-pa ge, 529-530
new-page prin t.
530-53.
new-page print on, 531

m6dulos de fun ~o.

pos ition, 538-539


print-control, 533

selection-screen

block with frame,


667
insuuljio
select-options,
671-672
instrues
selection-screen, 667

parimeno de cain de
sel e ~o, 670-671
parimetro de cain de
sele ~o de sele~o
de tela, 671
programs de exemp lo,

673-681
visl o geral, 666-667
free, instru~ o, sintaxe,

403
from, adi ~o, i nstru~o loop
at, 362-363
fun~Ocs,

ABAP/J, Editcn
tela Edit Program, 61-63

Functio n Ce des, ti po de
objeto, 692
Functi on Library, tipo de
objeto, 692693
Func tion Library. Initial,

" La, 602


aipbiente de teste , 629-631

d!'cumentos alterados,

218-219
utilizando,221

excluindo, 6-)
Function Module Change:
Administration Scre en,

639
Function Mo dule Create:
Administration, tela,
613
Function Mo dule Displays
Documentation, tela,
636
Function Modu le Edit, tela,
609
Function Mo dules , tela, 636

G
Goto, comandos do menu,
Text Elem ents from the
ABAj)/4 Editor, 670
gropos de fun~o
componentes,638-64O
definindo em sub-retinas,

627-628

listagem de zexb, 622


visi o geral, 601-602
" grupos de tipos
criando, 274-275
dermi~o, 273
GUJ Status, tipo de objeto,

693

{con es
defini~o, 501-503
exibindo , 506-507
IDs de gropo de fun~o,
descri~io, 601
if, instru~ao, 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

If-equal, in Stn1 ~O igual,


compar.mdo conteddo de

duas tabe1as internes, 395 .


Import/Export Parameter
Interface, tela, 605-606
importa~o, parimetros
com propostas, 715
des cn~o,607, 6 1 1

H
handles, defini~o, 47
Help on , comando {m enu
Utilities), 65
Help system, oer ajuda,
sistema de
hist6ria de tabela
automatica
descrirrio, 217

toraandc opeionais, 608


valores padrio,
fcmecec do, 608-609

impressao, t ecnicas de
eabecdhos e rodapes de

plgina

cabecalhos padrao de
pagina,
~azenan d o, 5 1 4

-~

~ ~-'~.I.,",.-. J...A:..a.-.....II

I X . I -.....- I I

.-L":::":-".-"-.l~'-.l-'~"-I~' -'~'C"" ~"-'-" I

APREH DA EM 21 OIlS AUP/4

Iodice, adi~o, instru~o


read table, 365

insert lines. instru~o. 392-393

interfaces glob ais,

links de hipertexto, 136- 138

insert, instnl)io. sintaxe,

513-515

in dices
criando.l87-189
defuU<;io,183

398-400
instalandc

ddinindo parametres,
620
in terfaces Iocais, definindc
parimetros, 620

Hstagem de fonnata~ e
comprimentos padrao,
465
listag ens

cabecalhos pamo de
pagina, traduzindo,
515-51 7

csbecalhos padrac de
pagina, ueilizandc
varidveis

em,

517-5 19

cabecalhos padrao de

pagina,
visualizandce

descricac, 183-186
determinandoqual e
utilizadc (Ierram enta
de rastreic de SQL),
191-193

ex ibindc tcdos, 187


ligando, 703

secunddric

mcdificaado,

defini~io. 185

514-51 5

diretrizes para cria/iao,

multiplas impressoras de
uma vee, 512
safda de Iista, 511-5 12
'pool, 512-513
ununho de pigina.
cc c rrolan dc em
instru~o report,
508-511
impressora, 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

loclud.. (DOIC), lipo de


objeto,693
Includes (p rognm), tipo de
objtto,693
incl uindo prognmas,
defmiliio, 597

189-190

excluindo.1 9O-191
exibindo, 186-187
selerivos, 188-189
'nIltagens.185
Info Types, ripe de objeto, 693
in forma~6es ripidas

{dicas
de ferramen ta), 17

in ician dc Rl3, 10
ins erindo
a instru~io call functi on
autcmaticarneure, 613,
649-650
campos em nbebs , 126
Iinhas em eabelas, 397-400
navegadores de dados,
utiliz ando, 128- 130
solucionand o
problema.s, 130-131
Insert From Buffe r,
controle, (harra de
ferramentas
Application), U~/4
Edi tor, 58
Insert Line, controle (b2rra

.INCl U-XXX, 174

de ferramenus

Indice (tabe las internal ),


def iniliio, 365

AppH"lion), ABAP/4
Editor, 58

Basis. 21
ScreecCams, ......
instdncia central, defini cao,
26

instincia, defini~ao. 26
instnu;ao de contr ole de
imprcssao,533
inStn1~O

de dados
definindo varifveiscom.

241-243
sictaxe, 77, 263 264

instru; ao local, 564 565


instru;oes, descri~o. 236
interatividade e

programacic baseada em
even eo, 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

lfbt , tabel a, vi sio geral, 438


Ifcl, tabela, visio geral,
438-439
like tln-sJlS in clud e,
listlgem, 266
lingmgem de logon e
tabew de texto, efeitos
de, 159-160

linha de eabe~lh o (..beb


interna), defini ndo,
350
linhas, m ovendo p2ta 0
to po da jan ela do editor,
59

a ins ou~o back, 537


ABAP/4
pro grama, 50
sinw:e basica, 236
adi~ comparando

configura valor de
sy-subrc pan 373
ad.i~ mone dria, 485
, di<;io uni~ 488-489
adilioes arr edc ndadas e
decimais, 483
adi~Oe s de parimetro,
eodific.ndo, 576-577
agrupando por eipo p ara
reduzir a duplica~o
de codigo e tomar a
manut en<;io mais f:i.ciI,
274
append sorted by pan
localizer a s tres
relatorios de vendas
principals, 414
area de rrabalhc da tabela,
77
at first para escrever
dru lcs e at last para
sublinhar a Ultima
1inh.. 441-442
at new e at end, aciorudas
par ah 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

, APR ENOA EM 21 DIAS ABA P/4


formau~o e

comprimentos padrao.
465
gravandc icones na !ina,
501-502

if, utilizando no
prc grama, 318

incluindo prograrna, 599


inlcic da selcc?o
automatica.mentt

inserido antes da
primeira lich a do
c6digo execuctvel, 551
ins tru~ao call fun ceion,

udlizsndo com
parimetros, 612
inst~O case. realiundo
urna serie de
compan.~oes.

327
instru ~io check. 340
instrU~o cleat. utiliundo
para limp er a linha de
eab~o, 407-408
instru~o collect,

combinando linhas

conforme sdicionadas
as eabelas intemas,
418-419
instro~o continue,
338-339
instro~o describe table,
utiliundo vamveis de
sistema para
quan tificar conteudo
de tabela de, 390
instruyao do, adi~
variivd , 333-334
ins tru~io editor -call para

visualizar, editar e
estreat a conteudo de
uma ubela interna,
396-397
instru~o locI. 564-565

instru~o

move, 298

. com duas strings de

mstI'Utjoes write
: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

instrU~o read table, adi~

de In dice, 365-366
instru~o

reserve, 523-524
instruc;ao select
adi ~o de campos
correspoadentes,
436-437
com a instrulj-io

appendpara
preencher eabelas
ineemas, 435

instru~o select- into, 431


ins truc;ao sum pan
calcu1ar rctais de myel
de concrcle, +49-550
instrU~o type -poo l

342-343
ilusrrandc efeitos da
espec ificacio da

coluna de saicb, 469


operadcr de cadeia
para reduzir
redundsncia em, 83
lendo apenas algumas
linIus,362-363
like 'fImUS include, 266

linhas de cabecalho,

mensagem, insuucrio
raising. 646-647
m6dulos de funljio, 615
chamada simpl es para,
609
chamados .da Lisugem
20.1, primeiro, 621
chunados da Listagem
20.1, segundo, 621

chamados da Li.stagem

562

ou estrururas, 265

diferentes, 455-+56
para exihir simbolos,
500-501
partmeercs, defmindo

com a instru~o
parameters, 248
parimeuos digitados, 5704
passando panimett'os p ara
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

chamados cia Listi.gem


20.5, c6digo~fonte

stop
dentro de evemos.

ts belas d. DDIC

valores que
campos-chsve p adri o
em, 371
loops sem fim, 330-331
misc:an.s de edi~o,
efeitos de 475

pan, 624-625
643
cham2dos da Listagem
20.9, c6digo~fonte
para , 647
no -gap, 473
nG-zero e no- sign, 482

definindo como

acioaando, "457

linhas com mesmos

contendo tipos e
constantes, 274
inStnl ljio while, 337
instrU~6es add, subtract,

instrU~oes exit, check e

on change of

fabricantes
selecicea dos, 78
saida panr
processamen to de
prognrna morto em
suas trilhas, 328
s:udas de coaversao,
477-478
seu segundo prognma,

72
revisitad c, 269
simplificado.76
sfrnbolos e caracteres de
desenho de linha, 504
strings de campo

''',;0 varymg,

retornando
componen tes em

sequencia, 332
atribui ~o envolvendo
duas, 268
conten do cutra string
de campo . 265

instru~o

dau.,

definindo com, 264


inSttlly2.0 tables,
defmindo com, 269
referenciandc outre

campo,309
..riiveis do tipoch2r, 267
subcampcs, ~7 1

sub-roeicas
chamando a sub -retina
mostrada na
Listagem 593-594
clwna.ndo uma seri e
de, 560-561
defmindo e chamando,
558
sy-db cnt para con rar
linlus reeornadas da
instruliio select, 81
syfdpos pan visualizar
deslocamenrc do

primeirc caraceere
coincidente ou !lio
coincide nte,324-325
sy-index ccntendc
namerc arual de
itera~io, 329
sy-subrc
determinando se

qualquer linbas
fonm selecionadas,
80
valor configunndo de
por dentro m6dulos
d. Iun\io, 642- 643
tabela ztxIfal, exibindo
dados em,135
ubelas e estruturas
ODIC. incluindo em
strings ,de campo, 266

rabelasinremas
adi~ de campo s

correspcadentes
para p reeac her a
partir de urn banco

de dadcs, 433-4304
adicion and o tres
linhas a partir da
linhado caberUbo.
355
a.dicionando tr &
linhas a parti r cia
linh a do cabecalho,
e gravaado -as de
volta novamente,
361
colocando mais
camp os do que
existem em uma
ubela,432
cc nteado de campo s
entre at e eode, +43
copiaa dc dados de
uma para cutra
utilizan do as
instru~oes append
lines e insert lines,
393-394
criando com e sem
. IWw d.
cabecalbo, 352
definindo com e sem
urna linha de
eabe<;>lho, 351
excluindo linhas de,
409-410
inserindo linhas em
listagens
dassificadas,
enquanto
mantendo a ordem
de c1as si fi~oJ
375-376

735

-:--~DI"

.I

Maintain of Matchcode
Ob ject Fields, tel a, 662
Maintain Select ion
Conditions, tela, 664
Maint:l.mSelection
Options. tela. 633
mendt, campo, indices e, 188
manuten~o

diaIogo

padrao, dC5crir;rao, 134


mapeando tipo~ de dado
ODIC para tip os de
dado ABAP/4, 246-247
Mark Line, controle (barra
de ferramentaa
Application), ABAP/4
Editor. 59

mascaras de edi~o
ccmecacdc com V. 712
instru~ao write, 474-476
masC2ttS de cdi~o em V,
712
matchcodcs
sabores de, 716

nlidaliiode dsdos,
utiliundo pan,
659-666

configurando,659-660
criandc e mantendo
cb jetcs matchcode,

660-665
organizando pOI' tipcs
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

areas de tela, 15-17

Command Field, 19-20


Interface Menu, 17~19

message, in.s tru~o raising ,


configurando 0 valor de
sy-subre com. 644-648
message, instrosoes, tipos,
681
message-Id, i.nstro~o,
sin taxe, 682-683
m estre de fabricante
re gistra, arual izando, 13

modiflcandc
csbecalhcs d.

p;gin ~

514-515
fonna dos parimetros de
armazenameato
dentro do udlietric de
banco de dados,

231-232

Iinhas em tabelas, 400-403


modify, instrusio, sintaXe,

4CO
Module Pools, tlpo de
objeto, 693-694
mo dulo d e fu n~o ,
in terfaces . 'f)eja interfaces
modules de aplicativo,
visdc gera l, 8

m6dulos de fun~
acivando, 604-605
cancelando a versi o de, 629
chamando , 609-613,
624-625,643,647
dado! globais, 619-622

execueando urn
exemplc, 611613
instrusio call
function, 609-611,

613

primeirc e segundo, 621


copiando, renomeandc
ou excluindc, 640

cri~do ,60 1 , 6 1 3 - 6 1 5

definic;ao, 600
defini~6 es de dados
dentro de. 605
dcsativando, 604
documcnundo excecoes,
648-649
e lTDS,

corriginda, 640-641

excecoes, vida geral, 607


. Iiberando, 628-629
listagem para, 615
localizado existenee,

63H38
parimetfos
digitados e cia
digiesdos, 608-609
expcresdc de, 715
passandc para, 607
passando rabelas internas

para
metodos, 622

viaexporu~o/
importa~a e
alterandc, 623-627

via u belss, 623


sy-subrc, valor
configurando de
inst ru~o raise,
64t -644
measagem, instrolilo
raising, 644-648
testandc, 629-63 1
M ove Line, contrale [barra
de ferramentas
App licati on ), ABAP/4
Editor, 59

move, instru~o
adapta~6es aut cm aricas,

293-294
lisugen, 298
regras de ccnversac ,

exibindo, 295
sinraxe,291

737

INDICI I
strings de campo, 297-303
campo s numericcs de,
299-300
tipoa de dado de
caractere,
utilizando, 300-301
tipos de dado

nemericcs,
utilizando,301-303
subcatnpos,296-297

move-ccrrespca ding,
ins tru;oe.s
sinuxc,303
utilizae.s, 302
Multiple Selection, tela, 632

new-page print on ,
jnstru ~o) sintaxe, 531

new-page print, instru!?O,


exib in do a
docume ntl;io de
palavra-chave para, 534
new-page, instru~o,
sintaxe.529
no-gap , adi;io, inst:ro;io
~ te,287, 473-474

n om e, ecoveucees pan.
atrib ui!?o de
caracteres invaIidos, 689
iaeervalos de nome de
cliente, 691-696

objeeos de

N
nametab
descri~o, 227

papel em progrunas
ABA P/4, 227-228
vc:rifica;oes de

ccnsistenciaem,
228-230
natureza ineegrada do
ambiente Rl3, 8-9
n avegadcr de dados,
utilitirios
decidindc quando
ut ilizar,13 4-135
fun;oes de, 132-134
inserindo linhas em
tab elas, 128-131
SE16,'dados de tabda
exibindo com, 131-132
SE17, comparando com
-SE16, 134
SM31 0 SM30. 134

cpos, 131
utiliza;6c:s, ]28
new-line. instru~o, sin taxe ,
528

desenvohnrnnento,47
paranetros, 247
p ro gramas de dii1ogo,
691
relatorios, 690
tabelas ~ componentes,
105
variaveis.242
vari fveis de sistema, 79
vida geral, 659
nomes de dominios, chaves
estrangeiras compostas,
153
nomes de progra m a e
caracteres invalidos, 689
nomes de re lat6ri o de
cliente, conven ; oes para
at:ribui~o de n om e, 690
n o- scrolling, adi; ao,
instru~o new-line, 528
no-sign, adi ;ao
instru~o write, 481-482
utiliza~6es , 712
n o-zero, adi~o, instru~o
write, 481-482
Number Range Ob jects,

ti p o d e objeto, 694

ndmercs. fJU campos


numericos; literals
numericos; tipos de
dado numericos
Object Browser Initial, tela,
instru;6e.s message, 682
Object Log, baCio (berra do
ferramenta.s
Application),230
Object xxxn:: Dupuy
Active Runtime Object,
tela, 227
ohjetos
agregados, defini~o, 156
ODIC, arivando, 107
desenvolvimento,
exemplcs de,-96
ohjetos agregados,
defm.i~ o, 156
objetos de dados
descri~o e tipos, 237
literal
de ponto fluruanre, 240
bexadecimais, 240-241
numericos.239 240
-, . String de caractere, 239
visibilidade de, 237
cbjeeos de dadcs
extemame nte visiveis,
desc ri ~o, 237
ohjetos de dados
glohalmente vis!veis.
descrkac, 237
objetos de dados lc calmen ee
visfveis, descri~ao. 237
objetcs de dados
modificiveis, descri~o,
237
cbjetos de dados nao
modificlveis
descri~o, 237
literais
de po nto flutu ante, 240

hexadecUn~,240-241

Oracle, ban cos de dadcs e


espa~o de tabela,

adi~o de grupc

de hordes

defm iljio, 193


organizando objetos

de op~o,251
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

(t ela D icti onary:

umindo, 66
int ervalos de no me de

Maintain Domain),

como adi~o de cain de


selecao, 250-251
efeicc de verificando

num ericos, 239-2+0


.string de caractere, 239
objetos de desenvolvimento
convenes para
ambui~o de nome, .(7
defini~o, 44

109-110

tabela om, 253-25~

clien te, 691-696

pc rtabilida de, 45
ohjetos de tempo de
execusio,d~~o,47

obtendo a documenta~o do

SAP em dominios,
111-112
occu rs, adi~o, instnJljio
append, 357-l59
on change of, instru~o,
451-458
loops e, 452-454
perigc oculto em,
457-458
utilizando, 454-457
Open SQL, 36-l7
descricao, 697
tabelss, operando sobre,
698
vantagens
buffer em dados em
servidor de

aplicativo.36-37
p onabilidade, 36
tra tamentc
automaticc de
clien t e, 37
operador de encadeamentc,

utilizando, 82-83
op endor es 16gicos,
instru~o if, 316-317
op en dores, instru~o
compute, 305

sintaxe, 247-248

padrees
alterando, 712
Ueas de trabaIho de
rabela, 76
ativando altera;6es para,
464
impressora, aleerandc, 511
instru~o write
ccmprimentcs,
461-462
for matando, 463-467
listagem de campos
chave, 371
pad rOes do usu ari o,
. configurando, 280
Page Do wn, pr ession and o,
74-75
palavn-ch ave,
docum entacdo, instruljio
new -page prin t, 534
paJaV1'2S cbav e de even to,
de5cri~o, 654
Parameter Id s, tipo de
objero, 694
para m eter, ins trulji o,
668-670
parameters, instru~o,
definindo vari,heis com ,
247
adi~o de cain baixa, 250

type """" like,~ 253

parimetros

alterando, 607
de expOrta~O, descricsc,
607
de impo naliio
defini;io,611
descri~o, 607
tomando opcionais,
608

valores padrio,
fomeceado,
608-609
de tabela,descricsc, 607
defini~io. 247, 571

definindo
em interfaces globais,
620
em interfaces lccais,
620

varifveis como, 572


digita dos e nao digitadcs,
608-609
exportando a partir do
m6dulo do fun"o, 715
form~,572

digitados, sinesxe, 573


digitados, vantagens,
575
digitados 'lJtTIJI.S nao
digitados, 573-575

739

-~~~JL-IJK-I~.- .-.-.-.-.-.-.-.~.- .~_~_-_ '--_- _-_740

,PREND, EM 21 DIAI'SAP/'
interfaces, definindo pan,
605-607
passandc pan m6dulos

pass by value and re sult.


Iistagcm, 582

de fu n~o. 607
p assandc pan
sub -retinas. 576-Sn

passandc

reerodos, 578-583
por referenda, 578-580
per valor, 5S()..S81
p or valo r e resultado,
581-5 83

reais, 572
parametros de
armazenamento c
ferramenta utilitaria de
banco de dados, 231-232
parametres de grupo,
instru~ao de bctoes de
op~o. 673

parimctros de tabela,
dcscri~oj

607

parametros digitados, 608-609

. descri~ao. 573
sinaxl:, 573
vantagcns, 575

parametres fonnais
descricso, 573, 715

digitadcs
sintaxc, 573
vanu gcns, 575
f)trSUS naD digirados,
573
parametres naa digitados,
608-609
descricao , 573
parametr es reels, dcscri;ao,

5n
parametres, adic;Oes,
codifican do, 576-577
parametros, nomes,
instru~o form, 715
pass by refcrencc,lisagcm,

578-579

pass by value, Iistsgem, 580


padmetros pan modules
d. fun,.o. 607
param etres pan
sub-retinas. 576-577

listagem, 572
metodos, 578-5 83
por refersneia, 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

eabelas ia remas para


sub- retinas, 583
com linlw de
cabe~ o, 586
corpo por referencia,
587-588
corpo por referencia,
valor, ou valo r e
resulcdc, 589-590
descrevendc den trc de
sub- rotina. 584-585
m etcdcs, 584
smt axe.584
variaveis.71 5
Pattern, centra le (baIT2 de
ferramentas
Application), ABAP/4
Editor, 58
perfil de servi dor de
apli cativo, 24
perform, instrur; 20
sintaxe, 560
utiliza ~o de, 558

personaliZ2odo

interface do usuario, 17
ubelas,98
pesquisa
descri;6es d e camp o, 82
prognmas,67

.oj< 14mbfm lccalizadc

531

tipo s de
programas de dalcgo,
46
relatorios, 45-46

eveneo at user-command,
655-656
evento de inicializa~,
sinuxe, 654
pushbutton, sintaxe,
655-656
interatividade de, 653-654
programado res,
conhe cime n to da ar ea
fun cional e, 9 "
prognmas
convenliOes para
atribuic;:ao de nome,
47-48
criando
processo pan, 48-50
solucionaodo
problemas, 50

em lore, chaves
estrangeiras e. 152
include
defmi~o, 597
~e

superior,

descrir;ao. 602
segundo (UXX).
des ai~, 602

prop6sito, 8
visio geral, 7-8
RJ3 Analyzer Identifier ,
tipo de objeto, 694
RJ3 Data Dictionary

(ODIC)
campo s. controlando a

47

programas em late, chaves


estrangelras e, 152
publica~o. perfodos d e,

eventc at
selection-screen, 655

evenrc selection-screen

descri ~o,

C ommand F ield, 19-20


Interface Menu, 17-19
platafonnas e bancos de
dadossupo~dos, 2 1

salvando 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

induindo, defmi;io, 597


cbjetcs de tempo de

6S4
processos de trabalho, 31-32
Program, comandos do

informa~6es ripidas

posi ti on, in stru;io, sin tax e,


538
pre ssion ando
Back, sequencia de

Print, ccntrcle (barra de


ferramentas Standard),

de.scri~o ,

plataformas suportadas pelc


R/3 ,21
ponteiros d e m ouse,

pontos decimals, campos,


701
po ol de tabelas
descricao, 98
resericees, 101-102
poo ls de dados , desc:ri;2o ,

~, m

ano s fiscais, 439

Q-R

exibi~o de, 71
defmilioes, exibindo, 70
descri; io,67
estrururas, 68
objetos, imporUncia de,

96
paisagem de sistema .

quantidade, campos,
definj~o, 170
quebras de pagina,
causando, 530

d.fini,.o, 26
de, 67
eabelas, 68. 70

po si~o

R/3

ambience, natureza
integrada, 8-9
arquite rc ra de siste ma
definindo, 27
servidor de aplicadvo,
24-25

servidor de
apres enta~io,

24-

servidor de ban co de
dados,25

servidores,
configurmdo,
25-26
clienees do sistema de
instala;ao, 36
iniciando, 10
menu principal , 10
area Bas"is, 20-22

areas conceituais, 10-15


areas de tela, 15-17

utiliz.ac;:6es, 68
R/3 Library help. ABA P/ 4
Editor: Edit Program,
te la, 65
rad iobuttons, instru;io,
parimetro de grupo,
672-673
raise, instnJ~
configurando 0 valor de
sy-subrc co~, 641-644
utilizac;:oes. 716
read table, instruliio

tabelas ineemas,
urilizando com
adi ~o de comparaliio,

372-374
adi;ao de Indice,
365-366
adi c?o de pesquisa
binaria, 370
com a di~ o de chave,
367-370

742

INDICE

APRENDA EM 21 DlAS ABAP"


nenhuma adic;io,
370-372
sintaxe, 364-36 5
eransportandc a
.eli,.o, 374-376
utiliUtjoes. 709

r eativandc domfnios, 705


re cri ando tabelas, 232-233 ,
705

r ecursos de referencia
online, 10
refresh, instrucao, sintaxe,
405
registros Mestre do usuario,
status dependence do
clientc.35
regras de conversso,
exi bindo com a
instru~o move, 295
reindexando, in serindo

linhas e, 399-400
relacionamentos de chave

estrangeiras,

esrsbelecendo, 717
r eIacio na m en to s de chave

primdria, tabelas de
exemplo,438
Relation IDs, ripe de
obj eto, 694

relat6rios
componentes, 46
convencoes para

arribuicic de nome,
690

dez liscas principais,


criando,412-417
envian do por fax, 511

impressio em multiplas
imp ressons de urna
vez, 512
in strUljaO appendsorted

by, 412-413

telas,45

release, fun~o
cance kndo.629
procedim en to para, 628

renomeando m6dulos de
Un~o, 640
Report Writer, tipc de
ob jcto,694
report, instru~o
adi~ line-count, 521
adic;oes, 712
tamanh o de pagim.,
formatando, 508-511
Repository Information
System, tela, 631
Repository Information
System: Function
Module, tela, 632
reserve instru~o, sintax e,
523
Restricting the Vendors
Selected listing. 78
reutilizandc domfnios
oersus criando, 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

descricao, 28, 236


objetos de dados e, 237
roll-in/roll-out
processamento,
defini~o , 30-31

roll-outs, proposit o, 698


. r6rnlos, instnlc;ao
parameters, 251-253

listagem simplificada, 76
segundo prognma in clude

sa fda de Iista, impressao,


511-512
safdas de ccnversac e
instru ~o

write, 476-479

exibindo as existentes,
478-479
lista gem, 477-478
re tinas de cc nversao
dentro de domfnios,
476-4 78

salvan do
a1t era~oes de programs,

54

dados, restandc mcdulos


de fuo,.o, 631
elementos de dados,
documeeeacao, 113
SAP. documenta cic sobre
domin ies, obtendo,
111-112
SAP, sit e da Web, curses de

treinamentc , 10
sapgui.exe,24
Save As, comando (men u
Program), 77
Save. botao, 12
Scr een Cams, 44
Scr een s, tipo de obje to, 694
SE16, nave gad cr de dad cs
exibiado dados de eabela
com 0,131-132
fun,oe, do , 132- 134
SE17, navega dor de dad os,
comparando co m 0
SE16,134
SE63, transa ~o , tra duzi ndo

elem en tos de text o, 517


Sear c:h/R.eplace, tc:la, 54-56
segu n do programa
listag em, 72
Iistagem revisitada, 269

'.

(UXX). descri~o, 602


select single. instru~o,
sintaxe, 83-84

Select, controle (barra d e

ferra mentas
Application), A BAP/4
Editor, 58
select, ins tru~ o, 72-76
adi~o de campos
ccrrespcndentes,
432-434
area de trabalho expllcita,
77-78
areas de trabalhc de
tabela, 76-77
chaves estrangeiras e, 658
cl:iusuhwhere, 78-79

codificando pan indices,

eabelas in tenus
adicionando linhas
uma a uma, ~34-437
preenchimento,

opcoes, 437
select- toto, in strufiio. ~31
select-o ptio ns, instrufi3o. 672
sequencia de clas:stfica~s'o
bindria, definifiao, 379
seqde ncia do pr ogra ma,
con trolan do
ccmparando com as
instru~oes exit,
contin ue e che ck, 341

inst royio check, 339-34 1


instru~o

continue,
337-339
instro~o exit, 327-328
servido r de banco de da dos,
des cri~o. Z5

188

detertninando qual Indice


~ utilizado para,
191-193
em adi~ao de eabela
classificando , 428

regras para ur iliaar,


430

sintaxe, 426
estrutura 51St, exibindo,
82
instrU~o tables ,

interagindc com ,
269-2 70

processamento cia
inStru~ o

sy-subrc, 79-80

AVI select,

74

proce ssamento de Back,


75

processamento de Page

Down, 74-75
sintaxe,72
sy-dbc nt, 80-81

servidores

aplicativo, 2-4-25
irea de rolagem, 28
arquite rura de, 27-36
buffer em dados e
O pen SQL, 36-37
cliente de logon, 32

compo nentes do
processo de
, raballio,31-32
con texte de usuario,
27-28
passos do diilogo, 28-29

passos do dialogo ,
iaiciando, 29
prccessamento
roll-W ra ll-out,
30-31

tabclas. tipos, 32~36

apresentac?o, 24
banco de da.dos, 25
confi gurando, 25-26
servidores de ap licativo
arquitetura de, 27
area de rolagem, 28
cliea ee de lo go n, 32

componentes do
processo de
trabalhc, 31-32
cont exte de ususrio,
27-28
passos do dialogc,
28-29
passos d? dialcgc,
inicia.ndo,29
processamento
roll -in/roll-out,
30-31
cbelas, tipos, 32-36
trocando dados com
servid c res de
apres enta~ o , 31
descrici o, 24
urilizando buffer em
dados e Open SQL,
36-37
servidores de apresentaclc
descri ci c, 24
tr ocand o dados com
servidc res de
aplicativo, 31
servidcres, configurando,
25-26
sessses, abrindo, 76
set blank lin es, instru~o,
sintaxe, 540
set margins, instru ~ o , 533
seta para baixo , te cla, ajuda
F4 e, 150-15 1

servidores de

seu primeiro programa


ABAP/4,li,tagem , 50

apresentac;s'o, J 1

seu segundo programa

trocando dados com

743

r
.;
~

'744

r'

r> r>;

r-

r-

r>;
I

r:

r>

r-.

<:

r>

<.

.....,~. , .

'""'

"

"

" " '"

"

-e-,

"'

-r-,

--..,

''Ii'

iNOICE

.lPREND.l EM 21 DIAS ABA P/4

Iiseagem, n
liscagem revisicada, 2 69
Iiseagem simplificada, 76
Short Text, campo
eela Dictionary: Change
Data Elements, 112

inscruc;ao case, 326--327


check, 340-Hl .

inscrucac new-line , .52 8


instrucic new-page. 529

instrU'?o clear, 287, 407


com adifjio, 289-290

instruc;io new-page print

instru~o

instrur;:ao on changeof,

instru~o

inStru~ o

collect, ..17-422
compute, 305

tela Dictionary; Maintain


Domain, 108

instru<?o C ONSTANTS,
262

tela Di ctionary:
Table/Structure:

instn1~o continue, 338-339

Chang. Fields, 116


sim bo los
deficicao, 500
exibindo, 506-50 7
sim bolos de campo
Iiseagem, 309
u tilizaes, 310
sim bo los e caracteres de
desenho de linha
Iistagem, 504

aintax e

instru<;ao do, 328-329


varyin g, ad.i~o,
332-3 34
v:uyinglenddo, adi~o,
334-335
instru~o editor-call,

395-39 7

ABAP/4,236-23 7
event o de inicializacao,

instru~o, 560

instru<;ao exit, 327-328

654
evento selection-screen

insrrucao form , 559

pushbutton, 655-656
ins rrucac add, 306-307

instI1:t~o if, 316


instruljao include, 598-600

inStru<;20
add-corresponding,
307

instru~o free, 403

instru~o inse rt, 398

ins trucio insert lines, 393


inStruljio lo op at, 359-3 60

in strulfio appen d, 354


occurs addition,

adi<;5es from, eo,


whe re, 3 62~3 63

357: 3,9

instrucao que pede


aleerar 0

inStruc;ao appen d lines,


392
instru<;3a append so rte d
by, 413-417
inStruyao at end of, 444

processamento do
lo op, 364
instrucio m essage-id,
682-683

instru<;ioat fIrst, 440

ins cru~o m odify, 400

instru<;io at new, 444


in Stru<;2o back, 537

instru~o mo ve, 291

instruljao call functi oo ,


610-611

inStnlt;aO
move -corres ponding,
303

instru~o

ins tru~o param eters,

247-248

liaha,

especificacoes de
po si~o

e
cc mprimenco,
341-344

area de rrabalho
explfcita, 77

306'307
matc hco de , 666

Stan dard Task, rip e de

areas de rra balho de


tabela, 76-77

mes sage, raising,


in scru<;ao, 645

Standard, barr. d.
ferramentas, 16

clausula wh ere, 78-79


em ad.i<;3.o de tabela,

selection-screen blo ck
with frame, 667

ABAP/4 Dictio nary


butto n, 67

tabelas int ernas , 388

ABAP/4 Editor
conero les, 52 -53
recu rso Find and
Rep lace, 54-57

estrurura 51St,
exibindc, 82

sites da Web para curses d e


trcinamento,10

adi<;ao type tJtnus like,

proce ssamc nto da

Size Ca tego ry, campo,


descricao, 195
ski p sy-Iin ct, utilizac;5es, 713
skip , instru~o, sintaxe, 534
SM31 e SM3 0, navegadcres

426

inscru~o AVI

select, 74
processamento de
Back, 75
processamenco de

efeiec cia tabela de

Page Down, 7+.7 5


sy-dbcnt, 80-81

verifica <;3.o em,


253-254
ins tru<;ao positio n. 538

sy-subrc, 79-80
instru<;2a selec t single.

instru<;ao ra dio bu ttons,


parimetro de grupo,

83-84
inStrulf20
selection-screen,

673
inStrulfao raise. 642
ins rrucio read table,

pardmeerc de cain d e
seleljia,671

364-36 5
adi<;ao de Indice,

instru<;ao select-options,
672

365-366

instru~20 set blank line s,

adi<;ao de pesquisa

540

binaria, 370
com adi<;iio de chave,

ins ttu <;ao skip, 534


instru<;ao SOrt, 376

367-370

como adit;i.a de textc,

comparando adi<;ao,

379-382

372-374

ins truljio sum, 449

sem adi<;5es,

instru<;20 tab les, 268 269

370-372
tran spartanda adi<;io,
374-376
ins tru ljio refresh. 405

"

Application), ABAP/4
Ed itor, 58

Standard Roll, ripe de

bc ee es de op~o,
25 1
adi <;ao de lecras
minusculas,250
253
adies a, 249
com o adi~o de caixa
de sel~o, 250-25 1

Stack. controle {barra de


ferramentas

mstruljOes add and


add-correspondin g,

reserve, 523

lnstculjio select, 72

perigo oculto ern,


457- 458

adi<;ao d e gropo de

389

contagem de

508-5 09

451-452

241-242,263-264
inserucsc dele te, 408-409

report, tamanho

de linha e adir;:Ocs de

on, 531

instru~o data , 77,

instru~o describe cable,

instru~o

de dadcs, 134
solucionandc problemas
do~os,criando, 111

objeto, 695

Command Field, 19-20


Find bu tto n, 28 0

start-of-selection,
automaticamen te
inscrindo Iistagem , 551
Status, comando (m en u
System), 20, 95

elementos de dados ,
criando , 115-116

stop, instruc;ao
inStruc;ao loop at e, 364

in ser indo linhas em


tabelas, 130-131
links d'e hipe rtexeo e

strings de ca mpo
atribuicac envolvendo

ajuda Fl , adicionando ,

ucilizacoes, 714

138
navega dor de dados SE 16,

duas listage ns, 268


con rendo ou tra listage rn
d e String de campo,

132
programas, processo de

265
defmi lj2o, 263

cria~o, 50
tabelas rransparentes,

defmindo

criando, 119 122


sort, ins trut;i.o, utilizando
com tahelas internas,
376-382
SPACE, constante, 262

inscru<;aotyp e, 270-272

spaol, irnp ressaa, 512-5 13

instruljio while, 336-337

Spool, tipo de objeto,

instru<;ao write, 46 7-468

ohjeto, 695

694- 695

como tabe la ODIC ou


lista gem d e
eserueura, 265
lnstruljaO de dadcs,
263-2 66
ins tnl~o tables, 268-269

instru~ao move, 297303

camp os numericos de,


299-300

745

'"'

r> r-

~~~~0rr~rr~0rrrrr~~~r~~~~~~~~~~~~~~~

746

"REND A EM 21 DIAS ABAP/4

cipos de dados de
caractere,
utilizando.300-301

tipos de dados
numericos,
u tilizan do, 301 -303
Iistagem da adi~ao

variavel,332
p assando para
su b-retinas, 575
utilizando como varidveis
do tipo char, 267-268
strings,localizado todas
ocorrencias de, 56
Structure (DDIC), tipo de
o bjeto, 695

subcampos
instru~ao

por valor e resultadc,

syststnu~ture,instru ~ao

58 1-583
passando st rin gs de

select, 82
System, comandos do menu

campo pan, 575

Crea-te New Session, 76

passando tab elas internes


para, 583

Status, 20, 95

sy-subrc

configurando 0 valor de

corp o por referencia,

de dentrc de s

587
corpo por referencia,

m6dulos de

valor, ou valor e

funliao, Iistag em,

resu lta do, 589,

642- 643

590-591

instrucio raise,

des crevendo dentro da

641-644

sub-retina, 584-5 85

m essage, instrucao

sintaxe, 584

raising, 644-64 8

tabelas com linhas de

ins trucic select, 79-80

cabe"lho, 586-5 92
move, 296 -297

inserucaowrire, 471-472

sub-retinas
chamada urn mostradc na
Listagem 18.12, 594
chamando uma sene de
listagens, 560~561
definindo em grupos de
fun c;aovia F Ol ,
627-628
deixando, 561-563
descricao, 558
efeitos de exit, check e

tipcs, 559
comparando com
comparando com m6dulos

charnando, 559-561
passando parametres
p ara , 576-577
rnetodcs, 578-5 83
p or referencis,
57 8-580
par valor, 580-581

sy- to ccu , areas d e pagina~ao


e, 710
sy- uzeit, campo 245

comparando co m
ext ernos, 593
definindo e cham ando ,
559-561
deixando, 56 1-563

adi cionando lisragem, 2 86


list agem, 283
sy -daturn, campo, 245
sy-dbcnt, selecion an do

instrucao, 81
sy-fdpos, 324- 326

sy-index content namero


atual d e itera~oes ,
listagem, 329

svstoc Message ID, tipo


de objero, 695

campos,adicionando
abordagem top-down,
122- 124
acresc entan do , 126

inserindo, 126
campos, excluindc, 127

campo (Dictionary:
Table/Structu r e:
Change Fields, te la) , 117
tabela, campos
campos de quanridade,
170-171
campos monetarios,
168-169
tabela, dusters, descricio, 99

tabelas
Active, versoes ativas,
comparan do com
tabelas d e banco de

dados, 226-22 7
alt erand o a nom e de, 124

namero de linhas,
389-390

excluindo, 125, 705


exibindo, 70

determinando se vazia,

[erramen ta ur ilitdria de

esrrururas para

389

banco de dados,

testando e para

excluindo e re criando

m odificando

cccveocses p ara
atri builiao de
nome, 105
eleme ntos de dados,
102

configuracoes tecnicas
buffer, utilizando ,
196-213
buffer em re sume de

por dentro, 232 -233


hi st6ri co de tabela
au tormcicc
descriliw . 217
u tilizaado, 221
in dices
criandc, 187-189
descricso, 183-186

dererminando qual e

tabe las, 212-213

u cilizada com a

campo Size Cate gory,

ferramenta de

195

cemrios com tab elas

195-196
res ume, 221-222
tecnicas de u sa de
buffer, 204-2 05
cipos de u sa de buffer,
205-209
cop iandc, 124- 125
criandc, 106-107

ins u uliao append,


u tiliz wdo, 353- 359
instru~a o loop at,

utiliz and o, 359-364

instrucac sort,

vantagens, 185

exibindo, 193

403-406
indice, defull~o,3 65

191-193

211-212

ndmero d e exte ns oes,

408-412

excluindo 0 conteudo,

rastr.eio de SQL,

exibindo codas, 186-187

classes de dados,

ccne ea do, 388


excluin do linhas, 406,

instrUc;ao read table,


utilizando, 364- 376

de u so de buffer,

bu ffer, 210

Tab. Maint. Allowed,

21 8-220

dete rm inand o

cornponent es de

deslocamen eo de

defini~o . 68
documentos alcerados,

chave estrangeira.143

193-1 95

sub-retinas in ternes

sy, variavel

internes, definindo e

e,710

de fun,ao, 600
descricio, 592

Iistagem, 562
com in rernas ,

396
sy-tabix, cperacses de loop

in temas, 593

sum, instrucao, 449-451

593

in st ru cdc editor- call,

sub-retinas extemas

stop dentro de
extemas, comparando

variavel, depois da

--::iH::DI::::.J
CE

indi ces secundarios


criando, 189-190
d eflnics o, 185
excluin do, 190-191
exibindc, 186
m tem as

conteudo classificando
de, 376-382
con teudo comparando
de do is, 395
cop iandc dados entre,
393-394
copiando p art es de,
392-393

urilizando, 376-382
lend o dados de,
359-376
linh as inserindc em,
397-400
modificand o Iinhas
em, 400-403
passando m6dulos de
fun.,.o, 622-627
preenchend c a partir
de tabelas de banco
de

dadcs, 425-437

preenchendo utilizando
a insrrucio collect,
417-422
processamento de

DDIC,67-68

definii;ao, 350 -353

iccenupcso de

de duster

definind o, 349

controle, 440-444,

descricso, 99- 101


restricoes em, 101-102
vantagens, 100
de verifica~o , 143

definindo a Iinha de
cabecalho, 350
definin dc 0 corpo,
350

445,449,451-458
programa para obter
informecces sabre,
390 -391

747

testando
chaves estrangeiras, 149
modules de fun~o,
629-631

Text Elements from the


ABAP/4 Editor,
comando (menu Goto),
670

tipo de dado char definido


pelousuario,listagem,271
tipos de campos e chaves
estrangeiras, 156-160
campos-chave, 156-160
candidatos-chave,
156- 157

tipos de dado numericos


descri!rae, 245-246
instru<j3.0 move,
utilizando, 301-303
tipos de dados
definindovariaveis com
mapeando tipos de
dados DDIC para
tipos de dado
ABAP/ 4,246-247

tipos de clados de
caractere, 244
tipos de dados de
comprimenrc fixe,
244

tipos de dados
numericos, 245-246
instrusao if, ordem de
preferenca, 317
rabelas, alrerandc em,
127-128

<

Titlebars, tipo de objeto, 695


to addition, instru ~o loop
at, 362-363
Tools, comandos do menu
Administration, 22
Development
Wotkbench, 12

top include, programa,


descricdo,602
top-of-page, eventcs
acionando, 550-551
. f eventos end-of-page,
521-522

insrrucio write, 519


traduzindo elementos de
rexto, 515-51 7
transacoes, definicao, 19
Transaction Codes, tipo de
objeto, 695
transportando adi~o,
instru~o read table, 375
tratamento automaticc de
cliente, Open SQL e, 37
tutorial on ABAP/4 Editor:
Edit Program, tela, 64
Type Group, objeto de
Grupo, 695
type, instru~;io, sintaxe,
2 70-272

type-pool, instrugac,
contendo tipos e
constantes, Iistagem, 274

U
under addition, instru~a o
write, 472-473
Undo, conrrole (barra de
ferramentas
Application), ABAP/ 4
Editor, 58
unidades de modularizacao
descricso, 545-546
utilizacoes, 546
unit addition , instrucao
write, 484,486-490
User Defaults, comandos
(menu System), 511
User Profiles, tipo de
ohjeto,695

Utilities , comandos do
menu
A BAP / 4 Key Word Doc,
534

Help on, 65
utilizando e alterando sao
identicos em fun~o,
llstagem,579-580
UXX (segundo programa
include), descricac, 602

V
validando dados, 145
valores de componente
gone, 442-444
valores de X, cardinalidade,
155

valores de Y, cardinalidade,
155

valores excluidos
(excludes),633
valores iniciais padrao,
deini~o, 286
valores, excluidos, 633
Value Table, campo
chaves estra ngeiras e,
165-166

como proposu Check


Table , 166- 167
sem chaves estrangeiras, .
168
variaveis

acessando incorretamente
antes de definir,
listagem, 243
cabecalhos padraode
pdgina, lisragem, 517
compuuundo, 707
convencoes para
atribuicao de nome,
242

'

de sistema, Iistagem, 28'

rrrrr0~n0~n~~nn~n~n~

i'

I
definindo, 714

como pargmetros, 572


insrructo de dados,
utilizando,241 -243

instru<;io form,
571 -573
inStru~o

param.eters,

utilizando, 247-251

tipos de dados,
243 -247

definindo dados, 566-568


globais, descricio , 563
insrrucrc dear e, 287-288,
2 89-290

local, descri~ao, 563


passando, 715

tabelas definindc areas de


trabalhc, 564- 566
vari dvels de sistema
comumen te utilizadas , 280

descricao, 79
exiblndo, zso
instru<;io describe table,
389
localizado, 283-286

nomes de, 79
sy-dbcnt, 80-81

sy-fdposvoperadores
para, 324
sy-index, 329
sy-subrc, 79-80

variaveis globais, descricdo,


563

varisveislocals, descricto,
563

variaveis t ipo c, move ndo


para ou de strings de

campo contend o tip os


n umericcs, 300
variaveis tipc d, expressoes
matema ti cas e, 308
variaveis, com putando, 707
variavel, nomes, 706

varredura de intervale
de fndice, definicio,
188

varying addition, instrucdo,


332-3 34

Ven dor Master Update


Transaction Address,
tela, 12
Vendor Master Update
T ransaction: Initial, tela,
12

verificacac, campos de,


ch aves estrangeiras
compostas e, 152
verificacio, tabelas de,
defini~o, 143

verifi cando chaves


estrangeiras,144-145
versdo, nfveis de, visao
genl,95-96

versao, notes de, acessan do,

adi~oes

no-zero e
no-sign, 481~482
:ldi<;6es redondas
decimais, 482-484-

w
where, adicio, instrucio
loop at, 362-363

where, clausula

comprimentos padrao,

instruljaoselect, 78
suportada par indices, 185

461-462

desloeando a justificativa,

Where-Used List, controle


(barn de ferramentas
Application), ABAP/4
Editor, 58
while, instru~o, sintaxe ,

490-491

especificact o de
comprimento, 470-4 71
especificacao de posicao,
468-470

336-33 7

especificacoes de posi<;ao

Windows, ambiente,

e comprimentc,

iniciando 0 R/3, 10
Windows, eventos,

341-344

interceptando, 31

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

objecos de dados, nIveis


de, 237

strings de campo , 270


vis ualizando

paginando cabecalboe,
514

programas de inclusao e
incluldos, 600
safda no spoo l, 512

write, instru!;ao

adi<;ao de nenhuma
lacuna, 287, 473-474
adiljao de unidade,
486-490

adiljoes de formaeacsc

grafica
como Icone, 501-5 03
como linha, 503-506
como simbolo,
500-501

exibin do simbolos
disponfvel, Icones e

caracteres de

desenho de linha,
506 -507

sintaxe, 500

adi<;oes monetaries,
4 84-486

adicoes monetarias e de
unidade, 484

.'

I,"

exibindo exisrenres,

521-522

478-479

retinas de conversao

evento top-of-page, 519

eventos, efeitos em,

dentro de

domfnios, 476-478
sintaxe, 467-468

550

Iormatacio padrao,
465-467

subcampos, 471-472

dOlUS, 463

tabelas intemas e, 716

estouro, 464

u nderaddicioD,472-473

numeros, 464

vezes,4 64
formatando da ta, 479 -481

mascaras de ediljao,
474-476

saidas de ccnversao,
476-479

with key addition,


instrucao read table,
Workflow, tipc de objeto,

evento end-o f-pa ge,

z
ztxa, grupo de fun~o,
listagem, 622
ztxlfal, tabela, exibindo

dado s na, Iistagem, 135


zxtl 901listing, 599

Você também pode gostar