Você está na página 1de 475

1

ABAP Com SAP

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

1 - Caminho da Certificao de desenvolvedor ABAP


Viso Geral
Tcnicas que voc aprender:

Entender os diferentes nveis de certificao


Identificar a pontuao nos exames
Entender a parte do exame associada com as suas habilidades
Aprender sobre as futuras especificaes do Caminho de Certificao de
Desenvolvedor ABAP

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.

Mudanas na pontuao do exame


Para publicar mais exames de certificao orientados a tarefas de trabalho, e para
fornecer certificao a nvel de profissionais avanados, a SAP realizou vrio
mudanas importantes nos modelos de testes. Primeiro, a planta de projeto de teste
criado baseada numa analise de tarefas de trabalho que so criadas e validadas com
a ajuda de consultores ativamente envolvidos em projetos relevantes.
A SAP tambm mudou os modelos de pontuao para todos os exames pulicados
aps setembro de 2007 para um modelo de pontuao dicotmico. O modelo
dicotmico marca respostas de mltipla escolha como corretas ou incorretas e no d
nota parcial para as respostas. Isto reflete melhor as necessidades dos clientes e
parceiros SAP para saber se um indivduo certificado pode realizar uma tarefa de
forma a satisfazer completamente todos os envolvidos. Esta consistncia no nvel de
dificuldade dos exames reforado pelo processo de padronizao, onde o contedo
do teste avaliado por experts em um painel de tpicos para determinar a nota final
de corte.
Toda a questo tem que ser resolvida, deixar uma questo em branco a
mesma coisa que errar a questo. Todos os testes sero migrados para o novo
modelo dicotmico em meados de 2009, e a certificao de mestre prevista para ser
lanada em 2010.
Nota: Para exames antigos, que foram lanados antes de setembro de 2007 e
no so intitulados, associado, profissional ou mestre, que realizava os exames
recebia pontos por cada seo da pergunta respondida corretamente.
Se uma questo tivesse cinco partes a o avaliado respondesse trs partes
corretas, ele receberia trs dos cinco pontos possveis para a questo.

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.

Figura 1.1 Nveis de certificao

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.

DICA: no necessrio possuir uma certificao de nvel mais baixo


(associado) para se realizar um exame de nvel mais alto (profissional); entre tanto
muitos que procuram a certificao de nvel profissional podem achar de grande valor
tirar a certificao de nvel mais baixo.

Nveis Avanados de Certificao


A SAP esta lanando para escrever mtodos e tcnicas mais avanadas para
melhor validar o conhecimento aplicao e habilidades analticas ao invs de
lembrana de conhecimento. Alm do mais os teste para o nvel mais alto de
certificao foram revistos para serem mais claramente alinhados a tarefas de trabalho
e ento refletir a experincia real.
A nova estratgia foca em adicionar valor para o individuo certificado.
Consultores certificados tero a oportunidade de entrar para uma nova comunidade de
certificao e acessar um vasto leque de benefcios. A pesquisa com consultores em
2006 apontou para o desejo do aprendizado continuo e a SAP education ira
demonstrar caminhos claros, incluindo notas rpidas para consultores subirem de
nvel. As certificaes existentes continuaram a ter sua validade, voc pode participar
de um exame de certificao especifico da SAP trs vezes no mximo, voc deve
esperar 30 dias aps realizar um exame para tenta-lo de novo. Isso para lhe dar
tempo adicional para se preparar nas reas em que voc no obteve sucesso.

DICA: se voc no passou no exame de certificao depois de duas tentativas


e se voc no teve treinamento SAP anterior nos recomendamos complementar seu
conhecimento com o treinamento oferecido pela SAP.
A tarifa para refazer o exame a mesma para o exame inicial. Nenhum
candidato pode realizar o exame de certificao mais do que trs vezes pra o mesmo
release. Um candidato que falhou trs vezes no mesmo exame deve esperar at o
prximo release para tentar de novo.

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.

Tornando-se um Desenvolvedor ABAP Certificado pela


SAP Nvel Associado Viso Geral
O Cdigo usado para referenciar o exame deste livro (tambm conhecido como
Booking Code) C_TAW12_70. O teste de certificao corrente intitulado SAP
certified development associate ABAP with SAP NetWeaver 7.0.
O teste de certificao SAP certified development associate ABAP with SAP
NetWeaver 7.0 verifica conhecimento profundo na rea de desenvolvimento ABAP
este certificado prova que o candidato tem um entendimento fundamental dentro deste
perfil e esta apto a aplicar estas habilidades sobre superviso em um ambiente de
projeto.

Especificao Do Exame Associado.


Software: componentes de software: SAP NetWeaver 7.0
Numero de questes: 90
Durao: 180 minutos
Certificaes associado so o alvo daqueles que tem entre um e trs anos de
conhecimento e experincia. A fonte primaria de conhecimento embasada no
material de treinamento correspondente.

NOTA: a certificao pode ter diferentes notas de corte das antigas ou


diferentes provas de certificao (a nota de corte calculada por experts e varia entre
verses do exame associado para releases diferentes e dos exames de certificao
profissional).
Lembre-se que para questes de mltipla escolha no existe nota parcial.

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

Criao de programas e interfaces TAW10


BC400, BC402
bsicas em ABAP
Criar e analisar classes
TAW12
BC401
Melhoramentos e modificaes
TAW12
BC425, BC 427
Relaes entre tabelas
TAW10
BC430
Tabela 1.1 desenvolver solues propostas procurando independentemente opes
de implementaes validas.
Competncia
Completar e identificar solues
para tarefas definidas do projeto.
Baseado
em
conhecimento
profundo e compreenso bsica,
identificar tarefas que podem ser
executadas
durante
a
implementao
do
sistema,
configurao, e teste nas reas
de:
Tpico
SAP NetWeaver Viso Geral

Importncia
60%

Maneiras de se obter
Primaria
TAW10

Alternativa
NW001

Uso da rea de Trabalho ABAP


TAW10
BC400, BC401
Uso do programa de debug do TAW10
BC400, BC402
ABAP
Tipos e objetos de dados ABAP
TAW10
BC400
Uso e definio de tabelas TAW10
BC400
internas
Comandos
SQL
incluindo TAW10, TAW11
BC400, BC414
estratgias de atualizaes
Dicionrio ABAP
TAW10
BC430
UNICODE
TAW11
BC402
Telas clssicas (Dynpros) e telas TAW10
BC400
de Seleo
ALV
TAW11
BC405
Interfaces
de
usurios(WEB TAW12
NET310
Dynpros)
Tabela 1.2 Completar solues para tarefas definidas para os projetos.

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.

Como voc vera nas questes do simulado, um bom entendimento de varias


tcnicas de programao e da arquitetura do sistema ajuda muito na hora de se
escolher a melhor aproximao para a soluo de um problema lembre-se que voc
tem em media 2 minutos por questo (existem 90 questes e um tempo limite de 180
minutos), ento descobrir a soluo correta rapidamente essencial para completar a
prova.
Para as questes em que mais de um item esta correto, pode ser de grande
ajuda usar uma estratgia de seleo e eliminao. Voc pode eliminar respostas que
esto de fato erradas enquanto seleciona respostas que esto claramente corretas.
Isto lhe deixa menos questes que voc no tem certeza, deste modo acelerando o
processo de seleo. O capitulo 2 cursos e experincias, prover varias tcnicas para
ajuda-lo a diminuir as opes para as questes.
Para a maioria das questes no exame, as respostas podem ser encontradas
no material do curso daquela rea (Veja a coluna maneiras de se obter acima). Mesmo
que muitas respostas paream similares tome tempo suficiente para entender
claramente o sentido de cada resposta ao invs de sair correndo. Isso ira ajuda-lo a
distinguir as respostas corretas.
Normalmente, quanto mais experincia em ABAP voc tiver, mais fcil ser tirar
a certificao. Esteja consciente que o exame baseado no SAP NetWeaver 7.0 e no
nas releases anteriores. Nos locais em que houver diferenas entre a release 7.0 e as
anteriores, o exame normalmente focara na release 7.0, embora em muitos casos a
maneira que a questo esta formulada indicara que ela se refere a uma release
anterior.
Mesmo que no existam pegadinhas, voc deve analisar cada alternativa tendo
certeza de que entendeu o significado exato e o impacto de cada opo antes de
escolher. Algumas questes sobre programao pode envolver uma quantidade
significante de cdigo ou de detalhes. importante entender as questes antes de
tentar responder, todas as questes neste exame so de mltipla escolha. Algumas
requerem que voc selecione a nica opo correta enquanto outros possuem mais de
uma resposta correta. No prefacio deste livro, nos discutimos os vrios tipos de
questes que voc pode esperar. Lembre-se no h pontuao parcial, em questes
de mltiplas respostas so corrigidas como correta ou incorreta.

18

NOTA: voc no poder utilizar nenhum material de referencia durante o teste


de certificao (Nenhum acesso documentao online ou a nenhum sistema SAP).
Voc precisara de um documento com foto para poder realizar o exame.

Como o processo de certificao esta sempre evoluindo, voc deve sempre


verificar o site da certificao para mudanas na informao acima. No site da
certificao pode ser encontrado o Web site da SAP no endereo http://www.sap.com.
Acesse SAP ecosystem e parceiros servios educao certificao. Utilize
ento o buscador de certificao para SAP NetWeaver desenvolvimento
desenvolvedor / consultor de desenvolvimento.

Tornando-se Um Desenvolvedor ABAP Certificado pela


SAP Nvel Profissional - Viso Geral
O exame de nvel profissional possui dois diferentes testes: P_ABAP_SI_70 e
P_ABAP_GUI70. Existe uma interseco no conhecimento da P_ABAP
_GUI70 e da P_ABAP_SI_70. Voc encontrara todos os tpicos da P_ABAP_GUI70
na P_ABAP_SI_70, Mas alguns tpicos da P_ABAP_SI_70 no so encontrados na
P_ABAP_GUI70.

Certificao Desenvolvedor SAP Nvel Profissional Sistema De


Integrao ABAP SAP NetWeaver 7.0
O booking code para este exame P_ABAP_SI_70. O teste de certificao
corrente intitulado SAP certified development professional ABAP system integration
SAP NetWeaver 7.0.
O teste de certificao para SAP certified development professional ABAP
system integration SAP NetWeaver 7.0 verifica conhecimento profundo na rea de
interfaces de sistemas ABAP. Diferena entre o associado e o profissional que mais
habilidades esto inclusas. Enquanto de um associado certificado esperado que
complete tarefas um profissional certificado mais auto suficiente e lida com mais
incertezas e decises de designs. Este certificado prova que o candidato possui uma
compreenso avanada deste perfil e esta apto a aplicar estas habilidades e prover
direo e implementaes de projetos.

Especificaes Do Exame Profissional


Software
Componentes de software: SAP NetWeaver 7.0

NUMERO DE QUESTES
90

19

DURAO
180 minutos

A certificao profissional busca perfis com no mnimo quatro a sete anos de


experincia. Alm dos cursos recomendados experincia real de trabalho tambm
requerida e validada.

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.

Especificaes Do Exame Profissional


Software
Componentes de software: SAP NetWeaver 7.0

21

Numero de questes
90
Durao
180 minutos

Certificaes de nvel profissional buscam perfis com no mnimo 4 a 7 anos de


experincia. Alm dos cursos recomendados, experincia profissional tambm
requerida e validada.

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.

Como o processo de certificao esta sempre evoluindo, voc deve sempre


verificar o site da certificao para mudanas na informao acima. No site da
certificao pode ser encontrado o Web site da SAP no endereo http://www.sap.com.
Acesse SAP ecosystem e parceiros servios educao certificao. Utilize
ento o buscador de certificao para SAP NetWeaver desenvolvimento
desenvolvedor / consultor de desenvolvimento.

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:

Aprendera sobre fontes adicionais de informao;


Estruturar o seu entendimento e pensamento;
Explorar o designe de testes SAP;
Acessar e usar ajuda geral de tarefas.

25

Este livro no o substituto para os cursos SAP ou experincia. Nos


gostaramos de prover toda informao que voc precisa, mas simplesmente
impossvel. Como resultado, nos iremos identificar quais treinamentos providos pela
SAP education so necessrios e para prover informaes geralmente disponveis. A
SAP lhe da acesso a documentao, e nos achamos que as informao no SAP
Developer Network (SDN) so extremamente benficas.

Cursos De Treinamento Para ABAP


Os cursos disponveis para ABAP esto divididos em dois currculos: um
focado no exame de certificao (Veja tabela 2.1) e outro organizado por tpico (Veja
tabela 2.2).
Curso
TAW10
TAW11

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.

Outro site til o SAP PRESS http://www.sap-press.com. La voc encontrara


vrios outros livros que podem ser extremamente uteis.

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.

Monitore sua compreenso


Voc s pode se lembrar e usar completamente as ideias que voc
compreende. Encontre maneiras de monitorar sua compreenso. Crie o
habito de se perguntar eu entendi isto
Sempre valide a logica por traz das ideias
Por exemplo, as coisas acontecem da forma que voc preveria? Se
voc consegue ver a lgica em algo voc cera muito mais apto a
reconstruir a ideia mesmo que voc no consiga lembra-la
imediatamente.
Tome cuidado com qualquer coisa que no parea intuitiva
Voc esta menos apto a lembrar de algo que no parece lgico ou que
voc no concorda.
Teste sua prpria compreenso
Voc pode fazer isto discutindo seus pensamentos sobre um tpico com
seus colegas para ver se eles veem as coisas da mesma maneira como
voc oua a opinio deles e valide sua compreenso.
Crie seus prprios exemplos
Use seu conhecimento e experincia para relacionar ideias com aquilo
que voc j conhece.
Pense em figura, formatos e cores.
Imagens concretas so mais fceis de lembrar:
Enquanto estuda considere fazer anotaes com figuras,
formas e cores e ento reveja suas anotaes com
frequncia para solidificar as imagens na sua memoria.
Use formas como fluxogramas, tringulos, caixas e
crculos para organizar as ideias.
Construa uma figura ou um conjunto de aes sobre uma
ideia e repasse-a em sua cabea.
Use mnemnicos para ideias importantes
Mnemnicos so dispositivos de treinamento de memoria ou maneiras
de se fazer associaes para ajudar de lembra-las. Existem vrios tipos
que voc j pode estar familiarizado:
Rimas
Acrnimos, para abrevias as primeiras letras de um
conjunto de informaes em uma ou algumas palavras
para ajudar na lembrana de todos os componentes.
Construir uma frase com as letras iniciais de um conjunto
de informaes, o que normalmente gera uma frase mais
fcil de se lembrar.

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.

Estratgias Para O Exame SAP


Quando a data do seu exame se aproximar, os seguintes pontos devero ser
revistos. Mesmo que estes pontos no ajudem na sua compreenso, eles lhe
ajudaram se voc ficar travado enquanto faz o exame. Os pontos que voc deve
lembrar em quanto se prepara para o exame so...

Os exames SAP so online. Isso uma vantagem, pois voc pode


marcar uma questo que voc no tem certeza e retornar se voc tiver
tempo de sobra.
As perguntas esto agrupadas por tpicos. Portanto a seo dois deste
livro tem um capitulo para cada um destes tpicos.
A prova possui varias verses. Isso significa que voc pode no receber
as mesmas perguntas no re-teste.
Nenhuma questo sobre caminhos de menu ou cdigos de transao.
Concentre-se nos conceitos e razes usadas em um tpico.
Aprenda a metodologia por traz de um tpico. Voc cera perguntado o
porqu de fazer algo, por exemplo, Porque esta linha de cdigo no
funciona como o esperado?, faa uma pr-leitura da prova para ver os
tipos das questes e considere fazer primeiro as mais fceis para
aumentar a autoconfiana.
Responda todas as questes (Questes no respondidas valem 0) se
voc no sabe a resposta e no consegue descobri-la, ao menos tente
adivinhar. Voc pode no acertar, mas se voc no respondeu,
garantido que voc ira errar.
Se voc travar em alguma pergunta, marque a e continue. Todas as
questes marcadas podem ser revistas antes de finalizar a prova.
Mantenha-se dentro da caixa. Leve em considerao o tpico da seo
que voc esta trabalhando. Uma resposta no relacionada a este tpico
provavelmente incorreta leia as perguntas de vagar e no faa
suposies.
Quando revisar o material SAP, tome cuidado com certas palavras e
frases. Palavras condicionais como ou ou pode em relao a SAP
tem mais chances de ser verdade do que palavras como No pode.
Mesmo que a prova seja focada na compreenso ao invs da memoria,
memorizao no um palavro.
Frequentemente a reviso resultara na memorizao de muitos fatos e
ajudara tremendamente a eliminar algumas respostas incorretas
imediatamente.
Pense e use os termos da maneira que a SAP os usa. Isso ajudara no
ambiente da certificao.

29

Seja razovel. Reconhecer o senso comum contra o sem sentido. Se


uma resposta parece estranha, provavelmente ela .
As questes estaro baseadas na compreenso de quando o SAP
NetWeaver 7.0 foi lanado. Mudanas na funcionalidade baseadas na
portabilidade de novas verses no estaro no exame um exemplo so
os tipos decfloat 16 e decfloat 34 sero eventualmente parte do SAP
NetWeaver 7.0 atravs de pacotes de suporte mas no haver
permutas relacionadas a eles na certificao.
Descanso importante. Tente dormir uma boa noite de sono. Estudos
indicam que a falta de sono afeta a concentrao, o ingrediente
principal numa prova de mltipla escolha.

NOTA: Voc poder ou no receber os resultados imediatamente aps completar a


prova

Se voc receber os resultados:


Voc no recebera detalhes especficos de quais questes voc acertou
ou errou e o porqu.
Voc recebera a porcentagem de respostas corretas que voc atingiu
para cada tpico.
Se voc no recebeu os resultados:
Seus resultados sero enviados por e-mail.

Estratgia Geral Da Certificao


Esta prova de mltipla escolha e mltipla resposta. Ns lhe damos algumas
diretrizes que ajudaram voc a responder corretamente questes de mltiplas
escolhas em provas:

Note palavras importantes no item isto o ajudara a focar na informao


mais necessria para identificar a resposta correta.
Leia todas as respostas antes de escolher uma
a ultima resposta pode ser to correta como a primeira.
Elimine as respostas que voc tem certeza que esto erradas
Isso o ajudara a diminuir o numero de respostas a escolher.
Existem duas respostas que so opostas
Uma destas duas respostas provavelmente esta correta
Procure por dicas sobre a resposta correta em outras questes da
prova
A resposta correta pode ser parte de uma outra questo na prova.
Procure por respostas que contenham linguagem e terminologia usada
pelo seu professor ou encontrada neste livro
Uma resposta que contenha tal linguagem normalmente a correta.
Fique com a sua primeira resposta a no ser que voc tenha certeza
que outra resposta esta correta
Frequentemente, sua primeira escolha a correta.

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

3 - SAP NetWeaver Viso Geral


Tcnicas Que Voc Aprendera:

Explicar a diferena entre o servidor de aplicao SAP clssico e o


servidor de aplicao SAP NetWeaver
Entender o pacote de negcios SAP
Descrever o propsito do kernel e servios administrativos
Reconhecer a estrutura de um servidor de aplicao ABAP
Determinar a estrutura de um processo de trabalho.

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.

Objetivos Desta Parte Do Teste


A proposta desta parte da prova de certificao verificar se voc tem um
conhecimento sobre o servidor de aplicao SAP NetWeaver ABAP e de como os
diferentes processos trabalham juntos. Esta parte da prova testara seu conhecimento
de uma estreita gama de tpicos. Os pontos que voc precisa compreender para esta
cesso incluem:

Que componentes so partes do servidor de aplicao SAP NetWeaver


Que componentes so partes do servidor de aplicao SAP NetWeaver
ABAP
O uso de uma etapa de dialogo num processo de trabalho
Como as partes do kernel e dos servios administrativos fazem o
servidor SAP NetWeaver independente de banco de dados e
plataforma.

Relembre-se Conceitos Chave


Se voc novo no desenvolvimento ABAP voc pode querer retornar para este
capitulo depois que voc ler o captulo oito. Estes dois captulos esto intimamente
ligados. Voc encontrara as razes tcnicas para unidades lgicas de trabalho e
objetos de bloqueio SAP.

Resumo Dos Produtos SAP


A SAP oferece vrios produtos para todos os tamanhos de empresas. Os
produtos so escalonveis, para garantir que eles possam se ajustar a qualquer
tamanho de empresa, e so adaptveis para uma companhia que esta
constantemente mudando os processos.

33

SAP BUSINESS ONE apropriada para pequenas companhias com


menos de 100 empregados, e 30 usurios, ele abrange os principais
processos (como finanas, vendas, servios para clientes, operaes).
SAP BUSINESS BYDESIGN apropriado para pequenas e medias
empresas com 100 500 empregados que queiram usar uma soluo
sob demanda para melhorar seus principais processos.
SAP BUSINESS ALL-IN-ONE apropriado para pequenas e mdias
empresas com necessidades especificamente industriais, que possuem
varias divises e uma infraestrutura de TI madura.
SAP BUSINESS SUITE uma famlia de aplicao de negcios
estendida que permitem s empresas administrarem todo o seu
negocio.

O SAP BUSINESS SUITE Consiste em vrios softwares modulares que


suportam os processos da empresa de ponta a ponta. O SAP BUSINESS SUITE
parte da plataforma de processo de negcios. Plataforma de processo de negcios
(BPP BUSINESS PROCESS PLATFORM), um pr-requisito para a implementao
de uma arquitetura orientada a servios (SOA service oriented architecture). E
composta das seguintes partes:

O SAP BUSINESS SUITE, que fornece softwares prontos para serem


executados para os processos de negcios.
Servios empresariais reutilizveis para o uso em aplicaes
compostas.
SAP NETWAVER, que uma plataforma de integrao e aplicao para
todas as aplicaes SAP e certas aplicaes de parceiros SAP. SAP
NETWEAVER Inter opervel com os padres mais importantes da
tecnologia como Java 2 plataform, Java Entreprise Edition (Java EE)
e .NET.

Algumas das aplicaes inclusas no SAP Business Suite so:

SAP Enterprise Resource Planning (SAP ERP)


SAP ERP Human Capital Management (SAP ERP HCM)
SAP ERP Financials
SAP ERP Operations
SAP Customer Relationship Management (SAP CRM)
SAP Supplier Relationship Management (SAP SRM)
SAP Supply Chain Management (SAP SCM)
SAP Product Lifecycle Management (SAP PLM)
SAP ERP Corporate Services

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

Uma aplicao central do SAP Business sute o SAP ERP(Enterprise


resource planning). O componente de software central do SAP ERP o SAP ERP
Central Component (SAP ECC). SAP ECC 5.9 pode ser considerado o sucessor do
SAP R/3 Entreprise e opera no Basis do SAP NetWeaver Aplication Server 6.40.
Quando este livro foi escrito a verso atual era o SAP ERP 6.0 (Anteriormente SAP
ERP (2005)), que incluem o SAP ECC 6.0 e outros componentes e opera no SAP
NetWeaver 7.00.
Durante o mesmo perodo de tempo a plataforma passou por vrias mudanas
na nomenclatura enquanto a plataforma evolua. At o release 4.6, a plataforma era
chamada de SAP Basis. Com a introduo da capacidade de acesso a internet no
release 6.20, a plataforma era chamada de Servidor de aplicao web SAP, e com a
capacidade de incluir o banco de dados ABAP e o banco de dados Java em um
sistema no release 6.40, o nome virou SAP NetWeaver application server.

35
A verso do ABAP ainda ligada a verso da plataforma e a razo pela qual
a certificao se chama SAP NetWeaver 7.0

NOTA: O SAP NetWeaver AS 7.10 (ou SAP NetWeaver 7.1) ainda no


utilizado como Basis para um sistema SAP ECC. Entretanto, outros componentes do
SAP NetWeaver como o SAP NetWeaver Process Integration (PI) e o SAP NetWeaver
Composition Environment (CE), j requerem esta verso do SAP NetWeaver.

Com o SAP Web AS 6.10, novas tecnologias baseadas em infraestruturas


altamente escalonveis foram implementadas para processar as requisies HTTP
diretamente da internet ou para mand-las como requisies de cliente para Internet.
Anteriormente um servidor de transaes de internet era necessrio para operar estas
requisies. O kernel SAP foi incrementado para incluir um processo conhecido como
Administrador de comunicao de internet (ICM Internet Communication Manager)
para adicionar esta funcionalidade. O kernel usa o ICM para operar as requisies
HTTP diretamente, permitindo que novas aplicaes baseadas na web, por exemplo,
Business Server Pages (BSPs). Requisies de entrada so recebidas pelo ICM, que
utiliza a URL para decidir para onde enviar a requisio.

A Figura 3.1 mostra a arquitetura bsica de um servidor SAP NetWeaver. Um


servidor SAP NetWeaver a evoluo da plataforma tcnica. Esta plataforma permite
que ABAP e Java existam e funcionem no mesmo sistema. Voc percebera
semelhanas em ambos na figura. Funes similares so executadas pelo dispatcher
e o Java dispatcher para conectar um processo de negcio a um usurio ou
consumidor do processo. O ABAP work processes e o Java server work processes
fazem o processamento e o acesso a o banco de dados. Do lado do ABAP o Gateway
se comunica com os servidores esternos, e como mencionado acima, o ICM processa
todas as requisies HTTP. O SDM (Software Deployment Manager) a ferramenta
padro para instalar componentes J2EE no servidor de aplicao Java.
Estas tecnologias WEB foram usadas pela primeira vez com o BUSINESS
SERVER PAGES (BSP) no SAP WEB APLICATION SERVER 6.20. As aplicaes BSP
so auto contidas similarmente a uma transao SAP. Diferente da transao SAP, a
camada de apresentao no o SAP GUI, mais um navegador WEB. O BSP gera
dinamicamente paginas HTML para a apresentao. Ele define os elementos para a
interao do usurio, em outras palavras, campos de textos e botes. Eles so criados
usando um script do lado do servidor em ABAP. A logica da aplicao feita atravs
do tratamento dos eventos de uma BSP. A partir do SAP NetWeaver 7.0, o WEB
DYMPRO ABAP tambm possvel possvel criar aplicaes Java Web Dynpro
desde o SAP NetWeaver AS6.40 (Veja o capitulo 16 interfaces de usurios (Web
DYMPRO), para detalhes sobre o WEB DYMPRO).

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

Arquitetura Do SAP NetWeaver


A evoluo da plataforma tcnica para o SAP NetWeaver nos deixa com varias
maneiras diferentes de instalar e usar a plataforma SAP NetWeaver. As opes de
instalao para o SAP NetWeaver Aplication Server so as Seguintes:

SAP NetWeaver Application Server ABAP System


SAP NetWeaver Application Server JAVA System
SAP NetWeaver Application Server ABAP + JAVA System

Componentes diferentes do SAP NetWeaver requerem que o SAP NetWeaver


Application Server rode com certas pilhas configuradas. O SAP NetWeaver Process
Integration, por exemplo, requer as pilhas ABAP e JAVA. Dependendo do uso do
servidor, possvel usar apenas o ABAP ou apenas JAVA.

NOTA: quando falamos do SAP NetWeaver Application Server, o termo


instancia frequentemente usado. Uma instancia:

37

Sempre possui exatamente um dispatcher (veja a seo de viso do


usurio abaixo para seu uso).
Inicia quando o dispatcher inicia.
Requer ao menos dois processos de trabalhos dialog (Veja a seo
estrutura de processo de trabalho abaixo para detalhes), mas possuem
ao menos um numero mnimo de processos de trabalho definido pelo
sistema.
tambm chamado de servidor de aplicao na viso orientada a
software do modelo cliente servidor (a prxima nota discute as
diferenas entre as vises orientadas a software e orientadas a
hardware). De uma viso orientada a software, a coleo de servios
mostrado na figura 3.1 um servidor de aplicao, mais de uma viso
orientada a plataforma uma instancia.

Uma instancia uma unidade administrativa que contem componentes do


sistema SAP que proveem um ou mais servios. Os servios fornecidos por uma
instncia so iniciados e encerados juntos. Cada instancia tem sua prpria rea de
memoria. Uma instancia roda em um servidor fsico, mas possvel ter varias
instancias em um servidor fsico. Uma instancia identificada pelo ID do sistema (SID
System ID) e o numero da instancia.
Quando voc instala um sistema SAP, voc tem a opo de separar os
processos de nvel da aplicao daqueles que esto no nvel do banco de dados. Isto
significa que o banco de dados de um sistema SAP pode ser instalado e operado no
servidor fsico separado das instancias do sistema SAP, e de fato este normalmente
o caso. Existe exatamente um banco de dados para cada sistema SAP.
A instancia central do sistema SAP distinguida pelo fato dela oferecer
servios que nenhuma outra instancia do sistema oferece. Para o servidor de
aplicao ABAP, estes servios so o servidor de mensagem e a fila de processos de
trabalho. As outras instancias do sistema so geralmente chamadas instancias de
dialogo.

NOTA: antes de discutirmos varias configuraes cliente servidor no contexto


de sistemas SAP ns precisamos definir os conceitos de cliente servidor. Existem
basicamente duas maneiras de se fazer isto:

Na viso orientada a hardware, o termo servidor significa o servidor


central de uma rede que prove dados, memoria e recursos para as
estaes de trabalho ou clientes.
A outra maneira uma viso orientada a software para servio que
fornecido e chamado de servidor, e um servio que consome ou usa
aquele servios chamado cliente. Ao mesmo tempo, clientes podem
tambm serem servidores para outros servios especficos (como voc
ver abaixo).

Devido a este livro ser sobre a certificao de programao o resto do capitulo


usara a terminologia de perspectiva do software. importante entender que o uso do

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.

Kernel E Servios Administrativos


O kernel e servios administrativos so um ambiente de tempo de execuo
para todas as aplicaes ABAP que so independentes de hardware, operando
independente de sistema e de banco de dados. O kernel e os servios administrativos
so outra maneira de olhar para o sistema SAP NetWeaver. As tarefas do kernel e dos
componentes dos servios administrativos so:

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.

Viso Orientada A Software


A figura 3.2 representa a viso orientada a software de um sistema SAP. Num
sistema SAP baseado em ABAP o SA ABAP consiste de todos os componentes SAP
GUI (Graphical User Interface Interface de usurio grfica) e dos servidores de
aplicao ABAP. Nesta verso simplificada perceba que o SAP GUI pode ser trocado
por um navegador a camada de apresentao (Veja Abaixo); em outras palavras
usurios podem acessar o sistemas SAP atravs de um navegador ao invs do
tradicional SAP GUI (Isto so mostrado apenas uma vs, mas no restrito a apenas
uma ocorrncia).

Figura 3.2 Componentes do servidor de aplicao do servidor SAP NetWeaver

Um sistema SAP um sistema cliente servidor de mltiplas camadas. Os


componentes individuais de software so arranjados em camadas e funcionam,
dependendo de suas posies, como clientes para os componentes abaixo deles ou
servidores para os componentes acima deles. A configurao clssica de um sistema
SAP contem as trs camadas de softwares seguintes:

Camada De Banco De Dados


A camada de banco de dados, que acessada pelo servidor de
aplicao SAP NetWeaver, consiste em um sistema de banco de dados
central. Este sistema central de banco de dados feito pelo SGBD e o
prprio banco de dados.
O Banco de dados contm os dados principais e os dados de transao
para seus programas ABAP. Ele tambm contem o controle e dados
customizados para aplicao, o servidor de aplicao SAP NetWeaver e
os programas ABAP. Os objetos de desenvolvimentos (Programas
definies de telas, menus, mdulos de funo, e assim por diante), so

40

armazenadas em uma parte especial do banco de dados chamada de


repositrio. Estes objetos so chamados de objetos do repositrio. O
Workbench ABAP permite que voc trabalhe com estes objetos.
Camada De Aplicao
Os componentes de software da camada de aplicao do SA ABAP
consistem de um ou mais servidores de aplicao ABAP e um servidor
de mensagem. Cada servidor de aplicao contem um conjunto de
servios usados para rodar o SAP NetWeaver Application Server.
Teoricamente, voc precisa de apenas um servidor de aplicao para
rodar o SAP NetWeaver Application Server. Na verdade, estes servios
so normalmente distribudos em mais de um servidor de aplicao. Isto
significa que nem todos os servidores de aplicao possuem todos os
servios. Servidor de mensagens proporciona a comunicao entre os
servidores de aplicao. Ele passa as requisies entre um servidor de
aplicao e outro dentro do SAP NetWeaver Server. Ele tambm
contem informaes sobre os grupos de servidor de aplicao e a carga
atual balanceada entre eles. Quando o usurio loga no sistema, esta
informao usada para escolher o servidor apropriado.
Camada De Apresentao
Esta camada a interface entre o sistema SAP e seus usurios.
possvel usar seus componentes de softwares conhecidos como SAP
GUI nesta camada para inserir e mostrar dados. Outra opo atravs
de um navegador que tambm pode ser usado na camada de
apresentao. A camada de apresentao envia a entrada do usurio
para o servidor de aplicao, e recebe os dados do servidor para
mostra-los. Enquanto um componente SAP GUI esta rodando ele
permanece ligado a uma seo do usurio no SA ABAP.

Existem vrios benefcios de se distribuir o sistema SAP nesta trs camadas.


Ele distribui a carga do sistema, permitindo uma melhor performance do sistema.
Prove maior escalabilidade porque os componentes do software podem ser
distribudos atravs de diferentes hardwares virtualmente sem restrio. A camada de
aplicao voc pode suprir demandas crescentes instalando servidores de aplicao
ABAP adicionais.

Viso Orientada Ao Usurio


Da perspectiva do usurio, o sistema SAP no visto como sistemas ou
servidores, mas como componentes que aparecem como janelas em uma tela (tanto
em um PC um Navegador, ou outro dispositivo). A camada de apresentao de um AS
ABAP cria estas janelas.
Para conectar ou logar em um sistema SAP o usurio deve iniciar um utilitrio
do SAP GUI chamado SAP Logon. O usurio escolhe um dos sistemas SAP disponvel
listados no SAP logon, e o programa conecta ao servidor de mensagens do AS ABAP
do sistema SAP selecionado. O servidor de mensagens obtm o endereo de um
servidor de aplicao ABAP adequado (aquele com a capacidade menos utilizada). O

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

Figura 3.3 Servidor de aplicao ABAP.

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.

Em um servidor de aplicao ABAP todos os processos de trabalho usam uma


rea de memoria principal comum chamada memoria compartilhada para salvar
contextos ou para bufferizar dados constantes. Recursos que os processos de

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.

Estrutura De Um Processo De Trabalho


Existe uma diferena entre interao do usurio e processamento logico na
programao ABAP. Esta separao e discutida com mais detalhes no capitulo doze,
telas clssicas, e capitulo dezesseis, interfaces do usurio (Web Dynpro). Da
perspectiva de programao, a interao do usurio controlada pelas telas (ao
menos para aplicaes no SAP GUI). Uma tela consiste de duas partes. A mascara de
entrada e o fluxo lgico, que controlam uma grande parte da interao do usurio. O
AS ABAP contm uma linguagem especial para programar o fluxo logico da tela.
Dentro do processo de trabalho (a figura 3.4 mostra os componentes do processo de
trabalho), o processador de tela executa o fluxo logico da tela. Atravs do dispatcher,
ele assume a responsabilidade da comunicao entre o processo de trabalho e o SAP
GUI, chama os mdulos no fluxo logico, e garante que o contedo dos campos sejam
transferidos da tela para o fluxo logico (Veja o capitulo doze telas clssicas, para
detalhes).

Figura 3.4 Componentes de um processo de trabalho.

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:

Estabelecer e terminar conexes entre o processo de trabalho e o


banco de dados
Acesso as tabelas do banco de dados
Acesso aos objetos do repositrio
Acesso ao catalogo de informaes (Dicionrio ABAP)
Controlar transaes (tratamento de Commit e Rollback)
Administrao do buffer de tabelas no servidor ABAP

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.

Figura 3.5 Componentes da interface do 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.

Figura 3.6 Servidor de aplicao ABAP

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

o administrador de comunicao de internet (ICM):


A Substituiu SAP ITS
B Permite que o SAP NetWeaver application Server processe requisies
HTTP
C Permite que a pilha ABAP e a Pilha Java troquem dados.

A pilha Java e a pilha ABAP de um SAP NetWeaver Application Server devem


sempre serem instaladas juntas.
A verdadeiro
B Falso

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

Cada processo de trabalho:


A independente de outros processos de trabalho
B Usa um pool de conexes com o banco estabelecido quando o SAP
NetWeaver Application Server ABAP iniciou
C Usa um processo de trabalho de banco de dados estabelecido quando o
SAP NetWeaver Application Server ABAP iniciou
D pode apenas fazer alteraes no banco dentro de uma nica LUW do
banco
E pode fazer alteraes no banco abrangendo mltiplas LUW do banco de
dados

A cada processo de trabalho atribudo um tipo de tarefa que pode ser


realizada. Quais afirmaes so verdadeiras?
A para mudar o tipo de processo de trabalho necessrio reiniciar o SAP
NetWeaver Application Server ABAP
B todos os processos de trabalho possuem a mesma estrutura
C todos os processos de trabalho comunicam-se com o banco de dados
D todos os processos de trabalho comunicam-se com o dispatcher
E um processo de trabalho pode comunicar-se diretamente com um sistema
interno atravs de chamada remota de funo
F possvel possuir mltiplos processos de trabalho de fila em um SAP
NetWeaver Application Server
G possvel possuir mltiplos processos de trabalho de spool em um
servidor de aplicao ABAP

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.

Leve Com Voc


Agora que voc aprendeu como um servidor de aplicao ABAP opera voc
pode levar as diferenas entre um SAP NetWeaver Application Server e um SAP
Application Server clssico. Voc tambm aprendeu os componentes de um processo
de trabalho e como eles trabalham com os outros componentes de um servidor de
aplicao ABAP ou outras camadas, por exemplo, o servidor de apresentao e o
servidor de banco de dados.

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

SAP NetWeaver Application ABAP

A pilha dentro do SAP NetWeaver


Application Server usada para executar
aplicaes ABAP
Um componente de Software do SAP
NetWeaver Application ABAP que roda
todos os programas ABAP. Esta a
camada de aplicao da arquitetura de
mltiplas camadas de um sistema SAP

Servidor de Aplicao ABAP

50

Processo de Trabalho

Dispatcher
Gateway

Processador de Tela
Processador ABAP

Interface do Banco de Dados

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

Tabela 3.2 Conceitos chave Relembre

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

4 - Utilizao Do ABAP Workbench


Tcnicas que voc aprendera:

Descrever as funcionalidades e capacidades do ABAP Workbench


Explicar a estrutura OBJECT NAVIGATOR
Usar o REPOSITORY BROWSER
Acessar o sistema de informao R/3 REPOSITORY
Compreender ENHANCEMENT INFORMATION SYSTEM e sua
utilizao
Trabalhar com as ferramentas do ABAP WORKBENCH
Identificar o novo editor e as varias configuraes para melhorar a
produtividade
Determinar o conceito de pacote de desenvolvimento (Development
Package) e o transport organizer.

53

O ABAP Workbench o ambiente de desenvolvimento do SAP NetWeaver


Application Server ABAP e esta disponvel em todo o sistema SAP baseado em ABAP.
O ABAP Workbench disponibiliza as ferramentas de desenvolvimento necessrias
para o desenvolvimento de aplicaes. O Object Navigator, o ponto central de entrada
para o ABAP Workbench, contm as ferramentas de desenvolvimentos mais utilizadas
e o ambiente de desenvolvimento recomendado.
Neste capitulo abrangeremos em detalhes o ABAP Workbench e o Object
Navigator. Abrangeremos as funcionalidades e capacidades do ABAP Workbench,
discutiremos a estrutura do Object Navigator, discutiremos em detalhe os vrios
browsers disponveis no Object Navigator. Iremos ver em detalhes o novo editor, o
Repository Information System, e o Enhancement Information System. Tambm
veremos as ferramentas do ABAP Workbench como o editor ABAP, Screen Painter,
Menu Painter, Dicionrio ABAP, Class Builder, Function Builder, e o Web Application
Builder. Por ultimo, discutiremos os pacotes e seus atributos e o transport organizer.

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.

Objetivos Desta Parte Do Teste


Um dos objetivos do exame de certificao ABAP verificar se o conhecimento
sobre o ABAP Workbench e as diversas ferramentas associadas com ele. Voc deve
compreender os seguintes pontos para ser um desenvolvedor ABAP bem sucedido:

ABAP Workbench e as ferramentas de desenvolvimento


Configuraes do ABAP Workbench
Utilizao dos vrios browsers no ABAP Workbench
O novo editor e as configuraes para melhorar a produtividade
Development Packages e Transport Organizer

Relembre Conceitos Chaves


O ABAP Workbench o ambiente de desenvolvimento integrado para o
desenvolvedor de aplicao. O Workbench possui a maioria das ferramentas que um

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.

Figura 4.1 Tela do ABAP Workbench.

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.

Figura 4.2 Object Navigator.


A lista do Object Navigator possui os seguintes browsers na navegao do
objeto:

Web Dynpro Browser Texto


Voc usa o Web Dynpro Browser Texto para editar um texto dos
elementos do Web Dynpro UI que so criados ou administrados no
Online Text Repository (OTR). Esta ferramenta permite que voc altere
apenas os textos das vises Web Dynpro que foram armazenadas no
OTR ou que foram inseridas do OTR na aplicao Web Dynpro.
Browser MIME Repository
Voc utiliza o Browser MIME Repository (Multpurpose Internet Mail
Extensions) para navegar ou importar objetos MIME como paginas de
estilo, cones, grficos, etc. a partir do ABAP Workbench. O repositrio
MIME armazena estes objetos MIME no sistema SAP. O Browser MIME
Repository cria automaticamente uma pasta para as aplicaes
Business Server Pages (BSP). Voc pode importar os objetos MIME do
Repository browser ou visualiza-los dando um duplo clique neles.
Tag Browser
O Tag Browser disponibiliza a documentao dos elementos da
interface do usurio que podem ser utilizados para desenvolvimento de
paginas web para aplicaes BSP e templates do Internet Transaction
Server (ITS). Voc tem a opo de filtrar as tags por aplicao BSP ou
templates do ITS. O Tag Browser disponibiliza documentao para
HTMLB, extenses BSP. Diretivas BSP, HTML, WML, XHTML.
Browser Repositrio de Testes
Voc usa o Browser Repositrio de Testes para administrar os casos
de testes. Voc pode exibir scripts de testes eCATT, casos de testes
manuais e casos de testes externos. Voc tambm tem a opo de
criar casos de testes no browser repositrio de testes. uma tima
ferramenta para administrar casos de testes no repositrio de teste.

57

Outros Browsers como Repository Browser, sistema de informao R/3


Repository, Enhancement Information System e Transport Organizer so discutidos em
detalhes a seguir.
Repository Browser
O Repository Browser uma das opes do menu no Object Navigator e
iniciado por padro quando voc executa o Object Navigator (Transao SE80). Voc
pode criar e editar objetos no repositrio browser. O Repository Browser e a
ferramenta central para administrar o seus objetos de desenvolvimento no Object
Navigator a ferramenta mais utilizada. Quando nos falamos sobre objetos do
repositrio queremos dizer todos os objetos entregues pela SAP e os objetos
desenvolvidos pelo cliente. Estes objetos de repositrio consistem de programas,
classes, objetos do dicionrio ABAP, mdulos de funo, telas, menus, etc...
A lista de objetos exibida no Repository Browser uma estrutura de arvore.
Voc pode navegar at um objeto do repositrio pela hierarquia da aplicao por meio
dela voc pode listar os objetos dentro de cada componente de aplicao SAP. Os
objetos tambm podem ser listados numa estrutura de arvore por pacote, programa,
classe ou interface, aplicao BSP, aplicao Web Dynpro, objeto local, etc...
Voc pode exibir o objeto a partir da rea de navegao dando um duplo click
nele. O objeto ser exibido na rea de ferramenta do Object Browser no editor que foi
usado para criar o objeto. Os objetos de desenvolvimento ABAP so exibidos no editor
ABAP, Enquanto o objeto de dicionrio exibido no Dicionrio ABAP. Similarmente,
telas e menus so exibidos no Screen Painter ou Menu Painter quando voc da um
duplo click numa tela em olho nu na rea de navegao. Voc pode usar os menus de
contexto na rea de navegao para criar ou editar o objeto na rea de aplicao ou
pacote (Veja a figura 4.3).
Voc pode criar ou editar objetos do repositrio apenas se voc possuir
autorizao do desenvolvedor apropriada e o seu User ID tenha sido registrado no
SAP Service Marketplace como desenvolvedor. Voc precisa informar a sua chave de
acesso de desenvolvedor na primeira vez que voc criar qualquer objeto de
repositrio. Voc s precisa informar a chave de acesso uma vez, pois o sistema
armazena a sua chave na tabela DEVACCESS.

58

Figura 4.3 rea de navegao do Repository Browser.


Algumas das funes do menu de contexto mais comuns para objetos do
repositrio so verificar um objeto, ativar um objeto, copiar ou renomear objetos, ou
modificar atribuio de pacotes de um objeto ou escrever entrada de transporte. Voc
tambm tem a funo exibir entrada catalogo objetos no menu de contexto.

Sistema De Informao R/3 Repository


O Browser de Sistema de Informao R/3 Repository usado para procurar
objetos do repositrio do sistema SAP. tela inicial exibe uma lista hierrquica das
categorias dos objetos de repositrios do sistema SAP (Veja a figura 4.4).
O Sistema de Informao R/3 Repository possui uma tela de seleo para
informar os critrios de busca dos objetos. Voc pode procurar por objetos dentro de
um pacote, procurar por objetos do ABAP dictionary ou programas especificando os
critrios de busca na tela de seleo. A figura 4.5 mostra a tela de seleo para
tabelas de banco de dados nos objetos do ABAP dictionary

Figura 4.4 Sistema de informao R/3 Repository.

59

Figura 4.5 Tela de seleo para objetos do ABAP Dictionary.

Voc pode acessar a tela de seleo para o objeto do repositrio dando um


duplo click no tipo do objeto na rea de navegao do objeto; a tela de seleo
adequada para o objeto ser exibida na rea de ferramenta do Object Navigator. Voc
pode personalizar a tela de seleo do sistema de informao atravs do menu
Processar Configuraes na tela inicial do browser. Voc pode especificar se
voc deseja ver a tela de seleo padro ou a tela com todos os critrios de seleo.
Voc tambm pode exibir todos os critrios de seleo para o objeto clicando no cone
apropriado (

) na barra de ferramentas da aplicao.

Voc pode informar os critrios de busca para o objeto na tela de


executar. O sistema exibe os resultados da busca na rea de ferramenta
Navigator. Voc tambm pode selecionar o objeto do resultado e mostrar
utilizao do objeto, e voc pode dar um duplo clique para visualizar o
ferramenta apropriada.

seleo e
do Object
a lista de
objeto na

O repositrio do sistema de informao uma ferramenta til para exibir as


melhorias por componente de aplicao ou pacote. Voc pode procurar por Add-Ins,
customer exits, implementaes de melhorias, definies de melhorias. Para uma
explicao detalhada de melhorias e aplicaes procure o capitulo 18, melhorias e
modificaes.

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.

Figura 4.6 Tela de personalizao do ABAP Workbench.

Novo Editor ABAP E Configuraes Do Workbench


Existem trs modos diferentes para o editor ABAP:

Editor Front-End (Modo Cdigo Fonte - Novo)


Editor Front-End (Modo Texto Simples - Antigo)
Editor Back-End (Modo baseado em linha)

Os trs editores so totalmente compatveis e intercambiveis. O cdigo fonte


criado em um editor pode ser visualizado pelos outros modos.

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

Figura 4.7 Tela de personalizao do editor ABAP


A opo editor Front End (Novo) disponibiliza o ultimo editor que vem com o
SAP GUI para Windows 7.0. O novo editor um controle ActiveX totalmente
integrado no SAP NetWeaver 7.0.
O novo editor possui todas as funcionalidades de um editor de cdigo moderno:

A margem esquerda da tela principal exibe qualquer bookmark ou ponto


de parada. Pontos de parada so exibidos com o sinal vermelho de
pare (STOP), e Bookmarks so exibidos como uma bandeira azul na
margem do editor. Voc pode adicionar nove bookmarks e um numero
ilimitado de Bookmarks que no so numeradas no editor para uma
navegao mais rpida dentro do cdigo.
O editor possui uma margem para o numero da linha prxima margem
do editor, aonde o numero exibido.
As alteraes no cdigo so marcadas com um triangulo vermelho ao
lado do numero da linha.
A barra de status exibe o status atual do cdigo.
A dica do scroll vertical possui informaes sobre a posio atual do
scroll dentro do cdigo, funo corrente, classe ou mtodo.
Voc pode dividir a tela do editor horizontalmente dando um duplo click
no divisor de linha na barra de rolagem vertical. Voc tambm pode
arrastar o divisor de linha para dividir a tela.
Voc pode contrair ou expandir blocos de cdigo com IF ENDIF ou
CASE ENDCASE.
A barra de status do editor exibe o status atual do CAPS LOCK e NUM
LOCK, e o numero da linha em que o cursor esta posicionado. O CAPS

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

Figura 4.8 Menu de contexto da margem.

O menu de contexto na rea de edio exibem as opes de menu para


cdigo ABAP. O menu de contexto da rea de edio possui varias
opes de formatao, edio e navegao (veja figura 4.9).
O editor possui dicas de cdigo em tempo de execuo Enquanto voc
digita sugerindo palavras chave, template de blocos etc... Voc pode
aceitar a dica de cdigo apertando a tecla TAB ou inserir um template
de bloco selecionando CTRL + ENTER. Alm disto, possui
funcionalidade de exportao WYSIWYG. Ele suporta exportar para
HTML, PDF, e formatos RTF.
O novo editor ABAP uma IDE totalmente integrado para programao
ABAP. Ele possui destacamento de palavras chave, delinear estruturas
de linguagem, dicas de cdigo em tempo real, e alto completar
estruturas da linguagem.

Figura 4.9 Menu de contexto para formatao de texto.

63

O novo editor voc pode personalizar o destacamento das palavras


chave, strings e comentrios. Voc pode personalizar a fonte, cor e
tamanho dos strings, pontos de paradas e outros itens de exibio no
editor de cdigo (Veja a figura 4.10).

Figura 4.10 Personalizao do esquema de cores do editor

Voc pode personalizar as configuraes de exibio do editor. A figura


4.11 mostra a tela de personalizao de exibio. As opes de
exibio e quebra de linha podem ser ligadas ou desligadas de acordo
com sua preferencia.

Figura 4.11 Personalizao da exibio para o editor

Por ultimo, voc pode personalizar as opes da finalizao do cdigo.


Esta opo permite que voc complete a palavra chave disponvel no
dicionrio ou complete a classe, mtodo ou nome de varivel dentro de
escopo de visibilidade.

Ferramentas Do ABAP Workbench Em Detalhes


Com o Object Navigator voc trabalha diretamente com o objeto do repositrio.
A ferramenta apropriada para o objeto automaticamente selecionada quando voc
da um duplo click no objeto. O editor SAPscript, editor SmartForms e projetos de
melhoria do cliente so algumas das ferramentas de desenvolvimento que no esto
disponveis no Object Navigator. A seguir esto as ferramentas de desenvolvimento
mais utilizadas no ABAP Workbench.

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

O ITS foi a primeira maneira de a SAP estender as


aplicaes de negocio para navegadores Web
convertendo as telas SAP Dynpro em HTML tornando
possvel acessar transaes SAP atravs de
navegadores Web. Para aplicaes ITS voc pode criar
servios de internet para as transaes SAP existentes,
templates HTML para as telas das transaes e objetos
MIME para adicionar cones e grficos para o layout.
Voc tambm pode desenvolver aplicaes BSP com o
Web Application Builder. Voc pode desenhar sua pagina
Web usando HTML e ABAP ou linguagem Java Script.
Voc pode definir o fluxo da pagina e implementar
tratamento de eventos com ABAP no Web Application
Builder. Web Application Builder tambm permite que
voc defina o tema para o seu layout e integre os objetos
MIME na sua aplicao Web
WEB DYMPRO EXPLORER
O Workbench possui uma ferramenta para desenvolvimento de
aplicaes Web Dynpro ABAP (A partir do SAP NetWeaver 7.0). a
ferramenta possui o ambiente de RUNTIME e a ferramenta grfica para
desenhar vises Web Dynpro dentro do ambiente de desenvolvimento
ABAP.

Enhancement Information System


O Enhancement Information System disponibiliza uma viso geral das
melhorias definidas e implementaes de melhorias dentro do framework de
melhorias. O framework de melhorias a base tcnica para um novo conceito de
melhorias do SAP; para informaes detalhadas veja o capitulo 18, melhoria e
modificaes. Ele permite que voc veja as definies de melhorias e implementaes
de sistema.
O sistema de informao de melhorias exibe uma estrutura de arvore para
definio de melhorias e implementaes. A definio de elemento de melhoria
exibida abaixo do Enhancement Spot Definition, que por sua vez exibido abaixo do
Composite Enhancement Spot. De forma similar, a implementao de elementos de
melhoria exibido abaixo do Spot de Melhoria Composto, que por sua vez exibido
abaixo da implementao de melhoria composta. O n de implementao de melhoria
no exibido se a melhoria no foi implementada. necessria que todos os Spots de
Melhorias ou Implementaes sejam atribudos a uma definio de melhoria
composta. Definies de melhorias e implementaes so discutidas em detalhes no
capitulo 18, Melhorias e Modificaes.
Voc pode filtrar a exibio das melhorias no Enhancement Information
System.
Voc tem a opo de exibir a melhoria composta, ou Spot de melhoria, implementao
de melhoria ou implementao de melhoria composta (Veja a Figura 4.2).

66

Figura 4.12 Tela de navegao do Enhancement Information System.


O Enhancement Spot Definition pode ser exibido na rea de ferramenta do
ABAP Workbench dando um duplo click nele na rea de navegao. A figura 4.13
exibe a tela Enhancement Spot Definition na rea da ferramenta. Similarmente voc
pode exibir a tela da implementao de melhoria na rea da ferramenta dando um
duplo click nele (Veja a Figura 4.14).

Figura 4.13 Tela do Enhancement Spot Definition.

Figura 4.14 Tela do Enhancement Spot Implementation.

67

Pacotes e Seus Atributos


Antes de verso 4.6C todos os objetos de desenvolvimento ABAP eram
atribudos a classes de desenvolvimento que eram usadas para agrupar os objetos de
desenvolvimento relacionados. Pacotes eram atribudos a componente de aplicao.
Podem existir vrios pacotes para um componente de aplicao. A partir da verso
4.6C, todos os objetos de desenvolvimento ABAP devem ser atribudos a um pacote.
Pacotes so containers para objetos de desenvolvimento na camada de transporte e
permite que os objetos sejam transportados. Voc pode criar e editar pacotes no
Package Builder no Repository Browser. Voc pode exibir todos os objetos atribudos a
um pacote no Repository Browser selecionando um pacote na lista de objetos. O
sistema SAP tem um pacote pr-definido, $TMP, para o qual todos os objetos locais
so atribudos. Objetos locais atribudos ao pacote $TMP no podem ser
transportados. Pacotes no transportveis tem o nome iniciado com $.
O Package Builder tambm pode ser acessado pela transao SE21 ou
SPACKAGE. O Package Builder usado para criar e atribuir atributos aos pacotes.
Para criar um pacote para o seu projeto de desenvolvimento, voc pode criar o
pacote principal e um sub-pacote, especificar a hierarquia do pacote, definir a interface
do pacote, adicionar elementos a interface do pacote, e ento definir o nvel de acesso
do usurio do pacote. Voc cria pacotes principais apenas se voc quiser criar uma
hierarquia de pacotes. Normalmente voc cria um pacote e especifica o tipo como
nenhum pacote principal.

Figura 4.15 Tela de criao de pacote.

Voc informa o nome do pacote, descrio breve, Componente aplicao,


Componente software, camada de transporte e o tipo de transporte e ento clicar
cone gravar ( ). O nome dos pacotes do cliente deve comear com a letra Z ou Y. O
componente de software para um pacote do cliente sempre HOME. A camada de
transporte determina se o objeto atribudo ao pacote local ou transportvel.
Normalmente voc move todas suas atividades de desenvolvimento do sistema de
desenvolvimento (DEV) para o sistema de teste (QAS) e ento para o sistema de
produo (PRD). O time de administrao de sistema criara uma camada de
transporte para o seu sistema de desenvolvimento na qual a rota de transporte
definida para mover o objeto de um sistema para outro. Baseado na camada de
transporte, os objetos atribudos a um pacote so movidos para diferentes sistemas
definido na rota de transporte da camada de transporte.

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.

Figura 4.16 tela do Package Builder para atributos do pacote.


Pacotes possuem atributos como aninhamento, interfaces de pacote,
visibilidade e explicaes de utilizao.

Aninhamento permite que voc inclua pacotes em outros pacotes,


permitindo que se dividam largas unidades de objetos do repositrio e
estrutura-los em uma hierarquia
Visibilidade uma propriedade do elemento do pacote. Elementos
dentro do pacote so visveis a todos os outros elementos do mesmo
pacote e sempre so invisveis aos elementos fora dos sub-pacotes.
Elementos dentro de um pacote podem ser visveis fora do pacote
definindo uma interface de pacote.
Acesso de uso o direito de um pacote utilizar elementos visveis na
interface de outro pacote.

Pacotes usam interfaces e visibilidade para tornar seus elementos visveis a


outros pacotes. Todos os elementos visveis de um pacote podem ser usados por
outro pacote. Explicaes de utilizao restringe o uso dos elementos visveis de um
pacote. Os elementos visveis do pacote provedor s podem ser utilizados pelo outro
pacote se o acesso de uso da interface foi criado no pacote (Veja a figura 4.17).

69

Figura 4.17 Estrutura do pacote no Object Navigator do ABAP Workbench.

Interface e visibilidade do pacote so uteis se voc quer tornar um elemento de


um sub-pacote visvel a um pacote de nvel superior ou pacote principal.
O sistema verifica se o seu pacote obedece s regras a cima baseada na
entrada na tabela PAKPARAM. A verificao do pacote desligada por padro no
sistema do cliente. A entrada GLOBAL_SWITCH para o campo chave NAME na
tabela PAKPARAM controla o comportamento da verificao de pacote. Por padro
esta chave definida como OFF. Para ligar a validao de pacote defina a chave
GLOBAL_SWITCH para RESTRICTED ou R3ENTERPRISE. Tabela 4.1 mostra os
valores para a chave GLOBAL_SWITCH e os seus efeitos na validao de pacote.
VALOR
RESTRICTED

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.

Figura 4.18 Estrutura do Transporte Request.


Cada objeto do repositrio atribudo a um pacote, e o pacote atribudo a
camada de transporte. Se a rota da camada de transporte esta definida no sistema de
administrao de transporte, ento o objeto gravado na tarefa de transporte
transportado caso contrario um objeto local.
O time de administrao do sistema cria a camada de transporte no
sistema de administrao de transporte (TMS Transport Management System) para
transportar os objetos na sua estrutura de sistema. A camada de transporte atribuda
ao sistema de desenvolvimento. O time de administrao precisa definir a rota de
transporte depois de criar a camada de transporte. Existem dois tipos de rotas de
transporte: seu time de administrao vai definir a rota de consolidao para cada
camada de transporte e ento a rota de entrega. O sistema de desenvolvimento o
sistema fonte para a rota de consolidao e o QAS o sistema alvo. Voc define a
rota de entrega para transportar os objetos do QAS para outros sistemas alvo, e
podem ser produo ou outros sistemas de treinamento. Ento uma vez que o objeto
importado para o QAS, voc precisa das rotas de entrega para transportar os objetos
do QAS para outros sistemas.
O Transport Organizer integrado com o Object Navigator ou pode ser
acessado via transao SE10. Voc pode exibir a Transport Request e as tarefas

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)

Figura 4.19 Editor de Request do ABAP Workbench


Voc pode criar change Requests criando um objeto do repositrio. Uma janela
de dialogo aparecera quando voc estiver criando o objeto para permitir que voc crie
uma nova request ou atribua o objeto a uma j existente. Os atributos do transporte
so populados automaticamente baseado os atributos do objeto. A figura 4.20 a tela
inicial do transport request.

Figura 4.20 Tela do Transport Request.


Voc tambm pode criar uma transport request a partir do Transport Organizer,
mas voc ter que povoar os atributos do transporte por conta prpria. Voc libera
todas as tarefas contidas na Change Request e ento a Change Request
propriamente dita para transportar os objetos atravs da sua configurao do sistema.
O administrador do sistema importa os objetos para o sistema alvo. Voc pode exibir o
log de transportes selecionando a opo de menu Logs de Transporte.
As ferramentas do Transport organizer so integradas com o Transport
Organizer. Elas so um conjunto de programas que auxiliam seu trabalho com o
Transport Organizer voc pode iniciar a ferramenta a partir da tela inicial do transport
Organizer atravs do menu Ir Para Ferramentas de Transport Organize (Veja
figura 4.21).

72

Figura 4.21 Ferramentas de Transport Organizer.


As ferramentas podem ser usadas para procurar por objetos em transport
Request ou incluir objetos na Transport Request. Voc pode procurar a request ou
tarefa baseado em diferentes critrios de busca. Similarmente voc pode exibir todas
as modificaes no sistema do cliente usando o Modification Browser.

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

O Object Navigator incorpora um total de dez browsers


A Verdadeiro
B Falso

O Repository Browser iniciado por padro quando voc executa a


transao SE80 para o Object Navigator.
A verdadeiro
B Falso

voc pode listar no mximo 6 browser no Object Navigator.


A verdadeiro
B Falso

73
4

Voc pode manter Forms SAPScript e SAP SmartForms atravs do ABAP


Workbench.
A verdadeiro
B Falso

Quais das seguintes afirmaes sobre o Object Navigator so verdadeiras?


A Programas ABAP pode ser exibidos e editados no Object Navigator
B Telas podem ser exibidas e editadas no Object Navigator
C Menus podem ser exibidos e editados no Object Navigator
D Voc pode criar implementaes BAdI no Object Navigator
E Voc pode criar projetos do cliente (transao CMOD) no Object Navigator
F O dicionrio ABAP pode ser mantido no Object Navigator

O sistema de informao R/3 Repository uma ferramenta til para procurar


EXITs, Function EXITs, BAdIs no sistema SAP.
A Verdadeiro
B Falso

Definies de melhorias e implementaes podem ser exibidos no


Enhancement Information System.
A Verdadeiro
B Falso

Quais das afirmaes a seguir so verdadeiras? Podem existir mais do que


uma resposta correta.
A todos os objetos de repositrio do cliente devem ser atribudos a um
pacote.
B Pacotes usam interfaces e visibilidade para tornar seus elementos visveis
a outros pacotes
C A camada de transporte um campo obrigatrio para o pacote
D Um pacote pode ser aninhado

O componente de Software para um pacote do cliente pode ser ________.


A Home
B Qualquer componente de software SAP (SAP_APPL, SAP_BASIS,
SAP_HR, etc...)

10 quais das seguintes informaes so verdadeiras? Podem existir mais do


que uma correta
A Todos os objetos transportveis devem ser atribudos a um pacote
B Objetos locais podem ser transportados
C Objetos do repositrio e personalizaes Cross Client so atribudos a
Workbench Request
D personalizaes do cliente so atribudas a Customizing Request.
E Objetos inativos podem ser transportados.

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

Sistema de informao R/3 Repository

Enhancement Information System

Transport Organizer

Tabela 4.2 Conceitos Chave

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

5 - Utilizao Do Debugger ABAP


Tcnicas que voc aprendera:

Examinar o comportamento dos programas ABAP usando o


DEBUGGER ABAP
Usar o DEBUGGER ABAP para testar sistematicamente os programas
ABAP
Planejar correes dos seus programas ABAP
Usar Watchpoint, pontos de paradas (Breakpoint), Assertions, e grupos
de Checkpoints de maneira efetiva.
Entender as diferenas entre as duas verses do debugger

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.

Objetivos Desta Parte Do Teste


O proposito desta parte do exame verificar se voc tem conhecimento
detalhado do debugger ABAP, que um componente principal do ambiente.
Verificando se voc possui o conhecimento apropriado de como utilizar o debugger
eficientemente, voc se tornara um programador mais efetivo e eficiente.
Esta parte do exame validara o seu conhecimento do debugger. O ponto que
voc precisa compreender para esta cesso inclui:

80

As vrias maneiras de iniciar o debugger


Pontos de paradas (Breakpoints)
Watchpoint
Assertions
Visualizando e modificando objetos de dados
Compreender a arquitetura do debugger

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:

Diferentes maneiras de iniciar o debugger


Diferentes vises dos contedos dos objetos de dados
Diferentes opes de execuo
Exibir cdigo fonte no debugger
Adicionando e excluindo pontos de paradas (breakpoints)
Adicionando e excluindo watchpoints
Adicionando e excluindo travas de banco de dados
Interromper a execuo do cdigo em uma instruo ou evento
Exibir e alterar contedo dos campos em tempo de execuo
Exibir objetos e referencias
Exibir e posicionar strings
Abrir o cdigo no editor ABAP ou Object Navigator

Debugger Novo e Clssico


Atualmente, voc tem acesso s duas verses do debugger ABAP. A verso
antiga (comumente chamada de debugger clssico), que existe desde o comeo do
SAP R/3, sempre teve a maioria das funes listadas acima. Como a linguagem
evoluiu, o debugger tambm evoluiu, por exemplo, a incluso de objetos no ABAP e no
DEBUGGER. A figura 5.1 mostra a rea de controle do fluxo, e a figura 5.2 mostra a
rea de exibio das variveis do debugger clssico.

Figura 5.1 Controle de fluxo padro do debugger clssico.

81

Figura 5.2 Exibio de variveis do debugger clssico.

O debugger clssico sempre teve certas limitaes: o layout no era


personalizvel, e havia restries na quantidade de dados que podia ser mostrado por
vez. Por exemplo, no mximo 8 objetos de dados podiam ser exibidos, e destes 8
apenas quatro por vez. Apenas uma tabela interna podia ser exibida, e a rolagem das
tabelas especialmente horizontalmente era frequentemente tediosa. Mesmo que fosse
possvel reordenar as colunas, era necessrio conhecer os campos da tabela interna
para fazer isso. Outras reas tambm necessitavam de conhecimento detalhado do
cdigo em execuo. No havia maneira, de dentro do debugger, de ver o modulo de
funo do repositrio, mtodo ou nome de sub-rotina para definir um ponto de parada.
Este debugger compartilhava a mesma rea de rolagem no cdigo sendo
debugado. Este modo externo correspondia janela da cesso na qual voc estava
rodando o cdigo. Isto restringia as interaes do debugger com o repositrio ou
sistema como um todo sem impactar no cdigo sendo analisado. Cada ao do
debugger podia influenciar o fluxo do programa e era limitado como o resultado.
No debugger clssico geralmente no possvel analisar programas em modo
debugger que rode em um processador ABAP e so chamados recursivamente de
uma unidade subordinada. Por exemplo, exit de converso no pode ser analisada
usando debugger se ela rodar a partir de uma instruo WRITE uma exit de converso
executa qualquer coisa que seja enviada para a apresentao ou recuperada da
camada de apresentao. Se for chamada de uma instruo WRITE, o debugger
chamado recursivamente a partir dele mesmo.
A partir do SAP NetWeaver 6.40 foi lanada uma nova verso do debugger. O
debugger disponvel na verso 6.40 no era considerado completo (e no era o
debugger padro); mas eliminou as restries acima.
O motivo disto que o novo debugger executa em seu prprio modo externo.
Isso permite que o cdigo a ser analisado rode virtualmente sem impacto no debugger.
Esta separao de funcionalidade permite uma maior iterao com o sistema,
permitindo a utilizao da ajuda da pesquisa, exibir mais que uma tabela interna, e o
numero ilimitado de objetos de dados.
O debugger definido como padro inicia quando necessrio. Voc pode alterar
o padro, no editor ABAP (SE38) ou no Object Navigator (SE80), usando o menu
Utilitrios Opes Editor ABAP Depurao. A figura 5.3 e a figura 5.4
mostram o menu e a caixa de dialogo resultante. Os dois debugger so iniciados
exatamente da mesma forma.

82

Figura 5.3 Caminho de menu para definir o debugger padro

Figura 5.4 Janela para definir o debugger padro.

NOTA: Mtodos principais para iniciar o debugger:


1 Na rea de navegao selecione o menu Executar Depurao para o
programa selecionado. Como na figura 5.5.
2 Na rea de edio selecione a linha do programa e selecione
definir/eliminar ponto de parada. Ento inicie o programa selecionando (executar)
Direto ou F8.
3 Selecione Sistema Utilitrios Depurao ABAP/4 ou Sistema
Utilitrios Depurao Tela.
4 Digite /h no campo de comandos na barra de ferramentas standard e
pressione ENTER ou use um atalho para enviar um comando sesso.

83

Figura 5.5 Navegao do inicio do debugger.


Entretanto, cada vez que o novo debugger iniciado um novo modo iniciado
automaticamente. Voc possui o mximo de 6 modos externos disponveis como
padro, porm seu sistema pode ser configurado diferentemente. Se nenhum modo
externo esta disponvel quando o novo debugger for iniciado a mensagem Alcanado
num. Mximo de modos exibido, o inicio do novo debugger cancelado, e o
debugger clssico iniciado no lugar. Neste caso, voc deve fechar os modos que no
so mais necessrios.
No novo debugger, o controle pode ser passado da aplicao para o novo
debugger usando o cdigo de funo /h, mesmo que o debugger j tenha iniciado.
Voc pode sair do novo debugger atravs de um destes mtodos:

Se o debugger est pronto para entrada (Ativo) e a aplicao


esta esperando, voc pode selecionar Debugger Encerrar
Depurador, que fecha apenas o debugger e a aplicao
continua rodando.
Voc pode selecionar Debugger Encerrar aplicao e
debugger, o que encera o debugger e a aplicao.
A terceira opo valida se a aplicao esta pronta para a
entrada e o debugger esta esperando, neste caso voc digita
/hx no campo de comando e aperta ENTER, o que fecha
apenas o debugger e permite que a aplicao continue a rodar.

possvel alternar entre o debugger clssico e o novo debugger selecionando


Debugger Mudana para o ABAP debugger Clssico. Voc deve, entretanto
saber que se voc alternar do novo debugger para o clssico quando o cdigo ABAP
chamado do kernel do servidor de aplicao (Converso Primaria e Field Exit) que o
erro RPERF_ILLEGAL_STANTEMENT cera disparado como resultado da chamada
recursiva.
Voc achara as funes de analise de cdigo similares entre as verses do
debugger. possvel navegar na viso geral das variveis para a viso detalhadas dos
objetos de dados apenas dando um duplo click. A diferena do novo debugger que
voc pode processar um numero ilimitado de objetos de dados simultaneamente, e o
nmero visvel a cada vez depende do tamanho da janela e da fonte. Tambm

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.

Ferramentas do Novo Debugger e UI


Assim que voc iniciar o novo debugger, usando um dos mtodos mostrados
na nota anterior (A partir do Menu, com um ponto de parada(Breakpoint) ou o
comando /h) voc ver a mensagem Session X Connected to debugger na linha
de status da aplicao. X o numero do modo externo atual. Quando o debugger
iniciar voc vera o titulo da janela ABAP debugger controla sesso (X) (Exclusivo),
onde X o modo externo da aplicao. Isto disponibiliza um link visvel entre a
aplicao e o modo debugger. Se no for possvel usar um modo exclusivo o titulo
ser ABAP debugger controla sesso (X) (No Exclusivo).
Se o debugger obtiver o modo exclusivo, significa que a aplicao a ser
analisada exclusivamente ocupa um processo de trabalho do servidor de aplicao
durante a depurao. Se todos os processos de trabalho de debugger exclusivos
estiverem ocupados, o debugger alternado para o modo no exclusivo. Neste estado
voc pode tentar ocupar um processo de trabalho exclusivo selecionando Debugger
Modo de Depurao Exclusivo ON (Mostrado na figura 5.6). Entretanto, isso s
possvel se outro processo de trabalho exclusivo ficou disponvel neste meio tempo.

Figura 5.6 Menu para ligar o modo Exclusivo.

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.

Voc encontrara 11 reas de trabalho ou desktops quando o novo debugger


iniciar isso um aumento das verses anteriores do SAP NetWeaver 6.40 pois nem
todas as ferramentas estavam completas. Voc pode personalizar os trs primeiros
desktops para que ao iniciar o debugger eles atendam as suas preferencias e os
outros oito so pr-definidos. Voc pode modificar cada um destes desktops a
qualquer momento.
Cada desktop pode manter de uma a quatro ferramentas. As ferramentas
exibidas em um desktop podem ser as mesmas ou diferentes dependendo de sua
necessidade no momento. Voc pode mudar o tamanho ou a localizao de qualquer
uma destas ferramentas. Por exemplo, para ferramentas colocadas horizontalmente a
ferramenta da esquerda ou direita pode ser alargada ou encurtada. As ferramentas
podem ser trocadas verticalmente, horizontalmente ou diagonalmente. Voc pode
trocar qualquer ferramenta com qualquer outra simplesmente clicando no boto
substitui ferramenta. Uma ferramenta pode ser maximizada para preencher o desktop
inteiro. Voc pode desfazer qualquer mudana no layout com o boto voltar ou (F3).
Atualmente voc pode criar quinze ferramentas. As ferramentas esto
agrupadas em trs categorias: Ferramentas Standard, Objetos de dados e
Ferramentas Especiais (Veja a figura 5.7)

Figura 5.7 Janela nova ferramenta


Voc vera as diferenas entre as duas vises de cdigos fonte. O texto fonte
exibe o cdigo como no editor ABAP antigo o editor ABAP totalmente novo usa um
novo editor que exibe formatao adicional e disponibiliza informaes sobre os
objetos de dados quando voc posiciona o cursor sobre eles.

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

Figura 5.8 Seis primeiro Desktops

Figura 5.9 ltimos cinco Desktops


A maioria das ferramentas tambm possui servios adicionais. Voc sempre
poder acessar o servio da ferramenta clicando no boto servio da ferramenta,
como mostrado na figura 5.10 ou atravs do menu de contexto da ferramenta.

Figura 5.10 Servio da ferramenta.


Os servios disponveis variam dependendo da ferramenta. Por exemplo, a
ferramenta cdigo fonte apenas permite que voc navegue para a linha corrente
executando ou que abra o editor. A maioria disponibiliza a possibilidade de salvar os
contedos da ferramenta para um arquivo local ou pesquisar. Exibio rpida de
variveis tem a opo de ordenar os objetos de dados locais ou globais ou salvar os
dados como dados de teste na transao SE37, Enquanto os servios de tabela
interna podem fazer o append, insert ou delete de linhas em uma tabela. Voc tem a
opo de alterar a sequencia dos campos atravs do servio ou ento arrasta-los
como se faria em uma ALV (O ABAP List Viewer ou, como ele foi renomeado, o SAP
List Viewer e discutido no capitulo 15, ALV grid Control) ou Table Control.

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

Figura 5.11 Menu de contexto da ferramenta tabela

Figura 5.12 Menu de servios tabela.


Voc tem varia maneira de modificar a tabela interna atravs do menu de
contexto (clicar com o boto direito no mouse em cima de uma linha contendo dados)
ou em menu de servios da ferramenta. A mesma opo existe para uma tabela
interna standard, entretanto uma tabela interna hashed no permite que voc insira
linhas usando um ndice. Se voc usar a opo anexar linha (append), independente
de onde voc tentar inserir o registro nas tabelas internas Sorted ou hashed, a linha
ser inserida na posio correta.

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.

Figura 5.13 Inserir usando Chave


Usar o editor ABAP totalmente novo possui muitas vantagens sobre o antigo
texto fonte. Primeiro, como no novo editor, voc possui a mesma flexibilidade com as
configuraes. Voc pode definir fontes diferentes e cores para as palavras chave,
comentrios e outros tipos de itens. A exibio permite comprimir blocos, quebrar
palavras e outros efeitos visuais.
A figura 5.14 mostra as funcionalidades mais importantes:

As setas no canto superior esquerdo, como em todas as outras


ferramentas, permite que voc ajuste o tamanho da ferramenta.
No lado direito da ferramenta, o terceiro, quarto, quinto botes do topo
permitem que voc maximize a ferramenta para preencher o desktop,
maximize a ferramenta para usar toda a altura do desktop e maximize a
ferramenta para usar toda a largura do desktop.
A barra de status na parte inferior da ferramenta exibe o escopo da linha
selecionada, neste caso dentro de uma funo e dentro de um IF.
O escopo mais perto do cursor, neste caso, a palavra chave IF, tambm
so negritadas.
A barra de status tambm mostra a linha e a coluna do cursor, e dar um
duplo click nesta caixa exibe o dialogo ir para.
A linha a ser executada indicada com uma flecha amarela, e
posicionar o cursor encima de uma varivel exibe o tooltip mostrando o
nome da varivel, valor e tipo.

89

Figura 5.14 ferramenta novo editor ABAP totalmente novo.


Agora voc pode instruir um ponto de parada para ignorar um numero de
ocorrncias antes de parar. Voc apenas inseri um nmeros no campo ignorar
(qualquer numero positivo entre 0 e 4.294.967.296[2] pode ser usado) para impedir
que o ponto de parada pare. Voc pode alterar um ponto de parada para ativo ou
inativo ou eliminar o ponto de parada. Adicionalmente voc pode editar checkpoints
condicionais e incondicionais utilizando a ferramenta ponto de parada. Voc adiciona
checkpoints condicionais utilizando a instruo ASSERT; checkpoints incondicionais
so definidos utilizando a instruo BREAK-POINT. Esses tem um efeito que o
programa continuara apenas se a condio for preenchida. Estes checkpoints podem
ser localizados, ativados ou desativados.
Como os pontos de parada os watchpoints so lugares no programa que instrui
o processador ABAP a interromper a execuo do programa em um ponto particular.
Diferente dos pontos de parada, watchpoints no ativam o modo debug at que o
contedo de um campo especifico mude. Voc pode definir watchpoints apenas no
debugger (Figura 5.15).

Figura 5.15 Criando um watchpoint condicional.


Watchpoints, como pontos de parada, so especficos do usurio e no afetam
outros usurios rodando o mesmo programa. Diferente do debugger clssico que
possui um limite de dez watchpoints, no existe limite para o numero de watchpoints
ao mesmo tempo no novo debugger. Se voc definir um watchpoint para um campo
sem especificar um operador relacional ou valor de comparao, a execuo do
programa continua at que o valor do campo mude. Se voc especificar um operador
relacional ou um valor de comparao execuo do programa continua at que a

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

Definir diretamente pontos de paradas


dinmicos

Pontos de paradas para instrues, subrotinas, mdulos de funo ou mtodos


Pontos de parada para excees e
excees do sistema

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

Tabela 5.2 Tipos de pontos de paradas

Assertions e Pontos De Paradas


Checkpoints definem lugares no programa a onde o estado do programa pode
ser verificado durante a execuo. Uma instruo BREAK-POINT representa um
checkpoint incondicional. Neste caso, a execuo do programa incondicionalmente
interrompida neste ponto do programa e o debugger iniciado.
Assertions so outra forma de checkpoints que voc usa para implementar
checkpoints condicionais no seu programa. Um assertion, valida se a condio
definida foi satisfeita. Uma assertion definida pela instruo ASSERT. Assertions e
pontos de paradas so sempre ativos ou podem ser ativados atribuindo a eles um
grupo de checkpoints (figura 5.16).

91

Figura 5.16 Grupo de Checkpoint.


Quando o programa atinge uma ASSERTION ativa, ele valida a condio ou
expresso logica. Se nenhum grupo de checkpoints foi atribudo a uma ASSERTION
que falhou, o comportamento padro produzir um erro em tempo de execuo se a
condio violada o programa termina com um erro em tempo de execuo, acesso
ao debugger ABAP ou cria uma entrada no log; caso contrario, o programa continua
com a prxima instruo. Se voc atribuir a ASSERTION a um grupo de checkpoint o
comportamento do programa controlado pelas configuraes de ativao do grupo
de chekpoint.
Voc tambm pode editar os checkpoints condicionais e incondicionais usando
a ferramenta pontos de parada no debugger como mostrado na figura 5.17

Figura 5.17 Alterando a ativao no debugger

Personalizao e Configurao do Novo Debugger


Dos principais benefcios da nova interface do debugger que ela tem opo
de ser configurado para o seu uso. Isso lhe da possibilidade de definir vises e seus
tamanhos conforme necessrio. Voc tambm tem a possibilidade de agrupar certas
vises e torna-las disponveis sempre que abrir o novo debugger.
Na sua forma atual o debugger prove uma interface flexvel e reajustvel com o
total de 11 reas de trabalhos ou desktops. Dependendo da sua seleo, voc pode
ter at quatro ferramentas simultaneamente em cada uma das reas de trabalhos. Os
seus tamanhos podem ser ajustados manualmente. Os trs primeiros desktops

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.

Figura 5.18 Boto gravar layout


Quando voc inicia o debugger, abaixo da barra de titulo na barra de
ferramentas da aplicao voc encontrara os botes de controle de fluxo (Figura 5.19).
Estes botes de controle de fluxo permanecem inalterados da verso clssica do
debugger.

Figura 5.19 Botes de fluxo.


O primeiro boto tem a funo etapa individual o segundo executar, o terceiro a
funo retorno e o ultimo a funo avanar. Os botes tambm disponibilizam uma
maneira de definir pontos de parada ou criar um watchpoint, ou como mencionado
acima, gravar as configuraes do layout.
Abaixo da barra de ferramentas da aplicao voc encontrara a informao
sobre o cdigo sendo executado (Figura 5.20). Voc vera o programa e o nome do
include ou programa do fonte sendo executado, e abaixo disto, o evento do programa
e o nome do evento sendo executado. A direita do include ou nome do programa esta
a linha atual que ser executada. O boto diretamente abaixo do numero da linha
posiciona a tela para mostrar esta linha no cdigo fonte. O boto azul com um (i) exibe
os atributos do programa do cdigo fonte. Os botes exibidos antes do nome do
programa ou evento, se clicados, abrem uma nova janela com o cdigo fonte exibido.
O mesmo boto esta disponvel na visualizao na pilha de navegao ABAP para
cada chamada. Novamente, clicar no boto abre o cdigo fonte neste ponto do
programa.

Figura 5.20 Informao do programa


A direita da informao do programa voc encontrara duas variveis de sistema
e seus contedos exibidos. O padro SY-SUBRC (a varivel de sistema contendo o
cdigo de retorno da instruo) e SY-TABIX (a varivel de sistema contendo a ultima
linha acessada da tabela interna), voc pode sobre escrever uma ou ambas
escrevendo sobre os seus nomes.

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.

Figura 5.21 Exibio rpida de variveis


As exibies rpidas das variveis nas primeiras duas abas tambm
disponibilizam um boto para selecionar dois objetos exibidos e fazer uma
comparao. Alternativamente, voc pode navegar para aba DIFF e especificar as
variveis diretamente (Veja a figura 5.22 para a ferramenta DIFF).

Figura 5.22 Ferramenta DIFF


Finalmente, possvel alterar como as ferramentas secundarias, por exemplo,
o editor, so abertas: em uma janela paralela ou na janela atual. Tambm possvel
personalizar o comportamento da navegao para vises detalhadas e onde a varivel
ser exibida quando clicada na ferramenta de cdigo fonte.

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

O debugger exibe no mximo 8 objetos de dados cada vez.

A Verdadeiro
B Falso
Um watchpoint, para a execuo do programa cada vez que a condio
especificada verdadeira.
A Verdadeiro
B Falso

Ambos, debugger clssico e novo podem ser usados em todos os cdigos


ABAP sem restries.
A Verdadeiro
B Falso

Sobre quais circunstancias o debugger clssico inicia como o debugger


padro? (selecione todas que se aplicarem).
A Nenhuma. O novo debugger sempre iniciara como padro.
B Quando cinco modos j existirem para esta sesso de login.
C Quando o numero de sesses de depurao exceder a metade do numero
de sees de dialogo.
D Quando voc especificar o padro como debugger clssico nas
configuraes do Object Navigator
E se voc alternou manualmente para o debugger clssico durante sua
ultima sesso

O que significa o modo debugger no exclusivo? (Selecione todas que se


aplicarem).
A Um roll-out forado na aplicao depois de cada viso do debugger.
B Outra pessoa esta depurando o mesmo cdigo fonte.
C Debug no possvel entre as instrues SELECT E ENDSELECT porque
o cursor do banco de dados precisa ser fechado usando um Commit.
D O debug no possvel para converses ou field exits.

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

Qual o limite de watchpoints que pode existir ao mesmo tempo?


A 8.
B 10.
C 16.
D Sem limite.

Definir pontos de parada para um mtodo ou modulo de funo no debugger


habilita o uso do F4 (Entradas possveis) para encontrar o nome correto.
A Verdadeiro.
B Falso.

Todos os pontos de paradas so validos para toda a seo do debugger, e


todos podem ser alterados pelo debugger.
A Verdadeiro.
B Falso.

possvel fazer mltiplas alteraes nos objetos de dados ao mesmo tempo


no debugger .
A Verdadeiro.
B Falso.

10 Ao iniciar o debugger qual circunstancia causa o erro de tempo de execuo


DEBUGGING_NOT_POSSIBLE?
A Iniciar o modo no exclusivo no sistema de produo.
B Quando mais de 5 sesses j estiverem associadas a este usurio.
C Quando o numero de sesses de debugger no servidor exceder o valor
definido no parmetro RDISP/WPDBUG_MAX_NO.
11 Existem_________reas de trabalhos disponveis no debugger.
A 7.
B 9.
C 11.
D 15.
12 Qual boto desfaz as alteraes no layout do debugger?(preencha a lacuna)

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

Desktops e suas Ferramentas


Grupos de checkpoints

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

6 - Tipos ABAP e Objetos de Dados


Tcnicas que voc aprendera:

Descrever tipos de dados ABAP e objetos de dados


Definir objetos de dados usando tipos de dados pr-definidos e
genricos.
Entender os tipos de dados locais
Entender tipos de dados globais e entender a visibilidade dos objetos de
dados
Entender estruturas planas e profundas e diferenciar as duas.

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.

Objetivos Desta Parte do Teste


O objetivo desta parte da certificao validar o seu conhecimento sobre a
compreenso bsica dos tipos de dados ABAP e os objetos de dados na linguagem de
programao ABAP. O exame de certificao espera uma boa compreenso do
desenvolvedor de aplicao sobre os seguintes conceitos:

Conceito dos tipos e objetos de dados


Tipos de dados pr-definidos ou genricos
Operaes validas dos vrios objetos de dados e suas utilizaes nos
programas
Conceito de tipos de dados locais e globais
Declaraes de estruturas e a diferena entre plana, aninhada e
profunda.

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:

Referenciar entre os tipos de dados predefinidos e genricos e suas


utilizaes no programa
Sintaxe da declarao de dados
Descrever as operaes validas para os objetos de dados.

Tipos ABAP e Objetos de Dados


Programas em qualquer linguagem de programao trabalham com dados
locais e estes dados so armazenados nas variveis do programa. Variveis possuem
nomes e tipo, que pode ser numrico, caractere, ou string dependendo do tipo de
dados suportado pela linguagem.
Na linguagem ABAP a varivel chamada objeto de dados e definida
concretamente por um tipo de dados. Objetos de dados so sempre definidos com a
palavra chave DATA. Voc pode usar tipos ABAP, tipos locais e tipos globais para
definir objetos de dados.

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.

Tipos de dados so usados para definio de objetos de dados. Ele


define os atributos tcnicos dos objetos de dados, como os objetos so

103

armazenados na memoria e quais operaes so possveis para o


objeto de dados baseado no tipo.
Tipos de dados tambm so usados para definio de parmetros de
interface. O tipo do parmetro de interface determina o tipo do
parmetro ou valores que so transferidos quando uma unidade
modular chamada. A unidade modular pode ser uma sub-rotina,
modulo de funo ou mtodo.
Eles tambm podem ser usados para definio de campos de entrada/
sada no programa ABAP. Eles so usados para declarar
PARAMETERS e SELECT OPTIONS veja o capitulo 13, telas de
seleo, e para telas Dynpro veja o capitulo doze telas clssicas.

Os tipos de dados ABAP podem ser classificados em pr-definidos ou


standard, locais e globais (Figura 6.1). Estes tipos de dados so discutidos em
detalhes nas sesses seguintes.

Figura 6.1 Tipos de dados ABAP.

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 Campo De Texto


Literais de campo de texto so definidos no programa com uma
sequencia de caracteres dentro de aspas simples (). O literal de
texto pode ter de 1 a 255 caracteres de comprimento e seu tipo de
dados C. espaos a direita do literal de campo de texto so
ignorados. A seguir esta a sintaxe para a definio de literais de
texto:
DATA: c_var1(3) TYPE C VALUE abc.

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

Objetos De Dados Pr-Definidos


Objetos de dados pr-definidos so aqueles que esto sempre
disponveis durante o tempo de execuo do programa e no
necessrio declara-los no programa. Objetos de dados pr-definidos
tambm so chamados de variveis de sistema. O campo de sistema
SY uma estrutura com o tipo de dados do dicionrio ABAP SYST. Os
campos de sistema SY so automaticamente preenchidos e atualizados
pelo ambiente em tempo de execuo. Campos de sistemas so
variveis e podem ser alterados durante a execuo do programa, mas
isso no recomendado. A figura 6.2 exibe a estrutura do dicionrio
ABAP SYST.
Variveis

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:

Figura 6.2 Estrutura SYST do dicionrio ABAP


o

A palavra chave DATA usada para declarar os dados no programa


cuja visibilidade e tempo de vida dependente do contexto da
declarao. Se a varivel definida em uma sub-rotina ento ela
valida por todo o tempo de vida da sub-rotina e apenas na subrotina. De outra forma, se ela for definida no topo do programa, ela
disponvel globalmente no programa. Voc informa o valor inicial
do objeto de dados usando a palavra chave VALUE:
DATA: count TYPE I,
count2 TYPE I VALUE 10.

A palavra chave STATICS usada para declarar os dados com


validade esttica dentro da procedure. Variveis declaradas com a
instruo DATA existem Enquanto durar o contexto no qual elas
foram definidas. Variveis definidas no programa principal existem
durante toda a execuo do programa e as variveis locais
definidas na procedure so disponveis apenas dentro da procedure
e enquanto a procedure esta rodando. Voc pode declarar uma
varivel usando a palavra chave STATCS para reter a varivel local
(definida dentro da procedure) alm do tempo de execuo da

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

No exemplo acima a varivel count1 no retm o valor porque foi


declarado com a palavra chave DATA, Enquanto a varivel count2,
declarado com a palavra chave STATICS, retm o valor durante o
tempo de execuo do programa. A varivel count1 inicializada de
volta quando a sub-rotina chamada pela prxima vez, Enquanto a
varivel count2 inicializada apenas na primeira chamada e
continua incrementando o valor durante as chamadas
subsequentes.
CLASS DATA
A palavra chave CLASS DATA usada para declarar um
atributo esttico da classe e valido para todas as
instancias da classe no programa.
PARAMETERS
A palavra chave PARAMETERS usada para declarar um
objeto de dados elementar que tambm exibido como um
campo de entrada na tela de seleo
SELECT OPTIONS
A palavra chave SELECT OPTIONS usada para declarar
uma tabela interna que tambm exibida como um campo
de entrada na tela de seleo.

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.

Tipos de Dados ABAP


Os tipos de dados ABAP so os tipos pr-definidos disponibilizados pelo
ambiente de tempo de execuo do ABAP. Os tipos pr-definidos podem ser usados
em todos os programas ABAP. Voc usa tipos pr-definidos para definir tipos de dados
locais e objetos de dados no seu programa. Tipos de dados ABAP podem ser usados
para descrever uma nica varivel e objetos de dados elementar. Eles podem ser
usados para descrever os componentes de um objeto de dados estruturado. Uma
maneira de classificar os tipos de dados elementares pr-definidos comprimento fixo
versus comprimento varivel.
Existe um total de dez tipos de dados elementares pr-definidos. Existem oito
com o comprimento fixo e dois com o comprimento varivel. A seguir esto os oito
tipos de dados pr-definidos com o comprimento fixo.

Os quatro tipos caracteres so texto numrico (N), texto caractere (C),


tipo data (D), e tipo tempo (T). Campos destes tipos so conhecidos
como campos caractere. Cada posio destes pontos tem o espao do
cdigo de um caractere. Com a adoo do Unicode cada caractere
ocupa de 2 a 4 bytes.

109

Os trs tipos numricos so Integer (I), Numero de ponto flutuante (F) e


numero compactado (P) que so usados no ABAP para exibir e calcular
nmeros. Os tipos de dados numricos (I, F, P) diferenciam-se na
representao interna dos valores, leque de valores e uso aritmtico no
calculo.
O tipo Integer representa um numero inteiro. O leque de valores para o
tipo I -2.147.483.648 at +2.147.483.647. Resultados no inteiros de
operaes aritmticas so arredondados, no truncados. O exemplo
seguinte exibe o resultado de uma operao com integer
DATA: num1 TYPE I VALUE 5,
num2 TYPE I VALUE 2,
result TYPE I,
result = num1 / num2.
O resultado ser 3.

O leque de valores para o tipo F 1x10-307 at 1 x 10308 para nmeros


positivos e negativos incluindo o zero; isto os nmeros validos para o tipo F so de
-1.7976931348623157EE+308 at -2.2250738585072014EE-308, o valor zero (0) e mais
+2.2250738585072014EE-308 at +1.7976931348623157EE+308 para a rea positiva. A
preciso aproximadamente 15 casas decimais. Voc no deve usar nmeros de
pontos flutuantes se for necessrio uma alta preciso; caso contrario use o tipo P.
Objetos de dados do tipo P podem ter valores decimais. O numero de casas
decimais pode ser especificado na definio do objeto de dados. O leque de valores
do tipo P depende do seu comprimento e o numero de dgitos aps o ponto decimal. O
comprimento valido pode ser de 1 a 16 bytes. Objetos de dados do tipo P podem tem
no mximo 14 casas decimais. O valor inicial do tipo P zero (0). Quando estiver
trabalhando com o tipo P, importante definir o atributo do programa para Aritmtica
em Ponto Fixo; caso contrario, os tipos numricos so tratados como inteiros. Os
objetos de dados do tipo P tambm so chamados de objetos de dados compactados.
A seguir esta a sintaxe para o objeto de dados do tipo P:
DATA: pack_num1 TYPE P LENGTH 8 DECIMALS 2,
Pack_num2 TYPE P LENGTH 8 DECIMALS 2 VALUE 2.55.
O comprimento de 8 bytes do objeto de dados acima corresponde a 2 x 8 - 1
nmeros incluindo as casas decimais.
O tipo hexadecimal, tipo X, o tipo de dados usado para definir um byte na
memoria. Um byte representado dois dgitos hexadecimais. A sintaxe para declara
um objeto de dados do tipo X a seguinte:
DATA: hex(1) TYPE X VALUE 09.
Os dois tipos de dados elementares de comprimento varivel so STRING e
XSTRING:

110

O tipo de dados STRING uma cadeia de caracteres de comprimento


varivel. Uma string pode conter qualquer nmero e caracteres alfa
numrica. Nenhum espao alocado em memria para a string at que
um valor seja atribudo a ela, porque no saberamos quanta memoria
alocar. A memoria atribuda dinamicamente quando nos sabemos qual
ser o valor. No existe tecnicamente um comprimento mximo para o
tipo string. O mximo de memoria que pode ser atribuda a uma string
dependente do parmetro ztta/max_memreq_MB.
O tipo XSTRING uma sequencia de bytes hexadecimais de
comprimento varivel. Ele pode conter qualquer numero de bytes. O
comprimento da cadeia de bytes o mesmo que o numero de bytes.
Similarmente o tipo STRING, a memoria alocada dinamicamente em
tempo de execuo quando o valor atribudo a um objeto de dados
deste tipo.

Os tipos de dados pr-definidos podem ser categorizados como tipos de dados


completos e tipos de dados incompletos. Para os tipos de dados completos, no
especificamos o comprimento, seja porque eles tem o comprimento fixo como tipo D
(nunca precisaramos de um comprimento diferente de 8 caracteres para uma data) ou
porque uma cadeia de comprimento varivel ento nos no especificamos o
comprimento porque a memoria alocada dinamicamente em tempo de execuo
quando atribumos um valor a varivel. Por isso, a definio do objeto de dados no
necessita uma especificao do comprimento quando usamos os tipos de dados
completos.
A tabela 6.1 especifica os tipos de dados elementares pr-definidos que no
precisam da especificao do comprimento para sua definio.
TIPOS DE DADOS
I
F

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)

Tabela 6.1 Tipos de dados de comprimento fixo padro.


Tipos de dados que necessitam da especificao de comprimento para definir
um objeto de dados so chamados de tipos de dados incompletos. Se voc no
especificar o comprimento, ento o comprimento padro do tipo de dados ser
utilizado. A tabela 6.2 lista os tipos de dados incompletos.
TIPOS DE DADOS

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

Tabela 6.2 Tipos de dados incompletos.


A seguir esto as sintaxes para declarar tipos de dados incompletos:
DATA: var1 TYPE C.
varivel caractere de comprimento 1
DATA: var2(3) TYPE C.
Varivel caractere de comprimento 3
DATA: var3 TYPE C LENGTH 3. Varivel caractere de comprimento 3
Os tipos de dados completos D, F, I, T define o objeto de dados
completamente. Os tipos de dados C, N, P, X so genricos e precisam a
especificao do comprimento para definir o objeto de dados completamente. A seguir
esta a sintaxe para os tipos de dados e objetos de dados:
TYPES v_char1(2) TYPE C.
Types v_char2 TYPE C LENGTH 10.
TYPES: num1 TYPE P DECIMALS 2.
Data: name(20) TYPE C.
DATA: price TYPE P DECIMALS 2.
Tipos de Dados Locais
Tipos de dados locais so definidos dentro do programa ABAP e so visveis
apenas para aquele programa. Voc pode usar tipos pr-definidos, locais ou globais
para defini-los no programa. Voc define tipos de dados locais usando a instruo
TYPES:
TYPES: <type_name> . . . [TYPE <ABAP - Type> | LIKE <obj>] .
O nome do tipo pode ser de at 30 caracteres e pode-se usar letras, dgitos e
underline. <ABAP - Type> pode ser um tipo de dado elementar, outro tipo de dados
local definido no programa ou um tipo de dicionrio. Voc pode usar a instruo LIKE
para se referir a uma tabela do banco de dados ou estrutura do dicionrio ABAP, mas
recomendado que voc use TYPE na programao orientada a objeto ABAP; voc
pode usar a instruo LIKE apenas para os campos SY ou atributos locais.
Os tipos de dados locais so declarados usando a palavra chave TYPES:
TYPES:

char1 TYPE C LENGTH 8,


num1 TYPE N LENGTH 6,
pack TYPE P LENGTH 3 DECIMALS 2.

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

TYPES: BEGIN OF address_ty,


firstneme TYPE C LENGTH 20,
lastneme TYPE C LENGTH 20,
street
TYPE C LENGTH 20,
city
TYPE C LENGTH 20,
END OF address_ty.
Voc pode usar as definies de tipos acima para declarar objetos de dados e
ento acessar o componente individual no programa para atribuir um valor a ele. O
seguinte cdigo de exemplo exibe a sintaxe para acessar o componente individual de
um tipo de dados de estrutura no programa:
DATA: addrs TYPE address_ty.
addrs firstname = Bob.
addrs lastname = Johnson
addrs street
= 123 Adam Lane.
WRITE: addrs fristname, addrs lastname, addrs street.
A seguir esta um cdigo e exemplo para definir o tipo de estrutura aninhado
localmente em um programa ABAP:
TYPES: BEGIN OF stru1,
fld1 TYPE I,
BEGIN OF strut2
fld2 TYPE C,
fld3 TYPE I,

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.

Voc pode definir tipos elementares, tipos de referencia e tipos


complexos no dicionrio ABAP. Elementos de dados, tipos de tabela e
estruturas so os tipos de dados globais do dicionrio ABAP. Voc pode
se referir a estes tipos de dados no programa para definir um tipo de
dados local ou objeto de dados o elemento de dados define um campo
individual no dicionrio ABAP ou um objeto de dados elementar ou
varivel no seu programa.
Elementos de dados permitem que voc defina tipos elementares, tipos
de referencias e tipos complexos de objetos de dicionrio. Elementos de
dados permitem que voc defina tipos complexos se eles forem usados
para tipar um dos componentes do tipo complexo. Sozinhos eles so
tipos elementares que so visveis globalmente. Voc pode definir tipos
de dados localmente referindo-se a um elemento de dados em um
programa ABAP como no exemplo a seguir:
TYPE: <t> TYPE <elemento de dados>.
TYPE: site_ty TYPE werks_d.

115
DATA: wa_site TYPE site_ty.

Voc pode definir tipos de estrutura no dicionrio ABAP. O tipo de


estrutura pode ser uma estrutura flat, profunda ou aninhada. Voc pode
se referir a uma estrutura do dicionrio ABAP para declarar um tipo de
dados de estrutura local. Um tipo de dados complexos local com
referencia a uma estrutura global declarado da seguinte forma:
TYPE: <t> TYPE <estrutura>.
TYPE: marc_ty TYPE dmarc.
DATA: wa_mark TYPE marc_ty.
Voc tambm pode definir uma estrutura local ou workarea diretamente
usando a seguinte sintaxe:
DATA: wa_mark TYPE dmarc.

Tipos de tabela so templates de tabelas internas armazenadas no


dicionrio ABAP. Voc especifica o tipo da linha, tipo de acesso e chave
durante a criao do tipo de tabela no dicionrio ABAP. Para mais
informaes sobre os tipos de tabelas veja o capitulo 7, uso e definio
de tabelas internas. A sintaxe para definir uma tabela interna localmente
no programa com referencia a um tipo de tabela a seguinte
DATA: MARM_lt TYPE marm_ty.

Grupos de tipos so tipos do dicionrio ABAP nos quais voc pode


armazenar qualquer definio de tipos globalmente e usa-los no seu
programa localmente. Voc deve declarar o grupo de tipos no programa
antes de se referir aos tipos de dados no grupo de tipos a sintaxe pra
declarar grupos de tipos no programa ABAP a seguinte:
TYPE POOLS: <type pools>.
O exemplo seguinte mostra a sintaxe para usar o tipo de dados
slis_t_fieldcat_alv definido no grupo de tipos. Para definir um objeto de
dados que se refere a um tipo de dados definidos em um grupo de tipo
definido SLIS, voc deve declarar o grupo de tipos no programa com a
seguinte sintaxe TYPE POOLS: SLIS e ento definir o objeto de dados
com referncia ao tipo de dados definido no grupo de tipos:
TYPE POOLS: SLIS.
DATA: fieldcat TYPE slis_t_fieldcat_alv.
O tipo slis_t_fieldcat_alv definido como um tipo de dados global no
TYPE GROUP SLIS.

116

Visibilidade do Objeto de Dados


A visibilidade do objeto de dados dependente do contexto da varivel. As
seguintes regras se aplicam aos objetos de dados declarados localmente no
programa:
Se a varivel definida com instruo DATA dentro de uma sub rotina
entre o FORM e ENDFORM, ento um dado local da sub rotina
entretanto, o dado no visvel e no acessvel fora da sub rotina.
Se o objeto de dados declarado dentro de um modulo de funo,
ento um objeto de dados local para o modulo de funo. O grupo de
funo pode ter variveis, e estas estaro no top include do grupo de
funes e estar acessvel a todos os mdulos de funes dentro do
grupo.
Objetos de dados declarados no inicio do programa com as palavras
chaves DATA, PARAMETERS ou SELECT OPTIONS so visveis para
todo o programa e so objetos de dados globais.
Se objetos de dados declarado entre as instrues MODULE e
ENDMODULE de um modulo PAI ou PBO de uma tela, ento ele
visvel todo o programa. Similarmente, qualquer objeto de dados
declarado em um bloco de eventos ABAP, por exemplo START OF
SELECTION, so visveis a todo o programa.
Objetos de dados definidos com a instruo TABLES so visveis no
programa inteiro mesmo que a instruo TABLES seja declarada em
uma sub rotina.

Cuidado
Tome cuidado com a visibilidade declarada localmente no programa:

Objetos de dados declarados entre MODULE e ENDMODULE so


visveis a todo programa.
Objetos de dados declarados em blocos de eventos ABAP so visveis
a todo o programa.
Objetos de dados declarados com instruo TABLES so visveis a todo
o programa mesma que a instruo TABLE aparea em uma sub-rotina
dentro de um FORM ENDFORM.

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

Tipos de dados armazenam dados e ocupam memoria.


A Verdadeiro
B Falso

um objeto de dados concretamente definido pelo tipo de dados e ocupa


memoria. Ele contem dados com os quais os programa ABAP trabalha em
tempo de execuo.
A Verdadeiro
B Falso

Os tipos de dados pr-definidos so definidos localmente no programa ABAP.


A Verdadeiro
B Falso

O comprimento padro do tipo C :


A1
B 10
C 1 65535

Se objetos de dados do tipo I esto sendo utilizados para armazenar o


resultado de um calculo, os decimais sero truncados.
A Verdadeiro
B Falso

o comprimento padro do tipo P :


A8
B1

118
C 1 16
7

Uma estrutura de comprimento varivel chamada:


A estrutura aninhada
B estrutura profunda
C estrutura flat

Objetos de dados locais podem ser definidos usando tipos do dicionrio


ABAP:
A Verdadeiro
B Falso

Tipos de dados globais definidos em sistemas SAP so:


A Dados definidos no programa que so visveis a todas as rotinas /
instrues dentro de um programa ABAP
B Tipos do dicionrio ABAP
C Tipos de data definidas no programa usando os tipos do dicionrio ABAP

10 Quais das instrues abaixo so incorretas:


A TYPES: carrid_id LIKE spfli-s-carr_id.
B TYPES: werks TYPE C LENGTH 4.
C TYPES: data_ty TYPE D LENGTH 10.
D TYPES: Str TYPE STRING LENGTH 10.
11 Qual o resultado da operao aritmtica abaixo:
DATA: int TYPE I.
int = 5 * (3 / 10).
A 1.
B 2.
C 1,5.
D - 0.
12 Qual o resultado da operao aritmtica abaixo:
DATA: int TYPE I.
int = 5 / 10.
A 1.
B 0,5.
C 0.

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.

um tipo de dados caractere


de tamanho 1.
um tipo de dados caractere
de tamanho 10.
um tipo de dados caractere
de tamanho 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

7 - Definies e Uso das Tabelas Internas


Tcnicas que voc aprendera:

Definir tabelas internas


Classificar os diferentes tipos de tabelas internas e seus usos
Definir tipos de tabelas internas e objetos de dados de tabelas internas
no programa
Compreender as operaes em tabelas internas
Definir tipos de tabela no dicionrio ABAP e definir a sintaxe usada por
ele nos programas

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.

Objetivo Desta Parte do Teste


O objetivo desta parte do exame de certificao verificar seu conhecimento
sobre os conceitos de tabela interna e seu uso na aplicao do programa ABAP. Alm
disto, estar preparado para definir tabela interna, o acesso tabela interna, e saber
sobre os vrios tipos de tabela interna.
O exame ira testar seu conhecimento sobre o benefcio do uso de diferentes
tipos de tabelas internas em um aplicativo e sobre a sintaxe usada para definir e criar
tabelas internas, assim como, acesso aos seus diferentes tipos.

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

Definir diferentes tipos de tabelas internas


Preencher uma tabela interna
Acessar os dados em uma tabela interna
Compreender a considerao sobre o desempenho durante a definio
da tabela e de processamento

Definio e Uso das Tabelas Internas


Tabelas internas so objetos de dados estruturados e so definidas no
programa ABAP local. Elas permitem que voc armazene uma quantidade varivel de
registro de dados estruturados na memoria, assim como, vrios nmeros de registros
estruturados idnticos na memoria ABAP. Uma tabela interna como uma matriz
encontrada em outras linguagens de programao. Tabelas internas so objetos de
dados dinmicos que ajudam o programador na tarefa de gerenciamento de memoria
dinmica. Para manter este dinamismo, o sistema ABAP em tempo de execuo
gerencia dinamicamente o tamanho da tabela interna sendo restrito o numero mximo
de registros pelo hardware e sistema operacional instalado. Como desenvolvedor voc
no tem que fazer qualquer trabalho a respeito de gerenciamento de memoria.

Segue Algumas Caractersticas De Uma Tabela Interna:

usada para processar um grande conjunto de dados de uma forma


estruturada. O uso tpico de uma tabela interna poderia ser para ler e
armazenar dados na tabela do banco de dados ou de um arquivo
sequencial, e ento formatar os dados para ser exibido na tela ou como
relatrio de sada. Voc tambm pode armazenar dados numa tabela
interna para passa-los a um modulo de funo, mtodo ou sub-rotina
para mais de um processo.
Processar um grande nmero de dados em uma tabela interna
benfico para a melhoria do desempenho, se usado corretamente em
um programa, comparado a um acesso de dados sequencialmente de
uma tabela de banco de dados. Processar uma tabela interna rpido
porque os dados esto armazenados na memoria.
Tabelas internas so definidas quando voc inicia o programa e os
dados so preenchidos e modificados enquanto voc esta executando o
programa. A definio de dados e o contedo existem apenas durante o
tempo de execuo do programa. Voc perde o contedo da tabela uma
vez que o programa termina.
Tabelas internas podem conter elementos, colunas e campos derivados
de diferentes tabelas do banco de dados assim como, pode definir uma
tabela interna baseada em variveis locais ou estruturas definidas no
seu programa. Voc tambm pode incluir vrios campos de varias
tabelas de banco de dados em sua tabela interna, se assim desejar. Por
exemplo, se voc quiser mostrar o contedo destas tabelas nos
relatrios.
Uma tabela interna tem um corpo e o corpo desta tabela contem
registros de dados estruturados idnticos. Registros de dados

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.

Figura 7.1 Elementos individuais de uma tabela interna.


A estrutura 7.1 mostra a definio de uma tabela interna em um programa ABAP. O
trecho de cdigo refere-se ao tipo de dados do dicionrio ABAP usado na tabela de
voo APFLI para definir o tipo de dado da estrutura (line_type). O tipo de dado local
usado para definir um objeto de dados da tabela interna. O objeto de dados da tabela
interna e a workarea so definidas usando a instruo DATA.
TYPES: BEGIN OF line_type,
airline_code
TYPE s_carr_id,
connection_no TYPE s_conn_id,
from_city
TYPE s_from_cit,
to_city
TYPE s_to_city,
END OF line_type
DATA: itab TYPE STANDARD TABLE OF line_type.
DATA: wa TYPE line_type.
Estrutura 7.1 definio de uma tabela interna no programa ABAP.

O tipo de dado de uma tabela interna e definido pelos seguintes atributos:

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:

Tabelas Padro (standard tables)


Com tabela padro, a numerao da linha (ndice) mantida
internamente, e ele pode ser acessado com a chave ou ndice. Este tipo
de tabela no pode ter chave nica e, portanto pode ter entradas
duplicadas. O tempo de resposta da tabela padro melhor, se
acessado com o ndice. Chave de acesso para a tabela padro no
otimizada, pois a busca sequencial realizada em todas as linhas.
Uma tabela padro declarada usando a adio de STANDARD TABLE.
A indexao da tabela gerenciada internamente. Quando um registro
excludo ou inserido a indexao reorganizada. Voc pode adicionar
novos registros a uma tabela padro usando a instruo APPEND.
Tabelas Ordenadas (Sorted tables)
Tabelas ordenadas so definidas usando a adio de SORTED TABLE.
Registros da tabela so armazenados ordenadamente de acordo com
as chaves da tabela, e a tabela ordenada em ordem crescente por
padro. O ndice da tabela interna ordenada mantido internamente.

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.

Figura 7.2 Definio do tipo de linha na tabela do dicionrio ABAP

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.

Figura 7.3 Definio do acesso tabela em categoria de tabelas no dicionrio ABAP


Voc pode ter os seguintes 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.

Voc pode especificar a chave da tabela e definir o tipo de chave para a


categoria de tabela:

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.

Figura 7.4 exibe as varias opes para a definio de chave da tabela.

Figura 7.4 definio de chave para a tabela na categoria de tabelas do dicionrio


ABAP.
Voc pode definir uma tabela interna local se voc no usar uma categoria de
tabela definida no dicionrio de dados ABAP ou se o que foi definido no dicionrio
ABAP no o satisfazer no seu desenvolvimento. Voc pode usar as instrues TYPE e
DATA para declarar uma tabela interna. O tipo de linha para a tabela interna definida
usando a instruo TYPES e o objeto da tabela interna definido usando a instruo
DATA.
Estrutura 7.2, 7.3 e a 7.4 mostram a sintaxe para definir uma tabela interna no
programa. O exemplo usa tipos de dados do dicionrio ABAP tal como matnr e werks
para definir o tipo de linha para a estrutura da tabela interna. A primeira instruo na
estrutura 7.4 usa o tipo da tabela itab_type definida no programa para definir a tabela
interna itab_lt e na segunda instruo a tabela interna definida com referencia para o
tipo de linha definida no programa.
TYPES: BEGIN OF mat_type,
material TYPE matnr,
plant
TYPE werks_d,
qty
TYPE P DECIMALS 2.
END OF mat_type.
Estrutura 7.2 Definio do tipo de linha para tabela interna.
TYPE: itab_type TYPE STANDARD TABLE OF mat_type
WITH NON UNIQUE KEY material.
Estrutura 7.3 Definio da tabela interna padro com referencia ao tipo de
linha definido acima.

131
DATA:
ou

itab_lt

TYPE itab_type.

DATA: itab_lt TYPE STANDARD TABLE OF mat_type.


Estrutura 7.4 Definio da tabela interna padro com referencia para a tabela
local definida acima.
O tipo de linha pode ser um tipo de declarao local ou um tipo global do
dicionrio ABAP, como uma estrutura, uma tabela do banco de dados ou o elemento
de dados. Tipos locais so definidos no programa ABAP e a declarao valida para
esse programa especifico. Para o tipo local, a estrutura da tabela definida usando a
instruo TYPES. Em uma definio de tipo local, voc pode definir um componente
individual da estrutura do registro da tabela ou incluir a estrutura do dicionrio ABAP
juntamente com a sua declarao de campo. Uma estrutura do dicionrio ABAP
includa na definio de tipo usando a instruo INCLUDE.
A estrutura 7.5 exibe a sintaxe para declarar um tipo de linha da tabela interna
usando a estrutura do dicionrio ABAP.
TYPES: BEGIN OF mat_ty.
INCLUDE STRUCTURE mara.
TYPES: END OF mat_ty.
Estrutura 7.5 Definies de tipos de linhas com referencia para estrutura do
dicionrio ABAP
Um tipo de linha da tabela interna pode ter uma estrutura flat, estrutura
profunda ou estrutura aninhada. Voc deve definir uma workarea separada para
trabalhar com a tabela interna. A estrutura 7.6 exibe a sintaxe para definir uma tabela
interna com referencia a tabela do dicionrio ABAP. O tipo de linha da tabela interna
neste exemplo corresponde estrutura MARA, onde MARA uma tabela do dicionrio
ABAP.
DATA:
DATA:

itab_lt

TYPE STANDARD TABLE OF mara


WITH NON UNIQUE KEY matnr.
itab_wa LIKE LINE OF itab_lt.

Estrutura 7.6 Definio da tabela interna com referencia a tabela do dicionrio


ABAP.
DICA: o tipo de linha para uma tabela interna com header line deve ser uma estrutura flat,
enquanto que os tipos de linha para uma tabela interna sem uma header line pode ser uma
estrutura flat, profunda ou aninhada.

A adio STANDARD opcional para a declarao de uma tabela padro. Se


voc no fornece o tipo da tabela, o tipo padro para a tabela uma tabela interna
padro. Para uma tabela padro, se voc no especificar uma chave, o sistema adota

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 SORTED TABLE OF marc


WITH UNIQUE KEY matnr werks.
Estrutura 7.9 define tabela interna.
Finalmente, a estrutura 7.10 mostra a sintaxe para definir uma tabela interna
hash. Um atributo de chave nica requerido para a tabela hash e deve ser
especificada durante a definio da tabela. A tabela ordenada pode ter uma chave
nica ou uma chave no nica; os dados so inseridos em uma ordem ordenada na
tabela ordenada de acordo com a sua chave.
DATA: itab02_lt
ou
DATA: itab02_lt
DATA: itab03

TYPE itab02.
TYPE HASHED TABLE OF line_type
WITH UNIQUE KEY material plant.
TYPE HASHED TABLE OF mark
WITH UNIQUE KEY matnr werks.

Estrutura 7.10 Objeto de dados da tabela interna hash.

Tabela Interna Com Header Line


Voc poderia declarar uma tabela interna com header line usando a instruo
DATA com a adio de OCCURS seguido pela declarao de uma estrutura plana.
Programao orientada a objeto no suporta tabelas internas com header line, assim
voc no deve utilizar esta sintaxe com programao orientada a objeto. Tambm o
tipo de linha para a tabela interna com header line suporta apenas uma estrutura flat.
O tipo de linha para uma tabela interna com uma header line no pode ser uma
estrutura aninhada ou profunda.
Estrutura 7.11 mostra um cdigo de exemplo para uma definio de tabela
interna com header line.
DATA: BEGIN OF itab_lt OCCURS 0,
material LIKE mard-matnr,
plant
LIKE mard-werks,
mat_desc LIKE makt-maktx,
stock
LIKE mard-labst,
END OF itab_lt.
OU
DATA: BEGIN OF itab_lt OCCURS 0,
material LIKE matnr,
plant
LIKE werks_d,

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.

USANDO A TABELA INTERNA ABAP

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.

Acrescentando Linhas Resumidas Em Uma Tabela Interna


A instruo COLLECT tambm pode ser usada para inserir linhas em uma
tabela interna. A instruo COLLECT funciona apenas com tabela interna que tenha a
estrutura flat e usado para somar, ou adicionar, o campo da tabela numrica. Para
uma tabela interna padro a instruo COLLECT soma os valores dos campos
numricos se uma linha com os valores chaves j existir; caso contrario, ele
acrescenta a linha para o fim da tabela interna. Similarmente ocorre para as tabelas
ordenadas e hash, a instruo COLLECT soma os valores dos campos numricos se a
linha com a soma dos valores chaves j existir; caso contrario, ele insere a linha para
a tabela interna. O campo do sistema sy-tabix contm o ndice para a linha inserida ou
modificada na instruo COLLECT.
A estrutura 7.14 mostra a sintaxe e uso para a instruo COLLECT o cdigo de
exemplo usa a instruo COLLECT para preencher uma tabela interna. COLLECT
soma o valor numrico se a linha j existe na tabela interna. Neste caso ele ira somar
a quantidade se os registros da tabela de materiais j existem.
TYPES: BEGIN OF line
matnr TYPE matnr,
qty1 TYPE i,
END OF line.
DATA: itab_wa TYPE line.
DATA: itab01 TYPE STANDARD TABLE OF TYPE line.
Itab_wa-matnr = M1.
Itab_wa-qty1 = 10.
COLLECT itab_wa INTO itab01.
WRITE: /Index of inserted/modified line:
WRITE sy-tabix.

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.

Para tabela interna ordenada a busca sempre binaria, e a adio


BINARY SEARCH no tem efeito.
Para tabela interna hash o algoritmo de hash usado para pesquisar se
a chave especificada a chave da tabela interna. Caso contrario, a
pesquisa sequencial. A adio de BINARY SEARCH no permitida
para tabela interna hash.

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:

A adio do BINARY SEARCH no tem nenhum efeito sobre a instruo


READ para tabelas internas ordenadas.
A adio de BINARY SEARCH no permitida com a instruo READ
para tabelas internas hash.

As outras variantes para a instruo READ so:


READ TABLE itab02 FROM wa ASSIGNING <fs>
E
READ TABLE itab02 WITH TABLE KEY
kunnr = 12345 pstlz = 95118.
Para a primeira variante a workarea deve ser um objeto de dados que
compatvel com o tipo de linha para a tabela interna. A pesquisa realizada com base
no contedo da rea de trabalho wa. O resultado da instruo READ TABLE, para o
qual os valores nas colunas da tabela coincidem com os valores dos componentes
correspondentes da workarea, atribudo para o Field Symbol.
Para a variante da segunda instruo READ voc tem que especificar a chave
completa da tabela para ler a linha da tabela interna. Se voc no pode fornecer a
chave completa, ento voc deve usar WITH KEY e no WITH TABLE KEY. Tabelas
padro so lidas usando uma pesquisa sequencial, tabelas internas ordenadas so
pesquisadas usando pesquisa binaria, e para tabelas internas hash o algoritmo de
hash usado para pesquisar linha da tabela.

Processando Mltiplas Linhas Para Uma Tabela Interna

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:

A tabela interna deve ser ordenada na sequencia do componente do


tipo de linha.
A tabela interna no pode ser modificada na instruo LOOP.
A seleo condicional das linhas da tabela interna no deve ser
especificada para a instruo LOOP; isto , voc no pode usar a
adio WHERE para a instruo LOOP.

Modificando Linhas De Tabelas Internas


Voc usa a instruo MODIFY para alterar o contedo das linhas da tabela
interna. Voc tambm pode modificar a linha de tabela interna, modificando o Field
symbol <fs> ou varivel de referencia <dref>, que esta ligada a linha da tabela interna
com o resultado da instruo READ.
A sintaxe para modificar a tabela interna usando a instruo MODIFY :
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.
MODIFY TABLE itab FROM wa.
MODIFY TABLE itab FROM wa TRASNPORTING fld1 fld2.

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.

Esvaziando a Tabela Interna


Dependendo da definio da tabela, voc pode esvaziar a tabela interna
usando a instruo CLEAR ou REFRESH. Voc pode limpar a tabela interna com
header line com a seguinte instruo:
CLEAR itab[].
Ou
REFRESH itab.
A instruo CLEAR e REFRESH acima exclui apenas linhas no corpo da tabela,
mas voc pode usar a seguinte sintaxe para limpar a header line e o corpo da tabela
interna:
CLEAR: itab, itab[].
Ou
CLEAR: itab.
REFRESH: itab.
A instruo com colchetes itab[] ou REFRESH itab excluem ou inicializam as
linhas do corpo da tabela interna, enquanto a instruo CLEAR limpa a header line.
Voc pode usar a instruo CLEAR para excluir ou inicializar as linhas do corpo
da tabela interna sem header line. A instruo a seguir exclui ou inicializa as linhas da
tabela interna com header line.
CLEAR itab.
A instruo FREE funciona como a instruo REFRESH, mas, alm disso, ela
libera rea de memoria da tabela interna. Com a instruo FREE o corpo da tabela
excludo e a rea de memoria reservada para a tabela interna liberada. A sintaxe
para a instruo FREE esta abaixo:
FREE itab.

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.

As instrues APPEND e INSERT so usadas para preencher uma


tabela interna.
Voc usa a instruo READ TABLE para ler registros individuais para
uma tabela interna. Voc tambm pode usar a adio INDEX ou KEY
com a instruo READ TABLE para ler registros individuais da tabela
interna.
A instruo LOOP usada para processar linhas individuais da tabela
interna. Esta instruo percorre a tabela interna e coloca os registros
individuais da tabela na workarea da tabela interna.
A instruo MODIFY usada para modificar registros existentes na
tabela interna. Se o comando MODIFY usado em uma instruo de
LOOP para modificar a tabela interna, a linha atual da tabela interna
alterada.
A instruo DELETE usada para excluir um registro de uma tabela
interna. Voc tambm pode usar a instruo DELETE com a adio
WITH TABLE KEY para excluir os registros da tabela interna para a
chave especificada na instruo DELETE.
A instruo SORT usada para ordenar a tabela interna.

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

Quantos tipos de tabelas internas so suportados na linguagem ABAP.


A2
B3
C1

Quais das seguintes instrues so verdadeiras? Pode haver mais de uma


instruo verdadeira.
A tabelas padres podem ser acessadas pelo ndice.
B tabelas padres no podem ser acessadas pelo ndice.
C uma tabela ordenada sempre acessada por uma chave nica.
D tabelas hash so sempre acessadas por ndice.

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

Um tipo de linha da tabela interna com estrutura profunda ou aninhada pode


ser definida para uma tabela interna com header line.
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

A trs tipos de tabelas internas: tabela padro, tabela


ordenada, e tabela hash.
Tabela interna padro
Tabelas padro pode ter uma chave nica ou no nica e
podem ser acessadas com a chave ou um ndice. Elas
podem ser preenchidas com a instruo APPEND ou
INSERT, ou voc pode usar a instruo SELECT para
preench-los a partir do banco de dados (veja capitulo 9,
programa bsico ABAP e criao de interface)
Tabela interna ordenada Tabelas ordenadas pode ter uma chave nica ou no
nica. Os registros da tabela so armazenados
ordenadamente, e por padro so ordenados em ordem
crescente. Preenche a tabela interna ordenada com a
instruo INSERT.
Tabela interna hash
Tabela interna hash deve ter uma chave nica que voc
deve usar para acessar o registro da tabela. Um algoritmo
de hash usado para ler a tabela interna hash.
Tabela 7.2 conceitos chaves lembre-se.

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.

8 - Instrues SQL Incluindo Estratgias De


Atualizao.
Tcnicas que voc dominar:

Entender o propsito e os benefcios de usar um modelo de dados no


desenvolvimento de uma aplicao.
Acessar colunas e linhas especficas em uma tabela especfica ou mais tabelas
de banco de dados.
Explicar os termos LUW de banco de dados e SAP LUW e a diferena entre
eles.
Pacote de mudanas para tabelas de banco de dados na arquitetura clienteservidor de um sistema SAP.
Entender o papel dos objetos de bloqueio e como definir e liberar bloqueios
SAP.
Realizar modificaes no banco de dados usando vrias tcnicas de
atualizao.

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.

Cenrio Do Mundo Real

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.

Objetivos Dessa Parte Do Teste


O propsito dessa parte do exame de certificao verificar se voc tem
conhecimento detalhado de como recuperar dados de um banco de dados e de como
fazer mudanas em tabelas de banco de dados de uma maneira com a qual os dados
mantenham-se consistentes enquanto permite que o usurio continue trabalhando o
mais eficientemente possvel.

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:

Tcnicas de seleo de dados de um banco de dados.


Estratgias de atualizao para o banco de dados.
Empacotamento de alteraes para o banco de dados.

Reviso Dos Conceitos Chaves


Tipicamente, voc precisa acessar e modificar dados em um banco de dados.
Como uma consequncia, voc precisa entender e ser capaz de executar os seguintes
tipos de tarefas quando desenvolver programas ABAP, ento voc deve ser capaz de
executar as seguintes funes ou processos:

Projetar tabelas para uso eficiente.


Ler dados de uma ou mais tabelas de banco de dados.
Criar e usar objetos de bloqueio.
Selecionar o mais apropriado tipo de atualizao.
Descrever uma unidade logica de trabalho (LUW) tanto da perspectiva de
um banco de dados como de uma aplicao.

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.

Nota: SAP usa o modelo de chamado de voo em todo o material de treinamento,


documentao online, e documentao de palavra chave ABAP. Ns usamos o mesmo
modelo durante nossa explicao nessa seo porque ele bem conhecido e fcil de
entender tanto na perspectiva do negcio quanto na do usurio.

Imagine um exemplo simples do modelo de voo: Se clientes de uma agencia de


viagem quer viajar de um lugar a outro, eles pedem para que a agncia procure:

Quais conexes oferecem o voo mais direto?

155

No dia da viagem quais voos fornecem tempo de viagem aceitvel?


Dependendo das necessidades individuais, qual o voo mais barato, a
conexo mais rpida, ou a conexo com um determinado horrio de chegada?

Essa perspectiva difere daquela da agncia de viagem. Os dados so


armazenados de acordo com critrios tcnicos em um banco de dados central em um
modelo de dados que gerencia esses dados requisitados. A quantidade de dados
armazenados excede a requisio de um cliente especfico. A agncia de viagem
precisa ser capaz de acessar os dados para encontrar as requisies individuais do
cliente usando programas de aplicao.
O modelo de dados de voos contem entidades para todas as informaes de
negcio que esto logicamente conectadas, como cidades, aeroportos, companhias
areas, rotas de voo, voo e etc.
Todas essas entidades esto relacionadas umas com as outras de certas
maneiras:
Cada horrio de voo contem exatamente uma companhia area, um aeroporto
de partida e um aeroporto de chegada.
Cada voo reservado sempre pertence a exatamente um horrio de voo.
Voc gerencia os dados, sem redundncia, usando esses relacionamentos. A
agncia de viagem pode fornecer qualquer dado requisitado pelo cliente.
Para cada entidade no modelo de dados, o desenvolvedor cria uma tabela
transparente no dicionrio ABAP. O dicionrio ABAP uma descrio da tabela do
banco de dados independente de plataforma, na verdade no a tabela de banco de
dados em si. Entretanto, quando uma tabela transparente ativada no dicionrio
ABAP, a tabela de mesmo nome automaticamente criada no banco de dados.
Uma tabela transparente contem campos que te permite armazenar registros
de dados de um jeito estruturado. Voc declara alguns dos campos da tabela como
campos chave quando eles devem ser usados para identificao nica do registro de
dados dentro da tabela do banco de dados. O campo, ou campos, usado como
identificao nica tambm so chamados de chave primria. Voc no pode ter
registro de dados na mesma tabela com a mesma chave primria; cada registro deve
ter uma chave primria nica.
Dentro do dicionrio ABAP, uma tabela transparente uma descrio
implementada da tabela de banco de dados correspondente que contem dados da
aplicao atual. Os campos da tabela transparente formam as colunas de mesmo
nome na tabela de banco de dados correspondente. Elementos de dados so
normalmente usados para descrever campos individuais. Os elementos de dados
definem as palavras chave e cabealhos e se referem aos domnios por suas
propriedades tcnicas, tambm fornecem a ligao entre o objeto de dados e o
domnio.
No dicionrio ABAP, uma tabela transparente a descrio de uma tabela de
banco de dados correspondente que contem os dados atuais. Os campos da tabela
transparente no dicionrio ABAP correspondem com a coluna de mesmo nome da

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

A definio de uma tabela transparente parece ser bem similar definio de


um tipo de estrutura global. Tabelas transparentes podem ser usadas em programas
do mesmo jeito que tipos de estruturas. Por exemplo, eles podem ser usados para
definir um objeto de dados estruturado ou uma estrutura varivel, para formatar um
parmetro de interface, ou como um tipo de linha de um tipo de tabela local ou global.
Quando usado desse jeito somente a lista de campos importante. As outras
propriedades da tabela transparente so irrelevantes quando us-la como um tipo de
dado.
Outra diferena entre usar uma tabela transparente e um tipo de estrutura
que uma tabela transparente somente contm uma lista de campos elementares, mas
os componentes de um tipo de estrutura pode se estruturar novamente, produzindo
estruturas encadeadas. Um componente de uma estrutura pode tambm ser
formatado com um tipo de tabela, produzindo uma estrutura profunda.

Dica: Em verses antigas de cdigo (anterior verso 4.0), tabelas transparentes e


tipos de estrutura eram frequentemente usados como tipos de dados. Recomenda-se
atualmente que eles somente sejam usados diretamente em conexes com o banco
de dados. No recomendo que tabelas transparentes sejam usadas na definio de
interfaces de usurio.
O problema est na dependncia indesejada entre a definio de objetos de
dados ou interfaces e interfaces de usurio.

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:

Banco de dados lgicos.


Mdulos de funo.
BAPIs.
Mtodos de classes globais.

Se nenhum componente de reuso estiver disponvel ou til para uma seleo


de dados, voc mesmo precisar implementar a leitura de dados. recomendado que
voc encapsule o acesso em um componente de reuso, que , criar uma mdulo de
funo ou mtodo com uma classe global.
Voc usa a instruo SELECT do Open SQL para ler registros de um banco de
dados. A instruo SELECT contm uma srie de clusulas, cada qual com uma tarefa
diferente (um exemplo de uma clusula mostrado na lista 8.1):
A instruo SELECT define quais campos ou colunas de uma tabela de banco
de dados voc quer buscar.
A instruo FROM identifica a fonte, tambm a tabela de banco de dados ou
view, das quais os dados so selecionados.
A instruo INTO determina o alvo no qual os dados selecionados so
colocados.
A instruo WHERE especifica a condio que identifica qual registro ou
registros sero buscados.

158

SELECT fldate planetype seatsocc seatsmax


FROM sflight
INTO (fldate,planetype,seatsocc,seatsmax)
WHERE carrid = flight-carrid
AND connid = flight-connid.
ENDSELECT.
Lista 8.1 Exemplo de SELECT
A instruo SELECT um loop (lao de repetio). Porm, h duas variaes
que no se comportam como laos: o SELECT SINGLE e um array fetch (usando a
adio INTO TABLE ou APPENDING TABLE).
Voc usa a primeira variao, a instruo SELECT SINGLE, para ler um nico
registro. O uso correto requer que voc fornea um acesso nico ao registro; acesso
nico requer que voc especifique todos os campos chave na clusula WHERE. A
exceo nisso o campo cliente, que voc normalmente no especifica por que o
banco de dados interpreta automaticamente seu cliente corrente.
Cuidado: importante lembrar que voc no pode especificar um cliente em uma
clusula WHERE a menos que voc fornea a clusula CLIENT SPECIFIED.
Voc especifica a lista de campos com um asterisco (*) para indicar que todos os
campos da linha da tabela devem ser lidos. Se voc quer somente uma coluna
especfica, voc lista o campo especfico na lista de campos. Voc usa a clusula
INTO para identificar o objeto de dados alvo onde os dados lidos so colocados. O
objeto de dados que voc especifica na clusula INTO deve ter a mesma estrutura da
lista de campos. Como uma alternativa para especificar um nico objeto de dados
como alvo, voc tambm pode especificar uma lista de campos alvo com a clusula
INTO.

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.

Dica: Com selees a partir de tabelas de banco de dado de um cliente especifico, o


cliente sempre transmitido para o banco de dados. Por isso faz sentido incluir o
campo cliente como o primeiro campo quando voc define um ndice para essas
tabelas.

Com a recuperao dos dados, a maior parte do tempo de execuo


necessria para transferir os dados do servidor de banco de dados para o servidor de
aplicao. Se os dados so lidos frequentemente e raramente mudam, voc pode
reduzir o tempo de tempo de execuo armazenando os dados em buffer no servidor
de aplicao. A deciso de armazenar os dados em buffer deve ser tomada
separadamente para cada tabela do banco de dados. Devido limitao do tamanho
do espao do buffer disponvel no servidor de aplicao, a tabela de banco de dados
ideal pequena, lida frequentemente, raramente modificada, e normalmente acessada
diretamente com seus campos chaves. As configuraes do buffer so definidas nas
tabelas transparentes no dicionrio ABAP com o uso do boto TECHNICAL
SETTINGS (configuraes tcnicas).
Cuidado: A deciso de armazenar em buffer uma tabela de banco de dados no
simples e deve ser feito por um desenvolvedor ABAP experiente em consulta com o
administrador do sistema. Cada servidor de aplicao contm seu prprio buffer de
tabela SAP. Se um sistema composto de vrios servidores de aplicao, um
mecanismo de sincronizao especial garante que modificaes no banco de dados
iro invalidar o correspondente contedo do buffer. Entretanto, isso significa que
atrasos de tempo na sincronizao de processos iro, por um perodo pequeno de
tempo, permitir que o buffer esteja desatualizado ou que dados invlidos possam ser
lidos do buffer. Voc deve levar isso em conta quando tomar uma deciso em relao
ao uso de buffer.

Se um programa ABAP solicita dados de uma tabela em buffer, a interface de


banco de dados primeiro tenta buscar dados do buffer de tabela SAP. Se h sucesso,
isso acelera o acesso entre 10 e 100 vezes em contraste com o fato de uma busca no
banco de dados.

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.

Cuidado: Comandos Open SQL no executam nenhuma verificao de autorizao


automaticamente. Voc deve executar isso explicitamente no programa.

Se uma instruo Open SQL que executa mudanas no banco de dados


retorna um cdigo de retorno diferente de zero, voc deve se certificar que o banco de
dados volta ao seu estado consistente original antes de voc tentar fazer outra
alterao no banco de dados. Para realizar isso voc executa um rollback do banco de
dados que reverte todas as mudanas no LUW do banco de dados atual.
H dois jeitos de realizar o rollback do banco de dados:
Enviando uma mensagem de dilogo de trmino (uma mensagem com o tipo A
[tipo de trmino]).
Usando a instruo ABAP ROLLBACK WORK.

O envio de uma mensagem do tipo A causa um rollback no banco de dados e o


encerramento do programa. Todas os outros tipos de mensagem (E[ tipo erro], W[tipo
alerta], e I[tipo informao]) tambm envolvem uma caixa de dilogo, mas no
disparam um rollback do banco de dados.
A instruo ABAP ROLLBACK WORK provoca o rollback do banco de dados,
mas no encerra o programa.
Unidade Lgica De Trabalho (LUW Logical Unit Of Work)
Uma unidade lgica de trabalho SAP um grupo de mudanas que pertencem
a um conjunto no sistema SAP num ponto de vista lgico. Todas as mudanas devem
ser feitas juntas ou nenhuma delas feita.
Em geral voc normalmente no achar uma transao de negcio processada
por uma nica unidade lgica de trabalho SAP (traduo livre). O processo todo
separado individualmente, em partes lgicas. Cada uma dessas partes correspondem
a uma LUW SAP. A definio de LUW SAP depende de todo o processo e sua
modelagem.
Uma LUW de banco de dados composta de mudanas que so executadas
at que o status do banco de dados selado (sealed), tambm conhecido como os
dados a serem enviados para o banco de dados (mostrado na figura 8.1). No LUW de
banco de dados, possvel descartar todas as mudanas que ocorreram at aquele

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.

Figura 8.1 SAP LUW em um banco de dados LUW.


Quando voc usa a instruo ABAP ROLLBACK WORK e COMMIT WORK,
voc explicitamente implementa o Rollback ou o Commit do banco de dados. H
tambm casos em que uma Commit do banco de dados disparado implicitamente.
Commit de banco de dados implcitos so sempre iniciados sempre que o programa
tem que esperar (como parte da liberao do processo de trabalho), como nos casos
abaixo:
Quando o sistema envia uma tela SAP para a camada de apresentao.
Quando o sistema envia uma mensagem em uma caixa de dilogo para a
camada de apresentao.
Sempre que houver uma chamada RFC sncrona ou assncrona (Chamada de
funo remota - RFC).
Instrues CALL TRANSACTION <tcode> ou SUBMIT <program>.
Se voc encontrar um erro durante o processamento de uma Unidade Lgica
de Trabalho SAP (SAP LUW), deveria ser possvel voltar a um status consistente do
banco de dados que existiu antes do comeo do SAP LUW. Para isso ser possvel, a
Unidade Lgica de Trabalho deve ser colocada em uma LUW de banco de dados.

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.

O parmetro _SCOPE define a validade de rea de bloqueio. O


valor e seus significados so mostrados na tabela 8.1.
Valor
1
2

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.

O parmetro _WAIT define se um pedido de bloqueio deve ser repetido se a


primeira tentativa falhar.
Voc usa o parmetro _COLLECT para armazenar o pedido de bloqueio em
um container de bloqueio local at que o continer seja coletado e passado
com uma unidade para o servidor de enfileiramento.
Solicitar qualquer bloqueio atravs de um programa um passo da
comunicao com a administrao de bloqueio. Se voc definir um bloqueio a vrios
objetos, essa comunicao ocorre para cara bloqueio. Se voc usar o continer local
de bloqueio, voc pode reduzir o esforo tcnico para esse passo. Voc define o
parmetro _COLLECT = X sempre que voc chamar o mdulo de bloqueio. Isso
coleta o pedido de bloqueio no continer bloqueio local para processar junto. Voc
envia o contedo do continer de bloqueio com o mdulo de funo
FLUSH_ENQUEUE.
Se voc capaz de obter todos os pedidos de bloqueio com sucesso, o
sistema apaga todo o contedo do continer de bloqueio local. Se um dos bloqueios
no continer no tem sucesso e no pode ser definido, o mdulo de funo dispara a
exceo FOREIGN_LOCK. Quando isso acontece, nenhum dos bloqueios registrados
no continer definido, e o contedo do continer permanecer intacto para mais
tentativas de envio. Se voc precisar apagar o contedo do continer de bloqueio
local, voc chama o mdulo de funo RESET_ENQUEUE.
Tabela 8.2 mostra o efeito do parmetro MODE_<nome da tabela>.

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.

A nica diferena entre os modos E e X que o modo E permite a acumulao


dos bloqueios e o X no permite. Voc implementa o modo S se voc deseja garantir
que os dados exibidos no programa no podem ser modificados por outros usurios
enquanto eles so exibidos. Esse um caso onde voc no est tentando modificar os
dados, mas no quer que ningum mais modifique os dados enquanto voc os est
usando.
Bloqueios exclusivos existentes (E ou X) sempre rejeitam toda tentativa de
bloqueio de outro usurio, independentemente do modo usado pelo outro usurio. Um
bloqueio compartilhado (S) existente permite que outros bloqueios compartilhados
para exibio protegida.
Cuidado: Se voc quiser garantir que est usando dados atualizados no seu
programa com a inteno de modificar dados e ento salv-los para o banco de
dados, voc deve executar os seguintes passos nessa ordem (mais a frente a figura
8.3 mostra esses quatros pontos com seus nmeros correspondentes):
Definir bloqueios para os dados serem processados.
Se o bloqueio definido com sucesso, ler os dados correntes da tabela do
banco de dados.
Modificar os dados do programa e atualizar as modificaes no banco de
dados.
Liberar os bloqueios definidos por voc.
Essa ordem garante que voc somente l os dados que foram modificados
consistentemente por outros programas e que suas mudanas rodam completamente
sob a proteo dos bloqueios. Isso assume que todos os programas de aplicao
usam o conceito de bloqueio SAP e aderem a sequencia de passos dados.
Se voc no aderir sequncia, h o risco que o programa ler dados do
banco de dados que esto bloqueados no momento por outro programa. Nesse caso,
mesmo se o bloqueio for definido com sucesso depois da leitura, os dados lidos pelo
programa e mostrados j esto desatualizados.
Estrutura 8.3 mostra a chamada de um objeto de bloqueio com o parmetro
MODE_<nome da tabela>, parmetro _SCOPE, e parmetro _WAIT especificado.
Voc deveria notar que os parmetros tem o nome x_name. Esse parmetro, se

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.

CALL FUNCTION ENQUEUE_ESRDIRE


EXPORTING
Mode_trdir = l_enq_mode
Name = incl2
X_name =
_scope = 2
_wait =
EXCEPTION
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.
Lista 8.3 Chamado de um objeto de bloqueio.

Atualizaes Diretas (Inline Updates)


Se sua transao faz atualizaes de banco de dados atravs de seu programa
de tela (inline updates), voc deve empacotar todas as alteraes de banco de dados
em um nico passo de tela, normalmente o ltimo. Isso o nico jeito para garantir
que todas as suas alteraes de banco de dados sejam processadas em uma nica.
Para completar isso em seu programa de tela, as mudanas so armazenadas nos
dados globais do programa at o ponto onde as mudanas so feitas no banco de
dados.
Se voc atualizar o banco de dados diretamente de um programa, voc deve
definir e liberar os bloqueios SAP. Usar os passos no quadro Cuidado anterior e
mostrar como a seguir na figura 8.3 para garantir o acesso a dados consistentes.

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.

Figura 8.3 Fluxo do processo de atualizao.


A mesma chave de atualizao usada para armazenar todas as flags de
atualizao para uma LUW SAP. Quando o sistema executa uma instruo COMMIT
WORK, isso cria uma entrada de cabealho para uma requisio de entrada, e ento a
unidade fechada. O cabealho de log contm informao sobre o programa de tela
que escreveu as entradas de log e os mdulos de atualizao a ser executado. Uma
vez que o cabealho de log criado, o sistema informa o processo mensageiro que
um pacote de atualizao est disponvel para processamento.
Voc pode descartar todas as requisies de modificao que foram escritas
para a LUW SAP corrente. Para descartar a LUW SAP corrente durante a fase de
criao, que acontece antes que o Commit ocorra, como voc faz com uma
atualizao direta, voc usa a instruo ABAP ROLLBACK WORK, ou produz uma
mensagem do tipo A.

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.

A figura 8.4 mostra os atributos do mdulo de funo chamado. Note as trs


primeiras opes abaixo do boto de rdio do Mdulo de Atualizao. As duas
primeiras, que causam um incio imediato do mdulo de atualizao, fazem o mdulo
de atualizao executar como um V1 (um atualizao primria ou crtica de tempo),
enquanto que o terceiro faz com que o mdulo de atualizao execute com V2 (uma
atualizao secundria ou no crtica de tempo).

173

Figura 8.4 Atributos de um Mdulo de Atualizao.


A estrutura 8.5 mostra o comeo do cdigo de um mdulo de atualizao. Note
que quando uma condio de erro encontrada, uma mensagem do tipo A usado
para abortar o processo, registra-se a causa do erro, e aborta-se a atualizao. Voc
no pode usar uma instruo explicita ABAP CAOMMIT WORK ou ROLLBACK WORK
em um mdulo de atualizao.
CALL FUNCTION wfrules_write_document
CALL FUNCTION 'CHANGEDOCUMENT_OPEN'
EXPORTING
objectclass = WFRULES
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.
ENDCASE.
Lista 8.5 Cdigo de um Mdulo de Atualizao.

Se voc bloquear o programa de tela com uma tcnica de atualizao usando


_scope = 2, esses so passados na tarefa de atualizao no COMMIT WORK. Depois
do commit, o bloqueio no mais acessvel pelo programa de tela. Esses bloqueios
so automaticamente liberados pelo programa Basis no fim do processo de

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.

Mdulos de atualizao V2 so usados para modificaes de banco de dados


que esto ligados a uma modificao V1, mas que no so necessrios
conclurem com a modificao principal, por exemplo, a atualizao de
estatsticas.
Mdulo de atualizao podem ser reinicivel ou no reinicivel. Se houver um
erro de atualizao, voc pode manualmente reiniciar as requisies que foram
criadas como mdulo de atualizao reinicivel usando a transao SM13.
Voc pode sempre reiniciar um mdulo de atualizao V2 se houver um erro.

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.

Durante a atualizao, o objetivo executar modificaes em tabelas centrais


(aquelas tabelas que tem o desempenho crtico e so frequentemente acessadas
simultaneamente por vrios usurios) o mais tarde possvel na LUW. Um mtodo para
alcanar isso usar a tcnica PERFORM ON COMMIT com a atualizao. Se voc
encapsular as modificaes nas tabelas centrais como rotinas de dentro do mdulo de
funes usando o PERFORM ON COMMIT, as rotinas ento no so executadas at
que o ltimo mdulo de funo seja processado. Lembre-se que voc deve usar dados
globais nessas rotinas do grupo de funo.

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.

1. Tarefas de atualizao so os nicos mtodos de fazer mudanas no banco de


dados.
A. Verdadeiro
B. Falso
2. Que instrues so verdadeiras?
A. Uma LUW de banco de dados deve ser colocada em uma LUW SAP.
B. Uma LUW SAP deve ser colocada em uma LUW de banco de dados.
3. Que aes liberam um bloqueio de banco de dados?
A.
B.
C.
D.
E.
F.
G.
H.
I.
J.
K.

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.

Quando o FROM uma view


Quando voc especifica uma juno (JOIN) de tabelas
Quando voc faz um SELECT SINGLE
Quando voc especifica into a table
Quando voc especifica uma appendig a table
9. O banco de dados sempre usa uma chave primria quando a clusula WHERE
contm algum dos campos chave.

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

Respostas E Explicao Das Questes

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

9 - Programas Bsicos ABAP E Criao De Interface


Tcnicas Que Voc Ir Dominar:

Desenvolvimento organizado de objetos


Identificar diferentes tipos de programas
Determinar blocos de eventos em programas
Uso de dynpros, selection screens e caixas de dilogo modal
Uso de verificao de autorizao
Explicar os efeitos das mensagens na execuo de programas

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.

Objetivos Dessa Parte Do Teste


O propsito dessa parte do exame de certificao verificar se voc tem
conhecimento detalhado do ambiente de desenvolvimento ABAP e a capacidade de
diferenciar tipos de programas. Esse pedao do exame ir testar seus conhecimentos
de uma gama de tpicos. Os pontos que voc ir precisar para entender sobre esta
sesso incluem:

Quais os tipos de programas existentes


Blocos de eventos
Dynpros, selection screens, caixas de dilogo modal
Diferentes mtodos de execuo de programas
Verificaes de autorizao
Unidades de modularizao
Os efeitos das mensagens em um programa

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:

Criar vrios tipos de programas


Testar vrios tipos de desenvolvimento
Mover objetos desenvolvidos de seu ambiente de desenvolvimento para
seu sistema de teste e produo.
Encapsular dados e process-los
Interagir com os usurios
Verificar que o usurio est autorizado a executar uma funo especfica
Informar usurios sobre erros e status do programa.

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

FIGURA 9.1 Linha do tempo de um projeto de uma Change request.

Organizando um projeto de desenvolvimento usando uma Change Request


oferece as seguintes vantagens:

Cada desenvolvedor pode traar e verificar suas atividades especficas no


projeto.
Os objetos de desenvolvimento podem ser processados por todos os
desenvolvedores envolvidos no projeto. Para desenvolvedores que no
pertencem equipe do projeto, o repositrio de objetos permanece
bloqueado at que o projeto esteja finalizado e a change request seja
lanada.
O transporte conjunto dos objetos de desenvolvimento processados at
este momento da concluso do projeto automaticamente assegurada
atravs da atribuio dos objetos para a change request. A rota de
transporte dos pacotes envolvidos especifica para qual sistema
subsequente ser transportado.

Ao contrrio dos pacotes que distinguem entre objetos de repositrio de uma


maneira lgica e funcional, change requests so relacionadas ao projeto e portanto
delimitaram os objetos sobre um perodo de tempo. Portanto, embora um programa
sempre esteja para apenas um pacote, isto pode, em diferentes tempos, permanecer
em diferentes projetos ou change requests. Isto possvel para uma simples change
request (atualmente isto muito provvel, a menos que a change request contenha
todos os novos desenvolvimentos para um propsito especfico) conter mltiplos
pacotes de desenvolvimento.
Viso Geral Da Programao ABAP
ABAP a linguagem de programao desenvolvida pela SAP para programao
de aplicativos de negcio dentro do ambiente SAP. Como discutido no Captulo 3, SAP
NetWeaver Viso Geral e, Captulo 8 - Declaraes SQL incluindo estratgias de
atualizao, a arquitetura de trs camadas usada pela SAP prov ao usurio interagir
com a camada de apresentao, cuja funo controlar a execuo da lgica de
negcio no servidor de aplicao, este que controla e armazena dados no servidor de
banco de dados. ABAP a linguagem que controla a execuo da lgica de negcio
no servidor de aplicao. Programas ABAP so executados no ambiente runtime

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

Programas executveis (REPORT)


Grupos de mdulo (PROGRAM)
Grupos de funes (FUNCTION-POOL)
Grupos de classe (CLASS-POOL)
Grupos de interface (INTERFACE-POOL)
Grupos de sub-rotina (PROGRAM), que agora so considerados obsoletos
Grupos de tipo (TYPE-POOL)

Todos esses so unidades de compilao individuais ou tipos de programas.


Programas Includes so usados apenas no contexto de programas maiores. Grupos
de tipos, tambm conhecido como pool de tipos (programa tipo T), so programas
individuais do ponto de viso lgico. Contudo, eles no contm cdigos executveis,
mas apenas definies de tipos e definies de constantes. Portanto, grupos de tipos
tm suas prprias declaraes de programas introdutrios, o TYPE-POOL.
Quando voc cria um programa, o ambiente ABAP automaticamente gera a
declarao inicial do tipo do programa. Se for necessrio alter-lo, apenas as
declaraes adicionais da declarao introdutria devem ser editadas. Um exemplo de
um novo relatrio e alguma possvel adio so mostrados na Estrutura 9.1 e na
Estrutura 9.2.
*&-------------------------------------------------------*& Report Z_NEW_REPORT
*&-------------------------------------------------------*&
*&
*&-------------------------------------------------------REPORT z_new_report
Estrutura 9.1 Uma nova declarao introdutria para um Report.
*&-------------------------------------------------------*& Report Z_NEW_REPORT
*&-------------------------------------------------------*&
*&
*&-------------------------------------------------------REPORT z_new_report
LINE-SIZE 250
NO STANDARD PAGE HEADING
MESSAGE-ID z_message_class.
Estrutura 9.2 Uma declarao introdutria de Report modificada
Em particular, as palavras-chave FUNCTION-POOL, CLASS-POOL, INTERFACEPOOL, e TYPE-POOL devem ser apenas geradas pela ferramenta correspondente do

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

Mdulos de funo so sempre definidos globalmente, enquanto que mtodos


podem ser definidos global ou localmente dentro do programa, e sub-rotinas devem
somente ser definidas localmente (grupos de sub-rotina agora so considerados
obsoletos). O fluxo lgico do Dynpro chama o mdulo de dilogo para executar seu
processamento. Blocos de eventos so ativados por eventos no ambiente de
execuo ABAP.
Esta interface de parmetros de um procedimento consiste de parmetros formais
e especifica as excees possveis do procedimento. Os parmetros formais so
parmetros input, output, input/output e valores de retorno. H tambm o parmetro de
tabelas que est obsoleto. Sub-rotinas no possuem parmetros de entrada e sada
diretamente, pois ambos, USING e CHANGING so tratados como um tipo de
parmetros de troca; eles no dispem de valores de retorno. Mdulos de funo no
tm valores de retorno. Parmetros so genricos ou completamente tipados. Voc
pode especificar ou passando por referncia ou passando por valor para a maioria dos
parmetros normais, embora para alguns parmetros normais, passagem por valor
seja obrigatrio.
As diferenas e similaridades so discutidas em detalhes abaixo na sesso Subrotinas ABAP, Mdulos de Funo ABAP e Classes e Mtodos ABAP.
Excees baseadas em classe podem ser declaradas usando RAISING para
todos os procedimentos (mtodos, mdulos de funo e sub-rotinas) e podem ser
propagadas pelo procedimento. Tambm, EXCEPTIONS podem ser usados em
mtodos e mdulos de funo para definir excees baseadas em no classes, que
podem ser ativadas no procedimento usando RAISE ou MESSAGE RAISING.
A Estrutura 9.3 mostra a exceo na maneira antiga que era baseado em
MESSAGE e pode apenas existir em mdulos de funo ou mtodos. A Estrutura 9.4

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:

Um parmetro passado por referncia fornece um ponteiro para o objeto


de dados em memria, e o procedimento opera diretamente no objeto
original.
Uma passagem de parmetro por valor copia o valor para um novo objeto
de dados, ou no caso de alterao de parmetros, copia isso, tambm at
a concluso.

Em ABAP, passagem por referncia sempre mais rpido porque no criado


objeto local e no necessrio transportar dados quando chama o procedimento.
Simplesmente por razes de performance, passagem por referncia, dentro do
procedimento, procura garantir que apenas retornar ou um input/output (changing) ou
parmetros de sada, caso o procedimento termine sem erro. Nesses casos,
passagem por valor obrigatria, de modo que atribuio de parmetros no pode ser
simultaneamente modificada no cdigo de chamada quando h acesso de escrita para
um parmetro formal.
O exemplo a seguir mostra um exemplo muito simples da diferena de
comportamento da chamada por referncia versus chamada por valor. Observe que o
cdigo (mostrado na Estrutura 9.5) fornece quadros variveis nos parmetros formais
da sub-rotina. Duas so passadas por valor e duas por referncia; um desses pares
passado como parmetro USING, e o outro par passado como parmetro
CHANGING. No ponto em que feita a chamada (PERFORM pass_by_example) no
programa, os valores das variveis na rotina chamada so todos zero (ver Figura 9.2).
No ponto da declarao BREAK-POINT (ver Figura 9.3), todos dentre os parmetros
formais tem o valor um. Contudo, se no debugger o ponto de viso trocado para a
rotina chamada, as variveis originais passadas por referncia so alteradas,
enquanto que as variveis passadas por valor no so alteradas (ver Figura 9.4).
FORM pass_by.
DATA:
Lv_num1

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

Figura 9.2 Incio da chamada

Figura 9.3 Declarao de BREAK-POINT

Figura 9.4 Na declarao BREAK-POINT na rotina chamada.


Voc deve notar os seguintes comportamentos quando se usa passagem por
referncia:

Em sub-rotinas, acesso de escrita pode ocorrer para um parmetro de


entrada definido por USING sem a ocorrncia de erros de sintaxe. Este
no o caso com mtodos ou mdulos de funo definidos com
IMPORTING.

192

Um parmetro de sada que passado por referncia age como um


parmetro input/output (changing). Se h um acesso de leitura a um
parmetro de sada no procedimento antes que o valor do parmetro
alterado, este valor no initial, ao contrrio de quando passado por
valor, mas isto o mesmo que o valor atual do parmetro atual do cdigo
chamado.
Se um procedimento parado por causa de um erro, em outras palavras,
parado por entrar na ltima declarao ou em RETURN, todos os
parmetros mantem os valores contidos quando o procedimento parado.

Para resumir, passagem por parmetro sempre prefervel quando performance


a questo, enquanto que passagem por valor mais utilizado em situaes onde
robustez e consistncia de dados so importantes.
Apenas passagem por referncia pode ser especificada no parmetro obsoleto
table em qualquer sub-rotina ou mdulos de funo. Como mencionado acima,
passagem por valor obrigatrio para o valor de retorno do mtodo funcional, os
parmetros de sada dos eventos em objetos ABAP, e todos os parmetros formais
dos mdulos de funo que so RFC ativos ou so mdulos de atualizao.

Bloco de Eventos ABAP


Blocos de eventos so unidades de cdigo que so executados em uma
sequncia determinada por eventos externos: muitas vezes o ambiente de execuo
ABAP, ocasionalmente por ao dos usurios. A sequncia em que os blocos de
processamento ocorrem no programa irrelevante. Contudo, para fazer seus
programas mais entendveis, voc deve incluir o bloco de eventos em seu programa
mais ou menos na mesma ordem onde eles iro ser chamados pelo sistema e
priorizados para as sub-rotinas, ou ento em implementaes de classes locais.
Blocos de eventos so: iniciados usando uma palavra-chave de evento e
finalizado pelo prximo bloco de processamento: outro bloco de evento ou outro tipo
de bloco de procedimento. Dentro do bloco de evento, voc no pode declarar dados
locais ou objeto de dados. Todas as declaraes em um bloco de eventos ficam dentro
do programa ABAP e so globalmente visveis (em todos os blocos de processamento
subsequentes). H duas excees: o bloco de eventos AT SELECTION-SCREEN e
GET so implementados internamente como procedimento e podem conter dados
locais.
Blocos de eventos podem ser agrupados por tipo. A Tabela 9.1 mostra os tipos de
eventos que existem.
Tipo de Evento
Evento construtor do programa
Evento de relatrio
Evento de tela de seleo
Evento de lista

Tipos de programas que ocorrem os


eventos
Todos os tipos de programas
Apenas em programas executveis
Apenas durante o processamento de
telas de seleo
Apenas durante processamento de lista

193

Tabela 9.1 Tipos de eventos


Com a exceo de AT SELECTION-SCREEN e GET, blocos de eventos podem
ser listados diversas vezes em um programa, mas normalmente voc no ir perceber
isto (este caso vlido quando a situao bastante complicada, envolvendo cdigo
compartilhado entre mltiplos programas ou programas include ou quando o cdigo
includo vrias vezes). Blocos de eventos START-OF-SELECTION podem tambm ser
implicitamente listados vrias vezes. Sempre que um evento ocorrer, todos os blocos
de eventos associados so executados na ordem de suas ocorrncias. Novamente, os
blocos de eventos so iniciados por eventos no ambiente executvel ABAP.
Na lista a seguir ns mostraremos os blocos de eventos e quando ou como eles
so iniciados.
LOAD-OF-PROGRAM
Esta palavra-chave de evento ativada quando o programa carregado
inicialmente dentro da memria. Este evento construtor do programa ativado
para todos os tipos de programas. Isto pode ser usado para inicializar ou
instanciar um objeto de dados quando o programa comea apenas uma vez ou
para indicar para qual processo externo o programa foi iniciado. O evento
apenas iniciado uma vez, antes de qualquer outro evento de um programa.
INICIALIZATION
Esta palavra-chave de evento de relatrio ativada no incio atual do
programa e depois do processamento da tela de seleo de qualquer tela de
seleo padro existente (apenas o evento LOAD-OF-PROGRAM pode ser
iniciado antes desse).
Quando um programa executvel define que uma tela de seleo padro
chamada novamente pelo ambiente de execuo ABAP depois da execuo, o
evento INITIALIZATION ativado novamente. Um exemplo disso um relatrio
em que depois de mostrar o relatrio, o usurio clica no boto Voltar ou aperta
F3 e retorna tela de seleo para reiniciar o relatrio. Neste caso, critrios
dos parmetros de seleo da tela de seleo no tem efeito, pois eles so
automaticamente fornecidos com a entrada precedente do usurio pela tela de
seleo durante o evento AT SELECTION-SCREEN OUTPUT da tela de
seleo.
START-OF-SELECTION
Em um programa executvel, todas as instrues que no so declaraes
e so listadas depois do primeiro bloco de processamento explcito ou, se o
programa no contm nenhum bloco de processamento explcito, ento todas
as declaraes funcionais do programa so atribudas a um bloco de eventos
implcito START-OF-SELECTION, que inserido depois de qualquer bloco de
eventos START-OF-SELECTION. Esta palavra-chave de evento ativada
quando o programa completou todos os eventos da tela de seleo.
Se o programa est ligado ao banco de dados lgico, tarefas de
preparao podem ser executadas no START-OF-SELECTION antes do banco
de dados lgicos importarem os dados.
Se o programa no est ligado ao banco de dados lgico, este bloco de
eventos ser um tipo programa principal de que procedimentos ou telas so

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.

Instrues Bsicas ABAP


A sintaxe ABAP independente de plataforma. Isto significa que tem sempre o
mesmo significado ou funo, independente do sistema de banco de dados relacional
e do sistema operacional para a aplicao e servidor de apresentao. Aplicaes
implementadas em ABAP tambm ser capaz de rodar em verses futuras, devido
alta compatibilidade da linguagem. O nico tipo de problema de alta compatibilidade
estaria relacionada mudana de um sistema no-Unicode para um sistema Unicode.
Para mais informaes neste tpico, por favor, veja o Captulo 11, Unicode.
Para sintaxe ABAP, as regras gerais aplicadas:

Programas ABAP consistem de sentenas individuais (instrues).


A primeira palavra em uma instruo chamada de palavra-chave ABAP,
embora a palavra chave possa ser opcional COMPUTE, por exemplo.
Cada instruo termina com um ponto (.).
Palavras so sempre separadas por pelo menos um espao.
Instrues podem ser identadas.
Palavras-chave ABAP, adies e operadores podem ser upper ou
lowercase (o sistema de execuo ABAP no diferencia).
Instrues podem se estender alm de uma linha.
Voc pode colocar vrias instrues em uma linha apenas (embora isto
no seja recomendado).
Linhas que comeam com um asterisco (*) na primeira coluna so
reconhecidas como linhas comentadas e ignoradas.
Aspas duplas () indicam que o restante da linha (a partir das aspas)
comentrio.

Nota
Embora o sistema de execuo ABAP no faa diferenciao entre
upper e lowercase, tornou-se habitual escrever palavras-chave e seus

197

complementos em letra maiscula. Esta forma de representao


tambm usada em todo o livro. Isto pode ser conseguido em seu
programa utilizando o boto Pretty Printer e configurar a opo
apropriada
nas
configuraes
(Utilitrios/Configuraes/Editor
ABAP/Pretty Printer).

Voc pode combinar consecutivas instrues com um incio idntico dentro de


uma instruo encadeada:

Escrever o a parte inicial idntica das instrues seguida de dois pontos


(:).
Depois dos dois pontos (:), listar o restante das instrues (separadas por
vrgulas).

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.

Normalmente um programa no feito em um bloco simples de cdigo, mas em


vrias partes. Muitas destas unidades de modularizaes podem ser usadas em mais
de um programa. Um bom programa deve ter no mnimo acesso encapsulado a banco
de dados (conhecido tambm como reuso de componentes). Isto cria uma diviso
entre o design do programa e o acesso a banco de dados. Isto tambm possvel
para voc usar o mesmo acesso a banco por diferentes programas de usurio.
Como um benefcio adicional de tal encapsulamento, frequentemente isto
possvel para armazenar os dados dentro do encapsulamento, significando que desta
forma necessrio recuperar os dados do banco de dados apenas uma vez. Como
exemplo, um nmero de mdulos de funo standards recebe dados de vrias tabelas
e armazenam isto dentro de um grupo de funes. Mais tarde, tenta recuperar os
mesmos dados recuperados das tabelas internas dentro do grupo de funes, ao invs
de trazer novamente das tabelas do banco de dados. Um exemplo comum deste tipo
de armazenamento dentro de encapsulamento de dados recuperar o endereo dos
dados. Como resultado, algum endereo recuperado de um cliente, fornecedor ou
parceiro beneficia a otimizao. Um exemplo disso pode ser visto na Figura 9.5.

198

Figura 9.5 Exemplo de encapsulamento de dados


A unidade de modularizao uma parte do programa onde uma funo particular
encapsulada. Voc coloca parte do cdigo fonte em um mdulo para melhorar a
transparncia do programa e para usar a funo correspondente vrias vezes (ou
mesmo em outros programas se a modularizao for global) sem ter que implementar
de todo o cdigo novamente em cada ocasio. A melhoria na transparncia resultado
da orientao funo no programa. Isto divide a tarefa global dentro das subfunes, que so as responsveis pela unidade de modularizao correspondente.
Modularizao apenas simplifica tanto manuteno do programa quando em
mudanas futuras no design. Isto simplifica a manuteno porque voc apenas precisa
fazer ajustes na funo ou correes na unidade de modularizao apenas, e no em
todo o programa. Se h mudana de requisitos, muitas vezes possvel alternar a
chamada de modularizao para outra. Voc pode tambm processar uma chamada
como uma unidade dentro do debugger quando executa um programa.
Isto possvel para fornecer modularizao local ou globalmente. Voc tem duas
tcnicas para modularizao em programa local: sub-rotinas (rotinas FORM) e
mtodos dentro de classes locais. Unidades de modularizao local, por definio, so
apenas disponveis no programa em que eles so implementados. Nenhum outro
programa deve ser carregado ao usurio em tempo real quando voc usa uma
unidade de modularizao local.
Cuidado
Por razes histricas, tecnicamente possvel chamar sub-rotinas de outro
programa. Voc no deve usar esta opo, pois esta tcnica contradiz o princpio do
encapsulamento de dados e funes.

Como na modularizao de programa local, h duas tcnicas para modularizao


global: mdulos de funes e mtodos dentro de classes globais. Unidades de
modularizao global podem ser usadas por qualquer nmero de programas ao
mesmo tempo. As unidades de modularizao globalmente definidas so
armazenadas no Repositrio ABAP e apenas carregada quando requisitada pelo
programa chamador.

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 :

Introduzida com a instruo FORM.


Voc especifica o nome da sub-rotina e a interface depois de FORM.
A instruo da sub-rotina chama a instruo FORM.
A instruo ENDFORM conclui a sub-rotina.

Na definio da interface, voc lista os parmetros formais da sub-rotina e seus


tipos tambm. Um parmetro formal como voc enderea o objeto de dados
fornecido no cdigo chamador dentro da sub-rotina. Voc deve especificar o tipo para
cada parmetro.

Chamado por valor: USING VALUE


Chamado por valor e resultado: CHANGING VALUE
Chamado por referncia: CHANGING ou USING (embora CHANGING seja
recomendado se o contedo for trocado).

Voc deve especificar as sentenas adicionais TABLES, USING, CHANGING e


RAISING nesta ordem (ver Estrutura 9.8 e Estrutura 9.9 como exemplo de mltiplos
tipos). Especificando TABLES depois USING ou CHANGING cria-se um parmetro
formal chamado de TABLES. Tambm, especificando USING depois CHANGING
criamos um parmetro formal chamado USING.
IF cursor_field = SOURCE_ID AND cursor_value NE space.
PERFORM create_request
USING cursor_value
Abap_pgeditor->abap_editor->context->context_type
CHANGING l_wb_request.
ELSE.
Estrutura 9.8 Chamada a uma sub-rotina com USING e CHANGING
FORM create_request USING

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.

Mdulos De Funo ABAP


Um mdulo de funo uma rotina ou componente reutilizvel que armazenado
centralmente em uma Biblioteca de Funo de um sistema SAP. Cada mdulo de
funo tem uma interface com parmetros para importao e exportao de dados. A
proposta principal do mdulo de funo esta reusabilidade. Por isso pertence aos
componentes reutilizveis. Mdulos de funo podem ser acessados de fora do
sistema por sistemas externos ou processos se eles forem mdulos habilitados
remotamente.
Mdulos de funo so descritos como grupos de funo. Cada grupo de funo
uma coleo de mdulos de funo que tem funes similares ou processos com
mesmo tipo de dados. Um grupo de funo pode conter os mesmos componentes
como um programa de exemplo (da perspectiva do sistema, eles so um tipo de

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

Estes so globais em relao ao grupo de funo, que so


visveis e podem ser alterados por todos os mdulos de funo
dentro do grupo.

Sub-rotina

Este pode ser chamado por todos os mdulos de funo no


grupo.

Telas

Este tambm pode ser chamado por todos os mdulos de


funo dentro do grupo.

Tabela 9.2 Elementos do Mdulo de funo


Como para as sub-rotinas, um mdulo de funo pode conter seus prprios tipos
locais e definio de objeto de dados. Este apenas pode ser visto dentro do mdulo de
funo. A interface de um mdulo de funo pode conter os elementos mostrados na
Tabela 9.3. A figura 9.6 mostra um mdulo de funo com todos os elementos. Voc
deve escrever parmetros de interface com tipos do Dicionrio ABAP.
Elemento

Propsito

Parmetro Import

Valores ou variveis do programa chamado podem ser


transferidos para dentro dele quando chamado o mdulo
de funo. Os parmetros opcionais no precisam ser
fornecidos durante a chamada.

Parmetro Export

O programa chamado aceita a sada do mdulo de funo


por atribuio a um recebimento de varivel para um
parmetro de sada.
Parmetros Export so sempre opcionais

Parmetros
Changing

Voc pode transferir variveis do programa chamado para o


mdulo de funo, onde eles so alterados e retornados para
o programa.

Parmetro Tables
(obsoleto)

Este parmetro similar ao Changing em que a tabela


fornecida pode ser alterada. Contudo, isto apenas pode ser
usado para tabelas standard. O parmetro formal
especificado por este parmetro dentro do mdulo de funo
sempre ter um header line.
Tabelas internas devem ser passadas como parmetro
Import, Export ou Changing. Outra vantagem do uso deste
(assim como nas sub-rotinas) que voc pode passar
internamente outras tabelas diferentes de tabelas standard,
por exemplo, sorted ou hashed tables.

Exceptions

Este pode ser usado pelo mdulo de funo em caso de erro

202

e fornecendo informao sobre o erro processado.


Exceptions sempre devem ser apanhadas e modificadas pelo
programa que o chamou.
Tabela 9.3 Elementos do Mdulo de funo

Figura 9.6 Uma interface de mdulo de funo documentada com comentrios


Voc pode usar a expresso lgica IS SUPPLIED dentro de um mdulo de funo
para ver se um parmetro atual foi passado a um parmetro formal durante a
chamada. A expresso lgica antiga IS REQUESTED no deve ser usada. Esta
expresso verifica apenas o parmetro de sada, enquanto que a expresso lgica IS
SUPPLIED pode ser usada com todos os parmetros opcionais. A expresso IS
INITIAL no deve ser usada porque no leva em conta que um valor padro foi usado.
Se um programa chama um mdulo de funo, a entrada correspondente no
grupo de funo carregada dentro da mesma sesso interna como o programa
chamado, e o mdulo de funo so executados. O grupo de funo permanece
carregado em memria at o programa carregado ser fechado. Quando voc chama
outro mdulo de funo deste grupo, este processado sem precisar ser reiniciado, e
os mesmos dados globais existiro. Portanto, se voc chama um mdulo de funo
que armazena valores em um objeto de dados global do grupo de funo, outro
mdulo de funo no mesmo grupo pode acessar estes dados quando eles so
chamados durante o mesmo programa.
Voc deve notar na Figura 9.7 os checkboxes Optional e Pass Value (que no
exemplo so abreviadas como Opt... e Pa...), que controlam se o parmetro for exigido
e se isto for copiado (passagem por valor). Na Figura 9.8 , voc deve notar que o
checkbox Optional no existe porque todos os parmetros de exportao so
opcionais. Na figura 9.9 mostra os parmetros Changing. A Figura 9.10 mostra o
parmetro de tabelas. Note que a opo passagem por valor no existe. Finalmente, a
Figura 9.11 mostra a exceo para este mdulo de funo.

203

Figura 9.7 Parmetros de importao do mdulo de funo

Figura 9.8 Parmetros de exportao do mdulo de funo

Figura 9.9 Parmetros changing do mdulo de funo

Figura 9.10 Parmetros da tabela do mdulo de funo

Figura 9.11 Excees do mdulo de funo

Classes E Mtodos ABAP


Para incluir o conceito de orientao de objetos na linguagem ABAP, classes
globais foram introduzidas usando mtodos para fornecer funes. Como mdulos de
funo, mtodos tambm tm uma interface, conhecido como assinatura, que consiste
de parmetros importing, exporting, changing e returning e exceptions.

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

Figura 9.12 Atributos do mtodo

Figura 9.13 Parmetros do mtodo

Figura 9.14 Excees do mtodo


Method convert_number_base.
Data:
Lv_factor
Lv_converted_number
Lv_src_nbr
Lv_iterations
type I,
Lv_position
Lv_max_value
type I,
Lv_digit
Lv_exponent
Field-symbols:
<digit>
type c.
Constants:
Lc_starting_factor

type p length 10,


type p length 10,
type c length 99,
type I,
type I,
type i.

type I value 19,

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.

Assim como em mdulos de funo e sub-rotinas, voc tem a capacidade de


importar, exportar, trocar e produzir excees. Mtodos tambm fornecem a habilidade
para retornar um valor, que permitem que a chamada para ser colocada dentro de uma
instruo COMPUTE ou uma expresso lgica. Outra diferena que todo parmetro
obrigatrio ser tipado. Esta a diferena de ambos, sub-rotina e mdulos de funo,
onde recomendado que os parmetros sejam tipados.

Tela De Seleo ABAP


Geralmente as telas de seleo so usadas para entrar com critrios de seleo
para uma seleo de dados. Da viso tcnica, telas de seleo so Dynpros. Contudo,
eles no so desenhados pelo desenvolvedor diretamente, mas gerados de acordo
com instrues declaradas no cdigo fonte.
A tela de seleo tem as seguintes funes standard:

Texto na tela de seleo pode ser mantido em vrias linguagens. Em


tempo real o texto automaticamente mostrado na linguagem escolhida no
logon do usurio.
O sistema verifica os tipos automaticamente.
Junto entrada de valor simples (PARAMETERS), voc pode tambm
programar selees complexas (SELECT-OPTIONS) na tela de seleo.
Com uma seleo complexa (SELECT-OPTIONS), o usurio pode entrar
com mltiplos valores, intervalos, condies comparativas, ou at mesmo
padres como restries.
Se o campo de entrada definido usando um elemento do Dicionrio
ABAP, a documentao do campo pode ser mostrada no campo de
entrada usando a tecla de funo F1. O valor de ajuda anexado ao
Dicionrio de tipo mostrado possibilita que campos possam ser chamados

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

Figura 9.15 Tela de seleo gerada


Mais detalhes sobre telas de seleo so discutidas no Captulo 13, Telas de
seleo.

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

Se voc no quer fazer uma verificao de um campo, no coloque


isso na instruo AUTHORITY-CHECK ou coloque DUMMY como valor do
campo. DUMMY uma descrio predefinida sem aspas.
Exemplo de uma curta verificao de campo: quando uma transao
de alterao chamada, o sistema sempre deve verificar imediatamente
se o usurio tem alguma autorizao para alterao. Se a verificao
falhar, uma mensagem apropriada mostrada ao usurio imediatamente
(ver o primeiro AUTHORITY-CHECK na Estrutura 9.12 como um exemplo
da sintaxe; o objeto de autorizao pode ser visto na Figura 9.16).

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

Figura 9.16 Objeto de autorizao


Novamente para evitar erros de linguagem em objetos e nomes de campo, voc
pode usar o boto Pattern para gerar a instruo apropriada AUTHORITY-CHECK.

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:

Pela chamada da primeira tela (usando a instruo CALL SCREEN) de um


bloco de processamento em seu programa.
Criando uma transao de dilogo que referencia o programa e a primeira tela

Depois que uma tela processada, a sequncia de telas definidas estaticamente


ou dinamicamente processada. Uma tela formal prxima de retorno 0 (zero)
processa para o ponto onde a tela foi chamada ou termina a transao de dilogo.
Telas podem aparecer em programas executveis, grupos de funes, ou pool de
mdulos:

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

Esta tela encapsulada existe para mostrar mensagens, aceitando valores, e


selecionando entre opes.
Pool de mdulos
Pool de mdulos apenas podem ser iniciados com um cdigo de
transao; eles no podem ser testados como outros tipos de programas
executveis diretamente no ambiente ABAP (Transao SE80) ou Editor ABAP
(Transao SE38). Em contraste tela em grupos de funo, voc no pode
encapsular pools de mdulos ou fornecer uma interface externa.

Quando uma tela mostrada para um usurio, o servidor de apresentao


executa todas as interaes at a funo ser selecionada. Uma funo corresponde a
um boto na barra de ferramentas de aplicao, um menu, uma das teclas de funo
(F1 at F12), ou a tecla Enter. Cada uma destas aes de usurio aciona o cdigo de
funo definido pelo programador a um campo especial associado com toda tela. Este
campo normalmente referenciado como sendo OK_CODE. Voc normalmente
nomeia este campo e fornece um campo global com o mesmo nome para receber o
valor em seu programa. O campo pode ser definido o uso pelo tipo SYUCOMM. O
transporte a esta varivel automtico. Durante o PAI (process after input) voc pode
determinar qual ao o usurio executa dentro do contedo desta varivel.
A instruo CALL SCREEN acessa os Dynpros do principal programa relevante do
grupo de programas corrente, e este usa o dado global e mdulos de dilogo do
programa principal. Se a Dynpro especificada no existe no programa principal do
grupo de programas, ocorre uma exceo no tratada.
Voc usa o adicional STARTING AT para abrir um novo nvel de popup e para
mostrar todas as telas da sequncia de Dynpro chamados em uma caixa de dilogo
modal ao invs de uma tela cheia. O canto superior esquerdo da janela de dilogo
determinado pelos valores seguidos do adicional STARTING AT para a coluna e linha.
O valor referencia janela popup nvel 0. O canto inferior direito automaticamente
definido pelo tamanho da janela, ou voc pode especificar isto depois do ENDING AT.
Para nmero de coluna e linha (para o canto superior esquerdo ou inferior direito),
objetos de dados do tipo i so esperados. Os valores do canto superior esquerdo
devem ser menores que os correspondentes do canto inferior direito; caso contrrio, o
comportamento indefinido. O popup de nvel mximo 9.
Se durante o processamento de uma caixa de dilogo modal uma nova sequncia
Dynpro chamada, esta tem que ser iniciada em outro nvel popup. Voc no pode
usar a instruo CALL SCREEN sem adicionar STARTING AT neste caso. Quando est
chamando um Dynpro em uma janela de dilogo, especifica a janela como uma janela
de dilogo modal nestas propriedades e define um status GUI apropriado
antecipadamente. Isto recomendado quando uma sequencia Dynpro em uma janela
de dilogo modal consistir de apenas um Dynpro.
Mais detalhes em relao Dynpros screens so discutidas no Captulo 12, Telas
Clssicas.

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

A mensagem aparece em uma caixa de dilogo, e o


programa encerra. Quando o usurio confirma a
mensagem, o controle retorna prxima mais alta
rea de menu.

Erro

Dependendo do contexto do programa, um dilogo de


erro aparece ou o programa termina.

Informao

A mensagem aparece em uma caixa de dilogo. Uma


vez que o usurio confirma a mensagem, o programa
continua com o que h imediatamente depois da
instruo MESSAGE.

Status

O programa continua normalmente aps a instruo


MESSAGE, e a mensagem mostrada na barra de
status da prxima tela.

Alerta

Dependendo do contexto do programa, um dilogo de


alerta aparece ou o programa termina.

Sada

Nenhuma mensagem mostrada, e o programa


termina com um curto Dump. O programa termina
com um pequeno dump normalmente apenas quando
ocorre um erro em tempo de execuo. A mensagem
tipo X permite forar um programa a terminar. O
pequeno dump contm o ID da mensagem.

Tabela 9.4 tipos de mensagem e seus comportamentos.


Se a mensagem especificada contm espaos reservados (especificado como &
ou &#, onde o # 1, 2, 3 ou 4), voc pode fornecer eles com valores do seu programa
usando o adicional WITH. Em vez de espaos reservados, os valores transferidos
ento aparecem no texto da mensagem mostrada. Pode ter no mximo at quatro
espaos reservados, e se um nmero parte do espao reservado, isto especifica a
ordem em que os espaos reservados sero preenchidos. Isto permite ao tradutor de
texto que possa obrigar os espaos reservados em diferentes ordens (ver Estrutura
9.13 por exemplo). Mensagens podem ser mostradas em caixas de dilogo modal ou

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

Call function CHANGEDOCUMENT_OPEN


Exporting objectclass
= WFRULES

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

Programa termina, e o controle retorna ltima rea


do menu.

Grupo 1: Caixa
de
dilogo
Grupo 2: Linha
de status da
janela corrente

Grupo 1: se comporta da mesma maneira que o tipo A.


Grupo 2: Programa termina e mostra alguma tela vazia
com status GUI vazio. Aps a ao do usurio:
Retorna posio chamada do programa.

Grupo 1: linha
de status da
prxima tela
Grupo
2:
caixas
de
dilogo

Programa continua
instruo MESSAGE.

Linha de status
da prxima tela

Programa continua processando depois da instruo


MESSAGE.

Grupo 1: linha
de status da
prxima tela
Grupo 2: Linha
de status da
tela corrente

Grupo 1: comporta-se como tipo S.


Grupo 2: programa termina e mostra uma tela vazia
com status GUI vazia. Depois da ao do usurio:
Retorna posio de chamada do programa.

Nada

Inicia um erro com pequeno dump

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

O programa termina, e o controle volta para a ltima


rea do menu.

Status line

Caixa
dilogo

de

O Programa continua o processamento depois da


instruo MESSAGE.

Linha
Status

de

Programa continua o processamento depois da


instruo MESSAGE.

Linha
Status

de

Como tipo E, mas o usurio pode confirmar a


mensagem apertando Enter sem ter que colocar novos
valores. O sistema ento retoma a tela de seleo
processando diretamente depois da instruo
MESSAGE. Voc no pode usar warnings com os
adicionais ON HELP-REQUEST, ON VALUEREQUEST, e ON EXIT. Em vez disso, um erro ocorre.

Nada

de

O processamento PAI terminado, e o controle


retorna para a tela corrente. Todos os campos da tela
para que estes sejam instrues FIELD ou CHAIN
esto prontas para input. O usurio deve entrar um
novo valor. Este sistema ento reinicia o
processamento PAI para a tela usando os novos
valores. Mensagens de erro no so possveis em
processamento POH (process on help-request) ou
POV (process on value-request). Em vez disso, um
erro em tempo de execuo ocorre.

Inicia um erro com pequeno dump.

Tabela 9.6 Mensagens durante PAI


Um nico contexto inclui todas as situaes em que uma tela de seleo esta
sendo processado, isto , o programa esta reagindo a entrada do usurio. Em
programas ABAP, isso corresponde ao bloco de processamento AT SELECTION
SCREEN, exceto aqueles com a adio OUTPUT. Isso mostrado na tabela 9.7.

Tipo
A

O que mostra

Processamento

Caixa

O programa termina, e o controle volta para a ltima

de

216

dilogo

rea do menu.

Status line

O processamento PAI terminado, e a tela de seleo


reexibida. Os campos de tela especificado atravs
da adio da instruo AT SELECTION SCREEN
esto prontos para a entrada. Se no h adies a
declarao, todos os campos esto prontos para a tela
de entrada. O usurio deve inserir um novo valor. O
sistema reinicia o processamento da tela de seleo
usando os novos valores. Voc no pode usar
mensagem de erro com a adio ON HELP
REQUEST, ON VALUE REQUEST e ON EXIT. Em vez
disso um erro em tempo de execuo ocorre.

Caixa
dilogo

de

O Programa continua o processamento depois da


instruo MESSAGE.

Linha
Status

de

Programa continua o processamento depois da


instruo MESSAGE.

Linha
Status

de

Como tipo E, mas o usurio pode confirmar a


mensagem apertando Enter sem ter que colocar novos
valores. O sistema ento retoma a tela de seleo
processando diretamente depois da instruo
MESSAGE. Voc no pode usar warnings com os
adicionais ON HELP-REQUEST, ON VALUE-REQUEST,
e ON EXIT. Em vez disso, um erro ocorre.

Nada

Inicia um erro com pequeno dump.

Tabela 9.7 Mensagem durante a tela de seleo.


Um nico contexto inclui todas as situaes onde uma lista processada, isto , o
programa reage interao do usurio com listas. Em programas ABAP, estes incluem
os seguintes blocos de processamento:

AT LINE-SELECTION
AT USER-COMMAND
AT PFnn
TOP-OF-PAGE DURING LINE-SELECTION

Tabela 9.8 mostra os comportamentos durante processamento de lista.


Tipo

O que mostra

Processamento

Caixa
dilogo

de

Programa termina, e o controle retorna a ltima rea


de menu.

Linha de status

Blocos de processamento terminam. Lista de nvel


anterior permanece mostrado.

217

Caixa
dilogo

de

Programa continua o processamento depois da


instruo MESSAGE.

Linha de status

Programa continua o processamento depois da


instruo MESSAGE.

Linha de status

Como tipo E.

None

Inicia um erro com pequeno dump.

Tabela 9.8 Mensagens durante processamento de lista


O ltimo conceito nos mdulos de funo e mtodos. Mensagem tem duas
funes diferentes em mdulos de funo e mtodos:

Mensagem normal
Iniciando uma exceo

Se voc usa mensagens em mdulos de funo e mtodos sem o adicional


RASING na instruo MESSAGE, a mensagem manipulada normalmente de acordo
com o contexto em que este chamado dentro do mdulo de funo ou mtodo. Em
outras palavras, se estas no forem capturadas, elas se comportam como se fossem
de outros contextos dependendo onde a chamada para o mdulo de funo ou mtodo
ocorre.
Se voc usa mensagens em mdulos de funo e mtodos com o adicional
RAISING exc na instruo MESSAGE, o caminho em que a mensagem manipulada
depende onde o programa que chamou pega a exceo exc ou no.

Se o programa que chamou no pega a exceo, a mensagem mostrada e


manipulada de acordo com o contexto em que ocorre em mdulos de funo
ou mtodos o qual foi chamado.
Se o programa que chamou trata a exceo, a mensagem no mostrada. Em
vez disso, o procedimento interrompido de acordo com o tipo de mensagem,
e o processamento retorna ao programa que chamou. O contexto da
mensagem fica no sistema nos campos SY-MSGID, SY-MDGTY, SY-MSGNO, e
SY-MSGV1 at SY-MSGV4.

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

Respostas Das Questes Prticas E Explicaes


1. Respostas corretas: B, C, D, E
ABAP no executo no servidor de banco de dados. Entretanto isto pode ser
considerado para interagir com o banco de dados pela interface de banco de
dados, isto no executa no nvel de banco de dados. Tambm no executa na
camada de apresentao. Isto interage com o servidor de apresentao
normalmente pelo SAP GUI, mas o nico modo de execuo ocorre no servidor de
aplicao.
2. Resposta correta: A
O nico evento comum a todos os programas executveis LOAD-OFPROGRAM.
3. Respostas corretas: A, B, C
Dynpros no so possveis em mtodos ou classes.
4. Resposta correta: B
Uma change request contm uma tarefa.
5. Resposta correta: B
Toda instruo ABAP deve terminar com um ponto (.). Entretanto isto
certamente verdade que ABAP requer a instruo para comear com uma palavrachave, h casos onde a palavra-chave opcional. O mais bvio a palavra-chave
COMPUTE, que ns nunca vimos implementado em um programa (isto certamente
ajuda a entender palavras-chave existentes quando voc tem tentado procurar
ajuda em uma funo aritmtica enquanto est em um editor). ABAP no se
preocupa se a instruo est upper ou lowercase, ou ainda misturado.

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

Os procedimentos de modularizao de unidades de um


programa ABAP so blocos de processamento.

Dynamic Program
(Dynpro)

Um programa dinmico consiste de uma imagem de tela ou


layout e fluxo lgico subjacente.
Os componentes principais de uma tela so:
Atributos: como sendo nmeros de tela e prxima
tela
Layout: a organizao dos textos, campos, e outros
elementos
Atributos dos elementos: definies das propriedades
dos elementos individuais
Fluxo lgico: chamadas dos mdulos relevantes
ABAP

Verificao
autorizao

Verificar para determinar se o usurio do programa atual tem


certa autorizao. Para cada campo de autorizao de um
objeto de autorizao, um valor a ser verificado comparado
com a entrada correspondente no User mster Record. A
instruo ABAP correspondente AUTHORITY-CHECK.

de

Tabela 9.9 Relembrando os conceitos chave

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:

Descrever as Funes do Dicionrio ABAP


Definir tipo de dados
Entender os objetos do Banco de Dados e seus usos
Criar domnios, elementos de dados e tabelas no Dicionrio ABAP
Entender os tipos de tabelas
Definir atributos tcnicos das tabelas
Criar e manter views do banco de dados, project views e help views
Entender a ajuda de pesquisa e bloqueio de objetos

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.

Objetivos Desta Parte No Teste


O objetivo desta parte no teste julgar o seu entendimento dos objetos do
dicionrio ABAP porque ele um componente chave do sistema SAP e requisito em
quase todos os desenvolvimentos de aplicaes. esperado ter um entendimento dos
objetos como domnio, elementos de dados, estruturas e grupo de tipos. Voc deve
ser capaz de diferenciar os tipos de tabelas que so: transparentes, pools e clusters.
Voc tambm dever ser capaz de descrever as caractersticas dos objetos de
bloqueio, ajuda de pesquisa e views.

Conceitos Chave

Tipos bsicos e complexos do dicionrio ABAP


Objetos do Dicionrio: domnios, elementos de dados e tabelas transparentes.
Como criar tabelas baseado nos requisitos do seu projeto
Como executar o tunning da tabela do dicionrio ABAP para melhorar o
desempenho sem ter que modificar a aplicao
Criar e manter views de banco de dados
O uso de objetos de bloqueio e ajuda de pesquisa

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

um tipo complexo de dados que pode ter mltiplos componentes.

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.

Os objetos do Banco de dados, tabelas, ndices e views so definidos no


dicionrio de dados. Uma estrutura de tabela definida no dicionrio de dados
automaticamente criada no banco de dados usando essa estrutura como base na hora
da ativao. As alteraes na estrutura so automaticamente realizadas no bando de
dados. Os ndices so definidos para melhorar o desempenho no acesso aos dados
da tabela e tambm so criados na estrutura.
Voc pode criar objetos de bloqueio que so usados para bloquear uma tabela ou
um registro com a intenso de alterar os dados sem que ningum altere ao mesmo
tempo. Voc tambm pode criar um objeto de bloqueio para a leitura, outro usurio
pode ler a tabela mas no poder alterar os dados enquanto essa estiver bloqueada.
Voc tambm pode criar as ajudas de pesquisa que so ligadas com campos de tela
para ajudar o usurio no seu preenchimento. O dicionrio de dados tambm fornece
um servio para checar os dados que o usurio inseriu. Os valores vlidos so
definidos via check table ou valor de range para o domnio do elemento de dados.
Refere. Captulo 19, Relacionamento de Tabelas, para mais detalhes sobre este
tpico. Figura 10.1 Mostra a tela inicial da ferramenta Dicionrio ABAP, que usada
para criar os objetos do dicionrio.

Figura 10.1 ABAP Ferramenta do Dicionrio ABAP


Em resumo, voc pode criar ou atualizar a definio de tabelas, views, tipo de
dados, incluindo, elemento de dados, estruturas e tipo de tabelas domnios, ajuda de

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.

Tipo De Dados Complexo E Bsico


Tipo de dados definidos no Dicionrio ABAP pode ser referenciado em um
programa ABAP com TYPE adicionando a correspondente definio do objeto de
dados. Voc tambm pode referenciar os tipos de dados definidos no Dicionrio ABAP
para parmetros de funo de mdulos de funo ou mtodo de interface. (ver
captulo seis, Tipos ABAP Objeto de dados).
Tipo de dados criados no Dicionrio ABAP pode ser usado por mais de um objeto
como: estruturas, tabelas ou tipo de tabela como em programas, telas, mdulos de
funo de interface, etc. Tipo de dados pode ser mantido centralizado, todos os
programas ou objetos relevantes usando tipo de dados so ajustados durante a
execuo, se voc fez qualquer alterao no tipo de dados do dicionrio. Voc pode
ter as informaes semnticas como nome do campo e documentao detalhada para
o tipo na definio do tipo de dados no dicionrio de dados.

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

Com o formato voc define o tipo de dados o nmero de caracteres, nmero de


decimais para tipo numrico. Voc somente pode usar tipo de dados pr-definidos
para a definio de um domnio.

230

Figura 10.2 Definio de elemento de Dados Departure City

Figura 10.3 Definio de Elemento de dados Arrival City

O dicionrio ABAP tem 24 predefinies de tipos de dados. Os tipos de dados so


mapeados para o ABAP runtime tipo de dados que podem ser usados para definir um
objeto do tipo I, C, etc. Tabela 10.1 lista os tipos de dados vlidos, Tabela 10.2 mostra
o mapeamento dos tipos de dados do Dicionrio de dados e o tipo de dados do
runtime ABAP.
Tipo de Dado
ACCP
CHAR
CLNT
CUKY
CURR

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

Hora. Tamanho de 6 posies. Formato HHMMSS. Template de input


output HH.MM.SS
UNIT
Unidade. Tem referencia no campo QUAN. Tamanho de 2 ou 3.
VARC
Caractere de tamanho varivel. A criao de novos campos deste tipo
de dados no suportado na Release 3.0, entretanto existe campos
ainda em uso. Campo deste tipo no pode ser usado com a condio
WHERE de um SELECT.
Tabela 10.1 Tipo de dados predefinidos no Dicionrio ABAP.

ABAP Dictionary Type


ABAP Type
ACCP
N(6)
CHAR n
C(n)
CLNT
C(3)
CUKY
C(5)
CURR n, m
P((N+1)/2) DECIMAL m
DEC n, m
P((N+1)/2) DECIMAL m
DATS
D(8)
FLTP
F(8)
INT1
X(1)
INT2
X(2)
INT4
X(4)
LANG
C(1)
NUMC n
N(n)
PREC
X(2)
QUAN n, m
P((N+1)/2)DECIMAL m
RAW n
X(n)
TIMS
T(6)
UNIT
C(n)
VARC n
C(n)
LRAW
X(n)
LCHR
C(n)
STRING
STRING
RAWSTRING
XSTRING
Tabela 10.2 Mapa do Dicionrio ABAP e Tipo de Dados do ABAP runtime
Na propriedade de sada de domnio voc especifica o tamanho mximo do
campo, que inclui a edio de caracteres como vrgula, ponto para entrada e sada de
valores. O tamanho da sada preenchida automaticamente uma vez que voc entre
com o tipo de dados, nmero de caracteres e decimal, mas isso pode ser sobrescrito.
O formato de sada tem um efeito na tela e na tela de seleo. A especificao para
esta rea usada quando o elemento de dados ligado para este domnio usado para
descrever o campo de tela, mas sada caracterstica pode ser mudado no Screen
Painter.
Voc pode especificar a rotina de converso para o domnio. A rotina de
converso usada para converter o contedo do campo para o formato da tela do
formato no banco de dados e vice-versa. A rotina de converso de domnio
identificada com um nome de 5 caracteres e isto gera 2 mdulo de funo para a
rotina de converso. Os seguintes mdulos de funo podem ser gerados para a
rotina de converso XXXX:

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.

Figura 10.4 Definio de Domnio


Alm dos atributos acima, voc pode tambm definir valores vlidos para o
domnio. Atravs do tipo do domnio voc saber a definio de valores vlidos, voc
pode restringir um range de valores para o domnio. O valor pode ter um valor fixo, um
range de valores, ou uma tabela de valores (ver Capitulo 19, Relacionamento de
tabelas, para mais detalhes). Domnios so assinalados para elementos de dados e o
elemento de dados assinalado para o campo da tabela, estrutura ou view. Qualquer
tabela ou campo de estrutura que usa este elemento de dados pode ter um valor
vlido definido para o domnio. O valor da definio do range no obrigatrio e por
isso pode ser deixado em branco (ver Figura 10.5).

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

Figura 10.6 Elemento de dados para Definio de tipo de dados

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

Figura 10.7 Descrio do nome de campo para Elemento de dados

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.

Figure 10.8 Caractersticas adicionais para definio de elemento de dados

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.

Figura 10.9 Definio de tipo de linha

237

Figura 10.10 Modo de acesso

Figura 10.11 Definio de Chave

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 10.12 Definio de tabela com uma estrutura em um include

Anexando uma ajuda de pesquisa para um campo de tabela possvel somente


se o campo da tabela est assinalado para um elemento de dados. Por outro lado se
voc est usando um tipo do dicionrio ABAP, a definio da ajuda de pesquisa no
possvel.
Obrigatoriamente voc precisa especificar a tabela de referencia para o tipo de
dados CURR e QUAN. Uma tabela de referencia deve ter o de tipo de dados CUKI
(current key) para CURR e UNIT(unit measure) para o campo QUAN. A chave da
moeda requisito porque o preo de 100 no significa nada at que seja conhecido o
$100 ou 100. Figura 10.13 Mostra a definio do tipo de referencia para o campo tipo
de dados CURR.
Chave estrangeira
Voc pode definir uma chave estrangeira selecionando o cone(veja
10.14). Referente ao captulo 19, Relacionamento de Tabelas.

Figura

239

Figura 10.13 Tabela de Referencia e o campo assinalado para Net Price Field

Figura 10.14 Definio de um campo de tabela

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.

Figura 10.16 ndices secundrios para a tabela MARA


Dica
Voc no deve criar muitos ndices secundrios porque pode diminuir a
desempenho durante as atualizaes da tabela. Para cada alterao na tabela os
ndices so atualizados, diminuindo a desempenho.

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

Ajuda de pesquisa Elementary


Deve definir de onde os dados para a ajuda de pesquisa so lidos, isto
determinado pelo SELECTION METHOD input field.
O mtodo selecionado pode ser uma tabela de transporte, uma view, projection
view ou help view. Se a tabela selecionada tem uma tabela de texto, ento o texto da
tabela automaticamente populado para os campos correspondentes e estes campos
esto disponveis para o input help e SERARCH HELP PARAMETER, ento o usurio
pode usar a descrio quando pesquisar. Os possveis valores de dicas so definidos
em runtime pela seleo no banco de dados. Se os dados vem de mais de uma tabela
necessrio usar uma view e enviar a view para o SELECTION METHOD. (ver Figura
10.17)

Figura 10.17 Definio de ajuda de pesquisa Elementary

Obrigatoriamente preciso definir parmetros para a ajuda de pesquisa. Os


parmetros so usados para a seleo de valores e para a lista de dicas.
A interface definida pelos parmetros importing (IMP) e exporting (EXP). Voc deve
especificar a interface para a ajuda de pesquisa a fim da troca de dados entre o
template de tela e o mtodo de seleo e vice-versa. Voc deve selecionar IMP ou
EXP. Ajuda de pesquisa podem importar e exportar.
A janela para input help definida com os campos LPos, SPos e SDis. A posio do
parmetro na lista de dicas definida pelo LPos e os parmetros de posio da janela

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.

Ajuda de pesquisa Collective


Combina muitos elementos da ajuda de pesquisa. Fornece muitas alternativas de
caminhos para possveis entradas. Existe a troca de dados entre a janela e o export e
import interface. Pode ser anexado a campos, check tables ou elementos de dados
igual ajudada de pesquisa elemetary. Somente uma ajuda de pesquisa pode ser
anexada porm muitos caminhos podem estar disponveis com a ajuda de pesquisa
collective. Cada ajuda de pesquisa elementary apresentada em uma tab.
Para definir uma ajuda de pesquisa collective voc inclui todas as ajudas de
pesquisa elementary e define um parmetro para collective e depois assinala o
parmetro para a ajuda de pesquisa parameters (ver Figura 10.18 e Figura 10.19).

Figura 10.18 Definio da ajuda de pesquisa Collective

244

Figura 10.19 Ajuda de pesquisa Collective assinalada

Anexar Ajuda de Pesquisa


utilizado para definir seu prprio elemento customizado de ajuda de pesquisa e
ento anexar a ajuda de pesquisa existente.
A ajuda de pesquisa pode ser anexada pelo caminho GOTO- APPEND- SEARCH
HELP.

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.

Figura 10.20 Tabela assinalada para bloqueio de objeto

Figura 10.21 Parmetro de bloqueio para objeto de bloqueio


O objeto de bloqueio tambm um parmetro de entrada para mdulos de funo
do objeto de bloqueio e isto define como outros usurios ou aplicaes podem acessar
o registro bloqueado. Voc pode assinalar objetos de bloqueio separados por tabelas
individuais. Tabela 10.3 mostra o objeto de bloqueio e outros significados.
Type
Lock
Shared
lock/read
lock
Exclusive
lock/write
lock

of

Lock Mode

Meaning

S (Shared)

Mais de uma aplicao pode setar um bloqueio


compartilhado no mesmo registro. Um bloqueio
exclusive no pode setar para um registro j
bloqueado
Bloqueio exclusive protege o objeto contra todos os
tipos de bloqueio da aplicao. Somente a aplicao
que bloqueou pode resetar o bloqueio. Um dado

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

Tipos de Viso e Manuteno


Dados de aplicao geralmente so armazenados em diversas tabelas de banco
de dados. Acessando views voc pode mostrar os dados como se fossem apenas uma
tabela. Uma view uma juno JOIN de dados de uma ou mais tabelas e baseado
sobre inner join. possvel usar a view num select dentro de um programa.
Passos para criar uma view:
1. Selecionar a tabela
2. Definir as condies para o join entre as tabelas
3. Selecionar os campos das tabelas
4. Definir as restries
As condies para o join definem como os registros de diferentes tabelas so
relacionados.
possvel utilizar os operaes AND ou OR para diferentes combinaes. A
sintaxe similar usada na clusula WHERE do SELECT. para filtrar os dados.
Selecione os campos das tabelas que voc deseja inserir na view. Os dados a
serem selecionados para a view dependente sobre o que est implementado na
clusula inner join ou outer join. Com o inner join recuperado todos os registros para
cada um que existir na condio do join. Com o outer join, os registros so
selecionados para os que contm e no contm dados correspondente na clusula do
join.
Ver a Figura 10.22 e a Figura 10.23 para inner e outer join respectivamente. O
inner join como mostrado na figura 10.22 contm todos os registros da tabela TAB1 e
TAB2, que satisfaz as condies do join, que : TAB1-FIELD1 = TAB2-FIELD3. O outer
join est especificado na Figura 10.23 e contm todos os registros da TAB1 e os
registros da TAB2 que satisfazem as condies do join, que TAB1-FIELD1 = TAB2-

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.

Figura 10.22 Inner Join

Figura 10.23 Outer Join

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

Respostas e explicaes para questes prticas


1. Resposta correta: B

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

Domnios so usados para gerenciar propriedades tcnicas


de objeto de dados central e no pode ser usado diretamente no
programa
Elemento
Um elemento de dados uma descrio completa do campo.
de Dados
Ele fornecido pelo F1 help para o campo de tela e para o nome
do campo.
Tabela do
Tabelas so definidas no Dicionrio ABAP independente do
Dicionrio
banco de dados. Uma definio fsica criada no banco de dados
ABAP
quando a tabela ativada.
Tabela 10.4 Conceitos chave

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:

Forar verificao Unicode (em um sistema no Unicode)


Explorar a diferena entre tipo bytes e caracteres tipo data objetos.
Determinar a visualizao fragmentada de estruturas em Unicode.
Entender novas adies s declaraes.
Aprender sobre novos operadores relacionais.

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.

Objetivos Desta Parte Do Teste


Esta parte do exame de certificao verificar se voc sabe como criar
programas compatveis com o Unicode, mas que tambm entenda, da perspectiva de
programao, as vantagens de se ter um programa compatvel com Unicode. Esta
parte do exame validar seu conhecimento de um numero de tpicos. Os pontos que
voc precisa entender desta seo incluem:

256

Como forar a verificao Unicode antes da converso para Unicode.


Como identificar programas com problemas que precisam de correo, em
outras palavras, quais programas geraro erro como resultado de uma
aplicao mais rigorosa da validao de sintaxe de um sistema Unicode.
Quais instrues ABAP comportam-se diferentemente como resultado de uma
validao do tipo byte ou caractere.
Como a viso fragmentada Unicode usada para atribuies e instrues
condicionais
Novas adies para as instrues existentes para diferenciar entre dados tipo
byte e tipo caractere.
Novos operadores relacionais para objetos tipo byte.

O exame de certificao dar peso mnimo a este captulo compara a todos os


outros tpicos no exame. Por isso, este captulo est entre aqueles que a
porcentagem de questes relacionadas menor do que a maioria dos captulos.
Acreditamos que o peso mnimo deva-se ao fato que os erros relacionados ao Unicode
so especficos de uma situao. Voc deve resolver o problema antes que possa
proceder com a ativao.

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:

Objetos de dados tipo byte X objetos de dados tipo caractere.


A viso fragmentada de uma estrutura
Manejo de arquivos
Novas adies linguagem ABAP
Como procurar erros nos programas

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:

ASCII (American Standard Code for Information Interchange) codifica todos os


caracteres com um byte. Isso significa que no mximo 256 caracteres podem
ser representados (O ASCII standard codifica um caractere usando 7 bits e,

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.

Usando estes grupos de caracteres, todas as linguagens podem ser


manipuladas individualmente em um sistema SAP baseado em ABAP. As dificuldades
aparecem se textos de grupos de caracteres incompatveis forem misturados em um
sistema central. A dificuldade consiste em uma representao de 8 bits sendo
interpretada de formas diferentes baseado na pgina de cdigo usada para apresentar
os dados. A troca de dados entre sistemas com grupos de caracteres incompatveis
tambm pode acarretar em problemas.
A soluo para este problema a utilizao de um grupo de caracteres que
inclua todos os caracteres. O Unicode possui esta habilidade. Uma variedade de
representaes de caracteres so possveis para o grupo de caracteres Unicode, por
exemplo: UTF, no qual um caractere ocupa entre 1 e 4 bytes.
A partir do release 6.10, o Servidor de Aplicao SAP NetWeaver suporta
sistemas Unicode e no Unicode. Sistemas no Unicode so os sistemas ABAP
convencionais, nos quais um caractere normalmente representado por um byte.
Sistemas Unicode so sistemas ABAP baseados num grupo de caracteres Unicode e
que possuem um sistema operacional e banco de dados correspondentes. Para
determinar se o seu sistema um sistema Unicode, selecione SISTEMA STATUS e
olhe nos dados SAP no centro da caixa de dialogo.

Figura 11.1 Dados SAP do dilogo de status.


Antes do release 6.10, muitos mtodos de programao ABAP eram baseados
no fato de um caractere corresponder a um byte. Aps um sistema ser convertido para
Unicode, os programas ABAP devem, portanto ser modificados em todos os pontos
em que explicita ou implicitamente onde esta suposio sobre o tamanho interno do
caractere foi feita.
Ferramentas Unicode
O ABAP suporta esta converso usando novas regras de sintaxe e novas
construes da linguagem, colocando nfase em reter o mximo possvel de cdigo
existente. Para simplificar a preparao para a converso Unicode, o checkbox

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.

Figura 11.2 Caractersticas do programa, verificao Unicode.


Em um sistema Unicode apenas programas Unicode podem ser executados.
Antes de converter para um sistema Unicode, o parmetro de perfil
abap/Unicode_check deve ser definido como ligado. Este parmetro esta disponvel a
partir da release 6.10. Ele pode ser usado para forar a verificao de sintaxe para
todos os objetos em sistemas no Unicode. Quando voc define este parmetro,
apenas objetos com Unicode habilitado (Objetos com o flag Unicode) so executveis.
Este parmetro s deve ser definido como ligado se todos os programas estiverem
habilitados segunda a transao UCCHECK. Programas no Unicode s podem se
executados em sistemas no Unicode. Todas as construes da linguagem que foram
introduzidas para programas Unicode podem, entretanto, ser utilizadas para
programas no Unicode.
Para rodar a transao UCCHECK, voc informa os programas que deseja
validar: todos os objetos no namespace do cliente, todos os objetos do tipo FUGS
(grupo de funo com cliente includo), e qualquer programa SAP que voc modificou.
A tela de seleo inicial mostrada na figura 11.3, e um exemplo de um problema
detectado so exibidos na figura 11.4.
Devido ao fato de programas programados sem erros atendem a maioria da
regras Unicode, ele necessitam menos modificaes. Por outro lado, programas que
requerem mudanas significantes so por conta de um estilo de programao
propenso a erros. Programas Unicode so preferveis, pois so mais fceis de dar
manuteno e menos propensos a erros. Assim como construes de linguagem

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.

Figura 11.3 Tela de seleo para a transao UCCHECK

Figura 11.4 Erros detectados na transao UCCHECK


Uma das mais importantes diferenas entre um programa Unicode e um no
Unicode clara distino entre objetos de dados tipo byte e tipo caractere e a restrio
dos tipos de dados que os objetos tipo caractere podem ver. Isto tem um influencia em
todos as instrues em que os operandos tipo caractere so esperados e em particular
no processamento byte e caractere.
Tipo de dados

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:

Componentes tipo caractere plano consecutivos c, n, d e t, entre os quais no


existam lacunas, formam fragmentos do tipo caractere.
Componentes tipo byte consecutivos do tipo x, entre os quais no existam
lacunas, formam grupos tipo byte.
Componente numricos consecutivos do tipo i e f, entre os quais no existam
lacunas, formam cada, um fragmento separado.
Cada componente numrico individual do tipo p forma um fragmento separado.
Para este tipo de fragmento seu comprimento o importante, no o numero de
casas decimais.
Em estruturas profundas, cada componente de profundidade (referencia) forma
um fragmento separado.
Cada lacuna considerada um fragmento.

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

Figura 11.5 Uma estrutura no flat.

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:

Do tipo caractere (Conter apenas componentes flat do tipo caractere).


Flat (Ela possui um fragmento inicial do tipo caractere de acordo com a viso
fragmentada Unicode, e a especificao de inicio e comprimento acesses este
fragmento inicial).

Em ambos os casos a especificao de inicio e/ou comprimento interpretada


como o numero de caracteres. A figura 11.6 mostra uma estrutura com componentes
do tipo caractere e no caractere. A vido fragmentada Unicode quebra a estrutura em
5 reas como mostra a figura 11.7.

Figura 11.6 Incio invlido em Unicode.

Figura 11.7 Viso fragmentada de uma estrutura.


Acesso ao inicio e/ou comprimento s possvel para o fragmento inicial do
tipo caractere F1. Especificaes como estru(21) ou estru+7(14) so aceitas e
manipuladas com um nico campo do tipo c. Um acesso como estru+57(2), entretanto,
como mostrado na figura 11.6 produz um erro em um programa Unicode.
Em programas Unicode para os parmetros especificados em uma instruo
PERFORM, no possvel especificar uma rea de memoria fora do parmetro atual
usando incio e/ou comprimento, pois isto poderia definir o tamanho do parmetro
implicitamente.
Dica: Anteriormente, Acessos de inicio e/ou comprimento atravs dos campos podia
ser utilmente implementado na instruo ASSIGN para processar grupos repetidos em
estruturas. Para habilitar isto em um programa Unicode, a instruo ASSIGN deve ser
incrementada com os adicionais RANGE e INCREMENT.
As diferenas mais importantes no comportamento de programas Unicode e
no Unicode so as alteraes nas regras de converso para estruturas, atribuies e
comparaes.

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.

Figura 11.8 Atribuindo uma Categoria de Ampliao


NVEL
No classificado
No amplivel

SIGNIFICADO DA CATEGORIA
A estrutura no possuis uma categoria de
ampliao
A estrutura no pode ser ampliada

264
Amplivel e em forma de caractere

Todos os componentes da estrutura e


suas ampliaes deve ser do tipo
caractere e flat.
Amplivel e em forma de caractere ou Todos
os
componentes
e
suas
numrico
ampliaes devem ser flat.
Amplivel como pretendido
Todos
os
componentes
e
suas
ampliaes podem ter qualquer tipo de
dados; por exempli, voc pode incluir um
componente do tipo tabela.
Tabela 11.2 Significados das categorias de ampliao
Em programas Unicode, o processamento de bytes e cadeias de caractere
estritamente separado. Os operandos do processamento de string de bytes devem ser
objetos de dados do tipo byte, e os operandos no processamento de string de
caracteres devem ser objetos de dados do tipo caractere. Em programas no Unicode,
strings de bytes so manipulados da mesma maneira que strings de caracteres.
Em programas Unicode, instrues que podem ser usadas para
processamento de cadeias de bytes ou caracteres precisam que seja feita uma
distino atravs do adio IN BYTE MODE ou IN CHARACTER MODE. Neste caso IN
CHARACTER MODE o padro. Os mesmo adicionais so usados para instrues que
determinam o comprimento e inicio (apesar de que nestas instrues estas
especificaes so obrigatrias): DESCRIBE FIELD...LENGTH e DESCRIBE DISTANCE.
Um exemplo de ambos os modos exibido na listagem 11.1
DATA:
lv_text TYPE c LENGTH 1.
lv_hex TYPE x LENGTH 1.
lv_blen TYPE i.
lv_clen TYPE i.
lv_bytes TYPE i.
DECRIBE FIELD lv_text: LENGTH lv_blen IN BYTE MODE.
LENGTH lv_clen IN CHARACTER MODE.
lv_bytes = lv_blen / lv_clen.
Listagem 11.1 Calculando bytes por caractere.
Existem operadores relacionais para cadeias de byte e cadeias de caracteres.
Em programas Unicode, os ltimos (por exemplo: CO, CA, CS) no podem mais ser
usados para cadeias de bytes. Para cadeis de bytes, existem novos operadores
relacionais (por exemplo: BYTE-CO, BYTE-CA, BYTE-CS). Portanto voc deve usar:
IF lv_hex1 BYTE-CO lv_hex2.
ao invs de
IF lv_hex1 CO lv_hex2.
De mesma forma, as funes de descrio esto divididas em funes para
cadeias de byte e funes para cadeias de caracteres. Particularmente, em um
programa Unicode, STRLEN agora pode ser usado para argumentos do tipo 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:

Deve ser possvel trocar dados entre sistemas Unicode e no Unicode.


Deve ser possvel trocar dados entre sistemas Unicode diferentes.
Deve ser possvel trocar dados entre sistemas no Unicode diferente que usam
paginas de cdigos diferente.

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.

O problema com listas ABAP corrigir o alinhamento de colunas dos


caracteres do leste asitico: Em sistemas Unicode, o numero de clulas de memoria
no igual ao numero de colunas de tela se os textos contiverem caracteres do Leste
Asitico (caracteres de comprimento completo). As clulas de memria usadas para
este tipo de caracteres (campos do tipo c com comprimento 1) so 8 bits em sistemas
no Unicode e 16 bits em sistemas Unicode. Em sistemas Unicode, quase todos os
caracteres (includo caracteres do Leste Asitico) cabem em uma clula de memoria.
Entretendo caracteres de comprimento completo do Leste Asitico usando duas
colunas nas listas ABAP, enquanto caracteres Europeus usam apenas uma coluna.

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.

1. Validaes Unicode podem ser feitas:


a. Em qualquer sistema (aps a release 6.10) especificando que o programa
possui as validao Unicode ativas.
b. Rodando a transao UCCHECK
c. Apenas em um sistema Unicode ou como parte da converso para um
sistema Unicode.

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.

Torna a tabela compatvel com Unicode


Especifica os tipos de mudanas que podem ser feitas a estrutura
Pode produzir avisos em pontos incompatveis para a estruturas.
Pode identificar onde o comportamento do programa pode variar.

6. Em sistemas Unicode ao abrir um arquivo no TEXT MODE, voc deve


especificar:
a. A adio ENCODING.
b. A ordem do byte
c. A pgina de cdigos
7. Em sistemas no Unicode ao abrir um arquivo no TEXT MODE, voc deve
especificar:
a. A adio ENCODING.
b. A ordem do byte
c. A pgina de cdigos

Questes Prticas, Respostas E Explicaes.

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

Design com telas do pintor Tela


Design do status GUI e ttulo GUI usando o menu pintor
Definir o status GUI e os cdigos de processo em funo do processo aps a
entrada lgica de fluxo de tela
Compreender eventos tela, tais como processo antes da sada, aps o
processo de entrada, processo em pedir ajuda, e processo sobre o valor
pedido.
Escrever programas de dilogo

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.

Neste captulo vamos abordar a programao do mdulo pesquisa e os objetos


de vrios programas necessrios para criar um programa conjunto de mdulo. Ns
cobriremos design de tela usando a tela do pintor, os eventos da tela, e lgica de fluxo
de tela. Vamos cobrir o status GUI e GUI design ttulo e seu uso na programao de
dilogo. Finalmente, vamos cobrir o processamento tela, modificando dinamicamente
telas, e desing tela usando controles da tabela.
Caso Real: Voc tem escrever um programa de dilogo personalizado para o seu
cliente, que lhes permitam manter os dados dos funcionrios mestre e das
informaes da folha de pagamento, porque a aplicao SAP padro no satisfaz suas
necessidades de negcios.
O aplicativo deve ter duas telas: na primeira tela voc vai digitar as informaes
pessoais dosfuncionrios, e na segunda voc vai inserir os dados da folha de
pagamento-relacionados. O programa de dilogo deve permitir ao usurio inserir os
dados na tela e salvar os dados no banco de dados quando o usurio clica no boto
Salvar na tela. O programa de dilogo tambm deve ter a opo de editar e exibir os
dados salvos. O programa de transao deve ser amigvel e deve validar entrada do
usurio e exibir Ajuda F1 para os campos da tela e ajuda a valor atravs da tecla F4,
sempre que possvel.

Objetivos Desta Parte Do Teste


O objetivo dessa parte do exame verificar o seu conhecimento sobre os
programas de dilogo. Est prevista para ser capaz de escrever um programa de
dilogo. Voc deve ser capaz de fazer telas de design usando o Painter Screen,
desing um status GUI usando o Painter Menu, e criar ttulos para uma tela GUI. Voce
tambem deve estar ciente dos possiveis eventos, tais como PBO (processo antes da
sada), PAI (processo aps entrada), POH (processo no pedido de ajuda), e POV

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.

Figura 12.1 pintor Tela - Tela de definio de atributo

Os atributos de tela em geral so especificados na guia Atributos. Os seguintes


so alguns dos atributos necessrios a tela para criar uma tela:

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.

Cuidado: Nmeros de seleo de tela e os nmeros de pintor tela pertencem ao


mesmo namespace, por isso seu nmero de tela de dilogo no pode ser 1000, se o
programa tem uma tela de seleo tambm.

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

Figura 12.2 - Criar layout de tela


O editor de layout grfico tem trs botes, como ilustrado na figura 12.2:

Manter atributos do elemento


o botao manter os atributos do elemento abre uma nova janela para
voc manter os atributos elemento da tela. Estes diferem dependendo do tipo
de elemento que voc escolheu, por exemplo, um campo de entrada ou boto.
Figura 12.3 (pgina 351) exibe elemento da tela de manuteno do atributo.
voc pode definir atributos gerais, como grupo de tela, cdigo de funo, tipo
de funo, procure ajuda, ID parmetro, e assim por diante. Voc tambm pode
especificar os atributos do dicionrio, atributos do programa, e os atributos de
exibio para os elementos de tela.

Figura 12.3 - atributo do elemento de tela.

Dicionrio / programa de campos

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)

Figura 12.4 selecione elemento da tela - dicionrio / programa de campos

Figura 12.5 - Lista elemento da tela.


Cada tela possui campos OK de 20 caracteres, que no mostrado na tela e
que voc deve nomear. O nome que usualmente chamamos OK_CODE. O campo
OK tambm referenciado como um function code. Voc precisa atribuir um nome ao
campo OK para usar este no programa. Voc tambm precisa declarar uma varivel
com exatamente o mesmo nome, do tipo SY-UCOMM. Por este caminho, o contedo
automaticamente transportado da tela para o programa ABAP. Uma ao do usurio
aciona o evento PAI, e o cdigo de funo escolhido pelo usurio armazenado no

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.

Dica: Os pontos a seguir so recomendaes para desenho de layout de tela:

recomendado que voc use tabelas do Dicionrio ABAP ou estruturas para


definir layout de tela. Isto conduz os campos de tela podem adotar os atributos
do dicionrio como label do campo, ajuda de valores, e ajuda F1. Voc no
pode escrever funes POH ou POV, a menos que voc queira sobrescrever
funes F1/F4 do Dicionrio ABAP.

Se voc usar o Dicionrio ABAP, o sistema fornece a voc verificao de


consistncia automtica para campos de entrada. Estas verificaes incluem
verificaes de tipo, chave estrangeira, e verificao de valores fixos. Todas
estas verificaes so automaticamente suportadas com as informaes no
Dicionrio ABAP.

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.

Fluxo Lgico De Tela


O fluxo lgico de tela criado depois dos atributos de tela e do layout da tela
ser definido. O fluxo lgico da tela criado no editor de fluxo lgico do Screen Painter,
e voc no pode usar instrues ABAP diretamente ali. Telas tem seus prprios grupos
de palavras chave parar serem usadas nos blocos de eventos PBO, PAI, POH e POV.
As palavras chave permitidas para o fluxo lgico da tela so mencionadas em seguida
nesta sesso.
Voc cria chamadas especiais de mdulo no fluxo lgico da tela, e este
mdulo que contm as instrues ABAP. Mdulos so como sub-rotinas para telas.
Eles podem ser criados por duplo-clique no nome do mdulo no editor de fluxo lgico
ou por duplo-clique no nome do programa na transao SE80. Mdulos que so
chamados no bloco de processamento PBO devem ser definidos usando a instruo
MODULE <name> OUTPUT e ENDMODULE no final. Os mdulos que so chamados
no bloco de processamento PAI devem ser definidos usando MODULE <name> INPUT
no programa ABAP.
Se voc cria o mdulo usando forward navigation, ento este ir ser criado com
a sintaxe acima mencionada. O cdigo 12.1 mostra o fluxo lgico de tela, e o cdigo
12.2 mostra a definio do mdulo para uma definio no fluxo lgico da tela.

279

Cdigo 12.1 Fluxo lgico de tela

Cdigo 12.2 Definies de mdulos PBO e PAI


O fluxo lgico deve conter no mnimo duas instrues PROCESS BEFORE
OUTPUT e PROCESS AFTER OUTPUT, e estes so criados automaticamente quando
voc cria a tela. A tabela 12.1 mostra as palavras-chave que voc pode usar nestes
blocos de evento.

Palavra-chave

Funo

MODULE

Chama um mdulo de dilogo em


programas ABAP

FIELD

Especifica o ponto em que o


contedo deste campo de tela deve ser
transportado

ON

Usado em conjunto com FIELD

VALUES

Usado em conjunto com FIELD

CHAIN
ENDCHAIN

Comea
processamento

uma

cadeia

de

Termina

uma

cadeia

de

280
processamento
CALL

Chama uma subrotina

LOOP

Comea o processamento de uma


tabela de tela

ENDLOOP

Termina o processamento de uma


tabela de tela

Tabela 12.1 Palavras-chave para fluxo lgico de tela.

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

As instrues CHAIN e ENDCHAIN podem ser usadas para validar entradas do


usurio em um conjunto de campos em uma tela de dilogo. Voc pode enviar uma
mensagem de erro ou alerta do mdulo que chamado usando a instruo FIELD.
Todos os campos que permanecem no processamento dentro da instruo CHAIN e
ENDCHAIN so lidos por entrada se uma mensagem de erro ou alerta for enviada pelo
mdulo. Para mensagem de alerta, todos os campos dentro do bloco chain sero lidos
pela entrada, mas voc pode continuar com a transao pressionando a tecla Enter.
Entretanto, para uma mensagem de erro voc tem que resolver o erro e ento voc
pode proceder com a transao.
Se voc usar a instruo FIELD fora de uma instruo CHAIN, apenas um
campo simples feito leitura de entrada quando uma mensagem de alerta ou erro
mostrada, entretanto com as instrues CHAIN e ENDCHAIN, o conjunto de campos
com o bloco de instrues feito leitura para entrada se um erro ou alerta for
mostrado. O Cdigo 12.4 mostra o fluxo lgico de tela para uma verificao de entrada
com as instrues CHAIN e ENDCHAIN, e o cdigo 12.5 mostra o mdulo para uma
verificao de entrada.

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

Cdigo 12.5 Mdulo de verificao de entrada.

ON INPUT

O adicional ON INPUT para a instruo FIELD chama o dilogo ABAP quando o


campo de entrada contem um valor diferente do valor inicial. O valor inicial para o
campo de tela determinado pelo tipo de dados do campo de entrada. O valor inicial
espao ( ) para campos caracter e 0 (zero) para campos numricos.

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.

ON CHAIN-INPUT e ON-CHAIN REQUEST

Os adicionais ON CHAIN-INPUT e ON-CHAIN REQUEST trabalha na mesma


linha do ON INPUT e ON REQUEST exceto por o mdulo de dilogo ABAP ser
chamado se no mnimo um campo listado na instruo FIELD dentro da instruo
CHAIN satisfaz a condio. O Cdigo 12.6 mostra a condio um dilogo ABAP.

Cdigo 12.6 Dilogo ABAP condicional

AT CURSOR-SELECTION

O adicional AT CURSOR-SELECTION chama o mdulo de dilogo ABAP se o


cursor est posicionado em um elemento de tela particular.
Verificaes de entrada automtica so executadas no evento PAI antes dos
dados serem transferidos ao programa ABAP. As verificaes automticas so
executadas baseadas nos atributos dos elementos de tela. Se um campo de tela
obrigatrio, ento o usurio precisa entrar dados antes do bloco de eventos PAI ser
iniciado. Se os campos de entrada de tela referenciarem a um campo do dicionrio
ABAP, ento a validao a nvel de campo definida no dicionrio ABAP como sendo
verificao, ao contrrio de check tale ou valores de domnio fixados executado
antes que o processamento PAI seja iniciado.
O usurio entra em um campo devendo atender ao formato definido para o
campo no Screen Painter; por outro lado, o usurio tem uma mensagem de erro antes
que o processamento PAI seja iniciado. Neste caso, voc pode sair da tela apenas
entrando com um valor vlido ou selecionando o item de menu com a funo do tipo E.
Para o item de menu com tipo de funo E voc deve codificar a sada lgica dentro
do mdulo de dilogo definido com o adicional AT EXIT-COMMAND no PAI. Cdigo
12.6 mostra o uso de AT EXIT-COMMAND no fluxo lgico da tela, e Cdigo 12.7
mostra o cdigo no mdulo para AT EXIT-COMMAND.

284

Cdigo 12.7 Mdulo para AT EXIT-COMMAND

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.

Cdigo 12.8 Verificao de entrada no fluxo lgico de tela

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

Cdigo 12.9 Verificao de entrada em Dilogo ABAP

286

Cdigo 12.10 Dilogo ABAP para verificao de entrada

O fluxo lgico MODULE_1 chamado usando a instruo FIELD para o campo


input1. Se uma mensagem de erro acionada para o module_1, ento o campo input1
ser lido por entrada novamente, permitindo o usurio entrar um novo valor.
De maneira parecida, se uma mensagem de erro ou alerta for enviada pelo
mdulo usando a instruo FIELD dentro de CHAIN e ENDCHAIN, ento todos os
campos dentro das instrues CHAIN e ENDCHAIN sero lidos para entrada. No
Cdigo 12.11, se o mdulo CHAIN_MODULE_2 envia uma mensagem de erro, ento
todos os campos dentro de CHAIN e ENDCHAIN sero lidos para entrada novamente.

Cdigo 12.11 Verificao de campo de entrada em dilogo ABAP

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.

Voc pode mostrar documentao suplementar de elemento de dados para ajuda F1


se a documentao do elemento de dados no for suficiente para sua aplicao. Voc
pode mostrar ou manter a documentao suplementar de elemento de dados via
caminho de menu Ir Para->Documentao->Documentao Suplementar. A
documentao suplementar de elemento de dados especfica do programa e da tela,
e o link mantido na tabela THLPF. A Figura 12.6 mostra o link suplementar de
elemento de dados para o elemento de dados do Dicionrio de dados MATNR,
seguido do programa e da tela para cada documentao extra que foi criada.

287

Figura 12.6 Tabela de entrada para Ajuda suplementar de elemento de dados

A sintaxe para mostrar a documentao suplementar de elemento de dados


para ajuda F1 a seguinte:
PROCESS ON HELP-REQUEST.
FIELD mara-matnr MODULE f1_help_matnr WITH var.
Voc pode popular o var no MODULE fi_help_matnr ou usar a forma literal da
varivel:
PROCESS ON HELP-REQUEST.
FIELD mara-matnr WITH 0090.
A sintaxe anterior apenas vlida se o programa, nmero de tela, nome de
campo e nmero da documentao suplementar forem mantidos na tabela THLPF.

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

Cdigo 12.13 Implementao de ajuda F1 para Mdulo de dilogo


Similar ajuda F1, voc pode mostrar ajuda de campo F4 baseado em campos
do dicionrio ABAP, baseado em atributos de campos de tela onde voc pode anexar
uma ajuda de pesquisa para o campo de entrada, ou escrevendo seu prprio mdulo
de dilogo. Voc usa a sintaxe em Cdigo 12.14 para ajuda de valores se voc est
indo ao programa no prprio fluxo lgico:

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

Codificando para ajuda F4 no mdulo value_carrier e value_connection. O


Cdigo 12.15 mostra a ajuda de valor codificada dentro do mdulo.

Cdigo 12.15 Implementao de Ajuda de entrada F4


Entretanto, recomendado que voc use a ajuda de campo do dicionrio
ABAP. Voc pode tambm anexar uma ajuda de pesquisa no atributo de campo da
tela. Por isso, recomendado que voc programe a ajuda de entrada se voc procura
sobrescrever a ajuda de entrada do dicionrio ABAP.

Status GUI e Desenho de Ttulos


O status GUI e ttulo GUI juntos fazem a interface do usurio para a tela. O
status GUI para uma tela consiste de uma barra de menu, uma toolbar padro, a
toolbar de aplicao, e as configuraes de teclas de funo, e desenhada usando a

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.

Figura 12.7 Interface do usurio SAP

Menus so elementos que fornecem o usurio com um range de funes que


so relevantes para a tela ou aplicao. Uma barra de menu feita de menus
individuais e podem ter at oito menus incluindo os menus Ajuda e Sistema. As
entradas abaixo do menu podem ser funes, separadores, ou submenus. Para criar
um status GUI no Menu Painter, crie o status, crie a barra de menu e crie a entrada de
menu, define a configurao de teclas de funo, define a toolbar padro e barra de
aplicao, e como passo final, ative o status.
NOTA: Os menus Sistema e Ajudas esto sempre presentes para toda tela e tem
funes idnticas que no podem ser modificadas.
Uma vez que voc tem criado o status GUI, voc precisa criar a barra de menu
e ento criar as funes e entradas individuais de menu. Para criar uma barra de
menu clique no cone EXPAND ( ) do campo texto da barra de menu e ento entre o
ttulo do menu (ou use a padro predefinida), e substitua o primeiro titulo de menu.
Cada menu pode ter at 15 entradas ou funes. Para adicionar funes
menu, D um duplo-clique na barra de menu e ento adicione o cdigo de funo e
texto da funo nas colunas Cdigo e Texto, respectivamente. Para adicionar
submenus entre apenas com o texto na coluna Texto, duplo-clique, e ento entre o
cdigo e texto no menu em cascata. A funo dentro do menu pode ser ativa ou
inativa. Voc pode ativar ou desativar itens de menu pelo caminho de menu Extras>Ativar Funes<->Desativar Funes. Voc pode tambm ativar ou desativar o item

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

Cdigo de funo normal processado no mdulo PAI. Para um cdigo de


funo normal voc pode deixar a funo tipo Blank; isto , blank
significa cdigo de funo normal.

Aciona um mdulo AT EXIT-COMMAND no bloco de processamento PAI

Chama outra transao

Aciona uma funo do sistema e usada internamente em aplicaes


SAP standard. Voc no deve usar este em sua prpria aplicao.

Aciona uma funo definida localmente no GUI. Esta funo no aciona


o evento PAI; entretanto, isto processado no nvel de apresentao do
servidor.
Como bom exemplo deste tipo de funo que cdigos de funo
anexados s abas, onde o usurio pode trocar entre abas sem nenhuma
lgica acontecer no fluxo lgico da tela.
Tabela 12.2 tipos de funes em um sistema ABAP.

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.

Figura 12.8 Tela de atributos de Cdigo de Funo

A Figura 12.9 mostra a configurao de funo para item de menu no status


GUI com o atributo Caminho Rpido.

Figura 12.9 Status GUI com atributos de Cdigo de Funo.

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.

Funes chave reservadas so as que atribuem valores que no podem ser


mudados e so atribudas para funes na toolbar standard. Voc pode ativar
ou desativar suas funes na toolbar standard, apesar de voc no puder
mudar as funes chaves atribudas. Estas funes aparecem sobre o padro
standard nas telas e listas.
Funes keys recomendadas tem um propsito pelo sistema SAP e atende aos
padres de ergonomia do sistema SAP; que , a mesma funo
representada pela funo para ser representada pela mesma funo chave
tambm na sua tela.
Livremente atribudo funes chave podem ser usadas atribuir uma funo
chave para qualquer outro cdigo de funo.

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

Figura 12.10 Criar Gui Status

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.

Figura 12.11 interface do Menu Painter


Maioria das funes deve aparecer nos menus e sobre a aplicao toolbar,
porque alguns usurios preferem menus e alguns preferem botes. A aplicao toolbar
pode ser criada pelo click no Expand Icon da aplicao toolbar text. Cada aplicao

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.

Figura 12.12 Definio de Ttulo GUI


Configurando O Gui Status E O Ttulo Gui
O status GUI e o ttulo GUI so atribudos em uma tela um mdulo de dilogo
chamado no evento PBO. recomendado que voc defina o GUI status e o ttulo GUI
para cada tela. Se voc no atribuiu o GUI status e o ttulo GUI para a tela, ento
herdada da tela anterior a transao.
Uma tela pode ter mais que uma GUI status. Por exemplo para mostrar e para
alterar pode ser diferente. Entretanto a GUI status pode ser assinalado dinamicamente
para a tela. A GUI status e o ttulo GUI so definidos no evento PBO usando a
instruo SET PF-STATUS e SET TITLEBAR, respectivamente, dentro do mdulo de
dilogo PBO. Voc tambm pode definir botes em sua tela e assinalar o cdigo de
funo e usar isto ao invs do cdigo de funo ou itens de menu definidos via o GUI
status.
A sintaxe para atribuir o GUI status e o ttulo GUI para a tela mostrada na lista
12.16.

296

Lista 12.16 Assinalando o GUI status e o ttulo GUI no mdulo PBO

A sintaxe para definir o ttulo que contm variveis a seguinte:


SET TITLEBAR XXX WITH <&1> ... <&9>
onde XXX o nome do ttulo e o <&1> at <&9> so variveis de 1 at 9.
O status GUI pode ter muitos itens de menus e funes, mas estes podem
estar desabilitados ou desativados dinamicamente no evento PBO dentro do mdulo
de dilogo ou como eles tambm podem ser desativados no Menu Painter. As funes
podem ser desativadas usando o EXCLUDING<fcode> adicionado com o comando
SET PF-STATUS.<fcode> pode ser hard-coded, uma varivel, ou uma tabela interna
contendo cdigos de funo. A tabela interna deve ter todas as funes que devem ser
desativadas. A sintaxe para desativar o cdigo de funo do status GUI mostrado na
lista 12.17.

Lista 12.17 Exemplo de cdigo para desativar cdigo de funo

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

Programando Table Control


Uma table control uma rea da tela que usada para mostrar ou entrar com
dados em uma forma tabular. Um table control tem uma table header, column headers
e columns. Em modo de execuo, um table control fornece as funcionalidades da
barra de rolagem vertical e horizontal, tamanho da coluna, da linha, seleo da coluna
e a habilidade para mudar a posio da coluna. Figura 12.13 mostra os vrios
componentes dos table controls.

Figura 12.13 Componentes do Table Control


Para definir um table control tem que definir um table control area, o table
control elements e o table title para o table control. Todas estas definies dentro do
Screen Painter. Voc tambm precisa declarar o table control no programa. O cone

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

Indica se o control table deve ter ttulo ou no

W/ColHeads

Permite criar ttulos de coluna para table control

Configbl

Permite ao usurio salvar as configuraes do tabel control em


tempo de execuo

Resizing

Indica que a tabela suporta tamanhos na vertical e horizontal

Separators

Voc pode especificar se voc quer ter separadores verticais e


horizontais para colunas e linhas da tabela

Line Sel.

Permite ao usurio selecionar linhas. Voc tem a opo de NONE,


SINGLE e MULTIPLE linhas selecionadas

Column

Permite seleo de colunas. Escolha NONE, SINGLE or MULTIPLE

w\Sel.
Columns

Especifica se de uma coluna de seleo da linha deve aparecer para


o table control. Voc deve especificar o nome desta coluna se voc
quiser ter a coluna de seleo da linha

Fixed
Column

Exclui uma ou mais colunas da rolagem horizontal

Tabela 12.3 Atributos do Table Control

A sintaxe para o table control no programa :


CONTROL flights TYPE TABLEVIEW USING SCREEN 100
O nome do table control flights, e criado na tela 100. O nome do table
control em um programa ABAP deve ser idntico ao table control criado na tela.

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.

Figura 12.14 Fluxo lgico sem tabela interna

Figura 12.15 Fluxo Lgico com 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.

Figura 12.16 Estrutura do table control


A habilidade para scroll usando scroll bar automaticamente implementada e
gerenciada pelo sistema. O control flights-lines deve setar para o nmero de linhas na
tabela interna antes de voc editar o table control. Voc pode facilmente implementar o
cdigo para scrolling do table control tal como um page up, page down ou goto page
n usando os atributos do table control.

Figure 12.17 Estrutura da coluna do table control


Figura 12.18 mostra o uso do atributo table control para implementar page up e
page down, funcionalidades para scrolling do table control.

301

Figura 12.18 Implementao da funcionalidade Scroll com o atributo table control


DICA: Ver o programa demo_dynpro_tabcont_loop e demo_dynpro_tabcont_loop_at
no sistema SAP para implementar o table control.

Modificando Telas Dinamicamente


Voc normalmente seta o atributo do elemento da tela no screen painter, mas
tambm possvel substituir o atributo de tela no programa ABAP com a tabela de
sistema SCREEN. SCREEN uma tabela interna com header line, e voc no precisa
declarar isto no programa. Voc no v esta tabela no Debugger, e voc pode acessar
isto atravs do header line. Tabela 12.4 mostra a estrutura da tabela SCREEN.

302

Tabela 12.4 Estrutura Screen Table


Voc pode modificar o atributo do elemento da tela no programa ABAP no
PBO. Voc tem uma entrada para cada elemento de tela no sistema de tabela interna
SCREEN. Voc sobrescreve o atributo esttico da tela modificando o atributo da tela
no evento PBO. Lista 12.19 mostra um exemplo de cdigo para modificar o atributo da
tela no programa ABAP.

Lista 12.19 Exemplo de cdigo para Modificar o atributo da tela dinamicamente no


programa

CRIANDO UM PROGRAMA MDULO POOL


Telas podem ser criadas para programas executveis, grupo de funes e
modulo pools. Voc pode iniciar uma tela em um programa executvel grupo de
funo usando a funo CALL SCREEN, mas telas no mdulo pools somente podem

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.

O nome do programa para o programa de pool de mdulos deve iniciar com


SAPMZ e depois qualquer nome significativo. Por exemplo ns iremos usar o nome
SAPMZDEMO. Voc cria o programa de pool de mdulos no ABAP workbench, e isto
prope o mdulo top include. Voc deve selecionar uma sugesto e continuar. O nome
do mdulo top include para o nome de cima do proposto programa de mdulo pool
pelo sistema MZDEMOTOP.
Depois de criado o programa mdulo pool, voc pode criar novos objetos
programas como uma tela, GUI status, e ttulos GUI para seu programa de menu
contexto no objeto de rea de navegao. Figura 12.19 mostra o menu de contexto
(Create - Program) usado para criar o objeto programa da rea de navegao objeto.

Figura 12.19 Menu de Contexto para criar Programa Objeto


Ento voc cria a tela, fluxo de lgica da tela, GUI status e ttulo GUI para o
programa, seguindo o mdulo de dialogo no programa ABAP. Voc pode criar o
mdulo de dilogo para a navegao seguinte do fluxo lgico de tela. O nome padro

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.

1. Quais frases so corretas:

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.

Respostas E Explicaes Das Questes


1. Correta: B
O atributo de tela pode ser mudado no evento PROCESS BEFORE OUTPUT
2. Correta: A
A sequencia de tela pode determinar do do contedo para o prximo atributo de
campo, mas ele pode ser sobrescrito.
3. Correta: A
Se o prximo atributo de tela no especificado ento o sistema ir processar
do ponto que a tela foi iniciada. Basicamente, uma prxima tela de 0/space termina a
sequencia de tela. Isto pode resultar na sada do usurio da aplicao.
4. Correta: A
O prximo atributo de tela pode ser sobrescrito temporariamente usando a
instruo SET SCREEN.
5. Correta: 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

de Uma tela de dilogo desenhada com o Screen Painter. Voc seta


os atributos da tela geral sobre os atributos de tela, desenha o
layout de tela, seta o atributo de campo na lista de elemento e
escreve o fluxo lgico no editor de fluxo lgico. Os passos so
requeridos para cada tela.

Eventos
Tela
dilogo

da Para cada tela de dilogo voc pode ter at quatro eventos: o


de PROCESS BEFORE OUTPUT, PROCESS BEFORE INPUT,
PROCESS ON-HELP REQUEST e PROCESS ON VALUEREQUEST. Voc pode escrever o cdigo para estes quatro eventos
para a tela de dilogo. O evento PBO e PAI so requisitos,
considerando que POH e POV so opcionais.

Status GUI

Um status GUI criado com o Menu Painter e requisito para


qualquer tela. Status GUI atribudo para a tela para definir o
menu bar, menu item application toolbar, etc.

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:

Explicar o objetivo das telas de seleo.


Projeto de uma tela de seleo
Criar campos de entrada com PARAMETERS e SELECT OPTIONS
Definir a tela de seleo com controle tabstrip (barra de guias)
Definir os eventos de telas de seleo e seu processamento
Implementar as verificaes de entrada na tela de seleo

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.

Objetivos Desta Parte Do Teste


O objetivo desta parte do exame de certificao examinar o seu
entendimento a respeito da tela de seleo. O exame ira verificar seu conhecimento
sobre as varias opes disponveis para desenhar a tela de seleo.

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.

Projeto De Tela De Seleo


A tela de seleo para um programa ABAP definida usando instruo de
linguagem ABAP declarativa, ao contrario de tela de dialogo, que so projetadas
usando o Screen Painter e Menu Painter. As duas instrues para definir as telas de
seleo so PARAMETERS e SELECT OPTIONS.

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.

Figura 13.1 Texto de seleo para os Parmetros de seleo de tela.


O exemplo a seguir define a tela de seleo usando a instruo PARAMETERS:
REPORT ZREL01G02
PARAMETERS: p_lifnr TYPE bsik-lifnr OBLIGATORY,
p_data TYPE datum default sy-datum,
p_price TYPE P DECIMALS 2.
Figura 13.2 mostra a tela de seleo para o cdigo acima.

Figura 13.2 Tela de seleo com a instruo PARAMETERS.


Com a adio DEFAULT voc pode definir o valor padro para o parmetro. O
valor padro mostrado na tela quando o usurio executa o programa, e ele pode
alterar este valor padro na tela de seleo se quiser. A adio OBLIGATORY usada
para declarar o campo de entrada como campo obrigatrio na tela de seleo. A
adio de MEMORY ID <PID> usada para especificar o valor para o campo de
entrada da memoria do SAP. <PID> o PARAMTER ID para o elemento de dados
definido no dicionrio ABAP. Memria SAP uma rea especifica de memoria do
usurio em que o valor armazenado para este PARAMETER ID para a durao da
seo do usurio. Voc usa SET / GET PARAMETER ID para armazenar ou recuperar
os valores da memoria.
Voc tambm pode usar a instruo PARAMETERS para declarar uma caixa de
seleo ou um boto de opo na tela de seleo. A caixa de seleo definida

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.

Caixa de seleo pode ser usado para seleo de dados ou controle de


programa. Tecnicamente, uma caixa de seleo um campo de do
caractere do tipo C e tamanho 1 e pode ter o valor X ou vazio ( ).
Voc pode fornecer um valor padro para a caixa de seleo como ou
parmetro do objeto durante a definio, ou o usurio pode marcar ou
desmarcar a caixa de seleo na tela de seleo. O PARAMETER tem o
valor X se a caixa de seleo marcada; caso contrario, ele tem um
valor vazio. Estrutura 13.1 um cdigo de exemplo para definir e usar
uma caixa de seleo no programa.
REPORT ZDEMO_CHECKBOX.
PARAMETERS: p_dispall AS CHECKBOX,
p_archfl AS CHECKBOX DEFAULT X.
IF dispall IS INITIAL.
WRITE: /Display Error Records Error Only.
ELSE.
WRITE: /Dsplay All Records .
IF archfl IS NOT INITIAL.
Archive file
WRITE: / Archive File.
ENDIF.
Estrutura 13.1 Cdigo de exemplo para definir e usar uma caixa de
seleo no programa.

Boto de seleo sempre associado com um grupo que voc pode


selecionar apenas os botes do grupo. Tecnicamente, boto de seleo
um campo de caractere de tipo C e tamanho 1. Boto de seleo pode
ter um valor de X ou vazio ( ). O boto de seleo tem um valor X se
for selecionado na tela de seleo; caso contrario, tem um valor em
branco. Voc pode usar o boto de seleo no programa para controlar
o fluxo do programa. Em qualquer momento apenas um boto de
seleo no grupo pode ter um valor de X, e o resto dos botes de
seleo no grupo ter um valor em branco. Estrutura 13.2 um cdigo
de exemplo para definir o uso de um boto de seleo em um
programa.
REPORT ZDEMO_RADIOBUTTON.
PARAMETERS: p_pcfile AS RADIOBUTTON GROUP a.
p_appfile AS RADIOBUTTON GROUP a.
IF p_pcfile IS NOT INITIAL.
WRITE: /READ file from local PC.
Read file from PC.
ENDIF.
IF p_appfile IS NOT INITIAL.
WRITE: /READ file from application server.
Read file from application server

314
ENDIF.
Estrutura 13.2 Cdigo de exemplo para definir e usar um boto de
seleo em um programa ABAP.

Voc pode validar entradas de usurios em relao tabela de verificao ou


de valores fixos de domnio por trs do tipo de dicionrio ABAP. O valor de entrada
inserido na tela de seleo no ser validado se a adio VALUE CHECK no for
especificada para o PARAMETER. A verificao feita mesmo que o campo
PARAMETER, estiver vazio, ento voc deve usar o VALUE CHECK em um campo de
preenchimento obrigatrio. Com a declarao de parmetro a seguir, o usurio s
pode entrar com o valor definido na tabela de verificao ou o valor fixo definido no
domnio para o elemento de dados do dicionrio ABAP s_carr_id.
PARAMETERS: p_carrid TYPE s_carr_id VALUE CHECK.

SELECT OPTIONS (Opes de seleo)


A instruo SELECT OPTIONS usada para definir uma seleo complexa
que permite ao usurio entre com uma faixa de valores e critrios de seleo
complexos em vez de um nico campo de entrada. O nome da varivel para o campo
de entrada do SELECT OPTIONS pode ter at oito caracteres. A palavra chave
SELECT OPTIONS gera uma tabela de seleo. A tabela de seleo uma tabela
interna com uma estrutura padro e uma header line. A tabela interna para o SELECT
OPTIONS preenchida automaticamente com base no que o usurio digita no campo
de entrada do SELECT OPTIONS, assim voc no tem que preencher o campo no
programa.
A estrutura para a tabela interna consiste em quatro componentes:

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.

LOW (BAIXO) e HIGT (ALTO)


O tipo de dados para o LOW e HIGH so o mesmo que voc da para o
SELECT OPTION. LOW o limite inferior HIGH o limite superior para
o critrio de seleo, eles correspondem ao campo de entrada na tela.
Em combinao com o operador em OPTION, a faixa de valor especifica
os critrios de seleo para a seleo de dados.
Usar a adio FOR para especificar o objeto de dados j definidos em
seu programa, que deve ser usado para digitar, ou definir as
propriedades das opes de escolha. Ambos os campos limites LOW e
HIGH herda os atributos deste campo de referencia. Cada linha da
tabela de seleo formula uma condio para critrios de seleo
A sintaxe para declarar SELECT OPTIONS o seguinte:
TYPES: BEGIN OF ty_marc,
Matnr TYPE marc-matnr,
Werks TYPE marc-werks,
END OF ty_marc.
DATA: wa_marc TYPE ty_marc.
SELECT OPTIONS: s_matnr FOR wa_marc-matnr,
s_werks FOR wa_marc-werks.
MARC uma tabela, e matnr e werks so campos para a tabela MARC.
A declarao acima cria duas tabelas de seleo, s_matnr e s_werks,
com o campo de entrada correspondente na tela de seleo. Cada
instruo SELECT OPTIONS cria uma tabela de seleo. Figura 13.3
mostra a tela de seleo para a declarao acima.

Figura 13.3 Tabela de seleo para campo de entrada do SELECT OPTIONS


O usurio pode especificar vrios valores para cada um dos SELECT
OPTIONS. Figura 13.4 mostra a tela que especifica mltiplos valores para o campo de
entrada em uma tela de seleo.
Voc pode atribuir um valor padro para o SELECT OPTIONS. Usando a
seguinte sintaxe para definir o valor padro.

316

Para preencher o padro para o campo LOW usar:


SELECT OPTIONS: s_matnr FOR marc-matnr DEFAULT A123.
Para preencher o padro para os campos LOW e HIGH usar:
SELECT OPTIONS: s_matnr FOR marc-matnr
DEFAULT A123 TO B123.
Para preencher o padro para o campo OPTION usar:
SELECT OPTIONS: s_matnr FOR marc-matnr
DEFAULT A123 OPTION NE.
Para preencher o padro para o campo SING usar:
SELECT OPTIONS: s_matnr FOR marc-matnr
DEFAULT A123 SING E.
Para preencher o padro para todos os campos da tabela de seleo
usar:
SELECT OPTIONS: s_matnr FOR marc-matnr
DEFAULT A123 TO B123
OPTION NB SING I.

Figura 13.4 Faixa de valores para a tela de seleo


Voc pode preencher dinamicamente os valores padro em uma tabela de
seleo para os campos SELECT OPTIONS em um programa no bloco de eventos
INITIALIZATION. Para obter maior detalhes sobre o bloco de eventos INITIALIZATION
consulte o capitulo 9, programas bsicos ABAP e criao de interface.
Use a adio NO-EXTENSION para restringir o usurio a adio de apenas um
intervalo no campo de entrada do SELECT OPTIONS na tela de seleo da seguinte
forma:
SELECT OPTIONS: s_matnr FOR marc-matnr NO-EXTENSION.
Como resultado, o boto para varias selees no aparecera na tela de
seleo como mostrado na figura 13.5.

Figura 13.5 SELECT OPTIONS com a adio NO EXTENSION

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.

Figura 13.6 SELECT OPTIONS com a adio NO INTERVALS


Similarmente ao PARAMETERS, voc usa a adio MEMORY ID para GET/SET
os parmetros de ID para a tela de seleo. A adio OBLIGATORY usada para fazer
o campo LOW um campo obrigatrio na tela de seleo. Tambm, a opo NO
DISPLAY usada para esconder o campo de entrada na tela de seleo.
Voc tambm pode modificar os atributos para os elementos na tela de
seleo. Este recurso especialmente til para ocultar ou alterar os atributos do banco
de dados logico da tela de seleo dentro do seu programa personalizado. Voc pode
modificar os atributos de ambos os campos PARAMETERS e SELECT OPTIONS na
tela de seleo. O bloco de evento AT SELECTION SCREEN OUTPUT permite voc
modificar a tela de seleo diretamente antes de ser exibido. Na estrutura 13.3
mostrada um cdigo para modificar os atributos da tela de seleo.
REPORT ZDEMO_MODIF_SCREEN.
NODES: SPFLI, SFLIGHT.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN NAME = CARRID-HIGH.
SCREEN-ACTIVE = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Figura 13.3 Modificando atributos da tela de seleo.
Sem o cdigo dentro do bloco AT SELECTION SCREEN OUTPUT, a tela de
seleo para o programa com banco de dados logico aparece como mostrado na
figura 13.7, e com o cdigo para o AT SELECTION SCREEN OUTPUT da tela de
seleo aparece como mostrado na figura 13.8.

Figura 13.7 Tela de seleo sem modificao.

318

Figura 13.8 Tela de seleo com modificao.


Os textos da rea de seleo so armazenados como texto de seleo no
elemento de texto do programa. Estes textos da tela de seleo podem ser traduzidos
em outras linguagens. O elemento de texto para o programa pode ser acessado do
programa atravs do programa pelo menu Ir Para Elementos de Texto Textos
de Seleo. Textos de seleo tambm podem ser derivados do dicionrio ABAP se o
elemento da tela de seleo referem-se a tipos de dados do dicionrio ABAP como
mostrado na figura 13.1. A figura 13.9 e 13.10 mostram uma tela de seleo e o texto
de seleo para a tela de seleo em um programa ABAP.

Figura 13.9 Tela de seleo para o relatrio ABAP.

Figura 13.10 Tela de seleo de texto.


O usurio pode criar uma variante da tela de seleo para armazenar o valor
de entrada para a tela de seleo. Variantes de tela de seleo so uteis se o usurio
executa o programa com o mesmo conjunto de valores de entrada. Economiza seu
tempo e esforo. A variante tambm necessria se o programa esta programado
para ser executando em segundo plano, de modo que o sistema sabe que valores
devem ser usados para executar o programa.

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.

Figura 13.11 Tela de atributos de variante.


Voc pode definir uma tela de seleo padro e qualquer numero de tela de
seleo definidos pelo usurio. A tela de seleo padro chamada automaticamente
quando voc inicia o programa, enquanto que a tela de seleo definida pelo usurio e
chamada usando a instruo CALL SELECTION SCREEN no programa. A tela de
seleo padro tem o numero padro 1000, enquanto a tela definida pelo usurio pode
ter qualquer numero de tela exceto 1000.

Formatando A Tela De Seleo


A tela de seleo definidas pelas instrues PARAMETERS e SELECT
OPTIONS tem o seu prprio desenho no qual todos os PARAMETERS e SELECT
OPTIONS so includos linha a linha. A instruo SELECTION SCREEN permite que
voc especifique suas prprias opes de formatao para telas de seleo. Voc
pode definir o desenho dos parameters e critrios de seleo e pode exibir os
comentrios e sublinhar na tela de seleo. Alm disso, voc pode colocar botes na
tela de seleo ou na barra de ferramentas da aplicao. As opes de formatao
podem ser usadas na tela de seleo padro apenas se ele tiver um campo de
entrada.
Use a adio BEGIN OF BLOK <block> para agrupar logicamente os elementos
da tela e WITH FRAME para desenhar uma moldura em volta dos campos
relacionados logicamente. Voc tambm pode aninhar frames a uma profundidade de
cinco nveis. Voc deve atribuir um titulo a cada bloco, usando a adio TITLE; o bloco
de titulo pode ter um elemento de texto ou um nome de campo at oito caracteres
longos. Qualquer bloco precisa da adio END OF BLOCK para indicar onde o seu
fim.
A estrutura 13.4 mostra o cdigo para projetar o desenho da tela:
SELECTION SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
PARAMETERS: p_pc RADIOBUTTON GROUP a,
p_app RADIOBUTTON GROUP a,

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.

Figura 13.12 Formatao da tela de seleo.


Voc tambm pode exibir vrios parmetros e comentrios sobre a linha de
sada. Para isso voc precisa coloca-los entre SELECTION SCREEN BEGIN OF LINE
e SELECTION SCREEN END OF LINE. A adio COMMENT permite que voc inclua
texto em uma linha. Textos de comentrios devem ter sempre uma posio e
comprimento de sada. Voc pode definir a posio usando POS_LAW e POS_HIGH.
Estas so a posio dos limites inferiores e superiores, respectivamente, para os
campos SELECT OPTIONS na tela de seleo. Voc pode usar POSITION <POS> para
posicionar o cursor em uma linha para as prximas sadas. Esta adio s pode ser
utilizada entre BEGIN OF LINE e END OF LINE.
A estrutura 13.5 mostra a sintaxe para o uso da instruo BEGIN OF LINE para
projetar a disposio da tela de seleo:
SELECTION SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
PARAMETERS: p_pc RADIOBUTTON GROUP a,
p_app RADIOBUTTON GROUP a,
SELECTION SCREEN BEGIN OF LINE.
SELECTION SCREEN POSITION 4.
PARAMETERS p_logi RADIOBUTTON GROUP 002 DEFAULT X.
SELECTION SCREEN COMMENT 7(30) text-004 FOR FIELD p_logi.
PARAMETERS: p_lgfile TYPE fileintern.
SELECTION SCREEN END OF LINE.
SELECTION SCREEN BEGIN OF LINE.
SELECTION SCREEN POSITION 4.
PARAMETERS p_phy RADIOBUTTON GROUP 0002.
SELECTION SCREEN COMMENT 7(30) text-005 FOR FIELD p_phy.
PARAMETERS: p_phfile LIKE rfpdo-rfbifile.
SELECTION SCREEN END OF LINE.
SELECTION SCREEN END OF BLOCK a.
SELECTION SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-003.
PARAMETERS: p_check RADIOBUTTON GROUP c DEFAULT X, CHECK FL
p_pross RADIOBUTTON GROUP c. PROCESS THE FILE

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.

Figura 13.13 Tela de seleo Formatada.


Voc tambm pode adicionar linhas em branco para a tela de seleo usando
SELECTION SCREEN SKIP <n> ou um sublinhado, especificando SELECTION
SCREEN ULINE.
Tela De Seleo Com Subtelas
Tambm possvel definir telas de seleo com uma subtela em seu programa
ABAP, e ento estas telas de seleo podem ser includas como subtelas em uma tela
ou como parte de um controle tabstrip (barra de guias) na tela de seleo. O sistema
processa os eventos AT SELECTION SCREEN OUTPUT e AT SELECTION SCREEN
para cada subtela alm de processar a tela de seleo em torno. Consulte o capitulo
9, programao bsica ABAP e criao de interface, para mais informao sobre
eventos de programao. Voc trabalha com a varivel de sistema SYST-DYNNR para
determinar qual a tela ou subtela esta sendo processada. Se voc tem muitos campos
de sada na tela de seleo, pode ser uma boa ideia agrupar elementos da tala em
conjunto logicamente relacionados em telas separada (subtelas) e mostrar como
tabstrip (barra de guias).
A estrutura 13.6 define a tela de seleo como uma subtela e a inclui como
parte de um controle tabstrip (barra de guias).
SELECTION SCREEN BEGIN OF SCREEN 110 AS SUBSCREEN.
SELECTION SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-010.
SELECT OPTIONS: s_carrid FOR spfli-carrid,
s_conn FOR spfli-connid.
SELECTION SCREEN END OF BLOCK a.
SELECTION SCREEN END OF SCREEN 110.
SELECTION SCREEN BEGIN OF SCREEN 120 AS SUBSCREEN.
SELECTION SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-011.
SELECT OPTIONS: s_cntrfr FOR spfli-countryfr,
s_cityfr FOR spfli-cityfrom.
s_airpfr FOR spfli-airpfrom.
PARAMETERS:
s_depdt LIKE sy-datum.
SELECTION SCREEN END OF BLOCK b.
SELECTION SCREEN END OF SCREEN 120.

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.

Figura 13.14 tabstrips em uma tela de seleo.


Voc pode usar a adio opcional NESTING LEVEL para reduzir ainda mais o
tamanho para a tela de seleo. Voc pode usa-lo para evitar que apaream barras de
rolagem quando voc usa a subtelas em um controle de tabstrip na tela de seleo o
tabstrip j tem um quadro. Use MESTING LEVEL 0 se no houver quadro em torno do
controle tabstrip; caso contrario, para cada quadro em volta do controle tabstrip,
aumenta o NESTING LEVEL por um.
O controle da tabstrip definido pela seguinte syntax:

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.

Processamento Da Tela De Seleo


O ABAP em tempo de execuo controla o processamento da tela de seleo,
porque no temos acesso logica de fluxo da tela de seleo. O ABAP em tempo de
execuo fornece uma serie de eventos na tela de seleo antes que a tela seja
exibida e depois da ao do usurio na tela de seleo. Voc pode criar seu prprio
cdigo para controlar a exibio da tela ou para reagir ao do usurio sobre a tela
de seleo.
O processamento da tela de seleo inicia-se aps o evento INITIALIZATION.
Voc preencher o valor padro para o campo de entrada na tela de seleo no bloco
de evento INITIALIZATION. O bloco de eventos INITIALIZATION executado apenas
uma vez, mesmo se a tela de seleo for processada diversas vezes.
O evento AT SELECTION SCREEN OUTPUT permite modificar ou preparar
dinamicamente a tela antes que ela seja mostrada. Como o PBO para uma tela
clssica, este bloco de evento executado cada vez que a tela mostrada, ao
contrario do evento INITIALIZATION. O evento AT SELECTION SCREEN OUTPUT
disparado quando voc clicar no boto de seleo mltipla para o campo de entrada
do SELECT OPTIONS, boto de seleo dinmico, ou a tela tabstrip. Voc modifica os
atributos da tela neste bloco de evento. Este evento usado especialmente para
modificar a logica do banco de dados da tela de seleo se voc quiser esconder ou

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:

AT SELECTION SCREEN ON RADIOBUTTON GROUP <grupo>


Este evento disparado quando o usurio clica no boto execute na
tela de seleo, e ento o contedo do grupo de botes de opo
passado para o programa ABAP. Voc pode validar o todo o grupo, em
seguida com base na sua validao, envie uma mensagem de erro. O
grupo de botes de opo esta pronto para a entrada se uma
mensagem de erro disparada com o resultado da validao no mbito
do bloco de evento.
AT SELECTION SCREEN ON HELP REQUEST FOR <FIELD>
Este evento disparado quando o usurio chama a ajuda F1 na tela de
seleo. Voc pode desenvolver sua prpria rotina de ajuda para este
evento. A ajuda do dicionrio ABAP mostrada se nenhum bloco
correspondente para o evento for definido. Nos normalmente queremos
ver a ajuda do dicionrio ABAP se o campo de entrada se refere ao tipo
de dados do dicionrio ABAP.
AT SELECTION SCREEN ON VALUE REQUEST FOR <FIELD>
Este evento disparado quando o usurio chama a ajuda F4 no campo
da tela. A ajuda de valor mostra os valores possveis do dicionrio ABAP

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

O numero padro para a tela de seleo para o programa ABAP .


A 1000
B 100
C 1100
D Nenhum dos acima

Voc pode ter apenas uma tela de seleo para um programa ABAP.
A Verdadeiro.
B Falso.

A instruo declarativa para definir uma tela de seleo so.


A PARAMETERS.
B SELECT - OPTIONS.
C SELECTION SCREEN
D Nenhum dos acima

326
4

Voc usa a adio OBLIGATORY para definir o campo de entrada para um


parmetro como um campo de preenchimento obrigatrio.
A Verdadeiro.
B Falso.

qual das seguintes declaraes est correta.


A A instruo SELECT OPTIONS cria uma tabela interna com header line. A
tabela interna tambm conhecida como tabela de seleo.
B A estrutura para a tabela de seleo criada com SELECT OPTIONS tem
quatro componentes: SING, OPTION, LOW e HIGH.
C Voc pode usar a adio NO DISPLAY para esconder o campo de
entrada na tela de seleo.
D Voc s pode especificar valores padro para os campos LOW e HIGH
para o campo de entrada SELECT OPTIONS.

Sua tela de seleo pode ser modificada no evento.


A AT SELECTION SCREEN OUTPUT.
B AT SELECTION SCREEN.
C AT SELECTION SCREEN ON <nome do campo>.
D Nenhum dos acima.

Qual das seguintes afirmaes esta correta sobre o evento AT SELECTION


SCREEN no HELP REQUEST FOR <CAMPO>.
A Ira apresentar uma ajuda F1 para o campo de entrada na tela de seleo.
B Este evento ira exibir ajuda auto definida para F1 no campo de entrada
programado no bloco de evento e substituir qualquer ajuda possivelmente
definida no dicionrio ABAP para o campo.
C Nenhuma das acima.

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.

A adio NO EXTENSION para SELECT OPTIONS permitira somente


uma linha na tabela de seleo.
A Verdadeiro.
B Falso.

10 A adio NO INTERVALS para SELECT OPTIONS permitira somente um


campo simples na tela de seleo.
A Verdadeiro.
B Falso.
11 Voc pode definir a tela de seleo como uma subtela ou controle de tabstrip.

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

14 Programao Orientada a Objetos ABAP


Tcnicas que voc aprendera:

Compreender os conceitos de programao Orientada a Objeto.


Descrever os componentes para uma classe ABAP
Explicar as sees de visibilidade de uma classe
Compreender os componentes mais importantes de uma classe:
Atributos, mtodos e eventos.
Criar uma definio e definio de classes local e classe global.
Descrever a diferena entre instancias e componentes estticos.
Define o construtor de instancia e os mtodos de construtor de classe
para uma classe.

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.

Objetivos Desta Parte Do Teste


O objetivo desta parte do exame avaliar o seu conhecimento sobre os
conceitos de programao orientada a objetos. Voc deve ser capas de criar classes
ABAP para usar em seus programas, tanto a parte da definio e da parte de
implementao, e de ser capaz de usar as classes globais para desenvolvimento de
aplicativos. Voc deve ser capaz de explicar os vrios componentes de uma classe
ABAP e as sees de visibilidade tais como seo publica, privadas e protegidas.
Voc deve ser capas de criar Objetos ABAP de programa que contem todas as
informaes uteis de tcnicas de programao orientada a objeto.

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

proposito de uma classe para ocultar a complexidade do mundo


exterior. Cada mtodo e atributo pode ser privado ou publico. O mtodo
publico pode ser acessado por usurio externo, por exemplo um
programa ABAP. o mtodo ou atributo privado pode ser acessado
somente a partir de dentro da prpria classe e pode ser acessado por
um aplicativo externo somente atravs de mtodos pblicos.
Herana
Herana significa derivar uma classe de outra. Os atributos e mtodos
so herdados da classe de nvel superior, conhecida como superclasse
e pode ser estendida, isto os mtodos podem ser redefinidos, e os
novos componentes podem ser adicionados. Uma classe herda os
atributos e mtodos da classe pai e pode definir novos componentes
que o tornam nicos dentro de sua hierarquia de classe.
Polimorfismo
Polimorfismo onde os objetos de classes diferentes reagem de
diferentes maneiras para a chamada de mesmo mtodo. Ela pode ser
alcanada atravs de herana ou por meio do uso de interfaces.

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.

Figura 14.1 Tela de dialogo para criao de classes globais.


Voc precisa preencher os seguintes detalhes na caixa de dialogo 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.

Clique no boto salvar depois de ter fornecido os dados de entrada relevantes


na tela de dialogo criar classe. Voc tem que fornecer o nome do pacote depois voc
clica no boto salvar na tela de dialogo. Ento o editor de classe aparece com a aba
mtodo selecionado. A partir daqui voc pode definir componentes individuais da
classe. A figura 14.2 mostra a tela do editor de classe que mostrada depois que voc
clica salvar na janela de dialogo criar classe.

337

Figura 14.2 Tela do editor de classe para criar classes globais.


Voc pode definir componentes individuais da classe, tais como atributos,
mtodos, eventos, Friends (voc pode definir classes amigas no momento da criao
da classe), e assim por diante no editor de classe. Vamos discutir a definio dos
componentes individuais mais tarde na cesso relevante neste capitulo.

Visibilidade E Instanciao De Classe


A sesso visibilidade define a visibilidade para o componente da classe e,
portanto a interface da classe para a aplicao.

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.

A estrutura 14.2 mostra a declarao de componentes da classe publica,


privada e protegida.

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.

Figura 14.3 Definies de mtodos para classes globais com visibilidade


Alm da especificao a visibilidade dos componentes da classe, voc tambm
pode especificar o tipo de instanciao para a classe. O tipo de instanciao define
quem pode criar o objeto da classe. Seguem-se os trs tipos de instanciao para a
classe:

Instanciao Publica
Instanciao Protegida
Instanciao privada

A instanciao para controlar a instanciao de uma classe local a seguinte:


CLASS <class_names> DEFINITION.
CREATE PUBLIC | PROTECTED | PRIVATE
ENDCLASS.
Se voc no especificar a instanciao da classe, ento a classe instanciada
PUBLICA por padro. Somente as classes instanciadas como publica pode ser usada
pelo usurio para criar objetos para a classe. A instancia de classes protegidas permite
a criao de objetos dentro da prpria classe, mais em nenhum outro lugar. A instancia
de classe publica normalmente fornece um componente esttico que pode ser
acessado pela parte externa, que ira fornecer a referencia ao objeto que a prpria
classe criou.
Para a classe global voc especifica o tipo de instanciao na janela de dialogo
criar classe como mostrado na estrutura 14.2 abaixo.

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.

Figura 14.4 Declarao de interface e componentes estticos.

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.

Figura 14.6 Declarao de atributos em uma 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:

variable1 TYPE i READ ONLY.

CLASS DATA variable2 TYPE i READ ONLY.


Voc pode proteger atributos contra o acesso de fora declarando os atributos
como privados.

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.

No construtor de classe, voc pode simplesmente entrar com o atributo e suas


propriedades na tabela Atributos como mostrado na figura 14.7, que mostra a definio
de atributo para uma classe global.
Alm de instancia e atributos estticos, voce pode declarar atributos
constantes, cuja os valores so definidos durante a declarao e no pode ser
mudado posteriormente.

343
A sintaxe para declarar um atributo constante na classe local :
COSNTANTS: const1 TYPE C VALUE A.

Figura 14.7 Definio de atributos para uma classe global.

O atributo constante acessado com a seguinte sintaxe:


WRITE: / ZCL_DEMO => const1.
WRITE: / nome da classe => constante.
Mtodos
Mtodos so procedimentos internos em uma classe que define o
comportamento de um objeto. Em outras palavras eles so os blocos de cdigo que
contem a logica. Mtodos podem acessar todos os atributos da classe, e portanto
pode alterar os valores dos atributos do objeto. O atributo privado da classe pode ser
alterado pelo mtodo da mesma classe.
Mtodos so declarados na seo DEFINITION para a classe local e no editor
de classe para a classe global. A figura 14.3 mostra a definio do mtodo para a
classe global no editor de classe. Todos os mtodos declarados na parte da
declarao deve ser implementado na parte da implementao da classe. Mtodos
devem ser atribudos a uma seo de visibilidade, assim como atributos. Mtodos
atribudos ao PUBLIC SECTION podem ser chamados de fora da classe, considerando
que o mtodo atribudo ao PUBLIC SECTION pode ser apenas chamado apenas dentro
de algumas classes.
Como os atributos da classe, voc pode declarar mtodos de instancia ou
mtodos estticos. Mtodos de instancia so declarados usando a instruo
METHODS, Emquanto que mtodos estticos so declarados usando as instruo
CLASS METHODS. Mtodos de instancia podem acessar todos os atributos de uma
classe (ou seja, tanto instancia e estticos) e pode desencadear todos os eventos da
classe. Mtodos estticos podem acessar apenas os atributos estticos da classe e
pode desencadear apenas eventos estticos. Mtodos estticos podem ser chamados
sem instanciar a classe, enquanto que mtodos de instancia as validos para a
instncia especifica da classe. Por isso, voc precisa instanciar a classe (CREATE
OBJECT) para acessar a instancia do mtodo.

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.

CLASS lcl_class IMPLEMENTATION.


METHOD Nome_Metodo.
ENDMETHOD.
ENDCLASS.
A instruo do mtodo no requer qualquer adio porque as propriedades e
assinatura do mtodo so definidos na parte da declarao da classe. A estrutura 14.3
e 14.4 mostra a declarao e implementao dos mtodos.

CLASS c_team DEFINITION.


PUBLIC SECTION.
TYPES : biker_ref TYPE REF TO c_biker,
Biker_ref_tab TYPE STANDARD TABLE OF biker_ref
WITH DEFAULT KEY,
BEGIN OF status_line_type,
flag(1) TYPE C,
text1(5) TYPE C,
id
TYPE i,
text2(7) TYPE C,
text3(6) TYPE C,
gear
TYPE i,
text4(7) TYPE C,
speed TYPE i,
END OF status_line_type.
CLASS METHODS: class_constructor. atributos estticos
METHODS: constructor,
create_team,
selection,
execution.
PRIVATE SECTION.
CLASS DATA: team_members TYPE i,
conter TYPE i.
DATA: id TYPE i,

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

CLASS c_team IMPLEMENTATION.


METHOD class_constructor.
tit1 = Team members ?.
CALL SELECTION SCREEN 100 STARTING AT 5 3.
IF sy-subrc NE 0.
LEAVE PROGRAM.
ELSE.
team_members = members.
ENDIF.
ENDMETHOD.
class_constructor
METHOD construtor.
Conter = conter +1.
id = conter.
ENDMETHOD. constructor
METHOD create_team.
DO team_menbers TIMES.
CERATE OBJECT biker
EXPORTING
Team_id = id
Members = team_menbers.
APPEND biker TO biker_tab.
CALL METHOD biker -> status_line
IMPORTING
Line = status_line.
APPEND status_line TO status_list.
ENDDO.
ENDMETHOD.
METHOD selection.
CLEAR biker_selection.
DO.

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.

CLASS conter DEFINITION.


PUBLIC SECTION.
METHODS: set INPORTING values(set_value) TYPE i,
incremente,
get EXPORTING value(get_value) TYPE i.
PRIVATE SECTION.
DATA count TYPE i.
ENDCLASS.
CLASS counter IMPLEMENTATION.
METHOD set.
Count = set_value.
ENDMETHOD.
METHOD incremente.
ADD 1 TO count.
ENDMETHOD.
METHOD get.
Get_value = count.
ENDMETHOD.
ENDCLASS.
Estrutura 14.5 Definies e Implementao de classe.

A figura 14.8 mostra a definio do mtodo em um construtor de classe, e a


figura 14.9 mostra os parmetros EXPORTING e IMPORTING para o mtodo no
construtor da classe.
Retorna um valor nico para o mtodo, pode ser definido usando um parmetro
RETURNING. Mtodos que tem parmetros RETURNING so chamados mtodos
funcionais. Se um mtodo tem um parmetro RETURNING, no pode ter parmetros
EXPORTING ou CHANGING, e o mtodo vai passar de volta uma coisa e apenas uma
coisa para o chamador.

348

Figura 14.8 Definio de mtodo para classe global.

Figura 14.9 Parmetros de importao e exportao para o mtodo da classe.

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.

Figura 14.10 Exceo clssica para o mtodo da classe global


Excees baseadas em classe so levantadas tanto pela instruo RAISE
EXCEPTION ou em tempo de execuo no ambiente. Para propagar uma exceo
para o mtodo, voc geralmente usa a adio RAISING quando voc esta definindo a
interface do mtodo. Voc pode especificar a adio RASING diretamente quando
voc define os mtodos de classes locais.
A sintaxe para definir o mtodo com a adio RAISING a seguinte.
METHODS m1 IMPORTING ... EXPORTING ... RAISING cx_excep ...
H dois mtodos especiais que voc pode encontrar em uma classe:
CONSTRUCTOR e CLASS_CONSTRUCTOR.

O mtodo CONSTRUCTOR (s vezes referidos como construtor de


instancia) chamado automaticamente quando voc cria um objeto
para definir um valor inicial para o novo objeto. O construtor de instancia
chamado uma vez por objeto, para cada objeto. Cada classe pode ter
mais de um mtodo CONSTRUCTOR, e o mtodo construtor devem ser
sempre definidos na seo de visibilidade publica. A assinatura do

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.

O construtor esttico (as vezes tambm referido como o construtor da


classe) um mtodo especial na classe e sempre chamado
CLASS_CONSTRUCTOR. Cada classe pode ter s um construtor
esttico, e deve ser atribuda seo de visibilidade publica. O
construtor esttico no pode qualquer parmetro de importao ou
exceo, e no pode ser chamada explicitamente. Ele chamado
quando voc acessar a classe pela primeira vez. Ela executada no
mais do que uma por classe. Ele pode ser acionado criando uma
instancia, acessando um atributo esttico, chamando um mtodo
esttico da classe ou registrar um mtodo manipulador de eventos para
um evento na classe.

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.

Figura 14.11 Definio de um Evento em uma Classe Global

355

Figura 14.12 Definio do mtodo manipulador do evento.


Quando o evento disparado, os mtodos manipuladores registrados para este
evento so chamados na sequencia em que foram registrados. Apenas os mtodos
manipuladores registrados para o dispara do evento so iniciado aps o disparo do
evento. Voc pode definir qualquer nmero de mtodos manipuladores para um
evento. Os mtodos manipuladores podem ser definidos na mesma classe ou
(normalmente) em outra classe. Os mtodos manipuladores do evento no so
chamados diretamente pelo cliente; ao invs disso, o sistema em tempo de execuo
chama os mtodos manipuladores automaticamente aps o evento ser disparado. O
elo entre o evento e o mtodo manipulador estabelecido dinamicamente no
programa usando a instruo SET HANDLER. O registro s ativo em tempo de
execuo do programa.
A sintaxe para registrar o mtodo manipulador a seguinte:
SET HANDLER refobj1->event_handler1.
Ou voc pode registrar vrios mtodos com a mesma instruo:
SET HANDLER evt_handler1 evt_handler2 FOR ALL INSTANCES.
Por isso, para manipular um evento, o mtodo deve ser definido como um mtodo
manipulador de eventos e deve ser registrado em tempo de execuo para o evento. A
listagem 14.8 mostra a definio do mtodo manipulador, sua implementao e o
registro em tempo de execuo. Se o evento possuir parmetros exporting, ento a
assinatura do mtodo manipulador deve conter os parmetros IMPORTING na sua
definio. A assinatura do mtodo manipulador deve conter os parmetros
IMPORTING iguais ao EXPORTING dos eventos.

*------------------------------------------------------------*

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

Questes Prticas Repostas E Explicaes


1.

Respostas Corretas: B,C


Atributos estticos podem ser definidos nas sees privada e pblica da
classe. Atributos estticos so definidos com a instruo CLASS-DATA na parte
de definio da classe. Atributos estticos existem um por classe e so os
mesmos para todas as instancias em tempo de execuo da classe. Se voc
alterar o atributo esttico da classe, esta alterao ser vlida para todas as
instancias da classe. Atributos estticos podem ser alterados por uma instancia
da classe. Todos os objetos da classe podem acessar o atributo esttico da
classe.

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.

10. Respostas Corretas: A,B,C,D


Estas so as corretas pelas seguintes razes:
Mtodos de classe ou mtodos estticos atribudos a seo pblica da
classe podem ser endereados de fora da classe com a referencia a

360

classe pois eles no precisam de uma instncia da classe para


funcionar.
Mtodos estticos podem ser definidos tanto na seo pblica como na
privada. Voc pode acessar mtodos estticos pblicos de fora da
classe mas no os mtodos estticos atribudos a seo privada.
Apenas os mtodos atribudos a seo pblica podem ser endereados
de fora da classe.
Os mtodos privados da classe podem ser chamados de dentro dos
mtodos pblicos da mesma classe sem referencia classe ou ao
objeto.

11. Resposta Correta: A


O mtodo construtor chamado automaticamente cada vez que voc
instanciar a classe, isto , cada vez que um novo objeto criado.
12. Resposta Correta: A
O mtodo construtor chamado automaticamente quando voc acessa a
classe pela primeira vez, isto , ao criar um objeto, chamar um mtodo
esttico, etc..
13. Resposta Correta: B
O mtodo construtor e o mtodo construtor da classe so sempre definidos na
seo pblica.
14. Resposta Correta: B
Voc no pode chamar o mtodo construtor diretamente; ele chamado
automaticamente.
15. Resposta Correta: A
Quando um evento de classe ou instancia disparado, qualquer nmero de
mtodos manipuladores podem ser chamados. Apenas os mtodos
manipuladores registrados para o evento disparado so chamado quando o
evento disparado.

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

15 - Alv Grid Control


Tcnicas que voc aprender:

Identificar as principais funes do grid ALV

Entender como produzir um ALV em tela cheia

Explorar como produzir um ALV dentro de um container

Manipular eventos disparados pelo ALV

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.

Objetivos Desta Parte Do Teste


O propsito desta parte do exame de certificao verificar que voc
compreende um ALV. Esta parte do exame validar seu conhecimento de certo de
tpicos. Os pontos que voc precisar entender desta seo incluem:

Como manipular os eventos disparados pelo ALV; quais os passos so


necessrios para receber os eventos para processamento.
A criao de um ALV em tela cheia, pois muitos clientes preferem reportes ALV
por conta de sua flexibilidade (ordenao, filtro, e reordenao de colunas)
para o usurio final do reporte.
A criao de um ALV dentro de um container, o que til para mostra os dados
numa dynpro.
Como modificar a exibio de um ALV, em outras palavras, mudar a exibio
inicial para preencher os requisitos do cliente.

O exame de certificao dar peso mnimo para este captulo comparado ao


outros tpicos no exame. Isto significa que este captulo est entre aqueles em que a

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.

Lembre-Se Conceitos Chave


Voc deve entender e ser capaz de executar os seguintes tipos de tarefas qual
for desenvolver programas ABAP:

Produzir reportes que sejam flexveis para o usurio.


Exibir os dados de forma tabular.

Viso Geral Da Programao Alv


A interface grfica de usurio (GUI Graphical User Interface) no sistema SAP
baseado nas janelas SAP GUI ( telas do ponto de vista tcnico do programador).
Cada dilogo implementado usando Dynpros dos programas. Antes do release 4.5
voc podia apenas usar elementos providos pelo Screen Painter, por exemplo, botes.
A partir da release 4.5 se tornou possvel usar controles que so componentes de
software stand-alone, um desses sendo o ALV Grid Control. Estes controles
comunicam-se deferentemente dos componentes padro dynpro. Ao invs de se
comunicar usando o processador de rela, estes controles usam o Control Framework
(CFW).
Voc no pode criar instancias stand-alone de um controle no servidor de
apresentao. Voc deve disponibilizar um controle especial conhecido como controle
de container. Este controle de container colocado em uma rea reservada da tela, e
o grid ALV est dentro deste controle. Os passos para colocar um controle na tela so
os seguintes:
1.
Voc reserva uma rea na tela para o container usando um
elemento de tela especial A rea de Controle Personalizado. O processo
para isto similar ao modo como voc reserva uma rea de subtela para uma
subtela.
2.
Voc cria uma instancia da classe de controle de container e
liga-a a rea reservada na tela. O controle de container agora visualizado na
rea reservada.
3.
Voc cria uma Instncia do ALV Grid Control e liga-a a instancia
do controle de container. O ALV Grid Control agora visualizado no container.
Para reservar uma rea da tela para o controle, voc usa o editor de Layout
Grfico do Screen Painter, clica no boto [CUSTOM CONTROL], e desenha a rea

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.

Programao Do Grid ALV (CL_GUI_ALV_GRID)


Depois voc precisa gerar uma instancia do container. No seu programa, voc
precisa fazer isto antes de mostrar a tela onde o Controle de Grid ALV deve aparecer
no servidor de apresentao. O PBO (Process Before Output Processamento Antes
da Saida) da tela que contem a rea reservada o lugar mais usual para criar a
instancia do container (a definio de rea reservado exibida na figura 15.1). Este
bloco de evento sempre chamado ante de se mostrar a tela.

Figura 15.1 rea do container de tela.


O processo para criar uma instancia do container personalizado comea com a
declarao da varivel de referencia.
A varivel de referncia precisar se referir a classe Container, neste caso TYPE
REF TO cl_gui_custom_container. Voc gera uma instancia do controle usando a
instruo
CREATE
OBJECT
para
gera
uma
instancia
da
classe
cl_gui_custom_container. Voc liga o container que est criando com a rea reservado
para ele na tela usando o parmetro IMPORTING container_name (veja a listagem 15.1
para um exemplo). Ns recomendamos que voc use o modelo de objetos ABAP (ou
arrastar e soltar o nome da classe no Object Navigator no seu cdigo para produzir
automaticamente a chamada CREATE OBJECT) para inserir a instruo CREATE
OBJECT.
DATA:
gt_sflight
TYPE TABLE OF sflight,
gs_layout
TYPE lvc_s_layo,
gr_alv_grid
TYPE REF TO cl_gui_alv_grid,
gr_custom_container TYPE REF TO cl_gui_custom_container.
IF gr_custom_container IS NOT BOUND.

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

Apenas Carregar layouts


entregues

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

Carregar salvar layouts

O usurio pode alterar a


variante de exibio atual,
administrar a variantes
existentes e salvar novas
Tabela 15.2 Opes de exibio

Valor
espa
o
U
X
A

Valores dos parmetros


is_variant inicial
i_save
=
espao
(configurao default)

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.

Se voc informar o parmetro i_structure_name com uma estrutura do


dicionrio, tabela ou viso, voc precisa informar uma linha no catlogo de campos
para cada coluna da tabela de exibio que seja diferente da estrutura do dicionrio ou
que no esteja nela. Esta linha deve conter as propriedades tcnicas e outras
informaes de formatao para a coluna.
Quando voc cria um catlogo de campos no programa chamador, voc deve
atribuir o nome da coluna da tabela interna de exibio no campo FIELDNAME. Este
campo atribui uma linha do catlogo de campo a uma coluna da tabela de exibio.
Outros campos do catlogo de campos podem ser divididos em dois grupos baseados
em suas utilizaes ao criar o catlogo de campos:

371

O campo referencia um tipo global do dicionrio ABAP. Isto se aplica aos


campos REF_FIELD e REF_TABLE.
Todos os outros campos do catlogo de campos fornecem valores para as
propriedades de exibio da coluna.

A linha do catalogo de campos requer que um mnimo de informao seja


informado; a maioria das informaes opcional. Existem trs maneiras bsicas de
inserir dados no catlogo (cada uma dessas trs estruturas globais referenciadas
abaixo podem ser uma tabela global ou viso):

O campo existe em uma estrutura global com o mesmo nome


O campo existe em uma estrutura global com o nome diferente.
O campo no existe em uma estrutura global.

Se o campo existir com o mesmo nome em uma estrutura do dicionrio, tabela


ou viso, suficiente atribuir o nome da estrutura, tabela ou viso ao campo
REF_TABLE. S necessrio adicionar o nome do campo na estrutura ao campo
REF_FIELD se o nome da coluna na tabela de exibio for diferente do nome da
estrutura do dicionrio.
Atribuir valores aos campos REF_TABLE e, se necessrio, REF_FIELD transfere
todas as definies do tipo da estrutura especificada no dicionrio ABAP. Para
sobrescrever uma definio do dicionrio ABAP, voc deve atribuir um valor para um
dos campos do catlogo que no sejam o REF_FIELD e REF_TABLE. Se o campo no
existir em uma estrutura global, voc no atribui valores para os campos REF_TABLE e
REF_FIELD, e ao invs disso atribui valores ao outros campos do catlogo de campos.
Colunas que necessitem de manipulao especial devido ao fato de serem
moedas ou unidades de medida so definidas de forma similar. Os campos relevantes
para estas definies so mostrados na tabela 15.4.
O valor se aplica a toda a coluna

Nome da coluna contendo o valor para a


linha
CURRENCY
CFIELDNAME
QUANTITY
QFIELDNAME
Tabela 15.4 Colunas com tratamento especial.
Se toda a coluna deve ser formatada usando o mesmo valor, voc especifica
este valor no campo mostrado acima. Se este campo para a coluna possuir um valor, o
valor especfico da linha ignorado.
Ento, para formatar uma coluna inteira para uma moeda especfica, voc
coloca a chave da moeda no campo CURRENCY, e como resultado, os contedos de
CFIELDNAME so ignorados. O mesmo verdade para um campo de quantidade.
Para formatar a coluna como um todo com a mesma unidade de medida, voc informa
a unidade de medida no campo QUANTITY. Fazendo assim os valores do campo
QFIELDNAME sero ignorados. Se toda a coluna no deve ser formatada da mesma
forma, voc deve especificar o nome da coluna na tabela de exibio que contei a
chave da moeda no campo CFIELDNAME ou a unidade de medida da quantidade no
campo QFIELDNAME.

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.

O mtodo esttico FACTORY para instanciar um objeto da classe principal ALV.


Voc passa neste mtodo uma tabela interna que conter os dados a serem
exibidos (a tabela de exibio) a partir da qual os dados sero exibidos. O tipo
de exibio (clssica, tela cheia, em container) tambm definido. No
necessrio realmente informar os dados na tabela de exibio neste ponto (em
outras palavras, a tabela pode estar vazia). Durante o mtodo FACTORY uma
referencia para a tabela verdadeira criada. Os dados, entretanto, devem ser
populados antes de ser chamado o prximo mtodo.
O mtodo DISPLAY coloca a sada do ALV na tela.

Utilize o FACTORY ao invs do usual CREATE OBJECT. O mtodo FACTORY


um mtodo de classe e retorna uma instancia ALV. (A instruo CREATE OBJECT pode
ser encontrada no prprio mtodo FACTORY; ele gera uma instncia para voc e
retorna a referencia para que voc possa trabalhar com o grid ALV.) Voc usa esta

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.

Figura 15.2 Exibio de lista.

376

Figura 15.3 ALV Padro.

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:

Carrega o subobjeto relevante do objeto pai (neste caso a instncia ALV)


responsvel pela propriedade a ser alterada, por exemplo, colunas.
Chamar o mtodo que altera o status do subobjeto.

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

Classe do objeto entregue


CL_SALV_AGGREGATIONS
CL_SALV_COLUMNS_TABLE
CL_SALV_DISPLAY_SETTINGS

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

Tambm existem mtodos GET para subobjetos de segundo nvel (o subobjeto


de objeto ALV). Estes no se aplicam ao objeto ALV, mas sim ao subobjeto do
subobjeto, por exemplo, o objeto contendo todas as colunas do ALV (classe
CL_SAL_COLUMNS_TABLE). A tabela 15.6 mostra os mtodos GET para as subclasses
e os objetos que eles entregam.
Classe

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.

Figura 15.4 Eventos para a CL_SALV_EVENTS_TABLE


Evento
AFTER_REFRESH
AFTER_USER_COMMAND
BEFORE_USER_COMMAND
BUTTON_CLICK
CLICK_COL_HEADER
CLICK_ROW_COL
CONTEXT_MENU
CONTEXT_MENU_REQUEST
CONTEXT_MENU_SELECTED
DATA_CHANGED
DATA_CHANGED_FINISHED

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.

Criar o ALV, escrever o manipulador, registrar o evento, exibir o ALV.


Registrar o evento, escrever o manipulador, criar o ALV, exibir o ALV.
Escrever o manipulador, registrar o evento, criar o ALV, exibir o ALV.
Escrever o manipulador, criar o ALV registrar o evento, exibir o ALV.
Escrever o manipulador, criar o ALV, exibir o ALV, registrar o evento.

2. As diferenas entre exibir em tela cheia e dentro de um container so:


a. Em tela cheia necessrio a programao dynpro.
b. O container requer o uso de um objeto adicional (um controle de
container).
c. A nica diferena que o nome do container deve ser especificado na
criao do objeto ALV.
d. Apenas o ALV em tela cheia permite a manipulao de eventos.
e. Apenas o ALV dentro de um container permite a manipulao de eventos.
f. Qualquer tipo de ALV permite a manipulao de eventos.
3. Para reservar uma rea da tela para o grid ALV voc deve:
a. Criar
um
objeto
(instanciar
o
objeto)
da
classe
CL_GUI_CUSTOM_CONTAINER.
b. Criar um objeto (instanciar o objeto) da classe CL_GUI_ALV_GRID
c. Criar um objeto (instanciar objeto) da classe CL_SALV_TABLE
d. Usar o Screen Painter.
4. Voc deve chamar um mtodo antes de realmente exibir o contedo da tabela de
exibio aps criar um ALV.
a. Verdadeiro
b. Falso
5. O catlogo de campos permite que voc:
a.
b.
c.
d.
e.

Adicione um campo a exibio


Especifique a ordem de ordenao da tabela de exibio
Produza um padro listrado para a linha de exibio
Altere o ttulo de uma coluna.
Altere a ordem de exibio de uma coluna.

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

Modelo de Objeto ALV

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

16 - Interface De Usurio (Web Dynpro)


Tcnicas que voc aprendera:

Compreender a arquitetura do componente Web Dynpro


Explorar a navegao e transferncia de dados entre os componentes
Web Dynpro
Identificar os elementos mais importantes
Nome dos contedos do Web Dynpro Controller
Definir o mapeamento entre contextos de diferentes controladores,
localizados no mesmo componente Web Dynpro

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.

Cenrio do Mundo Real


Voc tem sido questionado para identificar qual a tecnologia melhor para
desenvolvimento ABAP baseados em transaes web. Existe um nmero de funes
encapsulados desenvolvidos para usar em companhias com sistema SAP que o
gerenciamento gostaria que fosse feito no web browser.
O pensamento que uma aplicao baseada na web seria mais simples para
implantar para os usurios e mais fcil para eles aprenderem. O fato que por ser
baseado no navegador, significa que o SAP GUI no precisa ser instalado, ento isto
deve ter um mnimo de impacto para usurio e o Departamento de IT e novas
funcionalidades podem ser simplesmente entregues fornecendo seu link de acesso.
Entretanto, o gerenciamento tambm quer ter o controle. Eles querem ser
capazes de controlar autorizaes e o acesso a funes de trabalho para alguns
dados. Da disponibilidade de interface de usurios baseados em web, o Web Dynpro
rene todos os critrios de sua companhia. Agora voc precisa explicar a tecnologia
para outros desenvolvedores.

Objetivos Deste Captulo Para o Teste


O propsito desta parte do exame de certificao para verificar que voc tem
um entendimento do Web Dynpro ABAP e suas capacidades. Entretanto, esta parte do
exame ir testar seu conhecimento no desenvolvimento Web Dynpro. Os pontos que
voc precisa para conhecer, esta seo inclui:

A arquitetura de componentes Web Dynpro e como eles so ligados


O uso do componente Web Dynpro que so reutilizveis e mandatrios
O contedo do controller Web Dynpro e como eles trabalham juntos

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:

Navegao e transferncia de dados dentro de um componente Web Dynpro


Definio do mapeamento entre contexto de diferentes controles localizados
no mesmo componente Web Dynpro
Declarao do uso de um componente dentro de um outro componente

Web Dynpro Designer


Web Dynpro um dos programas modelo standard SAP NetWeaver para
interface com usurio (UI's). O Web Dynpro framework baseado no paradigma model
view controller para garantir uma clara diviso entre a definio da interface do usurio
e a implementao da aplicao logica. Isto tem as seguintes caractersticas quando
constri sobre o modelo clssico dynpro:

Uma clara separao entre lgica de negcios e lgica de visualizao.


Um meta-modelo uniforme para todas as interfaces de usurio. Normalmente o
padro de interface de usurio contm somente funes genricas para a
interface de usurios (por exemplo, um search) e descreve a aparncia geral
da interface.
Execuo sobre um nmero de plataformas cliente. O meta-dado do Web
Dynpro independente da plataforma onde a aplicao executada. Se o
meta-dado transferido para uma plataforma diferente, nova fonte de cdigo
para a plataforma gerada.

Web Dynpro est disponvel em ambos os ambientes de desenvolvimento


ABAP e Java. Fornece ferramentas para desenvolvimento de aplicaes web-based.
Usamos estas ferramentas para descrever as propriedades e funes de aplicaes
Web Dynpro no form do meta-dado Web Dynpro. O cdigo fonte da interface de
usurio necessrio para Web Dynpro automaticamente gerado e executado em
tempo de execuo.
Cada interface de usurio no Web Dynpro sempre criado para os mesmos
elementos bsicos, por exemplo, Elemento UI. Aqueles elementos do meta-modelo
so declarados usando as ferramentas Web Dynpro. Isto reserva para voc definir a
interface de usurio requerida para adicionar botes, campos, etc. O sistema gera
automaticamente o cdigo necessrio para este meta-modelo.
Web Dynpro ABAP foi liberado com SAP NetWeaver Application Server 7.0.
Para suportar os conceitos declarativos da aplicao Web Dynpro, o ABAP WorkBench
(ponto central de entradas para o ABAP Workbench a transao SE80, o Object
Navigator) agora contm um range de ferramentas Web Dynpro. Voc pode gerar
grande proporo de aplicaes Web Dynpro usando a ferramenta fornecida, sem
precisar criar seu prprio cdigo. Isto aplica-se para as seguintes partes de aplicao:

391

Fluxo de dados entre frontend e backend


Layout da interface de usurio
Propriedades dos elementos da interface de usurios

Cada Aplicao Web Dynpro estruturada acordando com o paradigma model


controller view:

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.

Um compromete Web Dynpro uma entidade reutilizvel. A criao de um


componente Web Dynpro sempre mandatrio, porque a existncia do seguinte
ligado para a existncia do prprio documento:

Web Dynpro window


Views
Controllers

Os componentes de interface so implementados para fornecer informaes


entre os elementos de dois componentes Web Dynpro e so chamados pelo usurio.
Seu relacionamento prximo um com o outro significa que no faz sentido considerar
partes individuais e componentes separados.
Um componente Web Dynpro pode ser visto como um container para todas as
coisas que voc precisa criar. similar ao pool de mdulos sendo o container da tela e
o cdigo para uma transao de dialog. Figura 16.1 mostra um exemplo de um
componente Web Dynpro.

Figura 16.1 Componente Web Dynpro

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.

Figura 16.2 View Layout

Figura 16.3 Propriedades RootUIElementContainer

393

Figura 16.4 Estrutura da janela


Alm da parte visvel(layout), uma view tambm contm:

Um Controller
Um Context

O controller a parte ativa da view e onde o cdigo guardado. Determina


como o usurio interage com o Web Dynpro. Os dados na view so encontrados na
view de contexto.
A navegao entre diferentes views habilitada por plugs. Plugs so entry e
exit points para views e so divididos:

Inbound plugs (ponto de entrada)


Outbound plugs (ponto de sada)

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.

Nota: A primeira view criada assinalada automaticamente com esta propriedade,


mas voc pode muda isto se mais tarde decidir iniciar por uma view diferente.
Uma view usando o plug inbound sempre causa o acionamento de um evento.
Como resultado, um evento handler(que opcional) automaticamente gerado para
todo plug inbound. Isto faz com que o plug inbound por ele mesmo processe o evento.
Para navegar de uma view para outra voc estabelece um link de navegao
para cada plug outbound da primeira view para um plug inbound da view subsequente.
Estes links so mantidos na janela. Somente um link de navegao pode originar de
um plug outbound. Em contraste, um plug inbound pode ser controlado por vrios
plugs outbound.
Uma janela usada para combinar muitas views. Uma view somente pode ser
mostrada se ela est contida em uma janela. Uma janela sempre contm uma ou mais
views. Estas views so conectadas por links de navegao como descrito acima. Uma
destas views especificada para iniciar por primeiro (default) e mostrada a primeira

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:

Voc colocar um componente janela, na janela de outro componente


Setar uma aplicao Web Dynpro ento ela poder ser chamada
Sair de uma aplicao Web Dynpro

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.

Todas as instancias de controle so unicos no respectivo de seus componentes


pais (cada componente tem exatamente um controller). Cada controller tem seu
prprio contexto com um contexto existente em um node principal. Voc deve definir
todos os outros nodes e atributos.
Para todos os controllers, existe mtodos que so chamados pelo Web Dynpro
framework em uma ordem pr-definida. Estes so chamados hook methods.
Diferentes hook mtodos esto disponveis dependendo do tipo do controller. Todos os
tipos de controllers contm pelo menos dois mtodos hook. Estes mtodos so
processados somente uma vez durante o ciclo de vida de uma instancia de controller:

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

Somente um elemento pode ser instanciado


No mais que um elemento pode ser instanciado, tambm
possvel nenhum elemento
1...n
Pelo menos um elemento deve ser instanciado
0...n
Zero ou mais elementos de contexto node pode ser instanciado
tabela 16.1 Cardinalidade do Componente Web Dynpro

Dentro da arquitetura Web Dynpro, possvel links de contexto de diferentes


controllers por diferentes meios:

Pode ligar um elemento UI da interface do usurio de view com um elemento


do contexto view. Isto conhecido como data binding.
Pode definir um mapeamento entre dois controles globais de contextos. Isto
conhecido como mapeamento de contexto, e apenas a referencia para os
dados feita.

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

Figura 16.5 Propriedades e eventos do boto


METHOD onactiongoto_out_01 .
wd_this->fire_out_01_plg(
).
ENDMETHOD.
Lista 16.1 Manipulador de Evento

Cada componente tem uma interface para habilitar a comunicao entre


componentes Web Dynpro e para habilitar um componente para ser chamado pelo
usurio. A interface consiste em duas partes:

Interface View
Interface Controller

Aplicao Web Dynpro


Uma aplicao Web Dynpro um ponto de entrada para um componente Web
Dynpro e apenas a entidade Web Dynpro que pode ser endereado pela URL. Um
pool de mdulo novamente fornece uma boa comparao. Um pool de mdulo pode
ser iniciado com um cdigo de ao e a aplicao Web Dynpro fornece o mesmo
ponto de incio para Web Dynpro. um link para uma interface view atravs do uso de
um plug inbound declarado como plug de incio que tem como padro uma view inicial.
No contem informaes sobre os elementos do componente correspondente ou dos
componentes por trs da interface view. Para definir uma Web Dynpro especifique:

O componente a ser chamado; este componente chamado de root


componente.

398

A interface view do root componente inicialmente usada; a view padro desta


interface define o assembly view padro ( o subconjunto de views visveis).
O plug inbound age como ponto de entrada para a interface view (o tipo do
inbound deve ser Startup). Se criar uma aplicao Web Dynpro para um
componente que tem apenas uma view (e, entretanto somente uma interface
view), ento o ponto de incio ser automaticamente determinado.

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.

Figura 16.6 Hierarquia RootUIElementContainer

Algumas das categorias de elementos UI so os seguintes:

399

O padro de categoria simples contem elementos que so usados


frequentemente nas aplicaes Web Dynpro. Exemplo: Button, Label e
InputField.
O padro de categoria complexa contem elementos que precisam ter
elementos filhos para definir a validade do elemento UI que pode ser
renderizado. Um exemplo a Table, que precisa ter um elemento filho da
TableColumn para cada coluna a ser mostrada.
O padro categoria container contem elementos que tem elementos filhos.
Elementos UI Container podem ter estrutura de layout visvel ou invisvel.

Outras categorias contem elementos para mostrar diagramas ActiveX-based


(Componente Ativo), SAP Interractive Forms by Adobe (Adobe), ou negcios grficos
renderizados pelo Internet Graphics Server (BusinessGraphics) ou para embutir
documentos office tais como Microsoft Word ou Excel (Integrao Office) e alguns
outros elementos UI especiais.
Todos os view layouts so derivados de uma hierarquia de elementos UI. O n
principal sempre do tipo TransparentContainer (um container no visvel), e sempre
chamado RootUIElementContainer. Voc no pode mudar isto. Todos os elementos UI
adicionados para um layout view so hierarquicamente subordinados ao n principal
RootUIElementContainer.
Elementos Container, como mencionados acima, so elementos UI que podem
ter elementos filhos. Na layout view eles ocupam uma rea retangular. Todos os
elementos UI filhos de um elemento container so localizados dentro desta rea
retangular. Todo elemento container tambm define como seus filhos sero
posicionados usando a propriedade Layout que assinala um gerenciador de layout
para o elemento UI. Todo o elemento filho de um elemento container UI herda
algumas propriedades relacionadas ao valor da propriedade container Layout. A
propriedade Layout pode ter um de quatro valores: FlowLayout, RowLayout,
MatrixLayout ou GridLayout.
FlowLayout
O gerenciador de layout padro o FlowLayout manager. Este layout mostra
todos os atributos filhos deste container em uma linha. Se o container elemento UI
tambm restrito para todos os elementos filhos para ser mostrado em uma linha,
eles vo automaticamente para a prxima linha. Voc no pode forar a prxima linha
em tempo de design. Elementos UI em diferentes linhas no esto relacionados entre
si e no esto alinhados em colunas. Voc usa este tipo de container para organizar
sub-containers.
Um exemplo do FlowLayout pode ser visto na Figura 16.7.

Figura 16.7 FlowLayout

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.

Figure 16.9 MatrixLayout

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.

Figura 16.10 GridLayout (com colCount de 4)


A Properties mostra todas as propriedades de um elemento UI selecionado (ver
Figura 16.5 acima, por exemplo). Os eventos suportados no lado cliente so listados
no Events properties caso esse elemento suporte eventos. Propriedades relacionados
a eventos no lado do cliente inicia com o sufixo on(por exemplo, onFilter, onSort ou
onAction). Deve-se associar aes com cada evento.
Caso um elemento UI tenha sido ligado ao contexto n ou atributo, a
propriedade do elemento UI fornecida com um valor dos dados de contexto. Se o
usurio pode atualizar a propriedade do elemento UI, o contexto automaticamente
atualizado com o novo valor durante a prxima ida e volta. Um exemplo de biding
mostrada na Figura 16.11.

402

Figura 16.11 Exemplo de Binding


Nota: Somente pode ter um relacionamento de binding entre o contexto e elemento UI
do mesmo view controller. Por esta razo, qualquer dado que queira integrar ao view
elemento UI deve estar armazenada no contexto, ao contrrio para os atributos de
controle.
Geralmente possvel ter controle total sobre a aparncia do layout da tela
atravs do uso da Web Dynpro view controller sem nunca precisar de acesso direto
para os objetos de elementos UI. Vincule qualquer propriedade sobre a que quer ter
um controle programtico para um apropriado n de contexto ou atributo. Manipule o
n de contexto ou atributo para cada elemento UI so obrigados para controlar o
comportamento dos elementos UI.
Para mostrar os dados para o elemento UI deve ser ligado propriedade valor
para um n de contexto ou atributo. Para um mnimo deve fazer o seguinte para
mostrar os dados na view:
1 - Criar um n ou atributo no contexto view controller para conter os
dados. No importante se este est mapeado no n contexto ou no.
2 - Criar o elemento UI em seu layout view.
3 - Propriedades requerem uma ligao de contexto mostra um boto com
um cone amarelo e um circulo vazio a direita das propriedades.
assinalado os requisitos de ligao clicando neste boto. O view
controller contexto mostrado em um dialogo box. Todos os ns ou
atributos do tipo apropriado para ser ligado propriedade elemento UI
so mostrados. Ento selecione um n ou atributo apropriado.

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:

Dados so transportados de um contexto para o cliente durante a renderizao


da tela.
Dados de entrada do usurio transportado de volta para o contexto quando o
HTTP de vai e volta processado. similar ao conceito para que seja usado
por campos de entrada dynpros .

Depois de declarar uma ligao de relacionamento os dados de ligao do n e


atributos so transportados automaticamente para o elemento UI correspondente.
Depois de o usurio ter interagido com a tela e iniciado um HTTP, o dado novo ou
modificado no elemento UI transportado de volta para o mesmo n e atributo na view
controller contexto. Antes o Web Dynpro framework volta o controle sobre a ao, o
contexto j contem a informao atualizada.

Nota: No preciso fazer nada neste processo. Os dois caminhos de processo de


transporte inteiramente automtico. Somente preciso declarar a ligao de
relacionamento.
Muitos elementos UI (TextViews, Labels, Captions, etc) mostram textos quando
renderizados. Podem ser obtidos do Dicionrio ABAP por dois meios:

Ligar a propriedade relacionada ao texto para o atributo de contexto. Este


atributo de contexto tipado com um elemento de dados definido no Dicionrio
ABAP.
Elemento UI relacionado para o segundo elemento UI, que ligado para um
elemento de contexto que tipado com um elemento de dados. Neste caso, a
propriedade relacionada para o texto deve estar em branco em ordem para
usar o texto do dicionrio.

Nota: Um Label relacionado para um InputField e a propriedade Text do Label


deixado em branco. O label text ento origina do elemento de dados relacionado com
o InputField.

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

A hierarquia de rea de armazenagem para dados globais de


controllers.
Plugs
Fornece navegao. Outbound plugs para o inbound plug ou
iniciando ponto para uma view. Plugs so parte do controller de
uma view. Eles so sempre assinalados para uma view
Interface View
Cada janela tem um nico interface view assinalado. A interface
view est lincada com uma aplicao Web Dynpro ento que a
janela pode ser chamada usando uma URL.
View Controller
Processa as aes chamadas pelo usurio na view. Cada view
somente tem exatamente uma view controller.
Controle
de Um controller global que tambm visvel fora do componente.
Interface
Isto parte da interface do componente Web Dynpro.
Controle
Serve para criar eventos. Eventos so usados para comunicar
Componente
entre controllers e habilita um controller para disparar um evento
em um diferente controller. Existe apenas um por componente e
no tem interface visual. Dirige a funcionalidade do componente.
Controle
opcional. Pode ser usado para encapsular subfunes do
Customizvel
componente controller.
Controle
de Somente um controle de configurao pode existir em algum
Configurao
componente. Somente necessrio se o componente
correspondente
implementa
configurao
especial
e
funcionalidade personalidade.
Controle
de Somente um por janela. Pode ser usado para processar dados
Janela
passados via plug inbound quando reusado como um controle
filho.
Componente
Um componente que teve sua funcionalidade usada por outro
Consumer
componente.
Tabela 16.2 Definies para Web Dynpro

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)

Questes Prticas, Respostas e Explicaes.


1. Questo correta: A, C
Cada componente de interface composto de duas partes: a interface view
e a interface controller.
2. Questes corretas: B, D, E, H
Um plug pode ser inbound ou outbound; no pode ser os dois. A view
definida como um padro, mas o plug definido como um iniciador. Cada plug pode
ser assinalado para uma view. Cada outbound pode somente navegar para um
simples inbound plug. Entretanto, um inbound plug pode ser disparado por mltiplos
outbounds plugs.

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

uma forma de interface que roda em backend e habilita a aplicao


a acessar dados
View
responsvel pela apresentao dos dados no cliente
Controller
Situa-se entre o view e o model. Formata os dados para serem
mostrados na view processa as entradas do usurio e retorna-os ao
model.
Tabela 16.3 Lembrar conceitos chaves

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

17 - Anlise E Design De Classes


Tcnicas que voc aprender:

Usar mtodos funcionais


Descrever singletons
Entender a amizade de classes
Identificar Herana
Explorar Interfaces

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.

Objetivos Desta Parte Do Exame


O propsito desta parte do exame de certificao verificar se voc possui
conhecimento suficiente para desenhar diferentes tipos de classes ABAP. Esta parte
do exame de certificao validar seu conhecimento em uma pequeno leque de
tpicos. O tpico geral abrangido no Captulo 14, Programao Orientada a Objetos
ABAP. Os pontos que voc precisar entender para esta seo incluem:

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

O exame de certificao dar maior peso a este capitulo se comparado a


outros tpicos do exame. Isto significa que existe uma porcentagem maior de questes
deste captulo do que de outros captulos. A razo para isso a direo da linguagem
ABAP. Os conceitos descritos neste captulo co crticos para conhecer e usar o ABAP
eficientemente.

411

Relembre-se Conceitos Chave


Como o desenvolvimento de programas ABAP encaminha-se para a
programao orientada a objetos com objetos ABAP, voc deve compreender as
vantagens e restries do uso da programao orientada a objetos.
Mtodos Funcionais
Como reviso, abrangeremos alguns pontos que, mesmo que tenham sido
mencionados em outros captulos, so importantes pra uma compreenso total.
No captulo 9, Programas ABAP bsicos e Criao de Interfaces, ns
discutimos brevemente o parmetro RETURNIG. Mtodos que possuem o parmetro
RETURNING so descrevidos com mtodos funcionais. Isto significa que eles no
podem possuir um parmetro EXPORTING ou CHANGING. Desta forma, ns
garantimos que o mtodo retorna uma coisa e apenas uma coisa ao chamador. O
parmetro RETURNING deve ser passado por valor. Apenas um parmetro Returning
pode ser definido para um mtodo. Um exemplo de mtodo funcional simples pode ser
visto na figura 17.1, e o uso deste mtodo pode ser visto na listagem 17.1.

Figura 17.1 Exemplo de um mtodo funcional


lv_calc_amt = lv_source_amt / lv_factor.
IF lv_amt NE lr_util->roud_up( lv_calc_amt).
lv_amt = lr_util->round_up( lv_calc_amt ).
ENDIF.
Listagem 17.1 Uso de Mtodo Funcional
A vantagem de mtodos funcionais que eles no precisam do uso de
variveis temporrias, pois eles podem ser usados em conjunto com outras instrues.
Antes da introduo dos mtodos funcionais, qualquer chamada a alguma unidade de
modularizao (os exemplos so uma sub-rotina, um mtodo ou um mdulo de
funo) sempre precisava que o resultado fosse armazenado um objeto de dados.
Entretanto, com os mtodos funcionais eles podem ser chamados diretamente de
dentro de vrias expresses, eliminando a necessidade de armazenar
temporariamente os valores. Mtodos funcionais podem ser usados em:

Expresses Lgicas (IF, ELSEIF, WHILE, CHECK, WAIT)


Condies Case (CASE, WHEN)
Expresses Aritmticas e expresses de bit (COMPUTE)
Fonte dos valores com cpia local (MOVE)
Clusulas de pesquisa para tabelas internas, assumindo que o operando no
um componente da linha da tabela (LOOP AT ... WHILE)

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.

Figura 17.2 Propriedades da classe Singleton

Figura 17.3 Atributo Singleton

Figura 17.4 Construtor da Classe Singleton

Figura 17.5 Retornando a referencia Singleton


Amizade
Em classes, normalmente existe uma diviso estrita entre o que pode ser
acessado de fora da classe (PUBLIC) e na arvore de herana (PROTECTED) ou
apenas na prpria classe (PRIVATE). De fora da classe voc tem acesso apenas aos

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:

Componentes comuns so extrados e definidos uma vez na superclasse,


permitindo uma manuteno central e eliminando implementaes
redundantes.

415

Subclasses contm extenses (em outras palavras, novos componentes que


so nicos a subclasse) e/ ou mudanas (implementando verses diferentes
dos mtodos que foram herdados).
Subclasses so dependentes da superclasse.

Se voc usar a herana apropriadamente, ela fornecer estrutura


significantemente melhores para o seu software, pois elementos comumente usados
so definidos uma vez numa localizao central (na superclasse) e ento esto
automaticamente disponveis em todas as subclasses. Se voc fizer alteraes depois,
elas tem efeito imediato nas subclasses. Voc deve ser cuidadoso se fizer alterao
na superclasse, pois elas afetaro diretamente as subclasses herdando dela e ao usar
o Assistente de Reuso.
Dica: Um erro muito comum cometido por quem novo no design orientada a objetos
o uso exagerado de herana. Este problema pode ser evitado usando o teste:
X deve herdar de Y apenas se voc puder dizer que X um Y
Ento, enquanto voc pode dizer que um checkbox um tipo de boto, voc no pode
dizer que uma coluna uma tabela. Este o motivo do Modelo de Objetos ALV no
ser um grupo de objetos herdados.
No ABAP orientada a objetos, voc define um relacionamento de herana para
uma subclasse usando a adio INHERITING FROM seguida da superclasse que est
diretamente acima da subclasse. Para fazer o mesmo com uma classe global voc
clica no boto SUPERCLASSE na aba PROPIEDADES da classe (mostrado na figura
17.2). Devido ao fato desta superclasse poder herdar de outra superclasse acima dela,
hierarquias de herana de vrias complexidades podem ser criadas, conhecidas como
arvore de herana.
Diferente de outras linguagens, no existe herana mltipla nos Objetos ABAP.
Voc s pode especificar uma superclasse diretamente acima da classe. Entretanto,
voc pode usar interfaces nos Objetos ABAP para simular a herana mltipla. Herana
uma relao de via nica. Em outras palavras, subclasses conhecem sua
superclasse diretamente acima, mas a classe no conhece quem herda dela.
Redefinio
Redefinio permite que voc altere a implementao de um mtodo de
instncia herdado na subclasse sem alterar a assinatura do mtodo, em outras
palavras, sem alterar os parmetros ou adicionar novos. A visibilidade tambm deve
permanecer a mesma. Portanto no possvel usar a redefinio dentro da seo
privada. Quando voc usa a adio REDEFINITION, voc especifica uma nova
implementao para o mtodo herdado. J que a assinatura no pode ser alterada,
no necessrio que voc defina os parmetros do mtodo e excees novamente.
Para fazer o mesmo na classe global, voc usa o menu de contexto do mtodo
herdado e seleciona Redefinir. Neste caso a redefinio do mtodo criada (includo
uma chamada comentada para o mtodo da superclasse). A superclasse no pode ser
definida como FINAL (este atributo pode ser visto na Figura 17.2).

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.

Voc deve chamar o construtor de instncia da superclasse dentro do


construtor da subclasse. Isto devido ao relacionamento de especializao: se
um construtor definido na superclasse, ele contem uma lgica que deve ser
sempre executada quando um objeto criado para esta superclasse ou
subclasse. O sistema em tempo de execuo, entretanto, pode apenas garantir
automaticamente que o construtor da subclasse no foi alterado.
Diferente do construtor de instncia, o construtor esttico na superclasse
sempre chamado automaticamente. O sistema em tempo de execuo
automaticamente garante que os construtores estticos de todas as
superclasse sejam executados antes do construtor esttico da classe em
particular ser executado.

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:

Todas as subclasses partilham os atributos estticos pblicos e protegidos da


superclasse.
Voc no pode redefinir mtodos estticos.

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

TYPE REF TO lcl_person,


TYPE STANDARD TABLE OF llt_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:

Voc lista o nome da interface na parte de definio da classe com a instruo


INTERFACES. Isto deve ser feito na PUBLIC SECTION (interfaces s podem ser
implementadas publicamente). Classes globais definem interfaces usando a
aba INTERFACES mostrada na figura 17.6.
Voc de implementar os mtodos da interface na parte de implementao da
classe.
Voc pode enderear os componentes definidos na interface na parte de
implementao da classe.

Figura 17.6 Aba Interfaces


Voc distingue os componentes da interface dos outros componentes na classe
de implementao adicionando o nome da interface como prefixo seguido de um til (~),
que o operador de resoluo da interface. O uso do operador de resoluo da
interface permite que voc acesse os componentes da interface usando uma
referencia do objeto pertencente a uma classe que implementa a interface como voc
faria com um mtodo definido na parte de implementao da classe. Voc pode ver
um exemplo deste uso da interface na listagem 17.8.
l_r_bi_query_ad->if_rsroa_bi_query~set_fieldcatalog(
l_ts_fieldcatalog ).
Listagem 17.8 Referencia de um objeto para um componente da interface
(set_fieldcatalog)
Para simplificar o acesso aos componentes da interface (fornecendo um nome
menor para uso), voc pode usar um alias (veja a listagem 17.9). Estes s podem
aparecer na parte de definio de uma classe ou na definio da interface, e sua
utilizao sujeita a restrio de visibilidade da classe que define.
ALIASES true FOR if_salv_c_bool_sap~true.
IF lc_state EQ true.

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.

O primeiro uma lista de instrues obsoletas ou formas de instrues. Esta


informao pode ser encontrada na documentao de palavras chave ABAP. A
figura 17.7 mostra a localizao (ABAP DOCUMENTAO DE PARAVRAS
CHAVE ABAP POR TEMA * INSTRUES E CONCEITOS OBSOLETOS) na
documentao, e a figura 17.8 mostra algumas das instrues obsoletas. Por
favor note que em alguns casos apenas uma variao particular ou uma adio
est obsoleta. As instrues que voc encontrar l apenas esto disponveis
por compatibilidade com releases anteriores a 4.6 e 6.10. A maioria das
instrues listadas so sintaticamente proibidas para Objetos ABAP (A partir da
release 4.6) ou Unicode (Release 6.10). Suas restries nos Objetos ABAP o
motivo de serem mencionadas neste captulo.
A segunda fonte a informao adicional no Assistente de Recriao. Ele pode
ser acessado clicando no cone Ajuda de Aplicao (mostrado na figura 17.9)
tento no Object Navigator (Transao SE80) ou no Class Builder (Transao
SE24) e ento navegar para Class Builder Utilidades do Class Builder para
encontrar a informao sobre o Refactoring Assistant. A figura 17.10 mostra a
tela inicial.
O Refactoring Assistant permite que voc mova componentes entre
superclasses e subclasses ou entre classes e interfaces, por exemplo, se voc
definiu um componente em uma classe e ento percebeu que o componente
deveria pertencer a superclasse.

422

Figura 17.7 Localizao das Instrues Obsoletas

Figura 17.8 Algumas das Instrues Obsoletas

Figura 17.9 cone de Ajuda para...

Figura 17.10 Utilidades do Class Builder

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.

O cdigo no sintaticamente correto.


A tabela lt_vehicle contm trs vehicles.
O cdigo produzir um erro em tempo de execuo
O cdigo mostra trs up cast vlidos.
O cdigo mostra dois up cast vlidos.
O cdigo mostra nenhum up cast vlido.

a.
b.
c.
d.
e.
f.
g.
h.

2. O que nico no singleton?


Ele deve ser instanciado usando um construtor de instncia privado.
Ele deve ser instanciado usando um construtor de instncia pblico.
Ele deve ser instancia usando um construtor de instncia protegido.
Ele deve ser instanciado usando um construtor esttico privado.
Ele deve ser instanciado usando um construtor esttico pblico.
Ele deve ser instancia usando um construtor esttico protegido.
Ele deve ser definido como FINAL.
Ele no pode ser definido como FINAL.

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.

4. S pode existir um nvel na arvore de herana:


a. Verdadeiro
b. Falso
5. Quais afirmaes sobre a herana ABAP so verdadeiras:
Voc pode acessar os componentes da superclasse com o prefixo SUPER->.
O construtor de instncia pode ser sobrescrito como parte da herana.
O construtor esttico pode ser sobrescrito como parte da herana.
Sobrecarga permite que um mtodo possua vrias definies com assinaturas
diferentes.
e. Construtores de instncia devem chamar o construtor da superclasse.
f. Construtores estticos no precisam chamar o construtor da superclasse.
g. Polimorfismo precisa que o desenvolvedor especifique qual mtodo usar com a
herana.
a.
b.
c.
d.

6. Quais instrues so consideradas obsoletas e no podem ser usadas nos


Objetos ABAP:

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

7. Voc pode simular a herana mltipla com:


a. REDEFINITION
b. INHERITING FROM
c. INTERFACES
8. O que nico sobre mtodos funcionais?
a. Ele deve conter um parmetro returning
b. Ele pode conter um parmetro importing
c. Ele pode conter um parmetro exporting
d. Ele pode conter um parmetro changing
e. Ele pode ser usado em expresses lgicas.
f. Ele pode ser usado em instrues SELECT.
g. Ele deve ser um singleton.

Questes Prticas, Respostas E Explicaes


1. Respostas Corretas: B,C,E
A tabela lt_vehicle contem trs veculos: um vehicle, um truck com up cast
para vehicle e um car com up cast para vehicle. Isto tambm informa o nmero
correto de up casts, que dois (o terceiro apenas a atribuio de um vehicle
para outro vehicle). O cdigo produzir um erro em tempo de execuo
(MOVE_CAST_ERROR) no down cast. A razo deste erro simples: lr_vehicle
contm um vehicle, no um truck, e ele no pode sofre down cast nem para truck
ou para carro. Se pegssemos o segundo registro, poderamos fazer o down cast
pois ele iniciou como um truck e sofreu upcast para vehicle. Os outros dois
registro na tabela produzia o mesmo erro que lr_vehicle.
2. Respostas Corretas: D,G
Um singleton deve ser instanciado usando um construtor esttico privado.
A razo desta combinao : esttico para ser chamado apenas uma vez e
privado para no poder ser chamado de qualquer outro lugar. Deve ser definido
com FINAL para no poder ser herdado.
3. Resposta Corretas: A,B,C,E
Amigos tem acesso ao atributos, privados, protegidos e pblicos. A
amizade herdade: Classes que herdam de amigos e interfaces contendo um
amigo (como componente da interface) tambm se tornam amigos.
4. Resposta Correta: B
Podem existir vrios nveis de especializao na arvore de herana

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:

Descrever vrias tcnicas de ampliaes disponveis no sistema SAP


Melhorar objetos do Dicionrio ABAP sem modifica-los.
Implementar ampliaes para o standard SAP usando user exits, customer
exits Business Transaction Events e Business Add-ins
Modificar objetos standard do repositrio usando o Assistente de Modificao
Descrever as vrias tcnicas de melhor do Framework de ampliaes

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.

Objetivos Desta Parte Do Exame


O objetivo desta parte do exame de certificao julgar seu conhecimento
sobre as tcnicas de ampliao disponveis para melhorar o sistema SAP. esperado
que voc saiba user exits, customer exits, Business Transaction Events e Business
Add-Ins.
Voc deve tambm ser capaz de descrever as novas opes de ampliao
disponveis no SAP NetWeaver 7.0. Voc deve ser capaz de explicar sobre as tcnicas
de ampliao disponveis no Framework de ampliaes como ponto de ampliao
explcitos e implcitos, sees de ampliao explicitas e nova tecnologia de Business
Add-Ins (BAdI).

Relembre-se Conceitos Chave


A SAP prov vrias tcnicas para ajustar o sistema SAP ou aplicao para
atingir as regras de negcio do cliente. Primeiro, o consultor de aplicao no projeto
deve tentar preencher os requerimentos do cliente usando a personalizao ou
customizao. Se o requerimento no puder ser implementado por customizao ou
personalizao, ento voc deve ver se o requerimento pode ser alcanado pela
ampliao da aplicao.
A SAP fornece vrias tcnicas de ampliao para o sistema SAP. Algumas das
tcnicas disponveis para ampliaes so as 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. Esta tcnicas pode ser
implementadas sem modificar o sistema SAP (com exceo das user exits, que so
tecnicamente uma modificao mas no afetam a atualizao) e portanto no
precisam de ajuste de modificao ao atualizar ou quando se aplica um support

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

A customizao usada para configuras a aplicao SAP atravs da referncia


IMG (Implementation Guide Guia de Implementao). Customizao no sua
responsabilidade, mas permite que voc peque o grupo de templates SAP para
processos de negcio e manipule-os para definir os campos obrigatrios ou at
esconder certos campos ou telas da aplicao.
Personalizao usada para simplificar as transaes de negcios SAP. O
objetivo da personalizao ajustar a transao SAP para um usurio especfico, um
grupo de usurios ou a empresa como um todo. A personalizao inclui menus de
usurio, adicionar transaes ao seu menu de FAVORITOS e atalhos. Variantes de
transao so outra maneira de se personalizar/ usando estas voc pode desligar
elementos de tela e funes da transao SAP simplificando a transao para o
usurio.
Os consultores funcionais no projeto devem tentar ajustar a transao standard
SAP atravs de customizao ou personalizao antes de consideram qualquer
trabalho de desenvolvimento. Voc melhora a aplicao SAP ou embarca na
desenvolvimento personalizado apenas se a necessidade do cliente no possa ser
preenchida atravs de customizao ou personalizao. Modificaes podem levar a
complicaes durante uma atualizao. Quando a SAP entrega uma nova verso do
objeto, voc deve decidir se voc que manter a nova verso do objeto ou continuar
com a verso modificada antiga. Este processo conhecido como ajuste de
modificao e pode atrasar o processo de atualizao.

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.

Figura 18.1 Programa Include para User Exits.


Voc pode localizar user exits dentro de um programa procurando a palavra
USEREXIT no programa principal da aplicao. Voc precisa conhecer onde a user exit
chama dentro do programa antes de adicionar sua lgica user exit para garantir
que o lugar certo para adicionar sua lgica.
Voc pode dar um duplo clique na rotina FORM da user exit para localizar a
instruo PERFORM, que chama a user exit, a ento verificar se o local certo para
adicionar sua lgica (veja a figura 18.1). Voc pode encontrar as user exits para a sua
aplicao a partir da IMG na pasta MODIFICAES DE SISTEMA para a aplicao
especfica (veja a figura 18.3).

432

Figura 18.2 Rotina Form para User Exits

Figura 18.3 User Exits na referncia IMG dentro de Modificao de Sistema


A maioria da USEREXITS para componentes SD esto no pacote VMOD e
podem ser visualizadas atravs da transao SE80 (veja a figura 18.4)

433

Figura 18.4 User Exits para Componentes SD


User exits so chamadas a partir do programa principal pela instruo
PERFORM dentro da aplicao. Qualquer ampliao do cliente feita nas user exits so
tecnicamente modificaes pois elas requerem mudanas no objetos standard SAP
(p.e., Os programas Include que voc criou). Entretanto, a SAP nunca entrega uma
nova verso de um programa Include de user exit, e eles no iro mudar esses
programas, ento as ampliaes feitas usando user exits nunca impactaro uma
atualizao. Se a SAP precisar entregar novas user exits para um novo release, elas
sero colocadas em um novo programa Include.
Customer Exits
Customer Exits foram introduzidas depois das user exits para permitir que os
cliente melhorassem no apenas o cdigo standard SAP, mas tambm telas e menus.
As exits de programa so implementadas como mdulos de funes dentro do
programa standard SAP. Estes mdulos de funes so entregues vazios; isto , eles
no contm nenhum cdigo standard SAP. Ao invs disso, eles so fornecidos para o
cliente inserir sua prpria lgica.
Voc pode adicionar sua prpria funcionalidade no mdulo de funo sem
modificar a aplicao de negcios standard da SAP (pois a sua lgica inserida em
um programa Include especial no mdulo de funo que est no namespace do
cliente). Portanto, no existe nenhum efeito durante uma atualizao de sistema.
Voc define as ampliaes SAP e as administra atravs da transao SMOD. Clientes
tambm podem ver o catlogo de ampliaes SAP disponveis na SMOD, e talvez ler
a documentao sobre ampliaes antes de implement-las.
Customer exits so implementadas com a transao CMOD. A figura 18.5
mostra a ampliao SAP na transao CMOD. A tela mostra program exits, menu exits
e screen exits para a ampliao SAP CNEX0003.

434

Figura 18.5 Projeto de Ampliao SAP na Transao SMOD


Se um cliente quiser implementar uma customer exit, eles deve criar um projeto
de ampliao na transao CMOD. Esta uma forma de agrupar as ampliaes juntas
para que elas possam ser ativadas juntas. Um projeto pode contar vrias ampliaes,
cada uma delas pode consistir de vrios componentes, que podem ser uma mistura de
program exits, Screen exits e menu exits. Projetos de ampliao do cliente consistem
de ampliaes SAP. Cada ampliao individual SAP pode ser usada em apenas um
projeto de ampliao do cliente.
A seguir esto os trs tipos de customer exits.
Program Exits
As program exits so implementadas como mdulos de funo dentro da
aplicao de negcios SAP. A conveno de nomenclatura usada para estes mdulos
de funo EXIT_<Programa_Principal>_NNN, onde NNN um nmero de trs
dgitos. Program exits tambm so chamadas de exits de mdulo de funo e so
chamadas na aplicao standard pela instruo ABAP CALL CUSTOMER-FUNCTION
NNN onde NNN o nmero de trs dgitos encontrado no dinal do mdulo de
funo. A figura 18.7 mostra o mdulo de funo real que corresponde a CUSTOMERFUNCTION 004.

435

Figura 18.6 Chamada da Customer Exit a partir da aplicao standard SAP

Figura 18.7 Customer exit implementada como mdulo de funo


Voc pode procura uma customer exit de ampliao para uma aplicao
atravs da transao SMOD seguindo o menu UtilitriosProcurar para chamar a
tela de seleo. Na tela de seleo voc pode especificar o componente de aplicao
ou pacote para procurar a ampliao SAP (Veja a figura 18.8). Voc tambm pode
procurar ampliaes SAP no Repository Information System no Object Navigator.

436

Figura 18.8 Tele de seleo para procurar ampliaes SAP


Voc pode procurar no cdigo fonte do programa (que voc deseja melhorar)
pela instruo CALL CUSTOMER-FUNCTION, e baseado no resultado da pesquisa
decidir se a customer exit dentro do programa pode ser usada para inserir lgica de
programa adicional.
Para melhorar uma aplicao padro SAP que possui uma customer exit, voc
deve criar um projeto de ampliao do cliente para implementar a customer exit. O
projeto de ampliao do cliente pode ser criado no ABAP Workbench seguindo o menu
UtilitriosAmpliaoAdministrao de Projeto ou atravs da transao SAP
CMOD. Depois que voc criar um projeto de ampliao do cliente voc atribui a
ampliao SAP ao projeto.
Voc pode encontrar a ampliao SAP para o modulo de funo da customer
exit informando o nome do mdulo de funo na tela de seleo da SMOD (como
mostrado na figura 18.8 acima). O resultado da busca fornecera a ampliao SAP a
qual o modulo de funo da customer exit est atribuda, e pode ser atribuda ao
projeto de ampliao SAP.
Depois da atribuio voc pode acessar o componente de ampliao como o
modulo de funo e inserir cdigos na rotina Include dentro da customer exit. Voc
pode usar os dados informados nos parmetros do mdulo de funo para a
ampliao. Voc no tem acesso aos dados globais do programa. Voc pode apenas
acessar a interface de parmetros do mdulo de funo para a ampliao. Voc
decide qual interface de mdulo de funo usar.
Como passo final, voc deve ativar o projetos aps implementar a
funcionalidade. Ativar o projeto liga a nova funcionalidade na customer exit. At que
voc faa isso, sua lgica no ser executada como parte da aplicao standard. Voc
tambm pode desativar o projeto do cliente para desligar sua funcionalidade. Isto til
pois dan requer que voc mexa no cdigo. A figura 18.9 e 18.10 mostram os passos
para se criar um projeto do cliente.

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.

Figura 18.9 Criar um Projeto de Ampliao do Cliente

Figura 18.10 Editar os Componentes Individuais de Ampliao

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.11 Chamada da subtela no evento PBO.


Para cada Screen exit, voc tambm tem uma program exit, por conta da
necessidade de transferir dados entre a tela e o programa. A figura 18.12 mostra a
program exit dentro dos mdulos PBO e PAI mencionados acima.

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

Figura 18.13 Ampliao de Menu Exit


Voc deve criar um projeto de ampliao do cliente similar ao criado para as
program exits para implementar as menu exits. Voc tambm pode adicionar a
ampliao SAP para a menu exit a um projeto de ampliao existente e ento estar o
componente do menu exit dentro do projeto.
Business Transaction Events
Business Transaction Events (BTEs) esto disponveis a partir da release 4.0 e
so outra tcnica para implementar program exits, e apenas program exits. BTEs so
geralmente encontradas no general ledger accouting (FI-GL), contas recebveis e
pagveis (FI-AR e FI-AP) e componentes de venda e distribuio (SD).
Uma BTE possui uma interface pr-definida (voc decide qual ser) e permite
que voc anexe uma funcionalidade adicional na forma de um mdulo de funo de

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

Interfaces Publicar E Assinar


Esta interfaces informam um software externo que certo evento aconteceu na
aplicao padro SAP e fornece os dados produzidos. BTS Publicar e Assinar
recebem dados da aplicao padro SAP mas no devolvem nenhuma informao.
Portanto , podem existir vrias implementao desta BTEs. Um uso das BTEs publicar
e assinar so passar dados para um software externo, sem esperar retorno de dados
deste software externo.
Um mdulo de funo de evento chamado no programa SAP que determina
as implementaes ativas para o evento em questo e ento executa o mdulo de
funo de servio para cada implementao ativa do evento BTE, uma aps a outra. A
ordem na qual as implementaes so executadas no pode ser garantida.
O nome do mdulo de funo de evento para a BTE publicar e subscrever
comea
com
OPEN_FI_PERFORM_<NNNNNNNN>_E
ou
OUTBOUND_CALL_<NNNNNNNN>_E, onde <NNNNNNNN> o nmero de 8 dgitos
do evento. Os mdulos de funo de servio para o evento (p.e., os mdulos de
funo que foram criados e implementados) so executados como definidos na
customizao. A figura 18.14 mostra a customizao para a BTE 00001025 e a figura
18.15 mostra a chamada da BTE no programa SAP.
A customizao para os eventos BTE definida chamando a transao SAP
FIBF. A customizao para as interfaces publicar e assinar definida seguindo o menu
ConfiguraesMdulos P/S e selecionando a opo de um cliente, parceiro ou de
aplicao SAP (veja a figura 18.16).

Figura 18.14 Customizao da BTE para ampliao SAP

441

Figura 18.15 Chamada da funo BTE no programa SAP


Parceiro e clientes devem definir um produto seguindo o caminho de menu
ConfiguraesProdutoCliente ou ConfiguraesProdutoParceiro antes
de definir a customizao do evento e o mdulo de funo que desejam que seja
executado.

Figura 18.16 Customizao da BTE para SAP, parceiro ou cliente


Interfaces publicar e assinar permite que voc inicie um ou mais mdulos de
funo de servio sem que ele interfiram-se entre si. Ampliaes SAP, de parceiros, de
clientes podem definir seus prprios mdulos de funo na customizao sem interferir
uns com os outros criando seus prprios produtos. Voc tambm pode ligar ou
desligar cada produto como uma entidade completa. Isto permite que o usurio
controle qual ampliao deve ser processada e qual no deve. Em contraste com as
customer exits, as BTEs permitem que voc use mltiplas interfaces para a lgica
adicional.
Interfaces De Processo
Estas interfaces so usadas para controlar o processo de negcio de forma
diferente do que a tratada no sistema SAP padro. Em contraste com a interface
publicar e assinar, a transferncia de dados acontece em abas as direes nas
interfaces de processo; isto , a aplicao padro SAP passo os dados para o mdulo
de funo, e o mdulo de funo pode passar dados de volta. Um BTE de processo
pode portanto possuir apenas uma implementao ativa.

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
im