Sumrio
1 - Caminho da Certificao de desenvolvedor ABAP Viso Geral...........................11
Mudanas na pontuao do exame..........................................................................12
Nveis de Certificao...........................................................................................12
Nveis Avanados de Certificao.........................................................................14
Tornando-se um Desenvolvedor ABAP Certificado pela SAP Nvel Associado Viso
Geral........................................................................................................................ 15
Especificao Do Exame Associado.....................................................................15
reas De Competncia.........................................................................................15
Tornando-se Um Desenvolvedor ABAP Certificado pela SAP Nvel Profissional Viso Geral............................................................................................................... 18
Certificao Desenvolvedor SAP Nvel Profissional Sistema De Integrao ABAP
SAP NetWeaver 7.0...........................................................................................18
Especificaes Do Exame Profissional.................................................................18
reas De Competncia.........................................................................................19
Certificao Desenvolvedor SAP Nvel Profissional Interfaces De Usurios ABAP
SAP NetWeaver 7.0...........................................................................................20
Especificaes Do Exame Profissional.................................................................20
reas De Competncia.........................................................................................21
Sumario....................................................................................................................23
2 - Cursos e Experincias............................................................................................24
Cursos De Treinamento Para ABAP.........................................................................25
Fontes De Informao..............................................................................................25
Compreenso Estratgica........................................................................................27
Estratgias Para O Exame SAP...............................................................................28
Estratgia Geral Da Certificao..............................................................................29
Sumario....................................................................................................................30
3 - SAP NetWeaver Viso Geral...............................................................................31
Objetivos Desta Parte Do Teste................................................................................32
Relembre-se Conceitos Chave.................................................................................32
Resumo Dos Produtos SAP..................................................................................32
Evoluo Do Produto............................................................................................33
Arquitetura Do SAP NetWeaver............................................................................36
Kernel E Servios Administrativos........................................................................38
Viso Orientada A Software..................................................................................39
Viso Orientada Ao Usurio..................................................................................40
3
Estrutura De Um Processo De Trabalho...............................................................43
Terminologia Importante...........................................................................................46
Questes Prticas....................................................................................................47
Respostas E Explicaes.........................................................................................48
Leve Com Voc........................................................................................................49
Relembre..............................................................................................................49
Dicas.....................................................................................................................50
Sumario....................................................................................................................50
4 - Utilizao Do ABAP Workbench.............................................................................52
Objetivos Desta Parte Do Teste................................................................................53
Relembre Conceitos Chaves....................................................................................53
ABAP Workbench.................................................................................................54
Repository Browser...............................................................................................57
Sistema De Informao R/3 Repository................................................................58
Configuraes Do Workbench..............................................................................59
Novo Editor ABAP E Configuraes Do Workbench.............................................60
Ferramentas Do ABAP Workbench Em Detalhes.................................................63
Enhancement Information System........................................................................65
Pacotes e Seus Atributos......................................................................................67
Transport Organizer..............................................................................................69
Questes Prticas....................................................................................................72
Respostas e Explicaes.........................................................................................74
Leve Consigo........................................................................................................... 76
Lembre-Se............................................................................................................ 76
Sumario....................................................................................................................77
5 - Utilizao Do Debugger ABAP................................................................................78
Objetivos Desta Parte Do Teste................................................................................79
Conceitos Chaves....................................................................................................80
Debugger Novo e Clssico...................................................................................80
Ferramentas do Novo Debugger e UI...................................................................84
Assertions e Pontos De Paradas..........................................................................90
Personalizao e Configurao do Novo Debugger.............................................91
Terminologia Importante...........................................................................................93
Questes Prticas....................................................................................................94
Respostas E Explicaes.........................................................................................96
Leve Consigo........................................................................................................... 97
4
Lembre-Se............................................................................................................ 98
Dicas.....................................................................................................................98
Sumario....................................................................................................................99
6 - Tipos ABAP e Objetos de Dados..........................................................................100
Objetivos Desta Parte do Teste..............................................................................101
Conceitos Chave....................................................................................................102
Tipos ABAP e Objetos de Dados........................................................................102
Tipos de Dados ABAP.........................................................................................108
Tipos de Dados Locais........................................................................................111
Tipos de Dados Globais......................................................................................114
Visibilidade do Objeto de Dados.........................................................................116
Terminologia Importante.........................................................................................117
Questes Prticas..................................................................................................117
Respostas E Explicaes.......................................................................................119
Leve Consigo......................................................................................................... 121
Lembre-Se.......................................................................................................... 122
Sumario..................................................................................................................122
7 - Definies e Uso das Tabelas Internas.................................................................123
Objetivo Desta Parte do Teste................................................................................124
Conceitos Chaves..................................................................................................124
Definio e Uso das Tabelas Internas.................................................................125
Definindo Tabelas Internas ABAP.......................................................................129
Terminologia Importante.........................................................................................149
Questes Prticas..................................................................................................149
Respostas E Explicaes.......................................................................................152
Leve Consigo......................................................................................................... 153
Lembre-Se.......................................................................................................... 154
Sumario..................................................................................................................154
8 - Instrues SQL Incluindo Estratgias De Atualizao...........................................155
Objetivos Dessa Parte Do Teste.............................................................................156
Reviso Dos Conceitos Chaves.............................................................................157
Modelagem De Dados........................................................................................157
Recuperao De Dados......................................................................................160
Desempenho Do Acesso Ao Banco De Dados....................................................162
Unidade Lgica De Trabalho (LUW Logical Unit Of Work)...............................165
Enfileiramento e Desenfileiramento....................................................................167
5
Atualizaes Diretas (Inline Updates).................................................................172
Perform On Commit............................................................................................173
Mdulos de Atualizao......................................................................................173
Questes Prticas..................................................................................................179
Respostas E Explicao Das Questes.................................................................182
Lembre-Se............................................................................................................. 184
Revisando........................................................................................................... 184
Dicas...................................................................................................................185
Resumo..................................................................................................................185
9 - Programas Bsicos ABAP E Criao De Interface................................................186
Objetivos Dessa Parte Do Teste.............................................................................187
Relembrando Conceitos-Chave..............................................................................188
Desenvolvimento Organizado.............................................................................188
Viso Geral Da Programao ABAP...................................................................189
Bloco de Eventos ABAP......................................................................................195
Instrues Bsicas ABAP...................................................................................199
Sub-Rotinas ABAP..............................................................................................202
Mdulos De Funo ABAP.................................................................................203
Classes E Mtodos ABAP...................................................................................206
Tela De Seleo ABAP.......................................................................................209
Verificao De Autorizao.................................................................................211
Dynpros ABAP....................................................................................................213
Mensagens de Dilogo.......................................................................................215
Terminologia Importante.........................................................................................220
Questes Prticas..................................................................................................221
Respostas Das Questes Prticas E Explicaes..................................................224
Lembre-Se............................................................................................................. 227
Relembrando......................................................................................................227
Dicas...................................................................................................................228
Sumrio..................................................................................................................228
10 - Dicionrio ABAP.................................................................................................229
Objetivos Desta Parte No Teste..............................................................................230
Conceitos Chave....................................................................................................230
Overview.............................................................................................................230
Tipo De Dados Complexo E Bsico....................................................................232
Tabelas Transparentes........................................................................................240
6
Ajuda de Pesquisa..............................................................................................244
Anexar Ajuda de Pesquisa..................................................................................247
Objeto de Bloqueio.............................................................................................247
Tipos de Viso e Manuteno.............................................................................249
Terminologia importante.........................................................................................251
Questes Prticas..................................................................................................252
Respostas e explicaes para questes prticas...................................................253
Leve Consigo......................................................................................................... 255
Lembrete............................................................................................................255
Sumrio..................................................................................................................256
11 - Unicode............................................................................................................... 257
Objetivos Desta Parte Do Teste..............................................................................258
Conceitos Chave....................................................................................................259
Compatibilidade Unicode....................................................................................259
Ferramentas Unicode.........................................................................................261
Teminologia Importante..........................................................................................269
Questes Prticas..................................................................................................270
Questes Prticas, Respostas E Explicaes........................................................271
Leve Consigo......................................................................................................... 272
Lembre-Se.......................................................................................................... 272
Dicas...................................................................................................................273
Sumario..................................................................................................................273
12 - Telas Clssicas...................................................................................................274
Objetivos Desta Parte Do Teste..............................................................................275
Conceitos-Chave....................................................................................................276
Design De Tela...................................................................................................276
Status GUI e Desenho de Ttulos.......................................................................293
CRIANDO UMA GUI STATUS E GUI TITLE.......................................................297
Programando Table Control................................................................................301
Fluxo Lgico De Tela Para Control Table............................................................303
Modificando Telas Dinamicamente......................................................................305
CRIANDO UM PROGRAMA MDULO POOL....................................................306
Terminologia Importante.........................................................................................308
Questes Prticas..................................................................................................308
Respostas E Explicaes Das Questes................................................................310
Leve Consigo.......................................................................................................... 311
7
Lembre-se...........................................................................................................312
Sumrio..................................................................................................................312
13 - Telas De Seleo................................................................................................313
Objetivos Desta Parte Do Teste..............................................................................314
Conceitos Chaves..................................................................................................314
Telas De Seleo................................................................................................315
Projeto De Tela De Seleo................................................................................315
Parameters.........................................................................................................315
SELECT OPTIONS (Opes de seleo)........................................................318
Formatando A Tela De Seleo...........................................................................324
Tela De Seleo Com Subtelas..........................................................................326
Processamento Da Tela De Seleo...................................................................329
Terminologia Importante.........................................................................................330
Questes Prticas..................................................................................................330
Respostas E Explicaes.......................................................................................332
Leve Consigo......................................................................................................... 334
Lembre-se...........................................................................................................334
Sumario..................................................................................................................334
14 Programao Orientada a Objetos ABAP..........................................................336
Objetivos Desta Parte Do Teste..............................................................................337
Conceitos Chaves..................................................................................................338
Conceitos De Programao Orientada A Objeto.................................................338
Objetos ABAP.....................................................................................................339
Classes ABAP.....................................................................................................339
Classes Locais....................................................................................................339
Classes Globais..................................................................................................341
Visibilidade E Instanciao De Classe................................................................343
Instancia E Componentes Estaticos...................................................................346
Objetos...............................................................................................................347
Atributos.............................................................................................................347
Mtodos..............................................................................................................349
Eventos............................................................................................................... 359
Questes Prticas..................................................................................................364
Questes Prticas Repostas E Explicaes...........................................................366
Leve Consigo......................................................................................................... 368
Relembre-Se.......................................................................................................368
8
Sumrio..................................................................................................................368
15 - Alv Grid Control...................................................................................................370
Tcnicas que voc aprender:...............................................................................370
Objetivos Desta Parte Do Teste..............................................................................371
Lembre-Se Conceitos Chave.................................................................................372
Viso Geral Da Programao Alv.......................................................................372
Programao Do Grid ALV (CL_GUI_ALV_GRID)..............................................373
Variantes De Exibio.........................................................................................377
Catlogo De Campos..........................................................................................378
Manipulao De Eventos Em ALV.......................................................................380
Modelo De Objeto ALV........................................................................................381
Terminologia Importante.........................................................................................390
Questes Prticas..................................................................................................392
Respostas E Explicaes.......................................................................................394
Leve Consigo......................................................................................................... 395
Relembre-se.......................................................................................................395
Dicas...................................................................................................................395
Sumrio..................................................................................................................396
16 - Interface De Usurio (Web Dynpro)....................................................................397
Objetivos Deste Captulo Para o Teste...................................................................398
Conceitos Chave....................................................................................................399
Web Dynpro Designer.........................................................................................399
Controllers..........................................................................................................403
Contextos............................................................................................................405
Eventos............................................................................................................... 405
Aplicao Web Dynpro.......................................................................................406
Elementos Grficos.............................................................................................407
Terminologia Importante.........................................................................................413
Questes Prticas..................................................................................................414
Questes Prticas, Respostas e Explicaes........................................................415
Leve Consigo......................................................................................................... 416
Lembrar..............................................................................................................417
Dicas...................................................................................................................417
Sumrio..................................................................................................................417
17 - Anlise E Design De Classes..............................................................................418
Objetivos Desta Parte Do Exame...........................................................................419
9
Relembre-se Conceitos Chave...............................................................................420
Mtodos Funcionais............................................................................................420
Mtodos Estticos...............................................................................................421
Singletons........................................................................................................... 422
Amizade..............................................................................................................423
Herana..............................................................................................................423
Redefinio.........................................................................................................424
Visibilidade.......................................................................................................... 425
Casting...............................................................................................................426
Interfaces............................................................................................................428
Identificao De Classes....................................................................................430
Terminologia Importante.........................................................................................432
Questes Prticas..................................................................................................432
Questes Prticas, Respostas E Explicaes........................................................434
Leve Consigo......................................................................................................... 435
Relembre-Se.......................................................................................................436
Dicas...................................................................................................................436
Sumrio..................................................................................................................436
18 - Ampliaes E Modificaes................................................................................437
Objetivos Desta Parte Do Exame...........................................................................438
Relembre-se Conceitos Chave...............................................................................438
Ampliando Aplicaes SAP.................................................................................439
Tcnicas De Ampliao......................................................................................439
User Exits...........................................................................................................440
Customer Exits...................................................................................................442
Program Exits.....................................................................................................443
Screen Exits........................................................................................................446
Menu Exits..........................................................................................................448
Business Transaction Events..............................................................................448
Interfaces Publicar E Assinar..............................................................................449
Interfaces De Processo.......................................................................................450
Pesquisa BTE.....................................................................................................451
Business Add-Ins................................................................................................451
Procurando Business Add-Ins.............................................................................453
Implementando Business Add-Ins.......................................................................456
Implementando Ampliao De Menu..................................................................457
10
Implementando Ampliao De Tela.....................................................................458
Ampliando O Dicionrio Abap.............................................................................458
Framework De Ampliao...................................................................................459
Modificao.........................................................................................................461
Modification Browser...........................................................................................462
Assistente De Notas SAP...................................................................................462
Questes Prticas..............................................................................................463
Respostas E Explicaes.......................................................................................465
Leve Consigo......................................................................................................... 466
Relembre-se.......................................................................................................467
Sumrio..................................................................................................................468
19 - Relacionamento De Tabela.................................................................................469
Objetivos Desta Parte Do Teste..............................................................................470
Conceitos Chaves..................................................................................................470
Relacionamento De Tabelas...............................................................................471
Entradas Possveis (Ajuda De Pesquisa)............................................................477
Questes Prticas..................................................................................................482
Questes Prticas Repostas E Explicaes...........................................................483
Leve Consigo......................................................................................................... 484
Relembre-Se.......................................................................................................485
Dicas...................................................................................................................485
Sumrio..................................................................................................................485
11
12
Poucas credenciais no mundo dos negcios carregam o valor da certificao SAP.
Aqueles que a possuem aperfeioaram sua habilidades atravs de estudo rigoroso ou
experincia direta. Eles demonstravam suas habilidades passando demandas, exames
orientados a processos. Indiferentemente de voc ser um parceiro SAP, cliente ou
usurio, a certificao SAP pode lhe dar uma vantagem competitiva muito distinta.
Durante os dois ltimos anos, a administrao do portflio de educao global SAP
completou um reviso compreensiva das estratgia de certificao SAP e criou um
caminho para a melhoria do valor do programa de certificao como um negcio chave
para a SAP seguir em frente. Este programa foca em construir um valor agregado a
comunidade de certificao para os indivduos certificados pela SAP e ajudar os
cliente SAP e parceiros a tratar a certificao como uma meta para engajamento,
recrutamento ou trainar recursos com habilidades nos recursos SAP. O caminho
mostra os paos necessrio para introduzir rotas de multicamadas de certificao e
certificao de nvel avanado para melhor atender as necessidades do mercado.
Nveis de Certificao
Agora voc pode obter certificaes em trs nveis de expertise associado,
profissional e mestre. Estas certificaes podem ajuda-lo a validar suas habilidades e
13
conhecimento e ganhar expertise e credenciais que voc precisa para liderar os
esforos da sua organizao para implementar o software SAP, amadurecer suas
capacidades tecnolgicas, e transformar sua paisagem de TI. A figura 1.1 mostra a
progresso do nveis com a relao a sua experincia.
Certificao Associado
Esta cerificao cobre os conhecimentos bsicos requeridos para um consultor
SAP, garantindo a aquisio de habilidades e conhecimento de solues
SAP.Com a certificao em nvel associado voc pode:
o Ganhar o reconhecimento externo de excelncia que os clientes
procuram;
o Diferenciar se de mercado de trabalho saturado;
o Executar suas tarefas com confiana e habilidade;
o Acessar uma comunidade de pessoas com nvel de certificado
associado.
Certificao Profissional
Esta certificao avanada requer experincia em projetos comprovada,
conhecimento de processos de negocio e um conhecimento mais detalhado de
solues SAP.Com a certificao Profissional voc pode:
o Demonstrar sua experincia e sua expertise atravs de um rigoroso
processo de teste;
o Promover um reconhecimento mais global com melhor remunerao;
o Liderar e executar tarefas e engajamentos;
o Ter acesso em uma comunidade com certificado profissional.
Certificao Mestre
Esta certificao envolve demonstrar um nvel expert no conhecimento de uma
rea especifica do software SAP, e habilidade de direcionar inovaes e
otimizaes de solues atravs de um conhecimento profundo e viso.
Certificao deste nvel requer ampla experincia de projetos, compreenso do
14
produto SAP e habilidade para criar uma viso de TI futura dentro de um
ambiente complexo de projeto.Com a certificao de nvel mestre voc pode:
o Assegura o seu lugar numa comunidade de visionrios;
o Passar em um processo de admisso seleto;
o Definir e guiar uma estratgia a longo prazo;
o Participar em eventos coquetis e briefings de nvel mestre.
Nenhum curso ou conjunto de curso necessrio para se fazer a prova de
certificao em particular. A SAP prove uma lista de exerccios recomendados para lhe
ajudar a se preparar.
15
NOTA: ao chegar ao centro do teste voc devera apresentar dois documentos
de identificao validos, um dos quais devera possuir foto, como passaporte, carteira
de motorista (CNH) ou RG com foto.
reas De Competncia
A tabela 1.1 e a tabela 1.2 iro ajudar voc a identificar as reas de
competncia abrangidas por este teste porcentagem indica a poro do teste que
dedicada para esta rea de competncia em particular. A seo maneiras de se obter
identifica cursos standard da SAP education que abrange material testado no exame
de certificao. O curso primrio foca especificamente no material do exame de
certificao, enquanto as colunas alternativas e os outros identificam outros cursos
que contenha o mesmo material.
Competncia
Construir solues
procurando
Importncia
40%
16
independentemente por solues
de
implementao
validas.
Baseado
em
profundo
conhecimento e habilidades de
aplicao,
requerimentos
de
projetos podem ser transformados
em solues solidas para o cliente
em:
Tpicos
Modos de se obter
Primrio
Alternativo
Outro
s
Importncia
60%
Maneiras de se obter
Primaria
TAW10
Alternativa
NW001
Outros
SAPN
W
17
Para se preparar para o exame lembre-se que o exame abrange uma vasta
rea de tpicos e assuntos, e deste jeito no possvel perguntar muitas questes
sobre qualquer um dos tpicos. Certos tpicos como a criao de interface e
programas bsicos ABAP, criao e analise de classes, melhoramentos e
modificaes, tipos e objetos de dados ABAP, e o dicionrio ABAP recebem mais
nfase do que os tpicos como uso do programa de debug ABAP, Unicode, ALV.
DICA: voc deve usar os guias de porcentagem das tabelas 1.1 e 1.2 para
alocao do seu tempo de estudo.
18
NUMERO DE QUESTES
90
19
DURAO
180 minutos
reas De Competncia
As tabelas 1.3, 1.4, 1.5 lhe ajudaram a identificar as reas de competncias
abrangidas neste teste. A seo maneiras de se obter identifica cursos standard da
SAP education que abrange material testado no exame de certificao. O curso
primrio foca especificamente no material do exame de certificao, enquanto as
colunas alternativas e os outros identificam outros cursos que contenha o mesmo
material.
Competncia
Conceitualisar processos complexos
em solues. Baseado na aplicao
profissional e qualificao de analise
avanado os requerimentos de
negcios do cliente podem ser
reconhecidos em conceitos e plantas
para as solues do clientes:
Tpicos
Importncia
40%
Maneiras de se obter
Primrio
Alternativ
a
BC416
BC420
Outro
s
Web Services
rea de trabalho de transferncia de
dados e rea de trabalho de migrao
de sistemas legado
Framework
de
melhoramentos BC425, BC427
(BADIS, Sadas de usurios)
Interfaces de comunicao (ALE, BC415
IDOC, RFC, etc...)
Criando e customizando BAPIS para BC417
interfaces
Alavancado a tecnologia ALE
BIT300
BIT350
Tabela 1.3 Conceitualisar processos complexos em soluo para os clientes
Competncia
Construir
solues
procurando
independentemente opes validas de
implementao. Baseado em profundo
entendimento
e
habilidades,
requerimentos de projeto podem ser
transformados em solues solidas para
o cliente:
Tpicos
Importncia
40%
Maneira de se obter
Primrio
Alternativ
Outro
20
o
Objetos ABAP
BC401
Programao avanada
BC402
SQL / Banco de dados
BC400, BC430
Analise de performance de programas
BC490
Sistema de mudana e transporte (rea ADM325
de trabalho / customizao, Ferramentas
de transporte, TNS).
Assistente de notas da SAP
BC425
Framework de controle da internet
NET900
Tabela 1.4 procurando independentemente opes validas de implementao.
Competncia
Completar e identificar solues
para tarefas definidas do projeto.
Baseado
em
profundo
conhecimento e entendimento
bsico,
tarefas
identificadas
podem ser executadas durante a
implementao
do
sistema,
configurao, e teste nas reas
de:
Tpicos
Importncia
20%
Maneiras de se obter
Primrio
Alternativo
Outro
s
Componentes
do
SAP SAPTEC
NW001, SAPNW
NetWeaver (PI, Portal, MDM,
etc...)
Conhecimento bsico de SOA
SOA100
Framework
de
aplicao
composto,
aplicaes
compostas.
Administrador de solues SAP
SM001
Tabela 1.5 Completar e identificar solues para tarefas definidas do projeto
Certificao Desenvolvedor SAP Nvel Profissional Interfaces De
Usurios ABAP SAP NetWeaver 7.0
O booking code para este exame P_ABAP_GUI70. O exame de certificao
corrente
intitulado
CERTIFICAO
DESENVOLVEDOR
SAP
NIVEL
PROFISSIONAL INTERFACES DE USURIOS ABAP SAP NETWEAVER 7.0.
Este teste verifica conhecimento profundo na rea de interfaces de usurios em
ABAP. Este certificado prova que o candidato tem uma compreenso avanada deste
perfil e que esta apto a aplicar estas habilidades e prover direo a implementao do
projeto.
21
Numero de questes
90
Durao
180 minutos
reas De Competncia
As tabelas 1.6, 1.7 e 1.8 iram lhe ajudar a identificar as reas de competncia
abrangidas neste teste. A seo maneiras de se obter identifica cursos standard da
SAP education que abrange material testado no exame de certificao. O curso
primrio foca especificamente no material do exame de certificao, enquanto as
colunas alternativas e os outros identificam outros cursos que contenha o mesmo
material.
Competncia
Importncia
Conceitualisar
40%
processos
complexos
em solues. Baseado
na aplicao profissional
e qualificao de analise
avanado
os
requerimentos
de
negcios
do
cliente
podem ser reconhecidos
em conceitos e plantas
para as solues do
clientes:
Maneiras de se obter
Tpicos
Primrio
Alternativo
Dynpros Clssicos
BC400
Web Dynpros ABAP
NET310
Controles
BC412
Melhoramentos
do BC425, BC427
cliente
Tabela 1.6 Conceitualisar processos complexos em solues.
Competncia
Construir solues
procurando
independentemente
opes validas de
implementao.
Baseado
em
profundo
entendimento
e
Importncia
40%
Outros
22
habilidades,
requerimentos
de
projeto podem ser
transformados
em
solues
solidas
para o cliente:
Tpicos
Maneira de se obter
Primrio
Alternativ
o
Outro
s
Objetos ABAP
BC401
Programao
BC402
avanada
SQL / Banco de BC400, BC430
dados
Analise
de BC490
performance
de
programas
Sistema de mudana ADM325
e transporte (rea
de
trabalho
/
customizao,
Ferramentas
de
transporte, TNS).
Assistente de notas BC425
da SAP
Paginas do servidor NET200
de negocio
Formulrios
BC481
iterativos SAP pelo
Adobe
Tabela 1.7 Construir solues procurando independentemente opes validas de
implementao.
Competncia
Completar e identificar solues
para tarefas definidas do projeto.
Baseado
em
profundo
conhecimento e entendimento
bsico,
tarefas
identificadas
podem ser executadas durante a
implementao
do
sistema,
configurao, e teste nas reas
de:
Tpicos
Conhecimento bsico de SOA
Framework
de
aplicao
composto,
Administrador de solues SAP
Importncia
20%
Maneiras de se obter
Primrio
Alternativo
SOA100
SM001
Outro
s
23
Compositor
visual
SAP ANA10, NWC110
NetWeaver
Componentes
do
SAP SAPTEC
NW001, SAPNW
NetWeaver (PI, Portal, MDM,
etc...)
Tabela 1.8 Completar e identificar solues para tarefas definidas do projeto.
Sumario
Voc agora tem a compreenso das diferenas entre os vrios exames de
certificao para ABAP. Este conhecimento permitira que voc identifique qual
certificao mais apropriada para o seu nvel de conhecimento e permitira que voc
foque o seu estudo nas reas em que seu conhecimento precise de alguma ajuda.
Conhecer o que voc precisa estudar fara o uso do seu tempo mais produtivo.
24
2 - Cursos e Experincias
Tcnicas Que Voc Adquirir:
25
Descrio
ABAP Bsico
Detalhes de ABAP
TWA12
Objetos ABAP e como Utiliz-los
Tabela 2.1 Treinamento mnimo de certificao.
Curso
BC400
BC401
BC402
BC405
BC414
BC425
BC427
BC430
NET310
NW001
Descrio
Fundamentos da rea de trabalho ABAP
Objetos ABAP
ABAP avanado
Programando REPORT em ABAP
Programando mudana no Bando de Dados
Melhoramentos e modificaes
Framework de melhoramento
Dicionrio ABAP
Fundamentos do Web Dynpro
Solues tecnolgicas disponibilizadas pela SAP
NetWeaver
Tabela 2.2 Cursos tpicos para treinamento para certificao.
Durao
10 dias
E-Learning
horas)
10 dias
(~20
Durao
5 dias
5 dias
5 dias
5 dias
2 dias
3 dias
2 dias
3 dias
5 dias
E-Learning (~8 horas)
Fontes De Informao
Alm do material do curso, voc poder encontrar informaes adicionais na
SAP DEVELOPER NETWORK (SDN) no site http://sdn.sap.com. Selecione o caminho
SAP NetWeaver Capabilities Development and Composition ABAP para
encontrar o site muito til que contenha informaes na forma de artigos, blogs, wikis e
matria de e-learning.
Uma rea da SDN que frequentemente vista e que nos achamos muito til
para a preparao so as verses trial. No http://sdn.sap.com navegue para
downloads SAP NetWeaver main Releases, que contem as verses trial do SAP
NetWeaver que voc pode instalar tanto para Windows quanto para Linux. Muitas dar
imagens deste livro foram tiradas destas verses trial se a sua empresa ou cliente
26
ainda no esta utilizando o SAP NetWeaver 7.0, esta mini verso permitira a voc
explorar as novas funcionalidades desta release incluindo o DEBUG ABAP e WEB
DYMPRO.
Esta mini verso, mesmo no sendo uma copia completa de um SAP
Enterprize Cor Components (ECC) System, um sistema funcional. Tambm esto
inclusos todos os exemplos do livro de programao standard de Horst Keller: ABAP
Objects ABAP programming in SAP NetWeaver (SAP PRESS 2007).
NOTA: se voc tiver duvidas quanto ao processo de instalao procure na SDN por
How to install SAP NetWeaver e voc encontrara blogs, frum, PDFs, e at elearning para lhe ajudar.
Outra rea muito vista o SAP Help Portal (http://help.sap.com). Se voc for
para SAP NetWeaver SAP NetWeaver 7.0 (2004S), voc encontrara varias reas
que documentam mudanas e funcionalidades do ABAP:
Release Overview
Descubra o que a de novo e o que mudou da verso anterior
Whats new Release Notes
Um ponto de partida para usar o software SAP e as mudanas do SAP
NetWeaver 7.0
SAP NetWeaver at a Glance
Uma viso geral dos cenrios de TI disponveis.
System Administration
Uma viso geral de como o SAP NetWeaver mantido e configurado
Installation, configuration, upgrade
Informao relacionada a planejamento, instalao, upgrade e
manuteno de cenrios de TI.
Development
Guias de desenvolvimentos, apresentaes, e fruns de informaes
sobre tecnologias diferentes incluindo ABAP, Java, .Net.
Power User Information
Instrues de funes especializadas para usurios avanados.
Functional View
A documentao do SAP NetWeaver 7.0
Supplementar Information
Guias How-To, notas da SAP, mapas de aprendizado e melhores
praticas.
DICA: o nome que especialmente procuramos quando se diz respeito a livros Horst
Keller Sempre possui informaes das ultimas capacidades do ABAP.
27
Compreenso Estratgica
Estruturar o seu pensamento uma das principais maneiras de construir uma
memoria efetiva. Indivduos com uma memoria perfeita podem simplesmente rever o
material e passar no exame, mas para o resto de ns, o nosso sucesso esta ligado a
nossa compreenso. Enquanto voc l este livro mantenha em sua mente os
seguintes pensamentos. Lembre-se que em vrios casos a compreenso de o porqu
algo ocorre lhe dar a resposta correta mesmo que voc no saiba a resposta. A
seguinte sabedoria foi recolhida de muitas fontes.
28
Repetio
Quanto mais vezes voc rever algo melhor voc cera em lembrar
aquela informao. Para melhorar este efeito sempre que voc passar
por algo tente encontrar um ngulo diferente, deste modo voc no
estar repetindo exatamente a mesma atividade. Variando a sua
aproximao voc criara mais conexes na memoria de longa durao.
29
30
Saber como os itens de uma questo de mltipla escolha so construdas e
usando estas diretrizes ajudara a voc a melhorar sua nota numa prova de mltipla
escolha.
Sumario
Agora voc possui fontes de informaes adicionais que podem ser uteis para
a prova de certificao. Agora voc pode estruturar seu pensamento, e isso ira
aumentar sua compreenso do tema e lhe dar mecanismos para resolver as questes
da certificao. O seu entendimento de como a SAP cria as provas lhe permitira
eliminar respostas incorretas.
31
32
O servidor de aplicao SAP NetWeaver a plataforma na qual o ABAP roda.
Isso pode ser usado para varias aplicaes de negcios. Neste capitulo voc receber
uma compreenso bsica de como o servidor de aplicao ABAP funciona. Ns
discutiremos a evoluo do servidor de aplicao SAP clssico para o servidor de
aplicao SAP NetWeaver, voc aprendera sobre os componentes que rodam no SAP
NetWeaver e como ele pode ser configurado. Nos tambm iremos conhecer a
estrutura e uso dos processos de trabalho no servidor de aplicao ABAP.
CENRIO REAL: Voc foi convidado a conduzir um novo projeto instalando uma nova
implementao de um sistema SAP. sua responsabilidade criar uma apresentao
explicando aos administradores ou a direo como o servidor de aplicao funciona e
fornece escalabilidade, integridade de dados, independncia de hardware e banco de
dados.
33
Evoluo Do Produto
Nos anos 90 a SAP disponibilizou dois produtos bsicos SAP R/2 (Baseado em
Mainframe) e SAP R/3 (Cliente/Servidor). Eles tinham funcionalidades familiares, e o
R/3 normalmente referenciado como sucessor do R/2. O desenvolvimento da
plataforma estava intimamente ligado ao desenvolvimento da aplicao. Por exemplo,
os nomes das verses da plataforma correspondiam s verses da aplicao. Eles
34
eram chamados, por exemplo, SAP Basis 4.0B (Plataforma) e SAP R/3 4.0B
(Aplicao). A maioria usava o termo 4.0B para se referir a ambos.
No final dos anos 90, o numero de produtos SAP cresceu significativamente, e
os novos produtos frequentemente demandavam melhorias na plataforma do SAP,
mais que no SAP R/3. Esta mudana de desenvolvimento comeou a transio da
plataforma do clssico SAP Basis para o SAP Web Aplication Server (SAP Web AS),
principalmente para permitir acesso direto a requisies HTTP.
Esta transio tambm produziu uma mudana na nomenclatura dos produtos.
A tabela 3.1 mostra a evoluo dos nomes e a separao gradual do Basis e da
aplicao. Como mostra a tabela 3.1 o Basis e o desenvolvimento da aplicao eram
ligados, at o SAP R/3 4.6C. O conceito de SAP R/3 Enterprise Extentions foi
introduzido compensando com o SAP R/3 Enterprise (4.7), que baseado no SAP
Web Aplication Server 6.20 (A plataforma depois de evoluir para um servidor WEB). A
introduo do Enterprise Extentions permitido que a aplicao principal permanecesse
estvel e proporcionou uma nova funcionalidade de negcios.
Parte de SAP
NetWeaver
Funcionalidade Funcionalidade
Basis
de Negcios
3.1I
3.1I
4.0B
4.0B
4.5B
4.5B
4.6B
4.6B
4.6C
4.6C
4.6D
-6.10
-6.20
4.7
(2003)
6.30
4.7
2004(04)
6.40
5.0
7.0(2004s)
7.00
6.0
7.1
7.10
-Tabela 3.1 evoluo do SAP R/3 para o SAP ECC
Business
Extention Set
Parte do SAP
ERP
1.10
2.00
5.00
6.00
--
(2003)
(2003)
2004
6.0(2005)
--
35
A verso do ABAP ainda ligada a verso da plataforma e a razo pela qual
a certificao se chama SAP NetWeaver 7.0
36
Figura 3.1 Componentes do servidor de aplicao SAP NetWeaver com ABAP e Java.
SAP Web Aplication Server 6.20 tambm possua pilhas Java e ABAP. O SAP
NetWeaver Aplication Server Java possui o dispatcher Java e o Java server
processes, que realiza tarefas similares ao dispatcher ABAP e Work processes. O
release 6.40 possua o banco de dados com dois esquemas: um para dados do ABAP
e outro para dados do Java, em outras palavras, um conjunto de tabelas ABAP e outro
de tabelas Java dependendo de quais produtos SAP voc usa esta foi a primeira
verso que permitia que o ABAP e o Java Rodassem juntos no mesmo servidor, ou
ento voc poderia ter apenas um ou outro. Como os dados no banco era separados,
o acesso aos dados de uma pilha para outra realizado atravs do Java connector
(JCo).
37
38
termo sistema se refere a toda a plataforma tcnica e o servidor de aplicao ou
servidor se refere a um servidor rodando em um sistema, no o hardware fsico.
possvel implementar toda uma aplicao em um nico sistema de hardware (por
exemplo, a verso trial mencionada no capitulo 2, cursos e experincias, permite que
voc possua um sistema funcionando no seu prprio PC). Na maioria das situaes o
desenvolvimento e o sandbox (se existir um) so geralmente um nico sistema fsico
rodando em um nico servidor. Um nico sistema fsico tambm pode suportar
mltiplos servidores ou voc pode ter mltiplos sistemas fsicos cada um rodando um
nico servidor.
Aplicaes Rodando
Todas as aplicaes ABAP rodam em processos de softwares
(maquinas virtuais) dentro destes componentes.
Usurio e Processo Administrativo
O componente responsvel pelas tarefas que geralmente pertence ao
sistema operacional. O usurio loga no SAP NetWeaver Application
Server e rodam as aplicaes ABAP dentro dele. Eles no tem contato
direto com o sistema operacional do host. O servidor de aplicao
ABAP o nico usurio do sistema operacional do host.
Acesso Ao Banco De Dados
Cada servidor de aplicao ABAP ligado a um sistema de banco de
dados, consistindo de um sistema gerenciador do banco de dados
(SGBD) e do bando de dados. As aplicaes ABAP no se comunicam
diretamente com o banco de dados. Ao invs disto, elas usam os
servios administrativos.
Estes servios tratam, como ns discutiremos brevemente, o buffer de
tabelas SAP no servidor de aplicao, a traduo do Open SQL para o
SQL nativo para o banco de dados, e o tratamento de conceitos
especficos do SAP, por exemplo, o numero do cliente ou a estrutura de
uma tabela.
Comunicao
As aplicaes ABAP podem se comunicar com outros sistemas SAP e
com sistemas externos. possvel acessar aplicaes ABAP a partir de
sistemas externos usando uma interface de programao de aplicao
de negcios (BUSINESS APLICATION PROGRAMMIN INTERFACE BAP) ou apenas uma chamada de funo remota (REMOTE
FUNCTION CALL - RFC). Os servios necessrios para a comunicao
so todos parte do kernel e do componente de servios administrativos
Controle e Administrao do Servidor de Aplicao ABAP
39
Este componente contem programas que permitem monitorar e
controlar o SAP NetWeaver Application Server enquanto ele roda. E
alterar seus parmetros de tempo de execuo.
40
41
SAP logon inicia o SAP GUI conectado naquele servidor, e ento o SAP Logon No
mais necessrio para esta conexo. Inicialmente o SAP GUI mostra a tela de Logon. O
processo semelhante para o WEB DYMPRO, mas ao invs de iniciar uma aplicao
pr-instalada, voc usa um navegador e acessa a URL que inicia a tela de logon se
voc j no estiver logado.
Depois que o usurio logou-se com sucesso, o SAP GUI mostra a tela inicial do
sistema SAP e uma janela na tela. Cada janela do SAP GUI representa uma sesso.
Depois de se logar, voc pode abrir sesses adicionais (o numero exato determinado
por um parmetro do sistema, o padro so 6 sesses) dentro do SAP GUI. Estas
janelas ou sesses comportam-se quase que como aplicaes SAP independentes.
Elas permitem que voc rode aplicaes diferentes independentemente das outras em
sesses diferentes.
Quando voc roda aplicaes numa sesso, elas podem chamar ou disparar
mais janelas (Como caixa de dialogo e janelas de grficos). Estas janelas adicionais
no so independentes; elas pertencem as sesso que as invocou. Estas janelas
podem ser tanto MODAL (Janela original no esta disponvel para entrada) ou
AMODAL (Ambas as janelas esto habilitadas e interagem uma com a outra).
Voc pode abrir outro SAP GUIs, usando SAP Logon. Para logar em outro
sistema SAP, cada SAP GUI totalmente independente dos outros. Isto significa que
voc pode ter SAP GUIs representando a camada de apresentao de vrios sistemas
SAP abertos simultaneamente no seu computador.
Todos os programas ABAP rodam nos servidores de aplicao ABAP do AS
ABAP, em outras palavras, na instancia da pilha do AS ABAP. A camada de aplicao
da arquitetura de mltiplas camadas de um sistema SAP baseado em ABAP e feito de
todos os servidores de aplicao ABAP. Estes servidores de aplicao executam as
aplicaes ABAP e comunicam-se com os componentes de aplicao, o banco de
dados, e um com o outro, atravs do servidor de mensagem. A figura 3.3 mostra a
estrutura de um servidor de aplicao ABAP. O numero dos processos de trabalho e
seus tipos so determinados na inicializao do AS ABAP; cada servidor de aplicao
ABAP contem um dispatcher, um gateway, e memria compartilhada. As tarefas
destes componentes esto brevemente descritas abaixo.
42
Processo De Trabalho
Processos de trabalho so componentes que executam uma aplicao.
Para um processo de trabalho dialog, cada um executa um passo do
dialog (Para a definio de um passo do DIALOG veja a sesso
DEFINIES PARA LEMPBRAR abaixo). Cada processo de trabalho
esta ligado a uma rea de memria que contem o contexto da aplicao
que esta executando. Este contexto contem os dados para a aplicao.
Depois que o processo de trabalho completa o passo de dialog, o link
para o usurio e o contexto do programa removido, o que o libera
para outro usurio.
Dispatcher
O dispatcher prove a ligao entre o processo de trabalho e o usurio
logado no servidor de aplicao (o mais precisamente, os SAP GUIs do
usurio ou navegador). Ele recebe requisies de um SAP GUI ou de
um navegador e direciona a requisio para um processo de trabalho
disponvel. Uma vs que o processo de trabalho complete o passo de
dialog, a tela de sada resultante retornada ao usurio apropriado
antes da ligao ser liberada.
Gateway
O gateway a interface para os protocolos de comunicao do AS
ABAP (RFC e CPI/C). O seu proposito se comunicar com outros
servidores de aplicao ABAP dentro deste sistemas(Internamente),
externamente com outros sistemas SAP, ou externamente com
sistemas no SAP.
43
trabalho compartilham ou usam, por exemplo, programas e contedos bufferizados de
tabelas so alocadas na memoria compartilhada.
Bufferizar dados na memoria compartilhada do servidor de aplicao ABAP
reduz o numero de leituras do Banco de dados (Veja o capitulo oito, instrues SQL
incluindo estratgias de atualizao, para detalhes), reduzindo consideravelmente o
tempo de acesso das aplicaes ABAP.
Quando voc inicia um AS ABAP, cada servidor de aplicao ABAP registra
seus processos de trabalho na camada de banco de dados e recebe um nico canal
dedicado (Algumas vezes chamado de processo de trabalho do banco de dados) para
cada processo de trabalho. Enquanto o SAP NetWeaver Application Server esta
rodando cada processo de trabalho um usurio (atuando como um cliente) do
sistema do banco de dados (Atuando como servidor). No possvel alterar o registro
do processo de trabalho enquanto o sistema esta rodando ou reatribuir um canal de
banco de dados de um processo de trabalho para outro. Por tanto, um processo de
trabalho pode apenas alterar o bando de dados dentro de uma nica unidade logica de
trabalho (LUW Logical Unit Of Work). Para mais detalhes sobre unidade logica de
trabalho veja o capitulo oito, instrues SQL incluindo estratgias de atualizao.
44
A logica de processamento da aplicao escrita em ABAP. O processador
ABAP dentro do processo de trabalho executa a logica de processamento da
aplicao e comunica-se com a interface do banco de dados. O processador de tela
informa o processador ABAP, qual mdulo do fluxo logico da tela devera ser
processada a seguir.
Os seguintes servios so disponibilizados pela interface do banco de dados:
A figura 3.5 mostra que existem duas maneiras diferentes para acessar as
tabelas do banco de dados SAP: SQL nativo e Open SQL usando ABAP. As instrues
Open SQL so um subgrupo do SQL padro que esta totalmente integrado com o
ABAP. Estas instrues permitem que voc acessem os dados independentemente do
sistema de banco de dados. Open SQL consiste da parte da linguagem de
manipulao de dados (data manipulation language - DML) do SQL padro. Ela por
tanto permite que voc leia (SELECT) e altere (INSERT, MODIFY, UPDATE, DELETE)
dados. As tarefas da linguagem de definio de dados (DATA DEFINITION
LANGUAGE - DDL) e da linguagem de controle de dados(DATA CONTROL
LANGUAGE - DCL) do SQL padro so executadas no AS ABAP pelo dicionrio ABAP
e o sistema de autorizao. Isto disponibiliza um leque unificado de funes,
independente do banco de dados, e contem funes alm daquelas oferecidas pelos
sistemas de banco de dados.
O open SQL vai alm do SQL padro para disponibilizar instrues que em
conjunto com outras construes ABAP podem simplificar ou acelerar o acesso ao
banco de dados. Ele permite que voc bufferize certas tabelas no servidor de
aplicao ABAP, economizando acessos excessivos ao banco de dados. A interface do
45
banco de dados responsvel por administrar o buffer com o banco de dados. Buffers
de tabelas so parcialmente armazenados na memoria do processo de trabalho
corrente e parcialmente na memoria compartilhada de todos os processos de trabalho
no servidor de aplicao ABAP. Nos casos em que o AS ABAP esta distribudo em
mais de um servidor de aplicao ABAP, os dados dos vrios buffers so
sincronizados em intervalos definidos pelo administrador de buffer. Quando voc
bufferiza uma tabela do banco, voc deve lembrar-se que os dados do banco podem
no estar atualizados. Por tanto voc deve usar o buffer apenas para dados que no
mudem com muita frequncia ou onde os dados no precisam ser os correntes.
SQL nativo fracamente integrado ao ABAP e permite acesso a todas as
funes contidas na interface de programao do sistema do banco de dados
respectivo. No SQL nativo voc pode usar as instrues SQL especificas do banco de
dados. A interface de SQL nativo as envia como elas so para o sistema de banco de
dados onde elas so executadas. Voc pode usar todo o escopo da linguagem SQL do
respectivo bando de dados, o que faz com que todos os programas usando o SQL
nativo sejam especficos ao banco de dados instalado. Pequeno grupo de instrues
de SQL nativo especifica do SAP so tratadas de uma maneira especial pela interface
de SQL nativo. A SAP recomenda que as aplicaes ABAP deva conter o menos
possvel de SQL nativo, porque isto reduz a portabilidade e a facilidade de
manuteno do seu cdigo. Apenas alguns componentes standard da SAP possuem
SQL nativo, por exemplo, para criar ou alterar definies das tabelas no dicionrio
ABAP.
A camada dependente do banco de dados na figura 3.5 esconde as diferenas
entre os sistemas de banco de dados do resto da interface do banco de dados. Devido
padronizao do SQL as diferenas na sintaxe nas instrues so muito pequenas.
Quando voc usa SQL nativo a funo da camada dependente de banco de dados
mnima (Veja o capitulo oito, instrues SQL incluindo estratgias de atualizao para
mais detalhes). Antes de iniciar o AS ABAP, voc determina quantos processos de
trabalho cada servidor de aplicao ABAP ter e quais sero os seus tipos. Devido ao
fato de todos os processos de trabalho possuir a mesma estrutura, o tipo do processo
de trabalho no determina os atributos tcnicos no servidor de Aplicao ABAP, mas
ao invs disso determina o tipo de tarefas que podero ser realizadas nele. O
dispatcher inicia os processos de trabalho e atribui a eles apenas tarefas que
correspondam aos seus tipos. Isto permite que voc distribua os tipos dos processos
de trabalho de maneira a otimizar o uso dos recursos no seu servidor de aplicao
ABAP.
A figura 3.6 novamente demonstra a estrutura de um servidor de aplicao
ABAP, mas desta vez inclui vrios tipos possveis de processos de trabalho. Processos
de trabalho de dialog processam requisies de um usurio ativo para executar
passos de dialog. Processos de trabalhos de atualizao executam pedidos de
atualizao do banco de dados. Requisies de atualizao parte de um SAP LUW
que trata as operaes do banco de dados resultantes do dialog do LUW do banco
para o processamento. Processo de trabalho em background rodam programas que
podem ser executados sem a interao dos usurios.
46
O processo de trabalho de fila administra uma tabela logica de travas na rea
de memoria compartilhada estas nicas tabelas de travas contem todas as travas
logicas do banco para o AS ABAP e uma parte importante do processo do SAP LUW.
Existe por tanto apenas um servidor de aplicao ABAP com processos de trabalho de
fila. Normalmente suficiente apenas um processo de trabalho de fila para realizar as
tarefas necessrias.
O processo de trabalho de spool envia grupos de dados sequenciais para uma
impressora ou para um arquivamento tico. Cada servidor de aplicao ABAP pode
possuir apenas um processo de trabalho de spool. Os dois ltimos tipos de processos
so o servidor de mensagem e o gateway o servidor de mensagem encaminha
mensagem entre servidores de aplicao, e o gateway encaminha mensagens para
dentro e para fora do sistema para sistemas externos.
Terminologia Importante
Um passo de dialogo o processamento do programa que ocorre aps uma
tela ser liberada pelo usurio ou, visto de outra forma, o processamento que ocorre
durante a alterao de telas (mesmo que a mesma tela seja mostrada novamente).
Aps a concluso do passo de dialogo, o processo de trabalho liberado enquanto a
prxima tela processada pelo usurio no servidor de apresentao.
Um objeto do repositrio um dos componentes (Programa, definies de tela,
menus, mdulos de funo, e assim por diante) armazenados em uma parte especial
do banco reconhecida como repositrio.
Questes Prticas
As questes prticas abaixo lhe ajudaram a avaliar sua compreenso do
tpico. As questes so similares aquelas encontradas nos exames de certificao.
47
Mesmo que nenhuma destas questes ser encontrada no exame, elas lhe ajudaram
a revisar seu conhecimento do assunto. Selecione a resposta correta e depois
verifique todas as suas respostas na seo de respostas a seguir. Lembre-se que voc
deve selecionar todas as respostas corretas e apenas as respostas corretas para
pontuar a questo.
1
Um processo de trabalho:
A permanece ligado a uma tela atravs do dispatcher
B Fica inativo Enquanto espera por um usurio
C Usa uma rea de memoria comum chamada memoria compartilhada
48
Respostas E Explicaes
1 resposta correta: B
A partir do SAP NetWeaver 6.10 novas tecnologias baseadas em
infraestruturas altamente escalonveis foram implementadas para processar
requisies HTTP diretamente da internet ou para envia-las como requisies como
clientes HTTP para a internet. O kernel do SAP foi melhorado para incluir um processo
como administrador de comunicao para internet (ICM) para alcanar esta
funcionalidade.
2 resposta correta: B
Diferentes componentes do SAP NetWeaver necessitam que o SAP NetWeaver
Application Server rode com certas pilhas configuradas. possvel instalar as pilhas
ABAP e Java, mas dependendo do uso do servidor, possvel usar apenas ABAP ou
Java
3 resposta correta: C
Todos os processos de trabalho de um servidor de aplicao ABAP usa uma
rea de memoria principal chamada memoria compartilhada para salvar contextos ou
bufferizar dados constantes. Os recursos que todos os processos de trabalham
utilizam, por exemplo programas e contedos de tabelas, esto contidos na memoria
compartilhada. A administrao de memoria no AS ABAP garante que todos os
processos de trabalho sempre enderecem o contexto correto.
3 respostas corretas: A, D
Cada processo de trabalho individual trabalha independentemente, o que os
torna apropriados para uma arquitetura multiprocessadas. Quando voc inicia um AS
ABAP cada servidor de aplicao ABAP registra seus processos de trabalho na
camada de banco de dados e recebe um nico canal dedicado para cada. Enquanto o
SAP NetWeaver Application Server esta rodando, cada processo de trabalho um
usurio (Atuando como cliente) do sistema de banco de dados (atuando como
servidor). Voc no pode mudar o registro do processo de trabalho Enquanto o
sistema esta rodando. No possvel reatribuir um canal de banco de dados de um
processo de trabalho para outro. Por esta razo, um processo de trabalho pode fazer
alteraes no banco apenas dentro de uma nica unidade logica de trabalho do banco
(LUW). Um processo de trabalho deve abrir uma LUV separada para cada passo de
dialog. O processo de trabalho envia um comando Commit (Commit do banco de
dados) para o banco de dados ao termino de cada passo de dialog no qual ele realiza
as alteraes no banco. Estes comandos Commit so chamados Commits de banco
implcitos, porque eles no so explicitamente escritos na aplicao.
49
5 respostas corretas: B, D, F
Voc pode utilizar as funes da administrao do sistema para trocar um
processo de trabalho Enquanto o sistema esta rodando. Devido a cada processo de
trabalho possuir a mesma estrutura, eles so intercambiveis. Todos os processos de
trabalho devem comunicar-se com o dispatcher (que atribui o usurio a um processo
de trabalho), mas os processos de trabalho de fila e os processos de trabalhos de
spool no se comunicam com o banco de dados. Todas as comunicaes de um
processo de trabalho ocorrem com o dispatcher ou com o banco de dados. Enquanto
normal possuir apenas um processo de trabalho de fila (um nico processo de trabalho
de fila normalmente suficiente para realizar as tarefas necessrias), possvel possuir
mltiplos processos de trabalho de fila rodando. No SAP NetWeaver Application Server
voc pode ter apenas uma tabela de travas, mas mltiplos processos de trabalho de
fila, rodando. Cada servidor de aplicao ABAP pode possuir apenas um processo de
trabalho de spool.
Relembre
Voc deve compreender o objetivo das diferentes camadas de um SAP
NetWeaver Application Server. importante entender a arquitetura e porque ela
eficiente e escalonavel. Voc deve compreender como o designe do sistema trata o
banco de dado (SAP LUW) e a execuo dos programas (passos de dialog).
A tabela 3.2 mostra os conceitos chave para a viso geral do SAP NetWeaver.
CONCEITO CHAVE
SAP NetWeaver Application Server
DEFINIO
A plataforma de aplicao do SAP
NetWeaver
50
Processo de Trabalho
Dispatcher
Gateway
Processador de Tela
Processador ABAP
baseado em ABAP
Um componente que pode executar uma
aplicao. Ele executa um nico passo
de dialog
Estabelece a ligao entre o usurio
logado e o processo de trabalho.
a interface de comunicao entre o
SAP NetWeaver Application ABAP e
outros sistemas (tanto um outro servidor
de aplicao ABAP como outro SAP
NetWeaver Application Server, ou um
sistema externo no SAP)
Um componente do processo de trabalho
que executa o fluxo logico da tela
Um componente do processo de trabalho
que executa a logica de processamento
da aplicao e comunica-se com a
interface do banco de dados
Um componente do processo de trabalho
que estabelece a conexo entre o
processo de trabalho e o banco de
dados, proporciona acesso as tabelas do
banco e objetos do repositrio, controla o
processamento de transaes (Commit e
Rollback) e proporciona bufferizao de
tabelas no servidor de aplicao ABAP
Dicas
A compreenso da arquitetura interna do sistema e servidores o tornara um
desenvolvedor melhor e o ajudara a compreender a razo de escolher tcnicas
melhores e mais eficientes. Este tpico, entretanto, um dos quais os
desenvolvedores no compreendem, e eles ento so incapazes de aproveitar os
pontos fortes do SAP NetWeaver.
Sumario
Voc deve possuir agora uma compreenso bsica de como o servidor de
aplicao ABAP opera. Voc deve saber o porque o SAP NetWeaver Application
server diferente de um SAP Application Server clssico. Voc deve saber quais
componentes rodam no SAP NetWeaver e quais as configuraes gerais so
possveis para um SAP NetWeaver Application Server. Voc deve saber tambm os
componentes do processo de trabalho e como eles trabalham com os outros
componentes do servidor de aplicao ABAP e outras camadas (Servidor de
Apresentao e Servidor de Banco de Dados). O conhecimento da arquitetura do SAP
NetWeaver e dar uma fundamentao solida e voc ter sucesso nesta e em outras
sesses do exame.
51
52
53
Cenrio Real: Voc iniciou em um projeto num cliente como lder de desenvolvimento
SAP e lhe foi pedido que explique para o time de projeto sobre o ABAP Workbench.
Voc deve explicar para o time sobre as ferramentas de desenvolvimento SAP, as
varias funcionalidades do ABAP Workbench e o transport organizer.
Como lder de desenvolvimento voc deve organizar o desenvolvimento tcnico
do projeto. Sua tarefa definir os padres de desenvolvimento e as ferramentas
utilizadas pelos desenvolvedores. Voc tambm deve definir o projeto de
desenvolvimento, pacote, o panorama do sistema e a estratgia de transporte para
todos os desenvolvimentos no projeto.
54
desenvolvedor necessita para desenvolver as aplicaes. Algumas das ferramentas
mais utilizadas do Workbench so:
Editor ABAP
Screen Painter
Menu Painter
Dicionrio ABAP
Ferramentas de desenvolvimento Web Dynpro
Package Builder e Transport Organizer
Repository Browser
Repository Information System
Enhancement Information System
ABAP Workbench
ABAP significa ADVANCED BUSINESS APPLICATION PROGRAMMING
(PROGRAMAO AVANADA DE APLICAOES DE NEGOCIOS) e a linguagem
em que a maioria das aplicaes de negcios SAP escrita. O ABAP Workbench o
ambiente de desenvolvimento para o desenvolvedor ABAP. ABAP Workbench consiste
das ferramentas de desenvolvimento necessrias para criar objetos do repositrio. O
ABAP Workbench pode ser iniciado atravs da transao SE80. O Object Navigator
pode ser acessado atravs de um menu SAP Ferramentas ABAP Workbench
Sntese SE80 Object Navigator.
A tela principal ABAP Workbench dividida em rea de navegao e rea de
ferramenta (Veja a Figura 4.1). A rea de navegao mostra a lista de objetos e rvore
de hierarquia. A lista de objetos consiste de todos os objetos dentro da rea da
aplicao, pacote, programa, classe global, pool de modulo, grupo de funo, e assim
por diante. O beneficio de se editar ou mostrar o objeto no Object Navigator que
voc pode visualizar todos os objetos relacionados para o programa, classe, pool de
mdulos ou pacote em uma estrutura de arvore e pode acessa-los atravs da rea de
navegao dando um duplo clique no objeto. Se voc trabalhar com o objeto do
repositrio na ferramenta individual, voc s ter opo de trabalhar com um tipo de
objeto por vez em uma ferramenta.
55
A rea da ferramenta usada para mostrar ou editar o objeto do repositrio
usando o editor relevante. A rea de navegao ou a rea da ferramenta podem ser
redimensionadas. Voc pode esconder a rea de navegao clicando no cone tela
completa on/off ( ) na barra de ferramentas da aplicao. O histrico de navegao
do objeto no ABAP Workbench armazenado na janela de navegao. O Object
Navigator tem uma opo no menu para mostrar o histrico de navegao. Voc pode
mostrar a janela de navegao a partir do menu Utilitrios Exibir janela de
navegao, e uma janela adicional para a pilha de navegao cera mostrada abaixo
da rea da ferramenta do Workbench voc tambm pode mostrar a janela de
navegao clicando no cone da janela de navegao ( ) na barra de ferramentas.
Voc pode voltar na pilha de navegao clicando na seta azul esquerda ou avanar
clicando na seta direita na janela de navegao. Esta ferramenta auxilia a
navegao entre os objetos j vistos durante a sesso.
Voc pode criar a sua prpria lista de trabalho no ABAP Workbench para criar
sua lista de trabalho voc precisa primeiro mostrar ou editar o objeto do repositrio na
rea da ferramenta do ABAP Workbench e ento a partir do menu selecionar Utilitrio
Lista de trabalho incluir objeto atual. Isto insere o objeto na lista de trabalho.
Voc pode exibir a lista de trabalho atravs do menu Utilitrios Lista de trabalho
exibir, numa janela adicional para lista de trabalho cera exibida na abaixo da rea
de ferramenta do ABAP Workbench.
Voc pode acessar a Reuse Library atravs do menu Ambiente Reuse
Library. A Reuse Library disponibiliza vrios objetos com cdigo de exemplo e
documentao. Voc pode executar o cdigo para mostrar o resultado e copiar o
cdigo reutilizado para o desenvolvimento de sua aplicao. A Reuse Library
mostrada no browser, e voc pode mostrar os objetos individuais de desenvolvimento
dentro da Reuse Library dando um duplo click no produto e lendo o cdigo do
exemplo. Voc tambm pode acessar a Reuse Library atravs da transao SE83.
Similarmente a Reuse Library, voc pode acessar os exemplos ABAP atravs
do menu Ambiente exemplos Exemplos ABAP. Os programas dos exemplos
ABAP so mostrados no browser, e voc pode exibir os programas dando um duplo
click no programa na rea de navegao. O programa exibido na rea da ferramenta
do Object Navigator. Os exemplos ABAP disponibilizam exemplos da maioria das
palavras chaves e sintaxes baseadas na documentao ABAP. Voc tambm pode
acessar a documentao ABAP atravs da tela de exemplos ABAP. Os exemplos
ABAP tambm podem ser exibidos executando a transao ABAPDOCU.
Voc pode exibir o menu de contexto para um objeto tanto na rea de
navegao quanto na rea de ferramentas dando um click com boto direito no objeto.
O menu de contexto oferece apenas as funes que so relevantes para os objetos do
repositrio selecionados. Voc tem a opo de adicionar os seus objetos de
desenvolvimento para sua lista de favoritos no Object Navigator clicando no cone
Favoritos (
) na janela de navegao.
Voc pode acessar as ferramentas para criar objetos de repositrio usando os
cdigos de transaes individuais ou acessando as ferramentas mais utilizadas
atravs do Object Navigator. A tela inicial do Object Navigator exibe a lista de browser
56
na rea superior esquerda da tela. O Object Navigator possui vrios browsers que
voc pode usar para varias necessidades de desenvolvimento. Voc tem a opo de
navegar para uma ferramenta dependendo do browser selecionado na lista de
browsers (Veja a Figura 4.2). Voc pode adicionar ou remover browsers da lista pelo
menu Utilitrios Configuraes.
57
58
59
seleo e
do Object
a lista de
objeto na
Configuraes Do Workbench
Voc pode configurar o ABAP Workbench para alterar a seu visual e
funcionalidade. Workbench configurado atravs do menu Utilitrios
60
configuraes (Veja a figura 4.6). As configuraes do Workbench so especificas do
usurio e por tanto no afetam ningum mais no sistema.
O Object Navigator pode exibir apenas oito browsers por vez. Voc pode
descelecionar a checkbox dos browsers que voc no utilizara com frequncia.
Dentro das configuraes do Workbench voc tambm tem a opo de
configurar o editor ABAP. Voc pode selecionar o novo editor, o editor antigo ou o
editor em Back-End e personalizar suas configuraes. Voc tem a opo de definir o
seu debugger ABAP padro tanto para o clssico como para o novo. Voc pode alterar
suas configuraes do Pretty Printer, configuraes da tela dividida, configuraes do
modelo, voc pode manter as configuraes do Class Builder, Screen Painter, Menu
Painter, Function Builder, Sistema de informao R/3 Repository, Data Browser,
Internet Transaction Server, Business Server Pages, Web Dynpro, Transport
Organizer, SAPscript, eCATT, e gerao de proxy a partir das configuraes do
Workbench.
61
A escolha do editor baseada nas configuraes especificas do usurio
realizado no ABAP Workbench. O editor pode ser configurado dentro do editor ABAP
atravs do menu Utilitrios Configuraes Editor ABAP (Veja figura 4.7).
62
LOCK e NUM LOCK podem ser alterados dando um duplo click neles.
Dar um duplo click no numero da linha abre o dialogo Ir Para A Linha.
O editor Front-End possui dois tipos de menu de contexto; as opes do
menu de contexto dependem da rea selecionada para o contexto. O
menu de contexto da margem exibido clicando com o boto direito na
margem esquerda e tem a opo de definir pontos de parada, eliminar
pontos de parada, definir Bookmarks, eliminar Bookmarks ou ir para um
Bookmark (Veja a Figura 4.8).
63
64
Editor ABAP
O editor ABAP usado para desenvolver programas e pode ser
executado atravs da transao SE38. Voc usa o editor para escrever
programas ABAP
Class Builder
O Class Builder lhe permite criar classes ABAP no ABAP Workbench.
Voc pode criar classes e interfaces ABAP, implementar relaes de
heranas, criar atributos, mtodos e eventos para as classes globais e
interfaces que voc construir. Voc pode acessar o Class Builder
atravs da transao SE24.
Function Builder
Voc usa o Function Builder para escrever mdulos de funes e definir
grupos de funes dentro do ABAP Workbench. Voc usa o Function
Builder para criar, alterar, exibir e testar mdulos de funo. Voc pode
acessar o Function Builder via transao SE37.
Screen Painter
O Screen Painter a ferramenta do ABAP Workbench para criar telas
para as transaes SAP GUI. Voc usa o Screen Painter para criar telas
e escrever seus fluxos lgicos. Voc pode acessar o Screen Painter via
transao SE51.
O editor de layout do Screen Painter tem duas verses: o editor de
layout alfanumrico e o grfico. Por padro, o editor de layout do
Screen Painter o alfa numrico, mais pode ser alterado para o grfico
atravs do menu Utilitrios Opes Screen Painter e
selecionando Screen Painter grfico.
Voc define os atributos da tela e atributos dos campos da tela para os
campos da tela e fluxo logico usando o Screen Painter. Voc pode criar
controle de fixas, table controls, subtelas, e quadros usando o Screen
Painter.
Menu Painter
O Menu Painter a ferramenta do ABAP usada para criar a interface
para o usurio com o seu programa ou transao. Este possui a Barra
de Menu, Barra de Ferramentas Standard, Barra de Ferramentas da
Aplicao e Titulo GUI. Voc tambm atribui as teclas de funo para as
funes que voc cria no Menu Painter. Voc pode executar o Menu
Painter via transao SE41.
Dicionrio ABAP
Esta ferramenta uma parte integrante do ABAP Workbench. O
dicionrio ABAP usado para criar, alterar e exibir tabelas
transparentes, tabelas com pool e tabelas de cluster, vises, tipos,
domnios, elementos de dados, estruturas, tipos de tabela, ajudas de
pesquisa e objetos de bloqueio. O utilitrio de banco de dados tambm
parte integrante da ferramenta do dicionrio ABAP. Voc pode acessar
o dicionrio ABAP via transao SE11.
Web Application Builder
Voc pode construir aplicaes Web dentro do ABAP Workbench. Esta
ferramenta usada para desenvolver aplicaes Web ITS ou
aplicaes BSP
65
66
67
68
Voc pode informar as caractersticas do pacote, explicaes de
utilizao, hierarquia do pacote no Package Builder e modo edio. Entretanto, no
necessrio informar a interface do pacote ou explicaes de utilizao a no ser que
voc queira proteger o objeto atribudo ao pacote de ser utilizado arbitrariamente por
outros pacotes. A figura 4.16 mostra a tela do Package Builder onde voc pode
informar os atributos do pacote.
69
COMPORTAMENTO
A validao do pacote s executada se voc selecionou a
validao de pacote como cliente ou validao do pacote como
servidor nos atributos do pacote.
R3ENTERPRISE A mesma verificao da entrada RESTRICTED realizada aqui.
Nos objetos que pertencem a pacotes de estrutura uma validao
adicional realizada para verificar se alguma explicao de
utilizao foi definida entre eles.
Veja que neste caso uma entrada adicional deve ser feita na
tabela PAKPARAM com o campo chave NAME igual a
SAP_DEV_SYSTEM e o valor igual a X.
OFF
Desliga a validao de pacotes.
Tabela 4.1 Valores validos para validao de pacotes.
Transport Organizer
O sistema de transporte e mudanas (CTS Change and Tranport System)
disponibiliza uma ferramenta para organizar o seu ABAP Workbench, personalizao
cross client, e trabalho de personalizao e ento transportar as mudanas atravs
70
do seu sistema. O CTS grava todas as mudanas do CHANGE REQUEST. O
CHANGE REQUEST tambm chamada de TRANSPORT REQUEST. Voc pode
disponibilizar sua tarefa e o CHANGE REQUEST uma vez que voc terminou e
validou o seu desenvolvimento. Voc deve ter certeza que seu objeto de
desenvolvimento esta sintaticamente correto e ativo antes de voc liberar o CHANGE
REQUEST. A CHANGE REQUEST ento usada para transportar as mudanas para
outros sistemas ou clientes baseado na rota de transporte.
Objetos do repositrio e personalizaes cross client so atribudos a um
Workbench Request enquanto as personalizaes especificas do cliente so
atribudos a uma request de personalizao. Cada CHANGE REQUEST pode ter uma
ou mais tarefas, e os objetos de repositrio ou objetos de personalizao so
atribudos a uma destas tarefas. A tarefa atribuda a um usurio, e apenas o dono da
tarefa pode gravar suas alteraes na tabela.
Existem dois tipos de tarefas no Workbench, desenvolvimento/correo e
tarefas de manuteno. As alteraes do objeto do repositrio so gravadas na tarefa
de desenvolvimento/correo se o sistema atual o sistema original do objeto se no
a alterao gravada numa tarefa de manuteno. Todas as modificaes de objetos
STANDARD so gravadas em tarefas de manuteno do Workbench Request. A figura
4.18 mostra a estrutura da CHANGE REQUEST. O nvel mais alto o CHANGE
REQUEST e o numero de nvel mais baixo a tarefa da CHANGE REQUEST.
71
associadas atravs do Workbench dando um duplo clique na request na rea de
navegao do Workbench. A request ser exibida na rea de ferramenta, onde voc
pode exibir as propriedades, objetos, e a documentao da request. O editor de
request exibe todas as alteraes gravadas dentro da request (Veja a figura 4.19)
72
Questes Prticas
As questes praticas abaixo lhe ajudaram a avaliar sua compreenso do
tpico. As questes so similares aquelas encontradas nos exames de certificao.
Mesmo que nenhuma destas questes sero encontradas no exame, elas lhe
ajudaram a revisar seu conhecimento do assunto. Selecione a resposta correta e
depois verifique todas as suas respostas na seo de respostas a seguir. Lembre-se
que voc deve selecionar todas as respostas corretas e apenas as respostas corretas
para pontuar a questo.
1
73
4
74
11 quais das seguintes informaes so verdadeiras? Podem existir mais do
que uma correta
A Os objetos do repositrio e personalizaes Cross Client so gravados em
uma tarefa pertencente Change Request Local se no existir nenhuma rota
de consolidao definida no TMS para camada de transporte
B Os objetos do repositrio e personalizao do Cross Client so gravados
em uma tarefa pertencente Transport Request se a rota de consolidao
estiver definida no TMS
12 Existem _________ verses do editor ABAP
A trs
B Quatro
C Duas
Respostas e Explicaes
1 resposta correta: B
O Object Navigator possui um total de 9 Browser, e nas verses anteriores
menos que 9. A seguir esto os Object Browser disponveis no ABAP Workbench:
Repository Browser
Sistema de informao R/3 Repository
Transport Organizer
MIME Repository
Tag Browser
Repositrio de Teste
Enterprise Service Browser
Web Dynpro
Text Browser
Enhancement Information System
2 resposta correta: A
O Repository Browser o browser padro do ABAP Workbench
3 - resposta correta: B
Voc pode exibir at oito Browsers no ABAP Workbench
4 - resposta correta: B
Voc no pode manter Forms SAPScript ou SAP SmartForms no ABAP
Workbench
5 - resposta correta: A, B, C, F
Voc pode editar ou exibir programas ABAP no ABAP Workbench com editor
ABAP. Voc pode exibir ou editar telas no ABAP Workbench com o Screen Painter.
Voc pode exibir ou editar Menus no ABAP Workbench com o Menu Painter. A
ferramenta de implementao BAdI no esta integrada com o Object Navigator,
75
portanto no possvel criar implementaes BAdI no Object Navigator. O projeto do
cliente (CMOD) no esta integrado com ABAO Workbench, portanto no possvel
criar projetos do cliente no ABAP Workbench. O dicionrio ABAP esta integrado com o
ABAP Workbench.
6 - resposta correta: A
Voc pode procurar melhorias incluindo Business ADD-INS e Customer Exits
com o sistema de informao R/3 Repository.
7 - resposta correta: A
Definies e implementaes de ampliaes podem ser exibidas no sistema de
informao de ampliaes.
8 - resposta correta: B, D
Voc pode criar um objeto local, mas voc tem que atribuir o objeto para um
pacote, se voc quiser transportar o objeto de um sistema para outro. Um pacote tem
que ser definir uma interface e visibilidade do pacote para fazer os seus elementos
visveis para outros pacotes. A camada de transporte no campo de entrada
obrigatria para o pacote, A camada de transporte atribuda ao pacote se ele for
definido para o sistema. O pacote de transporte pode ser aninhado.
9 - resposta correta: A
O componente de software de um pacote do cliente deve ser sempre HOME.
10 Respostas corretas: A, C, D
Objeto do repositrio deve ser atribudo a um pacote para transportar o objeto
para outro sistema. Voc no pode transportar um objeto local. Objetos do repositrio
e personalizaes Cross Client so Atribudos ao Workbench Request.
Personalizaes do cliente so atribudas a Customization request e no so
atribudas ao pacote. Objetos inativos podem ser transportados.
11 Resposta correta: A, B
Uma Change Request local criada se a rota de consolidao no for definida;
por outro lado, uma Change Request transportvel criada se a rota de consolidao
para a camada de transporte estiver definida.
12 - resposta correta: C
Existem trs modos de editor ABAP: O editor Front-End(Novo), Editor FrontEnd (Velho) e o editor Back-End.
76
Leve Consigo
Agora voc deve compreender as funcionalidades do ABAP Workbench e
consegue navegar dentro dele. Voc deve poder usar os Browsers disponveis no
ABAP Workbench e completar o seu desenvolvimento de maneira eficiente. Voc deve
saber configurar o ABAP Workbench e as varias ferramentas de desenvolvimento.
Para ser um desenvolvedor bem sucedido voc deve conhecer todas as
ferramentas de desenvolvimento e suas utilizaes. importante compreender as
funcionalidades do novo editor ABAP porque ele ser de grande ajuda para o
desenvolvimento de sua aplicao e aumentara a produtividade de sua equipe de
desenvolvimento.
Finalmente, voc deve entender o conceito de pacotes e o uso do Transport
Organizer. Voc deve entender o conceito de Transport Request e os diferentes tipos
de Transport Request e seus usos para migrao de objetos de desenvolvimento do
ambiente de desenvolvimento para o ambiente de produo.
Lembre-Se
A tabela 4.2 mostra os conceitos chave sobre o ABAP Workbench.
Conceito Chave
ABAP Workbench
Repository Browser
Transport Organizer
Definio
O ABAP Workbench um ambiente de
desenvolvimento integrado para o
Desenvolvedor ABAP
O Repository Browser uma ferramenta
do Object Navigator e usado pelo
desenvolvedor para acessar os objetos
do repositrio e as ferramentas do
Workbench para criar objetos do
repositrio
O sistema de Informao R/3 Repository
Browser uma ferramenta de busca para
encontrar objetos do repositrio
O Enhancement Information System
uma ferramenta para procurar definies
de melhorias e implementaes do
sistema SAP
O Transport Organizer uma ferramenta
para trabalhar com o Change Request e
objetos da Change Request. Usando esta
ferramenta, voc pode ver os objetos
atribudos a Change Request e o log de
transporte da Request
77
Sumario
Neste capitulo nos vimos o ABAP Workbench e sua utilizao em detalhes. Ns
vimos os Browsers mais utilizados como o Repository Browser, Sistema de Informao
R/3 Repository, Enhancement Information System e Transport Organizer. Depois
vimos em detalhes o ABAP Workbench, o novo editor ABAP e os conceitos de pacote
e transport request. Este conhecimento permitira que voc passe com facilidade neste
tpico no exame de certificao.
78
79
Um debugger normalmente um dos principais componentes de qualquer
ambiente de desenvolvimento. Durante o desenvolvimento de aplicaes, tanto
simples como complexas, o DEBUGGER uma ferramenta valiosa para detectar e
analisar situaes de erro. Voc deve se familiarizar com o escopo funcional do
DEBUGGER ABAP, e este captulo abrange os conceitos mais importantes desta
ferramenta. Ela uma ferramenta usada durante o desenvolvimento, teste e quando
se faz necessrio analisar problemas no sistema de produo.
Veremos as principais diferenas entre o DEBUGGER CLASSICO que existia
desde o SAP R/3 e o NOVO DEBUGGER, disponvel pela primeira vez em uma forma
limitada na verso 6.40 e ento completamente no SAP NetWeaver 7.0. Tambm
veremos varias ferramentas disponveis no NOVO DEBUGGER e interface de usurio.
Ser visto a personalizao do DEBUGGER para que ele atinja suas necessidades e
preferencias, Assertions, Watchpoint e ponto de parada (breakpoints). Cada um destes
tpicos cera visto separadamente e seguido por exerccios e as solues dos
exerccios.
Cenrio Do Mundo Real: um report em produo no produz os resultados
corretos. O programa foi desenvolvido por um programador que no esta mais na
empresa e no existe documentao.
Algumas vezes uma mensagem de erro mostrada em produo e no pode
ser reproduzida em nenhum dos outros sistemas e ningum tem certeza do que esta
causando esta mensagem. Foi-lhe pedido para identificar porque a mensagem esta
sendo produzida e corrigir o report.
Depois de examinar o programa no editor ABAP, voc no consegue
determinar a causa do problema. O report faz varias chamadas dinmicas baseadas
em valores lidos no banco de dados e realiza rotinas baseadas em verificaes de
autorizaes de usurios.
A soluo para verificar rapidamente o que o programa esta fazendo usar o
DEBUGGER ABAP em sistema de produo onde a mensagem de erro esta
reproduzida, voc cria pontos de parada na instruo MESSAGE. Uma vez que a
instruo de mensagem que esta produzindo o erro desconhecido identificada, a
causa do erro pode ser facilmente deduzida. Tambm possvel examinar as variveis
para determinar o fluxo real do programa e ento identificar porque os resultados
esto incorretos.
80
Conceitos Chaves
O debugger ABAP parte do ABAP Workbench que voc usa tanto como uma
ferramenta integrada de testes como para identificar problemas com a execuo do
cdigo. O debugger permite que voc execute programas ABAP por linha ou por
sesso. Com esta ferramenta, voc pode exibir objetos de dados e verificar o fluxo
logico dos programas. Um programa rodando interrompido aps cada passo,
permitindo que voc verifique a logica de processamento e os resultados de instrues
individuais.
Normalmente voc usa o debugger como maneira de identificar erros em
programas ABAP. Ele possui as seguintes funes:
81
82
83
84
necessrio dar um duplo click no cone alterar (o cone lpis) para abrir o objeto de
dados para alteraes e ento pressionar ENTER para alterar, ao contrario do
debugger clssico onde o campo estava sempre aberto e voc tinha que clicar no
cone alterar para aceitar as mudanas.
DICA: a diferena entre o modo Exclusivo e No Exclusivo e que voc achara as funes do
debugger limitadas no modo no exclusivo. As limitaes devem se ao fato de que um ROLLOUT forado na aplicao aps cada visualizao do debugger no modo no exclusivo.
Portanto, um COMMIT no banco de dados deve ser executado. Isto tem as seguintes
consequncias:
No possvel analisar o cdigo entre as instrues SELECT e ENDSELECT
porque o cursor do banco deve ser fechado quando se faz um COMMIT. Neste
caso a execuo do programa terminado.
O modo debug no possvel para converses ou Field Exits.
Devido ao Commit, conjunto de dados inconsistentes pode ocorrer no banco.
Por existir a possibilidade de conjuntos de dados inconsistentes, o modo no exclusivo
impossvel em sistemas de produo. Se o numero limite de processos de trabalho de debug
85
exclusivos for atingido o erro DEBUGGING_NOT_POSSIBLE disparado quando voc tentar
iniciar outro debug.
O numero de processo de trabalho que esto disponveis exclusivamente para debug
definido pelo parmetro RDISP/WPDBUG_MAX_NO. No sistema de desenvolvimento ele deve
ser aproximadamente metade do numero de processos de trabalho DIALOG.
Os requerimentos especiais de um cliente de produo para o debugger so os
mesmos para o novo e o clssico. Por tanto eles so processados da mesma maneira que o
debugger clssico.
86
A tabela 5.1 mostra onde as ferramentas podem ser encontradas no novo
debugger quando iniciado antes das modificaes; as figuras 5.8 e 5.9 mostram os
desktops.
FERRAMENTA
INICIALMENTE ENCONTRADA NO DESKTOP
Texto Fonte
(no inicialmente encontrada no Desktop)
Pilha de chamadas
Desktop dois e Standard
Exibio rpida das variveis
Desktop um e Standard
Pontos de Parada
Ptos.par./Watchpts
Editor ABAP totalmente novo
Desktop1, 2, 3 e Standard
Objeto
Objetos
Tabela
Tabelas
Estrutura
Estruturas
Cpo. Individual
Exibs. DETLHS.
Explorer de dados
Data Explorer
Web Dynpro
Desktop 3
Programas carregados (dds globais) No inicialmente encontrado no Desktop
Analise de Memoria
No inicialmente encontrado no Desktop
Analise de Tela
No inicialmente encontrado no Desktop
Ferramenta dif.
Diffs
reas de Sistemas (Internas)
No inicialmente encontrado no Desktop
Tabela 5.1 Ferramentas do debugger
87
Todas as ferramentas exceto as ferramentas standard disponibilizam um
histrico de todos os objetos exibidos na ferramenta, e qualquer um deles pode ser
revisto simplesmente selecionando-o na lista.
A ferramenta tabela tem muito mais funcionalidades do que no debugger
clssico. Enquanto voc podia tratar uma tabela interna standard atravs do uso dos
botes Change, Insert, Append e Delete abaixo da exibio da tabela, tabelas com
chaves (Sorted ou Hashed) eram mais restritas. Com estas vocs s tinham acesso
aos botes Change e Delete para modificar os contedos de campos no chave ou
para eliminar a linha. O novo debugger oferece muito mais opes (Veja a figura 5.11
e 5.12).
88
O dialogo apresentado (Figura 5.13) permite que voc copie o contedo de
uma linha existente para usar como um template. A nova linha indicada sem um
numero (existe um cone no seu lugar) at que voc aperte o ENTER para aceitar a
linha na tabela interna.
89
90
condio seja atendida. Voc pode usar watchpoints para exibir alteraes nas
referencias de Strings, dados ou objetos e tambm tabelas internas.
O debugger ABAP diferencia as variantes dos pontos de parada como
mostrado na tabela 5.2.
Tipo de Pontos de parada
Pontos de paradas estticos
Comportamento
A palavra chave BREAK-POINTS insere
um ponto de parada independente de
usurio com uma instruo ABAP no
cdigo fonte. A instruo BREAK < nome
usurio>, define um ponto de parada
dependente de usurio no cdigo fonte.
Estes so definidos no editor ABAP ou no
debugger dando um duplo click antes do
numero da linha se voc tiver usando o
editor antigo ou clicando antes do numero
da linha se voc estiver usando o editor
novo. Pontos de paradas dinmicos so
sempre especficos do usurio e so
eliminados quando voc faz o log off do
sistema SAP.
O debugger interrompe o programa
diretamente antes de a instruo
especificada ser executada.
O debugger interrompe o programa
diretamente aps um erro de tempo de
execuo ser lanado
91
92
permitem que voc especifique configuraes individuais usando a funo gravar
layout (Veja a figura 5.18). O debugger usara a sua ultima configurao salva na
prxima vez que voc iniciar o debug.
93
A maior parte da tela usada para exibir desktops ou reas de ferramentas.
Diferentemente do debugger clssico, quanto maior sua tela ou sua resoluo mais
dados podem ser exibidos.
A ferramenta exibio rpida das variveis tem quatro abas (Figura 5.21). As
duas primeiras comeam vazias, e voc pode digitar ou dar um duplo click em um
nome no cdigo fonte para adiciona-lo a lista. A terceira aba (Locais) exibe todas as
variveis locais para unidade de modularizao atual do programa, e a quarta (globais)
exibe todas as variveis globais do programa atual.
Terminologia Importante
Voc precisa entender a diferena entre um ponto de parada e um watchpoint
para uso efetivo do debugger. Lembre-se que um ponto de parada esta relacionado ao
cdigo, tanto uma instruo ou ponto dentro do cdigo, Enquanto um watchpoint esta
relacionado ao valor de um objeto de dados tambm importante entender como os
grupos de checkpoint podem modificar o comportamento dos pontos de paradas.
Outra possvel causa de confuso a diferena entre o modo externo e o modo
exclusivo. Lembre-se que o modo esterno descreve o numero de sesses abertas em
uma sesso de login, Enquanto o modo exclusivo o que mantem o debugger em um
94
processo de trabalho dentro do servidor. Lembre-se que o modo no exclusivo ser
fechado e reaberto entre os passos no debugger e poder trocar de processo de
trabalho.
Questes Prticas
As questes praticas abaixo lhe ajudaram a avaliar sua compreenso do
tpico. As questes so similares aquelas encontradas nos exames de certificao.
Mesmo que nenhuma destas questes sero encontradas no exame, elas lhe
ajudaram a revisar seu conhecimento do assunto. Selecione a resposta correta e
depois verifique todas as suas respostas na seo de respostas a seguir. Lembre-se
que voc deve selecionar todas as respostas corretas e apenas as respostas corretas
para pontuar a questo.
1
A Verdadeiro
B Falso
Um watchpoint, para a execuo do programa cada vez que a condio
especificada verdadeira.
A Verdadeiro
B Falso
95
E Devido ao Commit, grupos de dados inconsistentes podem ocorrer no
banco de dados.
F Ele pode ser usado em qualquer um dos sistemas (DEV QAS PRD)
6
Respostas E Explicaes
1 resposta correta: A
96
O debugger clssico permitia no mximo de 8 objetos de dados. O novo
debugger permite um numero ilimitado (restrito apenas pela fonte e tamanho da
janela) a ser exibido ao mesmo tempo.
Se voc encontrar uma questo discutindo uma habilidade ou limitao do
debugger clssico, voc deve assumir que a questo ser refere ao debugger clssico
e responder de acordo. Se a questo se referisse ao novo debugger a resposta seria
falso.
2 resposta correta: B
Enquanto verdade que se uma condio especificada, o watchpoint no ira
parar at que a condio seja verdadeira, o watchpoint no cera disparado at que o
contedo da varivel seja mudado. Portanto se voc definir um watchpoint que j
verdade, ele no cera disparado.
3 resposta correta: B
O debugger clssico no pode analisar exits de converso ou field exits. Isso
tambm tem efeitos colaterais no search help (F1), entradas possveis (F4), e
listagem.
4 respostas corretas: B, D
Quando voc j possui cinco modos externos em uso (ou mais precisamente
quando voc possui apenas um modo externo restante), o debugger clssico
automaticamente iniciado ao iniciar outro modo externo prevenindo que futuras
sesses sejam criadas. Se voc possuir o debugger clssico como padro, ele sempre
iniciara com esta verso.
5 respostas corretas: A, C, D, E
O modo no exclusivo significa que a sesso no esta presa a um processo de
trabalho e ser feito roll-out e roll-in entre os passos. O roll-out fora um Commit entre
os passos, o que significa que o cursor do banco de dados ser perdido, causando um
pequeno dump se ele ocorrer entre um SELECT e um ENDSELECT. Devido os
Commits do banco de dados ocorrer sem relao com as unidades logicas de
trabalho, o banco de dados pode tornar-se inconsistente. O debugger previne esta
inconsistncia em um ambiente de produo.
6 respostas corretas: B
Apenas 10 watchpoints podem existir ao mesmo tempo no debugger clssico.
O novo debugger no tem limites.
Se voc encontrar uma questo discutindo uma habilidade ou limitao do
debugger clssico, voc deve assumir que a questo ser refere ao debugger clssico
e responder de acordo. Se a questo se referisse ao novo debugger a resposta seria
falso.
7 respostas corretas: A
97
Com o novo debugger executando em um modo separado ele tem acesso as
ajudas de pesquisas que pode ser usado para definir pontos de parada.
Se voc encontrar uma questo discutindo a ausncia de uma habilidade do
debugger clssico voc deve assumir que a questo se refere ao novo debugger e
responder de acordo.
8 respostas corretas: A
Pontos de parada definidos no editor podem ser alterados no debugger. Pontos
de paradas locais podem ser convertidos para pontos de parada exceo ou externos.
9 respostas corretas: A
Se voc abrir mltiplos objetos de dados para alterao, o ENTER aceitara
todas as mudanas para todos os objetos.
10 respostas corretas: A
Se voc tentar iniciar o debugger em um sistema de produo e o modo
exclusivo no estiver disponvel, o sistema produzira o erro em tempo de execuo
DEBUGGING_NOT_POSSIBLE. Em um sistema no produtivo voc recebera
indicao de um modo no exclusivo no titulo, mas devido o potencial para dados
inconsistentes, este modo no permitido em sistemas de produo.
11 respostas corretas: C
Existem 11 desktops disponveis para uso
12 respostas corretas: Voltar (F3)
O boto voltar desfaz as alteraes no layout que voc fez para cada desktop.
Usando o boto voltar mltiplas vezes desfar cada mudana no layout.
Leve Consigo
Agora voc deve ser capas de examinar o comportamento em tempo de
execuo dos programas ABAP usando o debugger ABAP. Examinando os objetos de
dados no debugger possvel determinar porque um programa comporta-se
corretamente ou incorretamente. Se voc determinar a causa de um problema no
programa, torna-se mais fcil a correo ou soluo do problema.
Se voc desenhar programas pensando em identificar problemas durante a
fase de testes atravs do uso de ASSERTIONS e grupos de checkpoints, seus
programas se tornaro mais fceis de dar manuteno e produziram menos problemas
uma vez que estiverem em produo.
98
Lembre-Se
Voc deve entender os watchpoints e os pontos de paradas seu uso e como
defini-los. Voc deve compreender como definir e usar ASSERTIONS e grupos de
checkpoints no seu programa.
A ultima coisa da qual voc seve se lembrar desta unidade a diferena entre
o debugger clssico e o novo. Voc deve compreender a arquitetura de cada um,
quais as limitaes existentes e porque as limitaes existem. Tambm importante
entender as ferramentas e quais opes existem nas diferentes ferramentas.
A tabela 5.3 mostra os conceitos chaves do debugger.
CONCEITOS CHAVE
Arquitetura do debugger
Pontos de parada
Watchpoints
Tabela 5.3 Lembre-se conceitos chaves
DEFINIO
O debugger clssico compartilhava a
mesma rea de rolagem do modo externo
do programa executando, Enquanto o
novo debugger roda em seu prprio
modo externo.
Os desktops no debugger e como as
ferramentas funcionam no debugger
Usados para definir e usar Assertions e
grupos
de
checkpoints
e
seus
comportamentos durante a execuo do
programa.
Usados para definir vrios tipos de
pontos de paradas
Usados para definir um watchpoint
Dicas
Quando for fazer o exame, leia as questes cuidadosamente. Se uma questo
ou resposta for valida para apenas um dos dois debuggers, voc deve responder a
questo assumindo que ela se refere aquele debugger. A maioria das questes podem
ser respondidas para os dois debugger pois ambos contem funcionalidades muito
similares. Se a questo especificar um debugger especifico, responda a questo como
se pertencesse aquele debugger especifico.
Como na maioria dos tpicos a prova de certificao, importante possuir o
mximo de pratica possvel. Diferentemente dos outros tpicos no exame de
certificao, normalmente voc aprendera mais usando o debugger do que apenas
lendo sobre ele.
Sumario
Agora voc deve ser capas de examinar o comportamento de um programa em
tempo de execuo usando o debugger ABAP para identificar problemas com o
programa e para validar sistematicamente o programa. Voc deve ser capas de
identificar e criar watchpoints e pontos de paradas e conhecer os vrios tipos de
99
pontos de parada. Por ultimo, voc deve entender as diferenas entre as duas verses
do debugger. Estas habilidades o tornaram apto a passar nesta sesso do exame de
certificao facilmente.
100
101
Tipos de dados so necessrios para definir os atributos tcnicos de um objeto
de dados. Dependendo do tipo de dado, voc talvez tenha que definir o comprimento e
o numero de casas decimais para definir completamente um objeto de dados no
programa voc pode usar tipos de dados pr-definidos ou do dicionrio ABAP para
definir um objeto de dados. Voc tambm pode definir tipos de dados locais em um
programa e usa-los para definir objetos de dados no programa. Objetos de dados so
temporariamente armazenados no programa e ocupam memoria; eles existem
Enquanto durar o programa.
Neste capitulo voc aprendera sobre os tipos de dados e objetos de dados e a
diferena entre eles. Voc aprendera sobre os tipos de dados elementares, tipos de
dados locais e globais. Voc aprendera como definir tipos de dados e objetos de
dados e usa-los no programa. Finalmente, voc aprendera sobre a visibilidade dos
objetos de dados nos programas ABAP.
Cenrio Real: Voc iniciou em um novo projeto e deve desenvolver uma aplicao
para o projeto. Para desenvolver uma aplicao voc deve entender os tipos de dados
e objetos de dados disponveis na linguagem de programao ABAP e quais deles
utilizar na aplicao porque para processar dados tal como l-los de uma tabela ou
arquivo sequencial e exibi-los na tela, voc deve ler e armazenar os dados
temporariamente em um objeto de dados.
Os objetos de dados contem dados com os quais os programas trabalham em
tempo de execuo, e eles existem durante a execuo do programa. Para definir um
objeto de dados necessrio um tipo de dados, que pode ser local ou global. E ento
para escrever qualquer aplicao em um sistema, voc precisa da definio de um tipo
de objetos de dados para ler e processar os dados na aplicao.
Voc deve conhecer os tipos de dados pr-definidos genricos que voc pode
usar e as operaes validas nos vrios tipos, como tambm a diferena entre tipos
locais e globais. Voc tambm deve conhecer a sintaxe para declarao de dados e
suas utilizaes no programa para escrever aplicaes robustas.
102
Conceitos Chave
Linguagens de programao necessitam de variveis ou campos para
armazenar os dados localmente no programa. Objeto de dados tambm chamado de
variveis e so os armazns temporrios na aplicao. O tipo da operao que pode
ser executada na varivel ou objeto de dados depende do seu tipo de dados. A
linguagem ABAP possui tipos de dados pr-definidos e genricos, e a sintaxe para a
declarao de dados depende do tipo de dado.
Como qualquer linguagem de programao as declaraes de dados no
programa ABAP podem ser locais ou globais. O escopo e a validade dos objetos de
dados dependem da definio do objeto de dados no programa. Portanto, voc deve
ter uma boa compreenso dos seguintes tpicos para escrever uma aplicao de
negcios robusta:
Tipos De Dados
O tipo de dados apenas uma descrio e no ocupa a memoria; ele pode ser
definido no programa independentemente. Voc pode definir seus prprios tipo de
dados baseado nos tipos pr-definidos e tipos globais. Tipos locais so definidos no
programa Enquanto tipos globais so definidos no dicionrio ABAP. Tipos de dados
locais so definidos usando a instruo TYPES, Enquanto tipos globais so definidos
no dicionrio ABAP usando elementos de dados type pools ou grupos de tipos, tipos
de tabelas, estruturas e tabelas. Objetos do dicionrio ABAP como tabelas e estruturas
e seus componentes tambm podem ser usados para definir tipos de dados. Tipos
locais esto disponveis para o programa em que foram declarados, Enquanto os tipos
globais esto disponveis para todos os programas no sistema SAP.
103
Objeto De Dados
Objetos de dados so temporariamente armazenados no programa e ocupam
memoria para armazenar dados. Objeto de dados contm dados para o programa e
eles existem enquanto durar o programa. Os atributos tcnicos de um objeto de dados
so o seu comprimento, nmero de casas decimais e o tipo de dados, se ele for
definido usando tipo de dados elementar. Para objetos de dados definidos com
referencia a objetos do dicionrio ABAP, os atributos tcnicos como comprimento,
casas decimais e tipo de dados so derivados do objeto do dicionrio ABAP.
Programas ABAP trabalham com os contedos dos objetos de dados e os
interpretam de acordo com os seus tipos. Voc declara os objetos de dados
estaticamente no programa ABAP ou dinamicamente em tempo de execuo. Voc
pode criar objetos de dados dinamicamente quando voc chama uma procedure com
um parmetro, ou quando voc chama uma sub-rotina com parmetros no seu
programa. O programa trata literais como objetos de dados mais literais so objetos de
dados com valor fixo.
104
Objetos de dados podem ser declarados com tipos de dados pr-definidos, locais ou
globais. Objetos de dados so definidos no programa usando a instruo DATA e
podem receber um valor inicial com a instruo VALUE. O ABAP contm os seguintes
tipos de objetos de dados:
Literais
Literais so objetos de dados no nomeados com valores fixos e so
criados no cdigo fonte do programa. O valor do literal no pode ser
alterado, e eles tm atributos fixos como tipo de dados, comprimento e
numero de casas decimais. Trs tipos de literais so definidos em
tempo de execuo no ambiente ABAP: Literais numricos, Literais de
campo de texto e Literais de String.
o Literais Numricos
Literais numricos so definidos no programa com uma sequencia
de dgitos que podem conter um sinal de + ou de -; o sinal no
obrigatrio os literais numricos representam o leque de nmeros
validos definidos no tipo de dados pr-definidos. Literal numrico
integer pode variar de -2+1 at 2-1, o que significa que o valor
varia de -2.147.483.648 at +2.147.483.647. Para atribuir um literal
numrico a uma varivel, no necessrio aspas simples em volta
do literal numrico. A seguir esta a sintaxe para definio de um
literal numrico:
DATA: var1 TYPE I VALUE 12345.
o
Literais De String
O literal de string definido com uma sequencia de caracteres
cercados de crase (`). O comprimento do literal de string pode ser
de at 255 caracteres se o tipo de dados STRING. Espaos a
direita no so ignorados diferente dos literais de texto. A seguir
esta a sintaxe para definir um objeto de dados STRING:
DATA str_var TYPE STRING VALUE `text`.
Constantes
Constantes so objetos de dados nomeados que possuem valor fixo e
so definidos estaticamente usando uma instruo de declarao. Voc
define constantes com a palavra chave CONSTANTS e atribui um valor
ao objeto de dados com a instruo VALUE. O valor das constantes no
105
pode ser alterado durante a execuo do programa. Se voc tentar
mudar o valor de uma constante, um erro de tempo de execuo
ocorrera.
recomendado que voc use constantes ao invs de literais no
programa. Voc declara constante usando a seguinte sintaxe:
CONSTANTS: c_nump TYPE P DECIMALS 3 VALUE 123.657,
c_city TYPE C LENGTH 10 VALUE BERLIN.
Smbolos De Texto
Smbolos de texto outro tipo chamado de objetos de dados e
pertencem a um programa especifico. Smbolos de texto so gerados a
partir do pool de textos no programa ABAP quando voc inicia o
programa ABAP. Ttulos de programas, tambm como cabealho e
textos de seleo so elementos de texto do programa. Os elementos
de texto do programa so armazenados como objetos de dados e
smbolos de texto.
Smbolos de texto so armazenados fora do cdigo fonte no pool de
textos no repositrio de textos do programa. Smbolos de texto podem
ser traduzidos para diferentes lnguas e armazenados no pool de texto
com o indicador de linguagem. O programa ou tela de seleo usa o
smbolo de texto para exibir o texto e ele pode ser exibido na lngua de
logon automaticamente se o smbolo de texto foi traduzido para aquela
linguagem. Smbolos de texto so do tipo C e so acessados por um
identificador com trs caracteres alfa numricos.
Para acessar o smbolo de texto no programa voc precisa enderea-lo
como TEXT-XXX, aonde XXX o ID de texto para o smbolo de texto no
repositrio de pool de texto do programa. Voc pode editar o smbolo de
texto a partir do editor ABAP atravs do Menu Ir para Elementos de
texto Smbolos de texto. Voc tambm pode acessar o smbolo de
texto a partir do programa ABAP dando um duplo click no smbolo de
texto no programa, como mostrado na seguinte instruo:
WRITE text-001.
WRITE THIS is an English text (002).
106
Variveis so chamadas de objetos de dados, e so declaradas
estaticamente no programa ou criadas dinamicamente durante a
execuo do programa. Variveis permitem que voc armazene os
dados localmente na memoria para o programa, e seus valores podem
ser alterados durante a execuo do programa. Voc pode declarar
estaticamente as variveis com as seguintes instrues de declarao:
107
procedure. A varivel declarada na procedure existira Enquanto
durar o programa principal, mas estar disponvel somente dentro
da procedure por isso, se voc quiser manter o valor da varivel
local alm do tempo de execuo da sub-rotina, voc deve usar a
palavra chave STATCS. O seguinte exemplo demonstra o uso da
palavra chave STATCS:
REPORT DEMO_STATIC_DATA_OBJECT.
DO 5 TIMES.
PERFORM dataobject_exemple.
ENDDO.
FROM dataobject_example.
DATA
count1 TYPE I.
STATICS count2 TYPE I.
count1 = count1 + 1.
count2 = count2 + 1.
WRITE: / Count1: , count1, Count2: , count2.
ENDFORM.
Quando voc executar o programa, o seguinte apresentado:
Count1: 1 Count2: 1
Count1: 1 Count2: 2
Count1: 1 Count2: 3
Count1: 1 Count2: 4
Count1: 1 Count2: 5
o
108
Voc declara variveis com a palavra chave DATA com a seguinte
sintaxe:
DATA: var1 TYPE I.
DATA: var2 LIKE var1.
DATA: var3 TYPE STRING VALUE hello.
O nome da varivel <var1> pode ter at 30 caracteres. Voc define
os atributos tcnicos para os objetos de dados durante a
declarao. Voc define o tipo de dados, comprimento e numero de
casas decimais, entretanto para alguns tipos o comprimento e
numero de casas decimais so fixos (por exemplo, tipo d, tipo t,
etc...) ou vem do dicionrio. A varivel declarada usando o tipo do
dicionrio ABAP.
Se voc esta usando a palavra chave TYPE para declarar os dados,
ento o tipo pode ser um tipo de dados pr-definido do ABAP, o tipo
de uma varivel local do programa, ou tipo de dados do dicionrio
ABAP. Se voc estiver usando a palavra chave LIKE para declarar o
objeto de dados, ento o objeto (a direita do LIKE) deve ser um
objeto de dados existente no programa j deve ter sido declarado,
ou ele pode ser uma tabela do banco de dados, viso ou estrutura
ou ento um componente de uma tabela ou estrutura.
A palavra chave VALUE usada para definir o valor inicial da
varivel. A instruo LIKE permitida em objetos ABAP apenas
para declarar objetos de dados locais ou campos SY como SYUNAME, SY-DATUM, e assim por diante.
109
110
COMPRIMENTO
4
8
VALOR INICIAL
0
0
00000000
000000
STRING
DINAMICO
XSTRING
DINAMICO
SIGNIFICADO
Tipos de dados Integer
Numero de Ponto
Flutuante
Campo Data no formato
AAAAMMDD
Campo tempo no formato
HHMMSS
Cadeia de caracteres de
comprimento dinmico
Sequencia de bytes de
comprimento
dinmico
(String Hexadecimal)
COMPRIMENTO
PADRO
VALOR INICIAL
SIGNIFICADO
111
C
0..0
P
X
8
1
0
X0...0
Campo
texto,
caracteres
alfa
numricos
Campo
de
texto
numrico
Numero compactado
Sequencia de bytes
hexadecimal
112
Os tipos complexos consistem de uma sequencia de dados elementares, tipos
de dados complexos ou tipos de referencia. Voc tambm pode usar objetos do
dicionrio ABAP como elementos de dados, estruturas, tabelas e componentes de
estruturas ou tabelas para definir o componente individual do tipo complexo. Tipos de
dados complexos so os tipos de estruturas e tipos de tabela. Tipos de dados de
estrutura podem ser feitos a partir de componentes de qualquer tipo de dados. Os
componentes do tipo de dados da estrutura podem ser uma sequencia de tipos de
dados elementares relacionados, tipos de dados complexos ou tipos de dados de
referencia. Dependendo do tipo do componente, o tipo da estrutura pode ser uma
estrutura flat, aninhada ou profundamente aninhada.
O tipo de estrutura flat contem componentes de comprimento fixo, enquanto os
tipos de estrutura aninhada contem uma subestrutura dentro do tipo da estrutura; isto
, componentes que no so elementares. Uma estrutura flat tambm pode ser
aninhada. O tipo de estrutura chamado de profundo quando contem uma tabela
interna ou componente de comprimento varivel. Os componentes individuais da
estrutura so acessados dentro do programa usando um hfen entre o nome da
estrutura e o componente. A seguir esta a sintaxe para definir o tipo de dados de
estrutura em um programa ABAP
113
END OF strut2,
END OF stru1.
TYPES: BEGIN OF addr1,
street_no TYPE C LENGTH 30,
city
TYPE C LENGTH 20,
state
TYPE C LENGTH 30,
country
TYPE C LENGTH 20,
END OF addr1.
TYPES: BEGIN OF contact_det,
firstname TYPE C LENGTH 20,
lastname TYPE C LENGTH 20,
address TYPE addr1,
phoneno TYPE C length 15,
END OF contact_det.
Tipos de tabelas consistem de qualquer nmero de linhas de um mesmo tipo
de dados, e so usados para descrever tabelas internas. Este tpico discutido em
mais detalhes no capitulo sete, uso e definio de tabelas internas. A linha da tabela
pode conter qualquer tipo de dados elementar ou tipo e dados complexos. A tabela
local do programa ABAP chamada de tabela interna. Usamos a seguinte sintaxe
para criar um tipo de tabela.
TYPES: <tipo da tabela>
TYPE <tipo tabela> OF <tipo linha> [WITH <key>].
A instruo TYPES pode definir um tipo de tabela ou tipo de acesso <tipo
tabela>, tipo da linha <tipo linha> e uma chave <key>. O <tipo linha> um tipo de
dados conhecido no programa. O cdigo de exemplo a seguir mostra a definio de
um tipo de tabela:
TYPES: BEGIN of flightinfo,
carrid
TYPE s_carr_id,
carrname TYPE s_ carrname,
connid TYPE s_conn_id,
fldate
TYPE sy-datum,
fltime
TYPE s_fltime,
END OF flightinfo.
TYPES: itab TYPE SORTED TABLE OF flightinfo
WITH UNIQUE KEY carrid.
O programa acima define a declarao do tipo de tabela itab com o tipo de
linha da estrutura fligthinfo e a chave nica do componente de estrutura NAME. Veja o
capitulo sete, use definies de tabelas internas, para informaes detalhadas sobre
tabelas internas e sua utilizao nos programas ABAP.
114
Tipos de Dados Globais
Tipos de dados definidos no dicionrio ABAP so chamados tipos de dados
globais e esto disponveis em todo o sistema. Tipos de dados globais consistem de
elementos de dados, estruturas, e tipos de tabelas:
Elementos de dados referem-se aos tipos pr-definidos do dicionrio os
quais em sua maioria correspondem aos tipos pr-definidos do ABAP.
Estruturas so sequencias de elementos de dados ou at de outros
tipos de dados de estrutura como um dos componentes.
Tipos de tabelas so tabelas internas definidas no dicionrio ABAP.
Voc pode usar tipos de dados existentes no dicionrio ABAP ou criar novos
tipos de dados no dicionrio ABAP. Os seguintes objetos do dicionrio ABAP so
usados para definir os tipos de dados globais:
Tabelas do banco de dados ou vises so usadas para definir um tipo
de dados de estrutura flat. Os campos individuais da tabela do banco de
dados so os componentes do tipo de dados de estrutura flat. Voc
tambm pode definir um tipo usando os componentes individuais ou
campos da tabela do banco de dados ou viso. A sintaxe para a
declarao do tipo com uma tabela do banco de dados:
TYPE: <db_types> TYPE < bdtab >.
TYPE: mara_ty TYPE mara.
TYPE: <t> TYPE <bdtab> - <c>.
TYPE: matnr_ty TYPE mara-matnr.
Voc tambm pode usar a tabela do banco de dados para definir
objetos de dados ou uma workarea no seu programa. A sintaxe para
definir um objeto de dados com uma referencia a tabela do banco de
dados :
DATA: mara_ls TYPE mara.
115
DATA: wa_site TYPE site_ty.
116
Cuidado
Tome cuidado com a visibilidade declarada localmente no programa:
Terminologia Importante
Voc deve entender a diferena entre tipo de dados e objetos de dados, e seu
uso nos programas ABAP.
Tipos de dados so usados para definio de objetos de dados. Eles definem
os atributos tcnicos do objeto de dados, como o objeto de dados armazenado na
memoria e quais operaes so possveis no objeto de dados baseado em seu tipo de
dados voc pode usar tipos pr-definidos e globais para definir os atributos tcnicos do
objeto de dados. Dependendo do tipo de dados, talvez voc precise definir o
117
complemento e o numero de casas decimais para definir completamente os atributos
tcnicos do objeto. Para objetos de dados definidos com referencia ao objeto do
dicionrio de dados ABAP, os atributos tcnicos com comprimento, numero de casas
decimais e o tipo de dados derivados dos objetos do dicionrio ABAP.
Objetos de dados so armazns temporrios no programa e ocupam memoria
para armazenar os dados. Objetos de dados contem os dados para o programa, e eles
existem durante a durao do programa.
Questes Prticas
As questes praticas abaixo lhe ajudaram a avaliar sua compreenso do
tpico. As questes so similares quelas encontradas nos exames de certificao.
Mesmo que nenhuma destas questes seja encontrada no exame, elas lhe ajudaram a
revisar seu conhecimento do assunto. Selecione a resposta correta e depois verifique
todas as suas respostas na seo de respostas a seguir. Lembre-se que voc deve
selecionar todas as respostas corretas e apenas as respostas corretas para pontuar a
questo.
1
118
C 1 16
7
Respostas E Explicaes
119
1 resposta correta: B
O tipo de dados apenas a descrio e no ocupa memoria.
2 resposta correta: A
O objeto de dados uma instancia do tipo de dados e ocupa memoria. Tipos
de dados definem os atributos tcnicos do objeto de dados.
3 resposta correta: B
Tipos de dados pr-definidos so disponibilizados pelo ambiente de tempo de
execuo e esto disponveis em todo o sistema.
4 resposta correta: A
O comprimento padro do tipo de dados caractere C um. Se voc quiser que
o objeto de dados seja maior que um caractere ento voc deve especificar o
comprimento.
TYPES: var1 TYPE C.
TYPES: var2(10) TYPE C.
TYPES: var2 TYPE C LENGTH 15.
5 resposta correta: B
O tipo I arredonda o valor e no truncam.
DATA: int1
int2
int3
int1 = 4/10.
int2 = 5/10.
int3 = 16/10.
TYPE I,
TYPE I,
TYPE I.
valor de int1 = 0
valor de int1 = 1
valor de int1 = 2
6 resposta correta: A
O comprimento padro do tipo P 8. Se voc quiser ter mais ou menos que 8,
ento voc deve especificar o comprimento com a palavra chave LENGTH ou em
parnteses aps o nome do objeto de dados ou tipo de dados.
7 resposta correta: B
120
A estrutura de comprimento varivel chamado estrutura profunda. Qualquer
estrutura que possua um componente de comprimento varivel chamada de
estrutura profunda. Por exemplo, uma estrutura em que um de seus componentes
sejam uma tabela interna uma estrutura profunda, assim como uma estrutura com
um componente do tipo STRING.
8 resposta correta: A
Objetos de dados locais podem ser definidos usando os objetos do dicionrio
ABAP.
9 resposta correta: B
Tipos de dados globais so objetos do dicionrio ABAP, como elementos de
dados, estruturas do dicionrio, tabelas, tipos de tabelas e type pools.
10 resposta correta: C, D
O tipo de dados D um tipo de dados pr-definido de comprimento fixo e no
necessita da especificao de comprimento. O tipo de dados STRING um tipo de
dados de comprimento dinmico e no requer especificao de comprimento.
11 resposta correta: D
A resposta correta 0:
int1 = 5 * (3/10).
int1 = 5 * (0). porque 3/10 = 0, devido arredondamento do integer.
int1 = 0.
12 resposta correta: A
A resposta correta um porque o tipo de dados integer I arredonda um numero
durante as operaes aritmticas.
Leve Consigo
Voc deve entender os tipos de dados ABAP e objetos de dados. Voc deve
entender o significado do padro de tipos de dados ABAP, tipos de dados locais e tipos
de dados globais. E importante que voc conhea a diferena entre tipos de dados
locais e tipos de dados globais e entre as estruturas flat, estruturas aninhadas e
estruturas profundas. Tudo isso vai ajuda-lo a escrever cdigos mais eficientes.
121
Finalmente, voc deve entender o escopo e validao do objeto de dados dentro do
programa ABAP.
Lembre-Se
Tabela 6.3 repete os conceitos chaves deste capitulo de forma curta.
CONCEITOS CHAVE
Tipos de dados ABAP
DEFINIO
Tipos de dados elementares pr-definidos fornecidos pelo
ABAP em ambiente de tempo de execuo so tambm
chamados de tipos de dados ABAP
Tipos de dados
O tipo de dados uma descrio, e no uma alocao de
memoria.
Tipos de dados so usados para definir objetos de dados.
Objetos de dados
Objetos de dados so instancias dos tipos de objetos e
ocupam memoria. Eles armazenam dados temporariamente
que so usados no programa.
Tipo de dado local
Tipos de dados locais so definidos usando a instruo
TYPES no programa ABAP. Eles podem se referir a tipos de
dados ou tipos de dados globais pr-definidos a partir do
dicionrio ABAP.
Tipos de dados globais Tipos de dados locais so definidos no dicionrio ABAP.
Estruturas
flat, Estruturas flat contem componentes de comprimento fixo. A
estruturas aninhadas, estrutura aninhada se ela conter outra estrutura como
estruturas profundas.
componente. A estrutura chamada de estrutura profunda
se ela conter uma tabela interna ou um componente de
tamanho varivel.
Tabela 6.3 Lembre-se dos conceitos chaves.
Sumario
Neste capitulo voc aprendeu sobre tipos de dados ABAP e objeto de dados,
incluindo tipos de dados locais, tipos de dados pr-definidos, tipos de dados globais e
seus usos em programas. Voc tambm aprendeu a sintaxe para definir objeto de
dados usando os tipos de dados do dicionrio ABAP e pr-definir tipos de dados. Este
conhecimento permitira que voc facilmente passe no exame de certificao.
122
123
Tabelas internas so variveis de programas e armazenam mltiplos registros
de dados estruturados idnticos na memoria em tempo de execuo. Eles so usados
para processar grandes conjuntos de dados de forma estruturada. Elas so benficas
para a melhoria de processamento de dados no programa se usada corretamente.
Neste capitulo voc vai aprender sobre os vrios elementos da tabela interna.
Voc ira aprender sobre os vrios tipos de tabelas internas e a sintaxe para criar e
usa-los no programa. Aprender a definir tabelas internas, acessar dados das tabelas
internas, modificar, apagar e realizar varias outras operaes nos dados das tabelas
internas no programa.
Cenrio Do Mundo Real: imagine que voc tem que escrever uma aplicao que Le
os dados de um numero de tabelas do banco de dados SAP, realizar algumas
comparaes e clculos e apresentar o resultado. Por exemplo, voc tem que mostrar
os detalhes da ordem de compra em aberto no sistema SAP, juntamente com detalhes
materiais, tais como descrio e tipo de materiais e detalhes do fornecedor.
Para escrever um aplicativo, seria uma boa ideia ler todas as ordens de compra
em aberto do banco de dados e armazenar os detalhes do pedido de compra em uma
tabela interna, em seguida percorrer a tabela interna, ler o material e fornecedor para
cada ordem e exibir o resultado na tela. Voc tambm pode querer armazenar os
detalhes do material e fornecedor na tabela interna, de forma que, voc no tem que
ler os detalhes do banco de dados novamente sendo que o mesmo material e
fornecedor existe em mais de uma ordem de compra.
Para criar este aplicativo voc precisa entender o conceito de tabelas internas,
incluindo a forma de armazenar e acessar os dados. Voc tambm precisa entender
os vrios tipos de tabelas internas a fim de escrever um programa eficiente.
Conceitos Chaves
Uma tabela interna uma varivel de programa usada para armazenar vrios
registros estruturados e idnticos na memoria de uma aplicao. Este capitulo fornece
uma descrio completa de como trabalhar com tabelas internas. Ele descreve o seus
usos e definies, alm de varias operaes e tipos diferentes de tabelas.
Depois de concluir este capitulo voc deve ser capas de fazer o seguinte:
124
125
individuais em uma tabela interna so chamados de linhas da tabela ou
entradas da tabela. Elementos individuais de uma linha da tabela so
chamados de colunas ou campos. O tipo da linha de uma tabela interna
definido atravs de um tipo de dado e descreve a estrutura da linha
das entradas da tabela. Cada linha da tabela tem a mesma estrutura.
Figura 7.1 Mostra os componentes individuais de uma tabela interna.
Tipo De Linha
O tipo de linha descreve a estrutura da linha em uma entrada da tabela
e define os atributos de um elemento individual da linha da tabela. O
tipo da linha geralmente definido como tipo de estrutura, mas quase
todo tipo de dado pode ser usado para definio do tipo da linha.
Chave Da Tabela
A chave da tabela consiste de campos chaves e suas ordens, identificar
uma linha da tabela semelhante chave da tabela do banco de dados.
126
Uma tabela interna pode ter ou no uma chave nica, uma tabela
interna com chave nica no pode conter entradas duplicadas. Entradas
em uma tabela devem diferir por pelo menos um campo chave. Uma
chave no nica significa que a tabela pode ter entradas duplicadas, e
isso perfeitamente legitimo porque essa uma tabela interna, ao invs
de uma tabela de banco de dados.
Alm disso, a tabela pode ter uma chave padro e uma chave definida pelo
usurio. Se o tipo de linha de uma tabela interna uma estrutura ento a chave
padro formada por todos os campos no numricos da estrutura. Uma chave
definida pelo usurio qualquer subgrupo dos campos da estrutura que no so
referencias ou a prpria tabela interna.
Voc pode definir uma tabela interna com ou sem header line. Header lines a
maneira antiga de se definir uma tabela interna, porm ainda so validas. Mas se voc
esta definindo uma tabela interna, recomendado que voc a defina com uma
workarea. A workarea um novo padro para definir a rea de trabalho da tabela
interna, e esta definida explicitamente no programa. O header line para a tabela
interna possui o mesmo nome da tabela interna, enquanto a workarea tem o nome
diferente. Tabelas internas definidas com header line no so suportadas na
programao ABAP orientada a objeto.
O header line ou a workarea usada para transferir os registros de dados da
tabela para um processamento posterior. Voc preenche a header line ou a workarea
com os dados e em seguida transfere os registros para criar a entrada na tabela.
Similarmente, voc l os dados de uma tabela interna para a header line ou workarea
para o processamento de uma linha da tabela j existente. Uma definio de tabela
interna com uma workarea separada pode ter uma estrutura profunda para o tipo da
linha, enquanto uma tabela interna com header line s pode ter um tipo de linha
(estrutura plana).
Tabela interna pode ser de diferentes tipos dependendo a forma como feito o
acesso a os dados individuais. Existem trs tipos de tabelas internas:
127
Uma tabela ordenada pode ter uma chave nica ou no nica, bastando
apenas definir isto na declarao da mesma. A tabela interna ordenada
pode ser acessada com a chave da tabela ou ndice. Para isto, o
sistema sempre usa o algoritmo de busca binaria, quando acessado
usando a chave da tabela (ou parte da chave, da esquerda para a
direita). Voc preenche uma tabela ordenada usando a instruo
INSERT.
As entradas da tabela so inseridas de acordo com a sequencia de
ordenao definido. Tanto tabelas ordenadas quanto tabela padres so
chamada de tabelas de ndice porque podem ser acessados utilizando
um ndice.
Tabelas Hash (Hashed tables)
Tabelas hash so definidas usando a adio HASHED TABLE. Ela no
tem ndice, e, portanto no podem ser acessadas usando um ndice,
podem ser acessadas somente atravs de chaves de acessos. Para isto
que isto ocorra, uma tabela de hash deve ter uma chave nica.
A sequencia de entrada gerenciado pelo algoritmo de hash. Tabelas
internas hash so ideais para armazenar um grande numero de
entradas, onde voc precisa ler as entradas utilizando a chave, porque
o tempo de resposta no dependente do numero de entradas. O
algoritmo de hash usado para localizar o registro apropriado.
O acesso chave da Tabela Padro atravs de uma busca linear;
para a Tabela Ordenada chave de acesso uma busca binaria e para a
tabela de hash a chave de acesso utiliza o algoritmo de hash.
Como j foi dito, tabelas padro e tabelas ordenadas podem ser acessadas
usando o ndice ou usando a chave, mas tabela hash s pode ser acessada com a
chave de acesso. Chave de acesso para uma tabela padro resulta em uma busca
sequencial; para tabela ordenada chave de acesso resulta em uma busca binaria, e
para uma tabela hash chave de acesso usa o algoritmo de hash para encontrar o
registro apropriado.
Tabela 7.1 exibe a tabela de possveis caractersticas para os diferentes tipos
de tabelas.
TABELA DE NDICE
Tabela padro
Tabela ordenada
Possvel
Possvel
Pode ser acessado Pode ser acessado
No nica
nica e no nica
Principalmente
Deve ser acessado
usando o ndice
usando
principalmente
a
chave,
no
o
ndice.
Tabela 7.1 Opes de acesso para diferentes tipos de tabelas
Tipo de tabela
ndice de acesso
Chave de acesso
Unicidade de chave
Acesso
TABELA HASH
Tabela hash
No Possvel
Pode ser acessado
nica
Somente usando a
chave
128
Definindo Tabelas Internas ABAP
Tabelas internas so objetos de dados e so definidos usando a instruo
DATA. Para definir completamente uma tabela interna, voc deve definir o tipo de
linha, chave e o tipo da tabela. Tipos de linhas podem ser definidos locais no programa
ou global como um tipo de dado no dicionrio ABAP. Voc pode definir uma tabela
interna localmente ou no dicionrio ABAP como tipo de tabela.
Voc pode definir o tipo de tabelas global no dicionrio ABAP ou usar um j
existente (Pr-definido pela SAP) em seu programa. Tipos de dados globais so
usados para todo o sistema e pode ser usado em qualquer programa no sistema. Tipo
de tabela descreve a estrutura e o atributo de uma tabela interna.
Voc pode referenciar um tipo de tabela definida no dicionrio ABAP em seu
programa usando a seguinte sintaxe:
DATA mara_lt
TYPE mara_tab.
Esta sintaxe cria uma tabela interna mara_lt com a estrutura e atributos
definidos para a categoria da tabela mara_tab no dicionrio ABAP.
A categoria de tabela um tipo de dado do dicionrio ABAP e definido
especificando o tipo de linha, acesso e a chave da tabela interna. O tipo de linha
define a estrutura de uma tabela interna. Tipos de linha podem ser uma estrutura flat,
estrutura profunda ou estrutura aninhada. Tipos de linhas define a linha e o
componente individual do tipo da linha define a coluna da tabela interna.
Figura 7.2 exibe categoria da linha para a categoria de tabela do dicionrio
ABAP. A tabela MARM do dicionrio ABAP usada para definir a categoria de linha
para a categoria de tabela marm_tab. Voc pode usar uma tabela do dicionrio ABAP
ou uma estrutura para definir a categoria de linha.
129
Voc pode especificar o modo de acesso para a categoria de tabela. Modos de
acesso definem como acessar os dados na tabela interna ao executar operaes
chaves na tabela interna como: READ TABLE, INSERT TABLE, MODIFY TABLE etc...
Figura 7.3 exibe os possveis modos de acessos para a categoria de tabela.
Tabela Padro
A chave de acesso para a tabela padro usa busca sequencial, e o
desempenho depende do numero de entradas na tabela.
Tabela Ordenada
As tabelas internas so armazenadas internamente ordenadas pela
chave. Voc deve sempre acessar a tabela interna ordenada pela
chave. A chave de acesso para uma tabela interna ordenada usa busca
binaria para acessar registros da tabela.
Tabela Hash
A tabela gerenciada internamente usando o algoritimo de hash. Todas
as entradas na tabela devem ter uma chave nica.
Tabela De ndice
A tabela pode ser uma tabela padro ou ordenada. ndice de acesso
permitido para tabelas de ndice.
No Especificada
A tabela pode ser uma tabela padro, tabela ordenada ou tabela de
hash. As operaes validas sobre esta tabela a interseco das
operaes validas nas tabelas padro, ordenada e hash. Voc no pode
acessar tabelas deste tipo com operaes de ndice.
nico
Com o tipo de chave nico, a tabela pode conter registros com chaves
nicas.
No nico
Com o tipo de chave no nico, a tabela pode conter registros com
chaves duplicadas.
130
No especificado
O tipo de chave no especificado define um tipo de tabela genrica. O
tipo tabela genrica no define todos os atributos para a categoria da
tabela no dicionrio ABAP; deixa alguns dos atributos indefinidos.
131
DATA:
ou
itab_lt
TYPE itab_type.
itab_lt
132
automaticamente uma chave padro como chave da tabela. A chave padro para a
tabela padro consiste de todos os campos no numricos, na sequencia em que
aparecem no tipo de linha.
Esta a sintaxe para definir a tabela padro com uma chave padro:
DATA: itab TYPE TABLE OF mara.
A adio INITIAL SIZE e WITH HEADER LINE tambm possvel para a
declarao de tipos de dados ou objetos de dados. A adio INITIAL SIZE <n> permite
que o sistema reserve o primeiro bloco de memoria para a tabela interna; qualquer
requisito de memoria subsequente gerenciado pelo sistema dinamicamente.
A sintaxe para definir uma tabela interna com tamanho inicial (INITIAL SIZE)
a seguinte:
DATA: itab TYPE TABLE OF mara INITIAL SIZE 4.
O ABAP em tempo de execuo gerencia a memria dinamicamente se o
tamanho inicial para tabela interna no especificado durante a definio da tabela
interna. Quando o tamanho inicial estiver todo utilizado, o sistema produz duas vezes
mais espao disponvel at um limite de 8KB, e depois cada adio subsequente ser
criada com 12KB. Ele s faz sentido para especificar o tamanho inicial se voc tiver
certeza sobre o numero de linhas na tabela interna, recomendado que voc omita
esta adio e deixe o sistema gerenciar a memoria da tabela interna.
A estrutura 7.7 mostra a sintaxe para definir uma tabela interna ordenada e
uma tabela interna hash. Neste exemplo nos temos que definir tipo de linha para a
tabela interna, tipo da tabela e objeto de dados da tabela interna ordenada e hash.
TYPES: BEGIN OF line_type,
material TYPE matnr,
plant
TYPE werks_d,
po_numb TYPE ebeln,
END OF line_type.
TYPES: itab01 TYPE SORTED TABLE OF line_type
WITH UNIQUE KEY material plant.
TYPES: itab02 TYPE HASHED TABLE OF line_type
WITH UNIQUE KEY material plant.
Estrutura 7.7 sintaxe para tipos de tabelas ordenadas e hash.
A estrutura 7.8 mostra duas possibilidades para criar uma tabela interna
ordenada. Ou tambm pode usar estrutura do dicionrio ABAP ou definir uma tabela
para definir uma tabela interna, como mostrado na estrutura 7.9.
DATA: itab01_lt
ou
DATA: itab01_lt
TYPE itab01.
TYPE SORTED TABLE OF
line_type
133
WITH UNIQUE KEY material plant.
Estrutura 7.8 Objeto de dados da tabela interna ordenada.
DATA: itab
TYPE itab02.
TYPE HASHED TABLE OF line_type
WITH UNIQUE KEY material plant.
TYPE HASHED TABLE OF mark
WITH UNIQUE KEY matnr werks.
134
mat_desc LIKE maktx,
stock
LIKE labst,
END OF itab_lt.
Estrutura 7.11 definio de tabela interna com header line.
Voc define a estrutura de uma tabela interna dentro da instruo DATA: BEGIN
OF <nome da tabela interna> e END OF <nome da tabela interna>. Voc pode usar a
instruo LIKE ou TYPE para definir os componentes individuais da estrutura como
mostrado no exemplo acima. A adio do OCCURS define o numero esperado de
linhas para a tabela interna. Se voc no adiciona o OCCURS, a definio do objeto de
dados uma estrutura simples ou uma workarea. Assim sem a adio de OCCURS no
exemplo acima, o objeto de dados no uma tabela interna. Com a adio de
OCCURS o sistema cria uma tabela interna padro com uma header line.
Voc especifica o tamanho inicial para uma tabela interna com
OCCURS<numero de linha>, e o sistema reserva a memoria para a tabela interna. O
ABAP em tempo de execuo gerencia dinamicamente o tamanho para a tabela
interna, ento se voc no sabe o numero de linhas da tabela interna, no faz sentido
especificar o numero de linhas. Voc pode simplesmente especificar OCCURS 0 e
deixar o sistema gerenciar a memoria para uma tabela interna. Como mencionado
anteriormente, adies de OCCURS foram utilizadas nas verses antigas, e no
recomendado que voc use tabela interna com OCCURS clausulas em nova verso.
Isto no suportado em programao orientada a objeto.
A estrutura 7.12 mostra outro cdigo de exemplo para definir uma tabela
interna com header line.
DATA: BEGIN OF itab_ty,
material TYPE matnr,
plant
TYPE werk,
mat_desc TYPE maktx,
stock
TYPE labst,
END OF itab_ty.
DATA: itab_lt TYPE itab_ty OCCURS 0 WITH HEADER LINE.
Estrutura 7.12 definio de tabela interna com header line.
A adio opcional HEADER LINE cria uma adio de objeto de dados com o
mesmo nome e tipo de linha de uma tabela interna. O header line no uma tabela
interna, mas uma estrutura que pode conter um nico registro.
Cuidado
Tabela interna com header line no suportada em programas orientados a
objetos.
135
Nas sees anteriores discutimos a sintaxe para definir a tabela interna. Nesta
sesso, discutiremos como preencher uma tabela e como acessar uma tabela interna,
incluindo ordenao e de varias outras operaes de tabela interna. Vamos assumir
nesta seo que a tabela interna no tem um header line, e uma workarea compatvel
com a linha da tabela definida para as varias operaes porque na nova verso no
recomendado que voc defina uma tabela interna com header line.
ADICIONANDO LINHA PARA TABELA INTERNA
Como um desenvolvedor, sua primeira tarefa no programa preencher a tabela
interna, uma vez que voc a definiu. Para adicionar novos registros tabela interna
voc usa a instruo APPEND ou INSERT. Voc tambm pode usar a instruo
SELECT para preench-los da tabela de banco de dados (Veja no capitulo 9,
Programas Bsicos ABAP e criao de interface, sobre a sintaxe e detalhes).
Segue a sintaxe para preencher uma tabela interna com a clusula SELECT.
DATA: mara_lt TYPE STANDARD TABLE OF mara.
SELECT * FROM mara INTO TABLE mara_lt.
Aqui mara uma tabela do banco de dados do sistema SAP, e mara_lt uma
tabela interna. A instruo SELECT preenche o contedo da tabela MARA na tabela
interna mara_lt.
A instruo APPEND normalmente usada apenas para a tabela interna
padro. No entanto, ele tambm pode ser usado para acrescentar a uma tabela
ordenada se a linha a ser acrescentada mantem a ordem de ordenao, mas como
seria difcil saber se este seria o caso, recomendado que voc no use APPEND
com a tabela interna ordenada. A instruo APPEND pode ser usada para acrescentar
linhas da tabela com uma ou varias tabelas interna padro. Voc preenche a workarea
e depois transfere o contedo da workarea para a tabela interna padro.
A sintaxe para acrescentar tabelas internas a seguinte:
DATA: itab_wa TYPE mara.
DATA: itab_lt TYPE STANDARD TABLE OF mara.
APPEND itab_wa TO itab_lt.
O itab_wa a workarea da tabela, e o itab_lt a prpria tabela interna. Voc
teria que preencher a workarea no programa e em seguida usar a instruo APPEND
acima para acrescentar uma nica linha para a tabela interna. A instruo APPEND
acrescenta a linha com a ltima linha na tabela interna. Voc pode usar a seguinte
sintaxe para acrescentar varias linhas para uma tabela interna.
APPEND lines OF itab_1 TO itab2.
APPEND lines OF itab_1 FROM 1 TO 50 TO itab2.
136
A instruo APPEND acima acrescenta as linhas da tabela interna itab1 para a
tabela interna itab2. Se a adio FROM <idx1> TO <idx2> especificada na instruo
APPEND, as linhas penas a partir <idx1> para <idx2> ser transferida da itab1 para
itab2.
INSERINDO LINHAS EM UMA TABELA INTERNA
A instruo INSERT tambm usada para inserir linhas em uma tabela interna
e geralmente usado para preencher tabela ordenada e tabela hash. Ao contrario da
instruo APPEND, que s acrescenta uma linha anexa no final da tabela interna, voc
pode inserir linhas em qualquer lugar na tabela interna usando INSERT. Para tabela
interna ordenada a nova linha inserida de acordo com a sequencia de ordenao,
conforme especificado pela definio de chave da tabela interna; linhas duplicadas so
inseridas acima da linha existente com a mesma chave. Registros duplicados podem
ser inseridos para tabelas internas ordenadas com chaves no nicas, mas no
podem ser inseridas para uma tabela interna com chave nica. Com uma tabela
interna hash as linhas so inseridas na tabela de gerenciamento de hash de acordo
com a sua chave da tabela.
A estrutura 7.13 mostra a sintaxe para a instruo INSERT.
TYPE: BEGIN OF line,
material TYPE matnr,
plant
TYPE werks_d,
quantity TYPE menge,
END OF line.
DATA: itab01 TYPE SORTED TABLE OF line
WITH UNIQUE KEY material.
DATA: itab_wa TYPE line.
itab_wa-material = M2.
itab_wa-plant = 1000.
itab_wa-quality = 100.
INSERT itab_wa INTO TABLE itab01.
itab_wa-material = M1.
itab_wa-plant = 1000.
itab_wa-quality = 200.
INSERT itab_wa INTO TABLE itab01.
itab_wa-material = M3.
itab_wa-plant = 1000.
itab_wa-quality = 100.
INSERT itab_wa INTO TABLE itab01.
Estrutura 7.13 cdigo para a instruo INSERT
137
A instruo acima insere o contedo da workarea itab_wa na tabela interna
itab1, na sequencia de ordenao especificada pela chave de definio. A workarea
tem que ser preenchida no programa antes de transferir as linhas para a tabela
interna.
Esta a sintaxe para inserir varias linhas de uma tabela interna para outra
tabela interna:
INSERT LINE OF itab1 [FROM <idx1>] [TO <idx2>]
INTO TABLE itab2.
A instruo acima insere linhas da tabela interna itab1 na tabela itab2. Ela
insere as linhas do <idx1> para <idx2>, da tabela itab1 na tabela itab2, se a adio
FROM <idx1> e TO <idx2> for especificada na instruo INSERT; caso contrario, todos
os registros so transferidos. A instruo de insero de varias linhas segue as regras
de insero de linhas de tabela nica para os vrios tipos de tabela interna; por
exemplo, para uma tabela interna ordenada a sequencia de ordenao ser mantida.
138
Itab_wa-matnr = M2.
Itab_wa-qty1 = 20.
COLLECT itab_wa INTO itab01.
WRITE: /sy-tabix.
Itab_wa-matnr = M1.
Itab_wa-qty1 = 10.
COLLECT itab_wa INTO itab01.
WRITE: /sy-tabix.
Itab_wa-matnr = M2.
Itab_wa-qty1 = 40.
COLLECT itab_wa INTO itab01.
WRITE: /sy-tabix.
Clear itab_wa.
LOOP AT itab01 INTO itab_wa.
WRITE: / itab_wa-matnr, itab_wa-qty.
END LOOP.
Estrutura 7.14 sintaxe para a instruo COLLECT para a tabela interna.
A sada para a estrutura 7.14 :
Index of inserted/modified line: 1 2 1 2
M1, 20
M2, 60
Ler Linhas Da Tabela Interna
Voc usa a instruo READ TABLE para ler linhas individuais da tabela interna.
Para usar a instruo read voc precisa fornecer qualquer chave ou ndice para a linha
da tabela interna que voc quer ler. A instruo READ TABLE processa um registro de
cada vez, mas voc deve usar a instruo LOOP se voc deseja processar varias
linhas a partir da tabela interna. A instruo LOOP discutida mais adiante neste
capitulo.
Sintaxe mais simples de ler com base no ndice a seguinte:
DATA: itab_wa TYPE marc,
itab_wa TYPE STANDARD TABLE OF marc.
FIELD-SYMBOLS: <fs> TYPE marc.
READ TABLE itab INDEX 10 INTO itab_wa.
Esta instruo READ TABLE l a tabela interna com o INDEX 10 e transfere o
contedo para a workarea itab_wa. O resultado da instruo READ transferido para
itab_wa apenas se a instruo READ encontrar com sucesso uma linha com o INDEX
10 na tabela interna itab. SY-SUBRC definido para 4 se no ha registros
correspondentes lido na instruo READ; caso contrario, definido para 0.
139
A instruo a seguir l uma linha da tabela a atribui ao Field Simbol. O
resultado da instruo READ TABLE transferido, para a workarea ou field symbol,
apenas se a instruo READ TABLE encontrar com sucesso uma linha correspondente
com a condio especificada para a instruo READ. SY-SUBRC definido para 4 se
nenhum registro encontrado para a instruo READ; caso contrario, e definido como
0.
READ TABLE itab WITH KEY matnr = M1 ASSIGNING <fs>.
READ TABLE itab INDEX 10 ASSIGNING <FS>.
O tipo de dado para a workarea deve ser compatvel com o tipo de linha para a
tabela interna. Uma maneira fcil de definir uma workarea para uma tabela interna a
seguinte:
DATA: wa LIKE LINE OF itab.
Voc pode usar a adio TRANSPORTING aps a instruo INTO wa. Com esta
opo voc pode selecionar os componentes ou campos que voc quer transferir para
a workarea:
DATA: idx TYPE syindex.
Idx = 10.
READ TABLE itab INDEX idx INTO wa
TRANSPORTING comp1 comp3.
Esta instruo l a tabela interna itab com o INDEX idx e copia o contedo dos
componentes ou campos comp1 e comp3 a partir da linha da tabela para a workarea.
Se voc adicionar a especificao ASSIGNING <fs>, ento a linha da tabela
com o index idx atribuda para o Field symbol <fs>. Esta adio til se voc deseja
modificar a linha selecionada aps a instruo READ. Voc pode modificar a linha da
tabela diretamente utilizando o Field symbol; caso contrario, voc tem que usar a
instruo MODIFY para modificar a linha da tabela.
NOTA: importante notar que o campo field symbol aponta para a linha da tabela na
memoria, de modo que, voc pode modificar a linha da tabela diretamente melhorando
o desempenho.
Estrutura 7.15 mostra o cdigo de exemplo para modificar o registro da tabela.
TYPES: BEGIN OF line,
matnr = TYPE matnr,
qty1 = TYPE i,
END OF line.
DATA: itab_wa TYPE line.
DATA: itab_lt
TYPE STANDARD TABLE OF TYPE line.
itab_wa-matnr = M1.
itab_wa-qty1 = 10.
APPEND itab_wa TO itab_lt.
140
itab_wa-matnr = M2.
itab_wa-qty1 = 20.
APPEND itab_wa TO itab_lt.
itab_wa-matnr = M3.
itab_wa-qty1 = 30.
APPEND itab_wa TO itab_lt.
LOOP AT itab_lt WHERE matnr = M1 INTO itab_wa.
Itab_wa-qty1 = 100.
MODIFY itab-lt FROM itab_wa TRANSPORTING qty1.
ENDLOOP.
Estrutura 7.15 Cdigo para APPEND e MODIFY uma tabela interna.
No entanto com a instruo READ TABLE acima tambm poderia ser
implementado da seguinte forma:
READ TABLE itab_lt KEY matnr = M1 ASSIGNING <fs>.
<fs>-qty1 = 100.
Voc tambm pode ler o registro da tabela interna com base em qualquer
campo no registro da tabela. Segue-se o cdigo de exemplo para a instruo READ
com a adio de WITH KEY:
TYPES: BEGIN OF line,
kunnr
TYPE kunnr,
Numero do cliente
land
TYPE land,
Pais
name1 TYPE name1_gp,
Name
ort01
TYPE ort01_gp,
Cidade
pstlz
TYPE pstlz,
Codigo postal
END OF line.
DATA: itab02 TYPE STANDARD TABLE OF line.
DATA: wa
LIKE LINE OF itab02.
SELECT * FROM kna1 INTO CORRESPONDING FIELD OF TABLE itab02.
SORT itab02 BY kunnr.
READ TABLE itab02 WITH KEY kunnr = 12345
INTO wa BINARY SEARCH.
Com a instruo READ acima voc especifica a chave de pesquisa para ler a
linha da tabela interna. Voc poderia usar qualquer componente ou campo da linha da
tabela para pesquisar a tabela. O contedo da primeira linha encontrada da tabela
interna que corresponda chave de pesquisa transferido para a workarea. A
instruo READ acima fornece apenas um registro, mesmo que mais de um registro
coincida com a chave de pesquisa. Voc tem que usar a instruo LOOP se voc
quiser todos os registros correspondentes chave de busca.
Tabela interna padro est sujeitas a pesquisa sequencial com a instruo
READ acima. Com a adio BINARY SEARCH a busca binaria em vez de sequencial,
que melhora consideravelmente o desempenho da pesquisa em tempo de execuo.
141
Para a busca binaria a tabela interna padro deve ser ordenada pela chave de
pesquisa em ordem crescente; caso contrario, o resultado da pesquisa no encontrara
a linha correta ou registro. O algoritmo de busca depende do tipo da tabela se voc
no especificar a adio do BINARY SEARCH.
DICAS: a adio de BINARY SEARCH valida somente para tabela interna padro. A
tabela interna padro deve ser ordenada para usar a adio do BINARY SEARCH:
142
Voc processa linhas de tabela interna em sequencia, usando a instruo
LOOP e ENDLOOP. Isto permite que voc processe varias linhas na tabela interna
sequencialmente uma aps outra. A estrutura 7.16 um cdigo de exemplo para a
instruo LOOP:
TYPES: BEGIN OF itab_ty,
matnr TYPE matnr,
werks TYPE werks_d,
END OF itab_ty.
DATA: itab_lt TYPE STANDARD TABLE OF itab_ty.
DATA: wa LIKE LINE OF itab_lt.
SELECT matnr werks FROM marc INTO TABLE itab_lt.
LOOP AT itab_lt INTO wa.
WRITE: / wa-matnr, wa-werks.
ENDLOOP.
Estrutura 7.16 sintaxe para a instruo LOOP.
A instruo LOOP acima l uma linha de cada vez e transfere essa linha da
tabela para a workarea. O objeto de dados da workarea wa deve ser compatvel com o
tipo de linha da tabela interna. Voc pode usar a adio TRANSPORTING para
especificar o campo a ser transferido para a workarea. As linhas da tabela interna
esto disponveis dentro de um bloco LOOP, e voc pode executar diversas operaes
nas diversas linhas dentro da instruo de LOOP.
Outras variaes da instruo LOOP so:
LOOP AT itab_lt WHERE matnr = 12345 INTO wa.
WRITE: / wa-matnr, wa-werks.
ENDLOOP.
E
LOOP AT itab_lt FROM 1 TO 10 INTO wa.
WRITE: / wa-matnr, wa-werks.
ENDLOOP.
Na primeira sintaxe voc tem a opo para especificar a condio de seleo
das linhas da tabela a partir da tabela interna, especificando a condio WHERE para a
instruo LOOP. Esta instruo busca sequencialmente cada linha da tabela para a
condio especificada com a condio WHERE. Com a segunda sintaxe para a
instruo LOOP mencionada acima, voc pode limitar o numero para linhas da tabela a
ser processada, especificando o FROM idx1 ou TO idx2 para a instruo LOOP.
Voc tambm pode executar o nvel de controle de processamento no bloco da
instruo para a instruo LOOP. As instrues de controle para o nvel de controle de
processamento esto dentro das instrues AT e ENDAT. O bloco da instruo dentro
da instruo AT e ENDAT executado no intervalo de controle. O intervalo de controle
acontece quando a estrutura de controle, para a tabela interna, muda.
143
A sintaxe abaixo mostra a instruo intervalo de controle quando a tabela
interna estiver sendo corrida por um loop.
LOOP at itab INTO wa.
AT FIRST.
.......
ENDAT.
AT NEW comp1.
.......
ENDAT.
AT END OF comp1.
.......
ENDAT.
AT LAST.
......
ENDAT.
ENDLOOP.
Para que o nvel de controle de processamento funcione corretamente, as
seguintes regras devem ser seguidas:
144
Este cdigo busca para as linhas da tabela interna, a chave dos componentes
que correspondem aos valores chaves da workarea e, em seguida, modifica a linha da
tabela interna selecionada. Com a adio TRANSPORTING, apenas o campo
especificado aps a instruo TRANSPORTING so modificados.
Voc pode modificar varias linhas da tabela interna com a seguinte sintaxe:
MODIFY itab FROM wa TRANSPORTING fld1 fld2
WHERE material = 12345.
Isto modifica todas as linhas da tabela interna que satisfazem a condio da
logica WHERE. Com a adio de TRANSPORTING apenas os componentes ou campos
especificados aps a instruo TRANSPORTING so modificados.
A instruo MODIFY a seguir modifica a linha da tabela interna com o INDEX
idx usando o contedo da workarea wa. A workarea deve ser compatvel com o tipo de
linha da tabela interna.
MODIFY itab FROM wa INDEX idx.
A estrutura 7.17 mostra o uso para a instruo MODIFY dentro de um bloco de
LOOP. A instruo MODIFY modifica a linha da tabela interna atual dentro da instruo
LOOP com o contedo da workarea wa.
TYPES: BEGIN OF line,
material TYPE matnr,
plant
TYPE werks_d,
fld1
TYPE I,
fld2
TYPE I,
END OF line.
DATA: itab TYPE STANDARD TABLE OF line.
DATA: wa TYPE line.
LOOP AT itab INTO wa.
Wa-fld1 = 100.
Wa-fld2 = 200.
MODIFY itab FROM wa.
ENDLOOP.
ou
LOOP AT itab INTO wa.
Wa-fld1 = 100.
Wa-fld2 = 200.
MODIFY itab FROM wa TRANSPORTING fld1 fld2.
ENDLOOP.
145
Estrutura 7.17 uso da instruo MODIFY dentro da instruo LOOP.
Deletando Linhas De Uma Table Interna
Voc usa a instruo DELETE para excluir linhas de uma tabela interna. Esta
a sintaxe da instruo DELETE.
DELETE itab INDEX idx.
Esta instruo exclui a linha da tabela com o INDEX idx.
Esta sintaxe a seguir exclui mltiplas linhas da tabela interna especificada pelo
range do ndice ou pela expresso logica especificada pela adio do WHERE:
DELETE itab FROM idx1 TO idx2.
Ou
DELETE itab FROM WHERE material = 12345.
A instruo a seguir exclui mltiplas linhas de uma tabela interna ordenada.
Esta instruo compara a tabela e exclui os duplicados adjacentes. Faz sentido usar a
instruo a seguir contanto que o contedo da tabela interna esteja ordenado.
DELETE ADJACENT DUPLICATES FROM TABLE itab
COMPARING material plant.
Ou
DELETE ADJACENT DUPLICATES FROM TABLE itab.
A sintaxe DELETE a seguir exclui linhas da tabela interna com base na chave
da tabela.
DELETE TABLE itab WITH TABLE KEY
Material = 12345 plant = abcd.
Ordenao De Tabela Interna
Voc usa a instruo SORT para ordenar a tabela interna. Voc s pode
ordenar tabela interna padro ou uma tabela interna hash usando a instruo SORT.
Voc no pode usar a instruo SORT para uma tabela interna ordenada porque por
padro j esta ordenada.
Abaixo temos a sintaxe para a instruo SORT:
SORT itab.
SORT itab ASCENDING.
SORT itab DESCENDING.
A instruo acima ordena a tabela interna em ordem crescente por sua chave.
Por padro, o sistema ordena a tabela interna em ordem crescente, se voc no
146
especificar a adio ASCENDING ou DESCENDING. Outras sintaxes para a instruo
SORT so:
SORT TABLE itab BY material plant DESCENDING.
SORT TABLE itab AS TEXT.
A primeira instruo ordena a tabela interna pelo campo material e plant em
ordem decrescente. A segunda instruo SORT, com a adio AS TEXT, ordena os
elementos tipos de caracteres de acordo com a configurao atual do texto de
ambiente especificado no registro mestre. Sem a adio AS TEXT a tabela interna
ordenada de acordo com a codificao especificada pela plataforma de hardware.
147
Terminologia Importante
Voc deve saber como definir tabela interna em um programa e estar ciente
dos diferentes tipos de tabelas internas, como as tabelas internas padro, ordenada,
hash.
Questes Prticas
As questes praticas abaixo o ajudaram a avaliar o seu entendimento para este
tpico. As questes mostradas so semelhantes s encontradas no exame de
certificao, mas nenhuma destas questes ser encontrada no exame, mas elas
permitem a voc o conhecimento do assunto. Selecione as respostas corretas e em
seguida verifique a integridade de suas respostas na seo seguinte, lembre-se voc
deve marcar toda as respostas corretas e apenas as respostas corretas para receber o
credito para a questo.
1
148
E tabelas hash so acessadas por uma chave nica.
3
A instruo OCCURS necessria para definir uma tabela interna com header
line.
A Verdadeiro
B Falso
voc pode usar a instruo APPEND para preencher uma tabela interna
ordenada.
A Verdadeiro
B Falso
voc no pode usar a instruo INSERT para inserir linhas em uma tabela
interna padro.
A Verdadeiro
B Falso
Voc pode usar uma header line para programar orientado a objeto.
A Verdadeiro
B Falso
Tabela interna no pode ter uma estrutura profunda ou aninhada em seu tipo
de linha.
A Verdadeiro
B Falso
A instruo READ com a adio BINARY SEARCH para uma tabela interna
ordenada melhora o desempenho.
A Verdadeiro
B Falso
10 A instruo READ com a adio BINARY SEARCH no pode ser usado para
uma tabela interna ordenada.
A Verdadeiro
B Falso
11 A adio BINARY SEARCH no pode ser usada com a instruo READ para
uma tabela hash.
A Verdadeiro
149
B Falso
12 Qual das seguintes afirmaes verdadeira:
A Uma tabela ordenada pode ter uma chave nica ou no nica.
B Uma tabela padro deve ter sempre uma chave nica.
C Uma tabela hash deve ter sempre uma chave de tabela nica.
13 Voc pode esvaziar o corpo da tabela interna itab com uma header line
usando a instruo CLEAR itab.
A Verdadeiro
B Falso
14 Voc pode modificar uma tabela interna utilizando a instruo UPDATE.
A Verdadeiro
B Falso
15 tabelas internas tambm podem ser modificadas depois de executar a
instruo READ com a adio ASSIGNING.
A Verdadeiro
B Falso
16 Voc no pode usar a instruo SORT para uma tabela interna ordenada.
A Verdadeiro
B Falso
Respostas E Explicaes
1 resposta correta: B
Existem trs tipos de tabelas internas: padro, ordenada e hash.
2 resposta correta: A, E
A tabela padro pode ser acessada por ndice ou chave. A tabela hash
acessada pela chave nica, e usa o algoritmo de hash para acessar os registros da
tabela. A tabela ordenada pode ser acessada pelo ndice ou chave. A tabela ordenada
pode ter uma chave nica ou no nica.
3 resposta correta: B
Voc precisa da adio OCCURS para declarar uma tabela interna com header
line, mas voc pode definir uma tabela interna com header line usando a adio WITH
HEADER LINE.
4 resposta correta: B
150
Tabelas ordenadas no devem ser preenchidas com a instruo APPEND. Em
vs disso, devem ser preenchidas com a instruo INSERT. Voc no pode usar a
instruo APPEND porque a tabela armazenada ordenadamente. APPEND sempre
adiciona o registro como a ultima entrada na tabela, portanto para inserir registros em
uma tabela ordenada utilize a instruo INSERT.
5 resposta correta: B
Voc pode usar a instruo INSERT para inserir registros em uma tabela
interna padro, o registro ser adicionado ao final da tabela.
6 resposta correta: B
Voc no pode usar uma tabela interna com header line em programao
orientada a objeto.
7 resposta correta: B
Voc no pode definir uma tabela interna com header line que tem uma
estrutura profunda ou aninhada.
8 resposta correta: B
Voc pode definir tabelas internas com tipos de linhas de estruturas profunda
ou aninhada, mas a tabela interna deve ser sem header line.
9 resposta correta: B
BINARY SEARCH no tem qualquer efeito sobre uma tabela ordenada. Tabela
interna ordenada sempre usa busca binaria para ler seus registros com a instruo
READ.
10 resposta correta: B
Voc pode usar BINARY SEARCH com a instruo READ para tabelas
ordenadas, mas ele no tem nenhum efeito.
11 resposta correta: A
Voc no pode usar BINARY SEARCH com a instruo READ para tabelas
internas hash. Tabelas internas hash requer uma chave nica para ler os registros da
tabela interna, e elas usam um algoritmo de hash para encontrar os registros na
tabela.
12 resposta correta: A, C
A tabela interna padro pode ter uma chave no nica, e a tabela interna hash
deve ter sempre uma chave nica.
A tabela interna ordenada pode ter uma chave nica e no nica.
13 resposta correta: B
151
Voc no pode limpar uma tabela interna com header line com a instruo
CLEAR itab. Para esvaziar o corpo da tabela voc tem que usar a instruo CLEAR
itab[].
14 resposta correta: B
A instruo UPDATE no pode ser usada para modificar a tabela interna. Voc
usa a instruo MODIFY para modificar a tabela interna.
15 resposta correta: A
Voc pode modificar a tabela interna usando a instruo ASSIGNING porque
ASSIGNING so pontos atribudos para o endereo de memoria para o registro ou
campos da tabela.
16 resposta correta: A
A tabela interna ordenada ordenada por padro, e por isso no pode usar a
instruo SORT para ordenar a tabela interna ordenada.
Leve Consigo
Voc precisa entender a sintaxe para criar a tabela, ser capas de definir um tipo
de dado, e usa-lo para definir uma tabela interna no programa. Voc precisa entender
a diferena entre tabelas internas com header line e sem header line, e voc deve
saber como definir esta tabela no programa. Voc tambm deve estar ciente que a
tabela interna com header line no suportada na programao ABAP orientada a
objeto. Voc deve ser capas de diferenciar os diferentes tipos de tabelas como a
padro, ordenada e hash e ser capas de usa-las em um programa. Voc tambm deve
ser capas de preencher a tabela interna com a instruo APPEND e INSERT e ser
capas de realizar varias operaes em uma tabela interna. Voc deve saber a sintaxe
para atualizar, modificar, excluir e ler registros individuais para uma tabela interna.
Lembre-Se
Agora voc deve ser capas de descrever tabela interna e seu uso na linguagem
de programao ABAP. Agora voc deve saber as palavras chaves e sintaxe para
definir e acessar a tabela interna. Voc deve ser capas de usar tabelas internas no
programa para armazenar dados temporariamente e ser capas de processar os dados
da tabela.
Tabela 7.1 repete o conceito chave de forma resumida.
CONCEITO CHAVE
Tabela Interna
DEFINIO
Uma Tabela interna um programa local, variveis de
objeto de dados e usado para armazenar vrios registros
de dados estruturados temporariamente na memoria.
152
Tipos de tabela interna
Sumario
Voc aprendeu em detalhes o conceito para tabelas internas, os diferentes
tipos de tabelas internas, e as operaes validas em cada tipo de tabela interna. Voc
deve saber a sintaxe para definir a tabela interna, acessar a tabela interna e processar
os registros na tabela interna. Este conhecimento permitira que voc facilmente passe
este tpico no exame de certificao.
153
A arquitetura de trs camadas usada pela SAP fornecida para o usurio que
interage com a camada de apresentao. Esse por sua vez controla a lgica de
negcio rodando em um servidor de aplicao, o qual deve recuperar e armazenar
dados no servidor de banco de dados. O sistema projetado neutro de banco de
dados, o que significando que isso funciona com diferentes bancos de dados.
Normalmente da sua perspectiva, a subcamada de banco de dados no uma
preocupao principal.
Nesse capitulo, ns vamos falar brevemente sobre modelagem de dados, ou
projeto de tabelas. Em seguida veremos o mtodo de recuperar dados de um banco
de dados e o eficiente uso do banco de dados (uso do SQL). Por ltimo, o captulo
cobre as Unidades Lgicas de Trabalho (LUW Logic Unit of Work), objetos de
bloqueio, e tarefas de atualizao.
Cada um desses tpicos coberto separadamente e seguido de exerccios
prticos e da soluo dos exerccios.
Imagine que voc quer desenvolver uma nova transao que usa tabelas do
banco de dados fornecidas pelo SAP e de novas tabelas de banco de dados nicas
para o seu processo. Essa nova transao vai acessar os dados das tabelas padres
do banco de dados SAP e atualizar as novas tabelas de banco de dados na interao
do usurio atravs de mltiplos passos de tela. A transao ser usada por mltiplos
usurios simultaneamente e precisa fornecer um estado consistente quando confirmar
(Committing) mudanas no banco de dados.
A transao fornecer acesso aos registros que esto sendo atualizados a um
nico usurio, mas as tabelas de banco de dados que no esto sendo atualizadas
permitiro que mltiplos usurios vejam os dados simultaneamente. Devido
complexidade do processo, isso requer mltiplas telas para reunir os dados para uma
eventual atualizao atravs de mltiplas tabelas de banco de dados.
O nmero de registros que na verdade so atualizados ou enviados durante o
processo pode variar de zero a muitos milhares por vez. Voc foi incumbido de
fornecer uma transao de resposta rpida para o usurio e manter a consistncia do
banco de dados. Isso significa que se alguma atualizao falhar, voc deve ser capaz
de voltar ao ltimo estado consistente antes de qualquer mudana feita.
154
Essa parte do exame testar seu conhecimento de Open SQL e dos diferentes
mecanismos de fazer mudanas. Os pontos que voc precisa entender dessa seo
incluem:
Modelagem De Dados
Quando voc desenvolve aplicaes de negcio, parte do mundo real deve ser
representada como dados. Uma unidade de negcio representa uma entidade, e
essas entidades existem em uma relao umas com as outras e so previstas no
modelo de dados subjacente. Isso chamado de modelo entidade relacionamento
(MER - ERM entity relationship model).
Voc usa esse modelo de dados para implementar definies de tabelas
apropriadas incluindo o relacionamento umas com as outras no dicionrio ABAP.
Ativando a definio de tabela no dicionrio ABAP, automaticamente cria-se uma
tabela de banco de dados equivalente no banco de dados.
155
156
tabela do banco de dados. Elementos de dados so normalmente usados para
descrever campos individuais. Os elementos de dados definem o uso semntico e
fazem referncia ao domnio por seus atributos tcnicos. Em termos de programao,
voc enderea elementos de dados em programas ABAP com a clusula TYPE. Isso
permite que voc defina tipos elementares que tem o atributo de tipo de um elemento
de dados particular. Esses atributos de tipo incluem um dos tipos de dados do
dicionrio ABAP reconhecidos, o tamanho do campo, e, quando apropriado, o nmero
de casas decimais. Mais informaes sobre o dicionrio ABAP podem ser encontradas
no captulo 10.
Bem como a lista de campos, a tabela transparente contem outros atributos
que so necessrios para criar uma tabela com o mesmo nome no banco de dados e
descrever totalmente suas propriedades:
A chave primria para a tabela do banco de dados (campos chave).
As propriedades tcnicas requeridas pelo banco de dados para criar a tabela
de banco de dados (o tamanho e a frequncia de acesso esperado).
Configuraes para tecnologias que podem melhorar o desempenho quando
acessar tabelas de banco de dados (isso inclui ndices secundrios e tipos de
buffer).
157
Voc pode obter informaes detalhadas no modelo de dados SAP
(apresentao grfica, registro de dados, e campos) no ambiente de desenvolvimento
SAP usando a transao SAP SD11.
Recuperao De Dados
Todo banco de dados relacional tem seu prprio SQL nativo. Esse SQL nativo
infelizmente especfico do banco de dados. Portanto, se voc escreve um programa
ABAP usando SQL nativo, voc perde muitos das funcionalidades standard de um
sistema SAP, por exemplo, acesso a dados utilizando o buffer do servidor de
aplicao, o uso da interface de banco de dados, verificao de sintaxe, e estatstica
das ferramentas de desempenho.
SAP, para superar essa restrio fornece o Open SQL, que um SQL
independente de banco de dados definido pela SAP standard para ABAP. As clusulas
do Open SQL so convertidas dinamicamente para as instrues da SQL nativa
correspondentes do sistema de banco de dados corrente e so, portanto,
independente de banco de dados. Isso permite um acesso uniforme aos dados,
independentemente do sistema de banco de dados instalado.
Antes de programar acesso direto tabela de banco de dados, voc deveria
buscar reusar componentes que fornecem um processo de leitura. Quatro tipos de
componentes de reuso encapsulam o acesso a banco de dados:
158
Nota: Somente os tipos de campo tem que combinar com o alvo. Os nomes da
estrutura alvo no so levados em conta. Se voc quiser usar uma varivel de
estrutura como um alvo que tem o mesmo nome da lista alvo, mas tem uma estrutura
diferente (campos adicionais ou campos em diferente ordem), voc acrescentaria a
clusula CORRESPONDING FIELDS. Isso preenche somente os campos de mesmo
nome na rea alvo. Novamente os tipos de campos correspondentes devem ser os
mesmos. Caso contrrio, uma converso ocorre e possvel que os dados
incompletos sejam repassados para o alvo.
As vantagens dessa variao so:
A estrutura alvo no tem que estar alinhada a esquerda ou na mesma ordem
da lista de campos.
fcil de manter, por que a ampliao da lista de campos ou da estrutura do
alvo no requer que outras mudanas sejam feitas no programa, enquanto
houver um campo na estrutura que tenha o mesmo nome (e de preferncia o
mesmo tipo).
159
As desvantagens da variao que isso requer mais trabalho do sistema e,
portanto, no executa to rapidamente.
Voc usa o lao SELECT para ler vrias linhas da tabela do banco de dados
em um programa. Voc usa a clusula WHERE para determinar quais linhas so
lidas para a estrutura alvo e processadas usando o bloco de declarao dentro
do corpo do lao. Voc tambm pode conectar mltiplas condies lgicas na clusula
WHERE atravs do uso do AND ou OR.
O banco de dados fornece os dados para a interface de banco de dados do
servidor de aplicao em blocos chamados pacotes. Os dados so ento copiados
para a rea alvo, linha por linha, para processamento.
Voc usa INTO TABLE para copiar os dados diretamente em uma tabela
interna ao invs de linha por linha. O desempenho disso maior do que processar
linha por linha porque a tabela interna preenchida em blocos, no por linhas.
Tambm, porque esse carregamento de array (fetch array) preenche a tabela interna
toda em um passo, o SELECT no mais um lao (a segunda variao que no um
lao) e no requer um ENDSELECT. Finalmente, o carregamento de array substitui o
contedo da tabela interna. Se ao invs disso voc quiser adicionar linhas, voc deve
usar a clusula APPEND TABLE.
Desempenho Do Acesso Ao Banco De Dados
Em muitos casos, os acessos ao banco de dados ocupam a maior parte do
tempo de execuo de uma aplicao ABAP. Para no sobrecarregar o sistema e
manter o tempo de espera para o usurio o menor possvel, voc dever prestar
ateno especial aos requisitos do tempo de execuo em relao ao acesso ao
banco de dados em particular. Vrias tecnologias esto disponveis no Open SQL que
te possibilitam aperfeioar o tempo de execuo.
Cada banco de dados gerencia os registros de dados em uma tabela de banco
de dados baseado no contedo dos campos chave. Se seu acesso a tabela do banco
de dados restrito para todos ou pelo menos aos primeiros campos chave atravs do
uso da clusula WHERE, o banco de dados pode retornar os dados requisitados muito
rpida e eficientemente. Entretanto, se voc tentar acessar dados em uma tabela com
os campos que no so parte da chave da tabela (campos no chave), o banco de
dados no pode usar seus ndices dos registros para um acesso rpido. No pior dos
casos, toda a tabela do banco de dados deve ser pesquisada pela entrada requisitada.
Isso definido como uma busca sequencial. Isso pode produzir uma longa espera pelo
acesso ao banco de dados.
Se voc acessa a mesma busca por campo no chave frequentemente, voc
pode criar um ndice secundrio que define os campos contidos nessa busca por
campo no chave para melhorar o desempenho. Se o otimizador de banco de dados
encontrar um jeito mais eficiente de obter os dados requisitados atravs de um ndice
diferente que combina melhor na clusula WHERE, ele ira usar o ndice secundrio
para buscar os dados.
160
Um ndice secundrio um ndice criado alm do index primrio de uma tabela
de banco de dados. Pode ser criado ou verificado usando o boto INDEXES... na
barra de ferramentas da aplicao quando mostrar uma tabela tanto na transao
SE11 como na SE80.
Se uma chave secundria existente usada no banco de dados, acessos
dependem de uma funo no sistema de banco de dados conhecida como DataBase
Optimizer (aperfeioador de banco de dados). No SQL Open, no possvel ou
necessrio especificar explicitamente o uso de um ndice secundrio na clusula
SELECT.
161
H tambm adies para a instruo SELECT que sempre fazem os dados
serem lidos diretamente a partir do banco de dados. Voc deve cuidar com possveis
problemas de desempenho que podem resultar do uso desse tipo de acesso em
tabelas com buffer. Se voc achar que necessrio usar uma instruo que ignora o
buffer, voc deve tentar minimizar o nmero de vezes que a instruo usada.
Frequentemente voc obrigado a ler dados de mltiplas tabelas de banco de
dados. O uso de uma juno de tabelas (join) normalmente fornece o melhor
desempenho. Voc deve especificar trs coisas quando define uma juno de tabelas:
Tabelas de juno descrevem quais tabelas de banco de dados devem ser
acessadas.
Uma condio de juno descreve como os registros de duas ou mais tabelas
so conectadas.
Colunas de juno descrevem quais colunas das tabelas de juno devem ser
retornadas.
H duas opes para implementar uma juno de tabela.
Voc cria uma viso (view) de banco de dados no dicionrio ABAP que
corresponde a juno das tabelas e seleciona dela no programa.
Voc pode implementar uma juno voc mesmo usando a instruo SELECT
em seu programa (juno ABAP um exemplo mostrado na lista 8.2). Em tempo de
execuo, o sistema dinamicamente gera uma query de banco de dados apropriada
na interface de banco de dados.
Dica: Uma viso de banco de dados uma viso da tabela de banco de dados
relevante e no contm dados redundantes.
SELECT * FROM
sflight
LEFT JOIN scarr
ON sflight~carrid = scarr~carrid
INTO CORRESPONDING FIELDS OF TABLE gt_sflight
WHERE sflight~carrid IN s_carrid
AND sflight~connid IN s_connid
AND sflight~fldate IN s_fldate
Lista 8.2 Um Join ABAP em uma tabela
Alm da instruo SELECT, o Open SQL tambm contm as instrues
INSERT, DELETE, UPDATE, e MODIFY. Voc s deveria usar estas ltimas instrues
com um entendimento dos conceitos das transaes SAP como discutido abaixo; caso
contrrio voc pode causar inconsistncia de dados.
Uma ou mais linhas podem ser processadas usando comandos SQL.
Comandos que processam vrias linhas normalmente fornecem um melhor
desempenho do que um processa uma linha por vez. A exceo a modificao de
dados em massa usando MODIFY.
162
Todo comando Open SQL atualiza o cdigo de retorno do sistema. O valor de
retorno (SY-SUBRC) ser 0 (zero) se o comando foi executado com sucesso, e o
campo do sistema SY-DBCNT retornar o nmero de linhas para o qual o comando foi
realizado. Qualquer cdigo de retorno diferente de zero indica que o comando no foi
executado com sucesso; o significado exato do cdigo depende do comando atual.
163
ponto atravs do uso do rollback do banco de dados. Um rollback de banco de dados
volta o banco de dados para o status que ele tinha antes do LUW de banco de dados
corrente. Voc deveria usar essa funo de rollback de banco de dados para restaurar
o status consistente do banco de dados se um erro ocorreu.
164
Cuidado: Com os Commits de banco de dados acima, voc no pode fazer
mudanas que pertencem a uma Unidade Lgica de Trabalho SAP em um passo de
tela (um passo de tela um programa processado depois de uma tela). Isso colocaria
estes passos em Unidades Lgicas de Trabalho de banco de dados separados,
violando a Unidade Lgica de Trabalho SAP.
Isso no um problema trivial. Normalmente uma transao SAP tem muitas telas ou
uma nica tela com vrias subtelas na forma de abas (traduo livre), e sempre que
h uma mudana* de tela (de toda ou parte da tela), um commit de banco de dados
implcito disparado. Voc dever ser capaz juntar as entradas do usurio que formam
a Unidade Lgica de Trabalho SAP de diferentes telas e fazer uma mudana na
Unidade Lgica de Trabalho do banco de dados.
* mudana tanto no sentido de mudar de uma tela para outra, ou de uma aba para
outra, quanto de alteraes das subtelas que integram uma tela. (Introduzido durante a
traduo para tentar melhorar o entendimento do assunto)
A arquitetura de trs camadas significa que muitos usurios com computadores
pessoais de baixo custo (de baixo desempenho) podem ser direcionados para um
pequeno nmero processos de trabalho (work process) de alto desempenho que so
consideravelmente mais caros, no servidor de aplicao. Distribuindo as requisies
dos usurios para processo de trabalho significa que clientes individuais no nvel do
servidor de aplicao so atribudos a um processo de trabalho por certo perodo.
Depois do processo de trabalho ter processado a entrada do usurio em um passo de
tela, o usurio juntamente com o contexto do programa removido do processo de
trabalho, assim liberando-o para outro usurio.
Com a arquitetura de trs camadas, o nmero de usurios de banco de dados
consideravelmente menor que o nmero de usurios ativos no sistema. Isso tem um
efeito positivo sobre o comportamento do banco de dados. Realizar o processo de
trabalho antes de cada tela de usurio garante que as aes do usurio, normalmente
mais duradouras do que o processo de sistema corrente, no bloqueie nenhum
processo de trabalho no servidor de aplicao e particularmente no servidor de banco
de dados. Isso produz uma carga menor nos recursos do banco de dados. Somente
quando o usurio tiver completado o processamento da tela, requisitando que o
processamento do programa continue, que o contexto do programa revertido
(program context rolled back in).
Enfileiramento e Desenfileiramento
Se vrios usurios esto competindo pelo acesso s mesmas tabelas, voc
precisa encontrar um jeito de sincronizar o acesso para proteger a consistncia dos
dados. Bloqueios um jeito de coordenar a competio de acesso a um recurso. Cada
usurio pede um bloqueio antes de acessar dados crticos para prevenir que outros
modifiquem os dados antes que ele finalize o uso. importante obter o bloqueio o
mais tarde possvel e liber-lo o mais rpido possvel para no criar um gargalo para
outros usurios desnecessariamente.
165
O Sistema Gerenciador de banco de dados SGBD (Database Management
System - DBMS) bloqueia fisicamente as linhas da tabela que so lidas com a
inteno de ser modificada (SELECT SINGLE <f> FROM <dbtab> FOR UPDATE). Isso
um bloqueio de banco de dados. Outros usurios que quiserem acessar os registros
bloqueados devem esperar at que o bloqueio fsico seja liberado. O bloqueio
permanece at o fim de um LUW de banco de dados, disparado pelo Commit do
banco de dados, quando o SGBD libera todos os bloqueios que foram definidos
durante o LUW de banco de dados.
Em um sistema SAP, isso significa que cada bloqueio de banco de dados
liberado sempre que uma tela mostrada porque a modificao da tela dispara um
Commit implcito de banco de dados. Bloqueios de banco de dados no so
suficiente se os dados so coletados em todas as telas e so pedidas para manter
bloqueadas.
Para manter um bloqueio atravs de uma srie de telas, o sistema SAP tem
uma tabela global de bloqueio no servidor de aplicao que usado para definir
bloqueios lgicos para as entradas das tabelas (veja a figura 8.2). A tabela de bloqueio
e o processo de trabalho de enfileiramento que gerencia a tabela de bloqueio esto
em um nico servidor de aplicao definido do sistema SAP. O servidor que contem
esse processo de trabalho de enfileiramento conhecido de instancia central. Todas
as requisies de bloqueio lgico de um sistema SAP, independentemente de qual
servidor de aplicao fez a requisio, roda nesse sistema, num nico processo de
trabalho.
Tambm possvel usar bloqueios lgicos para travar entradas de tabelas que ainda
no existem no banco de dados. Isso til quando voc cria uma nova linha da tabela,
e no possvel com o bloqueio de banco de dados.
Voc define um bloqueio lgico chamando o mdulo de bloqueio. Esse
particular mdulo de funo de tabelas relacionadas criado automaticamente quando
voc ativa um objeto de bloqueio de tabelas relacionadas. Quando voc chama o
mdulo de bloqueio, bloqueios lgicos so definidos para as entradas nas respectivas
tabelas.
Voc mantm objetos de bloqueio no dicionrio ABAP. O namespace do cliente
para objetos de bloqueio ou EY ou EZ. Quando voc cria um objeto de bloqueio,
voc especifica a tabela cujas entradas sero bloqueadas mais tarde. Isso
conhecido como tabela primria ou base (primary ou basis). Contudo, voc pode
especificar outras tabelas que tem um relacionamento de chave estrangeira com uma
tabela primria, que so conhecidas como tabelas secundrias.
O mdulo de bloqueio criado automaticamente pelo sistema contm
parmetros de entrada para os parmetros de bloqueio. Os parmetros de bloqueio
so usados para comunicar com o mdulo de bloqueio com os quais os registros
sero logicamente bloqueados e consistem dos campos chaves de uma tabela
primria. Quando o objeto de bloqueio ativado com sucesso, o sistema gera um
mdulo de funo para criar ou enfileirar um bloqueio e um mdulo de funo para
liberar ou tirar da fila um bloqueio. Os mdulos de funo so nomeados
166
ENQUEUE_<nome do objeto de bloqueio> e DEQUEUE_<nome do objeto de
bloqueio>. Um bloqueio lgico definido quando voc chama o mdulo de funo de
enfileiramento, mas voc s pode criar um bloqueio se no houver nenhum conflito de
bloqueio de entrada. O mdulo de bloqueio produz uma exceo se um bloqueio no
puder ser obtido.
Fig. 8.2 Bloqueio de dados atravs de unidades logicas de trabalho banco de dados
Dependendo da tcnica usada para a atualizao do banco de dados, um
programa de aplicao pode precisar apagar as entradas de bloqueio que ela criou
(para uma atualizao direta difcil interpretao) ou t-los apagado
automaticamente (durante uma tarefa de atualizao). Se um programa que cria
entradas de bloqueio encerrado, os bloqueios so liberados automaticamente
(implicitamente). O encerramento de um programa ocorre com a produo de uma
mensagem de um tipo A ou X, com a execuo de uma instruo LEAVE PROGRAM e
LEAVE TO TRANSACTION, ou se um usurio entra um /n no campo de comando
(command field).
No fim de um programa de tela ou quando passar para outro registro, voc
chama o mdulo de funo DEQUEUE para liberar as entradas de bloqueio na tabela
de bloqueio. Ao contrrio do mdulo de funo ENQUEUE, DEQUEUE no dispara
nenhuma exceo. Se voc quiser liberar todos os bloqueios, voc pode usar o
mdulo de funo DEQUEUE_ALL.
Se voc chamar um mdulo de bloqueio com um parmetro de bloqueio
definido com seu valor inicial ou no especificado, o sistema interpretar isso com um
valor genrico e bloquear todas as linhas baseada no valor do parmetro que voc
forneceu. O parmetro do cliente uma exceo a essa regra. Se o cliente no
167
fornecido quando a funo ENQUEUE for chamada, o bloqueio somente se aplica a
execuo corrente do cliente. Se o cliente foi especificado, o bloqueio somente
aplicado ao cliente. Se o cliente foi especificado como um espao, o bloqueio
aplicado a todos os clientes.
Voc pode substituir o modo padro do bloqueio do mdulo de bloqueio
especificado no objeto de bloqueio usando o parmetro MODE_<nome da tabela>. O
parmetro X_<parmetro de bloqueio> permite que voc bloqueie registros de tabela
que contem um valor inicial correspondente ao parmetro de bloqueio.
Significado
O bloqueio permanece no programa que definiu-o e eliminado novamente
pelo programa. Isso usado para atualizaes diretas (in line updates)
O bloqueio passado para o programa de atualizao ou programas
chamados (Esse o padro). Esse usado por atualizaes atravs de um
programa de atualizao.
Dois bloqueios so definidos. Um se mantm com o programa e deve ser
apagado no programa. O outro passado ao programa de atualizao. Esse
pedido sempre que uma tarefa de atualizao disparada por uma
atualizao parcial, mas o registro deve permanecer bloqueado no programa
para mais atualizaes.
Tabela 8.1 Parmetros de Escopo.
168
Modo de Bloqueio
Significado
Extensivo - bloqueio para mudana de dados (bloqueio
E
exclusivo acumulativo - accumulative exclusive lock)
Exclusivo - bloqueio para modificao de dados (bloqueio
X
exclusivo de escrita - exclusive write lock)
Compartilhado - bloqueio para exibio de dados protegidos
S
( bloqueio compartilhado - shared lock)
Tabela 8.2 Modos de bloqueio.
169
fornecido com um X, previne que o parmetro name se comporte de uma maneira
genrica ao invs de um bloqueio com valores em branco.
DICA: Lembre-se que nesse caso o seu programa deve apagar as entradas de
bloqueio. Para liberar a entrada de bloqueio voc executa o mdulo de funo de
desbloqueio DEQUEUE_<objeto de bloqueio>, que pertence ao objeto de bloqueio, ou
ao modulo de funo geral de desbloqueio DEQUEUE_ALL, que libera todas as
entradas de bloqueio.
170
Perform On Commit
Voc pode encapsular atualizaes de banco de dados de um programa de tela
para execuo pelo uso da tcnica da sub-rotina especial PERFORM <subroutine>
ON COMMIT. Isso registra a sub-rotina especificada para a execuo, mas a subrotina no ser executada at que o sistema alcance a prxima instruo COMMIT
WORK. Se voc encapsular as atualizaes de banco de dados em uma sub-rotina,
eles podem ser separados pela lgica de programa e processados no final da Unidade
Lgica de Trabalho (LUW).
Uma sub-rotina registrada com o PERFORM ON COMMIT pode ser registrada
muitas vezes, mas somente executa uma vez por LUW na ordem em que foi
registrada. Se voc encadeia chamados PERFORM ON COMMIT aps a verso 4.6
um erro de tempo de execuo ser disparado. A instruo COMMIT WORK executa
todas as sub-rotinas registradas para serem executadas, na ordem em que elas foram
registradas, uma aps a outra, e ento disparado um commit de banco de dados
aps processar todas as sub-rotinas registradas. Se voc encontrar um erro durante o
processamento de uma sub-rotina registrada, voc pode terminar o processamento de
dentro da sub-rotina com o tipo de mensagem A, e o status do banco de dados
consistente anterior ser restaurado.
As sub-rotinas chamadas com PERFORM ON COMMIT no pode ter
interferncia. Elas devem funcionar com dados globais e usaro os valores que os
objetos de dados contem naquele ponto quando a sub-rotina realmente executada.
Mdulos de Atualizao
Tcnicas de atualizao permitem que voc separe o programa de tela do
usurio usado para aceitar entradas do usurio e o programa que atualiza os dados no
banco de dados. Figura 8.3 mostra os passos que ocorrem quando o programa usa
uma requisio de atualizao:
1. O programa de tela recebe os dados modificados pelo usurio e escreve-os em
uma tabela de log especial usando uma entrada que chamou a requisio.
Depois o programa de atualizao escreve os dados contidos na tabela de logs
para o banco de dados. O programa de dialogo pode escrever vrias entradas
para a tabela de log. As entradas na tabela de log representam a LUW.
2. O programa de tela fecha o pacote de dados (LUW) e informa ao sistema Basis
que o pacote existe para atualizao ao criar um cabealho para o registro de
requisio.
3. Um programa Basis l os dados associados com o LUW da tabela de log e
fornece-os para o programa de atualizao.
4. O programa de atualizao aceita o dado transferido e atualiza o banco de
dados com as entradas da requisio.
5. Se a atualizao tiver sucesso, um programa Basis apaga todas as entradas
para essa Unidade Logica de trabalho da tabela de log. Se um erro ocorrer, as
entradas permanecem na tabela de log, embora elas sejam marcadas como
incorretas. O usurio que disparou a atualizao normalmente (o
171
comportamento controlado por certos parmetros do sistema) informado por
uma mensagem expressa do erro.
Voc implementa o programa de atualizao como um mdulo de funo
especial conhecido como mdulo de atualizao. Mdulos de atualizao somente tem
uma interface para a transferncia de dados atravs dos parmetros IMPORTING e
TABLE. Esses devem ser tipados usando campos de referncia ou estruturas.
Voc pode criar uma requisio chamando o respectivo mdulo de funo de
atualizao no programa de tela usando a adio IN UPDATE TASK. Essa instruo
escreve o mdulo de funo e os dados de entrada com uma requisio de exceo e
no executa o mdulo de funo imediatamente.
172
Ambos os mtodos apagam todas as flags de atualizao anteriores, apagam
todos os bloqueios definidos previamente, descarta todas as atualizao feitas na
LUW SAP corrente, e descarta todas as rotinas de formulrios registradas usando
PERFORM ON COMMIT.
Se voc precisa disparar um Rollback de banco de dados no mdulo de
atualizao, voc emite uma mensagem do tipo A. O processamento da LUW SAP
corrente ser terminado, e a entrada de log pertencente LUW SAP marcada como
contendo um erro. A mensagem de encerramento tambm inscrita no log
Lista 8.4 mostra o chamado de um mdulo do sistema SAP NetWeaver 7.0.
Note o IN UPDATE TASK junto com nome do mdulo de funo.
CALL FUNCTION WRFRULES_WRITE_DOCUMENT IN UPDATE TASK
EXPORTING
Objected = objected
Tcode = tcode
Utime = utime
Udate = udate
Username = username
Planned_change_number = Planned_change_number
Upd_twfns = Upd_twfns
Upd_twfsa = Upd_twfsa
TABLES
Xtwfns = xtwfns
Ytwfns = ytwfns
Xtwfsa = xtwfsa
Ytwfsa = ytwfsa
Lista 8.4 Chamado de Mdulo de Atualizao.
173
174
atualizao e no precisam ser liberados explicitamente no mdulo de atualizao. A
liberao do bloqueio no fim da tarefa de atualizao sempre ocorre
independentemente do sucesso da tarefa.
Atualizaes assncronas permitem que programas de tela e atualizao rodem
separadamente. O programa de tela escreve requisies de modificao na tabela de
log e com um COMMIT WORK fecha uma LUW. A tarefa de atualizao iniciada pelo
COMMIT WORK e processa a requisio de modificao. Isso deixa que o programa
de tela continue sem ter que esperar que a atualizao se complete. Um processo de
trabalho especial de atualizao roda o programa de atualizao.
Atualizaes assncronas so teis em transaes onde a atualizao do
banco de dados pode tomar um longo tempo e onde importante que o tempo de
resposta de tela ao usurio, em outras palavras, o desempenho percebido,
importante. Voc achar que atualizaes assncronas so tcnicas padro usada em
programao de tela.
Uma atualizao sncrona disparada pela instruo COMMIT WORK AND
WAIT. Nesse caso, o programa de tela espera pela atualizao terminar antes que o
processamento do programa continue. Voc deveria usar o modo de atualizao
sncrona se o resultado da atualizao necessrio para mais processamento ou
encerramento do programa de tela. Voc determina o sucesso do processamento de
uma atualizao sncrona pela observao do campo de sistema SY-SUBRC quando
usar COMMIT WORK AND WAIT. Enquanto espera pelo trmino da atualizao
sncrona, o programa de tela est em um estado reversvel. Isso significa que o
processo de trabalho liberado para mais usos. Quando completa-se a atualizao, o
sistema atribui o programa de tela para um processo de trabalho de tela livre para
continuar o processamento.
Com atualizaes locais, tudo roda em um nico processo de trabalho. A
funo de atualizao esta rodando no mesmo processo de tela usado pelo programa
de tela. O processamento do programa de tela continua depois que a atualizao
completa-se. Essa outra forma de atualizao sncrona. Para ter mdulos de
atualizao rodando localmente, voc deve usar a instruo SET UPDATE TASK
LOCAL
antes de escrever a requisio. Quando as requisies so fechadas
com COMMIT WORK, essas atualizaes so processadas no mesmo processo de
trabalho de tela. Depois que a atualizao local processada com sucesso, um
Commit de banco de dados iniciado explicitamente, e o programa de tela continua.
Se um erro ocorre, e um dos mdulos de atualizao gera uma mensagem de
encerramento, o sistema executa um Rollback de banco de dados automtico para
descartar as mudanas na LUW corrente, e o programa de dilogo encerrado com a
exibio da mensagem de encerramento.
Quando voc est em um modo de atualizao local, modificaes no so
escritas na tabela do banco de dados VBLOG, mas ao invs, so mantidas na
memria. Isso faz essa atualizao mais rpida que atualizaes sncronas e
assncronas; porm, devido isso ter um uso exclusivo de um processo de trabalho, s
apropriado em modo Bach. O SET UPDATE TASK LOCAL somente possvel se
175
no criar nenhuma requisio para a LUW corrente e somente tem efeito at o
prximo COMMIT WORK.
H dois tipos de mdulos de atualizao: V1 e V2. O tipo do mdulo de
atualizao determina o seu modo de processamento. Todas as requisies V1 no
programa de tela so executadas com independentes LUW de banco de dados.
Somente se so executadas com sucesso que as requisies V2 so processadas.
Essas tambm so executadas com LUW de banco de dados independentes.
Dica: Cada vez que uma modificao de dados feita no banco de dados, o banco de
dados fisicamente bloqueia do registro at o fim da LUW de banco de dados corrente,
tanto para Commit quanto para Rollback do banco de dados. O mesmo verdadeiro
se voc est lendo com SELECT... FOR UPDATE. Porm, o acesso de leitura de um
registro no permitido no permitido para bloqueio fsico, e muitos programas
executam acesso de leitura sem bloqueios. Voc deveria tentar manter esses
bloqueios de banco de dados o menor tempo possvel por motivos de desempenho.
Voc deveria aderir s seguintes regras quando programar modificaes diretas e
mdulos de atualizao:
Criar novas entradas de tabela por primeiro. Assim seus bloqueios de banco de
dados produzem o menor impacto nos outros usurios.
Voc deveria executar a atualizaes de tabela que no so crticas para o
desempenho. Generalizando, essas tabelas so acessadas simultaneamente
por relativamente poucos usurios.
Voc deveria modificar recursos centrais no sistema o mais tardar, se possvel,
em uma LUW de modo que o bloqueio de banco de dados somente impacte
outros pelo menor tempo possvel.
176
Questes Prticas
As questes abaixo ajudaro voc a avaliar seu entendimento sobre os tpicos.
As questes mostradas so de natureza similar quelas encontradas no exame de
certificao. Enquanto que nenhumas dessas questes sero encontradas no prprio
exame, elas permitem que voc revise seu conhecimento do assunto. Selecione a
resposta correta e ento verifique por completo suas respostas na seo de soluo
que segue. Lembre-se que voc deve selecionar todas as respostas corretas e
somente respostas corretas para receber crditos pela questo.
COMMIT WORK
ROLLBACK WORK
A exibio de uma tela SAP
A exibio de uma mensagem de caixa de dialogo tipo E
A exibio de uma mensagem de caixa de dialogo tipo A
ENQUEUE_<objeto de bloqueio>
DEQUEUE_<objeto de bloqueio>
O chamado de um mdulo de funo
Uma CALL TRANSACTION
Um SUBMIT
Um /n no campo de comando
4. Que aes liberam um objeto de bloqueio (com o valor padro para _SCOPE)?
A.
B.
C.
D.
E.
F.
G.
H.
COMMIT WORK
ROLLBACK WORK
A exibio de uma tela SAP
A exibio de uma mensagem de caixa de dilogo tipo E
A exibio de uma mensagem de caixa de dilogo tipo A
ENQUEUE_<objeto de bloqueio>
DEQUEUE_<objeto de bloqueio>
Um chamado de mdulo de funo
177
I. Um CALL TRANSACTION
J. Um SUBMIT
K. Um /n no campo de comando
5. Como voc pode implementar uma Juno (JOIN) de tabela de outro jeito alm de
usar a instruo JOIN.
6. Os dados em buffer em cada servidor de aplicao so:
A. Sempre a mesma
B. Nunca a mesma
C. Depende do usurio
7. A estrutura alvo da instruo SELECT requer o nome dos campos para
corresponder com as colunas selecionadas e ser estar na mesma ordem
justificada a esquerda.
A. Verdadeiro
B. Falso
8. Quando um ENDSELECT no necessrio para um SELECT?
A.
B.
C.
D.
E.
A. Verdadeiro
B. Falso
10. O Open SQL no permite que voc especifique um ndice secundrio durante um
SELECT.
A. Verdadeiro
B. Falso
11. Voc deveria sempre por em buffer as tabelas de banco de dados que contm
menos do que 100 registros.
A. Verdadeiro
B. Falso
12. Armazenar dados em buffer pode aumentar a velocidade de acesso em at 100
vezes quando comparado a ler os dados do banco de dados.
178
A. Verdadeiro
B. Falso
13. Todo comando Open SQL permite o processamento em mltiplas linhas.
A. Verdadeiro
B. Falso
14. O parmetro _WAIT de um objeto de bloqueio espera pelo bloqueio para ter
sucesso.
A. Verdadeiro
B. Falso
15. recomendado por COMMIT WORK na tarefa de atualizao.
A. Verdadeiro
B. Falso
16. possvel de PERFORM <subrotina> ON COMMIT em uma tarefa de atualizao.
A. Verdadeiro
B. Falso
17. A ordem correta para o uso de um objeto de bloqueio :
A. Ler os dados, definir o bloqueio, modificar os dados, liberar o bloqueio.
B. Definir o bloqueio, ler os dados, modificar os dados, liberar o bloqueio.
C. Definir o bloqueio, ler os dados, liberar o bloqueio, modificar os dados.
18. Tarefas de atualizaes locais so mais rpidos porque eles esto em um mesmo
processo de trabalho.
A. Verdadeiro
B. Falso
19. Tarefas de atualizao V1 so sempre no reinicializveis, enquanto que tarefas
de atualizao V2 so sempre reinicializveis.
A. Verdadeiro
B. Falso
179
1. Resposta correta: B
Alm dos vrios tipos de tarefas de atualizao, tambm possvel usar
atualizaes diretas (inline update) para fazer mudanas no banco de dados.
2. Resposta correta: B
Se voc encontrar um erro durante o processamento de uma LUW SAP, seria
possvel retornar a um estado consistente do banco de dados que existia antes do
inicio da LUW SAP. Isso somente possvel se a LUW SAP colocada em uma LUW
de banco de dados.
3. Respostas corretas A,B,C,D,E,I,J,K
Um bloqueio de banco de dados liberado quando o banco de dados executa
um Rollback ou Commit. Quando voc executa uma instruo ABAP ROLLBACK
WORK e COMMIT WORK, voc explicitamente implementa um Rollback ou Commit
do banco de dados. H tambm instancias quando um Commit do banco de dados
disparado implicitamente. Commit de banco de dados implcitos so sempre iniciados
sempre que houver chamador RFC sncrono ou assncrono (a questo refere-se a
uma chamada normal de funo, no a Chamada de Funo Remota), ou quando
voc usar a instruo CALL TRANSACTION<cdigo da transao> ou
SUBMIT<programa>.
4. Respostas corretas: A, B, E, G, K
Se um bloqueio enfileirado com um _scope igual a 2 (padro), o bloqueio
liberado depois de voc executar a instruo ABAP ROLLBACK WORK e COMMIT
WORK, ou depois do encerramento do programa. O encerramento do programa
produzido depois da mensagem do tipo A ou X, com a execuo da instruo LEAVE
PROGRAM e LEAVE TO TRANSACTION, ou se o usurio entra com /n no campo de
comando. O bloqueio definido tambm pode ser liberado pelo chamado do mdulo
de funo DEQUEUE ou do mdulo de funo DEQUEU_ALL.
5. Resposta Correta: Uma viso de banco de dados
H dois tipos de implementar uma Juno (JOIN) de tabelas. Uma criar uma
viso de banco de dados no dicionrio ABAP que corresponde a juno de tabela e
usa-se essa viso. O outro definir a juno diretamente no seu programa como um
ABAP Join.
6. Resposta correta: C
Buffer de tabela SAP existe separadamente para cada servidor de aplicao, e
h uma quantidade limitada de espao em buffer em cada um. Como os dados so
acessados pelos usurios, os dados que esto contidos no buffer de dados mudam
conforme os dados mais novos substituem os dados mais antigos. Isso significa que
muito rara a ocorrncia de combinao do contedo de buffer atravs servidores de
aplicao.
7. Resposta correta: B
180
No necessrio para o nome dos campos corresponderem s colunas
selecionadas. O que necessrio que o tamanho e o tipo do campo correspondam.
8. Respostas corretas: C, D e E
Um ENDSELECT no necessrio porque essa instruo SELECT na faz loop.
Uma instruo SELECT SINGLE retorna somente um registro, e ambos INTO
TABLE e APPENDING TABLE preenche o destino em um modo de bloco. Devido a
nenhuma dessas instrues um SELECT em loop, o ENDSELECT no necessrio.
9. Resposta correta: B
O otimizador de banco de dados determina quais ndices usar. Em muitas
circunstancias, baseado nos campos fornecidos na clusula WHERE, e quais
ndices existem para a tabela de banco de dados.
10. Resposta correta: A
Isso correto. O Open SQL no permite que voc fornea nenhuma direo
diretamente a subcamada de banco de dados.
11. Resposta correta: B
A deciso de por em buffer tabelas de banco de dados mais complexa que
uma simples determinao baseada no tamanho esperado da tabela. Novamente a
tabela ideal pequena, lida frequentemente, raramente modificada, e normalmente
acessada diretamente com seus campos chaves. Entretanto, a deciso de por em
buffer uma tabela de banco de dados deveria ser feita por desenvolvedores ABAP
experientes em consulta ao administrador do sistema.
12. Resposta correta: A
Uma tabela que armazenada em buffer pode ter a velocidade de acesso
aumentado entre 10 e 100 vezes comparada a sua leitura do banco de dados. A
ressalva para a velocidade, entretanto, que para o buffer ser usado, dever ser uma
instruo SELECT que especifica a chave completa em buffer com seu equivalente
somente.
13. Resposta correta: A
Todo comando Open SQL permite processar em mltiplas linhas.
14. Resposta correta: B
O parmetro _WAIT define se uma requisio de bloqueio deve ser repetida se
a primeira tentativa falhar. No espera pelo bloqueio para tornar-se disponvel.
15. Resposta correta: B
Voc no deveria usar explicitamente a instruo COMMIT WORK ou
ROLLBACK WORK nos mdulos de atualizao.
16. Resposta correta: A
181
O objetivo em uma tarefa de atualizao executar modificaes as tabelas
centrais o mais tarde possvel em uma Unidade Lgica de Trabalho (LUW). Para
conseguir isso, voc pode usar a tcnica do PERFORM COMMIT na atualizao. Se
voc encapsular as modificaes nas tabelas centrais como forma de rotinas em um
grupo de funo apropriado de um mdulo de atualizao e ento chamar a rotina de
um mdulo de atualizao usando o PERFORM ON COMMIT, a rotina no ser
executada at que o ltimo mdulo de atualizao seja processado.
17. Resposta correta: B
Essa ordem deve ser natural. Obtm o bloqueio ento voc sabe que os dados
no esto sendo modificados em outros lugares e, portanto, so consistentes, l os
dados para comear com o estado consistente corrente, faz suas modificaes, e
finalmente libera o bloqueio para deixar os dados disponveis para outros que podem
estar esperando pelos dados.
18. Resposta correta: B
Atualizaes locais so mais rpidas porque eles no fornecem atualizaes a
tabela de log. Por causa da menor atividade do banco de dados, o processo mais
rpido. Entretanto, se houver um problema, no h um jeito de saber quais dados
foram perdidos porque no h nenhuma requisio na tabela de logs.
19. Respostas correta: B
Mdulos V1 podem ser reiniciveis ou no. Tarefas V2 so sempre reiniciveis.
Lembre-Se
Agora voc deveria ser capaz de acessar campos de uma tabela de banco de
dados eficientemente. Voc tambm deveria ser capaz de descrever a diferena entre
um SAP LUW e uma LUW de banco de dados. Voc deveria tambm entender por que
tarefas de atualizao precisam ser encapsuladas. Voc deveria entender os
diferentes tipos de instrues SELECT do Open SQL e qual melhora ou piora o
desempenho de acesso.
Revisando
Voc precisar um profundo entendimento dos diferentes tipos de estratgias
de atualizaes, Commit e Rollback. Voc deve tambm entender o acesso a dados
eficiente. Voc deve entender quando escolher um tipo de estratgia de atualizao e
porque essa a melhor soluo. Voc deve entender o conceito de unidades lgicas
de trabalho e como o SAP LUW e LUW de banco de dados trabalham juntos. A tabela
8.3 mostra os conceitos chave para as instrues SQL e estratgias de atualizao.
CONCEITO CHAVE
SELECT
Atualizaes
encapsuladas
DEFINIO
Define como recuperar dados de uma ou vrias tabelas de
banco de dados eficientemente
Define qual tipo de atualizao assncrona ou sncrona pode
ser executada
182
Define como o Commit e o Rollback fornece um banco de
dados consistente
Define como bloqueios devem ser usados para sincronizar o
Bloqueios
acesso de dados dos usurios
Tabela 8.3 Reviso de conceito chave.
Commit e Rollback
Dicas
Como uma porcentagem do teste de certificao, esse assunto um dos trs
principais com mais questes. Um entendimento de como otimizar o acesso a dados e
um entendimento de tarefas de atualizao para programas de dilogo necessrio
para a poro do teste coberto nesse captulo.
A experincia mais prtica que voc tem com esse assunto, por mais simples
que voc vai achar as questes nessa parte do exame de certificao. Entretanto,
tcnicas ineficientes de programao inevitavelmente levam a respostas incorretas
nessa parte do teste. Voc deve entender porque uma tcnica deve ser usada ao
invs de outra.
Resumo
Voc deve ter dominado os vrios tipos de instrues Open SQL e suas
diferentes variaes. Voc deve entender as tarefas de atualizao, bloqueio de
registro, e unidades lgicas de trabalho e como elas interagem com o usurio, servidor
de aplicao, e banco de dados. Voc deve entender como manter os dados em um
estado consistente no banco de dados. Seu conhecimento desses tpicos permitir
voc completar com sucesso essa parte do exame de certificao.
183
184
Este captulo fornece a voc um entendimento bsico de como o desenvolvimento
de objetos organizado. Ns iremos discutir como estes objetos so agrupados dentro
de change requests (comumente chamado de transporte) e movidos ao longo do
sistema. Ns iremos abordar os diferentes tipos de programas, identificando suas
similaridades e diferenas. Ns iremos discutir a maioria dos blocos de eventos e o
bsico de Dynpros (frequentemente apenas referenciado como screens), selection
screens, e caixas de dilogos modais (ver Captulo 12, Telas clssicas, e Captulo 13,
Selection Screens, tambm). Tambm iremos tratar sobre o uso de verificao de
autorizao e os diferentes tipos de unidades de modularizao, novamente
identificando ambas suas similaridades e diferenas. Por ltimo, iremos falar sobre o
uso da declarao MESSAGE na execuo do programa.
Cada um destes tpicos tratado separadamente, e eles so seguidos por
exerccios prticos com a soluo para os exerccios.
Cenrio Do Mundo Real: Voc foi chamado para liderar um novo projeto de
implementao de um novo grupo de programas para ser utilizado no sistema SAP de
sua companhia. de sua responsabilidade juntar uma equipe de desenvolvimento e
produzir o subsistema.
Examinando os requisitos do subsistema voc v que h um nmero de
transaes de tela e vrias transaes de relatrio. Alguns dos dados so sensveis,
ento ambos, transaes de tela e transaes de relatrio, iro precisar de
verificaes de autorizao separadamente para determinar se o uso permitido para
a viso dos dados. Nos programas de tela tambm devero ser verificadas as
autorizaes para criar ou alterar os dados. Se o usurio no est autorizado a
executar a operao, a mensagem deve ser mostrada.
Depois de ter a equipe de desenvolvimento alocada, voc vai precisar organizar o
desenvolvimento para que tudo seja produzido ao mesmo tempo para go-live. Devido
complexidade do acesso aos dados e a quantidade de verificaes de autorizao, a
deciso foi tomada para encapsular o acesso dentro de componentes globais
reutilizveis das tabelas. Isto tambm ir proporcionar a opo de utilizar buffer de
dados durante as transaes de tela.
185
Por este ser um exame de certificao ABAP, sero testados seus conhecimentos
gerais de ABAP e este ambiente o mais importante objetivo deste teste. O exame de
certificao dar mais peso ao material deste captulo que em todos os outros tpicos
deste exame. Isto significa que ter alta porcentagem de questes relacionadas a este
captulo que de outros.
Relembrando Conceitos-Chave
Com certeza voc tipicamente precisa desenvolver programas ABAP como um
desenvolvedor ABAP. Voc, portanto, precisa entender e estar preparado para
executar os seguintes tipos de tarefas quando desenvolver programas ABAP:
Desenvolvimento Organizado
Projetos de desenvolvimento comeam em um ambiente de desenvolvimento. Os
objetos de desenvolvimento editados ou criados em um projeto precisam ento ser
transportados para o sistema subsequente quando o projeto finalizado.
No comeo de um projeto de desenvolvimento, normalmente o gerente de projeto
cria uma Change Request, em que identifica quem estar trabalhando no projeto, em
qualquer Transport Organizer ou diretamente no ambiente de trabalho ABAP. Ento ele
cria uma tarefa para cada trabalhador deste projeto ou desenvolvedor com a Change
Request. Em alguns casos, quando o desenvolvimento limitado, pode haver apenas
uma simples tarefa em apenas uma Change Request.
Como um objeto de desenvolvimento editado ou criado, por exemplo, um
programa ou elemento de dados, voc liga este objeto Change Request. O objeto,
portanto, entrou em sua tarefa. Todos os objetos do repositrio que voc trabalha
durante o projeto de desenvolvimento so juntados em sua tarefa. Quando voc
completa sua tarefa de desenvolvimento, voc executa a verificao de sintaxe,
ativao e teste antes de voc lanar a tarefa em sua Change Request. Uma vez que
o projeto de desenvolvimento est terminado e todas as tarefas so lanadas, a
Change Request lanada, mas esta no pode ser lanada antes das tarefas (ver
Figura 9.1).
186
187
ABAP. A principal funo do programa ABAP na camada de aplicao o
processamento e a formatao dos dados da camada de dados e isso interage com a
entrada do usurio pela camada de apresentao.
ABAP prov acesso integrado de banco de dados a mltiplos sistemas de banco
de dados por meio do uso de Open SQL. Isto otimiza o acesso ao banco de dados
pelo uso do SAP buffering e prov tabelas internas para processamento de dados
tabular dentro do programa. Isto usa o conceito de Processo de Transao Online
(Online Transaction Processing OLTP) integrado dentro do ambiente runtime do
ABAP, habilitando mltiplos usurios a acessar o banco de dados ao mesmo tempo
usando o SAP LUW. Isto fornece acesso externo para outros ambientes de programas
com o Remote Function Call (RFC). O ABAP tambm tem uma interface integrada
para XML.
ABAP suporta ambos os procedimentos e modelos de programao orientada a
objetos baseados em sub-rotinas, mdulos de funo, e mtodos de classes.
Apropriada para a linguagem criada em torno de negcios internacionais, a linguagem
textual manipulada independentemente da linguagem de programao. ABAP
fornece para a separao de linguagem especfica componentes de programas pelo
cdigo fonte, e eles so carregados durante a execuo do programa baseado no
idioma de logon do usurio. ABAP suporta code pages, single-byte, double-byte, e
depois da verso 6.10, tambm Unicode.
Cada programa ABAP comea com uma declarao introdutria. As funes de
um programa ABAP so implementadas em blocos de processamento. Os blocos de
processamento so definidos usando declaraes de modularizao. A ordem dos
blocos de processamento irrelevante para a execuo do programa. Seguindo a
declarao inicial, todos os programas contm uma sesso de declarao global onde
voc implementa definies de objetos de dados (por exemplo: variveis, estruturas e
tabelas internas) e declarao de dados que so visveis em todo o programa.
Enquanto que, a ordem das definies individuais e declaraes geralmente no
importam voc deve ter em mente que uma declarao ABAP pode apenas referenciar
a definies e declaraes existentes. Portanto, eles apenas devem ser definidos
antes que eles possam ser declarados e declarados antes de serem usados. Por
exemplo, uma definio de um tipo local deve ocorrer antes que este seja usado no
programa, normalmente como uma declarao de dados ou como parte de uma
interface para uma unidade de modularizao.
Por ser uma linguagem que tem se desenvolvido ao longo do tempo, o ABAP
contm muitas declaraes obsoletas ou formas de declarao que foram sobrepostas
com construes de linguagem melhoradas, mas no foram eliminadas, para garantir
compatibilidade de cdigo. Objetos ABAP impedem a utilizao da maioria destas
declaraes obsoletas. Em geral voc no deveria utilizar estas adies em novos
programas, mas voc pode encontra-los em programas antigos.
A declarao inicial deve ser a primeira declarao no programa, depois os
programas include so adicionados durante a gerao do programa. Ela existir
apenas uma vez no programa.
As declaraes de programa introdutrias incluem:
188
189
ambiente ABAP. A criao de um grupo de funes tambm gera automaticamente os
includes do programa principal incluindo o top include contendo a declarao
FUNCTION-POOL. O nome completo do programa para um grupo de funes dentro
do repositrio consiste do prefixo SAPL e o nome do pool de funo (grupo de funo).
Todas as declaraes que seguem na declarao de introduo do programa ou
aquelas que so includas como programas include so tratados como um nico
programa pelo compilador ABAP.
Cada programa ABAP dividido por blocos de processamento. Cada declarao
acessvel de um programa ABAP que no permanece na sesso de declarao global
fica em um bloco de processamento.
Os blocos de processamento possveis so:
Procedures
o Mtodos
o Mdulos de funo
o Sub-rotinas
Mdulos de dilogo (exclusivamente por Dynpros)
Blocos de eventos
190
mostra um exemplo de exceo baseada em classe. Um procedimento simples
apenas pode ser usado um tipo no ambos.
MESSAGE e008(38) WITH FOOBAR
RAISING table_cannot_be_loaded.
Estrutura 9.3 Exemplo de uma exceo baseada em MESSAGE
RAISE EXCEPTION TYPE cx_sy_dynamic_osql_semantics
EXPORTING textid =
Cx_sy_dynamic_osql_semantics=>unknown_table_name
Token = FOOBAR.
Estrutura 9.4 Exemplo de uma exceo baseada em Classe
Quando voc decide usar passagem por referncia ou passagem por valor para
um parmetro formal, voc apenas compara a performance relativa e robustez para
cada tipo de transferncia:
TYPE i.
191
Lv_num2
TYPE i.
Lv_num3
TYPE i.
Lv_num4
TYPE i.
PERFORM pass_by_example
USING lv_num1 lv_num2
CHANGING lv_num3 lv_num4.
ENDFORM.
pass_by
FORM pass_by_example USING
value(p_by_value1)
TYPE i.
p_by_ref1
TYPE i.
CHANGING value(p_by_value2) TYPE i.
P_by_ref2
TYPE i.
ADD 1 TO: p_by_value1, p_by_ref1, p_by_value2, p_by_ref2.
BREAK-POINT.
ENDFORM.
pass_by_example
Estrutura 9.5 Cdigo de exemplo
192
193
194
chamados. Veja a Estrutura 9.6, um exemplo explcito e, Estrutura 9.7, um
exemplo implcito.
*PAI
AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.
START-OF-SELECTION.
PERFORM selection.
END-OF-SELECTION.
PERFORM e05_layout_build USING gs_layout.
wg. Parameters
* Call ABAP/4 List Viewer
CALL FUNCTION REUSE_ALV_HIERSEQ_LIST_DISPLAY
EXPORTING
i_callback_program
= g_repid
* i_callback_pf_status_set
=
* i_callback_user command
=
is_layout
= gs_layout
it_fieldcat
= gt_fieldcat[]
* it_excluding
=
It_special_groups
= GT_SP_GROUP[]
* It_sort
* It_filter
* Is_sel_hide
* I_screen_start_column
=0
* I_screen_start_line
=0
* I_screen_end_column
=0
* I_screen_end_line
=0
I_default
= g_default
I_save
= g_save
Is_variant
= g_variant
It_events
= gt_events[]
* IT_EVENT_EXITS
=
I_TABNAME_HEADER
= g_tabname_header
I_tabname_item
= g_tabname_item
Is_keyinfo
= gs_keyinfo
* is_print
=
* IMPORTING
* e_exit_caused_b y_caller
=
TABLES
t_outtab_header
= gt_scarr
t_outtab_item
= gt_spfli.
Estrutura 9.6 Exemplo de vrios bloco de eventos.
*&-------------------------------------------------------*& Report Z_HELLO_WORLD_SIMPLE
*&
*&-------------------------------------------------------*&
*&
*&--------------------------------------------------------
195
Report z_hello_world_simple.
Write / Hello World.
Estrutura 9.7 Exemplo de um START-OF-SELECTION implcito
GET node
O evento de relatrio GET define um bloco de evento cujo resultado
iniciado pelo ambiente de execuo ABAP, se o banco de dados lgico ao qual
ligado prover dados na workarea node. GET node tambm controla o
comportamento do banco de dados lgico. Os blocos de eventos depois de
GET so implementados internamente como procedimentos. Instrues
declarveis no bloco de eventos GET criam dados locais. Blocos de eventos
GET chamam o evento START-OF-SELECTION e so seguidos pelo bloco de
eventos END-OF-SELECTION.
END-OF-SELECTION
Neste bloco de eventos de relatrio, todos os dados lidos pelo banco de
dados lgico podem ser processados. Em um programa executvel sem um
banco de dados lgico, no h necessidade de implementar o bloco de evento
END-OF-SELECTION.
AT SELECTION-SCREEN
Esta instruo define blocos de eventos que so iniciados pelo ambiente
de execuo ABAP durante o processamento de seleo de tela. O evento AT
SELECTION-SCREEN o formulrio bsico de um todo de eventos que
ocorrem enquanto a tela de seleo processada. A tela de seleo padro
em um programa executvel ou o banco de dados lgico ligado a esta,
automaticamente chamado entre os eventos INICIALIZATION e START-OFSELECTION. Voc pode definir blocos de eventos para estes eventos em seu
programa para alterar a tela de seleo ou processar entradas do usurio.
Eventos de tela de seleo ocorrem imediatamente antes de abrir a tela de
seleo, durante o PBO da tela de seleo (AT SELECTION-SCREEN
OUTPUT), aps as aes de um determinado usurio na tela de seleo
exibida, por exemplo, ON VALUE REQUEST ou ON HELP REQUEST, ou antes
de processar o evento START-OF-SELECTION durante a execuo. Eles
ajudam no processamento da tela de seleo no programa ABAP ou fornecem
validao para a tela de seleo.
TOP-OF-PAGE
Este evento de criao de lista iniciado pelo ambiente de execuo
ABAP durante a criao da lista. Isso ocorre quando uma nova pgina
iniciada, imediatamente antes da primeira linha em uma nova pgina a ser
mostrada. Todas as listas mostradas que ficam no bloco de eventos ficam
abaixo do cabealho de pgina padro da lista. Voc no pode mostrar mais
linhas que so disponveis na pgina dentro do bloco de eventos, e a instruo
NEW-PAGE ignorada dentro deste bloco de eventos.
END-OF-PAGE
Este evento de criao de lista iniciado pelo ambiente de execuo
ABAP durante a criao de uma lista bsica, se houver linhas reservadas no
contador LINE-COUNT da instruo de inicializao para um rodap de pgina.
Uma exibio de lista que fica no bloco de eventos fica nesta rea. Instrues
output que excedem a rea reservada sero ignoradas.
196
AT LINE-SELECTION
Este evento de listagem que iniciado pelo ambiente de execuo ABAP,
realizado pelo cursor de tela na lista de linhas e voc seleciona uma funo
usando o cdigo de funo Pick (pressionado a tecla F2 ou dar um duplo-clique
em uma linha da lista). Este foi muitas vezes usado para fornecer capacidade
drill-down ou detalhes adicionais. Durante o processo de seleo de linhas
alguns campos de sada ou linhas da lista com o comando Hide so retornadas
para seus respectivos objetos de dados globais.
Este evento de lista de tela executado pelo ambiente de execuo ABAP,
fornecendo o cursor de tela.
AT USER-COMMAND
Este evento de listagem iniciado pelo ambiente de execuo ABAP se,
durante a exibio da lista de tela, uma funo com um cdigo de funo
propriamente definido for escolhido.
Nota
Embora o sistema de execuo ABAP no faa diferenciao entre
upper e lowercase, tornou-se habitual escrever palavras-chave e seus
197
Nota:
Esta forma simples apenas representa uma forma simplificada da sintaxe e no
oferece melhora na performance. O sistema de execuo ABAP processa cada
uma das instrues individualmente. A forma curta faz com que tenha mais sentido
nas declaraes, por exemplo, TYPES, DATA, SELECT-OPTIONS,
PARAMETERS, CLEAR, MOVE, ADD, ou WRITE.
198
199
ideal que as unidades de modularizao que so chamadas no usem o objeto
de dados do programa chamador diretamente. Tambm no se devem alterar os
objetos de dados da unidade de modularizao do programa chamador diretamente.
Este princpio conhecido como Encapsulamento de Dados. Isto uma importante
tcnica em desenvolvimento transparente, facilitando a manuteno do cdigo fonte.
Parmetros so usados para trocar dados entre o cdigo chamador e a unidade
de modularizao. O nmero total de parmetros em uma unidade de modularizao
chamado pela interface ou assinatura. Parmetros so diferenciados caso sejam
usados para passar dados entro a unidade de modularizao (parmetros
IMPORTING) ou retornando dados da unidade de modularizao (parmetros
EXPORTING) ou para passar dados dentro e retornar da unidade de modularizao
(parmetros CHANGING).
Sub-Rotinas ABAP
Uma sub-rotina ABAP :
p_name
p_type
TYPE progname
200
CHANGING p_l_wb_request.
DATA: l_scope_objects
TYPE rinfoobj,
l_scope_objtypes
TYPE rseytypes,
l_object_type
TYPE seu_objtype,
l_object_name TYPE rsfind.
L_object_type = p_type.
L_object_name = p_name.
CALL METHOD
Cl_wb_infosystem=>create_where_used_list_request
EXPORTING
P_object_type
= p_object_type
P_object_name
= l_object_name
P_scope_objects
= l_scope_objects
P_scope_object_types
= l_scope_objtypes
IMPORTING
P_wb_request
= p_l_wb_request
EXCEPTIONS
Execute_in_batch
=1
Action_cancelled
=2
Error_occured
=3
OTHERS
= 4.
ENDFORM.
create_request
Estrutura 9.9 A sub-rotina (rotina FORM)
Com a adio de RAISING, excees baseadas em classe podem ser passadas,
de forma que so iniciadas na sub-rotina ou propagadas para a sub-rotina pelo
ambiente de execuo ABAP ou por uso da declarao RAISE EXCEPTION, mas no
so manipuladas em um bloco TRY.
Tabelas internas devem ser passadas com USING ou CHANGING. Outra
vantagem de usar um destes que voc pode passar tabelas internas e at tabelas
standard, por exemplo, ordenadas ou hashed. Isto recomendado quando todos os
parmetros de todos os tipos de unidades de modularizao forem tipados.
fornecido checagem de sintaxe durante a ativao e torna mais rpida a execuo.
201
programa, mas no so executados diretamente). A Tabela 9.2 mostra os tipos de
componentes que podem ser colocados em um grupo de funo.
Componente
Cuidado
Objeto de dados
Sub-rotina
Telas
Propsito
Parmetro Import
Parmetro Export
Parmetros
Changing
Parmetro Tables
(obsoleto)
Exceptions
202
203
204
Adicionado aos mtodos, classes tem outros componentes. Eles contm objetos
de dados globais conhecidos como atributos. Da mesma forma que objetos de dados
globais de um grupo de funes pode ser acessado por todos os mdulos de funo
no grupo, todos os mtodos podem acessar os atributos de suas classes.
Com grupos de funo, os objetos de dados globais no so visveis fora do grupo
de funo. Este o encapsulamento de dados em um grupo de funo. Atributos
tambm so normalmente encapsulados dentro da classe e podem tambm apenas
ler ou alterar usando mtodos da mesma classe. Contudo, em contraste aos mdulos
de funo, classes tambm permitem voc especificar atributos visveis ao usurio da
classe. A distino tambm feita entre atributos pblicos e privados.
Esta distino aplicada no apenas a atributos, mas tambm a mtodos,
enquanto que, todos os mdulos de funo podem ser chamados de fora do grupo de
funo, apenas mtodos pblicos esto disponveis fora da classe. Mtodos privados
podem ser chamados por outros mtodos da mesma classe e so assim similares a
sub-rotinas (rotinas de formulrio) com um grupo de funo.
A maior diferena entre classes globais e grupos de funo que um grupo de
funo com estes objetos de dados globais apenas podem ser carregados uma vez ao
contexto do programa para cada programa principal, mas os dados da classe global
podem ser carregados como muitos tipos como voc desejar. Este conhecido como
instanciao mltipla de classes. Na prtica, isto significa que os valores de objetos de
dados globais so os mesmos para todos os mdulos de funo chamados, porque
ns temos apenas uma cpia de cada um dos objetos de dados de um grupo de
funo. Uma classe pode ter vrias instncias, cada qual armazenada
separadamente no contexto do programa do programa principal. Cada instncia pode
tambm ter valores de atributos diferentes. Um mtodo pode ver diferentes valores
nos atributos, dependendo da instancia de que voc est chamando.
Atributos que podem ter diferentes valores para cada instncia no so
conhecidos como atributos de instncia para distinguir eles dos atributos estticos (ou
atributos da classe). Atributos estticos existem apenas uma vez para cada programa,
independentes de como muitas instncias de classe so geradas. Se mtodos
instanciados acessam um atributo esttico, todas as instncias veem o mesmo valor.
Observe os checkboxes Pass Value e Optional (que no exemplo so abreviados
como P... e O...), que controlam se o parmetro copiado (passagem por valor) e
obrigatrio.
A Figura 9.12 mostra os atributos de um mtodo. A figura 9.13 mostra o parmetro
para o mtodo. A figura 9.14 mostra as excees para o mtodo. O incio do mtodo
mostrado na Estrutura 9.10.
205
206
Lc_number_base
type c length 36
Value 0123456789abcdefghijklmnopqrstuvwxyz.
If source_base is initial or
Destination_base is initial.
Raise base_not_identified.
Endif.
Lv_iterations = strlen( lc_number_base ).
Estrutura 9.10 Implementanto um mtodo
Nota
Voc pode notar que os termos instance e object so frequentemente
usados alternadamente. Mais detalhes sobre programao orientada
objetos discutida no captulo 14, Programao orientada objeto do
ABAP.
207
usando a tecla de funo F4. Isto tambm possvel para o rtulo (texto
de seleo) usando o texto longo do elemento de dados.
Voc pode salvar facilmente os valores (ou clculos no caso de uma data
dinmica ou clculo de tempo) de uma tela de seleo complicada como
variantes de tela de seleo para reutilizar ou usar em processamento em
background.
A Estrutura 9.11 mostra o cdigo para uma tela de seleo, e Figura 9.15 mostra o
resultado gerado da tela de seleo.
***------------------------------- Parameters/Select-options
Selection-screen begin of block c01
With frame title text-c01.
Parameters:
p_custzg as checkbox default X,
p_wrkbch as checkbox default X,
p_repair as checkbox default X,
P_others as checkbox default X.
Selection-screen end of block c01.
Selection-screen begin of block c02
With frame title text-c02.
Parameters:
P_r_po radiobutton group sort,
P_e_s_r
radiobutton group sort,
P_r_s_d
radiobutton group sort,
P_r_d_s radiobutton group sort.
Selection-screen end of block c02.
Selection-screen begin of block c03
With frame title text-c03.
Select-options:
S_trkorr for gs_outtab-trkorr.
Selection-screen end of block c03.
Selection-screen begin of block c04
With frame title text-c04.
Select-options:
S_user for gs_outtab-as4user modif id c04.
Selection-screen end of block c04.
Parameters:
P_relsed as checkbox default X,
P_byuser as checkbox user-command activate,
P_missing as checkbox,
P_apprvl as checkbox,
P_apmiss as checkbox,
P_sumrze as checkbox default X.
Estrutura 9.11 Codificando uma tela de seleo
208
Verificao De Autorizao
Dados crticos e partes de um escopo funcional do sistema SAP devem ser
protegidas de acesso no autorizado. Voc tem que implementar verificao de
autorizao em seu programa em que os usurios podem apenas acessar reas em
que so autorizados. Para programar uma verificao de autorizao verifique o uso
da instruo AUTHORITY-CHECK para verificar se o usurio atual tem autorizao
para executar a funo em seu registro mestre. Dependendo do resultado da
verificao retornado no SY-SUBRC, voc pode continuar. Se o cdigo de retorno for
igual a 0 (zero), o usurio tem a autorizao. Objetos de autorizao tambm podem
ser definidos nos cdigos de transao do relatrio para fornecer restrio adicional
que no simplesmente pelo cdigo de transao.
Em situaes normais, a definio de objetos de autorizao faz parte de uma
modelagem de dados, e da criao de tabela no banco de dados. Implementar a
verificao de autorizao uma das tarefas do desenvolvedor que deve programar o
acesso s tabelas do banco de dados. Um objeto usualmente consiste de um campo
ACTVT (activity) e um ou muitos outros campos, que especificam o tipo de dado a ser
protegido, por exemplo, nmero do material, unidade da organizao, nmero da
conta, e assim por diante.
Dica
209
If p_s_develop-devclass = space.
Authority-check object S_DEVELOP
Id DEVCLASS dummy
Id OBJTYPE field p_s_develop_objtype
Id OBJNAME field p_s_develop-objname
Id P_GROUP dummy
Id ACTVT field l_develop_actvt.
Else.
Authority-check object S_DEVELOP
Id DEVCLASS field p_s_develop-devclass
Id OBJTYPE field p_s_develop-objtype
Id OBJNAME field p_s_develop-objname
Id P_GROUP dummy
Id ACTVT field l_develop_actvt.
Endif.
Estrutura 9.12 Chamada a uma verificao de autorizao
210
Dynpros ABAP
Como mencionado anteriormente, telas padro ou Dynpros so desenhadas pelo
desenvolvedor diretamente pelo uso do Screen Painter. Uma tela consiste no apenas
de layout com campos de entrada e sada, botes, e outros elementos de tela, mas
tambm um processo lgico conhecido como flow logic. O fato que o Dicionrio ABAP
integrado dentro do sistema fornece verificao consistente automtica para campos
de entrada na tela. Estas verificaes incluem verificaes de tipo, verificao de
chave estrangeira, e verificao de valores fixos.
As verificaes acima podem ser complementadas com outra verificao no
programa. Tcnicas so disponveis para telas que permitem voc controlar a ordem
em que verificaes so executadas. Se algum erro ocorrer, os campos apropriados
se tornam entradas novamente.
O layout pode ser desenhado com muita flexibilidade, com campos de entrada,
campos de sada, radio buttons, campos check, e botes com cada funo
correspondente do programa podem ser executados.
Alm disso, telas tm as mesmas opes de formatao que listas e telas de
seleo: nmeros de ponto fixo e datas so formatados de acordo configuraes no
registro mestre do usurio, horas so formatadas como HH:MM:SS, quantias correntes
so formatadas de acordo com o corrente, e medidas fsicas (tamanho, peso,
quantidade, etc.) so formatados de acordo com seus campos unitrios.
Na teoria, estes so duas opes para iniciar uma sequncia de tela:
PROGRAMAS EXECUTVEIS
Programas executveis (reports) usam telas para mostrar dados que
contm uma lista de sada, ou para substituir a lista de sada mostrada
completamente, e algumas vezes para mostrar um grid ALV. Voc tambm
pode usar telas para entrar e alterar dados na lista. Para o propsito da
reusabilidade e encapsulamento de dados, voc no deve criar telas
diretamente em reports, mas usar telas em um grupo de funo no lugar disso.
GRUPO DE FUNO
Grupos de funo frequentemente usam telas para encapsular uma tela ou
sequncia de telas para reuso. SAP oferece um vasto nmero de telas
encapsuladas ou sequncia de telas. Vrios mdulos de funo standard SAP
podem ser encontrados no Sistema
de Repositrio de Informao
simplesmente olhando um popup como parte do nome do mdulo de funo.
211
212
Mensagens de Dilogo
Voc usa a instruo MESSAGE para enviar dilogo de mensagens ao usurio do
seu programa. Quando voc faz isso com uma mensagem atual definida em uma
classe de mensagem, voc apenas especifica pelo menos uma mensagem com
nmero de 3 dgitos, a classe de mensagem, e o tipo da mensagem. Isto apenas
possvel para fornecer o texto da mensagem ou s o tipo da mensagem.
Nmero da mensagem e classe de mensagem claramente identificam a
mensagem que ser mostrada. Voc usa o tipo de mensagem (A, E, I, S, W, ou X; ver
Tabela 9.4) para definir como compilador ABAP deve processar a mensagem.
Tipo
Funo
Cuidado
Encerrament
o
Erro
Informao
Status
Alerta
Sada
213
na barra de status da tela do usurio. Como a mensagem processada depende onde
este tipo e onde este contexto enviado.
Se a instruo inicial do programa contm o adicional MESSAGE-ID id e sua
mensagem mostrada da mesma classe, voc pode usar a forma curta da instruo
da mensagem sem especificar a classe. A Estrutura 9.14 contm dois exemplos de
mensagem usando este form, e a Estrutura 9.15 mostra a instruo inicial.
Call function ENQUEUE_ESRDIRE
Exporting
Mode_trdir
= l_enq_mode
Name
= incl2
X_name
=
_scope
= 2
_wait
=
Expeptions
Foreign_lock
= 01
System_failure
= 02.
If sy-subrc ne 0 and rs381-extern = space.
Message id
sy-msgid
Type
E
Number
sy-msgno
With
sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
Endif.
Estrutura 9.13 Mensagem especificando todas as opes
Objectid
= objectid
Planned_change_number
= planned_change_number
Planned_or_real_changes
= planned_or_real_changes
Exceptions
sequence_invalid
= 1.
Others
= 2.
Case sy-subrc.
When 1. Message a600 with SEQUENCE INVALID.
When 2. Message a600 with OPEN ERROR.
Estrutura 9.14 Duas mensagens na forma curta
Function-pool wfrc
Message-id cd
Estrutura 9.15 Instruo inicial especificando a classe de mensagem
Este comportamento geral ultimamente orientado no contexto onde ocorre
chamada instruo de mensagem. Um nico contexto quando voc no tem tela.
Este inclui os seguintes blocos de processamento; todos os outros blocos de
214
processamento so associados com tela processada e so reagidas por uma entrada
do usurio:
O programa construtor LOAD-OF-PROGRAM
Mdulos PBO (PBO da tela)
Este evento de tela de seleo AT SELECTION-SCREEN OUTPUT (PBO da tela
de seleo)
O evento de relatrio INICIALIZATION, START-OF-SELECTION, GET, e ENDOF-SELECTION
Os eventos de lista TOP-OF-PAGE e END-OF-PAGE
Para deixar a Tabela 9.5 mais compreensvel, o que est mencionado acima sobre
blocos de processamento so estruturados dentro de dois grupos:
Grupo 1
LOAD-OF-PROGRAM, mdulo de tela PBO, AT SELECTION-SCREEN
OUTPUT
Grupo 2
Eventos de relatrio e de lista (INICIALIZATION, START-OF-SELECTION,
GET, END-OF-SELECTION, TOP-OF-PAGE e END-OF-PAGE)
Tipo
O que mostra
Processamento
Caixa
dilogo
Grupo 1: Caixa
de
dilogo
Grupo 2: Linha
de status da
janela corrente
Grupo 1: linha
de status da
prxima tela
Grupo
2:
caixas
de
dilogo
Programa continua
instruo MESSAGE.
Linha de status
da prxima tela
Grupo 1: linha
de status da
prxima tela
Grupo 2: Linha
de status da
tela corrente
Nada
de
processamento
depois
da
215
Tabela 9.5 Comportamento geral dos tipos de mensagem
Outro contexto nico inclui todas as situaes onde uma tela comea a ser
processada, que , o programa reagindo entrada do usurio. Em programas ABAP,
isto significa todos os mdulos PAI (process after input). Tabela 9.6 mostra o
comportamento da mensagem durante o PAI.
Tipo
O que mostra
Processamento
Caixa
dilogo
Status line
Caixa
dilogo
de
Linha
Status
de
Linha
Status
de
Nada
de
Tipo
A
O que mostra
Processamento
Caixa
de
216
dilogo
rea do menu.
Status line
Caixa
dilogo
de
Linha
Status
de
Linha
Status
de
Nada
AT LINE-SELECTION
AT USER-COMMAND
AT PFnn
TOP-OF-PAGE DURING LINE-SELECTION
O que mostra
Processamento
Caixa
dilogo
de
Linha de status
217
Caixa
dilogo
de
Linha de status
Linha de status
Como tipo E.
None
Mensagem normal
Iniciando uma exceo
Terminologia Importante
Para a certificao, voc deve conhecer que objeto de repositrio so objetos
desenvolvidos como sendo programas ou classes no Ambiente ABAP. Cada objeto de
repositrio includo em um pacote. Uma request de mudana contm at uma tarefa
para cada desenvolvedor trabalhando na mudana. Uma request de mudana grava e
mantm todas as mudanas feitas ao repositrio de objetos e configuraes
customizveis executadas pelo desenvolvedor dentro do projeto de desenvolvimento.
Simplesmente, desenvolvimento atribuir a uma tarefa que parte de uma request de
mudana.
218
Voc deve entender que declaraes globais aparecem em uma sesso depois da
declarao introdutria do programa em um programa ABAP em que os tipos de
dados, classes, e objetos de dados que so visveis no programa inteiro podem ser
declarados.
Uma unidade de modularizao de um programa ABAP alguma coisa que no
pode ser separado ou aninhado. Blocos de processamento so procedimentos,
mdulos de dilogo, e blocos de eventos. Eles contm instrues que so
estruturadas usando controles estruturados em blocos de instrues. Toda instruo
no declarvel de um programa ABAP parte de um bloco de processamento. Uma
interface de procedimento consiste de parmetros formais e estados a possvel
exceo do procedimento.
Com passagem por referncia, voc passa apenas o endereo do parmetro atual
ao parmetro formal. Parmetros formais no ocupam seus prprios espaos de
memria. Dentro da sub-rotina, voc trabalha apenas com o campo do programa que
chamou. Se voc altera o parmetro formal, o campo contido no programa chamador
tambm alterado.
Em passagem por valor, um objeto de dados local criado como uma cpia do
parmetro atual, e quando o procedimento chamado, o valor do parmetro atual
passado para este. Parmetros formais alterados apenas so passados ao parmetro
atual se o procedimento termina sem erros.
O termo event pode significar um componente de uma classe ou uma interface
declarada usando (CLASS-)EVENTS ou um evento do ambiente de execuo ABAP.
Ns discutimos o ltimo neste captulo. Mais detalhes desta forma podem ser
encontrados no Captulo 14, Programao ABAP Orientada a Objetos.
Eventos em classes ativam blocos de eventos. Um bloco de evento um bloco de
processamento sem uma rea de dados local que pode ser definida em todo programa
ABAP exceto para pools de sub-rotina, pools de classe, e pools de interface e
processado quando um evento especfico do ambiente de execuo ABAP ocorre. Isto
comea com uma palavra-chave de evento e termina com o incio da prxima
modularizao.
Questes Prticas
As questes prticas a seguir o ajudaro a avaliar seu entendimento sobre o
tpico. As questes mostradas so similares em natureza s encontradas no exame
de certificao. Entretanto, nenhuma delas sero encontradas no exame, elas
permitem voc revisar seu conhecimento do assunto. Selecione a resposta correta e
ento verifique a complexidade de suas respostas na seguinte sesso de soluo.
Lembre-se de que voc deve selecionar todas as respostas corretas e apenas
respostas corretas para receber crdito pela questo.
1. ABAP uma linguagem de programao que:
A. Executado nos trs nveis da arquitetura trs camadas.
B. Controla a lgica de negcio
C. Processa e formata dados
219
D. Interage com o usurio
E. Separa cdigo do programa de texto
2. Quais eventos podem existir em todos os tipos de programas que atualmente contm
instrues executveis?
A. LOAD-OF-PROGRAM
B. INICIALIZATION
C. START-OF-SELECTION
D. AT LINE-SELECTION
E. AT USER-COMMAND
F. AT PF##
3. Dynpros podem ser colocadas em que tipos de programas?
A. Executveis
B. Pools de mdulo
C. Grupos de funo
D. Pools de classe
4. Uma change request parte de uma tarefa?
A. Verdadeiro
B. Falso
5. Quais instrues de ABAP so verdadeiras?
A. Cada instruo deve comear com uma palavra-chave.
B. Cada instruo deve terminar com um ponto (.).
C. Palavras-chave ABAP e adicionais devem estar em uppercase.
6. Um objeto de desenvolvimento pode ser atribudo a apenas um pacote.
A. Verdadeiro
B. Falso
7. Um objeto de desenvolvimento pode ser atribudo a apenas uma change request.
A. Verdadeiro
B. Falso
8. Cada programa ABAP:
A. dividido em blocos de processamento
B. Atribui toda instruo executvel a blocos de processo
independentemente deste comear em um bloco de processamento
C. Apenas atribuem instrues executveis em um bloco de processo para
um bloco de processo
D. Usam blocos de eventos para iniciar eventos em ABAP
E. Tem instrues declarveis fora de bloco de processamento que so
considerados local.
F. Tem instrues declarveis dentro de bloco de processamento que so
considerados local.
G. Podem ser testado pelo ambiente ABAP pressionando F8.
9. Quais as unidades de modularizao podem gerar uma exceo?
A. Mdulos de funo
B. Mtodos
C. Subrotinas (rotinas FORM)
10. Que tipos de programas ou parte de programas podem ser testados diretamente pelo
Ambiente ABAP ou Editor ABAP?
220
A. REPORT
B. PROGRAM
C. FUNCTION-POOL
D. FUNCTION MODULE
E. CLASS-POOL
F. METHOD
G. INTERFACE-POOL
H. TYPE-POOL
I. INCLUDE
11. Que mtodo de passagem de parmetros preferido para ter performance?
A. Passagem por referncia
B. Passagem por valor
12. Que unidades de modularizao so globais?
A. Mdulos de funo
B. Subrotinas (rotinas FORM)
C. Mtodos dentro de uma classe local no programa
D. Mtodos dentro de pools de classe
13. Rotinas FORM (sub-rotinas) podem ser usadas em que tipos de programas:
A. Executveis
B. Pools de mdulo
C. Grupos de funo
D. Pools de classe
E. Pools de interface
F. Pools de subrotina
G. Grupos de tipo
14. Voc pode usar a expresso lgica IS SUPPLIED para qualquer parmetro formal
passado a quais unidade de modularizao?
A. Subrotina (rotina FORM)
B. Mdulo de funo
C. Mtodo esttico
D. Mtodo instanciado
15. Uma tela de seleo apenas pode ser definida em um programa executvel.
A. Verdadeiro
B. Falso
16. Subrotinas fornecem que tipos de parmetros?
A. Input
B. Output
C. Input/output (changing)
D. Return values
E. Exceptions
17. Mdulos de funo fornecem que tipos de parmetros?
A. Input
B. Output
C. Input/output (changing)
D. Return values
E. Exceptions
18. Mtodos fornecem que tipos de parmetros?
221
A. Input
B. Output
C. Input/output (changing)
D. Return values
E. Exceptions
19. No possvel testar um mdulo de funo se algum mdulo de funo do mesmo
grupo de funo contm um erro de sintaxe.
A. Verdadeiro
B. Falso
20. Cada boto em um Dynpro (tela) requer a atribuio de um cdigo de funo. Este
cdigo de funo:
A. usado para definir variveis globais que recebem um valor quando o
boto clicado.
B. Pode ser usado para identificar quando o boto clicado observando ao
cdigo de funo no campo da tela OK_CODE
C. Previne que o cdigo de funo seja atribudo a um tem de menu
21. Que tipos de mensagem se comportam parecidos independentemente do contexto em
que eles so chamados?
A. A
B. E
C. I
D. S
E. W
F. X
222
6. Resposta correta: A
Um objeto de desenvolvimento pode ser atribudo a apenas um pacote. Isto
pode resultar em um pacote diferente, mas sempre atribudo sempre um pacote
por vez.
7. Resposta correta: B
Um objeto de desenvolvimento pode ser atribudo a mltiplos projetos ou
change requests. Apenas um projeto ou change request pode ser ativado por vez,
mas muitas vezes comum objetos de desenvolvimento serem atribudos a
diferentes projetos e change requests e eles so alterados.
8. Respostas corretas: A, B, F
Um programa dividido dentro de blocos de processamentos, e toda instruo
executvel atribuda a um bloco de processamento explcito ou implcito.
Qualquer instruo no explicitamente includa em um bloco de processamento
implicitamente includa em START-OF-SELECTION. Instrues declarveis dentro
de uma unidade de modularizao so consideradas locais, entretanto as sadas
das unidades de modularizao so consideradas globais. Blocos de eventos so
chamados quando a execuo ABAP inicia eles.
Entretanto quase sempre programas ABAP podem ser testados simplesmente
pressionando F8 enquanto no editor, um tipo (um pool de mdulos) no pode ser
iniciado pelo editor ou ambiente ABAP diretamente. Pools de mdulo (programas
dilogo) devem iniciar com uma tela particular, e o nico caminho rodar o cdigo
de transao que associa a primeira tela ao processo. Para estar habilitado no
ambiente ABAP, inicialmente voc precisa navegar ao cdigo de transao, que
voc pode ento executar pressionando F8.
9. Respostas corretas: todas as opes
possvel executar uma exceo de uma classe em todos os trs casos de
unidades de modularizao.
10.
Respostas corretas: A, D, E, F
Relatrios, mdulos de funo, classes, e mtodos podem todos ser
executados e testados diretamente. Programas (pools de mdulos) podem ser
indiretamente testados testando seus cdigos de transao correspondentes.
Grupos de funo, pools de interface, pools de tipos, e includes no podem ser
testados independentemente.
11.
Resposta correta: A
Passagem por referncia sempre prefervel quando performance um
requisito, entretanto passagem por valor mais utilizado em situaes onde
robustez e consistncia de dados so importantes.
12.
Respostas corretas: A, D
Qualquer modularizao que pode ser reusada considerada global. Um
mtodo definido dentro de um programa no pode ser reusado, nem uma subrotina (rotina FORM). Ambos, mdulos de funo e mtodos definidos em um pool
de classe so considerados globais.
13.
Respostas corretas: A, B, C, F
Sub-rotinas no podem ser usadas em classes. Pools de interface e pools de
tipos no tem nenhum cdigo executvel.
14.
Respostas corretas: B, C, D
Sub-rotinas no tem parmetros opcionais, e portanto, a expresso lgica IS
SUPPLIED no pode ser usada.
15.
Resposta correta: B
223
Telas de seleo podem ser definidas em qualquer programa que permita
telas. Originalmente, apenas uma tela de seleo foi permitida em um programa
executvel (tela 1000), mas com as ltimas verses no possvel definir tanto
quanto voc quer. Esta capacidade que isto possvel colocar telas de seleo
em outros programas quem no so apenas programas executveis.
16.
Respostas corretas: C, E
Sub-rotinas tecnicamente apenas fornecem tipos de parmetros input/output
(CHANGING) (por meio de USING e CHANGING) e excees.
17.
Respostas corretas: A, B, C, E
Mdulos de funo fornecem input (IMPORTING), output (EXPORTING), e tipos
de parmetros imput/output (CHANGING) e excees (EXCEPTIONS).
18.
Respostas corretas: todas as opes
Mtodos fornecem input (IMPORTING), output (EXPORTING), input/output
(CHANGING), e retornam valores (RETURNERING) tipos de parmetros e
excees (EXCEPTIONS).
19.
Resposta correta: A
ABAP observa durante todo o programa ambos, gerao e execuo. Um erro
de sintaxe em qualquer parte ir prevenir que isto na execuo.
20.
Resposta correta: B
O cdigo de funo de qualquer menu, boto ou Tecla de funo sempre
colocado dentro do campo OK_CODE associados com a tela. Isto pode ser apenas
encontrado no sistema pela varivel SY-UCOMM.
21.
Respostas corretas: A, F
Os tipos de mensagem abortar ou terminar sempre causam um trmino no
programa, e retornam o controle ltima rea do menu. O tipo de mensagem exit
sempre executa um erro em tempo de execuo com pequeno dump.
Lembre-Se
Voc ir precisar entender como transportes so organizados. Lembre-se que
uma change request comumente chamado por um transporte e contem tarefas
atribudas a um desenvolvedor especfico. importante reconhece os vrios tipos de
programas: programas executveis, tambm conhecidos como reports, pools de
mdulos, tambm conhecidos como programas dilogo, grupos de funes, que
contm mdulos de funes, e pools de classe, que contm mtodos, so os primeiros
tipos de programas que voc deve entender. Dentro de cada um destes, voc precisa
entender os tipos de modularizaes e como eventos so iniciados.
Voc tambm precisa estar apto a distinguir que tipos de telas, quando mostradas,
usam o SAP GUI versus um browser Web. Telas clssicas, ou Dynpros, e telas de
seleo usam o SAP GUI, enquanto que Web Dynpro e Business Server Pages, por
exemplo, usar um Web browser. Web Dynpro discutida em detalhes no Captulo 20,
Interfaces do Usurio (Web Dynpro). Voc estar apto a identificar como uma tela
clssica (Dynpro) manipula campos e botes e seus usos em mdulos de funo.
Includo com esta tela clssica, manipulando ambos, telas de seleo e caixas de
dilogo modal.
Voc precisar entender o uso de verificao de autorizao e unidades de
modularizao. Este inclui como chama-los e opes para fornecimento de dados.
224
O ltimo como trabalham mensagens em diferentes contextos. Voc precisar
entender tambm onde mensagens sero mostradas e o comportamento do programa
chamando a produo da mensagem.
Relembrando
Voc deve entender vrios tipos de blocos de modularizao. Eventos, suvrotinas,
mtodos, mdulos de funo, e mdulos de dilogo iro todos participar do exame de
certificao. Voc deve saber como so definidos, como so chamados incluindo suas
interfaces ou assinaturas, e como eles se comportam com a produo da mensagem
do dilogo. Voc tambm deve ter um entendimento de tcnicas de ambos, passagem
por valor e passagem por referncia.
Manipulao de tela clssica (Dynpro) tambm um conhecimento essencial.
Voc precisa entender como telas so chamadas, o que distingue uma tela de uma
caixa de dilogo modal e de uma tela de seleo. Voc deve entender como definir
todos os trs e cada tipo de programa, como eles podem ser produzidos.
Tabela 9.9 mostra os conceitos chave de programas bsicos ABAP e criao de
interfaces.
Conceito chave
Processamento
Unidades
de
modularizao
Dynamic Program
(Dynpro)
Verificao
autorizao
de
225
Dicas
Como a maioria dos assuntos tratados no exame de certificao, importante ter
muita experincia prtica com os assuntos se possvel. Diferente da maioria dos
assuntos encontrados no exame de certificao, esta uma rea que se voc tem
programado em ABAP, voc ter experincia suficiente.
Enquanto que a vasta maioria dos conceitos apresentados no captulo devem ser
naturalmente secundrios, importante que voc entenda o comportamento diferente
de interfaces (ou assinaturas) e da produo de mensagem.
Sumrio
Agora voc deve estar apto a criar vrios tipos de programas ABAP. Voc deve
tambm entender os diferentes tipos de encapsulamento que um programa pode usar
e a interao entre um usurio e o programa pelo uso de telas e mensagens. Estas
habilidades lhe proporcionaro completar com sucesso esta parte do exame de
certificao
226
10 - Dicionrio ABAP
Tcnicas que voc ser mestre:
227
O Dicionrio ABAP centraliza todas as definies de dados globais do sistema
SAP. O dicionrio de dados ajuda voc a definir os tipos de dados, que so, elemento
de dados, estruturas e tipos de tabela. Voc pode definir a estrutura dos objetos do
banco de dados, tabelas, views e ndices. Ajuda de pesquisa um servio usado para
mostrar uma lista de valores possveis para campos de uma tela. Objetos de boqueio
um servio usado para controlar o acesso aos dados por programa ou usurio, usando
um mecanismo de bloqueio lgico.
Cenrio Real: Imagine que voc tem que desenvolver vrias aplicaes
customizadas para o seu cliente.
Voc precisa criar uma tabela customizada para armazenar os dados da aplicao
e que requer um nmero de estrutura para desenhar as telas. Voc tem que desenhar
e criar tabelas transparentes, elementos de dados, domnios, ajuda de pesquisa e
bloqueio de objetos para a sua aplicao.
Como um lder de desenvolvimento, voc tem que ter um entendimento dos
objetos do dicionrio ABAP e ser capaz de explicar os conceitos ao time de
desenvolvimento.
Conceitos Chave
Overview
Qualquer mudana em um tipo de dado automaticamente propagada em todos
os componentes usados com esse tipo na aplicao. Os tipos de dados do dicionrio
ABAP esto disponveis para todos os objetos do Repositrio dentro do sistema.
Existem trs categorias de tipos no Dicionrio ABAP:
228
Elementos de dados
um tipo elementar que pode ser usado para descrever um nico campo ou um
elemento de dados. Contm o tipo, tamanho e decimal. Voc tambm pode definir o
nome do campo, caractersticas de sada e observaes.
Estruturas
Tipo de tabelas
uma descrio de uma tabela interna. Contm o tipo da linha (colunas), tipo de
acesso (standard, sorted ou hashed) e as informaes da chave de acesso.
229
pesquisa objetos de bloqueio e tipo de grupos com a ferramenta Dicionrio ABAP.
Iremos discutir cada objeto do Dicionrio e os servios em detalhes nos prximos
pargrafos.
Domnios
Um domnio usado para descrever os atributos tcnicos do elemento de dados.
Domnio no pode ser usado diretamente no programa. Domnios podem ser
assinalados para qualquer nmero de elementos de dados e qualquer alterao ser
aplicada automaticamente nos elementos de dados.
Um domnio pode ser usado por muitos elementos de dados porque tecnicamente
o atributo de um elemento de dados pode ser o mesmo, mas podem ter diferentes
significados. Um exemplo para o campo como mesmo domnio pode ser o elemento
S_FROM_CIT e S_TO_CITY na tabela SPFLI. Ambos os elementos de dados usam o
domnio S_CITY porque ambos so cdigos de cidades, mas tem diferentes
significados e por isso dois elementos de dados. Ento, ns definimos elementos de
dados ao invs de assinalar um tipo e tamanho diretamente no elemento de dados.
Figura 10.2 e Figura 10.3 mostra o uso de domnios para a definio dos elementos de
dados. Ambos os elementos de dados usam o mesmo domnio por razes explicadas
abaixo.
Domnio tem os seguintes atributos tcnicos:
Formato
Propriedades de sada
230
Descrio
Perodo posterior. Tamanho de seis posies. Formato YYYYMM. No
input e output um ponto inserido entre o ano e o ms, YYYY.MM.
Caractere String. Campo do tipo char tem um tamanho mximo de
255 posies em tabelas.
O Campo cliente sempre tem trs posies CHAR.
Campo Moeda Chave. Campos desse tipo so referenciados para
campos do tipo CURR. O tamanho de cinco posies.
Campo Moeda. Equivale para um valor de campo DEC. Este campo
obrigatoriamente refere-se ao tipo CUKY. O tamanho mximo de 31
231
DATS
DEC
FLTP
INT1
INT2
INT4
LANG
LCHR
NUMC
PREC
QUAN
RAW
RAWSTRING
STRING
SSTRING
posies.
Campo Data. Tamanho de oito posies. O template de sada pode
ser definido pela configurao do usurio.
Contador ou quantidade com ponto decimal, sinal e vrgula
separando os milhares. O campo DEC tem tamanho de 31 posies.
Ponto Flutuante. Tem tamanho com casas decimais de 16 posies.
1-byte inteiro entre 0 e 255. Tamanho de 3 posies.
2-byte inteiro entre -32767 e 32767. Este campo posicionado na
frente de um campo longo (tipo LCHR, LRAW). Com INSERT ou
UPDATE o banco de dados usa para armazenar o tamanho de um
campo longo. O tamanho de 5 posies.
4-byte inteiro entre 2147483647 e 2147483647. Tamanho de 10
posies.
Linguagem chave. Tem seu prprio formato para funes especiais.
Tamanho 1. mostrado ao usurio em 2 posies, porm
armazenado somente em 1. Uma exit ISOLA converte o que
mostrado para o usurio para o valor armazenado no banco de dados
e vice-versa.
Caractere string assume qualquer tamanho, mas tem que ser
declarado com o mnimo de 255 caracteres. Obrigatoriamente deve
estar no fim da declarao de tabela transparente e precedida do tipo
INT2. Se existir um INSERT ou UPDATE no programa ABAP o
tamanho do campo obrigatoriamente deve ser preenchido com o
tamanho requisitado. Se no for preenchido com o tamanho correto
pode ocasionar perda de dados no campo LRAW. Esse tipo no pode
ser usado em uma clausula WHERE de um SELECT.
Tipo numrico. Tamanho de 255 posies.
Preciso de um campo QUAN. Tamanho de 2 posies.
Quantidade. Equivalente ao campo moeda DEC. Tamanho de 31
posies.
Interpretado. Tamanho 255 posies na tabela.
Interpretado. Tamanho varivel com mximo de 256. Somente pode
ser usado para tipos (elemento de dados, estruturas e tipo de
tabelas). Em ABAP este tipo implementado como uma referencia
para armazenar reas de tamanho varivel. No possvel ajuda de
pesquisa para componentes deste tipo.
Caractere string com tamanho varivel. Somente pode ser usado
para tipos (elementos de dados, estruturas e tipos de tabelas) e
domnios. Tamanho mximo de 255 caracteres. Pode ser usado em
tabelas do banco de dados com algumas restries. Em ABAP este
tipo implementado como uma referencia para armazenar reas de
tamanho varivel. Como padro tem 132 caracteres. No possvel
ajuda de pesquisa para componentes deste tipo.
Caractere string menor com tamanho varivel. Somente pode ser
usado para tipos (elementos de dados, estruturas e tipos de tabelas)
e domnios. Tamanho mximo de 256 caracteres. Pode ser usado em
tabelas do banco de dados com algumas restries ver STRING.
Pode ser usado em ndices e na clusula WHERE de um SELECT.
No pode ser usado em tabelas chaves.
232
TIMS
233
A CONVERSION_EXIT_XXXX_INPUT converte o formato da tela no formato interno da
SAP.
A CONVERSION_EXIT_XXXX_OUTPUT converte do formato interno da SAP para o
formato da tela.
Para tipo numrico: DEC, FLTP, QUAN e CURR o checkbox para o sinal +/- lido
para a entrada. Se o checkbox selecionado, ento o 1 caractere do campo
reservado para +/- e o tamanho da sada deve ser acrescentado um. Para o tipo de
dados caractere voc tem a opo de selecionar caixa-baixa no checkbox para
reservar espao e mostrar os caracteres em caixa-baixa. Se este checkbox no est
selecionado o dado sempre armazenado e mostrado em caixa-alta. Figura 10.4
mostra o atributo tcnico para a definio de domnio.
234
Figura 10.5 Definio de valor para range do domnio
Elementos De Dados
Elementos de dados fornecem uma completa descrio do campo, ambos
semnticos e informaes tcnicas. Elementos de dados podem ser usadas em um
programa ABAP para definir objetos de dados usando o TYPE adicionando uma
declarao para objeto de dados (ver figura 10.6 definio do elemento MATNR).
Voc pode usar elementos de dados para definir um objeto de dado(ex. varivel)
em um programa ABAP. A sintaxe para definir um objeto de dados no programa :
DATA: wa_matnr TYPE matnr.
Voc tambm usa elementos de dados para definir campos view, componentes de
estruturas, tipo de linha de um tipo de tabela. Para criar elementos de dados no
Dicionrio ABAP voc precisa definir um tipo de dados para um elemento de dados. O
tipo de dado para elemento de dado pode ser um tipo de dado elementar ou um tipo
de dado referencial. Para tipo de dados elementar voc tem a opo de assinalar um
domnio ou usar um tipo de dado predefinido diretamente no dicionrio ABAP,
considerando que para tipo de dados referencial voc pode assinalar outro elemento
de dados.
Voc deve manter o nome do campo para o elemento de dados. O nome do
campo automaticamente habilitado para mostrar um campo na tela que usa um
elemento de dados e isto se aplica tambm a tela de seleo. Voc tambm pode
traduzir o nome do campo para outra lngua. Figura 10.7 mostra a manuteno do
nome do campo para um elemento de dados.
235
Voc pode definir caractersticas adicionais para um elemento de dados tal qual
uma ajuda de pesquisa, parameter ID, e o nome padro para o elemento de dados. A
manuteno de caractersticas adicionais esto na aba FUTHER CHARACTERISTICS
da tela de manuteno de elementos de dados. (ver figura 10.8)
A AJUDA DE PESQUISA (F4 value help) pode ser usada para fornecer a ajuda de
entrada para o um campo da tela baseado no elemento de dados (ver Captulo 19,
Relacionamento de Tabelas).
O PARAMETER ID usado para armazenar (SET) o valor de um campo da tela na
memria. O Parameter ID usado para recuperar o valor de um campo da memria
usando o comando GET. Voc tambm pode adicionar um atributo no campo da tela
no Screen Painter para automaticamente ler o valor da memria sem usar o comando
GET. O valor do parameter ID somente disponibilizado se estiver setado na
aplicao e estiver disponvel na memria. O parameter ID tem o valor por sesso e
por usurio e no est disponvel quando no estiver logado.
O DEFAULT COMPONENT NAME usado se o elemento de dados foi usado para
campos descritveis em uma estrutura BAPI para a definio BAPI.
Estrutura
Estrutura consiste em uma sequencia de componentes. Os componentes da
estrutura pode ser uma sequencia de campos elementares, outras estruturas, tipo de
tabelas. Por isso voc pode definir uma estrutura flat, nested ou deep do dicionrio
ABAP. Os componentes de uma estrutura pode ter elementos de dados assinalados
236
para eles ou definidos usando um tipo predefinido diretamente do dicionrio ABAP.
Estruturas podem ser usadas na definio de tabelas ou definio de desenho para
tela. Somente pode ser usado estruturas flat dentro das definies da tabela no
dicionrio ABAP. Elementos de dados, e tipos de tabelas pertencem ao mesmo
namespace e por isso no pode ter o mesmo nome.
Tipo De Tabela
Tipo de tabela define a estrutura e os atributos tcnicos de uma tabela interna.
Voc pode se referenciar uma tabela interna em um programa abap usando o
dicionrio ABAP usando a sintaxe(usando mara_tab como definio de tipo de tabela):
DATA: itab TYPE mara_tab.
Voc pode definir o tipo de linha, modo de acesso e chave para o tipo de tabela no
dicionrio abap.
Tipo de linha
O tipo de linha define a estrutura e o tipo de dados para uma tabela interna, que
so as colunas.
Modo de acesso
O modo de acesso define como voc quer acessar os dados da tabela interna. A
possveis valores para o modo de acesso, so tabela standard, tabela sorted, tabela
hashed, tabela de ndices, e no especificado. Referencia no captulo 7 Tabela Interna
Definio e uso.
Key
Voc pode especificar a chave da tabela interna. A definio para a tabela hashed
obrigatria, para tabela standard e sorted opcional. A definio de categoria pode
ser: nica, no nica ou no especificado. Para tabela hashed obrigatrio ser nico.
Figura 10.9, Figura 10.10 e Figura 10.11 mostra a tela para definio de tipo de
tabela.
237
Tabelas Transparentes
As tabelas so definidas no dicionrio ABAP independente do banco de dados.
So criadas depois da ativao. A tabela do banco de dados criada baseada na
tabela definida no dicionrio ABAP, o nome dos campos so os mesmos (podem estar
no na mesma ordem). Voc pode criar uma tabela na transao SE80 ou SE11.
Segue as configuraes necessrias para a definio da tabela no dicionrio
ABAP:
Entrega e manuteno
Voc precisa especificar a classe de entrega para a tabela. Isto pode ser
selecionado em um drop-down box. Voc tambm precisa especificar o DATA
BROWSER/TABLE VIEW MAINTANANCE para a tabela. Os valores vlidos podem
ser selecionados tambm em drop-down list. As opes DISPLAY/MAINTANANCE
ALLOWED WITH RESTRICTIOIN and DISPLAY/MAINTANACE ALLOWED voc tem
a opo de gerar na caixa de dialogo a tabela de manuteno.
A opo DISPLAY/MAINTANANCE ALLOWED tambm possvel manter e visualizar
via transao SM30.
Campos de Tabelas
238
Necessariamente voc precisa definir se o campo chave ou no, tipo do campo,
tamanho, casas decimais e uma descrio. O nome do campo deve ser nico para a
tabela com no mximo 16 caracteres, pode conter letras, nmeros e underscore.
A tabela pode ter mais de uma chave, sendo nica e que identifique o registro. O
campo de uma tabela usa um elemento de dados ou um tipo de dado predefinido. Se o
campo for definido como um elemento de dados ele usa as definies desse elemento
de dados. Tambm possvel usar estruturas para tabelas, porm a chave tem que
ser definida individualmente. Figura 10.12 mostra o uso de estrutura para definir uma
tabela.
Figura
239
Figura 10.13 Tabela de Referencia e o campo assinalado para Net Price Field
Configuraes Tcnicas
Obrigatoriamente voc deve manter as configuraes tcnicas quando voc cria
uma tabela no Dicionrio ABAP. Algumas das configuraes tcnicas so obrigatrias.
Elas so utilizadas para otimizar e acessar a tabela. preciso definir a classe de
dados, tamanho da categoria, e configuraes do buffer.
A definio da classe de dados da rea fsica do banco de dados (tablespace) no qual
a tabela deve ser criada. As classes de dados mais importantes definidas no dicionrio
ABAP so APPL0 para dados mestre isto no frequentemente alterado comparado
com transaes, APPL1 para transao e APPL3 para organizao. As outras duas
classes USR e USR1 so fornecidas pelo cliente e devem ser usadas pelo cliente.
Uma rea de armazenagem especial deve ser alocada para a classe de dados
customer-specific.
240
O tamanho da categoria define o tamanho das extenses criadas para a tabela. Voc
pode escolher entre 0 e 4 e para cada categoria e assinalado um tamanho fixo de
memria no banco de dados. Se for preciso mais espao automaticamente
aumentado conforme o tamanho da categoria selecionado.
Configuraes de Buffer define como a tabela deve ser armazenada. A tabela de
Buffer melhora a desempenho do acesso ao banco de dados. O contedo do banco de
dados armazenado na memria e pode ser acessado sem precisar consultar o
banco de dados. A tabela de buffer pode ser invlida caso os dados mudem no banco
de dados.
Voc pode selecionar a opo BUFFERING NOT PERMITTED, no caso dos
dados serem alterados com muita frequncia. Neste caso os dados mais recentes so
selecionados do banco de dados.
Voc pode selecionar a opo BUFFERING ACTIVATED se os dados no so
alterados frequentemente.
Voc tambm pode selecionar a opo BUFFERING PERMITTED BUT NOT
ACTIVATED. Neste caso tecnicamente o buffer permitido mas est desativado o
comportamento da desempenho no conhecido no sistema do cliente.
O tipo de buffer determina quais tipos de registros sero armazenados na memria do
servidor da aplicao. FULL BUFFERING carrega todos os registros da tabela para a
memria se somente um registro da tabela acessado. O SINGLE RECORD BUFFER
carrega somente este registro. GENERIC BUFFERING carrega os dados da esquerda
na memria.
Voc tem a opo de registrar num log se uma alterao ocorreu no banco de dados
no caso da opo LOG DATA CHANGES estar selecionada. Ser logado na tabela
DBTABPRT ou pode ser visto pela transao SCU3.
Veja a Figura 10.15 para configuraes tcnicas para a tabela.
241
Figura 10.15 Configuraes tcnicas para a tabela do dicionrio ABAP
ndice
O ndice primrio da tabela automaticamente criado baseado na chave da
tabela. Um ndice pode ser considerado uma cpia do banco de dados que tem sido
reduzido para alguns campos, cpia sempre est ordenada e fornece um rpido
acesso para os dados gravados na tabela. O ndice contm um ponteiro que
corresponde ao registro atual. possvel criar vrios ndices secundrios. Eles podem
ser necessrios caso a tabela seja acessada de maneira que o ndice primrio no
apresente vantagens.
recomendado no criar muitos ndices secundrios para no diminuir a
desempenho nas atualizaes. O ndice atualizado a cada vez que a tabela
alterada. Figura 10.16 mostra ndices secundrios para a tabela MARA.
Ajuda de Pesquisa
um servio usado para mostrar uma lista de possveis valores para um campo
de tela. O valor selecionado pelo usurio copiado para o campo. A ajuda de pesquisa
mostrada quando o usurio pressiona F4.
No so todos os campos que possuem a ajuda de pesquisa.
Normalmente ajuda de pesquisa so usados para elementos de dados. Ela pode
estar anexada a um campo de uma tabela ou estrutura ou a um check table. A
definio do anexo semelhante chave estrangeira. Voc pode assinalar ajuda de
pesquisa diretamente nos atributos do campo no Screen Painter, porm no
recomendado.
Tipos de ajuda de pesquisa do dicionrio ABAP:
242
Elementary
Collective
Append
243
definido pelo SPos. Os parmetros no so mostrados se o valor do LPos e SPos
forem o inicial ou 0. A flag SDis usada se o parmetro for somente para valor de
seleo.
O tipo de janela definido para que a caixa de dilogo seja exibida ou no. Selecione
SELECT VALUES IMMEDIATELLY para o DIALOG TYPE se voc no quiser a janela
de restrio de valores. Esta opo significativa se voc tem poucos itens na lista de
ajuda. Selecione DIALOG DEPENDING ON NUMBER OF VALUES. O resultado da
pesquisa neste caso ser mostrado imediatamente se o nmero de entradas for menor
que 100, no entanto a janela ir mostrar um nmero restrito de itens. Selecione
COMPLEX DIALOG WITH VALUE RESTRICTION para DIALOG TYPE. Neste caso a
caixa de restrio de valores ser mostrada.
244
Objeto de Bloqueio
um requisito para proteger a consistncia dos dados, se muitos usurios ou
programas tentarem modificar ou acessar os mesmos dados no mesmo tempo. No
sistema SAP voc pode bloquear o material quando quiser garantir que outro usurio
no altere os dados enquanto voc trabalha com eles.
Bloquear e desbloquear realizado atravs de uma chamada a uma funo em
seu programa. O objeto de bloqueio criado no dicionrio ABAP no um bloqueio no
banco de dados. um bloqueio lgico de tabela que a aplicao SAP usa. O nome de
um objeto de bloqueio deve comear com EZ ou EY. O mdulo de funo
automaticamente criado quando o objeto de bloqueio ativado.
Os dois mdulos de funes criados quando se ativa o objeto de bloquei so
ENQUEUE_<lock_object> e DEQUEUE_<lock_object>. O mdulo de funo
automaticamente assinalado para um grupo de funo. Nunca deve ser mudado o
mdulo de funo ou o grupo de funo. O grupo de funo ou o mdulo de funo
no devem ser transportados. Mas devem ser gerados em seu ambiente. Chame o
mdulo de funo ENQUEUE_<lock_object> para bloquear um registro ou uma tabela.
A chave do registro deve ser passada para bloquear aquele registro. Chame o mdulo
de funo DEQUEUE_<lock_object> para liberar a o bloqueio do registro. O modo de
bloqueio usado para bloquear um registro pode ser passado para o mdulo de funo,
entretanto todos os objetos de bloqueio tem seu modo de bloqueio padro.
Os objetos de bloqueio so definidos para tabelas que devem ser bloqueados na
aplicao. Objetos de bloqueio podem ser definidos para simples tabelas ou para
245
tabelas relacionadas. Voc deve definir a primeira tabela e ento as prximas tabelas
secundrias usando a chave estrangeira. O argumento consiste na chave da tabela.
Objetos de bloqueio podem bloquear objetos lgicos, que consiste de um registro
header e os detalhes relacionados do registro header na tabela secundria. Figura
10.20 e Figura 10.21 mostra a tela de definio de objeto de bloqueio. Para definir
objetos de bloqueio voc tem que definir a tabela de bloqueio, os modos de bloqueio
so mostrados na Figura 10.20, e o parmetro de bloqueio mostrado na Figura
10.21.
of
Lock Mode
Meaning
S (Shared)
E(exclusive)
246
bloqueado pode ser editado ou visualizado por um
usurio.
Exclusive
X (exclusive O bloqueio exclusive pode ser requisitado muitas
and
non- nonvezes dentro de uma mesma aplicao e so
cumulative
cumulative)
processados com sucesso. Em contraste, o no
cumulativo, s pode ser bloqueado uma vez dentro
de uma aplicao, todas as outras requisies so
rejeitadas.
Tabela 10.3 Modo de bloqueio para objeto de bloqueio
Registros bloqueados podem ser vistos pela transao SM12. Voc pode deletar
manualmente o registro bloqueado desta transao se o SAP dispatcher ou a
coneco de rede falhar e o dispather ficar desabilitado para deletar as entradas
bloqueadas (ver Captulo 8, Comandos SQL Incluindo Estratgias de Atualizao).
247
FIELD3. Todos os registros na tabela da esquerda ou da primeira tabela ser includo
no resultado, independente da outra tabela ter um registro correspondente.
As views implementam um inner join e por isso selecionam registros para cada
registro existente em todo as tabelas includas na view. Views de ajuda e de
manuteno podem implementar outer join. No possvel selecionar dados de uma
view de manuteno. Se usar um outer join em sua aplicao, ter que codificar isto
em um programa.
O status de manuteno da view controla como os registros podem ser inseridos e
atualizados atravs da view. Pode ser selecionada a opo de manuteno READ
ONLY para a view. Com esta opo somente permitido ler os dados da view. Se
selecionar READ AND CHANGE status, possvel atualizar os dados.
Tipo de possveis de view no Dicionrio ABAP:
View de Banco de Dados
As views so automaticamente criadas no banco de dados quando so ativadas.
As views devem ser criadas quando se deseja acessar dados de diferentes tabelas
simultaneamente. Geralmente so mais rpidas do que usar select nested. View de
banco de dados pode conter somente tabelas transparentes.
248
Projection View
So usadas para mascarar campos de uma tabela. Somente possu uma tabela e
no permitido condies. Ela no cria um objeto no banco de dados como a view de
banco de dados. Devem ser mais rpidas por selecionar um nmero menor de
campos. Pode ser criada para tabelas pooled ou cluster, isto porque projection view
mapeada para tabelas correspondentes da tabela inserida na view.
View de Manuteno
Implementada com outer join, e todas as tabelas includas na view devem estar
lincadas pela chave estrangeira. No possvel inserir as condies da view de
manuteno manualmente como numa view de banco de dados. View de manuteno
um fcil caminho para a manuteno de objetos de aplicao complexas. Os dados
so automaticamente atualizados em suas tabelas do banco de dados. A view de
manuteno uma left outer join ento a primeira tabela includa importante. Todos
os registros da primeira tabela so includos na view.
Help View
Pode ser usada como mtodo de seleo para ajuda de pesquisa. Help views so
implementadas com um outer join e para todas as tabelas includas necessrio
estarem conectadas pela chave estrangeira.
Geralmente, o mtodo de seleo para a pesquisa de ajuda view de banco de
dados ou tabela. Entretanto voc precisa usar help view se um outer join requisito
para a seleo dos dados.
Terminologia importante
Agora voc deve conhecer os objetos do Dicionrio ABAP e suas funes . Voc
tambm deve ter um bom entendimento de ajuda de pesquisa e objetos de bloqueio.
Ajuda de pesquisa so servios do Dicionrio ABAP usados para mostrar uma
lista de possveis valores para um campo de uma tela geralmente associado a um
elemento de dados. Eles tambm podem ser associados para o caixa de dialogo , no
caso de no ter para o programa um valor de ajuda para o campo de tela. Entretanto
voc poderia ter um valor ajuda no programa no campo da tela, se a entrada da
ajuda para o campo requerido.
Os objetos de bloqueio so requeridos para proteger a consistencia dos dados se
muitos usurios ou programas tentam acessar e modificar o mesmo registro ao
mesmo tempo. Voc pode controlar o acesso do mesmo registro por dois ou mais
usurios usando o bloqueio lgico. Dois mdulos de funo, ENQUEUE_<lock_object>
e DEQUEUE_<lock_object>, gerado para cada objeto de bloqueio. chamado para
ENQUEUE_<lock_object>
para
bloquear
a
tabela
ou
registro
e
o
DEQUEUE_<lock_object> para desbloquear.
249
Questes Prticas
As questes iro ajudar a avaliar o seu entendimento sobre o tpico. As questes
so similares s encontradas no exame de certificao, mas nenhuma delas poder
ser encontrada no teste, eles servem para avaliar o seu conhecimento sobre o tpico.
Selecione as corretas e depois verifique com as solues apresentadas a seguir.
Lembre-se que voc deve selecionar todas as respostas corretas e somente as
questes inteiramente corretas recebem o crdito de questo correta.
1. Uma tabela transparente pode incluir uma estrutura deep.
A. Verdadeiro
B. Falso
2. Tipo de dados ABAP podem ser usados para a definio de um domnio.
A. Verdadeiro
B. Falso
3. Quais das questes so verdadeiras?
A. Uma rotina de converso pode ser assinalada para um domnio
B. Uma rotina de converso pode ser assinalada para um elemento de dados
C. possvel definir um range value em um elemento de dados
D. Pode ser adicionado uma documentao para o elemento de dados no
Dicionrio ABAP
4. F1 Help no campo de uma tela mostra a documentao do elemento de dados
A. Verdadeiro
B. Falso
5. Quais das questes so verdadeiras?
A. Os atributos tcnicos de um elemento de dados podem ser definidos por um
domnio, que , o tipo de dados, o tamanho do campo e o nmero de casas
decimais.
B. Pode ser definido um tipo de dados de um elemento selecionando um tipo de
dados pr-definido
C. Tipo de referencia de dados podem ser usados para definir o tipo de dados de
um elemento de dados
D. Nome de campos so definidos para o domnio
6. Pode ser definido ajuda de pesquisa para parameter IDs para um elemento de
dados
A. Verdadeiro
B. Falso
7. O tipo de linha para uma tabela de tipos pode ser flat, nested ou deep structure
A. Verdadeiro
B. Falso
8. Quais das questes so verdadeiras?
A. Campos de uma tabela podem ser atribudos para um elemento de dados
250
B. Campos de uma tabela podem ser atribudos para um tipo de dados Diretamente
do Dicionrio ABAP.
C. Ajuda de Pesquisa pode ser definido para um campo de uma tabela que est
atribudo para um tipo de dados definido.
D. Uma tabela de referencia e um campo so requisitos para com os tipos de dados
QUAN e CURR
9. Qual das questes est correta para ajuda de pesquisa?
A. Pode usar view de manuteno na ajuda de pesquisa como o mtodo de
seleo.
B. Pode usar view de banco de dados na ajuda de pesquisa como mtodo de
seleo.
D. Pode usar tabela transparente para ajuda de pesquisa como mtodo de seleo.
10. Quais das questes esto corretas para ajuda de pesquisa?
A. A interface para a ajuda de pesquisa definida por IMP(import) e EXP(export)
para o parmetro de ajuda de pesquisa.
B. O parmetro LPos define a posio do parmetro da ajuda de pesquisa na
pesquisa da lista de dicas
C. O parmetro SPos define a posio do campo de entrada sobre o dialog screen
D. O text table para o mtodo de seleo automaticamente populado se o text
table anexado para a tabela de banco de dados iniciando o uso com o mtodo
de seleo.
11. Quais das seguintes frases so verdadeiras?
A. Uma view de banco de dados implementada com inner join
B. Uma view de manuteno implementada com outer join.
C. Uma view de banco de dados implementado com outer join.
D. Uma view de manuteno implementado com inner join.
12. Quais das seguintes frases so verdadeiras?
A. Uma tabela includa em uma view de manuteno deve ter relacionamentos com
chave estrangeira
B. Uma tabela includa em uma ajuda de pesquisa deve ter relacionamentos com
chave estrangeira
C. Projection views podem ter mais que uma tabela includa para a definio da
view
D. No pode usar pooled ou cluster tables para banco de dados.
13. Voc pode criar projection views para pooled ou cluster tables.
A. Verdadeiro
B. Falso
251
Tabelas transparentes podem incluir somente flat structure. Uma deep structure
no pode ser usada.
2. Resposta correta: B
Pode ser usado tipo de dados do Dicionrio ABAP para definio de domnio. Tipo
de dados ABAP no pode ser usado para definio de domnio.
3. Resposta correta: A, D
Uma rotina de converso pode ser atribuda para o domnio e no pode ser
atribuda para um elemento de dados. O valor de range atribudo para um domnio
durante sua definio e no no elemento de dados. Entretanto, o elemento de dados
herda o valor do range se isto est atribudo para um domnio como uma definio de
valor de range. A documentao fornecida durante a definio do elemento de
dados.
4. Resposta correta: A
F1 Help mostra a documentao do elemento de dados
5. Resposta correta: A, B, C
Os atributos tcnicos do elemento de dados so definidos pelo domnio. O tipo de
dados para o elemento de dados pode ser pr -definido tipo de Dicionrio ABAP ou
domnio ou uma referencia de tipo de dados. O nome do campo definido somente
pelo elemento de dados.
6. Resposta correta: A
Pode ser definido uma ajuda de pesquisa e parameter ID para o elemento de
dados.
7. Resposta correta: A
O tipo de linha para o tipo de tabela do Dicionrio Abap pode ser uma estrutura
complexa. Pode ser flat, deep ou nested structure.
8. Resposta correta: A, B, D
Campos de tabelas podem ser atribudos para elemento de dados ou tipo prdefinido diretamente. Ajuda de pesquisa no pode ser definida por um campo de
tabela atribudo para tipo de dados pr-definidos, mas por campos atribudos por
elementos de dados. A tabela de referencia e o campo so requisitos para o campo de
tabela atribudo para o tipo QUAN e CURR. O tipo do campo de referencia deve ser
UNIT e CUKY.
9. Resposta correta: B, C, D
252
O mtodo de seleo para ajuda de pesquisa pode ser uma tabela transparente
view de banco de dados ou help view. No possvel ter uma view de manuteno
como um mtodo de seleo para a ajuda de pesquisa.
10. Resposta correta: A, B, C, D
A interface para a ajuda de pesquisa definida pelos parmetros import e export
do parmetro da ajuda de pesquisa. LPos define a posio do parmetro sobre alista
de dicas, assim como SPos define a posio do parmetro sobre o campo de entrada.
A table text automaticamente atribuda para mtodos de seleo se isto atribudo
para selecionar tabelas transparentes do mtodo de seleo.
11. Resposta correta: A, B
Uma view de banco de dados implementada como uma inner join, assim como
uma view de manuteno implementada com um outer join.
12. Resposta correta: A, B, D
Tabelas includas na view de manuteno e help view devem ter uma chave
estrangeira. No possvel usar tabelas pooled e cluster para a view de banco de
dados. Projection views pode incluir apenas uma tabela para a definio da view e
pode incluir tabelas pooled ou cluster para definies de views.
13. Resposta correta: A
Uma projection view pode incluir tabelas pooled ou cluster para definies de
view.
Leve Consigo
Voc deve entender os vrios objetos e servios do Dicionrio ABAP. Voc deve
ser capaz de explicar os conceitos de domnio, elemento de dados, tipos de tabela,
estruturas, tabelas, ndices e views. Voc deve ser capaz de distinguir os diferentes
tipos de views e seus usos.
Voc tambm deve conhecer os conceitos do objeto de bloqueio e suas definies
e o uso de ajuda de pesquisa. importante conhecer cada tipo de objeto que pode ser
usado para o mtodo de seleo da ajuda de pesquisa. Tambm conhecer a diferena
entre ajuda de pesquisa elementary e collective e o passos para cria-la.
Objetos de bloqueio importante para o desenvolvimento de qualquer aplicao
voc deve ser capaz de criar e usar os objetos de bloqueio.
Lembrete
Voc deve entender os objetos do Dicionrio ABAP e os servios suportados, que
so objetos de bloqueio e ajuda de pesquisa. Voc deve ser capaz de definir domnios,
elementos de dados, estruturas e tipo de tabelas e tabelas transparentes. Voc deve
conhecer os tipos de dados suportados para o domnio e a definio de elemento de
253
dados e os conceitos do valor da tabela e o valor do range e o uso de definio de
domnios. Isto importante para entender como objetos do Dicionrio podem ser
usados em um programa ABAP e seus escopos.
Voc tambm deve entender a diferena entre outer join e inner join e cada tipo de
join para implementar os diferentes tipos de view.
Tabela 10.4 Mostra os conceitos chaves do Dicionrio ABAP
Key
Concept
Domnio
Definition
Sumrio
Agora voc capaz de definir objetos do Dicionrio ABAP e usa-los em seu programa
ou aplicao. Deve saber como bloquear tabelas ou registros dentro de uma
aplicao. Por ltimo, voc deve ser capaz de definir ajuda de pesquisa elementary ou
collective e saber como aprimorar uma ajuda de pesquisa standard. O conhecimento
do Dicionrio ABAP e suas funes sero utilizadas para passar por este tpico na
certificao.
254
11 - Unicode
Tcnicas que voc ir dominar:
255
Neste captulo voc ir receber o conhecimento de como fazer seu programa
ABAP Unicode. Unicode destinado a ser um carcter universal complacente.
Unicode definido para ser um carcter Universal sendo suportado em todo script
usado na terra. Unicode tenta conectar um smbolo a um glifo ( uma representao
visual de carcter ) com um carcter de uma unidade de significado fontico ou
semntico. Assim, um nico carcter que tem aparncias diferentes tem mltiplos
smbolos; por exemplo, Carcteres Arbicos troca a aparncia dependendo da posio
na palavra.
Ns iremos abordar como forar a validao Unicode em um sistema no
Unicode.
Discutiremos as diferenas na maioria das mudanas nas instrues que
envolvem a verificao Unicode. Por ultimo, explicaremos a viso fragmentada do
Unicode e providenciaremos uma breve explicao de como ela funciona.
Cada um desses tpicos ser abordado separadamente e ser seguido de um
exerccio prtico e a soluo do exerccio.
Cenrio Real: Sua empresa desligou a troca entre mltiplos cdigos de paginas
quando atualizou do SAP R/3 4.6C para o SAP NetWeaver 6.40. E agora forada a
fazer pelo SAP (um sistema com cdigos misturados ou com mais de um cdigo de
pgina a partir do SAP Net Weaver 7.0 no mais suportada e requer a converso
para Unicode). Voc ficou incumbido de identificar os problemas de atualizar o sistema
SAP de sua empresa do SAP NetWeaver 6.40 para o SAP NetWeaver 7.0 e trocar
para o Unicode (em outras palavras, alterar todos os dados caracteres armazenados
no banco de dados para Unicode) como parte do processo de migrao.
sua responsabilidade identificar quais programas preciso de
correo antes da atualizao. Uma vez que voc tenha a lista dos programas e seus
problemas, voc dever realizar as alteraes para corrigir os problemas.
Para acelerar o processo de correo, devido ao nmero de programas que
podem ser afetados, tambm lhe foi pedido que explicasse o processo e as mudanas
necessrias nos programas para todo o time de desenvolvimento, para que todos os
membros da equipe possam realizar as alteraes e aprendam as regras pois os
novos desenvolvimentos devem ser Unicode.
256
Conceitos Chave
Se voc desenvolveu nas releases 6.20 ou posteriores, voc j conhece a
maior parte deste captulo. Eventualmente, a expectativa que todas as
implementaes SAP estejam rodando sistemas compatveis com Unicode.
Assim como com varias outras novas funcionalidades, a SAP prov as
ferramentas ( especificamente a transao UCCHECK e o atribute de programa para
forar Unicode) e o encoraja a utiliz-las. A aceitao prematura das ferramentas e
regras de compatibilidade fara a eventual converso ocorrer tranquilamente, pois voc
ser capas de se focar na converso dos dados sabendo que o programa se
comportar corretamente. Voc precisa enter os seguintes tpicos para criar
programas ABAP compatveis com o Unicode:
Compatibilidade Unicode
Antes do release 6.10, a SAP suportava diferentes cdigos para representar
caracteres de diferentes fontes, por exemplo, ASII, EBCDIC, e pginas de cdigo de
byte nico ou de byte duplo:
257
portanto pode representar apenas 128 caracteres. A extenso para 8 bits foi
introduzida com a a ISO-8859).
EBCDIC (Extended Binary Coded Decimal Interchange) tambm codifica cada
caractere usando um byte e pode, portanto, representar 256 caracteres.
Pginas de cdigos de byte duplo requerem entre 1 e 2 bytes por caractere.
Isso permite a representao de 65,536 caracteres, dos quais apenas de 10 a
15 mil so normalmente usados. Por Exemplo, a pgina de cdigo SJIS
usada para o Japons, e a BIG5 usada para fontes do Chins tradicional.
258
Verificao Unicode ativa pode ser selecionado nas caractersticas do programa
(veja o exemplo da figura 11.2) a partir do release 6.10. As caractersticas do programa
so exibidas atravs do menu IR PARA CARACTERISTICAS no editor ABAP.
A transao UCCHECK suporta a ativao desta validao para os programas
existentes. Se esta propriedade estiver definida, o programa identificado como sendo
um programa Unicode. Para um programa Unicode, a validao de sintaxe mais
restritiva do que a para um programa no Unicode. Em alguns casos, as instrues
devem ser incrementadas usando as novas adies. Um programa Unicode
sintaticamente correto normalmente rodar com a mesma semntica e resultado em
um sistema Unicode e no Unicode. (Programas de baixo nvel que buscam e valido
o numero de bytes por caractere so excees a esta regra.) Programas que
necessitam rodar em ambos os sistemas devem, portanto, ser validados em ambas as
plataformas.
259
antigas e perigosas so declarados obsoletos e no so mais permitidos para uso em
Objetos ABAP, as regras para programas Unicode tambm oferecem segurana maior
na hora da programao. Isto se aplica particularmente a armazenagem externa de
dados, em outras palavras, em arquivos. Ao criar um novo programa, a recomendao
sempre identificar o programa como sendo um programa Unicode, e programas
antigos podem ser convertidos em etapas.
Significado
Campo de Texto
c
Campo data
d
Texto numrico
n
Campo tempo
t
Cadeia de texto
string
Tabela 11.1 Objetos de dados tipo caractere
260
A viso fragmentada Unicode quebra uma estrutura em fragmentos. Um
fragmento um agrupamento de componentes da estrutura com tipos de dados
similares. Em estrutura aninhadas, os componentes elementares na ultima camada
aninhada so levados em conta ao formar os fragmentos nas estruturas aninhadas. As
seguintes partes de uma estrutura so agrupados cada para formar os fragmentos:
Em programas Unicode, uma estrutura agora s pode ser usada numa posio
de operando que espera um nico campo se a estrutura do tipo caractere. Um
exemplo disso exibido na figura 11.5. A instruo que produz o erro com a validao
Unicode mostra uma atribuio simples, porem a estrutura no considerado do tipo
caractere, pois contem um campo hexadecimal e outro numrico. A instruo acima
faz referencia a uma estrutura considerada do tipo caractere. Ela ento manipulada
da mesma forma que um objeto de dados do tipo c sem erros. Em programas no
Unicode, todas as estruturas flat e objetos de dados do tipo byte tambm so
manipulados como objetos de dados do tipo caractere (casting implcito).
261
Nota: O uso incorreto de uma estrutura na posio de operando grandemente
restrito em programas Unicode. Por exemplo, uma estrutura que contem um
componente numrico no pode ser utilizada numa posio de operando numrico.
Em programas Unicode, objetos de dados elementares dos tipos x e xstring
so do tipo byte. Em programas no Unicode, objetos de dados geralmente so
manipulados como tipo caractere.
Alguns tipos de dados, como tipos de dados numricos, que no sejam p, e os
tipos de dados profundos possuem requisito de alinhamento que dependem da
plataforma de hardware. Campos na memoria que possuam um destes tipos devem
iniciar em endereos que podem ser divididos por 4,8,ou 16. Em sistemas Unicode,
alm do requisitos de alinhamento para objetos de dados numricos, os tipo i e f e
todos os objetos de dados profundos e objetos de dados caractere devem ser
localizados em endereos de memoria que possam ser divididos por 2 ou 4,
dependendo da representao de caractere Unicode. Como consequncia, em
estruturas com componentes de diferentes tipos de dados, as lacunas de alinhamento
nos sistemas Unicode pode ser diferente daquelas em sistemas no Unicode. Lacunas
de alinhamento tambm podem ocorrer no final das estruturas pois o tamanho total da
estrutura determinado pelo componente com o maior requisito de alinhamento.
Cuidado: Em programas Unicode, armazenar cadeias de byte em containers do tipo
caractere causam problemas pois a ordem dos byte em sistemas Unicode
dependente de plataforma. Em sistemas no Unicode, isto apenas se aplica para
objetos de dados de tipos numricos. O contedo do objeto de dados interpretado
incorretamente se o container deste tipo armazenado e ento importado para um
outro servidor de aplicao com uma sequencia de byte diferente.
Inicio e comprimento so especificado adicionando [+inicio][(comprimento)] ao
nome do objeto de dados na posio do operando, e as especificaes so usadas
para acessar sub-reas do objeto de dados. Este tipo de programao no mais
totalmente possvel em sistemas Unicode, pois no possvel definir se o inicio e
comprimento deve ser especificado em caracteres ou bytes. Alm disso, algumas
restries foram introduzidas para negar o acesso a reas de memria fora dos
objetos de dados flat.
A especificao de inicio e/ou comprimento so permitidas para objetos de
dados do tipo byte e caractere. A especificao de inicio e comprimento interpretada
tanto como nmero de caracteres ou bytes. As regras para determinar quais objetos
de dados em programas Unicode contam como tipo caractere ou byte no permitem a
especificao de inicio e comprimento pra objetos de dados de tipos numricos.
Nota: O mtodo de usar objetos de dados do tipo c como container para armazenar
estruturas de diferentes tipos, que normalmente s sero conhecidos em tempo de
execuo, onde os componentes so acessados usando o inicio e comprimento, no
mais possvel em programas Unicode. Ao invs destes containers, a instruo CREATE
DATA pode ser usada para gerar objetos de dados de qualquer estrutura. Para
acessar containers existentes, eles podem ser atribudos a um field symbol usando a
adio CASTING a instruo ASSIGN.
262
Em Unicode, a especificao do inicio e/ou comprimento para uma estrutura s
permitida se a estrutura for:
263
Nota: Duas estruturas s so compatveis em programas Unicode quando todas as
lacunas de alinhamento so idnticas em todas as plataformas. Isto se aplica em
particular para lacunas de alinhamento criadas por estruturas includas.
Em programas no Unicode, estruturas flat incompatveis so tratadas como
objetos de dados do tipo c, mas em programas Unicode, regras de converso se
aplicam usando a viso fragmentada Unicode das estruturas. Em programas no
Unicode, estruturas flat so tratadas como objetos de dados do tipo c para uma
atribuio de ou para um objeto de dados elementar. Entretanto, novamente em
programas Unicode, a regra de converso se aplica dependendo se a estrutura for do
tipo caractere completamente ou pelo menos o fragmento inicial.
Como na atribuio, a comparao de duas estruturas no tratado como
comparao de campos c, mas de acordo com suas vises fragmentadas Unicode
( veja a figura 11.5 para um exemplo). O mesmo verdadeiro quando comparamos
uma estrutura com um objeto de dados elementar. O sistema verifica novamente se a
estrutura completamente do tipo caractere ou ao menos seu fragmento inicial.
Desde a release 3.0, As estruturas e tabelas do banco de dados do dicionrio
ABAP que so feitas pela SAP podem ser ampliadas com includes do cliente ou
estruturas append. Tais mudanas causam problemas em programas Unicode se as
ampliaes alterem a viso fragmentada Unicode. Entretanto, a opo de classificar
estruturas e tabelas de banco de dados introduzida na release 6.20, que tornou
possvel reconhecer e manipular problemas relacionados com ampliaes de
estruturas. Esta classificao usada durante a validao do programa para gerar um
aviso em todos os pontos em que se trabalha com estruturas, e onde futuras
ampliaes na estrutura podem causar erros de sintaxe ou mudanas no
comportamento do programa. Quando voc define uma estrutura ou tabela do banco
de dados no dicionrio ABAP, voc pode especificar a categoria de ampliao.
O dialogo mostrado na figura 11.8 encontrado no menu Suplementos
Categoria de ampliao... ao editar uma tabela, viso ou estrutura. Os significados das
diferentes configuraes esto explicados na tabela 11.2.
SIGNIFICADO DA CATEGORIA
A estrutura no possuis uma categoria de
ampliao
A estrutura no pode ser ampliada
264
Amplivel e em forma de caractere
265
enquanto XSTRLEN est disponvel para argumentos do tipo byte. Ento voc deve
usar:
lv_clen = STRLEN( lv_text ).
para um campo caractere e
lv_blen = XSTRLEN( lv_hex ).
para uma cadeia de bytes.
Quando objetos de dados estruturados so usando nas instrues Open SQL,
em um programa no Unicode, suas estruturas no so levadas em conta; apenas o
comprimento e o alinhamento so verificados. Em um programa Unicode, para
workareas estruturadas, a viso fragmentada Unicode deve ser correta e workareas
elementares devem ser do tipo caractere.
Devido ao fato do contedo dos arquivos frequentemente refletir a estrutura
dos dados na memoria, a interface de arquivos em um programa Unicode deve
preencher os seguintes requerimentos:
Por conta disso, em programas Unicode, voc sempre deve definir a pgina de
cdigos usada para codificar os dados do tipo caractere que so escritos em arquivos
de texto ou que so lidos de arquivos de texto.
Voc tambm deve considerar que um programa Unicode deve ser executvel
em um sistema no Unicode tanto como num sistema Unicode. Algumas das regras de
sintaxe para a interface de arquivos foram portanto modificadas para que a
programao de acesso ao dados em Unicode fosse menos propensa a erro do que
nos programa no Unicode.
Antes de qualquer acesso de leitura ou escrita, o arquivo deve ser aberto
explicitamente usando OPEN DATASET. Se um arquivo j estiver aberto, ele no pode
ser aberto novamente. Em um programa no Unicode, da primeira vez que um arquivo
acessado ele implicitamente abre o arquivo usando a configurao padro. A
instruo para abrir um arquivo pode ser usada para abrir um arquivo em programas
no Unicode, mesmo que um arquivo s possa ser aberto uma vez dentro do
programa. Ao abrir o arquivo, o tipo de acesso e o tipo de armazenamento devem ser
especificados explicitamente usando as adies INPUT | OUTPUT | APPENDING |
UPDATE e [LEGACY] BINARY | TEXT MODE.
Ao abrir um arquivo no TEXT MODE, a adio ENCONDING deve ser usada
para especificar a representao dos caracteres. Ao abrir um arquivo no LEGACY
MODE, a ordem de byte (endian) e uma pgina de cdigos no Unicode deve ser
especificada. Em programas no Unicode, se nada for informado, o arquivo aberto
266
usando implicitamente a configurao padro. Um exemplo usando a instruo
enconding :
OPEN DATASET gv_filelist
FOR INPUT IN TEXT MODE ENCODENG DEFAULT.
Se um arquivo for aberto para leitura, o contexto pode ser apenas lido. Em
programas no Unicode tambm possvel obter acesso a estes arquivos.
Se um arquivo aberto com arquivo texto, apenas o contedo de objetos de
dados do tipo caractere pode ser lido ou escrito. Em programas no Unicode
objetos de dados de tipo byte e numricos tambm so permitidos.
Teminologia Importante
Objetos de dados elementares dos tipos x e xstring so do tipo byte, e os
seguintes objetos de dados elementares so considerados do tipo caractere: c, d, n, t,
string. Estruturas em Unicode so agrupadas por componentes do mesmo tipo ou de
tipos similares, o que produz uma viso fragmentada. Fragmentos podem tambm ser
baseados nas lacunas de alinhamento.
Questes Prticas
As questes iro ajudar a avaliar o seu entendimento sobre o tpico. As questes
so similares s encontradas no exame de certificao, mas nenhuma delas poder
ser encontrada no teste, eles servem para avaliar o seu conhecimento sobre o tpico.
Selecione as corretas e depois verifique com as solues apresentadas a seguir.
Lembre-se que voc deve selecionar todas as respostas corretas e somente as
questes inteiramente corretas recebem o crdito de questo correta.
267
d. No pode ser forada.
2. Os requerimentos de memria so idnticos para um sistema no Unicode e um
sistema Unicode.
a. Verdadeiro
b. Falso
3. A diferena entre um programa Unicode e um no Unicode :
a. Objetos de dados do tipo byte no podem ser atribudos a objetos de dados
do tipo caractere.
b. Objetos de dados do tipo byte no podem ser comparados com objetos de
dados do tipo caractere.
c. Posicionamento do incio em uma estrutura Unicode restrito a objetos de
dados caractere.
d. Posicionamento do incio em uma Estrutura Unicode restrito a objetos de
dados flat.
4. Duas estruturas, em programas Unicode, s sero compatveis se todas as
lacunas de alinhamento forem idnticas em todas as plataformas.
a. Verdadeiro
b. Falso
5. A categoria de ampliao para uma tabela do banco de dados ou estrutura:
a.
b.
c.
d.
268
1. Resposta corretas: A, B
A SAP prov as ferramentas para executar e forar a validao Unicode
antes da converso propriamente dita. A habilidade de forar validao Unicode
existe em qualquer release a partir da 6.10 (quando o Unicode passou a ser
suportado) sem a necessidade de realmente converter para Unicode. A
recomendao ligar a validao quanto antes possvel para minimizar o numero
de mudanas para desenvolver os programas. melhor desenvolver novos
programas corretamente do que possivelmente introduzir um problema quando for
necessrio voltar para realizar uma mudana no programa depois.
2. Resposta correta: B
No, os requerimentos de memria sempre sero maiores em sistemas
Unicode devido tamanho maior dos caracteres. Dependendo do mtodo de
codificao, pode ser menor mas o requerimento ser maior.
3. Respostas corretas: A, B, C, D
Devido as regras de tipo byte e tipo caractere, em sistemas Unicode
apenas campos tipo byte podem ser atribudos ou comparados a outros campos
do tipo byte. Posicionamento do incio restrito a objetos de dados flat ou objetos
de dados caractere.
4. Resposta Correta: A
Em programas Unicode, duas estruturas s so compatveis quando todas
as lacunas de alinhamento so idnticas em todas as plataformas. Isto se aplica
em particular para lacunas de alinhamento criadas por estruturas includas.
5. Respostas corretas: B,C,D
A categoria de ampliao torna possvel reconhecer e manipular problemas
relacionados a ampliaes de estruturas. Esta classificao usada durante a
validao do programa para criar avisos em todos os pontos onde ele trabalha
com estruturas, e onde futuras ampliaes na estrutura podem causar erro de
sintaxe ou mudanas no comportamento do programa.
6. Resposta Correta: A
Em um sistema Unicode voc deve especificar a adio ENCODING ao
abrir um arquivo (dataset).
7. Respostas Corretas: B,C
Em um sistema no Unicode voc deve especificar a ordem do byte e a
pgina de codificao ao abrir um arquivo (dataset).
Leve Consigo
Voc vai precisar entender o que Unicode e porque necessrio em um
ambiente global. Voc deve ter conhecimento das diferenas entre os objetos de
dados em um sistema no Unicode e objetos de dados em um sistema Unicode. Voc
deve ter uma compreenso da adio das declaraes existentes e quais as
alteraes a validao de sintaxe so aplicadas em Unicode.
269
Lembre-Se
Voc precisa entender os diferentes tipos de objetos de dados que produzem
tanto um objeto de dados do tipo byte ou um objeto de dados do tipo caractere ou uma
estrutura e como a viso de fragmentos restringem certas tarefas ou comparao.
Voc tambm vai precisar entender o que as restries para o processamento do
arquivo existem com Unicode.
CONCEITOS CHAVES
Tipo de Byte
DEFINIOES
Objeto de dados elementares do tipo x e
xstring so tipos de byte.
Tipo de caractere
O seguinte objeto de dados elementares
so agora tipos de caracteres
c,d,n,t,string
Viso de fragmento
Um fragmento um grupo de
componentes da estrutura do mesmo ou
semelhante tipo de dados
Tabela 11.3 Relembre-se dos conceitos chaves
Dicas
Considerando que a grande maioria dos conceitos apresentados neste capitulo
devem ser uma segunda natureza, especialmente se voc tiver programado em SAP
release 6.20 ou posterior, importante que voc entenda as diferenas de
comportamento das atribuies, comparaes, e processamento de arquivos.
Sumario
Agora voc deve ser capaz de fazer um programa ABAP compatvel com
Unicode. Agora voc tem uma compreenso dos problemas potenciais relacionados
com objetos de dados e processamento de arquivo. Este conhecimento ira permitir
que voc passe com xito por esta parte do exame de certificao.
270
12 - Telas Clssicas
Tcnicas que voc vai dominar
271
Um programa de dilogo orientado consiste em telas, o status GUI, um ttulo
GUI, e um programa ABAP.
Cada caixa de dilogo no sistema controlado por uma ou mais telas. As telas
tm um layout que determina a posio de entrada / sada campos e outros
elementos grficos como caixas de verificao e botes de rdio.
Criar um layout de tela usando o Painter Screens no ABAP Workbench. Cada
tela tem uma lgica de fluxo que influencia o fluxo do programa. A lgica do
fluxo consiste em processo Antes de sada (PBO) e Processo Aps a lgica de
entrada (PAI) e, opcionalmente, Processo de Pedido de Ajuda (POH) e
Processo de Solicitao de Valor (POV) para qualquer ao necessria.
Cada tela tem um status GUI, que controla as barras de menu, barras de
ferramentas padro, e a aplicao de barras de ferramentas com as quais o
usurio escolhe a funo do aplicativo.
O ttulo GUI usado para definir o ttulo para uma tela. Isto especialmente
importante se houver mais de uma tela em uma sequncia de telas dentro de
uma caixa de dilogo GUI.
Um programa ABAP contm o mdulo de dilogo que chamado pela lgica
do fluxo de tela e processa a entrada do usurio do status GUI. Programas do
tipo M so os recipientes de mdulos de dilogo e, portanto, so conhecidos
como pool de mdulos e s podem ser iniciados usando cdigos de transao.
272
(processo a pedido de valor). Voc deve ser capaz de lidar com o fluxo de transaes
com base em aes do usurio.
O exame de certificao dar peso mnimo para este captulo em comparao
com todos os outros topicos do exame. Isto significa que este captulo est entre
aqueles onde a percentagem de questes relacionadas ao tpico menor que os
captulos anteriores. A razo dada ao peso mdio que h menos de uma chance de
que voc teria que escrever programa de dilogo personalizado em um projeto.
Conceitos-Chave
Voc precisa entender o conceito de programao de dilogo para criar uma
transao de dilogo. Programao de dilogo consiste em tela, status GUI, ttulo GUI,
programa conjunto de mdulos e de transao. Voc tem que criar um programa
conjunto de mdulo, tela, status GUI, ttulo GUI, e cdigo de transao para executar
um programa de dilogo.
Para desenvolver uma transao de dilogo voc tem que usar o pintor de tela
para projetar as telas e preencher os atributos da tela. Voc tambm tem que escrever
a lgica de fluxo de tela para controlar a transferncia de dados da rea da tela para o
programa ABAP e vice-versa.
Na lgica do fluxo de tela, voc tem que escrever o cdigo para o processo de
pedido de ajuda e processo de pedido de valor. O processo antes do evento de sada
acionado antes que a tela exibida, ento geralmente voc deve preencher os
campos da tela com valores padro, e definir o status GUI e ttulo da tela no processo
antes bloco evento de sada. O processo, aps evento de entrada acionado quando
o usurio executa alguma ao na tela, como: clicando em um boto, selecionando um
item de menu, pressionando enter ou selecionando uma funo na tela. voc escreve
o cdigo para o processo aps o bloqueio evento de entrada para interpretar a ao
do usurio, validar entradas do usurio e controlar o fluxo da transao em
conformidade.
De forma similar, o processo de pedido de ajuda e processo de pedido de valor
so os eventos que so acionados quando o usurio seleciona ajudar a F1 para um
elemento de tela ou valor, pedidos de ajuda via F4 para um campo de tela.
Nota: voc pode escrever o cdigo para fornecer sua ajuda F1 e F4 no proprio
processo de pedido de ajuda e no processo de valor de bloco evento pedido, mas
lembre-se que a ajuda F1 geralmente vem de um elemento de dados e que a entrada
F4 pode ser fornecida pela busca de ajuda.
Design De Tela
Programas ABAP ou transaes de dilogo usa as telas para interagir com o
usurio. As telas para a programao de dilogo so criadas com o pintor tela. Telas
de seleo so criadas para um programa executvel com instrues ABAP
declarativa para obter entrada do usurio para o programa. Voc no tem que definir a
273
lgica do fluxo de tela para telas de seleo, enquanto que para as telas de dilogo
que voc faz. Telas em mdulo de piscinas s podem ser resolvidas usando as
transaes de dilogo.
Seleo De Telas
A tela de seleo de padro para programas executveis ABAP chamado e
controlado pelo ambiente de execuo do ABAP; telas de seleo sero discutidas em
detalhe no captulo 13, telas de seleo. Neste captulo iremos discutir telas de
dilogo, que so criados com o Screen Painter. Voc pode criar telas para serem
usadas em qualquer programa do tipo 1 (programa executvel), M (mdulo pools) e F
(grupos de funes).
Um programa pode consistir de uma nica tela ou uma seqncia de telas.
Voc pode comear uma nica tela ou inicie uma seqncia de telas de programa
ABAP usando a declarao Tela de Chamadas.
Para as telas em um programa de modulo piscina do tipo M, a tela de incio
especificada no cdigo de transaco que atribuir ao modulo piscina. A tela padro
seguinte definida na tela do pintor para todas as telas de dilogo, mas este pode ser
substitudo de forma dinmica dentro do programa, especificamente na lgica do fluxo
PAI (processo aps entrada) para a tela.
A tela uma forma de dilogo entre o usurio e o programa. A tela pode conter
vrios elementos para permitir que o usurio interaja com o programa ou para exibir o
contedo do campo. A tela de dilogo tpico consiste de elementos da tela, como
entrada/sada campos, botes, botes de rdio, caixas e lgica de fluxo de tela. A
lgica do fluxo de tela constitudo por processo antes da sada, processo aps
entrada, processo em pedir ajuda e processo em blocos o valor do evento pedido.
A lgica do fluxo de tela deve conter pelo menos o processo antes e aps o
processo de blocos de entrada. Cada tela tem sua lgica prpria de fluxo que se
chama mdulos de dilogo no programa ABAP para preparar os dados para exibio
na tela ou para processar as entradas do usurio. Geralmente, voc deve preparar os
dados ou modificar a exibio da tela no processo antes do bloco de sada de evento e
reagir ao do usurio no processo aps o bloqueio evento de entrada. Voc pode
definir a F1para o campo da tela no processo de ajudar a solicitao de eventos e
ajudar no processo de valor sobre o valor pedido-evento, mas recomendvel que
voc use a ajuda F1 e ajudar a valores (entradas possveis) a partir do Dicionrio
ABAP. Voc pode escrever sua prpria ajuda F1 e F4 de entrada nica ajuda se voc
quiser substituir a ajuda do Dicionrio ABAP. Por isso, o processo com a ajuda de
solicitao e processo em blocos do valor pedido-evento so opcionais.
Pintor De Tela
Cada tela tem um status GUI, contendo a barra de menu, barra de ferramentas
padro e, opcionalmente, uma aplicao da barra de ferramentas. O status GUI
tambm contm os cdigos de funo para cada uma das funes nos menus e barras
de ferramentas. Voc deve criar um ttulo GUI para cada tela. Isso ajuda o usurio,
especialmente se voc tiver uma seqncia de vrias telas. Voc tambm pode criar
274
um ttulo GUI para a tela de forma dinmica dentro do programa. O status GUI e ttulo
sero discutidos em detalhe mais tarde neste captulo.
Voc pode projetar o layout da tela com o Pintor de tela. O Pintor de tela tem
um editor de layout que tem um modo grfico e um modo alfanumrico. Ambos os
editores oferecem a mesma funcionalidade, mas com interfaces diferentes. O modo
grfico fcil de usar e utiliza uma interface de arrastar e soltar, enquanto que com o
editor alfanumrico voc usa menus e o teclado para projetar a tela. Voc pode
alternar entre os dois modos atravs do menu Utilitrios caminho / Configuraes /
Layout Grfica. Editor. O Pintor de tela pode ser acessado a partir da bancada ABAP
ou via transao SE51.
Voc define os atributos da tela, layout de tela, e a lgica de fluxo no pintor tela.
Os atributos de tela descrevem as propriedades da tela como um todo e seu
comportamento em tempo de execuo. Figura 12.1 (pgina 348) apresenta o atributo
de tela na tela do pintor.
Programa
Cada tela associada a um programa ABAP. O tipo de programa pode
ser 1, M ou F. Se voc criar a tela do programa em si, esta ser preenchida
automaticamente. O nome do programa aparece como o ttulo da tela (ver
figura 12.1).
Texto curto
275
Um pequeno texto significativo para a tela.
Nmero de tela
O nmero da tela pode ser at quatro dgitos, e deve ser um nmero
nico dentro do programa de recipiente.
Tipo De Tela
O tipo de tela pode ser uma tela normal, ou caixa de dilogo. A tela
normal ocupa a janela GUI toda, enquanto a caixa de dilogo ocupa apenas
uma parte da janela GUI. Subtelas sero exibidas em uma rea de subtela de
outra tela.
Prxima Tela
Isso define o padro de tela seguinte na seqncia de telas. A tela ir
ser chamada se o nmero da prxima tela o mesmo que o nmero da tela
atual. Voc define a tela atual como a ltima tela da cadeia, deixando o campo
em branco ao lado da tela ou o valor de 0 (zero). O nmero da tela seguinte
pode ser dinamicamente alterado dentro do programa para substituir o nmero
da tela definida estaticamente. Em tempo de execuo o nmero da tela
armazenado na varivel do sistema. O nmero tela seguinte pode ser alterado
dinamicamente no processo aps a lgica do fluxo de entrada pela instruo
SET SCREEN. <screen_no>
A Posio Do Cursor
Isto define a posio do cursor quando a tela exibida. Por padro, o
cursor posicionado sobre o primeiro campo de entrada na tela. Voc tambm
pode especificar dinamicamente a posio do cursor dentro do programa.
Layout Da Tela
O prximo passo ao criar a tela definir o layout da tela. Voc pode colocar de
entrada / sada campos, textes, botes, checkboxes, botes de rdio, controles de
tabela, controles tabstrip, e assim por diante na tela. Elementos da tela podem ser
definidos atravs da adoo dos atributos e dos campos do dicionrio ABAP, ou voc
pode usar um objeto de dados definidos no seu programa. Geralmente, voc cria o
elemento da tela do dicionrio ABAP, pois desta forma voc tem acesso aos rtulos de
campo, ajudar a entrada, documentao, e assim por diante. O layout da tela pode ser
projetado em tela grfica do pintor. Figura 12.2 (pgina 350) exibe o layout de tela em
tela do pintor.
276
277
O botao dicionrio / programa de campos abre uma nova janela para
criar os elementos de tela e de entrada / sada campos com referncia ao
dicionrio e campos de programa (ver figura 12,4 pgina 352).
Lista de elementos
O boto mostrar a lista de elementos, abre uma nova janela para
mostrar todos os elementos de tela disponveis que pertencem a tela, incluindo
os seus atributos para manuteno. Figura 12.5 (pgina 352)
278
campo e passado ao programa ABAP. Passado no cdigo de funo (ou OK), voc
controla o fluxo do programa e define o que ir acontecer depois.
Voc pode tambm declarar uma estrutura do dicionrio como Work Area
usando a instruo TABLES no programa ABAP. Isto permite que o contedo
dos campos da tela sejam automaticamente copiados no programa ABAP com
o respectivo nome do campo.
279
Palavra-chave
Funo
MODULE
FIELD
ON
VALUES
CHAIN
ENDCHAIN
Comea
processamento
uma
cadeia
de
Termina
uma
cadeia
de
280
processamento
CALL
LOOP
ENDLOOP
PROCESSAMENTO DE TELA
O processador ABAP controla o fluxo do programa dentro de um mdulo, e o
processador Dynpro/tela controla o fluxo lgico e prepara os dados para serem
mostrados na tela. Para uma tela e este programa ABAP estarem habilitados para
comunicao, a tela e o campo do programa ABAP podem ser identificados. Quando
este o caso, o contedo do campo de tela transportado ao programa ABAP e viceversa. Voc deve usar as estruturas do dicionrio ou campos de programas para
definir os elementos de tela e campos de entrada e sada e declarar a estrutura do
dicionrio como uma workarea no programa usando a instruo TABLES. Isto certifica
que o contedo dos campos da tela ser copiado automaticamente da tela para o
objeto de dados ABAP com o mesmo nome e vice-versa.
Os contedos das workarea ABAP so copiados para seus campos de tela
correspondentes depois de todos os mdulos a serem definidos no bloco de
processamento PBO tenham sidos executados. Da mesma forma, o sistema copia o
contedo dos campos de tela para seus campos correspondentes em workarea ABAP
antes do primeiro mdulo no bloco de processamento PAI ser executado, a menos que
este transporte tenha sido atrasado pelo uso da instruo FIELD.
Quando uma tela processada, o evento PROCESS BEFORE OUTPUT
acionado, e o bloco de evento correspondente no fluxo lgico de tela executado, e
ento a tela mostrada. O evento PROCESS AFTER INPUT acionado e o bloco de
evento correspondente executado quando o usurio seleciona um cdigo de funo
na tela, por exemplo, clicando no boto, selecionando uma entrada de menu,
pressionado uma tecla de funo no teclado, ou apenas apertando ENTER. Se o
usurio chama uma ajuda de campo pressionando F1 ou ajuda de valor pressionando
F4, isto aciona o evento PROCESS ON HELP-REQUEST e PROCESS ON VALUEREQUEST.
PBO o processo referente preparao de tela, talvez fornecendo valores
padres para os campos da tela que podem ou no podem vir do banco de dados, e
definir o status GUI e ttulo GUI. O evento PAI acionado quando o usurio interage
com a tela, talvez clicando em um boto na tela, selecionando uma funo do menu,
toolbar padro, ou toolbar de aplicao, pressionando uma tecla de funo no teclado
e por a vai. O cdigo de funo passado para o OK_CODE do campo de tela da lista
de elementos e passado para o campo de nome idntico no programa ABAP.
281
Ns temos discutido que voc pode chamar os mdulos de dilogo ABAP do
fluxo lgico de tela usando a instruo MODULE. Voc pode tambm chamar mdulos
de dilogo ABAP de maneira controlada usando a instruo FIELD no fluxo lgico de
tela (ver Cdigo 12.3).
PROCESS BEFORE OUTPUT.
MODULE init_screen_100.
PROCESS AFTER INPUT.
MODULE user_command_0100.
MODULE module_1.
FIELD box2.
MODULE module_2.
FIELD: box1, box3.
MODULE module_3.
Cdigo 12.3 controle de Dilogo ABAP
FIELD
A instruo FIELD usada nos blocos de evento PAI, POH e POV. Isto no tem
nenhum efeito sobre o bloco de evento PBO e, portanto, no deve ser usado no bloco
de eventos PBO. Isto pode ser usado com mdulos PAI para verificao de entrada
em campos de tela. O Campo de entrada referente a palavra chave FIELD ser lido
para re-entrada se o mdulo definido para a instruo FIELD resultar em um erro ou
mensagem de warning. Voc pode tambm chamar o mdulo de dilogo ABAP
condicionalmente usando o adicional ON INPUT ou ON REQUEST com a instruo
FIELD.
CHAIN...ENDCHAIN
282
PROCESS BEFORE OUTPUT.
MODULE init_screen_9001.
PROCESS AFTER INPUT.
MODULE cancel AT EXIT-COMMAND.
FIELD input1 MODULE module_1.
FIELD input2 MODULE module_2.
FIELD input3 MODULE module_3.
CHAIN.
FIELD input4.
MODULE chain_module_1.
FIELD input5.
FIELD input6 MODULE chain_module_2.
ENDCHAIN.
MODULE execution.
Cdigo 12.4 Verificao de entrada usando instruo CHAIN e ENDCHAIN
ON INPUT
ON REQUEST
283
O adicional ON REQUEST para a instruo FIELD chama o mdulo de dilogo
ABAP apenas se o usurio entrar alguma coisa no campo de entrada. O mdulo
executado tambm se o usurio entrar o valor inicial para o tipo de dados do campo de
tela ou sobrescrever um valor existente com o mesmo valor.
AT CURSOR-SELECTION
284
Voc pode validar a entrada do usurio com o fluxo lgico de tela adicionando
VALUES em uma instruo FIELD ou, verificando a tabela do banco de dados. O
Cdigo 12.8 mostra o uso das palavras chave FIELD e VALUE para validar a entrada
do usurio.
Se voc chama um mdulo usando uma instruo FIELD, quando surge uma
mensagem de erro ou warning depois de fazer verificao no mdulo, apenas os
campos de entrada mencionados anteriormente palavra chave estaro disponveis
para reentrada. O usurio deve ser permitido corrigir entradas incorretas. Este pode
estar pronto enviando uma mensagem de erro ou de aviso (ver Cdigo 12.9 e Cdigo
12.10). Com uma mensagem de alerta o usurio ter uma opo para reescrever um
valor vlido, mas pode proceder sem entrar o valor pressionando a tecla ENTER.
285
286
Por ltimo, voc pode codificar suas prprias funes de ajudas de campo F1 e
ajuda de valor para campos de tela, mas voc deve apenas fazer isso se os campos
do dicionrio que esto em sua tela no tm ajuda F1/F4 ou se voc procura
sobrescreve-los. H trs caminhos para fornecer ajuda de campo F1 para o usurio.
Voc pode usar campos do dicionrio ABAP para a definio dos elementos de tela,
em que a ajuda F1 automaticamente mostre a documentao dos elementos de
dados.
287
Se os dois mtodos anteriores para a exibio da ajuda no forem suficientes para sua
aplicao, ento voc pode mostrar a ajuda F1 dos mdulos de dilogo escrevendo
sua prpria codificao. Geralmente voc pode usar o mdulo de funo
HELP_OBJECT_SHOW_FOR_FIELD ou HELP_OBJECT_SHOW para mostrar ajuda em
vez de criar sua prpria tela em vez de desenhar em sua prpria aplicao para ajuda
de exibio. O Cdigo 12.12 mostra o fluxo lgico para ajuda F1, e Cdigo 12.13
mostra a implementao da ajuda F1 para um mdulo de dilogo.
Cdigo 12.12 Fluxo lgico de tela para ajuda F1 com mdulo de dilogo
288
PROCESS ON VALUE-REQUEST.
FIELD carrier MODULE value_carrier.
FIELD connection MODULE value_connection.
Cdigo 12.14 Fluxo lgico de tela para Ajuda de valor
289
290
ferramenta Menu Painter. O ttulo GUI usado para definir o ttulo da tela. Cada tela
deve ter um status GUI e um ttulo GUI (ver Figura 12.7). O status GUI consiste de
uma barra de menu, toolbar padro e toolbar da aplicao. Voc pode tambm atribuir
teclas de funo aos itens de menu.
291
de menu dinamicamente com o bloco de eventos PBO. Ativao e desativao de
itens de menu usado quando o mesmo status GUI usado por um nmero de telas
dentro da transao. Quando voc tem uma sequncia de telas em uma transao,
algumas opes de menu sero relevantes para algumas telas e no para outras, mas
para manter consistncia, o mesmo status GUI pode ser usado por cada tela, com
funes de menu desligadas quando elas no so relevantes.
Funes dentro de menu ou toolbars so identificadas pelos cdigos de funo.
No importa onde a funo aparece ou de onde acionada (i.e, menu, toolbar, tecla
de funo), mas o tipo da funo relevante. O atributo FUNCTION TYPE determina o
propsito da funo. O tipo de funo tambm algumas vezes chamado como Tipo
Funcional. O tipo funcional pode dizer quando e como executar o processamento da
funo. Tabela 12.2 mostra os tipos de funo vlidas para as funes que
permanecem na tela SAP.
Tipo
Significado
Blank
Para funes com tipo de funo E, o sistema executa o mdulo de dilogo que
chamado com o adicional AT EXIT-COMMAND, se um tem sido definido no bloco de
eventos PAI. A sintaxe para AT EXIT-COMMAND e o cdigo de exemplo foram
discutidos anteriormente na sesso Processamento de Tela deste captulo. O sistema
executa MODULE XXX AT EXIT-COMMAND antes da verificao automtica de
entrada e depois de alguns outros mdulos no bloco de eventos PAI. Quando uma
funo de tipo T acionada, o sistema deixar o programa chamador e chama a
transao que est para ser chamada no cdigo de funo. Este tem o mesmo efeito
que a instruo LEAVE TO TRANSACTION. A maior parte dos cdigos de funo tero
o tipo funcional Blank (' '). A Figura 12.8 mostra a tela de atributos do cdigo de
funo.
292
Uma funo pode ser criada com textos estticos ou textos dinmicos. Um
texto esttico um que especificado quando voc desenha a funo, enquanto que
com texto dinmico, um espao reservado usado que ser populado em tempo de
execuo. Para textos dinmicos voc tem que atribuir um campo a uma funo, e o
contedo deste campo ser mostrado como um texto de menu em tempo de
execuo. Voc pode atribuir um cone (atributo Nome do cone) funo se uma
funo tem um texto esttico. Um cone mostrado em vez do texto da funo se a
funo for atribuda ao boto. O Texto da Funo mostrado como texto de
informao rpida para o cone ou boto. Os contedos do atributo Texto de
Informao so mostrados na barra de status da tela quando o usurio seleciona a
funo para que cada um destes atributos seja populado. O boto mostra o cone e o
contedo do Texto do cone se o atributo do texto do cone for populado. O atributo
Caminho Rpido pode ser populado especificando um texto simples, que usado para
selecionar uma funo de menu sem usar o mouse.
293
A aplicao toolbar contem botes que so mais frequentemente usados por
funes especficas na aplicao. A aplicao toolbar pode conter mais de 35 botes
ou separadores. O padro toolbar o mesmo para cada tela no Sistema SAP. a
toolbar contm alguns botes assinalados para funes chave, tais como Save e Print.
O boto ou a funo acinzentado se a funo particular no est disponvel
para a tela. Isto controlado no Menu Painter por fazer uma funo inativa. Um
exemplo de uma funo acinzentada o cone Save se a aplicao tem a
funcionalidade para somente mostra os dados e no permite ao usurio alterar dados
na tela.
Tambm possvel assinalar funes chave para funes. Isto permitido ao
usurio selecionar o cdigo de funo usando uma funo chave em vez de um menu
ou boto. A funo chave atribudo consiste de funes chave reservada,
recomendada funes chave e livremente atribudo funes chaves.
Dica: Sempre deve ser definido cdigo de funo type E para a tela de dialogo e
cdigo para aquelas funes no dialogo module que chama p evento PAI com adio
AT EXIT-COMMAND. Isto permite aos usurios a sair de telas pela seleo do cdigo
de funo E, sem entrar com valores nos campos mandatrios da tela. Estes cdigos
de funo so padres para alguns como Back, Cancel e Exit na maioria das
transaes SAP standard na standard toolbar.
CRIANDO UMA GUI STATUS E GUI TITLE
Voc cria o GUI status e o GUI title no Menu Painter ou com o Repository
Browser. O menu painter pode ser acessado diretamente do ABAP WorkBench ou via
transao SE41. O GUI status e o ttulo so sempre programas especficos ento o
nome do programa e o nome do status GUI pode ter 20 caracteres.
Figura 12.10 mostra o Menu Painter na tela inicial do ABAP Workbench. A
primeira tela amostra o caminho do menu para o Menu Painter e a segunda tela a
tela inicial do Manu Painter. Figura 12.11 mostra o Menu Painter interface.
294
Voc cria menus bar clicando sobre o Expand Icon do menu bar. Voc cria
funes para o menu por duplo-clique sobre o menu header. Para cada menu voc
especifica a funo que consiste de um cdigo de funo e texto e opcionalmente
submenus e separadores. Os submenus podem ser de 3 nveis de profundidade. Voc
tambm pode definir um rpido caminho para cada item de menu. Um menu pode ter
at 15 entradas.
295
toolbar item pode ser anexado um cone, info texto, e um atalho, ou voc pode colocar
um separador ao invs da funo.
Voc deve atribuir uma function key para os comando de funo mais usados.
O standard toolbar gerado pelo sistema sobre ele prprio e sempre includo a
mesma funo. Items do toolbar standard podem ser desativados se no for requisito,
mas as function keys e outros atributos no podem ser mudados.
Similarmente, voc cria o GUI title com o Menu Painter. O GUI title tambm
um programa especfico e representado por um cdigo que pode ser at 20
caracteres. O texto de ttulo pode ser at 60 caracteres alfanumricos. O ttulo aparece
como ttulo da tela e pode ter at nove variveis que pode estar dinamicamente
populado no programa. O GUI title pode ser traduzido. Figure 12.12 mostra a interface
para a definio GUI title.
Nota
Em tempo de execuo o valor do ttulo da tela armazenado na varivel de
sistema SYST-TITLE.
296
Voc deve definir uma tabela interna fcode no programa principal. A sintaxe da
tabela interna de ser como:
DATA fcode TYPE TABLE OF sy-ucomm.
A seleo do cdigo de funo na tela inicia o evento PAI e baseado sobre o
cdigo de funo voc pode controlar o fluxo do programa. O cdigo de funo
colocado na varivel de sistema SY-UCOMM e no campo OK_CODE da tela, no evento
PAI. Se definir um campo com o mesmo nome do OK, o cdigo de funo ser
automaticamente copiado e poder ser, entretanto avaliado no cdigo abap. Lista
12.18 mostra um exemplo de cdigo para processar o cdigo de funo no evento PAI.
297
Lista 12.18 Cdigo para controlar o fluxo do programa para cdigo de funo
individual
298
table control selecionado para o elemento pallet do Screen Painter para criar o table
control area. Table columns para o control pode ser criado para campos do Dicionrio
ABAP ou campo de programa. Textos de Cabealho de colunas podem estar no
dicionrio ABAP associados com campos ou podem ser customizados textos definidos
como campo de tela. Os atributos de um table control e o table columns tambm tem
que ser mantidos, como fazem qualquer outro elemento da tela.
Voc pode usar o Table control Wizard para criar um table control rapidamente.
Este permite assinalar o Dicionario ABAP ou campos de um programa para colunas, a
tribuindo os atributos para as clunas de tabela, criando alguns das mesmas do screen
flow logic, geralmente o PBO relevante e os mdulos PAI para a tabela de
manuteno, e gerar a definies de dados para o tabel control no programa ABAP.
Tabela 12.3 mostra os atributos table control que voc ir especificar no Screen painter
durante o desenho da tela.
Atributo
Descrio e Uso
Tab Title
W/ColHeads
Configbl
Resizing
Separators
Line Sel.
Column
w\Sel.
Columns
Fixed
Column
299
Fluxo Lgico De Tela Para Control Table
Quando voc processa table controls, voc deve usar a instruo
LOOP....ENDLOOP no PBO e PAI no fluxo da lgica da tela. Esta instruo requerida
para cada table control sobre sua tela. Isto requisito para copiar os dados de volta a
partir do programa ABAP para os campos do table control e vice-versa.
O LOOP requerido porque o table control consiste de severas linhas. Voc
tambm pode usar a instruo LOOP AT <INTERNAL_Table>... ENDLOOP no fluxo de
lgica da tela. isto forma a instruo de LOOP atravs da tabela de tela e a tabela
interna em paralelo. Usando este form da instruo loop, o sistema transfere as linhas
da tabela interna para os campos da tela e vice-versa. Figura 12.14 mostra o fluxo de
lgica da tela sem uma tabela interna, e Figura 12.15 mostra o fluxo lgico da tela com
uma tabela interna.
O table control deve declarar no programa ABAP cada control table definido na
tela. O control flights o nome do table control da tela. O control flights o nome do
table control da tela. Esta instruo declara uma estrutura profunda para o control
table flights e isto usado para ler a tabela de atributos no programa ABAP. O tipo de
dados da estrutura profunda corresponde ao tipo SCXTAB_CONTROL e contm
300
componentes que representam os atributos do table control. O componente
CXTAB_COLUMN uma tabela do tipo SCXTAB_COLUMN e contm os atributos da
coluna do table control. Tabela interna CXTAB_COLUMN um componente da
estrutura CXTAB_CONTROL.
Figura 12.16 mostra a estrutura CXTAB_CONTROL, e a Figura 12.17 mostra a
estrutura CXTAB_COLUMN.
301
302
303
ser endereadas usando transaes de dialogo. Nesta seo ns iremos discutir os
passos para criar um programa module pool, como o seguinte:
1. Criar um programa pool de mdulos no ABAP Workbench.
2. Criar telas para um programa pool de mdulos.
3. Criar um fluxo para a tela nos eventos PBO e PAI e opcionalmente nos
eventos POH e POV se requeridos.
4. Criar mdulos PBO e PAI como blocos de processos para o evento
correspondente.
5. Criar o GUI status para avaliar as aes do usurio.
6. Criar o GUI title.
7. Criar a transao de dilogo.
304
proposto pelo sistema para o programa acima poderia ser MZDEMOO01 para mdulos
PBO e criar um include separado para cada mdulo se voc quiser. (Entretanto isto
no recomendado).
Para avanar a navegao (por duplo clique sobre o nome do mdulo na lgica
do fluxo de tela) criar um mdulo vazio no programa include para cada mdulo definido
no fluxo lgico. Isto sua tarefa para escrever o cdigo dentro do mdulo vazio
usando as instrues da linguagem ABAP. Voc tambm precisa declarar a varivel
global no programa top include, ZDEMOTOP. Isto inclu a declarao da estrutura da
tabela usada para criar os campos da tela ou definio do usurio elementos de tela
usados para criar os campos de tela. Fazendo isto garante que o contedo da tela
copiado para a rea ABAP dentro dos campos com mesmo nome.
Finalmente, voc cria uma transao de dilogo para o programa pool de
mdulos, pelo qual, no mximo, voc tem que especificar um programa de mdulo
pool, prxima transao, e tela inicial para a transao.
Terminologia Importante
Voc precisa entender a diferena entre a tela de dialogo e a tela de seleo. A
tela de seleo para programa executvel chamada e controlada pelo ABAP runtime.
Com a tela de dilogo, e voc tem como escrever o fluxo lgico.
Voc no pode usar instrues ABAP no fluxo lgico de tela. No fluxo lgico de
tela voc pode chamar de mdulo de dilogo, e dentro do mdulo de dilogo voc
pode usar instrues ABAP.
Existem quatro eventos da tela de dilogo: PBO, PAI, POV, e POH. O cdigo
dentro do evento PBO executado na antes da tela mostrado e o cdigo dentro do
bloco PAI disparado quando o usurio executa uma ao sonre a tela como uma
selecionar uma item de menu, clicar em um boto na tela, executar o enter ou
selecionar uma funo sobre a tela.
O status GUI sado para setar o status de uma tela que usado para mostrar
o menu bar, menu item, toolbar e application bar. O ttulo GUI usado para atribuir o
heading para a tela. Finalmente importante relembrar que o programa de mdulo
pool somente pode ser acessado por um cdigo de transao.
Questes Prticas
As questes prticas abaixo vo ajudar a avaliar seu conhecimento do tpico.
As questes mostram a natureza similar para aquelas encontradas no exame de
certificao, enquanto que nenhuma das questes ser encontrada no exame, elas
reservam a voc, revisar o seu conhecimento do assunto. Selecione as respostas
corretas e ento verifique as respostas na sesso de soluo. Lembre-se que voc
deve selecionar todas as questes corretas para pontuar a questo.
305
A. O atributo de tela pode ser modificado no evento PROCESS AFTER INPUT
B. O atributo de tela pode ser modificado no evento PROCESS BEFORE
OUTPUT
C. O atributo de tela pode ser modificado no evento PROCESS BEFORE
OUTPUT e PROCESS AFTER INPUT
D. n.d.a
2. A sequencia esttica da prxima tela padro pode ser estabelecido pelo valor no
atributo de tela "next screen"
A. Verdadeiro
B. Falso
3. Se voc entrou com o valor "0" ou branco (" ") como prxima tela, o sistema
processa o ponto no qual a tela foi iniciada, assumindo a o atributo da prxima tela
sobrescrito dinamicamente no programa.
A. Verdadeiro
B. Falso
4. O atributo da prxima tela pode ser sobrescrito temporariamente pela instruo SET
SCREEN 200.
A. Verdadeiro
B. Falso
5. A instruo FIELD no tem nenhum efeito no evento PBO , e isto no deve ser
usado no evento PBO.
A. Verdadeiro
B. Falso
6. A instruo FIELD com a adio ON INPUT usado para condicionar o call no
mdulo de dilogo ABAP. O mdulo de dilogo ABAP chamado se o valor do campo
da tela outro que o valor inicial.
A. Verdadeiro
B. Falso
7. A instruo FIELD com a adio ON REQUEST chama o mdulo de dialogo ABAP
se um valor entrado num campo da tela.
A. Verdadeiro
B. Falso
8. Voc pode chamar um mdulo para a instruo FIELD para validar a entrada de
usurio num campo de entrada. Voc pode validar a entrada do campo de entrada e
enviar o erro ou aviso para o mdulo de dilogo ABAP.
A. Verdadeiro
B. Falso
306
9. Se um erro ou aviso enviado do mdulo dialogo ABAP para a instruo ABAP
dentro da instruo CHAIN e ENDCHAIN, ento todos os campos dentro do CHAIN e
ENDCHAIN esto prontos para o usurio entrar com valores novamente.
A. Verdadeiro
B. Falso
10. A interface de usurio consiste de status GUI e ttulo GUI.
A. Verdadeiro
B. Falso
11. Um menu bar pode ter no mximo 10 menus.
A. Verdadeiro
B. Falso
12. A toolbar de aplicao pode ter at ___ botes na tela.
A. 20
B. 30
C. 10
D. 35
E. n.d.a
13 Um menu pode ter at __ itens de menu na tela incluindo funes, separadores e
submenus.
A. 15
B. 10
C. 15
D. n.d.a.
307
A instruo FIELD usada em conjunto com a instruo no mdulo de evento
PAI para validar a entrada do usurio ou a tempo de espera para transportar o valor do
campo da tela para o programa ABAP. O mdulo de dilogo ABAP chamado
somente se o valor do campo alterado dependendo se uma adio ON INPUT ou
ON REQUEST usada.
6. Correta: A
A instruo FIELD usada em conjunto com a instruo ON INPUT usada para
condicionar a execuo no mdulo de dilogo ABAP se o valor de entrada do campo
outro que no o valor inicial de acordo com o tipo do campo de entrada.
7. Correta: A
A adio ON REQUEST para a instruo FIELD para validar a entrada do
usurio. A Entrada no campo associado com a instruo FIELD validada com o
mdulo de dilogo e de acordo, voc pode enviar um erro ou uma mensagem de
aviso. O campo de entrada est pronto para re-entrar com o valor se o mdulo de
dilogo enviar um erro ou mensagem de aviso para o campo da tela.
9. Correta: A
Se um mdulo de dialogo ABAP chamado com a instruo FILED dentro do
CHAIN e ENDCHAIN envia um erro ou mensagem de erro, ento todos os campos
dentro do CHAIN e ENDCHAIN estaram prontos para o usurio re-entrar com valores.
10. Correta: A
A interface de usurio para a tela consiste da status GUI e da ttulo GUI.
11. Correta: B
O menu bar pode ter at 8 menus incluindo o sistema de help menu, 6 podem
ser definidas pelo desenvolvedor.
12. Correta: D
A toolbar de aplicao pode ter 35 botes por tela.
13. Correta: A
Um menu pode ter at 15 entradas incluindo funes, separadores e submenus.
Leve Consigo
Voc deve ser capaz de descrever os passos requeridos para escrever uma
transao de dilogo. Voc precisa criar telas, design e o layout de tela, criar o fluxo
lgico de tela, e escrever um programa ABAP para o programa de dilogo. Voc
tambm precisa criar um GUI status e um ttulo GUI e atribuir uma tela a cada um. Isto
mostra um menu bar, menu items, e opcionalmente a toolbar de aplicao se isto foi
definido no status GUI. Voc deve ser capaz de codificar o PROCESS BEFORE
308
OUTPUT, PROCESS BEFORE INPUT, PROCESS ON-HELP REQUEST e PROCESS
ON VALUE-REQUEST e conhecer as palavras chaves da tela/dynpro que podem ser
usadas no fluxo lgico da tela.
Lembre-se
Tabela 12.5 mostra os conceitos chaves para um programa de dilogo
Tela
Dilogo
Eventos
Tela
dilogo
Status GUI
PROCESS
Voc pode escrever seu prprio F1 help para telas. F1 Help
ON
HELP- codificado no evento PROCESS ON HELP-REQUEST.
REQUEST
PROCESS
Voc pode escrever seu prprio F4 help customizvel para telas.
ON
VALUE- F4 Help codificado no evento PROCESS ON VALUE-REQUEST.
REQUEST
Tabela 12.5 Lembrando-se de Conceitos Chave
Sumrio
Ns cobrimos o desenho de tela, vrios atributos de tela e elementos de tela.
Ns tambm cobrimos em detalhe os eventos PBO, PAI, POH e POV e discutir como
os dados so transferidos da rea de ela para o programa ABAP e vice versa. Ns
cobrimos em detalhe o uso do status GUI e do ttulo GUI para programa de dilogo e a
ferramenta Menu Painter para desenhar o GUI status. Finalmente, ns discutimos
como atribuir uma GUI status e ttulo para a tela. Este conhecimento facilitara a passar
neste tpico no exame de certificao.
309
13 - Telas De Seleo
Tcnicas que voc aprendera:
310
Telas de seleo so usadas para fornecer ao usurio uma interface para
fornecer valor inicial para um relatrio. A tela de seleo pode ser definida usando
linguagem ABAP instruo declarativa. Voc pode definir telas de seleo de relatrios
executveis e controlar o fluxo do programa baseado na entrada do usurio.
Neste capitulo voc vai aprender sobre telas de seleo e sua utilizao em
programao ABAP. Voc vai aprender como criar telas de seleo usando
PARAMETERS e SELECT OPTIONS. Voc vai aprender a criar o layout da tela usando
simples instruo ABAP. Voc tambm vai aprender sobre os vrios eventos de tela de
seleo e o processo da tela de seleo com a programao ABAP. Finalmente, voc
ira aprender a criar tela de seleo de controle tabstrip (barra de guias).
Cenrio Do Mundo Real: voc tem que escrever um relatrio de fcil utilizao
com tela de seleo, o que permite ao usurio inserir dados na tela para controlar o
fluxo do programa. O relatrio deve esperar a entrada do usurio, e com base nesta
entrada os dados devem ser extrados do banco de dados para processamento. O
fluxo do programa e a exibio da lista devem ser com base na entrada do usurio na
tela de seleo. necessrio para a empresa coordenar e reunir requisitos de
negcios para o relatrio.
Para escrever um relatrio de fcil utilizao voc precisa ter um bom
conhecimento de telas de seleo e os vrios eventos de programao para a tela de
seleo. Voc tambm deve formar o time de desenvolvimento sobre o conceito de
telas de seleo, e as suas caractersticas, e como usa-lo para o desenvolvimento do
programa.
Conceitos Chaves
Telas de seleo so necessrias para os seus programas personalizados
quando voc quer que o usurio insira dados para controlar o fluxo do programa ou
para restringir a extrao de dados a partir do banco de dados. Telas de seleo so
muitas vezes utilizadas com um programa ABAP executvel tais como relatrios ABAP,
programas de converso e assim por diante.
Voc pode definir uma tela de seleo padro usando instrues de linguagem
ABAP declarativa, como PARAMETER e SELECTION OPTIONS. Instrues simples
permitem que voc crie campos de entrada, caixa de seleo, botes de opes. A
linguagem ABAP tambm fornece a instruo declarativa SELECTION SCREEN
para formatar o layout da tela de seleo sem o uso do Screen Painter ou Menu
311
Painter. Voc pode definir a tela de seleo definida para usurio independentemente,
a partir da tela de seleo padro para o programa.
Telas De Seleo
Telas de seleo servem como interface entre o usurio e o programa. Voc
costuma usar telas de seleo para fornecer ao usurio uma interface para entrada de
dados para o programa. Estas entradas de dados so usadas para controlar o fluxo do
programa ou para restringir ou filtrar a seleo de dados do banco de dados. Telas de
seleo so tipicamente usadas em um programa executvel. O usurio simplesmente
tem que usar instrues ABAP para criar campo de entrada, caixa de seleo, e
botes de opes, Emquanto Dynpro (telas de dilogos) so criadas usando Screen
Painter, e cada tela Dynpro requer lgica e fluxo de tela. Para mais informaes sobre
telas de Dynpro, consulte o capitulo 12, telas clssicas. Voc pode projetar telas de
seleo para permitir que o usurio insira um valor nico ou critrios de seleo
complexos.
As instrues de linguagem ABAP declarativas so usadas para definir uma
tela de seleo para um programa ABAP. Voc pode criar o layout da tela, campo de
seleo e botes de seleo com o uso de instruo simples de linguagem ABAP e
no requer Screen Painter para definir a tela de seleo para programas ABAP.
Parameters
A instruo PARAMETERS usada para definir um campo de entrada simples
na tela de seleo. PARAMETERS usado para controlar o fluxo do programa ou
restringir o acesso ao banco de dados, portanto tipicamente usaramos este na
clausula WHERE da nossa instruo SELECT para filtrar os registros que nos
recuperamos.
O objeto de dados declaradas com a instruo PARAMETERS aparece como
um campo de entrada na tela de seleo. Voc declara os parameters com a instruo
TYPE ou LIKE. Semelhante a uma declarao de varivel com a instruo DATA. Voc
tambm usa tipos ABAP, tipos de dados locais, ou tipos de dados globais para definir o
parameters para seu programa. O nome do PARAMETERS pode ser de at oito
caracteres longos. A menos que voc mantenha o texto de seleo para o
PARAMETERS, o nome do PARAMETERS mostrado como texto esquerda do campo
de entrada. A etiqueta do texto pode ser mantida como um texto de seleo, seguindo
o seguinte caminho de menu Ir Para Elementos de Texto Textos de Seleo.
312
A instruo PARAMETERS adota o atributo do campo do dicionrio ABAP se ele
se refere ao tipo de dados do dicionrio ABAP. o texto de seleo para a instruo
PARAMETERS pode ser derivada a partir do dicionrio, se a caixa de seleo Refer.
Dictionary selecionado na tela de textos de seleo. Figura 13.1 mostra a caixa de
seleo com a opo de selecionar o texto de seleo do dicionrio ABAP.
313
usando a adio AS CHECKBOX, e o boto de opo so definidos pelo uso da adio
RADIOBUTTON GROUP <GRP>, onde <GRP> o grupo do boto de opo.
314
ENDIF.
Estrutura 13.2 Cdigo de exemplo para definir e usar um boto de
seleo em um programa ABAP.
SIGN
O tipo de dados para SING C, e ele tem um tamanho de 1. O contedo
do SING determina se o valor deve ser includo ou excludo. Os valores
possveis para o campo so I e E. I significa critrio de incluso, e
E para critrio de excluso.
OPTION
O tipo de dados para OPTION C, e ele tem um tamanho 2. A tabela
13.1 mostra os operadores validos.
VALOR
EQ
NE
LE
LT
GE
GT
SIGNIFICADO
Igual
No igual
Menor ou Igual
Menor que
Maior ou igual
Maior que
315
BT
Entre
NB
No entre
CP
Contem
NP
No contem
Tabela 13.1 operadores validos para opes do campo da tabela de
seleo.
316
317
Voc pode tambm usar a adio NO INTERVALS para restringir o usurio a
uma entrada de campo nica para a tabela de seleo. A sintaxe para uma entrada de
campo nico a seguinte:
SELECT OPTIONS: s_matnr FOR marc-matnr NO INTERVALS.
s_werks FOR marc-werks.
Como resultado, a S_MATNR-HIGT no mostrada na tela de seleo como
mostrado na figura 13.6.
318
319
A variante para tela de seleo pode ser criada em um editor ABAP ou na tela
de seleo clicando no cone ( ) Salve na tela ou via menu Ir Para Variantes
Gravar como Variante. Figura 13.11 mostra a variante na tela de manuteno.
320
p_lgfile TYPE fileintern,
p_phfile TYPE fileintern.
SELECTION SCREEN END OF BLOCK a.
Estrutura 13.4 Cdigo para projetar o desenho da tela de seleo
A figura 13.12 mostra a tela de seleo para o exemplo acima.
321
SELECTION SCREEN END OF BLOCK b.
Estrutura 13.5 Cdigo para disposio da tela de seleo.
A figura 13.13 mostra a tela de seleo com a disposio formatada.
322
SELECTION SCREEN BEGIN OF SCREEN 130 AS SUBSCREEN.
SELECTION SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-012.
SELECT OPTIONS: s_cntrto FOR spfli-countryto,
s_cityto FOR spfli-cityto.
s_airpto FOR spfli-airpto.
PARAMETERS:
s_retdt LIKE sy-datum.
SELECTION SCREEN END OF BLOCK c.
SELECTION SCREEN END OF SCREEN 130.
SELECTION SCREEN BEGIN OF TABBED BLOCK tab_block FOR 10 LINES.
SELECTION SCREEN TAB (20) tab1 USER-COMMAND comm1
DEFAULT SCREEN 110.
SELECTION SCREEN TAB (20) tab2 USER-COMMAND comm2
DEFAULT SCREEN 120.
SELECTION SCREEN TAB (20) tab3 USER-COMMAND comm3
DEFAULT SCREEN 130.
SELECTION SCREEN END OF BLOCK tab_block.
INITIALIZATION.
tab1 = Connection (010).
tab2 = Departure. City (011).
tab3 = Arrival City (012).
tab_block-activetab = COMM1.
Tab_block-dynnr = 110.
Estrutura 13.6 cdigo de exemplo para definir controle tabstrip (barra de guias)
para a tela de seleo.
A figura 13.14 mostra a tabstrip em uma tela de seleo para a definio acima.
323
SELECTION SCREEN BEGIN OF TABBED BLOCK tab_block FOR 10 LINES.
SELECTION SCREEN TAB (20) tab1 USER-COMMAND comm1
DEFAULT SCREEN 110.
SELECTION SCREEN TAB (20) tab2 USER-COMMAND comm2
DEFAULT SCREEN 120.
SELECTION SCREEN TAB (20) tab3 USER-COMMAND comm3
DEFAULT SCREEN 130.
SELECTION SCREEN END OF BLOCK tab_block.
O tab_block define o controle do tabstrip com tamanho para 10 linhas. Tab1,
tab2 e tab3 so atribudos a rea de guia, e TAB (20) define o tamanho da largura do
titulo da guia. Voc tambm deve atribuir um cdigo de funo para cada um dos
ttulos da guia. Para cada titulo da guia o sistema automaticamente cria um campo de
caracter no programa ABAP com o mesmo nome. Voc pode atribuir um texto a essa
varivel titulo da guia antes da tela de seleo ser mostrada. O campo pode ter um
valor atribudo durante o evento INITIALIZATION. A subtela atribuda a cada titulo de
guia, e exibido quando o usurio seleciona a guia.
Para cada rea de guia, o sistema cria automaticamente uma estrutura no
programa ABAP com o mesmo nome. Esta estrutura tem trs componentes: PROG,
DYNNR e ACTIVETAB. Voc pode atribuir um valor para esta estrutura dinamicamente
para controlar a exibio para o tabstrip. Voc pode especificar um valor para
ACTIVETAB e DYNNR para mostrar uma subtela especifica ou pela guia quando a tela
de seleo e mostrada pela primeira vez.
324
alterar o atributo para o campo de tela sem modificar o cdigo para a logica do banco
de dados da tela de seleo. A ao do usurio na tela de seleo resulta em eventos
que so utilizados para validar campos de entrada ou possveis entradas ou pedir
ajuda ou acionar o processamento PAI para a tela de seleo.
O evento AT SELECTION SCREEN acionado em tempo de execuo pelo
ABAP depois que o usurio seleciona ou executa ou pressiona Enter na tela de
seleo. O programador pode validar a entrada do usurio ou a ao no evento AT
SELECTION SCREEN. Voc pode acionar a mensagem de aviso (warning) no evento
AT SELECTION SCREEN baseado na sua validao para o campo da tela. Uma
mensagem de aviso (warning) mostrada, e depois voc pressiona enter, todos os
campos estaro prontos para a entrada. Voc pode processar isto enquanto o
programa executado porque isto apenas uma mensagem de aviso. Similarmente,
se o programa provocar uma mensagem de erro no bloco de evento, todos os campos
estaro prontos para a entrada e o programa vai esperar que voc entre com o valor
valido na tela de entrada antes de prosseguir com a execuo.
O evento AT SELECTION SCREEN ON <nome do campo> pode ser usado para
validar um campo especifico <nome do campo>, e apenas o campo que estar pronto
para a entrada foi o que gerou a mensagem de erro no bloco. Voc pode ter um
evento AT SELECTION SCREEN ON para cada campo de entrada na tela de seleo
se voc quiser validar cada entrada do usurio na tela.
O evento AT SELECTION SCREEN ON BLOCK <bloco> disparado sempre
que o usurio selecionar o executar, e desta vez o contedo de todos os campos so
passados para o programa ABAP. Voc deve usar para validar a entrada do usurio.
Todos os campos no bloco estaro prontos para a entrada novamente se uma
mensagem de erro disparada. Voc tambm pode controlar o fluxo do programa ou
validar a entrada do usurio para o campo de entrada dentro do bloco. Voc tem os
seguintes eventos adicionais na tela de seleo:
325
se nenhum bloco correspondente para o evento for desenvolvido; caso
contrario, mostrado o valor possvel a partir do bloco de eventos. Nos
queremos ver a ajuda do dicionrio ABAP se o campo de entrada se
refere ao tipo de dados do dicionrio ABAP.
Terminologia Importante
Voc precisar entender ABAP para criar tela de seleo. Voc deve ter uma
boa compreenso de instrues ABAP para criar telas de seleo e as instrues para
projeto de leiaute de tela.
Voc pode usar instrues ABAP declarativas simples, como PARAMETERS e
SELECT-OPTIONS para criar campos de entrada para a tela de seleo. Voc
tambm pode usar instrues SELECTION-SCREEN para desenhar a disposio da
tela. O evento SELECTION SCREEN permite que voc controle a exibio de uma
tela ou reage ao do usurio na tela. Voc tambm pode programar ajuda F1 e
possveis valores para o campo de entrada com F4 na tela de seleo atravs da
programao do F1 e valor de ajuda no bloco de evento AT SELECTION SCREEN
ON VALUE REQUEST e AT SELECTION SCREEN ON HELP REQUEST.
Questes Prticas
As questes prticas abaixo o ajudaram a avaliar o seu entendimento para este
tpico. As questes mostradas so semelhantes s encontradas no exame de
certificao, mas nenhuma destas questes ser encontrada no exame, mas elas
permitem a voc o conhecimento do assunto. Selecione as respostas corretas e em
seguida verifique a integridade de suas respostas na seo seguinte, lembre-se voc
deve marcar todas as respostas corretas e apenas as respostas corretas para receber
o credito para a questo.
1
Voc pode ter apenas uma tela de seleo para um programa ABAP.
A Verdadeiro.
B Falso.
326
4
Voc pode definir mltiplos elementos em uma linha simples pela definio
do elemento dentro do bloco SELECTION SCREEN BEGIN OF LINE e
SELECTION SCREEN END OF LINE.
A Verdadeiro.
B Falso.
327
A Verdadeiro.
B Falso.
Respostas E Explicaes
1 resposta correta: A
O numero padro para a tela de seleo 1000, voc pode definir qualquer
numero para telas definidas de usurios com outros nmeros.
2 resposta correta: B
Voc pode ter mais de uma tela de seleo dentro de um programa ABAP.
Voc pode ter uma tela de seleo padro e qualquer numero para telas de seleo
definidas para usurios.
3 resposta correta: A, B, C
Voc usa PARAMETERS e SELECT OPTIONS para definir o campo de
entrada na tela de seleo, e voc usa a instruo SELECTION SCREEN para
formatar a posio da tela de seleo.
4 resposta correta: A
Voc usa a adio OBLIGATORY para definir o campo de entrada
PARAMETERS e SELECT OPTIONS como obrigatrio.
5 resposta correta: A, B, C
A instruo SELECT OPTIONS cria uma tabela interna com uma header line.
O nome da tabela interna o mesmo que o nome da varivel do SELECT OPTIONS.
O tipo de linha para a tabela interna uma estrutura com quatro componentes SIGN,
OPTION, LOW e HIGH. Voc pode ocultar o campo de entrada com a adio NO
DISPLAY, e voc pode definir valor padro para cada um dos componentes da
estrutura da tabela de seleo.
6 resposta correta: A
A tela de seleo pode ser modificada no bloco de evento AT SELECTION
SCREEN OUTPUT.
7 resposta correta: A
O evento AT SELECTION SCREEN ON HELP REQUEST FOR <FIELD>
mostra o help F1 para o campo de entrada. Ele exibe ajuda do dicionrio ABAP se o
help F1 no for programado no bloco de eventos.
8 resposta correta: A
328
Voc pode definir mltiplos elementos na mesma linha, definindo os elementos
dentro dos blocos SELECTION SCREEN BEGIN OF LINE e SELECTION
SRCEEN END OF LINE.
9 resposta correta: A
A adio NO EXTENSION para o SELECT OPTIONS oculta o boto para
selees mltiplas. Como resultado, o usurio no pode mais especificar mais de uma
linha de critrios de seleo.
10 resposta correta: A
A adio NO INTERVALS esconde o segundo campo de entrada (HIGH) para a
instruo SELECT OPTIONS. Como resultado, um usurio s pode digitar um valor
para o nico para o campo de entrada (LOW) ou intervalo de valor para o nico campo
de entrada. O usurio v um nico campo de entrada, mas ele vai ter o boto de
seleo mltipla. Quando ele selecionar a caixa de dialogo de seleo mltipla, voc
pode digitar escala, varias faixas, mltiplos valores individuais, e assim por diante.
11 resposta correta: A
Voc pode definir a tela de seleo com uma subtela ou controle tabstrip
usando a linguagem ABAP instruo declarativa.
Leve Consigo
Voc deve ser capaz de descrever o uso para telas de seleo em
programao ABAP. voc precisa entender como definir a tela de seleo e deve
saber as palavras chaves e sintaxe para definir a tela de seleo. importante saber
as opes de formatao para projetar a disposio da tela de seleo e saber os
vrios eventos disponveis para a tela de seleo.
Voc tambm deve ser capaz de projetar telas de seleo padro, tabstrips em
telas de seleo e subtelas para o uso neste tabstrip dentro da programao ABAP e
ser capas de modificar dinamicamente ou validar a entrada do usurio na tela ou
fornecer as entradas possveis para os campos dentro do bloco de eventos
apropriado.
Lembre-se
A tabela 13.2 mostra os conceitos chaves para a tela de seleo.
CONCEITO CHAVE
Tela de seleo
DEFINIO
Tela de seleo uma interface entre o usurio e o
programador. Voc pode definir a tela de seleo pelo
uso da linguagem ABAP instruo declarativa tal como
PARAMTERS e SELECT OPTIONS, e voc pode
projetar a estrutura da tela com a instruo declarativa
SELECTION SCREEN sem o uso do Screen Painter
329
ou Menu Painter.
Voc pode modificar dinamicamente a tela de seleo
durante o evento AT SELECTION SCREEN OUTPUT.
Voc pode validar a entrada do usurio no evento AT
SELECTION SCREEN ON <FIELD> para cada um
dos campos de entrada na tela, se necessrio.
Controle tabstrip
Voc pode definir subtelas para o usurio no controle
tabstrip definies do usurio na tela de seleo com a
linguagem ABAP instruo declarativa para tela de
seleo.
Tabela 13.2 lembre-se conceitos chaves.
Eventos da tela de seleo
Sumario
Agora voc deve ser capaz de projetar e usar as telas de seleo em programa
ABAP. Voc deve saber a sintaxe para definir uma tela de seleo padro, subtelas,
controle tabstrip na tela de seleo, e os vrios eventos para validar entradas de
usurios ou controle para o fluxo do programa. Voc tambm deve saber a instruo e
sintaxe ABAP para projetar o formato da tela de seleo. Agora voc deve ser capaz
de trabalhar com projeto da tela de seleo e usar a tela de seleo em programao
ABAP. Este conhecimento permitira que voc facilmente passe deste tpico no exame
de certificao.
330
331
Objetos ABAP um conjunto completo de instrues orientado a objetos que
tem sido introduzido com linguagem ABAP. Objetos ABAP suporta programao
orientada a objetos completa que inclui definies de classes, locais e globais,
criaes para objetos de classe, e especializao de classes atravs de herana. Uma
classe base de uma linguagem de programao orientada a objetos. Uma classe
um modelo para um objeto. Uma classe descreve objeto, e um objeto a instancia em
tempo de execuo da classe. Voc precisa definir uma classe para usar objetos no
programa. Voc pode criar classes locais e globais na linguagem ABAP. classe global
so visveis para todos os programas no sistema e podem ser usados por todos os
programas, enquanto classes locais so visveis para o programa no qual eles so
definido.
O objetivo principal deste capitulo fornecer a voc o conceitos de
programao ABAP orientada a objeto com objetos ABAP. nos vamos discutir o
conceito para casses ABAP porque o fundamento da programao ABAP orientada a
objeto. Ns vamos discutir os conceitos chaves para casses ABAP como seus
Atributos, mtodos, e eventos e os conceitos de visibilidade de uma classe. Nos
vamos ver em detalhes a sintaxe para criar classes locais, atributos, mtodos e
eventos e a sintaxe para acessar e usar eles em um programa ABAP. Vamos ver
tambm classes globais e os passos para cria-las. Nos vamos discutir instanciao de
classe, os vrios tipos para mtodos e atributos, sua visibilidade e a sintaxe para criar
acessos a objetos para classes individuais e componentes de objetos no programa
ABAP, bem como a sintaxe para disparar eventos e registrar mtodos do manipulador.
Cenrio Do Mundo Real: Como lder tcnico em um projeto voc tem que
explicar o bsico de programao orientada a objetos para o desenvolvedor na sua
equipe. Sua equipe de desenvolvimento tem que desenvolver uma aplicao Web
Dynpro e relatrio utilizando ALV grids e controle GUI usando framework de controle e
deve estar ciente de tcnicas de objetos ABAP.
Para usar a tcnica voc deveria ter um bom entendimento da programao
orientada a objeto, declarao de casses ABAP, implementao, e os vrios
componentes de uma classe ABAP. Voc deve conhecer de encapsulamento, herana,
polimorfismo e abstrao e deve ser capaz de usar estes conceitos de forma eficaz no
desenvolvimento de aplicaes customizadas.
332
Conceitos Chaves
importante compreender o conceito de ABAP objeto porque a SAP esta
desenvolvendo novas aplicaes usando o conceito de programao orientada a
objetos. Este capitulo ira apresentar o bsico dos conceitos de programao orientada
a objetos e os principais componentes para criar uma classe ABAP. os principais
componentes discutidos neste capitulo so atributos, mtodos e eventos. Tpicos
avanados em relao a programao ABAP objetos so cobertos no capitulo 17,
analise de classe identificao e elaborao.
Conceitos De Programao Orientada A Objeto
Programao orientada a objeto envolve programao usando objetos. Objetos
de negcios como cliente, materiais e ordem de compra so exemplos de objetos do
mundo real. Os objetos do mundo real tem estado e comportamento. Por exemplo,
uma ordem de compra tem estados como o numero de ordem de compra, numero de
fornecedor e organizao de compras e comportamentos tais como criar ordem de
compra, mostrar ordem de compra e mudar ordem de compra. O objetivo da
programao orientada a objeto e a de mapear objetos do mundo real para um objeto
de software o mais fielmente possvel. Isso ajuda o usurio de negcios e o
desenvolvedor comunicar mais facilmente com os outros.
O estado do objeto do mundo real representado por atributos, e o
comportamento do objeto do mundo real representado por mtodos. Um mtodo
um bloco de cdigo, tais como mdulos de funo ou sub-rotina, associado com o
objeto. Assim um objeto de software composto dos atributos e mtodos.
Programas orientados a objetos encapsulam atributos e mtodos e fornece
uma interface definida (mtodos) para acessar o atributo para o objeto. O mundo
exterior pode se comunicar com o objeto usando a interface definida. Se voc quiser
acessar os atributos do objeto, voc chama um mtodo para fazer isso, e este mtodo
tem parmetros que determinam os dados que voc deve passar e os dados que voc
recebe de volta a partir do mtodo. O estado interno do objeto e suas implementaes
esto escondidas do mundo exterior e no pode ser modificados ou visualizados. Os
atributos do objeto s podem ser alterados chamando mtodos pblicos do objeto e
no pode ser alterado diretamente. Voc pode alterar o atributo diretamente se ele for
publico, mas geralmente os atributos so privados, so normalmente alterados por
chamadas de mtodos pblicos.
O modelo de programa orientado a objeto suporta as seguintes caractersticas:
Processo de Abstrao
O processo de abstrao refere-se ao mapeamento dos processos do
mundo real em uma classe com a maior preciso possvel. Abstrao
um elemento essencial para programao orientada a objetos e obtido
atravs do uso da classificao hierrquica. Um objeto complexo pode
ser dividido em partes mais gerenciveis. Cada objeto descreve seu
prprio comportamento.
Encapsulamento
A implementao da classe esta oculta e s pode ser acessada por
meio da interface da classe, isto chamando os mtodos da classe. O
333
Objetos ABAP
Objetos ABAP uma extenso da orientao objeto para a linguagem ABAP, e
agora tambm o termo usado para se referir linguagem ABAP inteira. Objetos
ABAP suportam tcnicas de programao orientada a objetos.
Ela consiste basicamente de um conjunto de instrues ABAP que suporta
programao orientada a objeto, como a definies de classes, criao de objetos de
classes, especializao de classes atravs da herana, interfaces independentes que
pode ser usadas em classes e o conceito de eventos que esta integrado na linguagem.
Classes ABAP
Classes so a base para a programao orientada a objeto, uma classe um
projeto ou um modelo para objetos. Uma classe descreve um objeto, e o objeto uma
instancia de tempo de execuo da classe. Voc pode criar qualquer numero de
objetos com base em uma nica classe, e cada instancia (objeto) da classe tem sua
prpria identidade e seu prprio conjunto de valores e atributos.
Classes em objeto ABAP podem ser declaradas ou localmente dentro do
aplicativo onde eles devem ser utilizados como objetos ou globalmente como objeto de
repositrio. A vantagem de criar classes globais a vantagem de se criar classes globais
que podem ser usados em vrios aplicativos diferentes. Classes globais so
definidas no construtor de classe (transao SE24) no ABAP workbench. Classes
globais so armazenadas no repositrio central. Classes globais podem ser usadas
por qualquer programa no sistema SAP. Classes locais so definidas localmente no
programa ABAP e so visveis no programa em que so definidos.
Classes Locais
Classes locais so definidas dentro de um programa ABAP e pode ser usado
apenas no programa em que so definidos. A estrutura 14.1 exibe o componente mais
importante de uma classe ABAP local no cdigo de modelo. Na seo seguinte vamos
cobrir os componentes individuais da classe incluindo o conceito de visibilidade.
334
CLASS CL1 DEFINITION.
PUBLIC SECTION.
DATA: d1, d2.
METHODS: M1,
EVENTS: EV1.
PROTECTED SECTION.
DATA: d3, d4.
METHODS: M2.
EVENTS: EV2.
PRIVATE SECTION.
DATA: d5, d6.
METHODS: M3.
EVENTS: EV3.
ENDCLASS.
CLASS CL1 IMPLEMENTATION.
METHOD M1.
ENDMETHOD.
METHOD M2.
ENDMETHOD.
METHOD M3.
ENDMETHOD.
ENDCLASS.
Estrutura 14.1 Modelo para classe ABAP.
A definio da classe consiste de uma parte da declarao e uma parte de
implementao. A parte da declarao da classe esta dentro do bloco de instruo
CLASS . . . ENDCLASS.
Esta a sintaxe para a declarao da classe:
CLASS <nome da classe> DEFINITION.
ENDCLASS.
A parte da declarao do programa contm a definio de todos os
componentes da classe. Isto inclui atributos, mtodos, e eventos. Quaisquer mtodos
definidos na parte DEFINITION deve ser implementados na sequencia de
implementao da classe.
Os mtodos para as classes so implementados nos seguintes blocos de
instruo:
CLASS <nome da classe> IMPLEMENTATION.
METHOD metha.
ENDMETHOD.
METHOD methb.
ENDMETHOD.
335
ENDCLASS.
Cada componente da classe deve ser atribudo a um das trs seguintes
visibilidades de seo. Todos os componentes so visveis dentro da classe. Todos os
componentes da classe esto no mesmo contexto, o que significa que todos os
componentes da classe deve ter um nome exclusivo. O componente da classe pode
ser declarado em trs reas de visibilidade PUBLICO, PRIVADO E PROTEGIDO.
Quando definir classes locais em objetos ABAP, voc deve seguir a sequencia
sinttica para PUBLIC SECTION, PROTECTED SECTION e PRIVATE SECTION.
Classes Globais
Classes globais e interfaces so armazenadas em uma livraria de classe e so
visveis em todo sistema. Classes globais podem ser usadas por cada programa no
sistema. O construtor de classe permite que voc crie e mantenha classes globais e
interfaces. Voc pode usar o navegador de classe para mostrar classes globais,
interfaces ou tipos de objetos de negcios da biblioteca de classe. O navegador de
classes parte integrante do construtor de classe e pode ser iniciado via transao
CLABAP.
Para criar uma nova classe global, digitar o nome da classe na tela inicial para
o class builder (transao SE24) e selecionar criar. O nome da classe deve comear
com ZCL_<nome_significativo>. A caixa de dialogo criar classe aparece com o nome
da classe. A figura 14.1 mostra a caixa de dialogo para criar classe.
Descrio
Insira um texto curto para descrever a classe
Instalao
Selecionar a opo de instalao. Voc tem as opes para selecionar
PUBLICO, PROTEGIDO, PRIVADO E ABSTRATO (Veja ao lado, a
visibilidade da classe e instanciao, tambm):
Publico
Geralmente voc seleciona a instanciao publica. Isto significa que
o usurio pode criar uma instancia da classe com a instruo
CREATE OBJECT.
Protegido
Instanciao protegidas especifica, que somente classes ou classes
relevantes por si s pode criar a instancia da classe.
336
Privado
Instanciao privada especifica, que somente a classe relevante
por si s pode criar instancia da classe usando o seu prprio
mtodo
Abstrato
Voc seleciona a instanciao abstrata para definir uma classe
abstrata. Uma classe abstrata usada como um modelo para criar
uma subclasse. Voc no pode criar uma instancia desta classe.
Voc pode acessar uma classe com o atributo esttico ou com sua
subclasse.
Tipo de classe
Voc tem a opo para selecionar Classe comum, Classe de exceo,
Classe persistente ou Classe de teste
Classe comum
Esta a classe padro ABAP e discutida neste capitulo.
Classe persistente
O mapeamento das classes de objetos ABAP para banco de dados
relacional referido como mapeamento de objeto relacional ou
mapeamento O/R. Classes com mapeamento O/R so
referenciados para classes persistentes.
Classe de exceo
Estas so classes especiais usadas para tratamento de excees
baseadas em classes.
Classe de teste
Esta uma chamada de teste e no pode ser instanciada
Para o nosso exemplo poderamos selecionar o boto de seleo
classe comum.
Final
Voc pode definir a classe final, selecionando o caixa de seleo. Isto
significa que voc no pode criar subclasse para esta classe.
Apenas modelados
Se voc selecionar esta opo, a classe no armazenada na
biblioteca de classe e no pode ser endereado e testado em tempo de
execuo.
337
Seo Publica
Todos os componentes declarados dentro da seo publica pode ser
acessada por qualquer usurio da classe. O mtodo da classe tambm
pode acessar os componentes pblicos da classe e as classes que
herdam dele. Os componentes pblicos da classe formam a interface
entre a classe e o usurio. O usurio s pode acessar os componentes
pblicos da classe.
Seo privada
Os componentes que so declarados em uma seo privada so
apenas visveis para o mtodo da classe e so apenas acessveis a
partir do interior da prpria classe. Voc pode proteger componentes
contra o acesso de fora caracterizando os como atributos privados. Os
componentes privados no so visveis para usurio exterior. Usando a
seo de visibilidade privada, voc pode ocultar ou encapsular as
informaes do usurio externo. Mudando o componente privado no
afeta o usurio externo. Enquanto as interfaces da classe (componentes
pblicos) permanecer o mesmo, o usurio externo no percebe as
mudanas na classe.
Seo protegida
Todos componentes declarados nesta seo pode ser acessada pelo
mtodo da classe e da subclasse. Componentes protegidos
representam a interface entre as classes e suas subclasses, mas no
so parte da interface entre a classe e o mundo exterior.
338
*-------------------------------------------------------*
*
CLASS vessel DEFINITION
*-------------------------------------------------------*
*
Superclass definition
*-------------------------------------------------------*
CLASS vessel DEFINITION.
PUBLIC SECTION.
METHODS: constructor,
drive IMPORTING speed_up TYPE i,
get_id RETURNING value(id) TYPE i.
PROTECTED SECTION.
DATA: speed TYPE i,
max_speed TYPE i VALUE 100.
PRIVATE SECTION.
CLASS-DATA object_count TYPE i.
DATA id TYPE i.
ENDCLASS.
"vessel DEFINITION
*-------------------------------------------------------*
*
CLASS vessel DEFINITION
*-------------------------------------------------------*
*
Superclass implementation
*-------------------------------------------------------*
CLASS vessel IMPLEMENTATION.
METHOD constructor.
object_count = object_count + 1.
id = object_count.
ENDMETHOD.
"vessel
METHOD drive.
speed = speed + speed_up.
IF speed > max_speed.
speed = max_speed.
ENDIF. "FIM: IF speed > max_speed....
ENDMETHOD.
"vessel
METHOD get_id.
id = me -> id.
ENDMETHOD.
ENDCLASS.
*-------------------------------------------------------*
Estrutura 14.2 Componentes em uma classe Pblica, Privada e protegida.
Usurios externos da classe (por exemplo, um programa executvel ABAP)
podem acessar somente os componentes pblicos. Os componentes privados e
protegidos so invisveis para usurios externos e so, portanto internas para a classe
ou a classe e sua subclasses no caso dos componentes protegidos. Isto permite que
voc altere a implementao interna da classe sem afetar o usurio externo. Atribuindo
339
os componentes para a seo de viso apropriada, voc pode determinar quais
componentes deve ser parte da interface do usurio e qual componente deve ser
encapsulado.
Para uma classe global a visualizao do componente individual especifica
em um editor de classe. A figura 14.3 mostra a opo de visibilidade no editor de
classe para o mtodo. Similarmente, voc tem a opo para especificar a visibilidade
para outros componentes da classe.
Instanciao Publica
Instanciao Protegida
Instanciao privada
340
Instancia E Componentes Estaticos
Alm da visibilidade, necessrio definir se o componente uma instancia ou
um componente esttico. Os componentes da instancia existem para cada instancia
da classe (uma copia para cada objeto), e eles so independentes uns dos outros. Os
componentes estticos existem uma vez por classe, no importa quantas instancias da
classe existem, e todos os objetos da classe compartilham uma copia. A instancia do
componente endereado usando a varivel de referencia apontando para o objeto
em questo. Enquanto componentes estticos so endereados usando o nome da
classe a que pertencem. Voc no precisa criar uma instancia da classe (objeto) para
acessar o componente esttico.
A sintaxe para definir componentes estticos e componentes de instancia o
mesmo exceto se as definies de componentes estticos comearem com a palavra
chave CLASS. Para definies de classes globais no construtor da classe
necessrio especificar para cada componente se um componente esttico ou
componente de instancia. A figura 14.4 montra componentes estticos e instancias
para classes locais.
Para classes globais o componente esttico e instancia so definidos no editor
de classe. A figura 14.3 mostra a definio de instancia e mtodos estticos para
classes globais. A figura 14.5 mostra a definio de instancia e atributos estticos para
a classe global no editor de classe.
341
Fi
gura 14.5 Definio de instancia e atributos estticos para classes global.
Objetos
Objetos so instancias da classe. Uma classe contem a descrio do objeto e
descreve toda a caracterstica que todo o objeto da classe tem em comum. O
processo para criao de um objeto discreto ou instancia de uma classe na memoria
chamada instanciao. Objetos so criados usando a sintaxe CREATE OBJECT
ref_name, onde ref_name deve ser um tipo adequado de varivel de referencia. A
instruo CREATE OBJECT cria um ambiente na memoria da aplicao.
A sintaxe para criar o objeto a seguinte, onde CL_ARTICLE_HIERARCHY
uma classe global:
DATA: ref_var TYPE REF TO cl_article_hierarchy.
START OF SELECTION.
CREATE OBJECT ref_var.
Voc pode usar classe local e global para criar objetos com a instruo
CREATE OBJECT.
Atributos
Atributos so objetos de dados internos dentro de uma classe que pode ter
qualquer tipo de dados. Por exemplo, tipos ABAP, tipos do dicionrio, ou referencia. O
estado do objeto determinado pelos valores de seus atributos. Atributos podem ter
tipos locais, tipos de dados globais, ou tipos de dados de referencia. A figura 14.6
mostra a declarao de atributos com a classe.
342
Na classe, voc pode usar apenas a adio de TYPE quando define atributos. A
referncia LIKE s permitida para tipos de dados locais de variveis de sistema tais
como SY-DATUM, SY-UNAME e assim por diante. Com TYPE REF TO, o atributo pode
ser digitado como uma varivel de referencia. O tipo de referencia pode ter classes,
interfaces ou tipos.
A adio READ ONLY significa que um atributo pblico que foi declarado com
a instruo DATA podem ser lidos a partir de fora, mas s pode ser alterado por
mtodos da mesma classe. A adio READ ONLY s pode ser especificado em uma
seo publica para uma classe declarada ou em uma definio de interface. O atributo
READ ONLY para a classe global pode ser especificada no editor de classe pela
seleo da caixa de seleo READ ONLY para o atributo, como mostrado na figura
14.5 acima.
A sintaxe para declarar um atributo READ ONLY a seguinte:
DATA:
Atributos privados
Atributos privados no podem ser endereados diretamente de fora da
classe e no so visveis por usurios externos. O conceito friendship
(Amizade) uma exceo para esta regra. Voc pode encontrar mais
informao sobre o conceito friendship (amizade) no capitulo 17,
identificao, analise e projeto de classe.
Atributos Pblicos
Instancia de atributos so definidas com a palavra chave DATA e existe
uma vs por objeto. O tempo de vida de um atributo de instancia esta
ligado ao seu ciclo de vida do objeto.
Atributos estticos
Atributos estticos so definidos com a palavra chave CLASS DATA, e
eles existem uma vez por classe, no importas quantas instancias
existem para a classe. Eles so visveis por todas as instancias da
classe em tempo de execuo e geralmente contem informaes, que
se aplica em todas instancias da classe, por exemplo, um contador para
numero total de objetos. Atributos estticos tambm so conhecidos
como atributos de classe.
343
A sintaxe para declarar um atributo constante na classe local :
COSNTANTS: const1 TYPE C VALUE A.
344
Mtodos estticos so definidos no nvel da classe. Eles podem ser acessados
diretamente atravs da classe e no precisa de uma instancia. Mtodo esttico pode
ser acessado por todas as instncias da classe, e de fora da classe (Enquanto eles
forem pblicos). Voc tem que criar um objeto de classe para chamar um mtodo de
instancia. Tanto mtodos de instancia e mtodos estticos so implementados na
parte da implementao da classe.
Os mtodos de instancia e estticos so implementados entre o bloco de
instruo seguinte.
345
Status_line TYPE status_line_type,
Status_list TYPE SORTED TABLE OF status_line_type
WITH UNIQUE KEY id,
biker_tab TYPE biker_ret_tab,
biker_selection LIKE biker_tab,
biker LIKE LINE OF biker_tab.
METHODS: write_list.
ENDCLASS.
c_team DEFINITION
Estrutura 14.3 Declarao para um mtodo em uma classe local
346
READ LINE sy-index.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF sy-lisel+0(1) = X.
READ TABLE biker_tab INTO biker INDEX sy-index.
APPEND biker TO biker_selection.
ENDIF.
ENDDO
CALL METHOD write_list.
ENDMETHOD.
Selection
METHOD execution.
CHECK NOT biker_selection IS INITIAL.
LOOP AT biker_selection INTO biker.
CALL METHOD biker -> select_action.
CALL METHOD biker -> status_line,
IMPORTING
Line = status_line.
MODIFY TABLE status_list FROM status_line.
ENDLOOP.
CALL METHOD write_list.
ENDMETHOD. execution
METHOD write_list.
SET TITLEBAR TIT.
sy-lsind = 0.
SKIP TO LINE 1.
POSITION 1.
LOOP AT status_list INTO status_line.
WRITE: / status_line-flag AS CHECKBOX,
status_line-text1,
status_line-id,
status_line-text2,
Status_line-text3,
Status_line-gear,
Status_line-text4,
Status_line-speed,
ENDLOOP.
ENDMETHOD. write_list
ENDCLASS. c_team IMPLEMENTATION
Estrutura 14.4 Implementao do mtodo em uma classe.
Mtodos tem parmetros de interface, as vezes referidos como as assinaturas
dos mtodos, que permitam receber os valores, quando so chamadas e passem
valores de volta para o programa chamador. Eles tambm podem ter excees.
347
Mtodos podem ter quantos parmetros forem necessrios de EXPORTING,
IMPORTING e CHANGING, que so mutuamente exclusivos. Todos os parmetros
destas categorias podem ser passados por valor ou referencia.
A estrutura 14.5 mostra a declarao do mtodo e a implementao com os
parmetros EXPORTING e IMPORTING.
348
349
O parmetro RETURNING deve ser sempre passado por valor, e passado
com a adio de VALUE. Mais informao sobre mtodos funcionais pode ser
encontrada no capitulo 17, identificao de classe, analise e projeto. Todos os
parmetros de entrada tal como IMPORTING e CHANGING pode ser definido como
opcional usando a adio OPTIONAL. Voc tambm pode usar a adio DEFAULT
para atribuir um valor padro. Estes parmetros no necessariamente tem que ser
transferida quando o mtodo chamado.
A adio DEFAULT sempre permite que voc especifique um valor padro.
Mtodos podem definir o cdigo de retorno do sistema SY-SUBRC se gerar uma
exceo, mas somente se as excees levantadas pelo mtodo so excees
clssicas, ao contrario de excees baseadas em classe. Voc pode identificar o tipo
de exceo usada pelo mtodo na class builder olhando para a tabela excees na
tela class builder. Para excees baseadas em classe o campo exceoes de classe
selecionado; caso contrario, a excees definido para o mtodo uma exceo
clssica. A figura 14.10 mostra a exceo para a exceo clssica para o mtodo.
350
construtor s pode ter parmetros de importao e excees. A
instancia no criada se uma exceo para o construtor lanada.
Geralmente, voc define o valor para o atributo, validao, contador
incremental para o objeto e assim por diante no CONSTRUCTOR.
A sintaxe para passar parmetros para o construtor a seguinte, onde
p1 e p2 so os parmetros para o construtor:
DATA: ref_var TYPE REF TO zcl_demo.
START OF SELECTION.
CREATE OBJECT ref_var EXPORTING p1 = 10 p2 = 20.
Mtodos de instancias so chamados usando CALL METHOD ref>nome_metodo, ou voc pode tirar a instruo CALL METHOD e chamar o mtodo
usando a sintaxe ref->nome_metodo(), onde ref o nome da variavel de referencia
apontando para o objeto (instancia da classe), e o nome do mtodo o mtodo do
objeto separado pelo seletor de componente de instancia (->). A varivel de referncia
ref que aponta para o objeto pode ser omitida, quando se chama um mtodo da
instncia dentro de outro mtodo da instancia.
Uma sintaxe mais curta para chamar um mtodo suportada a partir da
release 6.10. Neste caso o CALL METHOD omitido, e os parmetros so listados
entre parnteses; por exemplo, voc pode chamar um mtodo da instancia usando a
instruo ref->nome_metodo() se o mtodo no possuir parmetros. importante
notar que no podem haver espaos entre os parnteses.
A listagem 14.6 mostra a sintaxe para chamar um mtodo de instancia dentro
de um programa.
REPORT demo_class_counter .
*-------------------------------------------------------*
* CLASS counter DEFINITION
*-------------------------------------------------------*
*-------------------------------------------------------*
CLASS counter DEFINITION.
PUBLIC SECTION.
351
METHODS: set IMPORTING value(set_value) TYPE i,
increment,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS. "counter DEFINITION
*-------------------------------------------------------*
* CLASS counter IMPLEMENTATION
*-------------------------------------------------------*
*
*-------------------------------------------------------*
CLASS counter IMPLEMENTATION.
METHOD set.
count = set_value.
ENDMETHOD. "set
METHOD increment.
ADD 1 TO count.
ENDMETHOD. "increment
METHOD get.
get_value = count.
ENDMETHOD. "get
ENDCLASS. "counter IMPLEMENTATION.
DATA number TYPE i VALUE 5.
DATA cnt TYPE REF TO counter.
START-OF-SELECTION.
CREATE OBJECT cnt.
CALL METHOD cnt->set
EXPORTING
set_value = number.
DO 3 TIMES.
CALL METHOD cnt->increment.
ENDDO.
CALL METHOD cnt->get
IMPORTING
get_value = number.
WRITE number.
Listagem 14.6 Chamando mtodos de instncia.
Similarmente, mtodos estticos so chamados usando a sintaxe CALL METHOD
nome_classe=>nome_metodo. A sintaxe consiste do nome da classe e o nome dos
mtodos estticos separados pelo seletor de componente esttico (=>). Como os
atributos estticos, mtodos estticos so endereados usando o nome da classe pois
eles no precisam de instancias da classe. Voc pode omitir o nome da clsse quando
352
estiver chamando um mtodo esttico de dentro da classe, ou voc pode usar a
sintaxe mais curta para chamar o mtodo, onde o prefixo CALL METHOD omitido e
os parmetros so colocados em parnteses como mencionado acima.
A sintaxe para chamar um mtodo com parmetros EXPORTING, IMPORTING, e
CHANGING a seguinte:
CALL METHOD ref_obj->nome_metodo
EXPORTING par_im val_exp ...
IMPORTING par_exp val_im ...
CHANGING par_chg val_chg ...
RECEIVING par_re
val_res ...
EXCEPTIONS exception = re_val ...
A sintaxe mais curta para chamar um mtodo a seguinte:
ref_obj->nome_metodo(
EXPORTING par_im val_exp ...
IMPORTING par_exp val_im ...
CHANGING par_chg val_chg ...
RECEIVING par_re
val_res ...
EXCEPTIONS exception = re_val ... )
Voc pode omitir o parmetro EXPORTING quando voc chamar um mtodo que s
possua parmetros import.
Nota:
importante saber que os Objetos ABAP no provm um mtodo destruidor
para a classe, como em outras linguagens orientadas a objetos.
Eventos
Eventos so outros componentes importantes da classe, junto com os atributos e
mtodos. Objetos ou classes podem disparar eventos, e outros objetos ou classes
podem reagir a estes eventos atravs de mtodos especiais que tratam eventos.
Quando um evento disparado qualquer nmero de mtodos manipulador podem ser
chamados. Estes mtodos no so chamados explicitamente; ao invs disso, o
sistema em tempo de execuo chama os mtodos manipuladores, um por um,
quando o evento for disparado. A definio do mtodo manipulador determina a qual
evento ele reagir. Voc pode declarar mtodos manipuladores em quantas classes
diferentes forem necessrias.
Para ativar um evento a classe deve declarar o evento na parte de definio e disparar
o mtodo em um dos mtodos da mesma classe. Voc pode definir um evento esttico
ou um evento de instncia. Eventos de instncia so definidos usando a instruo
EVENTS, enquanto os eventos estticos so definidos usando a instruo CLASSEVENTS. Eventos podem ser disparados usando a instruo RAISE EVENT em um
mtodo da classe. O evento pode possuir parmetros exporting que devem ser
passados por valor apenas. Voc os utiliza se desejar passar ao mtodo manipulador
alguma informao que ele pode precisar. Quando um evento disparado, a
referencia para o objeto disparador sempre est disponvel atravs de um parmetro
353
importing pr-definido SENDER. Usando este parmetro voc tem uma referencia ao
objeto que disparou o evento no mtodo manipulador. O parmetro SENDER no
definido explicitamente, mas sempre pode ser importado pelo mtodo manipulador.
Eventos de instncia podem ser disparados por uma instncia da classe (objeto),
enquanto os eventos estticos s podem ser disparados da prpria classe. Voc pode
disparar eventos de instncia e estticos a partir do mtodos de instncia, entretanto
apenas eventos estticos podem ser disparados de mtodos estticos.
Os eventos tambm esto sujeitos aos conceitos de visibilidade discutidos acima.
Voc pode atribuir os eventos a uma seo de visibilidade similar ao outros
componentes das classes. Eventos podem ser atribudos as sees publica, protegida
ou privada. A visibilidade do evento determina onde o evento pode ser manipulado.
Um evento definido na seo publica pode ser manipulado no mtodo pblico; um
evento definido na seo protegida pode ser manipulado pela prpria classe ou suas
subclasses, enquanto eventos definidos na seo privada s podem ser manipulados
de dentro da prpria classe.
A listagem 14.7 mostra a definio e a implementao de um evento.
*------------------------------------------------------------*
* CLASS counter DEFINITION
*------------------------------------------------------------*
*------------------------------------------------------------*
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS increment_counter.
EVENTS critical_value EXPORTING value(excess type i.
PRIVATE SECTION.
DATA: count TYPE i,
threshold type i value 10.
ENDCLASS. "counter DEFINITION
*------------------------------------------------------------*
* CLASS counter IMPLEMENTATION
*------------------------------------------------------------*
*
*-------------------------------------------------------------*
CLASS counter IMPLEMENTATION.
METHOD increment_counter.
data diff type i.
ADD 1 TO count.
if count > threshold.
diff = count = threshold.
RAISE EVENT critical_value EXPORTING excess = diff.
ENDIF.
354
ENDMETHOD. "increment_counter
ENDCLASS. "counter IMPLEMENTATION.
*------------------------------------------------------------*
* CLASS handler DEFINITION
*------------------------------------------------------------*
*------------------------------------------------------------*
CLASS handler DEFINITION.
PUBLIC SECTION.
METHODs handle_excess FOR EVENT critical_value of counter
IMPORTING excess.
ENDCLASS. "handler DEFINITION
*------------------------------------------------------------*
* CLASS handler IMPLEMENTATION
*------------------------------------------------------------*
*
*------------------------------------------------------------*
CLASS handler IMPLEMENTATION.
METHOD handle_excess.
WRITE: /'Excess is', excess.
ENDMETHOD. " handle_excess
Listagem 14.7 Declarao e Implementao de um Evento
Para uma classe global p evento definido na aba EVENTOS do editor de classe, e o
mtodo manipulador do evento definido na aba mtodos, onde voc pode especificar
atributos adicionais para o mtodo selecionando o cone de Viso Detalhada ( ). A
figura 14.11 mostra a definio do evento no Class Builder, e a figura 14.12 mostra a
definio do mtodo manipulador do evento.
355
*------------------------------------------------------------*
356
* CLASS counter DEFINITION
*------------------------------------------------------------*
*------------------------------------------------------------*
CLASS counter DEFINITION.
PUBLIC SECTION.
METHODS increment_counter.
EVENTS critical_value EXPORTING value(excess) TYPE i.
PRIVATE SECTION.
DATA: count TYPE i,
threshold TYPE i VALUE 10.
ENDCLASS. "counter DEFINITION
*------------------------------------------------------------*
* CLASS counter IMPLEMENTATION
*------------------------------------------------------------*
*
*------------------------------------------------------------*
CLASS counter IMPLEMENTATION.
METHOD increment_counter.
DATA diff TYPE i.
ADD 1 TO count.
IF count > threshold.
diff = count = threshold.
RAISE EVENT critical_value EXPORTING excess = diff.
ENDIF.
ENDMETHOD. "increment_counter
ENDCLASS. "counter IMPLEMENTATION.
*------------------------------------------------------------*
* CLASS handler DEFINITION
*------------------------------------------------------------*
*------------------------------------------------------------*
CLASS handler DEFINITION.
PUBLIC SECTION.
METHODS handle_excess FOR EVENT critical_value OF counter
IMPORTING excess.
ENDCLASS. "handler DEFINITION
*------------------------------------------------------------*
* CLASS handler IMPLEMENTATION
*------------------------------------------------------------*
*
*------------------------------------------------------------*
CLASS handler IMPLEMENTATION.
357
METHOD handle_excess.
WRITE: /'Excess is', excess.
ENDMETHOD. " handle_excess
DATA: r1 TYPE REF TO counter,
h1 TYPE REF TO handler.
START-OF-SELECTION.
CREATE OBJECT r1,h1.
SET HANDLER h1->handle_excess FOR ALL INSTANCES.
DO 20 TIMES.
CALL METHOD r1->increment_counter.
ENDDO.
Listagem 14.8 Declarao, Implementao e Registro do manipulador do evento.
Se vrios mtodos esto registrados para um evento, eles so chamados na squencia
em que foram registrados.
Questes Prticas
As questes praticas abaixo o ajudaram a avaliar o seu entendimento para este
tpico. As questes mostradas so semelhantes s encontradas no exame de
certificao, mas nenhuma destas questes ser encontrada no exame, mas elas
permitem a voc o conhecimento do assunto. Selecione as respostas corretas e em
seguida verifique a integridade de suas respostas na seo seguinte, lembre-se voc
deve marcar todas as respostas corretas e apenas as respostas corretas para receber
o credito para a questo.
1. Quais das seguintes afirmaes so verdadeiras?
a. Atributos estticos s podem ser declarados na seo privada da classe
b. Atributos estticos so declarados com a instruo CLASS-DATA.
c. Um atributo esttico o mesmo em todas as instncias da classe.
Existe apenas um atributo esttico para todas as instncias da classe.
d. Atributos estticos no podem ser alterados por um objeto
2. Componentes privados da classe no podem ser endereado diretamente de
fora da classe, com exeo de quando o conceito de amizade se aplica.
a. Verdadeiro
b. Falso
3. Subclasses podem acessar componentes privados da classe pai.
a. Verdadeiro
b. Falso
4. As subclasses herdam todos os componentes da classe pai.
a. Verdadeiro
b. Falso
5. Mtodos pblicos podem acessar os atributos privados da mesma classe.
a. Verdadeiro
b. Falso
358
6. Atributos protegidos podem ser acessados por mtodos da classe e de suas
subclasses.
a. Verdadeiro
b. Falso
7. Voc no pode usar a instruo LIKE para definir um atributo da classe.
a. Verdadeiro
b. Falso
8. A adio READ-ONLY para a declarao do atributo pode ser usada nas
sees privada e pblica.
a. Verdadeiro
b. Falso
9. O atributo READ-ONLY no pode ser endereado de fora da classe.
a. Verdadeiro
b. Falso
10. Quais das afirmaes a seguir so corretas?
a. Mtodos atribudos seo publica podem ser acessados de fora da
classe usando o seletor de componente esttico e o nome da classe.
b. Mtodos estticos podem ser definidos tanto na seo privada como na
pblica.
c. Apenas mtodos pblicos podem ser endereados de fora da classe.
d. Voc pode chamar mtodos privados de dentro de mtodos pblicos
sem referencia ao objeto ou a classe.
e. Nenhuma das afirmaes acima.
11. O mtodo construtor chamado automaticamente quando voc cria uma
instancia da classe.
a. Verdadeiro
b. Falso
12. o mtodo construtor da classe chamado automaticamente quando voc
acessa a classe pela primeira vez.
a. Verdadeiro
b. Falso
13. O mtodo construtor sempre definido na seo privada da classe
a. Verdadeiro
b. Falso
14. Voc pode chamar o mtodo construtor diretamente.
a. Verdadeiro
b. Falso
15. Eventos de objetos e classes podem dispara qualquer nmero de mtodos
manipuladores.
a. Verdadeiro
b. Falso
359
2. Resposta Correta: A
Atributos privados no podem ser endereados de fora da classe, mas a classe
que uma amiga no se aplica a este principio e pode acessar os atributos
privados da classe.
3. Resposta Correta: B
As subclasses herdam todos os componentes da classe pai mas s podem
acessar diretamente os componentes pblicos e protegidos. Entretanto, a
classe tambm herda os mtodos pblicos da superclasse, o que dar acesso
indireto aos atributos privados herdados.
4. Resposta Correta: A
A subclasse herda todos os componentes da superclasse, mas pode adicionar
componentes ou redefinir mtodos herdados. Veja o Captulo 17, Identificao
de classe, Analise e Design, para mais detalhes.
5. Resposta Correta: A
Mtodos pblicos podem acessar todos os atributos da classe.
6. Resposta Correta: A
Componentes protegidos podem ser acessados pela classe e subclasses. Eles
no podem ser endereados diretamente de fora da arvore de herana.
7. Resposta Correta: B
A instruo LIKE s permitida para objetos de dados locais ( por exemplo,
dentro de um mtodo) ou variveis de sistema.
8. Resposta Correta: B
Atributos READ-ONLY so definidos na seo pblica.
9. Resposta Correta: B
Atributos READ-ONLY podem ser endereados de fora da classe.
360
Leve Consigo
Voc deve ser capaz de explicar os conceitos bsicos da programao
orientada a objetos. Voc deve ser capaz de explicar os componentes chave de uma
classe ABAP como atributos, mtodos e eventos e tambm ser capaz para
desenvolver aplicaes orientadas a objetos. Voc deve ser capaz de diferenciar entre
componentes de instncia e componentes estticos. Agira voc deve ter uma boa
compreenso dos conceitos de visibilidade em objetos ABAP e ser capaz de us-los
apropriadamente para criar uma classe ABAP.
Relembre-Se
A tabela 14.1 mostra os conceitos chave para objetos ABAP
361
Conceitos Chave
Classe
Definio
Uma classe uma descrio abstrata de um objeto. Uma classe
um template ou uma planta na qual todos os objetos criados
so baseados.
Atributo
Atributos so os dados globais da classe. O estado do objeto
determinado pelo contedo de seus atributos. Voc pode ter
atributos atribudos s sees pblica, protegida e privada da
classe.
Mtodo
Mtodos so procedimentos internos que determinam o
comportamento interno da classe. Mtodos podem acessar
todos os atributos da classe e portanto podem alterar o
contedo dos atributos. Voc pode atribuir os mtodos as
sees pblica, protegida e privada da classe. Voc tambm
pode definir mtodos estticos ou de instncia para a classe.
Evento
Voc pode definir eventos na classe para disparar mtodos
manipuladores de evento em outras classes. Apenas os
mtodos manipuladores registrados para o evento disparado
do chamado no disparo do evento. Eventos podem ser
atribudos as sees pblica, protegida e privada da classe.
Similarmente voc pode definir eventos estticos ou de instncia
na classe. Eventos so disparados usando a instruo RAISE
EVENT, e os mtodos so registrados usando a instruo SET
HANDLER.
Objeto
Um objeto uma instncia da classe. A classe descreve todas
as caractersticas genricas do objeto. Um objeto criado
usando a instruo CREATE OBJECT.
Tabela 14.1 Relembre Conceitos Chave
Sumrio
Neste captulo voc aprendeu os conceitos bsicos de programao orientada
a objetos. Voc aprendeu os conceitos de classe ABAP pois isto o fundamento da
programao orientada a objetos ABAP. Voc conhece os componentes bsicos das
classes ABAP, tanto global como local, e aprendeu sobre os conceitos de visibilidade,
componentes de instncia e estticos, e suas sintaxes. Voc tambm aprendeu sobre
eventos e como dispar-los e como registrar mtodos manipuladores. Agora voc
deve ser capaz de criar classes locais e globais e us-las para escrever programas
usando Objetos ABAP. Seu conhecimento sobre Objetos ABAP o tornar apto a
responder as questes sobre Objetos ABAP e passar neste tpico.
362
363
O Visor de lista ABAP (ABAP List Viewer ALV) est disponvel desde a
release 4.5a . Com a release 4.6C ele foi renomeado para SAP List Viewer, mas o
acrnimo permaneceu ALV. O visor de lista renderizado no servidor de
apresentao, o que o diferencia de um reporte que voc produz usando instrues
WRITE. Voc usa um controle de container no servidor de apresentao para produzir
o ALV.
Neste captulo voc receber um conhecimento bsico de como os controles
do ALV grid so produzidos. Ns examinaremos ambas as verses do ALV baseado
em classes e identificar as principais diferenas entre eles. Ns abrangeremos as
tcnicas para produzir um ALV em tela cheia e um ALV dentro de um container.
Tambm abrangeremos como manipular eventos disparados pelo processamento do
ALV dentro do nosso programa.
Cenrio do mundo real: Foi pedido a voc que explique aos programadores
recm contratados, que nunca usaram grids ALV, como programar um reporte usando
um ALV.
sua responsabilidade explicar as tcnicas para criar um grid ALV novo e
antigo. Voc dever entregar uma compresso dos mtodos bsicos para criar um
ALV de tela cheia e tambm dentro das telas de dilogo usadas nos programas da sua
empresa para mostrar vrias lista numa mesma tela. Para fazer isso, voc dever
explicar as duas classes usadas para produzir grids ALV e os processos de colocar um
ALV em um container.
Devido ao fato da gerenciar normalmente querer que os dados sejam
apresentado no ALV de uma certa forma, e porque eles desejam um cabealho
diferente ou uma ordenao dos campos que no corresponde a estrutura encontrada
no dicionrio ABAP, voc tambm deve explicar como mudar a exibio de um ALV
programaticamente.
364
porcentagem de questes relacionadas ao assunto so menor do que a maioria dos
outros captulos. Um ALV pode ser produzido simplesmente. apenas quando voc
deve modificar a exibio do ALV que se torna mais complicado. Ns acreditamos que
devido a sua produo normalmente simples, ele no necessita de um conhecimento
muito especializado ao contrario de outras reas e portanto no possui um peso
grande no exame de certificao.
Nota: O Modelo de Objeto ALV est disponvel desde a verso SAP NetWeaver 6.40,
mas o exame de certificao pode incluir questo do antigo ALV que foi implementado
baseado na classe global CL_GUI_ALV_GRID. No futuro o exame poder incluir
questes apenas sobre a nova tcnica, mas por enquanto voc dever estar
preparado para questes sobre ambos, e portanto ns discutiremos os dois.
365
para o container na tela. Ento voc precisa fornecer um nome para a rea de controle
personalizado criada, para poder liga-la ao container mais tarde.
366
*Cria uma instncia do container
CREATE OBJECT gr_custom_container
EXPORTING
container_name
= ALV_CONTAINER_01
EXCEPTIONS
cntl_error
=1
cntl_system_error
=2
create_error
=3
lifetime_error
=4
lifetime_dynpro_dynpro_link = 5
OTHERS
= 6.
IF sy-subrc NE 0.
MESSAGE a001(classe_de_mensagem_z).
* O container no pode ser criado, programa terminado.
ENDIF.
* Cria uma instncia do controle ALV
CREATE OBJECT gr_alv_grid
EXPORTING
i_parent = gr_custom_container.
ENDIF.
gs_layout-grid_title = Vos(100).
CALL METHOD gr_alv_grid->set_table_for_fist_display
EXPORTING
i_structure_name
= SFLIGHT
is_layout
= gs_layout
CHANGING
it_outtab
= gt_sflight.
Listagem 15.1 Criar um grid ALV
Se voc criar esta instncia em um mdulo PBO, que ser executado sempre
que a tela processada, voc deve garantir que uma instancia apenas gerada na
primeira vez; voc s quer criar um container, independente de quantas vezes o
usurio processe a tela. De outro modo, voc gerar um novo objeto cada vez que a
dynpro for processada (ou quando o cdigo for re-executado). Voc pode impedir que
novas instncia indesejadas sejam gerada apenas criado uma depois de validar se a
varivel de referencia no valida usando a condio IS NOT BOUND.
Dica: Ns preferimos IS NOT BOUND do que o mais comum IS INITIAL pois IS NOT
BOUND valida se a referencia invalida ao invs de apenas validar se a varivel est
vazia. Recursos que o controle ocupa no servidor de aplicao so tipicamente
liberados no fim do programa. Entretanto, estes recursos tambm podem ser liberados
explicitamente chamando o mtodo de instancia FREE.
Uma liberao precoce dos recursos invalida a varivel de referncia. Se o cdigo no
criar um novo objeto pois um valor ainda existe, a referencia invlida fornecida ao
367
ALV. Entretanto, usando IS BOUND a referencia determinada como invlida, e um
novo objeto criado.
Voc deve criar uma instncia do ALV Grid Control aps a instncia do controle de
container, pois a instncia do container deve existir antes de voc ligar o grid ALV a
ela. Tambm necessrio que seja antes da janela SAP GUI ser enviada para o
servidor de apresentao, pois o container e o grid ALV devem existir antes de sua
exibio. Entretanto voc pode usar o PBO da tela (veja a listagem 15.1 para um
exemplo).
Voc pode declara a varivel de referencia tipado com a referencia para a
classe CL_GUI_ALV_GRID. Ento voc disponibiliza a referncia da instncia do
controle de container previamente criada ao parmetro i_parent durante a chamada ao
construtor de instncia que disparado quando voc chama CREATE OBJECT. Prover
o container durante a criao do grid ALV disponibiliza o elo entre estes objetos. Se
uma exceo de erro ocorrer ao criar a instncia, voc deve reagir com uma
mensagem de trmino para abortar o programa.
Se voc desejar mostrar o ALV Grid Control em modo tela cheia, o que mais
comumente usado para exibir um reporte no corpo inteiro da tela, voc no precisa
reservar uma rea de controle e voc no precisa criar um controle de container. Ao
invs disso, voc atribui um valor esttico ao parmetro de exportao i_parent como
mostrado na listagem 15.2.
CREATE OBJECT gr_alv_grid
EXPORTING
i_parent = cl_gui_custom_container=>screen0.
Listagem 15.2 Cria um ALV em tela cheia.
Como resultado dos passos acima, voc ter criado um ALV Grid Control com
um elemento de tela. Entretanto, voc ver apenas um quadro na janela SAP GUI,
pois os controles no exibem nada ainda. Voc ainda precisa fornecer ao controle do
servidor de apresentao os dados que a serem exibidos.
O programa chamador agora precisa prover todos os dados para exibio e as
regras que definem como estes dados devem ser exibidos (atravs do uso do field
catalog). Voc deve passar os dados para exibio para o Grid ALV como um tabela
interna standard para o mtodo SET_TABLE_FOR_FIRST_DISPLAY, o qual voc chama
para a instncia do grid ALV. O grid ALV no copia os dados, mas ao invs disso
manipula a referncia da tabela interna fornecida. Todas as aes da instncia ALV
(por exemplo, ordenar e filtrar) so executadas pea instncia na tabela interna que
reside no programa chamador. Isto significa que voc deve garantir que a tabela
interna exista no mnimo enquanto houver a instncia do grid ALV. De outra forma, no
use uma tabela local em uma unidade de modularizao que no mantenha o grid
ALV.
Se o usurio ordenar os dados no ALV, o contedo da tabela interna no
programa ABAP chamador ordenado. Por isso, a tabela fornecida ao ALV deve ser
standard. Todas as outras interao do usurio apenas lem os dados. Voc usa o
mtodo de instncia SET_TABLE_FOR_FIRST_DISPLAY para passar o dados a serem
368
exibidos na forma de uma tabela interna standard (parmetro it_outtab), o catlogo de
campos, novamente na forma de uma tabela interna standard (parmetro
it_fieldcatalog), e outras informaes adicionais referente a apresentao ou layout
dos dados no ALV.
A tabela 15.1 mostra os principais parmetros para a exibio de tabela em
ALV.
Parmetro
it_outtab
it_fieldcatalog
Propsito
Dados de exibio numa tabela interna standard.
o catlogo de campos uma tabela interna que contm
informaes sobre como as colunas devem ser exibidas.
Se fornecido. Permite que o ALV gere automaticamente o
i_structure_name
catlogo de campos para todos os campos existentes na
estrutura, que deve ser um objeto do dicionrio ABAP
is_variant, i_save e Estes parmetros do ao usurio a opo de alterar ou salvar
o layout de exibio.
i_default
Esta estrutura fornece campos para definir propriedades
is_layout
grficas do controle do grid, excees de exibio, calcular
totais, e habilitar interao do usurio especificas.
A estrutura de impresso contm campos para opes quando
is_print
a lista for impressa.
Esta tabela usada para passar textos para os grupos de
it_special_groups
campos definidos no catlogo de campos.
Os nomes das funes standard que voc deseja esconder na
it_toolbar_excluding
barra de ferramentas.
Fornece as configuraes inicias para filtrar
it_filter
Fornece as configurao inicias para ordenao
it_sort
Tabela 15.1 Principais parmetros para a exibio de uma tabela ALV
Os dados a serem exibidos no ALV devem ser fornecidos ao parmetro
it_outtab; Todos os outros parmetros so opcionais. Se voc fornecer o nome do tipo
da estrutura global (por exemplo, uma estrutura, tabela ou viso do dicionrio ABAP)
ao parmetro i_structure_name, o catlogo de campos gerado automaticamente pelo
grid ALV para os campos nesta estrutura, tabela ou viso. Entretanto, cada
componente na estrutura deve tambm existir na tabela interna de dados como uma
coluna. Isto exiba todas as colunas da tabela de dados com os mesmos nomes que
foram fornecidos na estrutura para o grid ALV.
A informao mnima que voc deve fornecer so os dados de exibio
(it_outtab) da tabela interna, que obrigatrio, e a informao dos campos para exibir
os dados. A maneira mais simples de fornecer esta informao informar uma
estrutura do dicionrio ABAP, tabela ou viso no parmetro i_structure_name.
Voc pode enviar os dados da lista e as informaes adicionais para o servidor
de apresentao novamente usando o mtodo REFRESH_TABLE_DISPLAY. O
parmetro i_soft_refresh, se informado com o valor X, especifica que apenas os
contedos dos dados devem ser passados novamente, o que mantm o filtro atual e
os critrios de ordenao. Se voc atribui X para os campos ROW ou COL de uma
369
estrutura usando o tipo global LVC_S_STBL (para o parmetro IS_STABLE), a posio
da barra de rolagem para as linhas ou colunas ser mantida durante a atualizao.
Dica: Voc no pode usar o mtodo REFRESH_TABLE_DISPLAY se voc mudou a
estrutura das linhas na tabela de exibio. Neste caso voc deve chamar novamente o
mtodo SET_TABLE_FOR_FIRS_DISPLAY para criar novamente o catlogo de campos.
Variantes De Exibio
Voc usa os parmetros is_variant e i_save para determinar quais opes sobre
o gerenciamento de variantes de exibio so exibidas ao usurio. Usando
combinaes diferentes, voc pode produzir um dos trs modos usando estes dois
parmetros (Veja a tabela 15.2). A tabela 15.3 mostra os valores permitidos para
i_save.
Modo
Alterar apenas o layout
atual
Resultado
Usurios podem altera o
layout atual (eles podem
modificar a seleo e a
ordem
das
colunas
exibidas).
O usurio pode alterar a
variante de exibio atual
e selecionar variantes
existentes
Valor
espa
o
U
X
A
is_variant contm os
valor fornecidos na
estrutura
i_save = espao (ou
is_variant inicial e
i_save no igual a
espao)
is_variant contm os
valores informados na
estrutura
i_save = tanto X,U ou A
Significado
O usurio no pode salvar a variante.
O usurio s pode salvar as variante dependentes de usurio.
O usurio pode salvar variantes comuns
O usurio pode ambas as variantes.
Tabela 15.3 Valores para i_save
Variante dependentes de usurio devem inicia com uma letra. Uma variante
comum (tambm conhecida coma variante standard) deve iniciar com uma barra(/). As
variantes comum SAP iniciam com um dgito (0-9).
Nota: Apenas variantes de exibio standard podem ser transportadas. Se o usurio
possuir a autorizao necessria, ele pode transportar os layouts na administrao de
layouts selecionando EXIBIOTRANSPORTE... no menu.
370
Para alterar o layout do ALV voc informa uma workarea para o parmetro
is_layout. Esta estrutura permite que voc, por exemplo, forneam um ttulo, crie um
modelo listrado para as linhas (zebra), ou otimize a largura das colunas. Voc
preenche os campos relevantes da estrutura como grid_title, zebra ou cwidth_opt. Esta
estrutura deve ser do tipo LVC_S_LAYO.
Para ordenar os dados de uma maneira especifica no ALV quando o grid
exibido inicialmente, voc deve fornecer uma tabela interna para o parmetro
IT_SORT. Voc usa o tipo de tabela LVC_T_SORT para declarar esta tabela interna.
Nesta tabela interna, voc cria um registro para cada campo que faz parte dos critrios
de ordenao. Voc especifica o nome da coluna no campo FIELDNAME. Se mais do
que um campo fizer parte dos critrios de ordenao, voc entra com uma sequencia
para cada coluna no campo SPOS, ou fornece os campos na sequencia correta para a
ordenao. Para ordenar crescentemente, voc coloca um X no campo UP.
Catlogo De Campos
Devido ao fato da tabela de exibio no possuir um formato fixo, para que o
grid ALV possa exibir os dados, Uma descrio das colunas no grid ALV deve ser
fornecida. O catlogo de campos fornece esta informao, a qual ento usada para
exibir os dados ou na criao da lista de impresso.
Como mencionado acima, a maneira mais simples de gerar o catlogo de
campo informar o nome de uma estrutura do dicionrio ABAP para o grid ALB no
parmetro i_structure_name. Se no for possvel informar todos os detalhes para todas
as colunas atravs do parmetro i_structure_name, voc fornece esta informao para
o ALV pelo parmetro it_fieldcatalog. A tabela interna que voc informa pelo parmetro
it_fieldcatalog deve ser definida usando o tipo de tabela LVC_T_FCAT, que possui o
tipo de linha LVC_S_FCAT.
As razes mais comuns para incluir um catlogo de campos so:
Voc quer alterar a exibio, por exemplo, uma coluna com posio diferente
ou cabealho.
A tabela interna possui colinas que no existe na estrutura do dicionrio
informada no parmetro i_structure_name.
371
372
Manipulao De Eventos Em ALV
Um objeto pode anunciar que seu estado mudou disparando eventos. Um
exemplo comum com grids ALV o duplo clique: Quando o usurio d um duplo clique
em uma clula, o evento DOUBLE_CLICK disparado. Voc pode programar deu
prprio mtodo manipulador em sua prpria classe (normalmente uma classe local)
que ir reagir a este evento quando disparado.
Para que o mtodo manipulador escute o evento disparado, para que ele
esteja pronto a reagir quando o evento ocorrer, voc deve registrar esta instncia. Se o
evento disparado, os mtodos registrados so executados na ordem em que foram
registrados.
Sua primeira tarefa para manipular eventos de um controle identificar quais
eventos podem ser disparados. Examinando a classe associada ao controle (no nosso
exemplo, a classe CL_GUI_ALV_GRID) e procurar tanto na aba Eventos ou na lista
hierrquica no Workbench expandindo o n Eventos fornecer todos os eventos
pblicos que podem ser disparados. A verso atual da CL_GUI_ALV_GRID possui 32
eventos pblicos que podem ser disparados. Alguns dos eventos mais comunmente
usados
para
esta
classe
so
DOUBLE_CLICK,
PRINT_TOP_OF_LIST,
PRINT_TOP_OF_PAGE, PRINT_END_OF_PAGE, PRINT_END_OF_LIST, TOOLBAR e
USER_COMMAND.
Para especificar um mtodo manipulador de eventos em uma classe local, na
parte de definio voc usa a adio FOR EVENT <nome do evento> OF <nome da
classe>. Esta adio especifica que este mtodo pode reagir ao evento <nome do
evento> das instancias da classe <nome da classe>. Voc estrutura os nomes dos
mtodos manipuladores de evento da seguinte maneira: ON_<nome do evento>. Um
exemplo disso pode ser visto na listagem 15.15 abaixo.
Apenas os parmetros formais que foram definidos para o evento podem ser
usados em um mtodo manipulador de eventos. Os tipos dos parmetros so tirados
do evento. Enquanto s possvel incluir parmetros que foram definidos no evento,
no necessrio fazer IMPORT de todos os parmetros passados pela instruo
RAISE EVENT. A Listagem 15.3 mostra a definio de um mtodo manipulador, a
listagem 15.4 mostrar a implementao do mtodo manipulador, e a listagem 15.5
mostra como registrar o mtodo manipulador.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SACRION.
METHODS:
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column.
ENDCLASS. lcl_event_receiver DEFINITION
Listagem 15.3 Definio de um mtodo Manipulador
CLASS lcl_event_receiver IMPLEMENTATION
METHOD handle_double_click.
373
READ TABLE gt_sflight INDEX e_row-index INTO gs_flight.
ENDMETHOD.
ENDCLASS.
Listagem 15.4 Mtodo Manipulador
DATA:
grid1
TYPE REF TO cl_gui_alv_grid,
event_receiverTYPE REF TO lcl_event_receiver.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_double_click FOR grid1.
Listagem 15.5 Registrando o mtodo
Um exemplo do processo completo para manipulao de eventos com o
Modelo de Objeto ALV mostrado no final da prxima seo (veja a listagem 15.14 e
listagem 15.15). A diferena entre eles que voc precisa pegar um evento de objeto
antes de registrar o manipulador.
Para sumarizar o processo:
1. Definir a classe local.
2. Definir o mtodo manipulador usando a sintaxe correta e importando
qualquer parmetro que voc queira usar.
3. Implementar o mtodo manipulador.
4. Registrar o mtodo manipulador usando SET HANDLER, antes que o evento
possa ser disparado (normalmente antes do grid ALV ser exibido).
Modelo De Objeto ALV
O Modelo de Objeto ALV (ALV OM) uma nova funcionalidade disponvel a
partir do SAP NetWeaver 6.40. Nas releases anteriores o ALV era baseado na classe
global CL_GUI_ALV_GRID, a qual ns j discutimos. Modelo de Objeto ALV simples
de usar. Ns discutiremos trs formatos de sada do ALV: tela cheia; a lista ABAP
clssica, e a sada em um container de controle como subrea da tela.
Voc deve chamar pelo menos os 2 seguintes mtodos na classe principal ALV
CL_SALV_TABLE para obter a sada ALV desejada.
374
instncia para chamar os outros mtodos ou para ajustar individualmente o ALV. Se
voc possuir vrios ALV na mesma tela, cada um ter sua prpria instncia ou varivel
de referncia.
Como no ALV antigo, voc deve definir uma varivel de referncia com o tipo
da classe CL_SALV_TABLE. Novamente voc precisa de uma tabela interna standard
para a exibio. As definies so mostradas na listagem 15.6 e 15.7.
TYPES:
BEGIN OF glt_outtab,
carrid
TYPE s_carr_id,
connid
TYPE s_conn_id,
countryfr
TYPE land1,
cityfrom
TYPE s_to_city,
airpto
TYPE s_toairp,
fltime
TYPE s_fltime,
deptime
TYPE s_dep_time,
arrtimeTYPE s_arr_time,
distance
TYPE s_sitid,
fltype
TYPE s_fltype,
period
TYPE s_period,
icon_flttype TYPE icon_d,
t_color TYPE lvc_t_scol,
t_celltype
TYPE salv_t_int4_column,
END OF glt_outtab,
gtt_outtab
TYPE STANDARD TABLE OF glt_outtab
WITH NON-UNIQUE DEFAULT KEY.
Listagem 15.6 Definio da Tabela Interna para Passa ao ALV.
DATA:
gt_outtab
TYPE gtt_outtab,
gs_outtab
TYPE glt_outtab.
Listagem 15.7 Declarao da Tabela Interna para Passar ao ALV.
Ento voc cria a instncia ALV chamando o mtodo FACTORY. A listagem 15.8
mostra como produzir uma lista de exibio clssica, e a listagem 15.9 mostra como
produzir a exibio da tabela standard. Os outros parmetros opcionais tambm so
mostrados na primeira chamada. Os parmetros comentados permitem que voc
posicione o ALV em um container. Ambas as chamadas produzem um ALV em tela
cheia, pois um container no foi especificado. Os dois parmetros necessrios so
r_salv_table, que retorna uma ao ALV criado, e t_table, o qual uma tabela interna que
contm (ou conter) os dados a serem exibidos no ALV.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>true
*
r_container
=
375
*
container_name
IMPORTING
r_salv_table
= gr_table
CHANGING
t_table
= gt_outtab.
CATCH cx_salv_msg INTO gr_error.
gv_str_text = gr_error->if_message~get_text( ).
MESSAGE gv_str_text TYPE E.
ENDTRY.
Listagem 15.8 Chamada do mtodo FACTORY para a exibio da lista.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = gt_outtab.
CATCH cx_salv_msg INTO gr_error
gv_str_text = gr_error->if_message~get_text( ).
MESSAGE gv_str_text TYPE E.
ENDTRY.
Listagem 15.9 Chamada do Mtodo FACTORY para a Exibiao de Tabela.
Para realmente exibir o ALV, voc deve chamar o mtodo DISPLAY da instncia
apropriada. Isto mostrado no final da listagem 15.10. A sada da exibio clssica de
lista mostrada na figura 15.2, e a sada padro do ALV mostrada na figura 15.3.
376
Nota: A exibio clssica em lista ainda possvel porque a nica forma de se exibir
mltiplas linhas para um registro.
CLEAR: gt_outtab.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_outtab
WHERE carrid IN s_carrid.
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = gr_table
CHANGING
t_table
= gt_outtab ).
CATCH cx_salv_msg INTO gr_error.
gv_str_text = gr_erro->if_message~get_text( ).
MESSAGE gv_str_text TYPE E.
ENDTRY.
gr_table->display( ).
Listagem 15.10 Selecionar, Criar e Exibir o ALV.
Note que no existe catlogo de campos e nenhum nome de estrutura foi
fornecido. Se os campos referenciados na tabela de dados so definidos com a
referencia aos elementos de dados no dicionrio ABAP, voc no precisa fazer mais
nada. Se voc quiser, entretanto, mudar as propriedades de exibio do ALV, existem
mtodos que permitem que voc altera como a tabela exibida.
Voc pode, por exemplo, exibir uma coluna como um cone ou alterar o
cabealho de uma coluna (curto, mdio, longo ou tooltip). Estes mtodos permitem
que voc reordene colunas, especifica a ordem de ordenao ou esconda colunas
entre outras coisas. A maior vantagem da nova tcnica a velocidade que possvel
377
escrever um programa para produzir um ALV. Porque a informao dos campos
produzida ou entregada automaticamente, voc s precisa programar as mudanas.
Cuidado: As classes discutidas no resto desta seo no superclasses e subclasses
no sentido de herana orientada a objeto. Isto significa que classes abaixo na linha de
hierarquia no herdam propriedades das classes com hierarquia maior. Os termos
hierarquia, superobjeto,e subobjeto so usados para identificar partes de um ALV e
mostrar como rodos os objetos juntos representam o ALV como um todo.
Para alterar um ALV usando o Modelo de Objeto ALV, voc s precisa ter uma
viso orientada a objeto do ALV. De forma simples, o prprio ALV um objeto, e seus
componentes, como colunas, funes, ordenao e assim por diante so tambm
objetos, mas so os subobjetos do ALV. Se voc quiser alterar algo no ALV, voc
simplesmente:
A listagem 15.11 mostrar o dois passos para definir o padro zebra. Primeiro, a
referencia da tabela ALV usada para obter as configuraes de exibio, e ento o
objeto resultante usado para chamar o mtodo apropriado para alterar o atributo.
DATA:
lr_display
TYPE REF TO cl_salv_display_settings.
lr_display = gr_table->get_display_setings( ).
lr_display->set_striped_pattern( value =
if_salv_c_bool_sap=>true ).
Listagem 15.11 Chamando um SubObjeto.
Nada mais necessrio; as mudanas tem efeito imediato. Para alguns
elementos do ALV, como colunas e funes, existem nveis adicionais de subojetos. O
superobjeto nomeado no plural columns contm propriedades que se aplicam a
todas as colunas ou que afetam a interao de todas as colunas, como a ordem das
colunas. O subobjeto nomeado no singular, por exemplo a coluna Airline, contm as
propriedades que so vlidas apenas para aquela coluna, como o ttulo da coluna. Os
mesmos dois passos so repitidos para quantos sejam os nveis que voc precise
processar; obter a referencia do objeto pai e usar esta referencia para chamar o
mtodo que realiza a alterao. A tabela 15.5 abaico contem os subobjetos mais
utilizados, a chamada do mtodo para que o ALV retorne o subobjeto, e a classe do
subobjeto. Exemplos podem ser vistos na listagem 15.12.
DATA:
lv_short
TYPE scrtext_s,
lv_medium
TYPE scrtext_m,
lv_long TYPE scrtext_l,
lv_tooltip
TYPE lvc_tip,
lr_column
TYPE REF TO cl_salv_column,
ir_columns
TYPE REF TO cl_salv_columns_table.
378
ir_columns->gr_table->getcolumns( ).
TRY.
lr_column = ir_columns->get_column( FLTYPE ).
lr_column->set_visible( if_salv_c_bool_sap=>false ).
CATCH cx_salv_not_found.
ENDTRY.
TRY.
CALL METHOD ir_columns->get_column
EXPORTING
columnname = ICON_FLTTYPE
RECEIVING
value = lr_column.
lv_short = Charter (h37).
lr_column->set_short_text( lv_short ).
lv_medium = Charter flight (h38).
lr_column->set_medium_text( lv_medium ).
lv_long = Charter flight (h39).
lr_column->set_long_text( lv_long ).
lv_tooltip = Charter flight (h40).
lr_column->set_tooltip( lv_tooltip ).
CATCH cx_salv_not_found.
ENDTRY.
Listagem 15.12 Obtendo um subobjeto do ALV, escondendo uma coluna e
adicionando um cabealho a uma nova coluna.
A classe mais alta na hierarquia do ALV a classe CL_SALV_TABLE. Nas
classes ALV subordinadas, as convenes de nomenclatura podem ajudar a identificar
o nvel do objeto; se o nome plural (por exemplo, CL_SALV_COLUMNS_TABLE), ele
se refere a propriedades de um grupo de elementos ALV. Se o nome estiver no
singular (por exemplo, CL_SALV_COLUMN_TABLE), voc est lidando com
propriedades de um nico elemento.
Na tabela 15.5, cada um dos mtodos GET (todos so parte da
CL_SALV_TABLE) so exibidos com o objeto que eles retornam e uma curta descrio.
Mtodo GET
GET_AGGRIGATIONS
GET_COLUMNS
GET_DISPLAY_SETTIN
GS
GET_EVENT
GET_FILTERS
GET_FUNCTIONAL_SE
TTINGS
CL_SALV_EVENTS_TABLE
CL_SALV_FILTERS
CL_SALV_FUNCTIONAL_SETTI
NGS
Descrio
Objetos Agregados
Superclasse das Colunas
Defini a exibio, por
exemplo, ttulo, padro de
listras, linhas, etc.
Eventos
Critrios de filtro
Superclasse de Hyperlink
e tooltip
379
GET_FUNCTIONS
CL_SALV_FUNCTIONS_LIST
GET_LAYOUT
CL_SALV_LAYOUT
GET_PRINT
CL_SALV_PRINT
GET_SELECTIONS
CL_SALV_SELECTIONS
GET_SORTS
CL_SALV_SORTS
Tabela 15.5 Mtodos do Modelo de Objeto ALV
Funes
como
ordenao,
agregao,
etc.
Armazenamento,
Administrao,
...
de
variantes de exibio
Configurao
de
Impresso
Modo de seleo e
selees
Critrios de Ordenao
Mtodo Get
Retorna Objeto do
Tipo
CL_SALV_AGGREGA
TION
CL_SALV_AGGREGATIONS
GET_AGGREGAT
ION
CL_SAL_COLUMNS_TABLE
GET_COLUMN
CL_SAL_COLUMN_T
ABLE
CL_SALV_FILTERS
GET_FILTER
CL_SALV_FILTER
CL_SALV_FUNTCTIONAL_SET
TINGS
GET_HYPERLIN
KS
CL_SALV_HYPERLIN
KS
CL_SALV_FUNCTIONAL_SETT
INGS
GET_TOOLTIPS
CL_SALV_TOOLTIPS
CL_SALV_FUNCTIONS_LIST
GET_FUNCTION
S
CL_SALV_FUNCTIO
N
CL_SALV_SORTS
GET_SORTS
CL_SALV_SORT
Descri
o
Uma
agrega
o
individua
l
Uma
coluna
individua
l
Um
critrio
de filtro
individua
l
Supercla
sse de
todos os
hyperlink
s
Supercla
sse para
todos os
tooltips
Uma
funo
individua
l
Um
380
critrio
de
ordena
o
individua
l
Tabela 15.6 Mtodos de subobjetos ALV
O processo usado para colocar o ALV em um container na tela segue os
mesmos passos iniciais que a verso antiga do ALV, mas ento fornece a instancia do
container para o FACTORY. Um exemplo mostrado na listagem 15.13.
REPORT ztraducaolivroabap.
IF gr_container_2100 IS NOT BOUND.
CREATE OBJECT gr_container_2100
EXPORTING
container_name = 'CONTAINER_2100'.
TRY .
cl_salv_table=>factory(
EXPORTING
r_container = gr_container_2100
container_name = 'CONTAINER_2100'
IMPORTING
r_salv_table = gr_table_2100
CHANGING
t_table
= gt_outtab_2100 ).
CATCH cx_salv_msg.
ENDTRY.
PERFORM register_events_2100 USING gr_table_2100.
gr_table_2100->display( ).
ENDIF.
Listagem 15.13 Produzindo um AVL em um container usando o Modelo de
Objeto ALV
Devido ao fato da rotina estar em um cdigo que reexecutado, o cdigo
colocado em uma validao para ver se o container j existe. Se o container no
existir, um container criado. Uma vez que o container seja criado, o mtodo
FACTORY chamado, informando o nome do container e a referencia para o container
criado (apenas a referencia realmente necessria_. Eventos so registrados (a subrotina exibida na listagem 15.15) e o ALV exibido. Para existir uma distino entre
os vrios containers, ns atribumos um nmero nico para a vrias partes (neste caso
o numero da tela).
Ns simplificamos bastante este exemplo por restrio espacial. Obviamente,
deveria existir o tratamento de erros aps a instruo CATCH. Tambm foram omitidas
chamadas a sub-rotinas para modificar os atributos tcnicos da tabela exibida foram
omitidos. Ns recomendamos colocar estas (algumas vezes grandes) mudanas no
ALV em uma sub-rotina ou outra unidade de modularizao para tornar o cdigo mais
381
claro. Especialmente de programao dynpro, onde voc pode estar passando vrios
containers diferentes, comumente voc ser capaz de reusar algumas destas
unidades de modularizao.
Isto nos leva ao PERFORM que permanece antes da exibio. Este processo
similar entre abas as classes ALV (e qualquer outro ripo de manipulao de eventos).
A listagem 15.14 mostra a definio e implementao de uma classe local para
manipular os eventos disparados (ou pelo menos aqueles que este programa est
interessado em processar) pela classe de eventos ALV. O exemplo abrange duplo click
e click nico. Quando o evento disparado, nossa classe local chama uma sub-rotina
para processar o evento.
CLASS lcl_handle_events_2100 DEFINITION.
PUBLIC SECTION.
METHODS:
on_double_click FOR EVENT double_click
OF cl_salv_events_table
IMPORTING row column,
on_link_click FOR EVENT link_click
OF cl_salv_events_table
IMPORTING row column.
ENDCLASS.
"lcl_handle_events_2100 DEFINITION
CLASS lcl_handle_events_2100 IMPLEMENTATION.
METHOD on_double_click.
PERFORM double_click_2100 USING row column.
ENDMETHOD.
"on_double_click
METHOD on_link_click.
PERFORM link_click_2100 USING row column.
ENDMETHOD.
"on_link_click
ENDCLASS.
"lcl_handle_events_2100 IMPLEMENTATION
Listagem 15.14 Definio de manipuladores de eventos locais
Aps criar nosso objeto de referencia ALV e antes de exibir a tabela, ns
precisamos registrar os eventos. Como no antigo ALV (ou qualquer outro tipo de
processamento de evento), voc precisa fazer o mtodo manipulador ficar ouvindo o
disparo do evento. Para fazer isso voc precisa registrar esta instncia com o objeto
que pode disparar o evento (produzindo efetivamente uma lista de ouvidores). Um
exemplo disto mostrado na listagem 15.15.
FORM register_events_2100 USING p_gr_table
TYPE REF TO cl_salv_table.
DATA: lr_events TYPE REF TO cl_salv_events_table.
IF gr_events_2100 IS NOT BOUND.
CREATE OBJECT gr_events_2100.
ENDIF.
lr_events = p_gr_table->get_event( ).
382
SET HANDLER gr_events_2100->on_double_click FOR lr_events.
SET HANDLER gr_events_2100->on_link_click FOR lr_events.
ENDFORM.
"register_events_2100
Listagem 15.15 Registrando Eventos
Deferente das antigas verses do ALV (onde no era necessrio criar um
objeto para a classe de evento, pois os eventos pertenciam a classe ALV), ns criamos
um objeto da classe de evento (CL_SALV_EVENTS_TABLE) se no tivermos uma
referencia vlida e ento definimos os manipuladores para os dois eventos que
estamos interessados em processar.
Terminologia Importante
Voc deve saber o que um catlogo de campos e como produzir um para um
ALV. Voc deve tambm entender o processo para produzir um ALV em tela cheia e
dentro de um container, em ambas as verses do ALV.
Voc deve tambm compreender os eventos relacionados a um ALV. Voc
deve saber como escrever o mtodo manipulador, como registrar o manipulador do
evento e onde identificar quais eventos pode ser disparado. A figura 15.4 mostra os
eventos para o Modelo de Objeto ALV e a tabela 15.7 mostra os eventos para o grid
control.
Descrio
Aps a atualizao da lista
Aps um comando do usurio
Antes de um comando do usurio
Clique em um boto
Clique no cabealho da coluna
Clique em uma clula
Menu de Contexto
Menu de Contexto
Entrada
do
menu
de
contexto
selecionada
Os dados foram alterados
Dados na tabela de exibio foram
383
atualizados
Duplo clique na clula
Chamada atrasada
A seleo foi alterada.
O evento disparado se o usurio
selecionar uma linha ou coluna que no
havia sido selecionado ainda. O Controle
de Grid ALV dispara o evento com um
pequeno atraso de 1.5 segundos
O foco na clula foi removido
DELAYED_MOVE_CURRENT_CELL
Duplo clique
DOUBLE_CLICK
Duplo clique em um separador de coluna
DOUBLE_CLICK_COL_SEPARATOR
Fim da Lista
END_OF_LIST
F1 pressionado
F1
O hotspot foi selecionado
HOTSPOT_CLICK
Boto esquerdo do mouse pressionado
LEFT_CLICK_DESIGN
no controle em modo design
Boto esquerdo do mouse pressionado
LEFT_CLICK_RUN
no controle no modo execuo
Boto de Menu
MENU_BUTTON
Controle movido
MOVE_CONTROL
Fonte do arrasto
ONDRAG
Alvo da soltura
ONDROP
Fonte do arrasto em caso de sucesso
ONDROPCOMPLETE
Opes mltiplas na soltura.
ONDROPGETFLAVOR
Na requisio de ajuda
ONF1
Na requisio de valor
ONF4
Modo Impresso: fim da lista do ALV
PRINT_END_OF_LIST
clssico
Modo Impresso: Fim da pgina no
PRINT_END_OF_PAGE
processamento da lista
Modo Impresso: topo da lista do ALV
PRINT_TOP_OF_LIST
clssico
Modo Impresso: topo da pgina no
PRINT_TOP_OF_PAGE
processamento da lista
Boto direito do mouse pressionado no
RIGHT_CLICK
controle
Controle redimensionado
SIZE_CONTROL
Edita o texto do subtotal
SUBTOTAL_TEXT
Barra de ferramentas
TOOLBAR
Boto da barra de ferramentas
TOOLBAR_BUTTON_CLICK
selecionado
Entrada do menu da barra de
TOOLBAR_MENU_SELECTED
ferramentas selecionada
Boto do menu da barra de ferramentas
TOOLBAR_MENUBUTTON_CLICK
selecionado
Topo da pgina
TOP_OF_PAGE
Clique na linha de total
TOTAL_CLICK_ROW_COL
Comando do usurio
USER_COMMAND
Tabela 15.7 Eventos para a CL_GUI_ALV_GRID
DBCLICK_ROW_COL
DELAYED_CALLBACK
DELAYED_CHANGE_SELECTION
DELAYED_CHANGED_SEL_CALLBACK
384
Questes Prticas
As questes pratica abaixo lhe ajudaram a avaliar sua compreenso do tpico.
As questes so similares quelas encontradas nos exames de certificao. Mesmo
que nenhuma destas questes ser encontrada no exame, elas lhe ajudaram a revisar
seu conhecimento do assunto. Selecione a resposta correta e depois verifique todas
as suas respostas na seo de respostas a seguir. Lembre-se que voc deve
selecionar todas as respostas corretas e apenas as respostas corretas para pontuar a
questo.
1. Qual a melhor ordem para fornecer um manipulador de eventos para um ALV:
a.
b.
c.
d.
e.
385
6. Qual classe usada para definir uma referencia para uma instncia do modelo de
objeto ALV:
a. CL_GUI_CUSTOM_CONTAINER
b. CL_GUI_ALV_GRID
c. CL_SALV_TABLE
7. Voc usa a instruo CREATE OBJECT para criar os dois tipos de ALV.
a. Verdadeiro
b. Falso
8. O Modelo de Objeto ALV:
a. um grupo de classes que descrevem o grid ALV como um todo e
herdam de uma nica classe.
b. um grupo de classe hierrquicas que descrevem o grid ALV como um
todo mas no herdam de uma nica classe.
Respostas E Explicaes
1. Resposta Correta: D
Voc deve escrever os manipuladores, criar o ALV, e ento registrar os
eventos do ALV, antes de realmente exibir o ALV.
2. Respostas Corretas: B,F
O container requer o uso de um objeto adicional para ligar o controle
que existe no servidor de apresentao ao programa rodando no servidor de
aplicao. Um controle de container fornece esta funo e produzido a partir
da classe CL_GUI_CUSTOM_CONTAINER.
3. Resposta Correta: D
Para alocar uma rea na tela voc usa o Screen Painter para
desenhar o container na rela e nome-lo. Depois quando o programar criar o
objeto para o container, este nome usado para ajudar na ligao do controle
no SAP GUI com o programa.
4. Resposta Correta: A
Isto verdade para ambas as verses do ALV. Em ambos os casos
voc cria o ALV e ento chama o mtodo de exibio daquele objeto. O mtodo
para o Controle de Grid ALV SET_TABLE_FOR_FIRST_DISPLAY da classe
CL_GUI_ALV_GRID, e para o Modelo de Objeto ALV o mtodo DISPLAY da
classe CL_SALV_TABLE.
5. Respostas Corretas: A,D,E
O catlogo de campo permite que voc adicione uma coluna a exibio,
esconda uma coluna da exibio, altere o ttulo de uma coluna, ou coloque as
coluna em uma ordem diferente. O Controle de Grid ALV espera parmetros
diferentes para fornecer informaes sobre ordenao filtros, alteraes de
layout, ou variantes de exibio.
386
6. Resposta Correta: C
O controle de Grid ALV usa a classe CL_GUI_ALV_GRID e o Modelo de
objeto ALV usa a classe CL_SALV_TABLE.
7. Resposta Correta: B
A instruo CREATE OBJECT apenas usada para instanciar o Controle
de Grid ALV. o mtodo FACTORY da classe CL_SALV_TABLE usado para
instanciar um Modelo de Objeto ALV. A instruo CREATE OBJECT est de fato
dentro do mtodo FACTORY, ento um objeto criado para voc, e ento a
referencia retornada pelo mtodo.
8. Resposta Correta: B
As classes do Modelo de Objeto ALV no so superclasses e
subclasses no sentido de orientao a objetos ABAP; isto , as classes abaixo
na hierarquia no herdam as propriedades das classes de maior hierarquia. Os
termos hierarquia, superobjeto, e subobjeto ilustram como os objetos junto
representam o ALV como um todo.
Leve Consigo
Voc deve entender o catlogo de campos; como produzir um e como modificalo. Voc deve saber o processo para produzir um ALV em tela cheia e dentro de um
container, em ambas as verses do ALV. Voc deve conhecer os passos: escrever o
manipulador, registrar o evento e onde identificar quais eventos podem ser disparados.
Relembre-se
Voc deve entender os passos necessrios para colocar um grid ALV dentro de
um container: desde alocar o espao na tela usando o Screen Painter para criar o
container no seu programa e colocar o ALV dentro do container. O uso efetivo em um
container requer a compreenso do manuseio de dynpro clssicas ( veja o Captulo 9,
Programas ABAP bsicos e Criao de Interfaces e Captulo 12, Telas Clssicas).
A tabela 15.8 mostra os conceitos chave da programao ALV.
Conceito Chave
Controle de Container
Controle
Catlogo de campos
Definio
O controle de container usado para
conectar a dynpro ao controle. Isto
permite que o grid ALV fique dentro do
container, que por sua vez fica dentro da
rea reservada na tela.
Controles so componentes de software
stand-alone que so reutilizveis
O catlogo de campos contem as regras
que descrevem como a tabela de dados
deve ser exibida.
O modelo de Objeto ALV foi uma nova
funcionalidade no SAP NetWeaver 6.40.
Ele mais moderno e mais simples de
usar do que o Controle de Grid ALV
387
original
Tabela 15.8 Relembre-se Conceitos Chave
Dicas
Como na maioria dos tpicos encontrados no exame de certificao,
importante possuir a maior quantidade de experincia prtica quanto possvel. Ns
sugerimos que se voc no tenha muita exposio com a programao ALV, escreva
algum programas pequenos para entender os conceitos. Voc deve usar ambas as
verses do ALV tanto em tela cheia quanto em um container. Simplesmente selecione
os dados de uma tabela do banco e ento produza um ALV.
Sumrio
Voc deve ser capaz de produzir grid ALV de diversas formas e compreender
como interagir com o ALV e o usurio atravs dos eventos. Este conhecimento
permitir que voc passe facilmente neste tpico no exame de certificao.
388
389
Web Dynpro um framework para a interface de usurio do SAP standard e
fornece suporte para o desenvolvimento da representao de aplicaes de negcios
da Web.
Web Dynpro fornecido para os ambientes ABAP e JAVA.
Neste captulo ser fornecido um conhecimento bsico do Web Dynpro ABAP.
Ns vamos discutir a arquitetura dos componentes Web Dynpro. Discutir o paradigma
de designer Model View Controller usado na Web Dynpro ABAP e entre diferentes UI
design models. Ver os diferentes tipos de controles, identificando aquelas diferenas e
explicando como eles so usados. Ns tambm vamos explicar a troca de dados entre
os componentes de aplicao Web Dynpro.
O exame de certificao tem peso mdio para este captulo comparado com
outros tpicos do exame. Porque similar ao conceito da programao clssica
Dynpro. Isto significa que ter uma porcentagem mdia quando comparando este
captulo com outros captulos.
390
Conceitos Chave
Voc precisa conhecer e ser capaz de executar as seguintes tarefas quando
desenvolver aplicaes Web Dynpro ABAP:
391
Model
O Model a interface para o sistema e habilita a aplicao Web Dynpro
a acessar os dados de negcio.
View
O view responsvel por apresentar os dados no browser ou outro
cliente.
Controller
O controller a ponte entre o view e o model. responsvel por
formatar o modelo de dados para mostra-lo na view, processar as entradas de
usurios e e retorna-las para o model, exatamente como o nome sugere,
controla as coisas.
392
Uma view representa uma poro retangular de uma pgina mostrada para o
usurio. Como um dynpro normal, contm elementos UI tais como campos de entrada
e botes (ver Figura 16.2). O posicionamento destes elementos controlado por uma
propriedade chamada layout (ver Figura 16.3). Uma simples pgina web pode ser
composta por uma simples view ou mltiplas views. Uma janela (ver Figura 16.4)
define a combinao das views e a navegao entre estas views. Uma janela define a
combinao de views e a navegao entre as views. Uma aplicao Web Dynpro
obrigatoriamente deve ter pelo menos uma view e uma janela.
Web Dynpro controller contm o cdigo fonte. A armazenagem hierrquica para
a rea de dados globais de controllers chamada de context.
Um componente Web Dynpro tem um ciclo de vida que inicia na 1 vez que
chamado em tempo de execuo e finaliza com a aplicao Web Dynpro chamado e
instanciado componente fim.
393
Um Controller
Um Context
O plug outbound de uma view pode ser usado para navegao a uma view
subsequente. Plugs so parte da view controller. Eles so assinalados exatamente
para uma view.
Normalmente existem muitas views ligadas em uma Janela. Porm,
necessrio que, seja especificado uma view para ser mostrado primeiro quando a
janela chamada. Est view assinalada com a propriedade Default.
394
vez quando a janela chamada. Cada janela tem uma nica interface view assinalada
(esta gerada automaticamente pelo sistema quando voc cria a janela). Esta view de
interface representa o exterior da view na janela e ligado a aplicao Web Dynpro,
ento a janela pode ser chamada usando URL. Cada interface view associada a
uma janela, e cada janela associada a uma interface view.
Uma janela tem um ou muitos plugs inbound ou outbound. Atravs do uso de
plugs voc pode incluir uma janela em uma cadeia de navegao. Cada plug de janela
visvel dentro da janela inteira, e isto pode ser usado para navegao dentro desta
janela.
Nota: Se voc adicionar um plug de janela existente para o componente de interface,
isto se tornar parte da view de interface pertencente a esta janela. Este plug de
interface so requeridos quando:
Controllers
Controllers determinam como o usurio pode interagir com a aplicao. Uma
aplicao Web Dynpro pode conter diferente instancias de controllers e contexts. Em
adio para view controllers, cada um controla o comportamento de uma view
individual, tambm h controllers globais que fornecem mais servios gerais para
todos os componentes views (ver figura 16.1 para o relacionamento de controllers).
Pelo menos um controller global est contido em cada componente Web
Dynpro que visvel de dentro do componente para todos os outros controllers: o
componente controller. O ciclo de vida para este componente controller estende-se da
criao de dados dentro do controle para cobrir todo o perodo durante cada
componente em uso.
Voc pode incluir controllers adicionais na forma de controllers personalizados.
O ciclo de vida to longo quanto uma view na existncia do componente.
Cada view tem uma view de controller e uma view de contexto. A view
controller processa as aes executadas pelo usurio na view. A view de contexto
contem os dados requeridos para a view. A vida da view controller corresponde ao
contexto, pelo menos no tempo em que a view mostrada no browser. Se voc
substituir uma view com uma view sucessiva, os dados locais (contexto)
indisponibilizado.
Cada componente Web Dynpro contm exatamente uma interface controller,
que um controller global que tambm visvel fora do componente. Isto faz parte da
interface de componente Web Dynpro. Comunicao de um controle para outro ocorre
por chamada de mtodo de um diferente controller ou por um evento disparado que
outros controllers tem registrado. Voc define o uso deste controller quando voc cria
um controller.
395
Todo contexto de controller consiste de uma lista de hierarquia de nodes e
atributos. Um contexto sempre tem um pai, conhecendo como uma base de contexto
node. O contexto node organizado em uma hierarquia e pode ter atributos ou outros
atributos filhos. Todos os filhos de um node so conhecidos como um elemento. Voc
pode imaginar uma coleo de elementos da mesma forma como uma tabela uma
coleo de linhas.
So 5 tipos de controller no componente Web Dynpro. Eles diferem em sua
composio:
CONTROLLER DE COMPONENTE
Um componente Web Dynpro tem somente um componente controller. um
global controller e visvel a todos os outros controllers. A funcionalidade do
componente dirigido pelo componente controller. No existe interface visual
para este controller.
CONTROLLER DE PERSONALIZAO
opcional. Ele pode ser usado para encapsular sub-funes do controller de
componente.
CONTROLLER DE CONFIGURAO
Este uma personalizao de controller especial. Voc somente precisa dele
se o componente correspondente implementa uma configurao especial e
uma funo personalizada.
CONTROLLER DE VIEW
Existe apenas uma view controller para cada view (que consiste de uma parte
de lay-out e view controller). Este controller processa fluxo lgico viewespecific, por exemplo, checar a entrada e tratar aes do usurio.
CONTROLLER DE JANELA
Existe apenas um controller para cada janela. O controller pode ser usado para
processar os dados passados via plugs inbound quando isto reusado como
controller filho. O mtodo plug inbound de uma janela pode chamar mtodos
deste controle.
396
quando a instancia criada (wddoinit) e quando uma instancia de controller deletado
(wddexit). wddoinit pode ser usado para criar instancias ou disparar checks de
autorizao, onde wddoexit pode ser usado para desbloquear registros de objetos de
bloqueados.
Existem dois atributos de controller predefinidos; eles so usados para acessar
a funcionalidade de controller (wd_this) e o contexto (wd_context).wd_this uma
referencia prpria (isto no o mesmo como ME, como usado no ABAP referencia
prpria) para o controller de interface corrente (IF_<controller_name>) Ele representa
todas as funcionalidades implementadas na gerao de classes. wd_context uma
referencia prpria para os controllers de contexto do node principal.
Para compartilhar informao entre diferentes controllers, um controller deve
declarar o uso de outro controller. Voc faz isto na PROPERTIES tab do controller que
precisa de outro controller. Frequentemente tem um requisito para este tipo de dados
compartilhado quando quer criar um node de contexto mapeado ou acessar outro
controller de um mtodo definido pelo usurio.
Contextos
Quando um node criado em um contexto do componente Web Dynpro,
especificado a cardinalidade do node. A cardinalidade define quo frequente um node
ser instanciado em tempo de execuo, em outras palavras, como muitos elementos
deste node so disponibilizados em tempo de execuo. Table 16.1 mostra a possvel
cardinalidade de um componente Web Dynpro.
Cardinalidad
e
1...1
0...1
Descrio
Eventos
O componente controller reserva a criao de eventos que so fornecidos para
a comunicao entre controllers. Esta comunicao reserva um controller para
disparar eventos manipulveis em diferentes controllers. Eventos de controllers de
397
interface reservam comunicao entre componentes para ser implementado. Eventos
de componentes controller apenas so visveis dentro do componente.
Alguns elementos, por exemplo, o Button, pode reagir a uma interao com o
usurio. Estes eventos so pr-definidos, e voc deve liga-lo a uma ao em tempo de
design (ver Figura 16.5). Quando uma ao criada um mtodo de evento
automaticamente criado. O evento no elemento UI (pode ter muitos para uma view)
pode estar com diferentes aes.
Os eventos so ligados para que sejam
processados (ver Lista 16.1).
Interface View
Interface Controller
398
Elementos Grficos
Um elemento UI qualquer entidade grfica (campos de entrada, botes, Viso
de textos, etc) que ocupa uma posio dentro de um layout. Cada elemento UI parte
de uma lista de hierarquia (ver Figura 16.6, por exemplo). Isto no significa que todo
elemento UI est visvel para a tela. Alguns elementos UI nunca so visveis na tela,
tal qual TransparentContainer ou o ViewUIElementContainer. Esta estrutura de
elementos UI no est visvel, mas como elementos UI visveis eles ocupam uma
posio na hierarquia de elementos UI. Em tempo de execuo, todo elemento UI
pode ser setado como invisvel sem liberar espao que eles ocupam como elementos
UI.
Muitos elementos UI esto disponveis para design de aparncia de uma
aplicao Web Dynpro. Os elementos UI so divididos em categorias (ver a lista
abaixo). Estas categorias esto mostradas em uma designer view quando a
visualizao do layout esta visvel. Podem ser arrastados no layout, ou
alternativamente, pode usar o menu de contexto do ROOTUIELEMENT para criar
elementos UI para seu layout view. As categorias tem mudado atravs de vrios
support packages da SAP NetWeaver 7.0, mas estas alteraes no so parte do
exame. Tambm, a localizao de elementos UI apenas possvel dentro das
propriedades. Isto significa que ao contrrio de um dynpro clssico, no possvel
mover um elemento UI para um ponto especfico da view, mas isto automaticamente
colocado baseado sobre as propriedades do layout e o elemento UI precedente.
399
400
ROWLAYOUT
Se o RowLayout gerenciador de layout usado com o container elemento UI.
Todo o filho herda a propriedade LayoutData, cada pode ter os valores RowData e
RowHeadData. Se setar a propriedade para RowHeadData, um break forado e este e
o elemento subsequente aparece na prxima linha. Se setar a propriedade RowData,
este elemento filho aparece na mesma linha como um elemento prvio, mesmo se a
margem direita foi alcanada. Elementos UI localizados em diferentes linhas no so
relacionados com outros e no esto alinhados em coluna. Voc pode setar o tamanho
de cada clula usando o atributo de tamanho de cada elemento filho. Um exemplo de
RowLayout pode ser visto na Figura 16.8.
Figura 16.8 RowLayout (com RowHeadData setado Flight Number e Plane Type)
MATRIXLAYOUT
Se o gerenciador de layout MatrixLayout for usado com o container
elemento UI, todos os filhos herdam a propriedade LayoutData que pode ter os
valores MatrixData e MatrixHeadData. Se setar a propriedade para
MatrixHeadData, uma linha break forada. Se setar a propriedade para
MatrixData os elementos filhos iro aparecer na mesma linha como o elemento
prvio, mesmo se a margem direita for atingida. O elemento filho neste
container esto organizados em colunas.
Quando usamos este gerenciador de layout, no existe um nmero de
colunas estticas mas um nmero de colunas definido pelo nmero mximo
de elementos filhos em alguma linha. No preciso ter o mesmo nmero de
elementos em diferentes linhas. possvel pequenos espaes mltiplas
clulas com o elemento UI organizado na MatrixLayout usando o
colSpan(property). Um exemplo de MatrixLayout pode ser visto na Figura 16.9.
GridLayout
Como o MatrixLayout, o GridLayout gerenciador de layout pode ser
usado se quer um alinhamento vertical dos elementos. Aqui o nmero de
colunas esttico e definido com a propriedade colCount do elemento
container. Um elemento filho sozinho no pode controlar se for o primeiro
elemento de uma nova linha. Um break ir aparecer em todas as cdulas
desde que todas as cdulas das linhas estejam ocupadas. Se um elemento ou
401
elementos so removidos, a organizao neste ponto ser levada a esquerda
para preencher as cdulas vazias.
O melhor caminho para usar o GridLayout se todas as linhas ocupam
o mesmo nmero de colunas e somente completa linhas inseridas ou
deletadas. Ao invs de remover os elementos UI completamente voc pode
substitui-los com um InvisibleElement para reter a organizao original do
elemento. Um exemplo do GridLayout pode ser visto na Figura 16.10.
O view layout editado usando o View Editor que uma ferramenta
especfica do Web Dynpro. O View Editor somente est disponvel se usado
quando est editando uma controller view. Um controller custom no ir
mostrar o View Editor porque aqueles controles no tem interface visual.
402
403
Depois de completar estes passos, o caminho do contexto para o n ou atributo
ser mostrado com um valor de propriedade. O boto com circulo vazio ser
substitudo com uma marca verde. (Ver figura 16.11). O caminho do contexto do n ou
atributo para qual ser ligado tambm ser mostrado sobre um layout preview para o
elemento UI.
Quando estabelecer uma ligao de relacionamento, instrues da tela Web
Dynpro obtm um valor para a propriedade elemento UI do n contexto ou atributo
para cada uma das ligao. Voc no est limitado com a ligao do contexto somente
para suprir um InputFiled com um valor. O valor da propriedade do elemento UI
somente uma das propriedades que podem ser fornecidas com dados de uma ligao
de relacionamento. A ligao entre um elemento UI e um atributo de contexto tem dois
caminhos:
404
Terminologia Importante
Voc deve ser capaz de identificar o que se torna uma aplicao Web Dynpro.
Conhecer as partes de um componente Web Dynpro. Alm, precisa entender o
propsito de cada parte e como eles trocam informao ou eventos com outras partes
do mesmo ou outro componente Web Dynpro. Deve saber os tipo de controles, o
propsito de cada.
Termo
Componentes
Web Dynpro
View
Window
Controle
Dynpro
Contexto
Significado
Containers para outras entidades relacionadas ao UI e ao Web
Dynpro
O layout de uma view representa uma parte retangular de uma
pgina mostrada ao cliente. A view contm elementos UI tal qual
campos de entrada e botes.
Uma entidade relacionada para o UI; isto uma possvel
combinao de views e fluxo entre views.
Web Onde o cdigo fonte est localizado
405
Questes Prticas
As questes prticas abaixo vo ajudar a avaliar seu conhecimento do tpico.
As questes mostram a natureza similar para aquelas encontradas no exame de
certificao, enquanto que nenhuma das questes ser encontrada no exame, elas
reservam a voc, revisar o seu conhecimento do assunto. Selecione as respostas
corretas e ento check as respostas na sesso de soluo. Lembre-se que voc deve
selecionar todas as questes corretas para pontuar a questo.
1. Cada componente tem uma interface. Esta interface consiste de:
A. Interface view
B. Interface de contexto
C. Interface de controle
2. Um plug:
A. Pode ser definido com inbound, outbound ou ambos
B. Forma a base de navegao dentro do Web Dynpro
C. Pode ser definido com inbound padro
D. Pode ser definido como inicial
E. Pode ser definido com um exit
F. Pode ser assinalado para mltiplas views
G. Pode ser definido como outbound controlando mltiplos inbound plugs
H. Pode ser definido como inbound e ser controlado por mltiplos outbound
plugs
3. Um componente Web Dynpro contm:
A. Mltiplas views com uma janela
B. Elementos UI
C. Componente de controle
D. Um contexto
E. Exatamente uma interface de controle
4. Uma view pode:
A. Conter outras views
B. Estar contido em uma janela
C. Conter janela
D. Se entrou por um plug inbound causa um evento, mtodo para ser chamado
E. Conter um controle de view
5. Identifique os tipos de controle:
A. Controle de componente
B. Controle Customizvel
C. Controle do consumidor
D. Controle de configurao
406
E. Controle de view
F. Controle de janela
6. Identifique os tipos de gerenciadores de layout:
A. FlowLayout
B. RowLayout
C. ColumnLayout
D. MatrixLayout
E. GridLayout
F. TreeLayout
7. A ligao entre um elemento UI e um contexto de atributo um relacionamento de
duas vias.
A. Verdadeiro
B. Falso
8. Identifique os caminhos para uma estrutura de mapas de contexto:
A. Mapeamento de contexto direto
B. Mapeamento de contexto externo
C. Mapeamento de contexto dinmico
9. O modelo de programao Web Dynpro baseado:
A. Programao Classic Dynpro
B. Business Server Page (BSP)
C. Model View Controller (MVC)
D. Internet Transaction Server (ITS)
3. Questo correta: A, C, E
Elementos UI so colocados dentro de uma view de componente. Entretanto
existe um contexto, isto atualmente parte de qualquer controle de componente ou
407
controle de view. Entretanto o contexto no diretamente parte do componente,
mas de um subcomponente.
4. Questo correta: B, C, D, E
Uma view pode conter uma janela, cada um pode conter outra view, mas
uma view no pode ser colocada em outra view.
5. Questo correta: A, B, D, E, F
No h controle de consumidor.
6. Questo correta: A, B, D, E
ColumnLayout e TreeLayout no so gerenciadores de layout.
7. Questo correta: A
um relacionamento de duas mos, cada est como dados podem ser
mostrados em um browser e ser retrivado de uma entrada de usurio.
8. Questo correta: A. B
Mapeamento de contexto direto e externo so apenas caminhos para
estrutura de mapa de contexto.
9. Questo correta: C
O modelo de programao Web Dynpro baseado sobre o paradigma
Model View Controller para garantir uma diviso clara entre as definies do
usurio de interface e a implementao da aplicao lgica.
Leve Consigo
Voc precisa conhecer as funes Web Dynpro. Lembrando que uma
mudana de paradigma de tipos existentes de dynpros. importante conhecer o
Model View Controller e o que disponvel em cada controle ou view. importante
conhecer como os plugs fazem a navegao e a aplicao iniciar ou finalizar.
preciso um entendimento de views e como eles esto relacionados com a janela e
com os diferentes componentes Web Dynpro esto ligados e trocam os dados.
Finalmente preciso mostrar seu conhecimento de diferentes tipos de controles, seu
propsito e suas capacidades.
408
Lembrar
Deve-se conhecer a separao das partes do paradigma Model, View e
Controller. Conhecer o propsito de cada um (ver a Tabela 16.3).
Conceito
Chave
Model
Definio
Dicas
importante ter muita experincia prtica com este contedo. Ao contrrio da
maioria dos assuntos encontrados no exame de certificao, esta uma rea onde
no ter suficiente experincia.
Enquanto que alguns dos tpicos podem ser familiares, por exemplo eventos
manuais, a maioria dos conceitos apresentados neste captulo requerem uma
mudana de mentalidade. Isto de fato um paradigma diferente e conhecemos muitos
novos conceitos e termos. Voc deve aprender os termos e entender os conceitos.
Sumrio
Agora voc deve entender os conceitos bsicos do Web Dynpro ABAP. Voc
deve ter um entendimento dos componentes e como estes componentes se
relacionam com outros componentes. Este entendimento do Web Dynpro ABAP
habilitara voc para completar est parte do exame de certificao com sucesso.
409
410
Este captulo expande o material apresentado no captulo 14, Programao
ABAP orientada a objeto. O propsito deste captulo prover um entendimento bsico
de como as classes e objetos podem ser organizado, e no para dar detalhes sobre os
objetos ABAP. Ns discutiremos as vantagem dos mtodos funcionais e a maneira de
criar uma classe singleton. Ns abrangeremos o propsito da amizade entre as
classes. Ns tambm discutiremos herana incluindo o up cast e down cast dentro da
hierarquia da arvore de herana. Finalmente, discutiremos interfaces e como elas
podem ser usadas para simular a herana mltipla. Cada um destes tpicos ser
coberto em separado e ser seguindo de exerccios prticos e a soluo do exerccio.
Cenrio Do Mundo Real: Foi pedido que voc pegue uma funcionalidade
prviamente desenvolvida e redesenhe ela. A aplicao fornece dados baseada na
movimentao de inventrio esperada e est atualmente desenvolvida com om grande
programa nico manipulando todos os tipos de ordem de compras, e ordens de venda.
Este programa foi alterado por vrios desenvolvedores diferentes durante os anos,
cada um focando em uma nica parte do programa.
O objetivo produzir um modelo e eventualmente uma srie de classes que
podem ser usadas para implementar o processo usando polimorfismo.
O objetivo standarizar os mtodos e seus parmetros. Mesmos que algumas
classes envolvidas no sejam amplamente relacionadas entre si, em outras palavras,
elas no so especializaes ou generalizaes umas das outras, elas partilharo
mtodos e parmetros. Para simplificar a natureza inconsistente destes objetos, voc
precisa standarizar a nomenclatura deste componentes; mesmo que estes objetos no
sejam relacionados, eles precisam partilhar os mesmos atributos e mtodos.
A criao de um singleton (uma classe que s pode ser instanciada uma vez)
O uso de mtodos funcionais e como eles podem simplificar sua programao
Visibilidade dos componentes e como classes diferentes podem interagir
Ferramentas do Class Builder, especificamente o Refactoring Assistant
Herana e polimorfismo e como us-lo corretamente
O uso de interfaces para fornecer uma funcionalidade similar para classes no
relacionadas
411
412
Mtodos Estticos
Existem dois tipos de atributos, atributos de instncia e atributos estticos, os
quais so discutidos em mais detalhes no Captulo 14, Programao Orientada a
Objetos ABAP. Um atributo esttico existe uma vez para cada classe e visvel para
todas as instncias em tempo de execuo desta classe. Eles tipicamente relacional
rodos os objetos, no apenas um nico objeto. Os exemplos incluem um contador ou
constantes globais. De mesma forma, mtodos estticos so definidos no nvel da
classe. A restrio que apenas componentes estticos podem ser acessados em
mtodos estticos se aplica a implementao do mtodo. Isto faz sentido pois um
mtodo esttico pode ser chamado sem criar qualquer instncia da classe; isto , eles
podem ser acessados diretamente atravs da classe. Um exemplo pode ser recuperar
o valor atual de um contador esttico com descrito abaixo.
Mtodos estticos so chamados usando a sintaxe CALL METHOD
nomeclasse=>nome_metodo ... ou voc pode omitir o CALL METHOD e colocar os
parmetros em parnteses no final da chamada do mtodo. Como os atributos
estticos, mtodos estticos so endereado com o nome da classe, pois eles no
precisam de instncia ( veja a listagem 17.2 para um exemplo). Como nos mtodos de
instncia, quando voc est chamando um mtodo esttico de dentro da classe, voc
pode omitir o nome da classe.
LOOP AT <tabela> ASSIGNING <wa>.
MOVE-CORRESPONDING <wa> TO <estrutura>.
zcl_utility=>create_csv_from_record(
EXPORTING
separator
= gc_comma
quote_all_fields
= F
output_initial_values = X
source_contents
= <estrutura>
rcd_ref_descr
= lr_struct_type
IMPORTING
csv_record
= ls_output
EXCEPTIONS
invalid_structure_component = 1
unable_to_preserve_space
=2
OTHERS
=3
).
ASSERT sy-subrc = 0.
Listagem 17.2 Exemplo de chamada de um mtodo esttico
Singletons
Existem muitos casos nos quais voc precisa impedir que uma classe seja
instanciada mais do que uma vez para cada contexto de programa. Voc pode fazer
isso usando o singleton. Um singleton uma classe que final (que no pode ter
413
nenhuma subclasse), possuis um nvel de instanciao privado (apenas a prpria
classe pode criar uma instncia dela mesma), e instanciada usando um construtor
esttico (que executado apenas aps a primeira vez que a classe acessada na
aplicao). Voc pode ver isso na figura 17.2 e 17.4. A figura 17.3 mostra o atributo
esttico usado para armazenar a referencia do singleton. Desta forma, ns garantimos
que apenas uma instncia da classe pode ser criada em nossa aplicao. Um mtodo
esttico pblico pode ento fazer referencia para a classe disponvel para um usurio
externo como mostrado na figura 17.5. O uso de um singleton pode ser visto na
listagem 17.3.
DATA:
lv_singleton_ref
TYPE REF TO zcl_singleton.
lv_singleton_ref = zcl_singleton=>get_reference( ).
Listagem 17.3 Instanciando e usando um Singleton.
414
componentes pblicos de uma classe. Em casos raros, classes devem trabalhar juntas
to perto que elas precisam acesso aos componentes protegidos ou privados da outra.
Isto pode ser arranjado se uma das classes permitir a amizade com a outra.
O conceito de amizade entre classes previne que estes componentes sejam
disponibilizados para todas as aplicaes, mas o amigo pode acessar os componentes
protegidos e privados diretamente. Uma classe pode fornecer amizade a outras
classes e interfaces (e atravs da interface para todas as classes que implementam a
interface). A principal razo para a amizade performance; se uma classe pode
acessar os atributos privados de outra classe diretamente, ao invs de ter de chamar
um mtodo pblico para obter os dados, ento ser mais rpido pois existe menos
processamento para obter os dados.
Nota: Voc usa a adio FRIENDS da instruo CLASS ou a aba Friends no Class
Builder para fornecer a amizade.
Fornecer amizade uma via de mo nica; a classe que garante a amizade
no automaticamente uma amiga de seus amigos. Se a classe que garantiu a
amizade quiser acesso aos componentes no pblicos da amiga, esta amiga deve
reciprocamente e explicitamente garantir a amizade de volta a classe original.
Tipicamente, a relao de amizade entre classes ocorre quando mtodos que
acessam os mesmos dados so distribudos atravs de vrias classes. O dados
comum no deve ser acessado por classes que no fazem parte deste
relacionamento. Nestes casos voc pode fazer da classe que contm os dados um
singleton, o que garante que ela s pode ser instanciada uma vez no programa.
Voc deve estar atento ao fato do atributo amigo ser herdado: Classes que
herdam de amigos e interfaces contendo um amigo (como uma interface de
componente) tambm se tornam amigos. Voc deve portanto ter extrema cautela ao
garantir a amizade. Quanto mais alto na arvore de herana voc criar a amizade, mais
subclasses podem acessar todos os componentes da classe que garantiu a amizade.
Entretanto, garantir a amizade no herdado. Um amigo da superclasse no
automaticamente um amigo da sua subclasse.
Herana
Especializao uma relao na qual uma classe (a subclasse) herda todos os
componentes de outras classes (a superclasse). possvel que a subclasse adicione
novos componentes (atributos, mtodos, etc.) e troque as implementaes dos
mtodos herdados. Esta especializao enfatiza as similaridades das classes. Os
componentes que elas tm em comum so apenas definidos e implementados na
superclasse. Eles so herdados por todas as subclasses. Voc geralmente descrever
a especializao como uma relao um. Por exemplo, Um nibus um (tipo
especfico de) veiculo ou Uma ordem de compra um (tipo especfico de)
documento. Invertendo o ponto de vista a especializao referida como
generalizao. Portanto:
415
416
Dentro da implementao do mtodo redefinido, voc pode usar o prefixo
SUPER->... para acessar os componentes na superclasse diretamente acima de onde
voc est trabalhando. Isto regularmente necessrio quando voc redefine um
mtodo para chamar o mtodo original da superclasse.
A redefinio no normalmente til no caso de um construtor. Ou o construtor
da superclasse pode ser usando sem mudanas, ou a subclasse foi expandida (por
exemplo, novos atributos foram adicionados) e parmetros adicionais agora so
necessrios para a assinatura do construtor (talvez para permitir que os valores dos
novos atributos sejam definidos quando a instncia for criada). Nos Objetos ABAP, o
construtor de instancia s pode ser sobrescrito como parte da herana. Esta
sobrescrita permite que assinatura e implementao sejam ajustados na subclasse, e
o nico caso onde prematuros extras podem ser adicionados.
Nota: Sobrecarregar, o que permite que um mtodos tenha vrias definies com
assinaturas diferentes e portanto tambm implementaes diferentes no suportado
nos Objetos ABAP.
Visibilidade
Ao usar herana, outra seo de visibilidade pode ser til, a PROTECTED
SECTION. A visibilidade protegida dos componentes est entre a pblica e protegida e
visvel a todas as subclasses e para a prpria classe, mas continua protegida de fora
da arvore de herana.
Quando voc define classes locais no ABAP, voc deve seguir a sequencia
sinttica da PUBLIC SECTION, PROTECTED SECTION, e PRIVATE SECTION. O
sequenciamento para uma classe global manipulado automaticamente.
Uma subclasse tambm herda os componentes privados de sua superclasse.
Voc no pode, entretanto, enderea-los diretamente na sintaxe da subclasse; privado
significa privado. Os componentes privados da superclasse s podem ser
indiretamente usando mtodos pblicos ou protegidos da superclasse. Este, por sua
vez, podem acessar os atributos privados. As alternativas so alterar os atributos
privados para atributos protegidos, o que permite acesso direto na subclasse.
Usando a seo privada, voc pode fazer alteraes nas superclasses sem a
necessidade de saber detalhes das subclasses. Se as alteraes no afetarem a
417
semntica, voc no precisa alterar as subclasses. Isto permitido pois os
componentes privados da superclasse s podem ser acessados indiretamente.
Devido ao fato de apenas um componentes esttico poder existir por contexto
de programa, portanto as seguinte afirmaes so verdadeiras:
Casting
Atribuindo uma referencia de uma subclasse a uma referencia de uma
superclasse, todos os componentes que podem ser acessados sintaticamente depois
do cast so realmente disponveis na instancia. Isto chamado um up cast ou um cast
de ampliao e pode ser visto na listagem 17.4. Ns sabemos que a subclasse
sempre possui ao menos os mesmos componentes que a superclasse e que o nome e
a assinatura dos mtodos redefinidos so idnticos. Isto significa que voc s pode
enderear estes mtodos e atributos que so herdados da superclasse.
DATA:
lv_name TYPE c LENGTH 30,
lr_person TYPE REF TO lcl_person,
lr_manager TYPE REF TO lcl_manager,
lr_employee TYPE REF TO lcl_employee.
CREATE OBJECT lr_manager.
lr_person = lr_manager. Up cast
lv_name = lr_person->get_name( ).
Listagem 17.4 Exemplo de up cast.
Normalmente voc usa um up cast para preparar para um acesso genrico.
Quando uma instancia recebe a mensagem para executar um mtodo em particular, a
implementao do mtodo na classe desta instancia executada. Se a classe no
redefiniu o mtodo, a implementao da superclasse executada no lugar.
Objeto de diferentes classes reagindo diferentemente a mesma chamada de
mtodo conhecido como polimorfismo. Polimorfismo um dos principais pontos
fortes da herana: Um cliente pode manipular instancias de diferentes classes
uniformemente, independente de suas implementaes. O sistema em tempo de
execuo procura pela implementao correta do mtodo pelo cliente.
A listagem 17.5 e 17.6 mostram a declarao e uso do polimorfismo. Aps criar
um administrador e um empregado, esta referencia de subclasses so submetidas a
um up cast e armazenadas numa tabela da superclasse (neste caso uma tabela de
pessoas). A iterao recupera cada registro e obtm o nome e salrio. Devido ao
administrador ser um empregado e um empregado ser uma pessoa, dependendo do
tipo de empregado sendo processado, clculos diferentes podem ser executados para
se obter o salrio.
418
TYPES:
llt_person
ltt_person
DATA:
lv_salary
TYPE betrg,
lv_name
TYPE name1,
lr_person
TYPE REF TO lcl_person,
lt_person
TYPE ltt_person,
lr_manager
TYPE REF TO lcl_manager,
lr_employee TYPE REF TO lcl_employee.
FIELD-SYMBOLS:
<person>
TYPE REF TO lcl_person.
Listagem 17.5 Declaraes pra manipulao genrica.
APPEND INITIAL LINE TO lt_person ASSIGNING <person>.
<person> = lr_manager.
APPEND INITIAL LINE TO lt_person ASSIGNING <person>.
<person> = lr_employee.
LOOP AT lt_person ASSIGNING <person>.
lv_name = <person>->get_name( ).
lv_salary = <person>->get_salary( ).
WRITE: / lv_name, lv_salary.
ENDLOOP.
Listagem 17.6 Chamadas de up cast e polimorfismo.
Variveis do tipo referencia para a superclasse podem tambm se referir a
instncias da subclasse em tempo de execuo. Voc pode precisar copiar tal
referencia de volta para uma varivel mais apropriada do tipo referencia da
subclasse. (Este o ponto chave no qual a varivel de referencia que recebe o cast
deve ter iniciado originalmente como uma referencia da subclasse; voc est copiando
a referncia de volta referencia da classe original.) Para atribuir uma referencia da
superclasse a uma referencia da subclasse, voc deve usar o operador de down cast
MOVE ... ? TO ... ou sua forma mais curta ?= (veja a listagem 17.7). Como regra classe
da subclasse deve conter mais componentes que a superclasse.
lr_manager ?= lr_person. Down cast
Listagem 17.7 Down cast.
Aps atribuir este tipo de referncia de volta a referencia da subclasse, os
clientes no esto mais limitados a apenas os componentes herdados. Todos os
mtodos e componentes da instncia da subclasse agora podem ser acessados. Um
down cast s pode ser executado aps se fazer um up cast. Devido ao fato da varivel
alvo aceitar menos tipos dinmicos aps a atribuio, esta atribuio tambm
chamada de reduo.
Normalmente voc usa atribuies de down cast quando componentes
especficos das instncias precisam ser endereados, e suas referencias esto em
variveis que possuem o tipo da superclasse, por exemplo uma lista genrica de
419
objetos. Voc no pode usar a referncia da superclasse para acessar os
componentes da subclasse pois ela apenas permite acesso aos componentes
compartilhados ou herdados. Portanto, voc precisar fazer o down cast para ser capaz
de acessar os componentes da subclasse.
O sistema em tempo de execuo verifica antes da atribuio se o contedo
atual da varivel fonte corresponde aos requerimentos de tipo da varivel alvo. Se
no, uma exceo disparada e o valor original da varivel de referencia alvo
permanece inalterado.
Nota: No nosso exemplo anterior, ns fizemos o up cast de um empregado e um
administrador para uma tabela de pessoas. Uma tentativa de fazer down cast de uma
referencia de empregado para uma referencia de administrador ir produzir este erro.
Entretanto, devido ao fato de um administrador tambm ser um empregado, um down
cast para um empregado sempre funcionar, enquanto a referencia tenha sofrido um
up cast no incio.
Voc
pode
capturar
esta
exceo
da
classe
de
exceo
CX_SY_MOVE_CAST_ERROR usando as instrues TRY...ENDTRY e CATCH. Outra
manara de prevenir este erro em tempo de execuo usar as classes de
identificao de tipo em tempo de execuo (RTTI RunTime Type Identification). Elas
podem ser usadas para determinar o tipo dinmico em tempo de execuo e definir
uma condio para o cast.
Interfaces
De um ponto de vista tcnico, uma interface pode ser imaginada como um
pouco parecida com uma parte limitada de uma superclasse. Entretanto, elas no
podem ser instanciadas, no possuem uma parte de implementao, e possuem
apenas componentes pblicos. possvel simular herana mltipla usando interfaces.
Interfaces permitem que voc defina interfaces uniformes (protocolos) para os
mtodos. Classes diferentes que incluam a interface podem, portanto implementar
estes mtodos de diferente formas mas mantem a mesma semntica. Interfaces,
portanto no contm implementao.
Voc geralmente define os mesmo componentes nas interfaces e classes, em
outras palavras, atributos, mtodos e eventos. Para reconhecer as diferenas
semnticas da herana normal, voc deve focar no seguinte caso tpico: para permitir
a opo de possuir vrias classes implementando um mtodo de diferente formas,
mas usando o mesmo nome e com as assinaturas uniformes. Com a herana normal,
voc define este mtodo na superclasse compartilhada. Pode ser que no seja
possvel modelar uma superclasse apropriada para herana (lembre-se, deve existir
um relacionamento forte; ns devemos ser capazes de dizer que nossa subclasse
um tipo de nossa superclasse). Entretanto, voc quer lidar com instncias de
diferentes classes da mesma maneira. Voc deve definir uma interface e ento definir
este mtodo neste mtodos. A interface neste caso pode ser comparada com uma
relao de generalizao com a superclasse.
Se voc comparar este uso com a herana normal, a distribuio dos papis
um pouco diferente; Interfaces so geralmente definidas pelo desenvolvedor que
deseja us-las. Elas so dependentes em cada classe que decide se realmente
420
ofertar os mtodos definidos nela. Isto parecido com a relao de especializao da
subclasse.
Como ocorre com a herana normal, o acesso a estes mtodos normalmente
genrico; em outras palavras voc deve usar uma referencia do tipo da interface.
Devido ao fato da interface no poder ser instanciada, estas variveis de referencia s
sero usadas para apontar para instancias das classes que incluem esta interface.
Mesmo que os mesmos componentes podem ser definidos em uma interface
como numa classe, interfaces no conhecem os nveis de visibilidade dos
componentes. Todos os componentes da interface so pblicos.
As classes implementam as interfaces do seguinte modo:
421
Listagem 17.9 Alias para um componente de interface
Voc s pode acessar componentes da interface usando uma referencia de
objeto cuja classe implemente a interface. Sintaticamente, isto tambm se refere ao
uso do operador de resoluo de interface (~).
Alternativamente, voc pode usar alias definidos na classe implementadora
para os componentes da interface. Se esta classe implementada em uma subclasse,
voc no precisa mudar a maneira que voc acessa esses componentes com alias.
Entretanto, o cdigo fonte ficar menos autoexplicativo devido a origem do
componente no ser clara. Voc pode portanto concluir a partir da sintaxe que os
componentes foram definidos na classe ao invs da interface com alias.
Identificao De Classes
Uma da implicaes de se usar o modelo de programao orientado a objetos
que algumas instrues ABAP agora so consideradas obsoletas e portanto no
podem ser usadas em classes ABAP. importante apontar os dois lugares para
informaes adicionais que ns no abrangeremos devido ao seus tamanhos.
422
Terminologia Importante
A tabela 17.1 mostra a terminologia importante para o design de classes.
423
Termo
Herana
Significado
Herana permite que voc derive uma nova classe de uma classe
existente. Quando subclasses herdam de superclasses e a
superclasse tambm uma subclasse de outras classe, todas as
classes envolvidas forma a arvore de herana, na qual o grau de
especializao aumenta com cada nvel hierrquico que voc
adicione. Contrariamente, as classes se tornam mais
generalizadas at que voc atinja o n raiz da arvora de herana.
Dentro de uma arvora de herana, dois ns adjacentes so as
superclasses direta ou subclasses direta umas das outras. Outros
ns relacionados so referenciados como superclasses e
subclasses.
Herana nica
Uma classe pode ter mais de uma subclasse direta, mas s pode
ter uma superclasse direta.
Herana Mltipla Uma classe herdando de mais de uma superclasse.
Superclasse
A classe da qual a classe especializada herda.
Subclasse
A classe especializada que herda da superclasse.
Interface
Interfaces so uma extenso para a definio de classes e
fornecem um ponto uniforme de contato para os objetos. No se
pode criar instncias de interfaces. Ao invs disso, as classes
implementam as interfaces implementando todos os seus
mtodos. Voc pode ento endere-las usando tanta a referncia
da classe ou a referencia da interface.
Classes diferentes implementas a mesma interface de formas
diferente implementando seus mtodos diferentemente. As
interfaces portanto forma a vase do polimorfismo nos Objetos
ABAP
Up Cast
Uma atribuio de Up Cast prepara para acesso genrico. Voc
est moldando a referencia para um objeto mais genrico da
arvore de herana
Down Cast
Uma atribuio de Down Cast permite acesso mais especializado.
Voc molda a referencia de volta para um objeto mais especfico
da arvora de herana. Voc no pode fazer down cast para nveis
mais baixos do que o que objeto foi criado.
Polimorfismo
Objetos de classes diferentes reagindo diferentemente mesma
chamada de mtodo so conhecidos como polimorfismo.
Tabela 17.1 Definies para o Design de Classes.
Questes Prticas
As questes praticas abaixo lhe ajudaram a avaliar sua compreenso do
tpico. As questes so similares quelas encontradas nos exames de certificao.
Mesmo que nenhuma destas questes ser encontrada no exame, elas lhe ajudaram
a revisar seu conhecimento do assunto. Selecione a resposta correta e depois
verifique todas as suas respostas na seo de respostas a seguir. Lembre-se que voc
deve selecionar todas as respostas corretas e apenas as respostas corretas para
pontuar a questo.
1. Dado o cdigo abaixo (Figura 17.11) e o conhecimento que tanto lcl_truck e lcl_car
herdam de lcl_vehicle, quais afirmaes so verdadeiras?
424
a.
b.
c.
d.
e.
f.
a.
b.
c.
d.
e.
f.
g.
h.
a.
b.
c.
d.
e.
3. Quais afirmaes so verdadeiras sobre uma classe que fornece amizade a outra
classe:
A amiga tem acesso ao atributos privados.
A amiga tem acesso ao atributos protegidos.
A amiga tem acesso ao atributos pblicos.
Todas as classes que a amiga garantiu acesso de amizade tambm tem o mesmo
acesso.
Todas as classes que herdam da amiga (subclasses) tambm tm o mesmo acesso.
425
a.
b.
c.
d.
e.
f.
g.
h.
i.
TABLES
DATA...TYPE...OCCURS
DATA...BEGIN OF...OCCURS
INFOTYPES
RANGES
LEAVE
ON CHANGE OF
SEARCH
LOOP AT dbtab
426
5. Respostas Corretas: A,B,E,F
Voc pode acessar a superclasse usando o prefixo SUPER->. Voc pode
sobrescrever um construtor de instncia, mas no um construtor esttico, pois ele
partilhado entre todos os objetos herdados. Sobrecarga no possvel nos
Objetos ABAP. Construtores de instncia precisam chamar o construtor da
superclasse para garantir que tudo seja criado corretamente. Construtores
estticos no precisar chamar o construtor da superclasse explicitamente pois ele
chamado automaticamente pelo sistema. Polimorfismo no requer que o
desenvolvedor faa nada; o sistema em tempo de execuo determina
automaticamente o mtodo a ser chamado.
6. Respostas Corretas: A,B,C,D,E,F,G,H,I
Todas essas variaes esto obsoletas.
7. Resposta Correta: C
Herana mltipla pode ser simulada com interfaces.
8. Respostas Corretas: A,B,E
Um mtodo funcional deve conter um parmetro returning ( o que o faz
um mtodo funcional), mas no pode ter nenhum parmetro changing nem
exporting. Ele pode ter um parmetro importing. O mtodo funcional pode ser
usado em expresses lgicas, como a fonte de uma atribuio, um clculo e
instrues case.
Leve Consigo
Voc precisar entender os fundamentos da programao orientada a objetos.
Isto inclui os diferentes tipos de classes e como a visibilidade dos componentes afeta o
uso externo desta classe ou mtodo. Voc precisar entender o que faz um singleton
ou um mtodo retornado, quando uma classe deve herdar de uma superclasse, e
como especificar a herana. Voc deve conhecer como as interfaces podem ser
usadas e como elas podem ser endereadas. Por ltimo, voc precisar conhecer o
polimorfismo e como up cast e down cast so usados.
Relembre-Se
Voc deve entender herana e polimorfismo. Singletons, mtodos funcionais,
amizade, e casts tero a sua parte no exame de certificao. Voc deve possuir
conhecimento das diferenas entender objetos instanciados e objetos estticos. voc
precisar, tambm, conhecer as instrues obsoletas.
A tabela 17.2 mostra os conceitos chave do design de classes.
Conceito Chave
Herana
Definio
Herana permite que voc derive uma nova classe a partir de
uma classe existente para que a subclasse adote a estrutura
e o comportamento de outra classe (a superclasse),
possivelmente adaptando ou estendendo-a.
Polimorfismo
Isto ocorre quando instancias de diferentes classes
respondem diferentemente a mesma chamada de mtodo.
Tabela 17.2 Relembre-se Conceitos Chave
427
Dicas
Neste tpico em particular, importante possuir a maior quantidade de
experincia prtica com o Class Builder possvel. importante que voc compreenda
as diferenas de herana e interfaces.
Sumrio
Agora voc deve ser capaz de usar o Class Builder eficientemente e produzir
mtodos funcionais e singletons. Voc deve conhecer a visibilidade dos atributos e
mtodos baseado na herana e na seo de visibilidade na qual eles foram definidos.
Voc tambm deve saber a razo para o uso de interfaces nos Objetos ABAP. Seu
conhecimento de design de classes permitir que voc passe neste tpico da prova de
certificao.
428
18 - Ampliaes E Modificaes
Tcnicas que voc aprender:
429
Se os seus requerimentos de desenvolvimento no puderem ser preenchidos
pela customizao ou personalizao, ento voc deve melhorar a aplicao, iniciar
um projeto de desenvolvimento personalizado ou modificar a aplicao SAP standard.
A SAP prov vrias opes de ampliao para justa os objetos de repositrio standard
da SAP sem realmente modifica-los. Algumas das tcnicas disponveis para
melhoramentos so user exits, customer exits, Business Transaction Events, BAdIs, e
Tcnicas do Framework de ampliaes como pontos de ampliao, sees de
ampliao, e assim por diante, que podem ser implementadas sem modificar o sistema
SAP.
Neste captulo discutiremos vrias tcnicas de ampliao disponveis para
melhor o sistema SAP standard. Discutiremos como implementar cada uma das
tcnicas de ampliao. Tambm discutiremos como localizar as opes de ampliao
disponveis para ajustar a aplicao standard SAP.
CENRIO REAL: Seu cliente gostaria de saber as vrias opes disponveis para
modificar e melhor o sistema SAP, pois a aplicao SAP standard no suporta a regra
de negcio do cliente. Como um desenvolvedor SAP no projeto voc deve conhecer
as vrias tcnicas de ampliao disponveis no SAP para que voc possa explicar
sobre a tcnica de ampliao, funcionalidades e benefcios para que voc possa uslas.
430
package. Voc s deve modificar objetos SAP se nenhuma das tcnicas de ampliao
acima consigam preencher sua regra de negcio. Neste captulo abrangeremos cada
uma das tcnicas em detalhes.
Ampliando Aplicaes SAP
Voc pode melhorar aplicaes SAP para adicionar sua funcionalidade sem
modificar o sistema padro SAP. A SAP fornece vrias formas de se melhor uma
aplicao sem alterar a aplicao ou programa original SAP. Aplicaes SAP podem
ser melhoradas ou ajustadas usando uma das seguintes tcnicas:
Customizao
Personalizao
User Exits
Customer exits
Business Transaction Events (BTE)
Business Add-Ins (BAdI)
Ampliao de tabelas e estruturas
Tcnicas de ampliao do Framework de Ampliaes
Tcnicas De Ampliao
Ampliaes so maneiras de se implementar requerimentos do cliente que no
foram fornecidos como parte das aplicaes standard da SAP, sem modificar este
objetos standard SAP diretamente. a SAP disponibiliza user exits, customer exits,
Business Add-ins e assim por diante, para que em pontos de sada pr-planejados dos
431
objetos do repositrio que o cliente pode usar para implementar sua prpria ampliao
de lgica. A seguir esto os detalher sobre todas as vrias tcnicas de ampliao
usadas em aplicaes SAP.
User Exits
User Exits so sub-rotinas vazias fornecidas pela SAP nas quais voc pode
adicionar seu cdigo fonte. Esta a mais antiga tcnica de ampliao que permite que
voc insira sua lgica de programao na aplicao standard SAP sem modifica-la. A
SAP no ir mais criar novas user exits, mas voc ainda pode implementar as
existentes.
User exits so implementadas como sub-rotinas e so algumas vezes
chamadas de form exits. Todas as user exits iniciam com USEREXIT_<nome> e esto
geralmente em um programa Include que anexada a aplicao standard. SAP chama
esta sub-rotinas a partir do programa standard. Se voc implement-las, sua lgica
ser executada nestes pontos. A maioria dos componentes de venda e distribuio
(SD) ainda fornecem user exits para ampliaes especficas do cliente. A figura 18.1 e
a figura 18.2 mostrar um componente SD standard com um programa Include e subrotinas dentro dele.
432
433
434
435
436
437
Voc pode ativar o projeto clicando no boto Ativar Projeto ( ) na tela inicial do
projeto do cliente ou na tela dos componentes. Voc pode desativ-lo clicando no
cone Desativar Projeto ( ) na tela inicial ou na tela de componentes.
Screen Exits
Comas Sreen Exits voc pode inserir elementos de tela adicionais (por
exemplo, um campo , um controle de tabela ou um boto) uma tela padro SAP. A
SAP fornece screen exits colocando reas de subtela especiais na tela da aplicao
padro SAP. A tela do cliente chamada a partir do fluxo lgico da tela padro e ligada
a rea de subtela.
A figura 18.11 mostra a tela do Fluxo Lgico para a tela principal da subtela que
possui a instruo para chamar a subtela no PBO e uma instruo no PAI para
processar a ao do usurio na subtela. A instruo CALL CUSTOMER-SUBSCREEN
chamada no PBO e no PAI para a Screen exit ao invs de chamar a subtela. Vendo o
CALL CUSTOMER-SUBSCREEN, voc pode perceber que um Screen exit est
disponvel para a aplicao. A subtela chamada a partir da tela principal, e o PBO e
438
PAI da subtela processado como uma tela normal. O PBO e PAI tambm possuem
function exits dentro dos mdulos DATA_TO_EXIT0100 e DATA_FROM_EXIT0100 que
podem ser usadas para transferir dados da tela principal para a subtela e vice versa.
Figura 18.12 Program exits para a Screen exit nos mdulos PBO e PAI
Voc deve implementar um projeto de ampliao do cliente como definido
acima para implementar a Screen exit. Entretanto, se a Screen exit pertencer a uma
ampliao que j tenha um projeto criado, ento voc deve estar o projeto existente ao
invs de criar um novo. Voc tambm pode atribuir a ampliao SAP a outro projeto
439
que contm outras, ampliaes relacionadas e pode ento trabalhar na Screen exit.
Lembre-se que voc ativa no nvel do projeto, ento se voc quiser garantir que suas
ampliaes sejam ligadas juntas, voc deve agrupa-las dentro do mesmo projeto.
Menu Exits
As menu exits permitem que voc anexe seu prprio item de menu no menus
de uma aplicao padro SAP. A SAP criar as menu exits definindo itens de menu
especiais no Menu Painter. O cdigo de funo para a menu exit inicia com um sinal
de mais (+), e voc deve especificar o texto do menu ao editar a menu exit dentro do
projeto de ampliao do cliente. O idem do menu exit no ser exibido at que o
projeto seja ativado. Uma exit de mdulo de funo fornecido para o cdigo de
funo especfico do menu exit. Voc pode adicionar a sua prpria lgica de programa
para o item de menu dentro da exit de mdulo de funo. Como no Screen exits, menu
exits vo de mos dadas com as program exits. No existe sentido em ser capaz de
adicionar uma entrada no menu a no ser que voc possa programa a lgica que ser
executada quando o usurio selecionar esta nova entrada (veja a figura 18.13).
440
servio. Diferente de customer exits, voc pode criar o mdulo de funo voc mesmo,
mas este mdulo de funo deve ter os parmetros que voc escolheu. Ligando o
mdulo de funo a BTE, ele ser chamado no ponto apropriado da aplicao
standard SAP.
Business Transaction Events podem ter os seguintes tipos de interfaces:
Publicar e assinar
Interface de processamento
441
442
A SAP tambm fornece mdulos de funo de exemplo para a BTE, com um
texto curto, interface (p.e., os parmetros que voc precisa usar no seu mdulo de
funo) e a documentao que pode ser usada pelo cliente ao criar seu prprio
mdulo de funo. O nome do mdulo de funo de exemplo
SAMPLE_INTERFACE_<BTE-ID>, e a maneira mais fcil de proceder copiar o cdigo
como ponto de partida.
Pesquisa BTE
Voc pode descobrir se uma aplicao SAP oferece um BTE procurando pela
string OPEN_FI_PERFORM no cdigo fonte da aplicao (porque, como pudemos ver,
o mdulo de funo do evento comea com esta string).
Voc tambm pode procurar eventos BTE chamando a transao SAP FIBF e
seguindo o caminho de menu Ambiente Sistema de Informao (P/S) ou
Ambiente Sistema de Informao (Processos).
Business Add-Ins
Business Add-Ins (BAdIs) so tcnicas de ampliao SAP
Orientao a Objetos ABAP. Business Add-Ins, como as tcnicas
discutidas antes, so pr-definidas pelas aplicaes padro da SAP.
Business Add-Ins podem ser vista na transao SAP SE18. Voc usa
para criar definies BAdI.
baseadas em
de ampliao
A definio de
esta transao
Voc cria uma interface para a BAdI, que contm a definio dos mtodos que
sero fornecidos pelo cliente. Ento voc cria uma classe de adaptao que
implementa a interface e assim fornece a interface para a implementao BAdI. Na
aplicao SAP padro, voc gera uma instancia da classe adaptadora e chama o
mtodo correspondente dentro da aplicao. Aqui onde o cliente pode adicionar sua
prpria lgica, criando sua prpria implementao deste mtodo da BAdI.
A fora do Business Ass-In est no fato dela poderem ter mltiplas
implementao se voc desejar. Voc pode ter vrias implementaes BAdI ativas se
o checkbox Uso Mltiplo estiver selecionado (veja a figura 18.17). Quando a BAdI
chamada na aplicao standard SAP, a instancia da classe adaptador da BAdI pe
responsvel por garantir que todas as implementaes sejam chamadas. Entretanto
devido ao fato delas poderem ser chamadas em qualquer sequencia, no possvel
garantir a ordem. Se voc tiver definies BAdI de uso mltiplo, a sequencia no deve
ser importante. Um exemplo a execuo de validaes antes de um documento ser
salvo.
Similarmente, voc pode ter vrias implementaes BAdI ativas se o checkbox
FILTER-DEPEND estiver selecionado para a BAdI. A ideia que q que voc pode ter
implementaes BAdI diferentes para valores de filtro diferentes se o FILTER-DEPEND
estiver selecionado. Um exemplo disto quando o filtro baseado no cdigo do pas:
O cliente pode criar uma implementao para pases diferente baseado em seus
requerimentos legais e prticas diferentes. Voc s pode ter uma implementao da
BAdI ativa se o USO MLTIPLO e FILTER-DEPEND no estiverem selecionados.
Cada Business Add-Ins pode conter componentes para ampliao de programa,
443
ampliao de menus e ampliaes de tela, similarmente as customer exits, descritas
antes.
444
Voc pode buscar uma BAdI na aplicao relevante procurando pela string
CL_EXITHANDLER. Se uma Business Add-Ins chamada no programa, ento o
mtodo esttico GET_INSTANCE desta classe chamado no programa. Este mtodo
retorna uma instancia da classe adaptadora da BAdI, e aps isso, voc ver a
chamada do mtodo BAdI que voc pode implementar. A figura 18.21 mostra a
chamada do mtodo GET_INSTANCE no programa.
445
Voc pode usar a navegao para frente para encontrar a definio da BAdI.
No programa acima voc pode dar um duplo clique no mtodo
DISPLAY_VAS_ORDER correspondente a varivel de referencia lv_exit, o que
exibir a interface usada para definir a BAdI. Voc pode usar a funcionalidade
Utilizaes para determinar qual interface BAdI usada e ento criar a
implementao BAdI.
Voc pode usar a Hierarquia de aplicao SAP para restringir o componente
no qual voc quer procurara a Business Add-Ins. A hierarquia de aplicao SAP
mostra todas os componentes de aplicao standard da SAP e os pacotes que
foram atribudos a eles. Voc pode usar a Hierarquia da aplicao no
Repository Information System para localizar as BAdIs disponveis para uma
aplicao.
446
447
Voc tambm pode usar a tcnica acima para encontrar customer exits ou
definies ou implementao de ampliaes dentro da Hierarquia do Programa (estas
ampliaes sero discutias depois neste captulo).
Por ltimo, voc tambm pode usar a referencia IMG para localizar definies BAdI
para um aplicao e clicar no cone EXECUTAR ( ) para criar a sua implementao
BAdI (veja a figura 18.24).
448
caixa de dialogo seguinte insira o nome da implementao BAdI (que deve estar no
namespace do cliente), e insira o texto de implementao curto na prxima tela (veja a
figura 18.26).
D um duplo clique no mtodo da interface que voc deseja implementar. Isto
inicia o editor do Class Builder, onde voc pode inserir o cdigo desejado. O sistema
cria automaticamente a classe na qual a sua implementao do mtodo ser criada
(voc pode ver o nome da classe na figura 18.26). Aps inserir seu cdigo, voc deve
salovar as alteraes e ativar a implementao BAdI.
Voc pode ativar a implementao BAdI clicando no cone ATIVAR ( ) na tela
da BAdI. Seu cdigo fonte no mtodo ser executado na aplicao standard SAP aps
a BAdI ser ativada. Voc s pode trabalhar com os dados fornecidos pelos parmetros
do mtodo para ampliao, que voc define.
449
Voc deve implementar o mtodo de interface apropriado e programa a ao
que voc deseja que o sistema execute quando o item de menu for selecionado.
Finalmente, voc deve ativar a implementao. Esta ampliao de menu torna-se
visvel apenas aps a implementao BAdI ser ativada.
Implementando Ampliao De Tela
Para ampliao de tela BAdI voc deve criar sua prpria tela e escrever o
programa para sua tela criando um pool de mdulos ou grupo de funo. Voc usa o
mtodo da interface BAdI para transferir dados do programa da aplicao para a tela e
vice-versa.
Voc deve criar a implementao BAdI para a ampliao de tela e atribuir a tela
do cliente na coluna No.Tela e o nome do programa na coluna Programa Chamado
como mostra a figura 18.28. Depois, importante implementar o mtodo de interface
para transferir os dados entre a aplicao e a tela. Finalmente, voc deve ativar a BAdI
para incorporar a tela de cliente no programa standard SAP.
Clientes podem criar uma estrutura append para quase todas as tabelas
SAP ou estruturas (veja as restries abaixo). Estruturas append
permitem que voc amplie tabelas SAP adicionando campos
especficos do cliente que no so parte da aplicao standard, sem
modificar a tabela. Estruturas append so especficas para a tabela; ou
seja, uma estrutura append s pode pertencer a uma tabela. Entretanto,
uma tabela pode ter vrias estruturas append.
Quando uma tabela ativada, o sistema busca estruturas append ativas
para a tabela e anexa-as a tabela do banco de dados. Ativar uma
estrutura append tambm ativar a tabela a qual ela foi atribuda. Voc
pode usar uma estrutura append como um tipo nos seus programas
ABAP da mesma maneira que voc usa qualquer tabela ou estrutura do
Dicionrio. A estrutura append sempre adicionada ao final da tabela.
A estrutura append sempre criada no namespace do cliente. Isto a
protege de ser sobrescrita durante uma atualizao. Os nomes dos
campos na estrutura append tambm devem estar no namespace do
cliente e devem comear com ZZ ou YY. Isto previne qualquer conflito
450
de nomes com os novos nomes da campos SAP que possam ser
inseridos futuramente.
Voc no pode criar estruturas append para tabelas pool ou cluster.
Voc tambm no pode criar uma estrutura append para uma tabela
que contenha um campo longo como o tipo LCHR ou LRAW pois o
campo longo deve ser sempre o ultimo campo da tabela.
Algumas das tabelas entregues pela SAP contm uma estrutura Include
especial. Estes Includes so chamados de Includes de customizao, e
voc pode adicionar campos especficos do cliente a eles. Em contraste
a estruturas append, Includes de customizao podem ser includos em
mais de uma tabela ou estrutura, e se voc adicionar um campo na
estrutura include, ele aparecer automaticamente em todas as tabelas
ou estruturas que possuam este Include de customizao. O nome do
Include de customizao comea com CI. Como estruturas append,
nomes de campos de Includes de customizao devem comear com
ZZ ou YY.
claro que no h sentido se ter campos extras nas tabelas SAP a no ser
que voc faa algo com eles. Voc deve ampliar a aplicao standard SAP para
popular estes campos anexados estrutura append ou Include de customizao. Os
campos especficos do cliente podem ser populados usando uma das tcinas de
ampliao discutidas neste captulo.
Framework De Ampliao
A partir do SAP NetWeaver 7.0, o Framework de ampliao permite que voc
adicione funcionalidades as aplicaes standard SAP sem realmente modificar os
objetos do repositrio originais. Com esta nova tecnologia possvel ampliar classes
globais, mdulos de funo, componentes Web Dynpro ABAP e todas as unidades de
cotiho fonte usando opes e sees de ampliao explcitas. Cov tambm pode
definir opes de ampliao implcitas para plug-ins de cdigo fonte.
O Framework de ampliao consiste de;
451
DATA lf_vadi_me_conf
TYPE REF to/spe/cd_me_confirmation.
TRY.
GET BADI lf_badi_me_conf.
CATCH cx_badi_nor_implemented.
CATCH.
TRY.
CALL BADI lf_badi_me_conf->change_ibtyp
EXPORTING
it_likp
= xlikp[]
it_lips
= xlips[]
it_vbpa
= xvbpa[]
CHANGING
cv_ibtyp
= lfart_besttype
cv_no_po_update = lf_no_po_update.
CATCH.
Listagem 18.1 Chamada da nova BAdI na aplicao standard SAP
A manipulao da nova BAdI gerada pela instruo GET BADI especificando a
varivel de referncia. A exceo CX_BADI_NOT_IMPLEMENTED disparada se
nenhuma implementao ativa da BAdI for encontrada. A instruo CALL BADI chama
o mtodo correspondente de manipulao BAdI derivado da instruo GET BADI. O
452
sistema dispara CX_BADI_INITIAL_REFERENCE se a instruo CALL BADI chamada
com uma referncia inicial.
Voc pode procurar a definio da nova BAdI pesquisando pela string GET
BADI na aplicao. Voc tambm pode pesquisar as novas BAdIs usando o Sistema
R/3 ou a Hierarquia da aplicao no Sistema R/3.
Spots de Ampliao
Estes so containers para opes de ampliao explcitas. Sees
de ampliao adicionam novas BAdIs e levam informao sobre as
posies nas quais os pontos de ampliao ou BAdIs foram criadas. Spots
de ampliao podem conter novas BAdIs ou sees de ampliao
explcitas e sees de ampliao. Uma opo de ampliao pode
administrar vrias opes de ampliao ou BAdIs de um objeto do
repositrio, ou alternativamente, vrios spots de ampliao podem ser
atribudos uma opo de ampliao. Ampliaes Implcitas no precisam
ser atribudas spots de ampliao.
Spots de ampliao compostos
Estes contem uma ou mais ampliaes simples ou compostas. So
usadas para agrupar spots de ampliao simples ou compostos.
Modificao
Um objetos pode ser original em apenas um sistema. Para o sistema SAP o
sistema original o prprio SAP. Em um sistema do cliente os objetos SAP so
disponveis como cpias. Seu sistema de desenvolvimento o sistema original para os
objetos criado nele. Os objetos criados em seu sistema de desenvolvimento so
atribudos a desenvolvimento ou requisies de correo se forem atribudos a um
pacote. A requisio de transporte usada para transportar objetos de
desenvolvimento do sistema de desenvolvimento para os sistemas seguintes.
Alteraes no original so atribudas a requisio de mudana, e a alterao da cpia (
um objeto que no desenvolvido no sistema em que est sendo alterado) atribuda
para a requisio de alterao de manuteno.
Voc no deve alterar o objeto SAP a no ser que a modificao que voc
deseja seja absolutamente necessria e no possa ser implementada pelas tcnicas
de ampliao disponveis. Quando voc atualiza o seu sistema ou aplica um pacote
de suporte, conflitos podem ocorrem com objetos modificados. Estes conflitos ocorrem
se voc modificou um objeto SAP e a SAP entregou uma nova verso do objeto. O
novo objeto entregue pela SAP se torna ativo em seu sistema, e se voc deseja
manter suas alteraes, voc deve iniciar um ajuste de modificao para o objeto. O
ajuste de modificao sempre deve ser feito no sistema de desenvolvimento e ento
transportado para os sistemas seguintes.
Para alterar um objeto SAP voc precisa de uma chave de acesso. Voc deve
obter a chave de acesso no SAP Service Marketplace (http://services.sap.com) e
registrar o objeto que voc est alterando. A chave de acesso tambm conhecida
como SAP Software Change Registration (SSCR). Todos os objetos que esto sendo
alterados so logados pela SAP. Isto ajuda o suporte da SAP encontrar e solucionar o
453
problema rapidamente se ele for resultado de uma modificao em um objeto SAP. A
SAP recomenta que voc usa o Assistente de Modificao para modificar objetos
standard SAP, mas voc pode mudar o Assistente de modificao se desejado. O
assistente de modificao torna a modificao mais fcil e permite que voc reset a
modificao.
Modification Browser
O Modification Browser fornece a voc uma viso geral de todas as alteraes
feitas no sistema. O Modification Browser diferencia entre as modificao feitas
usando o Assistente de Modificao e aqueles feitas sem ele. O Modification Browser
pode ser iniciado chamando-se a Transao SE95, e voc pode restringir a seleo
dos objetos de acordo com os vrios critrios de seleo na tela inicial (veja a figura
18.29).
454
sistema verifica os pr-requisitos e dependncias de outras notas. Ele verifica se uma
nota possui uma nota como pr-requisito, e carrega a nota pr-requisito se houver
uma. Ele mostra a lista de pr-requisitos na caixa de dialogo e voc implementa a nota
na ordem correta como mostrado na lista. Voc tem a opo de implementar todas a
notas selecionadas de uma vez, ou voc pode implementar cada nota individualmente.
Voc tambm possui a opo de desfazer a implementao da nota se ela foi
implementada com o Assistente de Notas.
Questes Prticas
As questes praticas abaixo lhe ajudaram a avaliar sua compreenso do
tpico. As questes so similares quelas encontradas nos exames de certificao.
Mesmo que nenhuma destas questes ser encontrada no exame, elas lhe ajudaram
a revisar seu conhecimento do assunto. Selecione a resposta correta e depois
verifique todas as suas respostas na seo de respostas a seguir. Lembre-se que voc
deve selecionar todas as respostas corretas e apenas as respostas corretas para
pontuar a questo.
1. Qual das afirmaes a seguir verdadeira
a. Uma chave de acesso necessria para implementar Business Add-Ins
b. Uma chave de acesso necessria para modificar objetos do repositrio
SAP.
c. Uma chave de acesso necessria para ampliar uma aplicao SAP
usando uma user exit.
d. Uma chave de acesso necessria para implementar um ponto de
ampliao implcito.
2. Ampliaes SAP para customer exits so administradas pela transao:
a. Transao SMOD
b. Transao CMOD
c. Nenhuma das anteriores
3. As Customer Exits fornecem ampliaes de program exit, screen exit e menu exit.
a. Verdadeiro
b. Falso
4. A instruo CALL CUSTOMER-FUNCTION nnn, onde nnn um nmero de trs
dgitos usada em programas SAP para uma das seguintes ampliaes.
a. Customer Exit
b. Business Add-Ins
c. User exits
d. Novas BAdIs
5. Como voc descobriria se uma aplicao oferece uma program exit?
a. Procuraria pela string CUSTOMER-FUNCTION
b. Usaria o Sistema R/3
c. Usara a Hierarquia da Aplicao
d. Procuraria uma customer exit na IMG de referencia SAP dentro de uma
rea da aplicao
6. Uma Business Add-In pode ter mltiplas implementaes ativas de uma s vez.
455
a. Ela pode ter mltiplas implementaes ativas de o checkbox USO
MLTIPLO estiver selecionado
b. No possvel ter mltiplas implementaes
c. Ela pode ter mltiplas implementaes ativas de o checkbox FILTERDEPEND estiver selecionado
7. A instruo CALL BADI e GET BADI so usadas para o seguinte tipo de Business
Add-Ins
a. BAdIs clssicas
b. Novas BAdIs
c. Nenhuma das anteriores
8. Pontos e sees de ampliao explcitos so definidos pelo programador da
aplicao SAP
a. Verdadeiro
b. Falso
9. O cdigo dentro de uma seo de ampliao explcita pode ser substitudo pelo
cliente
a. Verdadeiro
b. Falso
10. O cdigo dentro de um ponto de ampliao explcito pode ser ampliado mas no
substitudo.
a. Verdadeiro
b. Falso
11. Quais das afirmaes a seguir so verdadeiras
a. Um spot de ampliao pode conter explicitamente um ponte de ampliao
e uma seo de ampliao.
b. Um spot de ampliao pode conter pode conter um ponto de ampliao
explcito, seo de ampliao e nova BAdI.
c. Um spot de ampliao pode conter tanto uma ponto de ampliao explicito
e seo de ampliao ou uma nova BAdI somente, mas todos os 3 no
podem estar no mesmo spot de ampliao.
d. Um spot de ampliao pode conter uma ou mais ampliaes simples ou
compostas.
12. Quais das afirmaes a seguir so verdadeiras:
a. Um ponto de ampliao implcito pode ser usado para inserir cdigo em
um programa SAP e sempre est disponvel ao cliente
b. Opes de ampliao implcitas permitem que voc amplie os parmetros
da interface para mdulos de funo e mtodos sem modificar o objeto do
repositrio.
c. Ampliaes implcitas podem ser usada para ampliar objetos SAP
desenvolvidos antes do SAP NetWeaver 7.0
d. Nenhuma das anteriores
Respostas E Explicaes
1. Respostas Corretas: B,C
456
Estas respostas esto corretas pelas seguintes razes:
Uma chave de acesso no necessria para implementar Business AddIns pois voc fornece a Business Add-In para o cliene ou parceiro para
inserir funcionalidades adicionais aplicao.
Uma chave de acesso necessria para modificar objetos do repositrio
SAP. Voc precisa registrar o objeto do repositrio no SAP Service
Marketplace para gerar a chave do objeto e deve inser-la para modificar o
objeto do repositrio.
Uma chave de acesso necessria para ampliar user exits pois
tecnicamente, a implementao da user exit pe uma modificao no
sistema. User exits so includas no programa Include especial que
anexado ao programa do pool de mdulos. A SAP no entrega nenhuma
nova verso do Include, ento user exits no impactam a atualizao
mesmo que sejam uma modificao no objeto do repositrio SAP
Ampliaes implcitas no necessitam de uma chave de acesso. uma
ampliao que no modificar um objeto do repositrio SAP.
2. Resposta Correta: A
O SAP administra customer exits atravs da Transao SMOD. A
Transao CMOD usada para administrar projetos de melhorias do cliente.
3. Resposta Correta: A
Customer exits fornecem program exits, screen exits, e menu exits.
4. Resposta Correta: A
Voc usa a instruo CALL CUSTOMER-FUNCTION nnn para definir
uma customer exit dentro de uma aplicao SAP. Voc tambm cria mdulos de
funo e grupos no sistema, mas voc deve inserir uma funcionalidade adicional
dentro do mdulo de funo como parte da implementao da customer exit
atravs da transao CMOD.
5. Respostas Corretas: A,B,C,D
Voc procura uma customer exit procurando a string CUSTOMERFUNCTION ou via Sistema R/3, Hierarquia da Aplicao ou IMG de referncia
SAP.
6. Respostas Corretas: A,C
Business Add-Ins podem ter mltiplas implementaes de o checkbox de
USO MLTIPLO estiver selecionado. Uma Bussiness Add-In pode ter mltiplas
implementaes, uma para cada valor, se o checkbox FILTER-DEPEND estiver
selecionado.
7. Resposta Correta: B
As instrues CALL BADI e GET BADI so usadas para as novas BAdI
do SAP NetWeaver 7.0.
8. Resposta Correta: A
Pontos e sees de ampliao explcitos definidos pelo programar da
aplicao SAP.
457
9. Resposta Correta: A
O cdigo dentro de uma seo explicita pode ser substitudo pelo cliente.
10. Resposta Correta: A
O cdigo dentro de um ponto de ampliao explicito pode ser ampliado.
11. Respostas Corretas: A,C,D
Estas respostas esto corretas pelas seguintes razes:
Spots de ampliao podem conter um ou mais pontos de ampliao
explcitos e sees de ampliao explcitos.
Spots de ampliao no podem ter pontos, sees de ampliao
explcitos e uma nova BAdI juntos. Eles podem ter um ou mais pontos e
sees de ampliao explcitos ou uma ou mais novas BAdIs.
Spots de ampliao compostos podem ter um ou mais spots de
ampliao simples ou compostos.
12. Respostas Corretas: A,B,C
Estas respostas esto corretas pelas seguintes razes:
Pontos de ampliao implcitos so usado para inserir cdigo adicional
no programa SAP sem modificar a aplicao
Opes de ampliao implcitas so usadas para amplies os
parmetros de interface para mdulos de funo ou mtodos.
Pontos e opes de ampliao implcitos esto disponveis para objetos
desenvolvidos antes do SAP NetWeaver 7.0. Opes e pontos de
ampliao implcitos esto sempre disponveis para o cliente e podem
ser usados para ampliar as aplicaes SAP sem modificao.
Leve Consigo
Voc deve ser capaz de explicar as vrias tcnicas de ampliao como user
exits, customer exits, Business Add-Ins e tcnicas de ampliao no SAP NetWeaver
7.0. Voc deve ser capaz de explicar as funcionalidades de cada uma das tcnicas de
ampliao acima e ser capaz de us-las para ampliar aplicaes SAP.
Voc deve conhecer as ferramentas usadas para implementar customer exits
como programs exits, menu exits e Screen exits para inserir sua prpria
funcionalidade. Voc deve entender a diferena entre as transaes SMOD e CMOD.
Similarmente, voc deve ser capaz de criar ampliaes BAdI, tanto clssicas como
novas.
Voc deve compreender as ferramentas e tcnicas para pesquisar as vrias
ampliaes para aplicaes SAP. Voc deve ser capaz de usar a Hierarquia da
Aplicao no Sistema R/3 para pesquisar customer exits, Business Add-Ins,
ampliaes composta ou spots de ampliao para um objeto de aplicao.
Finalmente voc deve ser capaz de explicar a diferena entre ampliao e
modificao. Voc deve conhecer as ferramentas para listar as modificaes de
sistema no seu sistema e ser capaz de usar o Assistente de Notas SAP para aplicar
notas ao sistema SAP.
Cuidado: Voc deve tentar no modificar os objetos SAP a no ser que seja
absolutamente necessria, pois a modificao pode causar problemas durante a
458
atualizao. Voc deve tentar ajustar os objetos SAP usando uma das tcnicas de
ampliao e apenas modificar o sistema se a SAP no fornecer nenhuma opo de
ampliao para ajustar o objeto standard SAP.
Relembre-se
A tabela 18.1 mostra os conceitos chave para ampliaes de aplicaes SAP.
Conceito Chave
Conceitos de ampliao
Definio
Tcnicas de ampliao so usadas para inserir
funcionalidades adicionais especficas do cliente s
aplicaes SAP sem modificar os objetos de repositrio
SAP
Ferramenta de pesquisa A ferramenta Hierarquia da Aplicao (SE81) junto com o
de ampliao
Sistema de informao R/3 (SE85) podem ser usados
para procurar definies de ampliaes SAP no
componente de aplicao
Sistema de informao O sistema de informao de ampliao uma ferramenta
de ampliao
usada para procurar definies e implementaes no
sistema SAP
Assistente de Notas O assistente de notas SAP a ferramenta usada para
SAP
implementar notas SAP no sistema
Modification Browser
O Modification Browser usado para listar os objetos do
repositrio que foram modificados no sistema. A ferramenta
tambm pode ser usada para resetar a modificao do
objeto do repositrio
Tcnicas de Ampliao
User exits, customer exits, BAdIs clssicas e BTEs so
algumas das tcnicas usadas antes do SAP NetWeaver
7.0 para ampliar as aplicaes SAP sem modificar os
objetos do repositrio SAP
Framework
de A partir do SAP NetWeaver 7.0 novas opes de
Ampliaes
ampliaes como pontos de ampliao explcitos, sees
de ampliao explicitas, pontos e opes de ampliao
implcitos e novas BAdIs esto disponveis para ampliao
de aplicaes SAP
Tabela 18.1 Relembre-se Conceitos Chave
Sumrio
Voc deve conhecer as vrias tcnicas de ampliao e os passos para
implementar ampliaes. Voc deve conhecer as tcnicas e ferramentas usadas para
procurar a definio da ampliao SAP para aplicaes de negcios. Voc tambm
deve conhecer a diferena enter ampliao e modificao. Voc tambm deve estar
atento para as ferramentas usadas para modificar objetos do repositrio e o
procedimento para modificar objetos do repositrio. Voc deve estar familiarizado com
as ferramentas usadas para listar os objetos modificados dentro de um sistema como
o Modification Browser. Finalmente, voc deve conhecer sobre o Assistente de Notas
SAP, seu uso e venefcios, e a facilidade que implementar notas no sistema. Este
conhecimento permitira que voc passe facilmente neste tpico no exame de
certificao
459
19 - Relacionamento De Tabela
Tcnicas que voc aprendera:
460
Neste capitulo, ser fornecida a voc uma compreenso bsica de como as
tabelas se relacionam com outros objetos no dicionrio ABAP. Vamos discutir
elementos de dados e a capacidade que eles fornecem. Vamos abordar o uso para
chaves estrangeiras para as tabelas de seleo e tabelas de texto. Vamos abordar
design para valor de ajuda e o mecanismo para a fixao de ajuda de busca para
diferentes objetos do dicionrio.
Cada um destes tpicos ser abordado separadamente e ser seguido por
exerccios prticos e de exerccios de solues.
Cenrio Do Mundo Real: seu projeto tem uma serie de problemas como
restringir o contedo dos campos da tela para valores especficos. Voc precisa
identificar porque isto esta acontecendo e como corrigir os problemas.
Voc sabe que parte do problema que os membros da equipe no tem certeza de
quais dados esto realmente disponveis, mas alguns dos problemas simplesmente,
que algum desenvolvedor no implementou a verificao de valores.
Voc precisa identificar onde a ajuda necessria para determinar os valores
disponveis e verificar onde os valores precisam ser implementados. Em ambos dos
casos voc ter de explicar aos outros desenvolvedores as opes disponveis e
auxilia-los na implementao ou verificao dos valores ou ajuda de pesquisa.
Conceitos Chaves
Voc precisa entender e ser capas de executar os seguintes tipos de tarefas no
desenvolvimento de programas ABAP:
461
Relacionamento De Tabelas
O dicionrio ABAP suporta desenvolvimento de programas com um numero de
servios:
Valores de ajuda (F4 ajuda) para campos de telas podem ser definidos
como ajuda de pesquisas ou pela atribuio fixa valor a um domnio
Campos de telas podem ter campos de ajuda (F1 ajuda) atribudos
atravs de documentao para o elemento de dados por traz do campo
de tela.
Uma verificao na entrada garante que os valores inseridos so
consistentes definido para campos de telas atravs do uso de chaves
estrangeira.
O dicionrio ABAP fornece suporte para que voc defina e libere
bloqueios. Para fazer isso, voc deve criar objetos de bloqueios no
dicionrio ABAP. Os mdulos de funo para criar e liberar bloqueios
so automaticamente gerados quando o objeto de bloqueio ativado.
Este modulo de funo pode ento ser usado na aplicao do programa
(Veja o capitulo 8, Instrues SQL, includo as estratgias de
atualizao, para maiores detalhes).
Configuraes de buffer pode melhorar o desempenho ao acessar
dados em tabelas de banco de dados e vises.
Voc pode ativar a gravao automtica de alteraes para as entradas
da tabela de log de alterao.
462
adicionar documentao complementar, se o campo utilizado exclusivamente para
este sistema de cliente.
Se os valores de campo e fornecido em uma lista de ajuda de pesquisa, a
entrada do rotulo de campo utilizado para o titulo. Estas etiquetas tambm so
mostradas em exibio de ALVs (vaja o capitulo 15, ALV grada de controle) como
cabealho padro para as colunas. Voc pode especificar um comprimento para o
respectivo rotulo de campo, embora se for deixado em branco o dicionrio calcula o
comprimento com base em limites pr-definidos (10, 15 e 20) ou o comprimento real
se ele maior do que o limite pr-definido. Este comprimento determina o
comprimento mximo para o rotulo do campo. Se voc trabalha para uma empresa
global, voc pode traduzir o rotulo do campo em outras linguagens (Ir para ->
Traduo ou pela transao SE63). Ao especificar o comprimento, lembre-se que em
outro idioma, o mesmo termo no rotulo do campo pode exigir mais letras.
Uma ajuda de pesquisa (valor ou ajuda F4) pode ser anexada ou ligada para
um elemento de dados. Alm disso, ajudas de pesquisas pode ser anexados para
outros objetos, como os campos da tabela, campos de estruturas, ou tabelas de
validao (veja figura 19.7 abaixo para mais detalhes).
Em diferentes aplicaes, voc s vezes tem que digitar um valor particular em
varias telas, por exemplo, uma empresa ou numero do cliente. Para poupar que o
usurio de informar o valor varias vezes, possvel atribuir um ID de parmetro para o
elemento de dados por trs desses campos de tela (veja a figura 19.1). se um campo
de tela baseado em um elemento de dados com um ID de parmetro, o valor que o
usurio digita neste campo pode ser transferido para o ID de parmetro, que
armazenado na memoria, quando a tela encerrada. Se um campo de entrada com
base no mesmo elemento existe em uma tela subsequente, este valor pode ser lido a
partir do parmetro e mostrado no campo da tela automaticamente e pode ser alterado
pelo usurio. Os parmetros SET/ GET mantem o valor por seo de usurio.
463
usurios, para isso o usurio tem que tratar apenas com uma empresa, ele nunca
precisaria digitar o cdigo da empresa (neste caso o valor mantido entre as
sesses). Usar um parmetro SET / GET para um campo que voc criou, voc deve
inserir o campo na tabela TPARA, em outras palavras voc tem que criar o parmetro
de ID de memoria(parameter memory ID).
As propriedades tcnicas para os elementos de dados so mantidos na pagina
da guia tipo de dados. Voc deve usar principalmente domnios tcnicos para a
digitao, em outras palavras, dar ao elemento de dados suas caractersticas tcnicas.
No entanto voc tambm pode definir o elemento de dados usando os mesmos tipos
integrados que so usados para definir os domnios. Como um caso especial, voc
tambm pode criar um elemento de dados como um tipo de referencia. O tipo
referenciado no restrito ao o tipo DATA ELEMENT. Pode ser qualquer outro tipo de
referencia ou mesmo uma referencia genrica
Nota: Uma referencia do tipo ANY pode apontar para ambos os objetos e dados. A
definio de referencia o mesmo que a declarao de tipo em um programa ABAP
TYPES TR_DT TYPE REF TO data.
O domnio descreve a faixa de valores de um campo, especificando o tipo de
dados e tamanho do campo. Se apenas um conjunto de valores permitido, estes
podem ser definidos como valores fixos (veja figura 19.2 para um exemplo).
464
Nota: se voc entrar com uma tabela de valor para um domnio, o sistema pode fazer
uma proposta para a definio da chave estrangeira para qualquer campo da tabela
estes domnios por trs dele.
465
Digamos que a entrada deve ser escrita na tabela de chave estrangeira. Esta
entrada deve ser consistente com os campos chaves da tabela de verificao. Em
outras palavras, o valor que voc deseja inserir j deve existir na tabela de seleo. O
campo da tabela de chave estrangeira a ser verificado chamado de campo de
verificao. Continuando nosso exemplo atual, o cliente e o numero de cliente so os
campos de seleo. Chaves estrangeiras s podem ser usadas em telas. Voc
capas de inserir ou alterar registros de dados na tabela do banco de dados sem que
isso seja verificado atravs de um programa ABAP, em outras palavras, se voc no
passar por validaes de tela. No h maneira de aplicar automaticamente essa
verificao em um programa. Um programa deve implementar o validao da tabela
de validao dentro do prprio programa.
Quando voc esta mantendo as chaves estrangeiras, a igualdade de domnio
obrigatria para a aplicao da tabela de verificao. Em outras palavras, o mesmo
domnio necessrio para o campo de verificao e campo chave de referencia da
tabela de verificao para que voc no compare os campos com diferentes tipos de
dados ou tamanhos. Elementos de dados diferentes podem ser usados, mas devem
se referir ao mesmo domnio. O requisito de igualdade de domnio s necessrio
para o campo de verificao. Para todos os campos de chave estrangeira, suficiente
se o tipo de dados e tamanho do campo so iguais. Como recomendao, voc deve
sempre usar domnios iguais porque simplifica a alterao de domnio mais tarde, para
todo o desenvolvimento, no apenas para a tabela de verificao. Neste caso, os
campos correspondentes so alterados. Se os domnios so diferentes, a chave
estrangeira seria inconsistente, por o exemplo, se os tamanhos dos campos foram
alterados. Essa igualdade de domnio tambm significa que uma tabela de verificao
s pode ser utilizada para os campos que usam um domnio para obter seu atributo
tcnico.
Nota: O sistema pode propor altomaticamente a tabela de verificao para o campo
de verificao se o dominio tem uma tabela de valores. Neste caso, uma proposta
criada para a atribuio de campo na chave estrangeira.
466
A cardinalidade descreve o relacionamento de chave estrangeira com relao
ao numero de possveis registros dependentes (registros da tabela de chave
estrangeira) e os registros de referencia (registros da tabela de verificao). A
cardinalidade sempre definida do ponto de vista da tabela de verificao. A
cardinalidade definida como N:M, o lado esquerdo da cardinalidade descreve o
numero de registros da tabela da chave estrangeira, VBRK no nosso exemplo acima, e
o lado direito da cardinalidade descreve o numero de registros na tabela de verificao
ou KNA1.
A cardinalidade para o nosso exemplo 1:CN o que indica que cada valor na
VBRK deve existir na KNA1 uma vez e um valor na KNA1 pode existir 0 ou mais vezes
na VBRK.
Os tipos de campos da chave estrangeira descrevem o que os campos da
chave estrangeira significam na tabela da chave estrangeira. Os seguintes tipos de
campo de chave estrangeira podem ser definidos:
Nota: Apenas uma tabela de texto pode ser ligada a uma tabela.
467
Se voc tem duas tabelas nos usaremos as tabelas de voo SMEALT e
SMEAL para o nosso exemplo SMEALT uma tabela de texto da SMEAL se:
SMEALT pode conter textos em vrios idiomas para cada chave da SMEAL.
Para ligar as entradas chave com o texto, a tabela de texto (SMEALT) deve ser
ligada com a SMEAL usando uma chave estrangeira. Um exemplo desta chave
estrangeira pode ser visto na figura 19.5. os campos chave da tabela de texto devem
ser selecionados aqui para o tipo dos campos da chave estrangeira
468
no campo da tela a ajuda pode ser iniciada clicando no boto ou usando a chave de
funo F4.
frequentemente possvel filtrar a lista de entradas possvel exibida atravs do
uso de restries, dependendo de como a ajuda foi definida. A exibio de entradas
possveis ampliada com informaes uteis sobre os valores recebidos como a
descrio. Devido ao fato da descrio de uma pesquisa de valores de um campo
geralmente ser definida pela sua utilizao, a ajuda de pesquisa para um campo
normalmente definida no dicionrio ABAP. a definio da ajuda de pesquisa contem a
informao que o sistema precisa para satisfazer os requerimentos descritos.
Para definir uma ajuda de pesquisa, voc deve especificar de onde pegar os
dados (a partir do mtodo de seleo), o que passado para e a partir da ajuda de
pesquisa (interface da ajuda de pesquisa), e o comportamento do dialogo. A interface
da ajuda de pesquisa dita quais valores previamente inseridos pelo usurio so
passados para a ajuda de pesquisa e quais valores so copiados de volta tela
quando um valor selecionado. O comportamento interno da ajuda de pesquisa
descreve o mtodo de seleo, determinando quais valores devem ser exibidos e o
comportamento do dialogo com o usurio.
O usurio s pode acessar a ajuda de pesquisa atravs de uma tela, em outras
palavras, para um dos campos naquela tela. Qual ajuda de pesquisa esta disponvel,
determinado pelo anexo da ajuda de pesquisa; ajudas de pesquisas pode ser
anexados a campos de tabelas, campos de estruturas, elementos de dados ou tabelas
de verificao. O editor de ajuda de pesquisas permite que voc verifique o
comportamento da ajuda de pesquisa sem atribui-la a um campo da tela.
Uma seleo do banco de dados em tempo de execuo determina as
entradas possveis para a exibio. Quando voc define uma ajuda de pesquisa, voc
deve definir o objeto do banco de dados do qual os dados so selecionados. Voc faz
isso especificando uma tabela ou viso como mtodo de seleo.
469
As entradas possveis so apresentadas no formato de lista em uma caixa de
dialogo na qual o usurio pode selecionar a entrada necessria. Se as entradas
possveis so chaves formais, voc deve fornecer informaes adicionais na exibio.
Por exemplo, ao invs de uma lista com os nmeros dos clientes, o nome do cliente
tambm deve ser includo. Se voc espera uma lista muito grande, voc deve permitir
que o usurio defina restries adicionais para os atributos. Permitindo estas
restries adicionais, o conjunto de dados exibidos mais focado e reduz a carga do
sistema, em outras palavras, nos reduzimos a quantidade de dados que trazido do
banco de dados atravs da permisso do usurio restringir quais entradas ele quer ver
na lista. Condies adicionais podem ser inseridas numa caixa de dialogo para
restringir os valores. Voc usa o tipo de dialogo de uma ajuda de pesquisa para definir
se a caixa de dialogo para restringir valores exibida antes de determinar a lista.
Voc define quais campos devem aparecer em cada uma (ou ambas)
das caixas de dialogo como parmetros da ajuda de pesquisa. Todos os
campos do mtodo de seleo exceto o campo do mandante e campos
no chave da sua tabela de texto podem ser usados como parmetros
Voc define quais parmetros devem aparecer em qual caixa de dialogo
e ordem atribuindo as posies dos parmetros nas duas caixas de
dialogo. Voc pode usar parmetros diferentes ou ordens diferentes nas
duas caixas de dilogos. A coluna PosL na figura 19.6 identifica a ordem
dos parmetros na lista de resultados, e a coluna ISel identifica a
posio dos parmetros na caixa de dialogo que limita a lista de retorno.
470
como um parmetro import) ou se ele retorna dados da ajuda de valores (em outras
palavras, ele age como um parmetro export). Os parmetros import e export de uma
ajuda de pesquisa definem a interface. Aps voc definir a ajuda de pesquisa, voce
deve anexa-lo ao objeto relevante um elemento de dados, um campo de tabela ou
estrutura ou uma tabela de verificao. Anexar a ajuda de pesquisa define onde os
parmetros import da ajuda de pesquisa pegam seus valores e quais campos da tela
recebem os contedos dos parmetros export.
Voc normalmente no define a semntica e os atributos tcnicos de um
campo de tela (tipo, comprimento, ajuda F1, etc...) diretamente quando voc define a
tela e cria o campo de entrada. Ao invs disso, voc referencia um campo do
dicionrio ABAP no Screen Painter. O campo da tela ento pega os atributos do
campo do dicionrio. Semelhantemente, voc anexa a ajuda de pesquisa ao campo de
pesquisa do dicionrio ABAP e no ao campo da tela. Desta maneira nos temos
consistncia: quando um campo de entrada for baseado em um campo do dicionrio, a
mesma ajuda de pesquisa estar disponvel para o usurio.
Nota: Campos que no possuen uma ajuda de pesquisa anexada ainda podem ter
uma ajuda de valor porque outros mecanismos tambem sao usados para a ajuda de
valor, por exemplo, valores fixos de dominio.
471
tanto no encorajado. Voc tambm pode programar a ajuda de valor por conta
prpria usando o evento de tela Process on Value Request (POV), mas isso requer
muito esforo de programao.
A performance de uma ajuda de pesquisa tambm como a das instrues
select, sempre devem ser levadas em conta. Sendo a ajuda de pesquisa uma seleo
de dados do banco de dados, algumas vezes necessrio procurar grande
quantidade de dados. Isto pode resultar em um longo tempo de espera para o usurio
e aumentar a carga no sistema. Ao definir uma ajuda de pesquisa, como voc faz com
o select, voc deve tomar medidas para otimizar o mtodo de seleo. Se voc espera
um grande numero de entradas, voc deve restringir a lista de entradas com
condies adicionais. Isto aumenta a claridade da lista de entradas e reduz a carga no
sistema. As condies adicionais podem ser um resultado do contexto ou podem
serem inseridas pelo usurio em uma caixa de dialogo. Opes usadas para otimizar
um select no banco de dados tambm podem ser usadas aqui. Isto inclui bufferizao
ou ndices secundrios.
Figura
19.7
472
Questes Prticas
As questes praticas abaixo o ajudaram a avaliar o seu entendimento para este
tpico. As questes mostradas so semelhantes s encontradas no exame de
certificao, mas nenhuma destas questes ser encontrada no exame, mas elas
permitem a voc o conhecimento do assunto. Selecione as respostas corretas e em
seguida verifique a integridade de suas respostas na seo seguinte, lembre-se voc
deve marcar todas as respostas corretas e apenas as respostas corretas para receber
o credito para a questo.
1. A ajuda de valores pode ser fornecida a partir de:
a.
b.
c.
d.
e.
f.
g.
h.
473
e. Uma tabela de valores no existe.
7. A ordem dos campos para uma tabela transparente no banco de dados:
a. Deve ser igual a do dicionrio ABAP
b. criada na ordem do dicionrio ABAP
c. permitido que seja diferente do que a do dicionrio ABAP
8. Uma ajuda de pesquisa deve:
a. Usar uma tabela ou viso para a seleo dos dados
b. Determinar os valores para a seleo pelo usurio
c. Possuir um dialogo com o usurio
d. Permitir que o usurio selecione uma resposta
e. Ser usada a partir de uma tela
9. Aonde os rtulos dos campos devem ser armazenados?
a. tabela
b. estrutura
c. campo
d. elemento de dados
e. dominio
10. que tipo de viso no pode ser usada em uma ajuda de pesquisa?
a. Viso do banco de dados
b. Viso de manuteno
c. Viso de ajuda
11. Qual o tipo de viso usa um INNER JOIN em ajuda de pesquisa?
a. Viso do banco de dados
b. Viso de manuteno
c. Viso de ajuda
2. Resposta Correta: A, B, D
necessrio toda a chave da tabela de dados mais a chave do idioma da para
que a tabela seja considerada uma tabela de texto. Entretanto tambm
necessrio que o elo da chave estrangeira seja especificado; de outra forma,
elas so apenas duas tabelas parecidas. No necessrio que exista apenas
um campo caractere; deve existir ao menos um. Como mencionado acima,
apenas o primeiro (aps a chave) usado para o texto.
3. Resposta Correta: C
Domnios iguais podem existir para outras chaves estrangeiras mas s so
necessrios para a tabela de verificao. Em outros casos, um tipo e
comprimento parecido suficiente
4. Resposta Correta: E
474
Valores fixos so identificados no nvel do domnio no dicionrio ABAP. Voc
pode informar valores individuais ou intervalos.
5. Resposta Correta: A
Voc s pode associar uma tabela de texto a uma tabela de dados. O sistema
verifica isto quando voc tenta ativar uma tabela com chaves estrangeiras de
texto para a tabela de dados.
6. Resposta Correta: B
Sem a associao da chave estrangeira, uma tabela de valores onde ela pode
fornecer ajuda, no ira executar a validao durante o processamento da tela.
7. Resposta Correta: C
A partir do release 3.0, a SAP permitiu que os campos estejam em uma ordem
diferente no dicionrio ABAP na tabela de banco de dados.
8. Resposta Correta: B, C, D, E
No necessrio usar uma tabela ou viso (voc pode, mas no a nica
maneira de selecionar os dados).
9. Resposta Correta: D
Rtulos e documentao so armazenados no nvel do elemento de dados.
10. Respostas Corretas: B
A viso de manuteno no foi projetada para seleo de dados, ao invs
disso ela foi projetada para manuteno de vises de dados orientada a
negcios.
11. Resposta Correta: A
A viso de banco de dados usa um INNER JOIN para selecionar os dados. Se
voc precisar de um OUTER JOIN, devera usar uma viso de ajuda.
Leve Consigo
Voc deve entender a relao entre tabelas de banco, tabelas de texto e
tabelas de verificao. Voc deve entender o relacionamento de chave estrangeira
entre tabelas. Voc tambm deve ser capaz de distinguir entre mecanismos diferentes
para ajuda de valores e como eles podem ser usados nas telas como parte disto, voc
deve entender os tipos de verificao que um campo pode ser forado a ter pelo
dicionrio ABAP.
Relembre-Se
Voc devera entender como a verificao de dados pode ser forada durante o
processamento da tela e como a ajuda de valores pode ser fornecida. Voc deve
conhecer o relacionamento entre as diferentes reas do dicionrio ABAP (Domnios e
elementos de dados) e os relacionamentos entre as tabelas com o uso de chaves
estrangeiras. Voc devera entender como especificar uma tabela de verificao e uma
475
tabela de texto com chaves estrangeiras. Voc devera saber como forar a verificao
de campos da tela, os diferentes usos das chaves estrangeiras, e a utilizao e projeto
de ajudas de pesquisa.
A tabela 19.1 lista os conceitos chave para os relacionamentos entre tabelas.
CONCEITO CHAVE
Validao de verificao
DEFINIO
Tanto o uso de uma tabela de verificao
ou valores fixos para fornecer a validao
durante o processamento da tela
Chaves estrangeiras
O uso de chaves estrangeiras para ligar
duas tabelas e fornecer informaes
adicionais ou validao.
Ajudas de pesquisa
Um jeito de fornecer a ajuda de valores
para o usurio em uma tela.
Tabela 19.1 Relembre-se conceitos chave.
Dicas
Varias questes desta rea no sero parte dos materiais de estudos normais.
Estas questes iram requerer que voc entenda o processo oculto para produzir a
resposta correta. Como na maioria dos tpicos encontrados no exame de certificao,
importante possuir o mximo de experincia pratica possvel. Mesmo que a maioria
dos conceitos apresentados neste capitulo deve ser de natureza secundaria,
importante que voc entenda as nuances de chaves estrangeiras de ajudas de
pesquisa.
Sumrio
Agora voc deve ser capaz de criar chave estrangeira para fornecer tabela de
seleo ou tabela de texto. Voc tambm deve ser capaz de identificar as diferentes
partes de uma ajuda de pesquisa e entender para onde a ajuda de pesquisa pode ser
usada bem como a forma de projetar uma. Estas habilidades permitiram que voc
passe com xito desta parte do exame de certificao.